diff options
author | red031000 <rubenru09@aol.com> | 2020-07-16 17:46:10 +0100 |
---|---|---|
committer | red031000 <rubenru09@aol.com> | 2020-07-16 17:46:10 +0100 |
commit | 776413a0e4d39c2c188be6598d20965cf7a98486 (patch) | |
tree | 62e8a712bbaf8e1f1f17a8f1d6c5d6100a421eb1 | |
parent | b8e21a10ed77536be3b7372a31085e9fdccef398 (diff) |
split mod05_021DA5B8
-rw-r--r-- | arm9/arm9.lsf | 1 | ||||
-rw-r--r-- | arm9/global.inc | 3 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021DA5B8.s | 1503 | ||||
-rw-r--r-- | arm9/modules/05/asm/module_05.s | 1497 |
4 files changed, 1507 insertions, 1497 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 52499bdd..c4039c4f 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -521,6 +521,7 @@ Overlay MODULE_05 Object mod05_021D80E8.o Object mod05_021D9320.o Object mod05_021D9A48.o + Object mod05_021DA5B8.o Object module_05.o } diff --git a/arm9/global.inc b/arm9/global.inc index 5f93b499..2c9a5ab9 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6265,6 +6265,8 @@ .extern MOD05_021DA5D0 .extern MOD05_021DA5D8 .extern MOD05_021DA7B4 +.extern MOD05_021DA9E8 +.extern MOD05_021DAA2C .extern MOD05_021DAAA4 .extern MOD05_021DAC70 .extern MOD05_021DAE40 @@ -6272,6 +6274,7 @@ .extern MOD05_021DAF28 .extern MOD05_021DAF78 .extern MOD05_021DAF98 +.extern MOD05_021DAFA8 .extern MOD05_021DB030 .extern MOD05_021DB040 .extern MOD05_021DB144 diff --git a/arm9/modules/05/asm/mod05_021DA5B8.s b/arm9/modules/05/asm/mod05_021DA5B8.s new file mode 100644 index 00000000..58724788 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021DA5B8.s @@ -0,0 +1,1503 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021DA5B8 +MOD05_021DA5B8: ; 0x021DA5B8 + push {r3, lr} + mov r0, #4 + mov r1, #0x28 + bl AllocFromHeapAtEnd + mov r1, #0 + str r1, [r0] + pop {r3, pc} + + thumb_func_start MOD05_021DA5C8 +MOD05_021DA5C8: ; 0x021DA5C8 + ldr r3, _021DA5CC ; =FreeToHeap + bx r3 + .balign 4, 0 +_021DA5CC: .word FreeToHeap + + thumb_func_start MOD05_021DA5D0 +MOD05_021DA5D0: ; 0x021DA5D0 + str r0, [r2, #0x14] + str r1, [r2, #0x18] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021DA5D8 +MOD05_021DA5D8: ; 0x021DA5D8 + push {r4, r5, r6, r7, lr} + sub sp, #0x84 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #5 + bls _021DA5E8 + b _021DA78E +_021DA5E8: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA5F4: ; jump table + .short _021DA600 - _021DA5F4 - 2 ; case 0 + .short _021DA69A - _021DA5F4 - 2 ; case 1 + .short _021DA6EC - _021DA5F4 - 2 ; case 2 + .short _021DA700 - _021DA5F4 - 2 ; case 3 + .short _021DA714 - _021DA5F4 - 2 ; case 4 + .short _021DA772 - _021DA5F4 - 2 ; case 5 +_021DA600: + ldr r6, _021DA7A4 ; =UNK05_021F650C + add r3, sp, #0x34 + mov r2, #0xa +_021DA606: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021DA606 + mov r0, #0 + str r0, [r4, #0x20] + strb r0, [r4, #0x1d] + mov r0, #3 + str r0, [sp] + mov r2, #1 + str r2, [sp, #4] + add r0, sp, #0x24 + str r0, [sp, #8] + sub r2, r2, #2 + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + add r3, r2, #0 + bl FUN_0204A840 + mov r0, #1 + strb r0, [r4, #0x1c] + add r0, sp, #0x20 + str r0, [sp] + add r0, sp, #0x1c + str r0, [sp, #4] + add r0, r5, #0 + add r1, sp, #0x34 + mov r2, #0x14 + add r3, sp, #0x24 + bl FUN_0204A94C + cmp r0, #0 + beq _021DA688 + ldr r0, [r5, #0x4c] + ldr r1, [sp, #0x1c] + bl MOD05_021DA230 + add r6, r0, #0 + strb r6, [r4, #0x1e] + ldr r0, [r5, #0x2c] + bl MOD05_021F4C88 + add r7, r0, #0 + ldr r0, [sp, #0x20] + bl MOD05_021E7EC8 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + bl MOD05_021E7ECC + ldr r1, [sp, #0x18] + mov r2, #1 + str r1, [sp] + str r0, [sp, #4] + str r7, [sp, #8] + str r6, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + ldr r3, [sp, #0x1c] + bl MOD05_021DA464 + b _021DA692 +_021DA688: + bl ErrorHandling + add sp, #0x84 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021DA692: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA78E +_021DA69A: + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD05_021DA5AC + add r6, r0, #0 + cmp r6, #0x4b + beq _021DA6B2 + ldr r0, [r5, #0x20] + bl FUN_0201EC88 + mov r0, #1 + str r0, [r4, #0x20] +_021DA6B2: + add r0, r6, #0 + bl MOD05_021DAA6C + cmp r0, #0 + beq _021DA6C0 + ldr r6, _021DA7A8 ; =0x00000608 + b _021DA6C2 +_021DA6C0: + ldr r6, _021DA7AC ; =0x00000605 +_021DA6C2: + ldrb r0, [r4, #0x1e] + cmp r0, #2 + bne _021DA6CC + mov r2, #0 + b _021DA6DA +_021DA6CC: + cmp r0, #4 + bne _021DA6D4 + mov r2, #0 + b _021DA6DA +_021DA6D4: + bl ErrorHandling + mov r2, #0 +_021DA6DA: + ldr r0, [r5, #0x50] + mov r1, #1 + add r3, r6, #0 + bl MOD05_021DA514 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA78E +_021DA6EC: + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD05_021DA58C + cmp r0, #0 + beq _021DA78E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA78E +_021DA700: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + mov r1, #0xc + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA78E +_021DA714: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r6, r0, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _021DA78E + add r0, r6, #0 + bl FUN_0205AE50 + add r0, r6, #0 + mov r1, #1 + bl FUN_0205889C + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD05_021DA5AC + bl MOD05_021DAA6C + cmp r0, #0 + beq _021DA746 + mov r6, #0 + b _021DA748 +_021DA746: + ldr r6, _021DA7B0 ; =0x00000607 +_021DA748: + ldrb r0, [r4, #0x1e] + cmp r0, #2 + bne _021DA752 + mov r2, #1 + b _021DA760 +_021DA752: + cmp r0, #4 + bne _021DA75A + mov r2, #1 + b _021DA760 +_021DA75A: + bl ErrorHandling + mov r2, #1 +_021DA760: + ldr r0, [r5, #0x50] + mov r1, #1 + add r3, r6, #0 + bl MOD05_021DA514 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA78E +_021DA772: + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD05_021DA58C + cmp r0, #0 + beq _021DA78E + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #1 + bl MOD05_021DA54C + add sp, #0x84 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021DA78E: + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _021DA79E + add r4, #0x1d + ldr r0, [r5, #0x20] + add r1, r4, #0 + bl MOD05_021DA9E8 +_021DA79E: + mov r0, #0 + add sp, #0x84 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021DA7A4: .word UNK05_021F650C +_021DA7A8: .word 0x00000608 +_021DA7AC: .word 0x00000605 +_021DA7B0: .word 0x00000607 + + thumb_func_start MOD05_021DA7B4 +MOD05_021DA7B4: ; 0x021DA7B4 + push {r4, r5, r6, r7, lr} + sub sp, #0x84 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #6 + bls _021DA7C4 + b _021DA9BE +_021DA7C4: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA7D0: ; jump table + .short _021DA7DE - _021DA7D0 - 2 ; case 0 + .short _021DA896 - _021DA7D0 - 2 ; case 1 + .short _021DA8F6 - _021DA7D0 - 2 ; case 2 + .short _021DA916 - _021DA7D0 - 2 ; case 3 + .short _021DA92A - _021DA7D0 - 2 ; case 4 + .short _021DA980 - _021DA7D0 - 2 ; case 5 + .short _021DA9B0 - _021DA7D0 - 2 ; case 6 +_021DA7DE: + ldr r6, _021DA9D4 ; =UNK05_021F655C + add r3, sp, #0x34 + mov r2, #0xa +_021DA7E4: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021DA7E4 + mov r3, #0 + str r3, [r4, #0x20] + strb r3, [r4, #0x1d] + mov r0, #3 + str r0, [sp] + mov r2, #1 + str r2, [sp, #4] + add r0, sp, #0x24 + str r0, [sp, #8] + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + sub r2, r2, #2 + bl FUN_0204A840 + mov r0, #1 + strb r0, [r4, #0x1c] + add r0, sp, #0x20 + str r0, [sp] + add r0, sp, #0x1c + str r0, [sp, #4] + add r0, r5, #0 + add r1, sp, #0x34 + mov r2, #0x14 + add r3, sp, #0x24 + bl FUN_0204A94C + cmp r0, #0 + beq _021DA864 + ldr r0, [r5, #0x4c] + ldr r1, [sp, #0x1c] + bl MOD05_021DA230 + add r6, r0, #0 + strb r6, [r4, #0x1e] + ldr r0, [r5, #0x2c] + bl MOD05_021F4C88 + add r7, r0, #0 + ldr r0, [sp, #0x20] + bl MOD05_021E7EC8 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + bl MOD05_021E7ECC + ldr r1, [sp, #0x18] + mov r2, #1 + str r1, [sp] + str r0, [sp, #4] + str r7, [sp, #8] + str r6, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + ldr r3, [sp, #0x1c] + bl MOD05_021DA464 + b _021DA878 +_021DA864: + bl ErrorHandling + mov r0, #1 + bl MOD05_021D7CA4 + mov r0, #6 + str r0, [r4] + add sp, #0x84 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021DA878: + ldr r0, [r5, #0x20] + bl FUN_0201F008 + strh r0, [r4, #0x24] + ldr r0, [sp, #0x1c] + cmp r0, #0x4b + beq _021DA88E + ldr r0, _021DA9D8 ; =0x0000FFA0 + ldr r1, [r5, #0x20] + bl FUN_0201EF2C +_021DA88E: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA9BE +_021DA896: + mov r1, #0 + str r1, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + ldr r0, [r5, #0x10] + mov r2, #9 + bl FUN_0204C1B4 + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD05_021DA5AC + cmp r0, #0x4b + beq _021DA8BE + mov r1, #1 + str r1, [r4, #0x20] +_021DA8BE: + bl MOD05_021DAA6C + cmp r0, #0 + beq _021DA8CA + ldr r6, _021DA9DC ; =0x00000608 + b _021DA8CC +_021DA8CA: + ldr r6, _021DA9E0 ; =0x00000605 +_021DA8CC: + ldrb r0, [r4, #0x1e] + cmp r0, #2 + bne _021DA8D6 + mov r2, #0 + b _021DA8E4 +_021DA8D6: + cmp r0, #4 + bne _021DA8DE + mov r2, #2 + b _021DA8E4 +_021DA8DE: + bl ErrorHandling + mov r2, #0 +_021DA8E4: + ldr r0, [r5, #0x50] + mov r1, #1 + add r3, r6, #0 + bl MOD05_021DA514 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA9BE +_021DA8F6: + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD05_021DA58C + cmp r0, #0 + beq _021DA9BE + ldr r0, [r5, #0x38] + bl FUN_020553A0 + mov r1, #0 + bl FUN_0205889C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA9BE +_021DA916: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + mov r1, #0xd + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA9BE +_021DA92A: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r6, r0, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _021DA9BE + add r0, r6, #0 + bl FUN_0205AE50 + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD05_021DA5AC + bl MOD05_021DAA6C + cmp r0, #0 + beq _021DA954 + mov r6, #0 + b _021DA956 +_021DA954: + ldr r6, _021DA9E4 ; =0x00000607 +_021DA956: + ldrb r0, [r4, #0x1e] + cmp r0, #2 + bne _021DA960 + mov r2, #1 + b _021DA96E +_021DA960: + cmp r0, #4 + bne _021DA968 + mov r2, #3 + b _021DA96E +_021DA968: + bl ErrorHandling + mov r2, #1 +_021DA96E: + ldr r0, [r5, #0x50] + mov r1, #1 + add r3, r6, #0 + bl MOD05_021DA514 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA9BE +_021DA980: + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD05_021DA58C + cmp r0, #0 + beq _021DA9BE + bl FUN_0200E308 + cmp r0, #0 + beq _021DA9BE + ldr r0, [r5, #0x20] + bl FUN_0201F008 + ldrh r1, [r4, #0x24] + cmp r1, r0 + bne _021DA9BE + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #1 + bl MOD05_021DA54C + add sp, #0x84 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021DA9B0: + bl FUN_0200E308 + cmp r0, #0 + beq _021DA9BE + add sp, #0x84 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021DA9BE: + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _021DA9CE + add r4, #0x1d + ldr r0, [r5, #0x20] + add r1, r4, #0 + bl MOD05_021DAA2C +_021DA9CE: + mov r0, #0 + add sp, #0x84 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021DA9D4: .word UNK05_021F655C +_021DA9D8: .word 0x0000FFA0 +_021DA9DC: .word 0x00000608 +_021DA9E0: .word 0x00000605 +_021DA9E4: .word 0x00000607 + + thumb_func_start MOD05_021DA9E8 +MOD05_021DA9E8: ; 0x021DA9E8 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldrb r0, [r5] + mov r4, #0xc + add r1, r0, #0 + mul r1, r4 + cmp r1, #0x60 + bgt _021DAA28 + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + cmp r0, #0x60 + bls _021DAA08 + sub r0, #0x60 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_021DAA08: + add r0, r6, #0 + bl FUN_0201F008 + sub r0, r0, r4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + beq _021DAA22 + neg r0, r4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r1, r6, #0 + bl FUN_0201EF2C +_021DAA22: + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] +_021DAA28: + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DAA2C +MOD05_021DAA2C: ; 0x021DAA2C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldrb r0, [r5] + lsl r0, r0, #4 + cmp r0, #0x60 + bge _021DAA68 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #0x60 + bls _021DAA4A + sub r0, #0x60 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + b _021DAA4C +_021DAA4A: + mov r4, #0x10 +_021DAA4C: + add r0, r6, #0 + bl FUN_0201F008 + add r0, r0, r4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + beq _021DAA62 + add r0, r4, #0 + add r1, r6, #0 + bl FUN_0201EF2C +_021DAA62: + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] +_021DAA68: + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DAA6C +MOD05_021DAA6C: ; 0x021DAA6C + cmp r0, #0x46 + beq _021DAA98 + ldr r2, _021DAAA0 ; =0x000001BA + cmp r0, r2 + beq _021DAA98 + add r1, r2, #0 + sub r1, #0x90 + cmp r0, r1 + beq _021DAA98 + add r1, r2, #0 + add r1, #0xe + cmp r0, r1 + beq _021DAA98 + add r1, r2, #0 + sub r1, #0xf + cmp r0, r1 + beq _021DAA98 + add r2, #0x2a + cmp r0, r2 + beq _021DAA98 + cmp r0, #0x4b + bne _021DAA9C +_021DAA98: + mov r0, #1 + bx lr +_021DAA9C: + mov r0, #0 + bx lr + .balign 4, 0 +_021DAAA0: .word 0x000001BA + + thumb_func_start MOD05_021DAAA4 +MOD05_021DAAA4: ; 0x021DAAA4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r6, r2, #0 + cmp r0, #5 + bls _021DAAB6 + b _021DAC60 +_021DAAB6: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DAAC2: ; jump table + .short _021DAACE - _021DAAC2 - 2 ; case 0 + .short _021DAB8E - _021DAAC2 - 2 ; case 1 + .short _021DABCE - _021DAAC2 - 2 ; case 2 + .short _021DABEE - _021DAAC2 - 2 ; case 3 + .short _021DAC16 - _021DAAC2 - 2 ; case 4 + .short _021DAC34 - _021DAAC2 - 2 ; case 5 +_021DAACE: + ldr r3, _021DAC68 ; =UNK05_021F64FC + add r2, sp, #0x20 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + cmp r6, #2 + bne _021DAAF8 + mov r0, #2 + str r0, [sp] + mov r2, #1 + str r2, [sp, #4] + add r0, sp, #0x30 + str r0, [sp, #8] + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + sub r2, r2, #2 + mov r3, #0 + bl FUN_0204A840 + b _021DAB10 +_021DAAF8: + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, sp, #0x30 + str r0, [sp, #8] + mov r2, #0 + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + add r3, r2, #0 + bl FUN_0204A840 +_021DAB10: + mov r0, #2 + strb r0, [r4, #0x1c] + add r0, sp, #0x1c + str r0, [sp] + add r0, sp, #0x18 + str r0, [sp, #4] + add r0, r5, #0 + add r1, sp, #0x20 + mov r2, #4 + add r3, sp, #0x30 + bl FUN_0204A94C + cmp r0, #0 + beq _021DAB5E + ldr r0, [r5, #0x2c] + bl MOD05_021F4C88 + add r6, r0, #0 + ldr r0, [sp, #0x1c] + bl MOD05_021E7EC8 + add r7, r0, #0 + ldr r0, [sp, #0x1c] + bl MOD05_021E7ECC + str r7, [sp] + str r0, [sp, #4] + str r6, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + ldr r3, [sp, #0x18] + mov r2, #2 + bl MOD05_021DA464 + b _021DAB68 +_021DAB5E: + bl ErrorHandling + add sp, #0x40 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DAB68: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _021DAB82 + add r0, r5, #0 + mov r1, #0x49 + bl FUN_0205ADDC + b _021DAB86 +_021DAB82: + bl ErrorHandling +_021DAB86: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAC60 +_021DAB8E: + mov r0, #1 + bl MOD05_021D7CA4 + ldr r0, [r5, #0x50] + ldr r3, _021DAC6C ; =0x00000615 + mov r1, #2 + mov r2, #0 + bl MOD05_021DA514 + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _021DABC2 + cmp r6, #3 + bne _021DABB8 + mov r1, #0xb + b _021DABBA +_021DABB8: + mov r1, #0xa +_021DABBA: + add r0, r5, #0 + bl FUN_0205ADDC + b _021DABC6 +_021DABC2: + bl ErrorHandling +_021DABC6: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAC60 +_021DABCE: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _021DAC60 + add r0, r5, #0 + mov r1, #0x4a + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAC60 +_021DABEE: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _021DAC60 + cmp r6, #3 + bne _021DAC06 + mov r1, #0xb + b _021DAC08 +_021DAC06: + mov r1, #0xa +_021DAC08: + add r0, r5, #0 + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAC60 +_021DAC16: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _021DAC60 + add r0, r5, #0 + bl FUN_0205AE50 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAC60 +_021DAC34: + ldr r0, [r5, #0x50] + mov r1, #2 + bl MOD05_021DA58C + cmp r0, #0 + beq _021DAC60 + bl FUN_0200E308 + cmp r0, #0 + beq _021DAC60 + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #2 + bl MOD05_021DA54C + ldr r0, _021DAC6C ; =0x00000615 + mov r1, #0 + bl FUN_020054F0 + add sp, #0x40 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DAC60: + mov r0, #0 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DAC68: .word UNK05_021F64FC +_021DAC6C: .word 0x00000615 + + thumb_func_start MOD05_021DAC70 +MOD05_021DAC70: ; 0x021DAC70 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r6, r2, #0 + cmp r0, #4 + bls _021DAC82 + b _021DAE04 +_021DAC82: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DAC8E: ; jump table + .short _021DAC98 - _021DAC8E - 2 ; case 0 + .short _021DAD5A - _021DAC8E - 2 ; case 1 + .short _021DAD94 - _021DAC8E - 2 ; case 2 + .short _021DADBA - _021DAC8E - 2 ; case 3 + .short _021DADD8 - _021DAC8E - 2 ; case 4 +_021DAC98: + ldr r3, _021DAE0C ; =UNK05_021F64EC + add r2, sp, #0x20 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + cmp r6, #2 + bne _021DACC2 + mov r0, #2 + str r0, [sp] + mov r2, #1 + str r2, [sp, #4] + add r0, sp, #0x30 + str r0, [sp, #8] + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + sub r2, r2, #2 + mov r3, #0 + bl FUN_0204A840 + b _021DACDA +_021DACC2: + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, sp, #0x30 + str r0, [sp, #8] + mov r2, #0 + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + add r3, r2, #0 + bl FUN_0204A840 +_021DACDA: + mov r0, #2 + strb r0, [r4, #0x1c] + add r0, sp, #0x1c + str r0, [sp] + add r0, sp, #0x18 + str r0, [sp, #4] + add r0, r5, #0 + add r1, sp, #0x20 + mov r2, #4 + add r3, sp, #0x30 + bl FUN_0204A94C + cmp r0, #0 + beq _021DAD2A + ldr r0, [r5, #0x2c] + bl MOD05_021F4C88 + add r6, r0, #0 + ldr r0, [sp, #0x1c] + bl MOD05_021E7EC8 + add r7, r0, #0 + ldr r0, [sp, #0x1c] + bl MOD05_021E7ECC + str r7, [sp] + str r0, [sp, #4] + str r6, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + ldr r3, [sp, #0x18] + mov r2, #2 + bl MOD05_021DA464 + b _021DAD34 +_021DAD2A: + bl ErrorHandling + add sp, #0x40 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DAD34: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _021DAD4E + add r0, r5, #0 + mov r1, #0x49 + bl FUN_0205ADDC + b _021DAD52 +_021DAD4E: + bl ErrorHandling +_021DAD52: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAE04 +_021DAD5A: + ldr r0, [r5, #0x50] + ldr r3, _021DAE10 ; =0x00000615 + mov r1, #2 + mov r2, #0 + bl MOD05_021DA514 + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _021DAD88 + cmp r6, #2 + bne _021DAD7E + mov r1, #0xa + b _021DAD80 +_021DAD7E: + mov r1, #0xb +_021DAD80: + add r0, r5, #0 + bl FUN_0205ADDC + b _021DAD8C +_021DAD88: + bl ErrorHandling +_021DAD8C: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAE04 +_021DAD94: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _021DAE04 + add r0, r5, #0 + mov r1, #0x4a + bl FUN_0205ADDC + mov r0, #0 + bl MOD05_021D7CA4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAE04 +_021DADBA: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _021DAE04 + add r0, r5, #0 + bl FUN_0205AE50 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAE04 +_021DADD8: + ldr r0, [r5, #0x50] + mov r1, #2 + bl MOD05_021DA58C + cmp r0, #0 + beq _021DAE04 + bl FUN_0200E308 + cmp r0, #0 + beq _021DAE04 + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #2 + bl MOD05_021DA54C + ldr r0, _021DAE10 ; =0x00000615 + mov r1, #0 + bl FUN_020054F0 + add sp, #0x40 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DAE04: + mov r0, #0 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DAE0C: .word UNK05_021F64EC +_021DAE10: .word 0x00000615 + + thumb_func_start MOD05_021DAE14 +MOD05_021DAE14: ; 0x021DAE14 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldrb r1, [r4] + ldr r0, [r5, #0x50] + bl MOD05_021DA58C + cmp r0, #0 + beq _021DAE3C + add r0, r4, #0 + bl FreeToHeap + mov r0, #1 + pop {r3, r4, r5, pc} +_021DAE3C: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021DAE40 +MOD05_021DAE40: ; 0x021DAE40 + push {r4, r5, r6, r7, lr} + sub sp, #0x84 + ldr r6, _021DAED0 ; =UNK05_021F65AC + str r3, [sp, #0x18] + add r5, r0, #0 + add r7, r1, #0 + add r4, sp, #0x34 + mov r3, #0xa +_021DAE50: + ldmia r6!, {r0, r1} + stmia r4!, {r0, r1} + sub r3, r3, #1 + bne _021DAE50 + mov r0, #3 + str r0, [sp] + mov r3, #1 + add r1, r2, #0 + str r3, [sp, #4] + add r0, sp, #0x24 + str r0, [sp, #8] + sub r2, r3, #2 + add r0, r7, #0 + mov r3, #0 + bl FUN_0204A840 + add r0, sp, #0x20 + str r0, [sp] + add r0, sp, #0x1c + str r0, [sp, #4] + add r0, r5, #0 + add r1, sp, #0x34 + mov r2, #0x14 + add r3, sp, #0x24 + bl FUN_0204A94C + cmp r0, #0 + beq _021DAEC8 + ldr r0, [r5, #0x4c] + ldr r1, [sp, #0x1c] + bl MOD05_021DA230 + add r4, r0, #0 + ldr r0, [r5, #0x2c] + bl MOD05_021F4C88 + add r6, r0, #0 + ldr r0, [sp, #0x20] + bl MOD05_021E7EC8 + add r7, r0, #0 + ldr r0, [sp, #0x20] + bl MOD05_021E7ECC + str r7, [sp] + str r0, [sp, #4] + str r6, [sp, #8] + str r4, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + ldr r2, [sp, #0x18] + ldr r3, [sp, #0x1c] + bl MOD05_021DA464 + add sp, #0x84 + pop {r4, r5, r6, r7, pc} +_021DAEC8: + bl ErrorHandling + add sp, #0x84 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021DAED0: .word UNK05_021F65AC + + thumb_func_start MOD05_021DAED4 +MOD05_021DAED4: ; 0x021DAED4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x50] + add r7, r1, #0 + bl MOD05_021DA5AC + add r6, r0, #0 + ldr r0, [r5, #0x4c] + add r1, r6, #0 + bl MOD05_021DA230 + add r4, r0, #0 + add r0, r6, #0 + bl MOD05_021DAA6C + cmp r0, #0 + beq _021DAEFA + ldr r6, _021DAF20 ; =0x00000608 + b _021DAEFC +_021DAEFA: + ldr r6, _021DAF24 ; =0x00000605 +_021DAEFC: + cmp r4, #2 + bne _021DAF04 + mov r2, #0 + b _021DAF12 +_021DAF04: + cmp r4, #4 + bne _021DAF0C + mov r2, #0 + b _021DAF12 +_021DAF0C: + bl ErrorHandling + mov r2, #0 +_021DAF12: + ldr r0, [r5, #0x50] + add r1, r7, #0 + add r3, r6, #0 + bl MOD05_021DA514 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DAF20: .word 0x00000608 +_021DAF24: .word 0x00000605 + + thumb_func_start MOD05_021DAF28 +MOD05_021DAF28: ; 0x021DAF28 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x50] + add r7, r1, #0 + bl MOD05_021DA5AC + add r6, r0, #0 + ldr r0, [r5, #0x4c] + add r1, r6, #0 + bl MOD05_021DA230 + add r4, r0, #0 + add r0, r6, #0 + bl MOD05_021DAA6C + cmp r0, #0 + beq _021DAF4E + mov r6, #0 + b _021DAF50 +_021DAF4E: + ldr r6, _021DAF74 ; =0x00000607 +_021DAF50: + cmp r4, #2 + bne _021DAF58 + mov r2, #1 + b _021DAF66 +_021DAF58: + cmp r4, #4 + bne _021DAF60 + mov r2, #1 + b _021DAF66 +_021DAF60: + bl ErrorHandling + mov r2, #1 +_021DAF66: + ldr r0, [r5, #0x50] + add r1, r7, #0 + add r3, r6, #0 + bl MOD05_021DA514 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DAF74: .word 0x00000607 + + thumb_func_start MOD05_021DAF78 +MOD05_021DAF78: ; 0x021DAF78 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #4 + mov r1, #1 + bl AllocFromHeapAtEnd + add r2, r0, #0 + strb r4, [r2] + ldr r0, [r5, #0x10] + ldr r1, _021DAF94 ; =MOD05_021DAE14 + bl FUN_0204640C + pop {r3, r4, r5, pc} + .balign 4, 0 +_021DAF94: .word MOD05_021DAE14 + + thumb_func_start MOD05_021DAF98 +MOD05_021DAF98: ; 0x021DAF98 + add r3, r0, #0 + add r2, r1, #0 + ldr r0, [r3, #0x4c] + ldr r1, [r3, #0x50] + ldr r3, _021DAFA4 ; =MOD05_021DA54C + bx r3 + .balign 4, 0 +_021DAFA4: .word MOD05_021DA54C + + thumb_func_start MOD05_021DAFA8 +MOD05_021DAFA8: ; 0x021DAFA8 + push {r4, r5, lr} + sub sp, #0x2c + add r5, r2, #0 + ldr r2, _021DB02C ; =UNK05_021F64E4 + add r4, r3, #0 + ldr r3, [r2] + ldr r2, [r2, #4] + str r3, [sp, #0xc] + str r2, [sp, #0x10] + mov r2, #1 + str r2, [sp] + mov r2, #3 + str r2, [sp, #4] + add r2, sp, #0x1c + str r2, [sp, #8] + mov r2, #0 + sub r3, r2, #1 + bl FUN_0204A840 + add r0, sp, #0x18 + str r0, [sp] + add r0, sp, #0x14 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0xc + mov r2, #2 + add r3, sp, #0x1c + bl FUN_0204A94C + cmp r0, #0 + bne _021DAFEA + bl ErrorHandling +_021DAFEA: + ldr r0, [sp, #0x18] + bl MOD05_021E7EC8 + add r3, r0, #0 + ldr r0, [r4, #0x4c] + add r1, r5, #0 + str r0, [sp] + ldr r0, [sp, #0x14] + mov r2, #1 + bl MOD05_021D9DC0 + cmp r0, #0 + bne _021DB008 + bl ErrorHandling +_021DB008: + ldr r0, [sp, #0x14] + ldr r2, [r4, #0x4c] + add r1, r5, #0 + bl MOD05_021DA080 + add r4, r0, #0 + bl MOD05_021DA118 + add r0, r4, #0 + mov r1, #0 + bl MOD05_021DA0DC + add r0, r4, #0 + bl MOD05_021DA0E0 + add sp, #0x2c + pop {r4, r5, pc} + nop +_021DB02C: .word UNK05_021F64E4 + + thumb_func_start MOD05_021DB030 +MOD05_021DB030: ; 0x021DB030 + push {r3, lr} + mov r0, #4 + mov r1, #0x10 + bl AllocFromHeapAtEnd + mov r1, #0 + str r1, [r0] + pop {r3, pc} + + thumb_func_start MOD05_021DB040 +MOD05_021DB040: ; 0x021DB040 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #3 + bhi _021DB126 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DB066: ; jump table + .short _021DB06E - _021DB066 - 2 ; case 0 + .short _021DB0CA - _021DB066 - 2 ; case 1 + .short _021DB0E8 - _021DB066 - 2 ; case 2 + .short _021DB106 - _021DB066 - 2 ; case 3 +_021DB06E: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_020552F8 + cmp r0, #1 + bne _021DB08C + add r0, r6, #0 + mov r1, #1 + bl FUN_0205889C + mov r0, #1 + b _021DB096 +_021DB08C: + add r0, r6, #0 + mov r1, #0 + bl FUN_0205889C + mov r0, #3 +_021DB096: + str r0, [r4] + mov r0, #0 + str r0, [r4, #8] + strb r0, [r4, #4] + ldr r0, [r5, #0x20] + bl FUN_0201F008 + strh r0, [r4, #0xc] + ldr r0, _021DB13C ; =0x0000FFA0 + ldr r1, [r5, #0x20] + bl FUN_0201EF2C + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0xb + str r0, [sp, #8] + ldr r3, _021DB140 ; =0x00007FFF + mov r0, #0 + add r2, r1, #0 + bl FUN_0200E1D0 + mov r0, #1 + str r0, [r4, #8] + b _021DB126 +_021DB0CA: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r6, r0, #0 + mov r1, #0 + bl FUN_0205889C + add r0, r6, #0 + mov r1, #0xd + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DB126 +_021DB0E8: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r6, r0, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _021DB126 + add r0, r6, #0 + bl FUN_0205AE50 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DB126 +_021DB106: + bl FUN_0200E308 + cmp r0, #0 + beq _021DB126 + ldr r0, [r5, #0x20] + bl FUN_0201F008 + ldrh r1, [r4, #0xc] + cmp r1, r0 + bne _021DB126 + add r0, r4, #0 + bl FreeToHeap + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021DB126: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021DB134 + ldr r0, [r5, #0x20] + add r1, r4, #4 + bl MOD05_021DAA2C +_021DB134: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021DB13C: .word 0x0000FFA0 +_021DB140: .word 0x00007FFF + + .section .rodata + + .global UNK05_021F64E4 +UNK05_021F64E4: ; 0x021F64E4 + .word 0x0000012F, 0x00000130 + + .global UNK05_021F64EC +UNK05_021F64EC: ; 0x021F64EC + .word 0x00000082, 0x00000083, 0x000001A9, 0x000001AA + + .global UNK05_021F64FC +UNK05_021F64FC: ; 0x021F64FC + .word 0x00000082, 0x00000083, 0x000001A9, 0x000001AA + + .global UNK05_021F650C +UNK05_021F650C: ; 0x021F650C + .word 0x00000042, 0x00000043, 0x00000044, 0x00000045 + .word 0x000000F6, 0x00000046, 0x000001AB, 0x000001C8 + .word 0x00000104, 0x00000138, 0x00000139, 0x000001B6 + .word 0x000001BC, 0x000001B9, 0x000001BA, 0x0000012A + .word 0x000001E4, 0x00000080, 0x0000020F, 0x0000004B + + .global UNK05_021F655C +UNK05_021F655C: ; 0x021F655C + .word 0x00000042, 0x00000043, 0x00000044, 0x00000045 + .word 0x000000F6, 0x00000046, 0x000001AB, 0x000001C8 + .word 0x00000104, 0x00000138, 0x00000139, 0x000001B6 + .word 0x000001BC, 0x000001B9, 0x000001BA, 0x0000012A + .word 0x000001E4, 0x00000080, 0x0000020F, 0x0000004B + + .global UNK05_021F65AC +UNK05_021F65AC: ; 0x021F65AC + .word 0x00000042, 0x00000043, 0x00000044, 0x00000045 + .word 0x000000F6, 0x00000046, 0x000001AB, 0x000001C8 + .word 0x00000104, 0x00000138, 0x00000139, 0x000001B6 + .word 0x000001BC, 0x000001B9, 0x000001BA, 0x0000012A + .word 0x000001E4, 0x00000080, 0x0000020F, 0x0000004B diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 3eef4bfb..c98f53c4 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -3,1467 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD05_021DA5B8 -MOD05_021DA5B8: ; 0x021DA5B8 - push {r3, lr} - mov r0, #4 - mov r1, #0x28 - bl AllocFromHeapAtEnd - mov r1, #0 - str r1, [r0] - pop {r3, pc} - - thumb_func_start MOD05_021DA5C8 -MOD05_021DA5C8: ; 0x021DA5C8 - ldr r3, _021DA5CC ; =FreeToHeap - bx r3 - .balign 4, 0 -_021DA5CC: .word FreeToHeap - - thumb_func_start MOD05_021DA5D0 -MOD05_021DA5D0: ; 0x021DA5D0 - str r0, [r2, #0x14] - str r1, [r2, #0x18] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021DA5D8 -MOD05_021DA5D8: ; 0x021DA5D8 - push {r4, r5, r6, r7, lr} - sub sp, #0x84 - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4] - cmp r0, #5 - bls _021DA5E8 - b _021DA78E -_021DA5E8: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021DA5F4: ; jump table - .short _021DA600 - _021DA5F4 - 2 ; case 0 - .short _021DA69A - _021DA5F4 - 2 ; case 1 - .short _021DA6EC - _021DA5F4 - 2 ; case 2 - .short _021DA700 - _021DA5F4 - 2 ; case 3 - .short _021DA714 - _021DA5F4 - 2 ; case 4 - .short _021DA772 - _021DA5F4 - 2 ; case 5 -_021DA600: - ldr r6, _021DA7A4 ; =UNK05_021F650C - add r3, sp, #0x34 - mov r2, #0xa -_021DA606: - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021DA606 - mov r0, #0 - str r0, [r4, #0x20] - strb r0, [r4, #0x1d] - mov r0, #3 - str r0, [sp] - mov r2, #1 - str r2, [sp, #4] - add r0, sp, #0x24 - str r0, [sp, #8] - sub r2, r2, #2 - ldr r0, [r4, #0x14] - ldr r1, [r4, #0x18] - add r3, r2, #0 - bl FUN_0204A840 - mov r0, #1 - strb r0, [r4, #0x1c] - add r0, sp, #0x20 - str r0, [sp] - add r0, sp, #0x1c - str r0, [sp, #4] - add r0, r5, #0 - add r1, sp, #0x34 - mov r2, #0x14 - add r3, sp, #0x24 - bl FUN_0204A94C - cmp r0, #0 - beq _021DA688 - ldr r0, [r5, #0x4c] - ldr r1, [sp, #0x1c] - bl MOD05_021DA230 - add r6, r0, #0 - strb r6, [r4, #0x1e] - ldr r0, [r5, #0x2c] - bl MOD05_021F4C88 - add r7, r0, #0 - ldr r0, [sp, #0x20] - bl MOD05_021E7EC8 - str r0, [sp, #0x18] - ldr r0, [sp, #0x20] - bl MOD05_021E7ECC - ldr r1, [sp, #0x18] - mov r2, #1 - str r1, [sp] - str r0, [sp, #4] - str r7, [sp, #8] - str r6, [sp, #0xc] - str r2, [sp, #0x10] - mov r0, #0 - str r0, [sp, #0x14] - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - ldr r3, [sp, #0x1c] - bl MOD05_021DA464 - b _021DA692 -_021DA688: - bl ErrorHandling - add sp, #0x84 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021DA692: - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA78E -_021DA69A: - ldr r0, [r5, #0x50] - mov r1, #1 - bl MOD05_021DA5AC - add r6, r0, #0 - cmp r6, #0x4b - beq _021DA6B2 - ldr r0, [r5, #0x20] - bl FUN_0201EC88 - mov r0, #1 - str r0, [r4, #0x20] -_021DA6B2: - add r0, r6, #0 - bl MOD05_021DAA6C - cmp r0, #0 - beq _021DA6C0 - ldr r6, _021DA7A8 ; =0x00000608 - b _021DA6C2 -_021DA6C0: - ldr r6, _021DA7AC ; =0x00000605 -_021DA6C2: - ldrb r0, [r4, #0x1e] - cmp r0, #2 - bne _021DA6CC - mov r2, #0 - b _021DA6DA -_021DA6CC: - cmp r0, #4 - bne _021DA6D4 - mov r2, #0 - b _021DA6DA -_021DA6D4: - bl ErrorHandling - mov r2, #0 -_021DA6DA: - ldr r0, [r5, #0x50] - mov r1, #1 - add r3, r6, #0 - bl MOD05_021DA514 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA78E -_021DA6EC: - ldr r0, [r5, #0x50] - mov r1, #1 - bl MOD05_021DA58C - cmp r0, #0 - beq _021DA78E - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA78E -_021DA700: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - mov r1, #0xc - bl FUN_0205ADDC - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA78E -_021DA714: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r6, r0, #0 - bl FUN_0205AE28 - cmp r0, #1 - bne _021DA78E - add r0, r6, #0 - bl FUN_0205AE50 - add r0, r6, #0 - mov r1, #1 - bl FUN_0205889C - ldr r0, [r5, #0x50] - mov r1, #1 - bl MOD05_021DA5AC - bl MOD05_021DAA6C - cmp r0, #0 - beq _021DA746 - mov r6, #0 - b _021DA748 -_021DA746: - ldr r6, _021DA7B0 ; =0x00000607 -_021DA748: - ldrb r0, [r4, #0x1e] - cmp r0, #2 - bne _021DA752 - mov r2, #1 - b _021DA760 -_021DA752: - cmp r0, #4 - bne _021DA75A - mov r2, #1 - b _021DA760 -_021DA75A: - bl ErrorHandling - mov r2, #1 -_021DA760: - ldr r0, [r5, #0x50] - mov r1, #1 - add r3, r6, #0 - bl MOD05_021DA514 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA78E -_021DA772: - ldr r0, [r5, #0x50] - mov r1, #1 - bl MOD05_021DA58C - cmp r0, #0 - beq _021DA78E - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - mov r2, #1 - bl MOD05_021DA54C - add sp, #0x84 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021DA78E: - ldr r0, [r4, #0x20] - cmp r0, #0 - beq _021DA79E - add r4, #0x1d - ldr r0, [r5, #0x20] - add r1, r4, #0 - bl MOD05_021DA9E8 -_021DA79E: - mov r0, #0 - add sp, #0x84 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021DA7A4: .word UNK05_021F650C -_021DA7A8: .word 0x00000608 -_021DA7AC: .word 0x00000605 -_021DA7B0: .word 0x00000607 - - thumb_func_start MOD05_021DA7B4 -MOD05_021DA7B4: ; 0x021DA7B4 - push {r4, r5, r6, r7, lr} - sub sp, #0x84 - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4] - cmp r0, #6 - bls _021DA7C4 - b _021DA9BE -_021DA7C4: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021DA7D0: ; jump table - .short _021DA7DE - _021DA7D0 - 2 ; case 0 - .short _021DA896 - _021DA7D0 - 2 ; case 1 - .short _021DA8F6 - _021DA7D0 - 2 ; case 2 - .short _021DA916 - _021DA7D0 - 2 ; case 3 - .short _021DA92A - _021DA7D0 - 2 ; case 4 - .short _021DA980 - _021DA7D0 - 2 ; case 5 - .short _021DA9B0 - _021DA7D0 - 2 ; case 6 -_021DA7DE: - ldr r6, _021DA9D4 ; =UNK05_021F655C - add r3, sp, #0x34 - mov r2, #0xa -_021DA7E4: - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021DA7E4 - mov r3, #0 - str r3, [r4, #0x20] - strb r3, [r4, #0x1d] - mov r0, #3 - str r0, [sp] - mov r2, #1 - str r2, [sp, #4] - add r0, sp, #0x24 - str r0, [sp, #8] - ldr r0, [r4, #0x14] - ldr r1, [r4, #0x18] - sub r2, r2, #2 - bl FUN_0204A840 - mov r0, #1 - strb r0, [r4, #0x1c] - add r0, sp, #0x20 - str r0, [sp] - add r0, sp, #0x1c - str r0, [sp, #4] - add r0, r5, #0 - add r1, sp, #0x34 - mov r2, #0x14 - add r3, sp, #0x24 - bl FUN_0204A94C - cmp r0, #0 - beq _021DA864 - ldr r0, [r5, #0x4c] - ldr r1, [sp, #0x1c] - bl MOD05_021DA230 - add r6, r0, #0 - strb r6, [r4, #0x1e] - ldr r0, [r5, #0x2c] - bl MOD05_021F4C88 - add r7, r0, #0 - ldr r0, [sp, #0x20] - bl MOD05_021E7EC8 - str r0, [sp, #0x18] - ldr r0, [sp, #0x20] - bl MOD05_021E7ECC - ldr r1, [sp, #0x18] - mov r2, #1 - str r1, [sp] - str r0, [sp, #4] - str r7, [sp, #8] - str r6, [sp, #0xc] - str r2, [sp, #0x10] - mov r0, #0 - str r0, [sp, #0x14] - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - ldr r3, [sp, #0x1c] - bl MOD05_021DA464 - b _021DA878 -_021DA864: - bl ErrorHandling - mov r0, #1 - bl MOD05_021D7CA4 - mov r0, #6 - str r0, [r4] - add sp, #0x84 - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_021DA878: - ldr r0, [r5, #0x20] - bl FUN_0201F008 - strh r0, [r4, #0x24] - ldr r0, [sp, #0x1c] - cmp r0, #0x4b - beq _021DA88E - ldr r0, _021DA9D8 ; =0x0000FFA0 - ldr r1, [r5, #0x20] - bl FUN_0201EF2C -_021DA88E: - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA9BE -_021DA896: - mov r1, #0 - str r1, [sp] - mov r0, #6 - str r0, [sp, #4] - mov r3, #1 - str r3, [sp, #8] - mov r0, #0xb - str r0, [sp, #0xc] - ldr r0, [r5, #0x10] - mov r2, #9 - bl FUN_0204C1B4 - ldr r0, [r5, #0x50] - mov r1, #1 - bl MOD05_021DA5AC - cmp r0, #0x4b - beq _021DA8BE - mov r1, #1 - str r1, [r4, #0x20] -_021DA8BE: - bl MOD05_021DAA6C - cmp r0, #0 - beq _021DA8CA - ldr r6, _021DA9DC ; =0x00000608 - b _021DA8CC -_021DA8CA: - ldr r6, _021DA9E0 ; =0x00000605 -_021DA8CC: - ldrb r0, [r4, #0x1e] - cmp r0, #2 - bne _021DA8D6 - mov r2, #0 - b _021DA8E4 -_021DA8D6: - cmp r0, #4 - bne _021DA8DE - mov r2, #2 - b _021DA8E4 -_021DA8DE: - bl ErrorHandling - mov r2, #0 -_021DA8E4: - ldr r0, [r5, #0x50] - mov r1, #1 - add r3, r6, #0 - bl MOD05_021DA514 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA9BE -_021DA8F6: - ldr r0, [r5, #0x50] - mov r1, #1 - bl MOD05_021DA58C - cmp r0, #0 - beq _021DA9BE - ldr r0, [r5, #0x38] - bl FUN_020553A0 - mov r1, #0 - bl FUN_0205889C - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA9BE -_021DA916: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - mov r1, #0xd - bl FUN_0205ADDC - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA9BE -_021DA92A: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r6, r0, #0 - bl FUN_0205AE28 - cmp r0, #1 - bne _021DA9BE - add r0, r6, #0 - bl FUN_0205AE50 - ldr r0, [r5, #0x50] - mov r1, #1 - bl MOD05_021DA5AC - bl MOD05_021DAA6C - cmp r0, #0 - beq _021DA954 - mov r6, #0 - b _021DA956 -_021DA954: - ldr r6, _021DA9E4 ; =0x00000607 -_021DA956: - ldrb r0, [r4, #0x1e] - cmp r0, #2 - bne _021DA960 - mov r2, #1 - b _021DA96E -_021DA960: - cmp r0, #4 - bne _021DA968 - mov r2, #3 - b _021DA96E -_021DA968: - bl ErrorHandling - mov r2, #1 -_021DA96E: - ldr r0, [r5, #0x50] - mov r1, #1 - add r3, r6, #0 - bl MOD05_021DA514 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA9BE -_021DA980: - ldr r0, [r5, #0x50] - mov r1, #1 - bl MOD05_021DA58C - cmp r0, #0 - beq _021DA9BE - bl FUN_0200E308 - cmp r0, #0 - beq _021DA9BE - ldr r0, [r5, #0x20] - bl FUN_0201F008 - ldrh r1, [r4, #0x24] - cmp r1, r0 - bne _021DA9BE - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - mov r2, #1 - bl MOD05_021DA54C - add sp, #0x84 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021DA9B0: - bl FUN_0200E308 - cmp r0, #0 - beq _021DA9BE - add sp, #0x84 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021DA9BE: - ldr r0, [r4, #0x20] - cmp r0, #0 - beq _021DA9CE - add r4, #0x1d - ldr r0, [r5, #0x20] - add r1, r4, #0 - bl MOD05_021DAA2C -_021DA9CE: - mov r0, #0 - add sp, #0x84 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021DA9D4: .word UNK05_021F655C -_021DA9D8: .word 0x0000FFA0 -_021DA9DC: .word 0x00000608 -_021DA9E0: .word 0x00000605 -_021DA9E4: .word 0x00000607 - - thumb_func_start MOD05_021DA9E8 -MOD05_021DA9E8: ; 0x021DA9E8 - push {r4, r5, r6, lr} - add r5, r1, #0 - add r6, r0, #0 - ldrb r0, [r5] - mov r4, #0xc - add r1, r0, #0 - mul r1, r4 - cmp r1, #0x60 - bgt _021DAA28 - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - cmp r0, #0x60 - bls _021DAA08 - sub r0, #0x60 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 -_021DAA08: - add r0, r6, #0 - bl FUN_0201F008 - sub r0, r0, r4 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - beq _021DAA22 - neg r0, r4 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - add r1, r6, #0 - bl FUN_0201EF2C -_021DAA22: - ldrb r0, [r5] - add r0, r0, #1 - strb r0, [r5] -_021DAA28: - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DAA2C -MOD05_021DAA2C: ; 0x021DAA2C - push {r4, r5, r6, lr} - add r5, r1, #0 - add r6, r0, #0 - ldrb r0, [r5] - lsl r0, r0, #4 - cmp r0, #0x60 - bge _021DAA68 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - cmp r0, #0x60 - bls _021DAA4A - sub r0, #0x60 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - b _021DAA4C -_021DAA4A: - mov r4, #0x10 -_021DAA4C: - add r0, r6, #0 - bl FUN_0201F008 - add r0, r0, r4 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - beq _021DAA62 - add r0, r4, #0 - add r1, r6, #0 - bl FUN_0201EF2C -_021DAA62: - ldrb r0, [r5] - add r0, r0, #1 - strb r0, [r5] -_021DAA68: - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DAA6C -MOD05_021DAA6C: ; 0x021DAA6C - cmp r0, #0x46 - beq _021DAA98 - ldr r2, _021DAAA0 ; =0x000001BA - cmp r0, r2 - beq _021DAA98 - add r1, r2, #0 - sub r1, #0x90 - cmp r0, r1 - beq _021DAA98 - add r1, r2, #0 - add r1, #0xe - cmp r0, r1 - beq _021DAA98 - add r1, r2, #0 - sub r1, #0xf - cmp r0, r1 - beq _021DAA98 - add r2, #0x2a - cmp r0, r2 - beq _021DAA98 - cmp r0, #0x4b - bne _021DAA9C -_021DAA98: - mov r0, #1 - bx lr -_021DAA9C: - mov r0, #0 - bx lr - .balign 4, 0 -_021DAAA0: .word 0x000001BA - - thumb_func_start MOD05_021DAAA4 -MOD05_021DAAA4: ; 0x021DAAA4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x40 - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4] - add r6, r2, #0 - cmp r0, #5 - bls _021DAAB6 - b _021DAC60 -_021DAAB6: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021DAAC2: ; jump table - .short _021DAACE - _021DAAC2 - 2 ; case 0 - .short _021DAB8E - _021DAAC2 - 2 ; case 1 - .short _021DABCE - _021DAAC2 - 2 ; case 2 - .short _021DABEE - _021DAAC2 - 2 ; case 3 - .short _021DAC16 - _021DAAC2 - 2 ; case 4 - .short _021DAC34 - _021DAAC2 - 2 ; case 5 -_021DAACE: - ldr r3, _021DAC68 ; =UNK05_021F64FC - add r2, sp, #0x20 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - cmp r6, #2 - bne _021DAAF8 - mov r0, #2 - str r0, [sp] - mov r2, #1 - str r2, [sp, #4] - add r0, sp, #0x30 - str r0, [sp, #8] - ldr r0, [r4, #0x14] - ldr r1, [r4, #0x18] - sub r2, r2, #2 - mov r3, #0 - bl FUN_0204A840 - b _021DAB10 -_021DAAF8: - mov r0, #2 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - add r0, sp, #0x30 - str r0, [sp, #8] - mov r2, #0 - ldr r0, [r4, #0x14] - ldr r1, [r4, #0x18] - add r3, r2, #0 - bl FUN_0204A840 -_021DAB10: - mov r0, #2 - strb r0, [r4, #0x1c] - add r0, sp, #0x1c - str r0, [sp] - add r0, sp, #0x18 - str r0, [sp, #4] - add r0, r5, #0 - add r1, sp, #0x20 - mov r2, #4 - add r3, sp, #0x30 - bl FUN_0204A94C - cmp r0, #0 - beq _021DAB5E - ldr r0, [r5, #0x2c] - bl MOD05_021F4C88 - add r6, r0, #0 - ldr r0, [sp, #0x1c] - bl MOD05_021E7EC8 - add r7, r0, #0 - ldr r0, [sp, #0x1c] - bl MOD05_021E7ECC - str r7, [sp] - str r0, [sp, #4] - str r6, [sp, #8] - mov r0, #1 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - str r0, [sp, #0x14] - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - ldr r3, [sp, #0x18] - mov r2, #2 - bl MOD05_021DA464 - b _021DAB68 -_021DAB5E: - bl ErrorHandling - add sp, #0x40 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021DAB68: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AD98 - cmp r0, #1 - bne _021DAB82 - add r0, r5, #0 - mov r1, #0x49 - bl FUN_0205ADDC - b _021DAB86 -_021DAB82: - bl ErrorHandling -_021DAB86: - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAC60 -_021DAB8E: - mov r0, #1 - bl MOD05_021D7CA4 - ldr r0, [r5, #0x50] - ldr r3, _021DAC6C ; =0x00000615 - mov r1, #2 - mov r2, #0 - bl MOD05_021DA514 - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AD98 - cmp r0, #1 - bne _021DABC2 - cmp r6, #3 - bne _021DABB8 - mov r1, #0xb - b _021DABBA -_021DABB8: - mov r1, #0xa -_021DABBA: - add r0, r5, #0 - bl FUN_0205ADDC - b _021DABC6 -_021DABC2: - bl ErrorHandling -_021DABC6: - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAC60 -_021DABCE: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AD98 - cmp r0, #1 - bne _021DAC60 - add r0, r5, #0 - mov r1, #0x4a - bl FUN_0205ADDC - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAC60 -_021DABEE: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AD98 - cmp r0, #1 - bne _021DAC60 - cmp r6, #3 - bne _021DAC06 - mov r1, #0xb - b _021DAC08 -_021DAC06: - mov r1, #0xa -_021DAC08: - add r0, r5, #0 - bl FUN_0205ADDC - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAC60 -_021DAC16: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AE28 - cmp r0, #1 - bne _021DAC60 - add r0, r5, #0 - bl FUN_0205AE50 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAC60 -_021DAC34: - ldr r0, [r5, #0x50] - mov r1, #2 - bl MOD05_021DA58C - cmp r0, #0 - beq _021DAC60 - bl FUN_0200E308 - cmp r0, #0 - beq _021DAC60 - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - mov r2, #2 - bl MOD05_021DA54C - ldr r0, _021DAC6C ; =0x00000615 - mov r1, #0 - bl FUN_020054F0 - add sp, #0x40 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021DAC60: - mov r0, #0 - add sp, #0x40 - pop {r3, r4, r5, r6, r7, pc} - nop -_021DAC68: .word UNK05_021F64FC -_021DAC6C: .word 0x00000615 - - thumb_func_start MOD05_021DAC70 -MOD05_021DAC70: ; 0x021DAC70 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x40 - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4] - add r6, r2, #0 - cmp r0, #4 - bls _021DAC82 - b _021DAE04 -_021DAC82: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021DAC8E: ; jump table - .short _021DAC98 - _021DAC8E - 2 ; case 0 - .short _021DAD5A - _021DAC8E - 2 ; case 1 - .short _021DAD94 - _021DAC8E - 2 ; case 2 - .short _021DADBA - _021DAC8E - 2 ; case 3 - .short _021DADD8 - _021DAC8E - 2 ; case 4 -_021DAC98: - ldr r3, _021DAE0C ; =UNK05_021F64EC - add r2, sp, #0x20 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - cmp r6, #2 - bne _021DACC2 - mov r0, #2 - str r0, [sp] - mov r2, #1 - str r2, [sp, #4] - add r0, sp, #0x30 - str r0, [sp, #8] - ldr r0, [r4, #0x14] - ldr r1, [r4, #0x18] - sub r2, r2, #2 - mov r3, #0 - bl FUN_0204A840 - b _021DACDA -_021DACC2: - mov r0, #2 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - add r0, sp, #0x30 - str r0, [sp, #8] - mov r2, #0 - ldr r0, [r4, #0x14] - ldr r1, [r4, #0x18] - add r3, r2, #0 - bl FUN_0204A840 -_021DACDA: - mov r0, #2 - strb r0, [r4, #0x1c] - add r0, sp, #0x1c - str r0, [sp] - add r0, sp, #0x18 - str r0, [sp, #4] - add r0, r5, #0 - add r1, sp, #0x20 - mov r2, #4 - add r3, sp, #0x30 - bl FUN_0204A94C - cmp r0, #0 - beq _021DAD2A - ldr r0, [r5, #0x2c] - bl MOD05_021F4C88 - add r6, r0, #0 - ldr r0, [sp, #0x1c] - bl MOD05_021E7EC8 - add r7, r0, #0 - ldr r0, [sp, #0x1c] - bl MOD05_021E7ECC - str r7, [sp] - str r0, [sp, #4] - str r6, [sp, #8] - mov r0, #1 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - mov r0, #0 - str r0, [sp, #0x14] - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - ldr r3, [sp, #0x18] - mov r2, #2 - bl MOD05_021DA464 - b _021DAD34 -_021DAD2A: - bl ErrorHandling - add sp, #0x40 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021DAD34: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AD98 - cmp r0, #1 - bne _021DAD4E - add r0, r5, #0 - mov r1, #0x49 - bl FUN_0205ADDC - b _021DAD52 -_021DAD4E: - bl ErrorHandling -_021DAD52: - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAE04 -_021DAD5A: - ldr r0, [r5, #0x50] - ldr r3, _021DAE10 ; =0x00000615 - mov r1, #2 - mov r2, #0 - bl MOD05_021DA514 - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AD98 - cmp r0, #1 - bne _021DAD88 - cmp r6, #2 - bne _021DAD7E - mov r1, #0xa - b _021DAD80 -_021DAD7E: - mov r1, #0xb -_021DAD80: - add r0, r5, #0 - bl FUN_0205ADDC - b _021DAD8C -_021DAD88: - bl ErrorHandling -_021DAD8C: - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAE04 -_021DAD94: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AD98 - cmp r0, #1 - bne _021DAE04 - add r0, r5, #0 - mov r1, #0x4a - bl FUN_0205ADDC - mov r0, #0 - bl MOD05_021D7CA4 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAE04 -_021DADBA: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AE28 - cmp r0, #1 - bne _021DAE04 - add r0, r5, #0 - bl FUN_0205AE50 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAE04 -_021DADD8: - ldr r0, [r5, #0x50] - mov r1, #2 - bl MOD05_021DA58C - cmp r0, #0 - beq _021DAE04 - bl FUN_0200E308 - cmp r0, #0 - beq _021DAE04 - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - mov r2, #2 - bl MOD05_021DA54C - ldr r0, _021DAE10 ; =0x00000615 - mov r1, #0 - bl FUN_020054F0 - add sp, #0x40 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021DAE04: - mov r0, #0 - add sp, #0x40 - pop {r3, r4, r5, r6, r7, pc} - nop -_021DAE0C: .word UNK05_021F64EC -_021DAE10: .word 0x00000615 - - thumb_func_start MOD05_021DAE14 -MOD05_021DAE14: ; 0x021DAE14 - push {r3, r4, r5, lr} - add r4, r0, #0 - bl FUN_02046528 - add r5, r0, #0 - add r0, r4, #0 - bl FUN_0204652C - add r4, r0, #0 - ldrb r1, [r4] - ldr r0, [r5, #0x50] - bl MOD05_021DA58C - cmp r0, #0 - beq _021DAE3C - add r0, r4, #0 - bl FreeToHeap - mov r0, #1 - pop {r3, r4, r5, pc} -_021DAE3C: - mov r0, #0 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021DAE40 -MOD05_021DAE40: ; 0x021DAE40 - push {r4, r5, r6, r7, lr} - sub sp, #0x84 - ldr r6, _021DAED0 ; =UNK05_021F65AC - str r3, [sp, #0x18] - add r5, r0, #0 - add r7, r1, #0 - add r4, sp, #0x34 - mov r3, #0xa -_021DAE50: - ldmia r6!, {r0, r1} - stmia r4!, {r0, r1} - sub r3, r3, #1 - bne _021DAE50 - mov r0, #3 - str r0, [sp] - mov r3, #1 - add r1, r2, #0 - str r3, [sp, #4] - add r0, sp, #0x24 - str r0, [sp, #8] - sub r2, r3, #2 - add r0, r7, #0 - mov r3, #0 - bl FUN_0204A840 - add r0, sp, #0x20 - str r0, [sp] - add r0, sp, #0x1c - str r0, [sp, #4] - add r0, r5, #0 - add r1, sp, #0x34 - mov r2, #0x14 - add r3, sp, #0x24 - bl FUN_0204A94C - cmp r0, #0 - beq _021DAEC8 - ldr r0, [r5, #0x4c] - ldr r1, [sp, #0x1c] - bl MOD05_021DA230 - add r4, r0, #0 - ldr r0, [r5, #0x2c] - bl MOD05_021F4C88 - add r6, r0, #0 - ldr r0, [sp, #0x20] - bl MOD05_021E7EC8 - add r7, r0, #0 - ldr r0, [sp, #0x20] - bl MOD05_021E7ECC - str r7, [sp] - str r0, [sp, #4] - str r6, [sp, #8] - str r4, [sp, #0xc] - mov r0, #1 - str r0, [sp, #0x10] - mov r0, #0 - str r0, [sp, #0x14] - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - ldr r2, [sp, #0x18] - ldr r3, [sp, #0x1c] - bl MOD05_021DA464 - add sp, #0x84 - pop {r4, r5, r6, r7, pc} -_021DAEC8: - bl ErrorHandling - add sp, #0x84 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021DAED0: .word UNK05_021F65AC - - thumb_func_start MOD05_021DAED4 -MOD05_021DAED4: ; 0x021DAED4 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldr r0, [r5, #0x50] - add r7, r1, #0 - bl MOD05_021DA5AC - add r6, r0, #0 - ldr r0, [r5, #0x4c] - add r1, r6, #0 - bl MOD05_021DA230 - add r4, r0, #0 - add r0, r6, #0 - bl MOD05_021DAA6C - cmp r0, #0 - beq _021DAEFA - ldr r6, _021DAF20 ; =0x00000608 - b _021DAEFC -_021DAEFA: - ldr r6, _021DAF24 ; =0x00000605 -_021DAEFC: - cmp r4, #2 - bne _021DAF04 - mov r2, #0 - b _021DAF12 -_021DAF04: - cmp r4, #4 - bne _021DAF0C - mov r2, #0 - b _021DAF12 -_021DAF0C: - bl ErrorHandling - mov r2, #0 -_021DAF12: - ldr r0, [r5, #0x50] - add r1, r7, #0 - add r3, r6, #0 - bl MOD05_021DA514 - pop {r3, r4, r5, r6, r7, pc} - nop -_021DAF20: .word 0x00000608 -_021DAF24: .word 0x00000605 - - thumb_func_start MOD05_021DAF28 -MOD05_021DAF28: ; 0x021DAF28 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldr r0, [r5, #0x50] - add r7, r1, #0 - bl MOD05_021DA5AC - add r6, r0, #0 - ldr r0, [r5, #0x4c] - add r1, r6, #0 - bl MOD05_021DA230 - add r4, r0, #0 - add r0, r6, #0 - bl MOD05_021DAA6C - cmp r0, #0 - beq _021DAF4E - mov r6, #0 - b _021DAF50 -_021DAF4E: - ldr r6, _021DAF74 ; =0x00000607 -_021DAF50: - cmp r4, #2 - bne _021DAF58 - mov r2, #1 - b _021DAF66 -_021DAF58: - cmp r4, #4 - bne _021DAF60 - mov r2, #1 - b _021DAF66 -_021DAF60: - bl ErrorHandling - mov r2, #1 -_021DAF66: - ldr r0, [r5, #0x50] - add r1, r7, #0 - add r3, r6, #0 - bl MOD05_021DA514 - pop {r3, r4, r5, r6, r7, pc} - nop -_021DAF74: .word 0x00000607 - - thumb_func_start MOD05_021DAF78 -MOD05_021DAF78: ; 0x021DAF78 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - mov r0, #4 - mov r1, #1 - bl AllocFromHeapAtEnd - add r2, r0, #0 - strb r4, [r2] - ldr r0, [r5, #0x10] - ldr r1, _021DAF94 ; =MOD05_021DAE14 - bl FUN_0204640C - pop {r3, r4, r5, pc} - .balign 4, 0 -_021DAF94: .word MOD05_021DAE14 - - thumb_func_start MOD05_021DAF98 -MOD05_021DAF98: ; 0x021DAF98 - add r3, r0, #0 - add r2, r1, #0 - ldr r0, [r3, #0x4c] - ldr r1, [r3, #0x50] - ldr r3, _021DAFA4 ; =MOD05_021DA54C - bx r3 - .balign 4, 0 -_021DAFA4: .word MOD05_021DA54C - - thumb_func_start MOD05_021DAFA8 -MOD05_021DAFA8: ; 0x021DAFA8 - push {r4, r5, lr} - sub sp, #0x2c - add r5, r2, #0 - ldr r2, _021DB02C ; =UNK05_021F64E4 - add r4, r3, #0 - ldr r3, [r2] - ldr r2, [r2, #4] - str r3, [sp, #0xc] - str r2, [sp, #0x10] - mov r2, #1 - str r2, [sp] - mov r2, #3 - str r2, [sp, #4] - add r2, sp, #0x1c - str r2, [sp, #8] - mov r2, #0 - sub r3, r2, #1 - bl FUN_0204A840 - add r0, sp, #0x18 - str r0, [sp] - add r0, sp, #0x14 - str r0, [sp, #4] - add r0, r4, #0 - add r1, sp, #0xc - mov r2, #2 - add r3, sp, #0x1c - bl FUN_0204A94C - cmp r0, #0 - bne _021DAFEA - bl ErrorHandling -_021DAFEA: - ldr r0, [sp, #0x18] - bl MOD05_021E7EC8 - add r3, r0, #0 - ldr r0, [r4, #0x4c] - add r1, r5, #0 - str r0, [sp] - ldr r0, [sp, #0x14] - mov r2, #1 - bl MOD05_021D9DC0 - cmp r0, #0 - bne _021DB008 - bl ErrorHandling -_021DB008: - ldr r0, [sp, #0x14] - ldr r2, [r4, #0x4c] - add r1, r5, #0 - bl MOD05_021DA080 - add r4, r0, #0 - bl MOD05_021DA118 - add r0, r4, #0 - mov r1, #0 - bl MOD05_021DA0DC - add r0, r4, #0 - bl MOD05_021DA0E0 - add sp, #0x2c - pop {r4, r5, pc} - nop -_021DB02C: .word UNK05_021F64E4 - - thumb_func_start MOD05_021DB030 -MOD05_021DB030: ; 0x021DB030 - push {r3, lr} - mov r0, #4 - mov r1, #0x10 - bl AllocFromHeapAtEnd - mov r1, #0 - str r1, [r0] - pop {r3, pc} - - thumb_func_start MOD05_021DB040 -MOD05_021DB040: ; 0x021DB040 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r4, r0, #0 - bl FUN_02046528 - add r5, r0, #0 - add r0, r4, #0 - bl FUN_0204652C - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #3 - bhi _021DB126 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021DB066: ; jump table - .short _021DB06E - _021DB066 - 2 ; case 0 - .short _021DB0CA - _021DB066 - 2 ; case 1 - .short _021DB0E8 - _021DB066 - 2 ; case 2 - .short _021DB106 - _021DB066 - 2 ; case 3 -_021DB06E: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r6, r0, #0 - ldr r0, [r5, #0x38] - bl FUN_020552F8 - cmp r0, #1 - bne _021DB08C - add r0, r6, #0 - mov r1, #1 - bl FUN_0205889C - mov r0, #1 - b _021DB096 -_021DB08C: - add r0, r6, #0 - mov r1, #0 - bl FUN_0205889C - mov r0, #3 -_021DB096: - str r0, [r4] - mov r0, #0 - str r0, [r4, #8] - strb r0, [r4, #4] - ldr r0, [r5, #0x20] - bl FUN_0201F008 - strh r0, [r4, #0xc] - ldr r0, _021DB13C ; =0x0000FFA0 - ldr r1, [r5, #0x20] - bl FUN_0201EF2C - mov r0, #6 - str r0, [sp] - mov r1, #1 - str r1, [sp, #4] - mov r0, #0xb - str r0, [sp, #8] - ldr r3, _021DB140 ; =0x00007FFF - mov r0, #0 - add r2, r1, #0 - bl FUN_0200E1D0 - mov r0, #1 - str r0, [r4, #8] - b _021DB126 -_021DB0CA: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r6, r0, #0 - mov r1, #0 - bl FUN_0205889C - add r0, r6, #0 - mov r1, #0xd - bl FUN_0205ADDC - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DB126 -_021DB0E8: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r6, r0, #0 - bl FUN_0205AE28 - cmp r0, #1 - bne _021DB126 - add r0, r6, #0 - bl FUN_0205AE50 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DB126 -_021DB106: - bl FUN_0200E308 - cmp r0, #0 - beq _021DB126 - ldr r0, [r5, #0x20] - bl FUN_0201F008 - ldrh r1, [r4, #0xc] - cmp r1, r0 - bne _021DB126 - add r0, r4, #0 - bl FreeToHeap - add sp, #0xc - mov r0, #1 - pop {r3, r4, r5, r6, pc} -_021DB126: - ldr r0, [r4, #8] - cmp r0, #0 - beq _021DB134 - ldr r0, [r5, #0x20] - add r1, r4, #4 - bl MOD05_021DAA2C -_021DB134: - mov r0, #0 - add sp, #0xc - pop {r3, r4, r5, r6, pc} - nop -_021DB13C: .word 0x0000FFA0 -_021DB140: .word 0x00007FFF - thumb_func_start MOD05_021DB144 MOD05_021DB144: ; 0x021DB144 push {r4, r5, lr} @@ -57722,42 +56261,6 @@ _021F6428: .word MOD05_021F57F0 .section .rodata - .global UNK05_021F64E4 -UNK05_021F64E4: ; 0x021F64E4 - .word 0x0000012F, 0x00000130 - - .global UNK05_021F64EC -UNK05_021F64EC: ; 0x021F64EC - .word 0x00000082, 0x00000083, 0x000001A9, 0x000001AA - - .global UNK05_021F64FC -UNK05_021F64FC: ; 0x021F64FC - .word 0x00000082, 0x00000083, 0x000001A9, 0x000001AA - - .global UNK05_021F650C -UNK05_021F650C: ; 0x021F650C - .word 0x00000042, 0x00000043, 0x00000044, 0x00000045 - .word 0x000000F6, 0x00000046, 0x000001AB, 0x000001C8 - .word 0x00000104, 0x00000138, 0x00000139, 0x000001B6 - .word 0x000001BC, 0x000001B9, 0x000001BA, 0x0000012A - .word 0x000001E4, 0x00000080, 0x0000020F, 0x0000004B - - .global UNK05_021F655C -UNK05_021F655C: ; 0x021F655C - .word 0x00000042, 0x00000043, 0x00000044, 0x00000045 - .word 0x000000F6, 0x00000046, 0x000001AB, 0x000001C8 - .word 0x00000104, 0x00000138, 0x00000139, 0x000001B6 - .word 0x000001BC, 0x000001B9, 0x000001BA, 0x0000012A - .word 0x000001E4, 0x00000080, 0x0000020F, 0x0000004B - - .global UNK05_021F65AC -UNK05_021F65AC: ; 0x021F65AC - .word 0x00000042, 0x00000043, 0x00000044, 0x00000045 - .word 0x000000F6, 0x00000046, 0x000001AB, 0x000001C8 - .word 0x00000104, 0x00000138, 0x00000139, 0x000001B6 - .word 0x000001BC, 0x000001B9, 0x000001BA, 0x0000012A - .word 0x000001E4, 0x00000080, 0x0000020F, 0x0000004B - .global UNK05_021F65FC UNK05_021F65FC: ; 0x021F65FC .word UNK05_021FD1F8, UNK05_021FD1E0, UNK05_021FD210 |