summaryrefslogtreecommitdiff
path: root/arm9
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-13 11:05:28 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-13 11:05:28 -0400
commit45e8d55574fd97e5afbab239dff712e0a9b90772 (patch)
tree0319bbee6000a0fcbe577c353968c26e4fe168a4 /arm9
parent41d9e59f4ac0fc6020ecdd0ccc2ff01187e875ff (diff)
Disassemble modules 72 and 73
Diffstat (limited to 'arm9')
-rw-r--r--arm9/arm9.lcf61
-rw-r--r--arm9/global.inc10
-rw-r--r--arm9/modules/72/asm/module_72_dummy.s0
-rw-r--r--arm9/modules/73/asm/module_73.s9424
4 files changed, 9478 insertions, 17 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index 7a14e351..e38dc01e 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -2812,7 +2812,17 @@ SECTIONS {
SDK_OVERLAY_MODULE_72_ID = 72;
SDK_OVERLAY.MODULE_72.ID = 72;
SDK_OVERLAY.MODULE_72.START = .;
- FILE_2C9C00.o (.text) /* 0x2C5C00 */
+ module_72_dummy.o (.text)
+ module_72_dummy.o (.rodata)
+ module_72_dummy.o (.init)
+ SDK_OVERLAY.MODULE_72.SINIT_START = .;
+ module_72_dummy.o (.ctor)
+ module_72_dummy.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_72.SINIT_END = .;
+ . = ALIGN(32);
+ module_72_dummy.o (.sdata)
+ module_72_dummy.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_72.END = .;
SDK_OVERLAY.MODULE_72.SIZE = SDK_OVERLAY.MODULE_72.END - SDK_OVERLAY.MODULE_72.START;
@@ -2822,7 +2832,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_72.BSS_START = .;
- FILE_2C9C00.o (.bss)
+ module_72_dummy.o (.bss)
+ module_72_dummy.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_72.BSS_END = .;
SDK_OVERLAY.MODULE_72.BSS_SIZE = SDK_OVERLAY.MODULE_72.BSS_END - SDK_OVERLAY.MODULE_72.BSS_START;
@@ -2833,7 +2844,17 @@ SECTIONS {
SDK_OVERLAY_MODULE_73_ID = 73;
SDK_OVERLAY.MODULE_73.ID = 73;
SDK_OVERLAY.MODULE_73.START = .;
- FILE_2C9E00.o (.text) /* 0x2C5E00 */
+ module_73.o (.text)
+ module_73.o (.rodata)
+ module_73.o (.init)
+ SDK_OVERLAY.MODULE_73.SINIT_START = .;
+ module_73.o (.ctor)
+ module_73.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_73.SINIT_END = .;
+ . = ALIGN(32);
+ module_73.o (.sdata)
+ module_73.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_73.END = .;
SDK_OVERLAY.MODULE_73.SIZE = SDK_OVERLAY.MODULE_73.END - SDK_OVERLAY.MODULE_73.START;
@@ -2843,23 +2864,13 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_73.BSS_START = .;
- FILE_2C9E00.o (.bss)
+ module_73.o (.bss)
+ module_73.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_73.BSS_END = .;
SDK_OVERLAY.MODULE_73.BSS_SIZE = SDK_OVERLAY.MODULE_73.BSS_END - SDK_OVERLAY.MODULE_73.BSS_START;
} >> MODULE_73
- .MODULE_74: {
- ALIGNALL(4); . = ALIGN(32);
- SDK_OVERLAY_MODULE_74_ID = 74;
- SDK_OVERLAY.MODULE_74.ID = 74;
- SDK_OVERLAY.MODULE_74.START = .;
- FILE_2CEA00.o (.text) /* 0x2CAA00 */
- . = ALIGN(32);
- SDK_OVERLAY.MODULE_74.END = .;
- SDK_OVERLAY.MODULE_74.SIZE = SDK_OVERLAY.MODULE_74.END - SDK_OVERLAY.MODULE_74.START;
- } > MODULE_74
-
.MODULE_74.bss :
{
ALIGNALL(4); . = ALIGN(32);
@@ -3895,8 +3906,24 @@ SECTIONS {
WRITEW 71;
WRITEW 0;
- OVERLAY_TABLE(MODULE_72, 72)
- OVERLAY_TABLE(MODULE_73, 73)
+ WRITEW 72;
+ WRITEW ADDR(.MODULE_72);
+ WRITEW SDK_OVERLAY.MODULE_72.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_72.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_72.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_72.SINIT_END;
+ WRITEW 72;
+ WRITEW 0;
+
+ WRITEW 73;
+ WRITEW ADDR(.MODULE_73);
+ WRITEW SDK_OVERLAY.MODULE_73.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_73.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_73.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_73.SINIT_END;
+ WRITEW 73;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_74, 74)
OVERLAY_TABLE(MODULE_75, 75)
OVERLAY_TABLE(MODULE_76, 76)
diff --git a/arm9/global.inc b/arm9/global.inc
index 7fd83449..09a35bd8 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -5756,6 +5756,16 @@
.extern FUN_0206B8A4
.extern FUN_02083B84
.extern FUN_02083D10
+.extern FUN_0200904C
+.extern FUN_02013F04
+.extern FUN_0201CBEC
+.extern FUN_02027E30
+.extern FUN_02027E94
+.extern FUN_02029520
+.extern FUN_02060FAC
+.extern FUN_020842D0
+.extern FUN_020842D8
+.extern FUN_02085284
.extern MOD05_021F54E0
.extern MOD06_0224C24C
.extern MOD12_0223D1CC
diff --git a/arm9/modules/72/asm/module_72_dummy.s b/arm9/modules/72/asm/module_72_dummy.s
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/arm9/modules/72/asm/module_72_dummy.s
diff --git a/arm9/modules/73/asm/module_73.s b/arm9/modules/73/asm/module_73.s
new file mode 100644
index 00000000..6b1efad5
--- /dev/null
+++ b/arm9/modules/73/asm/module_73.s
@@ -0,0 +1,9424 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD73_021D74E0
+MOD73_021D74E0: ; 0x021D74E0
+ push {r3, lr}
+ ldr r0, [r0, #0x18]
+ bl MOD73_021D88B0
+ bl FUN_0201C30C
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D74E0
+
+ thumb_func_start MOD73_021D74F0
+MOD73_021D74F0: ; 0x021D74F0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_0200628C
+ mov r2, #2
+ add r4, r0, #0
+ mov r0, #3
+ mov r1, #0x38
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ ldr r1, _021D757C ; =0x000015E8
+ add r0, r5, #0
+ mov r2, #0x38
+ bl FUN_02006268
+ ldr r2, _021D757C ; =0x000015E8
+ add r5, r0, #0
+ mov r1, #0
+ bl Call_FillMemWithValue
+ str r5, [r4, #0x18]
+ mov r1, #0x38
+ str r1, [r5]
+ mov r0, #0x10
+ bl FUN_0201C24C
+ ldrh r0, [r4, #6]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #1
+ bne _021D7534
+ mov r1, #1
+ b _021D7536
+_021D7534:
+ mov r1, #0
+_021D7536:
+ ldr r0, _021D7580 ; =0x00001428
+ str r1, [r5, r0]
+ ldr r1, [r4, #0x10]
+ add r0, r5, #0
+ ldr r1, [r1, #0x10]
+ bl MOD73_021D8DF4
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #0x18]
+ bl FUN_02025084
+ str r0, [r5, #0x24]
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #0x18]
+ bl FUN_02024FF4
+ str r0, [r5, #0x28]
+ mov r0, #0xae
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ ldr r0, _021D7584 ; =MOD73_021D74E0
+ add r1, r4, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ ldr r1, _021D7588 ; =0x0000049F
+ mov r0, #0xc
+ mov r2, #1
+ bl FUN_0200433C
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_021D757C: .word 0x000015E8
+_021D7580: .word 0x00001428
+_021D7584: .word MOD73_021D74E0
+_021D7588: .word 0x0000049F
+ thumb_func_end MOD73_021D74F0
+
+ thumb_func_start MOD73_021D758C
+MOD73_021D758C: ; 0x021D758C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ bl FUN_0200628C
+ add r7, r0, #0
+ add r0, r4, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ ldr r1, _021D763C ; =0x021DBC9C
+ str r0, [sp]
+ lsl r0, r0, #3
+ add r1, r1, r0
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021D75BA
+ cmp r0, #1
+ beq _021D75FC
+ cmp r0, #2
+ beq _021D760C
+ b _021D7620
+_021D75BA:
+ ldr r3, [r1]
+ cmp r3, #0
+ beq _021D7620
+ ldr r6, [r1, #4]
+ add r2, r4, #0
+ add r0, r7, #0
+ add r1, r4, #0
+ add r2, #0x10
+ blx r3
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021D75DC
+ ldr r0, [r4, #0x18]
+ str r0, [r4, #0xc]
+ mov r0, #0
+ str r0, [r4, #0x14]
+_021D75DC:
+ ldr r1, [r4, #0xc]
+ ldr r0, [sp]
+ cmp r0, r1
+ beq _021D7620
+ mov r0, #0
+ str r0, [r4, #0x10]
+ ldrh r0, [r7, #6]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ beq _021D7620
+ cmp r6, #0
+ beq _021D7620
+ str r6, [r4, #8]
+ mov r0, #1
+ str r0, [r5]
+ b _021D7620
+_021D75FC:
+ ldr r0, [r4, #8]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02031588
+ mov r0, #2
+ str r0, [r5]
+ b _021D7620
+_021D760C:
+ ldr r0, [r4, #8]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020315D8
+ cmp r0, #0
+ beq _021D7620
+ mov r0, #0
+ str r0, [r5]
+ str r0, [r4, #8]
+_021D7620:
+ add r0, r4, #0
+ bl MOD73_021D8858
+ ldr r0, [r4]
+ ldr r1, [r4, #0x20]
+ bl FUN_020335F0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021D7638
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021D7638:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D763C: .word 0x021DBC9C
+ thumb_func_end MOD73_021D758C
+
+ thumb_func_start MOD73_021D7640
+MOD73_021D7640: ; 0x021D7640
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ bl FUN_0200628C
+ add r6, r0, #0
+ add r0, r5, #0
+ bl FUN_02006278
+ add r7, r0, #0
+ ldr r4, [r7]
+ bl MOD73_021D8E90
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201C29C
+ ldr r2, _021D7688 ; =0x000015E8
+ add r0, r7, #0
+ mov r1, #0
+ bl MI_CpuFill8
+ add r0, r5, #0
+ bl FUN_0200627C
+ mov r0, #0
+ str r0, [r6, #0x18]
+ add r0, r4, #0
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7688: .word 0x000015E8
+ thumb_func_end MOD73_021D7640
+
+ thumb_func_start MOD73_021D768C
+MOD73_021D768C: ; 0x021D768C
+ str r1, [r0, #0x18]
+ mov r1, #1
+ str r1, [r0, #0x14]
+ bx lr
+ thumb_func_end MOD73_021D768C
+
+ thumb_func_start MOD73_021D7694
+MOD73_021D7694: ; 0x021D7694
+ mov r1, #1
+ str r1, [r0, #4]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD73_021D7694
+
+ thumb_func_start MOD73_021D769C
+MOD73_021D769C: ; 0x021D769C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r2, #0
+ ldr r0, [r4]
+ add r5, r1, #0
+ cmp r0, #0
+ beq _021D76B8
+ cmp r0, #1
+ bne _021D76B0
+ b _021D77C6
+_021D76B0:
+ cmp r0, #2
+ bne _021D76B6
+ b _021D77E4
+_021D76B6:
+ b _021D77F4
+_021D76B8:
+ add r0, r5, #0
+ bl MOD73_021D852C
+ ldr r0, _021D77FC ; =0x00001424
+ ldr r0, [r5, r0]
+ bl MOD73_021D910C
+ cmp r0, #0
+ bne _021D76D4
+ mov r0, #0xba
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl MOD73_021DB884
+_021D76D4:
+ ldr r0, [r5, #0x24]
+ ldr r2, _021D7800 ; =0x00001574
+ str r0, [sp]
+ ldr r0, [r5]
+ ldr r3, _021D7804 ; =0x00001420
+ str r0, [sp, #4]
+ ldr r0, _021D7808 ; =0x0000054C
+ ldr r1, [r5, r3]
+ add r3, #0xc
+ add r0, r5, r0
+ add r2, r5, r2
+ add r3, r5, r3
+ bl MOD73_021D9A28
+ ldr r0, _021D780C ; =0x000005A4
+ add r0, r5, r0
+ bl MOD73_021D9E80
+ ldr r0, [r5, #0x24]
+ ldr r2, _021D7800 ; =0x00001574
+ str r0, [sp]
+ ldr r0, [r5]
+ ldr r3, _021D7804 ; =0x00001420
+ str r0, [sp, #4]
+ ldr r0, _021D7810 ; =0x0000063C
+ ldr r1, [r5, r3]
+ add r3, #0xc
+ add r0, r5, r0
+ add r2, r5, r2
+ add r3, r5, r3
+ bl MOD73_021DA210
+ mov r0, #0x16
+ lsl r0, r0, #6
+ add r0, r5, r0
+ bl MOD73_021D9D84
+ ldr r0, _021D7814 ; =0x0000058C
+ add r0, r5, r0
+ bl MOD73_021D9D84
+ ldr r0, _021D7818 ; =0x00000598
+ add r0, r5, r0
+ bl MOD73_021D9D84
+ ldr r3, _021D781C ; =0x0000142C
+ ldr r0, _021D7820 ; =0x0000061C
+ add r2, r3, #0
+ add r1, r5, r3
+ sub r2, #0xc
+ sub r3, #8
+ ldr r2, [r5, r2]
+ ldr r3, [r5, r3]
+ add r0, r5, r0
+ bl MOD73_021DA0E0
+ mov r0, #0x67
+ lsl r0, r0, #4
+ add r0, r5, r0
+ bl MOD73_021DA81C
+ ldr r0, _021D7824 ; =0x00000A84
+ add r0, r5, r0
+ bl MOD73_021DAD78
+ ldr r1, _021D7804 ; =0x00001420
+ ldr r0, _021D7828 ; =0x00000B04
+ ldr r1, [r5, r1]
+ add r0, r5, r0
+ bl MOD73_021DAF70
+ mov r0, #0x2d
+ lsl r0, r0, #4
+ add r0, r5, r0
+ bl MOD73_021DB2FC
+ add r0, r5, #0
+ bl MOD73_021D8630
+ bl FUN_02033E74
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, _021D7804 ; =0x00001420
+ ldr r0, [r5, r0]
+ cmp r0, #1
+ ble _021D778E
+ ldr r0, _021D7808 ; =0x0000054C
+ add r0, r5, r0
+ bl MOD73_021D9AC8
+_021D778E:
+ ldr r0, _021D780C ; =0x000005A4
+ mov r1, #3
+ add r0, r5, r0
+ mov r2, #1
+ bl MOD73_021D9FC0
+ ldr r0, _021D780C ; =0x000005A4
+ mov r1, #4
+ add r0, r5, r0
+ mov r2, #1
+ bl MOD73_021D9FC0
+ ldr r0, _021D780C ; =0x000005A4
+ mov r1, #5
+ add r0, r5, r0
+ mov r2, #1
+ bl MOD73_021D9FC0
+ ldr r0, _021D780C ; =0x000005A4
+ mov r1, #6
+ add r0, r5, r0
+ mov r2, #1
+ bl MOD73_021D9FC0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D77F4
+_021D77C6:
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r5]
+ ldr r3, _021D782C ; =0x0000FFFF
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D77F4
+_021D77E4:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D77F4
+ ldr r0, [r5, #0xc]
+ add sp, #0xc
+ add r0, r0, #1
+ pop {r4, r5, pc}
+_021D77F4:
+ ldr r0, [r5, #0xc]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_021D77FC: .word 0x00001424
+_021D7800: .word 0x00001574
+_021D7804: .word 0x00001420
+_021D7808: .word 0x0000054C
+_021D780C: .word 0x000005A4
+_021D7810: .word 0x0000063C
+_021D7814: .word 0x0000058C
+_021D7818: .word 0x00000598
+_021D781C: .word 0x0000142C
+_021D7820: .word 0x0000061C
+_021D7824: .word 0x00000A84
+_021D7828: .word 0x00000B04
+_021D782C: .word 0x0000FFFF
+ thumb_func_end MOD73_021D769C
+
+ thumb_func_start MOD73_021D7830
+MOD73_021D7830: ; 0x021D7830
+ push {r4, lr}
+ ldr r0, _021D7854 ; =0x00001424
+ add r4, r1, #0
+ ldr r0, [r4, r0]
+ bl MOD73_021D910C
+ cmp r0, #0
+ bne _021D784E
+ ldr r3, _021D7854 ; =0x00001424
+ mov r1, #0
+ ldr r3, [r4, r3]
+ mov r0, #0x16
+ add r2, r1, #0
+ bl MOD73_021D90D0
+_021D784E:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ pop {r4, pc}
+ .align 2, 0
+_021D7854: .word 0x00001424
+ thumb_func_end MOD73_021D7830
+
+ thumb_func_start MOD73_021D7858
+MOD73_021D7858: ; 0x021D7858
+ ldr r0, [r1, #0xc]
+ bx lr
+ thumb_func_end MOD73_021D7858
+
+ thumb_func_start MOD73_021D785C
+MOD73_021D785C: ; 0x021D785C
+ push {r3, r4, r5, lr}
+ add r4, r2, #0
+ add r5, r1, #0
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _021D786E
+ cmp r1, #1
+ beq _021D7884
+ b _021D78AA
+_021D786E:
+ ldr r1, _021D78B0 ; =0x00001420
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ ldr r1, [r5, r1]
+ add r0, r5, r0
+ bl MOD73_021D96B0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D78AA
+_021D7884:
+ ldr r1, [r0, #8]
+ ldr r0, _021D78B4 ; =0x0000142C
+ str r1, [r5, r0]
+ bl MOD73_021D9088
+ ldr r3, _021D78B4 ; =0x0000142C
+ add r2, r0, #0
+ add r1, r5, r3
+ sub r3, #8
+ ldr r3, [r5, r3]
+ mov r0, #0x19
+ bl MOD73_021D90D0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ ldr r0, [r5, #0xc]
+ add r0, r0, #1
+ pop {r3, r4, r5, pc}
+_021D78AA:
+ ldr r0, [r5, #0xc]
+ pop {r3, r4, r5, pc}
+ nop
+_021D78B0: .word 0x00001420
+_021D78B4: .word 0x0000142C
+ thumb_func_end MOD73_021D785C
+
+ thumb_func_start MOD73_021D78B8
+MOD73_021D78B8: ; 0x021D78B8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r2, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ cmp r0, #5
+ bhi _021D79C4
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D78D0: ; jump table
+ .short _021D78DC - _021D78D0 - 2 ; case 0
+ .short _021D78F0 - _021D78D0 - 2 ; case 1
+ .short _021D7902 - _021D78D0 - 2 ; case 2
+ .short _021D7924 - _021D78D0 - 2 ; case 3
+ .short _021D7940 - _021D78D0 - 2 ; case 4
+ .short _021D7966 - _021D78D0 - 2 ; case 5
+_021D78DC:
+ ldr r0, _021D79C8 ; =0x00001418
+ ldr r1, [r4]
+ ldr r2, [r4, #0x20]
+ add r0, r4, r0
+ bl MOD73_021DB26C
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D79C4
+_021D78F0:
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD73_021D97F0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D79C4
+_021D7902:
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD73_021D98B8
+ cmp r0, #1
+ bne _021D79C4
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, _021D79CC ; =0x0000054C
+ add r0, r4, r0
+ bl MOD73_021D9AB4
+ mov r0, #0x18
+ str r0, [r4, #0x1c]
+ b _021D79C4
+_021D7924:
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ ble _021D7930
+ sub r0, r0, #1
+ str r0, [r4, #0x1c]
+ b _021D79C4
+_021D7930:
+ ldr r0, _021D79D0 ; =0x00000598
+ add r0, r4, r0
+ bl MOD73_021D9E3C
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D79C4
+_021D7940:
+ ldr r0, _021D79D0 ; =0x00000598
+ add r0, r4, r0
+ bl MOD73_021D9E6C
+ cmp r0, #0
+ beq _021D79C4
+ ldr r0, _021D79CC ; =0x0000054C
+ add r0, r4, r0
+ bl MOD73_021D9AF0
+ mov r0, #0x16
+ lsl r0, r0, #6
+ add r0, r4, r0
+ bl MOD73_021D9E24
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D79C4
+_021D7966:
+ mov r0, #0x16
+ lsl r0, r0, #6
+ add r0, r4, r0
+ bl MOD73_021D9E6C
+ add r6, r0, #0
+ ldr r0, _021D79D4 ; =0x00000588
+ ldr r0, [r4, r0]
+ bl FUN_0202022C
+ add r7, r0, #0
+ add r0, r7, #1
+ mov r1, #3
+ bl _s32_div_f
+ add r5, r0, #0
+ mov r0, #0xd6
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, r5
+ beq _021D79A8
+ cmp r7, #0xa
+ bge _021D799C
+ ldr r0, _021D79D8 ; =0x000006BD
+ bl FUN_020054C8
+ b _021D79A2
+_021D799C:
+ ldr r0, _021D79DC ; =0x000006BE
+ bl FUN_020054C8
+_021D79A2:
+ mov r0, #0xd6
+ lsl r0, r0, #2
+ str r5, [r4, r0]
+_021D79A8:
+ cmp r6, #0
+ beq _021D79C4
+ ldr r0, _021D79E0 ; =0x0000061C
+ mov r1, #1
+ add r0, r4, r0
+ bl MOD73_021DA1D8
+ ldr r0, _021D79E4 ; =0x000005A4
+ add r0, r4, r0
+ bl MOD73_021DA03C
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021D79C4:
+ ldr r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D79C8: .word 0x00001418
+_021D79CC: .word 0x0000054C
+_021D79D0: .word 0x00000598
+_021D79D4: .word 0x00000588
+_021D79D8: .word 0x000006BD
+_021D79DC: .word 0x000006BE
+_021D79E0: .word 0x0000061C
+_021D79E4: .word 0x000005A4
+ thumb_func_end MOD73_021D78B8
+
+ thumb_func_start MOD73_021D79E8
+MOD73_021D79E8: ; 0x021D79E8
+ push {r4, lr}
+ mov r0, #0x2d
+ add r4, r1, #0
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD73_021DB318
+ ldr r0, _021D7A98 ; =0x00001430
+ mov r1, #0x2d
+ lsl r1, r1, #4
+ add r0, r4, r0
+ add r1, r4, r1
+ bl MOD73_021DB368
+ ldr r0, _021D7A9C ; =0x00001424
+ ldr r0, [r4, r0]
+ bl MOD73_021D910C
+ cmp r0, #0
+ bne _021D7A5C
+ ldr r2, _021D7AA0 ; =0x0000142C
+ mov r0, #0xba
+ add r1, r4, r2
+ sub r2, #0xc
+ lsl r0, r0, #2
+ ldr r2, [r4, r2]
+ add r0, r4, r0
+ bl MOD73_021DB8AC
+ cmp r0, #1
+ bne _021D7A40
+ ldr r3, _021D7A9C ; =0x00001424
+ mov r1, #0
+ ldr r3, [r4, r3]
+ mov r0, #0x17
+ add r2, r1, #0
+ bl MOD73_021D90D0
+ cmp r0, #0
+ bne _021D7A3C
+ bl ErrorHandling
+_021D7A3C:
+ ldr r0, [r4, #0xc]
+ pop {r4, pc}
+_021D7A40:
+ mov r0, #0xba
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD73_021DB9F0
+ ldr r2, _021D7AA0 ; =0x0000142C
+ mov r0, #0xba
+ add r1, r4, r2
+ sub r2, #0xc
+ lsl r0, r0, #2
+ ldr r2, [r4, r2]
+ add r0, r4, r0
+ bl MOD73_021DB924
+_021D7A5C:
+ bl MOD73_021D908C
+ ldr r3, _021D7A98 ; =0x00001430
+ add r2, r0, #0
+ add r1, r4, r3
+ sub r3, #0xc
+ ldr r3, [r4, r3]
+ mov r0, #0x1a
+ bl MOD73_021D90D0
+ add r0, r4, #0
+ bl MOD73_021D810C
+ mov r0, #0x67
+ ldr r1, _021D7AA0 ; =0x0000142C
+ lsl r0, r0, #4
+ add r0, r4, r0
+ add r1, r4, r1
+ bl MOD73_021DA884
+ ldr r0, _021D7AA4 ; =0x00000A84
+ add r0, r4, r0
+ bl MOD73_021DAE54
+ ldr r0, _021D7AA8 ; =0x00000B04
+ add r0, r4, r0
+ bl MOD73_021DB008
+ ldr r0, [r4, #0xc]
+ pop {r4, pc}
+ .align 2, 0
+_021D7A98: .word 0x00001430
+_021D7A9C: .word 0x00001424
+_021D7AA0: .word 0x0000142C
+_021D7AA4: .word 0x00000A84
+_021D7AA8: .word 0x00000B04
+ thumb_func_end MOD73_021D79E8
+
+ thumb_func_start MOD73_021D7AAC
+MOD73_021D7AAC: ; 0x021D7AAC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ add r4, r1, #0
+ mov r0, #0x67
+ ldr r1, _021D7C68 ; =0x0000142C
+ lsl r0, r0, #4
+ add r5, r2, #0
+ add r0, r4, r0
+ add r1, r4, r1
+ bl MOD73_021DA884
+ ldr r0, [r5]
+ cmp r0, #4
+ bls _021D7ACC
+ b _021D7C5C
+_021D7ACC:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7AD8: ; jump table
+ .short _021D7AE2 - _021D7AD8 - 2 ; case 0
+ .short _021D7B6C - _021D7AD8 - 2 ; case 1
+ .short _021D7B98 - _021D7AD8 - 2 ; case 2
+ .short _021D7BA8 - _021D7AD8 - 2 ; case 3
+ .short _021D7C1A - _021D7AD8 - 2 ; case 4
+_021D7AE2:
+ ldr r0, _021D7C6C ; =0x0000063C
+ add r0, r4, r0
+ bl MOD73_021DA4AC
+ ldr r0, _021D7C70 ; =0x00000A84
+ mov r1, #0
+ add r0, r4, r0
+ bl MOD73_021DAEAC
+ ldr r0, _021D7C70 ; =0x00000A84
+ mov r1, #1
+ add r0, r4, r0
+ bl MOD73_021DAEAC
+ ldr r0, _021D7C70 ; =0x00000A84
+ mov r1, #2
+ add r0, r4, r0
+ bl MOD73_021DAEAC
+ ldr r0, _021D7C70 ; =0x00000A84
+ mov r1, #3
+ add r0, r4, r0
+ bl MOD73_021DAEAC
+ ldr r0, _021D7C74 ; =0x0000058C
+ add r0, r4, r0
+ bl MOD73_021D9E24
+ ldr r0, _021D7C78 ; =0x000006BA
+ mov r1, #0
+ bl FUN_020054F0
+ ldr r0, _021D7C7C ; =0x000006BB
+ mov r1, #0
+ bl FUN_020054F0
+ ldr r0, _021D7C80 ; =0x000006BF
+ mov r1, #0
+ bl FUN_020054F0
+ ldr r0, _021D7C84 ; =0x000006C1
+ mov r1, #0
+ bl FUN_020054F0
+ ldr r0, _021D7C88 ; =0x000006C2
+ bl FUN_020054C8
+ ldr r0, _021D7C8C ; =0x000005A4
+ mov r1, #0
+ add r0, r4, r0
+ add r2, r1, #0
+ bl MOD73_021D9FC0
+ ldr r0, _021D7C8C ; =0x000005A4
+ mov r1, #1
+ add r0, r4, r0
+ mov r2, #0
+ bl MOD73_021D9FC0
+ ldr r0, _021D7C8C ; =0x000005A4
+ mov r1, #2
+ add r0, r4, r0
+ mov r2, #0
+ bl MOD73_021D9FC0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D7C60
+_021D7B6C:
+ ldr r0, _021D7C74 ; =0x0000058C
+ add r0, r4, r0
+ bl MOD73_021D9E6C
+ cmp r0, #0
+ beq _021D7C60
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ mov r1, #0
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D7C60
+_021D7B98:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D7C60
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D7C60
+_021D7BA8:
+ ldr r0, [r6, #0x10]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ ldr r1, _021D7C90 ; =0x00001428
+ ldr r1, [r4, r1]
+ cmp r1, #0
+ bne _021D7BC0
+ mov r1, #0xc
+ bl FUN_0202A170
+ b _021D7BC6
+_021D7BC0:
+ mov r1, #0x12
+ bl FUN_0202A170
+_021D7BC6:
+ ldr r0, _021D7C94 ; =0x00001424
+ ldr r0, [r4, r0]
+ bl MOD73_021D910C
+ cmp r0, #0
+ bne _021D7C12
+ ldr r0, [r4]
+ bl FUN_02027E5C
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r3, _021D7C68 ; =0x0000142C
+ str r0, [sp]
+ mov r0, #0xba
+ add r2, r4, r3
+ sub r3, #0xc
+ lsl r0, r0, #2
+ ldr r3, [r4, r3]
+ add r0, r4, r0
+ add r1, r6, #0
+ bl MOD73_021DBA24
+ bl FUN_02027E30
+ ldr r3, _021D7C94 ; =0x00001424
+ add r2, r0, #0
+ ldr r3, [r4, r3]
+ mov r0, #0x1c
+ add r1, r6, #0
+ bl MOD73_021D90D0
+ cmp r0, #0
+ bne _021D7C0C
+ bl ErrorHandling
+_021D7C0C:
+ add r0, r6, #0
+ bl FUN_02016A18
+_021D7C12:
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D7C60
+_021D7C1A:
+ ldr r0, _021D7C94 ; =0x00001424
+ ldr r0, [r4, r0]
+ bl MOD73_021D910C
+ cmp r0, #0
+ bne _021D7C54
+ ldr r2, _021D7C68 ; =0x0000142C
+ mov r0, #0xba
+ add r1, r4, r2
+ sub r2, #0xc
+ lsl r0, r0, #2
+ ldr r2, [r4, r2]
+ add r0, r4, r0
+ bl MOD73_021DBBFC
+ bl MOD73_021D9090
+ ldr r3, _021D7C98 ; =0x0000144C
+ add r2, r0, #0
+ add r1, r4, r3
+ sub r3, #0x28
+ ldr r3, [r4, r3]
+ mov r0, #0x1b
+ bl MOD73_021D90D0
+ cmp r0, #0
+ bne _021D7C54
+ bl ErrorHandling
+_021D7C54:
+ ldr r0, [r4, #0xc]
+ add sp, #0xc
+ add r0, r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D7C5C:
+ bl ErrorHandling
+_021D7C60:
+ ldr r0, [r4, #0xc]
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D7C68: .word 0x0000142C
+_021D7C6C: .word 0x0000063C
+_021D7C70: .word 0x00000A84
+_021D7C74: .word 0x0000058C
+_021D7C78: .word 0x000006BA
+_021D7C7C: .word 0x000006BB
+_021D7C80: .word 0x000006BF
+_021D7C84: .word 0x000006C1
+_021D7C88: .word 0x000006C2
+_021D7C8C: .word 0x000005A4
+_021D7C90: .word 0x00001428
+_021D7C94: .word 0x00001424
+_021D7C98: .word 0x0000144C
+ thumb_func_end MOD73_021D7AAC
+
+ thumb_func_start MOD73_021D7C9C
+MOD73_021D7C9C: ; 0x021D7C9C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r2, #0
+ add r6, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ cmp r0, #0xb
+ bls _021D7CAE
+ b _021D7F3A
+_021D7CAE:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7CBA: ; jump table
+ .short _021D7CD2 - _021D7CBA - 2 ; case 0
+ .short _021D7D2E - _021D7CBA - 2 ; case 1
+ .short _021D7D42 - _021D7CBA - 2 ; case 2
+ .short _021D7D66 - _021D7CBA - 2 ; case 3
+ .short _021D7D94 - _021D7CBA - 2 ; case 4
+ .short _021D7DC0 - _021D7CBA - 2 ; case 5
+ .short _021D7DF4 - _021D7CBA - 2 ; case 6
+ .short _021D7E1C - _021D7CBA - 2 ; case 7
+ .short _021D7E36 - _021D7CBA - 2 ; case 8
+ .short _021D7EA8 - _021D7CBA - 2 ; case 9
+ .short _021D7ED6 - _021D7CBA - 2 ; case 10
+ .short _021D7F0C - _021D7CBA - 2 ; case 11
+_021D7CD2:
+ ldr r0, _021D7F44 ; =0x0000063C
+ mov r1, #0
+ add r0, r4, r0
+ bl MOD73_021DA730
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0xae
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r0, [r4]
+ ldr r3, _021D7F48 ; =0x00001410
+ str r0, [sp]
+ add r0, r4, r3
+ add r3, #0x80
+ ldrb r3, [r4, r3]
+ mov r1, #0x80
+ mov r2, #0x90
+ bl MOD73_021DB20C
+ mov r0, #6
+ mov r2, #0
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r3, r2, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ bl FUN_0200E1D0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D7F3E
+_021D7D2E:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D7E12
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ mov r0, #0x1e
+ str r0, [r4, #0x1c]
+ b _021D7F3E
+_021D7D42:
+ ldr r0, [r4, #0x1c]
+ sub r0, r0, #1
+ str r0, [r4, #0x1c]
+ bpl _021D7E12
+ ldr r0, _021D7F44 ; =0x0000063C
+ mov r1, #1
+ add r0, r4, r0
+ bl MOD73_021DA730
+ ldr r0, _021D7F4C ; =0x000006C3
+ bl FUN_020054C8
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ mov r0, #0x1e
+ str r0, [r4, #0x1c]
+ b _021D7F3E
+_021D7D66:
+ ldr r0, [r4, #0x1c]
+ sub r0, r0, #1
+ str r0, [r4, #0x1c]
+ bpl _021D7E12
+ ldr r0, _021D7F44 ; =0x0000063C
+ mov r1, #2
+ add r0, r4, r0
+ bl MOD73_021DA730
+ ldr r0, _021D7F48 ; =0x00001410
+ add r0, r4, r0
+ bl MOD73_021DB260
+ ldr r0, _021D7F4C ; =0x000006C3
+ bl FUN_020054C8
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ mov r0, #0x96
+ lsl r0, r0, #2
+ str r0, [r4, #0x1c]
+ b _021D7F3E
+_021D7D94:
+ ldr r0, [r4, #0x1c]
+ sub r0, r0, #1
+ str r0, [r4, #0x1c]
+ bmi _021D7DAE
+ ldr r0, _021D7F50 ; =0x021C48F8
+ ldrh r0, [r0, #0x20]
+ cmp r0, #0
+ bne _021D7DAE
+ ldr r0, _021D7F54 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D7DB6
+_021D7DAE:
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D7F3E
+_021D7DB6:
+ ldr r0, _021D7F48 ; =0x00001410
+ add r0, r4, r0
+ bl MOD73_021DB260
+ b _021D7F3E
+_021D7DC0:
+ ldr r0, _021D7F48 ; =0x00001410
+ add r0, r4, r0
+ bl MOD73_021DB24C
+ ldr r0, _021D7F44 ; =0x0000063C
+ add r0, r4, r0
+ bl MOD73_021DA754
+ ldr r1, _021D7F58 ; =0x0000152C
+ ldr r2, _021D7F5C ; =0x00001420
+ ldr r1, [r4, r1]
+ ldr r2, [r4, r2]
+ add r0, r6, #0
+ bl MOD73_021D8590
+ ldr r0, _021D7F44 ; =0x0000063C
+ mov r1, #0
+ add r0, r4, r0
+ bl MOD73_021DA770
+ mov r0, #0x96
+ str r0, [r4, #0x1c]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D7F3E
+_021D7DF4:
+ ldr r0, [r4, #0x1c]
+ sub r0, r0, #1
+ str r0, [r4, #0x1c]
+ ldr r0, _021D7F50 ; =0x021C48F8
+ ldrh r0, [r0, #0x20]
+ cmp r0, #0
+ bne _021D7E14
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ blt _021D7E14
+ ldr r0, _021D7F54 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ bne _021D7E14
+_021D7E12:
+ b _021D7F3E
+_021D7E14:
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D7F3E
+_021D7E1C:
+ ldr r0, _021D7F44 ; =0x0000063C
+ mov r1, #1
+ add r0, r4, r0
+ bl MOD73_021DA770
+ ldr r0, _021D7F60 ; =0x00001418
+ add r0, r4, r0
+ bl MOD73_021DB28C
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D7F3E
+_021D7E36:
+ ldr r0, _021D7F60 ; =0x00001418
+ add r0, r4, r0
+ bl MOD73_021DB2B8
+ sub r1, r0, #1
+ cmp r1, #1
+ bhi _021D7F3E
+ cmp r0, #1
+ bne _021D7E90
+ ldr r0, [r6, #0x10]
+ ldr r0, [r0, #8]
+ bl FUN_020281B8
+ cmp r0, #0x64
+ blo _021D7E68
+ ldr r0, _021D7F44 ; =0x0000063C
+ mov r1, #2
+ add r0, r4, r0
+ bl MOD73_021DA770
+ mov r0, #0xa
+ str r0, [r5]
+ mov r0, #0x96
+ str r0, [r4, #0x1c]
+ b _021D7F3E
+_021D7E68:
+ ldr r0, [r6, #0x10]
+ mov r1, #4
+ ldr r0, [r0, #0x14]
+ bl FUN_0206EE64
+ cmp r0, #0
+ bne _021D7E8A
+ ldr r0, _021D7F44 ; =0x0000063C
+ mov r1, #5
+ add r0, r4, r0
+ bl MOD73_021DA770
+ mov r0, #0xa
+ str r0, [r5]
+ mov r0, #0x96
+ str r0, [r4, #0x1c]
+ b _021D7F3E
+_021D7E8A:
+ mov r0, #9
+ str r0, [r5]
+ b _021D7E94
+_021D7E90:
+ mov r0, #0xb
+ str r0, [r5]
+_021D7E94:
+ ldr r0, _021D7F5C ; =0x00001420
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ ble _021D7F3E
+ ldr r0, _021D7F44 ; =0x0000063C
+ mov r1, #6
+ add r0, r4, r0
+ bl MOD73_021DA770
+ b _021D7F3E
+_021D7EA8:
+ mov r0, #0x35
+ mov r1, #1
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ bl MOD73_021D9080
+ ldr r3, _021D7F64 ; =0x00001424
+ mov r1, #0x35
+ lsl r1, r1, #4
+ add r2, r0, #0
+ ldr r3, [r4, r3]
+ mov r0, #0x1e
+ add r1, r4, r1
+ bl MOD73_021D90D0
+ cmp r0, #0
+ bne _021D7ECE
+ bl ErrorHandling
+_021D7ECE:
+ ldr r0, [r4, #0xc]
+ add sp, #0xc
+ add r0, r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D7ED6:
+ ldr r0, [r4, #0x1c]
+ sub r0, r0, #1
+ str r0, [r4, #0x1c]
+ ldr r0, _021D7F50 ; =0x021C48F8
+ ldrh r0, [r0, #0x20]
+ cmp r0, #0
+ bne _021D7EF4
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ blt _021D7EF4
+ ldr r0, _021D7F54 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D7F3E
+_021D7EF4:
+ ldr r0, _021D7F5C ; =0x00001420
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ ble _021D7F06
+ ldr r0, _021D7F44 ; =0x0000063C
+ mov r1, #6
+ add r0, r4, r0
+ bl MOD73_021DA770
+_021D7F06:
+ mov r0, #0xb
+ str r0, [r5]
+ b _021D7F3E
+_021D7F0C:
+ mov r0, #0x35
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ bl MOD73_021D9080
+ ldr r3, _021D7F64 ; =0x00001424
+ mov r1, #0x35
+ lsl r1, r1, #4
+ add r2, r0, #0
+ ldr r3, [r4, r3]
+ mov r0, #0x1e
+ add r1, r4, r1
+ bl MOD73_021D90D0
+ cmp r0, #0
+ bne _021D7F32
+ bl ErrorHandling
+_021D7F32:
+ ldr r0, [r4, #0xc]
+ add sp, #0xc
+ add r0, r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D7F3A:
+ bl ErrorHandling
+_021D7F3E:
+ ldr r0, [r4, #0xc]
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D7F44: .word 0x0000063C
+_021D7F48: .word 0x00001410
+_021D7F4C: .word 0x000006C3
+_021D7F50: .word 0x021C48F8
+_021D7F54: .word 0x021C48B8
+_021D7F58: .word 0x0000152C
+_021D7F5C: .word 0x00001420
+_021D7F60: .word 0x00001418
+_021D7F64: .word 0x00001424
+ thumb_func_end MOD73_021D7C9C
+
+ thumb_func_start MOD73_021D7F68
+MOD73_021D7F68: ; 0x021D7F68
+ ldr r3, _021D7F70 ; =MOD73_021D8810
+ add r0, r1, #0
+ add r1, r2, #0
+ bx r3
+ .align 2, 0
+_021D7F70: .word MOD73_021D8810
+ thumb_func_end MOD73_021D7F68
+
+ thumb_func_start MOD73_021D7F74
+MOD73_021D7F74: ; 0x021D7F74
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r2, #0
+ add r6, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ cmp r0, #4
+ bhi _021D8056
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7F90: ; jump table
+ .short _021D7F9A - _021D7F90 - 2 ; case 0
+ .short _021D8000 - _021D7F90 - 2 ; case 1
+ .short _021D8010 - _021D7F90 - 2 ; case 2
+ .short _021D8030 - _021D7F90 - 2 ; case 3
+ .short _021D8040 - _021D7F90 - 2 ; case 4
+_021D7F9A:
+ ldr r0, _021D805C ; =0x00001571
+ ldrb r0, [r4, r0]
+ cmp r0, #1
+ bne _021D7FB2
+ ldr r0, _021D8060 ; =0x0000063C
+ mov r1, #3
+ add r0, r4, r0
+ bl MOD73_021DA770
+ mov r0, #1
+ str r0, [r6, #0x20]
+ b _021D7FF4
+_021D7FB2:
+ mov r0, #0
+ str r0, [r6, #0x20]
+ mov r0, #0x35
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _021D7FCC
+ ldr r0, _021D8060 ; =0x0000063C
+ mov r1, #4
+ add r0, r4, r0
+ bl MOD73_021DA770
+ b _021D7FDA
+_021D7FCC:
+ ldr r0, _021D8064 ; =0x00001420
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bgt _021D7FDA
+ mov r0, #2
+ str r0, [r5]
+ b _021D8056
+_021D7FDA:
+ ldr r0, _021D8068 ; =0x00001428
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _021D7FF4
+ ldr r0, [r4]
+ bl FUN_02029520
+ add r1, r0, #0
+ ldr r0, [r6, #0x10]
+ mov r2, #4
+ ldr r0, [r0, #0x1c]
+ bl FUN_02028AD4
+_021D7FF4:
+ mov r0, #0x3c
+ str r0, [r4, #0x1c]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D8056
+_021D8000:
+ ldr r0, [r4, #0x1c]
+ sub r0, r0, #1
+ str r0, [r4, #0x1c]
+ bpl _021D8056
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D8056
+_021D8010:
+ 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
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D8056
+_021D8030:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D8056
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D8056
+_021D8040:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD73_021D8840
+ add r0, r4, #0
+ bl MOD73_021D875C
+ ldr r0, [r4, #0xc]
+ add sp, #0xc
+ add r0, r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D8056:
+ ldr r0, [r4, #0xc]
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D805C: .word 0x00001571
+_021D8060: .word 0x0000063C
+_021D8064: .word 0x00001420
+_021D8068: .word 0x00001428
+ thumb_func_end MOD73_021D7F74
+
+ thumb_func_start MOD73_021D806C
+MOD73_021D806C: ; 0x021D806C
+ push {r4, lr}
+ mov r0, #0xd7
+ add r4, r1, #0
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD73_021D96C8
+ ldr r0, _021D80E8 ; =0x0000054C
+ add r0, r4, r0
+ bl MOD73_021D9A4C
+ mov r0, #0x16
+ lsl r0, r0, #6
+ add r0, r4, r0
+ bl MOD73_021D9DA0
+ ldr r0, _021D80EC ; =0x0000058C
+ add r0, r4, r0
+ bl MOD73_021D9DA0
+ ldr r0, _021D80F0 ; =0x00000598
+ add r0, r4, r0
+ bl MOD73_021D9DA0
+ ldr r0, _021D80F4 ; =0x000005A4
+ add r0, r4, r0
+ bl MOD73_021D9E8C
+ ldr r0, _021D80F8 ; =0x0000061C
+ add r0, r4, r0
+ bl MOD73_021DA0FC
+ ldr r0, _021D80FC ; =0x0000063C
+ add r0, r4, r0
+ bl MOD73_021DA234
+ mov r0, #0x67
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD73_021DA82C
+ ldr r0, _021D8100 ; =0x00000A84
+ add r0, r4, r0
+ bl MOD73_021DAD84
+ ldr r0, _021D8104 ; =0x00000B04
+ add r0, r4, r0
+ bl MOD73_021DAF88
+ ldr r0, _021D8108 ; =0x00001418
+ add r0, r4, r0
+ bl MOD73_021DB280
+ add r0, r4, #0
+ bl MOD73_021D856C
+ add r0, r4, #0
+ bl MOD73_021D7694
+ ldr r0, [r4, #0xc]
+ pop {r4, pc}
+ nop
+_021D80E8: .word 0x0000054C
+_021D80EC: .word 0x0000058C
+_021D80F0: .word 0x00000598
+_021D80F4: .word 0x000005A4
+_021D80F8: .word 0x0000061C
+_021D80FC: .word 0x0000063C
+_021D8100: .word 0x00000A84
+_021D8104: .word 0x00000B04
+_021D8108: .word 0x00001418
+ thumb_func_end MOD73_021D806C
+
+ thumb_func_start MOD73_021D810C
+MOD73_021D810C: ; 0x021D810C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D8170 ; =0x000014C4
+ add r4, r5, r0
+ ldr r0, _021D8174 ; =0x000005A4
+ ldrh r1, [r4, #8]
+ add r0, r5, r0
+ bl MOD73_021D9FE0
+ add r0, r5, #0
+ bl MOD73_021D85E4
+ ldrh r0, [r4, #0xa]
+ ldrb r1, [r4, #0xd]
+ bl MOD73_021DB644
+ add r1, r0, #0
+ ldr r0, _021D8174 ; =0x000005A4
+ add r0, r5, r0
+ bl MOD73_021D9FFC
+ ldr r0, _021D8174 ; =0x000005A4
+ ldrb r1, [r4, #0xd]
+ add r0, r5, r0
+ bl MOD73_021DA058
+ ldr r0, _021D8178 ; =0x0000061C
+ add r0, r5, r0
+ bl MOD73_021DA194
+ add r0, r5, #0
+ bl MOD73_021D817C
+ add r0, r5, #0
+ bl MOD73_021D8458
+ add r0, r5, #0
+ bl MOD73_021D8254
+ add r0, r5, #0
+ bl MOD73_021D82FC
+ add r0, r5, #0
+ bl MOD73_021D83D0
+ add r0, r5, #0
+ bl MOD73_021D84FC
+ pop {r3, r4, r5, pc}
+ nop
+_021D8170: .word 0x000014C4
+_021D8174: .word 0x000005A4
+_021D8178: .word 0x0000061C
+ thumb_func_end MOD73_021D810C
+
+ thumb_func_start MOD73_021D817C
+MOD73_021D817C: ; 0x021D817C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, _021D8230 ; =0x000014C4
+ mov r2, #7
+ add r4, r5, r0
+ ldrb r3, [r4, #0xd]
+ ldr r0, _021D8234 ; =0x000005A4
+ mov r1, #5
+ add r6, r3, #0
+ mul r6, r2
+ ldr r2, _021D8238 ; =0x021DBC84
+ add r0, r5, r0
+ ldrb r2, [r2, r6]
+ bl MOD73_021D9FC0
+ ldrb r3, [r4, #0xd]
+ ldr r0, _021D8234 ; =0x000005A4
+ mov r2, #7
+ add r6, r3, #0
+ mul r6, r2
+ ldr r2, _021D823C ; =0x021DBC85
+ add r0, r5, r0
+ ldrb r2, [r2, r6]
+ mov r1, #6
+ bl MOD73_021D9FC0
+ ldrb r2, [r4, #0xd]
+ ldr r0, _021D8234 ; =0x000005A4
+ mov r1, #7
+ add r3, r2, #0
+ ldr r2, _021D8240 ; =0x021DBC86
+ mul r3, r1
+ ldrb r2, [r2, r3]
+ add r0, r5, r0
+ bl MOD73_021D9FC0
+ ldrb r3, [r4, #0xd]
+ ldr r0, _021D8234 ; =0x000005A4
+ mov r2, #7
+ add r6, r3, #0
+ mul r6, r2
+ ldr r2, _021D8244 ; =0x021DBC87
+ add r0, r5, r0
+ ldrb r2, [r2, r6]
+ mov r1, #0
+ bl MOD73_021D9FC0
+ ldrb r3, [r4, #0xd]
+ ldr r0, _021D8234 ; =0x000005A4
+ mov r2, #7
+ add r6, r3, #0
+ mul r6, r2
+ ldr r2, _021D8248 ; =0x021DBC88
+ add r0, r5, r0
+ ldrb r2, [r2, r6]
+ mov r1, #1
+ bl MOD73_021D9FC0
+ ldrb r3, [r4, #0xd]
+ ldr r0, _021D8234 ; =0x000005A4
+ mov r2, #7
+ add r6, r3, #0
+ mul r6, r2
+ ldr r2, _021D824C ; =0x021DBC89
+ add r0, r5, r0
+ ldrb r2, [r2, r6]
+ mov r1, #2
+ bl MOD73_021D9FC0
+ ldrb r1, [r4, #0xd]
+ mov r0, #7
+ add r2, r1, #0
+ mul r2, r0
+ ldr r0, _021D8250 ; =0x021DBC8A
+ ldrb r1, [r0, r2]
+ cmp r1, #8
+ beq _021D822E
+ ldrb r2, [r4, #0x10]
+ ldr r0, _021D8234 ; =0x000005A4
+ cmp r2, #0
+ beq _021D8226
+ add r0, r5, r0
+ bl MOD73_021DA01C
+ pop {r4, r5, r6, pc}
+_021D8226:
+ add r0, r5, r0
+ mov r2, #0
+ bl MOD73_021D9FC0
+_021D822E:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D8230: .word 0x000014C4
+_021D8234: .word 0x000005A4
+_021D8238: .word 0x021DBC84
+_021D823C: .word 0x021DBC85
+_021D8240: .word 0x021DBC86
+_021D8244: .word 0x021DBC87
+_021D8248: .word 0x021DBC88
+_021D824C: .word 0x021DBC89
+_021D8250: .word 0x021DBC8A
+ thumb_func_end MOD73_021D817C
+
+ thumb_func_start MOD73_021D8254
+MOD73_021D8254: ; 0x021D8254
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D82F0 ; =0x000014C4
+ add r1, r4, r0
+ ldrb r2, [r1, #0x11]
+ ldrb r0, [r1, #0xc]
+ cmp r2, r0
+ beq _021D8274
+ ldrh r0, [r1, #0xa]
+ cmp r0, #0
+ beq _021D8274
+ mov r0, #0xb
+ lsl r0, r0, #6
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _021D8292
+_021D8274:
+ ldr r0, _021D82F4 ; =0x00000A84
+ mov r1, #1
+ add r0, r4, r0
+ bl MOD73_021DAEAC
+ ldr r0, _021D82F4 ; =0x00000A84
+ mov r1, #3
+ add r0, r4, r0
+ bl MOD73_021DAEAC
+ mov r0, #0xb1
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r4, pc}
+_021D8292:
+ cmp r2, #0
+ bne _021D82C2
+ add r0, r0, #4
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ beq _021D82EC
+ ldr r0, _021D82F4 ; =0x00000A84
+ mov r1, #1
+ add r0, r4, r0
+ bl MOD73_021DAE7C
+ mov r0, #0xb1
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r0, _021D82F4 ; =0x00000A84
+ mov r1, #3
+ add r0, r4, r0
+ bl MOD73_021DAEAC
+ ldr r0, _021D82F8 ; =0x000006C1
+ bl FUN_020054C8
+ pop {r4, pc}
+_021D82C2:
+ add r0, r0, #4
+ ldr r0, [r4, r0]
+ cmp r0, #2
+ beq _021D82EC
+ ldr r0, _021D82F4 ; =0x00000A84
+ mov r1, #3
+ add r0, r4, r0
+ bl MOD73_021DAE7C
+ mov r0, #0xb1
+ mov r1, #2
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r0, _021D82F4 ; =0x00000A84
+ mov r1, #1
+ add r0, r4, r0
+ bl MOD73_021DAEAC
+ ldr r0, _021D82F8 ; =0x000006C1
+ bl FUN_020054C8
+_021D82EC:
+ pop {r4, pc}
+ nop
+_021D82F0: .word 0x000014C4
+_021D82F4: .word 0x00000A84
+_021D82F8: .word 0x000006C1
+ thumb_func_end MOD73_021D8254
+
+ thumb_func_start MOD73_021D82FC
+MOD73_021D82FC: ; 0x021D82FC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D83C0 ; =0x000014C4
+ mov r1, #0xb1
+ lsl r1, r1, #2
+ add r4, r5, r0
+ ldr r0, [r5, r1]
+ cmp r0, #0
+ bne _021D8316
+ sub r0, r1, #4
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D832C
+_021D8316:
+ ldr r0, _021D83C4 ; =0x0000063C
+ add r0, r5, r0
+ bl MOD73_021DA4AC
+ mov r0, #0xb3
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ sub r0, r0, #4
+ str r1, [r5, r0]
+ pop {r3, r4, r5, pc}
+_021D832C:
+ add r1, #8
+ ldr r0, [r5, r1]
+ cmp r0, #0
+ bne _021D8360
+ ldrb r0, [r4, #0x13]
+ cmp r0, #0
+ beq _021D8374
+ ldr r0, _021D83C4 ; =0x0000063C
+ add r0, r5, r0
+ bl MOD73_021DA4AC
+ ldr r0, _021D83C4 ; =0x0000063C
+ ldrb r2, [r4, #0xd]
+ ldr r1, _021D83C8 ; =0x021DBC58
+ add r0, r5, r0
+ ldrb r1, [r1, r2]
+ bl MOD73_021DA434
+ mov r0, #0xb3
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r1, #0
+ sub r0, r0, #4
+ str r1, [r5, r0]
+ b _021D8374
+_021D8360:
+ ldr r0, _021D83C4 ; =0x0000063C
+ add r0, r5, r0
+ bl MOD73_021DA49C
+ cmp r0, #0
+ beq _021D8374
+ mov r0, #0xb3
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_021D8374:
+ mov r0, #0xb2
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ bne _021D83AA
+ ldrb r0, [r4, #0x12]
+ cmp r0, #0
+ beq _021D83BE
+ ldr r0, _021D83C4 ; =0x0000063C
+ add r0, r5, r0
+ bl MOD73_021DA4AC
+ ldr r0, _021D83C4 ; =0x0000063C
+ ldrb r2, [r4, #0xd]
+ ldr r1, _021D83CC ; =0x021DBC5C
+ add r0, r5, r0
+ ldrb r1, [r1, r2]
+ bl MOD73_021DA434
+ mov r0, #0xb2
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r1, #0
+ add r0, r0, #4
+ str r1, [r5, r0]
+ pop {r3, r4, r5, pc}
+_021D83AA:
+ ldr r0, _021D83C4 ; =0x0000063C
+ add r0, r5, r0
+ bl MOD73_021DA49C
+ cmp r0, #0
+ beq _021D83BE
+ mov r0, #0xb2
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_021D83BE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D83C0: .word 0x000014C4
+_021D83C4: .word 0x0000063C
+_021D83C8: .word 0x021DBC58
+_021D83CC: .word 0x021DBC5C
+ thumb_func_end MOD73_021D82FC
+
+ thumb_func_start MOD73_021D83D0
+MOD73_021D83D0: ; 0x021D83D0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D844C ; =0x000014C4
+ add r4, r5, r0
+ ldrb r0, [r4, #0x13]
+ cmp r0, #0
+ beq _021D83FC
+ mov r0, #0x67
+ lsl r0, r0, #4
+ ldrb r1, [r4, #0xd]
+ add r0, r5, r0
+ mov r2, #2
+ bl MOD73_021DA8BC
+ ldrb r0, [r4, #0xd]
+ lsl r1, r0, #2
+ ldr r0, _021D8450 ; =0x021DBC60
+ ldr r0, [r0, r1]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_020054C8
+_021D83FC:
+ ldrb r0, [r4, #0x12]
+ cmp r0, #1
+ bne _021D8422
+ mov r0, #0x67
+ lsl r0, r0, #4
+ ldrb r1, [r4, #0xd]
+ add r0, r5, r0
+ mov r2, #1
+ bl MOD73_021DA8BC
+ ldrb r0, [r4, #0xd]
+ lsl r1, r0, #2
+ ldr r0, _021D8454 ; =0x021DBC6C
+ ldr r0, [r0, r1]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_020054C8
+ b _021D8434
+_021D8422:
+ cmp r0, #2
+ bne _021D8434
+ mov r0, #0x67
+ lsl r0, r0, #4
+ ldrb r1, [r4, #0xd]
+ add r0, r5, r0
+ mov r2, #0
+ bl MOD73_021DA8BC
+_021D8434:
+ ldrh r0, [r4, #0xa]
+ ldrb r1, [r4, #0xd]
+ bl MOD73_021DB62C
+ cmp r0, #0
+ bne _021D844A
+ mov r0, #0x67
+ lsl r0, r0, #4
+ add r0, r5, r0
+ bl MOD73_021DAAA8
+_021D844A:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D844C: .word 0x000014C4
+_021D8450: .word 0x021DBC60
+_021D8454: .word 0x021DBC6C
+ thumb_func_end MOD73_021D83D0
+
+ thumb_func_start MOD73_021D8458
+MOD73_021D8458: ; 0x021D8458
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D84F0 ; =0x000014C4
+ add r1, r4, r0
+ ldrb r0, [r1, #0xe]
+ cmp r0, #0
+ beq _021D84B0
+ ldrb r0, [r1, #0x11]
+ cmp r0, #0
+ ldr r0, _021D84F4 ; =0x00000A84
+ bne _021D8490
+ add r0, r4, r0
+ mov r1, #0
+ bl MOD73_021DAE7C
+ ldr r0, _021D84F4 ; =0x00000A84
+ mov r1, #2
+ add r0, r4, r0
+ bl MOD73_021DAEAC
+ ldr r0, _021D84F8 ; =0x000006C1
+ bl FUN_020054C8
+ mov r0, #0xb
+ mov r1, #1
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ b _021D84B0
+_021D8490:
+ add r0, r4, r0
+ mov r1, #2
+ bl MOD73_021DAE7C
+ ldr r0, _021D84F4 ; =0x00000A84
+ mov r1, #0
+ add r0, r4, r0
+ bl MOD73_021DAEAC
+ ldr r0, _021D84F8 ; =0x000006C1
+ bl FUN_020054C8
+ mov r0, #0xb
+ mov r1, #2
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+_021D84B0:
+ mov r0, #0xb
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _021D84D2
+ ldr r0, _021D84F4 ; =0x00000A84
+ mov r1, #0
+ add r0, r4, r0
+ bl MOD73_021DAECC
+ cmp r0, #1
+ bne _021D84EC
+ mov r0, #0xb
+ mov r1, #0
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ pop {r4, pc}
+_021D84D2:
+ cmp r0, #2
+ bne _021D84EC
+ ldr r0, _021D84F4 ; =0x00000A84
+ mov r1, #2
+ add r0, r4, r0
+ bl MOD73_021DAECC
+ cmp r0, #1
+ bne _021D84EC
+ mov r0, #0xb
+ mov r1, #0
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+_021D84EC:
+ pop {r4, pc}
+ nop
+_021D84F0: .word 0x000014C4
+_021D84F4: .word 0x00000A84
+_021D84F8: .word 0x000006C1
+ thumb_func_end MOD73_021D8458
+
+ thumb_func_start MOD73_021D84FC
+MOD73_021D84FC: ; 0x021D84FC
+ push {r3, lr}
+ ldr r3, _021D8520 ; =0x00001430
+ add r2, r3, #1
+ ldrb r1, [r0, r3]
+ add r3, #0xa3
+ ldrb r3, [r0, r3]
+ ldrb r2, [r0, r2]
+ cmp r3, #1
+ bne _021D851C
+ ldr r3, _021D8524 ; =0x00000B04
+ add r0, r0, r3
+ bl MOD73_021DB020
+ ldr r0, _021D8528 ; =0x000006BF
+ bl FUN_020054C8
+_021D851C:
+ pop {r3, pc}
+ nop
+_021D8520: .word 0x00001430
+_021D8524: .word 0x00000B04
+_021D8528: .word 0x000006BF
+ thumb_func_end MOD73_021D84FC
+
+ thumb_func_start MOD73_021D852C
+MOD73_021D852C: ; 0x021D852C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02027E5C
+ ldr r1, _021D8560 ; =0x0000152C
+ str r0, [r4, r1]
+ ldr r0, _021D8564 ; =0x00001424
+ ldr r0, [r4, r0]
+ bl MOD73_021D910C
+ ldr r1, _021D8568 ; =0x00001570
+ mov r5, #0
+ strb r0, [r4, r1]
+ add r0, r1, #0
+ mov r3, #0x80
+ mov r2, #0x60
+ sub r0, #0xb4
+ sub r1, #0xb3
+_021D8552:
+ strb r3, [r4, r0]
+ strb r2, [r4, r1]
+ add r5, r5, #1
+ add r4, #0x1c
+ cmp r5, #4
+ blt _021D8552
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8560: .word 0x0000152C
+_021D8564: .word 0x00001424
+_021D8568: .word 0x00001570
+ thumb_func_end MOD73_021D852C
+
+ thumb_func_start MOD73_021D856C
+MOD73_021D856C: ; 0x021D856C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D858C ; =0x0000152C
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D857C
+ bl ErrorHandling
+_021D857C:
+ ldr r0, _021D858C ; =0x0000152C
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _021D858C ; =0x0000152C
+ mov r1, #0
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021D858C: .word 0x0000152C
+ thumb_func_end MOD73_021D856C
+
+ thumb_func_start MOD73_021D8590
+MOD73_021D8590: ; 0x021D8590
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x10]
+ add r7, r1, #0
+ ldr r0, [r0, #0xc]
+ add r6, r2, #0
+ bl FUN_02022504
+ mov r4, #0
+ str r0, [sp]
+ cmp r6, #0
+ ble _021D85CA
+_021D85AE:
+ ldr r0, [r5, #0x10]
+ add r1, r7, #0
+ ldr r0, [r0, #8]
+ bl FUN_02028094
+ ldr r1, _021D85E0 ; =0x0000FFFF
+ cmp r0, r1
+ bne _021D85C4
+ mov r0, #0
+ str r0, [sp, #4]
+ b _021D85CA
+_021D85C4:
+ add r4, r4, #1
+ cmp r4, r6
+ blt _021D85AE
+_021D85CA:
+ add r0, r7, #0
+ mov r1, #0
+ bl FUN_02027E94
+ add r1, r0, #0
+ ldr r0, [sp]
+ bl FUN_02060FAC
+ ldr r0, [sp, #4]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D85E0: .word 0x0000FFFF
+ thumb_func_end MOD73_021D8590
+
+ thumb_func_start MOD73_021D85E4
+MOD73_021D85E4: ; 0x021D85E4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D8628 ; =0x000014C4
+ add r4, r5, r0
+ ldrb r2, [r4, #0xc]
+ cmp r2, #0
+ bne _021D85FE
+ mov r0, #0xd5
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ ldrh r0, [r4, #8]
+ cmp r1, r0
+ bgt _021D860E
+_021D85FE:
+ cmp r2, #1
+ bne _021D861E
+ mov r0, #0xd5
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ ldrh r0, [r4, #8]
+ cmp r1, r0
+ bge _021D861E
+_021D860E:
+ ldrb r0, [r4, #0xd]
+ lsl r1, r0, #2
+ ldr r0, _021D862C ; =0x021DBC78
+ ldr r0, [r0, r1]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_020054C8
+_021D861E:
+ ldrh r1, [r4, #8]
+ mov r0, #0xd5
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8628: .word 0x000014C4
+_021D862C: .word 0x021DBC78
+ thumb_func_end MOD73_021D85E4
+
+ thumb_func_start MOD73_021D8630
+MOD73_021D8630: ; 0x021D8630
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ bl MOD73_021D8B4C
+ add r0, r4, #0
+ ldr r1, [r4]
+ add r0, #0x20
+ bl MOD73_021D88E4
+ add r0, r4, #0
+ bl MOD73_021D8A18
+ add r0, r4, #0
+ bl MOD73_021D89AC
+ add r0, r4, #0
+ bl MOD73_021D89DC
+ add r0, r4, #0
+ bl MOD73_021D8A84
+ ldr r0, _021D8738 ; =0x0000054C
+ ldr r1, [r4, #0x20]
+ ldr r2, [r4]
+ add r0, r4, r0
+ bl MOD73_021D9A68
+ ldr r0, _021D873C ; =0x0000063C
+ ldr r1, [r4, #0x20]
+ ldr r2, [r4]
+ add r0, r4, r0
+ bl MOD73_021DA254
+ mov r1, #0xaf
+ ldr r0, _021D8740 ; =0x000005A4
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ ldr r2, [r4]
+ add r0, r4, r0
+ bl MOD73_021D9EA8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x16
+ mov r2, #0x5a
+ lsl r0, r0, #6
+ add r1, r4, #0
+ lsl r2, r2, #2
+ ldr r3, [r4]
+ add r0, r4, r0
+ add r1, #0x2c
+ add r2, r4, r2
+ bl MOD73_021D9DCC
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _021D8744 ; =0x00000598
+ mov r2, #0x5a
+ add r1, r4, #0
+ lsl r2, r2, #2
+ ldr r3, [r4]
+ add r0, r4, r0
+ add r1, #0x2c
+ add r2, r4, r2
+ bl MOD73_021D9DCC
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _021D8748 ; =0x0000058C
+ mov r2, #0x5a
+ add r1, r4, #0
+ lsl r2, r2, #2
+ ldr r3, [r4]
+ add r0, r4, r0
+ add r1, #0x2c
+ add r2, r4, r2
+ bl MOD73_021D9DCC
+ ldr r0, _021D874C ; =0x0000061C
+ mov r2, #0x5a
+ add r1, r4, #0
+ lsl r2, r2, #2
+ ldr r3, [r4]
+ add r0, r4, r0
+ add r1, #0x2c
+ add r2, r4, r2
+ bl MOD73_021DA118
+ mov r0, #0x67
+ mov r2, #0x5a
+ lsl r0, r0, #4
+ add r1, r4, #0
+ lsl r2, r2, #2
+ ldr r3, [r4]
+ add r0, r4, r0
+ add r1, #0x2c
+ add r2, r4, r2
+ bl MOD73_021DA84C
+ ldr r0, _021D8750 ; =0x00000A84
+ add r1, r4, #0
+ ldr r2, [r4]
+ add r0, r4, r0
+ add r1, #0x2c
+ bl MOD73_021DADA0
+ ldr r0, _021D8754 ; =0x00000B04
+ mov r2, #0x5a
+ add r1, r4, #0
+ lsl r2, r2, #2
+ ldr r3, [r4]
+ add r0, r4, r0
+ add r1, #0x2c
+ add r2, r4, r2
+ bl MOD73_021DAFA8
+ add r0, r4, #0
+ bl MOD73_021D8BDC
+ ldr r0, _021D8758 ; =0x021C4918
+ mov r1, #1
+ strb r1, [r0, #5]
+ bl FUN_0201E7A0
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_021D8738: .word 0x0000054C
+_021D873C: .word 0x0000063C
+_021D8740: .word 0x000005A4
+_021D8744: .word 0x00000598
+_021D8748: .word 0x0000058C
+_021D874C: .word 0x0000061C
+_021D8750: .word 0x00000A84
+_021D8754: .word 0x00000B04
+_021D8758: .word 0x021C4918
+ thumb_func_end MOD73_021D8630
+
+ thumb_func_start MOD73_021D875C
+MOD73_021D875C: ; 0x021D875C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D87EC ; =0x0000063C
+ add r0, r4, r0
+ bl MOD73_021DA290
+ ldr r0, _021D87F0 ; =0x0000054C
+ add r0, r4, r0
+ bl MOD73_021D9A94
+ ldr r0, _021D87F4 ; =0x000005A4
+ add r0, r4, r0
+ bl MOD73_021D9F74
+ add r0, r4, #0
+ bl MOD73_021D8B2C
+ mov r0, #0x16
+ lsl r0, r0, #6
+ add r0, r4, r0
+ bl MOD73_021D9E08
+ ldr r0, _021D87F8 ; =0x0000058C
+ add r0, r4, r0
+ bl MOD73_021D9E08
+ ldr r0, _021D87FC ; =0x00000598
+ add r0, r4, r0
+ bl MOD73_021D9E08
+ ldr r0, _021D8800 ; =0x0000061C
+ add r0, r4, r0
+ bl MOD73_021DA178
+ mov r0, #0x67
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD73_021DA858
+ ldr r0, _021D8804 ; =0x00000A84
+ add r0, r4, r0
+ bl MOD73_021DAE24
+ ldr r0, _021D8808 ; =0x00000B04
+ add r0, r4, r0
+ bl MOD73_021DAFEC
+ add r0, r4, #0
+ add r0, #0x20
+ bl MOD73_021D8980
+ add r0, r4, #0
+ bl MOD73_021D89D0
+ add r0, r4, #0
+ bl MOD73_021D8A74
+ add r0, r4, #0
+ bl MOD73_021D8A08
+ add r0, r4, #0
+ bl MOD73_021D8BD0
+ add r0, r4, #0
+ bl MOD73_021D8D18
+ ldr r0, _021D880C ; =0x021C4918
+ mov r1, #0
+ strb r1, [r0, #5]
+ bl FUN_0201E7A0
+ pop {r4, pc}
+ .align 2, 0
+_021D87EC: .word 0x0000063C
+_021D87F0: .word 0x0000054C
+_021D87F4: .word 0x000005A4
+_021D87F8: .word 0x0000058C
+_021D87FC: .word 0x00000598
+_021D8800: .word 0x0000061C
+_021D8804: .word 0x00000A84
+_021D8808: .word 0x00000B04
+_021D880C: .word 0x021C4918
+ thumb_func_end MOD73_021D875C
+
+ thumb_func_start MOD73_021D8810
+MOD73_021D8810: ; 0x021D8810
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r1, _021D883C ; =0x00001498
+ str r0, [sp]
+ mov r0, #0xd7
+ mov r3, #0x5a
+ lsl r0, r0, #2
+ add r2, r4, #0
+ lsl r3, r3, #2
+ add r0, r4, r0
+ add r1, r4, r1
+ add r2, #0x2c
+ add r3, r4, r3
+ bl MOD73_021D96E4
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D883C: .word 0x00001498
+ thumb_func_end MOD73_021D8810
+
+ thumb_func_start MOD73_021D8840
+MOD73_021D8840: ; 0x021D8840
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r1, r4, #0
+ add r0, r4, r0
+ add r1, #0x2c
+ bl MOD73_021D97A4
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD73_021D8840
+
+ thumb_func_start MOD73_021D8858
+MOD73_021D8858: ; 0x021D8858
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ bl FUN_020222AC
+ mov r1, #0
+ mov r0, #0x11
+ add r2, r1, #0
+ bl FUN_020BB1C0
+ bl FUN_020BB394
+ bl FUN_020B02C8
+ mov r0, #0xaf
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D8882
+ bl FUN_02013D5C
+_021D8882:
+ mov r2, #1
+ mov r0, #0x12
+ add r1, sp, #0
+ str r2, [sp]
+ bl FUN_020BB1C0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_020222B4
+ mov r0, #0xae
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D88AA
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ beq _021D88AA
+ bl FUN_0201FDEC
+_021D88AA:
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D8858
+
+ thumb_func_start MOD73_021D88B0
+MOD73_021D88B0: ; 0x021D88B0
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02009F80
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ beq _021D88C2
+ bl FUN_0201AB60
+_021D88C2:
+ pop {r4, pc}
+ thumb_func_end MOD73_021D88B0
+
+ thumb_func_start MOD73_021D88C4
+MOD73_021D88C4: ; 0x021D88C4
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D88E0 ; =0x021DBD40
+ add r3, sp, #0
+ mov r2, #5
+_021D88CE:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D88CE
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D88E0: .word 0x021DBD40
+ thumb_func_end MOD73_021D88C4
+
+ thumb_func_start MOD73_021D88E4
+MOD73_021D88E4: ; 0x021D88E4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x88
+ str r1, [sp]
+ add r6, r0, #0
+ bl MOD73_021D88C4
+ ldr r0, [sp]
+ bl FUN_02016B94
+ add r3, sp, #8
+ ldr r4, _021D8974 ; =0x021DBD30
+ str r0, [r6]
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ mov r0, #0
+ mov r1, #2
+ bl FUN_020178BC
+ ldr r4, _021D8978 ; =0x021DBD68
+ add r3, sp, #0x18
+ mov r2, #0xe
+_021D8922:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D8922
+ ldr r1, _021D897C ; =0x021DBD0C
+ add r0, sp, #4
+ ldrb r2, [r1]
+ mov r7, #0
+ add r5, sp, #4
+ strb r2, [r0]
+ ldrb r2, [r1, #1]
+ add r4, sp, #0x18
+ strb r2, [r0, #1]
+ ldrb r2, [r1, #2]
+ ldrb r1, [r1, #3]
+ strb r2, [r0, #2]
+ strb r1, [r0, #3]
+_021D8944:
+ ldrb r1, [r5]
+ ldr r0, [r6]
+ add r2, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ ldrb r1, [r5]
+ ldr r0, [r6]
+ bl FUN_02018744
+ ldrb r0, [r5]
+ ldr r3, [sp]
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ add r7, r7, #1
+ add r4, #0x1c
+ add r5, r5, #1
+ cmp r7, #4
+ blt _021D8944
+ add sp, #0x88
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8974: .word 0x021DBD30
+_021D8978: .word 0x021DBD68
+_021D897C: .word 0x021DBD0C
+ thumb_func_end MOD73_021D88E4
+
+ thumb_func_start MOD73_021D8980
+MOD73_021D8980: ; 0x021D8980
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r1, #5
+ bl FUN_020178A0
+ ldr r0, [r4]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r4]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4]
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD73_021D8980
+
+ thumb_func_start MOD73_021D89AC
+MOD73_021D89AC: ; 0x021D89AC
+ push {r3, lr}
+ add r3, r0, #0
+ ldr r3, [r3]
+ add r0, #0x2c
+ mov r1, #0x48
+ mov r2, #0x10
+ bl MOD73_021D92EC
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D89AC
+
+ thumb_func_start MOD73_021D89D0
+MOD73_021D89D0: ; 0x021D89D0
+ ldr r3, _021D89D8 ; =MOD73_021D931C
+ add r0, #0x2c
+ bx r3
+ nop
+_021D89D8: .word MOD73_021D931C
+ thumb_func_end MOD73_021D89D0
+
+ thumb_func_start MOD73_021D89DC
+MOD73_021D89DC: ; 0x021D89DC
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ ldr r5, _021D8A04 ; =0x021DBD10
+ add r3, sp, #0
+ add r4, r0, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r4]
+ str r0, [sp, #0xc]
+ add r0, r2, #0
+ bl FUN_02013CD4
+ mov r1, #0xaf
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8A04: .word 0x021DBD10
+ thumb_func_end MOD73_021D89DC
+
+ thumb_func_start MOD73_021D8A08
+MOD73_021D8A08: ; 0x021D8A08
+ mov r1, #0xaf
+ lsl r1, r1, #2
+ ldr r3, _021D8A14 ; =0x02013D19
+ ldr r0, [r0, r1]
+ bx r3
+ nop
+_021D8A14: .word 0x02013D19
+ thumb_func_end MOD73_021D8A08
+
+ thumb_func_start MOD73_021D8A18
+MOD73_021D8A18: ; 0x021D8A18
+ push {r4, r5, lr}
+ sub sp, #0x24
+ add r4, r0, #0
+ 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]
+ ldr r2, [r4]
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ ldr r5, _021D8A6C ; =0x021DBD20
+ add r3, sp, #0x14
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r4]
+ ldr r1, _021D8A70 ; =0x00200010
+ str r0, [sp, #0x20]
+ add r0, r2, #0
+ mov r2, #0x10
+ bl FUN_0201D060
+ ldr r1, [r4]
+ mov r0, #0x20
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ add sp, #0x24
+ pop {r4, r5, pc}
+ nop
+_021D8A6C: .word 0x021DBD20
+_021D8A70: .word 0x00200010
+ thumb_func_end MOD73_021D8A18
+
+ thumb_func_start MOD73_021D8A74
+MOD73_021D8A74: ; 0x021D8A74
+ push {r3, lr}
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ pop {r3, pc}
+ thumb_func_end MOD73_021D8A74
+
+ thumb_func_start MOD73_021D8A84
+MOD73_021D8A84: ; 0x021D8A84
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ str r0, [sp, #0x18]
+ ldr r0, _021D8B28 ; =0x021DBDD8
+ mov r1, #0x5a
+ str r0, [sp, #0x20]
+ mov r0, #0xc
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x18]
+ lsl r1, r1, #2
+ add r0, r0, r1
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ mov r4, #0
+ str r0, [sp, #0x24]
+ add r0, #0x2c
+ mov r7, #0xd
+ mov r5, #0xe
+ str r0, [sp, #0x24]
+_021D8AAA:
+ cmp r4, #0
+ ble _021D8AE0
+ ldr r0, [sp, #0x20]
+ ldrb r0, [r0]
+ cmp r0, #8
+ bne _021D8AE0
+ str r5, [sp]
+ ldr r0, [sp, #0x28]
+ str r7, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x7d
+ lsl r0, r0, #4
+ add r0, r4, r0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x18]
+ mov r2, #0x7a
+ ldr r0, [r0]
+ add r3, r2, #0
+ str r0, [sp, #0x10]
+ ldr r6, [sp, #0x18]
+ add r3, #0xf2
+ ldr r0, [sp, #0x24]
+ ldr r1, [sp, #0x1c]
+ ldr r3, [r6, r3]
+ bl MOD73_021D942C
+ b _021D8B08
+_021D8AE0:
+ mov r0, #2
+ str r0, [sp]
+ str r5, [sp, #4]
+ ldr r0, [sp, #0x28]
+ str r7, [sp, #8]
+ str r0, [sp, #0xc]
+ mov r0, #0x7d
+ lsl r0, r0, #4
+ add r0, r4, r0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x18]
+ ldr r3, [sp, #0x20]
+ ldr r0, [r0]
+ ldr r1, [sp, #0x1c]
+ str r0, [sp, #0x14]
+ ldrb r3, [r3]
+ ldr r0, [sp, #0x24]
+ mov r2, #0x7a
+ bl MOD73_021D9340
+_021D8B08:
+ ldr r0, [sp, #0x20]
+ add r4, r4, #1
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x28]
+ add r7, r7, #3
+ add r0, r0, #3
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x1c]
+ add r5, r5, #3
+ add r0, #0x38
+ str r0, [sp, #0x1c]
+ cmp r4, #6
+ blt _021D8AAA
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8B28: .word 0x021DBDD8
+ thumb_func_end MOD73_021D8A84
+
+ thumb_func_start MOD73_021D8B2C
+MOD73_021D8B2C: ; 0x021D8B2C
+ push {r4, r5, r6, lr}
+ mov r1, #0x5a
+ lsl r1, r1, #2
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r0, r1
+ add r6, #0x2c
+_021D8B3A:
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD73_021D94F4
+ add r4, r4, #1
+ add r5, #0x38
+ cmp r4, #6
+ blt _021D8B3A
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD73_021D8B2C
+
+ thumb_func_start MOD73_021D8B4C
+MOD73_021D8B4C: ; 0x021D8B4C
+ push {r3, r4, lr}
+ sub sp, #4
+ bl FUN_020BB7F4
+ bl G3X_InitMtxStack
+ ldr r0, _021D8BB8 ; =0x04000060
+ ldr r2, _021D8BBC ; =0xFFFFCFFD
+ ldrh r1, [r0]
+ and r1, r2
+ strh r1, [r0]
+ ldrh r3, [r0]
+ add r1, r2, #2
+ and r3, r1
+ mov r1, #0x10
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r1, [r0]
+ ldr r3, _021D8BC0 ; =0x0000CFFB
+ and r1, r3
+ strh r1, [r0]
+ add r1, r2, #2
+ ldrh r4, [r0]
+ sub r3, #0x1c
+ lsr r2, r2, #0x11
+ and r4, r1
+ mov r1, #8
+ orr r1, r4
+ strh r1, [r0]
+ ldrh r1, [r0]
+ and r1, r3
+ strh r1, [r0]
+ mov r1, #0
+ ldr r0, _021D8BC4 ; =0x000043FF
+ mov r3, #0x3f
+ str r1, [sp]
+ bl G3X_SetClearColor
+ ldr r2, _021D8BC8 ; =0x04000540
+ mov r0, #2
+ ldr r1, _021D8BCC ; =0xBFFF0000
+ str r0, [r2]
+ str r1, [r2, #0x40]
+ mov r1, #1
+ bl FUN_020AEB70
+ mov r0, #2
+ lsl r0, r0, #0xe
+ mov r1, #1
+ bl FUN_020AEDF4
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D8BB8: .word 0x04000060
+_021D8BBC: .word 0xFFFFCFFD
+_021D8BC0: .word 0x0000CFFB
+_021D8BC4: .word 0x000043FF
+_021D8BC8: .word 0x04000540
+_021D8BCC: .word 0xBFFF0000
+ thumb_func_end MOD73_021D8B4C
+
+ thumb_func_start MOD73_021D8BD0
+MOD73_021D8BD0: ; 0x021D8BD0
+ push {r3, lr}
+ bl FUN_020AEAF4
+ bl FUN_020AEC60
+ pop {r3, pc}
+ thumb_func_end MOD73_021D8BD0
+
+ thumb_func_start MOD73_021D8BDC
+MOD73_021D8BDC: ; 0x021D8BDC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r2, _021D8CE0 ; =0x0000019D
+ ldr r3, [r5]
+ mov r0, #0
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ ldr r1, _021D8CE4 ; =0x00001574
+ str r0, [r5, r1]
+ ldr r2, [r5]
+ mov r0, #4
+ mov r1, #0x40
+ bl FUN_0200AA90
+ ldr r1, _021D8CE8 ; =0x00001578
+ str r0, [r5, r1]
+ ldr r1, [r5]
+ mov r0, #0x40
+ bl FUN_020219F4
+ ldr r1, _021D8CEC ; =0x0000157C
+ str r0, [r5, r1]
+ sub r1, #8
+ ldr r0, [r5, r1]
+ mov r1, #0
+ bl FUN_0200A914
+ mov r1, #0x56
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ sub r1, #0xc
+ ldr r0, [r5, r1]
+ mov r1, #1
+ bl FUN_0200A914
+ ldr r1, _021D8CF0 ; =0x00001584
+ str r0, [r5, r1]
+ sub r1, #0x10
+ ldr r0, [r5, r1]
+ mov r1, #2
+ bl FUN_0200A914
+ ldr r1, _021D8CF4 ; =0x00001588
+ str r0, [r5, r1]
+ sub r1, #0x14
+ ldr r0, [r5, r1]
+ mov r1, #0x14
+ bl FUN_0200A914
+ ldr r1, _021D8CF8 ; =0x0000158C
+ str r0, [r5, r1]
+ sub r1, #0x18
+ ldr r0, [r5, r1]
+ mov r1, #0x15
+ bl FUN_0200A914
+ ldr r1, _021D8CFC ; =0x00001590
+ str r0, [r5, r1]
+ sub r1, #0x1c
+ ldr r0, [r5, r1]
+ mov r1, #0x16
+ bl FUN_0200A914
+ ldr r1, _021D8D00 ; =0x00001594
+ str r0, [r5, r1]
+ sub r1, #0x20
+ ldr r0, [r5, r1]
+ mov r1, #0x17
+ bl FUN_0200A914
+ ldr r1, _021D8D04 ; =0x00001598
+ str r0, [r5, r1]
+ sub r1, #0x24
+ ldr r0, [r5, r1]
+ mov r1, #0x18
+ bl FUN_0200A914
+ ldr r1, _021D8D08 ; =0x0000159C
+ str r0, [r5, r1]
+ sub r1, #0x28
+ ldr r0, [r5, r1]
+ mov r1, #0x19
+ bl FUN_0200A914
+ ldr r1, _021D8D0C ; =0x000015A0
+ str r0, [r5, r1]
+ sub r1, #0x2c
+ ldr r0, [r5, r1]
+ mov r1, #8
+ bl FUN_0200A914
+ ldr r1, _021D8D10 ; =0x000015A4
+ str r0, [r5, r1]
+ sub r1, #0x30
+ ldr r0, [r5, r1]
+ mov r1, #9
+ bl FUN_0200A914
+ ldr r1, _021D8D14 ; =0x000015A8
+ mov r4, #0
+ str r0, [r5, r1]
+ add r6, r5, #0
+ add r7, r1, #4
+_021D8CAC:
+ ldr r0, _021D8CE4 ; =0x00001574
+ add r1, r4, #3
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ str r0, [r6, r7]
+ add r4, r4, #1
+ add r6, r6, #4
+ cmp r4, #5
+ blt _021D8CAC
+ mov r7, #0x57
+ mov r4, #0
+ add r6, r5, #0
+ lsl r7, r7, #6
+_021D8CC8:
+ ldr r0, _021D8CE4 ; =0x00001574
+ add r1, r4, #0
+ ldr r0, [r5, r0]
+ add r1, #0xa
+ bl FUN_0200A914
+ str r0, [r6, r7]
+ add r4, r4, #1
+ add r6, r6, #4
+ cmp r4, #0xa
+ blt _021D8CC8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8CE0: .word 0x0000019D
+_021D8CE4: .word 0x00001574
+_021D8CE8: .word 0x00001578
+_021D8CEC: .word 0x0000157C
+_021D8CF0: .word 0x00001584
+_021D8CF4: .word 0x00001588
+_021D8CF8: .word 0x0000158C
+_021D8CFC: .word 0x00001590
+_021D8D00: .word 0x00001594
+_021D8D04: .word 0x00001598
+_021D8D08: .word 0x0000159C
+_021D8D0C: .word 0x000015A0
+_021D8D10: .word 0x000015A4
+_021D8D14: .word 0x000015A8
+ thumb_func_end MOD73_021D8BDC
+
+ thumb_func_start MOD73_021D8D18
+MOD73_021D8D18: ; 0x021D8D18
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, _021D8DBC ; =0x000015A8
+ ldr r0, [r6, r0]
+ bl FUN_02021A20
+ ldr r0, _021D8DC0 ; =0x000015A4
+ ldr r0, [r6, r0]
+ bl FUN_02021A20
+ ldr r0, _021D8DC4 ; =0x00001594
+ ldr r0, [r6, r0]
+ bl FUN_02021A20
+ ldr r0, _021D8DC8 ; =0x00001590
+ ldr r0, [r6, r0]
+ bl FUN_02021A20
+ ldr r0, _021D8DCC ; =0x0000158C
+ ldr r0, [r6, r0]
+ bl FUN_02021A20
+ ldr r0, _021D8DD0 ; =0x00001588
+ ldr r0, [r6, r0]
+ bl FUN_02021A20
+ ldr r0, _021D8DD4 ; =0x00001584
+ ldr r0, [r6, r0]
+ bl FUN_02021A20
+ mov r0, #0x56
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ bl FUN_02021A20
+ ldr r0, _021D8DD8 ; =0x00001598
+ ldr r0, [r6, r0]
+ bl FUN_02021A20
+ ldr r0, _021D8DDC ; =0x0000159C
+ ldr r0, [r6, r0]
+ bl FUN_02021A20
+ ldr r0, _021D8DE0 ; =0x000015A0
+ ldr r0, [r6, r0]
+ bl FUN_02021A20
+ ldr r7, _021D8DE4 ; =0x000015AC
+ mov r4, #0
+ add r5, r6, #0
+_021D8D7C:
+ ldr r0, [r5, r7]
+ bl FUN_02021A20
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _021D8D7C
+ mov r7, #0x57
+ mov r5, #0
+ add r4, r6, #0
+ lsl r7, r7, #6
+_021D8D92:
+ ldr r0, [r4, r7]
+ bl FUN_02021A20
+ add r5, r5, #1
+ add r4, r4, #4
+ cmp r5, #0xa
+ blt _021D8D92
+ ldr r0, _021D8DE8 ; =0x0000157C
+ ldr r0, [r6, r0]
+ bl FUN_02021A20
+ ldr r0, _021D8DEC ; =0x00001578
+ ldr r0, [r6, r0]
+ bl FUN_0200AB18
+ ldr r0, _021D8DF0 ; =0x00001574
+ ldr r0, [r6, r0]
+ bl FUN_0200A8B8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8DBC: .word 0x000015A8
+_021D8DC0: .word 0x000015A4
+_021D8DC4: .word 0x00001594
+_021D8DC8: .word 0x00001590
+_021D8DCC: .word 0x0000158C
+_021D8DD0: .word 0x00001588
+_021D8DD4: .word 0x00001584
+_021D8DD8: .word 0x00001598
+_021D8DDC: .word 0x0000159C
+_021D8DE0: .word 0x000015A0
+_021D8DE4: .word 0x000015AC
+_021D8DE8: .word 0x0000157C
+_021D8DEC: .word 0x00001578
+_021D8DF0: .word 0x00001574
+ thumb_func_end MOD73_021D8D18
+
+ thumb_func_start MOD73_021D8DF4
+MOD73_021D8DF4: ; 0x021D8DF4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldr r0, _021D8E7C ; =0x00001428
+ add r4, r1, #0
+ ldr r1, [r7, r0]
+ cmp r1, #1
+ bne _021D8E0C
+ bl FUN_02030F20
+ ldr r1, _021D8E80 ; =0x00001420
+ str r0, [r7, r1]
+ b _021D8E12
+_021D8E0C:
+ mov r1, #1
+ sub r0, #8
+ str r1, [r7, r0]
+_021D8E12:
+ bl FUN_020842D0
+ add r5, r0, #0
+ bl FUN_020842D8
+ add r1, r0, #0
+ ldr r0, [r7]
+ ldr r3, _021D8E7C ; =0x00001428
+ str r0, [sp]
+ ldr r3, [r7, r3]
+ add r0, r5, #0
+ add r2, r7, #0
+ bl MOD73_021D9094
+ ldr r1, _021D8E84 ; =0x00001424
+ str r0, [r7, r1]
+ ldr r0, _021D8E88 ; =0x0000155C
+ mov r1, #4
+ add r0, r7, r0
+ add r2, r1, #0
+ bl Call_FillMemWithValue
+ ldr r0, _021D8E7C ; =0x00001428
+ ldr r0, [r7, r0]
+ cmp r0, #1
+ bne _021D8E70
+ mov r6, #0
+ add r4, r6, #0
+ add r5, r7, #0
+_021D8E4C:
+ add r0, r4, #0
+ bl FUN_0202DFA4
+ ldr r1, _021D8E8C ; =0x00001560
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D8E66
+ ldr r0, _021D8E88 ; =0x0000155C
+ add r1, r7, r6
+ strb r4, [r1, r0]
+ add r6, r6, #1
+_021D8E66:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D8E4C
+ pop {r3, r4, r5, r6, r7, pc}
+_021D8E70:
+ ldr r0, _021D8E88 ; =0x0000155C
+ mov r1, #0
+ strb r1, [r7, r0]
+ add r0, r0, #4
+ str r4, [r7, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8E7C: .word 0x00001428
+_021D8E80: .word 0x00001420
+_021D8E84: .word 0x00001424
+_021D8E88: .word 0x0000155C
+_021D8E8C: .word 0x00001560
+ thumb_func_end MOD73_021D8DF4
+
+ thumb_func_start MOD73_021D8E90
+MOD73_021D8E90: ; 0x021D8E90
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D8EA4 ; =0x00001424
+ ldr r0, [r4, r0]
+ bl MOD73_021D90F4
+ ldr r0, _021D8EA4 ; =0x00001424
+ mov r1, #0
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021D8EA4: .word 0x00001424
+ thumb_func_end MOD73_021D8E90
+
+ thumb_func_start MOD73_021D8EA8
+MOD73_021D8EA8: ; 0x021D8EA8
+ add r0, r3, #0
+ ldr r3, _021D8EB0 ; =MOD73_021D768C
+ mov r1, #3
+ bx r3
+ .align 2, 0
+_021D8EB0: .word MOD73_021D768C
+ thumb_func_end MOD73_021D8EA8
+
+ thumb_func_start MOD73_021D8EB4
+MOD73_021D8EB4: ; 0x021D8EB4
+ add r0, r3, #0
+ ldr r3, _021D8EBC ; =MOD73_021D768C
+ mov r1, #8
+ bx r3
+ .align 2, 0
+_021D8EBC: .word MOD73_021D768C
+ thumb_func_end MOD73_021D8EB4
+
+ thumb_func_start MOD73_021D8EC0
+MOD73_021D8EC0: ; 0x021D8EC0
+ push {r3, r4, r5, lr}
+ ldr r0, _021D8EF4 ; =0x00001498
+ add r5, r1, #0
+ add r4, r3, #0
+ add r1, r2, #0
+ add r0, r4, r0
+ add r2, r5, #0
+ bl memcpy
+ ldr r0, _021D8EF8 ; =0x000014A8
+ mov r1, #0xa
+ add r3, r4, r0
+ add r0, #0x1c
+ add r2, r4, r0
+_021D8EDC:
+ ldrh r0, [r3]
+ add r3, r3, #2
+ strh r0, [r2]
+ add r2, r2, #2
+ sub r1, r1, #1
+ bne _021D8EDC
+ add r0, r4, #0
+ mov r1, #5
+ bl MOD73_021D768C
+ pop {r3, r4, r5, pc}
+ nop
+_021D8EF4: .word 0x00001498
+_021D8EF8: .word 0x000014A8
+ thumb_func_end MOD73_021D8EC0
+
+ thumb_func_start MOD73_021D8EFC
+MOD73_021D8EFC: ; 0x021D8EFC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r0, #0
+ ldr r0, _021D8F7C ; =0x00001424
+ add r5, r3, #0
+ ldr r0, [r5, r0]
+ str r1, [sp]
+ str r2, [sp, #4]
+ bl MOD73_021D910C
+ cmp r0, #0
+ bne _021D8F76
+ mov r0, #0x55
+ lsl r0, r0, #6
+ lsl r4, r6, #2
+ add r7, r5, r0
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ add r0, r7, r4
+ bl memcpy
+ ldr r0, _021D8F80 ; =0x00001550
+ mov r2, #1
+ add r1, r5, r6
+ strb r2, [r1, r0]
+ ldr r1, [r7, r4]
+ add r2, r5, r4
+ sub r0, #0xf0
+ str r1, [r2, r0]
+ mov r0, #0
+ ldr r1, _021D8F80 ; =0x00001550
+ add r3, r0, #0
+_021D8F3C:
+ add r2, r5, r3
+ ldrb r2, [r2, r1]
+ cmp r2, #1
+ bne _021D8F46
+ add r0, r0, #1
+_021D8F46:
+ add r3, r3, #1
+ cmp r3, #4
+ blt _021D8F3C
+ ldr r1, _021D8F84 ; =0x00001420
+ ldr r2, [r5, r1]
+ cmp r0, r2
+ blt _021D8F76
+ mov r0, #0xba
+ lsl r0, r0, #2
+ add r1, #0x50
+ add r0, r5, r0
+ add r1, r5, r1
+ bl MOD73_021DB994
+ bl MOD73_021D9084
+ ldr r3, _021D8F88 ; =0x00001460
+ add r2, r0, #0
+ add r1, r5, r3
+ sub r3, #0x3c
+ ldr r3, [r5, r3]
+ mov r0, #0x18
+ bl MOD73_021D90D0
+_021D8F76:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8F7C: .word 0x00001424
+_021D8F80: .word 0x00001550
+_021D8F84: .word 0x00001420
+_021D8F88: .word 0x00001460
+ thumb_func_end MOD73_021D8EFC
+
+ thumb_func_start MOD73_021D8F8C
+MOD73_021D8F8C: ; 0x021D8F8C
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, _021D8FA4 ; =0x000014BC
+ add r3, r3, r1
+ mov r1, #0x1c
+ mul r1, r0
+ add r0, r3, r1
+ add r1, r2, #0
+ add r2, r4, #0
+ bl memcpy
+ pop {r4, pc}
+ .align 2, 0
+_021D8FA4: .word 0x000014BC
+ thumb_func_end MOD73_021D8F8C
+
+ thumb_func_start MOD73_021D8FA8
+MOD73_021D8FA8: ; 0x021D8FA8
+ push {r3, r4, r5, lr}
+ ldr r0, _021D8FC4 ; =0x00001484
+ add r5, r1, #0
+ add r4, r3, #0
+ add r1, r2, #0
+ add r0, r4, r0
+ add r2, r5, #0
+ bl memcpy
+ add r0, r4, #0
+ mov r1, #0xa
+ bl MOD73_021D768C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8FC4: .word 0x00001484
+ thumb_func_end MOD73_021D8FA8
+
+ thumb_func_start MOD73_021D8FC8
+MOD73_021D8FC8: ; 0x021D8FC8
+ push {r4, lr}
+ ldr r0, _021D8FDC ; =0x0000152C
+ add r4, r1, #0
+ ldr r0, [r3, r0]
+ add r1, r2, #0
+ add r2, r4, #0
+ bl memcpy
+ pop {r4, pc}
+ nop
+_021D8FDC: .word 0x0000152C
+ thumb_func_end MOD73_021D8FC8
+
+ thumb_func_start MOD73_021D8FE0
+MOD73_021D8FE0: ; 0x021D8FE0
+ push {r3, r4, r5, lr}
+ ldr r0, _021D8FFC ; =0x00001571
+ add r5, r1, #0
+ add r4, r3, #0
+ add r1, r2, #0
+ add r0, r4, r0
+ add r2, r5, #0
+ bl memcpy
+ add r0, r4, #0
+ mov r1, #0xc
+ bl MOD73_021D768C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8FFC: .word 0x00001571
+ thumb_func_end MOD73_021D8FE0
+
+ thumb_func_start MOD73_021D9000
+MOD73_021D9000: ; 0x021D9000
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _021D906C ; =0x00001424
+ add r4, r3, #0
+ ldr r0, [r4, r0]
+ add r6, r1, #0
+ add r7, r2, #0
+ bl MOD73_021D910C
+ cmp r0, #0
+ bne _021D906A
+ ldr r0, _021D9070 ; =0x00001554
+ add r1, r7, #0
+ add r0, r4, r0
+ add r0, r0, r5
+ add r2, r6, #0
+ bl memcpy
+ ldr r0, _021D9074 ; =0x00001558
+ add r1, r4, r5
+ mov r2, #1
+ strb r2, [r1, r0]
+ add r6, sp, #0
+ mov r3, #0
+ strb r2, [r6]
+ add r2, r3, #0
+ sub r7, r0, #4
+ add r5, r0, #0
+_021D9038:
+ add r1, r4, r2
+ ldrb r0, [r1, r5]
+ cmp r0, #1
+ bne _021D904A
+ ldrb r0, [r6]
+ ldrb r1, [r1, r7]
+ add r3, r3, #1
+ and r0, r1
+ strb r0, [r6]
+_021D904A:
+ add r2, r2, #1
+ cmp r2, #4
+ blt _021D9038
+ ldr r0, _021D9078 ; =0x00001420
+ ldr r0, [r4, r0]
+ cmp r3, r0
+ blt _021D906A
+ bl MOD73_021D9080
+ ldr r3, _021D906C ; =0x00001424
+ add r2, r0, #0
+ ldr r3, [r4, r3]
+ mov r0, #0x1d
+ add r1, sp, #0
+ bl MOD73_021D90D0
+_021D906A:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D906C: .word 0x00001424
+_021D9070: .word 0x00001554
+_021D9074: .word 0x00001558
+_021D9078: .word 0x00001420
+ thumb_func_end MOD73_021D9000
+
+ thumb_func_start MOD73_021D907C
+MOD73_021D907C: ; 0x021D907C
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD73_021D907C
+
+ thumb_func_start MOD73_021D9080
+MOD73_021D9080: ; 0x021D9080
+ mov r0, #1
+ bx lr
+ thumb_func_end MOD73_021D9080
+
+ thumb_func_start MOD73_021D9084
+MOD73_021D9084: ; 0x021D9084
+ mov r0, #0x24
+ bx lr
+ thumb_func_end MOD73_021D9084
+
+ thumb_func_start MOD73_021D9088
+MOD73_021D9088: ; 0x021D9088
+ mov r0, #4
+ bx lr
+ thumb_func_end MOD73_021D9088
+
+ thumb_func_start MOD73_021D908C
+MOD73_021D908C: ; 0x021D908C
+ mov r0, #0x1c
+ bx lr
+ thumb_func_end MOD73_021D908C
+
+ thumb_func_start MOD73_021D9090
+MOD73_021D9090: ; 0x021D9090
+ mov r0, #0x14
+ bx lr
+ thumb_func_end MOD73_021D9090
+
+ thumb_func_start MOD73_021D9094
+MOD73_021D9094: ; 0x021D9094
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ ldr r0, [sp, #0x18]
+ mov r1, #8
+ str r2, [sp]
+ add r5, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r0, #0
+ str r5, [r4]
+ str r0, [r4, #4]
+ cmp r5, #1
+ bne _021D90BE
+ ldr r2, [sp]
+ add r0, r6, #0
+ add r1, r7, #0
+ bl FUN_0202D8D0
+ b _021D90CC
+_021D90BE:
+ ldr r2, [sp]
+ ldr r3, [sp, #0x18]
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD73_021D9120
+ str r0, [r4, #4]
+_021D90CC:
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD73_021D9094
+
+ thumb_func_start MOD73_021D90D0
+MOD73_021D90D0: ; 0x021D90D0
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r3, #0
+ ldr r3, [r6]
+ add r5, r0, #0
+ add r4, r1, #0
+ add r7, r2, #0
+ cmp r3, #1
+ bne _021D90E6
+ bl FUN_02030ADC
+ pop {r3, r4, r5, r6, r7, pc}
+_021D90E6:
+ ldr r0, [r6, #4]
+ add r1, r5, #0
+ add r2, r4, #0
+ add r3, r7, #0
+ bl MOD73_021D91D4
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD73_021D90D0
+
+ thumb_func_start MOD73_021D90F4
+MOD73_021D90F4: ; 0x021D90F4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _021D9104
+ ldr r0, [r4, #4]
+ bl MOD73_021D91BC
+_021D9104:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD73_021D90F4
+
+ thumb_func_start MOD73_021D910C
+MOD73_021D910C: ; 0x021D910C
+ push {r3, lr}
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021D911A
+ bl FUN_02031190
+ pop {r3, pc}
+_021D911A:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D910C
+
+ thumb_func_start MOD73_021D9120
+MOD73_021D9120: ; 0x021D9120
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ mov r1, #0x1b
+ add r5, r0, #0
+ add r0, r3, #0
+ lsl r1, r1, #4
+ add r7, r2, #0
+ bl FUN_02016998
+ mov r2, #0x1b
+ mov r1, #0
+ lsl r2, r2, #4
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r1, #0x1a
+ lsl r1, r1, #4
+ str r5, [r4, r1]
+ add r0, r1, #4
+ str r6, [r4, r0]
+ add r1, #8
+ str r7, [r4, r1]
+ ldr r0, _021D9160 ; =MOD73_021D9168
+ ldr r2, _021D9164 ; =0x00001388
+ add r1, r4, #0
+ bl FUN_0200CA98
+ mov r1, #0x6b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9160: .word MOD73_021D9168
+_021D9164: .word 0x00001388
+ thumb_func_end MOD73_021D9120
+
+ thumb_func_start MOD73_021D9168
+MOD73_021D9168: ; 0x021D9168
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r1, #0
+ mov r0, #0
+ str r0, [sp]
+ add r6, r7, #0
+_021D9174:
+ ldr r0, [r6]
+ cmp r0, #1
+ bne _021D91AA
+ mov r4, #0x1a
+ lsl r4, r4, #4
+ ldr r4, [r7, r4]
+ mov r3, #0x6a
+ mov ip, r4
+ ldr r4, [r6, #4]
+ mov r5, #0xc
+ mul r5, r4
+ str r5, [sp, #4]
+ lsl r3, r3, #2
+ add r2, r6, #0
+ ldr r4, [sp, #4]
+ mov r5, ip
+ ldr r1, [r6, #0x30]
+ ldr r3, [r7, r3]
+ ldr r4, [r5, r4]
+ mov r0, #0
+ add r2, #8
+ blx r4
+ add r0, r6, #0
+ mov r1, #0
+ mov r2, #0x34
+ bl Call_FillMemWithValue
+_021D91AA:
+ ldr r0, [sp]
+ add r6, #0x34
+ add r0, r0, #1
+ str r0, [sp]
+ cmp r0, #8
+ blt _021D9174
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9168
+
+ thumb_func_start MOD73_021D91BC
+MOD73_021D91BC: ; 0x021D91BC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x6b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D91BC
+
+ thumb_func_start MOD73_021D91D4
+MOD73_021D91D4: ; 0x021D91D4
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r4, #0
+ str r2, [sp]
+ add r7, r1, #0
+ add r5, r3, #0
+ add r0, r4, #0
+ add r2, r6, #0
+_021D91E4:
+ ldr r1, [r2]
+ cmp r1, #0
+ bne _021D91F2
+ mov r1, #0x34
+ mul r1, r0
+ add r4, r6, r1
+ b _021D91FA
+_021D91F2:
+ add r0, r0, #1
+ add r2, #0x34
+ cmp r0, #8
+ blt _021D91E4
+_021D91FA:
+ cmp r4, #0
+ bne _021D9202
+ bl ErrorHandling
+_021D9202:
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ add r1, r7, #0
+ ldr r2, [r6, r0]
+ sub r1, #0x16
+ mov r0, #0xc
+ mul r0, r1
+ add r0, r2, r0
+ ldr r0, [r0, #4]
+ blx r0
+ cmp r0, r5
+ beq _021D921E
+ bl ErrorHandling
+_021D921E:
+ cmp r5, #0x26
+ blt _021D9226
+ bl ErrorHandling
+_021D9226:
+ sub r7, #0x16
+ str r7, [r4, #4]
+ cmp r5, #0
+ ble _021D923A
+ add r0, r4, #0
+ ldr r1, [sp]
+ add r0, #8
+ add r2, r5, #0
+ bl memcpy
+_021D923A:
+ str r5, [r4, #0x30]
+ mov r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D91D4
+
+ thumb_func_start MOD73_021D9244
+MOD73_021D9244: ; 0x021D9244
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r2, #0
+ mov r2, #0
+ bl FUN_02002E14
+ lsr r0, r0, #1
+ sub r0, r4, r0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9244
+
+ thumb_func_start MOD73_021D9258
+MOD73_021D9258: ; 0x021D9258
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ str r2, [sp]
+ mov r0, #0x7a
+ mov r2, #0
+ add r3, sp, #4
+ bl FUN_02006BB0
+ add r4, r0, #0
+ ldr r0, [sp, #4]
+ str r5, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, sp, #8
+ bl FUN_02013D98
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9258
+
+ thumb_func_start MOD73_021D9288
+MOD73_021D9288: ; 0x021D9288
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r3, r2, #0
+ mov r0, #0x7a
+ add r2, sp, #0
+ bl FUN_02006C08
+ add r4, r0, #0
+ ldr r0, [sp]
+ str r5, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r0, sp, #4
+ bl FUN_02013E14
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD73_021D9288
+
+ thumb_func_start MOD73_021D92B8
+MOD73_021D92B8: ; 0x021D92B8
+ push {r4, lr}
+ sub sp, #0x20
+ str r0, [sp]
+ str r1, [sp, #4]
+ str r2, [sp, #8]
+ add r0, sp, #0
+ ldr r1, [sp, #0x28]
+ strh r3, [r0, #0xc]
+ strh r1, [r0, #0xe]
+ mov r2, #0
+ strh r2, [r0, #0x10]
+ mov r1, #0x1f
+ str r1, [sp, #0x14]
+ ldr r1, [sp, #0x2c]
+ str r1, [sp, #0x18]
+ strh r2, [r0, #0x1c]
+ add r0, sp, #0
+ bl FUN_02013E84
+ mov r1, #0
+ add r4, r0, #0
+ bl FUN_02013EB0
+ add r0, r4, #0
+ add sp, #0x20
+ pop {r4, pc}
+ thumb_func_end MOD73_021D92B8
+
+ thumb_func_start MOD73_021D92EC
+MOD73_021D92EC: ; 0x021D92EC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ add r6, r3, #0
+ add r7, r2, #0
+ add r1, r5, #4
+ add r2, r6, #0
+ bl FUN_02008C9C
+ str r0, [r5]
+ mov r4, #0
+_021D9302:
+ add r0, r7, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_02008DEC
+ mov r1, #0x4b
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D9302
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD73_021D92EC
+
+ thumb_func_start MOD73_021D931C
+MOD73_021D931C: ; 0x021D931C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ bl FUN_0201FD58
+ mov r4, #0
+ mov r6, #0x4b
+ str r4, [r5]
+ lsl r6, r6, #2
+_021D932E:
+ ldr r0, [r5, r6]
+ bl FUN_02008E2C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D932E
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D931C
+
+ thumb_func_start MOD73_021D9340
+MOD73_021D9340: ; 0x021D9340
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ ldr r6, [sp, #0x58]
+ add r5, r0, #0
+ ldr r7, [sp, #0x5c]
+ str r6, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r7, [sp, #8]
+ str r0, [sp, #0xc]
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ add r4, r1, #0
+ str r3, [sp, #0x30]
+ str r2, [sp, #0x2c]
+ add r1, r2, #0
+ ldr r0, [r5, r0]
+ ldr r2, [sp, #0x4c]
+ mov r3, #0
+ bl FUN_02008F90
+ str r0, [r4]
+ str r6, [sp]
+ mov r1, #1
+ ldr r0, [sp, #0x48]
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r7, [sp, #0xc]
+ mov r0, #0x13
+ str r1, [sp, #0x10]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ ldr r1, [sp, #0x2c]
+ ldr r2, [sp, #0x30]
+ mov r3, #0
+ bl FUN_0200904C
+ str r0, [r4, #4]
+ mov r3, #0
+ str r3, [r4, #0x10]
+ str r6, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x4d
+ str r7, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [sp, #0x2c]
+ ldr r2, [sp, #0x50]
+ bl FUN_020090AC
+ str r0, [r4, #8]
+ str r6, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x4e
+ str r7, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [sp, #0x2c]
+ ldr r2, [sp, #0x54]
+ mov r3, #0
+ bl FUN_020090AC
+ str r0, [r4, #0xc]
+ ldr r0, [r4]
+ bl FUN_02009B78
+ cmp r0, #0
+ bne _021D93D0
+ bl ErrorHandling
+_021D93D0:
+ ldr r0, [r4]
+ bl FUN_02009474
+ ldr r0, [r4, #4]
+ bl FUN_02009D68
+ cmp r0, #0
+ bne _021D93E4
+ bl ErrorHandling
+_021D93E4:
+ ldr r0, [r4, #4]
+ bl FUN_02009474
+ mov r0, #0
+ mov r2, #0x4b
+ str r6, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ lsl r2, r2, #2
+ ldr r1, [r5, r2]
+ add r4, #0x14
+ 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]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl FUN_02008AA4
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD73_021D9340
+
+ thumb_func_start MOD73_021D942C
+MOD73_021D942C: ; 0x021D942C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ ldr r6, [sp, #0x5c]
+ add r5, r0, #0
+ ldr r7, [sp, #0x60]
+ str r6, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r7, [sp, #8]
+ str r0, [sp, #0xc]
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ add r4, r1, #0
+ str r3, [sp, #0x30]
+ str r2, [sp, #0x2c]
+ add r1, r2, #0
+ ldr r0, [r5, r0]
+ ldr r2, [sp, #0x50]
+ mov r3, #0
+ bl FUN_02008F90
+ str r0, [r4]
+ ldr r0, [sp, #0x30]
+ str r0, [r4, #4]
+ mov r0, #1
+ str r0, [r4, #0x10]
+ ldr r0, [sp, #0x30]
+ bl FUN_02009530
+ str r0, [sp, #0x34]
+ str r6, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x4d
+ str r7, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [sp, #0x2c]
+ ldr r2, [sp, #0x54]
+ mov r3, #0
+ bl FUN_020090AC
+ str r0, [r4, #8]
+ str r6, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x4e
+ str r7, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [sp, #0x2c]
+ ldr r2, [sp, #0x58]
+ mov r3, #0
+ bl FUN_020090AC
+ str r0, [r4, #0xc]
+ ldr r0, [r4]
+ bl FUN_02009B78
+ cmp r0, #0
+ bne _021D94AA
+ bl ErrorHandling
+_021D94AA:
+ ldr r0, [r4]
+ bl FUN_02009474
+ mov r0, #0
+ mov r2, #0x4b
+ str r6, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ lsl r2, r2, #2
+ ldr r1, [r5, r2]
+ add r4, #0x14
+ 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]
+ ldr r2, [sp, #0x34]
+ str r1, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl FUN_02008AA4
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D942C
+
+ thumb_func_start MOD73_021D94F4
+MOD73_021D94F4: ; 0x021D94F4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r5, r0, #0
+ ldr r0, [r7]
+ bl FUN_02009C0C
+ ldr r0, [r7, #0x10]
+ cmp r0, #0
+ bne _021D950C
+ ldr r0, [r7, #4]
+ bl FUN_02009E04
+_021D950C:
+ mov r6, #0
+ add r4, r7, #0
+_021D9510:
+ cmp r6, #1
+ beq _021D9522
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r4]
+ bl FUN_02009490
+ b _021D9534
+_021D9522:
+ ldr r0, [r7, #0x10]
+ cmp r0, #0
+ bne _021D9534
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r4]
+ bl FUN_02009490
+_021D9534:
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r6, #4
+ blt _021D9510
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD73_021D94F4
+
+ thumb_func_start MOD73_021D9540
+MOD73_021D9540: ; 0x021D9540
+ push {r4, lr}
+ sub sp, #0x20
+ ldr r0, [r0]
+ add r1, #0x14
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ str r1, [sp, #4]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x2c]
+ str r2, [sp, #8]
+ str r0, [sp, #0x14]
+ mov r0, #1
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x30]
+ str r3, [sp, #0xc]
+ str r0, [sp, #0x1c]
+ add r0, sp, #0
+ bl FUN_0201FF84
+ add r4, r0, #0
+ bne _021D956E
+ bl ErrorHandling
+_021D956E:
+ add r0, r4, #0
+ add sp, #0x20
+ pop {r4, pc}
+ thumb_func_end MOD73_021D9540
+
+ thumb_func_start MOD73_021D9574
+MOD73_021D9574: ; 0x021D9574
+ str r1, [r0]
+ str r1, [r0, #4]
+ sub r1, r2, r1
+ str r1, [r0, #8]
+ str r3, [r0, #0x10]
+ mov r1, #0
+ str r1, [r0, #0xc]
+ bx lr
+ thumb_func_end MOD73_021D9574
+
+ thumb_func_start MOD73_021D9584
+MOD73_021D9584: ; 0x021D9584
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r2, [r4, #0xc]
+ ldr r0, [r4, #8]
+ lsl r2, r2, #0xc
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ ldr r1, [r4, #0x10]
+ lsl r1, r1, #0xc
+ bl FX_Div
+ ldr r1, [r4, #4]
+ add r0, r0, r1
+ str r0, [r4]
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ add r0, r0, #1
+ cmp r0, r1
+ bgt _021D95C4
+ str r0, [r4, #0xc]
+ mov r0, #0
+ pop {r4, pc}
+_021D95C4:
+ str r1, [r4, #0xc]
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9584
+
+ thumb_func_start MOD73_021D95CC
+MOD73_021D95CC: ; 0x021D95CC
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r4, [sp, #0x18]
+ add r5, r0, #0
+ add r7, r2, #0
+ add r0, r3, #0
+ add r6, r1, #0
+ lsl r2, r4, #0xc
+ str r3, [sp]
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ add r2, r0, #0
+ sub r0, r7, r6
+ mov r7, #2
+ mov r3, #0
+ lsl r7, r7, #0xa
+ add r2, r2, r7
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r1
+ sub r2, r0, r2
+ asr r1, r2, #0x1f
+ lsr r0, r2, #0x13
+ lsl r1, r1, #0xd
+ orr r1, r0
+ lsl r0, r2, #0xd
+ add r0, r0, r7
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ add r1, r4, #0
+ mul r1, r4
+ lsl r1, r1, #0xc
+ bl FX_Div
+ str r6, [r5]
+ ldr r1, [sp]
+ str r6, [r5, #4]
+ str r1, [r5, #8]
+ str r0, [r5, #0xc]
+ mov r0, #0
+ str r0, [r5, #0x10]
+ str r4, [r5, #0x14]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D95CC
+
+ thumb_func_start MOD73_021D962C
+MOD73_021D962C: ; 0x021D962C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r6, [r5, #0x10]
+ ldr r0, [r5, #8]
+ lsl r2, r6, #0xc
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsr r4, r2, #0xc
+ lsl r0, r1, #0x14
+ add r2, r6, #0
+ orr r4, r0
+ ldr r0, [r5, #0xc]
+ mul r2, r6
+ lsl r2, r2, #0xc
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ lsl r1, r2, #2
+ bl FX_Div
+ ldr r1, [r5, #4]
+ add r0, r4, r0
+ add r0, r1, r0
+ str r0, [r5]
+ ldr r0, [r5, #0x10]
+ ldr r1, [r5, #0x14]
+ add r0, r0, #1
+ cmp r0, r1
+ bgt _021D968C
+ str r0, [r5, #0x10]
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021D968C:
+ str r1, [r5, #0x10]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D962C
+
+ thumb_func_start MOD73_021D9694
+MOD73_021D9694: ; 0x021D9694
+ push {r4}
+ sub sp, #0xc
+ str r2, [sp, #4]
+ str r3, [sp, #8]
+ add r2, sp, #0
+ add r4, r0, #0
+ str r1, [sp]
+ ldmia r2!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldr r0, [r2]
+ str r0, [r4]
+ add sp, #0xc
+ pop {r4}
+ bx lr
+ thumb_func_end MOD73_021D9694
+
+ thumb_func_start MOD73_021D96B0
+MOD73_021D96B0: ; 0x021D96B0
+ push {r3, r4, r5, lr}
+ mov r2, #0x1f
+ add r4, r1, #0
+ mov r1, #0
+ lsl r2, r2, #4
+ add r5, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x42
+ lsl r0, r0, #2
+ str r4, [r5, r0]
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD73_021D96B0
+
+ thumb_func_start MOD73_021D96C8
+MOD73_021D96C8: ; 0x021D96C8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D96D6
+ bl ErrorHandling
+_021D96D6:
+ mov r2, #0x1f
+ add r0, r4, #0
+ mov r1, #0
+ lsl r2, r2, #4
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ thumb_func_end MOD73_021D96C8
+
+ thumb_func_start MOD73_021D96E4
+MOD73_021D96E4: ; 0x021D96E4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ str r0, [sp, #0x18]
+ ldr r4, [sp, #0x18]
+ mov r0, #0
+ ldr r6, [sp, #0x40]
+ ldr r5, [sp, #0x18]
+ str r1, [sp, #0x1c]
+ add r7, r2, #0
+ str r3, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r4, #0x28
+_021D96FE:
+ ldr r0, [sp, #0x1c]
+ ldr r3, [r0]
+ cmp r3, #0
+ beq _021D977A
+ mov r0, #1
+ str r0, [sp]
+ add r0, r3, #0
+ sub r0, #0x8f
+ str r0, [sp, #4]
+ mov r0, #5
+ str r0, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ mov r0, #0xfa
+ ldr r1, [sp, #0x28]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ add r0, r7, #0
+ add r1, r4, #0
+ mov r2, #0x35
+ sub r3, #0x4f
+ str r6, [sp, #0x14]
+ bl MOD73_021D9340
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r2, #0
+ add r0, r7, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ str r6, [sp, #8]
+ bl MOD73_021D9540
+ mov r1, #0
+ str r0, [r5, #8]
+ bl FUN_020200A0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r2, #0
+ ldr r1, [sp, #0x20]
+ str r6, [sp, #8]
+ add r0, r7, #0
+ add r3, r2, #0
+ bl MOD73_021D9540
+ str r0, [r5, #0x18]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r5, #0x18]
+ mov r1, #1
+ bl FUN_02020130
+ ldr r0, [sp, #0x24]
+ add r4, #0x38
+ add r0, r0, #1
+ add r5, r5, #4
+ str r0, [sp, #0x24]
+_021D977A:
+ mov r0, #0x42
+ ldr r1, [sp, #0x18]
+ lsl r0, r0, #2
+ ldr r1, [r1, r0]
+ ldr r0, [sp, #0x24]
+ cmp r1, r0
+ beq _021D9798
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #4
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x28]
+ add r0, r0, #1
+ str r0, [sp, #0x28]
+ cmp r0, #4
+ blt _021D96FE
+_021D9798:
+ ldr r0, [sp, #0x18]
+ mov r1, #1
+ str r1, [r0]
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D96E4
+
+ thumb_func_start MOD73_021D97A4
+MOD73_021D97A4: ; 0x021D97A4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldr r0, [r7]
+ str r1, [sp]
+ cmp r0, #1
+ beq _021D97B4
+ bl ErrorHandling
+_021D97B4:
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ mov r4, #0
+ cmp r0, #0
+ ble _021D97EA
+ add r6, r7, #0
+ add r5, r7, #0
+ add r6, #0x28
+_021D97C6:
+ ldr r0, [r5, #8]
+ bl FUN_0201FFC8
+ ldr r0, [r5, #0x18]
+ bl FUN_0201FFC8
+ ldr r0, [sp]
+ add r1, r6, #0
+ bl MOD73_021D94F4
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ add r4, r4, #1
+ add r5, r5, #4
+ add r6, #0x38
+ cmp r4, r0
+ blt _021D97C6
+_021D97EA:
+ mov r0, #0
+ str r0, [r7]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD73_021D97A4
+
+ thumb_func_start MOD73_021D97F0
+MOD73_021D97F0: ; 0x021D97F0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ str r0, [sp, #4]
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021D9800
+ bl ErrorHandling
+_021D9800:
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r2, #0x42
+ ldr r0, [sp, #4]
+ lsl r2, r2, #2
+ ldr r0, [r0, r2]
+ cmp r0, #0
+ ble _021D98A0
+ ldr r0, [sp, #4]
+ add r1, r2, #4
+ add r0, r0, r1
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ add r2, #0x64
+ ldr r4, _021D98B4 ; =0x021DBE2C
+ add r7, r0, r2
+ add r6, r0, #0
+ add r5, r0, #0
+_021D9824:
+ ldrb r0, [r4, #0x10]
+ mov r1, #8
+ mov r2, #0xa
+ str r0, [sp]
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r0, [sp, #8]
+ ldr r3, [r4]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD73_021D95CC
+ ldrb r0, [r4, #0x10]
+ mov r1, #0xc
+ mov r2, #0xe
+ str r0, [sp]
+ ldrsh r1, [r4, r1]
+ ldrsh r2, [r4, r2]
+ ldr r3, [r4, #4]
+ add r0, r7, #0
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD73_021D95CC
+ mov r1, #0x43
+ mov r2, #0x5b
+ lsl r1, r1, #2
+ lsl r2, r2, #2
+ ldr r1, [r6, r1]
+ ldr r2, [r6, r2]
+ add r0, sp, #0x10
+ mov r3, #0
+ bl MOD73_021D9694
+ ldr r0, [r5, #8]
+ add r1, sp, #0x10
+ bl FUN_02020044
+ mov r0, #0x73
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ ldrb r1, [r4, #0x11]
+ add r0, #0x10
+ add r4, #0x14
+ str r1, [r5, r0]
+ ldr r0, [sp, #8]
+ ldr r1, [sp, #4]
+ add r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [sp, #0xc]
+ add r7, #0x18
+ add r0, r0, #1
+ str r0, [sp, #0xc]
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r1, [r1, r0]
+ ldr r0, [sp, #0xc]
+ add r6, #0x18
+ add r5, r5, #4
+ cmp r0, r1
+ blt _021D9824
+_021D98A0:
+ mov r1, #0x7b
+ ldr r0, [sp, #4]
+ mov r2, #0
+ lsl r1, r1, #2
+ str r2, [r0, r1]
+ mov r1, #1
+ str r1, [r0, #4]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D98B4: .word 0x021DBE2C
+ thumb_func_end MOD73_021D97F0
+
+ thumb_func_start MOD73_021D98B8
+MOD73_021D98B8: ; 0x021D98B8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r6, r0, #0
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, [r6, #4]
+ cmp r0, #0
+ bne _021D98CE
+ add sp, #0x1c
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021D98CE:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ add r1, r0, #0
+ sub r1, #0xe4
+ ldr r2, [r6, r0]
+ ldr r1, [r6, r1]
+ cmp r2, r1
+ bge _021D991E
+ add r1, r0, #0
+ sub r1, #0x10
+ add r1, r6, r1
+ lsl r3, r2, #2
+ ldr r2, [r1, r3]
+ sub r2, r2, #1
+ str r2, [r1, r3]
+ ldr r1, [r6, r0]
+ lsl r1, r1, #2
+ add r2, r6, r1
+ add r1, r0, #0
+ sub r1, #0x10
+ ldr r1, [r2, r1]
+ cmp r1, #0
+ bgt _021D991E
+ add r3, r0, #0
+ mov r1, #1
+ sub r3, #0x20
+ str r1, [r2, r3]
+ ldr r0, [r6, r0]
+ lsl r0, r0, #2
+ add r0, r6, r0
+ ldr r0, [r0, #8]
+ bl FUN_020200A0
+ mov r1, #0x7b
+ lsl r1, r1, #2
+ ldr r2, [r6, r1]
+ add r0, r2, #2
+ str r0, [sp, #4]
+ add r0, r2, #1
+ str r0, [r6, r1]
+_021D991E:
+ mov r1, #0x42
+ mov r0, #0
+ lsl r1, r1, #2
+ str r0, [sp, #8]
+ ldr r0, [r6, r1]
+ cmp r0, #0
+ ble _021D9A02
+ add r0, r1, #4
+ add r0, r6, r0
+ add r1, #0x64
+ add r4, r6, #0
+ str r0, [sp]
+ add r7, r6, r1
+ add r5, r6, #0
+_021D993A:
+ mov r0, #0x73
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #3
+ bhi _021D99E0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9950: ; jump table
+ .short _021D99E4 - _021D9950 - 2 ; case 0
+ .short _021D9958 - _021D9950 - 2 ; case 1
+ .short _021D99BE - _021D9950 - 2 ; case 2
+ .short _021D99E4 - _021D9950 - 2 ; case 3
+_021D9958:
+ ldr r0, [sp]
+ bl MOD73_021D962C
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD73_021D962C
+ mov r1, #0x43
+ mov r2, #0x5b
+ lsl r1, r1, #2
+ lsl r2, r2, #2
+ ldr r1, [r5, r1]
+ ldr r2, [r5, r2]
+ add r0, sp, #0x10
+ mov r3, #0
+ bl MOD73_021D9694
+ ldr r0, [r4, #8]
+ add r1, sp, #0x10
+ bl FUN_02020044
+ ldr r0, [sp, #0xc]
+ cmp r0, #1
+ bne _021D99E4
+ ldr r0, [r4, #0x18]
+ add r1, sp, #0x10
+ bl FUN_02020044
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, _021D9A24 ; =0x000006BC
+ bl FUN_020054C8
+ mov r0, #0x73
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, r0, #1
+ mov r0, #0x73
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _021D99E4
+_021D99BE:
+ ldr r0, [r4, #0x18]
+ bl FUN_02020388
+ cmp r0, #0
+ bne _021D99E4
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0x73
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, r0, #1
+ mov r0, #0x73
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _021D99E4
+_021D99E0:
+ bl ErrorHandling
+_021D99E4:
+ ldr r0, [sp]
+ add r4, r4, #4
+ add r0, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ add r7, #0x18
+ add r0, r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ ldr r1, [sp, #8]
+ add r5, #0x18
+ cmp r1, r0
+ blt _021D993A
+_021D9A02:
+ sub r0, r0, #1
+ lsl r0, r0, #2
+ add r1, r6, r0
+ mov r0, #0x73
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #3
+ bne _021D9A1C
+ mov r0, #0
+ str r0, [r6, #4]
+ add sp, #0x1c
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021D9A1C:
+ ldr r0, [sp, #4]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D9A24: .word 0x000006BC
+ thumb_func_end MOD73_021D98B8
+
+ thumb_func_start MOD73_021D9A28
+MOD73_021D9A28: ; 0x021D9A28
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r6, r2, #0
+ add r5, r0, #0
+ mov r1, #0
+ mov r2, #0x34
+ add r7, r3, #0
+ bl Call_FillMemWithValue
+ str r6, [r5, #0x18]
+ ldr r0, [sp, #0x1c]
+ str r4, [r5, #0x14]
+ str r0, [r5]
+ ldr r0, [sp, #0x18]
+ str r7, [r5, #0x1c]
+ str r0, [r5, #0x10]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9A28
+
+ thumb_func_start MOD73_021D9A4C
+MOD73_021D9A4C: ; 0x021D9A4C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x30]
+ cmp r0, #0
+ beq _021D9A5A
+ bl ErrorHandling
+_021D9A5A:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x34
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9A4C
+
+ thumb_func_start MOD73_021D9A68
+MOD73_021D9A68: ; 0x021D9A68
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x30]
+ add r4, r1, #0
+ add r6, r2, #0
+ cmp r0, #0
+ beq _021D9A7A
+ bl ErrorHandling
+_021D9A7A:
+ add r0, r5, #0
+ add r1, r6, #0
+ str r4, [r5, #4]
+ bl MOD73_021D9BE0
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD73_021D9CA0
+ mov r0, #1
+ str r0, [r5, #0x30]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9A68
+
+ thumb_func_start MOD73_021D9A94
+MOD73_021D9A94: ; 0x021D9A94
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x30]
+ cmp r0, #1
+ beq _021D9AA2
+ bl ErrorHandling
+_021D9AA2:
+ add r0, r4, #0
+ bl MOD73_021D9C7C
+ add r0, r4, #0
+ bl MOD73_021D9D48
+ mov r0, #0
+ str r0, [r4, #0x30]
+ pop {r4, pc}
+ thumb_func_end MOD73_021D9A94
+
+ thumb_func_start MOD73_021D9AB4
+MOD73_021D9AB4: ; 0x021D9AB4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl FUN_02019570
+ ldr r0, [r4, #4]
+ mov r1, #4
+ bl FUN_02018744
+ pop {r4, pc}
+ thumb_func_end MOD73_021D9AB4
+
+ thumb_func_start MOD73_021D9AC8
+MOD73_021D9AC8: ; 0x021D9AC8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ mov r1, #0xf
+ bl FUN_02019620
+ ldr r1, [r4, #0x18]
+ mov r2, #0
+ ldr r0, [r4, #8]
+ ldr r1, [r1, #0xc]
+ add r3, r2, #0
+ bl MOD73_021D9D5C
+ mov r1, #0
+ ldr r0, [r4, #8]
+ mov r2, #1
+ add r3, r1, #0
+ bl FUN_0200D0BC
+ pop {r4, pc}
+ thumb_func_end MOD73_021D9AC8
+
+ thumb_func_start MOD73_021D9AF0
+MOD73_021D9AF0: ; 0x021D9AF0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ ldr r0, [r5, #0x14]
+ cmp r0, #1
+ beq _021D9BDC
+ mov r4, #0
+ cmp r0, #0
+ ble _021D9BCE
+_021D9B02:
+ lsr r2, r4, #0x1f
+ lsl r1, r4, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r1, r2, r1
+ add r2, r4, r2
+ asr r2, r2, #1
+ mov r0, #0xc
+ add r6, r1, #0
+ mul r6, r0
+ lsl r0, r2, #2
+ add r2, r2, r0
+ str r2, [sp, #0x1c]
+ mov r2, #0xa
+ str r2, [sp]
+ mov r2, #4
+ str r2, [sp, #4]
+ ldr r2, [r5, #0x2c]
+ lsl r0, r0, #0x18
+ add r2, #0xc
+ str r2, [sp, #8]
+ mov r2, #0xa
+ mul r2, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0xc]
+ lsr r0, r0, #0x18
+ ldr r3, [sp, #0x1c]
+ str r0, [sp, #0x10]
+ mov r0, #0x14
+ str r0, [sp, #0x14]
+ mov r0, #8
+ add r2, r6, #5
+ add r3, #0xd
+ str r0, [sp, #0x18]
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ ldr r0, [r5, #4]
+ mov r1, #5
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018170
+ mov r0, #0xa
+ ldr r3, [sp, #0x1c]
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #2
+ add r2, r6, #5
+ add r3, #0xd
+ str r0, [sp, #8]
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ ldr r0, [r5, #4]
+ mov r1, #5
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_020186B4
+ ldr r7, [r5, #0x1c]
+ mov r2, #0x13
+ ldr r0, [r5, #0x18]
+ add r3, r7, r4
+ lsl r2, r2, #4
+ ldrb r2, [r3, r2]
+ ldr r0, [r0, #4]
+ mov r1, #0
+ lsl r2, r2, #2
+ add r3, r7, r2
+ mov r2, #0x4d
+ lsl r2, r2, #2
+ ldr r2, [r3, r2]
+ bl FUN_0200ABC0
+ ldr r2, [r5, #0x18]
+ ldr r0, [r2, #4]
+ ldr r1, [r2, #8]
+ ldr r2, [r2, #0x14]
+ bl FUN_0200B7B8
+ ldr r1, [r5, #0x18]
+ lsl r0, r6, #3
+ ldr r1, [r1, #8]
+ add r0, #0x20
+ mov r2, #1
+ bl MOD73_021D9244
+ ldr r1, [r5, #0x18]
+ ldr r3, [sp, #0x1c]
+ add r2, r0, #0
+ lsl r3, r3, #3
+ ldr r0, [r5, #0xc]
+ ldr r1, [r1, #8]
+ add r3, #8
+ bl MOD73_021D9D5C
+ ldr r0, [r5, #0x14]
+ add r4, r4, #1
+ cmp r4, r0
+ blt _021D9B02
+_021D9BCE:
+ ldr r0, [r5, #0xc]
+ bl FUN_02019220
+ ldr r0, [r5, #4]
+ mov r1, #5
+ bl FUN_0201AC68
+_021D9BDC:
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD73_021D9AF0
+
+ thumb_func_start MOD73_021D9BE0
+MOD73_021D9BE0: ; 0x021D9BE0
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018FF4
+ str r0, [r5, #8]
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018FF4
+ str r0, [r5, #0xc]
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #4]
+ mov r2, #4
+ str r2, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ mov r0, #0x1f
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ ldr r1, [r5, #8]
+ add r3, r2, #0
+ bl FUN_02019064
+ mov r0, #0xd
+ str r0, [sp]
+ mov r0, #0x14
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ mov r0, #0x1f
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ ldr r1, [r5, #0xc]
+ mov r2, #4
+ mov r3, #6
+ bl FUN_02019064
+ ldr r0, [r5, #8]
+ mov r1, #0xf
+ bl FUN_02019620
+ ldr r0, [r5, #0xc]
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [r5, #0x10]
+ mov r1, #4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ str r4, [sp, #4]
+ ldr r0, [r5, #4]
+ mov r2, #1
+ mov r3, #0
+ bl FUN_0200CD68
+ mov r0, #4
+ mov r1, #0x20
+ add r2, r4, #0
+ bl FUN_02002EEC
+ mov r1, #1
+ ldr r0, [r5, #8]
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200D0BC
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9BE0
+
+ thumb_func_start MOD73_021D9C7C
+MOD73_021D9C7C: ; 0x021D9C7C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl FUN_02019178
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl FUN_020191A4
+ ldr r0, [r4, #0xc]
+ bl FUN_02019178
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_020191A4
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9C7C
+
+ thumb_func_start MOD73_021D9CA0
+MOD73_021D9CA0: ; 0x021D9CA0
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ mov r3, #0x40
+ add r5, r0, #0
+ add r4, r1, #0
+ str r3, [sp]
+ mov r0, #0x7a
+ mov r1, #1
+ mov r2, #4
+ str r4, [sp, #4]
+ bl FUN_02006930
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ str r4, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0x7a
+ mov r3, #5
+ bl FUN_0200687C
+ ldr r0, [r5, #0x14]
+ cmp r0, #1
+ bne _021D9CD6
+ mov r1, #2
+ b _021D9CD8
+_021D9CD6:
+ mov r1, #3
+_021D9CD8:
+ add r3, r5, #0
+ str r4, [sp]
+ mov r0, #0x7a
+ mov r2, #0
+ add r3, #0x24
+ bl FUN_02006BDC
+ str r0, [r5, #0x20]
+ ldr r2, [r5, #0x24]
+ mov r3, #0
+ str r3, [sp]
+ ldrh r0, [r2]
+ mov r1, #5
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5, #4]
+ bl FUN_02018148
+ ldr r1, [r5, #0x24]
+ mov r2, #0
+ ldrh r0, [r1]
+ add r3, r2, #0
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldrh r0, [r1, #2]
+ mov r1, #5
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ ldr r0, [r5, #4]
+ bl FUN_020186B4
+ add r3, r5, #0
+ str r4, [sp]
+ mov r0, #0x7a
+ mov r1, #4
+ mov r2, #0
+ add r3, #0x2c
+ bl FUN_02006BDC
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #4]
+ mov r1, #5
+ bl FUN_0201AC68
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD73_021D9CA0
+
+ thumb_func_start MOD73_021D9D48
+MOD73_021D9D48: ; 0x021D9D48
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x20]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x28]
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9D48
+
+ thumb_func_start MOD73_021D9D5C
+MOD73_021D9D5C: ; 0x021D9D5C
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ add r4, r2, #0
+ str r3, [sp]
+ mov r2, #0
+ ldr r1, _021D9D80 ; =0x0001020F
+ str r2, [sp, #4]
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ mov r1, #1
+ add r2, r5, #0
+ add r3, r4, #0
+ bl FUN_0201BDE0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_021D9D80: .word 0x0001020F
+ thumb_func_end MOD73_021D9D5C
+
+ thumb_func_start MOD73_021D9D84
+MOD73_021D9D84: ; 0x021D9D84
+ mov r1, #0
+ strb r1, [r0]
+ strb r1, [r0, #1]
+ strb r1, [r0, #2]
+ strb r1, [r0, #3]
+ strb r1, [r0, #4]
+ strb r1, [r0, #5]
+ strb r1, [r0, #6]
+ strb r1, [r0, #7]
+ strb r1, [r0, #8]
+ strb r1, [r0, #9]
+ strb r1, [r0, #0xa]
+ strb r1, [r0, #0xb]
+ bx lr
+ thumb_func_end MOD73_021D9D84
+
+ thumb_func_start MOD73_021D9DA0
+MOD73_021D9DA0: ; 0x021D9DA0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D9DAE
+ bl ErrorHandling
+_021D9DAE:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ strb r0, [r4, #8]
+ strb r0, [r4, #9]
+ strb r0, [r4, #0xa]
+ strb r0, [r4, #0xb]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9DA0
+
+ thumb_func_start MOD73_021D9DCC
+MOD73_021D9DCC: ; 0x021D9DCC
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ add r0, r1, #0
+ ldr r3, [sp, #0x18]
+ mov r1, #0x38
+ mul r1, r3
+ add r1, r2, r1
+ mov r2, #2
+ mov r3, #6
+ lsl r2, r2, #0x12
+ lsl r3, r3, #0x10
+ bl MOD73_021D9540
+ str r0, [r4, #8]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r4, #8]
+ ldr r1, [sp, #0x1c]
+ bl FUN_02020130
+ mov r0, #1
+ str r0, [r4]
+ add sp, #0xc
+ pop {r3, r4, pc}
+ thumb_func_end MOD73_021D9DCC
+
+ thumb_func_start MOD73_021D9E08
+MOD73_021D9E08: ; 0x021D9E08
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #1
+ beq _021D9E16
+ bl ErrorHandling
+_021D9E16:
+ ldr r0, [r4, #8]
+ bl FUN_0201FFC8
+ mov r0, #0
+ str r0, [r4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9E08
+
+ thumb_func_start MOD73_021D9E24
+MOD73_021D9E24: ; 0x021D9E24
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl FUN_020200BC
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9E24
+
+ thumb_func_start MOD73_021D9E3C
+MOD73_021D9E3C: ; 0x021D9E3C
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x2a
+ lsl r0, r0, #0xe
+ str r0, [sp]
+ mov r0, #0xf
+ lsl r0, r0, #0xe
+ str r0, [sp, #4]
+ ldr r0, [r4, #8]
+ add r1, sp, #0
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9E3C
+
+ thumb_func_start MOD73_021D9E6C
+MOD73_021D9E6C: ; 0x021D9E6C
+ push {r3, lr}
+ ldr r0, [r0, #8]
+ bl FUN_02020388
+ cmp r0, #0
+ bne _021D9E7C
+ mov r0, #1
+ pop {r3, pc}
+_021D9E7C:
+ mov r0, #0
+ pop {r3, pc}
+ thumb_func_end MOD73_021D9E6C
+
+ thumb_func_start MOD73_021D9E80
+MOD73_021D9E80: ; 0x021D9E80
+ ldr r3, _021D9E88 ; =0x020DF4A4
+ mov r1, #0
+ mov r2, #0x78
+ bx r3
+ .align 2, 0
+_021D9E88: .word 0x020DF4A4
+ thumb_func_end MOD73_021D9E80
+
+ thumb_func_start MOD73_021D9E8C
+MOD73_021D9E8C: ; 0x021D9E8C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x74]
+ cmp r0, #0
+ beq _021D9E9A
+ bl ErrorHandling
+_021D9E9A:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x78
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9E8C
+
+ thumb_func_start MOD73_021D9EA8
+MOD73_021D9EA8: ; 0x021D9EA8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r0, #0x74]
+ add r7, r2, #0
+ str r1, [sp, #0xc]
+ cmp r0, #0
+ beq _021D9EBC
+ bl ErrorHandling
+_021D9EBC:
+ ldr r4, _021D9F5C ; =0x021DBDE4
+ ldr r5, [sp, #8]
+ mov r6, #0
+_021D9EC2:
+ ldrb r1, [r4]
+ ldr r0, [sp, #0xc]
+ add r2, r7, #0
+ bl MOD73_021D9258
+ add r6, r6, #1
+ add r4, r4, #1
+ stmia r5!, {r0}
+ cmp r6, #6
+ blt _021D9EC2
+ ldr r4, _021D9F60 ; =0x021DBE04
+ ldr r5, [sp, #8]
+ mov r6, #0
+_021D9EDC:
+ ldrb r1, [r4]
+ ldr r0, [sp, #0xc]
+ add r2, r7, #0
+ bl MOD73_021D9288
+ str r0, [r5, #0x18]
+ add r6, r6, #1
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r6, #8
+ blt _021D9EDC
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, _021D9F64 ; =0x021DBDF4
+ ldr r6, _021D9F68 ; =0x021DBDFC
+ ldr r4, _021D9F6C ; =0x021DBE0C
+ ldr r5, [sp, #8]
+ ldr r7, _021D9F70 ; =0x021DBDEC
+ str r0, [sp, #0x14]
+_021D9F02:
+ ldrb r0, [r6]
+ str r0, [sp]
+ ldr r0, [sp, #0x14]
+ ldrb r0, [r0]
+ str r0, [sp, #4]
+ ldrb r1, [r7]
+ ldrb r3, [r4]
+ ldr r0, [sp, #0xc]
+ lsl r2, r1, #2
+ ldr r1, [sp, #8]
+ ldr r1, [r1, r2]
+ ldr r2, [r5, #0x18]
+ bl MOD73_021D92B8
+ str r0, [r5, #0x38]
+ ldrb r2, [r4]
+ mov r1, #0x80
+ ldrb r3, [r6]
+ sub r1, r1, r2
+ mov r2, #0x60
+ sub r2, r2, r3
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_02013ED8
+ ldr r0, [sp, #0x14]
+ add r6, r6, #1
+ add r0, r0, #1
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ add r4, r4, #1
+ add r0, r0, #1
+ add r5, r5, #4
+ add r7, r7, #1
+ str r0, [sp, #0x10]
+ cmp r0, #8
+ blt _021D9F02
+ ldr r0, [sp, #8]
+ mov r1, #1
+ str r1, [r0, #0x74]
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9F5C: .word 0x021DBDE4
+_021D9F60: .word 0x021DBE04
+_021D9F64: .word 0x021DBDF4
+_021D9F68: .word 0x021DBDFC
+_021D9F6C: .word 0x021DBE0C
+_021D9F70: .word 0x021DBDEC
+ thumb_func_end MOD73_021D9EA8
+
+ thumb_func_start MOD73_021D9F74
+MOD73_021D9F74: ; 0x021D9F74
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, [r6, #0x74]
+ cmp r0, #1
+ beq _021D9F82
+ bl ErrorHandling
+_021D9F82:
+ mov r4, #0
+ add r5, r6, #0
+_021D9F86:
+ ldr r0, [r5, #0x38]
+ bl FUN_02013EA8
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _021D9F86
+ mov r5, #0
+ add r4, r6, #0
+_021D9F98:
+ ldr r0, [r4]
+ bl FUN_02013DD4
+ add r5, r5, #1
+ add r4, r4, #4
+ cmp r5, #6
+ blt _021D9F98
+ mov r5, #0
+ add r4, r6, #0
+_021D9FAA:
+ ldr r0, [r4, #0x18]
+ bl FUN_02013E44
+ add r5, r5, #1
+ add r4, r4, #4
+ cmp r5, #8
+ blt _021D9FAA
+ mov r0, #0
+ str r0, [r6, #0x74]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9F74
+
+ thumb_func_start MOD73_021D9FC0
+MOD73_021D9FC0: ; 0x021D9FC0
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ cmp r4, #8
+ blo _021D9FD0
+ bl ErrorHandling
+_021D9FD0:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x38]
+ add r1, r6, #0
+ bl FUN_02013EB0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9FC0
+
+ thumb_func_start MOD73_021D9FE0
+MOD73_021D9FE0: ; 0x021D9FE0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #5
+ add r5, #0x14
+_021D9FEA:
+ ldr r0, [r5, #0x38]
+ add r1, r6, #0
+ bl FUN_02013F2C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #7
+ ble _021D9FEA
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD73_021D9FE0
+
+ thumb_func_start MOD73_021D9FFC
+MOD73_021D9FFC: ; 0x021D9FFC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #5
+ add r5, #0x14
+_021DA006:
+ ldr r0, [r5, #0x38]
+ add r1, r6, #0
+ add r2, r6, #0
+ bl FUN_02013EE0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #7
+ ble _021DA006
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021D9FFC
+
+ thumb_func_start MOD73_021DA01C
+MOD73_021DA01C: ; 0x021DA01C
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ cmp r4, #8
+ blo _021DA02C
+ bl ErrorHandling
+_021DA02C:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ lsl r1, r6, #0x18
+ ldr r0, [r0, #0x38]
+ lsr r1, r1, #0x18
+ bl FUN_02013F04
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD73_021DA01C
+
+ thumb_func_start MOD73_021DA03C
+MOD73_021DA03C: ; 0x021DA03C
+ push {r3, lr}
+ mov r2, #1
+ str r2, [r0, #0x6c]
+ mov r1, #0
+ str r1, [r0, #0x70]
+ lsl r1, r2, #0xc
+ ldr r2, _021DA054 ; =0x00000FAE
+ add r0, #0x58
+ mov r3, #4
+ bl MOD73_021D9574
+ pop {r3, pc}
+ .align 2, 0
+_021DA054: .word 0x00000FAE
+ thumb_func_end MOD73_021DA03C
+
+ thumb_func_start MOD73_021DA058
+MOD73_021DA058: ; 0x021DA058
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x6c]
+ add r3, r1, #0
+ cmp r0, #0
+ beq _021DA06A
+ cmp r0, #1
+ beq _021DA0A4
+ b _021DA0CE
+_021DA06A:
+ ldr r0, [r5, #0x70]
+ cmp r0, #0
+ bne _021DA088
+ ldr r1, _021DA0D4 ; =0x021DBE14
+ lsl r4, r3, #2
+ ldr r2, _021DA0D8 ; =0x021DBE20
+ ldr r1, [r1, r4]
+ ldr r2, [r2, r4]
+ ldr r4, _021DA0DC ; =0x021DBDE0
+ add r0, r5, #0
+ ldrb r3, [r4, r3]
+ add r0, #0x58
+ bl MOD73_021D9574
+ b _021DA09E
+_021DA088:
+ ldr r1, _021DA0D8 ; =0x021DBE20
+ lsl r4, r3, #2
+ ldr r2, _021DA0D4 ; =0x021DBE14
+ ldr r1, [r1, r4]
+ ldr r2, [r2, r4]
+ ldr r4, _021DA0DC ; =0x021DBDE0
+ add r0, r5, #0
+ ldrb r3, [r4, r3]
+ add r0, #0x58
+ bl MOD73_021D9574
+_021DA09E:
+ ldr r0, [r5, #0x6c]
+ add r0, r0, #1
+ str r0, [r5, #0x6c]
+_021DA0A4:
+ add r0, r5, #0
+ add r0, #0x58
+ bl MOD73_021D9584
+ add r7, r0, #0
+ mov r6, #0
+ add r4, r5, #0
+_021DA0B2:
+ ldr r1, [r5, #0x58]
+ ldr r0, [r4, #0x38]
+ add r2, r1, #0
+ bl FUN_02013EE0
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #2
+ ble _021DA0B2
+ cmp r7, #1
+ bne _021DA0D2
+ mov r0, #0
+ str r0, [r5, #0x6c]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA0CE:
+ bl ErrorHandling
+_021DA0D2:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DA0D4: .word 0x021DBE14
+_021DA0D8: .word 0x021DBE20
+_021DA0DC: .word 0x021DBDE0
+ thumb_func_end MOD73_021DA058
+
+ thumb_func_start MOD73_021DA0E0
+MOD73_021DA0E0: ; 0x021DA0E0
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r6, r2, #0
+ mov r1, #0
+ mov r2, #0x20
+ add r5, r0, #0
+ add r7, r3, #0
+ bl Call_FillMemWithValue
+ str r4, [r5, #0x14]
+ str r6, [r5, #0x18]
+ str r7, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DA0E0
+
+ thumb_func_start MOD73_021DA0FC
+MOD73_021DA0FC: ; 0x021DA0FC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021DA10A
+ bl ErrorHandling
+_021DA10A:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x20
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DA0FC
+
+ thumb_func_start MOD73_021DA118
+MOD73_021DA118: ; 0x021DA118
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ str r0, [sp, #0xc]
+ mov r0, #2
+ lsl r0, r0, #0x12
+ str r0, [sp, #0x14]
+ mov r0, #6
+ add r6, r2, #0
+ lsl r0, r0, #0x10
+ ldr r5, [sp, #0xc]
+ str r1, [sp, #0x10]
+ add r7, r3, #0
+ str r0, [sp, #0x18]
+ mov r4, #0
+ add r6, #0x38
+_021DA136:
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x10]
+ str r7, [sp, #8]
+ add r1, r6, #0
+ mov r2, #0x80
+ mov r3, #0x60
+ bl MOD73_021D9540
+ str r0, [r5, #4]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r5, #4]
+ add r1, r4, #4
+ bl FUN_02020130
+ ldr r0, [r5, #4]
+ add r1, sp, #0x14
+ bl FUN_02020044
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021DA136
+ ldr r0, [sp, #0xc]
+ mov r1, #1
+ str r1, [r0]
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DA118
+
+ thumb_func_start MOD73_021DA178
+MOD73_021DA178: ; 0x021DA178
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_021DA180:
+ ldr r0, [r5, #4]
+ bl FUN_0201FFC8
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021DA180
+ mov r0, #0
+ str r0, [r6]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD73_021DA178
+
+ thumb_func_start MOD73_021DA194
+MOD73_021DA194: ; 0x021DA194
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ ldr r7, [r6, #0x14]
+ ldr r0, [r6, #0x18]
+ add r7, #0x98
+ mov r4, #0
+ cmp r0, #0
+ bls _021DA1D2
+ add r5, r6, #0
+_021DA1A8:
+ ldr r0, [r6, #0x14]
+ add r1, r0, r4
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldrb r1, [r1, r0]
+ add r0, r7, r1
+ ldrb r1, [r7, r1]
+ lsl r1, r1, #0xc
+ str r1, [sp]
+ ldrb r0, [r0, #4]
+ add r1, sp, #0
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r0, [r5, #4]
+ bl FUN_02020044
+ ldr r0, [r6, #0x18]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blo _021DA1A8
+_021DA1D2:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DA194
+
+ thumb_func_start MOD73_021DA1D8
+MOD73_021DA1D8: ; 0x021DA1D8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ mov r4, #0
+ str r1, [sp]
+ cmp r0, #0
+ bls _021DA20E
+ add r6, r5, #0
+_021DA1E8:
+ ldr r0, [r5, #0x14]
+ add r1, r0, r4
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldrb r7, [r1, r0]
+ ldr r0, [r5, #0x1c]
+ bl MOD73_021D910C
+ cmp r7, r0
+ beq _021DA204
+ ldr r0, [r6, #4]
+ ldr r1, [sp]
+ bl FUN_020200A0
+_021DA204:
+ ldr r0, [r5, #0x18]
+ add r4, r4, #1
+ add r6, r6, #4
+ cmp r4, r0
+ blo _021DA1E8
+_021DA20E:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD73_021DA1D8
+
+ thumb_func_start MOD73_021DA210
+MOD73_021DA210: ; 0x021DA210
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r6, r2, #0
+ add r5, r0, #0
+ mov r1, #0
+ mov r2, #0x34
+ add r7, r3, #0
+ bl Call_FillMemWithValue
+ str r6, [r5, #0x1c]
+ ldr r0, [sp, #0x1c]
+ str r4, [r5, #0x20]
+ str r0, [r5]
+ ldr r0, [sp, #0x18]
+ str r7, [r5, #0x24]
+ str r0, [r5, #0x18]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DA210
+
+ thumb_func_start MOD73_021DA234
+MOD73_021DA234: ; 0x021DA234
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ cmp r0, #0
+ beq _021DA242
+ bl ErrorHandling
+_021DA242:
+ add r0, r4, #0
+ bl MOD73_021DA4AC
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x34
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ thumb_func_end MOD73_021DA234
+
+ thumb_func_start MOD73_021DA254
+MOD73_021DA254: ; 0x021DA254
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x28]
+ add r4, r1, #0
+ add r6, r2, #0
+ cmp r0, #0
+ beq _021DA266
+ bl ErrorHandling
+_021DA266:
+ add r0, r5, #0
+ add r1, r6, #0
+ str r4, [r5, #4]
+ bl MOD73_021DA2AC
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD73_021DA374
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #1
+ str r0, [r5, #0x28]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DA254
+
+ thumb_func_start MOD73_021DA290
+MOD73_021DA290: ; 0x021DA290
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ cmp r0, #1
+ beq _021DA29E
+ bl ErrorHandling
+_021DA29E:
+ add r0, r4, #0
+ bl MOD73_021DA354
+ mov r0, #0
+ str r0, [r4, #0x28]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DA290
+
+ thumb_func_start MOD73_021DA2AC
+MOD73_021DA2AC: ; 0x021DA2AC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r7, r0, #0
+ ldr r0, [r7, #0x18]
+ str r1, [sp, #0x14]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ add r0, r1, #0
+ str r0, [sp, #4]
+ ldr r0, [r7, #4]
+ mov r1, #2
+ mov r2, #1
+ mov r3, #0
+ bl FUN_0200CD68
+ ldr r2, [sp, #0x14]
+ mov r0, #0
+ mov r1, #0x40
+ bl FUN_02002EEC
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x14]
+ mov r1, #2
+ str r0, [sp, #4]
+ ldr r0, [r7, #4]
+ mov r2, #0x1f
+ mov r3, #1
+ bl FUN_0200CB00
+ ldr r2, [sp, #0x14]
+ mov r0, #0
+ mov r1, #0x60
+ bl FUN_02002ED0
+ ldr r5, _021DA350 ; =0x021DBF80
+ mov r6, #0
+ add r4, r7, #0
+_021DA2FA:
+ ldr r0, [sp, #0x14]
+ mov r1, #1
+ bl FUN_02018FF4
+ str r0, [r4, #8]
+ ldrh r0, [r5, #2]
+ mov r2, #2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldrh r0, [r5, #4]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r5, #6]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldrh r0, [r5, #8]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xc]
+ ldrh r0, [r5, #0xa]
+ str r0, [sp, #0x10]
+ ldrh r3, [r5]
+ ldr r0, [r7, #4]
+ ldr r1, [r4, #8]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl FUN_02019620
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, #0xc
+ cmp r6, #4
+ blt _021DA2FA
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DA350: .word 0x021DBF80
+ thumb_func_end MOD73_021DA2AC
+
+ thumb_func_start MOD73_021DA354
+MOD73_021DA354: ; 0x021DA354
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r4, #0
+ mov r6, #1
+_021DA35C:
+ ldr r0, [r5, #8]
+ bl FUN_02019178
+ ldr r0, [r5, #8]
+ add r1, r6, #0
+ bl FUN_020191A4
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021DA35C
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD73_021DA354
+
+ thumb_func_start MOD73_021DA374
+MOD73_021DA374: ; 0x021DA374
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0x20
+ add r5, r1, #0
+ str r0, [sp]
+ mov r0, #0x7a
+ mov r1, #6
+ mov r2, #0
+ mov r3, #0x80
+ str r5, [sp, #4]
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r5, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x7a
+ mov r1, #5
+ mov r3, #1
+ bl FUN_0200687C
+ str r5, [sp]
+ mov r0, #0x7a
+ mov r1, #7
+ mov r2, #0
+ add r3, sp, #0x10
+ bl FUN_02006BDC
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r5, r0, #0
+ ldrh r0, [r2]
+ mov r1, #1
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ bl FUN_02018148
+ ldr r1, [sp, #0x10]
+ mov r2, #0
+ ldrh r0, [r1]
+ add r3, r2, #0
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldrh r0, [r1, #2]
+ mov r1, #1
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ bl FUN_020186B4
+ add r0, r5, #0
+ bl FUN_02016A18
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r4, r5, pc}
+ thumb_func_end MOD73_021DA374
+
+ thumb_func_start MOD73_021DA408
+MOD73_021DA408: ; 0x021DA408
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x30]
+ add r0, r0, #1
+ str r0, [r4, #0x30]
+ cmp r0, #0x1e
+ blt _021DA432
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x2c]
+_021DA432:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD73_021DA408
+
+ thumb_func_start MOD73_021DA434
+MOD73_021DA434: ; 0x021DA434
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5, #0x2c]
+ add r4, r1, #0
+ cmp r0, #0
+ beq _021DA446
+ bl ErrorHandling
+_021DA446:
+ mov r2, #1
+ ldr r0, _021DA494 ; =MOD73_021DA408
+ add r1, r5, #0
+ lsl r2, r2, #0xa
+ bl FUN_0200CA44
+ str r0, [r5, #0x2c]
+ mov r1, #0
+ str r1, [r5, #0x30]
+ ldr r0, [r5, #8]
+ bl FUN_02019620
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, _021DA498 ; =0x0001020F
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r6, [r5, #0x1c]
+ lsl r2, r4, #2
+ add r2, r6, r2
+ ldr r0, [r5, #8]
+ ldr r2, [r2, #0x38]
+ mov r1, #1
+ bl FUN_0201BDE0
+ ldr r0, [r5, #8]
+ bl FUN_020191D0
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DA494: .word MOD73_021DA408
+_021DA498: .word 0x0001020F
+ thumb_func_end MOD73_021DA434
+
+ thumb_func_start MOD73_021DA49C
+MOD73_021DA49C: ; 0x021DA49C
+ ldr r0, [r0, #0x2c]
+ cmp r0, #0
+ bne _021DA4A6
+ mov r0, #1
+ bx lr
+_021DA4A6:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD73_021DA49C
+
+ thumb_func_start MOD73_021DA4AC
+MOD73_021DA4AC: ; 0x021DA4AC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ beq _021DA4D0
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ ldr r0, [r4, #0x2c]
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x2c]
+_021DA4D0:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DA4AC
+
+ thumb_func_start MOD73_021DA4D4
+MOD73_021DA4D4: ; 0x021DA4D4
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_02018744
+ ldr r0, [r4, #0xc]
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021DA54C ; =0x0001020F
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r4, #0xc]
+ ldr r2, [r2, #0x34]
+ mov r3, #0x38
+ bl FUN_0201BDE0
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ mov r2, #0x1f
+ mov r3, #1
+ bl FUN_0200CCA4
+ ldr r0, [r4, #0x10]
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021DA54C ; =0x0001020F
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r4, #0x10]
+ ldr r2, [r2, #0x64]
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ mov r2, #0x1f
+ mov r3, #1
+ bl FUN_0200CCA4
+ ldr r0, [r4, #0xc]
+ bl FUN_02019220
+ ldr r0, [r4, #0x10]
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_021DA54C: .word 0x0001020F
+ thumb_func_end MOD73_021DA4D4
+
+ thumb_func_start MOD73_021DA550
+MOD73_021DA550: ; 0x021DA550
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #0x18
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DA6B8 ; =0x0001020F
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r4, #0xc]
+ ldr r2, [r2, #0x4c]
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ mov r3, #2
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r2, [r4, #0x24]
+ ldr r0, [r4, #0x1c]
+ add r2, #0x66
+ ldrb r2, [r2]
+ ldr r0, [r0, #4]
+ mov r1, #0
+ bl FUN_0200AD38
+ mov r3, #2
+ str r3, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ ldr r2, [r4, #0x24]
+ ldr r0, [r4, #0x1c]
+ add r2, #0x67
+ ldrb r2, [r2]
+ ldr r0, [r0, #4]
+ bl FUN_0200AD38
+ mov r1, #2
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r2, [r4, #0x24]
+ ldr r0, [r4, #0x1c]
+ add r2, #0x68
+ ldrb r2, [r2]
+ ldr r0, [r0, #4]
+ add r3, r1, #0
+ bl FUN_0200AD38
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r2, #4]
+ ldr r1, [r2, #8]
+ ldr r2, [r2, #0x50]
+ bl FUN_0200B7B8
+ mov r0, #0x18
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DA6B8 ; =0x0001020F
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r4, #0xc]
+ ldr r2, [r2, #8]
+ mov r3, #0xa0
+ bl FUN_0201BDE0
+ mov r0, #0x30
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DA6B8 ; =0x0001020F
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r4, #0xc]
+ ldr r2, [r2, #0x54]
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x1c]
+ ldr r2, [r4, #0x24]
+ ldr r0, [r0, #4]
+ ldr r2, [r2, #0x58]
+ mov r3, #4
+ bl FUN_0200AD38
+ ldr r0, [r4, #0x24]
+ ldr r0, [r0, #0x58]
+ cmp r0, #1
+ bne _021DA618
+ mov r2, #3
+ b _021DA61A
+_021DA618:
+ mov r2, #5
+_021DA61A:
+ ldr r3, [r4, #0x1c]
+ lsl r2, r2, #2
+ add r2, r3, r2
+ ldr r0, [r3, #4]
+ ldr r1, [r3, #8]
+ ldr r2, [r2, #0x4c]
+ bl FUN_0200B7B8
+ mov r0, #0x30
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DA6B8 ; =0x0001020F
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r4, #0xc]
+ ldr r2, [r2, #8]
+ mov r3, #0xa0
+ bl FUN_0201BDE0
+ mov r0, #0x44
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DA6B8 ; =0x0001020F
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r4, #0xc]
+ ldr r2, [r2, #0x5c]
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x1c]
+ ldr r2, [r4, #0x24]
+ ldr r0, [r0, #4]
+ ldr r2, [r2, #0x5c]
+ mov r3, #4
+ bl FUN_0200AD38
+ ldr r0, [r4, #0x24]
+ ldr r0, [r0, #0x5c]
+ cmp r0, #1
+ bne _021DA680
+ mov r2, #3
+ b _021DA682
+_021DA680:
+ mov r2, #5
+_021DA682:
+ ldr r3, [r4, #0x1c]
+ lsl r2, r2, #2
+ add r2, r3, r2
+ ldr r0, [r3, #4]
+ ldr r1, [r3, #8]
+ ldr r2, [r2, #0x4c]
+ bl FUN_0200B7B8
+ mov r0, #0x44
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DA6B8 ; =0x0001020F
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r4, #0xc]
+ ldr r2, [r2, #8]
+ mov r3, #0xa0
+ bl FUN_0201BDE0
+ ldr r0, [r4, #0xc]
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_021DA6B8: .word 0x0001020F
+ thumb_func_end MOD73_021DA550
+
+ thumb_func_start MOD73_021DA6BC
+MOD73_021DA6BC: ; 0x021DA6BC
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r2, [r4, #0x24]
+ ldr r0, [r4, #0x1c]
+ add r2, #0x64
+ ldrb r2, [r2]
+ ldr r0, [r0, #4]
+ mov r1, #3
+ bl FUN_0200B628
+ mov r3, #2
+ str r3, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ ldr r2, [r4, #0x24]
+ ldr r0, [r4, #0x1c]
+ add r2, #0x65
+ ldrb r2, [r2]
+ ldr r0, [r0, #4]
+ bl FUN_0200AD38
+ mov r1, #2
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x1c]
+ ldr r2, [r4, #0x20]
+ ldr r0, [r0, #4]
+ add r3, r1, #0
+ bl FUN_0200AD38
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r2, #4]
+ ldr r1, [r2, #8]
+ ldr r2, [r2, #0x68]
+ bl FUN_0200B7B8
+ mov r0, #0x18
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DA72C ; =0x0001020F
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r4, #0x10]
+ ldr r2, [r2, #8]
+ mov r3, #0x10
+ bl FUN_0201BDE0
+ ldr r0, [r4, #0x10]
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021DA72C: .word 0x0001020F
+ thumb_func_end MOD73_021DA6BC
+
+ thumb_func_start MOD73_021DA730
+MOD73_021DA730: ; 0x021DA730
+ push {r3, lr}
+ cmp r1, #0
+ beq _021DA740
+ cmp r1, #1
+ beq _021DA746
+ cmp r1, #2
+ beq _021DA74C
+ pop {r3, pc}
+_021DA740:
+ bl MOD73_021DA4D4
+ pop {r3, pc}
+_021DA746:
+ bl MOD73_021DA550
+ pop {r3, pc}
+_021DA74C:
+ bl MOD73_021DA6BC
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DA730
+
+ thumb_func_start MOD73_021DA754
+MOD73_021DA754: ; 0x021DA754
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_02018744
+ ldr r0, [r4, #0xc]
+ bl FUN_02019570
+ ldr r0, [r4, #0x10]
+ bl FUN_02019570
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DA754
+
+ thumb_func_start MOD73_021DA770
+MOD73_021DA770: ; 0x021DA770
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ add r6, r1, #0
+ mov r1, #0xf
+ bl FUN_02019620
+ cmp r6, #6
+ bhi _021DA7EC
+ add r0, r6, r6
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DA790: ; jump table
+ .short _021DA79E - _021DA790 - 2 ; case 0
+ .short _021DA7CA - _021DA790 - 2 ; case 1
+ .short _021DA7D0 - _021DA790 - 2 ; case 2
+ .short _021DA7D6 - _021DA790 - 2 ; case 3
+ .short _021DA7DC - _021DA790 - 2 ; case 4
+ .short _021DA7E2 - _021DA790 - 2 ; case 5
+ .short _021DA7E8 - _021DA790 - 2 ; case 6
+_021DA79E:
+ mov r3, #0x51
+ ldr r2, [r4, #0x24]
+ lsl r3, r3, #2
+ ldrb r5, [r2, r3]
+ ldr r0, [r4, #0x1c]
+ sub r3, #0x10
+ lsl r5, r5, #2
+ add r2, r2, r5
+ ldr r0, [r0, #4]
+ ldr r2, [r2, r3]
+ mov r1, #0
+ bl FUN_0200ABC0
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r2, #4]
+ ldr r1, [r2, #8]
+ ldr r2, [r2, #0x18]
+ bl FUN_0200B7B8
+ ldr r0, [r4, #0x1c]
+ ldr r5, [r0, #8]
+ b _021DA7EC
+_021DA7CA:
+ ldr r0, [r4, #0x1c]
+ ldr r5, [r0, #0x1c]
+ b _021DA7EC
+_021DA7D0:
+ ldr r0, [r4, #0x1c]
+ ldr r5, [r0, #0x28]
+ b _021DA7EC
+_021DA7D6:
+ ldr r0, [r4, #0x1c]
+ ldr r5, [r0, #0x24]
+ b _021DA7EC
+_021DA7DC:
+ ldr r0, [r4, #0x1c]
+ ldr r5, [r0, #0x20]
+ b _021DA7EC
+_021DA7E2:
+ ldr r0, [r4, #0x1c]
+ ldr r5, [r0, #0x2c]
+ b _021DA7EC
+_021DA7E8:
+ ldr r0, [r4, #0x1c]
+ ldr r5, [r0, #0xc]
+_021DA7EC:
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, _021DA818 ; =0x0001020F
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ add r2, r5, #0
+ bl FUN_0201BDE0
+ mov r1, #0
+ ldr r0, [r4, #0x14]
+ mov r2, #1
+ add r3, r1, #0
+ bl FUN_0200D0BC
+ ldr r0, [r4, #0x14]
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DA818: .word 0x0001020F
+ thumb_func_end MOD73_021DA770
+
+ thumb_func_start MOD73_021DA81C
+MOD73_021DA81C: ; 0x021DA81C
+ ldr r3, _021DA824 ; =0x020DF4A4
+ mov r1, #0
+ ldr r2, _021DA828 ; =0x00000414
+ bx r3
+ .align 2, 0
+_021DA824: .word 0x020DF4A4
+_021DA828: .word 0x00000414
+ thumb_func_end MOD73_021DA81C
+
+ thumb_func_start MOD73_021DA82C
+MOD73_021DA82C: ; 0x021DA82C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021DA83A
+ bl ErrorHandling
+_021DA83A:
+ ldr r2, _021DA848 ; =0x00000414
+ add r0, r4, #0
+ mov r1, #0
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ nop
+_021DA848: .word 0x00000414
+ thumb_func_end MOD73_021DA82C
+
+ thumb_func_start MOD73_021DA84C
+MOD73_021DA84C: ; 0x021DA84C
+ str r1, [r0, #4]
+ str r2, [r0, #8]
+ str r3, [r0, #0xc]
+ mov r1, #1
+ str r1, [r0]
+ bx lr
+ thumb_func_end MOD73_021DA84C
+
+ thumb_func_start MOD73_021DA858
+MOD73_021DA858: ; 0x021DA858
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r5, r7, #0
+ mov r6, #0
+ add r4, r7, #0
+ add r5, #0x10
+_021DA864:
+ add r0, r4, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DA874
+ add r0, r5, #0
+ bl MOD73_021DAB30
+_021DA874:
+ add r6, r6, #1
+ add r4, #0x80
+ add r5, #0x80
+ cmp r6, #8
+ blt _021DA864
+ mov r0, #0
+ str r0, [r7]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD73_021DA858
+
+ thumb_func_start MOD73_021DA884
+MOD73_021DA884: ; 0x021DA884
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r5, #0
+ add r7, r1, #0
+ mov r6, #0
+ add r4, #0x10
+_021DA890:
+ add r0, r5, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DA8AE
+ add r0, r4, #0
+ bl MOD73_021DAB50
+ ldr r0, [r5, #0x20]
+ cmp r0, #0
+ beq _021DA8AE
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD73_021DABD0
+_021DA8AE:
+ add r6, r6, #1
+ add r5, #0x80
+ add r4, #0x80
+ cmp r6, #8
+ blt _021DA890
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DA884
+
+ thumb_func_start MOD73_021DA8BC
+MOD73_021DA8BC: ; 0x021DA8BC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0xb8
+ add r5, r0, #0
+ lsl r0, r1, #1
+ add r0, r1, r0
+ add r1, r2, r0
+ mov r0, #0x1c
+ add r2, r1, #0
+ mul r2, r0
+ ldr r0, _021DAA9C ; =0x021DBE7C
+ add r3, r0, r2
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x9c
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ add r0, r5, #0
+ bl MOD73_021DAAD0
+ str r0, [sp, #0x60]
+ cmp r0, #0
+ bne _021DA906
+ add r0, r5, #0
+ bl MOD73_021DAAF4
+ str r0, [sp, #0x60]
+ cmp r0, #0
+ bne _021DA900
+ bl ErrorHandling
+_021DA900:
+ ldr r0, [sp, #0x60]
+ bl MOD73_021DAB30
+_021DA906:
+ bl FUN_0201BA60
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ bl FUN_0201BA60
+ add r1, sp, #0x9c
+ ldrb r1, [r1, #0x11]
+ bl _u32_div_f
+ add r0, sp, #0x9c
+ ldrb r0, [r0, #0x10]
+ add r4, r0, r1
+ bl FUN_0201BA60
+ add r1, sp, #0x9c
+ ldrb r1, [r1, #0x13]
+ bl _u32_div_f
+ add r0, sp, #0x9c
+ ldrb r0, [r0, #0x12]
+ add r0, r0, r1
+ add r0, r0, r4
+ asr r1, r6, #4
+ lsl r2, r1, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x6c]
+ asr r0, r0, #0x1f
+ lsl r3, r2, #1
+ ldr r1, _021DAAA0 ; =0x020FFA38
+ str r0, [sp, #0x70]
+ ldr r0, [sp, #0xa8]
+ ldrsh r6, [r1, r3]
+ lsl r3, r4, #0xc
+ add r2, r2, #1
+ str r3, [sp, #0x64]
+ asr r3, r3, #0x1f
+ lsl r2, r2, #1
+ str r0, [sp, #0x74]
+ asr r0, r0, #0x1f
+ str r3, [sp, #0x68]
+ ldrsh r4, [r1, r2]
+ str r0, [sp, #0x78]
+ bl FUN_0201BA60
+ ldr r1, [sp, #0xa0]
+ bl _u32_div_f
+ ldr r0, [sp, #0x9c]
+ ldr r2, [sp, #0x64]
+ add r0, r0, r1
+ str r0, [sp, #0x5c]
+ asr r0, r6, #0x1f
+ str r0, [sp, #0x7c]
+ ldr r1, [sp, #0x7c]
+ ldr r3, [sp, #0x68]
+ add r0, r6, #0
+ asr r7, r4, #0x1f
+ bl _ll_mul
+ str r1, [sp, #0x58]
+ str r0, [sp, #0x80]
+ ldr r1, [sp, #0x7c]
+ ldr r2, [sp, #0x6c]
+ ldr r3, [sp, #0x70]
+ add r0, r6, #0
+ bl _ll_mul
+ str r1, [sp, #0x50]
+ str r0, [sp, #0x84]
+ ldr r1, [sp, #0x7c]
+ ldr r2, [sp, #0x74]
+ ldr r3, [sp, #0x78]
+ add r0, r6, #0
+ bl _ll_mul
+ str r0, [sp, #0x88]
+ str r1, [sp, #0x98]
+ ldr r2, [sp, #0x64]
+ ldr r3, [sp, #0x68]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl _ll_mul
+ str r0, [sp, #0x8c]
+ str r1, [sp, #0x48]
+ ldr r2, [sp, #0x6c]
+ ldr r3, [sp, #0x70]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl _ll_mul
+ str r0, [sp, #0x90]
+ str r1, [sp, #0x40]
+ ldr r2, [sp, #0x74]
+ ldr r3, [sp, #0x78]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl _ll_mul
+ add r2, r0, #0
+ mov r4, #2
+ ldr r0, [sp, #0x88]
+ ldr r3, [sp, #0x98]
+ mov r6, #0
+ lsl r4, r4, #0xa
+ add r0, r0, r4
+ adc r3, r6
+ str r3, [sp, #0x98]
+ lsl r3, r3, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r3
+ str r0, [sp]
+ ldr r0, [sp, #0x8c]
+ ldr r3, [sp, #0x48]
+ add r0, r0, r4
+ adc r3, r6
+ str r3, [sp, #0x48]
+ mov r7, #6
+ lsl r3, r3, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r3
+ lsl r7, r7, #0x10
+ add r0, r0, r7
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x90]
+ ldr r3, [sp, #0x40]
+ add r0, r0, r4
+ adc r3, r6
+ str r3, [sp, #0x40]
+ lsl r3, r3, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r3
+ add r0, r0, r7
+ add r2, r2, r4
+ adc r1, r6
+ str r0, [sp, #8]
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ str r1, [sp, #0xc]
+ ldr r0, _021DAAA4 ; =0x0000019A
+ add r2, sp, #0x9c
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x5c]
+ mov r1, #0x38
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0xa4]
+ str r0, [sp, #0x18]
+ ldrb r0, [r2, #0x18]
+ str r0, [sp, #0x1c]
+ ldrb r0, [r2, #0x14]
+ str r0, [sp, #0x20]
+ ldrb r3, [r2, #0x15]
+ ldr r0, [r5, #8]
+ mul r1, r3
+ add r0, r0, r1
+ str r0, [sp, #0x24]
+ ldrb r0, [r2, #0x16]
+ str r0, [sp, #0x28]
+ ldr r0, [r5, #4]
+ str r0, [sp, #0x2c]
+ ldr r0, [r5, #0xc]
+ str r0, [sp, #0x30]
+ ldrb r0, [r2, #0x19]
+ str r0, [sp, #0x34]
+ ldrb r0, [r2, #0x1a]
+ str r0, [sp, #0x38]
+ ldrb r1, [r2, #0x17]
+ ldr r2, [sp, #0x80]
+ ldr r0, [sp, #0x60]
+ add r3, r2, r4
+ ldr r2, [sp, #0x58]
+ adc r2, r6
+ str r2, [sp, #0x58]
+ lsl r2, r2, #0x14
+ lsr r3, r3, #0xc
+ orr r3, r2
+ lsl r2, r4, #8
+ add r2, r3, r2
+ ldr r3, [sp, #0x84]
+ add r7, r3, r4
+ ldr r3, [sp, #0x50]
+ adc r3, r6
+ str r3, [sp, #0x50]
+ lsl r3, r3, #0x14
+ lsr r6, r7, #0xc
+ orr r6, r3
+ lsl r3, r4, #8
+ add r3, r6, r3
+ bl MOD73_021DAC9C
+ mov r1, #0x41
+ lsl r1, r1, #4
+ ldr r2, [r5, r1]
+ ldr r0, [sp, #0x60]
+ str r2, [r0, #0x7c]
+ ldr r0, [r5, r1]
+ add r0, r0, #1
+ str r0, [r5, r1]
+ add sp, #0xb8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DAA9C: .word 0x021DBE7C
+_021DAAA0: .word 0x020FFA38
+_021DAAA4: .word 0x0000019A
+ thumb_func_end MOD73_021DA8BC
+
+ thumb_func_start MOD73_021DAAA8
+MOD73_021DAAA8: ; 0x021DAAA8
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r5, #0
+ mov r6, #0
+ add r4, #0x10
+_021DAAB2:
+ add r0, r5, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DAAC2
+ add r0, r4, #0
+ bl MOD73_021DAD44
+_021DAAC2:
+ add r6, r6, #1
+ add r5, #0x80
+ add r4, #0x80
+ cmp r6, #8
+ blt _021DAAB2
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DAAA8
+
+ thumb_func_start MOD73_021DAAD0
+MOD73_021DAAD0: ; 0x021DAAD0
+ mov r2, #0
+ add r3, r0, #0
+_021DAAD4:
+ add r1, r3, #0
+ add r1, #0x88
+ ldr r1, [r1]
+ cmp r1, #0
+ bne _021DAAE6
+ add r0, #0x10
+ lsl r1, r2, #7
+ add r0, r0, r1
+ bx lr
+_021DAAE6:
+ add r2, r2, #1
+ add r3, #0x80
+ cmp r2, #8
+ blt _021DAAD4
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD73_021DAAD0
+
+ thumb_func_start MOD73_021DAAF4
+MOD73_021DAAF4: ; 0x021DAAF4
+ push {r4, r5}
+ mov r2, #0
+ add r3, r0, #0
+ add r1, r2, #0
+ add r3, #0x10
+_021DAAFE:
+ add r4, r0, #0
+ add r4, #0x88
+ ldr r4, [r4]
+ cmp r4, #0
+ beq _021DAB1E
+ cmp r2, #0
+ bne _021DAB10
+ add r2, r3, #0
+ b _021DAB1E
+_021DAB10:
+ add r4, r0, #0
+ add r4, #0x8c
+ ldr r5, [r2, #0x7c]
+ ldr r4, [r4]
+ cmp r5, r4
+ ble _021DAB1E
+ add r2, r3, #0
+_021DAB1E:
+ add r1, r1, #1
+ add r0, #0x80
+ add r3, #0x80
+ cmp r1, #8
+ blt _021DAAFE
+ add r0, r2, #0
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD73_021DAAF4
+
+ thumb_func_start MOD73_021DAB30
+MOD73_021DAB30: ; 0x021DAB30
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x78]
+ cmp r0, #0
+ bne _021DAB3E
+ bl ErrorHandling
+_021DAB3E:
+ ldr r0, [r4, #0x78]
+ bl FUN_0201FFC8
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x80
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ thumb_func_end MOD73_021DAB30
+
+ thumb_func_start MOD73_021DAB50
+MOD73_021DAB50: ; 0x021DAB50
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021DABA2
+ add r0, r4, #0
+ add r0, #0x30
+ bl MOD73_021D962C
+ str r0, [r4, #4]
+ add r0, r4, #0
+ add r0, #0x48
+ bl MOD73_021D962C
+ add r0, r4, #0
+ add r0, #0x60
+ bl MOD73_021D962C
+ ldr r0, [r4, #0x30]
+ add r1, r4, #0
+ str r0, [r4, #0x14]
+ ldr r0, [r4, #0x48]
+ add r1, #0x14
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x78]
+ bl FUN_02020044
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021DABA2
+ ldr r0, [r4, #0x60]
+ add r1, r4, #0
+ str r0, [r4, #0x20]
+ ldr r0, [r4, #0x60]
+ add r1, #0x20
+ str r0, [r4, #0x24]
+ ldr r0, [r4, #0x60]
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x78]
+ bl FUN_02020064
+_021DABA2:
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ bne _021DABB6
+ ldr r0, [r4, #0x78]
+ bl FUN_02020388
+ cmp r0, #0
+ bne _021DABB6
+ mov r0, #1
+ str r0, [r4, #8]
+_021DABB6:
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _021DABCE
+ ldr r0, [r4, #4]
+ cmp r0, #1
+ bne _021DABCE
+ ldr r0, [r4, #8]
+ cmp r0, #1
+ bne _021DABCE
+ add r0, r4, #0
+ bl MOD73_021DAB30
+_021DABCE:
+ pop {r4, pc}
+ thumb_func_end MOD73_021DAB50
+
+ thumb_func_start MOD73_021DABD0
+MOD73_021DABD0: ; 0x021DABD0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ cmp r0, #1
+ bne _021DAC94
+ ldr r0, [r5, #8]
+ cmp r0, #1
+ bne _021DAC94
+ add r0, r1, #0
+ add r0, #0xa4
+ ldrb r0, [r0]
+ ldr r2, [r5, #0x2c]
+ cmp r0, #0
+ bne _021DABF6
+ add r1, #0xa2
+ ldrh r0, [r1]
+ add r0, r2, r0
+ b _021DABFC
+_021DABF6:
+ add r1, #0xa2
+ ldrh r0, [r1]
+ sub r0, r2, r0
+_021DABFC:
+ str r0, [r5, #0x2c]
+ mov r0, #2
+ ldr r1, [r5, #0x14]
+ lsl r0, r0, #0x12
+ sub r4, r1, r0
+ mov r0, #6
+ mov r2, #0
+ ldr r1, [r5, #0x18]
+ lsl r0, r0, #0x10
+ sub r6, r1, r0
+ asr r0, r4, #0xc
+ asr r1, r6, #0xc
+ add r3, r2, #0
+ bl FUN_0201CBEC
+ add r7, r0, #0
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FX_Atan2
+ lsl r6, r7, #0xc
+ ldr r1, [r5, #0x2c]
+ asr r7, r6, #0x1f
+ add r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #4
+ lsl r4, r0, #1
+ add r0, r4, #1
+ lsl r1, r0, #1
+ ldr r0, _021DAC98 ; =0x020FFA38
+ add r2, r6, #0
+ ldrsh r0, [r0, r1]
+ add r3, r7, #0
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ add r2, r0, #0
+ mov r0, #2
+ mov r3, #0
+ lsl r0, r0, #0xa
+ add r0, r2, r0
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ str r0, [sp]
+ ldr r0, _021DAC98 ; =0x020FFA38
+ lsl r1, r4, #1
+ ldrsh r0, [r0, r1]
+ add r2, r6, #0
+ add r3, r7, #0
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ ldr r3, [sp]
+ lsl r1, r2, #8
+ add r1, r3, r1
+ str r1, [sp]
+ mov r1, #6
+ lsl r1, r1, #0x10
+ str r0, [sp, #4]
+ add r0, r0, r1
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x78]
+ add r1, sp, #0
+ bl FUN_02020044
+_021DAC94:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DAC98: .word 0x020FFA38
+ thumb_func_end MOD73_021DABD0
+
+ thumb_func_start MOD73_021DAC9C
+MOD73_021DAC9C: ; 0x021DAC9C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, [sp, #0x40]
+ str r1, [r5]
+ add r4, r2, #0
+ str r0, [sp]
+ add r0, r5, #0
+ add r2, r3, #0
+ ldr r3, [sp, #0x20]
+ add r0, #0x30
+ add r1, r4, #0
+ ldr r6, [sp, #0x30]
+ bl MOD73_021D95CC
+ ldr r0, [sp, #0x40]
+ ldr r1, [sp, #0x24]
+ str r0, [sp]
+ add r0, r5, #0
+ ldr r2, [sp, #0x28]
+ ldr r3, [sp, #0x2c]
+ add r0, #0x48
+ bl MOD73_021D95CC
+ ldr r0, [sp, #0x40]
+ ldr r2, [sp, #0x34]
+ str r0, [sp]
+ add r0, r5, #0
+ ldr r3, [sp, #0x38]
+ add r0, #0x60
+ add r1, r6, #0
+ bl MOD73_021D95CC
+ ldr r3, [sp, #0x24]
+ str r4, [r5, #0x14]
+ str r3, [r5, #0x18]
+ str r6, [r5, #0x20]
+ str r6, [r5, #0x24]
+ ldr r0, [sp, #0x3c]
+ str r6, [r5, #0x28]
+ str r0, [r5, #0xc]
+ ldr r0, [sp, #0x54]
+ ldr r1, [sp, #0x44]
+ str r0, [r5, #0x10]
+ mov r0, #0
+ str r0, [sp]
+ add r0, sp, #0x58
+ ldrb r0, [r0]
+ add r2, r4, #0
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x50]
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x4c]
+ bl MOD73_021D9540
+ str r0, [r5, #0x78]
+ cmp r0, #0
+ bne _021DAD14
+ bl ErrorHandling
+_021DAD14:
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ beq _021DAD26
+ add r1, r5, #0
+ ldr r0, [r5, #0x78]
+ add r1, #0x20
+ mov r2, #2
+ bl FUN_02020074
+_021DAD26:
+ ldr r0, [r5, #0x78]
+ ldr r1, [sp, #0x48]
+ bl FUN_02020130
+ ldr r0, [r5, #0x78]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, [r5, #0x78]
+ mov r1, #2
+ bl FUN_02020238
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DAC9C
+
+ thumb_func_start MOD73_021DAD44
+MOD73_021DAD44: ; 0x021DAD44
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #1
+ bne _021DAD72
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ ldr r1, [r4, #0x60]
+ add r0, #0x60
+ mov r2, #0xcd
+ mov r3, #0
+ bl MOD73_021D95CC
+ mov r0, #0
+ str r0, [r4]
+ mov r0, #1
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x78]
+ mov r1, #2
+ bl FUN_020200EC
+_021DAD72:
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DAD44
+
+ thumb_func_start MOD73_021DAD78
+MOD73_021DAD78: ; 0x021DAD78
+ ldr r3, _021DAD80 ; =0x020DF4A4
+ mov r1, #0
+ mov r2, #0x80
+ bx r3
+ .align 2, 0
+_021DAD80: .word 0x020DF4A4
+ thumb_func_end MOD73_021DAD78
+
+ thumb_func_start MOD73_021DAD84
+MOD73_021DAD84: ; 0x021DAD84
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x7c]
+ cmp r0, #0
+ beq _021DAD92
+ bl ErrorHandling
+_021DAD92:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x80
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DAD84
+
+ thumb_func_start MOD73_021DADA0
+MOD73_021DADA0: ; 0x021DADA0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r6, r0, #0
+ ldr r0, [r6, #0x7c]
+ add r7, r1, #0
+ str r2, [sp, #0x18]
+ cmp r0, #0
+ beq _021DADB4
+ bl ErrorHandling
+_021DADB4:
+ str r7, [r6]
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x1f
+ str r0, [sp, #8]
+ mov r0, #0x1e
+ str r0, [sp, #0xc]
+ ldr r0, _021DAE20 ; =0x00001B58
+ add r1, r6, #4
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x18]
+ mov r2, #0x7a
+ str r0, [sp, #0x14]
+ add r0, r7, #0
+ mov r3, #0x21
+ bl MOD73_021D9340
+ mov r4, #0
+ add r5, r6, #0
+_021DADDE:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x18]
+ mov r2, #2
+ mov r3, #6
+ str r0, [sp, #8]
+ add r0, r7, #0
+ add r1, r6, #4
+ lsl r2, r2, #0x12
+ lsl r3, r3, #0x10
+ bl MOD73_021D9540
+ str r0, [r5, #0x3c]
+ cmp r4, #2
+ blt _021DAE06
+ ldr r0, [r5, #0x3c]
+ mov r1, #1
+ bl FUN_02020130
+_021DAE06:
+ ldr r0, [r5, #0x3c]
+ mov r1, #0
+ bl FUN_020200A0
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #4
+ blt _021DADDE
+ mov r0, #1
+ str r0, [r6, #0x7c]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DAE20: .word 0x00001B58
+ thumb_func_end MOD73_021DADA0
+
+ thumb_func_start MOD73_021DAE24
+MOD73_021DAE24: ; 0x021DAE24
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, [r6, #0x7c]
+ cmp r0, #1
+ beq _021DAE32
+ bl ErrorHandling
+_021DAE32:
+ mov r4, #0
+ add r5, r6, #0
+_021DAE36:
+ ldr r0, [r5, #0x3c]
+ bl FUN_0201FFC8
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #4
+ blt _021DAE36
+ ldr r0, [r6]
+ add r1, r6, #4
+ bl MOD73_021D94F4
+ mov r0, #0
+ str r0, [r6, #0x7c]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DAE24
+
+ thumb_func_start MOD73_021DAE54
+MOD73_021DAE54: ; 0x021DAE54
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+ add r5, #0x3c
+_021DAE5C:
+ cmp r4, #2
+ beq _021DAE64
+ cmp r4, #0
+ bne _021DAE6C
+_021DAE64:
+ add r0, r5, #0
+ bl MOD73_021DAEFC
+ b _021DAE72
+_021DAE6C:
+ add r0, r5, #0
+ bl MOD73_021DAF34
+_021DAE72:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #4
+ blt _021DAE5C
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD73_021DAE54
+
+ thumb_func_start MOD73_021DAE7C
+MOD73_021DAE7C: ; 0x021DAE7C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #4
+ blt _021DAE8A
+ bl ErrorHandling
+_021DAE8A:
+ cmp r5, #2
+ beq _021DAE92
+ cmp r5, #0
+ bne _021DAE9E
+_021DAE92:
+ add r4, #0x3c
+ lsl r0, r5, #4
+ add r0, r4, r0
+ bl MOD73_021DAEEC
+ pop {r3, r4, r5, pc}
+_021DAE9E:
+ add r4, #0x3c
+ lsl r0, r5, #4
+ add r0, r4, r0
+ bl MOD73_021DAF28
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DAE7C
+
+ thumb_func_start MOD73_021DAEAC
+MOD73_021DAEAC: ; 0x021DAEAC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #4
+ blt _021DAEBA
+ bl ErrorHandling
+_021DAEBA:
+ lsl r0, r5, #4
+ mov r1, #0
+ add r0, r4, r0
+ str r1, [r0, #0x48]
+ ldr r0, [r0, #0x3c]
+ bl FUN_020200A0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DAEAC
+
+ thumb_func_start MOD73_021DAECC
+MOD73_021DAECC: ; 0x021DAECC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #4
+ blt _021DAEDA
+ bl ErrorHandling
+_021DAEDA:
+ lsl r0, r5, #4
+ add r0, r4, r0
+ ldr r0, [r0, #0x48]
+ cmp r0, #0
+ bne _021DAEE8
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DAEE8:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD73_021DAECC
+
+ thumb_func_start MOD73_021DAEEC
+MOD73_021DAEEC: ; 0x021DAEEC
+ mov r1, #0
+ str r1, [r0, #4]
+ mov r1, #3
+ str r1, [r0, #8]
+ mov r1, #1
+ str r1, [r0, #0xc]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD73_021DAEEC
+
+ thumb_func_start MOD73_021DAEFC
+MOD73_021DAEFC: ; 0x021DAEFC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0
+ beq _021DAF24
+ bl MOD73_021DAF34
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021DAF24
+ ldr r0, [r4, #8]
+ sub r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0
+ bgt _021DAF24
+ mov r1, #0
+ str r1, [r4, #0xc]
+ ldr r0, [r4]
+ bl FUN_020200A0
+_021DAF24:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DAEFC
+
+ thumb_func_start MOD73_021DAF28
+MOD73_021DAF28: ; 0x021DAF28
+ mov r1, #0
+ str r1, [r0, #4]
+ mov r1, #1
+ str r1, [r0, #0xc]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD73_021DAF28
+
+ thumb_func_start MOD73_021DAF34
+MOD73_021DAF34: ; 0x021DAF34
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021DAF6C
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021DAF4E
+ ldr r0, [r4]
+ mov r1, #1
+ bl FUN_020200A0
+ b _021DAF66
+_021DAF4E:
+ cmp r0, #8
+ bne _021DAF5C
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_020200A0
+ b _021DAF66
+_021DAF5C:
+ cmp r0, #0x10
+ bne _021DAF66
+ mov r0, #0
+ str r0, [r4, #4]
+ pop {r4, pc}
+_021DAF66:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+_021DAF6C:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DAF34
+
+ thumb_func_start MOD73_021DAF70
+MOD73_021DAF70: ; 0x021DAF70
+ push {r3, r4, r5, lr}
+ ldr r2, _021DAF84 ; =0x0000090C
+ add r4, r1, #0
+ mov r1, #0
+ add r5, r0, #0
+ bl Call_FillMemWithValue
+ str r4, [r5, #4]
+ pop {r3, r4, r5, pc}
+ nop
+_021DAF84: .word 0x0000090C
+ thumb_func_end MOD73_021DAF70
+
+ thumb_func_start MOD73_021DAF88
+MOD73_021DAF88: ; 0x021DAF88
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021DAF96
+ bl ErrorHandling
+_021DAF96:
+ ldr r2, _021DAFA4 ; =0x0000090C
+ add r0, r4, #0
+ mov r1, #0
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ nop
+_021DAFA4: .word 0x0000090C
+ thumb_func_end MOD73_021DAF88
+
+ thumb_func_start MOD73_021DAFA8
+MOD73_021DAFA8: ; 0x021DAFA8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r2, #0
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x10]
+ add r7, r3, #0
+ mov r4, #0
+ add r5, r0, #0
+ add r6, #0x38
+_021DAFBA:
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ mov r2, #0
+ ldr r0, [sp, #0x10]
+ add r1, r6, #0
+ add r3, r2, #0
+ str r7, [sp, #8]
+ bl MOD73_021D9540
+ mov r1, #0
+ str r0, [r5, #0x50]
+ bl FUN_020200A0
+ add r4, r4, #1
+ add r5, #0x48
+ cmp r4, #0x20
+ blt _021DAFBA
+ ldr r0, [sp, #0xc]
+ mov r1, #1
+ str r1, [r0]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DAFA8
+
+ thumb_func_start MOD73_021DAFEC
+MOD73_021DAFEC: ; 0x021DAFEC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_021DAFF4:
+ ldr r0, [r5, #0x50]
+ bl FUN_0201FFC8
+ add r4, r4, #1
+ add r5, #0x48
+ cmp r4, #0x20
+ blt _021DAFF4
+ mov r0, #0
+ str r0, [r6]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD73_021DAFEC
+
+ thumb_func_start MOD73_021DB008
+MOD73_021DB008: ; 0x021DB008
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+ add r5, #0xc
+_021DB010:
+ add r0, r5, #0
+ bl MOD73_021DB14C
+ add r4, r4, #1
+ add r5, #0x48
+ cmp r4, #0x20
+ blt _021DB010
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD73_021DB008
+
+ thumb_func_start MOD73_021DB020
+MOD73_021DB020: ; 0x021DB020
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ add r0, r1, #0
+ str r1, [sp, #0x10]
+ add r1, r2, #0
+ sub r0, #0x80
+ sub r1, #0x60
+ str r2, [sp, #0x14]
+ bl FX_Atan2
+ asr r0, r0, #4
+ lsl r1, r0, #1
+ add r0, r1, #1
+ ldr r7, _021DB124 ; =0x020FFA38
+ lsl r0, r0, #1
+ ldrsh r3, [r7, r0]
+ asr r6, r3, #0x1f
+ lsr r2, r3, #0x10
+ lsl r0, r6, #0x10
+ orr r0, r2
+ mov r2, #2
+ lsl r5, r3, #0x10
+ lsl r2, r2, #0xa
+ add r5, r5, r2
+ ldr r2, _021DB128 ; =0x00000000
+ adc r0, r2
+ lsr r2, r5, #0xc
+ lsl r0, r0, #0x14
+ str r2, [sp, #0x18]
+ orr r2, r0
+ lsl r0, r1, #1
+ str r2, [sp, #0x18]
+ ldrsh r2, [r7, r0]
+ asr r0, r2, #0x1f
+ mov ip, r0
+ lsr r1, r2, #0x10
+ lsl r0, r0, #0x10
+ orr r0, r1
+ mov r1, #2
+ lsl r5, r2, #0x10
+ lsl r1, r1, #0xa
+ add r1, r5, r1
+ ldr r5, _021DB128 ; =0x00000000
+ adc r0, r5
+ lsr r7, r1, #0xc
+ lsl r0, r0, #0x14
+ orr r7, r0
+ lsr r0, r3, #0x14
+ lsl r1, r6, #0xc
+ orr r1, r0
+ mov r0, #2
+ lsl r3, r3, #0xc
+ lsl r0, r0, #0xa
+ add r0, r3, r0
+ ldr r3, _021DB128 ; =0x00000000
+ adc r1, r3
+ lsr r6, r0, #0xc
+ lsl r1, r1, #0x14
+ orr r6, r1
+ mov r1, ip
+ lsr r0, r2, #0x14
+ lsl r1, r1, #0xc
+ orr r1, r0
+ mov r0, #2
+ lsl r2, r2, #0xc
+ lsl r0, r0, #0xa
+ add r2, r2, r0
+ ldr r0, _021DB128 ; =0x00000000
+ adc r1, r0
+ lsl r0, r1, #0x14
+ lsr r5, r2, #0xc
+ orr r5, r0
+ add r0, r4, #0
+ bl MOD73_021DB12C
+ cmp r0, #0
+ beq _021DB0E0
+ mov r2, #2
+ ldr r1, [sp, #0x18]
+ lsl r2, r2, #0x12
+ add r1, r1, r2
+ str r1, [sp]
+ mov r1, #6
+ lsl r1, r1, #0x10
+ add r1, r7, r1
+ str r1, [sp, #4]
+ str r6, [sp, #8]
+ str r5, [sp, #0xc]
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0x14]
+ ldr r1, [r4, #8]
+ lsl r2, r2, #0xc
+ lsl r3, r3, #0xc
+ bl MOD73_021DB1A8
+_021DB0E0:
+ add r0, r4, #0
+ bl MOD73_021DB12C
+ cmp r0, #0
+ beq _021DB112
+ mov r2, #2
+ ldr r1, [sp, #0x18]
+ lsl r2, r2, #0x12
+ sub r1, r2, r1
+ str r1, [sp]
+ mov r1, #6
+ lsl r1, r1, #0x10
+ sub r1, r1, r7
+ str r1, [sp, #4]
+ neg r1, r6
+ str r1, [sp, #8]
+ neg r1, r5
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0x14]
+ str r1, [sp, #0xc]
+ ldr r1, [r4, #8]
+ lsl r2, r2, #0xc
+ lsl r3, r3, #0xc
+ bl MOD73_021DB1A8
+_021DB112:
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #4]
+ add r0, r0, #1
+ bl _s32_div_f
+ str r1, [r4, #8]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DB124: .word 0x020FFA38
+_021DB128: .word 0x00000000
+ thumb_func_end MOD73_021DB020
+
+ thumb_func_start MOD73_021DB12C
+MOD73_021DB12C: ; 0x021DB12C
+ mov r2, #0
+ add r3, r0, #0
+_021DB130:
+ ldr r1, [r3, #0xc]
+ cmp r1, #0
+ bne _021DB140
+ mov r1, #0x48
+ add r0, #0xc
+ mul r1, r2
+ add r0, r0, r1
+ bx lr
+_021DB140:
+ add r2, r2, #1
+ add r3, #0x48
+ cmp r2, #0x20
+ blt _021DB130
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD73_021DB12C
+
+ thumb_func_start MOD73_021DB14C
+MOD73_021DB14C: ; 0x021DB14C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021DB18C
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021DB180
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD73_021D962C
+ str r0, [r4, #4]
+ add r0, r4, #0
+ add r0, #0x2c
+ bl MOD73_021D962C
+ ldr r0, [r4, #0x14]
+ add r1, r4, #0
+ str r0, [r4, #8]
+ ldr r0, [r4, #0x2c]
+ add r1, #8
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x44]
+ bl FUN_02020044
+_021DB180:
+ ldr r0, [r4, #4]
+ cmp r0, #1
+ bne _021DB18C
+ add r0, r4, #0
+ bl MOD73_021DB190
+_021DB18C:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DB14C
+
+ thumb_func_start MOD73_021DB190
+MOD73_021DB190: ; 0x021DB190
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021DB1A6
+ ldr r0, [r4, #0x44]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0
+ str r0, [r4]
+_021DB1A6:
+ pop {r4, pc}
+ thumb_func_end MOD73_021DB190
+
+ thumb_func_start MOD73_021DB1A8
+MOD73_021DB1A8: ; 0x021DB1A8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r0, #0x10
+ add r4, r2, #0
+ add r6, r3, #0
+ str r0, [sp]
+ add r0, r5, #0
+ add r7, r1, #0
+ ldr r2, [sp, #0x18]
+ ldr r3, [sp, #0x20]
+ add r0, #0x14
+ add r1, r4, #0
+ bl MOD73_021D95CC
+ mov r0, #0x10
+ str r0, [sp]
+ add r0, r5, #0
+ ldr r2, [sp, #0x1c]
+ ldr r3, [sp, #0x24]
+ add r0, #0x2c
+ add r1, r6, #0
+ bl MOD73_021D95CC
+ str r4, [r5, #8]
+ str r6, [r5, #0xc]
+ ldr r0, [r5, #0x44]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [r5, #0x44]
+ add r1, r7, #0
+ bl FUN_02020130
+ ldr r0, [r5, #0x44]
+ bl FUN_02020198
+ ldr r0, [r5, #0x44]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, [r5, #0x44]
+ mov r1, #2
+ bl FUN_02020238
+ mov r0, #1
+ str r0, [r5]
+ mov r0, #0
+ str r0, [r5, #4]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DB1A8
+
+ thumb_func_start MOD73_021DB20C
+MOD73_021DB20C: ; 0x021DB20C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #2
+ add r4, r1, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ mov r1, #1
+ add r6, r2, #0
+ add r7, r3, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02088320
+ str r0, [r5]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ lsl r2, r4, #0x10
+ lsl r3, r6, #0x10
+ ldr r0, [r5]
+ add r1, r7, #0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_02088490
+ str r0, [r5, #4]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DB20C
+
+ thumb_func_start MOD73_021DB24C
+MOD73_021DB24C: ; 0x021DB24C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ bl FUN_02088694
+ ldr r0, [r4]
+ bl FUN_02088360
+ pop {r4, pc}
+ thumb_func_end MOD73_021DB24C
+
+ thumb_func_start MOD73_021DB260
+MOD73_021DB260: ; 0x021DB260
+ ldr r3, _021DB268 ; =0x02088485
+ ldr r0, [r0]
+ bx r3
+ nop
+_021DB268: .word 0x02088485
+ thumb_func_end MOD73_021DB260
+
+ thumb_func_start MOD73_021DB26C
+MOD73_021DB26C: ; 0x021DB26C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ add r4, r2, #0
+ bl FUN_02014590
+ str r0, [r5]
+ str r4, [r5, #4]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DB26C
+
+ thumb_func_start MOD73_021DB280
+MOD73_021DB280: ; 0x021DB280
+ ldr r3, _021DB288 ; =0x020145A9
+ ldr r0, [r0]
+ bx r3
+ nop
+_021DB288: .word 0x020145A9
+ thumb_func_end MOD73_021DB280
+
+ thumb_func_start MOD73_021DB28C
+MOD73_021DB28C: ; 0x021DB28C
+ push {lr}
+ sub sp, #0x14
+ ldr r1, [r0, #4]
+ mov r2, #0x18
+ str r1, [sp]
+ mov r1, #2
+ str r1, [sp, #4]
+ mov r1, #0xaf
+ str r1, [sp, #8]
+ mov r1, #5
+ str r1, [sp, #0xc]
+ add r1, sp, #0
+ strb r2, [r1, #0x10]
+ mov r2, #8
+ strb r2, [r1, #0x11]
+ ldr r0, [r0]
+ add r1, sp, #0
+ bl FUN_020145C8
+ add sp, #0x14
+ pop {pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DB28C
+
+ thumb_func_start MOD73_021DB2B8
+MOD73_021DB2B8: ; 0x021DB2B8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ bl FUN_0201466C
+ add r4, r0, #0
+ beq _021DB2CC
+ ldr r0, [r5]
+ bl FUN_020146C4
+_021DB2CC:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD73_021DB2B8
+
+ thumb_func_start MOD73_021DB2D0
+MOD73_021DB2D0: ; 0x021DB2D0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r1, r3, #0
+ ldr r3, [sp, #0x1c]
+ add r5, r0, #0
+ ldr r6, [sp, #0x18]
+ add r0, r2, #0
+ sub r4, r4, r3
+ sub r1, r1, r3
+ mov r3, #0
+ str r3, [sp]
+ sub r2, r5, r6
+ sub r0, r0, r6
+ add r3, r4, #0
+ bl FUN_0201BBD0
+ mov r1, #0xa0
+ mul r1, r0
+ add r0, r1, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD73_021DB2D0
+
+ thumb_func_start MOD73_021DB2FC
+MOD73_021DB2FC: ; 0x021DB2FC
+ add r3, r0, #0
+ mov r2, #0x18
+ mov r1, #0
+_021DB302:
+ strb r1, [r3]
+ add r3, r3, #1
+ sub r2, r2, #1
+ bne _021DB302
+ mov r2, #0x80
+ str r2, [r0]
+ mov r1, #0x60
+ str r1, [r0, #4]
+ str r2, [r0, #8]
+ str r1, [r0, #0xc]
+ bx lr
+ thumb_func_end MOD73_021DB2FC
+
+ thumb_func_start MOD73_021DB318
+MOD73_021DB318: ; 0x021DB318
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, _021DB364 ; =0x021C48F8
+ ldrh r1, [r0, #0x22]
+ cmp r1, #0
+ beq _021DB33C
+ ldrh r1, [r0, #0x1c]
+ str r1, [r4]
+ ldrh r0, [r0, #0x1e]
+ str r0, [r4, #4]
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ bne _021DB33C
+ ldr r0, [r4]
+ str r0, [r4, #8]
+ ldr r0, [r4, #4]
+ str r0, [r4, #0xc]
+_021DB33C:
+ mov r0, #0x80
+ str r0, [sp]
+ mov r0, #0x60
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ ldr r3, [r4, #0xc]
+ bl MOD73_021DB2D0
+ str r0, [r4, #0x10]
+ ldr r0, [r4]
+ str r0, [r4, #8]
+ ldr r0, [r4, #4]
+ str r0, [r4, #0xc]
+ ldr r0, _021DB364 ; =0x021C48F8
+ ldrh r0, [r0, #0x22]
+ str r0, [r4, #0x14]
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_021DB364: .word 0x021C48F8
+ thumb_func_end MOD73_021DB318
+
+ thumb_func_start MOD73_021DB368
+MOD73_021DB368: ; 0x021DB368
+ ldr r2, [r1]
+ strb r2, [r0]
+ ldr r2, [r1, #4]
+ strb r2, [r0, #1]
+ ldr r1, [r1, #0x10]
+ cmp r1, #0
+ bge _021DB380
+ neg r1, r1
+ strh r1, [r0, #2]
+ mov r1, #1
+ strb r1, [r0, #4]
+ bx lr
+_021DB380:
+ strh r1, [r0, #2]
+ mov r1, #0
+ strb r1, [r0, #4]
+ bx lr
+ thumb_func_end MOD73_021DB368
+
+ thumb_func_start MOD73_021DB388
+MOD73_021DB388: ; 0x021DB388
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ add r1, r2, #0
+ mov r2, #0x80
+ mov r3, #0x60
+ bl FUN_0201CBEC
+ add r4, r0, #0
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ bge _021DB3A2
+ neg r0, r0
+_021DB3A2:
+ lsl r0, r0, #0x10
+ ldr r1, [r5]
+ lsr r0, r0, #0x10
+ bl MOD73_021DB644
+ asr r2, r0, #0x1f
+ lsl r3, r2, #0x12
+ lsr r1, r0, #0xe
+ orr r3, r1
+ mov r1, #2
+ lsl r2, r0, #0x12
+ mov r0, #0
+ lsl r1, r1, #0xa
+ add r2, r2, r1
+ adc r3, r0
+ lsl r1, r3, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r1
+ asr r1, r2, #0xc
+ cmp r4, #0x10
+ bhs _021DB3D0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DB3D0:
+ add r1, #8
+ cmp r4, r1
+ bls _021DB3D8
+ mov r0, #2
+_021DB3D8:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DB388
+
+ thumb_func_start MOD73_021DB3DC
+MOD73_021DB3DC: ; 0x021DB3DC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #1
+ str r0, [r5, #0x10]
+ mov r0, #0
+ add r4, r1, #0
+ str r2, [sp]
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, r2, #0
+ beq _021DB468
+_021DB3F6:
+ ldr r0, [sp, #0xc]
+ add r1, r4, r0
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldrb r1, [r1, r0]
+ mov r0, #0x1c
+ add r6, r1, #0
+ mul r6, r0
+ add r1, r4, r6
+ add r2, r4, r6
+ add r1, #0x90
+ add r2, #0x91
+ ldrb r1, [r1]
+ ldrb r2, [r2]
+ add r0, r5, #0
+ bl MOD73_021DB388
+ cmp r0, #0
+ beq _021DB426
+ cmp r0, #1
+ beq _021DB42E
+ cmp r0, #2
+ beq _021DB43E
+ b _021DB444
+_021DB426:
+ add r0, r4, r6
+ add r0, #0x92
+ ldrh r7, [r0]
+ b _021DB444
+_021DB42E:
+ add r0, r4, r6
+ add r0, #0x92
+ ldrh r0, [r0]
+ lsl r0, r0, #0xf
+ lsr r7, r0, #0x10
+ mov r0, #0
+ str r0, [r5, #0x10]
+ b _021DB444
+_021DB43E:
+ mov r7, #0
+ add r0, r7, #0
+ str r0, [r5, #0x10]
+_021DB444:
+ add r0, r4, r6
+ add r0, #0x94
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021DB456
+ ldr r0, [sp, #8]
+ add r0, r0, r7
+ str r0, [sp, #8]
+ b _021DB45C
+_021DB456:
+ ldr r0, [sp, #8]
+ sub r0, r0, r7
+ str r0, [sp, #8]
+_021DB45C:
+ ldr r0, [sp, #0xc]
+ add r1, r0, #1
+ ldr r0, [sp]
+ str r1, [sp, #0xc]
+ cmp r1, r0
+ blo _021DB3F6
+_021DB468:
+ ldr r0, [sp, #8]
+ ldr r1, [sp]
+ bl _s32_div_f
+ add r4, r0, #0
+ ldr r1, [r5]
+ ldr r0, _021DB550 ; =0x021DBF5C
+ ldrb r0, [r0, r1]
+ mov r1, #0x33
+ lsl r1, r1, #0xe
+ lsl r0, r0, #0xc
+ bl FX_Div
+ add r2, r0, #0
+ lsl r0, r4, #0xc
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r4, #2
+ mov r2, #0
+ lsl r4, r4, #0xa
+ add r4, r0, r4
+ adc r1, r2
+ lsl r0, r1, #0x14
+ lsr r1, r4, #0xc
+ orr r1, r0
+ ldr r3, [r5, #0xc]
+ asr r0, r1, #0xc
+ add r0, r3, r0
+ str r0, [r5, #0xc]
+ cmp r0, #0
+ ble _021DB4BC
+ ldr r1, [r5]
+ lsl r3, r1, #1
+ ldr r1, _021DB554 ; =0x021DBF68
+ ldrh r1, [r1, r3]
+ sub r0, r0, r1
+ str r0, [r5, #0xc]
+ bpl _021DB4D0
+ str r2, [r5, #0xc]
+ b _021DB4D0
+_021DB4BC:
+ bge _021DB4D0
+ ldr r1, [r5]
+ lsl r3, r1, #1
+ ldr r1, _021DB554 ; =0x021DBF68
+ ldrh r1, [r1, r3]
+ add r0, r0, r1
+ str r0, [r5, #0xc]
+ cmp r0, #0
+ ble _021DB4D0
+ str r2, [r5, #0xc]
+_021DB4D0:
+ ldr r1, [r5, #0xc]
+ ldr r0, _021DB558 ; =0x00000E38
+ cmp r1, r0
+ ble _021DB4DC
+ str r0, [r5, #0xc]
+ b _021DB4E4
+_021DB4DC:
+ ldr r0, _021DB55C ; =0xFFFFF1C8
+ cmp r1, r0
+ bge _021DB4E4
+ str r0, [r5, #0xc]
+_021DB4E4:
+ ldr r0, [r5, #0xc]
+ mov r1, #0xa0
+ ldr r4, [r5, #8]
+ bl _s32_div_f
+ add r1, r0, #0
+ mov r0, #0x44
+ bl FUN_0201BC84
+ ldr r1, [r5, #8]
+ add r0, r1, r0
+ str r0, [r5, #8]
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ bne _021DB508
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ bge _021DB514
+_021DB508:
+ ldr r0, [sp, #4]
+ cmp r0, #1
+ bne _021DB544
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ bge _021DB544
+_021DB514:
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ bne _021DB530
+ lsl r0, r4, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, [r5, #8]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r1, r0
+ ble _021DB544
+ ldr r0, [r5, #4]
+ add r0, r0, #1
+ str r0, [r5, #4]
+ b _021DB544
+_021DB530:
+ lsl r0, r4, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, [r5, #8]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r1, r0
+ bge _021DB544
+ ldr r0, [r5, #4]
+ add r0, r0, #1
+ str r0, [r5, #4]
+_021DB544:
+ ldr r0, [r5, #8]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DB550: .word 0x021DBF5C
+_021DB554: .word 0x021DBF68
+_021DB558: .word 0x00000E38
+_021DB55C: .word 0xFFFFF1C8
+ thumb_func_end MOD73_021DB3DC
+
+ thumb_func_start MOD73_021DB560
+MOD73_021DB560: ; 0x021DB560
+ ldr r0, [r0, #8]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+ thumb_func_end MOD73_021DB560
+
+ thumb_func_start MOD73_021DB568
+MOD73_021DB568: ; 0x021DB568
+ ldr r0, [r0, #4]
+ bx lr
+ thumb_func_end MOD73_021DB568
+
+ thumb_func_start MOD73_021DB56C
+MOD73_021DB56C: ; 0x021DB56C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #3
+ blt _021DB57A
+ bl ErrorHandling
+_021DB57A:
+ str r5, [r4]
+ mov r0, #0
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DB56C
+
+ thumb_func_start MOD73_021DB584
+MOD73_021DB584: ; 0x021DB584
+ ldr r0, [r0, #0xc]
+ bx lr
+ thumb_func_end MOD73_021DB584
+
+ thumb_func_start MOD73_021DB588
+MOD73_021DB588: ; 0x021DB588
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [r5, #0x18]
+ add r4, r1, #0
+ add r6, r2, #0
+ str r0, [r5, #0x10]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD73_021DB60C
+ cmp r0, #0
+ beq _021DB5C6
+ ldr r0, [r5, #0xc]
+ add r0, r0, #1
+ str r0, [r5, #0xc]
+ cmp r0, #0x1e
+ blo _021DB5C0
+ ldr r1, [r5, #4]
+ ldr r0, _021DB608 ; =0x0000270F
+ cmp r1, r0
+ bhs _021DB5B8
+ add r0, r1, #1
+ str r0, [r5, #4]
+_021DB5B8:
+ mov r0, #1
+ str r0, [r5, #0x18]
+ mov r0, #0
+ str r0, [r5, #0xc]
+_021DB5C0:
+ mov r0, #0
+ str r0, [r5, #0x14]
+ pop {r4, r5, r6, pc}
+_021DB5C6:
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD73_021DB62C
+ cmp r0, #0
+ beq _021DB602
+ ldr r0, [r5, #8]
+ add r0, r0, #1
+ str r0, [r5, #8]
+ cmp r0, #0x5a
+ blo _021DB606
+ mov r0, #0
+ str r0, [r5, #8]
+ ldr r0, [r5, #0x14]
+ cmp r0, #0
+ bne _021DB5F0
+ mov r0, #2
+ str r0, [r5, #0x10]
+ mov r0, #1
+ str r0, [r5, #0x14]
+ pop {r4, r5, r6, pc}
+_021DB5F0:
+ mov r0, #1
+ str r0, [r5, #0x10]
+ ldr r1, [r5]
+ ldr r0, _021DB608 ; =0x0000270F
+ cmp r1, r0
+ bhs _021DB606
+ add r0, r1, #1
+ str r0, [r5]
+ pop {r4, r5, r6, pc}
+_021DB602:
+ mov r0, #0
+ str r0, [r5, #0x14]
+_021DB606:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DB608: .word 0x0000270F
+ thumb_func_end MOD73_021DB588
+
+ thumb_func_start MOD73_021DB60C
+MOD73_021DB60C: ; 0x021DB60C
+ cmp r1, #2
+ bne _021DB614
+ mov r0, #0
+ bx lr
+_021DB614:
+ cmp r0, #0
+ bge _021DB61A
+ neg r0, r0
+_021DB61A:
+ ldr r1, _021DB628 ; =0x00000E38
+ cmp r0, r1
+ blt _021DB624
+ mov r0, #1
+ bx lr
+_021DB624:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021DB628: .word 0x00000E38
+ thumb_func_end MOD73_021DB60C
+
+ thumb_func_start MOD73_021DB62C
+MOD73_021DB62C: ; 0x021DB62C
+ cmp r0, #0
+ bge _021DB632
+ neg r0, r0
+_021DB632:
+ ldr r1, _021DB640 ; =0x0000038E
+ cmp r0, r1
+ bgt _021DB63C
+ mov r0, #1
+ bx lr
+_021DB63C:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021DB640: .word 0x0000038E
+ thumb_func_end MOD73_021DB62C
+
+ thumb_func_start MOD73_021DB644
+MOD73_021DB644: ; 0x021DB644
+ push {r3, lr}
+ ldr r1, _021DB678 ; =0x0000038E
+ sub r0, r0, r1
+ bpl _021DB64E
+ mov r0, #0
+_021DB64E:
+ lsl r2, r0, #0xc
+ asr r1, r2, #0x1f
+ lsr r0, r2, #0x16
+ lsl r3, r1, #0xa
+ orr r3, r0
+ mov r0, #2
+ lsl r2, r2, #0xa
+ mov r1, #0
+ lsl r0, r0, #0xa
+ add r0, r2, r0
+ adc r3, r1
+ lsl r1, r3, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ ldr r1, _021DB67C ; =0x00AAA000
+ bl FX_Div
+ mov r1, #1
+ lsl r1, r1, #0xc
+ add r0, r0, r1
+ pop {r3, pc}
+ .align 2, 0
+_021DB678: .word 0x0000038E
+_021DB67C: .word 0x00AAA000
+ thumb_func_end MOD73_021DB644
+
+ thumb_func_start MOD73_021DB680
+MOD73_021DB680: ; 0x021DB680
+ add r3, r0, #0
+ mov r2, #0x10
+ mov r1, #0
+_021DB686:
+ strb r1, [r3]
+ add r3, r3, #1
+ sub r2, r2, #1
+ bne _021DB686
+ mov r1, #2
+ str r1, [r0, #8]
+ sub r1, r1, #3
+ str r1, [r0, #4]
+ bx lr
+ thumb_func_end MOD73_021DB680
+
+ thumb_func_start MOD73_021DB698
+MOD73_021DB698: ; 0x021DB698
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r1, #0
+ str r1, [r5, #0xc]
+ add r1, r2, #0
+ add r6, r3, #0
+ bl MOD73_021DB718
+ cmp r0, #1
+ beq _021DB710
+ cmp r6, #1
+ beq _021DB710
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ bge _021DB70A
+ bl FUN_0201BA60
+ mov r1, #5
+ add r6, r0, #0
+ bl _u32_div_f
+ ldr r0, [r5, #8]
+ cmp r1, r0
+ bhi _021DB6D0
+ mov r1, #1
+ str r1, [r5, #0xc]
+ b _021DB6D6
+_021DB6D0:
+ mov r0, #1
+ mov r1, #0
+ str r0, [r5, #0xc]
+_021DB6D6:
+ ldr r0, [r5]
+ cmp r1, r0
+ bne _021DB6F4
+ cmp r0, #1
+ ldr r0, [r5, #8]
+ bne _021DB6EA
+ sub r0, r0, #1
+ bmi _021DB6FA
+ str r0, [r5, #8]
+ b _021DB6FA
+_021DB6EA:
+ add r0, r0, #1
+ cmp r0, #5
+ bge _021DB6FA
+ str r0, [r5, #8]
+ b _021DB6FA
+_021DB6F4:
+ str r1, [r5]
+ mov r0, #2
+ str r0, [r5, #8]
+_021DB6FA:
+ add r0, r6, #0
+ mov r1, #0x3c
+ bl _u32_div_f
+ ldr r0, _021DB714 ; =0x021DBFB0
+ ldrb r0, [r0, r4]
+ add r0, r0, r1
+ str r0, [r5, #4]
+_021DB70A:
+ ldr r0, [r5, #4]
+ sub r0, r0, #1
+ str r0, [r5, #4]
+_021DB710:
+ pop {r4, r5, r6, pc}
+ nop
+_021DB714: .word 0x021DBFB0
+ thumb_func_end MOD73_021DB698
+
+ thumb_func_start MOD73_021DB718
+MOD73_021DB718: ; 0x021DB718
+ cmp r1, #0
+ bge _021DB722
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _021DB72C
+_021DB722:
+ cmp r1, #0
+ ble _021DB730
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021DB730
+_021DB72C:
+ mov r0, #1
+ bx lr
+_021DB730:
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD73_021DB718
+
+ thumb_func_start MOD73_021DB734
+MOD73_021DB734: ; 0x021DB734
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r7, #0x1f
+ add r0, r1, #0
+ str r1, [sp]
+ add r6, r7, #0
+ bl MOD73_021DB568
+ add r4, r0, #0
+ mov r0, #0x96
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ cmp r1, r0
+ beq _021DB75A
+ ldr r1, [r5, #8]
+ ldr r0, _021DB7B8 ; =0x021DBF60
+ ldrb r0, [r0, r1]
+ cmp r4, r0
+ blt _021DB774
+_021DB75A:
+ ldr r0, [r5, #8]
+ mov r4, #0
+ add r0, r0, #1
+ str r0, [r5, #8]
+ str r4, [r5]
+ ldr r1, [r5, #8]
+ cmp r1, #3
+ blt _021DB76E
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB76E:
+ ldr r0, [sp]
+ bl MOD73_021DB56C
+_021DB774:
+ mov r0, #0x96
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ sub r1, r0, r1
+ cmp r1, #0x3c
+ bgt _021DB78C
+ mov r0, #0x1f
+ mul r0, r1
+ mov r1, #0x3c
+ bl _s32_div_f
+ add r7, r0, #0
+_021DB78C:
+ ldr r1, [r5, #8]
+ ldr r0, _021DB7B8 ; =0x021DBF60
+ ldrb r0, [r0, r1]
+ sub r1, r0, r4
+ cmp r1, #5
+ bgt _021DB7A4
+ mov r0, #0x1f
+ mul r0, r1
+ mov r1, #5
+ bl _s32_div_f
+ add r6, r0, #0
+_021DB7A4:
+ cmp r7, r6
+ bge _021DB7AC
+ str r7, [r5, #4]
+ b _021DB7AE
+_021DB7AC:
+ str r6, [r5, #4]
+_021DB7AE:
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DB7B8: .word 0x021DBF60
+ thumb_func_end MOD73_021DB734
+
+ thumb_func_start MOD73_021DB7BC
+MOD73_021DB7BC: ; 0x021DB7BC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ mov r1, #0
+ str r1, [r0, #0xc]
+ add r7, r5, #0
+ add r4, r3, #0
+ str r0, [sp]
+ ldr r1, [sp, #0x18]
+ add r0, r4, #0
+ add r6, r2, #0
+ add r7, #0x98
+ bl MOD73_021DB62C
+ cmp r0, #1
+ beq _021DB7EC
+ ldr r1, [sp, #0x18]
+ add r0, r4, #0
+ bl MOD73_021DB60C
+ cmp r0, #1
+ beq _021DB7EC
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0
+ bne _021DB7F6
+_021DB7EC:
+ ldr r0, [sp]
+ mov r1, #0
+ str r1, [r0, #4]
+ str r1, [r0, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB7F6:
+ cmp r6, #1
+ bgt _021DB804
+ ldr r0, [sp]
+ mov r1, #0
+ str r1, [r0, #4]
+ str r1, [r0, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB804:
+ ldr r0, [sp, #0x20]
+ cmp r0, #1
+ beq _021DB882
+ mov r0, #0
+ cmp r6, #0
+ ble _021DB832
+ mov r2, #0x96
+ mov r4, #0x1c
+ lsl r2, r2, #2
+_021DB816:
+ mov r1, #0x13
+ add r3, r5, r0
+ lsl r1, r1, #4
+ ldrb r1, [r3, r1]
+ add r3, r1, #0
+ mul r3, r4
+ add r1, r5, r3
+ add r1, #0x92
+ ldrh r1, [r1]
+ cmp r1, r2
+ bls _021DB882
+ add r0, r0, #1
+ cmp r0, r6
+ blt _021DB816
+_021DB832:
+ mov r4, #1
+ cmp r6, #1
+ ble _021DB862
+_021DB838:
+ mov r0, #0x13
+ add r1, r5, r4
+ lsl r0, r0, #4
+ ldrb r2, [r1, r0]
+ ldrb r0, [r7]
+ ldrb r1, [r7, #4]
+ add r3, r7, r2
+ ldrb r2, [r7, r2]
+ ldrb r3, [r3, #4]
+ bl FUN_0201CBEC
+ cmp r0, #0x20
+ bls _021DB85C
+ ldr r0, [sp]
+ mov r1, #0
+ str r1, [r0, #4]
+ str r1, [r0, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB85C:
+ add r4, r4, #1
+ cmp r4, r6
+ blt _021DB838
+_021DB862:
+ ldr r0, [sp]
+ ldr r0, [r0, #4]
+ cmp r0, #4
+ bge _021DB872
+ add r1, r0, #1
+ ldr r0, [sp]
+ str r1, [r0, #4]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB872:
+ ldr r0, [sp]
+ mov r2, #1
+ str r2, [r0, #0xc]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp]
+ str r1, [r0]
+ str r2, [r0, #8]
+_021DB882:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD73_021DB7BC
+
+ thumb_func_start MOD73_021DB884
+MOD73_021DB884: ; 0x021DB884
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x68
+ bl Call_FillMemWithValue
+ add r0, r4, #0
+ add r0, #0xc
+ bl MOD73_021DB680
+ mov r1, #0
+ mov r0, #0x1f
+ str r0, [r4, #0x50]
+ add r4, #0xc
+ add r0, r4, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD73_021DB698
+ pop {r4, pc}
+ thumb_func_end MOD73_021DB884
+
+ thumb_func_start MOD73_021DB8AC
+MOD73_021DB8AC: ; 0x021DB8AC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r6, r1, #0
+ add r1, r5, #0
+ add r0, #0x4c
+ add r1, #0x1c
+ add r7, r2, #0
+ bl MOD73_021DB734
+ cmp r0, #1
+ bne _021DB8CA
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021DB8CA:
+ add r0, r5, #0
+ ldr r3, [r5, #0xc]
+ add r0, #0x1c
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD73_021DB3DC
+ add r0, r5, #0
+ add r0, #0x1c
+ bl MOD73_021DB584
+ add r4, r0, #0
+ add r0, r5, #0
+ ldr r2, [r5, #0x54]
+ add r0, #0x30
+ add r1, r4, #0
+ bl MOD73_021DB588
+ add r0, r5, #0
+ add r0, #0xc
+ add r1, r4, #0
+ bl MOD73_021DB718
+ ldr r1, [r5, #0x54]
+ add r2, r7, #0
+ str r1, [sp]
+ ldr r1, [r5, #0x2c]
+ add r3, r4, #0
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0x58
+ add r1, r6, #0
+ bl MOD73_021DB7BC
+ add r0, r5, #0
+ ldr r1, [r5, #0x54]
+ ldr r3, [r5, #0x60]
+ add r0, #0xc
+ add r2, r4, #0
+ bl MOD73_021DB698
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD73_021DB8AC
+
+ thumb_func_start MOD73_021DB924
+MOD73_021DB924: ; 0x021DB924
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r4, #0xc
+ mov r2, #0
+_021DB92E:
+ add r3, r1, #0
+ add r3, #0x90
+ ldrb r3, [r3]
+ add r0, r4, r2
+ strb r3, [r4, r2]
+ add r3, r1, #0
+ add r3, #0x91
+ ldrb r3, [r3]
+ add r2, r2, #1
+ add r1, #0x1c
+ strb r3, [r0, #4]
+ cmp r2, #4
+ blt _021DB92E
+ add r0, r5, #0
+ add r0, #0x1c
+ bl MOD73_021DB584
+ cmp r0, #0
+ blt _021DB95A
+ strh r0, [r4, #0xa]
+ mov r0, #0
+ b _021DB960
+_021DB95A:
+ neg r0, r0
+ strh r0, [r4, #0xa]
+ mov r0, #1
+_021DB960:
+ strb r0, [r4, #0xc]
+ add r0, r5, #0
+ add r0, #0x1c
+ bl MOD73_021DB560
+ strh r0, [r4, #8]
+ ldr r0, [r5, #0x40]
+ strb r0, [r4, #0x12]
+ ldr r0, [r5, #0x48]
+ strb r0, [r4, #0x13]
+ ldr r0, [r5, #0xc]
+ strb r0, [r4, #0x11]
+ ldr r0, [r5, #0x18]
+ strb r0, [r4, #0xe]
+ ldr r0, [r5, #0x54]
+ cmp r0, #3
+ bge _021DB984
+ b _021DB986
+_021DB984:
+ mov r0, #2
+_021DB986:
+ strb r0, [r4, #0xd]
+ ldr r0, [r5, #0x50]
+ strb r0, [r4, #0x10]
+ ldr r0, [r5, #0x64]
+ strb r0, [r4, #0xf]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DB924
+
+ thumb_func_start MOD73_021DB994
+MOD73_021DB994: ; 0x021DB994
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r3, #0
+ mov r1, #0x80
+ mov r0, #0x60
+_021DB9A0:
+ add r2, r4, r3
+ strb r1, [r4, r3]
+ add r3, r3, #1
+ strb r0, [r2, #4]
+ cmp r3, #4
+ blt _021DB9A0
+ add r0, r5, #0
+ add r0, #0x1c
+ bl MOD73_021DB584
+ cmp r0, #0
+ blt _021DB9BE
+ strh r0, [r4, #0xa]
+ mov r0, #0
+ b _021DB9C4
+_021DB9BE:
+ neg r0, r0
+ strh r0, [r4, #0xa]
+ mov r0, #1
+_021DB9C4:
+ strb r0, [r4, #0xc]
+ add r0, r5, #0
+ add r0, #0x1c
+ bl MOD73_021DB560
+ strh r0, [r4, #8]
+ ldr r0, [r5, #0x40]
+ strb r0, [r4, #0x12]
+ ldr r0, [r5, #0x48]
+ strb r0, [r4, #0x13]
+ ldr r0, [r5, #0xc]
+ strb r0, [r4, #0x11]
+ ldr r0, [r5, #0x18]
+ strb r0, [r4, #0xe]
+ ldr r0, [r5, #0x54]
+ strb r0, [r4, #0xd]
+ ldr r0, [r5, #0x50]
+ strb r0, [r4, #0x10]
+ ldr r0, [r5, #0x64]
+ strb r0, [r4, #0xf]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD73_021DB994
+
+ thumb_func_start MOD73_021DB9F0
+MOD73_021DB9F0: ; 0x021DB9F0
+ ldr r1, [r0]
+ add r1, r1, #1
+ str r1, [r0]
+ bx lr
+ thumb_func_end MOD73_021DB9F0
+
+ thumb_func_start MOD73_021DB9F8
+MOD73_021DB9F8: ; 0x021DB9F8
+ push {r4, lr}
+ add r4, r1, #0
+ mov r1, #6
+ bl _u32_div_f
+ ldr r1, _021DBA1C ; =0x021DBF63
+ ldrb r1, [r1, r4]
+ mul r1, r0
+ add r0, r1, #0
+ mov r1, #0xa
+ bl _u32_div_f
+ ldr r1, _021DBA20 ; =0x0000270F
+ cmp r0, r1
+ ble _021DBA18
+ add r0, r1, #0
+_021DBA18:
+ pop {r4, pc}
+ nop
+_021DBA1C: .word 0x021DBF63
+_021DBA20: .word 0x0000270F
+ thumb_func_end MOD73_021DB9F8
+
+ thumb_func_start MOD73_021DBA24
+MOD73_021DBA24: ; 0x021DBA24
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x60
+ str r0, [sp]
+ ldr r0, [sp, #0x78]
+ str r1, [sp, #4]
+ str r0, [sp, #0x78]
+ add r0, r2, #0
+ str r0, [sp, #0x24]
+ add r0, #0x34
+ str r0, [sp, #0x24]
+ mov r1, #0
+ add r0, sp, #0x4c
+ str r1, [r0]
+ str r1, [r0, #4]
+ str r1, [r0, #8]
+ str r1, [r0, #0xc]
+ str r1, [r0, #0x10]
+ add r0, r1, #0
+ add r6, r3, #0
+ str r2, [sp, #8]
+ str r1, [sp, #0x20]
+ str r0, [sp, #0x18]
+ str r0, [sp, #0x28]
+ cmp r6, #0
+ bls _021DBAD6
+_021DBA56:
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #0x28]
+ add r1, r1, r0
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldrb r0, [r1, r0]
+ ldr r1, [sp, #0x78]
+ lsl r4, r0, #2
+ ldr r0, [sp, #0x24]
+ ldr r0, [r0, r4]
+ bl FUN_02085284
+ mov r3, #0
+ add r7, r0, #0
+ add r2, r3, #0
+ cmp r6, #0
+ bls _021DBA98
+ ldr r0, [sp, #0x24]
+ mov r5, #0x13
+ ldr r4, [r0, r4]
+ lsl r5, r5, #4
+_021DBA80:
+ ldr r0, [sp, #8]
+ add r0, r0, r2
+ ldrb r0, [r0, r5]
+ lsl r1, r0, #2
+ ldr r0, [sp, #0x24]
+ ldr r0, [r0, r1]
+ cmp r4, r0
+ bne _021DBA92
+ add r3, r3, #1
+_021DBA92:
+ add r2, r2, #1
+ cmp r2, r6
+ blo _021DBA80
+_021DBA98:
+ ldr r0, [sp, #0x18]
+ cmp r3, r0
+ ble _021DBAA0
+ str r3, [sp, #0x18]
+_021DBAA0:
+ mov r5, #0
+ add r4, sp, #0x4c
+_021DBAA4:
+ add r0, r7, #0
+ add r1, r5, #5
+ bl FUN_02085290
+ ldr r1, [r4]
+ add r5, r5, #1
+ add r0, r1, r0
+ stmia r4!, {r0}
+ cmp r5, #5
+ blt _021DBAA4
+ add r0, r7, #0
+ mov r1, #0xa
+ bl FUN_02085290
+ ldr r1, [sp, #0x20]
+ add r0, r1, r0
+ str r0, [sp, #0x20]
+ add r0, r7, #0
+ bl FUN_02016A18
+ ldr r0, [sp, #0x28]
+ add r0, r0, #1
+ str r0, [sp, #0x28]
+ cmp r0, r6
+ blo _021DBA56
+_021DBAD6:
+ ldr r0, [sp, #0x18]
+ cmp r0, #2
+ blt _021DBAE6
+ cmp r6, #1
+ bls _021DBAE6
+ mov r0, #1
+ str r0, [sp, #0x14]
+ b _021DBAEA
+_021DBAE6:
+ mov r0, #0
+ str r0, [sp, #0x14]
+_021DBAEA:
+ ldr r0, [sp, #0x20]
+ add r1, r6, #0
+ bl _u32_div_f
+ sub r0, r0, r6
+ mov r5, #0
+ add r4, sp, #0x4c
+ str r0, [sp, #0x1c]
+ str r5, [sp, #0xc]
+ add r7, sp, #0x38
+ str r4, [sp, #0x2c]
+_021DBB00:
+ ldr r0, [sp, #0xc]
+ mov r1, #5
+ add r0, r0, #1
+ bl _s32_div_f
+ lsl r2, r1, #2
+ ldr r1, [sp, #0x2c]
+ ldr r0, [r4]
+ ldr r1, [r1, r2]
+ sub r0, r0, r1
+ str r0, [r7]
+ bpl _021DBB1A
+ add r5, r5, #1
+_021DBB1A:
+ ldr r0, [sp, #0xc]
+ add r4, r4, #4
+ add r0, r0, #1
+ add r7, r7, #4
+ str r0, [sp, #0xc]
+ cmp r0, #5
+ blt _021DBB00
+ mov r2, #0
+ add r1, sp, #0x38
+_021DBB2C:
+ ldr r0, [r1]
+ add r2, r2, #1
+ sub r0, r0, r5
+ stmia r1!, {r0}
+ cmp r2, #5
+ blt _021DBB2C
+ cmp r5, #4
+ blt _021DBB40
+ mov r0, #1
+ str r0, [sp, #0x14]
+_021DBB40:
+ ldr r1, [sp]
+ ldr r0, _021DBBF8 ; =0x001B7740
+ ldr r1, [r1]
+ bl _u32_div_f
+ mov r1, #0xa
+ add r5, r0, #0
+ bl _s32_div_f
+ cmp r1, #5
+ blt _021DBB58
+ add r5, #0xa
+_021DBB58:
+ add r0, r5, #0
+ mov r1, #0xa
+ mov r7, #0
+ add r4, sp, #0x38
+ bl _s32_div_f
+ str r0, [sp, #0x10]
+_021DBB66:
+ ldr r0, [sp, #0x10]
+ ldr r1, [r4]
+ add r5, r0, #0
+ mul r5, r1
+ add r0, r5, #0
+ mov r1, #0x64
+ bl _s32_div_f
+ cmp r1, #0x32
+ blt _021DBB7C
+ add r5, #0x64
+_021DBB7C:
+ add r0, r5, #0
+ mov r1, #0x64
+ bl _s32_div_f
+ ldr r1, [sp]
+ ldr r2, [r1, #0x30]
+ ldr r1, [r1, #0x34]
+ add r1, r2, r1
+ sub r0, r0, r1
+ str r0, [r4]
+ bpl _021DBB96
+ mov r0, #0
+ str r0, [r4]
+_021DBB96:
+ add r7, r7, #1
+ add r4, r4, #4
+ cmp r7, #5
+ blt _021DBB66
+ cmp r6, #1
+ bls _021DBBB8
+ ldr r0, [sp]
+ add r1, r6, #0
+ ldr r0, [r0, #0x58]
+ bl MOD73_021DB9F8
+ cmp r0, #0xa
+ ble _021DBBB2
+ mov r0, #0xa
+_021DBBB2:
+ ldr r1, [sp, #0x1c]
+ sub r0, r1, r0
+ str r0, [sp, #0x1c]
+_021DBBB8:
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0xf
+ bge _021DBBC2
+ mov r0, #0xf
+ str r0, [sp, #0x1c]
+_021DBBC2:
+ mov r3, #0
+ add r1, sp, #0x38
+ add r2, sp, #0x30
+_021DBBC8:
+ ldr r0, [r1]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r1, r1, #4
+ add r2, r2, #1
+ cmp r3, #5
+ blt _021DBBC8
+ ldr r2, [sp, #0x1c]
+ ldr r0, [sp, #4]
+ lsl r2, r2, #0x18
+ ldr r3, [sp, #0x14]
+ add r1, sp, #0x30
+ lsr r2, r2, #0x18
+ bl FUN_02027F04
+ ldr r1, [sp]
+ str r0, [r1, #4]
+ ldr r0, [sp, #4]
+ bl FUN_02027FDC
+ ldr r1, [sp]
+ str r0, [r1, #8]
+ add sp, #0x60
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DBBF8: .word 0x001B7740
+ thumb_func_end MOD73_021DBA24
+
+ thumb_func_start MOD73_021DBBFC
+MOD73_021DBBFC: ; 0x021DBBFC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x34]
+ add r4, r1, #0
+ str r0, [r1, #0x20]
+ ldr r0, [r5, #0x30]
+ add r4, #0x20
+ str r0, [r4, #4]
+ ldr r0, [r5, #0x58]
+ add r1, r2, #0
+ bl MOD73_021DB9F8
+ str r0, [r4, #8]
+ ldr r0, [r5, #4]
+ ldr r1, _021DBC54 ; =0x00000708
+ strb r0, [r4, #0xc]
+ ldr r0, [r5, #8]
+ strb r0, [r4, #0xd]
+ ldr r5, [r5]
+ add r0, r5, #0
+ bl _s32_div_f
+ strb r0, [r4, #0xe]
+ ldrb r1, [r4, #0xe]
+ ldr r0, _021DBC54 ; =0x00000708
+ mul r0, r1
+ sub r5, r5, r0
+ add r0, r5, #0
+ mov r1, #0x1e
+ bl _s32_div_f
+ strb r0, [r4, #0xf]
+ ldrb r0, [r4, #0xf]
+ mov r1, #0x1e
+ add r2, r0, #0
+ mul r2, r1
+ sub r2, r5, r2
+ mov r0, #0x64
+ mul r0, r2
+ bl _s32_div_f
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+ nop
+_021DBC54: .word 0x00000708
+ thumb_func_end MOD73_021DBBFC
+
+ .section .rodata
+ ; 0x021DBC58
+ .incbin "baserom.nds", 0x2CE578, 0x318
+
+ .section .data
+ ; 0x021DBF80
+ .incbin "baserom.nds", 0x2CE8A0, 0x40