summaryrefslogtreecommitdiff
path: root/arm9
diff options
context:
space:
mode:
Diffstat (limited to 'arm9')
-rw-r--r--arm9/arm9.lcf28
-rw-r--r--arm9/global.inc7
-rw-r--r--arm9/modules/53/asm/module_53.s4051
3 files changed, 4082 insertions, 4 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index bef940ea..53b51c2a 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -2076,10 +2076,21 @@ SECTIONS {
SDK_OVERLAY.MODULE_52.BSS_SIZE = SDK_OVERLAY.MODULE_52.BSS_END - SDK_OVERLAY.MODULE_52.BSS_START;
} >> MODULE_52
- .MODULE.53: {
+ .MODULE.53 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_53.START = .;
- FILE_299E00.o (.text) /* 0x295E00 */
+ module_53.o (.text)
+ module_53.o (.rodata)
+ module_53.o (.init)
+ SDK_OVERLAY.MODULE_53.SINIT_START = .;
+ module_53.o (.ctor)
+ module_53.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_53.SINIT_END = .;
+ . = ALIGN(32);
+ module_53.o (.sdata)
+ module_53.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_53.END = .;
SDK_OVERLAY.MODULE_53.SIZE = SDK_OVERLAY.MODULE_53.END - SDK_OVERLAY.MODULE_53.START;
@@ -2089,7 +2100,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_53.BSS_START = .;
- FILE_299E00.o (.bss)
+ module_53.o (.sbss)
+ module_53.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_53.BSS_END = .;
SDK_OVERLAY.MODULE_53.BSS_SIZE = SDK_OVERLAY.MODULE_53.BSS_END - SDK_OVERLAY.MODULE_53.BSS_START;
@@ -3322,7 +3334,15 @@ SECTIONS {
WRITEW SDK_OVERLAY_MODULE_52_ID;
WRITEW 0;
- OVERLAY_TABLE(MODULE_53, 53)
+ WRITEW SDK_OVERLAY_MODULE_53_ID;
+ WRITEW SDK_OVERLAY.MODULE_53.START;
+ WRITEW SDK_OVERLAY.MODULE_53.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_53.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_53.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_53.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_53_ID;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_54, 54)
OVERLAY_TABLE(MODULE_55, 55)
OVERLAY_TABLE(MODULE_56, 56)
diff --git a/arm9/global.inc b/arm9/global.inc
index aa94eac7..25aaebf6 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -5585,6 +5585,13 @@
.extern FUN_020250C4
.extern FUN_020377E0
.extern FUN_0206007C
+.extern FUN_0201CD38
+.extern FUN_020294A8
+.extern FUN_0202EEB0
+.extern FUN_02031370
+.extern FUN_02031388
+.extern FUN_02052F8C
+.extern FUN_02083D48
.extern SDK_OVERLAY_MODULE_00_ID
.extern SDK_OVERLAY_MODULE_01_ID
.extern SDK_OVERLAY_MODULE_02_ID
diff --git a/arm9/modules/53/asm/module_53.s b/arm9/modules/53/asm/module_53.s
new file mode 100644
index 00000000..e4dacfc6
--- /dev/null
+++ b/arm9/modules/53/asm/module_53.s
@@ -0,0 +1,4051 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD53_021D74E0
+MOD53_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r6, r0, #0
+ cmp r1, #0
+ beq _021D74F6
+ cmp r1, #1
+ bne _021D74F4
+ b _021D7622
+_021D74F4:
+ b _021D7630
+_021D74F6:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D7638 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D763C ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #3
+ mov r1, #0x27
+ lsl r2, r2, #6
+ bl FUN_0201681C
+ ldr r1, _021D7640 ; =0x0000940C
+ add r0, r6, #0
+ mov r2, #0x27
+ bl FUN_02006268
+ ldr r2, _021D7640 ; =0x0000940C
+ mov r1, #0
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x27
+ bl FUN_02016B94
+ str r0, [r4]
+ mov r0, #0x27
+ bl FUN_0200AA80
+ str r0, [r4, #0xc]
+ ldr r2, _021D7644 ; =0x00000176
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x27
+ bl FUN_0200A86C
+ str r0, [r4, #0x10]
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ bl MOD53_021D78D0
+ ldr r0, [r4]
+ bl MOD53_021D78F0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x27
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #0x11
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add r0, r6, #0
+ bl FUN_0200628C
+ str r0, [r4, #8]
+ add r0, r4, #0
+ bl MOD53_021D7B60
+ bl FUN_0201CC08
+ mov r0, #2
+ bl FUN_0201CC24
+ ldr r0, _021D7648 ; =MOD53_021D78A8
+ ldr r1, [r4]
+ bl FUN_02015F10
+ add r0, r4, #0
+ bl MOD53_021D79F8
+ bl MOD53_021D7C54
+ add r0, r4, #0
+ bl MOD53_021D7C84
+ add r0, r4, #0
+ bl MOD53_021D7E08
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD53_021D7FDC
+ mov r1, #0
+ mov r0, #0x34
+ add r2, r1, #0
+ bl FUN_0200433C
+ ldr r2, _021D764C ; =0x04000304
+ ldr r0, _021D7650 ; =0xFFFF7FFF
+ ldrh r1, [r2]
+ and r0, r1
+ strh r0, [r2]
+ add r0, r4, #0
+ bl FUN_02083D48
+ mov r0, #0
+ mov r1, #1
+ bl FUN_020334E8
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D7602
+ mov r0, #3
+ bl FUN_02032B6C
+_021D7602:
+ bl FUN_02033E74
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D761A
+ mov r0, #1
+ bl FUN_02052B74
+ mov r0, #1
+ bl FUN_0202EEB0
+_021D761A:
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D7630
+_021D7622:
+ bl FUN_02006278
+ mov r0, #0
+ str r0, [r5]
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D7630:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D7638: .word 0xFFFFE0FF
+_021D763C: .word 0x04001000
+_021D7640: .word 0x0000940C
+_021D7644: .word 0x00000176
+_021D7648: .word MOD53_021D78A8
+_021D764C: .word 0x04000304
+_021D7650: .word 0xFFFF7FFF
+ thumb_func_end MOD53_021D74E0
+
+ thumb_func_start MOD53_021D7654
+MOD53_021D7654: ; 0x021D7654
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D767A
+ ldr r0, _021D7750 ; =0x000093B4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D767A
+ bl FUN_0202CB8C
+ ldr r1, _021D7750 ; =0x000093B4
+ ldr r2, [r4, r1]
+ and r0, r2
+ str r0, [r4, r1]
+_021D767A:
+ mov r0, #3
+ ldr r1, [r5]
+ lsl r0, r0, #8
+ str r1, [r4, r0]
+ ldr r1, [r5]
+ add r0, r4, #0
+ bl MOD53_021D93E8
+ ldr r1, [r5]
+ cmp r1, #3
+ bhi _021D7744
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D769C: ; jump table
+ .short _021D76A4 - _021D769C - 2 ; case 0
+ .short _021D76D2 - _021D769C - 2 ; case 1
+ .short _021D7718 - _021D769C - 2 ; case 2
+ .short _021D7738 - _021D769C - 2 ; case 3
+_021D76A4:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D7744
+ bl FUN_02031190
+ cmp r0, #0
+ beq _021D76CC
+ bl MOD53_021D9160
+ cmp r0, #2
+ blt _021D7744
+ mov r1, #0
+ mov r0, #0x80
+ add r2, r1, #0
+ bl FUN_02030ADC
+ mov r0, #1
+ str r0, [r5]
+ b _021D7744
+_021D76CC:
+ mov r0, #1
+ str r0, [r5]
+ b _021D7744
+_021D76D2:
+ mov r0, #0xc1
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ lsl r2, r0, #3
+ ldr r0, _021D7754 ; =0x021D98A0
+ ldr r2, [r0, r2]
+ cmp r2, #0
+ beq _021D76E8
+ add r0, r4, #0
+ blx r2
+ str r0, [r5]
+_021D76E8:
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ ldr r2, _021D7758 ; =0x000E0D0F
+ add r0, r4, r0
+ mov r1, #0
+ add r3, r4, #0
+ bl MOD53_021D9014
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D770E
+ add r0, r4, #0
+ bl MOD53_021D928C
+ ldr r1, [r5]
+ cmp r1, #1
+ bne _021D770E
+ str r0, [r5]
+_021D770E:
+ ldr r0, _021D775C ; =0x00004374
+ add r0, r4, r0
+ bl MOD53_021D8FB8
+ b _021D7744
+_021D7718:
+ mov r0, #0xc1
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ lsl r3, r0, #3
+ ldr r0, _021D7754 ; =0x021D98A0
+ ldr r2, [r0, r3]
+ cmp r2, #0
+ beq _021D7744
+ ldr r0, _021D7760 ; =0x021D98A4
+ ldr r0, [r0, r3]
+ cmp r0, #0
+ beq _021D7744
+ add r0, r4, #0
+ blx r2
+ str r0, [r5]
+ b _021D7744
+_021D7738:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D7744
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D7744:
+ ldr r0, [r4, #0x34]
+ bl FUN_0201FDEC
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D7750: .word 0x000093B4
+_021D7754: .word 0x021D98A0
+_021D7758: .word 0x000E0D0F
+_021D775C: .word 0x00004374
+_021D7760: .word 0x021D98A4
+ thumb_func_end MOD53_021D7654
+
+ thumb_func_start MOD53_021D7764
+MOD53_021D7764: ; 0x021D7764
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ bl FUN_02006278
+ add r6, r0, #0
+ add r0, r5, #0
+ bl FUN_0200628C
+ add r4, r0, #0
+ ldr r0, [r7]
+ cmp r0, #3
+ bls _021D7780
+ b _021D789E
+_021D7780:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D778C: ; jump table
+ .short _021D7794 - _021D778C - 2 ; case 0
+ .short _021D7820 - _021D778C - 2 ; case 1
+ .short _021D784E - _021D778C - 2 ; case 2
+ .short _021D786E - _021D778C - 2 ; case 3
+_021D7794:
+ mov r0, #0x27
+ bl FUN_020294A8
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ mov r2, #4
+ bl FUN_02028AD4
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r6, r0]
+ bl FUN_02009C0C
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ bl FUN_02009C0C
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009E04
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009E04
+ mov r4, #0
+ add r5, r6, #0
+_021D77D8:
+ mov r0, #0x16
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02008E2C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D77D8
+ ldr r0, [r6, #0x34]
+ bl FUN_0201FD58
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ add r0, r6, #0
+ bl MOD53_021D8104
+ ldr r0, [r6]
+ bl MOD53_021D7B24
+ bl FUN_0201CD04
+ ldr r0, [r6, #0x10]
+ bl FUN_0200A8B8
+ ldr r0, [r6, #0xc]
+ bl FUN_0200AB18
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021D789E
+_021D7820:
+ mov r0, #1
+ bl FUN_02032B6C
+ bl FUN_02031B50
+ ldr r0, [r4]
+ bl FUN_02052F8C
+ ldr r2, _021D78A4 ; =0x04000304
+ ldrh r1, [r2]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2]
+ mov r0, #0
+ bl FUN_02052B74
+ mov r0, #0
+ bl FUN_0202EEB0
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021D789E
+_021D784E:
+ mov r1, #0x25
+ lsl r1, r1, #0xa
+ ldr r1, [r6, r1]
+ cmp r1, #0
+ beq _021D7868
+ bl FUN_0202CB8C
+ cmp r0, #1
+ bne _021D789E
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021D789E
+_021D7868:
+ add r0, r0, #1
+ str r0, [r7]
+ b _021D789E
+_021D786E:
+ mov r0, #2
+ bl FUN_02032B6C
+ add r0, r6, #0
+ bl MOD53_021D7AE8
+ ldr r0, [r6, #8]
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200627C
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0x27
+ bl FUN_020168D0
+ mov r0, #2
+ bl FUN_02032B6C
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021D789E:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D78A4: .word 0x04000304
+ thumb_func_end MOD53_021D7764
+
+ thumb_func_start MOD53_021D78A8
+MOD53_021D78A8: ; 0x021D78A8
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0201C30C
+ bl FUN_02009F80
+ add r0, r4, #0
+ bl FUN_0201AB60
+ ldr r3, _021D78C8 ; =0x027E0000
+ ldr r1, _021D78CC ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021D78C8: .word 0x027E0000
+_021D78CC: .word 0x00003FF8
+ thumb_func_end MOD53_021D78A8
+
+ thumb_func_start MOD53_021D78D0
+MOD53_021D78D0: ; 0x021D78D0
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D78EC ; =0x021D95A4
+ add r3, sp, #0
+ mov r2, #5
+_021D78DA:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D78DA
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D78EC: .word 0x021D95A4
+ thumb_func_end MOD53_021D78D0
+
+ thumb_func_start MOD53_021D78F0
+MOD53_021D78F0: ; 0x021D78F0
+ push {r4, r5, lr}
+ sub sp, #0x9c
+ ldr r5, _021D79E0 ; =0x021D94F8
+ add r3, sp, #0x8c
+ add r4, r0, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D79E4 ; =0x021D9518
+ add r3, sp, #0x70
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r3]
+ add r0, r4, #0
+ add r3, r1, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02018744
+ ldr r5, _021D79E8 ; =0x021D9550
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018744
+ ldr r5, _021D79EC ; =0x021D956C
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D79F0 ; =0x021D9588
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #4
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_02018744
+ ldr r5, _021D79F4 ; =0x021D9534
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ add r0, r4, #0
+ mov r1, #5
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x27
+ bl FUN_02017F18
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x27
+ bl FUN_02017F18
+ add sp, #0x9c
+ pop {r4, r5, pc}
+ nop
+_021D79E0: .word 0x021D94F8
+_021D79E4: .word 0x021D9518
+_021D79E8: .word 0x021D9550
+_021D79EC: .word 0x021D956C
+_021D79F0: .word 0x021D9588
+_021D79F4: .word 0x021D9534
+ thumb_func_end MOD53_021D78F0
+
+ thumb_func_start MOD53_021D79F8
+MOD53_021D79F8: ; 0x021D79F8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D7ACC ; =0x0000438A
+ add r6, r7, #0
+ add r4, r7, r0
+ mov r0, #0x38
+ add r5, r7, #0
+ str r0, [sp, #4]
+_021D7A0E:
+ mov r0, #8
+ mov r1, #0x27
+ bl FUN_020219F4
+ str r0, [r6, #0x14]
+ ldrb r1, [r4]
+ ldr r0, [sp, #4]
+ bic r1, r0
+ strb r1, [r4]
+ ldr r0, _021D7AD0 ; =0x000043B6
+ mov r1, #0
+ strh r1, [r6, r0]
+ mov r0, #0xcd
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, r0, #4
+ str r1, [r5, r0]
+ ldr r0, [sp]
+ add r6, r6, #4
+ add r0, r0, #1
+ add r4, #0xa
+ add r5, #8
+ str r0, [sp]
+ cmp r0, #5
+ blt _021D7A0E
+ mov r0, #0xa
+ mov r1, #0x27
+ bl FUN_020219F4
+ str r0, [r7, #0x28]
+ mov r0, #0x50
+ mov r1, #0x27
+ bl FUN_020219F4
+ str r0, [r7, #0x2c]
+ ldr r0, _021D7AD4 ; =0x00004376
+ mov r2, #0
+ strb r2, [r7, r0]
+ mov r1, #1
+ add r0, r0, #1
+ strb r1, [r7, r0]
+ ldr r0, _021D7AD8 ; =0x000093F4
+ str r1, [r7, r0]
+ add r0, r0, #4
+ str r2, [r7, r0]
+ mov r0, #0xc6
+ mov r1, #2
+ lsl r0, r0, #2
+ str r1, [r7, r0]
+ bl FUN_0202CB8C
+ mov r1, #0xc7
+ lsl r1, r1, #2
+ str r0, [r7, r1]
+ ldr r2, _021D7ADC ; =0x000093FC
+ mov r3, #0
+ str r3, [r7, r2]
+ add r0, r2, #4
+ str r3, [r7, r0]
+ add r0, r2, #0
+ sub r1, #0x18
+ str r3, [r7, r1]
+ add r0, #8
+ str r3, [r7, r0]
+ add r2, #0xc
+ str r3, [r7, r2]
+ bl FUN_02031190
+ add r0, r7, #0
+ mov r1, #4
+ bl MOD53_021D93E0
+ ldr r0, [r7, #0x10]
+ ldr r2, [r7, #0x28]
+ mov r1, #7
+ bl FUN_0200A8E0
+ mov r1, #0xf
+ mov r0, #0x27
+ lsl r1, r1, #0xa
+ bl FUN_02016998
+ ldr r1, _021D7AE0 ; =0x000043C8
+ str r0, [r7, r1]
+ mov r0, #0x27
+ bl FUN_02014590
+ ldr r1, _021D7AE4 ; =0x000093F0
+ str r0, [r7, r1]
+ mov r0, #0xc5
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r7, r0]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7ACC: .word 0x0000438A
+_021D7AD0: .word 0x000043B6
+_021D7AD4: .word 0x00004376
+_021D7AD8: .word 0x000093F4
+_021D7ADC: .word 0x000093FC
+_021D7AE0: .word 0x000043C8
+_021D7AE4: .word 0x000093F0
+ thumb_func_end MOD53_021D79F8
+
+ thumb_func_start MOD53_021D7AE8
+MOD53_021D7AE8: ; 0x021D7AE8
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, _021D7B1C ; =0x000043C8
+ ldr r0, [r6, r0]
+ bl FUN_02016A18
+ ldr r0, _021D7B20 ; =0x000093F0
+ ldr r0, [r6, r0]
+ bl FUN_020145A8
+ mov r4, #0
+ add r5, r6, #0
+_021D7B00:
+ ldr r0, [r5, #0x14]
+ bl FUN_02021A20
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _021D7B00
+ ldr r0, [r6, #0x2c]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x28]
+ bl FUN_02021A20
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D7B1C: .word 0x000043C8
+_021D7B20: .word 0x000093F0
+ thumb_func_end MOD53_021D7AE8
+
+ thumb_func_start MOD53_021D7B24
+MOD53_021D7B24: ; 0x021D7B24
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #5
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D7B24
+
+ thumb_func_start MOD53_021D7B60
+MOD53_021D7B60: ; 0x021D7B60
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r4, [r5]
+ mov r0, #0x40
+ mov r1, #0
+ str r0, [sp]
+ mov r0, #0x27
+ str r0, [sp, #4]
+ mov r0, #0x4e
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02006930
+ mov r0, #0x40
+ str r0, [sp]
+ mov r0, #0x27
+ str r0, [sp, #4]
+ mov r0, #0x4e
+ mov r1, #1
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r1, #0x1a
+ mov r0, #0
+ lsl r1, r1, #4
+ mov r2, #0x27
+ bl FUN_02002EEC
+ mov r1, #0x1a
+ mov r0, #4
+ lsl r1, r1, #4
+ mov r2, #0x27
+ bl FUN_02002EEC
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x27
+ mov r1, #2
+ str r0, [sp, #0xc]
+ mov r0, #0x4e
+ add r2, r4, #0
+ add r3, r1, #0
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x27
+ str r0, [sp, #0xc]
+ mov r0, #0x4e
+ mov r1, #4
+ add r2, r4, #0
+ mov r3, #2
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x27
+ str r0, [sp, #0xc]
+ mov r0, #0x4e
+ mov r1, #3
+ add r2, r4, #0
+ mov r3, #5
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x27
+ mov r1, #5
+ str r0, [sp, #0xc]
+ mov r0, #0x4e
+ add r2, r4, #0
+ add r3, r1, #0
+ bl FUN_020068C8
+ ldr r0, [r5, #8]
+ ldr r0, [r0, #8]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x27
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ mov r3, #0xa
+ bl FUN_0200CD68
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0x27
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x1f
+ mov r3, #0xb
+ bl FUN_0200CB00
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD53_021D7B60
+
+ thumb_func_start MOD53_021D7C54
+MOD53_021D7C54: ; 0x021D7C54
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _021D7C80 ; =0x021D9508
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_0201D040
+ mov r0, #0x14
+ mov r1, #0x27
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021D7C80: .word 0x021D9508
+ thumb_func_end MOD53_021D7C54
+
+ thumb_func_start MOD53_021D7C84
+MOD53_021D7C84: ; 0x021D7C84
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x7e
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ mov r2, #0x27
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ add r1, r5, #0
+ mov r0, #0x35
+ add r1, #0x38
+ mov r2, #0x27
+ bl FUN_02008C9C
+ str r0, [r5, #0x34]
+ add r0, r5, #0
+ mov r2, #1
+ add r0, #0x38
+ mov r1, #0
+ lsl r2, r2, #0x14
+ bl FUN_02008D24
+ mov r7, #0x16
+ mov r6, #0
+ add r4, r5, #0
+ lsl r7, r7, #4
+_021D7CCA:
+ mov r0, #2
+ add r1, r6, #0
+ mov r2, #0x27
+ bl FUN_02008DEC
+ str r0, [r4, r7]
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _021D7CCA
+ mov r0, #0
+ str r0, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ mov r0, #0x27
+ str r0, [sp, #8]
+ mov r0, #0x16
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0x4e
+ mov r2, #6
+ bl FUN_02008F34
+ mov r1, #0x17
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #7
+ str r0, [sp, #8]
+ mov r0, #0x27
+ sub r1, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ mov r1, #0x4e
+ add r3, r2, #0
+ bl FUN_02008FEC
+ mov r1, #0x5d
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x27
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x4e
+ mov r2, #7
+ mov r3, #1
+ bl FUN_020090AC
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x27
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x4e
+ mov r2, #8
+ mov r3, #1
+ bl FUN_020090AC
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r3, #1
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x27
+ sub r1, #0x1c
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x4e
+ mov r2, #6
+ bl FUN_02008F34
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #0x27
+ mov r2, #0
+ sub r1, #0x1c
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ mov r1, #0x4e
+ add r3, r2, #0
+ bl FUN_02008FEC
+ mov r1, #0x61
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r3, #1
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x27
+ sub r1, #0x1c
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x4e
+ mov r2, #7
+ bl FUN_020090AC
+ mov r1, #0x62
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r3, #1
+ str r3, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x27
+ sub r1, #0x1c
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x4e
+ mov r2, #8
+ bl FUN_020090AC
+ mov r1, #0x63
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ sub r1, #0x1c
+ ldr r0, [r5, r1]
+ bl FUN_02009A50
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ bl FUN_02009A50
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009CF0
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009CF0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD53_021D7C84
+
+ thumb_func_start MOD53_021D7E08
+MOD53_021D7E08: ; 0x021D7E08
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x64
+ mov r1, #0
+ add r5, r0, #0
+ str r1, [sp]
+ sub r0, r1, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r2, #0x16
+ str r1, [sp, #0x10]
+ lsl r2, r2, #4
+ ldr r0, [r5, r2]
+ add r3, r1, #0
+ str r0, [sp, #0x14]
+ add r0, r2, #4
+ ldr r0, [r5, r0]
+ str r0, [sp, #0x18]
+ add r0, r2, #0
+ add r0, #8
+ ldr r0, [r5, r0]
+ str r0, [sp, #0x1c]
+ add r0, r2, #0
+ add r0, #0xc
+ ldr r0, [r5, r0]
+ add r2, #0x30
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ add r0, r5, r2
+ add r2, r1, #0
+ str r1, [sp, #0x28]
+ bl FUN_02008AA4
+ mov r1, #1
+ mov r3, #0x16
+ str r1, [sp]
+ sub r0, r1, #2
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ lsl r3, r3, #4
+ ldr r2, [r5, r3]
+ str r2, [sp, #0x14]
+ add r2, r3, #4
+ ldr r2, [r5, r2]
+ str r2, [sp, #0x18]
+ add r2, r3, #0
+ add r2, #8
+ ldr r2, [r5, r2]
+ str r2, [sp, #0x1c]
+ add r2, r3, #0
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ add r3, #0x54
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, r5, r3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02008AA4
+ ldr r0, [r5, #0x34]
+ mov r6, #0
+ str r0, [sp, #0x34]
+ mov r0, #0x19
+ lsl r0, r0, #4
+ add r0, r5, r0
+ str r0, [sp, #0x38]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r6, [sp, #0x44]
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x4c]
+ str r0, [sp, #0x50]
+ add r0, sp, #0x34
+ strh r6, [r0, #0x20]
+ mov r0, #1
+ str r0, [sp, #0x58]
+ str r0, [sp, #0x5c]
+ mov r0, #0x27
+ str r0, [sp, #0x60]
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r7, #0x18
+ add r4, r5, #0
+ str r0, [sp, #0x2c]
+_021D7EBC:
+ ldr r0, [sp, #0x2c]
+ str r0, [sp, #0x38]
+ lsl r0, r7, #0xc
+ str r0, [sp, #0x3c]
+ mov r0, #1
+ lsl r0, r0, #0x12
+ str r0, [sp, #0x40]
+ mov r0, #2
+ str r0, [sp, #0x5c]
+ add r0, sp, #0x34
+ bl FUN_0201FE94
+ mov r1, #0x76
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, r6, #0
+ bl FUN_02020130
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r6, r6, #1
+ add r7, #0x28
+ add r4, r4, #4
+ cmp r6, #5
+ blt _021D7EBC
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r6, _021D7FD8 ; =0x021D9600
+ mov r7, #0
+ add r4, r5, #0
+ str r0, [sp, #0x30]
+_021D7F14:
+ ldr r0, [sp, #0x30]
+ str r0, [sp, #0x38]
+ ldrh r0, [r6]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x3c]
+ ldrh r0, [r6, #2]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x40]
+ add r0, sp, #0x34
+ bl FUN_0201FE94
+ mov r1, #0x92
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x92
+ lsl r0, r0, #2
+ ldrh r1, [r6, #4]
+ ldr r0, [r4, r0]
+ bl FUN_02020130
+ cmp r7, #8
+ blt _021D7F56
+ mov r0, #0x92
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl FUN_02020238
+_021D7F56:
+ add r7, r7, #1
+ add r6, r6, #6
+ add r4, r4, #4
+ cmp r7, #0xc
+ blt _021D7F14
+ mov r0, #0x92
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #6
+ bl FUN_02020130
+ mov r7, #6
+ mov r6, #0
+ mov r4, #0x20
+ lsl r7, r7, #0xe
+_021D7F74:
+ mov r0, #1
+ lsl r1, r4, #0xc
+ lsl r0, r0, #0x14
+ add r0, r1, r0
+ str r0, [sp, #0x40]
+ add r0, sp, #0x34
+ str r7, [sp, #0x3c]
+ bl FUN_0201FE94
+ mov r1, #0x21
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r1, r6, #0
+ bl FUN_02020130
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_02020310
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r6, r6, #1
+ add r4, #0x20
+ add r5, r5, #4
+ cmp r6, #5
+ blt _021D7F74
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x64
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7FD8: .word 0x021D9600
+ thumb_func_end MOD53_021D7E08
+
+ thumb_func_start MOD53_021D7FDC
+MOD53_021D7FDC: ; 0x021D7FDC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r7, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x28
+ mov r1, #0xb6
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r7]
+ add r1, r7, r1
+ mov r2, #0
+ mov r3, #2
+ bl FUN_02019064
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ add r0, r7, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0x1e
+ str r0, [sp, #4]
+ mov r0, #0xf
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r2, #1
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r1, #0xb2
+ lsl r1, r1, #2
+ ldr r0, [r7]
+ add r1, r7, r1
+ add r3, r2, #0
+ bl FUN_02019064
+ mov r0, #0xb2
+ lsl r0, r0, #2
+ add r0, r7, r0
+ mov r1, #2
+ bl FUN_02019620
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _021D80F8 ; =0x000001C3
+ mov r1, #0xba
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r7]
+ add r1, r7, r1
+ mov r2, #1
+ mov r3, #0x19
+ bl FUN_02019064
+ mov r0, #0xba
+ lsl r0, r0, #2
+ add r0, r7, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r1, [r7, #0x28]
+ mov r0, #1
+ mov r2, #0
+ mov r3, #0x30
+ bl FUN_02002F40
+ add r3, r0, #0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D80FC ; =0x00070100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #0xba
+ lsl r0, r0, #2
+ ldr r2, [r7, #0x28]
+ add r0, r7, r0
+ mov r1, #1
+ add r3, r3, #2
+ bl FUN_0201BDE0
+ mov r0, #0
+ str r0, [sp, #0x14]
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ mov r6, #1
+ mov r4, #3
+ add r5, r7, r0
+_021D80A8:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r7]
+ add r1, r5, #0
+ mov r2, #4
+ mov r3, #5
+ bl FUN_02019064
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [sp, #0x14]
+ add r6, #0x14
+ add r0, r0, #1
+ add r4, r4, #4
+ add r5, #0x10
+ str r0, [sp, #0x14]
+ cmp r0, #5
+ blt _021D80A8
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ ldr r2, _021D8100 ; =0x000E0D0F
+ add r0, r7, r0
+ mov r1, #0
+ add r3, r7, #0
+ bl MOD53_021D9014
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D80F8: .word 0x000001C3
+_021D80FC: .word 0x00070100
+_021D8100: .word 0x000E0D0F
+ thumb_func_end MOD53_021D7FDC
+
+ thumb_func_start MOD53_021D8104
+MOD53_021D8104: ; 0x021D8104
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ mov r4, #0
+ add r5, r6, r0
+_021D8110:
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #5
+ blt _021D8110
+ mov r0, #0xba
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+ mov r0, #0xb2
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D8104
+
+ thumb_func_start MOD53_021D8140
+MOD53_021D8140: ; 0x021D8140
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r5, r2, #0
+ cmp r1, #0
+ ble _021D815E
+ lsl r0, r1, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _021D816C
+_021D815E:
+ lsl r0, r1, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_021D816C:
+ bl _ffix
+ sub r5, #8
+ str r0, [sp]
+ cmp r5, #0
+ ble _021D818A
+ lsl r0, r5, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _021D8198
+_021D818A:
+ lsl r0, r5, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_021D8198:
+ bl _ffix
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, sp, #0
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D8140
+
+ thumb_func_start MOD53_021D81B0
+MOD53_021D81B0: ; 0x021D81B0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x54
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _021D83AC ; =0x021D95CC
+ bl FUN_02020988
+ mov r1, #0
+ mvn r1, r1
+ str r0, [sp, #8]
+ cmp r0, r1
+ beq _021D81FE
+ cmp r0, #0xb
+ bhi _021D81FE
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D81DA: ; jump table
+ .short _021D81F2 - _021D81DA - 2 ; case 0
+ .short _021D81F2 - _021D81DA - 2 ; case 1
+ .short _021D81F2 - _021D81DA - 2 ; case 2
+ .short _021D81F2 - _021D81DA - 2 ; case 3
+ .short _021D81F2 - _021D81DA - 2 ; case 4
+ .short _021D81F2 - _021D81DA - 2 ; case 5
+ .short _021D81F2 - _021D81DA - 2 ; case 6
+ .short _021D81F2 - _021D81DA - 2 ; case 7
+ .short _021D821A - _021D81DA - 2 ; case 8
+ .short _021D82BE - _021D81DA - 2 ; case 9
+ .short _021D82BE - _021D81DA - 2 ; case 10
+ .short _021D82BE - _021D81DA - 2 ; case 11
+_021D81F2:
+ ldr r2, _021D83B0 ; =0x00004376
+ ldr r0, [sp]
+ ldrb r1, [r0, r2]
+ ldr r0, [sp, #8]
+ cmp r1, r0
+ bne _021D8200
+_021D81FE:
+ b _021D8316
+_021D8200:
+ add r1, r0, #0
+ ldr r0, [sp]
+ strb r1, [r0, r2]
+ mov r1, #0x92
+ lsl r1, r1, #2
+ add r0, r0, r1
+ ldr r1, [sp, #8]
+ bl MOD53_021D83DC
+ ldr r0, _021D83B4 ; =0x000005DC
+ bl FUN_020054C8
+ b _021D8316
+_021D821A:
+ mov r1, #0xc1
+ ldr r0, [sp]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ cmp r0, #4
+ bne _021D8316
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8280
+ bl FUN_0202CB8C
+ mov r2, #0xc7
+ ldr r1, [sp]
+ lsl r2, r2, #2
+ ldr r1, [r1, r2]
+ cmp r1, r0
+ beq _021D8246
+ ldr r0, _021D83B8 ; =0x000005F2
+ bl FUN_020054C8
+ b _021D8316
+_021D8246:
+ bl FUN_02030F20
+ bl FUN_02032B6C
+ ldr r1, _021D83BC ; =0x000093F4
+ ldr r0, [sp]
+ mov r2, #2
+ str r2, [r0, r1]
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD53_021D91C8
+ ldr r0, [sp]
+ mov r1, #5
+ bl MOD53_021D93E0
+ mov r1, #0x92
+ ldr r0, [sp]
+ lsl r1, r1, #2
+ add r0, r0, r1
+ mov r1, #1
+ bl MOD53_021D840C
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _021D83B4 ; =0x000005DC
+ bl FUN_020054C8
+ b _021D8316
+_021D8280:
+ ldr r1, _021D83C0 ; =0x0000438B
+ ldr r0, [sp]
+ ldrb r0, [r0, r1]
+ cmp r0, #2
+ bne _021D8292
+ ldr r0, _021D83B8 ; =0x000005F2
+ bl FUN_020054C8
+ b _021D8316
+_021D8292:
+ mov r1, #1
+ ldr r0, [sp]
+ add r2, r1, #0
+ bl MOD53_021D91C8
+ ldr r0, [sp]
+ mov r1, #5
+ bl MOD53_021D93E0
+ mov r1, #0x92
+ ldr r0, [sp]
+ lsl r1, r1, #2
+ add r0, r0, r1
+ mov r1, #1
+ bl MOD53_021D840C
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _021D83B4 ; =0x000005DC
+ bl FUN_020054C8
+ b _021D8316
+_021D82BE:
+ ldr r0, [sp, #8]
+ ldr r5, [sp]
+ str r0, [sp, #0xc]
+ sub r0, #9
+ mov r4, #0
+ mov r7, #0x1e
+ mov r6, #0x1d
+ str r0, [sp, #0xc]
+_021D82CE:
+ ldr r0, [sp, #0xc]
+ cmp r0, r4
+ bne _021D82E2
+ mov r0, #0x9b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r7, #0
+ bl FUN_02020130
+ b _021D82EE
+_021D82E2:
+ mov r0, #0x9b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r6, #0
+ bl FUN_02020130
+_021D82EE:
+ add r4, r4, #1
+ add r7, r7, #2
+ add r5, r5, #4
+ add r6, r6, #2
+ cmp r4, #3
+ blt _021D82CE
+ ldr r2, _021D83C4 ; =0x00004377
+ ldr r0, [sp]
+ ldrb r1, [r0, r2]
+ ldr r0, [sp, #8]
+ sub r0, #9
+ str r0, [sp, #8]
+ cmp r1, r0
+ beq _021D8316
+ add r1, r0, #0
+ ldr r0, [sp]
+ strb r1, [r0, r2]
+ ldr r0, _021D83C8 ; =0x000005E5
+ bl FUN_020054C8
+_021D8316:
+ ldr r0, _021D83CC ; =0x021D94F0
+ bl FUN_02020968
+ add r4, r0, #0
+ bl FUN_02031190
+ lsl r1, r0, #2
+ ldr r0, [sp]
+ add r1, r0, r1
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ beq _021D836C
+ bl FUN_02031190
+ lsl r1, r0, #2
+ ldr r0, [sp]
+ ldr r2, _021D83D0 ; =0x021C48F8
+ add r1, r0, r1
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldrh r1, [r2, #0x1c]
+ ldrh r2, [r2, #0x1e]
+ bl MOD53_021D8140
+ bl FUN_02031190
+ lsl r1, r0, #2
+ ldr r0, [sp]
+ add r1, r0, r1
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+_021D836C:
+ add r0, sp, #0x10
+ mov r1, #4
+ mov r2, #0x40
+ bl FUN_0201CD38
+ cmp r0, #1
+ bne _021D83A6
+ ldr r3, _021D83D4 ; =0x00004378
+ ldr r0, [sp]
+ ldr r2, [sp]
+ sub r4, r3, #2
+ ldrb r2, [r2, r4]
+ add r0, r0, r3
+ sub r4, r3, #1
+ ldr r3, [sp]
+ add r1, sp, #0x10
+ ldrb r3, [r3, r4]
+ bl MOD53_021D947C
+ ldr r0, [sp, #4]
+ cmp r0, #1
+ bne _021D83A6
+ ldr r1, _021D83D8 ; =0x00004380
+ ldr r0, [sp]
+ ldrb r2, [r0, r1]
+ mov r0, #0x38
+ bic r2, r0
+ ldr r0, [sp]
+ strb r2, [r0, r1]
+_021D83A6:
+ add sp, #0x54
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D83AC: .word 0x021D95CC
+_021D83B0: .word 0x00004376
+_021D83B4: .word 0x000005DC
+_021D83B8: .word 0x000005F2
+_021D83BC: .word 0x000093F4
+_021D83C0: .word 0x0000438B
+_021D83C4: .word 0x00004377
+_021D83C8: .word 0x000005E5
+_021D83CC: .word 0x021D94F0
+_021D83D0: .word 0x021C48F8
+_021D83D4: .word 0x00004378
+_021D83D8: .word 0x00004380
+ thumb_func_end MOD53_021D81B0
+
+ thumb_func_start MOD53_021D83DC
+MOD53_021D83DC: ; 0x021D83DC
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r4, _021D8408 ; =0x021D9600
+ add r5, r0, #0
+ add r7, r1, #0
+ mov r6, #0
+_021D83E6:
+ cmp r6, r7
+ ldr r0, [r5]
+ bne _021D83F6
+ ldrh r1, [r4, #4]
+ add r1, r1, #1
+ bl FUN_02020130
+ b _021D83FC
+_021D83F6:
+ ldrh r1, [r4, #4]
+ bl FUN_02020130
+_021D83FC:
+ add r6, r6, #1
+ add r4, r4, #6
+ add r5, r5, #4
+ cmp r6, #8
+ blt _021D83E6
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8408: .word 0x021D9600
+ thumb_func_end MOD53_021D83DC
+
+ thumb_func_start MOD53_021D840C
+MOD53_021D840C: ; 0x021D840C
+ push {r3, lr}
+ cmp r1, #1
+ ldr r0, [r0, #0x20]
+ bne _021D841C
+ mov r1, #0x16
+ bl FUN_02020130
+ pop {r3, pc}
+_021D841C:
+ mov r1, #0x15
+ bl FUN_02020130
+ pop {r3, pc}
+ thumb_func_end MOD53_021D840C
+
+ thumb_func_start MOD53_021D8424
+MOD53_021D8424: ; 0x021D8424
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD53_021D81B0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8446
+ bl MOD53_021D8FF8
+ cmp r0, #1
+ beq _021D844C
+ add r0, r5, #0
+ bl MOD53_021D90F8
+ b _021D844C
+_021D8446:
+ add r0, r5, #0
+ bl MOD53_021D90F8
+_021D844C:
+ add r0, r5, #0
+ bl MOD53_021D8F50
+ ldr r2, _021D846C ; =0x00004382
+ mov r0, #0xb2
+ lsl r0, r0, #2
+ add r1, r5, r2
+ add r2, #0x32
+ add r0, r5, r0
+ add r2, r5, r2
+ mov r3, #1
+ bl MOD53_021D8E84
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D846C: .word 0x00004382
+ thumb_func_end MOD53_021D8424
+
+ thumb_func_start MOD53_021D8470
+MOD53_021D8470: ; 0x021D8470
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD53_021D8F50
+ ldr r2, _021D8490 ; =0x00004382
+ mov r0, #0xb2
+ lsl r0, r0, #2
+ add r1, r4, r2
+ add r2, #0x32
+ add r0, r4, r0
+ add r2, r4, r2
+ mov r3, #0
+ bl MOD53_021D8E84
+ pop {r4, pc}
+ nop
+_021D8490: .word 0x00004382
+ thumb_func_end MOD53_021D8470
+
+ thumb_func_start MOD53_021D8494
+MOD53_021D8494: ; 0x021D8494
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_02031190
+ mov r1, #0x32
+ lsl r1, r1, #4
+ ldr r1, [r5, r1]
+ cmp r1, r0
+ bne _021D84B4
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0
+ bl MOD53_021D91C8
+ b _021D84BE
+_021D84B4:
+ mov r1, #0
+ add r0, r5, #0
+ add r2, r1, #0
+ bl MOD53_021D91C8
+_021D84BE:
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD53_021D93E0
+ ldr r0, _021D84E4 ; =0x000005E4
+ bl FUN_020054C8
+ mov r1, #0x1e
+ add r2, r1, #0
+ ldr r0, _021D84E8 ; =0x04000050
+ sub r2, #0x24
+ bl G2x_SetBlendBrightness_
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D84E4: .word 0x000005E4
+_021D84E8: .word 0x04000050
+ thumb_func_end MOD53_021D8494
+
+ thumb_func_start MOD53_021D84EC
+MOD53_021D84EC: ; 0x021D84EC
+ push {r4, lr}
+ add r4, r1, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r4, pc}
+ thumb_func_end MOD53_021D84EC
+
+ thumb_func_start MOD53_021D84F8
+MOD53_021D84F8: ; 0x021D84F8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, _021D8524 ; =0x04000050
+ mov r2, #0
+ strh r2, [r1]
+ add r5, r0, #0
+ mov r1, #1
+ bl MOD53_021D926C
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD53_021D93E0
+ add r0, r5, #0
+ bl MOD53_021D8470
+ ldr r0, _021D8528 ; =0x00009404
+ mov r1, #0
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D8524: .word 0x04000050
+_021D8528: .word 0x00009404
+ thumb_func_end MOD53_021D84F8
+
+ thumb_func_start MOD53_021D852C
+MOD53_021D852C: ; 0x021D852C
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5, #0x30]
+ add r4, r1, #0
+ bl MOD53_021D923C
+ cmp r0, #0
+ beq _021D8570
+ ldr r0, [r5]
+ mov r1, #0x19
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ mov r0, #0xb4
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ add r0, sp, #0
+ strb r1, [r0, #0x10]
+ mov r1, #6
+ strb r1, [r0, #0x11]
+ add r0, r5, #0
+ add r1, sp, #0
+ bl MOD53_021D941C
+ cmp r0, #0
+ bne _021D8568
+ bl ErrorHandling
+_021D8568:
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD53_021D93E0
+_021D8570:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ add sp, #0x14
+ pop {r4, r5, pc}
+ thumb_func_end MOD53_021D852C
+
+ thumb_func_start MOD53_021D857C
+MOD53_021D857C: ; 0x021D857C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r1, _021D86C8 ; =0x00004380
+ mov r0, #0x38
+ ldrb r2, [r5, r1]
+ bic r2, r0
+ strb r2, [r5, r1]
+ add r1, #0xb
+ ldrb r0, [r5, r1]
+ cmp r0, #2
+ bne _021D85BA
+ bl FUN_02031190
+ cmp r0, #0
+ beq _021D85BA
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r5, #0
+ bl MOD53_021D9460
+ cmp r0, #0
+ beq _021D85B4
+ ldr r0, _021D86CC ; =0x000005F2
+ bl FUN_020054C8
+_021D85B4:
+ add sp, #4
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, pc}
+_021D85BA:
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D85D6
+ ldr r0, _021D86D0 ; =0x000093B4
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D85D6
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add sp, #4
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, pc}
+_021D85D6:
+ bl MOD53_021D9160
+ add r6, r0, #0
+ bl FUN_02030F20
+ cmp r6, r0
+ beq _021D85F0
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add sp, #4
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, pc}
+_021D85F0:
+ ldr r0, _021D86D4 ; =0x000093F0
+ ldr r0, [r5, r0]
+ bl FUN_0201466C
+ cmp r0, #1
+ beq _021D8602
+ cmp r0, #2
+ beq _021D8672
+ b _021D86BA
+_021D8602:
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D861E
+ add r0, r5, #0
+ mov r1, #0xd
+ bl MOD53_021D93E0
+ add r0, r5, #0
+ mov r1, #4
+ mov r2, #1
+ bl MOD53_021D91C8
+ b _021D8660
+_021D861E:
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #4
+ bl MI_CpuFill8
+ mov r1, #0
+ add r0, sp, #0
+ strb r1, [r0, #2]
+ bl FUN_02031190
+ add r1, sp, #0
+ strb r0, [r1]
+ ldr r0, _021D86D8 ; =0x000093BC
+ mov r1, #1
+ strb r1, [r5, r0]
+ mov r1, #0
+ sub r0, r0, #2
+ strh r1, [r5, r0]
+ add r0, r5, #0
+ mov r1, #7
+ bl MOD53_021D93E0
+ mov r0, #0x7e
+ add r1, sp, #0
+ mov r2, #4
+ bl FUN_02030ADC
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0200D0E0
+_021D8660:
+ add r0, r5, #0
+ bl MOD53_021D9440
+ mov r0, #0xb2
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_020191D0
+ b _021D86BA
+_021D8672:
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD53_021D93E0
+ mov r0, #0x92
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl MOD53_021D840C
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0200D0E0
+ add r0, r5, #0
+ bl MOD53_021D9440
+ mov r0, #0xb2
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_020191D0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D86BA
+ bl FUN_02030F20
+ add r0, r0, #1
+ bl FUN_02032B6C
+ ldr r0, _021D86DC ; =0x000093F4
+ mov r1, #1
+ str r1, [r5, r0]
+_021D86BA:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D86C8: .word 0x00004380
+_021D86CC: .word 0x000005F2
+_021D86D0: .word 0x000093B4
+_021D86D4: .word 0x000093F0
+_021D86D8: .word 0x000093BC
+_021D86DC: .word 0x000093F4
+ thumb_func_end MOD53_021D857C
+
+ thumb_func_start MOD53_021D86E0
+MOD53_021D86E0: ; 0x021D86E0
+ push {r4, lr}
+ ldr r2, _021D86FC ; =0x00004380
+ add r4, r1, #0
+ ldrb r3, [r0, r2]
+ mov r1, #0x38
+ bic r3, r1
+ strb r3, [r0, r2]
+ ldr r1, _021D8700 ; =0x000093BA
+ mov r2, #0
+ strh r2, [r0, r1]
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r4, pc}
+ .align 2, 0
+_021D86FC: .word 0x00004380
+_021D8700: .word 0x000093BA
+ thumb_func_end MOD53_021D86E0
+
+ thumb_func_start MOD53_021D8704
+MOD53_021D8704: ; 0x021D8704
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r1, _021D8790 ; =0x00004380
+ mov r0, #0x38
+ ldrb r2, [r5, r1]
+ bic r2, r0
+ strb r2, [r5, r1]
+ bl FUN_02030F20
+ ldr r1, _021D8794 ; =0x000093B8
+ ldrh r1, [r5, r1]
+ cmp r1, r0
+ bne _021D872C
+ bl MOD53_021D9160
+ ldr r1, _021D8794 ; =0x000093B8
+ ldrh r2, [r5, r1]
+ cmp r2, r0
+ beq _021D8744
+_021D872C:
+ ldr r0, _021D8798 ; =0x000093BA
+ mov r1, #0
+ strh r1, [r5, r0]
+ add r0, r5, #0
+ mov r1, #9
+ bl MOD53_021D93E0
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_021D8744:
+ add r0, r1, #2
+ ldrsh r0, [r5, r0]
+ add r2, r0, #1
+ add r0, r1, #2
+ strh r2, [r5, r0]
+ ldrsh r0, [r5, r0]
+ cmp r0, #0x1e
+ ble _021D8784
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #4
+ bl MI_CpuFill8
+ mov r1, #1
+ add r0, sp, #0
+ strb r1, [r0, #2]
+ bl FUN_02031190
+ add r1, sp, #0
+ strb r0, [r1]
+ mov r0, #0x7e
+ add r1, sp, #0
+ mov r2, #4
+ bl FUN_02030ADC
+ ldr r0, _021D8798 ; =0x000093BA
+ mov r1, #0
+ strh r1, [r5, r0]
+ add r0, r5, #0
+ mov r1, #0xa
+ bl MOD53_021D93E0
+_021D8784:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D8790: .word 0x00004380
+_021D8794: .word 0x000093B8
+_021D8798: .word 0x000093BA
+ thumb_func_end MOD53_021D8704
+
+ thumb_func_start MOD53_021D879C
+MOD53_021D879C: ; 0x021D879C
+ push {r3, r4, r5, lr}
+ ldr r2, _021D87D0 ; =0x00004380
+ add r5, r0, #0
+ ldrb r3, [r5, r2]
+ add r4, r1, #0
+ mov r1, #0x38
+ bic r3, r1
+ strb r3, [r5, r2]
+ ldr r1, _021D87D4 ; =0x000093BC
+ mov r2, #0
+ strb r2, [r5, r1]
+ mov r1, #4
+ bl MOD53_021D93E0
+ mov r0, #0x92
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl MOD53_021D840C
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D87D0: .word 0x00004380
+_021D87D4: .word 0x000093BC
+ thumb_func_end MOD53_021D879C
+
+ thumb_func_start MOD53_021D87D8
+MOD53_021D87D8: ; 0x021D87D8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r1, #6
+ mov r2, #1
+ bl MOD53_021D91C8
+ add r0, r5, #0
+ mov r1, #0xb
+ bl MOD53_021D93E0
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD53_021D87D8
+
+ thumb_func_start MOD53_021D87F8
+MOD53_021D87F8: ; 0x021D87F8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x30]
+ add r4, r1, #0
+ bl MOD53_021D923C
+ cmp r0, #0
+ beq _021D8818
+ mov r0, #0x31
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r5, #0
+ mov r1, #0xc
+ bl MOD53_021D93E0
+_021D8818:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D87F8
+
+ thumb_func_start MOD53_021D8824
+MOD53_021D8824: ; 0x021D8824
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #0x31
+ lsl r0, r0, #4
+ add r4, r1, #0
+ ldr r1, [r5, r0]
+ add r1, r1, #1
+ str r1, [r5, r0]
+ ldr r0, [r5, r0]
+ cmp r0, #0x3c
+ ble _021D8854
+ mov r1, #0x10
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x27
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r4, #3
+_021D8854:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ thumb_func_end MOD53_021D8824
+
+ thumb_func_start MOD53_021D8860
+MOD53_021D8860: ; 0x021D8860
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5, #0x30]
+ add r4, r1, #0
+ bl MOD53_021D923C
+ cmp r0, #0
+ beq _021D88A4
+ ldr r0, [r5]
+ mov r1, #0x19
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ mov r0, #0xb4
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ add r0, sp, #0
+ strb r1, [r0, #0x10]
+ mov r1, #6
+ strb r1, [r0, #0x11]
+ add r0, r5, #0
+ add r1, sp, #0
+ bl MOD53_021D941C
+ cmp r0, #0
+ bne _021D889C
+ bl ErrorHandling
+_021D889C:
+ add r0, r5, #0
+ mov r1, #0xe
+ bl MOD53_021D93E0
+_021D88A4:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ add sp, #0x14
+ pop {r4, r5, pc}
+ thumb_func_end MOD53_021D8860
+
+ thumb_func_start MOD53_021D88B0
+MOD53_021D88B0: ; 0x021D88B0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, _021D8960 ; =0x000093F0
+ add r6, r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0201466C
+ add r4, r0, #0
+ bl MOD53_021D9160
+ mov r1, #0xc6
+ lsl r1, r1, #2
+ ldr r1, [r5, r1]
+ cmp r1, r0
+ bne _021D88D6
+ ldr r0, _021D8964 ; =0x000093B4
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D88E0
+_021D88D6:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+_021D88E0:
+ cmp r4, #1
+ beq _021D88EA
+ cmp r4, #2
+ beq _021D8916
+ b _021D8954
+_021D88EA:
+ add r0, r5, #0
+ mov r1, #0xf
+ bl MOD53_021D93E0
+ mov r1, #0
+ mov r0, #0x7f
+ add r2, r1, #0
+ bl FUN_02030BC4
+ mov r0, #0
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ ldr r0, [r5, #0xc]
+ mov r1, #0
+ bl FUN_0200ABC0
+ add r0, r5, #0
+ mov r6, #2
+ bl MOD53_021D9440
+ b _021D8954
+_021D8916:
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD53_021D93E0
+ mov r0, #0x92
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl MOD53_021D840C
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0200D0E0
+ add r0, r5, #0
+ bl MOD53_021D9440
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8954
+ bl FUN_02030F20
+ add r0, r0, #1
+ bl FUN_02032B6C
+ ldr r0, _021D8968 ; =0x000093F4
+ mov r1, #1
+ str r1, [r5, r0]
+_021D8954:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ nop
+_021D8960: .word 0x000093F0
+_021D8964: .word 0x000093B4
+_021D8968: .word 0x000093F4
+ thumb_func_end MOD53_021D88B0
+
+ thumb_func_start MOD53_021D896C
+MOD53_021D896C: ; 0x021D896C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0
+ add r4, r1, #0
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ ldr r0, [r5, #0xc]
+ mov r1, #0
+ bl FUN_0200ABC0
+ add r0, r5, #0
+ mov r1, #3
+ mov r2, #1
+ bl MOD53_021D91C8
+ add r0, r5, #0
+ mov r1, #0x10
+ bl MOD53_021D93E0
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D896C
+
+ thumb_func_start MOD53_021D89A0
+MOD53_021D89A0: ; 0x021D89A0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x30]
+ add r4, r1, #0
+ bl MOD53_021D923C
+ cmp r0, #0
+ beq _021D89BE
+ add r0, r5, #0
+ mov r1, #0x11
+ bl MOD53_021D93E0
+ mov r0, #0xc8
+ bl FUN_02031588
+_021D89BE:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD53_021D89A0
+
+ thumb_func_start MOD53_021D89C8
+MOD53_021D89C8: ; 0x021D89C8
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #0xc8
+ add r5, r1, #0
+ bl FUN_020315D8
+ cmp r0, #0
+ bne _021D89E2
+ bl FUN_02030F20
+ cmp r0, #1
+ bne _021D89FA
+_021D89E2:
+ mov r1, #0x10
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x27
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r5, #3
+_021D89FA:
+ add r0, r4, #0
+ bl MOD53_021D8470
+ add r0, r5, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D89C8
+
+ thumb_func_start MOD53_021D8A08
+MOD53_021D8A08: ; 0x021D8A08
+ add r0, r1, #0
+ bx lr
+ thumb_func_end MOD53_021D8A08
+
+ thumb_func_start MOD53_021D8A0C
+MOD53_021D8A0C: ; 0x021D8A0C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r1, #5
+ mov r2, #1
+ bl MOD53_021D91C8
+ add r0, r5, #0
+ mov r1, #0x14
+ bl MOD53_021D93E0
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD53_021D8A0C
+
+ thumb_func_start MOD53_021D8A2C
+MOD53_021D8A2C: ; 0x021D8A2C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x30]
+ add r4, r1, #0
+ bl MOD53_021D923C
+ cmp r0, #0
+ beq _021D8A44
+ add r0, r5, #0
+ mov r1, #0xc
+ bl MOD53_021D93E0
+_021D8A44:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D8A2C
+
+ thumb_func_start MOD53_021D8A50
+MOD53_021D8A50: ; 0x021D8A50
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x30]
+ add r4, r1, #0
+ cmp r0, #0xff
+ beq _021D8A6E
+ bl MOD53_021D923C
+ cmp r0, #0
+ bne _021D8A6E
+ ldr r0, [r5, #0x30]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD7C
+_021D8A6E:
+ add r0, r5, #0
+ mov r1, #2
+ mov r2, #1
+ bl MOD53_021D91C8
+ add r0, r5, #0
+ mov r1, #0x16
+ bl MOD53_021D93E0
+ ldr r0, _021D8AA8 ; =0x000005E4
+ bl FUN_020054C8
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8A96
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD53_021D926C
+_021D8A96:
+ bl FUN_02030F20
+ ldr r1, _021D8AAC ; =0x000093B0
+ str r0, [r5, r1]
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8AA8: .word 0x000005E4
+_021D8AAC: .word 0x000093B0
+ thumb_func_end MOD53_021D8A50
+
+ thumb_func_start MOD53_021D8AB0
+MOD53_021D8AB0: ; 0x021D8AB0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D8AF4 ; =0x000093B0
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D8ACE
+ bl FUN_02030F20
+ ldr r1, _021D8AF4 ; =0x000093B0
+ ldr r2, [r5, r1]
+ cmp r2, r0
+ beq _021D8ACE
+ mov r0, #0
+ str r0, [r5, r1]
+_021D8ACE:
+ ldr r0, [r5, #0x30]
+ bl MOD53_021D923C
+ cmp r0, #0
+ beq _021D8AE8
+ add r0, r5, #0
+ mov r1, #0x17
+ bl MOD53_021D93E0
+ mov r0, #0x31
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_021D8AE8:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D8AF4: .word 0x000093B0
+ thumb_func_end MOD53_021D8AB0
+
+ thumb_func_start MOD53_021D8AF8
+MOD53_021D8AF8: ; 0x021D8AF8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D8B5C ; =0x000093B0
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D8B16
+ bl FUN_02030F20
+ ldr r1, _021D8B5C ; =0x000093B0
+ ldr r2, [r5, r1]
+ cmp r2, r0
+ beq _021D8B16
+ mov r0, #0
+ str r0, [r5, r1]
+_021D8B16:
+ mov r0, #0x31
+ lsl r0, r0, #4
+ ldr r1, [r5, r0]
+ add r1, r1, #1
+ str r1, [r5, r0]
+ ldr r0, [r5, r0]
+ cmp r0, #0x3c
+ ble _021D8B50
+ ldr r0, _021D8B5C ; =0x000093B0
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ bne _021D8B50
+ add r0, r5, #0
+ bl MOD53_021D925C
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD53_021D93E0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8B50
+ ldr r0, _021D8B60 ; =0x000093F4
+ mov r1, #1
+ str r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD53_021D926C
+_021D8B50:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D8B5C: .word 0x000093B0
+_021D8B60: .word 0x000093F4
+ thumb_func_end MOD53_021D8AF8
+
+ thumb_func_start MOD53_021D8B64
+MOD53_021D8B64: ; 0x021D8B64
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ add r6, r2, #0
+ cmp r5, #0xf
+ bgt _021D8B96
+ bge _021D8C42
+ cmp r5, #9
+ bhi _021D8C4A
+ add r1, r5, r5
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D8B82: ; jump table
+ .short _021D8C40 - _021D8B82 - 2 ; case 0
+ .short _021D8B9C - _021D8B82 - 2 ; case 1
+ .short _021D8C40 - _021D8B82 - 2 ; case 2
+ .short _021D8BDA - _021D8B82 - 2 ; case 3
+ .short _021D8C40 - _021D8B82 - 2 ; case 4
+ .short _021D8C40 - _021D8B82 - 2 ; case 5
+ .short _021D8C40 - _021D8B82 - 2 ; case 6
+ .short _021D8C40 - _021D8B82 - 2 ; case 7
+ .short _021D8C42 - _021D8B82 - 2 ; case 8
+ .short _021D8C42 - _021D8B82 - 2 ; case 9
+_021D8B96:
+ cmp r5, #0x15
+ beq _021D8BE0
+ pop {r4, r5, r6, pc}
+_021D8B9C:
+ mov r0, #0xc1
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #6
+ beq _021D8BAA
+ cmp r0, #0xe
+ bne _021D8BB0
+_021D8BAA:
+ add r0, r4, #0
+ bl MOD53_021D9440
+_021D8BB0:
+ mov r0, #0x92
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl MOD53_021D840C
+ add r0, r6, #0
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_0200ABC0
+ mov r0, #0x32
+ lsl r0, r0, #4
+ str r6, [r4, r0]
+ ldr r0, _021D8C4C ; =0x000093B4
+ mov r1, #0
+ str r1, [r4, r0]
+ b _021D8C42
+_021D8BDA:
+ bl MOD53_021D925C
+ b _021D8C42
+_021D8BE0:
+ ldr r0, _021D8C50 ; =0x000093BC
+ ldrb r0, [r4, r0]
+ cmp r0, #1
+ beq _021D8C4A
+ add r0, r6, #0
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_0200ABC0
+ bl FUN_02031190
+ cmp r6, r0
+ beq _021D8C4A
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8C14
+ ldr r1, _021D8C4C ; =0x000093B4
+ ldr r0, _021D8C54 ; =0x0000FFFF
+ ldr r2, [r4, r1]
+ eor r0, r6
+ and r0, r2
+ str r0, [r4, r1]
+_021D8C14:
+ mov r0, #0xc1
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #6
+ beq _021D8C22
+ cmp r0, #0xe
+ bne _021D8C32
+_021D8C22:
+ add r0, r4, #0
+ bl MOD53_021D9440
+ mov r0, #0xb2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_020191D0
+_021D8C32:
+ mov r0, #0x92
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl MOD53_021D840C
+ b _021D8C42
+_021D8C40:
+ pop {r4, r5, r6, pc}
+_021D8C42:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD53_021D93E0
+_021D8C4A:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D8C4C: .word 0x000093B4
+_021D8C50: .word 0x000093BC
+_021D8C54: .word 0x0000FFFF
+ thumb_func_end MOD53_021D8B64
+
+ thumb_func_start MOD53_021D8C58
+MOD53_021D8C58: ; 0x021D8C58
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ ldr r4, [sp, #0x38]
+ mov ip, r1
+ add r6, r2, #0
+ add r7, r3, #0
+ str r0, [sp, #0x18]
+ ldr r3, [sp, #0x3c]
+ ldr r2, [sp, #0x40]
+ ldr r1, [sp, #0x44]
+ cmp r4, #0
+ bge _021D8C84
+ neg r0, r4
+ cmp r0, r2
+ ble _021D8C78
+ add r0, r2, #0
+_021D8C78:
+ ldr r5, [sp, #0x30]
+ mov r4, #0
+ sub r5, r5, r0
+ add r6, r6, r0
+ str r5, [sp, #0x30]
+ sub r2, r2, r0
+_021D8C84:
+ cmp r3, #0
+ bge _021D8C9C
+ neg r0, r3
+ cmp r0, r1
+ ble _021D8C90
+ add r0, r1, #0
+_021D8C90:
+ ldr r5, [sp, #0x34]
+ mov r3, #0
+ sub r5, r5, r0
+ add r7, r7, r0
+ str r5, [sp, #0x34]
+ sub r1, r1, r0
+_021D8C9C:
+ ldr r0, [sp, #0x30]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ ldr r0, [sp, #0x34]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ lsl r0, r3, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0xc]
+ lsl r0, r2, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x14]
+ lsl r2, r6, #0x10
+ lsl r3, r7, #0x10
+ ldr r0, [sp, #0x18]
+ mov r1, ip
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_02019658
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD53_021D8C58
+
+ thumb_func_start MOD53_021D8CD8
+MOD53_021D8CD8: ; 0x021D8CD8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x50]
+ str r1, [sp, #0x1c]
+ str r0, [sp, #0x50]
+ ldr r0, [sp, #0x54]
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x54]
+ ldr r0, [sp, #0x50]
+ str r3, [sp, #0x24]
+ ldr r4, [r0]
+ ldr r0, [sp, #0x54]
+ ldr r5, [r0]
+ add r0, r2, #0
+ str r0, [sp, #0x38]
+ add r0, r3, #0
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x58]
+ cmp r0, #0
+ bne _021D8D18
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0
+ bne _021D8D18
+ ldr r0, [sp, #0x50]
+ add r1, r2, #0
+ str r1, [r0]
+ ldr r0, [sp, #0x54]
+ add r1, r3, #0
+ str r1, [r0]
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+_021D8D18:
+ ldr r0, [sp, #0x20]
+ sub r0, r0, r4
+ str r0, [sp, #0x34]
+ bpl _021D8D24
+ neg r0, r0
+ str r0, [sp, #0x34]
+_021D8D24:
+ ldr r0, [sp, #0x24]
+ sub r7, r0, r5
+ bpl _021D8D2C
+ neg r7, r7
+_021D8D2C:
+ ldr r0, [sp, #0x34]
+ cmp r0, r7
+ ble _021D8DBA
+ ldr r0, [sp, #0x20]
+ cmp r4, r0
+ ble _021D8D52
+ ldr r0, [sp, #0x24]
+ cmp r5, r0
+ ble _021D8D44
+ mov r0, #1
+ str r0, [sp, #0x2c]
+ b _021D8D4A
+_021D8D44:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x2c]
+_021D8D4A:
+ str r4, [sp, #0x38]
+ ldr r4, [sp, #0x20]
+ ldr r5, [sp, #0x24]
+ b _021D8D64
+_021D8D52:
+ ldr r0, [sp, #0x24]
+ cmp r5, r0
+ bge _021D8D5E
+ mov r0, #1
+ str r0, [sp, #0x2c]
+ b _021D8D64
+_021D8D5E:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x2c]
+_021D8D64:
+ mov r0, #6
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ mov r2, #0
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ add r3, r2, #0
+ bl MOD53_021D8C58
+ ldr r0, [sp, #0x34]
+ add r4, r4, #1
+ asr r6, r0, #1
+ ldr r0, [sp, #0x38]
+ cmp r4, r0
+ bgt _021D8E3E
+_021D8D8A:
+ sub r6, r6, r7
+ bpl _021D8D96
+ ldr r0, [sp, #0x34]
+ add r6, r6, r0
+ ldr r0, [sp, #0x2c]
+ add r5, r5, r0
+_021D8D96:
+ mov r0, #6
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ mov r2, #0
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ add r3, r2, #0
+ bl MOD53_021D8C58
+ ldr r0, [sp, #0x38]
+ add r4, r4, #1
+ cmp r4, r0
+ ble _021D8D8A
+ b _021D8E3E
+_021D8DBA:
+ ldr r0, [sp, #0x24]
+ cmp r5, r0
+ ble _021D8DDA
+ ldr r0, [sp, #0x20]
+ cmp r4, r0
+ ble _021D8DCC
+ mov r0, #1
+ str r0, [sp, #0x28]
+ b _021D8DD2
+_021D8DCC:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x28]
+_021D8DD2:
+ str r5, [sp, #0x30]
+ ldr r5, [sp, #0x24]
+ ldr r4, [sp, #0x20]
+ b _021D8DEC
+_021D8DDA:
+ ldr r0, [sp, #0x20]
+ cmp r4, r0
+ bge _021D8DE6
+ mov r0, #1
+ str r0, [sp, #0x28]
+ b _021D8DEC
+_021D8DE6:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x28]
+_021D8DEC:
+ mov r0, #6
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ mov r2, #0
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ add r3, r2, #0
+ bl MOD53_021D8C58
+ ldr r0, [sp, #0x30]
+ add r5, r5, #1
+ asr r6, r7, #1
+ cmp r5, r0
+ bgt _021D8E3E
+_021D8E10:
+ ldr r0, [sp, #0x34]
+ sub r6, r6, r0
+ bpl _021D8E1C
+ ldr r0, [sp, #0x28]
+ add r6, r6, r7
+ add r4, r4, r0
+_021D8E1C:
+ mov r0, #6
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ mov r2, #0
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ add r3, r2, #0
+ bl MOD53_021D8C58
+ ldr r0, [sp, #0x30]
+ add r5, r5, #1
+ cmp r5, r0
+ ble _021D8E10
+_021D8E3E:
+ ldr r1, [sp, #0x20]
+ ldr r0, [sp, #0x50]
+ str r1, [r0]
+ ldr r1, [sp, #0x24]
+ ldr r0, [sp, #0x54]
+ str r1, [r0]
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D8CD8
+
+ thumb_func_start MOD53_021D8E50
+MOD53_021D8E50: ; 0x021D8E50
+ mov r2, #0
+_021D8E52:
+ ldrb r3, [r0, #8]
+ lsl r3, r3, #0x1a
+ lsr r3, r3, #0x1d
+ strh r3, [r1, #2]
+ ldrb r3, [r0, #8]
+ lsl r3, r3, #0x1a
+ lsr r3, r3, #0x1d
+ beq _021D8E76
+ add r3, r0, r3
+ sub r3, r3, #1
+ ldrb r3, [r3]
+ strb r3, [r1]
+ ldrb r3, [r0, #8]
+ lsl r3, r3, #0x1a
+ lsr r3, r3, #0x1d
+ add r3, r0, r3
+ ldrb r3, [r3, #3]
+ strb r3, [r1, #1]
+_021D8E76:
+ add r2, r2, #1
+ add r0, #0xa
+ add r1, r1, #4
+ cmp r2, #5
+ blt _021D8E52
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD53_021D8E50
+
+ thumb_func_start MOD53_021D8E84
+MOD53_021D8E84: ; 0x021D8E84
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ str r0, [sp, #0x10]
+ mov r0, #0
+ str r1, [sp, #0x14]
+ str r2, [sp, #0x18]
+ str r3, [sp, #0x1c]
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+ add r5, r1, #0
+ add r7, r2, #0
+_021D8E9A:
+ ldrb r0, [r5, #8]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1d
+ beq _021D8F0A
+ ldrh r0, [r7, #2]
+ cmp r0, #0
+ beq _021D8EB4
+ ldrb r0, [r7]
+ sub r0, #9
+ str r0, [sp, #0x2c]
+ ldrb r0, [r7, #1]
+ sub r0, #0x11
+ str r0, [sp, #0x28]
+_021D8EB4:
+ ldrb r0, [r5, #8]
+ mov r4, #0
+ lsl r0, r0, #0x1a
+ lsr r1, r0, #0x1d
+ cmp r1, #0
+ ble _021D8F0A
+ mov r0, #1
+ str r0, [sp, #0x20]
+ cmp r1, #0
+ ble _021D8F0A
+_021D8EC8:
+ add r0, sp, #0x2c
+ str r0, [sp]
+ add r0, sp, #0x28
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ ldrh r0, [r7, #2]
+ mov r6, #0xc0
+ add r3, r5, r4
+ str r0, [sp, #0xc]
+ ldrb r1, [r5, #8]
+ ldrb r3, [r3, #4]
+ ldr r0, [sp, #0x10]
+ lsl r2, r1, #0x18
+ lsr r2, r2, #0x1e
+ mul r6, r2
+ ldr r2, _021D8F4C ; =0x021D9648
+ lsl r1, r1, #0x1d
+ add r2, r2, r6
+ lsr r6, r1, #0x1d
+ mov r1, #0x18
+ mul r1, r6
+ add r1, r2, r1
+ ldrb r2, [r5, r4]
+ sub r3, #0x11
+ sub r2, #9
+ bl MOD53_021D8CD8
+ ldrb r0, [r5, #8]
+ add r4, r4, #1
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1d
+ cmp r4, r0
+ blt _021D8EC8
+_021D8F0A:
+ ldr r0, [sp, #0x24]
+ add r5, #0xa
+ add r0, r0, #1
+ add r7, r7, #4
+ str r0, [sp, #0x24]
+ cmp r0, #5
+ blt _021D8E9A
+ ldr r0, [sp, #0x20]
+ cmp r0, #0
+ beq _021D8F2A
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0
+ beq _021D8F2A
+ ldr r0, [sp, #0x10]
+ bl FUN_020191D0
+_021D8F2A:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ bl MOD53_021D8E50
+ mov r3, #0
+ mov r1, #0x38
+_021D8F36:
+ ldr r0, [sp, #0x14]
+ add r3, r3, #1
+ ldrb r2, [r0, #8]
+ bic r2, r1
+ strb r2, [r0, #8]
+ add r0, #0xa
+ str r0, [sp, #0x14]
+ cmp r3, #5
+ blt _021D8F36
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8F4C: .word 0x021D9648
+ thumb_func_end MOD53_021D8E84
+
+ thumb_func_start MOD53_021D8F50
+MOD53_021D8F50: ; 0x021D8F50
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _021D8FB4 ; =0x00004382
+ mov r7, #0x76
+ mov r6, #0
+ add r4, r5, r0
+ lsl r7, r7, #2
+_021D8F5E:
+ bl FUN_02031190
+ cmp r6, r0
+ beq _021D8FA6
+ ldrb r0, [r4, #8]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1d
+ beq _021D8F9A
+ add r0, r6, #0
+ bl FUN_0202DFA4
+ cmp r0, #0
+ beq _021D8F9A
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ ldrb r0, [r4, #8]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1d
+ add r2, r4, r0
+ sub r1, r2, #1
+ ldrb r1, [r1]
+ ldrb r2, [r2, #3]
+ ldr r0, [r5, r7]
+ bl MOD53_021D8140
+ b _021D8FA6
+_021D8F9A:
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+_021D8FA6:
+ add r6, r6, #1
+ add r4, #0xa
+ add r5, r5, #4
+ cmp r6, #5
+ blt _021D8F5E
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8FB4: .word 0x00004382
+ thumb_func_end MOD53_021D8F50
+
+ thumb_func_start MOD53_021D8FB8
+MOD53_021D8FB8: ; 0x021D8FB8
+ push {r3, lr}
+ ldrh r1, [r0]
+ add r1, #0x14
+ strh r1, [r0]
+ ldrh r2, [r0]
+ mov r1, #0x5a
+ lsl r1, r1, #2
+ cmp r2, r1
+ bls _021D8FCE
+ mov r1, #0
+ strh r1, [r0]
+_021D8FCE:
+ ldrh r0, [r0]
+ bl FUN_0201B970
+ mov r1, #0xa
+ mul r1, r0
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ asr r0, r0, #0xc
+ add r0, #0xf
+ lsl r1, r0, #5
+ mov r0, #0x1d
+ orr r1, r0
+ add r0, sp, #0
+ strh r1, [r0]
+ add r0, sp, #0
+ mov r1, #0x18
+ mov r2, #2
+ bl GX_LoadOBJPltt
+ pop {r3, pc}
+ thumb_func_end MOD53_021D8FB8
+
+ thumb_func_start MOD53_021D8FF8
+MOD53_021D8FF8: ; 0x021D8FF8
+ push {r3, r4, r5, lr}
+ mov r5, #0
+ add r4, r5, #0
+_021D8FFE:
+ add r0, r4, #0
+ bl FUN_0202DFA4
+ cmp r0, #0
+ beq _021D900A
+ add r5, r5, #1
+_021D900A:
+ add r4, r4, #1
+ cmp r4, #5
+ blt _021D8FFE
+ add r0, r5, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD53_021D8FF8
+
+ thumb_func_start MOD53_021D9014
+MOD53_021D9014: ; 0x021D9014
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r7, r3, #0
+ add r5, r0, #0
+ str r2, [sp, #0x10]
+ bl FUN_02031190
+ str r0, [sp, #0x14]
+ add r0, r7, #0
+ bl MOD53_021D9184
+ cmp r0, #0
+ beq _021D90EE
+ mov r0, #0
+ str r0, [sp, #0x18]
+ add r6, r7, #0
+ add r4, r7, #0
+_021D9036:
+ mov r0, #0xcd
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ bne _021D904E
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ b _021D905A
+_021D904E:
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+_021D905A:
+ ldr r0, [sp, #0x18]
+ add r6, #8
+ add r0, r0, #1
+ add r4, r4, #4
+ str r0, [sp, #0x18]
+ cmp r0, #5
+ blt _021D9036
+ mov r6, #0
+ add r4, r5, #0
+_021D906C:
+ mov r0, #0x50
+ mov r1, #0
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ add r6, r6, #1
+ add r4, #0x10
+ cmp r6, #5
+ blt _021D906C
+ mov r6, #0
+ add r4, r7, #0
+_021D908C:
+ mov r0, #0xcd
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ cmp r0, #0
+ beq _021D90DC
+ ldr r1, [r4, #0x14]
+ bl FUN_02023990
+ ldr r0, [sp, #0x14]
+ cmp r0, r6
+ bne _021D90C0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D90F4 ; =0x0003040F
+ mov r1, #1
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x14]
+ add r0, r5, #0
+ mov r3, #0
+ bl FUN_0201BDE0
+ b _021D90DC
+_021D90C0:
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x10]
+ mov r1, #1
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x14]
+ add r0, r5, #0
+ mov r3, #0
+ bl FUN_0201BDE0
+_021D90DC:
+ add r0, r5, #0
+ bl FUN_020191D0
+ add r6, r6, #1
+ add r7, #8
+ add r4, r4, #4
+ add r5, #0x10
+ cmp r6, #5
+ blt _021D908C
+_021D90EE:
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D90F4: .word 0x0003040F
+ thumb_func_end MOD53_021D9014
+
+ thumb_func_start MOD53_021D90F8
+MOD53_021D90F8: ; 0x021D90F8
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D9138
+ bl FUN_02031370
+ cmp r0, #0
+ beq _021D914C
+ ldr r1, _021D9150 ; =0x000093F4
+ ldr r0, _021D9154 ; =0x00004381
+ ldr r2, [r4, r1]
+ sub r1, #0x37
+ strb r2, [r4, r0]
+ sub r0, #9
+ add r2, r4, r1
+ add r3, r4, r0
+ mov r1, #0xa
+_021D911E:
+ ldrb r0, [r3]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021D911E
+ ldr r1, _021D9158 ; =0x000093BD
+ mov r0, #0x78
+ add r1, r4, r1
+ mov r2, #0x32
+ bl FUN_02030BC4
+ pop {r4, pc}
+_021D9138:
+ bl FUN_02031388
+ cmp r0, #0
+ beq _021D914C
+ ldr r1, _021D915C ; =0x00004378
+ mov r0, #0x77
+ add r1, r4, r1
+ mov r2, #0xa
+ bl FUN_02030ADC
+_021D914C:
+ pop {r4, pc}
+ nop
+_021D9150: .word 0x000093F4
+_021D9154: .word 0x00004381
+_021D9158: .word 0x000093BD
+_021D915C: .word 0x00004378
+ thumb_func_end MOD53_021D90F8
+
+ thumb_func_start MOD53_021D9160
+MOD53_021D9160: ; 0x021D9160
+ push {r3, r4, r5, lr}
+ mov r5, #0
+ add r4, r5, #0
+_021D9166:
+ add r0, r4, #0
+ bl FUN_0202DFA4
+ cmp r0, #0
+ beq _021D9172
+ add r5, r5, #1
+_021D9172:
+ add r4, r4, #1
+ cmp r4, #5
+ blt _021D9166
+ add r0, r5, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD53_021D9160
+
+ thumb_func_start MOD53_021D917C
+MOD53_021D917C: ; 0x021D917C
+ ldr r3, _021D9180 ; =MOD53_021D9160
+ bx r3
+ .align 2, 0
+_021D9180: .word MOD53_021D9160
+ thumb_func_end MOD53_021D917C
+
+ thumb_func_start MOD53_021D9184
+MOD53_021D9184: ; 0x021D9184
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r7, #0
+ add r6, r7, #0
+ add r4, r5, #0
+_021D918E:
+ mov r0, #0xcd
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r0, r0, #4
+ str r1, [r4, r0]
+ add r0, r6, #0
+ bl FUN_0202DFA4
+ mov r1, #0xcd
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r6, r6, #1
+ add r4, #8
+ cmp r6, #5
+ blt _021D918E
+ mov r6, #0
+ mov r2, #1
+ add r0, r1, #4
+_021D91B2:
+ ldr r4, [r5, r0]
+ ldr r3, [r5, r1]
+ cmp r4, r3
+ beq _021D91BC
+ add r7, r2, #0
+_021D91BC:
+ add r6, r6, #1
+ add r5, #8
+ cmp r6, #5
+ blt _021D91B2
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD53_021D9184
+
+ thumb_func_start MOD53_021D91C8
+MOD53_021D91C8: ; 0x021D91C8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r7, r1, #0
+ mov r0, #0x50
+ mov r1, #0x27
+ add r4, r2, #0
+ bl FUN_020219F4
+ add r6, r0, #0
+ ldr r0, [r5, #0x10]
+ add r1, r7, #0
+ add r2, r6, #0
+ bl FUN_0200A8E0
+ ldr r0, [r5, #0xc]
+ ldr r1, [r5, #0x2c]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ add r0, r6, #0
+ bl FUN_02021A20
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ mov r2, #1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ cmp r4, #0
+ bne _021D9218
+ mov r4, #0
+_021D9218:
+ mov r3, #0
+ str r3, [sp]
+ str r4, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ ldr r2, [r5, #0x2c]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ str r0, [r5, #0x30]
+ cmp r4, #0
+ bne _021D9238
+ mov r0, #0xff
+ str r0, [r5, #0x30]
+_021D9238:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD53_021D91C8
+
+ thumb_func_start MOD53_021D923C
+MOD53_021D923C: ; 0x021D923C
+ push {r3, lr}
+ cmp r0, #0xff
+ bne _021D9246
+ mov r0, #1
+ pop {r3, pc}
+_021D9246:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D9256
+ mov r0, #1
+ pop {r3, pc}
+_021D9256:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D923C
+
+ thumb_func_start MOD53_021D925C
+MOD53_021D925C: ; 0x021D925C
+ mov r1, #0xb6
+ lsl r1, r1, #2
+ add r0, r0, r1
+ ldr r3, _021D9268 ; =0x0200D0E1
+ mov r1, #0
+ bx r3
+ .align 2, 0
+_021D9268: .word 0x0200D0E1
+ thumb_func_end MOD53_021D925C
+
+ thumb_func_start MOD53_021D926C
+MOD53_021D926C: ; 0x021D926C
+ push {r4, lr}
+ add r4, r1, #0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D9288
+ bl FUN_02030F20
+ add r0, r4, r0
+ cmp r0, #5
+ ble _021D9284
+ mov r0, #5
+_021D9284:
+ bl FUN_02032B6C
+_021D9288:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D926C
+
+ thumb_func_start MOD53_021D928C
+MOD53_021D928C: ; 0x021D928C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl MOD53_021D9160
+ add r5, r0, #0
+ cmp r5, #5
+ bhi _021D932A
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D92A6: ; jump table
+ .short _021D932A - _021D92A6 - 2 ; case 0
+ .short _021D92B2 - _021D92A6 - 2 ; case 1
+ .short _021D92F8 - _021D92A6 - 2 ; case 2
+ .short _021D92F8 - _021D92A6 - 2 ; case 3
+ .short _021D92F8 - _021D92A6 - 2 ; case 4
+ .short _021D9324 - _021D92A6 - 2 ; case 5
+_021D92B2:
+ mov r0, #0xc1
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0xe
+ bgt _021D932A
+ bl FUN_0202CB8C
+ cmp r0, #1
+ beq _021D92CC
+ mov r0, #0x25
+ mov r1, #1
+ lsl r0, r0, #0xa
+ str r1, [r4, r0]
+_021D92CC:
+ mov r0, #0xc2
+ mov r1, #0x13
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r0, #1
+ bl FUN_02032B6C
+ ldr r0, _021D93CC ; =0x000093F8
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D92F4
+ add r0, r4, #0
+ bl MOD53_021D9440
+ mov r0, #0x9a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x15
+ bl FUN_02020130
+_021D92F4:
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021D92F8:
+ mov r0, #1
+ bl FUN_02052B74
+ mov r0, #0xc5
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r5, r0
+ bge _021D932A
+ ldr r0, _021D93D0 ; =0x000093F4
+ ldr r0, [r4, r0]
+ cmp r0, #2
+ bne _021D931A
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD53_021D926C
+ b _021D932A
+_021D931A:
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD53_021D926C
+ b _021D932A
+_021D9324:
+ mov r0, #8
+ bl FUN_02052B74
+_021D932A:
+ mov r0, #0xc5
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r5, r0
+ bge _021D9374
+ bl FUN_02030F20
+ mov r1, #0xc6
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ bl FUN_0202CB8C
+ mov r1, #0xc7
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, _021D93D4 ; =0x00009404
+ ldr r2, [r4, r0]
+ cmp r2, #0
+ beq _021D9374
+ add r0, r0, #4
+ ldr r1, [r4, r1]
+ ldr r0, [r4, r0]
+ tst r0, r1
+ bne _021D9374
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD53_021D926C
+ ldr r1, _021D93D0 ; =0x000093F4
+ mov r0, #1
+ str r0, [r4, r1]
+ add r0, r1, #0
+ mov r2, #0
+ add r0, #0x10
+ str r2, [r4, r0]
+ add r1, #0x14
+ str r2, [r4, r1]
+_021D9374:
+ bl MOD53_021D9160
+ mov r1, #0xc5
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ bl FUN_02030F20
+ mov r1, #0xc6
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ cmp r1, r0
+ bge _021D93C8
+ ldr r0, _021D93D0 ; =0x000093F4
+ mov r1, #2
+ str r1, [r4, r0]
+ mov r1, #1
+ add r0, #0x10
+ str r1, [r4, r0]
+ bl FUN_0202CB8C
+ mov r1, #0xc7
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ eor r0, r1
+ ldr r1, _021D93D8 ; =0x00009408
+ str r0, [r4, r1]
+ ldr r1, [r4, r1]
+ mov r0, #0
+ sub r1, r1, #2
+ cmp r1, #0xe
+ bhi _021D93C0
+ mov r2, #1
+ add r3, r2, #0
+ lsl r3, r1
+ ldr r1, _021D93DC ; =0x00004045
+ tst r1, r3
+ beq _021D93C0
+ add r0, r2, #0
+_021D93C0:
+ cmp r0, #0
+ bne _021D93C8
+ bl ErrorHandling
+_021D93C8:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D93CC: .word 0x000093F8
+_021D93D0: .word 0x000093F4
+_021D93D4: .word 0x00009404
+_021D93D8: .word 0x00009408
+_021D93DC: .word 0x00004045
+ thumb_func_end MOD53_021D928C
+
+ thumb_func_start MOD53_021D93E0
+MOD53_021D93E0: ; 0x021D93E0
+ mov r2, #0xc2
+ lsl r2, r2, #2
+ str r1, [r0, r2]
+ bx lr
+ thumb_func_end MOD53_021D93E0
+
+ thumb_func_start MOD53_021D93E8
+MOD53_021D93E8: ; 0x021D93E8
+ push {r3, r4}
+ mov r3, #0xc2
+ lsl r3, r3, #2
+ sub r4, r3, #4
+ ldr r2, [r0, r3]
+ ldr r4, [r0, r4]
+ cmp r4, r2
+ beq _021D9412
+ cmp r1, #2
+ beq _021D9404
+ sub r1, r3, #4
+ str r2, [r0, r1]
+ pop {r3, r4}
+ bx lr
+_021D9404:
+ ldr r1, _021D9418 ; =0x021D98A4
+ lsl r4, r2, #3
+ ldr r1, [r1, r4]
+ cmp r1, #0
+ beq _021D9412
+ sub r1, r3, #4
+ str r2, [r0, r1]
+_021D9412:
+ pop {r3, r4}
+ bx lr
+ nop
+_021D9418: .word 0x021D98A4
+ thumb_func_end MOD53_021D93E8
+
+ thumb_func_start MOD53_021D941C
+MOD53_021D941C: ; 0x021D941C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D943C ; =0x000093F8
+ ldr r2, [r4, r0]
+ cmp r2, #0
+ bne _021D9438
+ sub r0, #8
+ ldr r0, [r4, r0]
+ bl FUN_020145C8
+ ldr r1, _021D943C ; =0x000093F8
+ mov r0, #1
+ str r0, [r4, r1]
+ pop {r4, pc}
+_021D9438:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_021D943C: .word 0x000093F8
+ thumb_func_end MOD53_021D941C
+
+ thumb_func_start MOD53_021D9440
+MOD53_021D9440: ; 0x021D9440
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D945C ; =0x000093F8
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _021D945A
+ sub r0, #8
+ ldr r0, [r4, r0]
+ bl FUN_020146C4
+ ldr r0, _021D945C ; =0x000093F8
+ mov r1, #0
+ str r1, [r4, r0]
+_021D945A:
+ pop {r4, pc}
+ .align 2, 0
+_021D945C: .word 0x000093F8
+ thumb_func_end MOD53_021D9440
+
+ thumb_func_start MOD53_021D9460
+MOD53_021D9460: ; 0x021D9460
+ push {r3, lr}
+ ldr r0, _021D9478 ; =0x021D94E8
+ bl FUN_02020988
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _021D9474
+ mov r0, #1
+ pop {r3, pc}
+_021D9474:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+_021D9478: .word 0x021D94E8
+ thumb_func_end MOD53_021D9460
+
+ thumb_func_start MOD53_021D947C
+MOD53_021D947C: ; 0x021D947C
+ push {r4, r5}
+ ldrh r4, [r1]
+ cmp r4, #0
+ beq _021D949C
+ ldrh r4, [r1, #2]
+ strb r4, [r0]
+ ldrh r4, [r1, #4]
+ strb r4, [r0, #4]
+ ldrh r4, [r1]
+ sub r4, r4, #1
+ lsl r4, r4, #3
+ add r5, r1, r4
+ ldrh r4, [r5, #2]
+ strb r4, [r0, #1]
+ ldrh r4, [r5, #4]
+ strb r4, [r0, #5]
+_021D949C:
+ ldrh r5, [r1]
+ cmp r5, #2
+ blo _021D94AC
+ ldrb r4, [r0, #8]
+ mov r1, #0x38
+ bic r4, r1
+ mov r1, #0x10
+ b _021D94BA
+_021D94AC:
+ ldrb r1, [r0, #8]
+ mov r4, #0x38
+ bic r1, r4
+ lsl r4, r5, #0x18
+ lsr r4, r4, #0x18
+ lsl r4, r4, #0x1d
+ lsr r4, r4, #0x1a
+_021D94BA:
+ orr r1, r4
+ strb r1, [r0, #8]
+ ldrb r1, [r0, #8]
+ mov r4, #7
+ lsl r2, r2, #0x18
+ bic r1, r4
+ lsr r4, r2, #0x18
+ mov r2, #7
+ and r2, r4
+ orr r1, r2
+ strb r1, [r0, #8]
+ ldrb r2, [r0, #8]
+ mov r1, #0xc0
+ bic r2, r1
+ lsl r1, r3, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1e
+ lsr r1, r1, #0x18
+ orr r1, r2
+ strb r1, [r0, #8]
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD53_021D947C
+
+ .section .rodata
+ ; 0x021D94E8
+ .incbin "baserom.nds", 0x29BE08, 0x3A0
+
+ .section .data
+ ; 0x021D98A0
+ .incbin "baserom.nds", 0x29C1C0, 0xC0