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