summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lcf117
-rw-r--r--arm9/asm/unk_0208AC14.s34
-rw-r--r--arm9/global.inc28
-rw-r--r--arm9/modules/65/asm/module_65.s5500
-rw-r--r--arm9/modules/66/asm/module_66.s4216
-rw-r--r--arm9/modules/67/asm/module_67.s4337
-rw-r--r--arm9/modules/68/asm/module_68.s2461
-rw-r--r--arm9/src/FUN_020910A4.c30
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;
}