OVL_168:021E1CB8 ; =============== S U B R O U T I N E ======================================= OVL_168:021E1CB8 OVL_168:021E1CB8 OVL_168:021E1CB8 sub_21E1CB8 ; DATA XREF: OVL_168:021F3110o OVL_168:021E1CB8 OVL_168:021E1CB8 marker = -0x20 OVL_168:021E1CB8 var_1C = -0x1C OVL_168:021E1CB8 OVL_168:021E1CB8 F8 B5 PUSH {R3-R7,LR} OVL_168:021E1CBA 82 B0 SUB SP, SP, #8 ; marker OVL_168:021E1CBC 05 1C MOVS R5, R0 OVL_168:021E1CBE 2F 48 LDR R0, =0x7AD OVL_168:021E1CC0 0E 1C MOVS R6, R1 OVL_168:021E1CC2 00 90 STR R0, [SP,#0x20+marker] ; marker OVL_168:021E1CC4 8E 20 80 00 MOVS R0, 0x238 OVL_168:021E1CC8 31 5A LDRH R1, [R6,R0] OVL_168:021E1CCA 2D 48 LDR R0, =0x7FFF OVL_168:021E1CCC 2D 4B LDR R3, =aBtlv_effvm_c ; "btlv_effvm.c" OVL_168:021E1CCE 01 40 ANDS R1, R0 OVL_168:021E1CD0 40 1C ADDS R0, R0, #1 OVL_168:021E1CD2 08 43 ORRS R0, R1 OVL_168:021E1CD4 00 04 LSLS R0, R0, #0x10 OVL_168:021E1CD6 00 0C LSRS R0, R0, #0x10 OVL_168:021E1CD8 5C 21 MOVS R1, #0x5C ; '\' ; blockLength OVL_168:021E1CDA 01 22 MOVS R2, #1 ; clearBlock OVL_168:021E1CDC 58 F6 A4 FA BL allocateBlockFromExpHeap OVL_168:021E1CE0 04 1C MOVS R4, R0 OVL_168:021E1CE2 28 1C MOVS R0, R5 ; vm OVL_168:021E1CE4 33 F6 8E FE BL scriptRead32 OVL_168:021E1CE8 01 1C MOVS R1, R0 OVL_168:021E1CEA 30 1C MOVS R0, R6 OVL_168:021E1CEC 04 F0 5E F9 BL sub_21E5FAC OVL_168:021E1CF0 01 1C MOVS R1, R0 OVL_168:021E1CF2 30 1C MOVS R0, R6 OVL_168:021E1CF4 03 F0 22 F8 BL sub_21E4D3C OVL_168:021E1CF8 07 1C MOVS R7, R0 OVL_168:021E1CFA 28 1C MOVS R0, R5 ; vm OVL_168:021E1CFC 33 F6 82 FE BL scriptRead32 OVL_168:021E1D00 01 90 STR R0, [SP,#0x20+var_1C] OVL_168:021E1D02 25 60 STR R5, [R4] OVL_168:021E1D04 28 1C MOVS R0, R5 ; vm OVL_168:021E1D06 33 F6 7D FE BL scriptRead32 OVL_168:021E1D0A 60 60 STR R0, [R4,#4] OVL_168:021E1D0C 28 1C MOVS R0, R5 ; vm OVL_168:021E1D0E 33 F6 79 FE BL scriptRead32 OVL_168:021E1D12 A0 60 STR R0, [R4,#8] OVL_168:021E1D14 00 20 MOVS R0, #0 OVL_168:021E1D16 E0 60 STR R0, [R4,#0xC] OVL_168:021E1D18 28 1C MOVS R0, R5 ; vm OVL_168:021E1D1A 33 F6 73 FE BL scriptRead32 OVL_168:021E1D1E 20 61 STR R0, [R4,#0x10] OVL_168:021E1D20 00 20 MOVS R0, #0 OVL_168:021E1D22 60 61 STR R0, [R4,#0x14] OVL_168:021E1D24 28 1C MOVS R0, R5 ; vm OVL_168:021E1D26 33 F6 6D FE BL scriptRead32 OVL_168:021E1D2A A0 61 STR R0, [R4,#0x18] OVL_168:021E1D2C 28 1C MOVS R0, R5 ; vm OVL_168:021E1D2E 33 F6 69 FE BL scriptRead32 OVL_168:021E1D32 28 1C MOVS R0, R5 ; vm OVL_168:021E1D34 33 F6 66 FE BL scriptRead32 OVL_168:021E1D38 60 64 STR R0, [R4,#0x44] OVL_168:021E1D3A 28 1C MOVS R0, R5 ; vm OVL_168:021E1D3C 33 F6 62 FE BL scriptRead32 OVL_168:021E1D40 A0 64 STR R0, [R4,#0x48] OVL_168:021E1D42 28 1C MOVS R0, R5 ; vm OVL_168:021E1D44 33 F6 5E FE BL scriptRead32 OVL_168:021E1D48 E0 64 STR R0, [R4,#0x4C] OVL_168:021E1D4A 28 1C MOVS R0, R5 ; vm OVL_168:021E1D4C 33 F6 5A FE BL scriptRead32 OVL_168:021E1D50 20 65 STR R0, [R4,#0x50] OVL_168:021E1D52 A0 68 LDR R0, [R4,#8] OVL_168:021E1D54 08 28 CMP R0, #8 OVL_168:021E1D56 01 D1 BNE loc_21E1D5C OVL_168:021E1D58 60 68 LDR R0, [R4,#4] OVL_168:021E1D5A A0 60 STR R0, [R4,#8] OVL_168:021E1D5C OVL_168:021E1D5C loc_21E1D5C ; CODE XREF: sub_21E1CB8+9Ej OVL_168:021E1D5C 10 2F CMP R7, #0x10 OVL_168:021E1D5E 05 D0 BEQ loc_21E1D6C OVL_168:021E1D60 01 9B LDR R3, [SP,#0x20+var_1C] OVL_168:021E1D62 30 1C MOVS R0, R6 OVL_168:021E1D64 21 1C MOVS R1, R4 OVL_168:021E1D66 3A 1C MOVS R2, R7 OVL_168:021E1D68 03 F0 0A FE BL sub_21E5980 OVL_168:021E1D6C OVL_168:021E1D6C loc_21E1D6C ; CODE XREF: sub_21E1CB8+A6j OVL_168:021E1D6C 20 1C MOVS R0, R4 ; pBlk OVL_168:021E1D6E 58 F6 83 FA BL freeBlock OVL_168:021E1D72 8F 20 80 00 MOVS R0, 0x23C OVL_168:021E1D76 30 58 LDR R0, [R6,R0] OVL_168:021E1D78 02 B0 ADD SP, SP, #8 OVL_168:021E1D7A F8 BD POP {R3-R7,PC} OVL_168:021E1D7A ; End of function sub_21E1CB8 OVL_168:021E1D7A OVL_168:021E1D7A ; --------------------------------------------------------------------------- OVL_168:021E1D7C ; int dword_21E1D7C OVL_168:021E1D7C AD 07 00 00 dword_21E1D7C DCD 0x7AD ; DATA XREF: sub_21E1CB8+6r OVL_168:021E1D80 FF 7F 00 00 dword_21E1D80 DCD 0x7FFF ; DATA XREF: sub_21E1CB8+12r OVL_168:021E1D84 ; char *off_21E1D84 OVL_168:021E1D84 B4 41 1F 02 off_21E1D84 DCD aBtlv_effvm_c ; DATA XREF: sub_21E1CB8+14r OVL_168:021E1D84 ; "btlv_effvm.c" OVL_168:021E5980 OVL_168:021E5980 sub_21E5980 ; CODE XREF: sub_21E1CB8+B0p OVL_168:021E5980 ; sub_21E1E84+148p ... OVL_168:021E5980 OVL_168:021E5980 marker = -0x78 OVL_168:021E5980 var_74 = -0x74 OVL_168:021E5980 var_70 = -0x70 OVL_168:021E5980 var_6C = -0x6C OVL_168:021E5980 var_68 = -0x68 OVL_168:021E5980 var_64 = -0x64 OVL_168:021E5980 var_60 = -0x60 OVL_168:021E5980 var_5C = -0x5C OVL_168:021E5980 var_58 = -0x58 OVL_168:021E5980 var_54 = -0x54 OVL_168:021E5980 var_50 = -0x50 OVL_168:021E5980 var_34 = -0x34 OVL_168:021E5980 OVL_168:021E5980 F0 B5 PUSH {R4-R7,LR} OVL_168:021E5982 99 B0 SUB SP, SP, #0x64 ; marker OVL_168:021E5984 07 1C MOVS R7, R0 OVL_168:021E5986 08 1C MOVS R0, R1 OVL_168:021E5988 15 1C MOVS R5, R2 OVL_168:021E598A 42 68 LDR R2, [R0,#4] OVL_168:021E598C 80 68 LDR R0, [R0,#8] OVL_168:021E598E 01 91 STR R1, [SP,#0x78+var_74] OVL_168:021E5990 02 93 STR R3, [SP,#0x78+var_70] OVL_168:021E5992 90 42 CMP R0, R2 OVL_168:021E5994 50 D1 BNE loc_21E5A38 OVL_168:021E5996 01 1C MOVS R1, R0 OVL_168:021E5998 0B 39 SUBS R1, #0xB OVL_168:021E599A 01 29 CMP R1, #1 OVL_168:021E599C 4C D8 BHI loc_21E5A38 OVL_168:021E599E 0C 28 CMP R0, #0xC OVL_168:021E59A0 02 D1 BNE loc_21E59A8 OVL_168:021E59A2 01 98 LDR R0, [SP,#0x78+var_74] OVL_168:021E59A4 01 21 MOVS R1, #1 OVL_168:021E59A6 81 65 STR R1, [R0,#0x58] OVL_168:021E59A8 OVL_168:021E59A8 loc_21E59A8 ; CODE XREF: sub_21E5980+20j OVL_168:021E59A8 38 1C MOVS R0, R7 OVL_168:021E59AA 10 21 MOVS R1, #0x10 OVL_168:021E59AC 11 AA ADD R2, SP, #0x78+var_34 OVL_168:021E59AE FE F7 7B FF BL sub_21E48A8 OVL_168:021E59B2 06 90 STR R0, [SP,#0x78+var_60] OVL_168:021E59B4 00 28 CMP R0, #0 OVL_168:021E59B6 02 D0 BEQ loc_21E59BE OVL_168:021E59B8 00 24 MOVS R4, #0 OVL_168:021E59BA 00 28 CMP R0, #0 OVL_168:021E59BC 00 DC BGT loc_21E59C0 OVL_168:021E59BE OVL_168:021E59BE loc_21E59BE ; CODE XREF: sub_21E5980+36j OVL_168:021E59BE F0 E0 B loc_21E5BA2 OVL_168:021E59C0 ; --------------------------------------------------------------------------- OVL_168:021E59C0 OVL_168:021E59C0 loc_21E59C0 ; CODE XREF: sub_21E5980+3Cj OVL_168:021E59C0 A8 00 LSLS R0, R5, #2 OVL_168:021E59C2 38 18 ADDS R0, R7, R0 OVL_168:021E59C4 03 90 STR R0, [SP,#0x78+var_6C] OVL_168:021E59C6 60 1E SUBS R0, R4, #1 OVL_168:021E59C8 40 0C LSRS R0, R0, #0x11 OVL_168:021E59CA 07 90 STR R0, [SP,#0x78+var_5C] OVL_168:021E59CC OVL_168:021E59CC loc_21E59CC ; CODE XREF: sub_21E5980+B2j OVL_168:021E59CC 76 48 LDR R0, =0x1D0B OVL_168:021E59CE 77 4B LDR R3, =aBtlv_effvm_c ; "btlv_effvm.c" OVL_168:021E59D0 00 90 STR R0, [SP,#0x78+marker] ; marker OVL_168:021E59D2 8E 20 80 00 MOVS R0, 0x238 OVL_168:021E59D6 39 5A LDRH R1, [R7,R0] OVL_168:021E59D8 07 98 LDR R0, [SP,#0x78+var_5C] OVL_168:021E59DA 01 22 MOVS R2, #1 ; clearBlock OVL_168:021E59DC 01 40 ANDS R1, R0 OVL_168:021E59DE 02 20 80 03 MOVS R0, 0x8000 OVL_168:021E59E2 08 43 ORRS R0, R1 OVL_168:021E59E4 00 04 LSLS R0, R0, #0x10 OVL_168:021E59E6 00 0C LSRS R0, R0, #0x10 OVL_168:021E59E8 5C 21 MOVS R1, #0x5C ; '\' ; blockLength OVL_168:021E59EA 54 F6 1D FC BL allocateBlockFromExpHeap OVL_168:021E59EE 05 1C MOVS R5, R0 OVL_168:021E59F0 01 9E LDR R6, [SP,#0x78+var_74] OVL_168:021E59F2 2B 1C MOVS R3, R5 OVL_168:021E59F4 0B 22 MOVS R2, #0xB OVL_168:021E59F6 OVL_168:021E59F6 loc_21E59F6 ; CODE XREF: sub_21E5980+7Cj OVL_168:021E59F6 03 CE LDMIA R6!, {R0,R1} OVL_168:021E59F8 03 C3 STMIA R3!, {R0,R1} OVL_168:021E59FA 52 1E SUBS R2, R2, #1 OVL_168:021E59FC FB D1 BNE loc_21E59F6 OVL_168:021E59FE 30 68 LDR R0, [R6] OVL_168:021E5A00 A1 00 LSLS R1, R4, #2 OVL_168:021E5A02 18 60 STR R0, [R3] OVL_168:021E5A04 11 A8 ADD R0, SP, #0x78+var_34 OVL_168:021E5A06 40 58 LDR R0, [R0,R1] OVL_168:021E5A08 69 4A LDR R2, =(sub_21E4D60+1) OVL_168:021E5A0A 68 60 STR R0, [R5,#4] OVL_168:021E5A0C 11 A8 ADD R0, SP, #0x78+var_34 OVL_168:021E5A0E 40 58 LDR R0, [R0,R1] OVL_168:021E5A10 02 99 LDR R1, [SP,#0x78+var_70] OVL_168:021E5A12 A8 60 STR R0, [R5,#8] OVL_168:021E5A14 03 98 LDR R0, [SP,#0x78+var_6C] OVL_168:021E5A16 2B 1C MOVS R3, R5 OVL_168:021E5A18 C0 68 LDR R0, [R0,#0xC] OVL_168:021E5A1A 6A F6 45 FB BL sub_20500A8 OVL_168:021E5A1E 00 21 MOVS R1, #0 OVL_168:021E5A20 C9 43 MVNS R1, R1 OVL_168:021E5A22 88 42 CMP R0, R1 OVL_168:021E5A24 02 D1 BNE loc_21E5A2C OVL_168:021E5A26 28 1C MOVS R0, R5 ; pBlk OVL_168:021E5A28 54 F6 26 FC BL freeBlock OVL_168:021E5A2C OVL_168:021E5A2C loc_21E5A2C ; CODE XREF: sub_21E5980+A4j OVL_168:021E5A2C 06 98 LDR R0, [SP,#0x78+var_60] OVL_168:021E5A2E 64 1C ADDS R4, R4, #1 OVL_168:021E5A30 84 42 CMP R4, R0 OVL_168:021E5A32 CB DB BLT loc_21E59CC OVL_168:021E5A34 19 B0 ADD SP, SP, #0x64 OVL_168:021E5A36 F0 BD POP {R4-R7,PC} ; marker OVL_168:021E5A38 ; --------------------------------------------------------------------------- OVL_168:021E5A38 OVL_168:021E5A38 loc_21E5A38 ; CODE XREF: sub_21E5980+14j OVL_168:021E5A38 ; sub_21E5980+1Cj OVL_168:021E5A38 90 42 CMP R0, R2 OVL_168:021E5A3A 04 D1 BNE loc_21E5A46 OVL_168:021E5A3C 92 22 92 00 MOVS R2, 0x248 OVL_168:021E5A40 B9 5C LDRB R1, [R7,R2] OVL_168:021E5A42 0C 29 CMP R1, #0xC OVL_168:021E5A44 00 D0 BEQ loc_21E5A48 OVL_168:021E5A46 OVL_168:021E5A46 loc_21E5A46 ; CODE XREF: sub_21E5980+BAj OVL_168:021E5A46 81 E0 B loc_21E5B4C OVL_168:021E5A48 ; --------------------------------------------------------------------------- OVL_168:021E5A48 OVL_168:021E5A48 loc_21E5A48 ; CODE XREF: sub_21E5980+C4j OVL_168:021E5A48 39 68 LDR R1, [R7] OVL_168:021E5A4A 49 06 LSLS R1, R1, #0x19 OVL_168:021E5A4C C9 0F LSRS R1, R1, #0x1F OVL_168:021E5A4E 7D D1 BNE loc_21E5B4C OVL_168:021E5A50 11 1C MOVS R1, R2 OVL_168:021E5A52 10 31 ADDS R1, #0x10 OVL_168:021E5A54 79 5A LDRH R1, [R7,R1] OVL_168:021E5A56 DA 3A SUBS R2, #0xDA ; '+' OVL_168:021E5A58 91 42 CMP R1, R2 OVL_168:021E5A5A 77 D0 BEQ loc_21E5B4C OVL_168:021E5A5C 01 1C MOVS R1, R0 OVL_168:021E5A5E 09 39 SUBS R1, #9 OVL_168:021E5A60 01 29 CMP R1, #1 OVL_168:021E5A62 73 D8 BHI loc_21E5B4C OVL_168:021E5A64 0A 28 CMP R0, #0xA OVL_168:021E5A66 02 D1 BNE loc_21E5A6E OVL_168:021E5A68 01 98 LDR R0, [SP,#0x78+var_74] OVL_168:021E5A6A 01 21 MOVS R1, #1 OVL_168:021E5A6C 81 65 STR R1, [R0,#0x58] OVL_168:021E5A6E OVL_168:021E5A6E loc_21E5A6E ; CODE XREF: sub_21E5980+E6j OVL_168:021E5A6E FA F7 5B FB BL sub_21E0128 OVL_168:021E5A72 03 28 CMP R0, #3 OVL_168:021E5A74 09 D8 BHI loc_21E5A8A OVL_168:021E5A76 00 18 ADDS R0, R0, R0 OVL_168:021E5A78 78 44 ADD R0, PC OVL_168:021E5A7A C0 88 LDRH R0, [R0,#6] OVL_168:021E5A7C 00 04 LSLS R0, R0, #0x10 OVL_168:021E5A7E 00 14 ASRS R0, R0, #0x10 OVL_168:021E5A80 87 44 ADD PC, R0 OVL_168:021E5A80 ; --------------------------------------------------------------------------- OVL_168:021E5A82 06 00 DCW 6 OVL_168:021E5A84 10 00 DCW 0x10 OVL_168:021E5A86 24 00 DCW 0x24 OVL_168:021E5A88 06 00 DCW 6 OVL_168:021E5A8A ; --------------------------------------------------------------------------- OVL_168:021E5A8A OVL_168:021E5A8A loc_21E5A8A ; CODE XREF: sub_21E5980+F4j OVL_168:021E5A8A 38 1C MOVS R0, R7 OVL_168:021E5A8C DC 30 ADDS R0, #0xDC ; '_' OVL_168:021E5A8E 00 68 LDR R0, [R0] OVL_168:021E5A90 09 90 STR R0, [SP,#0x78+var_54] OVL_168:021E5A92 07 E0 B loc_21E5AA4 OVL_168:021E5A94 ; --------------------------------------------------------------------------- OVL_168:021E5A94 38 1C MOVS R0, R7 OVL_168:021E5A96 DC 30 ADDS R0, #0xDC ; '_' OVL_168:021E5A98 00 68 LDR R0, [R0] OVL_168:021E5A9A 01 21 MOVS R1, #1 OVL_168:021E5A9C 08 42 TST R0, R1 OVL_168:021E5A9E 00 D1 BNE loc_21E5AA2 OVL_168:021E5AA0 00 21 MOVS R1, #0 OVL_168:021E5AA2 OVL_168:021E5AA2 loc_21E5AA2 ; CODE XREF: sub_21E5980+11Ej OVL_168:021E5AA2 09 91 STR R1, [SP,#0x78+var_54] OVL_168:021E5AA4 OVL_168:021E5AA4 loc_21E5AA4 ; CODE XREF: sub_21E5980+112j OVL_168:021E5AA4 01 20 MOVS R0, #1 OVL_168:021E5AA6 10 E0 B loc_21E5ACA OVL_168:021E5AA8 ; --------------------------------------------------------------------------- OVL_168:021E5AA8 38 1C MOVS R0, R7 OVL_168:021E5AAA DC 30 ADDS R0, #0xDC ; '_' OVL_168:021E5AAC 01 68 LDR R1, [R0] OVL_168:021E5AAE 01 20 MOVS R0, #1 OVL_168:021E5AB0 08 40 ANDS R0, R1 OVL_168:021E5AB2 01 D0 BEQ loc_21E5AB8 OVL_168:021E5AB4 13 21 MOVS R1, #0x13 OVL_168:021E5AB6 00 E0 B loc_21E5ABA OVL_168:021E5AB8 ; --------------------------------------------------------------------------- OVL_168:021E5AB8 OVL_168:021E5AB8 loc_21E5AB8 ; CODE XREF: sub_21E5980+132j OVL_168:021E5AB8 12 21 MOVS R1, #0x12 OVL_168:021E5ABA OVL_168:021E5ABA loc_21E5ABA ; CODE XREF: sub_21E5980+136j OVL_168:021E5ABA 09 91 STR R1, [SP,#0x78+var_54] OVL_168:021E5ABC 00 28 CMP R0, #0 OVL_168:021E5ABE 01 D0 BEQ loc_21E5AC4 OVL_168:021E5AC0 15 20 MOVS R0, #0x15 OVL_168:021E5AC2 00 E0 B loc_21E5AC6 OVL_168:021E5AC4 ; --------------------------------------------------------------------------- OVL_168:021E5AC4 OVL_168:021E5AC4 loc_21E5AC4 ; CODE XREF: sub_21E5980+13Ej OVL_168:021E5AC4 14 20 MOVS R0, #0x14 OVL_168:021E5AC6 OVL_168:021E5AC6 loc_21E5AC6 ; CODE XREF: sub_21E5980+142j OVL_168:021E5AC6 0A 90 STR R0, [SP,#0x78+var_50] OVL_168:021E5AC8 02 20 MOVS R0, #2 OVL_168:021E5ACA OVL_168:021E5ACA loc_21E5ACA ; CODE XREF: sub_21E5980+126j OVL_168:021E5ACA 05 90 STR R0, [SP,#0x78+var_64] OVL_168:021E5ACC 05 98 LDR R0, [SP,#0x78+var_64] OVL_168:021E5ACE 00 28 CMP R0, #0 OVL_168:021E5AD0 67 D0 BEQ loc_21E5BA2 OVL_168:021E5AD2 00 24 MOVS R4, #0 OVL_168:021E5AD4 00 28 CMP R0, #0 OVL_168:021E5AD6 64 DD BLE loc_21E5BA2 OVL_168:021E5AD8 A8 00 LSLS R0, R5, #2 OVL_168:021E5ADA 38 18 ADDS R0, R7, R0 OVL_168:021E5ADC 04 90 STR R0, [SP,#0x78+var_68] OVL_168:021E5ADE 60 1E SUBS R0, R4, #1 OVL_168:021E5AE0 40 0C LSRS R0, R0, #0x11 OVL_168:021E5AE2 08 90 STR R0, [SP,#0x78+var_58] OVL_168:021E5AE4 OVL_168:021E5AE4 loc_21E5AE4 ; CODE XREF: sub_21E5980+1C6j OVL_168:021E5AE4 33 48 LDR R0, =0x1D42 OVL_168:021E5AE6 31 4B LDR R3, =aBtlv_effvm_c ; "btlv_effvm.c" OVL_168:021E5AE8 00 90 STR R0, [SP,#0x78+marker] ; marker OVL_168:021E5AEA 8E 20 80 00 MOVS R0, 0x238 OVL_168:021E5AEE 39 5A LDRH R1, [R7,R0] OVL_168:021E5AF0 08 98 LDR R0, [SP,#0x78+var_58] OVL_168:021E5AF2 01 22 MOVS R2, #1 ; clearBlock OVL_168:021E5AF4 01 40 ANDS R1, R0 OVL_168:021E5AF6 02 20 80 03 MOVS R0, 0x8000 OVL_168:021E5AFA 08 43 ORRS R0, R1 OVL_168:021E5AFC 00 04 LSLS R0, R0, #0x10 OVL_168:021E5AFE 00 0C LSRS R0, R0, #0x10 OVL_168:021E5B00 5C 21 MOVS R1, #0x5C ; '\' ; blockLength OVL_168:021E5B02 54 F6 91 FB BL allocateBlockFromExpHeap OVL_168:021E5B06 05 1C MOVS R5, R0 OVL_168:021E5B08 01 9E LDR R6, [SP,#0x78+var_74] OVL_168:021E5B0A 2B 1C MOVS R3, R5 OVL_168:021E5B0C 0B 22 MOVS R2, #0xB OVL_168:021E5B0E OVL_168:021E5B0E loc_21E5B0E ; CODE XREF: sub_21E5980+194j OVL_168:021E5B0E 03 CE LDMIA R6!, {R0,R1} OVL_168:021E5B10 03 C3 STMIA R3!, {R0,R1} OVL_168:021E5B12 52 1E SUBS R2, R2, #1 OVL_168:021E5B14 FB D1 BNE loc_21E5B0E OVL_168:021E5B16 30 68 LDR R0, [R6] OVL_168:021E5B18 A1 00 LSLS R1, R4, #2 OVL_168:021E5B1A 18 60 STR R0, [R3] OVL_168:021E5B1C 09 A8 ADD R0, SP, #0x78+var_54 OVL_168:021E5B1E 40 58 LDR R0, [R0,R1] OVL_168:021E5B20 02 99 LDR R1, [SP,#0x78+var_70] OVL_168:021E5B22 68 60 STR R0, [R5,#4] OVL_168:021E5B24 A8 60 STR R0, [R5,#8] OVL_168:021E5B26 04 98 LDR R0, [SP,#0x78+var_68] OVL_168:021E5B28 21 4A LDR R2, =(sub_21E4D60+1) OVL_168:021E5B2A C0 68 LDR R0, [R0,#0xC] OVL_168:021E5B2C 2B 1C MOVS R3, R5 OVL_168:021E5B2E 6A F6 BB FA BL sub_20500A8 OVL_168:021E5B32 00 21 MOVS R1, #0 OVL_168:021E5B34 C9 43 MVNS R1, R1 OVL_168:021E5B36 88 42 CMP R0, R1 OVL_168:021E5B38 02 D1 BNE loc_21E5B40 OVL_168:021E5B3A 28 1C MOVS R0, R5 ; pBlk OVL_168:021E5B3C 54 F6 9C FB BL freeBlock OVL_168:021E5B40 OVL_168:021E5B40 loc_21E5B40 ; CODE XREF: sub_21E5980+1B8j OVL_168:021E5B40 05 98 LDR R0, [SP,#0x78+var_64] OVL_168:021E5B42 64 1C ADDS R4, R4, #1 OVL_168:021E5B44 84 42 CMP R4, R0 OVL_168:021E5B46 CD DB BLT loc_21E5AE4 OVL_168:021E5B48 19 B0 ADD SP, SP, #0x64 OVL_168:021E5B4A F0 BD POP {R4-R7,PC} ; marker OVL_168:021E5B4C ; --------------------------------------------------------------------------- OVL_168:021E5B4C OVL_168:021E5B4C loc_21E5B4C ; CODE XREF: sub_21E5980:loc_21E5A46j OVL_168:021E5B4C ; sub_21E5980+CEj ... OVL_168:021E5B4C 1A 48 LDR R0, =0x1D55 OVL_168:021E5B4E 17 4B LDR R3, =aBtlv_effvm_c ; "btlv_effvm.c" OVL_168:021E5B50 00 90 STR R0, [SP,#0x78+marker] ; marker OVL_168:021E5B52 8E 20 80 00 MOVS R0, 0x238 OVL_168:021E5B56 39 5A LDRH R1, [R7,R0] OVL_168:021E5B58 18 48 LDR R0, =0x7FFF OVL_168:021E5B5A 01 22 MOVS R2, #1 ; clearBlock OVL_168:021E5B5C 01 40 ANDS R1, R0 OVL_168:021E5B5E 40 1C ADDS R0, R0, #1 OVL_168:021E5B60 08 43 ORRS R0, R1 OVL_168:021E5B62 00 04 LSLS R0, R0, #0x10 OVL_168:021E5B64 00 0C LSRS R0, R0, #0x10 OVL_168:021E5B66 5C 21 MOVS R1, #0x5C ; '\' ; blockLength OVL_168:021E5B68 54 F6 5E FB BL allocateBlockFromExpHeap OVL_168:021E5B6C 06 1C MOVS R6, R0 OVL_168:021E5B6E 34 1C MOVS R4, R6 OVL_168:021E5B70 0B 23 MOVS R3, #0xB OVL_168:021E5B72 OVL_168:021E5B72 loc_21E5B72 ; CODE XREF: sub_21E5980+1FCj OVL_168:021E5B72 01 9A LDR R2, [SP,#0x78+var_74] OVL_168:021E5B74 5B 1E SUBS R3, R3, #1 OVL_168:021E5B76 03 CA LDMIA R2!, {R0,R1} OVL_168:021E5B78 01 92 STR R2, [SP,#0x78+var_74] OVL_168:021E5B7A 03 C4 STMIA R4!, {R0,R1} OVL_168:021E5B7C F9 D1 BNE loc_21E5B72 OVL_168:021E5B7E 10 1C MOVS R0, R2 OVL_168:021E5B80 00 68 LDR R0, [R0] OVL_168:021E5B82 02 99 LDR R1, [SP,#0x78+var_70] OVL_168:021E5B84 20 60 STR R0, [R4] OVL_168:021E5B86 A8 00 LSLS R0, R5, #2 OVL_168:021E5B88 38 18 ADDS R0, R7, R0 OVL_168:021E5B8A C0 68 LDR R0, [R0,#0xC] OVL_168:021E5B8C 08 4A LDR R2, =(sub_21E4D60+1) OVL_168:021E5B8E 33 1C MOVS R3, R6 OVL_168:021E5B90 6A F6 8A FA BL sub_20500A8 OVL_168:021E5B94 00 21 MOVS R1, #0 OVL_168:021E5B96 C9 43 MVNS R1, R1 OVL_168:021E5B98 88 42 CMP R0, R1 OVL_168:021E5B9A 02 D1 BNE loc_21E5BA2 OVL_168:021E5B9C 30 1C MOVS R0, R6 ; pBlk OVL_168:021E5B9E 54 F6 6B FB BL freeBlock OVL_168:021E5BA2 OVL_168:021E5BA2 loc_21E5BA2 ; CODE XREF: sub_21E5980:loc_21E59BEj OVL_168:021E5BA2 ; sub_21E5980+150j ... OVL_168:021E5BA2 19 B0 ADD SP, SP, #0x64 OVL_168:021E5BA4 F0 BD POP {R4-R7,PC} OVL_168:021E5BA4 ; End of function sub_21E5980 OVL_168:021E5BA4 OVL_168:021E5BA4 ; --------------------------------------------------------------------------- OVL_168:021E5BA6 C0 DCB 0xC0 ; + OVL_168:021E5BA7 46 DCB 0x46 ; F OVL_168:021E5BA8 ; int dword_21E5BA8 OVL_168:021E5BA8 0B 1D 00 00 dword_21E5BA8 DCD 0x1D0B ; DATA XREF: sub_21E5980:loc_21E59CCr OVL_168:021E5BAC ; char *off_21E5BAC OVL_168:021E5BAC B4 41 1F 02 off_21E5BAC DCD aBtlv_effvm_c ; DATA XREF: sub_21E5980+4Er OVL_168:021E5BAC ; sub_21E5980+166r ... OVL_168:021E5BAC ; "btlv_effvm.c" OVL_168:021E5BB0 61 4D 1E 02 off_21E5BB0 DCD sub_21E4D60+1 ; DATA XREF: sub_21E5980+88r OVL_168:021E5BB0 ; sub_21E5980+1A8r ... OVL_168:021E5BB4 ; int dword_21E5BB4 OVL_168:021E5BB4 42 1D 00 00 dword_21E5BB4 DCD 0x1D42 ; DATA XREF: sub_21E5980:loc_21E5AE4r OVL_168:021E5BB8 ; int dword_21E5BB8 OVL_168:021E5BB8 55 1D 00 00 dword_21E5BB8 DCD 0x1D55 ; DATA XREF: sub_21E5980:loc_21E5B4Cr OVL_168:021E5BBC FF 7F 00 00 dword_21E5BBC DCD 0x7FFF ; DATA XREF: sub_21E5980+1D8r