diff options
-rw-r--r-- | arm9/arm9.lcf | 117 | ||||
-rw-r--r-- | arm9/asm/unk_0208AC14.s | 34 | ||||
-rw-r--r-- | arm9/global.inc | 28 | ||||
-rw-r--r-- | arm9/modules/65/asm/module_65.s | 5500 | ||||
-rw-r--r-- | arm9/modules/66/asm/module_66.s | 4216 | ||||
-rw-r--r-- | arm9/modules/67/asm/module_67.s | 4337 | ||||
-rw-r--r-- | arm9/modules/68/asm/module_68.s | 2461 | ||||
-rw-r--r-- | arm9/src/FUN_020910A4.c | 30 |
8 files changed, 16667 insertions, 56 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index c0bda60d..43d650a3 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -260,14 +260,15 @@ SECTIONS { { /* ALIGNALL(4); . = ALIGN(32); */ SDK_STATIC_BSS_START = .; - /* .bss */ + /* .sbss */ gBacklightTop = 0x02106FA0; gBacklightTop_2 = 0x02106FA0; - /* .sbss */ + /* .bss */ gLoadedOverlays = 0x021C45B0; gUnknown21C48B8 = 0x021C48B8; gUnk021C4918 = 0x021C4918; gUnk021C8C70 = 0x021C8C70; + gUnk021C8C74 = 0x021C8C74; OSi_IrqCallbackInfo = 0x021D341C; isInitialized = 0x021D347C; OSi_StackForDestructor = 0x021D3480; @@ -2578,12 +2579,23 @@ SECTIONS { SDK_OVERLAY.MODULE_64.BSS_SIZE = SDK_OVERLAY.MODULE_64.BSS_END - SDK_OVERLAY.MODULE_64.BSS_START; } >> MODULE_64 - .MODULE_65: { + .MODULE_65 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY_MODULE_65_ID = 65; SDK_OVERLAY.MODULE_65.ID = 65; SDK_OVERLAY.MODULE_65.START = .; - FILE_2B9400.o (.text) /* 0x2B5400 */ + module_65.o (.text) + module_65.o (.rodata) + module_65.o (.init) + SDK_OVERLAY.MODULE_65.SINIT_START = .; + module_65.o (.ctor) + module_65.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_65.SINIT_END = .; + . = ALIGN(32); + module_65.o (.sdata) + module_65.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_65.END = .; SDK_OVERLAY.MODULE_65.SIZE = SDK_OVERLAY.MODULE_65.END - SDK_OVERLAY.MODULE_65.START; @@ -2593,18 +2605,30 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_65.BSS_START = .; - FILE_2B9400.o (.bss) + module_65.o (.bss) + module_65.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_65.BSS_END = .; SDK_OVERLAY.MODULE_65.BSS_SIZE = SDK_OVERLAY.MODULE_65.BSS_END - SDK_OVERLAY.MODULE_65.BSS_START; } >> MODULE_65 - .MODULE_66: { + .MODULE_66 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY_MODULE_66_ID = 66; SDK_OVERLAY.MODULE_66.ID = 66; SDK_OVERLAY.MODULE_66.START = .; - FILE_2BC400.o (.text) /* 0x2B8400 */ + module_66.o (.text) + module_66.o (.rodata) + module_66.o (.init) + SDK_OVERLAY.MODULE_66.SINIT_START = .; + module_66.o (.ctor) + module_66.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_66.SINIT_END = .; + . = ALIGN(32); + module_66.o (.sdata) + module_66.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_66.END = .; SDK_OVERLAY.MODULE_66.SIZE = SDK_OVERLAY.MODULE_66.END - SDK_OVERLAY.MODULE_66.START; @@ -2614,18 +2638,30 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_66.BSS_START = .; - FILE_2BC400.o (.bss) + module_66.o (.bss) + module_66.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_66.BSS_END = .; SDK_OVERLAY.MODULE_66.BSS_SIZE = SDK_OVERLAY.MODULE_66.BSS_END - SDK_OVERLAY.MODULE_66.BSS_START; } >> MODULE_66 - .MODULE_67: { + .MODULE_67 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY_MODULE_67_ID = 67; SDK_OVERLAY.MODULE_67.ID = 67; SDK_OVERLAY.MODULE_67.START = .; - FILE_2BEC00.o (.text) /* 0x2BAC00 */ + module_67.o (.text) + module_67.o (.rodata) + module_67.o (.init) + SDK_OVERLAY.MODULE_67.SINIT_START = .; + module_67.o (.ctor) + module_67.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_67.SINIT_END = .; + . = ALIGN(32); + module_67.o (.sdata) + module_67.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_67.END = .; SDK_OVERLAY.MODULE_67.SIZE = SDK_OVERLAY.MODULE_67.END - SDK_OVERLAY.MODULE_67.START; @@ -2635,18 +2671,30 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_67.BSS_START = .; - FILE_2BEC00.o (.bss) + module_67.o (.bss) + module_67.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_67.BSS_END = .; SDK_OVERLAY.MODULE_67.BSS_SIZE = SDK_OVERLAY.MODULE_67.BSS_END - SDK_OVERLAY.MODULE_67.BSS_START; } >> MODULE_67 - .MODULE_68: { + .MODULE_68 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY_MODULE_68_ID = 68; SDK_OVERLAY.MODULE_68.ID = 68; SDK_OVERLAY.MODULE_68.START = .; - FILE_2C1200.o (.text) /* 0x2BD200 */ + module_68.o (.text) + module_68.o (.rodata) + module_68.o (.init) + SDK_OVERLAY.MODULE_68.SINIT_START = .; + module_68.o (.ctor) + module_68.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_68.SINIT_END = .; + . = ALIGN(32); + module_68.o (.sdata) + module_68.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_68.END = .; SDK_OVERLAY.MODULE_68.SIZE = SDK_OVERLAY.MODULE_68.END - SDK_OVERLAY.MODULE_68.START; @@ -2656,7 +2704,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_68.BSS_START = .; - FILE_2C1200.o (.bss) + module_68.o (.bss) + module_68.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_68.BSS_END = .; SDK_OVERLAY.MODULE_68.BSS_SIZE = SDK_OVERLAY.MODULE_68.BSS_END - SDK_OVERLAY.MODULE_68.BSS_START; @@ -3750,10 +3799,42 @@ SECTIONS { WRITEW 64; WRITEW 0; - OVERLAY_TABLE(MODULE_65, 65) - OVERLAY_TABLE(MODULE_66, 66) - OVERLAY_TABLE(MODULE_67, 67) - OVERLAY_TABLE(MODULE_68, 68) + WRITEW 65; + WRITEW ADDR(.MODULE_65); + WRITEW SDK_OVERLAY.MODULE_65.SIZE; + WRITEW SDK_OVERLAY.MODULE_65.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_65.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_65.SINIT_END; + WRITEW 65; + WRITEW 0; + + WRITEW 66; + WRITEW ADDR(.MODULE_66); + WRITEW SDK_OVERLAY.MODULE_66.SIZE; + WRITEW SDK_OVERLAY.MODULE_66.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_66.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_66.SINIT_END; + WRITEW 66; + WRITEW 0; + + WRITEW 67; + WRITEW ADDR(.MODULE_67); + WRITEW SDK_OVERLAY.MODULE_67.SIZE; + WRITEW SDK_OVERLAY.MODULE_67.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_67.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_67.SINIT_END; + WRITEW 67; + WRITEW 0; + + WRITEW 68; + WRITEW ADDR(.MODULE_68); + WRITEW SDK_OVERLAY.MODULE_68.SIZE; + WRITEW SDK_OVERLAY.MODULE_68.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_68.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_68.SINIT_END; + WRITEW 68; + WRITEW 0; + OVERLAY_TABLE(MODULE_69, 69) OVERLAY_TABLE(MODULE_70, 70) OVERLAY_TABLE(MODULE_71, 71) diff --git a/arm9/asm/unk_0208AC14.s b/arm9/asm/unk_0208AC14.s index 3c9e95d4..38ad538a 100644 --- a/arm9/asm/unk_0208AC14.s +++ b/arm9/asm/unk_0208AC14.s @@ -6894,37 +6894,3 @@ _02091030: .word 0x04000243 _02091034: .word FUN_02090BBC _02091038: .word FUN_02090BB8 _0209103C: .word 0x021C8C68 - - arm_func_start FUN_02091040 -FUN_02091040: ; 0x02091040 - ldr r3, _02091054 ; =0x021C8C70 - ldr r2, _02091058 ; =0x021C8C74 - str r0, [r3, #0x0] - str r1, [r2, #0x0] - bx lr - .balign 4 -_02091054: .word 0x021C8C70 -_02091058: .word 0x021C8C74 - - arm_func_start FUN_0209105C -FUN_0209105C: ; 0x0209105C - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020910A0 ; =0x021C8C74 - mov r2, r0 - ldr r1, [r1, #0x0] - cmp r1, #0x0 - beq _02091088 - blx r1 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr -_02091088: - mov r0, #0x0 - mvn r1, #0x0 - bl OS_FreeToHeap - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020910A0: .word 0x021C8C74 diff --git a/arm9/global.inc b/arm9/global.inc index 5d4f69d7..0d756253 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2639,6 +2639,34 @@ .extern FUN_020C1FF0
.extern FUN_02013EA8
.extern FUN_02013EC4
+.extern FUN_0200A06C
+.extern FUN_0200BC14
+.extern FUN_02014518
+.extern FUN_0200D7A0
+.extern FUN_0202008C
+.extern FUN_0200B10C
+.extern FUN_0200B430
+.extern FUN_0200B468
+.extern FUN_02029584
+.extern FUN_02029960
+.extern FUN_02085224
+.extern FUN_02085274
+.extern FUN_02085310
+.extern FUN_020345A8
+.extern FUN_020345DC
+.extern FUN_020345F0
+.extern FUN_02079C40
+.extern FUN_02014564
+.extern FUN_02014588
+.extern FUN_02020198
+.extern FUN_02079B60
+.extern FUN_020881D0
+.extern FUN_02088320
+.extern FUN_02088360
+.extern FUN_02088484
+.extern FUN_02088490
+.extern FUN_02088660
+.extern FUN_02088694
.extern FUN_02013ED8
.extern FUN_02013EE0
.extern FUN_0201EC58
diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s new file mode 100644 index 00000000..a254fc52 --- /dev/null +++ b/arm9/modules/65/asm/module_65.s @@ -0,0 +1,5500 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD65_021D74E0 +MOD65_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_0200628C + mov r2, #2 + add r5, r0, #0 + mov r0, #3 + mov r1, #0x2d + lsl r2, r2, #0x10 + bl FUN_0201681C + mov r1, #2 + add r0, r4, #0 + lsl r1, r1, #8 + mov r2, #0x2d + bl FUN_02006268 + mov r2, #2 + mov r1, #0 + lsl r2, r2, #8 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x2d + str r0, [r4] + str r5, [r4, #0x20] + ldrb r0, [r5, #3] + strb r0, [r4, #0x1b] + ldr r0, _021D7520 ; =0x0000FFFF + strh r0, [r4, #0x14] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7520: .word 0x0000FFFF + thumb_func_end MOD65_021D74E0 + + thumb_func_start MOD65_021D7524 +MOD65_021D7524: ; 0x021D7524 + push {r3, lr} + bl FUN_02006278 + bl MOD65_021D757C + cmp r0, #0 + beq _021D7536 + mov r0, #1 + pop {r3, pc} +_021D7536: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD65_021D7524 + + thumb_func_start MOD65_021D753C +MOD65_021D753C: ; 0x021D753C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + ldrb r1, [r4, #0x1a] + ldr r0, [r4, #0x20] + strb r1, [r0, #1] + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x20] + strb r1, [r0, #2] + ldrb r1, [r4, #0x1b] + ldr r0, [r4, #0x20] + strb r1, [r0, #3] + add r0, r4, #0 + add r0, #0x80 + ldrh r1, [r0] + ldr r0, [r4, #0x20] + strh r1, [r0, #4] + add r0, r4, #0 + add r0, #0x82 + ldrh r1, [r0] + ldr r0, [r4, #0x20] + strh r1, [r0, #6] + add r0, r5, #0 + bl FUN_0200627C + ldr r0, [r4] + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD65_021D753C + + thumb_func_start MOD65_021D757C +MOD65_021D757C: ; 0x021D757C + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #6 + bls _021D758A + b _021D76BE +_021D758A: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7596: ; jump table + .short _021D75A4 - _021D7596 - 2 ; case 0 + .short _021D75F4 - _021D7596 - 2 ; case 1 + .short _021D761C - _021D7596 - 2 ; case 2 + .short _021D762E - _021D7596 - 2 ; case 3 + .short _021D7664 - _021D7596 - 2 ; case 4 + .short _021D7676 - _021D7596 - 2 ; case 5 + .short _021D7684 - _021D7596 - 2 ; case 6 +_021D75A4: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D76D0 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D76D4 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + mov r0, #0 + bl FUN_0200E388 + mov r0, #1 + bl FUN_0200E388 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + b _021D76C4 +_021D75F4: + bl MOD65_021D798C + cmp r0, #0 + bne _021D7602 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D7602: + mov r0, #0 + str r0, [r4, #0xc] + mov r1, #6 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + ldr r2, [r4] + add r3, r0, #0 + str r2, [sp, #8] + add r2, r1, #0 + bl FUN_0200E1D0 + b _021D76C4 +_021D761C: + bl MOD65_021D8954 + bl FUN_0200E308 + cmp r0, #0 + bne _021D76C4 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D762E: + bl MOD65_021D8954 + ldrh r1, [r4, #0x18] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _021D76D8 ; =0x021DA07C + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + bne _021D7648 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D7648: + mov r0, #0 + str r0, [r4, #0xc] + mov r1, #6 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + ldr r1, [r4] + add r2, r0, #0 + str r1, [sp, #8] + add r1, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + b _021D76C4 +_021D7664: + bl MOD65_021D8954 + bl FUN_0200E308 + cmp r0, #0 + bne _021D76C4 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D7676: + bl MOD65_021D7A00 + cmp r0, #0 + bne _021D76C4 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D7684: + bl FUN_0201CD04 + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D76D0 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D76D4 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + b _021D76C4 +_021D76BE: + add sp, #0xc + mov r0, #1 + pop {r3, r4, pc} +_021D76C4: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_021D76D0: .word 0xFFFFE0FF +_021D76D4: .word 0x04001000 +_021D76D8: .word 0x021DA07C + thumb_func_end MOD65_021D757C + + thumb_func_start MOD65_021D76DC +MOD65_021D76DC: ; 0x021D76DC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D76EE + bl FUN_0200BC30 +_021D76EE: + bl FUN_0201C30C + ldr r0, [r4, #0x24] + bl FUN_0201AB60 + ldr r3, _021D7708 ; =0x027E0000 + ldr r1, _021D770C ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + nop +_021D7708: .word 0x027E0000 +_021D770C: .word 0x00003FF8 + thumb_func_end MOD65_021D76DC + + thumb_func_start MOD65_021D7710 +MOD65_021D7710: ; 0x021D7710 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021D7748 ; =0x021DA094 + bl FUN_02020988 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021D7744 + ldr r0, _021D7748 ; =0x021DA094 + bl FUN_02020968 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021D7740 + ldrh r0, [r4, #0x14] + cmp r0, #1 + bne _021D7740 + ldrb r1, [r4, #0x1b] + add r0, r4, #0 + mov r2, #2 + bl MOD65_021D8280 +_021D7740: + mov r0, #0 + mvn r0, r0 +_021D7744: + pop {r4, pc} + nop +_021D7748: .word 0x021DA094 + thumb_func_end MOD65_021D7710 + + thumb_func_start MOD65_021D774C +MOD65_021D774C: ; 0x021D774C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r1, r5, #0 + add r1, #0xc4 + ldr r1, [r1] + mov r4, #0 + mvn r4, r4 + cmp r1, #0 + bne _021D7762 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D7762: + bl MOD65_021D7710 + add r1, r0, #0 + ldr r0, _021D77F8 ; =0x021C48B8 + ldr r0, [r0, #0x44] + cmp r0, #0 + beq _021D7784 + ldrh r0, [r5, #0x14] + cmp r0, #0 + bne _021D7796 + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + bl FUN_02001204 + add r4, r0, #0 + b _021D7796 +_021D7784: + cmp r1, #0 + blt _021D7792 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD65_021D83A0 +_021D7792: + mov r0, #0 + pop {r3, r4, r5, pc} +_021D7796: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _021D77A2 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D77A2: + ldr r0, _021D77F8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + beq _021D77BE + ldr r0, _021D77FC ; =0x000005DC + bl FUN_020054C8 + mov r0, #0xff + strb r0, [r5, #0x1a] + mov r0, #0 + str r0, [r5, #0x10] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D77BE: + mov r0, #1 + tst r0, r1 + beq _021D77F2 + ldr r0, _021D77FC ; =0x000005DC + bl FUN_020054C8 + cmp r4, #0xff + beq _021D77DC + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _021D77DC + add r0, r0, #1 + cmp r4, r0 + bne _021D77E8 +_021D77DC: + mov r0, #0xff + strb r0, [r5, #0x1a] + mov r0, #0 + str r0, [r5, #0x10] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D77E8: + strb r4, [r5, #0x1a] + mov r0, #1 + strh r0, [r5, #0x18] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D77F2: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D77F8: .word 0x021C48B8 +_021D77FC: .word 0x000005DC + thumb_func_end MOD65_021D774C + + thumb_func_start MOD65_021D7800 +MOD65_021D7800: ; 0x021D7800 + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + bl MOD65_021D8970 + add r0, r4, #0 + bl MOD65_021D8634 + mov r0, #2 + strh r0, [r4, #0x18] + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD65_021D7800 + + thumb_func_start MOD65_021D7818 +MOD65_021D7818: ; 0x021D7818 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0xc8 + ldr r0, [r0] + bl FUN_02001204 + add r4, r0, #0 + ldr r0, _021D78A4 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + beq _021D784A + ldr r0, _021D78A8 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD65_021D86BC + add r0, r5, #0 + mov r1, #0 + bl MOD65_021D8970 + mov r0, #0 + strh r0, [r5, #0x18] + pop {r3, r4, r5, pc} +_021D784A: + mov r0, #1 + tst r0, r1 + beq _021D789E + ldr r0, _021D78A8 ; =0x000005DC + bl FUN_020054C8 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bhi _021D786E + bhs _021D788C + cmp r4, #1 + bhi _021D788C + cmp r4, #0 + beq _021D7874 + cmp r4, #1 + beq _021D787A + b _021D788C +_021D786E: + add r0, r0, #1 + cmp r4, r0 + b _021D788C +_021D7874: + mov r0, #1 + str r0, [r5, #0x10] + pop {r3, r4, r5, pc} +_021D787A: + add r0, r5, #0 + bl MOD65_021D86BC + add r0, r5, #0 + bl MOD65_021D8718 + mov r0, #3 + strh r0, [r5, #0x18] + b _021D789E +_021D788C: + add r0, r5, #0 + bl MOD65_021D86BC + add r0, r5, #0 + mov r1, #0 + bl MOD65_021D8970 + mov r0, #0 + strh r0, [r5, #0x18] +_021D789E: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D78A4: .word 0x021C48B8 +_021D78A8: .word 0x000005DC + thumb_func_end MOD65_021D7818 + + thumb_func_start MOD65_021D78AC +MOD65_021D78AC: ; 0x021D78AC + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #0x1f] + bl FUN_0201BD70 + cmp r0, #0 + beq _021D78BE + mov r0, #0 + pop {r4, pc} +_021D78BE: + add r0, r4, #0 + bl MOD65_021D87B0 + mov r0, #4 + strh r0, [r4, #0x18] + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD65_021D78AC + + thumb_func_start MOD65_021D78CC +MOD65_021D78CC: ; 0x021D78CC + push {r4, lr} + add r4, r0, #0 + add r0, #0xd4 + ldr r0, [r0] + ldr r1, [r4] + bl FUN_020021AC + cmp r0, #0 + beq _021D78E8 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _021D78FC + b _021D7916 +_021D78E8: + ldr r0, _021D791C ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + bl MOD65_021D8764 + mov r0, #5 + strh r0, [r4, #0x18] + mov r0, #0 + pop {r4, pc} +_021D78FC: + ldr r0, _021D791C ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x42 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #1 + strh r0, [r4, #0x18] + mov r0, #0 + pop {r4, pc} +_021D7916: + mov r0, #0 + pop {r4, pc} + nop +_021D791C: .word 0x000005DC + thumb_func_end MOD65_021D78CC + + thumb_func_start MOD65_021D7920 +MOD65_021D7920: ; 0x021D7920 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #0x1f] + bl FUN_0201BD70 + cmp r0, #0 + beq _021D7932 + mov r0, #0 + pop {r4, pc} +_021D7932: + ldr r0, _021D7988 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + bne _021D7940 + mov r0, #0 + pop {r4, pc} +_021D7940: + mov r0, #0x42 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #1 + bl FUN_0200D0E0 + mov r0, #0x42 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019570 + ldrb r0, [r4, #0x1a] + ldr r3, [r4, #0x20] + lsl r2, r0, #3 + add r3, #0x20 + ldrb r1, [r3, r2] + mov r0, #0x40 + orr r0, r1 + strb r0, [r3, r2] + ldr r0, [r4, #0x20] + mov r1, #1 + strb r1, [r0, #2] + add r0, r4, #0 + mov r1, #0 + bl MOD65_021D8214 + add r0, r4, #0 + bl MOD65_021D80C8 + add r0, r4, #0 + mov r1, #0 + bl MOD65_021D8970 + mov r0, #0 + strh r0, [r4, #0x18] + pop {r4, pc} + .align 2, 0 +_021D7988: .word 0x021C48B8 + thumb_func_end MOD65_021D7920 + + thumb_func_start MOD65_021D798C +MOD65_021D798C: ; 0x021D798C + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #8] + cmp r1, #5 + bhi _021D79F0 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D79A2: ; jump table + .short _021D79AE - _021D79A2 - 2 ; case 0 + .short _021D79B4 - _021D79A2 - 2 ; case 1 + .short _021D79BA - _021D79A2 - 2 ; case 2 + .short _021D79C6 - _021D79A2 - 2 ; case 3 + .short _021D79CC - _021D79A2 - 2 ; case 4 + .short _021D79D2 - _021D79A2 - 2 ; case 5 +_021D79AE: + bl MOD65_021D7A8C + b _021D79F0 +_021D79B4: + bl MOD65_021D7B24 + b _021D79F0 +_021D79BA: + bl MOD65_021D7CC8 + add r0, r4, #0 + bl MOD65_021D7C04 + b _021D79F0 +_021D79C6: + bl MOD65_021D8850 + b _021D79F0 +_021D79CC: + bl MOD65_021D7DD8 + b _021D79F0 +_021D79D2: + bl MOD65_021D80C8 + ldrb r1, [r4, #0x1b] + add r0, r4, #0 + mov r2, #4 + bl MOD65_021D8280 + ldr r0, _021D79FC ; =MOD65_021D76DC + add r1, r4, #0 + bl FUN_02015F10 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} +_021D79F0: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + pop {r4, pc} + nop +_021D79FC: .word MOD65_021D76DC + thumb_func_end MOD65_021D798C + + thumb_func_start MOD65_021D7A00 +MOD65_021D7A00: ; 0x021D7A00 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #8] + cmp r1, #5 + bhi _021D7A62 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7A16: ; jump table + .short _021D7A22 - _021D7A16 - 2 ; case 0 + .short _021D7A3A - _021D7A16 - 2 ; case 1 + .short _021D7A46 - _021D7A16 - 2 ; case 2 + .short _021D7A52 - _021D7A16 - 2 ; case 3 + .short _021D7A58 - _021D7A16 - 2 ; case 4 + .short _021D7A5E - _021D7A16 - 2 ; case 5 +_021D7A22: + add r1, r4, #0 + add r1, #0xd0 + ldr r1, [r1] + cmp r1, #0 + beq _021D7A30 + bl MOD65_021D86BC +_021D7A30: + add r0, r4, #0 + mov r1, #1 + bl MOD65_021D8214 + b _021D7A62 +_021D7A3A: + bl MOD65_021D7F44 + add r0, r4, #0 + bl MOD65_021D8928 + b _021D7A62 +_021D7A46: + bl MOD65_021D7CA8 + add r0, r4, #0 + bl MOD65_021D7D74 + b _021D7A62 +_021D7A52: + bl MOD65_021D7C00 + b _021D7A62 +_021D7A58: + bl MOD65_021D7B04 + b _021D7A62 +_021D7A5E: + mov r0, #1 + pop {r4, pc} +_021D7A62: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD65_021D7A00 + + thumb_func_start MOD65_021D7A6C +MOD65_021D7A6C: ; 0x021D7A6C + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D7A88 ; =0x021DA0B0 + add r3, sp, #0 + mov r2, #5 +_021D7A76: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7A76 + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D7A88: .word 0x021DA0B0 + thumb_func_end MOD65_021D7A6C + + thumb_func_start MOD65_021D7A8C +MOD65_021D7A8C: ; 0x021D7A8C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0xb8 + add r5, r0, #0 + bl MOD65_021D7A6C + ldr r0, [r5] + bl FUN_02016B94 + add r3, sp, #0 + ldr r4, _021D7AFC ; =0x021DA040 + str r0, [r5, #0x24] + 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_02016BBC + ldr r4, _021D7B00 ; =0x021DA140 + add r3, sp, #0x10 + mov r2, #0x15 +_021D7AB8: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7AB8 + mov r4, #0 + add r7, r4, #0 + add r6, sp, #0x10 +_021D7AC6: + lsl r1, r4, #0x18 + ldr r0, [r5, #0x24] + lsr r1, r1, #0x18 + add r2, r6, #0 + mov r3, #0 + bl FUN_02016C18 + lsl r1, r4, #0x18 + ldr r0, [r5, #0x24] + lsr r1, r1, #0x18 + bl FUN_02018744 + lsl r0, r4, #0x18 + ldr r3, [r5] + lsr r0, r0, #0x18 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + add r7, r7, #1 + add r4, r4, #1 + add r6, #0x1c + cmp r7, #6 + blt _021D7AC6 + add sp, #0xb8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D7AFC: .word 0x021DA040 +_021D7B00: .word 0x021DA140 + thumb_func_end MOD65_021D7A8C + + thumb_func_start MOD65_021D7B04 +MOD65_021D7B04: ; 0x021D7B04 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021D7B0A: + lsl r1, r4, #0x18 + ldr r0, [r5, #0x24] + lsr r1, r1, #0x18 + bl FUN_020178A0 + add r4, r4, #1 + cmp r4, #6 + blt _021D7B0A + ldr r0, [r5, #0x24] + bl FUN_02016A18 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD65_021D7B04 + + thumb_func_start MOD65_021D7B24 +MOD65_021D7B24: ; 0x021D7B24 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r1, [r5] + mov r0, #0x53 + bl FUN_02006670 + add r4, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x24] + ldr r1, [r5] + add r2, r4, #0 + mov r3, #0x53 + bl FUN_02079B60 + mov r0, #3 + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x24] + ldr r1, [r5] + add r2, r4, #0 + mov r3, #0x53 + bl FUN_02079B60 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #6 + lsl r0, r0, #6 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + ldr r0, [r5, #0x24] + ldr r1, [r5] + add r2, r4, #0 + mov r3, #0x53 + bl FUN_02079B60 + mov r1, #0 + str r1, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #6 + lsl r0, r0, #6 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + ldr r0, [r5, #0x24] + ldr r1, [r5] + add r2, r4, #0 + mov r3, #0x53 + bl FUN_02079B60 + mov r0, #0xa + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x24] + ldr r1, [r5] + add r2, r4, #0 + mov r3, #0x53 + bl FUN_02079B60 + mov r0, #0xb + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x24] + ldr r1, [r5] + add r2, r4, #0 + mov r3, #0x53 + bl FUN_02079B60 + add r0, r4, #0 + bl FUN_020066F4 + ldr r0, [r5, #0x24] + mov r1, #3 + bl FUN_0201AC68 + ldr r0, [r5, #0x24] + mov r1, #5 + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD65_021D7B24 + + thumb_func_start MOD65_021D7C00 +MOD65_021D7C00: ; 0x021D7C00 + bx lr + .align 2, 0 + thumb_func_end MOD65_021D7C00 + + thumb_func_start MOD65_021D7C04 +MOD65_021D7C04: ; 0x021D7C04 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r6] + mov r1, #1 + str r0, [sp, #4] + ldr r0, [r6, #0x24] + mov r2, #0x1f + mov r3, #0xf + bl FUN_0200CB00 + ldr r0, [r6, #0x20] + ldr r0, [r0, #0x18] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [r6] + mov r1, #1 + str r0, [sp, #4] + ldr r0, [r6, #0x24] + add r2, r1, #0 + mov r3, #0xe + bl FUN_0200CD68 + mov r1, #0x1a + ldr r2, [r6] + mov r0, #0 + lsl r1, r1, #4 + bl FUN_02002ED0 + mov r1, #6 + ldr r2, [r6] + mov r0, #0 + lsl r1, r1, #6 + bl FUN_02002EEC + mov r1, #0x1a + ldr r2, [r6] + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02002ED0 + add r5, r6, #0 + ldr r4, _021D7CA4 ; =0x021DA0D8 + mov r7, #0 + add r5, #0xe8 +_021D7C68: + ldrb r0, [r4, #2] + add r1, r5, #0 + str r0, [sp] + ldrb r0, [r4, #3] + str r0, [sp, #4] + ldrb r0, [r4, #4] + str r0, [sp, #8] + ldrb r0, [r4, #5] + str r0, [sp, #0xc] + ldrh r0, [r4, #6] + str r0, [sp, #0x10] + ldrb r2, [r4] + ldrb r3, [r4, #1] + ldr r0, [r6, #0x24] + bl FUN_02019064 + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + add r7, r7, #1 + add r4, #8 + add r5, #0x10 + cmp r7, #0xd + blt _021D7C68 + add r0, r6, #0 + bl MOD65_021D87D4 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D7CA4: .word 0x021DA0D8 + thumb_func_end MOD65_021D7C04 + + thumb_func_start MOD65_021D7CA8 +MOD65_021D7CA8: ; 0x021D7CA8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0xe8 +_021D7CB0: + add r0, r5, #0 + bl FUN_02019570 + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #0xd + blt _021D7CB0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD65_021D7CA8 + + thumb_func_start MOD65_021D7CC8 +MOD65_021D7CC8: ; 0x021D7CC8 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r1, [r5] + mov r0, #2 + bl FUN_02002C50 + mov r2, #0x67 + ldr r3, [r5] + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + bl FUN_0200A86C + str r0, [r5, #0x2c] + ldr r0, [r5] + bl FUN_02014518 + str r0, [r5, #0x28] + ldr r2, [r5] + mov r0, #2 + mov r1, #0x40 + bl FUN_0200AA90 + str r0, [r5, #0x30] + ldr r1, [r5] + mov r0, #0x40 + bl FUN_020219F4 + str r0, [r5, #0x34] + ldr r0, [r5, #0x2c] + mov r1, #6 + bl FUN_0200A914 + str r0, [r5, #0x38] + ldr r0, [r5, #0x2c] + mov r1, #0x16 + bl FUN_0200A914 + str r0, [r5, #0x3c] + ldr r0, [r5, #0x2c] + mov r1, #4 + bl FUN_0200A914 + str r0, [r5, #0x40] + ldr r0, [r5, #0x2c] + mov r1, #7 + bl FUN_0200A914 + str r0, [r5, #0x44] + ldr r0, [r5, #0x2c] + mov r1, #8 + bl FUN_0200A914 + str r0, [r5, #0x48] + ldr r0, [r5, #0x2c] + mov r1, #0 + bl FUN_0200A914 + str r0, [r5, #0x4c] + mov r4, #0 + add r6, r5, #0 +_021D7D42: + add r1, r4, #0 + ldr r0, [r5, #0x2c] + add r1, #0xb + bl FUN_0200A914 + str r0, [r6, #0x50] + cmp r4, #5 + bge _021D7D66 + add r1, r4, #0 + ldr r0, [r5, #0x2c] + add r1, #0x11 + bl FUN_0200A914 + str r0, [r6, #0x68] + add r4, r4, #1 + add r6, r6, #4 + cmp r4, #6 + blt _021D7D42 +_021D7D66: + ldr r0, [r5, #0x20] + ldr r0, [r0, #0x18] + bl FUN_02024FF4 + add r5, #0x7c + strb r0, [r5] + pop {r4, r5, r6, pc} + thumb_func_end MOD65_021D7CC8 + + thumb_func_start MOD65_021D7D74 +MOD65_021D7D74: ; 0x021D7D74 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_021D7D7C: + ldr r0, [r5, #0x50] + bl FUN_02021A20 + cmp r4, #5 + bge _021D7D94 + ldr r0, [r5, #0x68] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _021D7D7C +_021D7D94: + ldr r0, [r6, #0x4c] + bl FUN_02021A20 + ldr r0, [r6, #0x48] + bl FUN_02021A20 + ldr r0, [r6, #0x44] + bl FUN_02021A20 + ldr r0, [r6, #0x40] + bl FUN_02021A20 + ldr r0, [r6, #0x3c] + bl FUN_02021A20 + ldr r0, [r6, #0x38] + bl FUN_02021A20 + ldr r0, [r6, #0x34] + bl FUN_02021A20 + ldr r0, [r6, #0x30] + bl FUN_0200AB18 + ldr r0, [r6, #0x28] + bl FUN_02014564 + ldr r0, [r6, #0x2c] + bl FUN_0200A8B8 + mov r0, #2 + bl FUN_02002CF8 + pop {r4, r5, r6, pc} + thumb_func_end MOD65_021D7D74 + + thumb_func_start MOD65_021D7DD8 +MOD65_021D7DD8: ; 0x021D7DD8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r6, _021D7F30 ; =0x021DA1E8 + mov r7, #0 + add r4, r5, #0 +_021D7DE4: + mov r0, #0x6e + mov r1, #0x6f + lsl r0, r0, #2 + lsl r1, r1, #2 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + add r2, r6, #0 + bl FUN_0200BE38 + mov r1, #7 + lsl r1, r1, #6 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + add r7, r7, #1 + add r6, #0x28 + add r4, r4, #4 + cmp r7, #3 + blt _021D7DE4 + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200BC + mov r0, #0x71 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + ldr r6, _021D7F34 ; =0x021DA050 + mov r7, #0 + add r4, r5, #0 +_021D7E3A: + mov r0, #0x6e + mov r1, #0x6f + lsl r0, r0, #2 + lsl r1, r1, #2 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + ldr r2, _021D7F38 ; =0x021DA260 + bl FUN_0200BE38 + mov r1, #0x73 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r7, #3 + bl FUN_02020130 + mov r0, #0x73 + mov r1, #0 + mov r2, #2 + lsl r0, r0, #2 + ldrsh r1, [r6, r1] + ldrsh r2, [r6, r2] + ldr r0, [r4, r0] + bl FUN_0200C6E4 + add r7, r7, #1 + add r4, r4, #4 + add r6, r6, #4 + cmp r7, #5 + blt _021D7E3A + mov r7, #0 + ldr r6, _021D7F3C ; =0x021DA064 + add r4, r5, #0 + str r7, [sp, #0x10] +_021D7E8C: + mov r0, #0x6e + mov r1, #0x6f + lsl r0, r0, #2 + lsl r1, r1, #2 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + ldr r2, _021D7F40 ; =0x021DA288 + bl FUN_0200BE38 + mov r1, #0x1e + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, [sp, #0x10] + bl FUN_02020130 + mov r0, #0x1e + lsl r0, r0, #4 + mov r1, #2 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020200D8 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, r7, #2 + bl FUN_02020248 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200BC + mov r0, #0x1e + mov r1, #0 + mov r2, #2 + lsl r0, r0, #4 + ldrsh r1, [r6, r1] + ldrsh r2, [r6, r2] + ldr r0, [r4, r0] + bl FUN_0200C6E4 + ldr r0, [sp, #0x10] + add r7, r7, #1 + add r0, r0, #3 + add r4, r4, #4 + add r6, r6, #4 + str r0, [sp, #0x10] + cmp r7, #6 + blt _021D7E8C + mov r1, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0x7e + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r2, #0xe7 + mov r3, #0x4c + bl FUN_02088490 + mov r1, #0x7f + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #0 + ldr r0, [r0, #4] + bl FUN_0200C644 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D7F30: .word 0x021DA1E8 +_021D7F34: .word 0x021DA050 +_021D7F38: .word 0x021DA260 +_021D7F3C: .word 0x021DA064 +_021D7F40: .word 0x021DA288 + thumb_func_end MOD65_021D7DD8 + + thumb_func_start MOD65_021D7F44 +MOD65_021D7F44: ; 0x021D7F44 + push {r3, r4, r5, r6, r7, lr} + mov r1, #0x7e + add r5, r0, #0 + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl FUN_02088694 + mov r7, #0x1e + mov r6, #0 + add r4, r5, #0 + lsl r7, r7, #4 +_021D7F5E: + ldr r0, [r4, r7] + bl FUN_0200BC14 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #6 + blt _021D7F5E + mov r7, #0x73 + mov r6, #0 + add r4, r5, #0 + lsl r7, r7, #2 +_021D7F74: + ldr r0, [r4, r7] + bl FUN_0200BC14 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #5 + blt _021D7F74 + mov r6, #7 + mov r4, #0 + lsl r6, r6, #6 +_021D7F88: + ldr r0, [r5, r6] + bl FUN_0200BC14 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021D7F88 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD65_021D7F44 + + thumb_func_start MOD65_021D7F98 +MOD65_021D7F98: ; 0x021D7F98 + ldrb r2, [r0, #4] + mov r1, #0x20 + bic r2, r1 + strb r2, [r0, #4] + mov r1, #0xff + strb r1, [r0, #6] + ldrb r1, [r0, #6] + strb r1, [r0, #7] + bx lr + .align 2, 0 + thumb_func_end MOD65_021D7F98 + + thumb_func_start MOD65_021D7FAC +MOD65_021D7FAC: ; 0x021D7FAC + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + cmp r3, #0 + beq _021D7FCA + mov r0, #0x42 + lsl r0, r0, #2 + mov r1, #1 + add r0, r5, r0 + add r2, r1, #0 + mov r3, #0xe + bl FUN_0200D0BC +_021D7FCA: + mov r0, #0xd8 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + add r0, #0xe8 + mov r2, #0 + add r0, r5, r0 + mov r1, #0xff + add r3, r2, #0 + bl FUN_020196F4 + mov r0, #1 + bl FUN_02002B60 + mov r0, #0 + bl FUN_02002B7C + mov r3, #0 + str r3, [sp] + ldr r0, _021D800C ; =0x0001020F + str r4, [sp, #4] + str r0, [sp, #8] + mov r0, #0x42 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #1 + add r2, r6, #0 + str r3, [sp, #0xc] + bl FUN_0201BDE0 + strb r0, [r5, #0x1f] + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D800C: .word 0x0001020F + thumb_func_end MOD65_021D7FAC + + thumb_func_start MOD65_021D8010 +MOD65_021D8010: ; 0x021D8010 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + add r5, r1, #0 + mov r0, #0xff + strb r0, [r5, #0x1e] + ldrb r0, [r5, #0x1e] + strb r0, [r5, #0x1d] + ldrb r2, [r5, #0x1b] + cmp r2, #5 + bne _021D802E + mov r7, #0x1f + b _021D8044 +_021D802E: + mov r7, #1 + ldr r1, [sp, #4] + cmp r2, #0 + ble _021D8044 +_021D8036: + lsl r0, r7, #0x19 + lsr r7, r0, #0x18 + add r0, r1, #1 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + cmp r1, r2 + blt _021D8036 +_021D8044: + ldr r0, [sp] + mov r6, #0 + ldrb r0, [r0] + cmp r0, #0 + ble _021D80BA + ldr r0, [sp] + str r0, [sp, #8] + add r0, #0x1c + str r0, [sp, #8] +_021D8056: + ldr r0, [sp, #8] + lsl r1, r6, #3 + add r4, r0, r1 + add r0, r4, #0 + bl MOD65_021D7F98 + ldrb r0, [r4, #4] + lsl r1, r0, #0x18 + lsr r1, r1, #0x1f + beq _021D80AC + lsl r1, r0, #0x19 + lsr r1, r1, #0x1f + bne _021D80AC + mov r1, #0x1f + and r1, r0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + tst r1, r7 + beq _021D80AC + mov r1, #0x20 + orr r0, r1 + strb r0, [r4, #4] + ldrb r0, [r5, #0x1d] + cmp r0, #0xff + ldrb r0, [r4, #5] + bne _021D808E + strb r0, [r5, #0x1d] + b _021D809A +_021D808E: + ldrb r1, [r5, #0x1e] + lsl r2, r1, #3 + ldr r1, [sp] + add r1, r1, r2 + add r1, #0x23 + strb r0, [r1] +_021D809A: + ldrb r0, [r5, #0x1e] + strb r0, [r4, #6] + ldrb r0, [r4, #5] + strb r0, [r5, #0x1e] + ldr r0, [sp, #4] + add r0, r0, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] +_021D80AC: + add r0, r6, #1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + ldr r0, [sp] + ldrb r0, [r0] + cmp r6, r0 + blt _021D8056 +_021D80BA: + ldr r0, [sp, #4] + add r0, r0, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD65_021D8010 + + thumb_func_start MOD65_021D80C8 +MOD65_021D80C8: ; 0x021D80C8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #0x20] + add r1, r5, #0 + bl MOD65_021D8010 + strb r0, [r5, #0x1c] + ldrb r0, [r5, #0x1c] + ldr r1, [r5] + bl FUN_02012838 + add r1, r5, #0 + add r1, #0xcc + str r0, [r1] + ldrb r4, [r5, #0x1e] + cmp r4, #0xff + beq _021D8142 + mov r7, #0 +_021D80EE: + ldr r1, [r5, #0x20] + lsl r0, r4, #3 + add r1, #0x1c + add r6, r1, r0 + ldrb r4, [r6, #6] + ldrb r1, [r6, #2] + ldr r0, [r5, #0x28] + bl FUN_02014588 + add r2, r0, #0 + str r7, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, [r5, #0x30] + add r1, r7, #0 + add r3, r7, #0 + bl FUN_0200ABB4 + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldrb r2, [r6, #1] + ldr r0, [r5, #0x30] + mov r1, #1 + mov r3, #2 + bl FUN_0200AD38 + ldr r0, [r5, #0x30] + ldr r1, [r5, #0x34] + ldr r2, [r5, #0x3c] + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0xcc + ldrb r2, [r6, #5] + ldr r0, [r0] + ldr r1, [r5, #0x34] + bl FUN_020128A0 + cmp r4, #0xff + bne _021D80EE +_021D8142: + add r0, r5, #0 + add r0, #0xcc + ldr r0, [r0] + ldr r1, [r5, #0x38] + mov r2, #0xff + bl FUN_020128A0 + add r1, r5, #0 + ldr r0, _021D8210 ; =0x021DA2E0 + add r1, #0x84 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, [r5, #0x20] + ldrh r1, [r0, #6] + add r0, r5, #0 + add r0, #0x82 + strh r1, [r0] + ldr r0, [r5, #0x20] + ldrh r1, [r0, #4] + add r0, r5, #0 + add r0, #0x80 + strh r1, [r0] + ldr r0, [r5, #0x20] + ldrb r0, [r0, #2] + cmp r0, #0 + beq _021D81C0 + add r0, r5, #0 + add r0, #0x80 + ldrh r0, [r0] + cmp r0, #0 + bne _021D81A4 + add r0, r5, #0 + add r0, #0x82 + ldrh r1, [r0] + cmp r1, #0 + beq _021D81BA + ldrb r0, [r5, #0x1c] + sub r0, r0, #1 + cmp r1, r0 + blt _021D81BA + add r0, r5, #0 + add r0, #0x82 + ldrh r0, [r0] + sub r1, r0, #1 + add r0, r5, #0 + add r0, #0x82 + strh r1, [r0] + b _021D81BA +_021D81A4: + add r1, r0, #6 + ldrb r0, [r5, #0x1c] + cmp r1, r0 + blt _021D81BA + add r0, r5, #0 + add r0, #0x80 + ldrh r0, [r0] + sub r1, r0, #1 + add r0, r5, #0 + add r0, #0x80 + strh r1, [r0] +_021D81BA: + ldr r0, [r5, #0x20] + mov r1, #0 + strb r1, [r0, #2] +_021D81C0: + add r1, r5, #0 + add r0, r5, #0 + add r1, #0xe8 + add r0, #0x90 + str r1, [r0] + add r0, r5, #0 + add r0, #0xcc + ldr r1, [r0] + add r0, r5, #0 + add r0, #0x84 + str r1, [r0] + add r0, r5, #0 + add r0, #0xa0 + str r5, [r0] + add r0, r5, #0 + add r2, r5, #0 + ldrb r1, [r5, #0x1c] + add r0, #0x94 + add r2, #0x82 + strh r1, [r0] + mov r0, #0 + strh r0, [r5, #0x16] + add r1, r5, #0 + add r1, #0x80 + ldr r3, [r5] + add r0, r5, #0 + lsl r3, r3, #0x18 + ldrh r1, [r1] + ldrh r2, [r2] + add r0, #0x84 + lsr r3, r3, #0x18 + bl FUN_020010A8 + add r1, r5, #0 + add r1, #0xc4 + str r0, [r1] + mov r0, #1 + strh r0, [r5, #0x16] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8210: .word 0x021DA2E0 + thumb_func_end MOD65_021D80C8 + + thumb_func_start MOD65_021D8214 +MOD65_021D8214: ; 0x021D8214 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0xb0 + str r0, [sp] + mov r0, #0x60 + add r4, r1, #0 + mov r1, #0 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xe8 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + cmp r4, #0 + beq _021D823E + add r0, r5, #0 + add r0, #0xe8 + bl FUN_02019570 +_021D823E: + add r0, r5, #0 + add r0, #0xc4 + add r1, r5, #0 + add r2, r5, #0 + ldr r0, [r0] + add r1, #0x80 + add r2, #0x82 + bl FUN_02001300 + add r0, r5, #0 + add r0, #0xcc + ldr r0, [r0] + bl FUN_02012870 + add r0, r5, #0 + add r0, #0x80 + ldrh r1, [r0] + ldr r0, [r5, #0x20] + strh r1, [r0, #4] + add r0, r5, #0 + add r0, #0x82 + ldrh r1, [r0] + ldr r0, [r5, #0x20] + strh r1, [r0, #6] + add r0, r5, #0 + mov r1, #0 + add r0, #0xc4 + str r1, [r0] + add r5, #0xcc + str r1, [r5] + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD65_021D8214 + + thumb_func_start MOD65_021D8280 +MOD65_021D8280: ; 0x021D8280 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r5, r1, #0 + cmp r2, #4 + bls _021D828C + b _021D8392 +_021D828C: + add r0, r2, r2 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8298: ; jump table + .short _021D82A2 - _021D8298 - 2 ; case 0 + .short _021D82D2 - _021D8298 - 2 ; case 1 + .short _021D8302 - _021D8298 - 2 ; case 2 + .short _021D8330 - _021D8298 - 2 ; case 3 + .short _021D835E - _021D8298 - 2 ; case 4 +_021D82A2: + mov r0, #0x1e + lsl r0, r0, #4 + add r6, r4, r0 + lsl r7, r5, #2 + lsl r1, r5, #1 + ldr r0, [r6, r7] + add r1, r5, r1 + bl FUN_02020130 + ldr r0, [r6, r7] + mov r1, #0 + bl FUN_020200BC + add r1, r4, #0 + add r0, r5, #7 + add r1, #0xe8 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #1 + mov r2, #2 + mov r3, #0 + bl FUN_0201A8C8 + b _021D8392 +_021D82D2: + mov r0, #0x1e + lsl r0, r0, #4 + add r6, r4, r0 + lsl r7, r5, #2 + ldr r0, [r6, r7] + bl FUN_02020198 + ldr r0, [r6, r7] + mov r1, #1 + bl FUN_020200BC + add r1, r4, #0 + add r0, r5, #7 + add r1, #0xe8 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + mov r2, #4 + add r3, r1, #0 + bl FUN_0201A8C8 + mov r0, #1 + strh r0, [r4, #0x14] + b _021D8392 +_021D8302: + lsl r0, r5, #2 + add r1, r4, r0 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r1, r0] + lsl r1, r5, #1 + add r1, r5, r1 + add r1, r1, #1 + bl FUN_02020130 + add r1, r4, #0 + add r0, r5, #7 + add r1, #0xe8 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #1 + mov r2, #2 + mov r3, #0 + bl FUN_0201A8C8 + mov r0, #0 + strh r0, [r4, #0x14] + b _021D8392 +_021D8330: + lsl r0, r5, #2 + add r1, r4, r0 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r1, r0] + lsl r1, r5, #1 + add r1, r5, r1 + add r1, r1, #2 + bl FUN_02020130 + add r1, r4, #0 + add r0, r5, #7 + add r1, #0xe8 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + mov r2, #2 + add r3, r1, #0 + bl FUN_0201A8C8 + mov r0, #1 + strh r0, [r4, #0x14] + b _021D8392 +_021D835E: + mov r0, #0x1e + lsl r0, r0, #4 + lsl r1, r5, #1 + add r1, r5, r1 + add r6, r4, r0 + lsl r7, r5, #2 + ldr r0, [r6, r7] + add r1, r1, #1 + bl FUN_02020130 + ldr r0, [r6, r7] + mov r1, #1 + bl FUN_020200BC + add r1, r4, #0 + add r0, r5, #7 + add r1, #0xe8 + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #0 + mov r2, #2 + add r3, r1, #0 + bl FUN_0201A8C8 + mov r0, #0 + strh r0, [r4, #0x14] +_021D8392: + add r0, r5, #7 + add r4, #0xe8 + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_020191D0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD65_021D8280 + + thumb_func_start MOD65_021D83A0 +MOD65_021D83A0: ; 0x021D83A0 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, _021D8470 ; =0x000005E4 + add r5, r1, #0 + bl FUN_020054C8 + ldrh r1, [r4, #0x14] + ldr r0, _021D8474 ; =0x0000FFFF + cmp r1, r0 + beq _021D83D2 + ldrb r1, [r4, #0x1b] + cmp r5, r1 + bne _021D83CA + add r0, r4, #0 + add r1, r5, #0 + mov r2, #3 + bl MOD65_021D8280 + add sp, #0x10 + pop {r3, r4, r5, pc} +_021D83CA: + add r0, r4, #0 + mov r2, #0 + bl MOD65_021D8280 +_021D83D2: + add r0, r4, #0 + add r1, r5, #0 + mov r2, #1 + bl MOD65_021D8280 + add r0, r4, #0 + mov r1, #0 + strb r5, [r4, #0x1b] + bl MOD65_021D8214 + add r0, r4, #0 + mov r2, #0 + add r0, #0x82 + strh r2, [r0] + add r0, r4, #0 + add r0, #0x82 + ldrh r1, [r0] + add r0, r4, #0 + add r0, #0x80 + strh r1, [r0] + ldr r0, [r4, #0x20] + strh r2, [r0, #6] + ldr r1, [r4, #0x20] + ldrh r0, [r1, #6] + strh r0, [r1, #4] + add r0, r4, #0 + bl MOD65_021D80C8 + mov r1, #0xa0 + str r1, [sp] + mov r0, #0x18 + add r1, #0xa8 + str r0, [sp, #4] + add r0, r4, r1 + mov r1, #0 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + ldrb r1, [r4, #0x1b] + cmp r1, #5 + bne _021D8434 + mov r0, #0x52 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_020191D0 + add sp, #0x10 + pop {r3, r4, r5, pc} +_021D8434: + lsl r1, r1, #2 + add r1, r4, r1 + mov r0, #0 + ldr r1, [r1, #0x68] + add r2, r0, #0 + bl FUN_02002E14 + mov r2, #0xa0 + sub r3, r2, r0 + mov r0, #3 + str r0, [sp] + mov r1, #0 + ldr r0, _021D8478 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r2, #0xa8 + str r1, [sp, #0xc] + add r0, r4, r2 + ldrb r2, [r4, #0x1b] + lsl r2, r2, #2 + add r2, r4, r2 + lsr r4, r3, #0x1f + add r4, r3, r4 + ldr r2, [r2, #0x68] + asr r3, r4, #1 + bl FUN_0201BDE0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D8470: .word 0x000005E4 +_021D8474: .word 0x0000FFFF +_021D8478: .word 0x00010200 + thumb_func_end MOD65_021D83A0 + + thumb_func_start MOD65_021D847C +MOD65_021D847C: ; 0x021D847C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + ldr r6, _021D84E0 ; =0x00000001 + bne _021D84A6 + mov r4, #0 + mov r6, #0x73 + add r7, r4, #0 + lsl r6, r6, #2 +_021D848E: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, r6] + add r1, r7, #0 + bl FUN_020200A0 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #5 + blo _021D848E + pop {r3, r4, r5, r6, r7, pc} +_021D84A6: + mov r4, #0 +_021D84A8: + ldrb r0, [r7, #4] + tst r0, r6 + beq _021D84C0 + lsl r0, r4, #2 + add r1, r5, r0 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 + b _021D84D0 +_021D84C0: + lsl r0, r4, #2 + add r1, r5, r0 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020200A0 +_021D84D0: + lsl r0, r6, #0x19 + lsr r6, r0, #0x18 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #5 + blo _021D84A8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D84E0: .word 0x00000001 + thumb_func_end MOD65_021D847C + + thumb_func_start MOD65_021D84E4 +MOD65_021D84E4: ; 0x021D84E4 + ldr r3, _021D84EC ; =0x02001471 + mov r1, #0x13 + bx r3 + nop +_021D84EC: .word 0x02001471 + thumb_func_end MOD65_021D84E4 + + thumb_func_start MOD65_021D84F0 +MOD65_021D84F0: ; 0x021D84F0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + mov r1, #0x13 + add r7, r0, #0 + add r6, r2, #0 + bl FUN_02001470 + add r4, r0, #0 + cmp r6, #0 + bne _021D850C + ldr r0, _021D862C ; =0x000005DC + bl FUN_020054C8 +_021D850C: + add r1, sp, #0x10 + add r0, r7, #0 + add r1, #2 + add r2, sp, #0x10 + bl FUN_02001448 + add r2, sp, #0x10 + ldrh r2, [r2] + mov r0, #7 + lsl r0, r0, #6 + lsl r2, r2, #4 + add r2, #0x28 + lsl r2, r2, #0x10 + ldr r0, [r4, r0] + mov r1, #0x69 + asr r2, r2, #0x10 + bl FUN_0200C6E4 + add r0, sp, #0x10 + ldrh r0, [r0, #2] + cmp r0, #0 + bne _021D8546 + mov r0, #0x71 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + b _021D8552 +_021D8546: + mov r0, #0x71 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 +_021D8552: + add r0, sp, #0x10 + ldrh r1, [r0, #2] + ldrb r0, [r4, #0x1c] + sub r0, r0, #6 + cmp r1, r0 + bge _021D856C + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + b _021D8578 +_021D856C: + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 +_021D8578: + mov r0, #0x50 + str r0, [sp] + mov r1, #0 + mov r0, #0x10 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0xf8 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + cmp r5, #0xff + bne _021D85B4 + add r0, r4, #0 + mov r1, #0 + bl MOD65_021D847C + add r0, r4, #0 + add r0, #0xf8 + bl FUN_020191D0 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + ldr r0, [r0, #4] + bl FUN_0200C644 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021D85B4: + ldr r1, [r4, #0x20] + lsl r5, r5, #3 + add r1, #0x1c + add r0, r4, #0 + add r1, r1, r5 + bl MOD65_021D847C + ldr r0, [r4, #0x34] + bl FUN_02021A4C + ldr r0, [r4, #0x20] + add r0, r0, r5 + ldrb r2, [r0, #0x1f] + cmp r2, #0x63 + bls _021D85D4 + mov r2, #0x63 +_021D85D4: + mov r1, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4, #0x30] + mov r3, #2 + bl FUN_0200AD38 + ldr r0, [r4, #0x30] + ldr r1, [r4, #0x34] + ldr r2, [r4, #0x40] + bl FUN_0200B7B8 + mov r1, #0 + str r1, [sp] + ldr r0, _021D8630 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x34] + add r0, #0xf8 + mov r3, #8 + bl FUN_0201BDE0 + ldr r2, [r4, #0x20] + mov r1, #0x7e + lsl r1, r1, #2 + add r2, r2, r5 + ldr r0, [r4, r1] + add r1, r1, #4 + ldrb r2, [r2, #0x1e] + ldr r1, [r4, r1] + bl FUN_02088660 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + ldr r0, [r0, #4] + bl FUN_0200C644 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D862C: .word 0x000005DC +_021D8630: .word 0x00010200 + thumb_func_end MOD65_021D84F0 + + thumb_func_start MOD65_021D8634 +MOD65_021D8634: ; 0x021D8634 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r1, [r5] + mov r0, #3 + bl FUN_02012838 + add r1, r5, #0 + add r1, #0xd0 + str r0, [r1] + mov r4, #0 +_021D8648: + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + ldr r1, [r5, #0x2c] + add r2, r4, #1 + add r3, r4, #0 + bl FUN_02012880 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #3 + blo _021D8648 + add r1, r5, #0 + ldr r0, _021D86B8 ; =0x021DA2C0 + add r1, #0xa4 + mov r2, #0x20 + bl MI_CpuCopy8 + mov r0, #0x46 + lsl r0, r0, #2 + add r1, r5, #0 + add r0, r5, r0 + add r1, #0xb0 + str r0, [r1] + add r1, r5, #0 + add r1, #0xd0 + ldr r2, [r1] + add r1, r5, #0 + add r1, #0xa4 + str r2, [r1] + add r1, r5, #0 + add r1, #0xc0 + str r5, [r1] + add r1, r5, #0 + mov r2, #3 + add r1, #0xb4 + strh r2, [r1] + mov r1, #1 + mov r2, #0x1f + mov r3, #0xf + bl FUN_0200CCA4 + ldr r3, [r5] + add r0, r5, #0 + mov r1, #0 + lsl r3, r3, #0x18 + add r0, #0xa4 + add r2, r1, #0 + lsr r3, r3, #0x18 + bl FUN_020010A8 + add r5, #0xc8 + str r0, [r5] + pop {r3, r4, r5, pc} + nop +_021D86B8: .word 0x021DA2C0 + thumb_func_end MOD65_021D8634 + + thumb_func_start MOD65_021D86BC +MOD65_021D86BC: ; 0x021D86BC + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0x46 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + bl FUN_0200CCF8 + mov r0, #0x46 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019570 + add r0, r4, #0 + add r0, #0xc8 + add r2, sp, #0 + ldr r0, [r0] + add r1, sp, #0 + add r2, #2 + bl FUN_02001300 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_02012870 + add r0, r4, #0 + mov r1, #0 + add r0, #0xc8 + str r1, [r0] + add r4, #0xd0 + str r1, [r4] + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD65_021D86BC + + thumb_func_start MOD65_021D8704 +MOD65_021D8704: ; 0x021D8704 + push {r3, lr} + cmp r2, #0 + bne _021D8710 + ldr r0, _021D8714 ; =0x000005DC + bl FUN_020054C8 +_021D8710: + pop {r3, pc} + nop +_021D8714: .word 0x000005DC + thumb_func_end MOD65_021D8704 + + thumb_func_start MOD65_021D8718 +MOD65_021D8718: ; 0x021D8718 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0x34] + bl FUN_02021A4C + ldrb r1, [r4, #0x1a] + ldr r2, [r4, #0x20] + ldr r0, [r4, #0x28] + lsl r1, r1, #3 + add r1, r2, r1 + ldrb r1, [r1, #0x1e] + bl FUN_02014588 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + mov r3, #2 + str r3, [sp, #4] + ldr r0, [r4, #0x30] + mov r1, #0 + bl FUN_0200ABB4 + ldr r0, [r4, #0x30] + ldr r1, [r4, #0x34] + ldr r2, [r4, #0x44] + bl FUN_0200B7B8 + add r0, r4, #0 + ldr r1, [r4, #0x34] + add r4, #0x7c + ldrb r2, [r4] + mov r3, #1 + bl MOD65_021D7FAC + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD65_021D8718 + + thumb_func_start MOD65_021D8764 +MOD65_021D8764: ; 0x021D8764 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0x34] + bl FUN_02021A4C + ldrb r1, [r4, #0x1a] + ldr r2, [r4, #0x20] + ldr r0, [r4, #0x28] + lsl r1, r1, #3 + add r1, r2, r1 + ldrb r1, [r1, #0x1e] + bl FUN_02014588 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + mov r3, #2 + str r3, [sp, #4] + ldr r0, [r4, #0x30] + mov r1, #0 + bl FUN_0200ABB4 + ldr r0, [r4, #0x30] + ldr r1, [r4, #0x34] + ldr r2, [r4, #0x48] + bl FUN_0200B7B8 + add r0, r4, #0 + ldr r1, [r4, #0x34] + add r4, #0x7c + ldrb r2, [r4] + mov r3, #0 + bl MOD65_021D7FAC + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD65_021D8764 + + thumb_func_start MOD65_021D87B0 +MOD65_021D87B0: ; 0x021D87B0 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4] + ldr r1, _021D87D0 ; =0x021DA2B8 + str r0, [sp] + ldr r0, [r4, #0x24] + mov r2, #0x1f + mov r3, #0xf + bl FUN_02002198 + add r4, #0xd4 + str r0, [r4] + add sp, #4 + pop {r3, r4, pc} + nop +_021D87D0: .word 0x021DA2B8 + thumb_func_end MOD65_021D87B0 + + thumb_func_start MOD65_021D87D4 +MOD65_021D87D4: ; 0x021D87D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r1, #0 + add r5, r0, #0 + str r1, [sp] + ldr r0, _021D8844 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #0x4e + lsl r0, r0, #2 + ldr r2, [r5, #0x4c] + add r0, r5, r0 + mov r3, #4 + bl FUN_0201BDE0 + add r0, r5, #0 + str r0, [sp, #0x10] + add r0, #0xe8 + ldr r4, _021D8848 ; =0x021DA2B0 + mov r6, #0 + str r0, [sp, #0x10] +_021D8800: + ldr r1, [r5, #0x50] + mov r0, #2 + mov r2, #0 + bl FUN_02002E14 + mov r1, #0x40 + sub r3, r1, r0 + ldrb r0, [r4] + lsr r7, r3, #0x1f + add r7, r3, r7 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _021D884C ; =0x00020301 + asr r3, r7, #1 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r6, #7 + lsl r1, r0, #4 + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x50] + add r0, r0, r1 + mov r1, #2 + bl FUN_0201BDE0 + add r6, r6, #1 + add r5, r5, #4 + add r4, r4, #1 + cmp r6, #6 + blt _021D8800 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D8844: .word 0x00010200 +_021D8848: .word 0x021DA2B0 +_021D884C: .word 0x00020301 + thumb_func_end MOD65_021D87D4 + + thumb_func_start MOD65_021D8850 +MOD65_021D8850: ; 0x021D8850 + push {r4, r5, r6, r7, lr} + sub sp, #0x54 + add r4, r0, #0 + ldr r1, [r4] + mov r0, #0x20 + bl FUN_0201C24C + ldr r0, [r4] + bl FUN_0200BB14 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + bl FUN_0200BB34 + mov r7, #0x6f + lsl r7, r7, #2 + add r2, sp, #0x34 + ldr r3, _021D891C ; =0x021DA330 + str r0, [r4, r7] + ldmia r3!, {r0, r1} + add r6, r2, #0 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + ldr r5, _021D8920 ; =0x021DA300 + stmia r2!, {r0, r1} + add r3, sp, #0x20 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r6, #0 + str r0, [r3] + sub r0, r7, #4 + ldr r0, [r4, r0] + mov r3, #0x20 + bl FUN_0200BB6C + sub r1, r7, #4 + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0xe + bl FUN_0200BBF0 + ldr r0, [r4] + bl FUN_0200A064 + ldr r0, [r4] + bl FUN_0200A06C + ldr r5, _021D8924 ; =0x021DA314 + add r3, sp, #4 + 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] + sub r1, r7, #4 + str r0, [r3] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + bl FUN_0200BD20 + mov r1, #1 + mov r0, #0 + str r0, [sp] + ldr r0, [r4] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02088320 + add r1, r7, #0 + add r1, #0x3c + str r0, [r4, r1] + bl FUN_02030F40 + cmp r0, #0 + beq _021D8908 + bl FUN_02033E74 +_021D8908: + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x54 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D891C: .word 0x021DA330 +_021D8920: .word 0x021DA300 +_021D8924: .word 0x021DA314 + thumb_func_end MOD65_021D8850 + + thumb_func_start MOD65_021D8928 +MOD65_021D8928: ; 0x021D8928 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02088360 + mov r1, #0x6e + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + bl FUN_0200BCE0 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200BD04 + bl FUN_0201C29C + pop {r4, pc} + thumb_func_end MOD65_021D8928 + + thumb_func_start MOD65_021D8954 +MOD65_021D8954: ; 0x021D8954 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200BC1C + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02088484 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD65_021D8954 + + thumb_func_start MOD65_021D8970 +MOD65_021D8970: ; 0x021D8970 + push {r4, lr} + add r4, r0, #0 + cmp r1, #0 + bne _021D899E + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02020248 + mov r0, #0x71 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200BC + pop {r4, pc} +_021D899E: + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #9 + bl FUN_02020248 + mov r0, #0x71 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200BC + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200BC + pop {r4, pc} + thumb_func_end MOD65_021D8970 + + thumb_func_start MOD65_021D89C4 +MOD65_021D89C4: ; 0x021D89C4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + add r5, r1, #0 + add r1, sp, #0 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + add r4, r2, #0 + str r0, [r1, #8] + add r7, r3, #0 + ldr r0, [r4] + add r1, r7, #0 + bl FX_Div + str r0, [r5] + ldr r0, [r4, #4] + add r1, r7, #0 + bl FX_Div + str r0, [r5, #4] + ldr r0, [r4, #8] + add r1, r7, #0 + bl FX_Div + add r2, sp, #0 + str r0, [r5, #8] + ldmia r2!, {r0, r1} + stmia r6!, {r0, r1} + ldr r0, [r2] + str r0, [r6] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD65_021D89C4 + + thumb_func_start MOD65_021D8A08 +MOD65_021D8A08: ; 0x021D8A08 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_0200628C + mov r2, #1 + add r5, r0, #0 + mov r0, #3 + mov r1, #0x2e + lsl r2, r2, #0x10 + bl FUN_0201681C + mov r1, #0x6f + add r0, r4, #0 + lsl r1, r1, #2 + mov r2, #0x2e + bl FUN_02006268 + mov r2, #0x6f + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x2e + str r0, [r4] + str r5, [r4, #0x10] + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD65_021D8A08 + + thumb_func_start MOD65_021D8A40 +MOD65_021D8A40: ; 0x021D8A40 + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #2 + blt _021D8A64 + cmp r0, #5 + bgt _021D8A64 + add r0, r4, #0 + add r0, #0x40 + bl MOD65_021D9F50 + ldr r0, [r4, #0x5c] + bl FUN_02088484 +_021D8A64: + ldr r0, [r5] + cmp r0, #7 + bls _021D8A6C + b _021D8B9E +_021D8A6C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8A78: ; jump table + .short _021D8A88 - _021D8A78 - 2 ; case 0 + .short _021D8ACE - _021D8A78 - 2 ; case 1 + .short _021D8AE8 - _021D8A78 - 2 ; case 2 + .short _021D8B12 - _021D8A78 - 2 ; case 3 + .short _021D8B20 - _021D8A78 - 2 ; case 4 + .short _021D8B4A - _021D8A78 - 2 ; case 5 + .short _021D8B58 - _021D8A78 - 2 ; case 6 + .short _021D8B68 - _021D8A78 - 2 ; case 7 +_021D8A88: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D8BB0 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D8BB4 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + mov r0, #0 + bl FUN_0200E388 + mov r0, #1 + bl FUN_0200E388 + b _021D8BA4 +_021D8ACE: + add r0, r4, #0 + bl MOD65_021D8BD8 + cmp r0, #0 + bne _021D8ADE + add sp, #0xc + mov r0, #0 + pop {r4, r5, pc} +_021D8ADE: + ldr r0, _021D8BB8 ; =MOD65_021D8C88 + add r1, r4, #0 + bl FUN_02015F10 + b _021D8BA4 +_021D8AE8: + ldr r1, [r4, #4] + add r0, r1, #1 + str r0, [r4, #4] + cmp r1, #4 + bge _021D8AF8 + add sp, #0xc + mov r0, #0 + pop {r4, r5, pc} +_021D8AF8: + mov r0, #0 + str r0, [r4, #4] + mov r1, #6 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + ldr r2, [r4] + add r3, r0, #0 + str r2, [sp, #8] + add r2, r1, #0 + bl FUN_0200E1D0 + b _021D8BA4 +_021D8B12: + bl FUN_0200E308 + cmp r0, #0 + bne _021D8BA4 + add sp, #0xc + mov r0, #0 + pop {r4, r5, pc} +_021D8B20: + add r0, r4, #0 + bl MOD65_021D9074 + cmp r0, #0 + bne _021D8B30 + add sp, #0xc + mov r0, #0 + pop {r4, r5, pc} +_021D8B30: + 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 + b _021D8BA4 +_021D8B4A: + bl FUN_0200E308 + cmp r0, #0 + bne _021D8BA4 + add sp, #0xc + mov r0, #0 + pop {r4, r5, pc} +_021D8B58: + add r0, r4, #0 + bl MOD65_021D8C30 + cmp r0, #0 + bne _021D8BA4 + add sp, #0xc + mov r0, #0 + pop {r4, r5, pc} +_021D8B68: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D8BB0 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D8BB4 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + b _021D8BA4 +_021D8B9E: + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021D8BA4: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021D8BB0: .word 0xFFFFE0FF +_021D8BB4: .word 0x04001000 +_021D8BB8: .word MOD65_021D8C88 + thumb_func_end MOD65_021D8A40 + + thumb_func_start MOD65_021D8BBC +MOD65_021D8BBC: ; 0x021D8BBC + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0200627C + ldr r0, [r4] + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD65_021D8BBC + + thumb_func_start MOD65_021D8BD8 +MOD65_021D8BD8: ; 0x021D8BD8 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #0 + beq _021D8BEC + cmp r1, #1 + beq _021D8BF8 + cmp r1, #2 + beq _021D8C04 + b _021D8C24 +_021D8BEC: + bl MOD65_021D8CD8 + add r0, r4, #0 + bl MOD65_021D8D90 + b _021D8C24 +_021D8BF8: + bl MOD65_021D8EC4 + add r0, r4, #0 + bl MOD65_021D8E68 + b _021D8C24 +_021D8C04: + bl MOD65_021D8F34 + add r0, r4, #0 + add r1, r4, #0 + ldr r2, [r4] + add r0, #0x40 + add r1, #0x30 + bl MOD65_021D9E98 + add r0, r4, #0 + bl MOD65_021D8FB0 + mov r0, #0 + str r0, [r4, #4] + mov r0, #1 + pop {r4, pc} +_021D8C24: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD65_021D8BD8 + + thumb_func_start MOD65_021D8C30 +MOD65_021D8C30: ; 0x021D8C30 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #3 + bhi _021D8C7C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8C46: ; jump table + .short _021D8C4E - _021D8C46 - 2 ; case 0 + .short _021D8C62 - _021D8C46 - 2 ; case 1 + .short _021D8C6E - _021D8C46 - 2 ; case 2 + .short _021D8C74 - _021D8C46 - 2 ; case 3 +_021D8C4E: + bl MOD65_021D9054 + add r0, r4, #0 + add r0, #0x40 + bl MOD65_021D9F8C + add r0, r4, #0 + bl MOD65_021D8FA4 + b _021D8C7C +_021D8C62: + bl MOD65_021D8EB0 + add r0, r4, #0 + bl MOD65_021D8F08 + b _021D8C7C +_021D8C6E: + bl MOD65_021D8D68 + b _021D8C7C +_021D8C74: + mov r0, #0 + str r0, [r4, #4] + mov r0, #1 + pop {r4, pc} +_021D8C7C: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD65_021D8C30 + + thumb_func_start MOD65_021D8C88 +MOD65_021D8C88: ; 0x021D8C88 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x68] + bl FUN_0201AB60 + ldr r0, [r4, #0x44] + bl FUN_020081C4 + bl FUN_0200BC30 + bl FUN_0201C30C + ldr r3, _021D8CB0 ; =0x027E0000 + ldr r1, _021D8CB4 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + nop +_021D8CB0: .word 0x027E0000 +_021D8CB4: .word 0x00003FF8 + thumb_func_end MOD65_021D8C88 + + thumb_func_start MOD65_021D8CB8 +MOD65_021D8CB8: ; 0x021D8CB8 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D8CD4 ; =0x021DA3A0 + add r3, sp, #0 + mov r2, #5 +_021D8CC2: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D8CC2 + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D8CD4: .word 0x021DA3A0 + thumb_func_end MOD65_021D8CB8 + + thumb_func_start MOD65_021D8CD8 +MOD65_021D8CD8: ; 0x021D8CD8 + push {r4, r5, r6, r7, lr} + sub sp, #0x6c + add r5, r0, #0 + bl MOD65_021D8CB8 + ldr r0, [r5] + bl FUN_02016B94 + add r3, sp, #8 + ldr r4, _021D8D5C ; =0x021DA35C + str r0, [r5, #0x68] + 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_02016BBC + ldr r4, _021D8D60 ; =0x021DA3C8 + add r3, sp, #0x18 + mov r2, #0xa +_021D8D04: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D8D04 + ldr r1, _021D8D64 ; =0x021DA350 + ldr r0, [r4] + ldrb r2, [r1] + str r0, [r3] + add r0, sp, #4 + strb r2, [r0] + ldrb r2, [r1, #1] + ldrb r1, [r1, #2] + add r4, sp, #4 + strb r2, [r0, #1] + strb r1, [r0, #2] + mov r0, #0 + str r0, [sp] + add r6, sp, #0x18 +_021D8D28: + ldrb r7, [r4] + ldr r0, [r5, #0x68] + add r2, r6, #0 + add r1, r7, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #0x68] + add r1, r7, #0 + bl FUN_02018744 + ldr r3, [r5] + add r0, r7, #0 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r0, [sp] + add r4, r4, #1 + add r0, r0, #1 + add r6, #0x1c + str r0, [sp] + cmp r0, #3 + blt _021D8D28 + add sp, #0x6c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D8D5C: .word 0x021DA35C +_021D8D60: .word 0x021DA3C8 +_021D8D64: .word 0x021DA350 + thumb_func_end MOD65_021D8CD8 + + thumb_func_start MOD65_021D8D68 +MOD65_021D8D68: ; 0x021D8D68 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #1 +_021D8D6E: + lsl r1, r4, #0x18 + ldr r0, [r5, #0x68] + lsr r1, r1, #0x18 + bl FUN_020178A0 + add r4, r4, #1 + cmp r4, #3 + blt _021D8D6E + ldr r0, [r5, #0x68] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r5, #0x68] + bl FUN_02016A18 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD65_021D8D68 + + thumb_func_start MOD65_021D8D90 +MOD65_021D8D90: ; 0x021D8D90 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r1, [r5] + mov r0, #0x57 + bl FUN_02006670 + add r4, r0, #0 + mov r0, #2 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x68] + ldr r1, [r5] + add r2, r4, #0 + mov r3, #0x57 + bl FUN_02079B60 + mov r0, #3 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x68] + ldr r1, [r5] + add r2, r4, #0 + mov r3, #0x57 + bl FUN_02079B60 + mov r1, #0 + str r1, [sp] + mov r0, #2 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x20 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + ldr r0, [r5, #0x68] + ldr r1, [r5] + add r2, r4, #0 + mov r3, #0x57 + bl FUN_02079B60 + mov r0, #1 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xa0 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x68] + ldr r1, [r5] + add r2, r4, #0 + mov r3, #0x57 + bl FUN_02079B60 + mov r0, #4 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x68] + ldr r1, [r5] + add r2, r4, #0 + mov r3, #0x57 + bl FUN_02079B60 + mov r0, #5 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x68] + ldr r1, [r5] + add r2, r4, #0 + mov r3, #0x57 + bl FUN_02079B60 + add r0, r4, #0 + bl FUN_020066F4 + ldr r0, [r5, #0x68] + mov r1, #2 + bl FUN_0201AC68 + ldr r0, [r5, #0x68] + mov r1, #4 + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + thumb_func_end MOD65_021D8D90 + + thumb_func_start MOD65_021D8E68 +MOD65_021D8E68: ; 0x021D8E68 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4, #0x68] + ldr r2, _021D8EAC ; =0x021DA354 + add r1, #0x6c + bl FUN_02019150 + add r0, r4, #0 + add r0, #0x6c + mov r1, #0 + bl FUN_02019620 + ldr r0, [r4, #0x10] + mov r1, #1 + ldrb r0, [r0, #0xb] + add r2, r1, #0 + mov r3, #0xe + str r0, [sp] + ldr r0, [r4] + str r0, [sp, #4] + ldr r0, [r4, #0x68] + bl FUN_0200CD68 + mov r1, #0x1e + ldr r2, [r4] + mov r0, #0 + lsl r1, r1, #4 + bl FUN_02002EEC + add sp, #8 + pop {r4, pc} + nop +_021D8EAC: .word 0x021DA354 + thumb_func_end MOD65_021D8E68 + + thumb_func_start MOD65_021D8EB0 +MOD65_021D8EB0: ; 0x021D8EB0 + push {r4, lr} + add r4, r0, #0 + add r0, #0x6c + bl FUN_02019570 + add r4, #0x6c + add r0, r4, #0 + bl FUN_02019178 + pop {r4, pc} + thumb_func_end MOD65_021D8EB0 + + thumb_func_start MOD65_021D8EC4 +MOD65_021D8EC4: ; 0x021D8EC4 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r2, _021D8F04 ; =0x0000019B + ldr r3, [r6] + mov r0, #0 + mov r1, #0x1a + bl FUN_0200A86C + str r0, [r6, #0x18] + ldr r2, [r6] + mov r0, #1 + mov r1, #0x40 + bl FUN_0200AA90 + str r0, [r6, #0x1c] + ldr r1, [r6] + mov r0, #0x40 + bl FUN_020219F4 + str r0, [r6, #0x20] + mov r4, #0 + add r5, r6, #0 +_021D8EF0: + ldr r0, [r6, #0x18] + add r1, r4, #0 + bl FUN_0200A914 + str r0, [r5, #0x24] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021D8EF0 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8F04: .word 0x0000019B + thumb_func_end MOD65_021D8EC4 + + thumb_func_start MOD65_021D8F08 +MOD65_021D8F08: ; 0x021D8F08 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_021D8F10: + ldr r0, [r5, #0x24] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021D8F10 + ldr r0, [r6, #0x20] + bl FUN_02021A20 + ldr r0, [r6, #0x1c] + bl FUN_0200AB18 + ldr r0, [r6, #0x18] + bl FUN_0200A8B8 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD65_021D8F08 + + thumb_func_start MOD65_021D8F34 +MOD65_021D8F34: ; 0x021D8F34 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + mov r1, #5 + ldr r0, [r0] + mov r2, #0 + str r0, [r4, #0x30] + ldr r0, [r4, #0x10] + ldr r0, [r0] + bl FUN_020671BC + strh r0, [r4, #0x34] + ldr r0, [r4, #0x10] + ldr r0, [r0] + bl FUN_020689E0 + add r1, r4, #0 + add r1, #0x37 + strb r0, [r1] + ldr r0, [r4, #0x10] + ldr r0, [r0] + bl FUN_02068854 + add r1, r4, #0 + add r1, #0x36 + strb r0, [r1] + ldrh r0, [r4, #0x34] + mov r1, #0x1c + bl FUN_02068678 + mov r1, #1 + eor r1, r0 + add r0, r4, #0 + add r0, #0x38 + strb r1, [r0] + ldr r1, [r4] + mov r0, #0xc + bl FUN_020219F4 + str r0, [r4, #0x3c] + ldr r0, [r4, #0x10] + ldr r2, [r4, #0x3c] + ldr r0, [r0] + mov r1, #0x76 + bl FUN_020671BC + add r1, r4, #0 + ldr r0, [r4, #0x10] + add r1, #0x36 + ldrb r1, [r1] + ldr r0, [r0, #4] + bl FUN_020881D0 + add r4, #0x39 + strb r0, [r4] + pop {r4, pc} + thumb_func_end MOD65_021D8F34 + + thumb_func_start MOD65_021D8FA4 +MOD65_021D8FA4: ; 0x021D8FA4 + ldr r3, _021D8FAC ; =0x02021A21 + ldr r0, [r0, #0x3c] + bx r3 + nop +_021D8FAC: .word 0x02021A21 + thumb_func_end MOD65_021D8FA4 + + thumb_func_start MOD65_021D8FB0 +MOD65_021D8FB0: ; 0x021D8FB0 + push {r3, r4, r5, r6, lr} + sub sp, #0x44 + add r4, r0, #0 + ldr r1, [r4] + mov r0, #0x20 + bl FUN_0201C24C + ldr r0, [r4] + bl FUN_0200BB14 + add r2, sp, #0x24 + ldr r5, _021D904C ; =0x021DA380 + str r0, [r4, #0x7c] + ldmia r5!, {r0, r1} + add r3, r2, #0 + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + ldr r6, _021D9050 ; =0x021DA36C + stmia r2!, {r0, r1} + add r5, sp, #0x10 + ldmia r6!, {r0, r1} + add r2, r5, #0 + stmia r5!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + ldr r0, [r6] + add r1, r3, #0 + str r0, [r5] + ldr r0, [r4, #0x7c] + mov r3, #0x20 + bl FUN_0200BB6C + ldr r0, [r4] + bl FUN_0200A064 + mov r0, #0 + str r0, [sp] + mov r1, #2 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #1 + bl FUN_02088320 + str r0, [r4, #0x5c] + mov r1, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + str r1, [sp, #8] + str r1, [sp, #0xc] + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x5c] + ldrh r1, [r1, #8] + mov r2, #0x64 + mov r3, #0x5a + bl FUN_02088490 + str r0, [r4, #0x60] + ldr r0, [r0, #4] + mov r1, #0 + bl FUN_0200C644 + bl FUN_02030F40 + cmp r0, #0 + beq _021D9040 + bl FUN_02033E74 +_021D9040: + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + add sp, #0x44 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021D904C: .word 0x021DA380 +_021D9050: .word 0x021DA36C + thumb_func_end MOD65_021D8FB0 + + thumb_func_start MOD65_021D9054 +MOD65_021D9054: ; 0x021D9054 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x5c] + ldr r1, [r4, #0x60] + bl FUN_02088694 + ldr r0, [r4, #0x5c] + bl FUN_02088360 + ldr r0, [r4, #0x7c] + bl FUN_0200BD04 + bl FUN_0201C29C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD65_021D9054 + + thumb_func_start MOD65_021D9074 +MOD65_021D9074: ; 0x021D9074 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #8 + bhi _021D90F4 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D908A: ; jump table + .short _021D909C - _021D908A - 2 ; case 0 + .short _021D90A8 - _021D908A - 2 ; case 1 + .short _021D90B4 - _021D908A - 2 ; case 2 + .short _021D90C0 - _021D908A - 2 ; case 3 + .short _021D90CC - _021D908A - 2 ; case 4 + .short _021D90D8 - _021D908A - 2 ; case 5 + .short _021D90E4 - _021D908A - 2 ; case 6 + .short _021D90EC - _021D908A - 2 ; case 7 + .short _021D90F4 - _021D908A - 2 ; case 8 +_021D909C: + add r1, r4, #0 + add r1, #0x80 + bl MOD65_021D9150 + str r0, [r4, #4] + b _021D90FC +_021D90A8: + add r1, r4, #0 + add r1, #0x80 + bl MOD65_021D922C + str r0, [r4, #4] + b _021D90FC +_021D90B4: + add r1, r4, #0 + add r1, #0x80 + bl MOD65_021D923C + str r0, [r4, #4] + b _021D90FC +_021D90C0: + add r1, r4, #0 + add r1, #0x80 + bl MOD65_021D926C + str r0, [r4, #4] + b _021D90FC +_021D90CC: + add r1, r4, #0 + add r1, #0x80 + bl MOD65_021D9284 + str r0, [r4, #4] + b _021D90FC +_021D90D8: + add r1, r4, #0 + add r1, #0x80 + bl MOD65_021D92B4 + str r0, [r4, #4] + b _021D90FC +_021D90E4: + bl MOD65_021D92C4 + str r0, [r4, #4] + b _021D90FC +_021D90EC: + bl MOD65_021D9338 + str r0, [r4, #4] + b _021D90FC +_021D90F4: + mov r0, #0 + str r0, [r4, #4] + mov r0, #1 + pop {r4, pc} +_021D90FC: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD65_021D9074 + + thumb_func_start MOD65_021D9100 +MOD65_021D9100: ; 0x021D9100 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r2, #0 + add r3, r5, #0 + add r0, r1, #0 + mov r2, #0x1c + add r3, #0xcc + mul r0, r2 + add r4, r3, r0 + add r0, r4, #0 + mov r1, #0 + bl MI_CpuFill8 + str r5, [r4, #0x14] + add r0, r6, #0 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r4, #0x18] + ldr r0, [r5, #4] + add r0, r0, #1 + str r0, [r5, #4] + pop {r4, r5, r6, pc} + thumb_func_end MOD65_021D9100 + + thumb_func_start MOD65_021D9130 +MOD65_021D9130: ; 0x021D9130 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + bl FUN_0200CAB4 + ldr r1, [r4, #0x14] + mov r2, #0x1c + ldr r0, [r1, #4] + sub r0, r0, #1 + str r0, [r1, #4] + add r0, r4, #0 + mov r1, #0 + bl MI_CpuFill8 + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD65_021D9130 + + thumb_func_start MOD65_021D9150 +MOD65_021D9150: ; 0x021D9150 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r4, r1, #0 + mov r2, #0x4f + add r5, r0, #0 + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + ldr r0, [r5, #0x60] + mov r2, #0x18 + ldr r0, [r0, #4] + ldr r1, [r0] + add r0, r4, #0 + add r0, #0xc4 + str r1, [r0] + ldr r1, [r5, #0x58] + add r0, r4, #0 + add r0, #0xc8 + str r1, [r0] + add r5, #0x39 + ldrb r0, [r5] + mov r1, #2 + lsl r1, r1, #0x12 + str r0, [r4, #8] + str r2, [r4] + mov r0, #0xe + str r1, [r4, #0xc] + lsl r0, r0, #0x10 + str r0, [r4, #0x10] + str r1, [r4, #0x18] + lsl r0, r2, #0xe + str r0, [r4, #0x1c] + lsr r0, r1, #7 + str r0, [r4, #0x30] + str r0, [r4, #0x34] + lsr r0, r1, #8 + str r0, [r4, #0x3c] + str r0, [r4, #0x40] + add r1, r4, #0 + str r2, [r4, #0x64] + mov r0, #0 + str r0, [r4, #0x60] + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + add r1, #0xc + bl FUN_02020044 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xc + add r1, #0x18 + add r2, sp, #0xc + bl VEC_Subtract + add r1, r4, #0 + mov r3, #6 + add r0, sp, #0 + add r1, #0x48 + add r2, sp, #0xc + lsl r3, r3, #0xe + bl MOD65_021D89C4 + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r1, #1 + bl FUN_020200EC + add r0, r4, #0 + add r0, #0xc4 + add r1, r4, #0 + ldr r0, [r0] + add r1, #0x30 + bl FUN_02020064 + ldr r2, _021D921C ; =MOD65_021D9380 + add r0, r4, #0 + mov r1, #0 + bl MOD65_021D9100 + ldr r2, _021D9220 ; =MOD65_021D94AC + add r0, r4, #0 + mov r1, #1 + bl MOD65_021D9100 + ldr r2, _021D9224 ; =MOD65_021D967C + add r0, r4, #0 + mov r1, #2 + bl MOD65_021D9100 + ldr r2, _021D9228 ; =MOD65_021D97C4 + add r0, r4, #0 + mov r1, #3 + bl MOD65_021D9100 + mov r0, #1 + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_021D921C: .word MOD65_021D9380 +_021D9220: .word MOD65_021D94AC +_021D9224: .word MOD65_021D967C +_021D9228: .word MOD65_021D97C4 + thumb_func_end MOD65_021D9150 + + thumb_func_start MOD65_021D922C +MOD65_021D922C: ; 0x021D922C + ldr r0, [r1, #4] + cmp r0, #0 + beq _021D9236 + mov r0, #1 + bx lr +_021D9236: + mov r0, #2 + bx lr + .align 2, 0 + thumb_func_end MOD65_021D922C + + thumb_func_start MOD65_021D923C +MOD65_021D923C: ; 0x021D923C + push {r3, lr} + add r1, r0, #0 + add r0, #0x39 + ldrb r0, [r0] + cmp r0, #1 + ldr r0, [r1] + bne _021D925A + str r0, [sp] + ldrh r1, [r1, #0x34] + mov r0, #0xb + mov r2, #0 + mov r3, #0x7f + bl FUN_020056AC + b _021D9268 +_021D925A: + str r0, [sp] + ldrh r1, [r1, #0x34] + mov r0, #0 + add r2, r0, #0 + mov r3, #0x7f + bl FUN_020056AC +_021D9268: + mov r0, #3 + pop {r3, pc} + thumb_func_end MOD65_021D923C + + thumb_func_start MOD65_021D926C +MOD65_021D926C: ; 0x021D926C + push {r3, lr} + bl FUN_02005670 + cmp r0, #0 + beq _021D927A + mov r0, #3 + pop {r3, pc} +_021D927A: + mov r0, #0 + bl FUN_02005614 + mov r0, #4 + pop {r3, pc} + thumb_func_end MOD65_021D926C + + thumb_func_start MOD65_021D9284 +MOD65_021D9284: ; 0x021D9284 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + add r0, #0x68 + mov r1, #0 + mov r2, #0x5c + bl MI_CpuFill8 + ldr r2, _021D92AC ; =MOD65_021D99C0 + add r0, r4, #0 + mov r1, #0 + bl MOD65_021D9100 + ldr r2, _021D92B0 ; =MOD65_021D9B0C + add r0, r4, #0 + mov r1, #1 + bl MOD65_021D9100 + mov r0, #5 + pop {r4, pc} + .align 2, 0 +_021D92AC: .word MOD65_021D99C0 +_021D92B0: .word MOD65_021D9B0C + thumb_func_end MOD65_021D9284 + + thumb_func_start MOD65_021D92B4 +MOD65_021D92B4: ; 0x021D92B4 + ldr r0, [r1, #4] + cmp r0, #0 + beq _021D92BE + mov r0, #5 + bx lr +_021D92BE: + mov r0, #6 + bx lr + .align 2, 0 + thumb_func_end MOD65_021D92B4 + + thumb_func_start MOD65_021D92C4 +MOD65_021D92C4: ; 0x021D92C4 + push {r4, lr} + sub sp, #0x10 + mov r1, #1 + add r4, r0, #0 + add r0, #0x6c + add r2, r1, #0 + mov r3, #0xe + bl FUN_0200D0BC + add r0, r4, #0 + add r0, #0x6c + mov r1, #0xff + bl FUN_02019620 + ldr r0, [r4, #0x20] + bl FUN_02021A4C + mov r0, #1 + str r0, [sp] + mov r3, #2 + str r3, [sp, #4] + ldr r0, [r4, #0x1c] + ldr r2, [r4, #0x3c] + mov r1, #0 + bl FUN_0200ABB4 + add r2, r4, #0 + add r2, #0x39 + ldrb r2, [r2] + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x20] + lsl r2, r2, #2 + add r2, r4, r2 + ldr r2, [r2, #0x24] + bl FUN_0200B7B8 + mov r3, #0 + str r3, [sp] + ldr r0, [r4, #0x10] + mov r1, #1 + ldrb r0, [r0, #0xa] + str r0, [sp, #4] + ldr r0, _021D9334 ; =0x0001020F + str r0, [sp, #8] + str r3, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x20] + add r0, #0x6c + bl FUN_0201BDE0 + strh r0, [r4, #0xc] + mov r0, #0 + strh r0, [r4, #0xe] + mov r0, #7 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_021D9334: .word 0x0001020F + thumb_func_end MOD65_021D92C4 + + thumb_func_start MOD65_021D9338 +MOD65_021D9338: ; 0x021D9338 + push {r4, lr} + add r4, r0, #0 + ldrh r0, [r4, #0xc] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _021D934E + mov r0, #7 + pop {r4, pc} +_021D934E: + ldr r0, _021D937C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + bne _021D9366 + ldrh r1, [r4, #0xe] + add r0, r1, #1 + strh r0, [r4, #0xe] + cmp r1, #0x5a + bhs _021D9366 + mov r0, #7 + pop {r4, pc} +_021D9366: + add r0, r4, #0 + add r0, #0x6c + mov r1, #1 + bl FUN_0200D0E0 + add r4, #0x6c + add r0, r4, #0 + bl FUN_02019570 + mov r0, #8 + pop {r4, pc} + .align 2, 0 +_021D937C: .word 0x021C48B8 + thumb_func_end MOD65_021D9338 + + thumb_func_start MOD65_021D9380 +MOD65_021D9380: ; 0x021D9380 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r1, #0 + ldr r4, [r6, #0x14] + add r7, r0, #0 + mov r0, #0x18 + add r5, r4, #0 + str r0, [r6, #4] + mov r0, #1 + add r5, #0xc + lsl r0, r0, #0xc + str r0, [r5, #0x24] + str r0, [r5, #0x28] + lsr r0, r0, #1 + str r0, [r5, #0x30] + str r0, [r5, #0x34] + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x24 + add r1, #0x30 + add r2, sp, #0xc + bl VEC_Subtract + ldr r0, [r6, #4] + cmp r0, #0 + ble _021D93C6 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021D93D4 +_021D93C6: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021D93D4: + bl _ffix + add r1, r5, #0 + add r3, r0, #0 + add r0, sp, #0 + add r1, #0x3c + add r2, sp, #0xc + bl MOD65_021D89C4 + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r1, #1 + bl FUN_020200A0 + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r1, #1 + bl FUN_020200EC + add r4, #0xc4 + add r5, #0x24 + ldr r0, [r4] + add r1, r5, #0 + bl FUN_02020064 + ldr r1, _021D9418 ; =MOD65_021D941C + add r0, r7, #0 + bl FUN_0201B6C4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9418: .word MOD65_021D941C + thumb_func_end MOD65_021D9380 + + thumb_func_start MOD65_021D941C +MOD65_021D941C: ; 0x021D941C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r6, [r5, #0x14] + add r1, sp, #0 + mov r0, #0 + str r0, [r1] + add r4, r6, #0 + str r0, [r1, #4] + str r0, [r1, #8] + add r4, #0xc + ldr r0, [r4, #0x3c] + ldr r2, [r5, #0xc] + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + add r2, r0, #0 + mov r0, #2 + add r3, r1, #0 + mov r7, #0 + lsl r0, r0, #0xa + add r0, r2, r0 + adc r3, r7 + ldr r1, [r4, #0x24] + lsl r2, r3, #0x14 + lsr r0, r0, #0xc + orr r0, r2 + sub r0, r1, r0 + str r0, [sp] + ldr r0, [r4, #0x40] + ldr r2, [r5, #0xc] + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + mov r3, #2 + ldr r2, [r4, #0x28] + add r4, r7, #0 + lsl r3, r3, #0xa + add r3, r0, r3 + adc r1, r4 + lsl r0, r1, #0x14 + lsr r1, r3, #0xc + orr r1, r0 + sub r0, r2, r1 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + add r1, sp, #0 + bl FUN_02020064 + mov r0, #1 + ldr r1, [r5, #0xc] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r5, #0xc] + ldr r0, [r5, #4] + sub r0, r0, #1 + str r0, [r5, #4] + bne _021D94A8 + add r6, #0xc4 + ldr r0, [r6] + add r1, r7, #0 + bl FUN_020200A0 + add r0, r5, #0 + bl MOD65_021D9130 +_021D94A8: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD65_021D941C + + thumb_func_start MOD65_021D94AC +MOD65_021D94AC: ; 0x021D94AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + ldr r6, [r5, #0x14] + add r7, r0, #0 + add r3, sp, #0xc + mov r0, #0 + str r0, [r3] + str r0, [r3, #4] + str r0, [r3, #8] + mov r2, #0x18 + mov r1, #2 + add r4, r6, #0 + mov r0, #0xe + str r2, [r5, #4] + lsl r1, r1, #0x12 + add r4, #0xc + str r1, [r6, #0xc] + lsl r0, r0, #0x10 + str r0, [r4, #4] + str r1, [r4, #0xc] + lsl r0, r2, #0xe + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0xc + add r1, r4, #0 + add r2, r3, #0 + bl VEC_Subtract + ldr r0, [r5, #4] + cmp r0, #0 + ble _021D94FE + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021D950C +_021D94FE: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021D950C: + bl _ffix + add r1, r4, #0 + add r3, r0, #0 + add r0, sp, #0 + add r1, #0x18 + add r2, sp, #0xc + bl MOD65_021D89C4 + ldr r0, [r5, #4] + cmp r0, #0 + ble _021D9536 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021D9544 +_021D9536: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021D9544: + bl _ffix + add r1, r0, #0 + mov r0, #0x2d + lsl r0, r0, #0xe + bl FX_Div + str r0, [r4, #0x48] + ldr r0, [r5, #4] + cmp r0, #0 + ble _021D956C + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021D957A +_021D956C: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021D957A: + bl _ffix + add r1, r0, #0 + mov r0, #1 + lsl r0, r0, #0xc + bl FX_Div + add r6, #0xc4 + str r0, [r4, #0x4c] + ldr r0, [r6] + add r1, r4, #0 + bl FUN_02020044 + ldr r1, _021D95A0 ; =MOD65_021D95A4 + add r0, r7, #0 + bl FUN_0201B6C4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D95A0: .word MOD65_021D95A4 + thumb_func_end MOD65_021D94AC + + thumb_func_start MOD65_021D95A4 +MOD65_021D95A4: ; 0x021D95A4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r6, [r5, #0x14] + ldr r2, [r5, #0xc] + add r4, r6, #0 + add r4, #0xc + ldr r0, [r4, #0x18] + asr r3, r2, #0x1f + asr r1, r0, #0x1f + bl _ll_mul + add r2, r0, #0 + mov r0, #2 + add r3, r1, #0 + mov r7, #0 + lsl r0, r0, #0xa + add r0, r2, r0 + adc r3, r7 + ldr r1, [r6, #0xc] + lsl r2, r3, #0x14 + lsr r0, r0, #0xc + orr r0, r2 + add r0, r1, r0 + str r0, [sp] + ldr r0, [r4, #0x1c] + ldr r2, [r5, #0xc] + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + add r2, r0, #0 + mov r0, #2 + add r3, r1, #0 + lsl r0, r0, #0xa + add r0, r2, r0 + adc r3, r7 + ldr r1, [r4, #4] + lsl r2, r3, #0x14 + lsr r0, r0, #0xc + orr r0, r2 + add r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r4, #0x48] + ldr r2, [r5, #0xc] + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + mov r2, #2 + add r3, r7, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + lsl r0, r1, #4 + lsr r0, r0, #0x10 + bl FUN_0201B970 + ldr r2, _021D9678 ; =0xFFFC0000 + asr r1, r0, #0x1f + asr r3, r2, #0x12 + bl _ll_mul + add r3, r7, #0 + mov r7, #2 + add r2, r1, #0 + lsl r7, r7, #0xa + add r0, r0, r7 + adc r2, r3 + lsl r2, r2, #0x14 + lsr r0, r0, #0xc + orr r0, r2 + asr r4, r0, #0x1f + lsr r2, r0, #0x14 + lsl r4, r4, #0xc + orr r4, r2 + lsl r0, r0, #0xc + add r2, r0, r7 + adc r4, r3 + ldr r1, [sp, #4] + lsl r0, r4, #0x14 + lsr r2, r2, #0xc + orr r2, r0 + add r0, r1, r2 + add r6, #0xc4 + str r0, [sp, #4] + ldr r0, [r6] + add r1, sp, #0 + bl FUN_02020044 + ldr r1, [r5, #0xc] + lsl r0, r7, #1 + add r0, r1, r0 + str r0, [r5, #0xc] + ldr r0, [r5, #4] + sub r0, r0, #1 + str r0, [r5, #4] + bne _021D9674 + add r0, r5, #0 + bl MOD65_021D9130 +_021D9674: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D9678: .word 0xFFFC0000 + thumb_func_end MOD65_021D95A4 + + thumb_func_start MOD65_021D967C +MOD65_021D967C: ; 0x021D967C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + ldr r6, [r5, #0x14] + add r7, r0, #0 + add r4, r6, #0 + mov r1, #0x18 + mov r0, #1 + add r4, #0x68 + str r1, [r5, #4] + lsl r0, r0, #0xc + str r0, [r4, #0x24] + str r0, [r4, #0x28] + lsl r0, r1, #8 + str r0, [r4, #0x30] + str r0, [r4, #0x34] + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x30 + add r1, #0x24 + add r2, sp, #0xc + bl VEC_Subtract + ldr r0, [r5, #4] + cmp r0, #0 + ble _021D96C2 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021D96D0 +_021D96C2: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021D96D0: + bl _ffix + add r4, #0x3c + add r3, r0, #0 + add r0, sp, #0 + add r1, r4, #0 + add r2, sp, #0xc + bl MOD65_021D89C4 + add r0, r6, #0 + add r0, #0xc8 + mov r1, #0xc + add r2, r1, #0 + ldr r0, [r0] + add r2, #0xf4 + bl FUN_02007558 + add r6, #0xc8 + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r6] + add r2, #0xf3 + bl FUN_02007558 + ldr r1, _021D970C ; =MOD65_021D9710 + add r0, r7, #0 + bl FUN_0201B6C4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D970C: .word MOD65_021D9710 + thumb_func_end MOD65_021D967C + + thumb_func_start MOD65_021D9710 +MOD65_021D9710: ; 0x021D9710 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + ldr r6, [r5, #0x14] + ldr r0, [r5, #0xc] + add r4, r6, #0 + add r4, #0x68 + str r0, [sp, #4] + asr r7, r0, #0x1f + ldr r0, [r4, #0x40] + ldr r2, [sp, #4] + asr r1, r0, #0x1f + add r3, r7, #0 + bl _ll_mul + mov r3, #2 + add r2, r0, #0 + lsl r3, r3, #0xa + add r3, r2, r3 + ldr r2, _021D97C0 ; =0x00000000 + ldr r0, [r4, #0x28] + adc r1, r2 + lsr r2, r3, #0xc + lsl r1, r1, #0x14 + orr r2, r1 + add r0, r0, r2 + str r0, [sp] + ldr r0, [r4, #0x3c] + ldr r2, [sp, #4] + asr r1, r0, #0x1f + add r3, r7, #0 + bl _ll_mul + mov r2, #2 + add r3, r0, #0 + add r0, r6, #0 + add r7, r1, #0 + add r0, #0xc8 + lsl r2, r2, #0xa + mov r1, #0xc + add r3, r3, r2 + ldr r2, _021D97C0 ; =0x00000000 + ldr r4, [r4, #0x24] + adc r7, r2 + lsl r2, r7, #0x14 + lsr r3, r3, #0xc + orr r3, r2 + add r2, r4, r3 + ldr r0, [r0] + asr r2, r2, #4 + bl FUN_02007558 + add r0, r6, #0 + add r0, #0xc8 + ldr r2, [sp] + ldr r0, [r0] + mov r1, #0xd + asr r2, r2, #4 + bl FUN_02007558 + mov r0, #1 + ldr r1, [r5, #0xc] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r5, #0xc] + ldr r0, [r5, #4] + sub r0, r0, #1 + str r0, [r5, #4] + bne _021D97BA + add r0, r6, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #0 + mov r2, #0x80 + bl FUN_02007558 + add r6, #0xc8 + ldr r0, [r6] + mov r1, #1 + mov r2, #0x60 + bl FUN_02007558 + add r0, r5, #0 + bl MOD65_021D9130 +_021D97BA: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D97C0: .word 0x00000000 + thumb_func_end MOD65_021D9710 + + thumb_func_start MOD65_021D97C4 +MOD65_021D97C4: ; 0x021D97C4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r1, #0 + ldr r4, [r6, #0x14] + add r7, r0, #0 + mov r0, #0x18 + mov r1, #2 + add r5, r4, #0 + str r0, [r6, #4] + lsl r1, r1, #0x12 + add r5, #0x68 + str r1, [r4, #0x68] + lsl r0, r0, #0xe + str r0, [r5, #4] + mov r0, #7 + str r1, [r5, #0xc] + lsl r0, r0, #0x10 + str r0, [r5, #0x10] + add r0, r5, #0 + add r0, #0xc + add r1, r5, #0 + add r2, sp, #0xc + bl VEC_Subtract + ldr r0, [r6, #4] + cmp r0, #0 + ble _021D980C + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021D981A +_021D980C: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021D981A: + bl _ffix + add r1, r5, #0 + add r3, r0, #0 + add r0, sp, #0 + add r1, #0x18 + add r2, sp, #0xc + bl MOD65_021D89C4 + add r0, r4, #0 + add r0, #0xc8 + ldr r2, [r5] + ldr r0, [r0] + mov r1, #0 + asr r2, r2, #0xc + bl FUN_02007558 + add r4, #0xc8 + ldr r2, [r5, #4] + ldr r0, [r4] + mov r1, #1 + asr r2, r2, #0xc + bl FUN_02007558 + ldr r1, _021D9858 ; =MOD65_021D985C + add r0, r7, #0 + bl FUN_0201B6C4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9858: .word MOD65_021D985C + thumb_func_end MOD65_021D97C4 + + thumb_func_start MOD65_021D985C +MOD65_021D985C: ; 0x021D985C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + ldr r6, [r5, #0x14] + ldr r7, [r5, #0xc] + add r4, r6, #0 + str r0, [sp] + asr r0, r7, #0x1f + str r0, [sp, #8] + add r4, #0x68 + ldr r0, [r4, #0x1c] + ldr r3, [sp, #8] + asr r1, r0, #0x1f + add r2, r7, #0 + bl _ll_mul + mov r3, #2 + add r2, r0, #0 + lsl r3, r3, #0xa + add r3, r2, r3 + ldr r2, _021D9990 ; =0x00000000 + ldr r0, [r4, #4] + adc r1, r2 + lsr r2, r3, #0xc + lsl r1, r1, #0x14 + orr r2, r1 + add r0, r0, r2 + str r0, [sp, #4] + ldr r0, [r4, #0x18] + ldr r3, [sp, #8] + asr r1, r0, #0x1f + add r2, r7, #0 + bl _ll_mul + mov ip, r0 + ldr r2, [r6, #0x68] + add r7, r1, #0 + str r2, [sp, #0xc] + mov r2, #2 + add r0, r6, #0 + add r0, #0xc8 + mov r1, #0 + mov r3, ip + lsl r2, r2, #0xa + add r2, r3, r2 + adc r7, r1 + lsl r3, r7, #0x14 + lsr r2, r2, #0xc + orr r2, r3 + ldr r3, [sp, #0xc] + ldr r0, [r0] + add r2, r3, r2 + asr r2, r2, #0xc + bl FUN_02007558 + add r0, r6, #0 + add r0, #0xc8 + ldr r2, [sp, #4] + ldr r0, [r0] + mov r1, #1 + asr r2, r2, #0xc + bl FUN_02007558 + add r0, r4, #0 + add r0, #0x50 + ldrh r0, [r0] + sub r0, r0, #4 + add r1, r0, #0 + mul r1, r0 + mov r0, #0x10 + sub r0, r0, r1 + neg r0, r0 + cmp r0, #0 + ble _021D9902 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021D9910 +_021D9902: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021D9910: + bl _ffix + ldr r2, _021D9994 ; =0x00001666 + asr r1, r0, #0x1f + mov r3, #0 + bl _ll_mul + add r3, r1, #0 + mov r1, #4 + add r7, r0, #0 + add r0, r6, #0 + add r0, #0xc8 + lsl r2, r1, #9 + add r7, r7, r2 + ldr r2, _021D9990 ; =0x00000000 + ldr r0, [r0] + adc r3, r2 + lsl r2, r3, #0x14 + lsr r3, r7, #0xc + orr r3, r2 + asr r2, r3, #0xc + bl FUN_02007558 + add r0, r4, #0 + add r0, #0x50 + ldrh r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x50 + strh r1, [r0] + add r0, r4, #0 + add r0, #0x50 + ldrh r0, [r0] + cmp r0, #8 + bls _021D995E + add r0, r4, #0 + mov r1, #0 + add r0, #0x50 + strh r1, [r0] +_021D995E: + mov r0, #1 + ldr r1, [r5, #0xc] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r5, #0xc] + ldr r1, [r5, #4] + sub r0, r1, #1 + str r0, [r5, #4] + cmp r1, #0 + bne _021D998C + add r6, #0xc8 + ldr r0, [r6] + mov r1, #4 + mov r2, #0 + bl FUN_02007558 + mov r0, #0 + add r4, #0x50 + strh r0, [r4] + ldr r0, [sp] + ldr r1, _021D9998 ; =MOD65_021D999C + bl FUN_0201B6C4 +_021D998C: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D9990: .word 0x00000000 +_021D9994: .word 0x00001666 +_021D9998: .word MOD65_021D999C + thumb_func_end MOD65_021D985C + + thumb_func_start MOD65_021D999C +MOD65_021D999C: ; 0x021D999C + push {r3, lr} + ldr r3, [r1, #0x14] + add r3, #0x68 + add r0, r3, #0 + add r0, #0x50 + ldrh r2, [r0] + add r0, r3, #0 + add r0, #0x50 + ldrh r0, [r0] + add r3, #0x50 + add r0, r0, #1 + strh r0, [r3] + cmp r2, #4 + blo _021D99BE + add r0, r1, #0 + bl MOD65_021D9130 +_021D99BE: + pop {r3, pc} + thumb_func_end MOD65_021D999C + + thumb_func_start MOD65_021D99C0 +MOD65_021D99C0: ; 0x021D99C0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + ldr r6, [r5, #0x14] + add r7, r0, #0 + add r4, r6, #0 + mov r1, #8 + mov r0, #6 + add r4, #0x68 + str r1, [r5, #4] + lsl r0, r0, #0xa + str r0, [r4, #0x24] + str r0, [r4, #0x28] + lsl r0, r1, #9 + str r0, [r4, #0x30] + str r0, [r4, #0x34] + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x30 + add r1, #0x24 + add r2, sp, #0xc + bl VEC_Subtract + ldr r0, [r5, #4] + cmp r0, #0 + ble _021D9A06 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021D9A14 +_021D9A06: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021D9A14: + bl _ffix + add r4, #0x3c + add r3, r0, #0 + add r0, sp, #0 + add r1, r4, #0 + add r2, sp, #0xc + bl MOD65_021D89C4 + add r0, r6, #0 + add r0, #0xc8 + mov r1, #0xc + ldr r0, [r0] + lsl r2, r1, #5 + bl FUN_02007558 + add r6, #0xc8 + mov r2, #6 + ldr r0, [r6] + mov r1, #0xd + lsl r2, r2, #6 + bl FUN_02007558 + ldr r1, _021D9A50 ; =MOD65_021D9A54 + add r0, r7, #0 + bl FUN_0201B6C4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9A50: .word MOD65_021D9A54 + thumb_func_end MOD65_021D99C0 + + thumb_func_start MOD65_021D9A54 +MOD65_021D9A54: ; 0x021D9A54 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + ldr r6, [r5, #0x14] + ldr r0, [r5, #0xc] + add r4, r6, #0 + add r4, #0x68 + str r0, [sp, #4] + asr r7, r0, #0x1f + ldr r0, [r4, #0x40] + ldr r2, [sp, #4] + asr r1, r0, #0x1f + add r3, r7, #0 + bl _ll_mul + mov r3, #2 + add r2, r0, #0 + lsl r3, r3, #0xa + add r3, r2, r3 + ldr r2, _021D9B08 ; =0x00000000 + ldr r0, [r4, #0x28] + adc r1, r2 + lsr r2, r3, #0xc + lsl r1, r1, #0x14 + orr r2, r1 + add r0, r0, r2 + str r0, [sp] + ldr r0, [r4, #0x3c] + ldr r2, [sp, #4] + asr r1, r0, #0x1f + add r3, r7, #0 + bl _ll_mul + mov r2, #2 + add r3, r0, #0 + add r0, r6, #0 + add r7, r1, #0 + add r0, #0xc8 + lsl r2, r2, #0xa + mov r1, #0xc + add r3, r3, r2 + ldr r2, _021D9B08 ; =0x00000000 + ldr r4, [r4, #0x24] + adc r7, r2 + lsl r2, r7, #0x14 + lsr r3, r3, #0xc + orr r3, r2 + add r2, r4, r3 + ldr r0, [r0] + asr r2, r2, #4 + bl FUN_02007558 + add r0, r6, #0 + add r0, #0xc8 + ldr r2, [sp] + ldr r0, [r0] + mov r1, #0xd + asr r2, r2, #4 + bl FUN_02007558 + mov r0, #1 + ldr r1, [r5, #0xc] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r5, #0xc] + ldr r0, [r5, #4] + sub r0, r0, #1 + str r0, [r5, #4] + bne _021D9B02 + add r0, r6, #0 + add r0, #0xc8 + mov r1, #0xc + add r2, r1, #0 + ldr r0, [r0] + add r2, #0xf4 + bl FUN_02007558 + add r6, #0xc8 + mov r1, #0xd + add r2, r1, #0 + ldr r0, [r6] + add r2, #0xf3 + bl FUN_02007558 + add r0, r5, #0 + bl MOD65_021D9130 +_021D9B02: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9B08: .word 0x00000000 + thumb_func_end MOD65_021D9A54 + + thumb_func_start MOD65_021D9B0C +MOD65_021D9B0C: ; 0x021D9B0C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + ldr r6, [r5, #0x14] + add r7, r0, #0 + mov r0, #8 + add r4, r6, #0 + str r0, [r5, #4] + lsl r1, r0, #0x10 + mov r0, #7 + add r4, #0x68 + str r1, [r6, #0x68] + lsl r0, r0, #0x10 + str r0, [r4, #4] + mov r0, #6 + str r1, [r4, #0xc] + lsl r0, r0, #0x10 + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0xc + add r1, r4, #0 + add r2, sp, #0xc + bl VEC_Subtract + ldr r0, [r5, #4] + cmp r0, #0 + ble _021D9B54 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021D9B62 +_021D9B54: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021D9B62: + bl _ffix + add r1, r4, #0 + add r3, r0, #0 + add r0, sp, #0 + add r1, #0x18 + add r2, sp, #0xc + bl MOD65_021D89C4 + ldr r0, [r5, #4] + cmp r0, #0 + ble _021D9B8C + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021D9B9A +_021D9B8C: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021D9B9A: + bl _ffix + add r1, r0, #0 + mov r0, #0x2d + lsl r0, r0, #0xe + bl FX_Div + str r0, [r4, #0x48] + add r0, r6, #0 + add r0, #0xc8 + ldr r2, [r4] + ldr r0, [r0] + mov r1, #0 + asr r2, r2, #0xc + bl FUN_02007558 + add r6, #0xc8 + ldr r2, [r4, #4] + ldr r0, [r6] + mov r1, #1 + asr r2, r2, #0xc + bl FUN_02007558 + ldr r1, _021D9BD4 ; =MOD65_021D9BD8 + add r0, r7, #0 + bl FUN_0201B6C4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D9BD4: .word MOD65_021D9BD8 + thumb_func_end MOD65_021D9B0C + + thumb_func_start MOD65_021D9BD8 +MOD65_021D9BD8: ; 0x021D9BD8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + ldr r6, [r4, #0x14] + ldr r7, [r4, #0xc] + add r5, r6, #0 + str r0, [sp] + asr r0, r7, #0x1f + str r0, [sp, #8] + add r5, #0x68 + ldr r0, [r5, #0x1c] + ldr r3, [sp, #8] + asr r1, r0, #0x1f + add r2, r7, #0 + bl _ll_mul + mov r3, #2 + add r2, r0, #0 + lsl r3, r3, #0xa + add r3, r2, r3 + ldr r2, _021D9CD4 ; =0x00000000 + ldr r0, [r5, #4] + adc r1, r2 + lsr r2, r3, #0xc + lsl r1, r1, #0x14 + orr r2, r1 + add r0, r0, r2 + str r0, [sp, #4] + ldr r0, [r5, #0x18] + ldr r3, [sp, #8] + asr r1, r0, #0x1f + add r2, r7, #0 + bl _ll_mul + mov ip, r0 + ldr r2, [r6, #0x68] + add r7, r1, #0 + str r2, [sp, #0xc] + mov r2, #2 + add r0, r6, #0 + add r0, #0xc8 + mov r1, #0 + mov r3, ip + lsl r2, r2, #0xa + add r2, r3, r2 + adc r7, r1 + lsl r3, r7, #0x14 + lsr r2, r2, #0xc + orr r2, r3 + ldr r3, [sp, #0xc] + ldr r0, [r0] + add r2, r3, r2 + asr r2, r2, #0xc + bl FUN_02007558 + add r0, r6, #0 + add r0, #0xc8 + ldr r2, [sp, #4] + ldr r0, [r0] + mov r1, #1 + asr r2, r2, #0xc + bl FUN_02007558 + ldr r0, [r5, #0x48] + ldr r2, [r4, #0xc] + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + lsl r0, r1, #4 + lsr r0, r0, #0x10 + bl FUN_0201B970 + ldr r2, _021D9CD8 ; =0xFFFFA000 + asr r1, r0, #0x1f + asr r3, r2, #0xf + bl _ll_mul + add r5, r1, #0 + mov r1, #4 + add r3, r0, #0 + add r0, r6, #0 + add r0, #0xc8 + mov r7, #0 + lsl r2, r1, #9 + add r2, r3, r2 + adc r5, r7 + lsl r3, r5, #0x14 + lsr r2, r2, #0xc + orr r2, r3 + ldr r0, [r0] + asr r2, r2, #0xc + bl FUN_02007558 + add r2, r4, #0 + add r2, #0xc + mov r0, #1 + ldr r1, [r2] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r2] + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bne _021D9CCE + add r6, #0xc8 + ldr r0, [r6] + mov r1, #4 + add r2, r7, #0 + bl FUN_02007558 + ldr r0, [sp] + ldr r1, _021D9CDC ; =MOD65_021D9CE0 + bl FUN_0201B6C4 +_021D9CCE: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9CD4: .word 0x00000000 +_021D9CD8: .word 0xFFFFA000 +_021D9CDC: .word MOD65_021D9CE0 + thumb_func_end MOD65_021D9BD8 + + thumb_func_start MOD65_021D9CE0 +MOD65_021D9CE0: ; 0x021D9CE0 + push {r3, lr} + ldr r3, [r1, #4] + add r2, r3, #1 + str r2, [r1, #4] + cmp r3, #4 + blt _021D9D10 + ldr r2, [r1, #0x14] + ldr r2, [r2, #8] + cmp r2, #0 + beq _021D9CFA + cmp r2, #1 + beq _021D9D02 + b _021D9D0A +_021D9CFA: + ldr r1, _021D9D14 ; =MOD65_021D9D1C + bl FUN_0201B6C4 + pop {r3, pc} +_021D9D02: + ldr r1, _021D9D18 ; =MOD65_021D9DFC + bl FUN_0201B6C4 + pop {r3, pc} +_021D9D0A: + add r0, r1, #0 + bl MOD65_021D9130 +_021D9D10: + pop {r3, pc} + nop +_021D9D14: .word MOD65_021D9D1C +_021D9D18: .word MOD65_021D9DFC + thumb_func_end MOD65_021D9CE0 + + thumb_func_start MOD65_021D9D1C +MOD65_021D9D1C: ; 0x021D9D1C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x14] + mov r1, #0 + add r0, #0x68 + mov r2, #0x5c + bl MI_CpuFill8 + mov r0, #3 + str r0, [r4, #4] + ldr r1, _021D9D3C ; =MOD65_021D9D40 + add r0, r5, #0 + bl FUN_0201B6C4 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D9D3C: .word MOD65_021D9D40 + thumb_func_end MOD65_021D9D1C + + thumb_func_start MOD65_021D9D40 +MOD65_021D9D40: ; 0x021D9D40 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldr r7, [r5, #0x14] + add r4, r7, #0 + add r4, #0x68 + add r0, r4, #0 + add r0, #0x50 + ldrh r0, [r0] + sub r0, r0, #4 + add r1, r0, #0 + mul r1, r0 + mov r0, #0x10 + sub r0, r0, r1 + neg r0, r0 + cmp r0, #0 + ble _021D9D72 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021D9D80 +_021D9D72: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021D9D80: + bl _ffix + ldr r2, _021D9DF4 ; =0x00001666 + asr r1, r0, #0x1f + mov r3, #0 + bl _ll_mul + add r6, r1, #0 + mov r1, #4 + add r3, r0, #0 + add r0, r7, #0 + add r0, #0xc8 + lsl r2, r1, #9 + add r3, r3, r2 + ldr r2, _021D9DF8 ; =0x00000000 + ldr r0, [r0] + adc r6, r2 + lsl r2, r6, #0x14 + lsr r3, r3, #0xc + orr r3, r2 + asr r2, r3, #0xc + bl FUN_02007558 + add r1, r4, #0 + mov r0, #0 + add r1, #0x52 + strh r0, [r1] + add r1, r4, #0 + add r1, #0x50 + ldrh r1, [r1] + add r2, r1, #1 + add r1, r4, #0 + add r1, #0x50 + strh r2, [r1] + add r1, r4, #0 + add r1, #0x50 + ldrh r1, [r1] + cmp r1, #8 + bls _021D9DD8 + add r4, #0x50 + strh r0, [r4] + ldr r0, [r5, #4] + sub r0, r0, #1 + str r0, [r5, #4] +_021D9DD8: + ldr r0, [r5, #4] + cmp r0, #0 + bne _021D9DF0 + add r7, #0xc8 + ldr r0, [r7] + mov r1, #4 + mov r2, #0 + bl FUN_02007558 + add r0, r5, #0 + bl MOD65_021D9130 +_021D9DF0: + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9DF4: .word 0x00001666 +_021D9DF8: .word 0x00000000 + thumb_func_end MOD65_021D9D40 + + thumb_func_start MOD65_021D9DFC +MOD65_021D9DFC: ; 0x021D9DFC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x14] + mov r1, #0 + add r0, #0x68 + mov r2, #0x5c + bl MI_CpuFill8 + mov r0, #0x20 + str r0, [r4, #4] + ldr r1, _021D9E1C ; =MOD65_021D9E20 + add r0, r5, #0 + bl FUN_0201B6C4 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D9E1C: .word MOD65_021D9E20 + thumb_func_end MOD65_021D9DFC + + thumb_func_start MOD65_021D9E20 +MOD65_021D9E20: ; 0x021D9E20 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r6, [r5, #0x14] + add r4, r6, #0 + add r4, #0x68 + add r0, r4, #0 + add r0, #0x50 + ldrh r0, [r0] + bl FUN_0201B970 + asr r1, r0, #0x1f + lsr r2, r0, #0x13 + lsl r1, r1, #0xd + orr r1, r2 + mov r2, #2 + lsl r3, r0, #0xd + mov r0, #0 + lsl r2, r2, #0xa + add r2, r3, r2 + adc r1, r0 + lsl r1, r1, #0x14 + lsr r2, r2, #0xc + orr r2, r1 + add r1, r4, #0 + add r1, #0x50 + ldrh r3, [r1] + ldr r1, _021D9E94 ; =0x00000167 + cmp r3, r1 + bls _021D9E5C + b _021D9E64 +_021D9E5C: + add r0, r4, #0 + add r0, #0x50 + ldrh r0, [r0] + add r0, #0x5a +_021D9E64: + add r4, #0x50 + strh r0, [r4] + add r0, r6, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #3 + asr r2, r2, #0xc + bl FUN_02007558 + ldr r0, [r5, #4] + sub r0, r0, #1 + str r0, [r5, #4] + bne _021D9E90 + add r6, #0xc8 + ldr r0, [r6] + mov r1, #3 + mov r2, #0 + bl FUN_02007558 + add r0, r5, #0 + bl MOD65_021D9130 +_021D9E90: + pop {r4, r5, r6, pc} + nop +_021D9E94: .word 0x00000167 + thumb_func_end MOD65_021D9E20 + + thumb_func_start MOD65_021D9E98 +MOD65_021D9E98: ; 0x021D9E98 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r4, r2, #0 + mov r1, #0 + mov r2, #0x1c + add r5, r0, #0 + bl MI_CpuFill8 + bl FUN_020BB7F4 + bl G3X_Init + bl G3X_InitMtxStack + ldr r0, _021D9F34 ; =0x04000060 + ldr r1, _021D9F38 ; =0xFFFFCFFD + ldrh r2, [r0] + ldr r3, _021D9F3C ; =0x0000CFFB + and r2, r1 + strh r2, [r0] + ldrh r2, [r0] + and r2, r3 + strh r2, [r0] + add r2, r1, #2 + ldrh r6, [r0] + add r1, r1, #2 + sub r3, #0x1c + and r6, r2 + mov r2, #8 + orr r2, r6 + strh r2, [r0] + ldrh r2, [r0] + and r2, r1 + mov r1, #0x10 + orr r1, r2 + strh r1, [r0] + ldrh r1, [r0] + and r1, r3 + strh r1, [r0] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl G3X_SetFog + mov r0, #0 + ldr r2, _021D9F40 ; =0x00007FFF + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r1, _021D9F44 ; =0x04000540 + mov r0, #2 + str r0, [r1] + ldr r0, _021D9F48 ; =0xBFFF0000 + str r0, [r1, #0x40] + add r0, r5, #0 + add r1, r4, #0 + bl MOD65_021D9FA0 + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD65_021DA000 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r1, _021D9F4C ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #1 + orr r0, r2 + strh r0, [r1] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D9F34: .word 0x04000060 +_021D9F38: .word 0xFFFFCFFD +_021D9F3C: .word 0x0000CFFB +_021D9F40: .word 0x00007FFF +_021D9F44: .word 0x04000540 +_021D9F48: .word 0xBFFF0000 +_021D9F4C: .word 0x04000008 + thumb_func_end MOD65_021D9E98 + + thumb_func_start MOD65_021D9F50 +MOD65_021D9F50: ; 0x021D9F50 + push {r4, lr} + add r4, r0, #0 + bl FUN_020222AC + bl FUN_0201EBA4 + ldr r2, _021D9F84 ; =0x04000440 + mov r3, #0 + add r1, r2, #0 + str r3, [r2] + add r1, #0x14 + str r3, [r1] + mov r0, #2 + str r0, [r2] + str r3, [r1] + bl FUN_020B849C + bl FUN_020B02C8 + ldr r0, [r4, #4] + bl FUN_02006ED4 + ldr r0, _021D9F88 ; =0x04000540 + mov r1, #1 + str r1, [r0] + pop {r4, pc} + .align 2, 0 +_021D9F84: .word 0x04000440 +_021D9F88: .word 0x04000540 + thumb_func_end MOD65_021D9F50 + + thumb_func_start MOD65_021D9F8C +MOD65_021D9F8C: ; 0x021D9F8C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0201EB70 + ldr r0, [r4, #4] + bl FUN_020072E8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD65_021D9F8C + + thumb_func_start MOD65_021D9FA0 +MOD65_021D9FA0: ; 0x021D9FA0 + push {r4, r5, lr} + sub sp, #0x1c + ldr r5, _021D9FF8 ; =0x021DA41C + add r4, r0, #0 + add r2, r1, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x10 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, sp, #8 + str r0, [r3] + mov r0, #0 + strh r0, [r1] + strh r0, [r1, #2] + strh r0, [r1, #4] + strh r0, [r1, #6] + add r0, r2, #0 + bl FUN_0201EB64 + str r0, [r4] + mov r1, #1 + str r1, [sp] + ldr r0, [r4] + ldr r3, _021D9FFC ; =0x000005C1 + str r0, [sp, #4] + add r0, sp, #0x10 + lsl r1, r1, #0x10 + add r2, sp, #8 + bl FUN_0201ED10 + mov r1, #0x19 + ldr r2, [r4] + mov r0, #0 + lsl r1, r1, #0xe + bl FUN_0201EC94 + ldr r0, [r4] + bl FUN_0201EC88 + ldr r0, [r4] + bl FUN_0201EB8C + add sp, #0x1c + pop {r4, r5, pc} + .align 2, 0 +_021D9FF8: .word 0x021DA41C +_021D9FFC: .word 0x000005C1 + thumb_func_end MOD65_021D9FA0 + + thumb_func_start MOD65_021DA000 +MOD65_021DA000: ; 0x021DA000 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r5, r0, #0 + add r0, r2, #0 + add r4, r1, #0 + bl FUN_02006D98 + str r0, [r5, #4] + ldr r1, [r4] + add r0, sp, #0x10 + mov r2, #2 + bl FUN_02068B68 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r5, #4] + add r1, sp, #0x10 + mov r2, #0x80 + mov r3, #0x60 + bl FUN_020073A0 + ldrb r2, [r4, #8] + mov r1, #0x23 + add r6, r0, #0 + bl FUN_02007558 + str r6, [r5, #0x18] + add sp, #0x20 + pop {r4, r5, r6, pc} + thumb_func_end MOD65_021DA000 + + .section .rodata + ; 0x021DA040 + .incbin "baserom.nds", 0x2BBF60, 0x3E8 + + .section .data + ; 0x021DA440 + .incbin "baserom.nds", 0x2BC360, 0xA0 diff --git a/arm9/modules/66/asm/module_66.s b/arm9/modules/66/asm/module_66.s new file mode 100644 index 00000000..709a8b84 --- /dev/null +++ b/arm9/modules/66/asm/module_66.s @@ -0,0 +1,4216 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD66_021D74E0 +MOD66_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_0200628C + mov r2, #2 + add r5, r0, #0 + mov r0, #3 + mov r1, #0x11 + lsl r2, r2, #0x10 + bl FUN_0201681C + add r0, r4, #0 + mov r1, #0xe4 + mov r2, #0x11 + bl FUN_02006268 + mov r1, #0 + mov r2, #0xe4 + add r4, r0, #0 + bl Call_FillMemWithValue + ldr r0, _021D7534 ; =0x00000139 + str r5, [r4, #0x2c] + ldrb r0, [r5, r0] + cmp r0, #3 + bhs _021D7516 + b _021D7518 +_021D7516: + mov r0, #0 +_021D7518: + strb r0, [r4] + mov r0, #0x4f + lsl r0, r0, #2 + ldrh r0, [r5, r0] + mov r1, #0 + add r2, r1, #0 + strh r0, [r4, #2] + mov r0, #0x11 + str r0, [r4, #4] + mov r0, #0x37 + bl FUN_0200433C + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7534: .word 0x00000139 + thumb_func_end MOD66_021D74E0 + + thumb_func_start MOD66_021D7538 +MOD66_021D7538: ; 0x021D7538 + push {r4, lr} + bl FUN_02006278 + add r4, r0, #0 + ldr r1, [r4, #8] + cmp r1, #8 + bhi _021D75AA + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7552: ; jump table + .short _021D7564 - _021D7552 - 2 ; case 0 + .short _021D756C - _021D7552 - 2 ; case 1 + .short _021D75AA - _021D7552 - 2 ; case 2 + .short _021D7574 - _021D7552 - 2 ; case 3 + .short _021D7582 - _021D7552 - 2 ; case 4 + .short _021D75AA - _021D7552 - 2 ; case 5 + .short _021D7590 - _021D7552 - 2 ; case 6 + .short _021D75A6 - _021D7552 - 2 ; case 7 + .short _021D759E - _021D7552 - 2 ; case 8 +_021D7564: + bl MOD66_021D7A88 + str r0, [r4, #8] + b _021D75AA +_021D756C: + bl MOD66_021D7AB0 + str r0, [r4, #8] + b _021D75AA +_021D7574: + bl MOD66_021D7AE8 + str r0, [r4, #8] + add r0, r4, #0 + bl MOD66_021D77C4 + b _021D75AA +_021D7582: + bl MOD66_021D7AFC + str r0, [r4, #8] + add r0, r4, #0 + bl MOD66_021D77C4 + b _021D75AA +_021D7590: + bl MOD66_021D7B38 + str r0, [r4, #8] + add r0, r4, #0 + bl MOD66_021D77C4 + b _021D75AA +_021D759E: + bl MOD66_021D7B94 + str r0, [r4, #8] + b _021D75AA +_021D75A6: + mov r0, #1 + pop {r4, pc} +_021D75AA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD66_021D7538 + + thumb_func_start MOD66_021D75B0 +MOD66_021D75B0: ; 0x021D75B0 + push {r4, lr} + add r4, r0, #0 + bl FUN_02006278 + add r0, r4, #0 + bl FUN_0200627C + mov r0, #0x11 + bl FUN_020168D0 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD66_021D75B0 + + thumb_func_start MOD66_021D75C8 +MOD66_021D75C8: ; 0x021D75C8 + push {r4, lr} + add r4, r0, #0 + ldrb r2, [r4] + mov r1, #0x24 + add r3, r2, #0 + mul r3, r1 + ldr r1, _021D75FC ; =0x021D95E8 + ldr r1, [r1, r3] + cmp r1, #0 + beq _021D75DE + blx r1 +_021D75DE: + bl FUN_020AEEB8 + add r0, r4, #0 + bl MOD66_021D9220 + ldr r0, [r4, #0x28] + bl FUN_0201AB60 + ldr r3, _021D7600 ; =0x027E0000 + ldr r1, _021D7604 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + .align 2, 0 +_021D75FC: .word 0x021D95E8 +_021D7600: .word 0x027E0000 +_021D7604: .word 0x00003FF8 + thumb_func_end MOD66_021D75C8 + + thumb_func_start MOD66_021D7608 +MOD66_021D7608: ; 0x021D7608 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D7624 ; =0x021D95A0 + add r3, sp, #0 + mov r2, #5 +_021D7612: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7612 + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D7624: .word 0x021D95A0 + thumb_func_end MOD66_021D7608 + + thumb_func_start MOD66_021D7628 +MOD66_021D7628: ; 0x021D7628 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021D763C + cmp r0, #1 + beq _021D76E4 + cmp r0, #2 + beq _021D7710 + b _021D772E +_021D763C: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7738 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D773C ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + ldr r0, [r4, #0x2c] + ldr r1, [r0] + cmp r1, #0 + bne _021D767C + ldr r0, [r0, #4] + cmp r0, #0 + bne _021D767C + mov r0, #3 + str r0, [r4, #0x20] + mov r0, #0x1b + str r0, [r4, #0x24] + b _021D7694 +_021D767C: + asr r0, r1, #4 + lsr r0, r0, #0x1b + add r0, r1, r0 + asr r0, r0, #5 + str r0, [r4, #0x20] + ldr r0, [r4, #0x2c] + ldr r1, [r0, #4] + asr r0, r1, #4 + lsr r0, r0, #0x1b + add r0, r1, r0 + asr r0, r0, #5 + str r0, [r4, #0x24] +_021D7694: + ldr r0, [r4, #0x20] + ldr r2, _021D7740 ; =0x0000017E + str r0, [r4, #0x18] + ldr r0, [r4, #0x24] + mov r1, #0x1a + str r0, [r4, #0x1c] + ldr r3, [r4, #4] + mov r0, #1 + bl FUN_0200A86C + add r1, r4, #0 + add r1, #0x80 + str r0, [r1] + mov r2, #0x8b + ldr r3, [r4, #4] + mov r0, #1 + mov r1, #0x1a + lsl r2, r2, #2 + bl FUN_0200A86C + add r1, r4, #0 + add r1, #0x84 + str r0, [r1] + ldr r1, [r4, #4] + mov r0, #0x16 + bl FUN_020219F4 + add r1, r4, #0 + add r1, #0x88 + str r0, [r1] + ldr r0, [r4, #4] + bl FUN_020345A8 + str r0, [r4, #0x30] + ldr r0, _021D7744 ; =0x021D9AA0 + ldr r1, [r4, #4] + bl MOD66_021D94A4 + str r0, [r4, #0x40] + b _021D772E +_021D76E4: + bl MOD66_021D7608 + ldr r0, [r4, #4] + bl FUN_02016B94 + str r0, [r4, #0x28] + ldr r1, [r4, #0x28] + add r0, r4, #0 + bl MOD66_021D77E4 + add r0, r4, #0 + bl MOD66_021D78B4 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + add r0, r4, #0 + bl MOD66_021D913C + b _021D772E +_021D7710: + ldr r0, _021D7748 ; =MOD66_021D75C8 + add r1, r4, #0 + bl FUN_02015F10 + ldrb r1, [r4] + mov r0, #0x24 + add r2, r1, #0 + mul r2, r0 + ldr r0, _021D774C ; =0x021D95D8 + ldr r0, [r0, r2] + str r0, [r4, #0x38] + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #1 + pop {r4, pc} +_021D772E: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D7738: .word 0xFFFFE0FF +_021D773C: .word 0x04001000 +_021D7740: .word 0x0000017E +_021D7744: .word 0x021D9AA0 +_021D7748: .word MOD66_021D75C8 +_021D774C: .word 0x021D95D8 + thumb_func_end MOD66_021D7628 + + thumb_func_start MOD66_021D7750 +MOD66_021D7750: ; 0x021D7750 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_0201CD04 + mov r0, #0x1f + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #0x1f + mov r1, #0 + bl FUN_0201E74C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + add r0, r5, #0 + bl MOD66_021D91F4 + add r0, r5, #0 + bl MOD66_021D7A34 + mov r4, #0 +_021D7782: + lsl r1, r4, #0x18 + ldr r0, [r5, #0x28] + lsr r1, r1, #0x18 + bl FUN_020178A0 + add r4, r4, #1 + cmp r4, #8 + blt _021D7782 + ldr r0, [r5, #0x28] + bl FUN_02016A18 + ldr r0, [r5, #0x40] + bl MOD66_021D9544 + ldr r0, [r5, #0x30] + bl FUN_020345DC + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + bl FUN_02021A20 + add r0, r5, #0 + add r0, #0x84 + ldr r0, [r0] + bl FUN_0200A8B8 + add r5, #0x80 + ldr r0, [r5] + bl FUN_0200A8B8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD66_021D7750 + + thumb_func_start MOD66_021D77C4 +MOD66_021D77C4: ; 0x021D77C4 + push {r4, lr} + add r4, r0, #0 + ldrb r2, [r4] + mov r1, #0x24 + add r3, r2, #0 + mul r3, r1 + ldr r1, _021D77E0 ; =0x021D95E0 + ldr r1, [r1, r3] + blx r1 + add r0, r4, #0 + bl MOD66_021D9214 + pop {r4, pc} + nop +_021D77E0: .word 0x021D95E0 + thumb_func_end MOD66_021D77C4 + + thumb_func_start MOD66_021D77E4 +MOD66_021D77E4: ; 0x021D77E4 + push {r4, r5, r6, r7, lr} + sub sp, #0xf4 + ldr r4, _021D78AC ; =0x021D9590 + add r3, sp, #4 + str r0, [sp] + add r6, r1, #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_02016BBC + ldr r4, _021D78B0 ; =0x021D9634 + add r3, sp, #0x14 + mov r2, #0x1c +_021D7806: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7806 + mov r4, #0 + add r7, r4, #0 + add r5, sp, #0x14 +_021D7814: + lsl r1, r4, #0x18 + add r0, r6, #0 + lsr r1, r1, #0x18 + add r2, r5, #0 + mov r3, #0 + bl FUN_02016C18 + lsl r1, r4, #0x18 + add r0, r6, #0 + lsr r1, r1, #0x18 + add r4, r4, #1 + bl FUN_02018744 + add r7, r7, #1 + add r5, #0x1c + cmp r7, #8 + blt _021D7814 + ldr r3, [sp] + mov r0, #0 + ldr r3, [r3, #4] + mov r1, #0x20 + add r2, r0, #0 + bl FUN_02017F18 + ldr r3, [sp] + mov r0, #1 + ldr r3, [r3, #4] + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r3, [sp] + mov r0, #2 + ldr r3, [r3, #4] + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r3, [sp] + mov r0, #3 + ldr r3, [r3, #4] + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r3, [sp] + mov r0, #4 + ldr r3, [r3, #4] + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r3, [sp] + mov r0, #5 + ldr r3, [r3, #4] + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r3, [sp] + mov r0, #6 + ldr r3, [r3, #4] + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r3, [sp] + mov r0, #7 + ldr r3, [r3, #4] + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + add sp, #0xf4 + pop {r4, r5, r6, r7, pc} + nop +_021D78AC: .word 0x021D9590 +_021D78B0: .word 0x021D9634 + thumb_func_end MOD66_021D77E4 + + thumb_func_start MOD66_021D78B4 +MOD66_021D78B4: ; 0x021D78B4 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r1, [r5, #4] + mov r0, #0x11 + bl FUN_02006670 + add r4, r0, #0 + mov r0, #0x13 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x28] + ldr r1, [r5, #4] + add r2, r4, #0 + mov r3, #0x11 + bl FUN_02079B60 + mov r0, #0x14 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x28] + ldr r1, [r5, #4] + add r2, r4, #0 + mov r3, #0x11 + bl FUN_02079B60 + mov r0, #0x15 + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x28] + ldr r1, [r5, #4] + add r2, r4, #0 + mov r3, #0x11 + bl FUN_02079B60 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + ldr r0, [r5, #0x28] + ldr r1, [r5, #4] + add r2, r4, #0 + mov r3, #0x11 + bl FUN_02079B60 + mov r0, #1 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x28] + ldr r1, [r5, #4] + add r2, r4, #0 + mov r3, #0x11 + bl FUN_02079B60 + ldr r0, [r5, #4] + add r3, r5, #0 + str r0, [sp] + add r0, r4, #0 + mov r1, #0x11 + mov r2, #0x18 + add r3, #0xb8 + bl FUN_02079C40 + add r1, r5, #0 + add r1, #0x98 + str r0, [r1] + ldr r0, [r5, #4] + add r3, r5, #0 + str r0, [sp] + add r0, r4, #0 + mov r1, #0x11 + mov r2, #0x16 + add r3, #0xbc + bl FUN_02079C40 + add r1, r5, #0 + add r1, #0x9c + str r0, [r1] + ldr r0, [r5, #4] + add r3, r5, #0 + str r0, [sp] + add r0, r4, #0 + mov r1, #0x11 + mov r2, #0x17 + add r3, #0xc0 + bl FUN_02079C40 + add r1, r5, #0 + add r1, #0xa0 + str r0, [r1] + ldr r0, [r5, #4] + add r3, r5, #0 + str r0, [sp] + add r0, r4, #0 + mov r1, #0x11 + mov r2, #0x19 + add r3, #0xc4 + bl FUN_02079C40 + add r1, r5, #0 + add r1, #0xa4 + str r0, [r1] + ldr r0, [r5, #4] + add r3, r5, #0 + str r0, [sp] + add r0, r4, #0 + mov r1, #0x11 + mov r2, #0x1a + add r3, #0xc8 + bl FUN_02079C40 + add r1, r5, #0 + add r1, #0xa8 + str r0, [r1] + ldr r0, [r5, #4] + add r3, r5, #0 + str r0, [sp] + add r0, r4, #0 + mov r1, #0x11 + mov r2, #0x1b + add r3, #0xcc + bl FUN_02079C40 + add r1, r5, #0 + add r1, #0xac + str r0, [r1] + ldr r0, [r5, #4] + add r3, r5, #0 + str r0, [sp] + add r0, r4, #0 + mov r1, #0x11 + mov r2, #0x1c + add r3, #0xd0 + bl FUN_02079C40 + add r1, r5, #0 + add r1, #0xb0 + str r0, [r1] + ldr r0, [r5, #4] + add r3, r5, #0 + str r0, [sp] + add r0, r4, #0 + mov r1, #0x11 + mov r2, #0x1d + add r3, #0xd4 + bl FUN_02079C40 + add r1, r5, #0 + add r1, #0xb4 + str r0, [r1] + add r0, r4, #0 + bl FUN_020066F4 + mov r1, #0x1e + ldr r2, [r5, #4] + mov r0, #0 + lsl r1, r1, #4 + bl FUN_02002ED0 + mov r1, #0x1e + ldr r2, [r5, #4] + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02002ED0 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD66_021D78B4 + + thumb_func_start MOD66_021D7A34 +MOD66_021D7A34: ; 0x021D7A34 + push {r4, lr} + add r4, r0, #0 + add r0, #0xb4 + ldr r0, [r0] + bl FUN_02016A18 + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + bl FUN_02016A18 + add r0, r4, #0 + add r0, #0xac + ldr r0, [r0] + bl FUN_02016A18 + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + bl FUN_02016A18 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + bl FUN_02016A18 + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + bl FUN_02016A18 + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + bl FUN_02016A18 + add r4, #0x98 + ldr r0, [r4] + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD66_021D7A34 + + thumb_func_start MOD66_021D7A88 +MOD66_021D7A88: ; 0x021D7A88 + push {r4, lr} + add r4, r0, #0 + bl MOD66_021D7628 + cmp r0, #1 + beq _021D7A98 + mov r0, #0 + pop {r4, pc} +_021D7A98: + ldrb r2, [r4] + mov r1, #0x24 + add r0, r4, #0 + add r3, r2, #0 + mul r3, r1 + ldr r1, _021D7AAC ; =0x021D95C8 + ldr r1, [r1, r3] + blx r1 + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_021D7AAC: .word 0x021D95C8 + thumb_func_end MOD66_021D7A88 + + thumb_func_start MOD66_021D7AB0 +MOD66_021D7AB0: ; 0x021D7AB0 + push {r4, lr} + add r4, r0, #0 + ldrb r2, [r4] + mov r1, #0x24 + add r3, r2, #0 + mul r3, r1 + ldr r1, _021D7AE0 ; =0x021D95CC + ldr r1, [r1, r3] + blx r1 + cmp r0, #1 + beq _021D7ACA + mov r0, #1 + pop {r4, pc} +_021D7ACA: + ldrb r2, [r4] + mov r1, #0x24 + add r0, r4, #0 + add r3, r2, #0 + mul r3, r1 + ldr r1, _021D7AE4 ; =0x021D95D0 + ldr r1, [r1, r3] + blx r1 + mov r0, #3 + pop {r4, pc} + nop +_021D7AE0: .word 0x021D95CC +_021D7AE4: .word 0x021D95D0 + thumb_func_end MOD66_021D7AB0 + + thumb_func_start MOD66_021D7AE8 +MOD66_021D7AE8: ; 0x021D7AE8 + push {r3, lr} + bl FUN_0200E308 + cmp r0, #0 + beq _021D7AF6 + mov r0, #4 + pop {r3, pc} +_021D7AF6: + mov r0, #3 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD66_021D7AE8 + + thumb_func_start MOD66_021D7AFC +MOD66_021D7AFC: ; 0x021D7AFC + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x38] + blx r1 + cmp r0, #1 + beq _021D7B1C + ldrb r2, [r4] + mov r1, #0x24 + add r0, r4, #0 + add r3, r2, #0 + mul r3, r1 + ldr r1, _021D7B30 ; =0x021D95DC + ldr r1, [r1, r3] + blx r1 + mov r0, #4 + pop {r4, pc} +_021D7B1C: + ldrb r2, [r4] + mov r1, #0x24 + add r0, r4, #0 + add r3, r2, #0 + mul r3, r1 + ldr r1, _021D7B34 ; =0x021D95D4 + ldr r1, [r1, r3] + blx r1 + mov r0, #6 + pop {r4, pc} + .align 2, 0 +_021D7B30: .word 0x021D95DC +_021D7B34: .word 0x021D95D4 + thumb_func_end MOD66_021D7AFC + + thumb_func_start MOD66_021D7B38 +MOD66_021D7B38: ; 0x021D7B38 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + bl FUN_0200E308 + cmp r0, #0 + beq _021D7B76 + mov r1, #0 + ldr r0, _021D7B8C ; =0x04000050 + add r2, r1, #0 + mov r3, #0x1f + str r1, [sp] + bl G2x_SetBlendAlpha_ + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + mov r0, #0 + bl FUN_0200E388 + mov r0, #1 + bl FUN_0200E388 + add sp, #4 + mov r0, #8 + pop {r3, r4, pc} +_021D7B76: + ldrb r2, [r4] + mov r1, #0x24 + add r0, r4, #0 + add r3, r2, #0 + mul r3, r1 + ldr r1, _021D7B90 ; =0x021D95DC + ldr r1, [r1, r3] + blx r1 + mov r0, #6 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021D7B8C: .word 0x04000050 +_021D7B90: .word 0x021D95DC + thumb_func_end MOD66_021D7B38 + + thumb_func_start MOD66_021D7B94 +MOD66_021D7B94: ; 0x021D7B94 + push {r4, lr} + add r4, r0, #0 + ldrb r2, [r4] + mov r1, #0x24 + add r3, r2, #0 + mul r3, r1 + ldr r1, _021D7BB0 ; =0x021D95E4 + ldr r1, [r1, r3] + blx r1 + add r0, r4, #0 + bl MOD66_021D7750 + mov r0, #7 + pop {r4, pc} + .align 2, 0 +_021D7BB0: .word 0x021D95E4 + thumb_func_end MOD66_021D7B94 + + thumb_func_start MOD66_021D7BB4 +MOD66_021D7BB4: ; 0x021D7BB4 + push {r4, lr} + add r4, r0, #0 + mov r1, #0x11 + ldr r0, [r4, #4] + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x11 + mov r1, #0 + lsl r2, r2, #4 + str r0, [r4, #0x34] + bl Call_FillMemWithValue + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD66_021D7BB4 + + thumb_func_start MOD66_021D7BD4 +MOD66_021D7BD4: ; 0x021D7BD4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r4, [r5, #0x34] + bl MOD66_021D89B8 + ldrb r0, [r5] + cmp r0, #2 + beq _021D7BEA + add r0, r5, #0 + bl MOD66_021D8E34 +_021D7BEA: + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + bl MOD66_021D9350 + add r0, r5, #0 + bl MOD66_021D8670 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD66_021D7BD4 + + thumb_func_start MOD66_021D7C04 +MOD66_021D7C04: ; 0x021D7C04 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r4, [r5, #0x34] + ldr r1, [r4] + cmp r1, #0 + beq _021D7C16 + cmp r1, #1 + beq _021D7C60 + b _021D7CA2 +_021D7C16: + ldr r1, [r5, #0x18] + str r1, [r4, #0x18] + ldr r1, [r5, #0x1c] + str r1, [r4, #0x1c] + mov r1, #0 + mvn r1, r1 + str r1, [r4, #0x20] + ldr r1, [r4, #0x18] + lsl r2, r1, #4 + add r1, r4, #0 + sub r2, #0x68 + add r1, #0x8c + str r2, [r1] + ldr r1, [r4, #0x1c] + lsl r2, r1, #4 + add r1, r4, #0 + sub r2, #0x60 + add r1, #0x90 + str r2, [r1] + add r1, r4, #0 + add r2, r4, #0 + add r1, #0x8c + add r2, #0x90 + ldr r1, [r1] + ldr r2, [r2] + bl MOD66_021D8BF0 + add r0, r5, #0 + bl MOD66_021D8554 + ldrb r0, [r5] + cmp r0, #2 + beq _021D7CA2 + add r0, r5, #0 + bl MOD66_021D8CD0 + b _021D7CA2 +_021D7C60: + bl MOD66_021D8838 + add r0, r5, #0 + bl MOD66_021D8AF4 + ldr r0, [r5, #4] + add r1, r5, #0 + str r0, [sp] + add r0, r5, #0 + add r0, #0xd8 + add r1, #0xdc + mov r2, #0x49 + ldr r3, [r5, #0x2c] + lsl r2, r2, #2 + add r2, r3, r2 + ldr r0, [r0] + ldr r1, [r1] + mov r3, #0x14 + bl MOD66_021D9228 + add r1, r4, #0 + add r1, #0x9c + str r0, [r1] + add r0, r5, #0 + bl MOD66_021D818C + add r0, r5, #0 + bl MOD66_021D8140 + mov r0, #0 + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D7CA2: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD66_021D7C04 + + thumb_func_start MOD66_021D7CAC +MOD66_021D7CAC: ; 0x021D7CAC + push {lr} + sub sp, #0xc + mov r3, #0 + str r3, [r0, #0x14] + mov r1, #6 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + ldr r0, [r0, #4] + mov r2, #0x25 + str r0, [sp, #8] + add r0, r1, #0 + mov r1, #0x11 + bl FUN_0200E1D0 + ldr r0, _021D7CF0 ; =0x0000068F + bl FUN_020054C8 + mov r0, #0 + bl FUN_0200E394 + mov r0, #1 + bl FUN_0200E394 + mov r1, #4 + ldr r0, _021D7CF4 ; =0x04000050 + mov r2, #8 + mov r3, #0x1c + str r1, [sp] + bl G2x_SetBlendAlpha_ + mov r0, #0 + add sp, #0xc + pop {pc} + .align 2, 0 +_021D7CF0: .word 0x0000068F +_021D7CF4: .word 0x04000050 + thumb_func_end MOD66_021D7CAC + + thumb_func_start MOD66_021D7CF8 +MOD66_021D7CF8: ; 0x021D7CF8 + push {lr} + sub sp, #0xc + mov r3, #0 + str r3, [r0, #0x14] + mov r1, #6 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + ldr r0, [r0, #4] + mov r1, #0x10 + str r0, [sp, #8] + mov r0, #2 + mov r2, #0x24 + bl FUN_0200E1D0 + mov r0, #0x69 + lsl r0, r0, #4 + bl FUN_020054C8 + mov r0, #0 + add sp, #0xc + pop {pc} + thumb_func_end MOD66_021D7CF8 + + thumb_func_start MOD66_021D7D24 +MOD66_021D7D24: ; 0x021D7D24 + push {lr} + sub sp, #0xc + mov r3, #0 + str r3, [r0, #0x14] + mov r1, #6 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + ldr r0, [r0, #4] + mov r1, #0x11 + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + bl FUN_0200E1D0 + ldr r0, _021D7D64 ; =0x0000068F + bl FUN_020054C8 + mov r0, #0 + bl FUN_0200E394 + mov r1, #4 + ldr r0, _021D7D68 ; =0x04000050 + mov r2, #8 + mov r3, #0x1c + str r1, [sp] + bl G2x_SetBlendAlpha_ + mov r0, #0 + add sp, #0xc + pop {pc} + nop +_021D7D64: .word 0x0000068F +_021D7D68: .word 0x04000050 + thumb_func_end MOD66_021D7D24 + + thumb_func_start MOD66_021D7D6C +MOD66_021D7D6C: ; 0x021D7D6C + push {lr} + sub sp, #0xc + mov r3, #0 + str r3, [r0, #0x14] + mov r1, #6 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + ldr r0, [r0, #4] + mov r1, #0x10 + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + bl FUN_0200E1D0 + mov r0, #0x69 + lsl r0, r0, #4 + bl FUN_020054C8 + mov r0, #0 + add sp, #0xc + pop {pc} + thumb_func_end MOD66_021D7D6C + + thumb_func_start MOD66_021D7D98 +MOD66_021D7D98: ; 0x021D7D98 + push {r3, lr} + ldr r1, [r0, #0x34] + ldrb r3, [r1, #0x14] + cmp r3, #1 + bhi _021D7DB6 + ldr r1, _021D7DCC ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #2 + tst r1, r2 + beq _021D7DB6 + ldr r0, _021D7DD0 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + pop {r3, pc} +_021D7DB6: + cmp r3, #1 + bls _021D7DBE + mov r0, #0 + pop {r3, pc} +_021D7DBE: + ldr r1, _021D7DCC ; =0x021C48B8 + ldr r1, [r1, #0x44] + bl MOD66_021D8054 + mov r0, #0 + pop {r3, pc} + nop +_021D7DCC: .word 0x021C48B8 +_021D7DD0: .word 0x000005DD + thumb_func_end MOD66_021D7D98 + + thumb_func_start MOD66_021D7DD4 +MOD66_021D7DD4: ; 0x021D7DD4 + push {r3, lr} + ldr r1, [r0, #0x34] + ldrb r1, [r1, #0x14] + cmp r1, #1 + bhi _021D7E0E + ldr r2, _021D7E24 ; =0x021C48B8 + ldr r3, [r2, #0x48] + mov r2, #1 + tst r2, r3 + beq _021D7DFE + bl MOD66_021D90F0 + cmp r0, #0 + beq _021D7DFA + ldr r0, _021D7E28 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + pop {r3, pc} +_021D7DFA: + mov r0, #0 + pop {r3, pc} +_021D7DFE: + mov r2, #2 + tst r2, r3 + beq _021D7E0E + ldr r0, _021D7E28 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + pop {r3, pc} +_021D7E0E: + cmp r1, #1 + bls _021D7E16 + mov r0, #0 + pop {r3, pc} +_021D7E16: + ldr r1, _021D7E24 ; =0x021C48B8 + ldr r1, [r1, #0x44] + bl MOD66_021D8054 + mov r0, #0 + pop {r3, pc} + nop +_021D7E24: .word 0x021C48B8 +_021D7E28: .word 0x000005DD + thumb_func_end MOD66_021D7DD4 + + thumb_func_start MOD66_021D7E2C +MOD66_021D7E2C: ; 0x021D7E2C + push {r3, lr} + ldr r2, _021D7E4C ; =0x021C48B8 + mov r1, #2 + ldr r3, [r2, #0x48] + tst r1, r3 + beq _021D7E42 + ldr r0, _021D7E50 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + pop {r3, pc} +_021D7E42: + ldr r1, [r2, #0x44] + bl MOD66_021D8054 + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_021D7E4C: .word 0x021C48B8 +_021D7E50: .word 0x000005DD + thumb_func_end MOD66_021D7E2C + + thumb_func_start MOD66_021D7E54 +MOD66_021D7E54: ; 0x021D7E54 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r4, [r5, #0x34] + mov r1, #1 + ldrb r2, [r4, #0x12] + tst r1, r2 + beq _021D7E80 + ldrb r1, [r4, #0x15] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + cmp r1, #2 + blo _021D7E94 + bl MOD66_021D8140 + mov r0, #0 + strb r0, [r4, #0x12] + strh r0, [r4, #0x16] + ldrb r1, [r4, #0x15] + mov r0, #0xf + bic r1, r0 + strb r1, [r4, #0x15] + b _021D7E94 +_021D7E80: + ldrb r1, [r4, #0x10] + cmp r1, #1 + bne _021D7E94 + ldrh r1, [r4, #0x16] + cmp r1, #1 + bne _021D7E94 + ldr r2, [r4, #0x20] + mov r1, #0 + bl MOD66_021D8480 +_021D7E94: + add r0, r5, #0 + bl MOD66_021D8380 + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD66_021D7E54 + + thumb_func_start MOD66_021D7EA0 +MOD66_021D7EA0: ; 0x021D7EA0 + push {r3, lr} + add r1, r0, #0 + ldr r0, [r1, #0x34] + ldrb r1, [r1] + add r0, #0x9c + ldr r0, [r0] + bl MOD66_021D945C + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD66_021D7EA0 + + thumb_func_start MOD66_021D7EB4 +MOD66_021D7EB4: ; 0x021D7EB4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + add r1, r6, #0 + add r1, #0x94 + ldr r5, [r1] + add r1, r6, #0 + add r1, #0x90 + ldr r7, [r1] + add r1, r6, #0 + add r1, #0x8c + ldr r1, [r1] + ldr r4, [r6, #0x34] + cmp r1, #0 + bne _021D7ED8 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021D7ED8: + add r1, r6, #0 + mov r2, #0 + add r1, #0x8c + str r2, [r1] + cmp r5, #0 + bne _021D7EF8 + add r4, #0x58 + add r1, r4, #0 + bl MOD66_021D82B8 + add r0, r6, #0 + bl MOD66_021D8494 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021D7EF8: + add r1, r4, #0 + add r1, #0x58 + add r2, r5, #0 + bl MOD66_021D82B8 + add r0, r6, #0 + add r0, #0x88 + ldr r0, [r0] + bl FUN_02021A4C + ldr r2, [r4, #0x18] + ldr r3, [r4, #0x1c] + add r0, r6, #0 + add r1, r7, #0 + bl MOD66_021D81B4 + ldrh r0, [r5, #4] + ldr r2, _021D7FA0 ; =0x0000013B + mov r1, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldrh r0, [r5, #6] + mov r3, #0xe + str r0, [sp, #4] + ldr r0, [r6, #4] + str r0, [sp, #8] + ldr r0, [r6, #0x28] + bl FUN_0200D300 + ldrh r0, [r5, #4] + cmp r0, #1 + bhi _021D7F40 + add r7, r4, #0 + add r7, #0x38 + b _021D7F44 +_021D7F40: + add r7, r4, #0 + add r7, #0x48 +_021D7F44: + str r7, [r4, #0x78] + ldrb r0, [r4, #0x15] + mov r1, #0xf0 + ldr r2, _021D7FA0 ; =0x0000013B + bic r0, r1 + ldrh r1, [r5, #4] + mov r3, #0xe + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1c + lsr r1, r1, #0x18 + orr r0, r1 + strb r0, [r4, #0x15] + ldrh r0, [r5, #4] + mov r1, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + add r0, r7, #0 + bl FUN_0200D6F8 + add r0, r7, #0 + mov r1, #0xf + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r3, [sp, #8] + add r6, #0x88 + ldr r2, [r6] + add r0, r7, #0 + mov r1, #1 + bl FUN_0201BD84 + add r0, r7, #0 + bl FUN_020191D0 + add r4, #0x58 + add r0, r4, #0 + bl FUN_020191D0 + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D7FA0: .word 0x0000013B + thumb_func_end MOD66_021D7EB4 + + thumb_func_start MOD66_021D7FA4 +MOD66_021D7FA4: ; 0x021D7FA4 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r6, r1, #0 + mov r0, #1 + sub r0, r0, r6 + ldr r1, _021D7FF4 ; =0x021D9720 + lsl r0, r0, #2 + add r0, r1, r0 + bl FUN_02020988 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _021D7FC8 + cmp r6, #1 + bne _021D7FCE +_021D7FC8: + add sp, #8 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_021D7FCE: + mov r1, #0x12 + add r0, sp, #4 + strh r1, [r0] + add r0, sp, #4 + str r0, [sp] + ldr r3, _021D7FF8 ; =0x021C48F8 + ldr r0, [r5, #0x28] + ldrh r2, [r3, #0x1c] + ldrh r3, [r3, #0x1e] + mov r1, #5 + bl FUN_0201AFBC + cmp r0, #0 + beq _021D7FEE + mov r4, #0 + mvn r4, r4 +_021D7FEE: + add r0, r4, #0 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D7FF4: .word 0x021D9720 +_021D7FF8: .word 0x021C48F8 + thumb_func_end MOD66_021D7FA4 + + thumb_func_start MOD66_021D7FFC +MOD66_021D7FFC: ; 0x021D7FFC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r1, [r5, #0x2c] + ldr r0, _021D8050 ; =0x00000139 + ldr r4, [r5, #0x34] + ldrb r0, [r1, r0] + cmp r0, #2 + bne _021D8010 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8010: + bl FUN_02020A98 + cmp r0, #0 + ldrb r0, [r4, #0x14] + beq _021D803E + cmp r0, #0 + bne _021D804C + ldrb r1, [r4, #0x10] + add r0, r5, #0 + bl MOD66_021D7FA4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _021D804C + ldrb r1, [r4, #0x10] + add r0, r5, #0 + bl MOD66_021D8E70 + mov r0, #3 + strb r0, [r4, #0x14] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D803E: + cmp r0, #3 + beq _021D8046 + cmp r0, #1 + bne _021D804C +_021D8046: + ldrb r0, [r4, #0x14] + sub r0, r0, #1 + strb r0, [r4, #0x14] +_021D804C: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8050: .word 0x00000139 + thumb_func_end MOD66_021D7FFC + + thumb_func_start MOD66_021D8054 +MOD66_021D8054: ; 0x021D8054 + push {r3, r4, r5, lr} + ldr r4, [r0, #0x34] + add r5, r1, #0 + ldrb r1, [r4, #0x11] + cmp r1, #0 + beq _021D8084 + mov r0, #0xf0 + tst r0, r5 + bne _021D813C + ldrb r2, [r4, #0x15] + lsl r0, r2, #0x1c + lsr r1, r0, #0x1c + cmp r1, #1 + bne _021D813C + mov r0, #0xf + bic r2, r0 + add r0, r1, #1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0xf + and r0, r1 + orr r0, r2 + strb r0, [r4, #0x15] + pop {r3, r4, r5, pc} +_021D8084: + bl MOD66_021D7FFC + cmp r0, #0 + bne _021D813C + mov r0, #0xf0 + tst r0, r5 + bne _021D80B0 + ldrb r2, [r4, #0x15] + lsl r0, r2, #0x1c + lsr r1, r0, #0x1c + cmp r1, #1 + bne _021D813C + mov r0, #0xf + bic r2, r0 + add r0, r1, #1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0xf + and r0, r1 + orr r0, r2 + strb r0, [r4, #0x15] + pop {r3, r4, r5, pc} +_021D80B0: + mov r0, #0x40 + tst r0, r5 + beq _021D80C8 + ldr r0, [r4, #0x1c] + cmp r0, #7 + blt _021D80C8 + sub r0, r0, #1 + str r0, [r4, #0x1c] + ldrb r1, [r4, #0x11] + mov r0, #8 + orr r0, r1 + strb r0, [r4, #0x11] +_021D80C8: + mov r0, #0x80 + tst r0, r5 + beq _021D80E0 + ldr r0, [r4, #0x1c] + cmp r0, #0x1b + bgt _021D80E0 + add r0, r0, #1 + str r0, [r4, #0x1c] + ldrb r1, [r4, #0x11] + mov r0, #4 + orr r0, r1 + strb r0, [r4, #0x11] +_021D80E0: + mov r0, #0x10 + tst r0, r5 + beq _021D80F8 + ldr r0, [r4, #0x18] + cmp r0, #0x1b + bgt _021D80F8 + add r0, r0, #1 + str r0, [r4, #0x18] + ldrb r1, [r4, #0x11] + mov r0, #1 + orr r0, r1 + strb r0, [r4, #0x11] +_021D80F8: + mov r0, #0x20 + tst r0, r5 + beq _021D8110 + ldr r0, [r4, #0x18] + cmp r0, #2 + blt _021D8110 + sub r0, r0, #1 + str r0, [r4, #0x18] + ldrb r1, [r4, #0x11] + mov r0, #2 + orr r0, r1 + strb r0, [r4, #0x11] +_021D8110: + mov r0, #3 + strb r0, [r4, #0x13] + ldrb r1, [r4, #0x11] + mov r0, #0x80 + orr r0, r1 + strb r0, [r4, #0x11] + ldrb r0, [r4, #0x12] + cmp r0, #0 + beq _021D8128 + ldrh r0, [r4, #0x16] + add r0, r0, #1 + b _021D812A +_021D8128: + mov r0, #0 +_021D812A: + strh r0, [r4, #0x16] + mov r0, #0 + strb r0, [r4, #0x12] + ldrb r1, [r4, #0x15] + mov r0, #0xf + bic r1, r0 + mov r0, #1 + orr r0, r1 + strb r0, [r4, #0x15] +_021D813C: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD66_021D8054 + + thumb_func_start MOD66_021D8140 +MOD66_021D8140: ; 0x021D8140 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r4, [r5, #0x34] + ldr r1, [r4, #0x1c] + str r1, [sp] + add r1, r4, #0 + ldr r2, [r4, #0x20] + ldr r3, [r4, #0x18] + add r1, #0x28 + bl MOD66_021D820C + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + ldr r1, [r4, #0x20] + ldr r2, [r4, #0x18] + ldr r3, [r4, #0x1c] + bl MOD66_021D93F4 + ldrb r0, [r4, #0x10] + cmp r0, #1 + bne _021D818A + add r1, r4, #0 + add r1, #0xa0 + ldr r1, [r1] + ldr r2, [r4, #0x20] + add r0, r5, #0 + bl MOD66_021D8480 + ldr r0, [r5, #0x28] + mov r1, #4 + bl FUN_0201AC68 + ldr r0, [r5, #0x28] + mov r1, #5 + bl FUN_0201AC68 +_021D818A: + pop {r3, r4, r5, pc} + thumb_func_end MOD66_021D8140 + + thumb_func_start MOD66_021D818C +MOD66_021D818C: ; 0x021D818C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r4, [r5, #0x34] + ldr r0, [r4, #0x20] + str r0, [r4, #0x24] + ldr r0, [r5, #0x30] + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x1c] + bl FUN_020345F0 + str r0, [r4, #0x20] + ldrh r3, [r5, #2] + ldr r0, [r5, #0x40] + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x1c] + bl MOD66_021D9558 + add r4, #0xa0 + str r0, [r4] + pop {r3, r4, r5, pc} + thumb_func_end MOD66_021D818C + + thumb_func_start MOD66_021D81B4 +MOD66_021D81B4: ; 0x021D81B4 + push {r3, r4, r5, lr} + add r4, r0, #0 + cmp r1, #0 + beq _021D81CA + add r0, r1, #0 + ldr r1, [r4, #4] + add r4, #0x88 + ldr r2, [r4] + bl FUN_02064E60 + pop {r3, r4, r5, pc} +_021D81CA: + ldr r5, _021D8204 ; =0x021D97B4 + mov r1, #0 +_021D81CE: + ldrh r0, [r5] + cmp r2, r0 + bne _021D81EC + ldrh r0, [r5, #2] + cmp r3, r0 + bne _021D81EC + ldr r0, _021D8208 ; =0x021D97B8 + lsl r1, r1, #3 + ldr r0, [r0, r1] + ldr r1, [r4, #4] + add r4, #0x88 + ldr r2, [r4] + bl FUN_02064E60 + pop {r3, r4, r5, pc} +_021D81EC: + add r1, r1, #1 + add r5, #8 + cmp r1, #0xd + blo _021D81CE + ldr r1, [r4, #4] + add r4, #0x88 + ldr r2, [r4] + mov r0, #0 + bl FUN_02064E60 + pop {r3, r4, r5, pc} + nop +_021D8204: .word 0x021D97B4 +_021D8208: .word 0x021D97B8 + thumb_func_end MOD66_021D81B4 + + thumb_func_start MOD66_021D820C +MOD66_021D820C: ; 0x021D820C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r0, #0x88 + ldr r0, [r0] + add r4, r1, #0 + ldr r6, [r5, #0x34] + add r7, r2, #0 + str r3, [sp, #0x10] + bl FUN_02021A4C + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + add r6, #0xa0 + ldr r0, [r6] + cmp r0, #0 + beq _021D8278 + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x28] + add r0, r5, #0 + add r1, r7, #0 + bl MOD66_021D81B4 + ldrb r0, [r5] + cmp r0, #1 + bne _021D8248 + mov r3, #0x7a + b _021D825C +_021D8248: + add r1, r5, #0 + add r1, #0x88 + mov r0, #0 + ldr r1, [r1] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xd0 + sub r0, r1, r0 + lsr r3, r0, #1 +_021D825C: + mov r0, #6 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D82B4 ; =0x00010200 + add r2, r5, #0 + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + add r2, #0x88 + ldr r2, [r2] + add r0, r4, #0 + bl FUN_0201BDE0 +_021D8278: + ldrb r0, [r5] + cmp r0, #1 + bne _021D82AA + add r5, #0x84 + ldr r0, [r5] + mov r1, #0 + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #6 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D82B4 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r2, r5, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0 + bl FUN_02021A20 +_021D82AA: + add r0, r4, #0 + bl FUN_020191D0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D82B4: .word 0x00010200 + thumb_func_end MOD66_021D820C + + thumb_func_start MOD66_021D82B8 +MOD66_021D82B8: ; 0x021D82B8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + bne _021D82DC + add r0, r6, #0 + mov r1, #0 + bl FUN_02019620 + add r0, r6, #0 + bl FUN_020191D0 + add r0, r6, #0 + bl FUN_02019570 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021D82DC: + add r0, r6, #0 + mov r1, #0 + bl FUN_02019620 + ldrh r1, [r4, #8] + ldr r0, _021D8378 ; =0x0000FFFF + cmp r1, r0 + beq _021D832C + ldr r2, [r5, #0x2c] + ldrh r0, [r4, #0x16] + add r2, #0x5c + ldrb r0, [r2, r0] + lsl r2, r0, #0x1e + lsr r2, r2, #0x1e + beq _021D8300 + lsl r0, r0, #0x1c + lsr r0, r0, #0x1e + beq _021D832C +_021D8300: + add r0, r5, #0 + add r0, #0x84 + ldr r0, [r0] + bl FUN_0200A914 + add r7, r0, #0 + ldrh r0, [r4, #0xe] + mov r1, #0 + add r2, r7, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D837C ; =0x00010200 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldrh r3, [r4, #0xc] + add r0, r6, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 +_021D832C: + ldrh r1, [r4, #0xa] + ldr r0, _021D8378 ; =0x0000FFFF + cmp r1, r0 + beq _021D8372 + ldr r2, [r5, #0x2c] + ldrh r0, [r4, #0x16] + add r2, #0x5c + ldrb r0, [r2, r0] + lsl r2, r0, #0x1a + lsr r2, r2, #0x1e + beq _021D8348 + lsl r0, r0, #0x18 + lsr r0, r0, #0x1e + beq _021D8372 +_021D8348: + add r5, #0x84 + ldr r0, [r5] + bl FUN_0200A914 + add r5, r0, #0 + ldrh r0, [r4, #0x12] + mov r1, #0 + add r2, r5, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D837C ; =0x00010200 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldrh r3, [r4, #0x10] + add r0, r6, #0 + bl FUN_0201BDE0 + add r0, r5, #0 + bl FUN_02021A20 +_021D8372: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8378: .word 0x0000FFFF +_021D837C: .word 0x00010200 + thumb_func_end MOD66_021D82B8 + + thumb_func_start MOD66_021D8380 +MOD66_021D8380: ; 0x021D8380 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + ldr r5, [r6, #0x34] + mov r4, #5 + ldrb r1, [r5, #0x13] + cmp r1, #0 + beq _021D847C + sub r0, r1, #1 + strb r0, [r5, #0x13] + cmp r1, #3 + bne _021D83F0 + ldr r1, [r5, #0x18] + add r0, r4, #0 + mov r2, #7 + add r3, r1, #0 + mul r3, r2 + add r3, #0x19 + lsl r1, r3, #0x10 + ldr r3, [r5, #0x1c] + add r0, #0xff + mul r2, r3 + sub r2, #0x22 + lsl r2, r2, #0x10 + ldr r0, [r5, r0] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C6E4 + add r0, r4, #0 + add r0, #0xff + mov r1, #1 + ldr r0, [r5, r0] + lsl r1, r1, #0xc + bl FUN_020201E4 + add r0, r6, #0 + bl MOD66_021D818C + ldr r0, [r5, #0x18] + ldr r7, [r5, #0x1c] + str r0, [sp, #4] + ldr r0, [r6, #0x30] + ldr r1, [sp, #4] + add r2, r7, #0 + bl FUN_020345F0 + add r1, r5, #0 + add r2, r0, #0 + ldr r3, [sp, #4] + add r0, r6, #0 + add r1, #0x28 + str r7, [sp] + bl MOD66_021D820C + add r4, r4, #1 +_021D83F0: + ldrb r1, [r5, #0x11] + mov r0, #8 + tst r0, r1 + beq _021D8406 + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + sub r1, r0, r4 + add r0, r5, #0 + add r0, #0x90 + str r1, [r0] +_021D8406: + ldrb r1, [r5, #0x11] + mov r0, #4 + tst r0, r1 + beq _021D841C + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + add r1, r0, r4 + add r0, r5, #0 + add r0, #0x90 + str r1, [r0] +_021D841C: + ldrb r1, [r5, #0x11] + mov r0, #1 + tst r0, r1 + beq _021D8432 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + add r1, r0, r4 + add r0, r5, #0 + add r0, #0x8c + str r1, [r0] +_021D8432: + ldrb r1, [r5, #0x11] + mov r0, #2 + tst r0, r1 + beq _021D8448 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + sub r1, r0, r4 + add r0, r5, #0 + add r0, #0x8c + str r1, [r0] +_021D8448: + add r1, r5, #0 + add r2, r5, #0 + add r1, #0x8c + add r2, #0x90 + ldr r1, [r1] + ldr r2, [r2] + add r0, r6, #0 + bl MOD66_021D8BF0 + ldrb r0, [r5, #0x13] + cmp r0, #0 + bne _021D847C + mov r0, #1 + strb r0, [r5, #0x12] + mov r2, #0 + strb r2, [r5, #0x11] + ldr r1, [r5, #0x24] + ldr r0, [r5, #0x20] + cmp r1, r0 + beq _021D847C + add r5, #0x9c + ldr r0, [r5] + sub r1, r2, #1 + add r3, r2, #0 + bl MOD66_021D93F4 +_021D847C: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD66_021D8380 + + thumb_func_start MOD66_021D8480 +MOD66_021D8480: ; 0x021D8480 + add r3, r0, #0 + add r3, #0x90 + str r2, [r3] + add r2, r0, #0 + add r2, #0x94 + str r1, [r2] + mov r1, #1 + add r0, #0x8c + str r1, [r0] + bx lr + thumb_func_end MOD66_021D8480 + + thumb_func_start MOD66_021D8494 +MOD66_021D8494: ; 0x021D8494 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r4, [r6, #0x34] + mov r1, #0 + ldr r5, [r4, #0x78] + str r1, [r4, #0x78] + cmp r5, #0 + beq _021D84C6 + add r0, r5, #0 + bl FUN_02019620 + add r0, r5, #0 + bl FUN_02019570 + ldrb r1, [r4, #0x15] + add r0, r5, #0 + mov r2, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x1c + bl FUN_0200D7A0 + ldr r0, [r6, #0x28] + mov r1, #4 + bl FUN_0201AC68 +_021D84C6: + pop {r4, r5, r6, pc} + thumb_func_end MOD66_021D8494 + + thumb_func_start MOD66_021D84C8 +MOD66_021D84C8: ; 0x021D84C8 + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r4, r0, #0 + add r0, #0xcc + add r5, r1, #0 + ldr r0, [r0] + mov r1, #0xc + str r1, [sp] + mov r1, #2 + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + str r1, [sp, #8] + mov r3, #0 + str r3, [sp, #0xc] + mov r1, #7 + str r1, [sp, #0x10] + ldrh r1, [r0] + mov r2, #0xa + lsl r1, r1, #0x15 + lsr r1, r1, #0x18 + str r1, [sp, #0x14] + ldrh r0, [r0, #2] + mov r1, #5 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldr r0, [r4, #0x28] + bl FUN_020181EC + add r4, #0x84 + ldr r0, [r4] + mov r1, #1 + bl FUN_0200A914 + add r6, r0, #0 + mov r0, #0 + add r1, r6, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0x50 + sub r4, r1, r0 + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8550 ; =0x00010200 + add r2, r6, #0 + str r0, [sp, #8] + add r0, r5, #0 + lsr r3, r4, #1 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0 + bl FUN_020191D0 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + nop +_021D8550: .word 0x00010200 + thumb_func_end MOD66_021D84C8 + + thumb_func_start MOD66_021D8554 +MOD66_021D8554: ; 0x021D8554 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r4, [r5, #0x34] + mov r0, #0x15 + str r0, [sp] + mov r0, #0x1d + str r0, [sp, #4] + mov r3, #3 + str r3, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + mov r0, #0xea + lsl r0, r0, #2 + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r5, #0x28] + add r1, #0x28 + mov r2, #1 + bl FUN_02019064 + mov r0, #3 + str r0, [sp] + mov r0, #0x15 + str r0, [sp, #4] + mov r2, #4 + add r1, r4, #0 + str r2, [sp, #8] + mov r0, #0xe + str r0, [sp, #0xc] + ldr r0, _021D8660 ; =0x000003AB + add r1, #0x38 + str r0, [sp, #0x10] + ldr r0, [r5, #0x28] + mov r3, #9 + bl FUN_02019064 + mov r0, #3 + str r0, [sp] + mov r0, #0x1c + str r0, [sp, #4] + mov r2, #4 + add r1, r4, #0 + str r2, [sp, #8] + mov r0, #0xe + str r0, [sp, #0xc] + ldr r0, _021D8664 ; =0x0000033B + add r1, #0x48 + str r0, [sp, #0x10] + ldr r0, [r5, #0x28] + mov r3, #2 + bl FUN_02019064 + mov r0, #8 + str r0, [sp] + mov r0, #0x1c + str r0, [sp, #4] + mov r0, #0xe + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, _021D8668 ; =0x000001B3 + add r1, r4, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x28] + add r1, #0x58 + mov r2, #4 + mov r3, #1 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + ldr r0, _021D866C ; =0x0000019F + add r1, r4, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x28] + add r1, #0x68 + mov r2, #4 + mov r3, #0xb + bl FUN_02019064 + add r0, r4, #0 + add r0, #0x28 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x38 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x48 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x58 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x68 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x28 + bl FUN_020191D0 + add r0, r4, #0 + add r0, #0x38 + bl FUN_02019570 + add r0, r4, #0 + add r0, #0x48 + bl FUN_02019570 + add r0, r4, #0 + add r0, #0x58 + bl FUN_02019570 + add r4, #0x68 + add r0, r4, #0 + bl FUN_02019570 + add sp, #0x14 + pop {r4, r5, pc} + nop +_021D8660: .word 0x000003AB +_021D8664: .word 0x0000033B +_021D8668: .word 0x000001B3 +_021D866C: .word 0x0000019F + thumb_func_end MOD66_021D8554 + + thumb_func_start MOD66_021D8670 +MOD66_021D8670: ; 0x021D8670 + push {r3, r4, r5, lr} + ldr r4, [r0, #0x34] + mov r5, #0 + add r4, #0x28 +_021D8678: + lsl r0, r5, #4 + add r0, r4, r0 + bl FUN_02019178 + add r0, r5, #1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #5 + blo _021D8678 + pop {r3, r4, r5, pc} + thumb_func_end MOD66_021D8670 + + thumb_func_start MOD66_021D868C +MOD66_021D868C: ; 0x021D868C + push {r4, r5, lr} + sub sp, #0x1c + add r5, r0, #0 + add r4, r1, #0 + cmp r2, #0 + beq _021D86CA + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x20 + str r1, [sp] + mov r1, #0x18 + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + mov r2, #0 + str r1, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + ldrh r1, [r0] + add r3, r2, #0 + lsl r1, r1, #0x15 + lsr r1, r1, #0x18 + str r1, [sp, #0x14] + ldrh r0, [r0, #2] + mov r1, #5 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldr r0, [r5, #0x28] + bl FUN_02018170 +_021D86CA: + add r0, r5, #0 + add r0, #0xcc + ldr r0, [r0] + mov r2, #6 + str r2, [sp] + mov r1, #7 + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + str r1, [sp, #8] + add r1, r4, #0 + mul r1, r2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0xc] + mov r1, #0 + str r1, [sp, #0x10] + ldrh r1, [r0] + mov r2, #0xd + mov r3, #0xa + lsl r1, r1, #0x15 + lsr r1, r1, #0x18 + str r1, [sp, #0x14] + ldrh r0, [r0, #2] + mov r1, #5 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldr r0, [r5, #0x28] + bl FUN_020181EC + add sp, #0x1c + pop {r4, r5, pc} + thumb_func_end MOD66_021D868C + + thumb_func_start MOD66_021D870C +MOD66_021D870C: ; 0x021D870C + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + lsl r0, r1, #2 + str r1, [sp, #0x1c] + mov r1, #6 + add r2, r0, #0 + mul r2, r1 + ldr r1, _021D8834 ; =0x021D9754 + add r3, r0, #1 + add r6, r1, r2 + mov r1, #6 + add r2, r3, #0 + mul r2, r1 + ldr r1, _021D8834 ; =0x021D9754 + mov r4, #6 + add r3, r1, r2 + add r1, r0, #2 + mul r4, r1 + ldr r1, _021D8834 ; =0x021D9754 + add r0, r0, #3 + add r4, r1, r4 + mov r1, #6 + mul r1, r0 + ldr r0, _021D8834 ; =0x021D9754 + str r1, [sp, #0x20] + add r7, r0, r1 + add r0, r5, #0 + add r0, #0xc0 + ldrb r1, [r3, #4] + ldr r0, [r0] + str r1, [sp] + ldrb r1, [r3, #5] + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + str r1, [sp, #8] + ldr r1, _021D8834 ; =0x021D9754 + ldrb r1, [r1, r2] + str r1, [sp, #0xc] + ldrb r1, [r3, #1] + str r1, [sp, #0x10] + ldrh r1, [r0] + lsl r1, r1, #0x15 + lsr r1, r1, #0x18 + str r1, [sp, #0x14] + ldrh r0, [r0, #2] + mov r1, #2 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldrb r2, [r3, #2] + ldrb r3, [r3, #3] + ldr r0, [r5, #0x28] + bl FUN_02018170 + add r0, r5, #0 + add r0, #0xd4 + ldrb r1, [r7, #4] + ldr r0, [r0] + ldr r2, _021D8834 ; =0x021D9754 + str r1, [sp] + ldrb r1, [r7, #5] + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + str r1, [sp, #8] + ldr r1, [sp, #0x20] + ldrb r1, [r2, r1] + str r1, [sp, #0xc] + ldrb r1, [r7, #1] + str r1, [sp, #0x10] + ldrh r1, [r0] + lsl r1, r1, #0x15 + lsr r1, r1, #0x18 + str r1, [sp, #0x14] + ldrh r0, [r0, #2] + mov r1, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldrb r2, [r7, #2] + ldrb r3, [r7, #3] + ldr r0, [r5, #0x28] + bl FUN_020181EC + ldr r0, [sp, #0x1c] + cmp r0, #2 + beq _021D882E + add r0, r5, #0 + add r0, #0xc0 + ldrb r1, [r6, #4] + ldr r0, [r0] + str r1, [sp] + ldrb r1, [r6, #5] + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + str r1, [sp, #8] + ldrb r1, [r6] + str r1, [sp, #0xc] + ldrb r1, [r6, #1] + str r1, [sp, #0x10] + ldrh r1, [r0] + lsl r1, r1, #0x15 + lsr r1, r1, #0x18 + str r1, [sp, #0x14] + ldrh r0, [r0, #2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldrb r2, [r6, #2] + ldrb r3, [r6, #3] + ldr r0, [r5, #0x28] + bl FUN_02018170 + add r0, r5, #0 + add r0, #0xd4 + ldrb r1, [r4, #4] + ldr r0, [r0] + str r1, [sp] + ldrb r1, [r4, #5] + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + str r1, [sp, #8] + ldrb r1, [r4] + str r1, [sp, #0xc] + ldrb r1, [r4, #1] + str r1, [sp, #0x10] + ldrh r1, [r0] + lsl r1, r1, #0x15 + lsr r1, r1, #0x18 + str r1, [sp, #0x14] + ldrh r0, [r0, #2] + mov r1, #7 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldrb r2, [r4, #2] + ldrb r3, [r4, #3] + ldr r0, [r5, #0x28] + bl FUN_020181EC +_021D882E: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_021D8834: .word 0x021D9754 + thumb_func_end MOD66_021D870C + + thumb_func_start MOD66_021D8838 +MOD66_021D8838: ; 0x021D8838 + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + add r0, #0xb8 + ldr r0, [r0] + mov r1, #0x20 + str r1, [sp] + mov r1, #0x18 + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + mov r2, #0 + str r1, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + ldrh r1, [r0] + add r3, r2, #0 + lsl r1, r1, #0x15 + lsr r1, r1, #0x18 + str r1, [sp, #0x14] + ldrh r0, [r0, #2] + mov r1, #2 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldr r0, [r4, #0x28] + bl FUN_02018170 + add r0, r4, #0 + add r0, #0xbc + mov r2, #0 + ldr r0, [r0] + mov r1, #0x20 + str r1, [sp] + mov r1, #0x18 + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + str r1, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + ldrh r1, [r0] + add r3, r2, #0 + lsl r1, r1, #0x15 + lsr r1, r1, #0x18 + str r1, [sp, #0x14] + ldrh r0, [r0, #2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldr r0, [r4, #0x28] + bl FUN_02018170 + ldrb r0, [r4] + cmp r0, #1 + beq _021D88DE + add r0, r4, #0 + add r0, #0xbc + ldr r0, [r0] + mov r1, #2 + str r1, [sp] + mov r1, #3 + add r2, r0, #0 + str r1, [sp, #4] + add r2, #0xc + str r2, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r3, #0x15 + str r3, [sp, #0x10] + ldrh r2, [r0] + lsl r2, r2, #0x15 + lsr r2, r2, #0x18 + str r2, [sp, #0x14] + ldrh r0, [r0, #2] + mov r2, #0x10 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldr r0, [r4, #0x28] + bl FUN_02018170 +_021D88DE: + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + bl MOD66_021D868C + add r0, r4, #0 + add r0, #0xc8 + mov r2, #0 + ldr r0, [r0] + mov r1, #0x40 + str r1, [sp] + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + str r1, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + ldrh r1, [r0] + add r3, r2, #0 + lsl r1, r1, #0x15 + lsr r1, r1, #0x18 + str r1, [sp, #0x14] + ldrh r0, [r0, #2] + mov r1, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldr r0, [r4, #0x28] + bl FUN_020181EC + add r0, r4, #0 + add r0, #0xc4 + mov r2, #0 + ldr r0, [r0] + mov r1, #0x40 + str r1, [sp] + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + str r1, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + ldrh r1, [r0] + add r3, r2, #0 + lsl r1, r1, #0x15 + lsr r1, r1, #0x18 + str r1, [sp, #0x14] + ldrh r0, [r0, #2] + mov r1, #7 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldr r0, [r4, #0x28] + bl FUN_020181EC + ldrh r1, [r4, #2] + mov r0, #1 + tst r0, r1 + beq _021D895C + add r0, r4, #0 + mov r1, #0 + bl MOD66_021D870C +_021D895C: + ldrh r1, [r4, #2] + mov r0, #2 + tst r0, r1 + beq _021D896C + add r0, r4, #0 + mov r1, #1 + bl MOD66_021D870C +_021D896C: + ldrh r1, [r4, #2] + mov r0, #4 + tst r0, r1 + beq _021D897C + add r0, r4, #0 + mov r1, #2 + bl MOD66_021D870C +_021D897C: + ldrh r1, [r4, #2] + mov r0, #8 + tst r0, r1 + beq _021D898C + add r0, r4, #0 + mov r1, #3 + bl MOD66_021D870C +_021D898C: + ldr r0, [r4, #0x28] + mov r1, #2 + bl FUN_0201AC68 + ldr r0, [r4, #0x28] + mov r1, #3 + bl FUN_0201AC68 + ldr r0, [r4, #0x28] + mov r1, #5 + bl FUN_0201AC68 + ldr r0, [r4, #0x28] + mov r1, #6 + bl FUN_0201AC68 + ldr r0, [r4, #0x28] + mov r1, #7 + bl FUN_0201AC68 + add sp, #0x1c + pop {r3, r4, pc} + thumb_func_end MOD66_021D8838 + + thumb_func_start MOD66_021D89B8 +MOD66_021D89B8: ; 0x021D89B8 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, [r4, #0x28] + mov r1, #6 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + ldr r0, [r4, #0x28] + mov r1, #7 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + mov r2, #0 + ldr r0, [r4, #0x28] + mov r1, #6 + add r3, r2, #0 + bl FUN_020179E0 + mov r2, #0 + ldr r0, [r4, #0x28] + mov r1, #7 + add r3, r2, #0 + bl FUN_020179E0 + mov r1, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #0x28] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #0x28] + mov r1, #1 + add r3, r2, #0 + bl FUN_02018540 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #0x28] + mov r1, #2 + add r3, r2, #0 + bl FUN_02018540 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #0x28] + mov r1, #3 + add r3, r2, #0 + bl FUN_02018540 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #0x28] + mov r1, #4 + add r3, r2, #0 + bl FUN_02018540 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #0x28] + mov r1, #5 + add r3, r2, #0 + bl FUN_02018540 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #0x28] + mov r1, #6 + add r3, r2, #0 + bl FUN_02018540 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #0x28] + mov r1, #7 + add r3, r2, #0 + bl FUN_02018540 + ldr r0, [r4, #0x28] + mov r1, #0 + bl FUN_0201AC68 + ldr r0, [r4, #0x28] + mov r1, #1 + bl FUN_0201AC68 + ldr r0, [r4, #0x28] + mov r1, #2 + bl FUN_0201AC68 + ldr r0, [r4, #0x28] + mov r1, #3 + bl FUN_0201AC68 + ldr r0, [r4, #0x28] + mov r1, #4 + bl FUN_0201AC68 + ldr r0, [r4, #0x28] + mov r1, #5 + bl FUN_0201AC68 + ldr r0, [r4, #0x28] + mov r1, #6 + bl FUN_0201AC68 + ldr r0, [r4, #0x28] + mov r1, #7 + bl FUN_0201AC68 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD66_021D89B8 + + thumb_func_start MOD66_021D8AF4 +MOD66_021D8AF4: ; 0x021D8AF4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r1, r5, #0 + add r0, #0xd8 + add r1, #0xdc + ldr r0, [r0] + ldr r1, [r1] + ldr r2, _021D8BE4 ; =0x021D981C + ldr r4, [r5, #0x34] + bl FUN_0200BE38 + mov r1, #1 + lsl r1, r1, #8 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #0 + bl FUN_020200A0 + mov r1, #1 + lsl r1, r1, #8 + ldr r0, [r4, r1] + lsl r1, r1, #4 + bl FUN_020200D8 + mov r0, #1 + lsl r0, r0, #8 + ldr r0, [r4, r0] + mov r1, #0x80 + mov r2, #0x6c + bl FUN_0200C6E4 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xd8 + add r1, #0xdc + ldr r0, [r0] + ldr r1, [r1] + ldr r2, _021D8BE8 ; =0x021D9844 + bl FUN_0200BE38 + mov r1, #0x41 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x41 + lsl r0, r0, #2 + mov r1, #2 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020200D8 + mov r0, #0x41 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200BC + ldr r1, [r4, #0x18] + mov r0, #0x41 + lsl r0, r0, #2 + mov r2, #7 + add r3, r1, #0 + mul r3, r2 + add r3, #0x19 + lsl r1, r3, #0x10 + ldr r3, [r4, #0x1c] + ldr r0, [r4, r0] + mul r2, r3 + sub r2, #0x22 + lsl r2, r2, #0x10 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C6E4 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xd8 + add r1, #0xdc + ldr r0, [r0] + ldr r1, [r1] + ldr r2, _021D8BEC ; =0x021D986C + bl FUN_0200BE38 + mov r1, #0x42 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #1 + bl FUN_020200A0 + ldr r1, [r5, #0x2c] + mov r0, #0x42 + ldr r1, [r1, #0xc] + lsl r0, r0, #2 + lsl r1, r1, #0x10 + ldr r0, [r4, r0] + lsr r1, r1, #0x10 + bl FUN_02020208 + ldr r1, [r4, #0x18] + mov r0, #0x42 + lsl r0, r0, #2 + mov r2, #7 + add r3, r1, #0 + mul r3, r2 + add r3, #0x19 + lsl r1, r3, #0x10 + ldr r3, [r4, #0x1c] + ldr r0, [r4, r0] + mul r2, r3 + sub r2, #0x22 + lsl r2, r2, #0x10 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C6E4 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8BE4: .word 0x021D981C +_021D8BE8: .word 0x021D9844 +_021D8BEC: .word 0x021D986C + thumb_func_end MOD66_021D8AF4 + + thumb_func_start MOD66_021D8BF0 +MOD66_021D8BF0: ; 0x021D8BF0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #8 + bge _021D8C16 + ldr r0, [r5, #0x28] + mov r1, #6 + mov r2, #0 + mov r3, #8 + bl FUN_0201AEE4 + ldr r0, [r5, #0x28] + mov r1, #7 + mov r2, #0 + mov r3, #8 + bl FUN_0201AEE4 + b _021D8C4A +_021D8C16: + cmp r4, #0xf8 + ldr r0, [r5, #0x28] + ble _021D8C34 + mov r1, #6 + mov r2, #0 + mov r3, #0xf8 + bl FUN_0201AEE4 + ldr r0, [r5, #0x28] + mov r1, #7 + mov r2, #0 + mov r3, #0xf8 + bl FUN_0201AEE4 + b _021D8C4A +_021D8C34: + mov r1, #6 + mov r2, #0 + add r3, r4, #0 + bl FUN_0201AEE4 + ldr r0, [r5, #0x28] + mov r1, #7 + mov r2, #0 + add r3, r4, #0 + bl FUN_0201AEE4 +_021D8C4A: + cmp r6, #0x50 + bge _021D8C68 + ldr r0, [r5, #0x28] + mov r1, #6 + mov r2, #3 + mov r3, #0x50 + bl FUN_0201AEE4 + ldr r0, [r5, #0x28] + mov r1, #7 + mov r2, #3 + mov r3, #0x50 + bl FUN_0201AEE4 + pop {r4, r5, r6, pc} +_021D8C68: + mov r3, #0x13 + lsl r3, r3, #4 + cmp r6, r3 + ldr r0, [r5, #0x28] + ble _021D8C8A + mov r1, #6 + mov r2, #3 + bl FUN_0201AEE4 + mov r3, #0x13 + ldr r0, [r5, #0x28] + mov r1, #7 + mov r2, #3 + lsl r3, r3, #4 + bl FUN_0201AEE4 + pop {r4, r5, r6, pc} +_021D8C8A: + mov r1, #6 + mov r2, #3 + add r3, r6, #0 + bl FUN_0201AEE4 + ldr r0, [r5, #0x28] + mov r1, #7 + mov r2, #3 + add r3, r6, #0 + bl FUN_0201AEE4 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD66_021D8BF0 + + thumb_func_start MOD66_021D8CA4 +MOD66_021D8CA4: ; 0x021D8CA4 + push {r4, r5} + ldr r5, [r0] + mov r4, #0 + cmp r5, #0 + ble _021D8CC8 +_021D8CAE: + ldr r3, [r0, #0xc] + cmp r1, r3 + bne _021D8CC0 + ldr r3, [r0, #0x10] + cmp r2, r3 + bne _021D8CC0 + add r0, r4, #0 + pop {r4, r5} + bx lr +_021D8CC0: + add r4, r4, #1 + add r0, #0x10 + cmp r4, r5 + blt _021D8CAE +_021D8CC8: + mov r0, #0 + mvn r0, r0 + pop {r4, r5} + bx lr + thumb_func_end MOD66_021D8CA4 + + thumb_func_start MOD66_021D8CD0 +MOD66_021D8CD0: ; 0x021D8CD0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r0, #0 + ldr r0, [r6, #0x34] + mov r1, #0 + str r0, [sp, #8] + add r0, #0xa4 + mov r2, #0x5c + bl MI_CpuFill8 + mov r0, #0 + ldr r7, [sp, #8] + str r0, [sp, #4] + str r0, [sp] + ldr r0, [sp, #8] + add r7, #0xa4 + str r0, [sp, #0xc] + add r0, #0xb0 + str r0, [sp, #0xc] +_021D8CF6: + ldr r1, [r6, #0x2c] + ldr r0, [sp] + add r1, #0x20 + add r4, r1, r0 + ldrh r0, [r4, #0xa] + cmp r0, #0 + beq _021D8DAA + ldr r1, [r4] + ldr r0, [r6, #0x20] + cmp r1, r0 + bne _021D8D14 + ldr r2, [r4, #4] + ldr r0, [r6, #0x24] + cmp r2, r0 + beq _021D8D9A +_021D8D14: + ldr r2, [r4, #4] + add r0, r7, #0 + bl MOD66_021D8CA4 + cmp r0, #0 + bge _021D8D32 + ldr r0, [sp, #8] + add r0, #0xa4 + ldr r1, [r0] + ldr r0, [r7] + lsl r1, r1, #4 + add r0, r0, #1 + str r0, [r7] + ldr r0, [sp, #0xc] + b _021D8D36 +_021D8D32: + lsl r1, r0, #4 + ldr r0, [sp, #0xc] +_021D8D36: + add r5, r0, r1 + ldr r0, [r4] + str r0, [r5] + ldr r0, [r4, #4] + str r0, [r5, #4] + ldrh r0, [r4, #8] + cmp r0, #3 + bls _021D8D4A + mov r0, #0 + b _021D8D50 +_021D8D4A: + lsl r1, r0, #1 + ldr r0, _021D8DD4 ; =0x021D9718 + ldrh r0, [r0, r1] +_021D8D50: + strh r0, [r5, #8] + ldr r0, [sp, #4] + add r1, r6, #0 + strb r0, [r5, #0xa] + mov r0, #1 + strb r0, [r5, #0xb] + add r0, r6, #0 + add r0, #0xd8 + add r1, #0xdc + ldr r0, [r0] + ldr r1, [r1] + ldr r2, _021D8DD8 ; =0x021D972C + bl FUN_0200BE38 + str r0, [r5, #0xc] + ldr r2, [r5] + mov r1, #7 + mul r1, r2 + add r1, #0x19 + lsl r1, r1, #0x10 + ldr r3, [r5, #4] + mov r2, #7 + mul r2, r3 + sub r2, #0x22 + lsl r2, r2, #0x10 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C6E4 + ldr r0, [r5, #0xc] + mov r1, #2 + bl FUN_02020310 + ldr r0, [r5, #0xc] + mov r1, #0 + bl FUN_020200A0 +_021D8D9A: + ldr r0, [sp] + add r0, #0xc + str r0, [sp] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #5 + blt _021D8CF6 +_021D8DAA: + ldr r0, [sp, #8] + add r0, #0xa4 + ldr r0, [r0] + cmp r0, #0 + beq _021D8DD0 + sub r1, r0, #1 + ldr r0, [sp, #8] + mov r2, #1 + add r0, #0xae + strb r1, [r0] + ldr r1, [sp, #8] + ldr r0, _021D8DDC ; =MOD66_021D8DE0 + add r1, #0xa4 + bl FUN_0200CA44 + ldr r1, [sp, #8] + add r1, #0xa8 + str r1, [sp, #8] + str r0, [r1] +_021D8DD0: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8DD4: .word 0x021D9718 +_021D8DD8: .word 0x021D972C +_021D8DDC: .word MOD66_021D8DE0 + thumb_func_end MOD66_021D8CD0 + + thumb_func_start MOD66_021D8DE0 +MOD66_021D8DE0: ; 0x021D8DE0 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #8] + add r1, r0, #1 + strh r1, [r4, #8] + mov r1, #0x1a + bl _s32_div_f + cmp r1, #0 + bgt _021D8E30 + ldrb r0, [r4, #0xb] + mov r1, #0 + lsl r0, r0, #4 + add r0, r4, r0 + ldr r0, [r0, #0x18] + bl FUN_020200A0 + ldrb r0, [r4, #0xa] + mov r1, #1 + lsl r0, r0, #4 + add r0, r4, r0 + ldr r0, [r0, #0x18] + bl FUN_020200A0 + ldrb r0, [r4, #0xa] + strb r0, [r4, #0xb] + ldr r1, [r4] + ldrb r2, [r4, #0xa] + sub r0, r1, #1 + add r0, r2, r0 + bl _s32_div_f + strb r1, [r4, #0xa] + mov r0, #0x41 + ldrh r1, [r4, #8] + lsl r0, r0, #2 + cmp r1, r0 + bls _021D8E30 + mov r0, #1 + strh r0, [r4, #8] +_021D8E30: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD66_021D8DE0 + + thumb_func_start MOD66_021D8E34 +MOD66_021D8E34: ; 0x021D8E34 + push {r4, r5, r6, lr} + ldr r6, [r0, #0x34] + add r0, r6, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021D8E46 + bl FUN_0200CAB4 +_021D8E46: + add r0, r6, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + ble _021D8E6C + add r5, r6, #0 +_021D8E54: + add r0, r5, #0 + add r0, #0xbc + ldr r0, [r0] + bl FUN_0200BC14 + add r0, r6, #0 + add r0, #0xa4 + ldr r0, [r0] + add r4, r4, #1 + add r5, #0x10 + cmp r4, r0 + blt _021D8E54 +_021D8E6C: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD66_021D8E34 + + thumb_func_start MOD66_021D8E70 +MOD66_021D8E70: ; 0x021D8E70 + push {r4, lr} + add r3, r0, #0 + ldr r4, [r3, #0x34] + mov r2, #0 + str r2, [r4, #4] + str r2, [r4, #8] + cmp r1, #0 + bne _021D8E90 + ldr r0, _021D8EA0 ; =MOD66_021D8EA8 + add r1, r3, #0 + bl FUN_0200CA44 + mov r1, #0x43 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} +_021D8E90: + ldr r0, _021D8EA4 ; =MOD66_021D9020 + add r1, r3, #0 + bl FUN_0200CA44 + mov r1, #0x43 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + .align 2, 0 +_021D8EA0: .word MOD66_021D8EA8 +_021D8EA4: .word MOD66_021D9020 + thumb_func_end MOD66_021D8E70 + + thumb_func_start MOD66_021D8EA8 +MOD66_021D8EA8: ; 0x021D8EA8 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r1, #0 + ldr r4, [r5, #0x34] + add r6, r0, #0 + ldr r0, [r4, #4] + cmp r0, #4 + bls _021D8EBA + b _021D9014 +_021D8EBA: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8EC6: ; jump table + .short _021D8ED0 - _021D8EC6 - 2 ; case 0 + .short _021D8F04 - _021D8EC6 - 2 ; case 1 + .short _021D8F40 - _021D8EC6 - 2 ; case 2 + .short _021D8F7C - _021D8EC6 - 2 ; case 3 + .short _021D8FF2 - _021D8EC6 - 2 ; case 4 +_021D8ED0: + mov r0, #1 + lsl r0, r0, #8 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #1 + lsl r0, r0, #8 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #1 + lsl r0, r0, #8 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_02020208 + ldr r0, _021D9018 ; =0x000005E4 + bl FUN_020054C8 + ldr r0, [r4, #4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, r6, pc} +_021D8F04: + ldr r1, [r4, #8] + mov r0, #0x1f + lsr r3, r1, #0x1f + lsl r2, r1, #0x1f + sub r2, r2, r3 + ror r2, r0 + add r0, r3, r2 + beq _021D8F2C + add r3, r1, r3 + ldr r1, _021D901C ; =0x021D9714 + asr r2, r3, #1 + ldrb r1, [r1, r2] + add r0, r5, #0 + mov r2, #0 + bl MOD66_021D868C + ldr r0, [r5, #0x28] + mov r1, #5 + bl FUN_0201AC68 +_021D8F2C: + ldr r1, [r4, #8] + add r0, r1, #1 + str r0, [r4, #8] + cmp r1, #7 + ble _021D9014 + ldr r0, [r4, #4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, r6, pc} +_021D8F40: + mov r0, #1 + lsl r0, r0, #8 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #1 + lsl r0, r0, #8 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200BC + mov r3, #0 + str r3, [r5, #0x14] + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #4] + mov r1, #0xd + str r0, [sp, #8] + mov r0, #4 + mov r2, #2 + bl FUN_0200E1D0 + ldr r0, [r4, #4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, r6, pc} +_021D8F7C: + bl FUN_0200E308 + cmp r0, #0 + beq _021D9014 + mov r0, #1 + strb r0, [r4, #0x10] + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r5, #0x28] + mov r1, #4 + add r3, r2, #0 + bl FUN_02018540 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r5, #0x28] + mov r1, #5 + add r3, r2, #0 + bl FUN_02018540 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x68 + bl MOD66_021D84C8 + add r0, r5, #0 + bl MOD66_021D818C + add r0, r5, #0 + bl MOD66_021D8140 + mov r3, #0 + str r3, [r5, #0x14] + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #4] + mov r1, #0xd + str r0, [sp, #8] + mov r0, #4 + mov r2, #5 + bl FUN_0200E1D0 + ldr r0, [r4, #4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, r6, pc} +_021D8FF2: + bl FUN_0200E308 + cmp r0, #0 + beq _021D9014 + mov r0, #0 + str r0, [r4, #8] + str r0, [r4, #4] + ldrb r0, [r4, #0x14] + sub r0, r0, #2 + strb r0, [r4, #0x14] + add r0, r6, #0 + bl FUN_0200CAB4 + mov r0, #0x43 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_021D9014: + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D9018: .word 0x000005E4 +_021D901C: .word 0x021D9714 + thumb_func_end MOD66_021D8EA8 + + thumb_func_start MOD66_021D9020 +MOD66_021D9020: ; 0x021D9020 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r1, #0 + ldr r4, [r5, #0x34] + add r6, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021D903C + cmp r0, #1 + beq _021D9066 + cmp r0, #2 + beq _021D90C4 + add sp, #0x10 + pop {r4, r5, r6, pc} +_021D903C: + mov r3, #0 + str r3, [r5, #0x14] + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #4] + mov r1, #0xd + str r0, [sp, #8] + mov r0, #4 + mov r2, #2 + bl FUN_0200E1D0 + ldr r0, _021D90EC ; =0x00000691 + bl FUN_020054C8 + ldr r0, [r4, #4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, r6, pc} +_021D9066: + bl FUN_0200E308 + cmp r0, #0 + beq _021D90E8 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r5, #0x28] + mov r1, #4 + add r3, r2, #0 + bl FUN_02018540 + add r0, r5, #0 + mov r1, #0 + mov r2, #1 + bl MOD66_021D868C + ldr r0, [r5, #0x28] + mov r1, #4 + bl FUN_0201AC68 + ldr r0, [r5, #0x28] + mov r1, #5 + bl FUN_0201AC68 + mov r3, #0 + str r3, [r5, #0x14] + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #4] + mov r1, #0xd + str r0, [sp, #8] + mov r0, #4 + mov r2, #5 + bl FUN_0200E1D0 + ldr r0, [r4, #4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4, #4] + pop {r4, r5, r6, pc} +_021D90C4: + bl FUN_0200E308 + cmp r0, #0 + beq _021D90E8 + mov r0, #0 + strb r0, [r4, #0x10] + str r0, [r4, #4] + str r0, [r4, #8] + ldrb r0, [r4, #0x14] + sub r0, r0, #2 + strb r0, [r4, #0x14] + add r0, r6, #0 + bl FUN_0200CAB4 + mov r0, #0x43 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_021D90E8: + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D90EC: .word 0x00000691 + thumb_func_end MOD66_021D9020 + + thumb_func_start MOD66_021D90F0 +MOD66_021D90F0: ; 0x021D90F0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r4, [r5, #0x34] + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + cmp r0, #0 + bne _021D9104 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D9104: + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + ldr r1, [r4, #0x20] + ldr r2, [r4, #0x18] + ldr r3, [r4, #0x1c] + bl MOD66_021D9390 + cmp r0, #0 + beq _021D911E + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _021D9122 +_021D911E: + mov r0, #0 + pop {r3, r4, r5, pc} +_021D9122: + ldr r1, [r5, #0x2c] + mov r0, #1 + str r0, [r1, #0x10] + ldr r2, [r4, #0x18] + ldr r1, [r5, #0x2c] + str r2, [r1, #0x14] + ldr r2, [r4, #0x1c] + ldr r1, [r5, #0x2c] + str r2, [r1, #0x18] + ldr r2, [r4, #0x20] + ldr r1, [r5, #0x2c] + str r2, [r1, #0x1c] + pop {r3, r4, r5, pc} + thumb_func_end MOD66_021D90F0 + + thumb_func_start MOD66_021D913C +MOD66_021D913C: ; 0x021D913C + push {r4, r5, r6, lr} + sub sp, #0x50 + add r4, r0, #0 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + ldr r1, [r4, #4] + mov r0, #0x20 + bl FUN_0201C24C + ldr r0, [r4, #4] + bl FUN_0200BB14 + add r1, r4, #0 + add r1, #0xd8 + str r0, [r1] + add r0, r4, #0 + add r0, #0xd8 + ldr r0, [r0] + bl FUN_0200BB34 + add r1, r4, #0 + add r1, #0xdc + add r2, sp, #0x30 + ldr r5, _021D91E8 ; =0x021D98C4 + str r0, [r1] + ldmia r5!, {r0, r1} + add r3, r2, #0 + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + ldr r6, _021D91EC ; =0x021D9894 + stmia r2!, {r0, r1} + add r5, sp, #0x1c + ldmia r6!, {r0, r1} + add r2, r5, #0 + stmia r5!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + ldr r0, [r6] + add r1, r3, #0 + str r0, [r5] + add r0, r4, #0 + add r0, #0xd8 + ldr r0, [r0] + mov r3, #0x20 + bl FUN_0200BB6C + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xd8 + add r1, #0xdc + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x1c + bl FUN_0200BBF0 + ldr r5, _021D91F0 ; =0x021D98A8 + 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] + str r0, [r3] + add r0, r4, #0 + add r0, #0xd8 + add r4, #0xdc + ldr r0, [r0] + ldr r1, [r4] + bl FUN_0200BD20 + add sp, #0x50 + pop {r4, r5, r6, pc} + nop +_021D91E8: .word 0x021D98C4 +_021D91EC: .word 0x021D9894 +_021D91F0: .word 0x021D98A8 + thumb_func_end MOD66_021D913C + + thumb_func_start MOD66_021D91F4 +MOD66_021D91F4: ; 0x021D91F4 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + add r0, #0xd8 + add r1, #0xdc + ldr r0, [r0] + ldr r1, [r1] + bl FUN_0200BCE0 + add r4, #0xd8 + ldr r0, [r4] + bl FUN_0200BD04 + bl FUN_0201C29C + pop {r4, pc} + thumb_func_end MOD66_021D91F4 + + thumb_func_start MOD66_021D9214 +MOD66_021D9214: ; 0x021D9214 + ldr r3, _021D921C ; =0x0200BC1D + add r0, #0xdc + ldr r0, [r0] + bx r3 + .align 2, 0 +_021D921C: .word 0x0200BC1D + thumb_func_end MOD66_021D9214 + + thumb_func_start MOD66_021D9220 +MOD66_021D9220: ; 0x021D9220 + ldr r3, _021D9224 ; =0x0200BC31 + bx r3 + .align 2, 0 +_021D9224: .word 0x0200BC31 + thumb_func_end MOD66_021D9220 + + thumb_func_start MOD66_021D9228 +MOD66_021D9228: ; 0x021D9228 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r5, [sp, #0x28] + str r0, [sp] + str r1, [sp, #4] + add r0, r5, #0 + mov r1, #0xc + str r2, [sp, #8] + add r4, r3, #0 + bl FUN_02016998 + add r7, r0, #0 + mov r0, #0 + strb r0, [r7] + strb r0, [r7, #1] + strb r0, [r7, #2] + strb r0, [r7, #3] + strb r0, [r7, #4] + strb r0, [r7, #5] + strb r0, [r7, #6] + strb r0, [r7, #7] + strb r0, [r7, #8] + strb r0, [r7, #9] + strb r0, [r7, #0xa] + strb r0, [r7, #0xb] + strh r4, [r7] + ldrh r2, [r7] + mov r1, #0x1c + add r0, r5, #0 + mul r1, r2 + bl FUN_02016998 + str r0, [r7, #8] + ldrh r3, [r7] + mov r2, #0x1c + mov r1, #0 + mul r2, r3 + bl Call_FillMemWithValue + ldrh r0, [r7] + mov r6, #0 + ldr r5, _021D9344 ; =0x021D990C + cmp r0, #0 + ble _021D933E + str r6, [sp, #0xc] +_021D9282: + ldr r0, [r7, #8] + ldr r1, [sp, #0xc] + ldr r2, [r5] + add r4, r0, r1 + str r2, [r0, r1] + ldrb r0, [r5, #8] + ldr r1, [sp, #4] + ldr r2, _021D9348 ; =0x021D98E4 + strb r0, [r4, #8] + ldrb r0, [r5, #9] + strb r0, [r4, #9] + ldrh r0, [r5, #0xa] + strh r0, [r4, #0xa] + ldr r0, [r5, #0xc] + str r0, [r4, #0xc] + ldr r0, [r5, #0x10] + str r0, [r4, #0x10] + ldr r0, [sp, #8] + ldrb r0, [r0, r6] + str r0, [r4, #0x14] + ldr r0, [sp] + bl FUN_0200BE38 + str r0, [r4, #0x18] + mov r1, #1 + bl FUN_020200A0 + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021D92CC + ldrb r2, [r4, #9] + ldr r0, [r4, #0x18] + add r2, r2, #5 + add r1, r2, r1 + bl FUN_02020248 + b _021D92E2 +_021D92CC: + ldrh r1, [r4, #0xa] + ldr r0, _021D934C ; =0x0000FFFF + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #1 + bhi _021D92E2 + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_020200A0 +_021D92E2: + ldrb r0, [r4, #8] + cmp r0, #0 + beq _021D92FA + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021D9308 +_021D92FA: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021D9308: + bl _ffix + add r1, r0, #0 + ldr r0, [r4, #0x18] + bl FUN_020201E4 + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x10] + add r1, #0x19 + sub r2, #0x22 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r4, #0x18] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C6E4 + ldr r0, [sp, #0xc] + add r5, #0x14 + add r0, #0x1c + str r0, [sp, #0xc] + add r0, r6, #1 + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + ldrh r0, [r7] + cmp r6, r0 + blt _021D9282 +_021D933E: + add r0, r7, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D9344: .word 0x021D990C +_021D9348: .word 0x021D98E4 +_021D934C: .word 0x0000FFFF + thumb_func_end MOD66_021D9228 + + thumb_func_start MOD66_021D9350 +MOD66_021D9350: ; 0x021D9350 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrh r0, [r5] + mov r6, #0 + cmp r0, #0 + ble _021D9380 + add r4, r6, #0 +_021D935E: + ldr r0, [r5, #8] + mov r1, #0 + add r7, r0, r4 + ldr r0, [r7, #0x18] + add r2, r1, #0 + bl FUN_0202008C + ldr r0, [r7, #0x18] + bl FUN_0201FFC8 + add r0, r6, #1 + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + ldrh r0, [r5] + add r4, #0x1c + cmp r6, r0 + blt _021D935E +_021D9380: + ldr r0, [r5, #8] + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD66_021D9350 + + thumb_func_start MOD66_021D9390 +MOD66_021D9390: ; 0x021D9390 + push {r3, r4, r5, r6} + ldrh r5, [r0] + mov r4, #0 + cmp r5, #0 + ble _021D93EC + ldr r0, [r0, #8] +_021D939C: + ldr r6, [r0] + cmp r6, r1 + bne _021D93E0 + ldrh r6, [r0, #0xa] + cmp r6, #3 + bhi _021D93E0 + add r6, r6, r6 + add r6, pc + ldrh r6, [r6, #6] + lsl r6, r6, #0x10 + asr r6, r6, #0x10 + add pc, r6 +_021D93B4: ; jump table + .short _021D93BC - _021D93B4 - 2 ; case 0 + .short _021D93C0 - _021D93B4 - 2 ; case 1 + .short _021D93CC - _021D93B4 - 2 ; case 2 + .short _021D93D8 - _021D93B4 - 2 ; case 3 +_021D93BC: + pop {r3, r4, r5, r6} + bx lr +_021D93C0: + cmp r2, #9 + bne _021D93E0 + cmp r3, #0x1c + bne _021D93E0 + pop {r3, r4, r5, r6} + bx lr +_021D93CC: + cmp r2, #0x1a + bne _021D93E0 + cmp r3, #0x12 + bne _021D93E0 + pop {r3, r4, r5, r6} + bx lr +_021D93D8: + cmp r2, #0x1a + bne _021D93E0 + cmp r3, #0x11 + beq _021D93EE +_021D93E0: + add r4, r4, #1 + lsl r4, r4, #0x10 + asr r4, r4, #0x10 + add r0, #0x1c + cmp r4, r5 + blt _021D939C +_021D93EC: + mov r0, #0 +_021D93EE: + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 + thumb_func_end MOD66_021D9390 + + thumb_func_start MOD66_021D93F4 +MOD66_021D93F4: ; 0x021D93F4 + push {r3, r4, r5, lr} + add r5, r0, #0 + bne _021D93FE + mov r0, #0 + pop {r3, r4, r5, pc} +_021D93FE: + bl MOD66_021D9390 + add r4, r0, #0 + beq _021D940C + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _021D9426 +_021D940C: + ldr r3, [r5, #4] + cmp r3, #0 + beq _021D9420 + ldrb r1, [r3, #9] + ldr r0, [r3, #0x18] + add r2, r1, #5 + ldr r1, [r3, #0x14] + add r1, r2, r1 + bl FUN_02020248 +_021D9420: + mov r0, #0 + str r0, [r5, #4] + pop {r3, r4, r5, pc} +_021D9426: + ldr r1, [r5, #4] + cmp r1, #0 + bne _021D9434 + mov r0, #0 + strb r0, [r5, #2] + strb r0, [r5, #3] + b _021D9450 +_021D9434: + ldrh r2, [r4, #0xa] + ldr r0, _021D9458 ; =0x0000FFFE + add r0, r2, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #1 + bhi _021D9450 + ldrb r2, [r1, #9] + ldr r0, [r1, #0x18] + ldr r1, [r1, #0x14] + add r2, r2, #5 + add r1, r2, r1 + bl FUN_02020248 +_021D9450: + str r4, [r5, #4] + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_021D9458: .word 0x0000FFFE + thumb_func_end MOD66_021D93F4 + + thumb_func_start MOD66_021D945C +MOD66_021D945C: ; 0x021D945C + push {r4, lr} + add r4, r0, #0 + ldr r3, [r4, #4] + cmp r3, #0 + beq _021D94A0 + cmp r1, #1 + bne _021D94A0 + ldrb r0, [r4, #3] + cmp r0, #0 + ldr r0, [r3, #0x18] + bne _021D947C + ldrb r1, [r3, #9] + add r1, #8 + bl FUN_02020248 + b _021D9488 +_021D947C: + ldrb r1, [r3, #9] + add r2, r1, #5 + ldr r1, [r3, #0x14] + add r1, r2, r1 + bl FUN_02020248 +_021D9488: + ldrb r0, [r4, #2] + add r0, r0, #1 + strb r0, [r4, #2] + ldrb r0, [r4, #2] + cmp r0, #0x10 + bne _021D94A0 + mov r0, #0 + strb r0, [r4, #2] + ldrb r1, [r4, #3] + mov r0, #1 + eor r0, r1 + strb r0, [r4, #3] +_021D94A0: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD66_021D945C + + thumb_func_start MOD66_021D94A4 +MOD66_021D94A4: ; 0x021D94A4 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r5, r0, #0 + add r0, sp, #4 + add r4, r1, #0 + bl FS_InitFile + add r0, sp, #4 + add r1, r5, #0 + bl FS_OpenFile + cmp r0, #0 + bne _021D94C8 + bl ErrorHandling + add sp, #0x4c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021D94C8: + add r0, sp, #4 + add r1, sp, #0 + mov r2, #4 + bl FS_ReadFile + cmp r0, #0 + bge _021D94DA + bl ErrorHandling +_021D94DA: + add r0, r4, #0 + mov r1, #8 + bl FUN_02016998 + add r6, r0, #0 + mov r0, #0 + strb r0, [r6] + strb r0, [r6, #1] + strb r0, [r6, #2] + strb r0, [r6, #3] + strb r0, [r6, #4] + strb r0, [r6, #5] + strb r0, [r6, #6] + strb r0, [r6, #7] + ldr r2, [sp] + mov r1, #0x18 + add r0, r4, #0 + mul r1, r2 + bl FUN_02016998 + str r0, [r6, #4] + ldr r3, [sp] + mov r2, #0x18 + mov r1, #0 + mul r2, r3 + bl Call_FillMemWithValue + ldr r0, [sp] + mov r4, #0 + str r0, [r6] + cmp r0, #0 + ble _021D9536 + add r5, r4, #0 +_021D951C: + ldr r0, [r6, #4] + mov r2, #0x18 + add r7, r0, r5 + add r0, sp, #4 + add r1, r7, #0 + bl FS_ReadFile + strh r4, [r7, #0x16] + ldr r0, [r6] + add r4, r4, #1 + add r5, #0x18 + cmp r4, r0 + blt _021D951C +_021D9536: + add r0, sp, #4 + bl FS_CloseFile + add r0, r6, #0 + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD66_021D94A4 + + thumb_func_start MOD66_021D9544 +MOD66_021D9544: ; 0x021D9544 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD66_021D9544 + + thumb_func_start MOD66_021D9558 +MOD66_021D9558: ; 0x021D9558 + push {r3, r4, r5, r6} + ldr r6, [r0] + mov r5, #0 + cmp r6, #0 + ble _021D9588 + ldr r0, [r0, #4] +_021D9564: + ldrh r4, [r0] + cmp r4, r1 + bne _021D9580 + ldrh r4, [r0, #2] + cmp r4, r2 + bne _021D9580 + ldrh r1, [r0, #0x14] + cmp r1, #0 + beq _021D958A + tst r1, r3 + bne _021D958A + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr +_021D9580: + add r5, r5, #1 + add r0, #0x18 + cmp r5, r6 + blt _021D9564 +_021D9588: + mov r0, #0 +_021D958A: + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 + thumb_func_end MOD66_021D9558 + + .section .rodata + ; 0x021D9590 + .incbin "baserom.nds", 0x2BE4B0, 0x50C + + .section .data + ; 0x021D9AA0 + .incbin "baserom.nds", 0x2BE9C0, 0xA0 diff --git a/arm9/modules/67/asm/module_67.s b/arm9/modules/67/asm/module_67.s new file mode 100644 index 00000000..8756cbb5 --- /dev/null +++ b/arm9/modules/67/asm/module_67.s @@ -0,0 +1,4337 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD67_021D74E0 +MOD67_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r0, #1 + lsl r0, r0, #0x1a + ldr r2, [r0] + ldr r1, _021D75C0 ; =0xFFFFE0FF + ldr r3, _021D75C4 ; =0x04001000 + and r2, r1 + str r2, [r0] + ldr r2, [r3] + add r0, #0x50 + and r1, r2 + str r1, [r3] + mov r1, #0 + strh r1, [r0] + add r3, #0x50 + strh r1, [r3] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + mov r2, #2 + mov r0, #3 + mov r1, #0x2a + lsl r2, r2, #0x10 + bl FUN_0201681C + add r0, r4, #0 + bl FUN_0200628C + add r5, r0, #0 + ldr r1, _021D75C8 ; =0x00001068 + add r0, r4, #0 + mov r2, #0x2a + bl FUN_02006268 + ldr r2, _021D75C8 ; =0x00001068 + mov r1, #0 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x2a + bl FUN_02016B94 + str r0, [r4] + str r5, [r4, #0x4c] + add r0, r5, #0 + bl FUN_020289A4 + str r0, [r4, #0x44] + add r0, r5, #0 + bl FUN_020238F4 + str r0, [r4, #0x48] + mov r0, #0 + mov r1, #0x2a + bl FUN_02079A70 + mov r0, #0 + mov r1, #0x2a + bl FUN_02002C84 + bl MOD67_021D7680 + ldr r0, [r4] + bl MOD67_021D76A0 + add r0, r4, #0 + bl MOD67_021D77B0 + add r0, r4, #0 + bl MOD67_021D7880 + add r0, r4, #0 + bl MOD67_021D7D60 + add r0, r4, #0 + mov r1, #0 + bl MOD67_021D7D9C + add r0, r4, #0 + bl MOD67_021D7B84 + ldr r0, _021D75CC ; =MOD67_021D7660 + add r1, r4, #0 + bl FUN_02015F10 + bl FUN_0201E788 + bl FUN_02033E74 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r1, #0 + mov r0, #0x43 + add r2, r1, #0 + bl FUN_0200433C + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D75C0: .word 0xFFFFE0FF +_021D75C4: .word 0x04001000 +_021D75C8: .word 0x00001068 +_021D75CC: .word MOD67_021D7660 + thumb_func_end MOD67_021D74E0 + + thumb_func_start MOD67_021D75D0 +MOD67_021D75D0: ; 0x021D75D0 + push {r4, lr} + add r4, r1, #0 + bl FUN_02006278 + ldr r1, [r4] + cmp r1, #4 + bhi _021D7620 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D75EA: ; jump table + .short _021D75F4 - _021D75EA - 2 ; case 0 + .short _021D75FC - _021D75EA - 2 ; case 1 + .short _021D7604 - _021D75EA - 2 ; case 2 + .short _021D760C - _021D75EA - 2 ; case 3 + .short _021D7614 - _021D75EA - 2 ; case 4 +_021D75F4: + bl MOD67_021D78C4 + str r0, [r4] + b _021D7620 +_021D75FC: + bl MOD67_021D78D8 + str r0, [r4] + b _021D7620 +_021D7604: + bl MOD67_021D795C + str r0, [r4] + b _021D7620 +_021D760C: + bl MOD67_021D7A38 + str r0, [r4] + b _021D7620 +_021D7614: + bl MOD67_021D7AA8 + cmp r0, #1 + bne _021D7620 + mov r0, #1 + pop {r4, pc} +_021D7620: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD67_021D75D0 + + thumb_func_start MOD67_021D7624 +MOD67_021D7624: ; 0x021D7624 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + add r0, r4, #0 + bl MOD67_021D7D84 + ldr r0, [r4] + bl MOD67_021D777C + add r0, r4, #0 + bl MOD67_021D78AC + mov r0, #0 + bl FUN_02002CC0 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0x2a + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD67_021D7624 + + thumb_func_start MOD67_021D7660 +MOD67_021D7660: ; 0x021D7660 + push {r3, lr} + ldr r0, [r0] + bl FUN_0201AB60 + ldr r3, _021D7678 ; =0x027E0000 + ldr r1, _021D767C ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, pc} + nop +_021D7678: .word 0x027E0000 +_021D767C: .word 0x00003FF8 + thumb_func_end MOD67_021D7660 + + thumb_func_start MOD67_021D7680 +MOD67_021D7680: ; 0x021D7680 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D769C ; =0x021D97B0 + add r3, sp, #0 + mov r2, #5 +_021D768A: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D768A + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D769C: .word 0x021D97B0 + thumb_func_end MOD67_021D7680 + + thumb_func_start MOD67_021D76A0 +MOD67_021D76A0: ; 0x021D76A0 + push {r3, r4, r5, lr} + sub sp, #0x80 + ldr r5, _021D7768 ; =0x021D9730 + add r3, sp, #0x70 + add r4, r0, #0 + 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, _021D776C ; =0x021D975C + 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, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _021D7770 ; =0x021D9740 + 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] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + ldr r5, _021D7774 ; =0x021D9778 + 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] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D7778 ; =0x021D9794 + 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, #3 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x2a + bl FUN_02017F18 + mov r0, #1 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x2a + bl FUN_02017F18 + add sp, #0x80 + pop {r3, r4, r5, pc} + nop +_021D7768: .word 0x021D9730 +_021D776C: .word 0x021D975C +_021D7770: .word 0x021D9740 +_021D7774: .word 0x021D9778 +_021D7778: .word 0x021D9794 + thumb_func_end MOD67_021D76A0 + + thumb_func_start MOD67_021D777C +MOD67_021D777C: ; 0x021D777C + push {r4, lr} + add r4, r0, #0 + bl FUN_0201E6D8 + add r0, r4, #0 + mov r1, #3 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #0 + bl FUN_020178A0 + mov r0, #0x2a + add r1, r4, #0 + bl FUN_02016A8C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD67_021D777C + + thumb_func_start MOD67_021D77B0 +MOD67_021D77B0: ; 0x021D77B0 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, [r4, #0x48] + bl FUN_020239CC + cmp r0, #0 + bne _021D7802 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x2a + str r0, [sp, #0xc] + mov r1, #2 + ldr r2, [r4] + mov r0, #0x50 + add r3, r1, #0 + bl FUN_0200687C + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r0, #0x2a + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x50 + mov r3, #2 + bl FUN_020068C8 + mov r2, #0 + str r2, [sp] + mov r0, #0x2a + str r0, [sp, #4] + mov r0, #0x50 + mov r1, #4 + add r3, r2, #0 + bl FUN_02006930 + b _021D7844 +_021D7802: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x2a + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x50 + mov r1, #3 + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x2a + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x50 + mov r1, #1 + mov r3, #2 + bl FUN_020068C8 + mov r2, #0 + str r2, [sp] + mov r0, #0x2a + str r0, [sp, #4] + mov r0, #0x50 + mov r1, #5 + add r3, r2, #0 + bl FUN_02006930 +_021D7844: + ldr r0, [r4] + mov r1, #2 + bl FUN_0201886C + add r1, r4, #0 + mov r2, #2 + add r1, #0x5c + lsl r2, r2, #0xa + bl MIi_CpuCopy16 + ldr r0, [r4] + add r4, #0x5c + mov r3, #2 + mov r1, #3 + add r2, r4, #0 + lsl r3, r3, #0xa + bl FUN_02017DFC + mov r1, #0x1e + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x2a + bl FUN_02002ED0 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + add sp, #0x10 + pop {r4, pc} + thumb_func_end MOD67_021D77B0 + + thumb_func_start MOD67_021D7880 +MOD67_021D7880: ; 0x021D7880 + push {r4, lr} + ldr r2, _021D78A8 ; =0x00000142 + add r4, r0, #0 + mov r0, #0 + mov r1, #0x1a + mov r3, #0x2a + bl FUN_0200A86C + str r0, [r4, #0x50] + mov r0, #0x2a + bl FUN_0200AA80 + str r0, [r4, #0x54] + mov r0, #0x80 + mov r1, #0x2a + bl FUN_020219F4 + str r0, [r4, #0x58] + pop {r4, pc} + nop +_021D78A8: .word 0x00000142 + thumb_func_end MOD67_021D7880 + + thumb_func_start MOD67_021D78AC +MOD67_021D78AC: ; 0x021D78AC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x50] + bl FUN_0200A8B8 + ldr r0, [r4, #0x54] + bl FUN_0200AB18 + ldr r0, [r4, #0x58] + bl FUN_02021A20 + pop {r4, pc} + thumb_func_end MOD67_021D78AC + + thumb_func_start MOD67_021D78C4 +MOD67_021D78C4: ; 0x021D78C4 + push {r3, lr} + bl FUN_0200E308 + cmp r0, #1 + bne _021D78D2 + mov r0, #1 + pop {r3, pc} +_021D78D2: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD67_021D78C4 + + thumb_func_start MOD67_021D78D8 +MOD67_021D78D8: ; 0x021D78D8 + push {r3, lr} + ldr r1, _021D7954 ; =0x021C48B8 + ldr r3, [r1, #0x48] + mov r1, #0x20 + add r2, r3, #0 + tst r2, r1 + beq _021D78F8 + sub r1, #0x21 + bl MOD67_021D7B1C + cmp r0, #1 + bne _021D78F4 + mov r0, #2 + pop {r3, pc} +_021D78F4: + mov r0, #1 + pop {r3, pc} +_021D78F8: + mov r1, #0x11 + tst r1, r3 + beq _021D7910 + mov r1, #1 + bl MOD67_021D7B1C + cmp r0, #1 + bne _021D790C + mov r0, #3 + pop {r3, pc} +_021D790C: + mov r0, #1 + pop {r3, pc} +_021D7910: + mov r2, #2 + add r1, r3, #0 + tst r1, r2 + beq _021D793A + ldr r1, _021D7958 ; =0x0000105C + ldrsb r1, [r0, r1] + cmp r1, #0 + beq _021D792E + sub r1, r2, #3 + bl MOD67_021D7B1C + cmp r0, #1 + bne _021D793A + mov r0, #2 + pop {r3, pc} +_021D792E: + mov r0, #1 + mov r1, #0x2a + bl FUN_02079A70 + mov r0, #4 + pop {r3, pc} +_021D793A: + ldr r0, _021D7954 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #8 + tst r0, r1 + beq _021D7950 + mov r0, #1 + mov r1, #0x2a + bl FUN_02079A70 + mov r0, #4 + pop {r3, pc} +_021D7950: + mov r0, #1 + pop {r3, pc} + .align 2, 0 +_021D7954: .word 0x021C48B8 +_021D7958: .word 0x0000105C + thumb_func_end MOD67_021D78D8 + + thumb_func_start MOD67_021D795C +MOD67_021D795C: ; 0x021D795C + push {r3, r4, lr} + sub sp, #0xc + ldr r1, _021D7A18 ; =0x0000105E + add r4, r0, #0 + ldrsb r1, [r4, r1] + cmp r1, #0 + beq _021D7970 + cmp r1, #1 + beq _021D79AC + b _021D7A12 +_021D7970: + bl MOD67_021D7AB0 + ldr r2, _021D7A1C ; =0x00001063 + add r0, r4, #0 + ldrb r1, [r4, r2] + sub r2, r2, #7 + ldrsb r2, [r4, r2] + sub r2, r2, #1 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + bl MOD67_021D7B5C + ldr r1, _021D7A20 ; =0x0000105C + ldrsb r0, [r4, r1] + sub r0, r0, #1 + strb r0, [r4, r1] + add r1, r1, #4 + ldrsb r2, [r4, r1] + mov r1, #1 + add r0, r4, #0 + eor r1, r2 + bl MOD67_021D7D9C + ldr r0, _021D7A18 ; =0x0000105E + mov r1, #1 + strb r1, [r4, r0] + ldr r0, _021D7A24 ; =0x00000691 + bl FUN_020054C8 + b _021D7A12 +_021D79AC: + bl MOD67_021D7C30 + cmp r0, #1 + bne _021D7A12 + ldr r1, _021D7A28 ; =0x0000105F + mov r3, #0 + strb r3, [r4, r1] + sub r0, r1, #1 + strb r3, [r4, r0] + add r0, r1, #1 + ldrsb r2, [r4, r0] + mov r0, #1 + eor r2, r0 + add r0, r1, #1 + strb r2, [r4, r0] + ldr r2, _021D7A2C ; =0x0000085C + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + add r1, r1, #3 + ldrb r1, [r4, r1] + ldr r0, [r4] + add r2, r4, r2 + bl FUN_02018148 + mov r3, #0 + add r2, r4, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r1, _021D7A30 ; =0x00001061 + ldr r0, [r4] + ldrb r1, [r4, r1] + add r2, #0x5c + bl FUN_02018148 + ldr r1, _021D7A34 ; =0x00001062 + ldr r0, [r4] + ldrb r1, [r4, r1] + bl FUN_0201AC68 + ldr r1, _021D7A30 ; =0x00001061 + ldr r0, [r4] + ldrb r1, [r4, r1] + bl FUN_0201AC68 + add sp, #0xc + mov r0, #1 + pop {r3, r4, pc} +_021D7A12: + mov r0, #2 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_021D7A18: .word 0x0000105E +_021D7A1C: .word 0x00001063 +_021D7A20: .word 0x0000105C +_021D7A24: .word 0x00000691 +_021D7A28: .word 0x0000105F +_021D7A2C: .word 0x0000085C +_021D7A30: .word 0x00001061 +_021D7A34: .word 0x00001062 + thumb_func_end MOD67_021D795C + + thumb_func_start MOD67_021D7A38 +MOD67_021D7A38: ; 0x021D7A38 + push {r4, lr} + ldr r1, _021D7A98 ; =0x0000105E + add r4, r0, #0 + ldrsb r1, [r4, r1] + cmp r1, #0 + beq _021D7A4A + cmp r1, #1 + beq _021D7A72 + b _021D7A92 +_021D7A4A: + bl MOD67_021D7AB0 + ldr r1, _021D7A9C ; =0x0000105C + ldrsb r0, [r4, r1] + add r0, r0, #1 + strb r0, [r4, r1] + add r1, r1, #4 + ldrsb r2, [r4, r1] + mov r1, #1 + add r0, r4, #0 + eor r1, r2 + bl MOD67_021D7D9C + ldr r0, _021D7A98 ; =0x0000105E + mov r1, #1 + strb r1, [r4, r0] + ldr r0, _021D7AA0 ; =0x00000691 + bl FUN_020054C8 + b _021D7A92 +_021D7A72: + bl MOD67_021D7CBC + cmp r0, #1 + bne _021D7A92 + ldr r1, _021D7AA4 ; =0x0000105F + mov r2, #0 + strb r2, [r4, r1] + sub r0, r1, #1 + strb r2, [r4, r0] + add r0, r1, #1 + ldrsb r2, [r4, r0] + mov r0, #1 + add r1, r1, #1 + eor r2, r0 + strb r2, [r4, r1] + pop {r4, pc} +_021D7A92: + mov r0, #3 + pop {r4, pc} + nop +_021D7A98: .word 0x0000105E +_021D7A9C: .word 0x0000105C +_021D7AA0: .word 0x00000691 +_021D7AA4: .word 0x0000105F + thumb_func_end MOD67_021D7A38 + + thumb_func_start MOD67_021D7AA8 +MOD67_021D7AA8: ; 0x021D7AA8 + ldr r3, _021D7AAC ; =0x0200E309 + bx r3 + .align 2, 0 +_021D7AAC: .word 0x0200E309 + thumb_func_end MOD67_021D7AA8 + + thumb_func_start MOD67_021D7AB0 +MOD67_021D7AB0: ; 0x021D7AB0 + ldr r2, _021D7AEC ; =0x00001060 + ldrsb r1, [r0, r2] + cmp r1, #0 + bne _021D7AD2 + mov r3, #0 + add r1, r2, #2 + strb r3, [r0, r1] + mov r3, #2 + add r1, r2, #1 + strb r3, [r0, r1] + mov r3, #1 + add r1, r2, #4 + strb r3, [r0, r1] + mov r3, #3 + add r1, r2, #3 + strb r3, [r0, r1] + bx lr +_021D7AD2: + mov r3, #1 + add r1, r2, #2 + strb r3, [r0, r1] + mov r3, #3 + add r1, r2, #1 + strb r3, [r0, r1] + mov r3, #0 + add r1, r2, #4 + strb r3, [r0, r1] + mov r3, #2 + add r1, r2, #3 + strb r3, [r0, r1] + bx lr + .align 2, 0 +_021D7AEC: .word 0x00001060 + thumb_func_end MOD67_021D7AB0 + + thumb_func_start MOD67_021D7AF0 +MOD67_021D7AF0: ; 0x021D7AF0 + push {r3, lr} + ldr r0, [r0, #0x44] + add r3, r1, #0 + add r1, sp, #0 + mov r2, #0 + bl FUN_02029584 + ldr r1, [sp] + lsl r0, r1, #0x19 + lsr r0, r0, #0x19 + bne _021D7B16 + lsl r0, r1, #0x15 + lsr r0, r0, #0x1c + bne _021D7B16 + lsl r0, r1, #0xd + lsr r0, r0, #0x1b + bne _021D7B16 + mov r0, #0 + pop {r3, pc} +_021D7B16: + mov r0, #1 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD67_021D7AF0 + + thumb_func_start MOD67_021D7B1C +MOD67_021D7B1C: ; 0x021D7B1C + push {r3, lr} + cmp r1, #1 + ldr r1, _021D7B58 ; =0x0000105C + bne _021D7B3C + ldrsb r1, [r0, r1] + cmp r1, #9 + beq _021D7B54 + add r1, r1, #1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD67_021D7AF0 + cmp r0, #1 + bne _021D7B54 + mov r0, #1 + pop {r3, pc} +_021D7B3C: + ldrsb r1, [r0, r1] + cmp r1, #0 + beq _021D7B54 + sub r1, r1, #1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD67_021D7AF0 + cmp r0, #1 + bne _021D7B54 + mov r0, #1 + pop {r3, pc} +_021D7B54: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_021D7B58: .word 0x0000105C + thumb_func_end MOD67_021D7B1C + + thumb_func_start MOD67_021D7B5C +MOD67_021D7B5C: ; 0x021D7B5C + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + str r2, [sp, #8] + mov r2, #0 + ldr r0, [r5] + add r3, r2, #0 + add r4, r1, #0 + bl FUN_020186B4 + ldr r0, [r5] + add r1, r4, #0 + bl FUN_0201AC68 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD67_021D7B5C + + thumb_func_start MOD67_021D7B84 +MOD67_021D7B84: ; 0x021D7B84 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_0201886C + ldr r2, _021D7B9C ; =0x0000085C + add r1, r4, r2 + sub r2, #0x5c + bl MIi_CpuCopy16 + pop {r4, pc} + .align 2, 0 +_021D7B9C: .word 0x0000085C + thumb_func_end MOD67_021D7B84 + + thumb_func_start MOD67_021D7BA0 +MOD67_021D7BA0: ; 0x021D7BA0 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r2, [sp, #0x10] + add r6, r1, #0 + ldr r1, [sp, #0x10] + add r7, r0, #0 + lsl r1, r1, #0x18 + ldr r0, [r7] + lsr r1, r1, #0x18 + add r5, r3, #0 + bl FUN_0201886C + str r0, [sp, #0x14] + ldr r1, _021D7C2C ; =0x021D97D8 + lsl r0, r5, #5 + add r5, r1, r0 + ldr r0, [sp, #0x10] + mov r4, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] +_021D7BCA: + ldrb r0, [r5, r4] + cmp r0, #0xff + bne _021D7BF0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x20 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + lsl r3, r4, #0x18 + ldr r0, [r7] + ldr r1, [sp, #0x18] + mov r2, #0 + lsr r3, r3, #0x18 + bl FUN_02018540 + b _021D7C10 +_021D7BF0: + ldr r0, [sp, #0x14] + lsl r1, r4, #1 + mov r2, #0 + add r3, r0, r1 +_021D7BF8: + ldrb r0, [r5, r4] + lsl r1, r2, #5 + add r0, r1, r0 + lsl r0, r0, #1 + ldrh r0, [r6, r0] + lsl r1, r1, #1 + strh r0, [r3, r1] + add r0, r2, #1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + cmp r2, #0x20 + blo _021D7BF8 +_021D7C10: + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x20 + blo _021D7BCA + ldr r1, [sp, #0x10] + ldr r0, [r7] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_0201AC68 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021D7C2C: .word 0x021D97D8 + thumb_func_end MOD67_021D7BA0 + + thumb_func_start MOD67_021D7C30 +MOD67_021D7C30: ; 0x021D7C30 + push {r4, lr} + ldr r3, _021D7CA8 ; =0x00001062 + add r4, r0, #0 + ldrb r2, [r4, r3] + sub r3, r3, #3 + ldr r1, _021D7CAC ; =0x0000085C + ldrsb r3, [r4, r3] + add r1, r4, r1 + bl MOD67_021D7BA0 + ldr r3, _021D7CB0 ; =0x00001061 + add r1, r4, #0 + ldrb r2, [r4, r3] + sub r3, r3, #2 + ldrsb r3, [r4, r3] + add r0, r4, #0 + add r1, #0x5c + bl MOD67_021D7BA0 + ldr r2, _021D7CB0 ; =0x00001061 + add r0, r4, #0 + ldrb r1, [r4, r2] + sub r2, r2, #5 + ldrsb r2, [r4, r2] + add r2, r2, #1 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + bl MOD67_021D7B5C + ldr r0, _021D7CB4 ; =0x0000105F + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrsb r1, [r4, r0] + cmp r1, #9 + bne _021D7CA4 + add r0, r0, #5 + ldrb r0, [r4, r0] + mov r1, #0 + bl FUN_020178BC + ldr r0, _021D7CB8 ; =0x00001063 + mov r1, #1 + ldrb r0, [r4, r0] + bl FUN_020178BC + ldr r0, _021D7CA8 ; =0x00001062 + mov r1, #2 + ldrb r0, [r4, r0] + bl FUN_020178BC + ldr r0, _021D7CB0 ; =0x00001061 + mov r1, #3 + ldrb r0, [r4, r0] + bl FUN_020178BC + mov r0, #1 + pop {r4, pc} +_021D7CA4: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D7CA8: .word 0x00001062 +_021D7CAC: .word 0x0000085C +_021D7CB0: .word 0x00001061 +_021D7CB4: .word 0x0000105F +_021D7CB8: .word 0x00001063 + thumb_func_end MOD67_021D7C30 + + thumb_func_start MOD67_021D7CBC +MOD67_021D7CBC: ; 0x021D7CBC + push {r3, r4, r5, lr} + ldr r3, _021D7D48 ; =0x00001064 + add r4, r0, #0 + ldrb r2, [r4, r3] + sub r3, r3, #5 + ldrsb r5, [r4, r3] + mov r3, #8 + ldr r1, _021D7D4C ; =0x0000085C + sub r3, r3, r5 + lsl r3, r3, #0x10 + add r1, r4, r1 + lsr r3, r3, #0x10 + bl MOD67_021D7BA0 + ldr r3, _021D7D50 ; =0x00001063 + add r1, r4, #0 + ldrb r2, [r4, r3] + sub r3, r3, #4 + ldrsb r5, [r4, r3] + mov r3, #8 + add r0, r4, #0 + sub r3, r3, r5 + lsl r3, r3, #0x10 + add r1, #0x5c + lsr r3, r3, #0x10 + bl MOD67_021D7BA0 + ldr r2, _021D7D50 ; =0x00001063 + add r0, r4, #0 + ldrb r1, [r4, r2] + sub r2, r2, #7 + ldrb r2, [r4, r2] + bl MOD67_021D7B5C + ldr r0, _021D7D54 ; =0x0000105F + ldrsb r1, [r4, r0] + cmp r1, #1 + bne _021D7D30 + add r0, r0, #5 + ldrb r0, [r4, r0] + mov r1, #0 + bl FUN_020178BC + ldr r0, _021D7D50 ; =0x00001063 + mov r1, #1 + ldrb r0, [r4, r0] + bl FUN_020178BC + ldr r0, _021D7D58 ; =0x00001062 + mov r1, #2 + ldrb r0, [r4, r0] + bl FUN_020178BC + ldr r0, _021D7D5C ; =0x00001061 + mov r1, #3 + ldrb r0, [r4, r0] + bl FUN_020178BC +_021D7D30: + ldr r0, _021D7D54 ; =0x0000105F + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrsb r0, [r4, r0] + cmp r0, #9 + bne _021D7D42 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D7D42: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D7D48: .word 0x00001064 +_021D7D4C: .word 0x0000085C +_021D7D50: .word 0x00001063 +_021D7D54: .word 0x0000105F +_021D7D58: .word 0x00001062 +_021D7D5C: .word 0x00001061 + thumb_func_end MOD67_021D7CBC + + thumb_func_start MOD67_021D7D60 +MOD67_021D7D60: ; 0x021D7D60 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r4, _021D7D80 ; =0x021D98F8 + mov r6, #0 + add r5, r7, #4 +_021D7D6A: + ldr r0, [r7] + add r1, r5, #0 + add r2, r4, #0 + bl FUN_02019150 + add r6, r6, #1 + add r4, #8 + add r5, #0x10 + cmp r6, #4 + blo _021D7D6A + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D7D80: .word 0x021D98F8 + thumb_func_end MOD67_021D7D60 + + thumb_func_start MOD67_021D7D84 +MOD67_021D7D84: ; 0x021D7D84 + push {r3, r4, r5, lr} + mov r4, #0 + add r5, r0, #4 +_021D7D8A: + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #4 + blo _021D7D8A + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD67_021D7D84 + + thumb_func_start MOD67_021D7D9C +MOD67_021D7D9C: ; 0x021D7D9C + push {r4, r5, r6, lr} + add r5, r0, #0 + cmp r1, #0 + bne _021D7DAC + add r4, r5, #0 + add r6, r5, #4 + add r4, #0x14 + b _021D7DB4 +_021D7DAC: + add r6, r5, #0 + add r4, r5, #0 + add r6, #0x24 + add r4, #0x34 +_021D7DB4: + add r0, r6, #0 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD67_021D7E00 + cmp r0, #1 + bne _021D7DF2 + add r0, r5, #0 + add r1, r4, #0 + bl MOD67_021D7F18 + add r0, r5, #0 + add r1, r4, #0 + bl MOD67_021D81C4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD67_021D8208 + add r0, r5, #0 + add r1, r4, #0 + bl MOD67_021D8344 +_021D7DF2: + add r0, r6, #0 + bl FUN_02019220 + add r0, r4, #0 + bl FUN_02019220 + pop {r4, r5, r6, pc} + thumb_func_end MOD67_021D7D9C + + thumb_func_start MOD67_021D7E00 +MOD67_021D7E00: ; 0x021D7E00 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + ldr r3, _021D7F10 ; =0x0000105C + add r5, r0, #0 + ldrb r3, [r5, r3] + ldr r0, [r5, #0x44] + add r7, r1, #0 + str r2, [sp, #0x10] + add r1, sp, #0x14 + mov r2, #0 + bl FUN_02029584 + ldr r1, [sp, #0x14] + lsl r0, r1, #0x19 + lsr r0, r0, #0x19 + bne _021D7E32 + lsl r0, r1, #0x15 + lsr r0, r0, #0x1c + bne _021D7E32 + lsl r0, r1, #0xd + lsr r0, r0, #0x1b + bne _021D7E32 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D7E32: + ldr r0, [r5, #0x50] + mov r1, #1 + bl FUN_0200A914 + ldr r2, [sp, #0x14] + add r4, r0, #0 + lsl r2, r2, #0x15 + ldr r0, [r5, #0x54] + mov r1, #0 + lsr r2, r2, #0x1c + bl FUN_0200B764 + mov r0, #0 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + ldr r2, [sp, #0x14] + ldr r0, [r5, #0x54] + lsl r2, r2, #0xd + lsr r2, r2, #0x1b + mov r3, #2 + bl FUN_0200AD38 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7F14 ; =0x00010200 + add r3, r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, #0x58] + add r0, r7, #0 + bl FUN_0201BDE0 + mov r0, #0 + ldr r1, [r5, #0x58] + add r2, r0, #0 + bl FUN_02002E14 + ldr r1, [sp, #0x14] + add r4, r0, #0 + lsl r1, r1, #0x12 + lsr r1, r1, #0x1d + ldr r0, [r5, #0x50] + add r1, r1, #2 + bl FUN_0200A914 + add r6, r0, #0 + mov r1, #0 + add r4, #0xc + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7F14 ; =0x00010200 + add r2, r6, #0 + str r0, [sp, #8] + add r0, r7, #0 + add r3, r4, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, [r5, #0x50] + mov r1, #0 + bl FUN_0200A914 + add r4, r0, #0 + ldr r0, [sp, #0x14] + lsr r0, r0, #0x13 + bl FUN_02034824 + add r2, r0, #0 + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200AFF4 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r4, #0 + bl FUN_0200B7B8 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7F14 ; =0x00010200 + add r3, r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + mov r0, #1 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D7F10: .word 0x0000105C +_021D7F14: .word 0x00010200 + thumb_func_end MOD67_021D7E00 + + thumb_func_start MOD67_021D7F18 +MOD67_021D7F18: ; 0x021D7F18 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + ldr r3, _021D81C0 ; =0x0000105C + add r6, r0, #0 + ldrb r3, [r6, r3] + ldr r0, [r6, #0x44] + add r7, r1, #0 + add r1, sp, #0 + mov r2, #1 + bl FUN_02029584 + mov r4, #0 + add r5, sp, #0 +_021D7F32: + ldrb r0, [r5] + cmp r0, #0x23 + bls _021D7F3A + b _021D81B0 +_021D7F3A: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7F46: ; jump table + .short _021D7F8E - _021D7F46 - 2 ; case 0 + .short _021D7F92 - _021D7F46 - 2 ; case 1 + .short _021D7FA2 - _021D7F46 - 2 ; case 2 + .short _021D7FB2 - _021D7F46 - 2 ; case 3 + .short _021D7FC2 - _021D7F46 - 2 ; case 4 + .short _021D7FD2 - _021D7F46 - 2 ; case 5 + .short _021D7FE2 - _021D7F46 - 2 ; case 6 + .short _021D7FF2 - _021D7F46 - 2 ; case 7 + .short _021D8002 - _021D7F46 - 2 ; case 8 + .short _021D8012 - _021D7F46 - 2 ; case 9 + .short _021D8022 - _021D7F46 - 2 ; case 10 + .short _021D8032 - _021D7F46 - 2 ; case 11 + .short _021D8042 - _021D7F46 - 2 ; case 12 + .short _021D8052 - _021D7F46 - 2 ; case 13 + .short _021D8062 - _021D7F46 - 2 ; case 14 + .short _021D8072 - _021D7F46 - 2 ; case 15 + .short _021D8082 - _021D7F46 - 2 ; case 16 + .short _021D8092 - _021D7F46 - 2 ; case 17 + .short _021D80A2 - _021D7F46 - 2 ; case 18 + .short _021D80C2 - _021D7F46 - 2 ; case 19 + .short _021D80D2 - _021D7F46 - 2 ; case 20 + .short _021D8102 - _021D7F46 - 2 ; case 21 + .short _021D80F2 - _021D7F46 - 2 ; case 22 + .short _021D80E2 - _021D7F46 - 2 ; case 23 + .short _021D80B2 - _021D7F46 - 2 ; case 24 + .short _021D8122 - _021D7F46 - 2 ; case 25 + .short _021D8112 - _021D7F46 - 2 ; case 26 + .short _021D8132 - _021D7F46 - 2 ; case 27 + .short _021D8142 - _021D7F46 - 2 ; case 28 + .short _021D8152 - _021D7F46 - 2 ; case 29 + .short _021D8162 - _021D7F46 - 2 ; case 30 + .short _021D81B0 - _021D7F46 - 2 ; case 31 + .short _021D8182 - _021D7F46 - 2 ; case 32 + .short _021D8172 - _021D7F46 - 2 ; case 33 + .short _021D8192 - _021D7F46 - 2 ; case 34 + .short _021D81A2 - _021D7F46 - 2 ; case 35 +_021D7F8E: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} +_021D7F92: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D84A8 + b _021D81B0 +_021D7FA2: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D84E4 + b _021D81B0 +_021D7FB2: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8520 + b _021D81B0 +_021D7FC2: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D855C + b _021D81B0 +_021D7FD2: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8598 + b _021D81B0 +_021D7FE2: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D85D4 + b _021D81B0 +_021D7FF2: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8610 + b _021D81B0 +_021D8002: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D864C + b _021D81B0 +_021D8012: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8688 + b _021D81B0 +_021D8022: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D86DC + b _021D81B0 +_021D8032: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D873C + b _021D81B0 +_021D8042: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8790 + b _021D81B0 +_021D8052: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D87E4 + b _021D81B0 +_021D8062: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8840 + b _021D81B0 +_021D8072: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D88AC + b _021D81B0 +_021D8082: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8914 + b _021D81B0 +_021D8092: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8950 + b _021D81B0 +_021D80A2: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D898C + b _021D81B0 +_021D80B2: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D89E0 + b _021D81B0 +_021D80C2: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8A3C + b _021D81B0 +_021D80D2: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8A98 + b _021D81B0 +_021D80E2: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8AF4 + b _021D81B0 +_021D80F2: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8B50 + b _021D81B0 +_021D8102: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8BAC + b _021D81B0 +_021D8112: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8C08 + b _021D81B0 +_021D8122: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8C64 + b _021D81B0 +_021D8132: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8CC0 + b _021D81B0 +_021D8142: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8D1C + b _021D81B0 +_021D8152: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8D78 + b _021D81B0 +_021D8162: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8DD4 + b _021D81B0 +_021D8172: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8E10 + b _021D81B0 +_021D8182: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8E4C + b _021D81B0 +_021D8192: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8E88 + b _021D81B0 +_021D81A2: + lsl r3, r4, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + lsr r3, r3, #0x18 + bl MOD67_021D8EC4 +_021D81B0: + add r4, r4, #1 + add r5, #8 + cmp r4, #4 + bhs _021D81BA + b _021D7F32 +_021D81BA: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D81C0: .word 0x0000105C + thumb_func_end MOD67_021D7F18 + + thumb_func_start MOD67_021D81C4 +MOD67_021D81C4: ; 0x021D81C4 + push {r3, r4, r5, lr} + ldr r3, _021D8204 ; =0x0000105C + add r5, r0, #0 + ldrb r3, [r5, r3] + ldr r0, [r5, #0x44] + add r4, r1, #0 + add r1, sp, #0 + mov r2, #2 + bl FUN_02029584 + add r0, sp, #0 + ldrb r0, [r0] + cmp r0, #0 + beq _021D8200 + cmp r0, #1 + beq _021D81EA + cmp r0, #2 + beq _021D81F6 + pop {r3, r4, r5, pc} +_021D81EA: + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #0 + bl MOD67_021D8F40 + pop {r3, r4, r5, pc} +_021D81F6: + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #0 + bl MOD67_021D8FEC +_021D8200: + pop {r3, r4, r5, pc} + nop +_021D8204: .word 0x0000105C + thumb_func_end MOD67_021D81C4 + + thumb_func_start MOD67_021D8208 +MOD67_021D8208: ; 0x021D8208 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r3, _021D8334 ; =0x0000105C + add r4, r0, #0 + ldrb r3, [r4, r3] + ldr r0, [r4, #0x44] + add r7, r1, #0 + add r1, sp, #0x10 + mov r2, #3 + bl FUN_02029584 + add r0, sp, #0x10 + ldrh r1, [r0] + lsl r1, r1, #0x1f + lsr r1, r1, #0x1f + bne _021D822A + b _021D832E +_021D822A: + ldrh r0, [r0, #2] + bl FUN_02034824 + add r2, r0, #0 + ldr r1, _021D8338 ; =0x0000017E + mov r0, #0x1a + mov r3, #0x2a + bl FUN_0200A738 + add r6, r0, #0 + bl FUN_02021D3C + add r5, r0, #0 + add r0, r6, #0 + bl FUN_02021A20 + add r0, sp, #0x10 + ldrh r0, [r0] + mov r1, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x11 + bl FUN_0206AC74 + cmp r0, #0x3f + bne _021D828A + ldr r0, [r4, #0x50] + mov r1, #0x38 + bl FUN_0200A914 + add r6, r0, #0 + ldr r0, [r4, #0x54] + ldr r2, [r4, #0x4c] + mov r1, #1 + bl FUN_0200ABE4 + ldr r0, [r4, #0x54] + ldr r1, [r4, #0x58] + add r2, r6, #0 + bl FUN_0200B7B8 + ldr r0, [r4, #0x58] + bl FUN_02021D3C + add r5, r5, r0 + add r0, r6, #0 + bl FUN_02021A20 + b _021D82BA +_021D828A: + add r2, sp, #0x10 + ldrh r2, [r2] + ldr r1, _021D833C ; =0x0000022F + mov r0, #0x1a + lsl r2, r2, #0x10 + lsr r2, r2, #0x11 + mov r3, #0x2a + bl FUN_0200A738 + add r6, r0, #0 + bl FUN_02021D3C + add r5, r5, r0 + add r0, r6, #0 + bl FUN_02021A20 + add r2, sp, #0x10 + ldrh r2, [r2] + ldr r0, [r4, #0x54] + mov r1, #1 + lsl r2, r2, #0x10 + lsr r2, r2, #0x11 + bl FUN_0200B10C +_021D82BA: + cmp r5, #0xe + bhi _021D82CA + ldr r0, [r4, #0x50] + mov r1, #0x34 + bl FUN_0200A914 + add r5, r0, #0 + b _021D82F2 +_021D82CA: + cmp r5, #0x10 + bhi _021D82DA + ldr r0, [r4, #0x50] + mov r1, #0x35 + bl FUN_0200A914 + add r5, r0, #0 + b _021D82F2 +_021D82DA: + cmp r5, #0x13 + ldr r0, [r4, #0x50] + bhi _021D82EA + mov r1, #0x36 + bl FUN_0200A914 + add r5, r0, #0 + b _021D82F2 +_021D82EA: + mov r1, #0x37 + bl FUN_0200A914 + add r5, r0, #0 +_021D82F2: + add r0, sp, #0x10 + ldrh r0, [r0, #2] + bl FUN_02034824 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200AFF4 + ldr r0, [r4, #0x54] + ldr r1, [r4, #0x58] + add r2, r5, #0 + bl FUN_0200B7B8 + mov r0, #0x60 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8340 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r4, #0x58] + add r0, r7, #0 + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r5, #0 + bl FUN_02021A20 +_021D832E: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D8334: .word 0x0000105C +_021D8338: .word 0x0000017E +_021D833C: .word 0x0000022F +_021D8340: .word 0x00010200 + thumb_func_end MOD67_021D8208 + + thumb_func_start MOD67_021D8344 +MOD67_021D8344: ; 0x021D8344 + push {r4, r5, r6, r7, lr} + sub sp, #0x74 + ldr r3, _021D84A4 ; =0x0000105C + add r6, r0, #0 + ldrb r3, [r6, r3] + ldr r0, [r6, #0x44] + add r7, r1, #0 + add r1, sp, #0 + mov r2, #4 + bl FUN_02029584 + mov r5, #0 + add r4, sp, #0 +_021D835E: + ldrb r0, [r4] + cmp r0, #0x10 + bls _021D8366 + b _021D8496 +_021D8366: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8372: ; jump table + .short _021D8394 - _021D8372 - 2 ; case 0 + .short _021D8398 - _021D8372 - 2 ; case 1 + .short _021D83A8 - _021D8372 - 2 ; case 2 + .short _021D83B8 - _021D8372 - 2 ; case 3 + .short _021D83C8 - _021D8372 - 2 ; case 4 + .short _021D83D8 - _021D8372 - 2 ; case 5 + .short _021D83E8 - _021D8372 - 2 ; case 6 + .short _021D83F8 - _021D8372 - 2 ; case 7 + .short _021D8408 - _021D8372 - 2 ; case 8 + .short _021D8418 - _021D8372 - 2 ; case 9 + .short _021D8428 - _021D8372 - 2 ; case 10 + .short _021D8438 - _021D8372 - 2 ; case 11 + .short _021D8448 - _021D8372 - 2 ; case 12 + .short _021D8458 - _021D8372 - 2 ; case 13 + .short _021D8468 - _021D8372 - 2 ; case 14 + .short _021D8478 - _021D8372 - 2 ; case 15 + .short _021D8488 - _021D8372 - 2 ; case 16 +_021D8394: + add sp, #0x74 + pop {r4, r5, r6, r7, pc} +_021D8398: + lsl r3, r5, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl MOD67_021D90D4 + b _021D8496 +_021D83A8: + lsl r3, r5, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl MOD67_021D9158 + b _021D8496 +_021D83B8: + lsl r3, r5, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl MOD67_021D91DC + b _021D8496 +_021D83C8: + lsl r3, r5, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl MOD67_021D9274 + b _021D8496 +_021D83D8: + lsl r3, r5, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl MOD67_021D92F8 + b _021D8496 +_021D83E8: + lsl r3, r5, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl MOD67_021D9390 + b _021D8496 +_021D83F8: + lsl r3, r5, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl MOD67_021D93EC + b _021D8496 +_021D8408: + lsl r3, r5, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl MOD67_021D9458 + b _021D8496 +_021D8418: + lsl r3, r5, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl MOD67_021D9494 + b _021D8496 +_021D8428: + lsl r3, r5, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl MOD67_021D94F0 + b _021D8496 +_021D8438: + lsl r3, r5, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl MOD67_021D952C + b _021D8496 +_021D8448: + lsl r3, r5, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl MOD67_021D95B0 + b _021D8496 +_021D8458: + lsl r3, r5, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl MOD67_021D95EC + b _021D8496 +_021D8468: + lsl r3, r5, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl MOD67_021D964C + b _021D8496 +_021D8478: + lsl r3, r5, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl MOD67_021D9688 + b _021D8496 +_021D8488: + lsl r3, r5, #0x18 + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + lsr r3, r3, #0x18 + bl MOD67_021D96F4 +_021D8496: + add r5, r5, #1 + add r4, #0x3a + cmp r5, #2 + bhs _021D84A0 + b _021D835E +_021D84A0: + add sp, #0x74 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D84A4: .word 0x0000105C + thumb_func_end MOD67_021D8344 + + thumb_func_start MOD67_021D84A8 +MOD67_021D84A8: ; 0x021D84A8 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #9 + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D84E0 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D84E0: .word 0x00010200 + thumb_func_end MOD67_021D84A8 + + thumb_func_start MOD67_021D84E4 +MOD67_021D84E4: ; 0x021D84E4 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0xa + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D851C ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D851C: .word 0x00010200 + thumb_func_end MOD67_021D84E4 + + thumb_func_start MOD67_021D8520 +MOD67_021D8520: ; 0x021D8520 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0xb + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8558 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8558: .word 0x00010200 + thumb_func_end MOD67_021D8520 + + thumb_func_start MOD67_021D855C +MOD67_021D855C: ; 0x021D855C + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0xc + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8594 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8594: .word 0x00010200 + thumb_func_end MOD67_021D855C + + thumb_func_start MOD67_021D8598 +MOD67_021D8598: ; 0x021D8598 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0xd + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D85D0 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D85D0: .word 0x00010200 + thumb_func_end MOD67_021D8598 + + thumb_func_start MOD67_021D85D4 +MOD67_021D85D4: ; 0x021D85D4 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0xe + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D860C ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D860C: .word 0x00010200 + thumb_func_end MOD67_021D85D4 + + thumb_func_start MOD67_021D8610 +MOD67_021D8610: ; 0x021D8610 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0xf + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8648 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8648: .word 0x00010200 + thumb_func_end MOD67_021D8610 + + thumb_func_start MOD67_021D864C +MOD67_021D864C: ; 0x021D864C + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0x10 + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8684 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8684: .word 0x00010200 + thumb_func_end MOD67_021D864C + + thumb_func_start MOD67_021D8688 +MOD67_021D8688: ; 0x021D8688 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x11 + add r6, r3, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldrh r2, [r4, #2] + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200B430 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D86D8 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D86D8: .word 0x00010200 + thumb_func_end MOD67_021D8688 + + thumb_func_start MOD67_021D86DC +MOD67_021D86DC: ; 0x021D86DC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x12 + add r6, r3, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldrh r2, [r4, #2] + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200B430 + ldrh r2, [r4, #4] + ldr r0, [r5, #0x54] + mov r1, #1 + bl FUN_0200B10C + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8738 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D8738: .word 0x00010200 + thumb_func_end MOD67_021D86DC + + thumb_func_start MOD67_021D873C +MOD67_021D873C: ; 0x021D873C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x13 + add r6, r3, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldrh r2, [r4, #4] + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200B10C + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D878C ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D878C: .word 0x00010200 + thumb_func_end MOD67_021D873C + + thumb_func_start MOD67_021D8790 +MOD67_021D8790: ; 0x021D8790 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x14 + add r6, r3, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldrh r2, [r4, #4] + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200B10C + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D87E0 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D87E0: .word 0x00010200 + thumb_func_end MOD67_021D8790 + + thumb_func_start MOD67_021D87E4 +MOD67_021D87E4: ; 0x021D87E4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x15 + add r6, r3, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldrh r0, [r4, #2] + bl FUN_02034824 + add r2, r0, #0 + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200AFF4 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D883C ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D883C: .word 0x00010200 + thumb_func_end MOD67_021D87E4 + + thumb_func_start MOD67_021D8840 +MOD67_021D8840: ; 0x021D8840 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldrh r4, [r2, #2] + add r5, r0, #0 + add r6, r3, #0 + str r1, [sp, #0x10] + cmp r4, #0x2f + beq _021D8858 + cmp r4, #0x40 + beq _021D8858 + cmp r4, #0x31 + bne _021D8864 +_021D8858: + ldr r0, [r5, #0x50] + mov r1, #0x17 + bl FUN_0200A914 + add r7, r0, #0 + b _021D886E +_021D8864: + ldr r0, [r5, #0x50] + mov r1, #0x16 + bl FUN_0200A914 + add r7, r0, #0 +_021D886E: + ldr r0, [r5, #0x54] + mov r1, #0 + add r2, r4, #0 + bl FUN_0200AFF4 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D88A8 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D88A8: .word 0x00010200 + thumb_func_end MOD67_021D8840 + + thumb_func_start MOD67_021D88AC +MOD67_021D88AC: ; 0x021D88AC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldrh r0, [r2, #2] + add r7, r1, #0 + add r4, r3, #0 + str r0, [sp, #0x10] + bl FUN_02029960 + cmp r0, #0 + ldr r0, [r5, #0x50] + bne _021D88CC + mov r1, #0x17 + bl FUN_0200A914 + b _021D88D2 +_021D88CC: + mov r1, #0x18 + bl FUN_0200A914 +_021D88D2: + add r6, r0, #0 + ldr r0, [r5, #0x54] + ldr r2, [sp, #0x10] + mov r1, #0 + bl FUN_0200AFF4 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r6, #0 + bl FUN_0200B7B8 + lsl r0, r4, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8910 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, #0x58] + add r0, r7, #0 + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D8910: .word 0x00010200 + thumb_func_end MOD67_021D88AC + + thumb_func_start MOD67_021D8914 +MOD67_021D8914: ; 0x021D8914 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0x19 + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D894C ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D894C: .word 0x00010200 + thumb_func_end MOD67_021D8914 + + thumb_func_start MOD67_021D8950 +MOD67_021D8950: ; 0x021D8950 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0x1a + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8988 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8988: .word 0x00010200 + thumb_func_end MOD67_021D8950 + + thumb_func_start MOD67_021D898C +MOD67_021D898C: ; 0x021D898C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x1d + add r6, r3, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldrh r2, [r4, #6] + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200AE38 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D89DC ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D89DC: .word 0x00010200 + thumb_func_end MOD67_021D898C + + thumb_func_start MOD67_021D89E0 +MOD67_021D89E0: ; 0x021D89E0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x23 + add r6, r3, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldrh r0, [r4, #2] + bl FUN_02034824 + add r2, r0, #0 + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200AFF4 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8A38 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D8A38: .word 0x00010200 + thumb_func_end MOD67_021D89E0 + + thumb_func_start MOD67_021D8A3C +MOD67_021D8A3C: ; 0x021D8A3C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x1e + add r6, r3, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldrh r0, [r4, #2] + bl FUN_02034824 + add r2, r0, #0 + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200AFF4 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8A94 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D8A94: .word 0x00010200 + thumb_func_end MOD67_021D8A3C + + thumb_func_start MOD67_021D8A98 +MOD67_021D8A98: ; 0x021D8A98 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x1f + add r6, r3, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldrh r0, [r4, #2] + bl FUN_02034824 + add r2, r0, #0 + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200AFF4 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8AF0 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D8AF0: .word 0x00010200 + thumb_func_end MOD67_021D8A98 + + thumb_func_start MOD67_021D8AF4 +MOD67_021D8AF4: ; 0x021D8AF4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x26 + add r6, r3, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldrh r0, [r4, #2] + bl FUN_02034824 + add r2, r0, #0 + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200AFF4 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8B4C ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D8B4C: .word 0x00010200 + thumb_func_end MOD67_021D8AF4 + + thumb_func_start MOD67_021D8B50 +MOD67_021D8B50: ; 0x021D8B50 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x21 + add r6, r3, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldrh r0, [r4, #2] + bl FUN_02034824 + add r2, r0, #0 + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200AFF4 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8BA8 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D8BA8: .word 0x00010200 + thumb_func_end MOD67_021D8B50 + + thumb_func_start MOD67_021D8BAC +MOD67_021D8BAC: ; 0x021D8BAC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x20 + add r6, r3, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldrh r0, [r4, #2] + bl FUN_02034824 + add r2, r0, #0 + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200AFF4 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8C04 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D8C04: .word 0x00010200 + thumb_func_end MOD67_021D8BAC + + thumb_func_start MOD67_021D8C08 +MOD67_021D8C08: ; 0x021D8C08 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x25 + add r6, r3, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldrh r0, [r4, #2] + bl FUN_02034824 + add r2, r0, #0 + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200AFF4 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8C60 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D8C60: .word 0x00010200 + thumb_func_end MOD67_021D8C08 + + thumb_func_start MOD67_021D8C64 +MOD67_021D8C64: ; 0x021D8C64 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x24 + add r6, r3, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldrh r0, [r4, #2] + bl FUN_02034824 + add r2, r0, #0 + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200AFF4 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8CBC ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D8CBC: .word 0x00010200 + thumb_func_end MOD67_021D8C64 + + thumb_func_start MOD67_021D8CC0 +MOD67_021D8CC0: ; 0x021D8CC0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x22 + add r6, r3, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldrh r0, [r4, #2] + bl FUN_02034824 + add r2, r0, #0 + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200AFF4 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8D18 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D8D18: .word 0x00010200 + thumb_func_end MOD67_021D8CC0 + + thumb_func_start MOD67_021D8D1C +MOD67_021D8D1C: ; 0x021D8D1C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x29 + add r6, r3, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldrh r0, [r4, #2] + bl FUN_02034824 + add r2, r0, #0 + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200AFF4 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8D74 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D8D74: .word 0x00010200 + thumb_func_end MOD67_021D8D1C + + thumb_func_start MOD67_021D8D78 +MOD67_021D8D78: ; 0x021D8D78 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x27 + add r6, r3, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldrh r0, [r4, #2] + bl FUN_02034824 + add r2, r0, #0 + ldr r0, [r5, #0x54] + mov r1, #0 + bl FUN_0200AFF4 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8DD0 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D8DD0: .word 0x00010200 + thumb_func_end MOD67_021D8D78 + + thumb_func_start MOD67_021D8DD4 +MOD67_021D8DD4: ; 0x021D8DD4 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0x28 + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8E0C ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8E0C: .word 0x00010200 + thumb_func_end MOD67_021D8DD4 + + thumb_func_start MOD67_021D8E10 +MOD67_021D8E10: ; 0x021D8E10 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0x2a + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8E48 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8E48: .word 0x00010200 + thumb_func_end MOD67_021D8E10 + + thumb_func_start MOD67_021D8E4C +MOD67_021D8E4C: ; 0x021D8E4C + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0x2b + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8E84 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8E84: .word 0x00010200 + thumb_func_end MOD67_021D8E4C + + thumb_func_start MOD67_021D8E88 +MOD67_021D8E88: ; 0x021D8E88 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0x1b + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8EC0 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8EC0: .word 0x00010200 + thumb_func_end MOD67_021D8E88 + + thumb_func_start MOD67_021D8EC4 +MOD67_021D8EC4: ; 0x021D8EC4 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0x1c + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8EFC ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8EFC: .word 0x00010200 + thumb_func_end MOD67_021D8EC4 + + thumb_func_start MOD67_021D8F00 +MOD67_021D8F00: ; 0x021D8F00 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r2, #0 + str r3, [sp, #0xc] + mov r0, #0x2a + add r7, r1, #0 + bl FUN_020669C0 + str r4, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + add r6, r0, #0 + add r1, r7, #0 + mov r2, #1 + mov r3, #0x20 + bl FUN_02066DD4 + add r0, r6, #0 + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r5, #0x54] + ldr r1, [sp, #0xc] + bl FUN_0200AC60 + add r0, r6, #0 + bl FUN_02016A18 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD67_021D8F00 + + thumb_func_start MOD67_021D8F40 +MOD67_021D8F40: ; 0x021D8F40 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r2, #0 + add r5, r0, #0 + ldrb r0, [r4, #1] + add r7, r1, #0 + lsl r1, r0, #0x1e + lsr r1, r1, #0x1e + beq _021D8F58 + cmp r1, #1 + beq _021D8F64 + b _021D8F70 +_021D8F58: + ldr r0, [r5, #0x50] + mov r1, #0x2c + bl FUN_0200A914 + add r6, r0, #0 + b _021D8F9A +_021D8F64: + ldr r0, [r5, #0x50] + mov r1, #0x2d + bl FUN_0200A914 + add r6, r0, #0 + b _021D8F9A +_021D8F70: + lsl r0, r0, #0x18 + lsr r0, r0, #0x1e + bne _021D8F82 + ldr r0, [r5, #0x50] + mov r1, #0x2e + bl FUN_0200A914 + add r6, r0, #0 + b _021D8F9A +_021D8F82: + cmp r0, #1 + ldr r0, [r5, #0x50] + bne _021D8F92 + mov r1, #0x2f + bl FUN_0200A914 + add r6, r0, #0 + b _021D8F9A +_021D8F92: + mov r1, #0x2c + bl FUN_0200A914 + add r6, r0, #0 +_021D8F9A: + ldrb r2, [r4, #1] + ldrh r1, [r4, #2] + add r0, r5, #0 + lsl r2, r2, #0x18 + lsr r2, r2, #0x1e + mov r3, #0 + bl MOD67_021D8F00 + ldrb r2, [r4, #1] + ldr r0, [r5, #0x54] + mov r1, #1 + lsl r2, r2, #0x1a + lsr r2, r2, #0x1c + bl FUN_0200B468 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r6, #0 + bl FUN_0200B7B8 + mov r0, #0x50 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8FE8 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, #0x58] + add r0, r7, #0 + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8FE8: .word 0x00010200 + thumb_func_end MOD67_021D8F40 + + thumb_func_start MOD67_021D8FEC +MOD67_021D8FEC: ; 0x021D8FEC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r2, #0 + add r5, r0, #0 + ldrb r0, [r4, #1] + add r7, r1, #0 + lsl r1, r0, #0x1e + lsr r1, r1, #0x1e + beq _021D9004 + cmp r1, #1 + beq _021D9010 + b _021D901C +_021D9004: + ldr r0, [r5, #0x50] + mov r1, #0x30 + bl FUN_0200A914 + add r6, r0, #0 + b _021D9046 +_021D9010: + ldr r0, [r5, #0x50] + mov r1, #0x31 + bl FUN_0200A914 + add r6, r0, #0 + b _021D9046 +_021D901C: + lsl r0, r0, #0x18 + lsr r0, r0, #0x1e + bne _021D902E + ldr r0, [r5, #0x50] + mov r1, #0x32 + bl FUN_0200A914 + add r6, r0, #0 + b _021D9046 +_021D902E: + cmp r0, #1 + ldr r0, [r5, #0x50] + bne _021D903E + mov r1, #0x33 + bl FUN_0200A914 + add r6, r0, #0 + b _021D9046 +_021D903E: + mov r1, #0x30 + bl FUN_0200A914 + add r6, r0, #0 +_021D9046: + ldrb r2, [r4, #1] + ldrh r1, [r4, #2] + add r0, r5, #0 + lsl r2, r2, #0x18 + lsr r2, r2, #0x1e + mov r3, #0 + bl MOD67_021D8F00 + ldrb r2, [r4, #1] + ldr r0, [r5, #0x54] + mov r1, #1 + lsl r2, r2, #0x1a + lsr r2, r2, #0x1c + bl FUN_0200B468 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r6, #0 + bl FUN_0200B7B8 + mov r0, #0x50 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D9094 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, #0x58] + add r0, r7, #0 + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9094: .word 0x00010200 + thumb_func_end MOD67_021D8FEC + + thumb_func_start MOD67_021D9098 +MOD67_021D9098: ; 0x021D9098 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x20 + mov r1, #0x2a + add r7, r2, #0 + str r3, [sp, #8] + bl FUN_020219F4 + add r1, r6, #0 + add r4, r0, #0 + bl FUN_02021E28 + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, [r5, #0x54] + ldr r1, [sp, #8] + add r2, r4, #0 + add r3, r7, #0 + bl FUN_0200ABB4 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD67_021D9098 + + thumb_func_start MOD67_021D90D4 +MOD67_021D90D4: ; 0x021D90D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r0, #0 + ldrb r0, [r4, #1] + str r1, [sp, #0x10] + add r6, r3, #0 + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + beq _021D90F2 + cmp r0, #1 + beq _021D90FE + cmp r0, #2 + beq _021D910A + b _021D9114 +_021D90F2: + ldr r0, [r5, #0x50] + mov r1, #0x39 + bl FUN_0200A914 + add r7, r0, #0 + b _021D9114 +_021D90FE: + ldr r0, [r5, #0x50] + mov r1, #0x3a + bl FUN_0200A914 + add r7, r0, #0 + b _021D9114 +_021D910A: + ldr r0, [r5, #0x50] + mov r1, #0x3b + bl FUN_0200A914 + add r7, r0, #0 +_021D9114: + ldrb r2, [r4, #1] + add r0, r5, #0 + add r1, r4, #2 + lsl r2, r2, #0x1b + lsr r2, r2, #0x1f + mov r3, #0 + bl MOD67_021D9098 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x70 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D9154 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D9154: .word 0x00010200 + thumb_func_end MOD67_021D90D4 + + thumb_func_start MOD67_021D9158 +MOD67_021D9158: ; 0x021D9158 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r0, #0 + ldrb r0, [r4, #1] + str r1, [sp, #0x10] + add r6, r3, #0 + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + beq _021D9176 + cmp r0, #1 + beq _021D9182 + cmp r0, #2 + beq _021D918E + b _021D9198 +_021D9176: + ldr r0, [r5, #0x50] + mov r1, #0x3c + bl FUN_0200A914 + add r7, r0, #0 + b _021D9198 +_021D9182: + ldr r0, [r5, #0x50] + mov r1, #0x3d + bl FUN_0200A914 + add r7, r0, #0 + b _021D9198 +_021D918E: + ldr r0, [r5, #0x50] + mov r1, #0x3e + bl FUN_0200A914 + add r7, r0, #0 +_021D9198: + ldrb r2, [r4, #1] + add r0, r5, #0 + add r1, r4, #2 + lsl r2, r2, #0x1b + lsr r2, r2, #0x1f + mov r3, #0 + bl MOD67_021D9098 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x70 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D91D8 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D91D8: .word 0x00010200 + thumb_func_end MOD67_021D9158 + + thumb_func_start MOD67_021D91DC +MOD67_021D91DC: ; 0x021D91DC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r0, #0 + ldrb r0, [r4, #1] + str r1, [sp, #0x10] + add r6, r3, #0 + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + beq _021D91FA + cmp r0, #1 + beq _021D9206 + cmp r0, #2 + beq _021D9212 + b _021D921C +_021D91FA: + ldr r0, [r5, #0x50] + mov r1, #0x3f + bl FUN_0200A914 + add r7, r0, #0 + b _021D921C +_021D9206: + ldr r0, [r5, #0x50] + mov r1, #0x40 + bl FUN_0200A914 + add r7, r0, #0 + b _021D921C +_021D9212: + ldr r0, [r5, #0x50] + mov r1, #0x41 + bl FUN_0200A914 + add r7, r0, #0 +_021D921C: + ldrb r2, [r4, #1] + add r0, r5, #0 + add r1, r4, #2 + lsl r2, r2, #0x1b + lsr r2, r2, #0x1f + mov r3, #0 + bl MOD67_021D9098 + ldrb r2, [r4, #1] + add r1, r4, #0 + add r0, r5, #0 + lsl r2, r2, #0x1a + add r1, #0x12 + lsr r2, r2, #0x1f + mov r3, #1 + bl MOD67_021D9098 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x70 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D9270 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D9270: .word 0x00010200 + thumb_func_end MOD67_021D91DC + + thumb_func_start MOD67_021D9274 +MOD67_021D9274: ; 0x021D9274 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r0, #0 + ldrb r0, [r4, #1] + str r1, [sp, #0x10] + add r6, r3, #0 + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + beq _021D9292 + cmp r0, #1 + beq _021D929E + cmp r0, #2 + beq _021D92AA + b _021D92B4 +_021D9292: + ldr r0, [r5, #0x50] + mov r1, #0x42 + bl FUN_0200A914 + add r7, r0, #0 + b _021D92B4 +_021D929E: + ldr r0, [r5, #0x50] + mov r1, #0x43 + bl FUN_0200A914 + add r7, r0, #0 + b _021D92B4 +_021D92AA: + ldr r0, [r5, #0x50] + mov r1, #0x44 + bl FUN_0200A914 + add r7, r0, #0 +_021D92B4: + ldrb r2, [r4, #1] + add r0, r5, #0 + add r1, r4, #2 + lsl r2, r2, #0x1b + lsr r2, r2, #0x1f + mov r3, #0 + bl MOD67_021D9098 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x70 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D92F4 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D92F4: .word 0x00010200 + thumb_func_end MOD67_021D9274 + + thumb_func_start MOD67_021D92F8 +MOD67_021D92F8: ; 0x021D92F8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r0, #0 + ldrb r0, [r4, #1] + str r1, [sp, #0x10] + add r6, r3, #0 + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + beq _021D9316 + cmp r0, #1 + beq _021D9322 + cmp r0, #2 + beq _021D932E + b _021D9338 +_021D9316: + ldr r0, [r5, #0x50] + mov r1, #0x45 + bl FUN_0200A914 + add r7, r0, #0 + b _021D9338 +_021D9322: + ldr r0, [r5, #0x50] + mov r1, #0x46 + bl FUN_0200A914 + add r7, r0, #0 + b _021D9338 +_021D932E: + ldr r0, [r5, #0x50] + mov r1, #0x47 + bl FUN_0200A914 + add r7, r0, #0 +_021D9338: + ldrb r2, [r4, #1] + add r0, r5, #0 + add r1, r4, #2 + lsl r2, r2, #0x1b + lsr r2, r2, #0x1f + mov r3, #0 + bl MOD67_021D9098 + ldrb r2, [r4, #1] + add r1, r4, #0 + add r0, r5, #0 + lsl r2, r2, #0x1a + add r1, #0x12 + lsr r2, r2, #0x1f + mov r3, #1 + bl MOD67_021D9098 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x70 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D938C ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D938C: .word 0x00010200 + thumb_func_end MOD67_021D92F8 + + thumb_func_start MOD67_021D9390 +MOD67_021D9390: ; 0x021D9390 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x48 + add r6, r3, #0 + bl FUN_0200A914 + ldrb r2, [r4, #1] + add r7, r0, #0 + add r0, r5, #0 + lsl r2, r2, #0x1b + add r1, r4, #2 + lsr r2, r2, #0x1f + mov r3, #0 + bl MOD67_021D9098 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x70 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D93E8 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D93E8: .word 0x00010200 + thumb_func_end MOD67_021D9390 + + thumb_func_start MOD67_021D93EC +MOD67_021D93EC: ; 0x021D93EC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x49 + add r6, r3, #0 + bl FUN_0200A914 + ldrb r2, [r4, #1] + add r7, r0, #0 + add r0, r5, #0 + lsl r2, r2, #0x1b + add r1, r4, #2 + lsr r2, r2, #0x1f + mov r3, #0 + bl MOD67_021D9098 + ldrb r2, [r4, #1] + add r1, r4, #0 + add r0, r5, #0 + lsl r2, r2, #0x18 + add r1, #0x22 + lsr r2, r2, #0x1e + mov r3, #1 + bl MOD67_021D9098 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x70 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D9454 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D9454: .word 0x00010200 + thumb_func_end MOD67_021D93EC + + thumb_func_start MOD67_021D9458 +MOD67_021D9458: ; 0x021D9458 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0x4a + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x70 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D9490 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D9490: .word 0x00010200 + thumb_func_end MOD67_021D9458 + + thumb_func_start MOD67_021D9494 +MOD67_021D9494: ; 0x021D9494 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x4b + add r6, r3, #0 + bl FUN_0200A914 + ldrb r2, [r4, #1] + add r1, r4, #0 + add r7, r0, #0 + lsl r2, r2, #0x18 + add r0, r5, #0 + add r1, #0x22 + lsr r2, r2, #0x1e + mov r3, #0 + bl MOD67_021D9098 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x70 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D94EC ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D94EC: .word 0x00010200 + thumb_func_end MOD67_021D9494 + + thumb_func_start MOD67_021D94F0 +MOD67_021D94F0: ; 0x021D94F0 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0x4c + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x70 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D9528 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D9528: .word 0x00010200 + thumb_func_end MOD67_021D94F0 + + thumb_func_start MOD67_021D952C +MOD67_021D952C: ; 0x021D952C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r0, #0 + ldrb r0, [r4, #1] + str r1, [sp, #0x10] + add r6, r3, #0 + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + beq _021D954A + cmp r0, #1 + beq _021D9556 + cmp r0, #2 + beq _021D9562 + b _021D956C +_021D954A: + ldr r0, [r5, #0x50] + mov r1, #0x4d + bl FUN_0200A914 + add r7, r0, #0 + b _021D956C +_021D9556: + ldr r0, [r5, #0x50] + mov r1, #0x4e + bl FUN_0200A914 + add r7, r0, #0 + b _021D956C +_021D9562: + ldr r0, [r5, #0x50] + mov r1, #0x4f + bl FUN_0200A914 + add r7, r0, #0 +_021D956C: + ldrb r2, [r4, #1] + add r0, r5, #0 + add r1, r4, #2 + lsl r2, r2, #0x1b + lsr r2, r2, #0x1f + mov r3, #0 + bl MOD67_021D9098 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x70 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D95AC ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D95AC: .word 0x00010200 + thumb_func_end MOD67_021D952C + + thumb_func_start MOD67_021D95B0 +MOD67_021D95B0: ; 0x021D95B0 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0x50 + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x70 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D95E8 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D95E8: .word 0x00010200 + thumb_func_end MOD67_021D95B0 + + thumb_func_start MOD67_021D95EC +MOD67_021D95EC: ; 0x021D95EC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + mov r1, #0x51 + add r4, r2, #0 + add r6, r3, #0 + bl FUN_0200A914 + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + ldrb r2, [r4, #1] + add r7, r0, #0 + ldr r0, [r5, #0x54] + lsl r2, r2, #0x1c + lsr r2, r2, #0x1c + bl FUN_0200AD38 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x70 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D9648 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D9648: .word 0x00010200 + thumb_func_end MOD67_021D95EC + + thumb_func_start MOD67_021D964C +MOD67_021D964C: ; 0x021D964C + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0x52 + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x70 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D9684 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D9684: .word 0x00010200 + thumb_func_end MOD67_021D964C + + thumb_func_start MOD67_021D9688 +MOD67_021D9688: ; 0x021D9688 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0x50] + str r1, [sp, #0x10] + add r4, r2, #0 + mov r1, #0x53 + add r6, r3, #0 + bl FUN_0200A914 + ldrb r2, [r4, #1] + add r7, r0, #0 + add r0, r5, #0 + lsl r2, r2, #0x1b + add r1, r4, #2 + lsr r2, r2, #0x1f + mov r3, #0 + bl MOD67_021D9098 + ldrb r2, [r4, #1] + add r1, r4, #0 + add r0, r5, #0 + lsl r2, r2, #0x18 + add r1, #0x22 + lsr r2, r2, #0x1e + mov r3, #1 + bl MOD67_021D9098 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r7, #0 + bl FUN_0200B7B8 + lsl r0, r6, #4 + add r0, #0x70 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D96F0 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [r5, #0x58] + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D96F0: .word 0x00010200 + thumb_func_end MOD67_021D9688 + + thumb_func_start MOD67_021D96F4 +MOD67_021D96F4: ; 0x021D96F4 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0x50] + add r6, r1, #0 + add r5, r3, #0 + mov r1, #0x54 + bl FUN_0200A914 + add r4, r0, #0 + lsl r0, r5, #4 + add r0, #0x70 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D972C ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D972C: .word 0x00010200 + thumb_func_end MOD67_021D96F4 + + .section .rodata + ; 0x021D9730 + .incbin "baserom.nds", 0x2C0E50, 0x1E8 diff --git a/arm9/modules/68/asm/module_68.s b/arm9/modules/68/asm/module_68.s new file mode 100644 index 00000000..1c34783c --- /dev/null +++ b/arm9/modules/68/asm/module_68.s @@ -0,0 +1,2461 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD68_021D74E0 +MOD68_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D75CC ; =0xFFFFE0FF + ldr r3, _021D75D0 ; =0x04001000 + and r1, r0 + str r1, [r2] + ldr r1, [r3] + and r0, r1 + str r0, [r3] + add r0, r2, #0 + mov r1, #0 + add r0, #0x50 + strh r1, [r0] + add r3, #0x50 + strh r1, [r3] + mov r0, #3 + mov r1, #0x24 + lsr r2, r2, #9 + bl FUN_0201681C + mov r1, #0x81 + add r0, r4, #0 + lsl r1, r1, #2 + mov r2, #0x24 + bl FUN_02006268 + mov r2, #0x81 + mov r1, #0 + lsl r2, r2, #2 + add r5, r0, #0 + bl Call_FillMemWithValue + add r0, r4, #0 + bl FUN_0200628C + mov r1, #0x7e + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x24 + bl FUN_02016B94 + str r0, [r5] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x24 + ldrb r0, [r0, #8] + bl FUN_02085274 + mov r1, #0x7f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0 + mov r1, #0x24 + bl FUN_02079A70 + bl MOD_021D76A0 + ldr r0, [r5] + bl MOD_021D76C0 + add r0, r5, #0 + bl MOD_021D77A4 + bl MOD_021D7858 + add r0, r5, #0 + bl MOD_021D7870 + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + add r0, r5, #0 + bl MOD_021D7EEC + add r0, r5, #0 + bl MOD_021D78C8 + add r0, r5, #0 + bl MOD_021D7D5C + add r0, r5, #0 + bl MOD_021D80B4 + add r0, r5, #0 + bl MOD_021D8294 + ldr r0, _021D75D4 ; =MOD_021D7680 + add r1, r5, #0 + bl FUN_02015F10 + bl FUN_02033F20 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D75CC: .word 0xFFFFE0FF +_021D75D0: .word 0x04001000 +_021D75D4: .word MOD_021D7680 + thumb_func_end MOD68_021D74E0 + + thumb_func_start MOD_021D75D8 +MOD_021D75D8: ; 0x021D75D8 + push {r3, r4, r5, lr} + add r4, r1, #0 + bl FUN_02006278 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #3 + bhi _021D7620 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D75F4: ; jump table + .short _021D75FC - _021D75F4 - 2 ; case 0 + .short _021D7604 - _021D75F4 - 2 ; case 1 + .short _021D760C - _021D75F4 - 2 ; case 2 + .short _021D7614 - _021D75F4 - 2 ; case 3 +_021D75FC: + bl MOD_021D7D74 + str r0, [r4] + b _021D7620 +_021D7604: + bl MOD_021D7D9C + str r0, [r4] + b _021D7620 +_021D760C: + bl MOD_021D7E84 + str r0, [r4] + b _021D7620 +_021D7614: + bl MOD_021D7E78 + cmp r0, #1 + bne _021D7620 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D7620: + add r0, r5, #0 + bl MOD_021D806C + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD_021D75D8 + + thumb_func_start MOD_021D762C +MOD_021D762C: ; 0x021D762C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + add r0, r4, #4 + bl MOD_021D78EC + ldr r0, [r4] + bl MOD_021D7774 + bl FUN_0201CD04 + add r0, r4, #0 + bl MOD_021D78A8 + add r0, r4, #0 + bl MOD_021D80A8 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0x24 + bl FUN_020168D0 + ldr r0, _021D767C ; =0x04000050 + mov r1, #0 + strh r1, [r0] + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_021D767C: .word 0x04000050 + thumb_func_end MOD_021D762C + + thumb_func_start MOD_021D7680 +MOD_021D7680: ; 0x021D7680 + push {r3, lr} + ldr r0, [r0] + bl FUN_0201AB60 + ldr r3, _021D7698 ; =0x027E0000 + ldr r1, _021D769C ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, pc} + nop +_021D7698: .word 0x027E0000 +_021D769C: .word 0x00003FF8 + thumb_func_end MOD_021D7680 + + thumb_func_start MOD_021D76A0 +MOD_021D76A0: ; 0x021D76A0 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D76BC ; =0x021D892C + add r3, sp, #0 + mov r2, #5 +_021D76AA: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D76AA + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D76BC: .word 0x021D892C + thumb_func_end MOD_021D76A0 + + thumb_func_start MOD_021D76C0 +MOD_021D76C0: ; 0x021D76C0 + push {r4, r5, lr} + sub sp, #0x64 + ldr r5, _021D7764 ; =0x021D88C8 + add r3, sp, #0x54 + add r4, r0, #0 + 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 + bl MOD_021D7FD8 + ldr r5, _021D7768 ; =0x021D8910 + 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] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + ldr r5, _021D776C ; =0x021D88D8 + 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] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + mov r2, #3 + mov r3, #8 + bl FUN_0201AEE4 + ldr r5, _021D7770 ; =0x021D88F4 + 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, #3 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x24 + bl FUN_02017F18 + add sp, #0x64 + pop {r4, r5, pc} + nop +_021D7764: .word 0x021D88C8 +_021D7768: .word 0x021D8910 +_021D776C: .word 0x021D88D8 +_021D7770: .word 0x021D88F4 + thumb_func_end MOD_021D76C0 + + thumb_func_start MOD_021D7774 +MOD_021D7774: ; 0x021D7774 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xf + mov r1, #0 + bl FUN_0201E6E4 + add r0, r4, #0 + mov r1, #3 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + mov r0, #0x24 + add r1, r4, #0 + bl FUN_02016A8C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD_021D7774 + + thumb_func_start MOD_021D77A4 +MOD_021D77A4: ; 0x021D77A4 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x24 + str r0, [sp, #0xc] + mov r1, #2 + ldr r2, [r5] + mov r0, #0x35 + add r3, r1, #0 + bl FUN_0200687C + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r0, #0x24 + str r0, [sp, #0xc] + ldr r2, [r5] + mov r0, #0x35 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x24 + str r0, [sp, #0xc] + ldr r2, [r5] + mov r0, #0x35 + mov r1, #1 + mov r3, #3 + bl FUN_020068C8 + mov r2, #0 + str r2, [sp] + mov r0, #0x24 + str r0, [sp, #4] + mov r0, #0x35 + mov r1, #3 + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0x24 + mov r1, #0x80 + bl FUN_02016998 + add r4, r0, #0 + ldr r0, _021D7854 ; =0x00003001 + mov r2, #0 + add r3, r4, #0 +_021D7812: + add r1, r2, r0 + strh r1, [r3] + add r2, r2, #1 + add r3, r3, #2 + cmp r2, #0x40 + blo _021D7812 + mov r0, #5 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + mov r1, #1 + add r2, r4, #0 + mov r3, #2 + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r1, #1 + bl FUN_02017CD0 + mov r1, #0x1e + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x24 + bl FUN_02002ED0 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D7854: .word 0x00003001 + thumb_func_end MOD_021D77A4 + + thumb_func_start MOD_021D7858 +MOD_021D7858: ; 0x021D7858 + push {r3, lr} + mov r0, #8 + str r0, [sp] + ldr r0, _021D786C ; =0x04000050 + mov r1, #1 + mov r2, #0xe + mov r3, #0x17 + bl G2x_SetBlendAlpha_ + pop {r3, pc} + .align 2, 0 +_021D786C: .word 0x04000050 + thumb_func_end MOD_021D7858 + + thumb_func_start MOD_021D7870 +MOD_021D7870: ; 0x021D7870 + push {r4, lr} + ldr r2, _021D78A4 ; =0x0000015F + add r4, r0, #0 + mov r0, #0 + mov r1, #0x1a + mov r3, #0x24 + bl FUN_0200A86C + add r1, r4, #0 + add r1, #0xc4 + str r0, [r1] + mov r0, #0xf + mov r1, #2 + mov r2, #0 + mov r3, #0x24 + bl FUN_0200B870 + add r1, r4, #0 + add r1, #0xcc + str r0, [r1] + mov r0, #0x24 + bl FUN_0200AA80 + add r4, #0xc8 + str r0, [r4] + pop {r4, pc} + .align 2, 0 +_021D78A4: .word 0x0000015F + thumb_func_end MOD_021D7870 + + thumb_func_start MOD_021D78A8 +MOD_021D78A8: ; 0x021D78A8 + push {r4, lr} + add r4, r0, #0 + add r0, #0xc4 + ldr r0, [r0] + bl FUN_0200A8B8 + add r0, r4, #0 + add r0, #0xcc + ldr r0, [r0] + bl FUN_0200B990 + add r4, #0xc8 + ldr r0, [r4] + bl FUN_0200AB18 + pop {r4, pc} + thumb_func_end MOD_021D78A8 + + thumb_func_start MOD_021D78C8 +MOD_021D78C8: ; 0x021D78C8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r4, _021D78E8 ; =0x021D8954 + mov r6, #0 + add r5, r7, #4 +_021D78D2: + ldr r0, [r7] + add r1, r5, #0 + add r2, r4, #0 + bl FUN_02019150 + add r6, r6, #1 + add r4, #8 + add r5, #0x10 + cmp r6, #0xc + blo _021D78D2 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D78E8: .word 0x021D8954 + thumb_func_end MOD_021D78C8 + + thumb_func_start MOD_021D78EC +MOD_021D78EC: ; 0x021D78EC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021D78F2: + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #0xc + blo _021D78F2 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD_021D78EC + + thumb_func_start MOD_021D7904 +MOD_021D7904: ; 0x021D7904 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #4 + add r0, #0xc4 + lsl r4, r1, #4 + ldr r0, [r0] + add r1, r2, #0 + add r6, r3, #0 + bl FUN_0200A914 + str r0, [sp, #0x10] + mov r0, #0 + ldr r1, [sp, #0x10] + add r2, r0, #0 + bl FUN_02002E14 + add r7, r0, #0 + add r0, r5, r4 + bl FUN_0201AB0C + add r3, r0, #0 + mov r1, #0 + lsl r3, r3, #3 + sub r3, r3, r7 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r6, [sp, #8] + ldr r2, [sp, #0x10] + add r0, r5, r4 + lsr r3, r3, #1 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r5, r4 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD_021D7904 + + thumb_func_start MOD_021D7958 +MOD_021D7958: ; 0x021D7958 + push {r4, lr} + add r4, r0, #0 + add r0, r4, #4 + mov r1, #4 + bl FUN_02019620 + mov r1, #0 + ldr r3, _021D7974 ; =0x00010204 + add r0, r4, #0 + add r2, r1, #0 + bl MOD_021D7904 + pop {r4, pc} + nop +_021D7974: .word 0x00010204 + thumb_func_end MOD_021D7958 + + thumb_func_start MOD_021D7978 +MOD_021D7978: ; 0x021D7978 + push {r4, lr} + add r4, r0, #0 + add r0, #0x24 + mov r1, #0 + bl FUN_02019620 + ldr r3, _021D7994 ; =0x000F0200 + add r0, r4, #0 + mov r1, #2 + mov r2, #1 + bl MOD_021D7904 + pop {r4, pc} + nop +_021D7994: .word 0x000F0200 + thumb_func_end MOD_021D7978 + + thumb_func_start MOD_021D7998 +MOD_021D7998: ; 0x021D7998 + push {r4, lr} + add r4, r0, #0 + add r0, #0x34 + mov r1, #0 + bl FUN_02019620 + ldr r3, _021D79B4 ; =0x000F0200 + add r0, r4, #0 + mov r1, #3 + mov r2, #2 + bl MOD_021D7904 + pop {r4, pc} + nop +_021D79B4: .word 0x000F0200 + thumb_func_end MOD_021D7998 + + thumb_func_start MOD_021D79B8 +MOD_021D79B8: ; 0x021D79B8 + push {r4, lr} + add r4, r0, #0 + add r0, #0x44 + mov r1, #0 + bl FUN_02019620 + ldr r3, _021D79D4 ; =0x000F0200 + add r0, r4, #0 + mov r1, #4 + mov r2, #3 + bl MOD_021D7904 + pop {r4, pc} + nop +_021D79D4: .word 0x000F0200 + thumb_func_end MOD_021D79B8 + + thumb_func_start MOD_021D79D8 +MOD_021D79D8: ; 0x021D79D8 + push {r4, lr} + add r4, r0, #0 + add r0, #0x54 + mov r1, #0 + bl FUN_02019620 + ldr r3, _021D79F4 ; =0x000F0200 + add r0, r4, #0 + mov r1, #5 + mov r2, #4 + bl MOD_021D7904 + pop {r4, pc} + nop +_021D79F4: .word 0x000F0200 + thumb_func_end MOD_021D79D8 + + thumb_func_start MOD_021D79F8 +MOD_021D79F8: ; 0x021D79F8 + push {r4, lr} + add r4, r0, #0 + add r0, #0x64 + mov r1, #0 + bl FUN_02019620 + ldr r3, _021D7A14 ; =0x000F0200 + add r0, r4, #0 + mov r1, #6 + mov r2, #5 + bl MOD_021D7904 + pop {r4, pc} + nop +_021D7A14: .word 0x000F0200 + thumb_func_end MOD_021D79F8 + + thumb_func_start MOD_021D7A18 +MOD_021D7A18: ; 0x021D7A18 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r5, #0 + add r4, #0x14 + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + mov r0, #5 + str r0, [sp] + add r0, r5, #0 + add r0, #0xcc + ldr r0, [r0] + mov r1, #2 + add r2, r4, #0 + mov r3, #0 + bl FUN_0200B9A8 + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r1, #6 + bl FUN_0200A914 + add r7, r0, #0 + mov r0, #6 + mov r1, #0x24 + bl FUN_020219F4 + mov r3, #2 + add r6, r0, #0 + mov r2, #0x7e + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + lsl r2, r2, #2 + ldr r2, [r5, r2] + add r0, r5, #0 + ldrb r2, [r2, #8] + add r0, #0xc8 + ldr r0, [r0] + mov r1, #0 + add r2, r2, #1 + bl FUN_0200AD38 + add r0, r5, #0 + add r0, #0xc8 + ldr r0, [r0] + add r1, r6, #0 + add r2, r7, #0 + bl FUN_0200B7B8 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7AE0 ; =0x000F0200 + add r2, r6, #0 + str r0, [sp, #8] + add r0, r4, #0 + mov r3, #0x10 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x24 + ldrb r0, [r0, #8] + bl FUN_020852E8 + add r5, r0, #0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7AE0 ; =0x000F0200 + add r2, r5, #0 + str r0, [sp, #8] + add r0, r4, #0 + mov r3, #0x28 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02019220 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D7AE0: .word 0x000F0200 + thumb_func_end MOD_021D7A18 + + thumb_func_start MOD_021D7AE4 +MOD_021D7AE4: ; 0x021D7AE4 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r0, #0 + add r5, r4, #0 + add r5, #0xb4 + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x24 + ldrb r0, [r0, #8] + bl FUN_02085310 + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7B30 ; =0x00010200 + add r2, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r5, #0 + bl FUN_02019220 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D7B30: .word 0x00010200 + thumb_func_end MOD_021D7AE4 + + thumb_func_start MOD_021D7B34 +MOD_021D7B34: ; 0x021D7B34 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r0, #0 + add r5, r4, #0 + add r5, #0x94 + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + add r4, #0xc4 + ldr r0, [r4] + mov r1, #0xa + bl FUN_0200A914 + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7B7C ; =0x000F0200 + add r2, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r5, #0 + bl FUN_02019220 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D7B7C: .word 0x000F0200 + thumb_func_end MOD_021D7B34 + + thumb_func_start MOD_021D7B80 +MOD_021D7B80: ; 0x021D7B80 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r0, #0 + add r5, r4, #0 + add r5, #0xa4 + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_02085290 + add r1, r0, #0 + beq _021D7BA4 + sub r1, r1, #1 +_021D7BA4: + add r4, #0xc4 + ldr r0, [r4] + add r1, #0xb + bl FUN_0200A914 + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7BD8 ; =0x000F0200 + add r2, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r5, #0 + bl FUN_02019220 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7BD8: .word 0x000F0200 + thumb_func_end MOD_021D7B80 + + thumb_func_start MOD_021D7BDC +MOD_021D7BDC: ; 0x021D7BDC + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r0, #0 + add r5, r4, #0 + add r5, #0x74 + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + add r4, #0xc4 + ldr r0, [r4] + mov r1, #8 + bl FUN_0200A914 + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7C24 ; =0x000F0200 + add r2, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r5, #0 + bl FUN_02019220 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D7C24: .word 0x000F0200 + thumb_func_end MOD_021D7BDC + + thumb_func_start MOD_021D7C28 +MOD_021D7C28: ; 0x021D7C28 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r6, r5, #0 + add r6, #0x84 + add r0, r6, #0 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02085290 + mov r1, #0xfa + lsl r1, r1, #2 + mul r1, r0 + add r0, r1, #0 + mov r1, #0xfe + bl _u32_div_f + add r0, r0, #5 + mov r1, #0xa + bl _u32_div_f + add r7, r0, #0 + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r1, #9 + bl FUN_0200A914 + str r0, [sp, #0x10] + mov r0, #0x20 + mov r1, #0x24 + bl FUN_020219F4 + add r4, r0, #0 + add r0, r7, #0 + mov r1, #0xa + bl _u32_div_f + mov r1, #0 + add r2, r0, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r3, #2 + bl FUN_0200AD38 + add r0, r7, #0 + mov r1, #0xa + bl _u32_div_f + mov r0, #0 + add r2, r1, #0 + str r0, [sp] + mov r1, #1 + add r0, r5, #0 + str r1, [sp, #4] + add r0, #0xc8 + ldr r0, [r0] + add r3, r1, #0 + bl FUN_0200AD38 + add r5, #0xc8 + ldr r0, [r5] + ldr r2, [sp, #0x10] + add r1, r4, #0 + bl FUN_0200B7B8 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7CEC ; =0x000F0200 + add r2, r4, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D7CEC: .word 0x000F0200 + thumb_func_end MOD_021D7C28 + + thumb_func_start MOD_021D7CF0 +MOD_021D7CF0: ; 0x021D7CF0 + push {r4, lr} + add r4, r0, #0 + cmp r1, #7 + bhi _021D7D5A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7D04: ; jump table + .short _021D7D14 - _021D7D04 - 2 ; case 0 + .short _021D7D1A - _021D7D04 - 2 ; case 1 + .short _021D7D20 - _021D7D04 - 2 ; case 2 + .short _021D7D26 - _021D7D04 - 2 ; case 3 + .short _021D7D32 - _021D7D04 - 2 ; case 4 + .short _021D7D3E - _021D7D04 - 2 ; case 5 + .short _021D7D4A - _021D7D04 - 2 ; case 6 + .short _021D7D56 - _021D7D04 - 2 ; case 7 +_021D7D14: + bl MOD_021D7958 + pop {r4, pc} +_021D7D1A: + bl MOD_021D7978 + pop {r4, pc} +_021D7D20: + bl MOD_021D7A18 + pop {r4, pc} +_021D7D26: + bl MOD_021D79F8 + add r0, r4, #0 + bl MOD_021D7998 + pop {r4, pc} +_021D7D32: + bl MOD_021D79B8 + add r0, r4, #0 + bl MOD_021D79D8 + pop {r4, pc} +_021D7D3E: + bl MOD_021D7BDC + add r0, r4, #0 + bl MOD_021D7C28 + pop {r4, pc} +_021D7D4A: + bl MOD_021D7B34 + add r0, r4, #0 + bl MOD_021D7B80 + pop {r4, pc} +_021D7D56: + bl MOD_021D7AE4 +_021D7D5A: + pop {r4, pc} + thumb_func_end MOD_021D7CF0 + + thumb_func_start MOD_021D7D5C +MOD_021D7D5C: ; 0x021D7D5C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021D7D62: + lsl r1, r4, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD_021D7CF0 + add r4, r4, #1 + cmp r4, #8 + blo _021D7D62 + pop {r3, r4, r5, pc} + thumb_func_end MOD_021D7D5C + + thumb_func_start MOD_021D7D74 +MOD_021D7D74: ; 0x021D7D74 + push {r3, lr} + bl FUN_0200E308 + cmp r0, #1 + bne _021D7D92 + mov r0, #0 + str r0, [sp] + ldr r0, _021D7D98 ; =0x04000050 + mov r1, #2 + mov r2, #4 + mov r3, #0x10 + bl G2x_SetBlendAlpha_ + mov r0, #1 + pop {r3, pc} +_021D7D92: + mov r0, #0 + pop {r3, pc} + nop +_021D7D98: .word 0x04000050 + thumb_func_end MOD_021D7D74 + + thumb_func_start MOD_021D7D9C +MOD_021D7D9C: ; 0x021D7D9C + push {r4, lr} + ldr r1, _021D7E70 ; =0x021C48B8 + add r4, r0, #0 + ldr r3, [r1, #0x44] + mov r2, #0x40 + add r0, r3, #0 + tst r0, r2 + beq _021D7DF8 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + sub r2, #0x41 + ldrb r1, [r0, #8] + bl MOD_021D7F44 + mov r1, #0x7e + lsl r1, r1, #2 + ldr r3, [r4, r1] + ldrb r2, [r3, #8] + cmp r2, r0 + beq _021D7DF4 + strb r0, [r3, #8] + add r0, r1, #0 + mov r2, #0 + add r0, #9 + strb r2, [r4, r0] + add r0, r1, #0 + add r0, #8 + strb r2, [r4, r0] + ldr r1, [r4, r1] + ldrb r0, [r1, #0xa] + cmp r0, #3 + bne _021D7DEA + ldrb r0, [r1, #9] + cmp r0, #0 + beq _021D7DEA + sub r0, r0, #1 + strb r0, [r1, #9] + b _021D7DF0 +_021D7DEA: + ldrb r0, [r1, #0xa] + sub r0, r0, #1 + strb r0, [r1, #0xa] +_021D7DF0: + mov r0, #2 + pop {r4, pc} +_021D7DF4: + mov r0, #1 + pop {r4, pc} +_021D7DF8: + mov r0, #0x80 + tst r0, r3 + beq _021D7E50 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r2, #1 + ldrb r1, [r0, #8] + bl MOD_021D7F44 + mov r1, #0x7e + lsl r1, r1, #2 + ldr r3, [r4, r1] + ldrb r2, [r3, #8] + cmp r2, r0 + beq _021D7E4C + strb r0, [r3, #8] + add r0, r1, #0 + mov r2, #0 + add r0, #9 + strb r2, [r4, r0] + add r0, r1, #0 + add r0, #8 + strb r2, [r4, r0] + ldr r3, [r4, r1] + ldrb r0, [r3, #0xa] + cmp r0, #5 + bne _021D7E42 + ldrb r1, [r3, #9] + ldrb r0, [r3, #0xb] + add r2, r1, #0 + add r2, #9 + cmp r2, r0 + bge _021D7E42 + add r0, r1, #1 + strb r0, [r3, #9] + b _021D7E48 +_021D7E42: + ldrb r0, [r3, #0xa] + add r0, r0, #1 + strb r0, [r3, #0xa] +_021D7E48: + mov r0, #2 + pop {r4, pc} +_021D7E4C: + mov r0, #1 + pop {r4, pc} +_021D7E50: + ldr r1, [r1, #0x48] + mov r0, #2 + tst r0, r1 + bne _021D7E60 + ldr r0, _021D7E74 ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + beq _021D7E6C +_021D7E60: + mov r0, #1 + mov r1, #0x24 + bl FUN_02079A70 + mov r0, #3 + pop {r4, pc} +_021D7E6C: + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_021D7E70: .word 0x021C48B8 +_021D7E74: .word 0x021C48F8 + thumb_func_end MOD_021D7D9C + + thumb_func_start MOD_021D7E78 +MOD_021D7E78: ; 0x021D7E78 + push {r3, lr} + bl FUN_0200E308 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, pc} + thumb_func_end MOD_021D7E78 + + thumb_func_start MOD_021D7E84 +MOD_021D7E84: ; 0x021D7E84 + push {r3, r4, r5, lr} + mov r4, #2 + add r5, r0, #0 + lsl r1, r4, #8 + ldrb r1, [r5, r1] + cmp r1, #0 + bne _021D7EA8 + ldr r0, _021D7EE4 ; =0x00000201 + ldrb r1, [r5, r0] + add r1, r1, #4 + strb r1, [r5, r0] + ldrb r0, [r5, r0] + cmp r0, #0x10 + bne _021D7ECE + mov r1, #1 + lsl r0, r1, #9 + strb r1, [r5, r0] + b _021D7ECE +_021D7EA8: + cmp r1, #1 + bne _021D7EB8 + bl MOD_021D7F98 + add r1, r4, #0 + lsl r0, r1, #8 + strb r1, [r5, r0] + b _021D7ECE +_021D7EB8: + ldr r0, _021D7EE4 ; =0x00000201 + ldrb r1, [r5, r0] + sub r1, r1, #4 + strb r1, [r5, r0] + ldrb r1, [r5, r0] + cmp r1, #0 + bne _021D7ECE + mov r1, #0 + sub r0, r0, #1 + strb r1, [r5, r0] + mov r4, #1 +_021D7ECE: + ldr r0, _021D7EE4 ; =0x00000201 + ldrb r2, [r5, r0] + mov r0, #0x10 + sub r1, r0, r2 + lsl r0, r2, #8 + orr r1, r0 + ldr r0, _021D7EE8 ; =0x04000052 + strh r1, [r0] + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_021D7EE4: .word 0x00000201 +_021D7EE8: .word 0x04000052 + thumb_func_end MOD_021D7E84 + + thumb_func_start MOD_021D7EEC +MOD_021D7EEC: ; 0x021D7EEC + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldrb r0, [r0, #8] + bl MOD_021D7F3C + mov r3, #1 + add r1, r0, #0 + str r3, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x24 + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x35 + bl FUN_0200687C + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldrb r0, [r0, #8] + bl MOD_021D7F40 + add r1, r0, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x24 + str r0, [sp, #4] + mov r0, #0x35 + mov r2, #0 + mov r3, #0x60 + bl FUN_02006930 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD_021D7EEC + + thumb_func_start MOD_021D7F3C +MOD_021D7F3C: ; 0x021D7F3C + add r0, r0, #6 + bx lr + thumb_func_end MOD_021D7F3C + + thumb_func_start MOD_021D7F40 +MOD_021D7F40: ; 0x021D7F40 + add r0, #0x46 + bx lr + thumb_func_end MOD_021D7F40 + + thumb_func_start MOD_021D7F44 +MOD_021D7F44: ; 0x021D7F44 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r5, r2, #0 + add r6, r0, #0 + add r4, r7, #0 + cmp r5, #0 + bge _021D7F72 + cmp r7, #0 + beq _021D7F92 +_021D7F56: + sub r4, r4, #1 + lsl r1, r4, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + bl FUN_02085224 + cmp r0, #1 + bne _021D7F6C + add r7, r4, #0 + add r5, r5, #1 + beq _021D7F92 +_021D7F6C: + cmp r4, #0 + beq _021D7F92 + b _021D7F56 +_021D7F72: + cmp r7, #0x3f + beq _021D7F92 +_021D7F76: + add r4, r4, #1 + lsl r1, r4, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + bl FUN_02085224 + cmp r0, #1 + bne _021D7F8E + lsl r0, r4, #0x10 + lsr r7, r0, #0x10 + sub r5, r5, #1 + beq _021D7F92 +_021D7F8E: + cmp r4, #0x3f + bne _021D7F76 +_021D7F92: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD_021D7F44 + + thumb_func_start MOD_021D7F98 +MOD_021D7F98: ; 0x021D7F98 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x24 + ldrb r0, [r0, #8] + bl FUN_02085274 + mov r1, #0x7f + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD_021D7D5C + add r0, r4, #0 + bl MOD_021D7EEC + add r0, r4, #0 + bl MOD_021D85F4 + ldr r0, [r4] + mov r1, #1 + bl FUN_02017CD0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD_021D7F98 + + thumb_func_start MOD_021D7FD8 +MOD_021D7FD8: ; 0x021D7FD8 + push {r3, r4, lr} + sub sp, #4 + bl G3X_Init + bl G3X_InitMtxStack + ldr r0, _021D8050 ; =0x04000060 + ldr r1, _021D8054 ; =0xFFFFCFFD + ldrh r2, [r0] + ldr r3, _021D8058 ; =0x0000CFFB + and r2, r1 + strh r2, [r0] + ldrh r2, [r0] + and r2, r3 + strh r2, [r0] + add r2, r1, #2 + ldrh r4, [r0] + add r1, r1, #2 + sub r3, #0x1c + and r4, r2 + mov r2, #8 + orr r2, r4 + strh r2, [r0] + ldrh r2, [r0] + and r2, r1 + mov r1, #0x10 + orr r1, r2 + strh r1, [r0] + ldrh r1, [r0] + and r1, r3 + strh r1, [r0] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl G3X_SetFog + mov r0, #0 + ldr r2, _021D805C ; =0x00007FFF + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r1, _021D8060 ; =0x04000540 + mov r0, #0 + str r0, [r1] + ldr r0, _021D8064 ; =0xBFFF0000 + str r0, [r1, #0x40] + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r1, _021D8068 ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + strh r2, [r1] + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021D8050: .word 0x04000060 +_021D8054: .word 0xFFFFCFFD +_021D8058: .word 0x0000CFFB +_021D805C: .word 0x00007FFF +_021D8060: .word 0x04000540 +_021D8064: .word 0xBFFF0000 +_021D8068: .word 0x04000008 + thumb_func_end MOD_021D7FD8 + + thumb_func_start MOD_021D806C +MOD_021D806C: ; 0x021D806C + push {r4, lr} + add r4, r0, #0 + bl FUN_020222AC + bl FUN_0201EBA4 + ldr r2, _021D80A0 ; =0x04000440 + mov r3, #0 + add r1, r2, #0 + str r3, [r2] + add r1, #0x14 + str r3, [r1] + mov r0, #2 + str r0, [r2] + add r0, r4, #0 + add r0, #0xd4 + str r3, [r1] + bl MOD_021D8124 + add r0, r4, #0 + bl MOD_021D81C0 + ldr r0, _021D80A4 ; =0x04000540 + mov r1, #1 + str r1, [r0] + pop {r4, pc} + .align 2, 0 +_021D80A0: .word 0x04000440 +_021D80A4: .word 0x04000540 + thumb_func_end MOD_021D806C + + thumb_func_start MOD_021D80A8 +MOD_021D80A8: ; 0x021D80A8 + ldr r3, _021D80B0 ; =0x0201EB71 + add r0, #0xd0 + ldr r0, [r0] + bx r3 + .align 2, 0 +_021D80B0: .word 0x0201EB71 + thumb_func_end MOD_021D80A8 + + thumb_func_start MOD_021D80B4 +MOD_021D80B4: ; 0x021D80B4 + push {r3, r4, lr} + sub sp, #0x1c + ldr r3, _021D811C ; =0x021D88BC + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, sp, #8 + str r0, [r2] + mov r0, #0 + strh r0, [r1] + strh r0, [r1, #2] + strh r0, [r1, #4] + strh r0, [r1, #6] + mov r0, #0x24 + bl FUN_0201EB64 + add r1, r4, #0 + add r1, #0xd0 + str r0, [r1] + mov r1, #1 + add r0, r4, #0 + str r1, [sp] + add r0, #0xd0 + ldr r0, [r0] + ldr r3, _021D8120 ; =0x000005C1 + str r0, [sp, #4] + add r0, sp, #0x10 + lsl r1, r1, #0x10 + add r2, sp, #8 + bl FUN_0201ED10 + add r2, r4, #0 + add r2, #0xd0 + mov r1, #0x19 + ldr r2, [r2] + mov r0, #0 + lsl r1, r1, #0xe + bl FUN_0201EC94 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_0201EC88 + add r4, #0xd0 + ldr r0, [r4] + bl FUN_0201EB8C + add sp, #0x1c + pop {r3, r4, pc} + .align 2, 0 +_021D811C: .word 0x021D88BC +_021D8120: .word 0x000005C1 + thumb_func_end MOD_021D80B4 + + thumb_func_start MOD_021D8124 +MOD_021D8124: ; 0x021D8124 + push {r4, r5, r6, r7} + add r4, r0, #0 + ldr r0, _021D818C ; =0x121800C0 + ldr r1, _021D8190 ; =0x040004A4 + ldr r2, _021D8194 ; =0x00003FE8 + str r0, [r1] + mov r0, #1 + str r0, [r1, #0x5c] + ldr r0, _021D8198 ; =0x0400048C + mov r3, #0 + sub r1, #0x24 +_021D813A: + str r2, [r1] + ldrh r7, [r4, #2] + ldrh r5, [r4] + ldrh r6, [r4, #4] + lsl r7, r7, #0x10 + orr r5, r7 + str r5, [r0] + str r6, [r0] + str r2, [r1] + ldrh r7, [r4, #8] + ldrh r5, [r4, #6] + ldrh r6, [r4, #0xa] + lsl r7, r7, #0x10 + orr r5, r7 + str r5, [r0] + str r6, [r0] + str r2, [r1] + ldrh r7, [r4, #0x14] + ldrh r5, [r4, #0x12] + ldrh r6, [r4, #0x16] + lsl r7, r7, #0x10 + orr r5, r7 + str r5, [r0] + str r6, [r0] + str r2, [r1] + ldrh r7, [r4, #0xe] + ldrh r5, [r4, #0xc] + ldrh r6, [r4, #0x10] + lsl r7, r7, #0x10 + orr r5, r7 + str r5, [r0] + add r3, r3, #1 + add r4, #0x18 + str r6, [r0] + cmp r3, #4 + blo _021D813A + ldr r0, _021D819C ; =0x04000504 + mov r1, #0 + str r1, [r0] + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_021D818C: .word 0x121800C0 +_021D8190: .word 0x040004A4 +_021D8194: .word 0x00003FE8 +_021D8198: .word 0x0400048C +_021D819C: .word 0x04000504 + thumb_func_end MOD_021D8124 + + thumb_func_start MOD_021D81A0 +MOD_021D81A0: ; 0x021D81A0 + mov r2, #0 + ldrsh r3, [r0, r2] + ldrsh r2, [r1, r2] + add r2, r3, r2 + strh r2, [r0] + mov r2, #2 + ldrsh r3, [r0, r2] + ldrsh r2, [r1, r2] + add r2, r3, r2 + strh r2, [r0, #2] + mov r2, #4 + ldrsh r3, [r0, r2] + ldrsh r1, [r1, r2] + add r1, r3, r1 + strh r1, [r0, #4] + bx lr + thumb_func_end MOD_021D81A0 + + thumb_func_start MOD_021D81C0 +MOD_021D81C0: ; 0x021D81C0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + mov r0, #0x7d + ldr r1, [sp] + lsl r0, r0, #2 + ldr r1, [r1, r0] + cmp r1, #4 + beq _021D828E + cmp r1, #3 + bne _021D81FA + ldr r6, [sp] + mov r5, #0 + sub r0, #0x60 +_021D81DC: + add r3, r6, #0 + add r4, r6, r0 + add r3, #0xd4 + mov r2, #0xc +_021D81E4: + ldrh r1, [r4] + add r4, r4, #2 + strh r1, [r3] + add r3, r3, #2 + sub r2, r2, #1 + bne _021D81E4 + add r5, r5, #1 + add r6, #0x18 + cmp r5, #4 + blo _021D81DC + b _021D8280 +_021D81FA: + mov r1, #0 + str r1, [sp, #4] + add r2, r0, #0 + ldr r1, [sp] + sub r2, #0xc0 + add r1, r1, r2 + str r1, [sp, #0x14] + ldr r1, [sp] + add r2, r0, #0 + str r1, [sp, #0x10] + add r1, #0xd4 + str r1, [sp, #0x10] + ldr r1, [sp] + sub r2, #0xba + add r1, r1, r2 + add r2, r0, #0 + str r1, [sp, #0xc] + ldr r1, [sp] + sub r2, #0xb4 + str r1, [sp, #8] + add r1, #0xda + str r1, [sp, #8] + ldr r1, [sp] + sub r0, #0xae + add r4, r1, #0 + add r5, r1, #0 + add r7, r1, r2 + add r4, #0xe0 + add r6, r1, r0 + add r5, #0xe6 +_021D8236: + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + bl MOD_021D81A0 + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + bl MOD_021D81A0 + add r0, r4, #0 + add r1, r7, #0 + bl MOD_021D81A0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD_021D81A0 + ldr r0, [sp, #0x14] + add r7, #0x18 + add r0, #0x18 + str r0, [sp, #0x14] + ldr r0, [sp, #0x10] + add r4, #0x18 + add r0, #0x18 + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + add r6, #0x18 + add r0, #0x18 + str r0, [sp, #0xc] + ldr r0, [sp, #8] + add r5, #0x18 + add r0, #0x18 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #4 + blo _021D8236 +_021D8280: + mov r1, #0x7d + ldr r0, [sp] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r2, r0, #1 + ldr r0, [sp] + str r2, [r0, r1] +_021D828E: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD_021D81C0 + + thumb_func_start MOD_021D8294 +MOD_021D8294: ; 0x021D8294 + push {r4, r5, r6, lr} + sub sp, #0x18 + ldr r1, _021D840C ; =0x021D89BC + add r5, r0, #0 + ldrh r2, [r1, #0x34] + add r3, sp, #0 + add r5, #0xd8 + strh r2, [r3, #0x12] + ldrh r2, [r1, #0x36] + strh r2, [r3, #0x14] + ldrh r1, [r1, #0x38] + strh r1, [r3, #0x16] + add r1, r0, #0 + ldrh r4, [r3, #0x12] + add r1, #0xd4 + strh r4, [r1] + add r1, r0, #0 + ldrh r2, [r3, #0x14] + add r1, #0xd6 + strh r2, [r1] + ldrh r1, [r3, #0x16] + strh r1, [r5] + add r5, r0, #0 + add r5, #0xda + strh r4, [r5] + add r5, r0, #0 + add r5, #0xdc + strh r2, [r5] + add r5, r0, #0 + add r5, #0xde + strh r1, [r5] + add r5, r0, #0 + add r5, #0xe0 + strh r4, [r5] + add r5, r0, #0 + add r5, #0xe2 + strh r2, [r5] + add r5, r0, #0 + add r5, #0xe4 + strh r1, [r5] + add r5, r0, #0 + add r5, #0xe6 + strh r4, [r5] + add r4, r0, #0 + add r4, #0xe8 + strh r2, [r4] + add r2, r0, #0 + add r2, #0xea + strh r1, [r2] + ldr r1, _021D8410 ; =0x021D89FC + add r5, r0, #0 + ldrh r2, [r1, #0x2a] + add r5, #0xf0 + strh r2, [r3, #0xc] + ldrh r2, [r1, #0x2c] + strh r2, [r3, #0xe] + ldrh r1, [r1, #0x2e] + add r2, r0, #0 + add r2, #0xec + strh r1, [r3, #0x10] + ldrh r1, [r3, #0xc] + strh r1, [r2] + add r2, r0, #0 + ldrh r4, [r3, #0xe] + add r2, #0xee + strh r4, [r2] + ldrh r2, [r3, #0x10] + strh r2, [r5] + add r5, r0, #0 + add r5, #0xf2 + strh r1, [r5] + add r5, r0, #0 + add r5, #0xf4 + strh r4, [r5] + add r5, r0, #0 + add r5, #0xf6 + strh r2, [r5] + add r5, r0, #0 + add r5, #0xf8 + strh r1, [r5] + add r5, r0, #0 + add r5, #0xfa + strh r4, [r5] + add r5, r0, #0 + add r5, #0xfc + strh r2, [r5] + add r5, r0, #0 + add r5, #0xfe + strh r1, [r5] + mov r1, #1 + lsl r1, r1, #8 + strh r4, [r0, r1] + add r4, r1, #2 + strh r2, [r0, r4] + ldr r2, _021D8414 ; =0x021D8A3C + ldrh r4, [r2, #0x20] + strh r4, [r3, #6] + ldrh r4, [r2, #0x22] + strh r4, [r3, #8] + ldrh r2, [r2, #0x24] + strh r2, [r3, #0xa] + ldrh r6, [r3, #6] + add r2, r1, #4 + strh r6, [r0, r2] + ldrh r5, [r3, #8] + add r2, r1, #6 + strh r5, [r0, r2] + add r2, r1, #0 + ldrh r4, [r3, #0xa] + add r2, #8 + strh r4, [r0, r2] + add r2, r1, #0 + add r2, #0xa + strh r6, [r0, r2] + add r2, r1, #0 + add r2, #0xc + strh r5, [r0, r2] + add r2, r1, #0 + add r2, #0xe + strh r4, [r0, r2] + add r2, r1, #0 + add r2, #0x10 + strh r6, [r0, r2] + add r2, r1, #0 + add r2, #0x12 + strh r5, [r0, r2] + add r2, r1, #0 + add r2, #0x14 + strh r4, [r0, r2] + add r2, r1, #0 + add r2, #0x16 + strh r6, [r0, r2] + add r2, r1, #0 + add r2, #0x18 + strh r5, [r0, r2] + add r2, r1, #0 + add r2, #0x1a + strh r4, [r0, r2] + ldr r2, _021D8418 ; =0x021D8A7C + ldrh r4, [r2, #0x16] + strh r4, [r3] + ldrh r4, [r2, #0x18] + strh r4, [r3, #2] + ldrh r2, [r2, #0x1a] + strh r2, [r3, #4] + add r2, r1, #0 + ldrh r5, [r3] + add r2, #0x1c + strh r5, [r0, r2] + add r2, r1, #0 + ldrh r4, [r3, #2] + add r2, #0x1e + strh r4, [r0, r2] + ldrh r2, [r3, #4] + add r3, r1, #0 + add r3, #0x20 + strh r2, [r0, r3] + add r3, r1, #0 + add r3, #0x22 + strh r5, [r0, r3] + add r3, r1, #0 + add r3, #0x24 + strh r4, [r0, r3] + add r3, r1, #0 + add r3, #0x26 + strh r2, [r0, r3] + add r3, r1, #0 + add r3, #0x28 + strh r5, [r0, r3] + add r3, r1, #0 + add r3, #0x2a + strh r4, [r0, r3] + add r3, r1, #0 + add r3, #0x2c + strh r2, [r0, r3] + add r3, r1, #0 + add r3, #0x2e + strh r5, [r0, r3] + add r3, r1, #0 + add r3, #0x30 + strh r4, [r0, r3] + add r1, #0x32 + strh r2, [r0, r1] + bl MOD_021D85F4 + add sp, #0x18 + pop {r4, r5, r6, pc} + nop +_021D840C: .word 0x021D89BC +_021D8410: .word 0x021D89FC +_021D8414: .word 0x021D8A3C +_021D8418: .word 0x021D8A7C + thumb_func_end MOD_021D8294 + + thumb_func_start MOD_021D841C +MOD_021D841C: ; 0x021D841C + push {r4, r5} + cmp r2, #0xff + bne _021D8432 + ldrh r2, [r0] + strh r2, [r1] + ldrh r2, [r0, #2] + strh r2, [r1, #2] + ldrh r0, [r0, #4] + strh r0, [r1, #4] + pop {r4, r5} + bx lr +_021D8432: + cmp r2, #0 + bne _021D8446 + ldrh r2, [r0, #6] + strh r2, [r1] + ldrh r2, [r0, #8] + strh r2, [r1, #2] + ldrh r0, [r0, #0xa] + strh r0, [r1, #4] + pop {r4, r5} + bx lr +_021D8446: + mov r3, #6 + ldrsh r5, [r0, r3] + mov r3, #0xc + ldrsh r3, [r0, r3] + add r4, r3, #0 + mul r4, r2 + add r3, r5, r4 + strh r3, [r1] + mov r3, #8 + ldrsh r5, [r0, r3] + mov r3, #0xe + ldrsh r3, [r0, r3] + add r4, r3, #0 + mul r4, r2 + add r3, r5, r4 + strh r3, [r1, #2] + mov r3, #0xa + ldrsh r4, [r0, r3] + mov r3, #0x10 + ldrsh r0, [r0, r3] + mul r2, r0 + add r0, r4, r2 + strh r0, [r1, #4] + pop {r4, r5} + bx lr + thumb_func_end MOD_021D841C + + thumb_func_start MOD_021D8478 +MOD_021D8478: ; 0x021D8478 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0 + ldrsh r1, [r4, r0] + ldrsh r0, [r5, r0] + add r6, r2, #0 + sub r7, r1, r0 + add r0, r7, #0 + bl _fflt + ldr r1, _021D85EC ; =0x45800000 + bl _fdiv + ldr r1, _021D85F0 ; =0x40800000 + bl _fdiv + mov r1, #0 + bl _fgr + bls _021D84CC + add r0, r7, #0 + bl _fflt + ldr r1, _021D85EC ; =0x45800000 + bl _fdiv + ldr r1, _021D85F0 ; =0x40800000 + bl _fdiv + add r1, r0, #0 + ldr r0, _021D85EC ; =0x45800000 + bl _fmul + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + bl _ffix + b _021D84F2 +_021D84CC: + add r0, r7, #0 + bl _fflt + ldr r1, _021D85EC ; =0x45800000 + bl _fdiv + ldr r1, _021D85F0 ; =0x40800000 + bl _fdiv + add r1, r0, #0 + ldr r0, _021D85EC ; =0x45800000 + bl _fmul + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub + bl _ffix +_021D84F2: + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + strh r0, [r6] + mov r0, #2 + ldrsh r1, [r4, r0] + ldrsh r0, [r5, r0] + sub r7, r1, r0 + add r0, r7, #0 + bl _fflt + ldr r1, _021D85EC ; =0x45800000 + bl _fdiv + ldr r1, _021D85F0 ; =0x40800000 + bl _fdiv + mov r1, #0 + bl _fgr + bls _021D8544 + add r0, r7, #0 + bl _fflt + ldr r1, _021D85EC ; =0x45800000 + bl _fdiv + ldr r1, _021D85F0 ; =0x40800000 + bl _fdiv + add r1, r0, #0 + ldr r0, _021D85EC ; =0x45800000 + bl _fmul + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + bl _ffix + b _021D856A +_021D8544: + add r0, r7, #0 + bl _fflt + ldr r1, _021D85EC ; =0x45800000 + bl _fdiv + ldr r1, _021D85F0 ; =0x40800000 + bl _fdiv + add r1, r0, #0 + ldr r0, _021D85EC ; =0x45800000 + bl _fmul + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub + bl _ffix +_021D856A: + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + strh r0, [r6, #2] + mov r0, #4 + ldrsh r1, [r4, r0] + ldrsh r0, [r5, r0] + sub r4, r1, r0 + add r0, r4, #0 + bl _fflt + ldr r1, _021D85EC ; =0x45800000 + bl _fdiv + ldr r1, _021D85F0 ; =0x40800000 + bl _fdiv + mov r1, #0 + bl _fgr + bls _021D85BC + add r0, r4, #0 + bl _fflt + ldr r1, _021D85EC ; =0x45800000 + bl _fdiv + ldr r1, _021D85F0 ; =0x40800000 + bl _fdiv + add r1, r0, #0 + ldr r0, _021D85EC ; =0x45800000 + bl _fmul + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + bl _ffix + b _021D85E2 +_021D85BC: + add r0, r4, #0 + bl _fflt + ldr r1, _021D85EC ; =0x45800000 + bl _fdiv + ldr r1, _021D85F0 ; =0x40800000 + bl _fdiv + add r1, r0, #0 + ldr r0, _021D85EC ; =0x45800000 + bl _fmul + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub + bl _ffix +_021D85E2: + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + strh r0, [r6, #4] + pop {r3, r4, r5, r6, r7, pc} + nop +_021D85EC: .word 0x45800000 +_021D85F0: .word 0x40800000 + thumb_func_end MOD_021D8478 + + thumb_func_start MOD_021D85F4 +MOD_021D85F4: ; 0x021D85F4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #5 + bl FUN_02085290 + add r2, r0, #0 + mov r1, #0x65 + lsl r1, r1, #2 + lsl r2, r2, #0x18 + ldr r0, _021D885C ; =0x021D89B4 + add r1, r5, r1 + lsr r2, r2, #0x18 + bl MOD_021D841C + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #6 + bl FUN_02085290 + add r2, r0, #0 + ldr r1, _021D8860 ; =0x0000019A + lsl r2, r2, #0x18 + ldr r0, _021D8864 ; =0x021D89C6 + add r1, r5, r1 + lsr r2, r2, #0x18 + bl MOD_021D841C + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #7 + bl FUN_02085290 + add r2, r0, #0 + ldr r1, _021D8868 ; =0x000001A6 + lsl r2, r2, #0x18 + ldr r0, _021D886C ; =0x021D89D8 + add r1, r5, r1 + lsr r2, r2, #0x18 + bl MOD_021D841C + mov r1, #0x1a + lsl r1, r1, #4 + ldr r0, _021D8870 ; =0x021D89EA + add r1, r5, r1 + mov r2, #0 + bl MOD_021D841C + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #9 + bl FUN_02085290 + add r2, r0, #0 + mov r1, #0x6b + lsl r1, r1, #2 + lsl r2, r2, #0x18 + ldr r0, _021D8874 ; =0x021D89FC + add r1, r5, r1 + lsr r2, r2, #0x18 + bl MOD_021D841C + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #5 + bl FUN_02085290 + add r2, r0, #0 + ldr r1, _021D8878 ; =0x000001B2 + lsl r2, r2, #0x18 + ldr r0, _021D887C ; =0x021D8A0E + add r1, r5, r1 + lsr r2, r2, #0x18 + bl MOD_021D841C + ldr r1, _021D8880 ; =0x000001BE + ldr r0, _021D8884 ; =0x021D8A20 + add r1, r5, r1 + mov r2, #0 + bl MOD_021D841C + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #8 + bl FUN_02085290 + add r2, r0, #0 + mov r1, #0x6e + lsl r1, r1, #2 + lsl r2, r2, #0x18 + ldr r0, _021D8888 ; =0x021D8A32 + add r1, r5, r1 + lsr r2, r2, #0x18 + bl MOD_021D841C + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #9 + bl FUN_02085290 + add r2, r0, #0 + mov r1, #0x71 + lsl r1, r1, #2 + lsl r2, r2, #0x18 + ldr r0, _021D888C ; =0x021D8A44 + add r1, r5, r1 + lsr r2, r2, #0x18 + bl MOD_021D841C + ldr r1, _021D8890 ; =0x000001CA + ldr r0, _021D8894 ; =0x021D8A56 + add r1, r5, r1 + mov r2, #0 + bl MOD_021D841C + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #7 + bl FUN_02085290 + add r2, r0, #0 + ldr r1, _021D8898 ; =0x000001D6 + lsl r2, r2, #0x18 + ldr r0, _021D889C ; =0x021D8A68 + add r1, r5, r1 + lsr r2, r2, #0x18 + bl MOD_021D841C + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #8 + bl FUN_02085290 + add r2, r0, #0 + mov r1, #0x1d + lsl r1, r1, #4 + lsl r2, r2, #0x18 + ldr r0, _021D88A0 ; =0x021D8A7A + add r1, r5, r1 + lsr r2, r2, #0x18 + bl MOD_021D841C + mov r1, #0x77 + lsl r1, r1, #2 + ldr r0, _021D88A4 ; =0x021D8A8C + add r1, r5, r1 + mov r2, #0 + bl MOD_021D841C + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #6 + bl FUN_02085290 + add r2, r0, #0 + ldr r1, _021D88A8 ; =0x000001E2 + lsl r2, r2, #0x18 + ldr r0, _021D88AC ; =0x021D8A9E + add r1, r5, r1 + lsr r2, r2, #0x18 + bl MOD_021D841C + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #7 + bl FUN_02085290 + add r2, r0, #0 + ldr r1, _021D88B0 ; =0x000001EE + lsl r2, r2, #0x18 + ldr r0, _021D88B4 ; =0x021D8AB0 + add r1, r5, r1 + lsr r2, r2, #0x18 + bl MOD_021D841C + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #8 + bl FUN_02085290 + add r2, r0, #0 + mov r1, #0x7a + lsl r1, r1, #2 + lsl r2, r2, #0x18 + ldr r0, _021D88B8 ; =0x021D8AC2 + add r1, r5, r1 + lsr r2, r2, #0x18 + bl MOD_021D841C + mov r0, #0 + str r0, [sp, #0x24] + mov r0, #0x4d + lsl r0, r0, #2 + add r1, r5, r0 + str r1, [sp, #0x20] + add r1, r0, #0 + add r1, #0x60 + add r1, r5, r1 + str r1, [sp, #0x1c] + add r1, r5, #0 + str r1, [sp, #0x18] + add r1, #0xd4 + str r1, [sp, #0x18] + add r1, r0, #6 + add r1, r5, r1 + str r1, [sp, #0x14] + add r1, r0, #0 + add r1, #0x66 + add r1, r5, r1 + str r1, [sp, #0x10] + add r1, r5, #0 + str r1, [sp, #0xc] + add r1, #0xda + str r1, [sp, #0xc] + add r1, r0, #0 + add r1, #0xc + add r1, r5, r1 + str r1, [sp, #8] + add r1, r0, #0 + add r1, #0x6c + add r1, r5, r1 + str r1, [sp, #4] + add r1, r5, #0 + str r1, [sp] + add r1, #0xe0 + str r1, [sp] + add r1, r0, #0 + add r1, #0x12 + add r0, #0x72 + add r4, r5, #0 + add r7, r5, r1 + add r6, r5, r0 + add r4, #0xe6 +_021D87E2: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x20] + bl MOD_021D8478 + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x14] + bl MOD_021D8478 + ldr r0, [sp] + ldr r1, [sp, #4] + ldr r2, [sp, #8] + bl MOD_021D8478 + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD_021D8478 + ldr r0, [sp, #0x20] + add r7, #0x18 + add r0, #0x18 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r6, #0x18 + add r0, #0x18 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r4, #0x18 + add r0, #0x18 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r0, #0x18 + str r0, [sp, #0x14] + ldr r0, [sp, #0x10] + add r0, #0x18 + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + add r0, #0x18 + str r0, [sp, #0xc] + ldr r0, [sp, #8] + add r0, #0x18 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, #0x18 + str r0, [sp, #4] + ldr r0, [sp] + add r0, #0x18 + str r0, [sp] + ldr r0, [sp, #0x24] + add r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, #4 + blo _021D87E2 + mov r0, #0x7d + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D885C: .word 0x021D89B4 +_021D8860: .word 0x0000019A +_021D8864: .word 0x021D89C6 +_021D8868: .word 0x000001A6 +_021D886C: .word 0x021D89D8 +_021D8870: .word 0x021D89EA +_021D8874: .word 0x021D89FC +_021D8878: .word 0x000001B2 +_021D887C: .word 0x021D8A0E +_021D8880: .word 0x000001BE +_021D8884: .word 0x021D8A20 +_021D8888: .word 0x021D8A32 +_021D888C: .word 0x021D8A44 +_021D8890: .word 0x000001CA +_021D8894: .word 0x021D8A56 +_021D8898: .word 0x000001D6 +_021D889C: .word 0x021D8A68 +_021D88A0: .word 0x021D8A7A +_021D88A4: .word 0x021D8A8C +_021D88A8: .word 0x000001E2 +_021D88AC: .word 0x021D8A9E +_021D88B0: .word 0x000001EE +_021D88B4: .word 0x021D8AB0 +_021D88B8: .word 0x021D8AC2 + thumb_func_end MOD_021D85F4 + + .section .rodata + ; 0x021D88BC + .incbin "baserom.nds", 0x2C25DC, 0x218 diff --git a/arm9/src/FUN_020910A4.c b/arm9/src/FUN_020910A4.c index 850486d4..d1ee68b9 100644 --- a/arm9/src/FUN_020910A4.c +++ b/arm9/src/FUN_020910A4.c @@ -1,10 +1,32 @@ #include "global.h" -void * (* gUnk021C8C70)(u32); +typedef void * (* AllocFunc)(u32 size); +typedef void (* FreeFunc)(void * ptr); +AllocFunc gUnk021C8C70; +FreeFunc gUnk021C8C74; + +// Custom allocator ARM_FUNC void* FUN_020910A4(u32 size) { - if (gUnk021C8C70 != NULL) - return gUnk021C8C70(size); - return OS_AllocFromHeap(OS_ARENA_MAIN, -1, size); + if (gUnk021C8C70 != NULL) + return gUnk021C8C70(size); + else + return OS_AllocFromHeap(OS_ARENA_MAIN, -1, size); +} + +// Custom destructor +ARM_FUNC void FUN_0209105C(void * ptr) +{ + if (gUnk021C8C74 != NULL) + gUnk021C8C74(ptr); + else + OS_FreeToHeap(OS_ARENA_MAIN, -1, ptr); +} + +// Custom alloc/free setter +ARM_FUNC void SetCustomAllocator(AllocFunc allocator, FreeFunc destructor) +{ + gUnk021C8C70 = allocator; + gUnk021C8C74 = destructor; } |