diff options
-rw-r--r-- | arm9/arm9.lcf | 28 | ||||
-rw-r--r-- | arm9/global.inc | 6 | ||||
-rw-r--r-- | arm9/modules/63/asm/module_63.s | 8588 | ||||
-rw-r--r-- | arm9/undefined_syms.txt | 1 |
4 files changed, 8618 insertions, 5 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 18126223..47df3931 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -2512,12 +2512,23 @@ SECTIONS { SDK_OVERLAY.MODULE_62.BSS_SIZE = SDK_OVERLAY.MODULE_62.BSS_END - SDK_OVERLAY.MODULE_62.BSS_START; } >> MODULE_62 - .MODULE_63: { + .MODULE_63 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY_MODULE_63_ID = 63; SDK_OVERLAY.MODULE_63.ID = 63; SDK_OVERLAY.MODULE_63.START = .; - FILE_2B2A00.o (.text) /* 0x2AEA00 */ + module_63.o (.text) + module_63.o (.rodata) + module_63.o (.init) + SDK_OVERLAY.MODULE_63.SINIT_START = .; + module_63.o (.ctor) + module_63.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_63.SINIT_END = .; + . = ALIGN(32); + module_63.o (.sdata) + module_63.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_63.END = .; SDK_OVERLAY.MODULE_63.SIZE = SDK_OVERLAY.MODULE_63.END - SDK_OVERLAY.MODULE_63.START; @@ -2527,7 +2538,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_63.BSS_START = .; - FILE_2B2A00.o (.bss) + module_63.o (.bss) + module_63.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_63.BSS_END = .; SDK_OVERLAY.MODULE_63.BSS_SIZE = SDK_OVERLAY.MODULE_63.BSS_END - SDK_OVERLAY.MODULE_63.BSS_START; @@ -3708,7 +3720,15 @@ SECTIONS { WRITEW 62; WRITEW 0; - OVERLAY_TABLE(MODULE_63, 63) + WRITEW 63; + WRITEW ADDR(.MODULE_63); + WRITEW SDK_OVERLAY.MODULE_63.SIZE; + WRITEW SDK_OVERLAY.MODULE_63.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_63.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_63.SINIT_END; + WRITEW 63; + WRITEW 0; + OVERLAY_TABLE(MODULE_64, 64) OVERLAY_TABLE(MODULE_65, 65) OVERLAY_TABLE(MODULE_66, 66) diff --git a/arm9/global.inc b/arm9/global.inc index c4fda40d..60facaee 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5601,6 +5601,12 @@ .extern FUN_02085D9C
.extern FUN_02085FAC
.extern FUN_02031370
+.extern FUN_02016B44
+.extern FUN_02017BD0
+.extern FUN_0201ED5C
+.extern FUN_0201EE2C
+.extern FUN_0201EFB4
+.extern FUN_0201F05C
.extern FUN_0200A064
.extern FUN_0200C918
.extern FUN_02031388
diff --git a/arm9/modules/63/asm/module_63.s b/arm9/modules/63/asm/module_63.s new file mode 100644 index 00000000..beeb3428 --- /dev/null +++ b/arm9/modules/63/asm/module_63.s @@ -0,0 +1,8588 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD63_021D74E0 +MOD63_021D74E0: ; 0x021D74E0 + push {r4, lr} + ldr r1, _021D7584 ; =0x00007FFF + add r4, r0, #0 + mov r0, #0 + bl FUN_0200E3A0 + ldr r1, _021D7584 ; =0x00007FFF + mov r0, #1 + bl FUN_0200E3A0 + ldr r1, _021D7588 ; =0x04001050 + mov r0, #0 + strh r0, [r1] + ldr r1, _021D758C ; =0x04000050 + strh r0, [r1] + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7590 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D7594 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + mov r2, #1 + mov r0, #3 + mov r1, #0x1e + lsl r2, r2, #0x12 + bl FUN_0201681C + mov r1, #0x79 + add r0, r4, #0 + lsl r1, r1, #2 + mov r2, #0x1e + bl FUN_02006268 + mov r2, #0x79 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x1e + str r0, [r4] + mov r0, #0x1d + mov r1, #0 + lsl r0, r0, #4 + strh r1, [r4, r0] + add r0, #0x10 + str r1, [r4, r0] + bl MOD63_021D7838 + add r0, r4, #0 + bl MOD63_021D7A48 + add r0, r4, #0 + bl MOD63_021D7880 + ldr r0, _021D7598 ; =MOD63_021D782C + add r1, r4, #0 + bl FUN_02015F10 + bl FUN_0201E788 + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_021D7584: .word 0x00007FFF +_021D7588: .word 0x04001050 +_021D758C: .word 0x04000050 +_021D7590: .word 0xFFFFE0FF +_021D7594: .word 0x04001000 +_021D7598: .word MOD63_021D782C + thumb_func_end MOD63_021D74E0 + + thumb_func_start MOD63_021D759C +MOD63_021D759C: ; 0x021D759C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #6 + bhi _021D7614 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D75BA: ; jump table + .short _021D75C8 - _021D75BA - 2 ; case 0 + .short _021D7604 - _021D75BA - 2 ; case 1 + .short _021D7622 - _021D75BA - 2 ; case 2 + .short _021D7638 - _021D75BA - 2 ; case 3 + .short _021D76FA - _021D75BA - 2 ; case 4 + .short _021D773C - _021D75BA - 2 ; case 5 + .short _021D777E - _021D75BA - 2 ; case 6 +_021D75C8: + add r0, r4, #0 + ldr r1, [r4, #4] + ldr r2, [r4] + add r0, #0xb4 + bl MOD63_021D7C18 + cmp r0, #1 + bne _021D7614 + add r0, r4, #0 + ldr r1, _021D77A4 ; =0x021C48B8 + mov r2, #0 + add r0, #0xb4 + str r2, [r0] + ldr r0, [r1, #0x6c] + cmp r0, #0 + bne _021D75F6 + mov r0, #0x75 + mov r1, #0x1e + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #2 + str r0, [r5] + b _021D779C +_021D75F6: + mov r0, #0x75 + lsl r0, r0, #2 + str r2, [r4, r0] + str r2, [r1, #0x6c] + mov r0, #1 + str r0, [r5] + b _021D779C +_021D7604: + add r0, r4, #0 + ldr r1, [r4, #4] + ldr r2, [r4] + add r0, #0xb4 + bl MOD63_021D7D74 + cmp r0, #1 + beq _021D7616 +_021D7614: + b _021D779C +_021D7616: + mov r0, #0 + add r4, #0xb4 + str r0, [r4] + mov r0, #2 + str r0, [r5] + b _021D779C +_021D7622: + mov r0, #0 + bl FUN_0200415C + mov r0, #1 + ldr r1, _021D77A8 ; =0x00000495 + add r2, r0, #0 + bl FUN_0200433C + mov r0, #3 + str r0, [r5] + b _021D779C +_021D7638: + mov r0, #0x75 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _021D765A + sub r1, r1, #1 + str r1, [r4, r0] + mov r1, #0 + sub r0, #0x4c + str r1, [r4, r0] + add r0, r4, #0 + ldr r1, [r4, #4] + ldr r2, [r4] + add r0, #0xb4 + bl MOD63_021D8260 + b _021D779C +_021D765A: + mov r1, #1 + sub r0, #0x4c + str r1, [r4, r0] + add r0, r4, #0 + ldr r1, [r4, #4] + ldr r2, [r4] + add r0, #0xb4 + bl MOD63_021D8260 + mov r1, #0x1e + lsl r1, r1, #4 + ldr r0, [r4, r1] + ldr r2, _021D77A4 ; =0x021C48B8 + add r0, r0, #1 + str r0, [r4, r1] + ldr r3, [r2, #0x48] + mov r0, #1 + add r6, r3, #0 + and r6, r0 + cmp r6, #1 + beq _021D768C + mov r6, #8 + and r3, r6 + cmp r3, #8 + bne _021D76A8 +_021D768C: + mov r0, #0x1d + mov r1, #1 + lsl r0, r0, #4 + strh r1, [r4, r0] + mov r0, #0 + mov r1, #0x3c + bl FUN_020053CC + ldr r0, _021D77AC ; =0x000005F4 + bl FUN_020054C8 + mov r0, #4 + str r0, [r5] + b _021D779C +_021D76A8: + ldr r6, [r2, #0x44] + mov r3, #0x46 + and r3, r6 + cmp r3, #0x46 + bne _021D76D4 + mov r2, #2 + sub r1, #0x10 + strh r2, [r4, r1] + mov r1, #6 + str r1, [sp] + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #6 + str r0, [r5] + b _021D779C +_021D76D4: + mov r3, #0xe1 + ldr r6, [r4, r1] + lsl r3, r3, #2 + cmp r6, r3 + ble _021D779C + mov r3, #3 + sub r1, #0x10 + strh r3, [r4, r1] + mov r1, #0 + str r0, [r2, #0x6c] + bl FUN_0201E74C + mov r0, #0 + mov r1, #0x3c + bl FUN_020053CC + mov r0, #5 + str r0, [r5] + b _021D779C +_021D76FA: + mov r0, #0x62 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + ldr r1, [r4, #4] + ldr r2, [r4] + add r0, #0xb4 + bl MOD63_021D8260 + bl FUN_02005404 + cmp r0, #0 + bne _021D779C + ldr r0, _021D77A8 ; =0x00000495 + mov r1, #0 + bl FUN_02005350 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #6 + str r0, [r5] + b _021D779C +_021D773C: + mov r0, #0x62 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + ldr r1, [r4, #4] + ldr r2, [r4] + add r0, #0xb4 + bl MOD63_021D8260 + bl FUN_02005404 + cmp r0, #0 + bne _021D779C + ldr r0, _021D77A8 ; =0x00000495 + mov r1, #0 + bl FUN_02005350 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + ldr r3, _021D77B0 ; =0x00007FFF + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + bl FUN_0200E1D0 + mov r0, #6 + str r0, [r5] + b _021D779C +_021D777E: + bl FUN_0200E308 + cmp r0, #1 + bne _021D779C + add r0, r4, #0 + ldr r1, [r4, #4] + ldr r2, [r4] + add r0, #0xb4 + bl MOD63_021D8360 + cmp r0, #1 + bne _021D779C + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D779C: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021D77A4: .word 0x021C48B8 +_021D77A8: .word 0x00000495 +_021D77AC: .word 0x000005F4 +_021D77B0: .word 0x00007FFF + thumb_func_end MOD63_021D759C + + thumb_func_start MOD63_021D77B4 +MOD63_021D77B4: ; 0x021D77B4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl FUN_02006278 + add r6, r0, #0 + mov r0, #0x1d + lsl r0, r0, #4 + ldrh r5, [r6, r0] + mov r0, #0 + add r1, r0, #0 + ldr r4, [r6] + bl FUN_02015F10 + add r0, r6, #0 + bl MOD63_021D78B0 + add r0, r6, #0 + bl MOD63_021D7B9C + add r0, r7, #0 + bl FUN_0200627C + add r0, r4, #0 + bl FUN_020168D0 + cmp r5, #1 + beq _021D77F2 + cmp r5, #2 + beq _021D77FE + cmp r5, #3 + beq _021D780A +_021D77F2: + mov r0, #0 + ldr r1, _021D781C ; =0x020FF3D4 + mvn r0, r0 + bl FUN_02000E7C + b _021D7818 +_021D77FE: + mov r0, #0 + ldr r1, _021D7820 ; =0x020FF368 + mvn r0, r0 + bl FUN_02000E7C + b _021D7818 +_021D780A: + mov r0, #0 + bl FUN_0200415C + ldr r0, _021D7824 ; =0x0000003F + ldr r1, _021D7828 ; =0x021DBE18 + bl FUN_02000E7C +_021D7818: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D781C: .word 0x020FF3D4 +_021D7820: .word 0x020FF368 +_021D7824: .word 0x0000003F +_021D7828: .word 0x021DBE18 + thumb_func_end MOD63_021D77B4 + + thumb_func_start MOD63_021D782C +MOD63_021D782C: ; 0x021D782C + ldr r3, _021D7834 ; =0x0201AB61 + ldr r0, [r0, #4] + bx r3 + nop +_021D7834: .word 0x0201AB61 + thumb_func_end MOD63_021D782C + + thumb_func_start MOD63_021D7838 +MOD63_021D7838: ; 0x021D7838 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D7854 ; =0x021DBA90 + add r3, sp, #0 + mov r2, #5 +_021D7842: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7842 + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D7854: .word 0x021DBA90 + thumb_func_end MOD63_021D7838 + + thumb_func_start MOD63_021D7858 +MOD63_021D7858: ; 0x021D7858 + ldr r0, _021D787C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + and r0, r1 + cmp r0, #1 + beq _021D7874 + mov r0, #8 + and r0, r1 + cmp r0, #8 + beq _021D7874 + mov r0, #4 + and r0, r1 + cmp r0, #4 + bne _021D7878 +_021D7874: + mov r0, #1 + bx lr +_021D7878: + mov r0, #0 + bx lr + .align 2, 0 +_021D787C: .word 0x021C48B8 + thumb_func_end MOD63_021D7858 + + thumb_func_start MOD63_021D7880 +MOD63_021D7880: ; 0x021D7880 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #4 + mov r1, #0 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + mov r2, #1 + add r3, r1, #0 + bl FUN_02022318 + str r0, [r4, #8] + ldr r1, _021D78AC ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #1 + orr r0, r2 + strh r0, [r1] + add sp, #8 + pop {r4, pc} + .align 2, 0 +_021D78AC: .word 0x04000008 + thumb_func_end MOD63_021D7880 + + thumb_func_start MOD63_021D78B0 +MOD63_021D78B0: ; 0x021D78B0 + ldr r3, _021D78B8 ; =0x020223BD + ldr r0, [r0, #8] + bx r3 + nop +_021D78B8: .word 0x020223BD + thumb_func_end MOD63_021D78B0 + + thumb_func_start MOD63_021D78BC +MOD63_021D78BC: ; 0x021D78BC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r3, #0 + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r0, #0x68 + add r1, r4, #0 + mov r2, #4 + bl FUN_02016B20 + mov r0, #0x30 + add r1, r6, #0 + add r2, r4, #0 + bl LoadFromNarc_2 + str r0, [r5, #0x5c] + mov r0, #0x30 + add r1, r7, #0 + add r2, r4, #0 + bl LoadFromNarc_2 + add r1, r5, #0 + add r2, r5, #0 + str r0, [r5, #0x60] + add r0, r5, #4 + add r1, #0x58 + add r2, #0x5c + bl FUN_0201B234 + ldr r0, [r5, #0x60] + mov r1, #0 + bl FUN_020BC4C8 + add r4, r0, #0 + add r0, r5, #0 + ldr r2, [r5, #0x58] + add r0, #0x68 + add r1, r4, #0 + bl FUN_020BB8D0 + str r0, [r5, #0x64] + ldr r0, [r5, #0x5c] + bl FUN_020BC0FC + add r3, r0, #0 + ldr r0, [r5, #0x64] + ldr r2, [r5, #0x58] + add r1, r4, #0 + bl FUN_020B8110 + ldr r1, [r5, #0x64] + add r0, r5, #4 + bl FUN_020B7EFC + add r4, r5, #0 + add r6, sp, #0xc + mov r3, #0 + str r3, [r6] + add r2, sp, #0 + str r3, [r6, #4] + str r3, [r2] + str r3, [r6, #8] + str r3, [r2, #4] + ldmia r6!, {r0, r1} + str r3, [r2, #8] + add r4, #0x78 + stmia r4!, {r0, r1} + ldr r0, [r6] + ldr r6, _021D796C ; =0x021DB9A8 + str r0, [r4] + add r4, r5, #0 + ldmia r6!, {r0, r1} + add r4, #0x84 + stmia r4!, {r0, r1} + ldr r0, [r6] + str r0, [r4] + add r4, r5, #0 + ldmia r2!, {r0, r1} + add r4, #0x90 + stmia r4!, {r0, r1} + ldr r0, [r2] + add r5, #0xa0 + str r0, [r4] + str r3, [r5] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D796C: .word 0x021DB9A8 + thumb_func_end MOD63_021D78BC + + thumb_func_start MOD63_021D7970 +MOD63_021D7970: ; 0x021D7970 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x64] + add r0, #0x68 + bl thunk_FUN_020ae84c + ldr r0, [r4, #0x60] + bl FUN_02016A18 + ldr r0, [r4, #0x5c] + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD63_021D7970 + + thumb_func_start MOD63_021D798C +MOD63_021D798C: ; 0x021D798C + push {r4, r5, lr} + sub sp, #0x24 + ldr r5, _021D7A44 ; =0x021DBA6C + add r4, r0, #0 + add r3, sp, #0 + mov r2, #4 +_021D7998: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7998 + ldr r0, [r5] + str r0, [r3] + ldr r0, [r4] + cmp r0, #0 + beq _021D7A3E + cmp r0, #1 + beq _021D79B6 + cmp r0, #2 + beq _021D79CA + add sp, #0x24 + pop {r4, r5, pc} +_021D79B6: + bl FUN_020222AC + mov r0, #0 + mov r1, #1 + bl FUN_020222B4 + mov r0, #0 + add sp, #0x24 + str r0, [r4] + pop {r4, r5, pc} +_021D79CA: + bl FUN_020222AC + bl FUN_0201EBA4 + add r1, r4, #0 + add r0, sp, #0 + add r1, #0x90 + bl FUN_0201CAA8 + add r1, r4, #0 + add r3, r4, #0 + add r0, r4, #4 + add r1, #0x78 + add r2, sp, #0 + add r3, #0x84 + bl FUN_0201B26C + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + cmp r0, #0 + beq _021D7A00 + cmp r0, #1 + beq _021D7A08 + cmp r0, #2 + beq _021D7A18 + b _021D7A36 +_021D7A00: + ldr r0, [r4, #0x64] + mov r1, #0 + str r1, [r0] + b _021D7A36 +_021D7A08: + ldr r0, [r4, #0x64] + ldr r0, [r0] + cmp r0, #0 + bne _021D7A18 + mov r0, #0 + add r4, #0xa0 + str r0, [r4] + b _021D7A36 +_021D7A18: + ldr r2, [r4, #0x64] + mov r0, #1 + ldr r1, [r2] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r2] + ldr r2, [r4, #0x64] + ldr r0, [r2, #8] + ldr r1, [r2] + ldrh r0, [r0, #4] + lsl r0, r0, #0xc + cmp r1, r0 + bne _021D7A36 + mov r0, #0 + str r0, [r2] +_021D7A36: + mov r0, #0 + mov r1, #1 + bl FUN_020222B4 +_021D7A3E: + add sp, #0x24 + pop {r4, r5, pc} + nop +_021D7A44: .word 0x021DBA6C + thumb_func_end MOD63_021D798C + + thumb_func_start MOD63_021D7A48 +MOD63_021D7A48: ; 0x021D7A48 + push {r3, r4, r5, lr} + sub sp, #0xb8 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0xa8 + ldr r5, _021D7B80 ; =0x021DB9B4 + str r0, [r4, #4] + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _021D7B84 ; =0x021DB9E0 + add r3, sp, #0x8c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D7B88 ; =0x021DB9C4 + add r3, sp, #0x70 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #5 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D7B8C ; =0x021DBA50 + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #6 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D7B90 ; =0x021DBA34 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D7B94 ; =0x021DB9FC + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + ldr r0, [r4, #4] + mov r1, #3 + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D7B98 ; =0x021DBA18 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #7 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #1 + mov r1, #0 + bl FUN_0201E74C + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + mov r0, #4 + mov r1, #0 + bl FUN_0201E74C + mov r0, #8 + mov r1, #0 + bl FUN_0201E74C + mov r0, #0 + add r1, r0, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + add sp, #0xb8 + pop {r3, r4, r5, pc} + nop +_021D7B80: .word 0x021DB9B4 +_021D7B84: .word 0x021DB9E0 +_021D7B88: .word 0x021DB9C4 +_021D7B8C: .word 0x021DBA50 +_021D7B90: .word 0x021DBA34 +_021D7B94: .word 0x021DB9FC +_021D7B98: .word 0x021DBA18 + thumb_func_end MOD63_021D7A48 + + thumb_func_start MOD63_021D7B9C +MOD63_021D7B9C: ; 0x021D7B9C + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #1 + mov r1, #0 + bl FUN_0201E74C + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + mov r0, #4 + mov r1, #0 + bl FUN_0201E74C + mov r0, #8 + mov r1, #0 + bl FUN_0201E74C + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #5 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #7 + bl FUN_020178A0 + ldr r0, [r4, #4] + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD63_021D7B9C + + thumb_func_start MOD63_021D7C18 +MOD63_021D7C18: ; 0x021D7C18 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + bl MOD63_021D86E0 + add r0, r6, #0 + add r1, r4, #0 + add r2, r5, #0 + bl MOD63_021D83A8 + ldr r0, _021D7D5C ; =0x020ECAC0 + ldrb r0, [r0] + cmp r0, #0xa + bne _021D7C46 + add r0, r5, #4 + mov r1, #6 + mov r2, #0x13 + add r3, r4, #0 + bl MOD63_021D78BC + b _021D7C52 +_021D7C46: + add r0, r5, #4 + mov r1, #5 + mov r2, #0x12 + add r3, r4, #0 + bl MOD63_021D78BC +_021D7C52: + ldr r0, _021D7D60 ; =0x04000060 + ldr r2, _021D7D64 ; =0xFFFFCFFF + ldrh r1, [r0] + add r3, r1, #0 + and r3, r2 + mov r1, #0x10 + orr r1, r3 + strh r1, [r0] + ldrh r1, [r0] + and r2, r1 + mov r1, #8 + orr r1, r2 + strh r1, [r0] + add r0, r5, #0 + add r0, #0xf0 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xbc + str r1, [r0] + add r0, r5, #0 + add r0, #0xf4 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xc0 + str r1, [r0] + add r0, r5, #0 + add r0, #0xf8 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xc4 + str r1, [r0] + add r0, r5, #0 + add r0, #0xd8 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xc8 + str r1, [r0] + add r0, r5, #0 + add r0, #0xdc + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xcc + str r1, [r0] + add r0, r5, #0 + add r0, #0xe0 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xd0 + str r1, [r0] + add r0, r4, #0 + bl FUN_0201EB64 + add r1, r5, #0 + add r1, #0xa0 + str r0, [r1] + mov r3, #0 + add r0, r5, #0 + add r1, r5, #0 + mov r2, #0xb6 + str r3, [sp] + add r0, #0xa0 + ldr r0, [r0] + add r1, #0xc8 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xbc + lsl r2, r2, #4 + bl FUN_0201ED5C + add r2, r5, #0 + add r2, #0xa0 + mov r1, #0x19 + ldr r2, [r2] + mov r0, #0 + lsl r1, r1, #0xe + bl FUN_0201EC94 + add r1, r5, #0 + add r1, #0xa0 + ldr r1, [r1] + mov r0, #0 + bl FUN_0201EE2C + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + bl FUN_0201EB8C + mov r3, #0x42 + lsl r3, r3, #2 + add r2, r3, #2 + ldrsh r1, [r5, r3] + add r3, r3, #4 + ldrsh r2, [r5, r2] + ldrsh r3, [r5, r3] + mov r0, #0 + bl FUN_020B8418 + ldr r1, _021D7D68 ; =0x00007FFF + mov r0, #0 + bl FUN_020B8404 + ldr r3, _021D7D6C ; =0x0000010E + mov r0, #1 + add r2, r3, #2 + ldrsh r1, [r5, r3] + add r3, r3, #4 + ldrsh r2, [r5, r2] + ldrsh r3, [r5, r3] + bl FUN_020B8418 + ldr r1, _021D7D68 ; =0x00007FFF + mov r0, #1 + bl FUN_020B8404 + ldr r2, _021D7D60 ; =0x04000060 + ldr r0, _021D7D64 ; =0xFFFFCFFF + ldrh r1, [r2] + and r1, r0 + mov r0, #0x10 + orr r0, r1 + strh r0, [r2] + ldr r0, _021D7D70 ; =0x021C4918 + mov r1, #1 + strb r1, [r0, #5] + bl FUN_0201E7A0 + mov r0, #2 + str r0, [r5, #4] + mov r0, #1 + add sp, #8 + pop {r4, r5, r6, pc} + nop +_021D7D5C: .word 0x020ECAC0 +_021D7D60: .word 0x04000060 +_021D7D64: .word 0xFFFFCFFF +_021D7D68: .word 0x00007FFF +_021D7D6C: .word 0x0000010E +_021D7D70: .word 0x021C4918 + thumb_func_end MOD63_021D7C18 + + thumb_func_start MOD63_021D7D74 +MOD63_021D7D74: ; 0x021D7D74 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + add r7, r1, #0 + add r5, r2, #0 + mov r6, #0 + bl MOD63_021D7858 + cmp r0, #1 + bne _021D7D92 + bl FUN_0200E31C + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021D7D92: + ldr r0, [r4] + cmp r0, #9 + bhi _021D7E38 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7DA4: ; jump table + .short _021D7DB8 - _021D7DA4 - 2 ; case 0 + .short _021D7DF6 - _021D7DA4 - 2 ; case 1 + .short _021D7E24 - _021D7DA4 - 2 ; case 2 + .short _021D7E8C - _021D7DA4 - 2 ; case 3 + .short _021D7ECC - _021D7DA4 - 2 ; case 4 + .short _021D7EF4 - _021D7DA4 - 2 ; case 5 + .short _021D7F44 - _021D7DA4 - 2 ; case 6 + .short _021D7F72 - _021D7DA4 - 2 ; case 7 + .short _021D7FA6 - _021D7DA4 - 2 ; case 8 + .short _021D8232 - _021D7DA4 - 2 ; case 9 +_021D7DB8: + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #1 + bl FUN_0201E74C + ldr r1, _021D80F0 ; =0x00000116 + add r0, r6, #0 + strh r0, [r4, r1] + add r1, r4, #0 + mov r2, #0xf + add r1, #0xa8 + strh r2, [r1] + str r2, [sp] + mov r1, #3 + str r1, [sp, #4] + mov r1, #1 + ldr r3, _021D80F4 ; =0x00007FFF + add r2, r1, #0 + str r5, [sp, #8] + bl FUN_0200E1D0 + mov r0, #1 + str r0, [r4] + b _021D824E +_021D7DF6: + bl FUN_0200E308 + cmp r0, #1 + bne _021D7E38 + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + cmp r0, #0 + beq _021D7E18 + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xa8 + strh r1, [r0] + b _021D824E +_021D7E18: + add r0, r4, #0 + mov r1, #2 + add r0, #0xa8 + strh r1, [r0] + str r1, [r4] + b _021D824E +_021D7E24: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _021D7E38 + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + beq _021D7E3A +_021D7E38: + b _021D824E +_021D7E3A: + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + cmp r0, #0 + beq _021D7E7E + mov r0, #1 + str r0, [sp] + mov r0, #0xa + mov r1, #0x10 + add r2, r6, #0 + mov r3, #6 + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #0xa + mov r1, #0x10 + add r2, r6, #0 + mov r3, #7 + bl FUN_0200A208 + ldr r0, _021D80F0 ; =0x00000116 + mov r1, #2 + strh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xa8 + strh r1, [r0] + mov r0, #3 + str r0, [r4] + b _021D824E +_021D7E7E: + add r0, r4, #0 + add r1, r6, #0 + add r0, #0xa8 + strh r1, [r0] + mov r0, #4 + str r0, [r4] + b _021D824E +_021D7E8C: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _021D7F94 + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D7F94 + mov r0, #1 + str r0, [sp] + mov r0, #0xa + add r1, r6, #0 + mov r2, #0x10 + mov r3, #6 + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #0xa + add r1, r6, #0 + mov r2, #0x10 + mov r3, #7 + bl FUN_0200A208 + ldr r0, _021D80F0 ; =0x00000116 + mov r1, #3 + strh r1, [r4, r0] + mov r0, #2 + str r0, [r4] + b _021D824E +_021D7ECC: + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + cmp r0, #0 + beq _021D7EE6 + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xa8 + strh r1, [r0] + b _021D824E +_021D7EE6: + add r0, r4, #0 + mov r1, #1 + add r0, #0xa8 + strh r1, [r0] + mov r0, #5 + str r0, [r4] + b _021D824E +_021D7EF4: + bl FUN_0200E308 + cmp r0, #1 + bne _021D7F94 + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + cmp r0, #0 + beq _021D7F36 + mov r0, #5 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r6, #0 + ldr r3, _021D80F4 ; =0x00007FFF + add r1, r0, #0 + add r2, r0, #0 + str r5, [sp, #8] + bl FUN_0200E1D0 + ldr r0, _021D80F0 ; =0x00000116 + mov r1, #2 + strh r1, [r4, r0] + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xa8 + strh r1, [r0] + mov r0, #6 + str r0, [r4] + b _021D824E +_021D7F36: + add r0, r4, #0 + mov r1, #0x28 + add r0, #0xa8 + strh r1, [r0] + mov r0, #7 + str r0, [r4] + b _021D824E +_021D7F44: + bl FUN_0200E308 + cmp r0, #1 + bne _021D7F94 + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD63_021D85D8 + mov r0, #0x10 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r1, #1 + ldr r3, _021D80F4 ; =0x00007FFF + add r0, r6, #0 + add r2, r1, #0 + str r5, [sp, #8] + bl FUN_0200E1D0 + mov r0, #5 + str r0, [r4] + b _021D824E +_021D7F72: + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + cmp r0, #0 + beq _021D7FA0 + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xa8 + strh r1, [r0] + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + cmp r0, #0xf + beq _021D7F96 +_021D7F94: + b _021D824E +_021D7F96: + add r0, r4, #0 + mov r1, #2 + add r0, #0xa4 + str r1, [r0] + b _021D824E +_021D7FA0: + mov r0, #8 + str r0, [r4] + b _021D824E +_021D7FA6: + add r0, r4, #0 + add r0, #0xfc + ldr r2, [r0] + add r0, r4, #0 + add r0, #0xbc + ldr r1, [r0] + mov r5, #1 + cmp r1, r2 + ble _021D7FDE + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + sub r1, r1, r2 + cmp r1, r0 + ble _021D7FD4 + add r1, r4, #0 + add r1, #0xbc + ldr r1, [r1] + sub r1, r1, r0 + add r0, r4, #0 + add r0, #0xbc + str r1, [r0] + b _021D7FDA +_021D7FD4: + add r0, r4, #0 + add r0, #0xbc + str r2, [r0] +_021D7FDA: + mov r5, #0 + b _021D8006 +_021D7FDE: + cmp r1, r2 + bge _021D8006 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + sub r1, r2, r1 + cmp r1, r0 + ble _021D7FFE + add r1, r4, #0 + add r1, #0xbc + ldr r1, [r1] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0xbc + str r1, [r0] + b _021D8004 +_021D7FFE: + add r0, r4, #0 + add r0, #0xbc + str r2, [r0] +_021D8004: + mov r5, #0 +_021D8006: + mov r0, #1 + add r1, r4, #0 + lsl r0, r0, #8 + add r1, #0xc0 + ldr r2, [r4, r0] + ldr r1, [r1] + cmp r1, r2 + ble _021D803A + add r0, #0x18 + ldr r0, [r4, r0] + sub r1, r1, r2 + cmp r1, r0 + ble _021D8030 + add r1, r4, #0 + add r1, #0xc0 + ldr r1, [r1] + sub r1, r1, r0 + add r0, r4, #0 + add r0, #0xc0 + str r1, [r0] + b _021D8036 +_021D8030: + add r0, r4, #0 + add r0, #0xc0 + str r2, [r0] +_021D8036: + mov r5, #0 + b _021D8060 +_021D803A: + cmp r1, r2 + bge _021D8060 + add r0, #0x18 + ldr r0, [r4, r0] + sub r1, r2, r1 + cmp r1, r0 + ble _021D8058 + add r1, r4, #0 + add r1, #0xc0 + ldr r1, [r1] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0xc0 + str r1, [r0] + b _021D805E +_021D8058: + add r0, r4, #0 + add r0, #0xc0 + str r2, [r0] +_021D805E: + mov r5, #0 +_021D8060: + mov r0, #0x41 + add r1, r4, #0 + lsl r0, r0, #2 + add r1, #0xc4 + ldr r2, [r4, r0] + ldr r1, [r1] + cmp r1, r2 + ble _021D8094 + add r0, #0x14 + ldr r0, [r4, r0] + sub r1, r1, r2 + cmp r1, r0 + ble _021D808A + add r1, r4, #0 + add r1, #0xc4 + ldr r1, [r1] + sub r1, r1, r0 + add r0, r4, #0 + add r0, #0xc4 + str r1, [r0] + b _021D8090 +_021D808A: + add r0, r4, #0 + add r0, #0xc4 + str r2, [r0] +_021D8090: + mov r5, #0 + b _021D80BA +_021D8094: + cmp r1, r2 + bge _021D80BA + add r0, #0x14 + ldr r0, [r4, r0] + sub r1, r2, r1 + cmp r1, r0 + ble _021D80B2 + add r1, r4, #0 + add r1, #0xc4 + ldr r1, [r1] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0xc4 + str r1, [r0] + b _021D80B8 +_021D80B2: + add r0, r4, #0 + add r0, #0xc4 + str r2, [r0] +_021D80B8: + mov r5, #0 +_021D80BA: + add r0, r4, #0 + add r0, #0xe4 + ldr r2, [r0] + add r0, r4, #0 + add r0, #0xc8 + ldr r1, [r0] + cmp r1, r2 + ble _021D80F8 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + sub r1, r1, r2 + cmp r1, r0 + ble _021D80E6 + add r1, r4, #0 + add r1, #0xc8 + ldr r1, [r1] + sub r1, r1, r0 + add r0, r4, #0 + add r0, #0xc8 + str r1, [r0] + b _021D80EC +_021D80E6: + add r0, r4, #0 + add r0, #0xc8 + str r2, [r0] +_021D80EC: + mov r5, #0 + b _021D8120 + .align 2, 0 +_021D80F0: .word 0x00000116 +_021D80F4: .word 0x00007FFF +_021D80F8: + cmp r1, r2 + bge _021D8120 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + sub r1, r2, r1 + cmp r1, r0 + ble _021D8118 + add r1, r4, #0 + add r1, #0xc8 + ldr r1, [r1] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0xc8 + str r1, [r0] + b _021D811E +_021D8118: + add r0, r4, #0 + add r0, #0xc8 + str r2, [r0] +_021D811E: + mov r5, #0 +_021D8120: + add r0, r4, #0 + add r0, #0xe8 + ldr r2, [r0] + add r0, r4, #0 + add r0, #0xcc + ldr r1, [r0] + cmp r1, r2 + ble _021D8156 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + sub r1, r1, r2 + cmp r1, r0 + ble _021D814C + add r1, r4, #0 + add r1, #0xcc + ldr r1, [r1] + sub r1, r1, r0 + add r0, r4, #0 + add r0, #0xcc + str r1, [r0] + b _021D8152 +_021D814C: + add r0, r4, #0 + add r0, #0xcc + str r2, [r0] +_021D8152: + mov r5, #0 + b _021D817E +_021D8156: + cmp r1, r2 + bge _021D817E + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + sub r1, r2, r1 + cmp r1, r0 + ble _021D8176 + add r1, r4, #0 + add r1, #0xcc + ldr r1, [r1] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0xcc + str r1, [r0] + b _021D817C +_021D8176: + add r0, r4, #0 + add r0, #0xcc + str r2, [r0] +_021D817C: + mov r5, #0 +_021D817E: + add r0, r4, #0 + add r0, #0xec + ldr r2, [r0] + add r0, r4, #0 + add r0, #0xd0 + ldr r1, [r0] + cmp r1, r2 + ble _021D81B4 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + sub r1, r1, r2 + cmp r1, r0 + ble _021D81AA + add r1, r4, #0 + add r1, #0xd0 + ldr r1, [r1] + sub r1, r1, r0 + add r0, r4, #0 + add r0, #0xd0 + str r1, [r0] + b _021D81B0 +_021D81AA: + add r0, r4, #0 + add r0, #0xd0 + str r2, [r0] +_021D81B0: + mov r5, #0 + b _021D81DC +_021D81B4: + cmp r1, r2 + bge _021D81DC + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + sub r1, r2, r1 + cmp r1, r0 + ble _021D81D4 + add r1, r4, #0 + add r1, #0xd0 + ldr r1, [r1] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0xd0 + str r1, [r0] + b _021D81DA +_021D81D4: + add r0, r4, #0 + add r0, #0xd0 + str r2, [r0] +_021D81DA: + mov r5, #0 +_021D81DC: + add r1, r4, #0 + add r1, #0xa0 + add r0, r4, #0 + ldr r1, [r1] + add r0, #0xbc + bl FUN_0201F04C + add r1, r4, #0 + add r1, #0xa0 + add r0, r4, #0 + ldr r1, [r1] + add r0, #0xc8 + bl FUN_0201F05C + cmp r5, #1 + bne _021D824E + mov r0, #4 + mov r1, #1 + bl FUN_0201E74C + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #1 + bl FUN_0201E74C + add r0, r4, #0 + mov r1, #0x5a + add r0, #0xa8 + strh r1, [r0] + add r0, r4, #0 + mov r1, #1 + add r0, #0xa4 + str r1, [r0] + mov r0, #9 + str r0, [r4] + b _021D824E +_021D8232: + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + cmp r0, #0 + beq _021D824C + add r0, r4, #0 + add r0, #0xa8 + ldrh r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xa8 + strh r1, [r0] + b _021D824E +_021D824C: + mov r6, #1 +_021D824E: + add r0, r4, #0 + bl MOD63_021D8650 + add r0, r4, #4 + bl MOD63_021D798C + add r0, r6, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD63_021D7D74 + + thumb_func_start MOD63_021D8260 +MOD63_021D8260: ; 0x021D8260 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + mov r4, #0 + cmp r0, #0 + beq _021D8272 + cmp r0, #1 + beq _021D82FC + b _021D8350 +_021D8272: + add r1, r5, #0 + add r1, #0xa0 + add r0, r5, #0 + ldr r1, [r1] + add r0, #0xfc + bl FUN_0201F04C + add r1, r5, #0 + add r1, #0xa0 + add r0, r5, #0 + ldr r1, [r1] + add r0, #0xe4 + bl FUN_0201F05C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #1 + bl FUN_0201E74C + mov r0, #4 + mov r1, #1 + bl FUN_0201E74C + mov r0, #2 + add r1, r4, #0 + bl FUN_0201E74C + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + add r0, r4, #0 + bl FUN_0200E394 + mov r0, #1 + bl FUN_0200E394 + add r0, r4, #0 + mov r1, #6 + mov r2, #1 + bl FUN_0200A274 + add r0, r4, #0 + mov r1, #7 + mov r2, #2 + bl FUN_0200A274 + add r0, r5, #0 + mov r1, #2 + add r0, #0xa4 + str r1, [r0] + ldr r1, _021D835C ; =0x00007FFF + mov r0, #1 + bl FUN_020B8404 + add r0, r5, #0 + add r1, r4, #0 + add r0, #0xa8 + strh r1, [r0] + mov r0, #1 + str r0, [r5] + b _021D8350 +_021D82FC: + add r0, r5, #0 + add r0, #0xd4 + ldr r0, [r0] + cmp r0, #1 + bne _021D8328 + add r0, r5, #0 + add r0, #0xa8 + ldrh r0, [r0] + cmp r0, #0 + bne _021D831A + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E74C + b _021D8330 +_021D831A: + cmp r0, #0x10 + bne _021D8330 + mov r0, #1 + add r1, r4, #0 + bl FUN_0201E74C + b _021D8330 +_021D8328: + mov r0, #1 + add r1, r4, #0 + bl FUN_0201E74C +_021D8330: + add r0, r5, #0 + add r0, #0xa8 + ldrh r0, [r0] + mov r4, #1 + add r1, r0, #1 + add r0, r5, #0 + add r0, #0xa8 + strh r1, [r0] + add r0, r5, #0 + add r0, #0xa8 + ldrh r1, [r0] + mov r0, #0x1f + and r1, r0 + add r0, r5, #0 + add r0, #0xa8 + strh r1, [r0] +_021D8350: + add r0, r5, #4 + bl MOD63_021D798C + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_021D835C: .word 0x00007FFF + thumb_func_end MOD63_021D8260 + + thumb_func_start MOD63_021D8360 +MOD63_021D8360: ; 0x021D8360 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0xa0 + ldr r0, [r0] + add r4, r1, #0 + add r6, r2, #0 + bl FUN_0201EB70 + add r0, r5, #4 + bl MOD63_021D7970 + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + bl MOD63_021D8644 + ldr r2, _021D839C ; =0x04000050 + mov r3, #0 + strh r3, [r2] + add r2, #0x10 + ldrh r1, [r2] + ldr r0, _021D83A0 ; =0x0000CFDF + and r0, r1 + strh r0, [r2] + ldr r0, _021D83A4 ; =0x021C4918 + strb r3, [r0, #5] + bl FUN_0201E7A0 + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D839C: .word 0x04000050 +_021D83A0: .word 0x0000CFDF +_021D83A4: .word 0x021C4918 + thumb_func_end MOD63_021D8360 + + thumb_func_start MOD63_021D83A8 +MOD63_021D83A8: ; 0x021D83A8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + add r4, r1, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #7 + add r6, r2, #0 + mov r0, #0x30 + add r2, r5, #0 + add r3, r1, #0 + str r4, [sp, #0xc] + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x30 + mov r1, #0xb + add r2, r5, #0 + mov r3, #3 + str r4, [sp, #0xc] + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x30 + mov r1, #8 + add r2, r5, #0 + mov r3, #7 + str r4, [sp, #0xc] + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x30 + mov r1, #0xc + add r2, r5, #0 + mov r3, #3 + str r4, [sp, #0xc] + bl FUN_020068C8 + ldr r0, _021D85C8 ; =0x020ECAC0 + ldrb r7, [r0] + cmp r7, #0xa + bne _021D841A + mov r0, #0xd + mov r1, #9 + str r0, [sp, #0x18] + b _021D8420 +_021D841A: + mov r0, #0xe + mov r1, #0xa + str r0, [sp, #0x18] +_021D8420: + mov r3, #0 + str r3, [sp] + mov r0, #0x30 + mov r2, #4 + str r4, [sp, #4] + bl FUN_02006930 + mov r2, #0 + str r2, [sp] + ldr r1, [sp, #0x18] + mov r0, #0x30 + add r3, r2, #0 + str r4, [sp, #4] + bl FUN_02006930 + cmp r7, #0xa + bne _021D8448 + mov r1, #1 + mov r7, #2 + b _021D844C +_021D8448: + mov r1, #3 + mov r7, #4 +_021D844C: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x30 + add r2, r5, #0 + mov r3, #6 + str r4, [sp, #0xc] + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r3, #1 + mov r0, #0x30 + add r1, r7, #0 + mov r2, #6 + lsl r3, r3, #0xe + str r4, [sp, #4] + bl FUN_02006930 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r0, #0x30 + add r2, r5, #0 + mov r3, #6 + str r4, [sp, #0xc] + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + mov r1, #0x11 + add r2, r5, #0 + mov r3, #5 + str r4, [sp, #0xc] + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r1, #0x10 + mov r0, #0x80 + mov r2, #6 + lsl r3, r1, #9 + str r4, [sp, #4] + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + mov r1, #0xf + add r2, r5, #0 + mov r3, #5 + str r4, [sp, #0xc] + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x30 + mov r1, #0xf + add r2, r5, #0 + mov r3, #1 + str r4, [sp, #0xc] + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x30 + mov r1, #0x11 + add r2, r5, #0 + mov r3, #1 + str r4, [sp, #0xc] + bl FUN_020068C8 + mov r0, #0x60 + str r0, [sp] + mov r0, #0x30 + mov r1, #0x10 + mov r2, #0 + mov r3, #0x20 + str r4, [sp, #4] + bl FUN_02006930 + mov r0, #0 + add r1, r0, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + ldr r2, _021D85CC ; =0x00000227 + mov r0, #1 + mov r1, #0x1a + add r3, r4, #0 + bl FUN_0200A86C + add r7, r0, #0 + mov r0, #0x40 + add r1, r4, #0 + bl FUN_020219F4 + add r1, r6, #0 + add r4, r0, #0 + ldr r2, _021D85D0 ; =0x021DB9A0 + add r0, r5, #0 + add r1, #0xac + bl FUN_02019150 + mov r1, #0 + mov r0, #0xe0 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0xac + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + add r0, r7, #0 + mov r1, #0 + add r2, r4, #0 + bl FUN_0200A8E0 + add r3, r6, #0 + add r3, #0xb3 + ldrb r3, [r3] + mov r0, #0 + add r1, r4, #0 + mov r2, #1 + lsl r3, r3, #3 + bl FUN_02002F40 + mov r1, #0 + add r3, r0, #0 + str r1, [sp] + ldr r0, _021D85D4 ; =0x00010100 + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + add r6, #0xac + str r1, [sp, #0x10] + add r0, r6, #0 + add r2, r4, #0 + str r1, [sp, #0x14] + bl FUN_0201BE3C + add r0, r4, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_0200A8B8 + mov r1, #0x15 + add r0, sp, #0x1c + strh r1, [r0, #2] + strh r1, [r0] + add r1, sp, #0x1c + mov r0, #4 + add r1, #2 + mov r2, #2 + mov r3, #0x42 + bl FUN_02017FB4 + mov r0, #4 + add r1, sp, #0x1c + mov r2, #2 + mov r3, #0x44 + bl FUN_02017FB4 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D85C8: .word 0x020ECAC0 +_021D85CC: .word 0x00000227 +_021D85D0: .word 0x021DB9A0 +_021D85D4: .word 0x00010100 + thumb_func_end MOD63_021D83A8 + + thumb_func_start MOD63_021D85D8 +MOD63_021D85D8: ; 0x021D85D8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r2, #0xa8 + add r7, r0, #0 + ldrh r0, [r2] + add r5, r1, #0 + cmp r0, #0 + bne _021D863A + ldr r0, _021D8640 ; =0x020ECAC0 + ldrb r0, [r0] + cmp r0, #0xa + bne _021D85F8 + mov r1, #0xb + mov r6, #0xa + mov r4, #0xc + b _021D85FE +_021D85F8: + mov r1, #8 + mov r6, #7 + mov r4, #9 +_021D85FE: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + add r2, r7, #0 + mov r3, #5 + str r5, [sp, #0xc] + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #0x80 + add r1, r6, #0 + mov r2, #6 + lsl r3, r0, #6 + str r5, [sp, #4] + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + add r1, r4, #0 + add r2, r7, #0 + mov r3, #5 + str r5, [sp, #0xc] + bl FUN_020068C8 +_021D863A: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8640: .word 0x020ECAC0 + thumb_func_end MOD63_021D85D8 + + thumb_func_start MOD63_021D8644 +MOD63_021D8644: ; 0x021D8644 + ldr r3, _021D864C ; =0x02019179 + add r2, #0xac + add r0, r2, #0 + bx r3 + .align 2, 0 +_021D864C: .word 0x02019179 + thumb_func_end MOD63_021D8644 + + thumb_func_start MOD63_021D8650 +MOD63_021D8650: ; 0x021D8650 + push {r4, lr} + ldr r1, _021D86DC ; =0x00000116 + ldrh r2, [r0, r1] + cmp r2, #3 + bhi _021D86B2 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021D8666: ; jump table + .short _021D866E - _021D8666 - 2 ; case 0 + .short _021D86B2 - _021D8666 - 2 ; case 1 + .short _021D867A - _021D8666 - 2 ; case 2 + .short _021D8698 - _021D8666 - 2 ; case 3 +_021D866E: + mov r3, #5 + sub r2, r1, #2 + strh r3, [r0, r2] + mov r2, #1 + strh r2, [r0, r1] + b _021D86B2 +_021D867A: + sub r2, r1, #2 + ldrh r2, [r0, r2] + add r3, r2, #2 + sub r2, r1, #2 + strh r3, [r0, r2] + ldrh r2, [r0, r2] + cmp r2, #0x1f + blo _021D86B2 + mov r3, #0x1f + add r2, r3, #0 + add r2, #0xf5 + strh r3, [r0, r2] + mov r2, #1 + strh r2, [r0, r1] + b _021D86B2 +_021D8698: + sub r2, r1, #2 + ldrh r2, [r0, r2] + sub r3, r2, #2 + sub r2, r1, #2 + strh r3, [r0, r2] + ldrh r2, [r0, r2] + cmp r2, #5 + bhi _021D86B2 + mov r3, #5 + sub r2, r1, #2 + strh r3, [r0, r2] + mov r2, #1 + strh r2, [r0, r1] +_021D86B2: + mov r1, #0x45 + lsl r1, r1, #2 + ldrh r3, [r0, r1] + mov r1, #0x1f + lsl r1, r1, #0xa + lsl r2, r3, #0xa + and r1, r2 + add r4, r3, #0 + mov r2, #0x1f + and r4, r2 + lsl r3, r3, #5 + lsl r2, r2, #5 + and r2, r3 + orr r2, r4 + orr r1, r2 + lsl r1, r1, #0x10 + mov r0, #1 + lsr r1, r1, #0x10 + bl FUN_020B8404 + pop {r4, pc} + .align 2, 0 +_021D86DC: .word 0x00000116 + thumb_func_end MOD63_021D8650 + + thumb_func_start MOD63_021D86E0 +MOD63_021D86E0: ; 0x021D86E0 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r4, r0, #0 + ldr r0, _021D8858 ; =0x020ECAC0 + ldrb r0, [r0] + cmp r0, #0xa + bne _021D8788 + add r0, r4, #0 + mov r2, #0 + add r0, #0xd8 + str r2, [r0] + mov r1, #0x41 + add r0, r4, #0 + mov r3, #0x12 + lsl r1, r1, #0xc + add r0, #0xdc + str r1, [r0] + add r0, r4, #0 + mov r5, #0xf6 + lsl r3, r3, #0xe + add r0, #0xe0 + str r3, [r0] + mov r3, #0xc3 + add r0, r4, #0 + lsl r3, r3, #0xc + add r0, #0xe4 + str r3, [r0] + mov r0, #2 + add r3, r4, #0 + lsl r0, r0, #0x10 + add r3, #0xe8 + str r0, [r3] + add r3, r4, #0 + lsl r5, r5, #0xc + add r3, #0xec + str r5, [r3] + add r3, r4, #0 + add r3, #0xf0 + str r2, [r3] + mov r5, #0x5a + add r3, r4, #0 + lsl r5, r5, #0xc + add r3, #0xf4 + str r5, [r3] + add r3, r4, #0 + add r3, #0xf8 + str r2, [r3] + add r2, r4, #0 + ldr r3, _021D885C ; =0xFFFFE000 + add r2, #0xfc + str r3, [r2] + mov r2, #0x1f + lsl r2, r2, #0xe + lsr r0, r0, #9 + str r2, [r4, r0] + lsr r0, r1, #0xa + ldr r2, _021D8860 ; =0xFFFDA000 + ldr r1, _021D8864 ; =0xFFFFF6E3 + str r2, [r4, r0] + mov r0, #0x42 + lsl r0, r0, #2 + ldr r3, _021D8868 ; =0x00000A2B + strh r1, [r4, r0] + add r2, r0, #2 + strh r3, [r4, r2] + add r3, r1, #0 + add r3, #0xc6 + add r2, r0, #4 + strh r3, [r4, r2] + add r1, #0x42 + add r2, r0, #6 + strh r1, [r4, r2] + add r1, r0, #0 + ldr r2, _021D886C ; =0x000007A1 + add r1, #8 + strh r2, [r4, r1] + add r1, r0, #0 + ldr r2, _021D8870 ; =0xFFFFF513 + add r1, #0xa + strh r2, [r4, r1] + mov r1, #3 + lsl r1, r1, #0xc + add r0, #0x10 + b _021D8828 +_021D8788: + add r0, r4, #0 + ldr r1, _021D8874 ; =0xFFFBF000 + add r0, #0xd8 + str r1, [r0] + mov r1, #0x29 + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0xdc + str r1, [r0] + mov r1, #0x13 + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0xe0 + str r1, [r0] + add r0, r4, #0 + ldr r1, _021D8878 ; =0xFFF6C000 + add r0, #0xe4 + str r1, [r0] + mov r1, #0x3a + add r0, r4, #0 + mov r2, #2 + lsl r1, r1, #0xc + add r0, #0xe8 + str r1, [r0] + mov r1, #0xbe + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0xec + str r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0xf0 + str r1, [r0] + mov r1, #0xb + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0xf4 + str r1, [r0] + mov r1, #0x12 + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0xf8 + str r1, [r0] + add r0, r4, #0 + lsl r2, r2, #0xe + add r0, #0xfc + str r2, [r0] + ldr r1, _021D887C ; =0xFFFFB000 + lsr r0, r2, #7 + str r1, [r4, r0] + mov r0, #0x41 + lsr r1, r2, #3 + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r2, _021D8880 ; =0x00000653 + add r1, r0, #4 + strh r2, [r4, r1] + ldr r2, _021D8884 ; =0xFFFFF71C + add r1, r0, #6 + strh r2, [r4, r1] + add r1, r0, #0 + sub r2, #0x14 + add r1, #8 + strh r2, [r4, r1] + add r1, r0, #0 + ldr r2, _021D8888 ; =0x0000091B + add r1, #0xa + strh r2, [r4, r1] + add r1, r0, #0 + ldr r2, _021D888C ; =0xFFFFFB61 + add r1, #0xc + strh r2, [r4, r1] + add r1, r0, #0 + mov r2, #0xc5 + lsl r2, r2, #4 + add r1, #0xe + strh r2, [r4, r1] + mov r1, #3 + lsl r1, r1, #0xc + add r0, #0x14 +_021D8828: + str r1, [r4, r0] + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xfc + add r1, #0xe4 + add r2, sp, #0xc + bl VEC_Subtract + add r0, sp, #0xc + add r1, sp, #0 + bl VEC_Normalize + mov r0, #0x42 + ldr r1, [sp] + lsl r0, r0, #2 + strh r1, [r4, r0] + add r1, r0, #2 + ldr r2, [sp, #4] + add r0, r0, #4 + strh r2, [r4, r1] + ldr r1, [sp, #8] + strh r1, [r4, r0] + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8858: .word 0x020ECAC0 +_021D885C: .word 0xFFFFE000 +_021D8860: .word 0xFFFDA000 +_021D8864: .word 0xFFFFF6E3 +_021D8868: .word 0x00000A2B +_021D886C: .word 0x000007A1 +_021D8870: .word 0xFFFFF513 +_021D8874: .word 0xFFFBF000 +_021D8878: .word 0xFFF6C000 +_021D887C: .word 0xFFFFB000 +_021D8880: .word 0x00000653 +_021D8884: .word 0xFFFFF71C +_021D8888: .word 0x0000091B +_021D888C: .word 0xFFFFFB61 + thumb_func_end MOD63_021D86E0 + + thumb_func_start MOD63_021D8890 +MOD63_021D8890: ; 0x021D8890 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D88AC ; =0x021DBD70 + add r3, sp, #0 + mov r2, #5 +_021D889A: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D889A + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D88AC: .word 0x021DBD70 + thumb_func_end MOD63_021D8890 + + thumb_func_start MOD63_021D88B0 +MOD63_021D88B0: ; 0x021D88B0 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D88CC ; =0x021DBD98 + add r3, sp, #0 + mov r2, #5 +_021D88BA: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D88BA + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D88CC: .word 0x021DBD98 + thumb_func_end MOD63_021D88B0 + + thumb_func_start MOD63_021D88D0 +MOD63_021D88D0: ; 0x021D88D0 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D88EC ; =0x021DBDC0 + add r3, sp, #0 + mov r2, #5 +_021D88DA: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D88DA + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D88EC: .word 0x021DBDC0 + thumb_func_end MOD63_021D88D0 + + thumb_func_start MOD63_021D88F0 +MOD63_021D88F0: ; 0x021D88F0 + push {r3, r4, r5, lr} + sub sp, #0xb8 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0xa8 + ldr r5, _021D89E8 ; =0x021DBB4C + str r0, [r4, #0xc] + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _021D89EC ; =0x021DBC88 + add r3, sp, #0x8c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D89F0 ; =0x021DBC6C + add r3, sp, #0x70 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D89F4 ; =0x021DBBC4 + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D89F8 ; =0x021DBBFC + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #5 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D89FC ; =0x021DBC18 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + ldr r0, [r4, #0xc] + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D8A00 ; =0x021DBC34 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #7 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + add r1, r0, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + add sp, #0xb8 + pop {r3, r4, r5, pc} + nop +_021D89E8: .word 0x021DBB4C +_021D89EC: .word 0x021DBC88 +_021D89F0: .word 0x021DBC6C +_021D89F4: .word 0x021DBBC4 +_021D89F8: .word 0x021DBBFC +_021D89FC: .word 0x021DBC18 +_021D8A00: .word 0x021DBC34 + thumb_func_end MOD63_021D88F0 + + thumb_func_start MOD63_021D8A04 +MOD63_021D8A04: ; 0x021D8A04 + push {r3, r4, r5, lr} + sub sp, #0x80 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0x70 + ldr r5, _021D8AC4 ; =0x021DBB3C + str r0, [r4, #0xc] + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D8AC8 ; =0xC7FFFFFF + ldr r5, _021D8ACC ; =0x021DBC50 + and r1, r0 + lsl r0, r2, #1 + orr r0, r1 + str r0, [r2] + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D8AD0 ; =0x021DBCA4 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D8AD4 ; =0x021DBCC0 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D8AD8 ; =0x021DBCDC + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + add sp, #0x80 + pop {r3, r4, r5, pc} + nop +_021D8AC4: .word 0x021DBB3C +_021D8AC8: .word 0xC7FFFFFF +_021D8ACC: .word 0x021DBC50 +_021D8AD0: .word 0x021DBCA4 +_021D8AD4: .word 0x021DBCC0 +_021D8AD8: .word 0x021DBCDC + thumb_func_end MOD63_021D8A04 + + thumb_func_start MOD63_021D8ADC +MOD63_021D8ADC: ; 0x021D8ADC + push {r4, r5, lr} + sub sp, #0x9c + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0x8c + ldr r5, _021D8BBC ; =0x021DBB6C + str r0, [r4, #0xc] + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D8BC0 ; =0xC7FFFFFF + ldr r5, _021D8BC4 ; =0x021DBCF8 + and r1, r0 + lsl r0, r2, #1 + orr r0, r1 + str r0, [r2] + add r3, sp, #0x70 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D8BC8 ; =0x021DBD14 + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #1 + bl FUN_02016C18 + ldr r5, _021D8BCC ; =0x021DBD30 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #1 + bl FUN_02016C18 + ldr r5, _021D8BD0 ; =0x021DBBA8 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + ldr r0, [r4, #0xc] + add r3, r1, #0 + bl FUN_02016C18 + ldr r5, _021D8BD4 ; =0x021DBBE0 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #5 + str r0, [r3] + ldr r0, [r4, #0xc] + mov r3, #0 + bl FUN_02016C18 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + add sp, #0x9c + pop {r4, r5, pc} + nop +_021D8BBC: .word 0x021DBB6C +_021D8BC0: .word 0xC7FFFFFF +_021D8BC4: .word 0x021DBCF8 +_021D8BC8: .word 0x021DBD14 +_021D8BCC: .word 0x021DBD30 +_021D8BD0: .word 0x021DBBA8 +_021D8BD4: .word 0x021DBBE0 + thumb_func_end MOD63_021D8ADC + + thumb_func_start MOD63_021D8BD8 +MOD63_021D8BD8: ; 0x021D8BD8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #4 + str r0, [sp] + ldr r0, _021D8C14 ; =MOD63_021D8C20 + mov r1, #0 + str r0, [sp, #4] + ldr r0, [r4] + mov r2, #1 + add r3, r1, #0 + bl FUN_02022318 + str r0, [r4, #0x10] + ldr r3, _021D8C18 ; =0x021064B8 + mov r0, #2 + mov r1, #0 + ldr r3, [r3] + lsl r0, r0, #0xe + add r2, r1, #0 + blx r3 + ldr r3, _021D8C1C ; =0x021064C0 + mov r0, #0x80 + ldr r3, [r3] + mov r1, #0 + mov r2, #1 + blx r3 + add sp, #8 + pop {r4, pc} + nop +_021D8C14: .word MOD63_021D8C20 +_021D8C18: .word 0x021064B8 +_021D8C1C: .word 0x021064C0 + thumb_func_end MOD63_021D8BD8 + + thumb_func_start MOD63_021D8C20 +MOD63_021D8C20: ; 0x021D8C20 + push {r3, lr} + ldr r0, _021D8C8C ; =0x04000008 + mov r1, #3 + ldrh r2, [r0] + bic r2, r1 + strh r2, [r0] + add r0, #0x58 + ldrh r2, [r0] + ldr r1, _021D8C90 ; =0xFFFFCFFD + and r2, r1 + strh r2, [r0] + ldrh r3, [r0] + add r2, r1, #2 + and r3, r2 + mov r2, #0x10 + orr r2, r3 + strh r2, [r0] + ldrh r3, [r0] + ldr r2, _021D8C94 ; =0x0000CFFB + and r2, r3 + strh r2, [r0] + add r2, r1, #2 + ldrh r3, [r0] + add r1, r1, #2 + and r3, r2 + mov r2, #8 + orr r2, r3 + strh r2, [r0] + ldrh r2, [r0] + and r2, r1 + mov r1, #0x20 + orr r1, r2 + strh r1, [r0] + ldr r0, _021D8C98 ; =0x021DBB5C + bl G3X_SetEdgeColorTable + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl G3X_SetFog + mov r0, #0 + ldr r2, _021D8C9C ; =0x00007FFF + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r1, _021D8CA0 ; =0xBFFF0000 + ldr r0, _021D8CA4 ; =0x04000580 + str r1, [r0] + pop {r3, pc} + nop +_021D8C8C: .word 0x04000008 +_021D8C90: .word 0xFFFFCFFD +_021D8C94: .word 0x0000CFFB +_021D8C98: .word 0x021DBB5C +_021D8C9C: .word 0x00007FFF +_021D8CA0: .word 0xBFFF0000 +_021D8CA4: .word 0x04000580 + thumb_func_end MOD63_021D8C20 + + thumb_func_start MOD63_021D8CA8 +MOD63_021D8CA8: ; 0x021D8CA8 + ldr r3, _021D8CAC ; =0x02009F81 + bx r3 + .align 2, 0 +_021D8CAC: .word 0x02009F81 + thumb_func_end MOD63_021D8CA8 + + thumb_func_start MOD63_021D8CB0 +MOD63_021D8CB0: ; 0x021D8CB0 + push {r4, lr} + add r4, r0, #0 + bl FUN_02009F80 + ldr r0, [r4, #0x4c] + bl MOD63_021DB598 + pop {r4, pc} + thumb_func_end MOD63_021D8CB0 + + thumb_func_start MOD63_021D8CC0 +MOD63_021D8CC0: ; 0x021D8CC0 + push {r4, r5} + mov r0, #1 + lsl r0, r0, #0x1a + ldr r2, [r0] + ldr r1, _021D8D08 ; =0xFFFF1FFF + add r4, r0, #0 + and r2, r1 + lsr r1, r0, #0xd + orr r1, r2 + str r1, [r0] + add r4, #0x48 + ldrh r3, [r4] + mov r2, #0x3f + mov r1, #0x1f + bic r3, r2 + orr r1, r3 + mov r3, #0x20 + orr r1, r3 + strh r1, [r4] + add r4, r0, #0 + add r4, #0x4a + ldrh r5, [r4] + mov r1, #0x11 + bic r5, r2 + orr r1, r5 + orr r1, r3 + strh r1, [r4] + add r1, r0, #0 + mov r2, #0xff + add r1, #0x40 + strh r2, [r1] + ldr r1, _021D8D0C ; =0x0000209F + add r0, #0x44 + strh r1, [r0] + pop {r4, r5} + bx lr + .align 2, 0 +_021D8D08: .word 0xFFFF1FFF +_021D8D0C: .word 0x0000209F + thumb_func_end MOD63_021D8CC0 + + thumb_func_start MOD63_021D8D10 +MOD63_021D8D10: ; 0x021D8D10 + push {r4, lr} + add r4, r0, #0 + bl FUN_0200A2AC + ldr r1, _021D8D90 ; =0x00007FFF + mov r0, #0 + bl FUN_0200E3A0 + ldr r1, _021D8D90 ; =0x00007FFF + mov r0, #1 + bl FUN_0200E3A0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + mov r0, #3 + mov r1, #0x4c + lsl r2, r0, #0x11 + bl FUN_0201681C + mov r1, #0xab + add r0, r4, #0 + lsl r1, r1, #2 + mov r2, #0x4c + bl FUN_02006268 + mov r2, #0xab + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x4c + str r0, [r4] + mov r1, #0 + mov r0, #0xaa + str r1, [r4, #8] + lsl r0, r0, #2 + strb r1, [r4, r0] + ldr r0, _021D8D94 ; =0x021C4918 + strb r1, [r0, #5] + bl FUN_0201E7A0 + bl FUN_0201B9D4 + str r0, [r4, #0x14] + mov r0, #0 + bl FUN_0201B9E0 + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_021D8D90: .word 0x00007FFF +_021D8D94: .word 0x021C4918 + thumb_func_end MOD63_021D8D10 + + thumb_func_start MOD63_021D8D98 +MOD63_021D8D98: ; 0x021D8D98 + push {r3, r4, r5, lr} + add r4, r1, #0 + bl FUN_02006278 + add r5, r0, #0 + mov r0, #0xaa + lsl r0, r0, #2 + ldrb r0, [r5, r0] + cmp r0, #0 + beq _021D8DD4 + ldr r0, _021D8E5C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + bne _021D8DBC + mov r0, #8 + tst r0, r1 + beq _021D8DD4 +_021D8DBC: + mov r0, #1 + str r0, [r5, #8] + ldr r1, _021D8E5C ; =0x021C48B8 + mov r0, #0 + str r0, [r1, #0x6c] + ldr r1, _021D8E60 ; =0x00007FFF + bl FUN_0200E3A0 + ldr r1, _021D8E60 ; =0x00007FFF + mov r0, #1 + bl FUN_0200E3A0 +_021D8DD4: + ldr r0, [r4] + cmp r0, #4 + bhi _021D8E42 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8DE6: ; jump table + .short _021D8DF0 - _021D8DE6 - 2 ; case 0 + .short _021D8E00 - _021D8DE6 - 2 ; case 1 + .short _021D8E12 - _021D8DE6 - 2 ; case 2 + .short _021D8E24 - _021D8DE6 - 2 ; case 3 + .short _021D8E36 - _021D8DE6 - 2 ; case 4 +_021D8DF0: + mov r0, #0xaa + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [r5, #0x30] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8E46 +_021D8E00: + add r0, r5, #0 + bl MOD63_021D8E9C + cmp r0, #0 + beq _021D8E46 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8E46 +_021D8E12: + add r0, r5, #0 + bl MOD63_021D93F0 + cmp r0, #0 + beq _021D8E46 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8E46 +_021D8E24: + add r0, r5, #0 + bl MOD63_021DA0A8 + cmp r0, #0 + beq _021D8E46 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8E46 +_021D8E36: + ldr r1, [r5, #4] + ldr r0, _021D8E64 ; =0x00000A8C + cmp r1, r0 + blt _021D8E46 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8E42: + bl ErrorHandling +_021D8E46: + ldr r0, [r5, #8] + cmp r0, #0 + beq _021D8E50 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8E50: + ldr r0, [r5, #4] + add r0, r0, #1 + str r0, [r5, #4] + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D8E5C: .word 0x021C48B8 +_021D8E60: .word 0x00007FFF +_021D8E64: .word 0x00000A8C + thumb_func_end MOD63_021D8D98 + + thumb_func_start MOD63_021D8E68 +MOD63_021D8E68: ; 0x021D8E68 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + bl FUN_0200E31C + ldr r0, [r4, #0x14] + bl FUN_0201B9E0 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0x4c + bl FUN_020168D0 + ldr r0, _021D8E94 ; =0x0000003F + ldr r1, _021D8E98 ; =0x021DBAB8 + bl FUN_02000E7C + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8E94: .word 0x0000003F +_021D8E98: .word 0x021DBAB8 + thumb_func_end MOD63_021D8E68 + + thumb_func_start MOD63_021D8E9C +MOD63_021D8E9C: ; 0x021D8E9C + push {r4, lr} + add r1, r0, #0 + ldr r0, [r1, #8] + add r4, r1, #0 + add r4, #0x18 + cmp r0, #0 + beq _021D8EAE + mov r0, #3 + strb r0, [r4] +_021D8EAE: + ldrb r0, [r4] + cmp r0, #3 + bhi _021D8F06 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8EC0: ; jump table + .short _021D8EC8 - _021D8EC0 - 2 ; case 0 + .short _021D8ED6 - _021D8EC0 - 2 ; case 1 + .short _021D8EE6 - _021D8EC0 - 2 ; case 2 + .short _021D8EFC - _021D8EC0 - 2 ; case 3 +_021D8EC8: + add r0, r1, #0 + bl MOD63_021D8F0C + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _021D8F06 +_021D8ED6: + add r1, #0x18 + add r0, r1, #0 + bl MOD63_021D8F38 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _021D8F06 +_021D8EE6: + add r0, r1, #0 + ldr r1, [r1, #4] + add r0, #0x18 + bl MOD63_021D90D0 + cmp r0, #0 + beq _021D8F06 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _021D8F06 +_021D8EFC: + add r0, r1, #0 + bl MOD63_021D9234 + mov r0, #1 + pop {r4, pc} +_021D8F06: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD63_021D8E9C + + thumb_func_start MOD63_021D8F0C +MOD63_021D8F0C: ; 0x021D8F0C + push {r4, lr} + add r4, r0, #0 + bl MOD63_021D8890 + add r0, r4, #0 + bl MOD63_021D88F0 + ldr r0, [r4, #0xc] + str r0, [r4, #0x24] + bl MOD63_021DAEF8 + str r0, [r4, #0x2c] + ldr r0, _021D8F34 ; =MOD63_021D8CA8 + add r1, r4, #0 + bl FUN_02015F10 + mov r0, #1 + strb r0, [r4, #0x1a] + pop {r4, pc} + nop +_021D8F34: .word MOD63_021D8CA8 + thumb_func_end MOD63_021D8F0C + + thumb_func_start MOD63_021D8F38 +MOD63_021D8F38: ; 0x021D8F38 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x13 + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x13 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x14 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x15 + mov r3, #6 + bl FUN_020068C8 + mov r2, #0 + str r2, [sp] + mov r0, #0x4c + str r0, [sp, #4] + mov r0, #0x80 + mov r1, #0x12 + add r3, r2, #0 + bl FUN_02006930 + mov r3, #0 + str r3, [sp] + mov r0, #0x4c + str r0, [sp, #4] + mov r0, #0x80 + mov r1, #0x12 + mov r2, #4 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + mov r1, #1 + ldr r2, [r4, #0xc] + mov r0, #0x80 + add r3, r1, #0 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #2 + mov r3, #1 + bl FUN_020068C8 + mov r1, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x4c + str r0, [sp, #4] + mov r0, #0x80 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x16 + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x16 + mov r3, #7 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x48 + mov r3, #5 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x49 + mov r3, #5 + bl FUN_020068C8 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x4c + str r0, [sp, #4] + mov r0, #0x80 + mov r1, #0x47 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #0 + bl FUN_0201E74C + mov r0, #0x10 + str r0, [sp] + ldr r0, _021D90C8 ; =0x04000050 + mov r1, #2 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + mov r0, #0x10 + str r0, [sp] + ldr r0, _021D90CC ; =0x04001050 + mov r1, #2 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + mov r0, #1 + add r1, r0, #0 + bl OS_WaitIrq + mov r0, #0 + bl FUN_0200E394 + mov r0, #1 + bl FUN_0200E394 + bl FUN_0201E788 + add sp, #0x10 + pop {r4, pc} + nop +_021D90C8: .word 0x04000050 +_021D90CC: .word 0x04001050 + thumb_func_end MOD63_021D8F38 + + thumb_func_start MOD63_021D90D0 +MOD63_021D90D0: ; 0x021D90D0 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #0x14] + add r5, r1, #0 + bl MOD63_021DB1AC + ldrb r0, [r4, #1] + cmp r0, #5 + bls _021D90E6 + b _021D9208 +_021D90E6: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D90F2: ; jump table + .short _021D90FE - _021D90F2 - 2 ; case 0 + .short _021D9122 - _021D90F2 - 2 ; case 1 + .short _021D9148 - _021D90F2 - 2 ; case 2 + .short _021D91AE - _021D90F2 - 2 ; case 3 + .short _021D91CE - _021D90F2 - 2 ; case 4 + .short _021D91FA - _021D90F2 - 2 ; case 5 +_021D90FE: + mov r2, #0 + strb r2, [r4, #7] + strb r2, [r4, #6] + ldr r0, _021D9210 ; =MOD63_021D92A4 + strb r2, [r4, #8] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x10] + mov r0, #1 + ldr r1, _021D9214 ; =0x00000494 + add r2, r0, #0 + bl FUN_0200433C + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9208 +_021D9122: + ldrb r0, [r4, #8] + cmp r0, #0 + beq _021D9208 + cmp r5, #0x73 + blt _021D9208 + mov r2, #0 + strb r2, [r4, #7] + mov r0, #0x10 + strb r0, [r4, #6] + ldr r0, _021D9218 ; =MOD63_021D9300 + strb r2, [r4, #8] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x10] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9208 +_021D9148: + ldrb r0, [r4, #8] + cmp r0, #0 + beq _021D9208 + ldr r0, _021D921C ; =0x00000109 + cmp r5, r0 + blt _021D9208 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + mov r0, #0x10 + str r0, [sp] + ldr r0, _021D9220 ; =0x04000050 + mov r1, #4 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + mov r0, #0x10 + str r0, [sp] + ldr r0, _021D9224 ; =0x04001050 + mov r1, #4 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #1 + bl FUN_0201E74C + mov r2, #0 + strb r2, [r4, #7] + strb r2, [r4, #6] + ldr r0, _021D9228 ; =MOD63_021D9360 + strb r2, [r4, #8] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x10] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9208 +_021D91AE: + ldrb r0, [r4, #8] + cmp r0, #0 + beq _021D9208 + mov r2, #0 + strb r2, [r4, #7] + strb r2, [r4, #6] + ldr r0, _021D922C ; =MOD63_021D93A8 + strb r2, [r4, #8] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x10] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9208 +_021D91CE: + ldrb r0, [r4, #8] + cmp r0, #0 + beq _021D9208 + ldr r0, _021D9230 ; =0x000001EA + cmp r5, r0 + blt _021D9208 + mov r0, #0x12 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9208 +_021D91FA: + bl FUN_0200E308 + cmp r0, #0 + beq _021D9208 + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021D9208: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_021D9210: .word MOD63_021D92A4 +_021D9214: .word 0x00000494 +_021D9218: .word MOD63_021D9300 +_021D921C: .word 0x00000109 +_021D9220: .word 0x04000050 +_021D9224: .word 0x04001050 +_021D9228: .word MOD63_021D9360 +_021D922C: .word MOD63_021D93A8 +_021D9230: .word 0x000001EA + thumb_func_end MOD63_021D90D0 + + thumb_func_start MOD63_021D9234 +MOD63_021D9234: ; 0x021D9234 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + ldrb r0, [r4, #0x1a] + cmp r0, #0 + beq _021D9286 + ldr r0, [r4, #0x2c] + bl MOD63_021DAF9C + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #7 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #5 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + bl FUN_02016A18 + mov r0, #0 + strb r0, [r4, #0x1a] +_021D9286: + ldr r0, [r4, #0x28] + cmp r0, #0 + beq _021D92A0 + ldr r0, [r4, #8] + cmp r0, #0 + bne _021D9296 + bl ErrorHandling +_021D9296: + ldr r0, [r4, #0x28] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x28] +_021D92A0: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD63_021D9234 + + thumb_func_start MOD63_021D92A4 +MOD63_021D92A4: ; 0x021D92A4 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldrb r1, [r4, #7] + add r1, r1, #1 + strb r1, [r4, #7] + ldrb r1, [r4, #7] + cmp r1, #6 + blo _021D92C0 + mov r1, #0 + strb r1, [r4, #7] + ldrb r1, [r4, #6] + add r1, r1, #1 + strb r1, [r4, #6] +_021D92C0: + ldrb r1, [r4, #6] + cmp r1, #0x10 + blo _021D92D2 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x10] + mov r0, #1 + strb r0, [r4, #8] +_021D92D2: + mov r0, #0x10 + str r0, [sp] + ldrb r3, [r4, #6] + ldr r0, _021D92F8 ; =0x04000050 + mov r1, #2 + mov r2, #8 + bl G2x_SetBlendAlpha_ + mov r0, #0x10 + str r0, [sp] + ldrb r3, [r4, #6] + ldr r0, _021D92FC ; =0x04001050 + mov r1, #2 + mov r2, #8 + bl G2x_SetBlendAlpha_ + add sp, #4 + pop {r3, r4, pc} + nop +_021D92F8: .word 0x04000050 +_021D92FC: .word 0x04001050 + thumb_func_end MOD63_021D92A4 + + thumb_func_start MOD63_021D9300 +MOD63_021D9300: ; 0x021D9300 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldrb r1, [r4, #7] + add r1, r1, #1 + strb r1, [r4, #7] + ldrb r1, [r4, #7] + cmp r1, #4 + blo _021D931C + mov r1, #0 + strb r1, [r4, #7] + ldrb r1, [r4, #6] + sub r1, r1, #1 + strb r1, [r4, #6] +_021D931C: + ldrb r1, [r4, #6] + cmp r1, #0 + bne _021D9332 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x10] + mov r1, #1 + strb r1, [r4, #8] + ldr r0, [r4, #0x18] + strb r1, [r0] +_021D9332: + mov r0, #0x10 + str r0, [sp] + ldrb r3, [r4, #6] + ldr r0, _021D9358 ; =0x04000050 + mov r1, #2 + mov r2, #8 + bl G2x_SetBlendAlpha_ + mov r0, #0x10 + str r0, [sp] + ldrb r3, [r4, #6] + ldr r0, _021D935C ; =0x04001050 + mov r1, #2 + mov r2, #8 + bl G2x_SetBlendAlpha_ + add sp, #4 + pop {r3, r4, pc} + nop +_021D9358: .word 0x04000050 +_021D935C: .word 0x04001050 + thumb_func_end MOD63_021D9300 + + thumb_func_start MOD63_021D9360 +MOD63_021D9360: ; 0x021D9360 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldrb r1, [r4, #7] + add r1, r1, #1 + strb r1, [r4, #7] + ldrb r1, [r4, #7] + cmp r1, #4 + blo _021D937C + mov r1, #0 + strb r1, [r4, #7] + ldrb r1, [r4, #6] + add r1, r1, #1 + strb r1, [r4, #6] +_021D937C: + ldrb r1, [r4, #6] + cmp r1, #0x10 + blo _021D938E + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x10] + mov r0, #1 + strb r0, [r4, #8] +_021D938E: + mov r0, #0x10 + str r0, [sp] + ldrb r3, [r4, #6] + ldr r0, _021D93A4 ; =0x04000050 + mov r1, #4 + mov r2, #8 + bl G2x_SetBlendAlpha_ + add sp, #4 + pop {r3, r4, pc} + nop +_021D93A4: .word 0x04000050 + thumb_func_end MOD63_021D9360 + + thumb_func_start MOD63_021D93A8 +MOD63_021D93A8: ; 0x021D93A8 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldrb r1, [r4, #7] + add r1, r1, #1 + strb r1, [r4, #7] + ldrb r1, [r4, #7] + cmp r1, #4 + blo _021D93C4 + mov r1, #0 + strb r1, [r4, #7] + ldrb r1, [r4, #6] + add r1, r1, #1 + strb r1, [r4, #6] +_021D93C4: + ldrb r1, [r4, #6] + cmp r1, #0x10 + blo _021D93D6 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x10] + mov r0, #1 + strb r0, [r4, #8] +_021D93D6: + mov r0, #0x10 + str r0, [sp] + ldrb r3, [r4, #6] + ldr r0, _021D93EC ; =0x04001050 + mov r1, #4 + mov r2, #8 + bl G2x_SetBlendAlpha_ + add sp, #4 + pop {r3, r4, pc} + nop +_021D93EC: .word 0x04001050 + thumb_func_end MOD63_021D93A8 + + thumb_func_start MOD63_021D93F0 +MOD63_021D93F0: ; 0x021D93F0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + add r4, r5, #0 + add r4, #0x34 + cmp r0, #0 + beq _021D9402 + mov r0, #4 + strb r0, [r4] +_021D9402: + ldrb r0, [r4] + cmp r0, #4 + bhi _021D9492 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9414: ; jump table + .short _021D941E - _021D9414 - 2 ; case 0 + .short _021D942C - _021D9414 - 2 ; case 1 + .short _021D943C - _021D9414 - 2 ; case 2 + .short _021D9452 - _021D9414 - 2 ; case 3 + .short _021D9488 - _021D9414 - 2 ; case 4 +_021D941E: + add r0, r5, #0 + bl MOD63_021D9498 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _021D9492 +_021D942C: + add r5, #0x34 + add r0, r5, #0 + bl MOD63_021D96A0 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _021D9492 +_021D943C: + add r0, r5, #0 + add r0, #0x34 + bl MOD63_021D9810 + mov r0, #1 + add r5, #0x39 + strb r0, [r5] + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] + b _021D9492 +_021D9452: + add r0, r5, #0 + ldr r1, [r5, #4] + add r0, #0x34 + bl MOD63_021D99EC + cmp r0, #0 + beq _021D9466 + ldrb r0, [r4] + add r0, r0, #1 + strb r0, [r4] +_021D9466: + ldr r0, [r5, #0x44] + bl MOD63_021DAC18 + add r0, r5, #0 + add r0, #0x39 + ldrb r0, [r0] + cmp r0, #0 + beq _021D9480 + add r5, #0x34 + add r0, r5, #0 + bl MOD63_021D9980 + b _021D9492 +_021D9480: + ldr r0, [r5, #0x4c] + bl MOD63_021DB5A8 + b _021D9492 +_021D9488: + add r0, r5, #0 + bl MOD63_021D95A8 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D9492: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021D93F0 + + thumb_func_start MOD63_021D9498 +MOD63_021D9498: ; 0x021D9498 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + bl MOD63_021D88B0 + add r0, r5, #0 + bl MOD63_021D8A04 + add r0, r5, #0 + bl MOD63_021D8BD8 + bl MOD63_021DA6E0 + add r4, r0, #0 + bl MOD63_021DB498 + add r6, r0, #0 + mov r0, #0x4c + add r1, r4, #0 + bl FUN_02016998 + str r0, [r5, #0x44] + mov r0, #0x10 + bl MOD63_021DAF20 + str r0, [r5, #0x48] + mov r0, #0x4c + add r1, r6, #0 + bl FUN_02016998 + str r0, [r5, #0x4c] + ldr r0, [r5, #0x44] + mov r1, #0 + add r2, r4, #0 + bl Call_FillMemWithValue + ldr r0, [r5, #0x4c] + mov r1, #0 + add r2, r6, #0 + bl Call_FillMemWithValue + add r0, r5, #0 + mov r1, #4 + add r0, #0x3b + strb r1, [r0] + ldr r0, [r5, #0x4c] + bl MOD63_021DB49C + ldr r0, [r5, #0xc] + mov r1, #1 + str r0, [r5, #0x40] + ldr r0, _021D9588 ; =0x021C4918 + strb r1, [r0, #5] + bl FUN_0201E7A0 + ldr r6, _021D958C ; =0x021DBDE8 + ldr r7, _021D9590 ; =0x021DBAD0 + mov r4, #0 +_021D950C: + mov r0, #0xc + add r1, r4, #0 + mul r1, r0 + add r3, r6, r1 + ldr r2, [r3, #4] + ldr r1, [r6, r1] + ldr r3, [r3, #8] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + add r0, r4, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + asr r3, r3, #0x10 + bl FUN_020B8418 + lsl r1, r4, #1 + ldrh r1, [r7, r1] + add r0, r4, #0 + bl FUN_020B8404 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021D950C + ldr r0, _021D9594 ; =0x00004210 + ldr r1, _021D9598 ; =0x0000318A + mov r2, #0 + bl FUN_020B83E0 + ldr r0, _021D959C ; =0x00004A52 + ldr r1, _021D95A0 ; =0x000039CE + mov r2, #0 + bl FUN_020B83BC + mov r0, #0x1f + str r0, [sp] + mov r0, #2 + lsl r0, r0, #0xe + mov r1, #0 + str r0, [sp, #4] + mov r0, #0xd + mov r2, #2 + add r3, r1, #0 + bl FUN_020B8390 + ldr r0, _021D95A4 ; =MOD63_021D8CB0 + add r1, r5, #0 + bl FUN_02015F10 + mov r0, #0x10 + mov r1, #1 + mov r2, #2 + bl FUN_0200A274 + mov r0, #1 + add r5, #0x36 + strb r0, [r5] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9588: .word 0x021C4918 +_021D958C: .word 0x021DBDE8 +_021D9590: .word 0x021DBAD0 +_021D9594: .word 0x00004210 +_021D9598: .word 0x0000318A +_021D959C: .word 0x00004A52 +_021D95A0: .word 0x000039CE +_021D95A4: .word MOD63_021D8CB0 + thumb_func_end MOD63_021D9498 + + thumb_func_start MOD63_021D95A8 +MOD63_021D95A8: ; 0x021D95A8 + push {r4, r5, r6, lr} + mov r2, #1 + lsl r2, r2, #0x1a + add r5, r0, #0 + ldr r1, [r2] + ldr r0, _021D969C ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] + add r0, r5, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0 + beq _021D95F6 + bl FUN_0201EB98 + ldr r0, [r5, #0x78] + bl FUN_0201EB70 + mov r4, #0 + mov r6, #0x58 +_021D95D0: + add r0, r4, #0 + mul r0, r6 + add r0, r5, r0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_02016A18 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #6 + blo _021D95D0 + ldr r0, [r5, #0x70] + bl FUN_02016A18 + add r0, r5, #0 + mov r1, #0 + add r0, #0x38 + strb r1, [r0] +_021D95F6: + add r0, r5, #0 + add r0, #0x37 + ldrb r0, [r0] + cmp r0, #0 + beq _021D9624 + ldr r0, [r5, #0x44] + bl MOD63_021DAA04 + mov r4, #0 +_021D9608: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x50] + bl FUN_02016A18 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021D9608 + add r0, r5, #0 + mov r1, #0 + add r0, #0x37 + strb r1, [r0] +_021D9624: + add r0, r5, #0 + add r0, #0x36 + ldrb r0, [r0] + cmp r0, #0 + beq _021D9690 + ldr r0, [r5, #0x48] + cmp r0, #0 + beq _021D963C + bl MOD63_021DAF4C + mov r0, #0 + str r0, [r5, #0x48] +_021D963C: + ldr r0, [r5, #0x44] + cmp r0, #0 + beq _021D964A + bl FUN_02016A18 + mov r0, #0 + str r0, [r5, #0x44] +_021D964A: + ldr r0, [r5, #0x4c] + cmp r0, #0 + beq _021D965E + bl MOD63_021DB580 + ldr r0, [r5, #0x4c] + bl FUN_02016A18 + mov r0, #0 + str r0, [r5, #0x4c] +_021D965E: + ldr r0, [r5, #0xc] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r5, #0xc] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r5, #0xc] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r5, #0xc] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r5, #0xc] + bl FUN_02016A18 + ldr r0, [r5, #0x10] + bl FUN_020223BC + mov r0, #0 + add r5, #0x36 + strb r0, [r5] +_021D9690: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + pop {r4, r5, r6, pc} + nop +_021D969C: .word 0xFFFF1FFF + thumb_func_end MOD63_021D95A8 + + thumb_func_start MOD63_021D96A0 +MOD63_021D96A0: ; 0x021D96A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + ldr r3, _021D980C ; =0x021DBB2C + add r2, sp, #0x18 + add r5, r0, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + mov r0, #0x80 + mov r1, #0x4c + bl FUN_02006670 + str r0, [sp, #0x10] + add r0, r5, #0 + str r0, [sp, #0x14] + add r0, #0x2c + mov r4, #0 + str r0, [sp, #0x14] +_021D96C6: + lsl r7, r4, #2 + add r1, sp, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [r1, r7] + mov r2, #0x4c + add r6, r5, r7 + bl FUN_02006704 + str r0, [r6, #0x1c] + cmp r0, #0 + beq _021D96F4 + ldr r1, [sp, #0x14] + add r1, r1, r7 + bl FUN_020B0138 + cmp r0, #0 + bne _021D96F8 + ldr r0, [r6, #0x2c] + bl FUN_02016A18 + bl ErrorHandling + b _021D96F8 +_021D96F4: + bl ErrorHandling +_021D96F8: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021D96C6 + ldr r0, [sp, #0x10] + bl FUN_020066F4 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r5, #0xc] + mov r0, #0x80 + mov r1, #0x1c + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r5, #0xc] + mov r0, #0x80 + mov r1, #0x1a + mov r3, #3 + bl FUN_020068C8 + mov r1, #0 + str r1, [sp] + ldr r0, [r5, #0x2c] + mov r2, #0xa + add r3, r1, #0 + bl MOD63_021D9EA8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r5, #0xc] + mov r0, #0x80 + mov r1, #0x11 + mov r3, #4 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r5, #0xc] + mov r0, #0x80 + mov r1, #0xf + mov r3, #4 + bl FUN_020068C8 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + mov r0, #0x4c + str r0, [sp, #4] + mov r0, #0x80 + mov r1, #0x10 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r5, #0xc] + mov r0, #0x80 + mov r1, #0x1b + mov r3, #1 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r5, #0xc] + mov r0, #0x80 + mov r1, #0x19 + mov r3, #1 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r5, #0xc] + mov r0, #0x80 + mov r1, #0x18 + mov r3, #2 + bl FUN_020068C8 + ldr r0, [r5, #0x10] + bl MOD63_021DA6E8 + ldr r0, [r5, #0x10] + bl MOD63_021DAA5C + ldr r0, [r5, #0x10] + ldr r1, [r5, #0x14] + bl MOD63_021DABCC + mov r0, #0xe + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #1 + mov r1, #0 + bl FUN_0201E74C + mov r0, #0 + bl FUN_0200E394 + mov r0, #1 + bl FUN_0200E394 + mov r0, #1 + strb r0, [r5, #3] + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D980C: .word 0x021DBB2C + thumb_func_end MOD63_021D96A0 + + thumb_func_start MOD63_021D9810 +MOD63_021D9810: ; 0x021D9810 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + mov r0, #0x80 + mov r1, #0x46 + mov r2, #0x4c + bl LoadFromNarc_2 + str r0, [r5, #0x3c] + bl FUN_020BC0FC + str r0, [r5, #0x40] + bl FUN_0201B3C4 + cmp r0, #0 + bne _021D9834 + bl ErrorHandling +_021D9834: + ldr r0, [r5, #0x40] + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _021D9840 + bl ErrorHandling +_021D9840: + ldr r2, [r5, #0x40] + ldr r0, [r5, #0x3c] + ldr r1, [r2, #0x14] + add r1, r2, r1 + sub r1, r1, r0 + bl FUN_02016B44 + mov r0, #0x80 + mov r1, #0x4c + bl FUN_02006670 + str r0, [sp, #0xc] + add r0, r5, #0 + str r0, [sp, #0x10] + add r0, #0x48 + mov r7, #0 + str r0, [sp, #0x10] +_021D9862: + ldr r1, _021D9964 ; =0x021DBB90 + lsl r2, r7, #2 + ldr r1, [r1, r2] + mov r0, #0x58 + add r6, r7, #0 + mul r6, r0 + ldr r0, [sp, #0xc] + mov r2, #0x4c + bl FUN_02006704 + add r1, r5, r6 + add r1, #0x9c + str r0, [r1] + add r0, r5, r6 + add r0, #0x9c + ldr r0, [r0] + ldr r1, [r5, #0x40] + bl FUN_0201B3A8 + cmp r0, #0 + bne _021D9890 + bl ErrorHandling +_021D9890: + add r0, r5, r6 + add r0, #0x9c + ldr r0, [r0] + bl FUN_020BC13C + ldrb r0, [r0, #9] + cmp r0, #1 + beq _021D98A4 + bl ErrorHandling +_021D98A4: + add r0, r5, r6 + add r0, #0x9c + ldr r0, [r0] + bl FUN_020BC13C + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r4, r0, r1 + bne _021D98BC + bl ErrorHandling +_021D98BC: + ldr r0, [sp, #0x10] + add r1, r4, #0 + add r0, r0, r6 + bl FUN_020B80B4 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x40 + bl FUN_020BC094 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x80 + bl FUN_020BC094 + mov r2, #2 + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #8 + bl FUN_020BC094 + mov r2, #1 + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #0xa + bl FUN_020BC094 + add r0, r4, #0 + mov r1, #0 + mov r2, #0xf + bl FUN_020BC02C + add r0, r7, #1 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + cmp r7, #6 + blo _021D9862 + ldr r0, [sp, #0xc] + bl FUN_020066F4 + mov r0, #0x4c + bl FUN_0201EB64 + add r3, sp, #0x20 + ldr r4, _021D9968 ; =0x021DBAE4 + str r0, [r5, #0x44] + ldmia r4!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + ldr r1, _021D996C ; =0x0029AEC1 + str r0, [r3] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r5, #0x44] + ldr r3, _021D9970 ; =0x000005C1 + str r0, [sp, #8] + add r0, r2, #0 + ldr r2, _021D9974 ; =0x021DBB80 + bl FUN_0201ECA8 + ldr r0, _021D9978 ; =0x00000981 + ldr r1, [r5, #0x44] + bl FUN_0201EEF0 + ldr r4, _021D997C ; =0x021DBB08 + add r3, sp, #0x14 + ldmia r4!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + ldr r1, [r5, #0x44] + add r0, r2, #0 + bl FUN_0201EF70 + ldr r0, [r5, #0x44] + bl FUN_0201EB8C + mov r0, #1 + strb r0, [r5, #4] + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D9964: .word 0x021DBB90 +_021D9968: .word 0x021DBAE4 +_021D996C: .word 0x0029AEC1 +_021D9970: .word 0x000005C1 +_021D9974: .word 0x021DBB80 +_021D9978: .word 0x00000981 +_021D997C: .word 0x021DBB08 + thumb_func_end MOD63_021D9810 + + thumb_func_start MOD63_021D9980 +MOD63_021D9980: ; 0x021D9980 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + ldr r4, _021D99E4 ; =0x021DBD4C + add r5, r0, #0 + add r3, sp, #0x18 + mov r2, #4 +_021D998C: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D998C + ldr r0, [r4] + add r2, sp, #0xc + str r0, [r3] + ldr r3, _021D99E8 ; =0x021DBAFC + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, sp, #0 + str r0, [r2] + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + bl FUN_020222AC + bl FUN_0201EBA4 + mov r4, #0 + add r5, #0x48 + add r7, sp, #0 + mov r6, #0x58 +_021D99BE: + add r0, r4, #0 + mul r0, r6 + add r0, r5, r0 + add r1, r7, #0 + add r2, sp, #0x18 + add r3, sp, #0xc + bl FUN_0201B26C + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #6 + blo _021D99BE + mov r0, #0 + mov r1, #1 + bl FUN_020222B4 + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D99E4: .word 0x021DBD4C +_021D99E8: .word 0x021DBAFC + thumb_func_end MOD63_021D9980 + + thumb_func_start MOD63_021D99EC +MOD63_021D99EC: ; 0x021D99EC + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r4, #6] + add r5, r1, #0 + cmp r0, #0 + bne _021D9A00 + ldr r0, [r4, #0x14] + bl MOD63_021DB38C +_021D9A00: + ldrb r0, [r4, #6] + ldrb r1, [r4, #7] + add r0, r0, #1 + bl _s32_div_f + strb r1, [r4, #6] + ldrb r0, [r4, #1] + cmp r0, #0x11 + bhi _021D9B0C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9A1E: ; jump table + .short _021D9A42 - _021D9A1E - 2 ; case 0 + .short _021D9A6A - _021D9A1E - 2 ; case 1 + .short _021D9A7A - _021D9A1E - 2 ; case 2 + .short _021D9AB8 - _021D9A1E - 2 ; case 3 + .short _021D9AEE - _021D9A1E - 2 ; case 4 + .short _021D9B3E - _021D9A1E - 2 ; case 5 + .short _021D9B72 - _021D9A1E - 2 ; case 6 + .short _021D9BC8 - _021D9A1E - 2 ; case 7 + .short _021D9C04 - _021D9A1E - 2 ; case 8 + .short _021D9C70 - _021D9A1E - 2 ; case 9 + .short _021D9CB4 - _021D9A1E - 2 ; case 10 + .short _021D9CFC - _021D9A1E - 2 ; case 11 + .short _021D9D38 - _021D9A1E - 2 ; case 12 + .short _021D9D94 - _021D9A1E - 2 ; case 13 + .short _021D9DF8 - _021D9A1E - 2 ; case 14 + .short _021D9E48 - _021D9A1E - 2 ; case 15 + .short _021D9E84 - _021D9A1E - 2 ; case 16 + .short _021D9E9A - _021D9A1E - 2 ; case 17 +_021D9A42: + mov r0, #0xa + lsl r0, r0, #6 + cmp r5, r0 + blt _021D9B0C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E74C + mov r0, #2 + str r0, [sp] + mov r0, #8 + mov r1, #0 + mov r2, #0x10 + mov r3, #1 + bl FUN_0200A208 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9A6A: + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD63_021DACA0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9A7A: + ldr r0, _021D9DCC ; =0x000002E9 + cmp r5, r0 + bne _021D9A88 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C +_021D9A88: + ldr r0, _021D9DD0 ; =0x000003C5 + cmp r5, r0 + blt _021D9B0C + mov r0, #7 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x12 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + ldr r3, _021D9DD4 ; =0x00007FFF + mov r0, #3 + add r2, r1, #0 + bl FUN_0200E1D0 + mov r0, #0x10 + strb r0, [r4, #7] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9AB8: + add r0, r4, #0 + add r1, r5, #0 + bl MOD63_021D9F38 + ldr r0, [r4, #0x10] + add r1, r5, #0 + bl MOD63_021DAD6C + ldr r0, _021D9DD8 ; =0x00000631 + cmp r5, r0 + blt _021D9B0C + mov r0, #0x12 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + mov r1, #0 + str r0, [sp, #8] + ldr r3, _021D9DD4 ; =0x00007FFF + mov r0, #3 + add r2, r1, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9AEE: + add r0, r4, #0 + add r1, r5, #0 + bl MOD63_021D9F38 + ldr r0, [r4, #0x10] + add r1, r5, #0 + bl MOD63_021DAD6C + bl FUN_0200E308 + cmp r0, #0 + beq _021D9B0C + ldr r0, _021D9DDC ; =0x0000064A + cmp r5, r0 + bge _021D9B0E +_021D9B0C: + b _021D9EA0 +_021D9B0E: + ldr r0, [r4, #0x10] + mov r1, #0 + mov r2, #1 + bl MOD63_021DAC24 + bl MOD63_021D8CC0 + mov r0, #0 + strb r0, [r4, #5] + mov r0, #0x12 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + ldr r3, _021D9DD4 ; =0x00007FFF + mov r0, #3 + add r2, r1, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9B3E: + add r0, r4, #0 + bl MOD63_021D9EE0 + bl FUN_0200E308 + cmp r0, #0 + beq _021D9C12 + ldr r0, _021D9DE0 ; =0x000006B3 + cmp r5, r0 + blt _021D9C12 + mov r0, #4 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9B72: + bl FUN_0200E308 + cmp r0, #0 + beq _021D9C12 + mov r1, #0 + ldr r0, _021D9DE4 ; =0x04000050 + mov r2, #0x38 + add r3, r1, #0 + str r1, [sp] + bl G2x_SetBlendAlpha_ + mov r0, #6 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r1, #0 + ldr r0, [r4, #0x10] + add r2, r1, #0 + bl MOD63_021DAD18 + mov r0, #4 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9BC8: + add r0, r4, #0 + bl MOD63_021D9F20 + bl FUN_0200E308 + cmp r0, #0 + beq _021D9C12 + ldr r0, [r4, #0x18] + mov r1, #0 + add r2, r5, #0 + bl MOD63_021DB5CC + cmp r0, #0 + beq _021D9C12 + mov r0, #4 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9C04: + bl FUN_0200E308 + cmp r0, #0 + beq _021D9C12 + ldr r0, _021D9DE8 ; =0x00000721 + cmp r5, r0 + bge _021D9C14 +_021D9C12: + b _021D9EA0 +_021D9C14: + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD63_021DACA0 + mov r1, #0 + ldr r0, [r4, #0x10] + add r2, r1, #0 + bl MOD63_021DAC24 + mov r1, #1 + ldr r0, [r4, #0x10] + add r2, r1, #0 + bl MOD63_021DAC24 + ldr r0, [r4, #0x10] + mov r1, #0 + mov r2, #1 + bl MOD63_021DAD18 + mov r1, #0 + str r1, [sp] + ldr r0, [r4, #0x38] + mov r2, #7 + add r3, r1, #0 + bl MOD63_021D9EA8 + ldr r0, [r4, #0x10] + mov r1, #2 + mov r2, #1 + bl MOD63_021DAC24 + mov r0, #4 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9C70: + add r0, r4, #0 + bl MOD63_021D9F20 + bl FUN_0200E308 + cmp r0, #0 + beq _021D9D46 + ldr r0, _021D9DE8 ; =0x00000721 + cmp r5, r0 + blt _021D9D46 + ldr r0, [r4, #0x10] + bl MOD63_021DACC0 + cmp r0, #0 + beq _021D9D46 + ldr r0, _021D9DEC ; =0x00000785 + cmp r5, r0 + blt _021D9D46 + mov r0, #4 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9CB4: + bl FUN_0200E308 + cmp r0, #0 + beq _021D9D46 + ldr r0, [r4, #0x10] + mov r1, #1 + mov r2, #0 + bl MOD63_021DAD18 + mov r1, #0 + str r1, [sp] + ldr r0, [r4, #0x30] + mov r2, #7 + add r3, r1, #0 + bl MOD63_021D9EA8 + ldr r0, [r4, #0x10] + mov r1, #2 + mov r2, #0 + bl MOD63_021DAC24 + mov r0, #4 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9CFC: + add r0, r4, #0 + bl MOD63_021D9F20 + bl FUN_0200E308 + cmp r0, #0 + beq _021D9D46 + ldr r0, [r4, #0x18] + mov r1, #1 + add r2, r5, #0 + bl MOD63_021DB5CC + cmp r0, #0 + beq _021D9D46 + mov r0, #4 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9D38: + bl FUN_0200E308 + cmp r0, #0 + beq _021D9D46 + ldr r0, _021D9DF0 ; =0x000007F8 + cmp r5, r0 + bgt _021D9D48 +_021D9D46: + b _021D9EA0 +_021D9D48: + mov r1, #1 + ldr r0, [r4, #0x10] + add r2, r1, #0 + bl MOD63_021DAD18 + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, [r4, #0x10] + mov r1, #0 + mov r2, #1 + bl MOD63_021DAC24 + ldr r0, [r4, #0x10] + bl MOD63_021DAC6C + ldr r0, [r4, #0x10] + mov r1, #4 + bl MOD63_021DAC80 + mov r0, #4 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + mov r0, #0 + str r0, [r4, #8] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9D94: + add r0, r4, #0 + bl MOD63_021D9F00 + bl FUN_0200E308 + cmp r0, #0 + beq _021D9EA0 + ldr r0, _021D9DF4 ; =0x00000861 + cmp r5, r0 + ble _021D9EA0 + mov r0, #4 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + mov r0, #0 + str r0, [r4, #8] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 + .align 2, 0 +_021D9DCC: .word 0x000002E9 +_021D9DD0: .word 0x000003C5 +_021D9DD4: .word 0x00007FFF +_021D9DD8: .word 0x00000631 +_021D9DDC: .word 0x0000064A +_021D9DE0: .word 0x000006B3 +_021D9DE4: .word 0x04000050 +_021D9DE8: .word 0x00000721 +_021D9DEC: .word 0x00000785 +_021D9DF0: .word 0x000007F8 +_021D9DF4: .word 0x00000861 +_021D9DF8: + bl FUN_0200E308 + cmp r0, #0 + beq _021D9EA0 + mov r1, #0 + ldr r0, [r4, #0x10] + add r2, r1, #0 + bl MOD63_021DAD18 + ldr r0, [r4, #0x10] + mov r1, #1 + mov r2, #0 + bl MOD63_021DAD18 + mov r1, #0 + str r1, [sp] + ldr r0, [r4, #0x34] + mov r2, #7 + add r3, r1, #0 + bl MOD63_021D9EA8 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9E48: + add r0, r4, #0 + bl MOD63_021D9F20 + bl FUN_0200E308 + cmp r0, #0 + beq _021D9EA0 + ldr r0, [r4, #0x18] + mov r1, #2 + add r2, r5, #0 + bl MOD63_021DB5CC + cmp r0, #0 + beq _021D9EA0 + mov r0, #0x12 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9E84: + add r0, r4, #0 + bl MOD63_021D9F20 + bl FUN_0200E308 + cmp r0, #0 + beq _021D9EA0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021D9EA0 +_021D9E9A: + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021D9EA0: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021D99EC + + thumb_func_start MOD63_021D9EA8 +MOD63_021D9EA8: ; 0x021D9EA8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + lsl r7, r2, #5 + add r6, r1, #0 + ldr r0, [r5, #0xc] + add r1, r7, #0 + add r4, r3, #0 + bl DC_FlushRange + ldr r1, [r5, #0xc] + cmp r6, #0 + bne _021D9ED0 + lsl r0, r4, #1 + add r0, r1, r0 + add r1, sp, #8 + ldrb r1, [r1, #0x10] + add r2, r7, #0 + bl GX_LoadBGPltt + pop {r3, r4, r5, r6, r7, pc} +_021D9ED0: + lsl r0, r4, #1 + add r0, r1, r0 + add r1, sp, #8 + ldrb r1, [r1, #0x10] + add r2, r7, #0 + bl GXS_LoadBGPltt + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD63_021D9EA8 + + thumb_func_start MOD63_021D9EE0 +MOD63_021D9EE0: ; 0x021D9EE0 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #8] + add r0, r1, #1 + str r0, [r4, #8] + cmp r1, #0x18 + ble _021D9EFE + mov r2, #4 + ldr r0, [r4, #0xc] + mov r1, #1 + sub r3, r2, #5 + bl FUN_020179E0 + mov r0, #0 + str r0, [r4, #8] +_021D9EFE: + pop {r4, pc} + thumb_func_end MOD63_021D9EE0 + + thumb_func_start MOD63_021D9F00 +MOD63_021D9F00: ; 0x021D9F00 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #8] + add r0, r1, #1 + str r0, [r4, #8] + cmp r1, #3 + ble _021D9F1E + mov r2, #1 + ldr r0, [r4, #0xc] + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + mov r0, #0 + str r0, [r4, #8] +_021D9F1E: + pop {r4, pc} + thumb_func_end MOD63_021D9F00 + + thumb_func_start MOD63_021D9F20 +MOD63_021D9F20: ; 0x021D9F20 + push {r4, lr} + add r4, r0, #0 + mov r2, #1 + add r3, r2, #0 + ldr r0, [r4, #0xc] + mov r1, #3 + sub r3, #0x11 + bl FUN_020179E0 + mov r0, #0 + str r0, [r4, #8] + pop {r4, pc} + thumb_func_end MOD63_021D9F20 + + thumb_func_start MOD63_021D9F38 +MOD63_021D9F38: ; 0x021D9F38 + push {r4, r5, r6, lr} + sub sp, #0x50 + add r4, r0, #0 + add r5, r1, #0 + add r0, sp, #0x44 + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + ldr r1, _021DA078 ; =0x000004AB + cmp r5, r1 + bgt _021D9FE2 + ldr r0, [r4, #0x44] + bl FUN_0201F008 + ldr r1, _021DA07C ; =0x000005C1 + sub r0, #0x20 + cmp r0, r1 + ble _021D9F68 + ldr r0, _021DA080 ; =0x0000FFE0 + ldr r1, [r4, #0x44] + bl FUN_0201EF2C + b _021D9F70 +_021D9F68: + add r0, r1, #0 + ldr r1, [r4, #0x44] + bl FUN_0201EEF0 +_021D9F70: + mov r0, #2 + ldr r1, [sp, #0x4c] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #0x4c] + ldr r1, [r4, #0x44] + add r0, sp, #0x44 + bl FUN_0201EF70 + ldr r0, _021DA078 ; =0x000004AB + cmp r5, r0 + bne _021DA074 + ldr r5, _021DA084 ; =0x021DBAD8 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r1, _021DA088 ; =0x0029AEC1 + str r0, [r3] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r4, #0x44] + ldr r3, _021DA07C ; =0x000005C1 + str r0, [sp, #8] + add r0, r2, #0 + ldr r2, _021DA08C ; =0x021DBB80 + bl FUN_0201ECA8 + ldr r5, _021DA090 ; =0x021DBB20 + add r3, sp, #0x2c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + ldr r1, [r4, #0x44] + add r0, r2, #0 + bl FUN_0201EF70 + ldr r2, _021DA094 ; =0x021DBAC8 + add r1, sp, #0xc + ldrh r3, [r2] + add r0, sp, #0xc + strh r3, [r1] + ldrh r3, [r2, #2] + strh r3, [r1, #2] + ldrh r3, [r2, #4] + ldrh r2, [r2, #6] + strh r3, [r1, #4] + strh r2, [r1, #6] + ldr r1, [r4, #0x44] + bl FUN_0201EFB4 + add sp, #0x50 + pop {r4, r5, r6, pc} +_021D9FE2: + add r1, #0xd2 + cmp r5, r1 + bgt _021DA044 + mov r1, #1 + ldr r2, [sp, #0x44] + lsl r1, r1, #0xc + add r1, r2, r1 + str r1, [sp, #0x44] + ldr r1, [r4, #0x44] + bl FUN_0201EF70 + ldr r3, _021DA098 ; =0x0000057D + cmp r5, r3 + bne _021DA074 + ldr r6, _021DA09C ; =0x021DBB14 + add r5, sp, #0x20 + ldmia r6!, {r0, r1} + add r2, r5, #0 + stmia r5!, {r0, r1} + ldr r0, [r6] + ldr r1, _021DA088 ; =0x0029AEC1 + str r0, [r5] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r4, #0x44] + add r3, #0x44 + str r0, [sp, #8] + add r0, r2, #0 + ldr r2, _021DA08C ; =0x021DBB80 + bl FUN_0201ECA8 + ldr r0, _021DA07C ; =0x000005C1 + ldr r1, [r4, #0x44] + bl FUN_0201EEF0 + ldr r5, _021DA0A0 ; =0x021DBAF0 + add r3, sp, #0x14 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + ldr r1, [r4, #0x44] + add r0, r2, #0 + bl FUN_0201EF70 + add sp, #0x50 + pop {r4, r5, r6, pc} +_021DA044: + ldr r0, _021DA0A4 ; =0x00000618 + cmp r5, r0 + blt _021DA062 + ldr r0, [r4, #0x44] + bl FUN_0201F008 + mov r1, #1 + add r0, #0x20 + lsl r1, r1, #0xe + cmp r0, r1 + bge _021DA062 + ldr r1, [r4, #0x44] + mov r0, #0x20 + bl FUN_0201EF2C +_021DA062: + mov r0, #1 + ldr r1, [sp, #0x4c] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x4c] + ldr r1, [r4, #0x44] + add r0, sp, #0x44 + bl FUN_0201EF70 +_021DA074: + add sp, #0x50 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DA078: .word 0x000004AB +_021DA07C: .word 0x000005C1 +_021DA080: .word 0x0000FFE0 +_021DA084: .word 0x021DBAD8 +_021DA088: .word 0x0029AEC1 +_021DA08C: .word 0x021DBB80 +_021DA090: .word 0x021DBB20 +_021DA094: .word 0x021DBAC8 +_021DA098: .word 0x0000057D +_021DA09C: .word 0x021DBB14 +_021DA0A0: .word 0x021DBAF0 +_021DA0A4: .word 0x00000618 + thumb_func_end MOD63_021D9F38 + + thumb_func_start MOD63_021DA0A8 +MOD63_021DA0A8: ; 0x021DA0A8 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + mov r5, #0xa3 + lsl r5, r5, #2 + cmp r0, #0 + beq _021DA0BA + mov r0, #3 + strb r0, [r4, r5] +_021DA0BA: + ldrb r0, [r4, r5] + cmp r0, #3 + bhi _021DA116 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA0CC: ; jump table + .short _021DA0D4 - _021DA0CC - 2 ; case 0 + .short _021DA0E2 - _021DA0CC - 2 ; case 1 + .short _021DA0F4 - _021DA0CC - 2 ; case 2 + .short _021DA10C - _021DA0CC - 2 ; case 3 +_021DA0D4: + add r0, r4, #0 + bl MOD63_021DA11C + ldrb r0, [r4, r5] + add r0, r0, #1 + strb r0, [r4, r5] + b _021DA116 +_021DA0E2: + mov r0, #0xa3 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD63_021DA158 + ldrb r0, [r4, r5] + add r0, r0, #1 + strb r0, [r4, r5] + b _021DA116 +_021DA0F4: + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r1, [r4, #4] + add r0, r4, r0 + bl MOD63_021DA30C + cmp r0, #0 + beq _021DA116 + ldrb r0, [r4, r5] + add r0, r0, #1 + strb r0, [r4, r5] + b _021DA116 +_021DA10C: + add r0, r4, #0 + bl MOD63_021DA418 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA116: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DA0A8 + + thumb_func_start MOD63_021DA11C +MOD63_021DA11C: ; 0x021DA11C + push {r4, lr} + add r4, r0, #0 + bl MOD63_021D88D0 + add r0, r4, #0 + bl MOD63_021D8ADC + mov r0, #0xa6 + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, _021DA150 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + ldr r0, _021DA154 ; =0x0000028E + mov r1, #1 + strb r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021DA150: .word 0x04000050 +_021DA154: .word 0x0000028E + thumb_func_end MOD63_021DA11C + + thumb_func_start MOD63_021DA158 +MOD63_021DA158: ; 0x021DA158 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r4, r0, #0 + mov r0, #0x80 + mov r1, #0x4c + bl FUN_02006670 + mov r1, #0x35 + mov r2, #0x4c + add r5, r0, #0 + bl FUN_02006704 + str r0, [r4, #0x10] + cmp r0, #0 + beq _021DA18E + add r1, r4, #0 + add r1, #0x14 + bl FUN_020B0138 + cmp r0, #0 + bne _021DA192 + ldr r0, [r4, #0x14] + bl FUN_02016A18 + bl ErrorHandling + b _021DA192 +_021DA18E: + bl ErrorHandling +_021DA192: + add r0, r5, #0 + bl FUN_020066F4 + mov r1, #0 + str r1, [sp] + ldr r0, [r4, #0x14] + mov r2, #9 + add r3, r1, #0 + bl MOD63_021D9EA8 + mov r3, #0 + str r3, [sp] + ldr r0, [r4, #0x14] + mov r1, #1 + mov r2, #9 + bl MOD63_021D9EA8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x36 + mov r3, #1 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x3b + mov r3, #1 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x38 + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x3d + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x39 + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x3e + mov r3, #3 + bl FUN_020068C8 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x3a + bl FUN_0200687C + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x3f + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x37 + mov r3, #5 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x80 + mov r1, #0x3c + mov r3, #5 + bl FUN_020068C8 + mov r0, #0xe + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #1 + bl FUN_0201E74C + ldr r0, [r4, #0xc] + mov r1, #3 + mov r2, #1 + mov r3, #0x40 + bl FUN_020179E0 + mov r0, #1 + lsl r0, r0, #0xc + bl FX_Inv + add r5, r0, #0 + mov r0, #1 + lsl r0, r0, #0xc + bl FX_Inv + mov r1, #0 + str r5, [sp, #0x10] + str r1, [sp, #0x14] + str r1, [sp, #0x18] + str r0, [sp, #0x1c] + bl OS_WaitVBlankIntr + mov r0, #0x60 + str r0, [sp] + ldr r0, [r4, #0xc] + mov r1, #2 + add r2, sp, #0x10 + mov r3, #0x80 + bl FUN_02017BD0 + mov r0, #0x60 + str r0, [sp] + ldr r0, [r4, #0xc] + mov r1, #3 + add r2, sp, #0x10 + mov r3, #0xc0 + bl FUN_02017BD0 + mov r0, #1 + strb r0, [r4, #3] + add sp, #0x20 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DA158 + + thumb_func_start MOD63_021DA30C +MOD63_021DA30C: ; 0x021DA30C + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + add r5, r1, #0 + ldrb r1, [r4, #1] + cmp r1, #3 + bhi _021DA3EC + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA326: ; jump table + .short _021DA32E - _021DA326 - 2 ; case 0 + .short _021DA352 - _021DA326 - 2 ; case 1 + .short _021DA36A - _021DA326 - 2 ; case 2 + .short _021DA3DA - _021DA326 - 2 ; case 3 +_021DA32E: + ldr r0, _021DA3F8 ; =0x000008E3 + cmp r5, r0 + blt _021DA3EC + mov r0, #0x78 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021DA3EC +_021DA352: + bl FUN_0200E308 + cmp r0, #0 + beq _021DA3EC + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [r4, #4] + str r0, [r4, #8] + b _021DA3EC +_021DA36A: + ldr r0, _021DA3FC ; =0x0000097E + cmp r5, r0 + bne _021DA378 + add r0, r4, #0 + add r0, #0x18 + bl MOD63_021DA588 +_021DA378: + ldr r0, _021DA400 ; =0x000009D3 + cmp r5, r0 + bne _021DA386 + add r0, r4, #0 + add r0, #0x18 + bl MOD63_021DA588 +_021DA386: + ldr r0, _021DA404 ; =0x000009F1 + cmp r5, r0 + bne _021DA394 + add r0, r4, #0 + add r0, #0x18 + bl MOD63_021DA588 +_021DA394: + ldr r0, _021DA408 ; =0x00000A1E + cmp r5, r0 + bne _021DA3A2 + add r0, r4, #0 + add r0, #0x18 + bl MOD63_021DA588 +_021DA3A2: + ldr r0, _021DA40C ; =0x00000A64 + cmp r5, r0 + blt _021DA3AE + add r0, r4, #0 + bl MOD63_021DA478 +_021DA3AE: + ldr r0, _021DA410 ; =0x00000A78 + cmp r5, r0 + blt _021DA3EC + mov r0, #0x12 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + mov r0, #0 + ldr r3, _021DA414 ; =0x00007FFF + add r1, r0, #0 + add r2, r0, #0 + bl FUN_0200E1D0 + add r0, r4, #0 + bl MOD63_021DA504 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _021DA3EC +_021DA3DA: + bl MOD63_021DA504 + bl FUN_0200E308 + cmp r0, #0 + beq _021DA3EC + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021DA3EC: + add r0, r4, #0 + bl MOD63_021DA5A0 + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021DA3F8: .word 0x000008E3 +_021DA3FC: .word 0x0000097E +_021DA400: .word 0x000009D3 +_021DA404: .word 0x000009F1 +_021DA408: .word 0x00000A1E +_021DA40C: .word 0x00000A64 +_021DA410: .word 0x00000A78 +_021DA414: .word 0x00007FFF + thumb_func_end MOD63_021DA30C + + thumb_func_start MOD63_021DA418 +MOD63_021DA418: ; 0x021DA418 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021DA470 ; =0x0000028E + ldrb r0, [r4, r0] + cmp r0, #0 + beq _021DA458 + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + mov r1, #5 + bl FUN_020178A0 + ldr r0, [r4, #0xc] + bl FUN_02016A18 + ldr r0, _021DA470 ; =0x0000028E + mov r1, #0 + strb r1, [r4, r0] +_021DA458: + ldr r0, _021DA474 ; =0x0000028F + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DA46E + add r0, #0xd + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, _021DA474 ; =0x0000028F + mov r1, #0 + strb r1, [r4, r0] +_021DA46E: + pop {r4, pc} + .align 2, 0 +_021DA470: .word 0x0000028E +_021DA474: .word 0x0000028F + thumb_func_end MOD63_021DA418 + + thumb_func_start MOD63_021DA478 +MOD63_021DA478: ; 0x021DA478 + push {r4, r5, lr} + sub sp, #0x2c + add r4, r0, #0 + ldr r0, [r4, #4] + bl FX_Inv + add r5, r0, #0 + ldr r0, [r4, #4] + bl FX_Inv + mov r1, #0 + str r5, [sp, #0x1c] + str r1, [sp, #0x20] + str r1, [sp, #0x24] + str r0, [sp, #0x28] + ldr r0, [r4, #8] + bl FX_Inv + add r5, r0, #0 + ldr r0, [r4, #8] + bl FX_Inv + mov r1, #0 + str r5, [sp, #0xc] + str r1, [sp, #0x10] + str r1, [sp, #0x14] + str r0, [sp, #0x18] + bl OS_WaitVBlankIntr + mov r0, #1 + ldr r1, [r4, #4] + lsl r0, r0, #0xa + add r1, r1, r0 + mov r0, #3 + lsl r0, r0, #0xc + cmp r1, r0 + bgt _021DA4FE + str r1, [r4, #4] + add r0, sp, #0x1c + str r0, [sp] + mov r0, #0x80 + str r0, [sp, #4] + mov r0, #0x5a + str r0, [sp, #8] + ldr r0, [r4, #0xc] + mov r1, #2 + mov r2, #4 + mov r3, #1 + bl FUN_02017B60 + mov r0, #1 + ldr r1, [r4, #8] + lsl r0, r0, #0xa + add r0, r1, r0 + str r0, [r4, #8] + add r0, sp, #0xc + str r0, [sp] + mov r0, #0xc0 + str r0, [sp, #4] + mov r0, #0x5a + str r0, [sp, #8] + ldr r0, [r4, #0xc] + mov r1, #3 + mov r2, #4 + mov r3, #1 + bl FUN_02017B60 +_021DA4FE: + add sp, #0x2c + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DA478 + + thumb_func_start MOD63_021DA504 +MOD63_021DA504: ; 0x021DA504 + push {r4, r5, lr} + sub sp, #0x2c + add r4, r0, #0 + ldr r0, [r4, #4] + bl FX_Inv + add r5, r0, #0 + ldr r0, [r4, #4] + bl FX_Inv + mov r1, #0 + str r5, [sp, #0x1c] + str r1, [sp, #0x20] + str r1, [sp, #0x24] + str r0, [sp, #0x28] + ldr r0, [r4, #8] + bl FX_Inv + add r5, r0, #0 + ldr r0, [r4, #8] + bl FX_Inv + mov r1, #0 + str r5, [sp, #0xc] + str r1, [sp, #0x10] + str r1, [sp, #0x14] + str r0, [sp, #0x18] + bl OS_WaitVBlankIntr + mov r0, #2 + ldr r1, [r4, #4] + lsl r0, r0, #0xa + add r0, r1, r0 + str r0, [r4, #4] + add r0, sp, #0x1c + str r0, [sp] + mov r0, #0x80 + str r0, [sp, #4] + mov r0, #0x5a + str r0, [sp, #8] + ldr r0, [r4, #0xc] + mov r1, #2 + mov r2, #4 + mov r3, #1 + bl FUN_02017B60 + mov r0, #2 + ldr r1, [r4, #8] + lsl r0, r0, #0xa + add r0, r1, r0 + str r0, [r4, #8] + add r0, sp, #0xc + str r0, [sp] + mov r0, #0xc0 + str r0, [sp, #4] + mov r0, #0x5a + str r0, [sp, #8] + ldr r0, [r4, #0xc] + mov r1, #3 + mov r2, #4 + mov r3, #1 + bl FUN_02017B60 + add sp, #0x2c + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DA504 + + thumb_func_start MOD63_021DA588 +MOD63_021DA588: ; 0x021DA588 + mov r1, #1 + strb r1, [r0] + mov r2, #6 + strb r2, [r0, #3] + mov r2, #0 + strb r2, [r0, #1] + ldr r3, _021DA59C ; =0x0201E6E5 + add r0, r1, #0 + bx r3 + nop +_021DA59C: .word 0x0201E6E5 + thumb_func_end MOD63_021DA588 + + thumb_func_start MOD63_021DA5A0 +MOD63_021DA5A0: ; 0x021DA5A0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldrb r0, [r5, #0x18] + add r4, r5, #0 + add r4, #0x18 + cmp r0, #0 + beq _021DA630 + ldrb r3, [r4, #1] + ldr r0, _021DA634 ; =0x021DBF40 + ldrb r1, [r4, #3] + ldrb r0, [r0, r3] + cmp r1, r0 + blo _021DA614 + mov r1, #0 + str r1, [sp] + ldr r6, _021DA638 ; =0x021DBF48 + ldr r0, [r5, #0x14] + ldrb r3, [r6, r3] + mov r2, #1 + lsl r3, r3, #0x1c + lsr r3, r3, #0x18 + bl MOD63_021D9EA8 + mov r0, #0x20 + str r0, [sp] + ldrb r6, [r4, #1] + ldr r3, _021DA63C ; =0x021DBF44 + ldr r0, [r5, #0x14] + ldrb r3, [r3, r6] + mov r1, #0 + mov r2, #1 + lsl r3, r3, #0x1c + lsr r3, r3, #0x18 + bl MOD63_021D9EA8 + mov r0, #0x20 + str r0, [sp] + ldr r0, [r5, #0x14] + mov r1, #1 + ldrb r5, [r4, #1] + ldr r3, _021DA63C ; =0x021DBF44 + add r2, r1, #0 + ldrb r3, [r3, r5] + lsl r3, r3, #0x1c + lsr r3, r3, #0x18 + bl MOD63_021D9EA8 + mov r1, #0 + strb r1, [r4, #3] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + ldrb r0, [r4, #1] + cmp r0, #4 + blo _021DA618 + strb r1, [r4] + b _021DA618 +_021DA614: + add r0, r1, #1 + strb r0, [r4, #3] +_021DA618: + ldrb r0, [r4, #1] + cmp r0, #0 + bne _021DA630 + ldr r0, _021DA634 ; =0x021DBF40 + ldrb r1, [r4, #3] + ldrb r0, [r0] + cmp r1, r0 + blo _021DA630 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 +_021DA630: + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DA634: .word 0x021DBF40 +_021DA638: .word 0x021DBF48 +_021DA63C: .word 0x021DBF44 + thumb_func_end MOD63_021DA5A0 + + thumb_func_start MOD63_021DA640 +MOD63_021DA640: ; 0x021DA640 + push {r4, lr} + sub sp, #0x10 + ldr r4, _021DA66C ; =0x021DBE4C + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_0201D040 + mov r0, #5 + mov r1, #0x4c + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_021DA66C: .word 0x021DBE4C + thumb_func_end MOD63_021DA640 + + thumb_func_start MOD63_021DA670 +MOD63_021DA670: ; 0x021DA670 + push {r3, r4, r5, r6, lr} + sub sp, #0x2c + add r6, r0, #0 + mov r0, #0 + str r6, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r2, #0x4b + add r5, r1, #0 + lsl r2, r2, #2 + ldr r1, [r5, r2] + add r4, r3, #0 + str r1, [sp, #0x14] + add r1, r2, #4 + ldr r1, [r5, r1] + add r3, r6, #0 + str r1, [sp, #0x18] + add r1, r2, #0 + add r1, #8 + ldr r1, [r5, r1] + add r2, #0xc + str r1, [sp, #0x1c] + ldr r1, [r5, r2] + add r2, r6, #0 + str r1, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + ldr r0, [sp, #0x40] + add r1, r6, #0 + bl FUN_02008AA4 + ldr r0, [r5] + mov r1, #0 + str r0, [r4] + ldr r0, [sp, #0x40] + str r0, [r4, #4] + str r1, [r4, #8] + str r1, [r4, #0xc] + mov r0, #1 + str r1, [r4, #0x10] + lsl r0, r0, #0xc + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + strh r1, [r4, #0x20] + mov r0, #1 + str r0, [r4, #0x24] + str r0, [r4, #0x28] + mov r0, #0x4c + str r0, [r4, #0x2c] + add sp, #0x2c + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD63_021DA670 + + thumb_func_start MOD63_021DA6E0 +MOD63_021DA6E0: ; 0x021DA6E0 + mov r0, #0x1b + lsl r0, r0, #4 + bx lr + .align 2, 0 + thumb_func_end MOD63_021DA6E0 + + thumb_func_start MOD63_021DA6E8 +MOD63_021DA6E8: ; 0x021DA6E8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r2, #1 + lsl r2, r2, #0x1a + add r5, r0, #0 + ldr r1, [r2] + ldr r0, _021DA9FC ; =0xFFCFFFEF + and r1, r0 + mov r0, #0x10 + orr r0, r1 + str r0, [r2] + bl MOD63_021DA640 + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x80 + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x4c + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + mov r0, #0x19 + add r1, r5, #4 + mov r2, #0x4c + bl FUN_02008C9C + mov r2, #1 + str r0, [r5] + add r0, r5, #4 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + ldr r4, _021DAA00 ; =0x021DBE28 + mov r7, #0 + add r6, r5, #0 +_021DA73C: + ldrb r0, [r4] + add r1, r7, #0 + mov r2, #0x4c + bl FUN_02008DEC + mov r1, #0x4b + lsl r1, r1, #2 + str r0, [r6, r1] + add r7, r7, #1 + add r4, r4, #1 + add r6, r6, #4 + cmp r7, #4 + blt _021DA73C + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe0 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x26 + bl FUN_02008F34 + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe0 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x27 + mov r3, #0 + bl FUN_02008F34 + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe0 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x28 + mov r3, #0 + bl FUN_02008F34 + mov r1, #0x57 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #3 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe0 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x29 + mov r3, #0 + bl FUN_02008F34 + mov r1, #0x5b + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #4 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe0 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x2a + mov r3, #0 + bl FUN_02008F34 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + add r0, #0xe4 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x21 + bl FUN_02008FEC + mov r1, #5 + lsl r1, r1, #6 + str r0, [r5, r1] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + add r0, #0xe4 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x22 + mov r3, #0 + bl FUN_02008FEC + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + add r0, #0xe4 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x23 + mov r3, #0 + bl FUN_02008FEC + mov r1, #0x16 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #3 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + add r0, #0xe4 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x24 + mov r3, #0 + bl FUN_02008FEC + mov r1, #0x17 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #4 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + add r0, #0xe4 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x25 + mov r3, #0 + bl FUN_02008FEC + mov r1, #6 + lsl r1, r1, #6 + str r0, [r5, r1] + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe8 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x2b + bl FUN_020090AC + mov r1, #0x51 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe8 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x2c + mov r3, #0 + bl FUN_020090AC + mov r1, #0x55 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #2 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe8 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x2d + mov r3, #0 + bl FUN_020090AC + mov r1, #0x59 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #3 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe8 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x2e + mov r3, #0 + bl FUN_020090AC + mov r1, #0x5d + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #4 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe8 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x2f + mov r3, #0 + bl FUN_020090AC + mov r1, #0x61 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r3, #0 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xec + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x30 + bl FUN_020090AC + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #1 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xec + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x31 + mov r3, #0 + bl FUN_020090AC + mov r1, #0x56 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #2 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xec + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x32 + mov r3, #0 + bl FUN_020090AC + mov r1, #0x5a + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #3 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xec + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x33 + mov r3, #0 + bl FUN_020090AC + mov r1, #0x5e + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #4 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xec + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x34 + mov r3, #0 + bl FUN_020090AC + mov r1, #0x62 + lsl r1, r1, #2 + add r7, r1, #0 + add r6, r1, #0 + str r0, [r5, r1] + mov r4, #0 + sub r7, #0x4c + sub r6, #0x48 +_021DA9DC: + ldr r0, [r5, r7] + bl FUN_02009A50 + ldr r0, [r5, r6] + bl FUN_02009CF0 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #5 + blt _021DA9DC + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DA9FC: .word 0xFFCFFFEF +_021DAA00: .word 0x021DBE28 + thumb_func_end MOD63_021DA6E8 + + thumb_func_start MOD63_021DAA04 +MOD63_021DAA04: ; 0x021DAA04 + push {r3, r4, r5, r6, r7, lr} + mov r7, #5 + add r5, r0, #0 + mov r4, #0 + lsl r7, r7, #6 +_021DAA0E: + lsl r0, r4, #4 + add r6, r5, r0 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009C0C + ldr r0, [r6, r7] + bl FUN_02009E04 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #5 + blo _021DAA0E + mov r6, #0x4b + mov r4, #0 + lsl r6, r6, #2 +_021DAA32: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, r6] + bl FUN_02008E2C + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021DAA32 + ldr r0, [r5] + bl FUN_0201FD58 + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD63_021DAA04 + + thumb_func_start MOD63_021DAA5C +MOD63_021DAA5C: ; 0x021DAA5C + push {r4, r5, r6, r7, lr} + sub sp, #0xa4 + ldr r3, _021DABC0 ; =0x021DBE5C + add r5, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x38 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r3, _021DABC4 ; =0x021DBE74 + add r2, sp, #0x20 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r3, _021DABC8 ; =0x021DBE8C + add r2, sp, #8 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, sp, #0x80 + str r0, [sp] + mov r0, #0 + add r1, r5, #0 + mov r2, #1 + add r3, sp, #0x50 + bl MOD63_021DA670 + mov r0, #5 + lsl r0, r0, #0x10 + str r0, [sp, #0x58] + mov r0, #7 + lsl r0, r0, #0x10 + str r0, [sp, #0x5c] + add r0, sp, #0x50 + bl FUN_0201FE94 + mov r1, #0x63 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #0 + bl FUN_020200BC + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + add r0, sp, #0x80 + str r0, [sp] + mov r0, #1 + add r1, r5, #0 + add r2, r0, #0 + add r3, sp, #0x50 + bl MOD63_021DA670 + mov r0, #5 + lsl r0, r0, #0x10 + str r0, [sp, #0x58] + mov r0, #7 + lsl r0, r0, #0x10 + str r0, [sp, #0x5c] + add r0, sp, #0x50 + bl FUN_0201FE94 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #0 + bl FUN_020200BC + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + add r0, r5, #0 + mov r1, #3 + bl MOD63_021DAC80 + add r0, sp, #0x80 + str r0, [sp] + mov r0, #2 + add r1, r5, #0 + mov r2, #1 + add r3, sp, #0x50 + bl MOD63_021DA670 + mov r0, #5 + lsl r0, r0, #0x12 + str r0, [sp, #0x58] + mov r0, #7 + lsl r0, r0, #0x10 + str r0, [sp, #0x5c] + add r0, sp, #0x50 + bl FUN_0201FE94 + mov r1, #0x65 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0 + str r0, [sp, #4] + add r7, sp, #0x20 + add r6, sp, #8 + add r4, sp, #0x38 +_021DAB58: + add r0, sp, #0x80 + str r0, [sp] + mov r0, #3 + add r1, r5, #0 + mov r2, #0 + add r3, sp, #0x50 + bl MOD63_021DA670 + ldr r0, [r7] + lsl r0, r0, #0xc + str r0, [sp, #0x58] + ldr r0, [r6] + lsl r0, r0, #0xc + str r0, [sp, #0x5c] + add r0, sp, #0x50 + bl FUN_0201FE94 + ldr r1, [r4] + lsl r1, r1, #2 + add r2, r5, r1 + mov r1, #0x63 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r4] + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [sp, #4] + add r7, r7, #4 + add r0, r0, #1 + add r6, r6, #4 + add r4, r4, #4 + str r0, [sp, #4] + cmp r0, #6 + blt _021DAB58 + add sp, #0xa4 + pop {r4, r5, r6, r7, pc} + nop +_021DABC0: .word 0x021DBE5C +_021DABC4: .word 0x021DBE74 +_021DABC8: .word 0x021DBE8C + thumb_func_end MOD63_021DAA5C + + thumb_func_start MOD63_021DABCC +MOD63_021DABCC: ; 0x021DABCC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + add r2, r0, #0 + add r0, sp, #0x34 + add r6, r1, #0 + str r0, [sp] + add r1, r2, #0 + mov r0, #4 + mov r2, #0 + add r3, sp, #4 + bl MOD63_021DA670 + mov r0, #2 + str r0, [sp, #0x2c] + mov r5, #0 + add r7, sp, #4 +_021DABEC: + add r0, r6, #0 + add r1, r5, #0 + bl MOD63_021DAF80 + add r4, r0, #0 + add r0, r7, #0 + bl FUN_0201FE94 + str r0, [r4] + mov r1, #0 + bl FUN_020200BC + ldr r0, [r4] + mov r1, #0 + bl FUN_020200A0 + add r5, r5, #1 + cmp r5, #0x10 + blt _021DABEC + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD63_021DABCC + + thumb_func_start MOD63_021DAC18 +MOD63_021DAC18: ; 0x021DAC18 + ldr r3, _021DAC20 ; =0x0201FDED + ldr r0, [r0] + bx r3 + nop +_021DAC20: .word 0x0201FDED + thumb_func_end MOD63_021DAC18 + + thumb_func_start MOD63_021DAC24 +MOD63_021DAC24: ; 0x021DAC24 + lsl r1, r1, #2 + add r1, r0, r1 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r3, _021DAC34 ; =0x020200A1 + add r1, r2, #0 + bx r3 + .align 2, 0 +_021DAC34: .word 0x020200A1 + thumb_func_end MOD63_021DAC24 + + thumb_func_start MOD63_021DAC38 +MOD63_021DAC38: ; 0x021DAC38 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r2, #0 + mov r2, #0x63 + lsl r2, r2, #2 + add r4, r0, r2 + lsl r5, r1, #2 + ldr r0, [r4, r5] + add r7, r3, #0 + bl FUN_0202011C + add r3, r0, #0 + add r2, sp, #0 + ldmia r3!, {r0, r1} + mov ip, r2 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, ip + str r0, [r2] + str r6, [sp] + str r7, [sp, #4] + ldr r0, [r4, r5] + bl FUN_02020044 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD63_021DAC38 + + thumb_func_start MOD63_021DAC6C +MOD63_021DAC6C: ; 0x021DAC6C + push {r3, lr} + mov r2, #0xb + mov r3, #7 + mov r1, #1 + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + bl MOD63_021DAC38 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD63_021DAC6C + + thumb_func_start MOD63_021DAC80 +MOD63_021DAC80: ; 0x021DAC80 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + bl FUN_02020130 + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_02020130 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DAC80 + + thumb_func_start MOD63_021DACA0 +MOD63_021DACA0: ; 0x021DACA0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + bl FUN_020200BC + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_020200BC + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DACA0 + + thumb_func_start MOD63_021DACC0 +MOD63_021DACC0: ; 0x021DACC0 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202011C + add r5, r0, #0 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + mov r0, #0xe + ldr r1, [sp] + lsl r0, r0, #0xc + sub r1, r1, r0 + mov r0, #0xb + lsl r0, r0, #0x10 + str r1, [sp] + cmp r1, r0 + bgt _021DAD04 + str r0, [sp] + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r2, #0 + bl FUN_02020044 + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021DAD04: + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r2, #0 + bl FUN_02020044 + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DACC0 + + thumb_func_start MOD63_021DAD18 +MOD63_021DAD18: ; 0x021DAD18 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + lsl r4, r1, #2 + mov r0, #0x63 + add r1, r5, r4 + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r6, r2, #0 + bl FUN_02020354 + mov r1, #1 + bl FUN_020B19C4 + add r7, r0, #0 + cmp r6, #0 + bne _021DAD44 + ldr r0, _021DAD64 ; =0x021DBFA0 + add r1, r7, #0 + mov r2, #0x20 + bl GX_LoadOBJPltt + pop {r3, r4, r5, r6, r7, pc} +_021DAD44: + ldr r0, _021DAD68 ; =0x021DBF64 + ldr r0, [r0, r4] + lsl r0, r0, #4 + add r1, r5, r0 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r1, r0] + bl FUN_0200955C + ldr r0, [r0, #0xc] + add r1, r7, #0 + mov r2, #0x20 + bl GX_LoadOBJPltt + pop {r3, r4, r5, r6, r7, pc} + nop +_021DAD64: .word 0x021DBFA0 +_021DAD68: .word 0x021DBF64 + thumb_func_end MOD63_021DAD18 + + thumb_func_start MOD63_021DAD6C +MOD63_021DAD6C: ; 0x021DAD6C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + ldr r3, _021DAE44 ; =0x021DBE40 + add r2, sp, #0x18 + str r0, [sp] + str r1, [sp, #4] + ldmia r3!, {r0, r1} + str r2, [sp, #8] + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r3, _021DAE48 ; =0x021DBE34 + str r0, [r2] + ldmia r3!, {r0, r1} + add r2, sp, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r1, _021DAE4C ; =0x000005C8 + str r0, [r2] + ldr r0, [sp, #4] + cmp r0, r1 + blt _021DADE6 + mov r4, #0 +_021DAD98: + ldr r0, [sp, #8] + lsl r7, r4, #2 + ldr r0, [r0, r7] + lsl r1, r0, #2 + ldr r0, [sp] + add r5, r0, r1 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0x24 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + ldr r0, _021DAE50 ; =0x021DBF4C + ldr r1, [sp, #0x24] + ldr r0, [r0, r7] + sub r0, r1, r0 + str r0, [sp, #0x24] + mov r0, #1 + ldr r1, [sp, #0x28] + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [sp, #0x28] + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r2, #0 + bl FUN_02020044 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #3 + blo _021DAD98 +_021DADE6: + ldr r1, _021DAE54 ; =0x000005E6 + ldr r0, [sp, #4] + cmp r0, r1 + blt _021DAE3E + mov r5, #0 +_021DADF0: + lsl r7, r5, #2 + add r0, sp, #0xc + ldr r0, [r0, r7] + lsl r1, r0, #2 + ldr r0, [sp] + add r4, r0, r1 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0x24 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + ldr r0, _021DAE58 ; =0x021DBF58 + ldr r1, [sp, #0x24] + ldr r0, [r0, r7] + sub r0, r1, r0 + str r0, [sp, #0x24] + mov r0, #1 + ldr r1, [sp, #0x28] + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [sp, #0x28] + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r2, #0 + bl FUN_02020044 + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #3 + blo _021DADF0 +_021DAE3E: + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DAE44: .word 0x021DBE40 +_021DAE48: .word 0x021DBE34 +_021DAE4C: .word 0x000005C8 +_021DAE50: .word 0x021DBF4C +_021DAE54: .word 0x000005E6 +_021DAE58: .word 0x021DBF58 + thumb_func_end MOD63_021DAD6C + + thumb_func_start MOD63_021DAE5C +MOD63_021DAE5C: ; 0x021DAE5C + push {r4, lr} + sub sp, #0x10 + ldr r4, _021DAE88 ; =0x021DBEAC + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_0201D040 + mov r0, #1 + mov r1, #0x4c + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_021DAE88: .word 0x021DBEAC + thumb_func_end MOD63_021DAE5C + + thumb_func_start MOD63_021DAE8C +MOD63_021DAE8C: ; 0x021DAE8C + push {r3, r4, r5, r6, lr} + sub sp, #0x2c + add r4, r1, #0 + mov r1, #0 + add r5, r0, #0 + str r1, [sp] + sub r0, r1, #1 + str r0, [sp, #4] + str r0, [sp, #8] + add r6, r2, #0 + str r1, [sp, #0xc] + mov r2, #0x4b + str r1, [sp, #0x10] + lsl r2, r2, #2 + ldr r0, [r5, r2] + add r3, r1, #0 + str r0, [sp, #0x14] + add r0, r2, #4 + ldr r0, [r5, r0] + str r0, [sp, #0x18] + add r0, r2, #0 + add r0, #8 + ldr r0, [r5, r0] + add r2, #0xc + str r0, [sp, #0x1c] + ldr r0, [r5, r2] + add r2, r1, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r0, r6, #0 + bl FUN_02008AA4 + ldr r0, [r5] + mov r1, #0 + str r0, [r4] + str r6, [r4, #4] + str r1, [r4, #8] + str r1, [r4, #0xc] + mov r0, #1 + str r1, [r4, #0x10] + lsl r0, r0, #0xc + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + strh r1, [r4, #0x20] + mov r0, #1 + str r0, [r4, #0x24] + str r0, [r4, #0x28] + mov r0, #0x4c + str r0, [r4, #0x2c] + add sp, #0x2c + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD63_021DAE8C + + thumb_func_start MOD63_021DAEF8 +MOD63_021DAEF8: ; 0x021DAEF8 + push {r4, lr} + mov r1, #0x7d + mov r0, #0x4c + lsl r1, r1, #2 + bl FUN_02016998 + mov r2, #0x7d + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + add r0, r4, #0 + bl MOD63_021DAFEC + add r0, r4, #0 + bl MOD63_021DB150 + add r0, r4, #0 + pop {r4, pc} + thumb_func_end MOD63_021DAEF8 + + thumb_func_start MOD63_021DAF20 +MOD63_021DAF20: ; 0x021DAF20 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x4c + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + mov r0, #0xc + add r6, r5, #0 + mul r6, r0 + mov r0, #0x4c + add r1, r6, #0 + bl FUN_02016998 + mov r1, #0 + add r2, r6, #0 + str r0, [r4, #4] + bl Call_FillMemWithValue + str r5, [r4] + add r0, r4, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD63_021DAF20 + + thumb_func_start MOD63_021DAF4C +MOD63_021DAF4C: ; 0x021DAF4C + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5] + mov r6, #0 + cmp r0, #0 + ble _021DAF72 + add r4, r6, #0 +_021DAF5A: + ldr r0, [r5, #4] + add r0, r0, r4 + ldr r0, [r0, #8] + cmp r0, #0 + beq _021DAF68 + bl FUN_0200CAB4 +_021DAF68: + ldr r0, [r5] + add r6, r6, #1 + add r4, #0xc + cmp r6, r0 + blt _021DAF5A +_021DAF72: + ldr r0, [r5, #4] + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + thumb_func_end MOD63_021DAF4C + + thumb_func_start MOD63_021DAF80 +MOD63_021DAF80: ; 0x021DAF80 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + cmp r4, r0 + blt _021DAF90 + bl ErrorHandling +_021DAF90: + mov r0, #0xc + ldr r1, [r5, #4] + mul r0, r4 + add r0, r1, r0 + add r0, r0, #4 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DAF80 + + thumb_func_start MOD63_021DAF9C +MOD63_021DAF9C: ; 0x021DAF9C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl MOD63_021DB108 + mov r6, #0x73 + mov r4, #0 + lsl r6, r6, #2 +_021DAFAA: + lsl r0, r4, #4 + add r0, r5, r0 + ldr r0, [r0, r6] + cmp r0, #0 + beq _021DAFB8 + bl FUN_0200CAB4 +_021DAFB8: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #3 + blo _021DAFAA + mov r6, #0x55 + mov r4, #0 + mov r7, #0xc + lsl r6, r6, #2 +_021DAFCA: + add r0, r4, #0 + mul r0, r7 + add r0, r5, r0 + ldr r0, [r0, r6] + cmp r0, #0 + beq _021DAFDA + bl FUN_0200CAB4 +_021DAFDA: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0xa + blo _021DAFCA + add r0, r5, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD63_021DAF9C + + thumb_func_start MOD63_021DAFEC +MOD63_021DAFEC: ; 0x021DAFEC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + add r7, r0, #0 + add r3, r1, #0 + ldr r0, _021DB0FC ; =0xFFCFFFEF + mov r1, #0x10 + and r3, r0 + orr r3, r1 + str r3, [r2] + ldr r3, _021DB100 ; =0x04001000 + ldr r2, [r3] + and r0, r2 + orr r0, r1 + str r0, [r3] + bl MOD63_021DAE5C + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x80 + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x4c + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + mov r0, #0xa + add r1, r7, #4 + mov r2, #0x4c + bl FUN_02008C9C + ldr r4, _021DB104 ; =0x021DBEBC + str r0, [r7] + mov r6, #0 + add r5, r7, #0 +_021DB040: + ldrb r0, [r4] + add r1, r6, #0 + mov r2, #0x4c + bl FUN_02008DEC + mov r1, #0x4b + lsl r1, r1, #2 + str r0, [r5, r1] + add r6, r6, #1 + add r4, r4, #1 + add r5, r5, #4 + cmp r6, #4 + blt _021DB040 + mov r3, #0 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe0 + ldr r0, [r7, r0] + mov r1, #0x80 + mov r2, #4 + bl FUN_02008F34 + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [r7, r1] + mov r3, #0 + str r3, [sp] + mov r2, #3 + str r2, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x4c + str r0, [sp, #0xc] + add r0, #0xe4 + ldr r0, [r7, r0] + mov r1, #0x80 + bl FUN_02008FEC + mov r1, #5 + lsl r1, r1, #6 + str r0, [r7, r1] + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xe8 + ldr r0, [r7, r0] + mov r1, #0x80 + mov r2, #5 + bl FUN_020090AC + mov r1, #0x51 + lsl r1, r1, #2 + str r0, [r7, r1] + mov r3, #0 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x4c + str r0, [sp, #8] + add r0, #0xec + ldr r0, [r7, r0] + mov r1, #0x80 + mov r2, #6 + bl FUN_020090AC + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r7, r1] + sub r1, #0xc + ldr r0, [r7, r1] + bl FUN_02009A50 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r7, r0] + bl FUN_02009CF0 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021DB0FC: .word 0xFFCFFFEF +_021DB100: .word 0x04001000 +_021DB104: .word 0x021DBEBC + thumb_func_end MOD63_021DAFEC + + thumb_func_start MOD63_021DB108 +MOD63_021DB108: ; 0x021DB108 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009C0C + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r5, r0] + bl FUN_02009E04 + mov r6, #0x4b + mov r4, #0 + lsl r6, r6, #2 +_021DB126: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, r6] + bl FUN_02008E2C + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021DB126 + ldr r0, [r5] + bl FUN_0201FD58 + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD63_021DB108 + + thumb_func_start MOD63_021DB150 +MOD63_021DB150: ; 0x021DB150 + push {r4, r5, r6, r7, lr} + sub sp, #0x54 + add r7, r0, #0 + mov r6, #0 + add r4, r6, #0 + add r5, r7, #0 +_021DB15C: + add r0, r7, #0 + add r1, sp, #0 + add r2, sp, #0x30 + bl MOD63_021DAE8C + add r0, sp, #0 + str r4, [sp, #8] + str r4, [sp, #0xc] + bl FUN_0201FE94 + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200BC + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #2 + lsl r0, r0, #0xc + add r6, r6, #1 + add r4, r4, r0 + add r5, #0xc + cmp r6, #0xa + blt _021DB15C + add sp, #0x54 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD63_021DB150 + + thumb_func_start MOD63_021DB1A0 +MOD63_021DB1A0: ; 0x021DB1A0 + ldr r3, _021DB1A8 ; =0x0201FDED + ldr r0, [r0] + bx r3 + nop +_021DB1A8: .word 0x0201FDED + thumb_func_end MOD63_021DB1A0 + + thumb_func_start MOD63_021DB1AC +MOD63_021DB1AC: ; 0x021DB1AC + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + cmp r1, #0xb4 + bne _021DB1CE + mov r2, #3 + str r2, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0x71 + lsl r0, r0, #2 + add r0, r4, r0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD63_021DB1F8 + b _021DB1E8 +_021DB1CE: + ldr r0, _021DB1F4 ; =0x0000011D + cmp r1, r0 + bne _021DB1E8 + mov r2, #3 + add r0, #0xb7 + str r2, [sp] + mov r1, #1 + str r1, [sp, #4] + add r0, r4, r0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD63_021DB1F8 +_021DB1E8: + add r0, r4, #0 + bl MOD63_021DB1A0 + add sp, #8 + pop {r4, pc} + nop +_021DB1F4: .word 0x0000011D + thumb_func_end MOD63_021DB1AC + + thumb_func_start MOD63_021DB1F8 +MOD63_021DB1F8: ; 0x021DB1F8 + push {r4, lr} + add r4, r0, #0 + strb r2, [r4] + ldr r2, _021DB228 ; =0xFFFFFFF8 + strb r3, [r4, #1] + add r2, sp + ldrb r0, [r2, #0x10] + strb r0, [r4, #2] + mov r0, #0 + strb r0, [r4, #4] + strb r0, [r4, #3] + mov r0, #0x53 + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [r4, #0xc] + ldrb r0, [r2, #0x14] + add r1, r4, #0 + mov r2, #0xa + strb r0, [r4, #5] + ldr r0, _021DB22C ; =MOD63_021DB2F8 + bl FUN_0200CA44 + str r0, [r4, #8] + pop {r4, pc} + .align 2, 0 +_021DB228: .word 0xFFFFFFF8 +_021DB22C: .word MOD63_021DB2F8 + thumb_func_end MOD63_021DB1F8 + + thumb_func_start MOD63_021DB230 +MOD63_021DB230: ; 0x021DB230 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r1, #0 + str r0, [sp] + cmp r2, #0 + bne _021DB240 + mov r7, #0x40 + b _021DB242 +_021DB240: + mov r7, #0x20 +_021DB242: + mov r5, #0 + cmp r6, #0 + bls _021DB2BE +_021DB248: + ldr r0, [sp] + mov r1, #0xa + bl MOD63_021DB2C8 + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + bl FUN_0201B9EC + lsr r1, r0, #0x1f + lsl r2, r0, #0x19 + sub r2, r2, r1 + mov r0, #0x19 + ror r2, r0 + add r0, r1, r2 + add r0, #0x40 + lsl r0, r0, #0xc + str r0, [sp, #4] + bl FUN_0201B9EC + lsr r1, r0, #0x1f + lsl r2, r0, #0x1a + sub r2, r2, r1 + mov r0, #0x1a + ror r2, r0 + add r0, r1, r2 + add r0, r7, r0 + lsl r0, r0, #0xc + str r0, [sp, #8] + ldr r0, [r4, #4] + add r1, sp, #4 + bl FUN_02020044 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020200A0 + ldr r0, _021DB2C4 ; =MOD63_021DB334 + add r1, r4, #0 + mov r2, #0x14 + bl FUN_0200CA44 + str r0, [r4, #8] + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, r6 + blo _021DB248 +_021DB2BE: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DB2C4: .word MOD63_021DB334 + thumb_func_end MOD63_021DB230 + + thumb_func_start MOD63_021DB2C8 +MOD63_021DB2C8: ; 0x021DB2C8 + push {r4, lr} + mov r4, #0 + mov r2, #0xc +_021DB2CE: + add r1, r4, #0 + mul r1, r2 + add r3, r0, r1 + ldrb r1, [r0, r1] + cmp r1, #0 + bne _021DB2E6 + mov r0, #1 + strb r0, [r3] + mov r0, #0 + strb r0, [r3, #1] + add r0, r3, #0 + pop {r4, pc} +_021DB2E6: + add r1, r4, #1 + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + cmp r4, #0xa + blo _021DB2CE + bl ErrorHandling + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD63_021DB2C8 + + thumb_func_start MOD63_021DB2F8 +MOD63_021DB2F8: ; 0x021DB2F8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #4] + add r5, r0, #0 + add r0, r1, #1 + strb r0, [r4, #4] + ldrb r0, [r4, #1] + cmp r1, r0 + blo _021DB330 + ldrb r1, [r4] + ldrb r2, [r4, #5] + ldr r0, [r4, #0xc] + bl MOD63_021DB230 + mov r0, #0 + strb r0, [r4, #4] + ldrb r0, [r4, #3] + add r0, r0, #1 + strb r0, [r4, #3] + ldrb r1, [r4, #3] + ldrb r0, [r4, #2] + cmp r1, r0 + blo _021DB330 + add r0, r5, #0 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #8] +_021DB330: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DB2F8 + + thumb_func_start MOD63_021DB334 +MOD63_021DB334: ; 0x021DB334 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + mov r0, #3 + ldr r1, [sp, #4] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r4, #4] + add r1, r2, #0 + bl FUN_02020044 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + ldrb r0, [r4, #1] + cmp r0, #0x50 + blo _021DB388 + add r0, r5, #0 + bl FUN_0200CAB4 + mov r1, #0 + str r1, [r4, #8] + strb r1, [r4] + ldr r0, [r4, #4] + bl FUN_020200BC + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_020200A0 +_021DB388: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD63_021DB334 + + thumb_func_start MOD63_021DB38C +MOD63_021DB38C: ; 0x021DB38C + ldr r3, _021DB394 ; =MOD63_021DB398 + mov r1, #2 + bx r3 + nop +_021DB394: .word MOD63_021DB398 + thumb_func_end MOD63_021DB38C + + thumb_func_start MOD63_021DB398 +MOD63_021DB398: ; 0x021DB398 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r0, #0 + ldr r0, [r6, #4] + add r7, r1, #0 + str r0, [sp] + ldr r5, _021DB418 ; =0x00000000 + beq _021DB414 +_021DB3A8: + ldr r0, [sp] + ldr r1, [r6] + bl MOD63_021DB2C8 + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + bl FUN_0201B9EC + mov r1, #0xe0 + bl _s32_div_f + add r1, #0xa + lsl r0, r1, #0xc + str r0, [sp, #4] + bl FUN_0201B9EC + mov r1, #0x38 + bl _s32_div_f + ldr r0, _021DB41C ; =0x0000013A + add r0, r1, r0 + lsl r0, r0, #0xc + str r0, [sp, #8] + ldr r0, [r4, #4] + add r1, sp, #4 + bl FUN_02020044 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020200A0 + ldr r0, _021DB420 ; =MOD63_021DB424 + add r1, r4, #0 + mov r2, #0x14 + bl FUN_0200CA44 + str r0, [r4, #8] + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, r7 + blo _021DB3A8 +_021DB414: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DB418: .word 0x00000000 +_021DB41C: .word 0x0000013A +_021DB420: .word MOD63_021DB424 + thumb_func_end MOD63_021DB398 + + thumb_func_start MOD63_021DB424 +MOD63_021DB424: ; 0x021DB424 + push {r4, lr} + add r4, r1, #0 + ldrb r1, [r4, #1] + add r1, r1, #1 + strb r1, [r4, #1] + ldrb r1, [r4, #1] + cmp r1, #8 + blo _021DB44C + bl FUN_0200CAB4 + mov r1, #0 + str r1, [r4, #8] + strb r1, [r4] + ldr r0, [r4, #4] + bl FUN_020200BC + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_020200A0 +_021DB44C: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD63_021DB424 + + thumb_func_start MOD63_021DB450 +MOD63_021DB450: ; 0x021DB450 + push {r4, lr} + ldr r3, _021DB470 ; =0x021064B8 + mov r2, #0 + ldr r3, [r3] + blx r3 + add r4, r0, #0 + bl FUN_0201327C + cmp r4, #0 + bne _021DB468 + bl ErrorHandling +_021DB468: + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_021DB470: .word 0x021064B8 + thumb_func_end MOD63_021DB450 + + thumb_func_start MOD63_021DB474 +MOD63_021DB474: ; 0x021DB474 + push {r4, lr} + ldr r3, _021DB494 ; =0x021064C0 + mov r2, #1 + ldr r3, [r3] + blx r3 + add r4, r0, #0 + bne _021DB486 + bl ErrorHandling +_021DB486: + add r0, r4, #0 + bl FUN_020132BC + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_021DB494: .word 0x021064C0 + thumb_func_end MOD63_021DB474 + + thumb_func_start MOD63_021DB498 +MOD63_021DB498: ; 0x021DB498 + mov r0, #0x20 + bx lr + thumb_func_end MOD63_021DB498 + + thumb_func_start MOD63_021DB49C +MOD63_021DB49C: ; 0x021DB49C + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + ldr r3, _021DB56C ; =0x021DBECC + add r5, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + mov r0, #0x4c + bl FUN_02006D98 + ldr r7, _021DB570 ; =0x021DBEF0 + str r0, [r5] + mov r4, #0 +_021DB4BA: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + lsl r6, r4, #2 + add r1, sp, #0x10 + ldr r1, [r1, r6] + add r0, sp, #0x1c + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + mov r2, #0 + mov r3, #2 + bl FUN_02068C00 + ldr r0, _021DB574 ; =0x000003FF + lsl r2, r4, #3 + str r0, [sp] + str r4, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + add r3, r7, r2 + ldr r0, [r5] + ldr r2, [r7, r2] + ldr r3, [r3, #4] + add r1, sp, #0x1c + add r6, r5, r6 + bl FUN_020073A0 + mov r1, #6 + mov r2, #1 + str r0, [r6, #4] + bl FUN_02007558 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #3 + blo _021DB4BA + ldr r0, [r5, #8] + mov r1, #0x23 + mov r2, #1 + bl FUN_02007558 + mov r0, #1 + str r0, [r5, #0x10] + bl FUN_02012CC8 + mov r1, #0x12 + mov r0, #0x4c + lsl r1, r1, #0xa + bl FUN_02016998 + str r0, [r5, #0x14] + mov r0, #1 + str r0, [sp] + mov r0, #0x4c + str r0, [sp, #4] + mov r3, #0x12 + ldr r0, _021DB578 ; =MOD63_021DB450 + ldr r1, _021DB57C ; =MOD63_021DB474 + ldr r2, [r5, #0x14] + lsl r3, r3, #0xa + bl FUN_02012CDC + str r0, [r5, #0x18] + bl FUN_0201343C + add r2, r0, #0 + mov r0, #1 + mov r1, #0xe1 + lsl r0, r0, #0xc + lsl r1, r1, #0xe + bl FUN_0201EC94 + mov r0, #0x3d + mov r1, #4 + mov r2, #0x4c + bl FUN_0201318C + add r1, r0, #0 + ldr r0, [r5, #0x18] + mov r2, #0xa + mov r3, #1 + bl FUN_02013194 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_021DB56C: .word 0x021DBECC +_021DB570: .word 0x021DBEF0 +_021DB574: .word 0x000003FF +_021DB578: .word MOD63_021DB450 +_021DB57C: .word MOD63_021DB474 + thumb_func_end MOD63_021DB49C + + thumb_func_start MOD63_021DB580 +MOD63_021DB580: ; 0x021DB580 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + bl FUN_02012DE4 + ldr r0, [r4, #0x14] + bl FUN_02016A18 + ldr r0, [r4] + bl FUN_020072E8 + pop {r4, pc} + thumb_func_end MOD63_021DB580 + + thumb_func_start MOD63_021DB598 +MOD63_021DB598: ; 0x021DB598 + push {r3, lr} + cmp r0, #0 + beq _021DB5A4 + ldr r0, [r0] + bl FUN_020081C4 +_021DB5A4: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD63_021DB598 + + thumb_func_start MOD63_021DB5A8 +MOD63_021DB5A8: ; 0x021DB5A8 + push {r4, lr} + add r4, r0, #0 + beq _021DB5C8 + bl FUN_020222AC + bl FUN_020B02C8 + ldr r0, [r4] + bl FUN_02006ED4 + bl MOD63_021DB934 + mov r0, #1 + mov r1, #0 + bl FUN_020222B4 +_021DB5C8: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD63_021DB5A8 + + thumb_func_start MOD63_021DB5CC +MOD63_021DB5CC: ; 0x021DB5CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + add r7, r2, #0 + ldrb r2, [r4, #0x1c] + add r5, r4, #0 + add r6, r1, #0 + add r5, #0x1c + cmp r2, #5 + bls _021DB5E2 + b _021DB6FC +_021DB5E2: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021DB5EE: ; jump table + .short _021DB5FA - _021DB5EE - 2 ; case 0 + .short _021DB63C - _021DB5EE - 2 ; case 1 + .short _021DB658 - _021DB5EE - 2 ; case 2 + .short _021DB690 - _021DB5EE - 2 ; case 3 + .short _021DB6BE - _021DB5EE - 2 ; case 4 + .short _021DB6E4 - _021DB5EE - 2 ; case 5 +_021DB5FA: + ldr r0, _021DB704 ; =0x0400004A + mov r1, #0x3f + ldrh r2, [r0] + add r7, r4, #4 + bic r2, r1 + mov r1, #0x11 + orr r1, r2 + mov r2, #0x20 + orr r1, r2 + strh r1, [r0] + lsl r0, r6, #2 + str r0, [sp] + ldr r0, [r7, r0] + mov r1, #0xc + lsl r2, r2, #5 + bl FUN_02007558 + ldr r0, [sp] + mov r2, #1 + ldr r0, [r7, r0] + mov r1, #0xd + lsl r2, r2, #0xa + bl FUN_02007558 + ldr r0, [sp] + mov r1, #6 + ldr r0, [r7, r0] + mov r2, #0 + bl FUN_02007558 + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] +_021DB63C: + ldr r2, _021DB708 ; =0x021DBED8 + lsl r3, r6, #3 + ldr r2, [r2, r3] + add r0, r4, #0 + add r1, r6, #0 + blx r2 + cmp r0, #0 + beq _021DB6FC + mov r0, #0 + strb r0, [r4, #0x1d] + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + b _021DB6FC +_021DB658: + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_02013440 + lsl r0, r6, #2 + str r0, [sp, #4] + ldr r1, _021DB70C ; =0x021DBF08 + lsl r6, r6, #3 + ldr r3, [sp, #4] + add r7, r4, #4 + ldr r0, [r4, #0x18] + ldr r1, [r1, r6] + ldr r2, _021DB710 ; =MOD63_021DB940 + ldr r3, [r7, r3] + bl FUN_020133AC + ldr r1, _021DB714 ; =0x021DBF0C + ldr r3, [sp, #4] + ldr r0, [r4, #0x18] + ldr r1, [r1, r6] + ldr r2, _021DB710 ; =MOD63_021DB940 + ldr r3, [r7, r3] + bl FUN_020133AC + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + b _021DB6FC +_021DB690: + ldr r0, [r4, #0x18] + bl FUN_020133C8 + cmp r0, #0 + bne _021DB6FC + ldr r0, _021DB718 ; =0x021DBEC0 + lsl r1, r6, #2 + ldr r0, [r0, r1] + cmp r7, r0 + blt _021DB6FC + ldr r1, _021DB704 ; =0x0400004A + mov r0, #0x3f + ldrh r2, [r1] + bic r2, r0 + mov r0, #0x10 + orr r2, r0 + mov r0, #0x20 + orr r0, r2 + strh r0, [r1] + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + b _021DB6FC +_021DB6BE: + ldr r2, _021DB71C ; =0x021DBEDC + lsl r3, r6, #3 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _021DB6FC + lsl r0, r6, #2 + add r0, r4, r0 + ldr r0, [r0, #4] + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + mov r0, #0 + strb r0, [r4, #0x1d] + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + b _021DB6FC +_021DB6E4: + ldrb r0, [r4, #0x1d] + add r0, r0, #1 + strb r0, [r4, #0x1d] + ldrb r0, [r4, #0x1d] + cmp r0, #0x14 + blo _021DB6FC + mov r0, #0 + strb r0, [r4, #0x1d] + strb r0, [r5] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DB6FC: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DB704: .word 0x0400004A +_021DB708: .word 0x021DBED8 +_021DB70C: .word 0x021DBF08 +_021DB710: .word MOD63_021DB940 +_021DB714: .word 0x021DBF0C +_021DB718: .word 0x021DBEC0 +_021DB71C: .word 0x021DBEDC + thumb_func_end MOD63_021DB5CC + + thumb_func_start MOD63_021DB720 +MOD63_021DB720: ; 0x021DB720 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r0, r4, #0 + mov r2, #6 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x11 + bl FUN_020079E0 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8c + bl FUN_020079E0 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8d + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB780 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB780: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DB720 + + thumb_func_start MOD63_021DB784 +MOD63_021DB784: ; 0x021DB784 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r0, r4, #0 + sub r2, r1, #3 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x13 + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB7CC + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB7CC: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DB784 + + thumb_func_start MOD63_021DB7D0 +MOD63_021DB7D0: ; 0x021DB7D0 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x10 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x11 + bl FUN_020079E0 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8c + bl FUN_020079E0 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8d + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB832 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB832: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DB7D0 + + thumb_func_start MOD63_021DB838 +MOD63_021DB838: ; 0x021DB838 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r0, r4, #0 + sub r2, r1, #6 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x11 + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB880 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB880: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DB838 + + thumb_func_start MOD63_021DB884 +MOD63_021DB884: ; 0x021DB884 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r0, r4, #0 + mov r2, #8 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x11 + bl FUN_020079E0 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8c + bl FUN_020079E0 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8d + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB8E4 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB8E4: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DB884 + + thumb_func_start MOD63_021DB8E8 +MOD63_021DB8E8: ; 0x021DB8E8 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r0, r4, #0 + mov r2, #6 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x15 + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB930 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB930: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DB8E8 + + thumb_func_start MOD63_021DB934 +MOD63_021DB934: ; 0x021DB934 + push {r3, lr} + bl FUN_02013364 + bl FUN_02013388 + pop {r3, pc} + thumb_func_end MOD63_021DB934 + + thumb_func_start MOD63_021DB940 +MOD63_021DB940: ; 0x021DB940 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + bl FUN_0201341C + add r2, sp, #0 + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + add r4, r0, #0 + str r1, [r2, #8] + bl FUN_0200782C + sub r0, #0x80 + mov r1, #0xac + mul r1, r0 + str r1, [sp] + add r0, r4, #0 + mov r1, #1 + bl FUN_0200782C + sub r0, #0x60 + mov r1, #0xac + mul r1, r0 + str r1, [sp, #4] + mov r0, #0x40 + str r0, [sp, #8] + ldr r0, [r5, #0x20] + ldr r1, [sp] + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r1, r0 + str r0, [r5, #0x28] + ldr r0, [r5, #0x20] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r1, r0 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x20] + ldr r1, [sp, #8] + ldr r0, [r0] + ldr r0, [r0, #0xc] + add r0, r1, r0 + str r0, [r5, #0x30] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DB940 + + .section .rodata + ; 0x021DB9A0 + .incbin "baserom.nds", 0x2B6EC0, 0x478 + + .global MOD63_UNK_021DBE18 +MOD63_UNK_021DBE18: + .incbin "baserom.nds", 0x2B7338, 0x108 + + .section .data + ; 0x021DBF40 + .incbin "baserom.nds", 0x2B7460, 0x60 + + .section .bss + ; 0x021DBFA0 + .space 0x20 + diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index 080895e8..ddfc29ef 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -1,6 +1,5 @@ // Overlay -MOD63_UNK_021DBE18 = 0x021DBE18; FUN_0222DAEC = 0x0222DAEC; FUN_0222DD1C = 0x0222DD1C; FUN_0222DD38 = 0x0222DD38; |