summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lcf56
-rw-r--r--arm9/global.inc2
-rw-r--r--arm9/modules/57/asm/module_57.s74
-rw-r--r--arm9/modules/58/asm/module_58.s2481
-rw-r--r--arm9/modules/59/asm/module_59.s5042
5 files changed, 7610 insertions, 45 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index d2073d96..132e8afa 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -2347,12 +2347,23 @@ SECTIONS {
SDK_OVERLAY.MODULE_57.BSS_SIZE = SDK_OVERLAY.MODULE_57.BSS_END - SDK_OVERLAY.MODULE_57.BSS_START;
} >> MODULE_57
- .MODULE_58: {
+ .MODULE_58 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY_MODULE_58_ID = 58;
SDK_OVERLAY.MODULE_58.ID = 58;
SDK_OVERLAY.MODULE_58.START = .;
- FILE_2A8800.o (.text) /* 0x2A4800 */
+ module_58.o (.text)
+ module_58.o (.rodata)
+ module_58.o (.init)
+ SDK_OVERLAY.MODULE_58.SINIT_START = .;
+ module_58.o (.ctor)
+ module_58.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_58.SINIT_END = .;
+ . = ALIGN(32);
+ module_58.o (.sdata)
+ module_58.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_58.END = .;
SDK_OVERLAY.MODULE_58.SIZE = SDK_OVERLAY.MODULE_58.END - SDK_OVERLAY.MODULE_58.START;
@@ -2362,18 +2373,30 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_58.BSS_START = .;
- FILE_2A8800.o (.bss)
+ module_58.o (.bss)
+ module_58.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_58.BSS_END = .;
SDK_OVERLAY.MODULE_58.BSS_SIZE = SDK_OVERLAY.MODULE_58.BSS_END - SDK_OVERLAY.MODULE_58.BSS_START;
} >> MODULE_58
- .MODULE_59: {
+ .MODULE_59 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY_MODULE_59_ID = 59;
SDK_OVERLAY.MODULE_59.ID = 59;
SDK_OVERLAY.MODULE_59.START = .;
- FILE_2A9E00.o (.text) /* 0x2A5E00 */
+ module_59.o (.text)
+ module_59.o (.rodata)
+ module_59.o (.init)
+ SDK_OVERLAY.MODULE_59.SINIT_START = .;
+ module_59.o (.ctor)
+ module_59.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_59.SINIT_END = .;
+ . = ALIGN(32);
+ module_59.o (.sdata)
+ module_59.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_59.END = .;
SDK_OVERLAY.MODULE_59.SIZE = SDK_OVERLAY.MODULE_59.END - SDK_OVERLAY.MODULE_59.START;
@@ -2383,7 +2406,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_59.BSS_START = .;
- FILE_2A9E00.o (.bss)
+ module_59.o (.bss)
+ module_59.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_59.BSS_END = .;
SDK_OVERLAY.MODULE_59.BSS_SIZE = SDK_OVERLAY.MODULE_59.BSS_END - SDK_OVERLAY.MODULE_59.BSS_START;
@@ -3603,8 +3627,24 @@ SECTIONS {
WRITEW 57;
WRITEW 0;
- OVERLAY_TABLE(MODULE_58, 58)
- OVERLAY_TABLE(MODULE_59, 59)
+ WRITEW 58;
+ WRITEW ADDR(.MODULE_58);
+ WRITEW SDK_OVERLAY.MODULE_58.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_58.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_58.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_58.SINIT_END;
+ WRITEW 58;
+ WRITEW 0;
+
+ WRITEW 59;
+ WRITEW ADDR(.MODULE_59);
+ WRITEW SDK_OVERLAY.MODULE_59.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_59.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_59.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_59.SINIT_END;
+ WRITEW 59;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_60, 60)
OVERLAY_TABLE(MODULE_61, 61)
OVERLAY_TABLE(MODULE_62, 62)
diff --git a/arm9/global.inc b/arm9/global.inc
index 4548a270..7708d69f 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -5650,6 +5650,8 @@
.extern FUN_02084098
.extern FUN_020048A0
.extern FUN_020048BC
+.extern FUN_02014630
+.extern FUN_02024EF4
.extern SDK_OVERLAY_MODULE_00_ID
.extern SDK_OVERLAY_MODULE_01_ID
.extern SDK_OVERLAY_MODULE_02_ID
diff --git a/arm9/modules/57/asm/module_57.s b/arm9/modules/57/asm/module_57.s
index 01b106a0..7208de4e 100644
--- a/arm9/modules/57/asm/module_57.s
+++ b/arm9/modules/57/asm/module_57.s
@@ -41,7 +41,7 @@ MOD57_021D74E0: ; 0x021D74E0
ldr r2, _021D76F0 ; =0x00003320
mov r1, #0
add r4, r0, #0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0
bl FUN_0200628C
add r1, r4, #0
@@ -722,19 +722,19 @@ _021D7AC4:
mov r1, #2
ldr r0, [r0, #0xc]
lsl r1, r1, #8
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp]
mov r1, #0x20
ldr r5, [r0, #0xc]
mov r2, #0x60
add r0, r5, #0
add r0, #0x20
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
mov r1, #0x1e
lsl r1, r1, #4
add r0, r5, r1
mov r2, #0x20
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
add r0, r4, #0
bl FUN_02016A18
pop {r3, r4, r5, pc}
@@ -776,17 +776,17 @@ _021D7B30:
ldr r0, [sp]
mov r1, #0x20
ldr r0, [r0, #0xc]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp]
mov r1, #0
ldr r0, [r0, #0xc]
mov r2, #0x20
- blx GX_LoadBGPltt
+ bl GX_LoadBGPltt
ldr r0, [sp]
mov r1, #0
ldr r0, [r0, #0xc]
mov r2, #0x20
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
add r0, r4, #0
bl FUN_02016A18
add sp, #4
@@ -809,11 +809,11 @@ MOD57_021D7B5C: ; 0x021D7B5C
ldr r5, [r0, #0xc]
mov r1, #0x20
add r0, r5, r4
- blx DC_FlushRange
+ bl DC_FlushRange
add r0, r5, r4
mov r1, #0x80
mov r2, #0x20
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
add r0, r6, #0
bl FUN_02016A18
add sp, #4
@@ -958,13 +958,13 @@ MOD57_021D7CA4: ; 0x021D7CA4
mov r1, #2
ldr r0, [r0, #0xc]
lsl r1, r1, #8
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp, #0x14]
mov r2, #2
ldr r0, [r0, #0xc]
mov r1, #0
lsl r2, r2, #8
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
add r0, r5, #0
bl FUN_02016A18
add r0, r4, #0
@@ -985,13 +985,13 @@ MOD57_021D7CA4: ; 0x021D7CA4
mov r1, #2
ldr r0, [r0, #0xc]
lsl r1, r1, #8
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp, #0x10]
mov r2, #2
ldr r0, [r0, #0xc]
mov r1, #0
lsl r2, r2, #8
- blx GX_LoadBGPltt
+ bl GX_LoadBGPltt
add r0, r5, #0
bl FUN_02016A18
add r0, r4, #0
@@ -1022,7 +1022,7 @@ _021D7D4C:
ldr r0, [r4, r1]
add r1, r1, #4
add r1, r4, r1
- blx FUN_020B0030
+ bl FUN_020B0030
cmp r0, #0
bne _021D7D60
bl ErrorHandling
@@ -1076,7 +1076,7 @@ _021D7DBC:
ldr r0, [r4, r1]
add r1, r1, #4
add r1, r4, r1
- blx FUN_020B0030
+ bl FUN_020B0030
cmp r0, #0
bne _021D7DD0
bl ErrorHandling
@@ -1420,17 +1420,17 @@ _021D806A:
_021D8092:
ldr r0, _021D80E0 ; =0x000030C8
ldr r0, [r4, r0]
- blx FX_Inv
+ bl FX_Inv
add r6, r0, #0
ldr r0, _021D80EC ; =0x000030CC
ldr r0, [r4, r0]
- blx FX_Inv
+ bl FX_Inv
mov r1, #0
str r6, [sp, #0x10]
str r1, [sp, #0x14]
str r1, [sp, #0x18]
str r0, [sp, #0x1c]
- blx OS_WaitVBlankIntr
+ bl OS_WaitVBlankIntr
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1438,7 +1438,7 @@ _021D8092:
add r1, sp, #0x10
mov r2, #0x80
mov r3, #0x60
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1446,7 +1446,7 @@ _021D8092:
add r1, sp, #0x10
mov r2, #0x80
mov r3, #0x60
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
add r0, r5, #0
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
@@ -1562,24 +1562,24 @@ _021D81A8:
_021D81AE:
mov r0, #1
lsl r0, r0, #0xc
- blx FX_Inv
+ bl FX_Inv
add r5, r0, #0
ldr r0, _021D81E8 ; =0x000030D0
ldr r0, [r4, r0]
- blx FX_Inv
+ bl FX_Inv
mov r1, #0
str r5, [sp, #8]
str r1, [sp, #0xc]
str r1, [sp, #0x10]
str r0, [sp, #0x14]
- blx OS_WaitVBlankIntr
+ bl OS_WaitVBlankIntr
mov r3, #0
str r3, [sp]
ldr r0, _021D81F4 ; =0x04000030
add r1, sp, #8
mov r2, #0x80
str r3, [sp, #4]
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
mov r0, #0
add sp, #0x18
pop {r3, r4, r5, pc}
@@ -2068,17 +2068,17 @@ MOD57_021D8588: ; 0x021D8588
sub sp, #0x18
mov r0, #1
lsl r0, r0, #0xc
- blx FX_Inv
+ bl FX_Inv
add r4, r0, #0
mov r0, #1
lsl r0, r0, #0xc
- blx FX_Inv
+ bl FX_Inv
mov r1, #0
str r4, [sp, #8]
str r1, [sp, #0xc]
str r1, [sp, #0x10]
str r0, [sp, #0x14]
- blx OS_WaitVBlankIntr
+ bl OS_WaitVBlankIntr
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2086,7 +2086,7 @@ MOD57_021D8588: ; 0x021D8588
add r1, sp, #8
mov r2, #0x80
mov r3, #0x60
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2094,15 +2094,15 @@ MOD57_021D8588: ; 0x021D8588
add r1, sp, #8
mov r2, #0x80
mov r3, #0x60
- blx G2x_SetBGyAffine_
- blx OS_WaitVBlankIntr
+ bl G2x_SetBGyAffine_
+ bl OS_WaitVBlankIntr
mov r3, #0
str r3, [sp]
ldr r0, _021D85F0 ; =0x04000030
add r1, sp, #8
mov r2, #0x80
str r3, [sp, #4]
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
add sp, #0x18
pop {r4, pc}
.align 2, 0
@@ -2538,7 +2538,7 @@ _021D88F0:
mov r1, #0x1e
ldrb r0, [r4, r0]
add r0, r0, #1
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, _021D8904 ; =0x0000331E
strb r1, [r4, r0]
_021D8900:
@@ -3573,7 +3573,7 @@ MOD57_021D9184: ; 0x021D9184
sub sp, #0x3c
add r7, r0, #0
bl MOD57_021D9578
- blx FUN_020B0FC0
+ bl FUN_020B0FC0
mov r0, #0
str r0, [sp]
mov r1, #0x80
@@ -3709,7 +3709,7 @@ _021D9290:
beq _021D92CA
ldr r1, [sp, #0x18]
add r1, r1, r6
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r0, #0
bne _021D92CE
mov r0, #0x1e
@@ -4024,7 +4024,7 @@ _021D9536:
ldr r0, [r1, r0]
bl FUN_02020354
mov r1, #1
- blx FUN_020B19C4
+ bl FUN_020B19C4
str r0, [sp]
lsl r0, r4, #5
str r0, [sp, #4]
@@ -4036,13 +4036,13 @@ _021D9536:
ldr r4, [r0, #0xc]
mov r1, #0x20
add r0, r4, r5
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r2, [sp]
ldr r1, [sp, #4]
add r0, r4, r5
add r1, r2, r1
mov r2, #0x20
- blx GX_LoadOBJPltt
+ bl GX_LoadOBJPltt
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
diff --git a/arm9/modules/58/asm/module_58.s b/arm9/modules/58/asm/module_58.s
new file mode 100644
index 00000000..c7305812
--- /dev/null
+++ b/arm9/modules/58/asm/module_58.s
@@ -0,0 +1,2481 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD58_021D9A20
+MOD58_021D9A20: ; 0x021D9A20
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r6, r0, #0
+ cmp r1, #0
+ beq _021D9A36
+ cmp r1, #1
+ bne _021D9A34
+ b _021D9B56
+_021D9A34:
+ b _021D9B64
+_021D9A36:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D9B6C ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D9B70 ; =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, _021D9B74 ; =0x00005CB0
+ add r0, r6, #0
+ mov r2, #0x27
+ bl FUN_02006268
+ ldr r2, _021D9B74 ; =0x00005CB0
+ 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, #0x10]
+ ldr r2, _021D9B78 ; =0x00000176
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x27
+ bl FUN_0200A86C
+ str r0, [r4, #0x14]
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ bl MOD58_021D9CDC
+ ldr r0, [r4]
+ bl MOD58_021D9CFC
+ mov r0, #0x10
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x27
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add r0, r6, #0
+ bl FUN_0200628C
+ bl FUN_02029ABC
+ bl FUN_02029AC8
+ ldr r1, _021D9B7C ; =0x00005B98
+ str r0, [r4, r1]
+ add r0, r6, #0
+ bl FUN_0200628C
+ bl FUN_02029FC8
+ str r0, [r4, #8]
+ add r0, r6, #0
+ bl FUN_0200628C
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0xc]
+ add r0, r4, #0
+ bl MOD58_021D9F14
+ bl FUN_0201CC08
+ mov r0, #1
+ bl FUN_0201CC24
+ ldr r0, _021D9B80 ; =MOD58_021D9CB4
+ ldr r1, [r4]
+ bl FUN_02015F10
+ mov r0, #2
+ mov r1, #0x27
+ bl FUN_02002C50
+ add r0, r4, #0
+ bl MOD58_021D9E04
+ bl MOD58_021DA014
+ add r0, r4, #0
+ bl MOD58_021DA044
+ add r0, r4, #0
+ bl MOD58_021DA1C4
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD58_021DA30C
+ mov r1, #0
+ mov r0, #0x38
+ add r2, r1, #0
+ bl FUN_0200433C
+ ldr r2, _021D9B84 ; =0x04000304
+ ldr r0, _021D9B88 ; =0xFFFF7FFF
+ ldrh r1, [r2]
+ and r0, r1
+ strh r0, [r2]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D9B64
+_021D9B56:
+ bl FUN_02006278
+ mov r0, #0
+ str r0, [r5]
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D9B64:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D9B6C: .word 0xFFFFE0FF
+_021D9B70: .word 0x04001000
+_021D9B74: .word 0x00005CB0
+_021D9B78: .word 0x00000176
+_021D9B7C: .word 0x00005B98
+_021D9B80: .word MOD58_021D9CB4
+_021D9B84: .word 0x04000304
+_021D9B88: .word 0xFFFF7FFF
+ thumb_func_end MOD58_021D9A20
+
+ thumb_func_start MOD58_021D9B8C
+MOD58_021D9B8C: ; 0x021D9B8C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ bl FUN_02006278
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #0
+ beq _021D9BA6
+ cmp r1, #1
+ beq _021D9BB4
+ cmp r1, #2
+ beq _021D9BD2
+ b _021D9BDE
+_021D9BA6:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9BDE
+ mov r0, #1
+ str r0, [r5]
+ b _021D9BDE
+_021D9BB4:
+ mov r2, #0xc3
+ lsl r2, r2, #2
+ ldr r2, [r4, r2]
+ lsl r3, r2, #2
+ ldr r2, _021D9BE8 ; =0x021DAFA0
+ ldr r2, [r2, r3]
+ cmp r2, #0
+ beq _021D9BC8
+ blx r2
+ str r0, [r5]
+_021D9BC8:
+ ldr r0, _021D9BEC ; =0x00004318
+ add r0, r4, r0
+ bl MOD58_021DAB34
+ b _021D9BDE
+_021D9BD2:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9BDE
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D9BDE:
+ ldr r0, [r4, #0x3c]
+ bl FUN_0201FDEC
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D9BE8: .word 0x021DAFA0
+_021D9BEC: .word 0x00004318
+ thumb_func_end MOD58_021D9B8C
+
+ thumb_func_start MOD58_021D9BF0
+MOD58_021D9BF0: ; 0x021D9BF0
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ bl FUN_02006278
+ add r6, r0, #0
+ ldr r0, _021D9CAC ; =0x00005B98
+ mov r1, #0x2d
+ lsl r1, r1, #4
+ ldr r0, [r6, r0]
+ ldr r1, [r6, r1]
+ bl MOD58_021DAC18
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009C0C
+ mov r0, #0x62
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009C0C
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009E04
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009E04
+ mov r7, #0x5a
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #2
+_021D9C40:
+ ldr r0, [r5, r7]
+ bl FUN_02008E2C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D9C40
+ ldr r0, [r6, #0x3c]
+ bl FUN_0201FD58
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ add r0, r6, #0
+ bl MOD58_021DA4CC
+ mov r0, #2
+ bl FUN_02002CF8
+ ldr r0, [r6]
+ bl MOD58_021D9ED8
+ bl FUN_0201CD04
+ ldr r0, [r6, #0x14]
+ bl FUN_0200A8B8
+ ldr r0, [r6, #0x10]
+ bl FUN_0200AB18
+ add r0, r6, #0
+ bl MOD58_021D9EA0
+ ldr r0, [sp]
+ bl FUN_0200627C
+ ldr r2, _021D9CB0 ; =0x04000304
+ ldrh r1, [r2]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2]
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0x27
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9CAC: .word 0x00005B98
+_021D9CB0: .word 0x04000304
+ thumb_func_end MOD58_021D9BF0
+
+ thumb_func_start MOD58_021D9CB4
+MOD58_021D9CB4: ; 0x021D9CB4
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0201C30C
+ bl FUN_02009F80
+ add r0, r4, #0
+ bl FUN_0201AB60
+ ldr r3, _021D9CD4 ; =0x027E0000
+ ldr r1, _021D9CD8 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021D9CD4: .word 0x027E0000
+_021D9CD8: .word 0x00003FF8
+ thumb_func_end MOD58_021D9CB4
+
+ thumb_func_start MOD58_021D9CDC
+MOD58_021D9CDC: ; 0x021D9CDC
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D9CF8 ; =0x021DAE6C
+ add r3, sp, #0
+ mov r2, #5
+_021D9CE6:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D9CE6
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D9CF8: .word 0x021DAE6C
+ thumb_func_end MOD58_021D9CDC
+
+ thumb_func_start MOD58_021D9CFC
+MOD58_021D9CFC: ; 0x021D9CFC
+ push {r4, r5, lr}
+ sub sp, #0x9c
+ ldr r5, _021D9DEC ; =0x021DADC0
+ 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, _021D9DF0 ; =0x021DAE18
+ 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, _021D9DF4 ; =0x021DAE34
+ 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, _021D9DF8 ; =0x021DAE50
+ 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, _021D9DFC ; =0x021DADE0
+ 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, _021D9E00 ; =0x021DADFC
+ 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
+_021D9DEC: .word 0x021DADC0
+_021D9DF0: .word 0x021DAE18
+_021D9DF4: .word 0x021DAE34
+_021D9DF8: .word 0x021DAE50
+_021D9DFC: .word 0x021DADE0
+_021D9E00: .word 0x021DADFC
+ thumb_func_end MOD58_021D9CFC
+
+ thumb_func_start MOD58_021D9E04
+MOD58_021D9E04: ; 0x021D9E04
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldr r0, _021D9E90 ; =0x0000433D
+ mov r6, #0
+ add r5, r7, r0
+ mov r0, #0xf0
+ add r4, r7, #0
+ str r0, [sp]
+_021D9E14:
+ mov r0, #8
+ mov r1, #0x27
+ bl FUN_020219F4
+ str r0, [r4, #0x18]
+ ldrb r1, [r5]
+ ldr r0, [sp]
+ add r6, r6, #1
+ bic r1, r0
+ strb r1, [r5]
+ ldr r0, _021D9E94 ; =0x00004384
+ mov r1, #0
+ strh r1, [r4, r0]
+ add r4, r4, #4
+ add r5, #0x11
+ cmp r6, #5
+ blt _021D9E14
+ mov r0, #0x14
+ mov r1, #0x27
+ bl FUN_020219F4
+ str r0, [r7, #0x2c]
+ mov r0, #0x28
+ mov r1, #0x27
+ bl FUN_020219F4
+ str r0, [r7, #0x30]
+ mov r0, #0x50
+ mov r1, #0x27
+ bl FUN_020219F4
+ str r0, [r7, #0x34]
+ ldr r0, _021D9E98 ; =0x0000431A
+ mov r1, #0
+ strb r1, [r7, r0]
+ mov r0, #0xc3
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r7, r0]
+ ldr r0, [r7, #0x14]
+ ldr r2, [r7, #0x2c]
+ mov r1, #0xc
+ bl FUN_0200A8E0
+ ldr r0, [r7, #0x14]
+ ldr r2, [r7, #0x30]
+ mov r1, #9
+ bl FUN_0200A8E0
+ mov r0, #0x27
+ bl FUN_02014590
+ ldr r1, _021D9E9C ; =0x00005C9C
+ mov r2, #5
+ str r0, [r7, r1]
+ add r1, r1, #4
+ mov r0, #0
+ add r1, r7, r1
+ bl MIi_CpuClearFast
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9E90: .word 0x0000433D
+_021D9E94: .word 0x00004384
+_021D9E98: .word 0x0000431A
+_021D9E9C: .word 0x00005C9C
+ thumb_func_end MOD58_021D9E04
+
+ thumb_func_start MOD58_021D9EA0
+MOD58_021D9EA0: ; 0x021D9EA0
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, _021D9ED4 ; =0x00005C9C
+ ldr r0, [r6, r0]
+ bl FUN_020145A8
+ mov r4, #0
+ add r5, r6, #0
+_021D9EB0:
+ ldr r0, [r5, #0x18]
+ bl FUN_02021A20
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _021D9EB0
+ ldr r0, [r6, #0x34]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x30]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x2c]
+ bl FUN_02021A20
+ pop {r4, r5, r6, pc}
+ nop
+_021D9ED4: .word 0x00005C9C
+ thumb_func_end MOD58_021D9EA0
+
+ thumb_func_start MOD58_021D9ED8
+MOD58_021D9ED8: ; 0x021D9ED8
+ 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 MOD58_021D9ED8
+
+ thumb_func_start MOD58_021D9F14
+MOD58_021D9F14: ; 0x021D9F14
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r4, [r5]
+ mov r0, #0x60
+ mov r1, #0
+ str r0, [sp]
+ mov r0, #0x27
+ str r0, [sp, #4]
+ mov r0, #0x5f
+ 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, #0x5f
+ mov r1, #2
+ 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, #1
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x27
+ bl FUN_02017F18
+ 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, #0x5f
+ mov r1, #3
+ add r2, r4, #0
+ mov r3, #2
+ 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, #0x5f
+ mov r1, #5
+ 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, #0x5f
+ mov r1, #4
+ 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
+ str r0, [sp, #0xc]
+ mov r0, #0x5f
+ mov r1, #6
+ add r2, r4, #0
+ mov r3, #5
+ bl FUN_020068C8
+ ldr r0, [r5, #0xc]
+ 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}
+ .align 2, 0
+ thumb_func_end MOD58_021D9F14
+
+ thumb_func_start MOD58_021DA014
+MOD58_021DA014: ; 0x021DA014
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _021DA040 ; =0x021DADD0
+ 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
+_021DA040: .word 0x021DADD0
+ thumb_func_end MOD58_021DA014
+
+ thumb_func_start MOD58_021DA044
+MOD58_021DA044: ; 0x021DA044
+ 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, #0x32
+ add r1, #0x40
+ mov r2, #0x27
+ bl FUN_02008C9C
+ str r0, [r5, #0x3c]
+ add r0, r5, #0
+ mov r2, #1
+ add r0, #0x40
+ mov r1, #0
+ lsl r2, r2, #0x14
+ bl FUN_02008D24
+ mov r7, #0x5a
+ mov r6, #0
+ add r4, r5, #0
+ lsl r7, r7, #2
+_021DA08A:
+ 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 _021DA08A
+ mov r0, #0
+ str r0, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ mov r0, #0x27
+ str r0, [sp, #8]
+ mov r0, #0x5a
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x5f
+ mov r2, #7
+ bl FUN_02008F34
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #0x27
+ sub r1, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ mov r1, #0x5f
+ bl FUN_02008FEC
+ mov r1, #0x5f
+ 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, #0x5f
+ mov r2, #8
+ mov r3, #1
+ bl FUN_020090AC
+ mov r1, #6
+ lsl r1, r1, #6
+ 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, #0x5f
+ mov r2, #9
+ mov r3, #1
+ bl FUN_020090AC
+ 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, #0x5f
+ mov r2, #7
+ bl FUN_02008F34
+ mov r1, #0x62
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r2, #1
+ str r2, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #0x27
+ sub r1, #0x1c
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ mov r1, #0x5f
+ mov r3, #0
+ bl FUN_02008FEC
+ mov r1, #0x63
+ 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, #0x5f
+ mov r2, #8
+ bl FUN_020090AC
+ mov r1, #0x19
+ lsl r1, r1, #4
+ 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, #0x5f
+ mov r2, #9
+ bl FUN_020090AC
+ mov r1, #0x65
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ sub r1, #0x1c
+ ldr r0, [r5, r1]
+ bl FUN_02009A50
+ mov r0, #0x62
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009A50
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009CF0
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009CF0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD58_021DA044
+
+ thumb_func_start MOD58_021DA1C4
+MOD58_021DA1C4: ; 0x021DA1C4
+ push {r3, r4, lr}
+ sub sp, #0x5c
+ mov r1, #0
+ add r4, r0, #0
+ str r1, [sp]
+ sub r0, r1, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r2, #0x5a
+ str r1, [sp, #0x10]
+ lsl r2, r2, #2
+ ldr r0, [r4, r2]
+ add r3, r1, #0
+ str r0, [sp, #0x14]
+ add r0, r2, #4
+ ldr r0, [r4, r0]
+ str r0, [sp, #0x18]
+ add r0, r2, #0
+ add r0, #8
+ ldr r0, [r4, r0]
+ str r0, [sp, #0x1c]
+ add r0, r2, #0
+ add r0, #0xc
+ ldr r0, [r4, r0]
+ add r2, #0x30
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ add r0, r4, r2
+ add r2, r1, #0
+ str r1, [sp, #0x28]
+ bl FUN_02008AA4
+ mov r1, #1
+ mov r3, #0x5a
+ 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, #2
+ ldr r2, [r4, r3]
+ str r2, [sp, #0x14]
+ add r2, r3, #4
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x18]
+ add r2, r3, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x1c]
+ add r2, r3, #0
+ add r2, #0xc
+ ldr r2, [r4, r2]
+ add r3, #0x54
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, r4, r3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02008AA4
+ ldr r0, [r4, #0x3c]
+ mov r2, #0
+ str r0, [sp, #0x2c]
+ mov r0, #0x66
+ lsl r0, r0, #2
+ add r1, r4, r0
+ str r1, [sp, #0x30]
+ mov r1, #1
+ lsl r1, r1, #0xc
+ add r0, #0x24
+ str r2, [sp, #0x3c]
+ str r1, [sp, #0x40]
+ str r1, [sp, #0x44]
+ str r1, [sp, #0x48]
+ add r1, sp, #0x2c
+ strh r2, [r1, #0x20]
+ mov r1, #1
+ add r0, r4, r0
+ str r0, [sp, #0x30]
+ mov r0, #0xe
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x34]
+ mov r0, #0xaf
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x38]
+ str r1, [sp, #0x50]
+ str r1, [sp, #0x54]
+ mov r1, #0x27
+ add r0, sp, #0x2c
+ str r1, [sp, #0x58]
+ bl FUN_0201FE94
+ mov r1, #0x25
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x25
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_02020130
+ mov r0, #0x25
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_02020248
+ mov r0, #0x25
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl FUN_02020238
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x5c
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD58_021DA1C4
+
+ thumb_func_start MOD58_021DA2CC
+MOD58_021DA2CC: ; 0x021DA2CC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r2, #0
+ mov r0, #2
+ mov r2, #0
+ add r6, r1, #0
+ add r7, r3, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ str r4, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x28]
+ add r1, r7, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldrb r4, [r5, #7]
+ add r0, r5, #0
+ add r2, r6, #0
+ lsl r4, r4, #3
+ sub r4, r4, r3
+ lsr r3, r4, #0x1f
+ add r3, r4, r3
+ asr r3, r3, #1
+ bl FUN_0201BDE0
+ ldr r0, [r5, #0xc]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD58_021DA2CC
+
+ thumb_func_start MOD58_021DA30C
+MOD58_021DA30C: ; 0x021DA30C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, 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, #0xb5
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r5]
+ add r1, r5, r1
+ mov r2, #0
+ mov r3, #2
+ bl FUN_02019064
+ mov r0, #0xb5
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #9
+ str r0, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ mov r0, #8
+ mov r1, #0xb1
+ lsl r1, r1, #2
+ str r0, [sp, #8]
+ mov r2, #1
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldr r0, [r5]
+ add r1, r5, r1
+ mov r3, #4
+ bl FUN_02019064
+ mov r0, #0xb1
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #2
+ bl FUN_02019620
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ mov r0, #0xc1
+ mov r1, #0xb9
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r5]
+ add r1, r5, r1
+ mov r2, #1
+ mov r3, #0x1a
+ bl FUN_02019064
+ mov r0, #0xb9
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _021DA4BC ; =0x000E0702
+ mov r2, #1
+ str r0, [sp]
+ mov r0, #0xb9
+ lsl r0, r0, #2
+ ldr r1, [r5, #0x2c]
+ add r0, r5, r0
+ mov r3, #2
+ bl MOD58_021DA2CC
+ mov r1, #2
+ lsl r1, r1, #8
+ bl DC_FlushRange
+ mov r4, #0
+ ldr r0, _021DA4C0 ; =0x00005B9C
+ str r4, [sp, #0x18]
+ add r7, r4, #0
+ add r6, r5, r0
+_021DA3C2:
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xb9
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #4
+ mov r2, #2
+ add r3, r4, #0
+ str r6, [sp, #4]
+ bl FUN_02011B20
+ mov r1, #1
+ add r0, r6, #0
+ lsl r1, r1, #8
+ bl DC_FlushRange
+ mov r2, #1
+ add r0, r6, #0
+ add r1, r7, #0
+ lsl r2, r2, #8
+ bl GX_LoadOBJ
+ mov r0, #1
+ lsl r0, r0, #8
+ add r7, r7, r0
+ ldr r0, [sp, #0x18]
+ add r4, r4, #4
+ add r0, r0, #1
+ str r0, [sp, #0x18]
+ cmp r0, #2
+ blt _021DA3C2
+ mov r3, #2
+ str r3, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #4]
+ mov r1, #0xbd
+ lsl r1, r1, #2
+ str r3, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0xd1
+ str r0, [sp, #0x10]
+ ldr r0, [r5]
+ add r1, r5, r1
+ mov r2, #1
+ bl FUN_02019064
+ ldr r1, [r5, #0x30]
+ mov r0, #1
+ mov r2, #0
+ bl FUN_02002E14
+ add r4, r0, #0
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ mov r3, #0xe0
+ sub r4, r3, r4
+ lsr r3, r4, #0x1f
+ add r3, r4, r3
+ ldr r0, _021DA4C4 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ ldr r2, [r5, #0x30]
+ add r0, r5, r0
+ mov r1, #1
+ asr r3, r3, #1
+ bl FUN_0201BDE0
+ mov r0, #0
+ str r0, [sp, #0x14]
+ mov r0, #0x9d
+ lsl r0, r0, #2
+ mov r7, #1
+ mov r6, #3
+ add r4, r5, r0
+_021DA46A:
+ lsl r0, r6, #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, r7, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5]
+ add r1, r4, #0
+ mov r2, #4
+ mov r3, #5
+ bl FUN_02019064
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [sp, #0x14]
+ add r7, #0x14
+ add r0, r0, #1
+ add r6, r6, #4
+ add r4, #0x10
+ str r0, [sp, #0x14]
+ cmp r0, #5
+ blt _021DA46A
+ mov r0, #0x9d
+ lsl r0, r0, #2
+ ldr r2, _021DA4C8 ; =0x000E0D0F
+ add r0, r5, r0
+ mov r1, #0
+ add r3, r5, #0
+ bl MOD58_021DAB74
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DA4BC: .word 0x000E0702
+_021DA4C0: .word 0x00005B9C
+_021DA4C4: .word 0x00010200
+_021DA4C8: .word 0x000E0D0F
+ thumb_func_end MOD58_021DA30C
+
+ thumb_func_start MOD58_021DA4CC
+MOD58_021DA4CC: ; 0x021DA4CC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r0, #0x9d
+ lsl r0, r0, #2
+ mov r4, #0
+ add r5, r6, r0
+_021DA4D8:
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #5
+ blt _021DA4D8
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+ mov r0, #0xb9
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+ mov r0, #0xb1
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+ mov r0, #0xb5
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD58_021DA4CC
+
+ thumb_func_start MOD58_021DA510
+MOD58_021DA510: ; 0x021DA510
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD58_021DA510
+
+ thumb_func_start MOD58_021DA514
+MOD58_021DA514: ; 0x021DA514
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ add r4, r0, #0
+ ldr r0, _021DA5DC ; =0x021DADAE
+ bl FUN_02020988
+ add r1, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r1, r0
+ beq _021DA568
+ cmp r1, #0
+ bne _021DA55A
+ mov r0, #0xc3
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _021DA568
+ add r0, r4, #0
+ mov r1, #0xa
+ bl MOD58_021DAB94
+ mov r0, #0xc3
+ mov r1, #2
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ sub r0, #0xbc
+ add r0, r4, r0
+ mov r1, #1
+ bl MOD58_021DA614
+ ldr r0, _021DA5E0 ; =0x000005DD
+ bl FUN_020054C8
+ b _021DA568
+_021DA55A:
+ ldr r0, _021DA5E4 ; =0x0000431A
+ strb r1, [r4, r0]
+ mov r0, #0x25
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD58_021DA5F4
+_021DA568:
+ ldr r0, _021DA5E8 ; =0x021DADA6
+ bl FUN_02020968
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _021DA57C
+ add r0, r4, #0
+ bl MOD58_021DAC7C
+_021DA57C:
+ add r0, sp, #0
+ mov r1, #4
+ mov r2, #1
+ bl FUN_0201CD38
+ cmp r0, #1
+ bne _021DA5D8
+ add r7, sp, #0
+ ldrh r3, [r7]
+ mov r1, #0
+ cmp r3, #0
+ ble _021DA5B0
+ ldr r5, _021DA5EC ; =0x0000431C
+ add r2, sp, #0
+ add r6, r5, #0
+ add r6, #8
+_021DA59C:
+ ldrh r3, [r2, #2]
+ add r0, r4, r1
+ add r1, r1, #1
+ strb r3, [r0, r5]
+ ldrh r3, [r2, #4]
+ add r2, #8
+ strb r3, [r0, r6]
+ ldrh r3, [r7]
+ cmp r1, r3
+ blt _021DA59C
+_021DA5B0:
+ ldr r0, _021DA5F0 ; =0x0000432C
+ mov r2, #0xf0
+ ldrb r1, [r4, r0]
+ bic r1, r2
+ lsl r2, r3, #0x18
+ lsr r2, r2, #0x18
+ lsl r2, r2, #0x1c
+ lsr r2, r2, #0x18
+ orr r1, r2
+ strb r1, [r4, r0]
+ ldrb r3, [r4, r0]
+ mov r1, #0xf
+ bic r3, r1
+ add r1, r0, #0
+ sub r1, #0x12
+ ldrb r2, [r4, r1]
+ mov r1, #0xf
+ and r1, r2
+ orr r1, r3
+ strb r1, [r4, r0]
+_021DA5D8:
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DA5DC: .word 0x021DADAE
+_021DA5E0: .word 0x000005DD
+_021DA5E4: .word 0x0000431A
+_021DA5E8: .word 0x021DADA6
+_021DA5EC: .word 0x0000431C
+_021DA5F0: .word 0x0000432C
+ thumb_func_end MOD58_021DA514
+
+ thumb_func_start MOD58_021DA5F4
+MOD58_021DA5F4: ; 0x021DA5F4
+ push {r3, lr}
+ ldr r2, _021DA610 ; =0x021DADA0
+ cmp r1, #0
+ ldr r0, [r0]
+ bne _021DA608
+ ldrh r1, [r2, #4]
+ add r1, r1, #1
+ bl FUN_02020130
+ pop {r3, pc}
+_021DA608:
+ ldrh r1, [r2, #4]
+ bl FUN_02020130
+ pop {r3, pc}
+ .align 2, 0
+_021DA610: .word 0x021DADA0
+ thumb_func_end MOD58_021DA5F4
+
+ thumb_func_start MOD58_021DA614
+MOD58_021DA614: ; 0x021DA614
+ push {r3, lr}
+ cmp r1, #1
+ ldr r0, [r0]
+ bne _021DA624
+ mov r1, #1
+ bl FUN_02020130
+ pop {r3, pc}
+_021DA624:
+ mov r1, #0
+ bl FUN_02020130
+ pop {r3, pc}
+ thumb_func_end MOD58_021DA614
+
+ thumb_func_start MOD58_021DA62C
+MOD58_021DA62C: ; 0x021DA62C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD58_021DA514
+ mov r0, #0x9d
+ lsl r0, r0, #2
+ ldr r2, _021DA66C ; =0x000E0C0F
+ add r0, r5, r0
+ mov r1, #0
+ add r3, r5, #0
+ bl MOD58_021DAB74
+ add r0, r5, #0
+ bl MOD58_021DAB78
+ add r0, r5, #0
+ bl MOD58_021DAB30
+ ldr r2, _021DA670 ; =0x0000432D
+ mov r0, #0xb1
+ lsl r0, r0, #2
+ add r1, r5, r2
+ add r2, #0x55
+ add r0, r5, r0
+ add r2, r5, r2
+ mov r3, #1
+ bl MOD58_021DAA70
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021DA66C: .word 0x000E0C0F
+_021DA670: .word 0x0000432D
+ thumb_func_end MOD58_021DA62C
+
+ thumb_func_start MOD58_021DA674
+MOD58_021DA674: ; 0x021DA674
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD58_021DA510
+ add r0, r4, #0
+ bl MOD58_021DAB30
+ ldr r2, _021DA698 ; =0x0000432D
+ mov r0, #0xb1
+ lsl r0, r0, #2
+ add r1, r4, r2
+ add r2, #0x55
+ add r0, r4, r0
+ add r2, r4, r2
+ mov r3, #0
+ bl MOD58_021DAA70
+ pop {r4, pc}
+ .align 2, 0
+_021DA698: .word 0x0000432D
+ thumb_func_end MOD58_021DA674
+
+ thumb_func_start MOD58_021DA69C
+MOD58_021DA69C: ; 0x021DA69C
+ push {lr}
+ sub sp, #0x14
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ mov r0, #0xb4
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ mov r2, #0x19
+ add r0, sp, #0
+ strb r2, [r0, #0x10]
+ mov r2, #6
+ strb r2, [r0, #0x11]
+ add r0, r1, #0
+ add r1, sp, #0
+ bl FUN_020145C8
+ add sp, #0x14
+ pop {pc}
+ thumb_func_end MOD58_021DA69C
+
+ thumb_func_start MOD58_021DA6C4
+MOD58_021DA6C4: ; 0x021DA6C4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x38]
+ add r4, r1, #0
+ bl MOD58_021DAC00
+ cmp r0, #0
+ beq _021DA6E6
+ ldr r1, _021DA6F0 ; =0x00005C9C
+ ldr r0, [r5]
+ ldr r1, [r5, r1]
+ bl MOD58_021DA69C
+ mov r0, #0xc3
+ mov r1, #3
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_021DA6E6:
+ add r0, r5, #0
+ bl MOD58_021DA674
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DA6F0: .word 0x00005C9C
+ thumb_func_end MOD58_021DA6C4
+
+ thumb_func_start MOD58_021DA6F4
+MOD58_021DA6F4: ; 0x021DA6F4
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, _021DA784 ; =0x00005C9C
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0201466C
+ cmp r0, #1
+ beq _021DA70E
+ cmp r0, #2
+ beq _021DA748
+ b _021DA76E
+_021DA70E:
+ ldr r0, [r5, #8]
+ mov r1, #4
+ bl FUN_0202A170
+ mov r0, #0xb5
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0200D0E0
+ ldr r0, _021DA784 ; =0x00005C9C
+ ldr r0, [r5, r0]
+ bl FUN_020146C4
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x27
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add sp, #0xc
+ mov r0, #2
+ pop {r4, r5, pc}
+_021DA748:
+ mov r0, #0xc3
+ mov r1, #4
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ sub r0, #0xbc
+ add r0, r5, r0
+ mov r1, #0
+ bl MOD58_021DA614
+ mov r0, #0xb5
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0200D0E0
+ ldr r0, _021DA784 ; =0x00005C9C
+ ldr r0, [r5, r0]
+ bl FUN_020146C4
+_021DA76E:
+ ldr r1, _021DA788 ; =0x0000432C
+ mov r0, #0xf0
+ ldrb r2, [r5, r1]
+ bic r2, r0
+ add r0, r5, #0
+ strb r2, [r5, r1]
+ bl MOD58_021DA674
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_021DA784: .word 0x00005C9C
+_021DA788: .word 0x0000432C
+ thumb_func_end MOD58_021DA6F4
+
+ thumb_func_start MOD58_021DA78C
+MOD58_021DA78C: ; 0x021DA78C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021DA7F0 ; =0x00005C9C
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0201466C
+ cmp r0, #1
+ beq _021DA7A4
+ cmp r0, #2
+ beq _021DA7D4
+ b _021DA7EC
+_021DA7A4:
+ mov r0, #0xc3
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ sub r0, #0x38
+ add r0, r5, r0
+ bl FUN_0200D0E0
+ ldr r0, _021DA7F0 ; =0x00005C9C
+ ldr r0, [r5, r0]
+ bl FUN_020146C4
+ mov r0, #0xb1
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #2
+ bl FUN_02019620
+ mov r0, #0xb1
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_020191D0
+ b _021DA7EC
+_021DA7D4:
+ mov r0, #0xc3
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ sub r0, #0x38
+ add r0, r5, r0
+ bl FUN_0200D0E0
+ ldr r0, _021DA7F0 ; =0x00005C9C
+ ldr r0, [r5, r0]
+ bl FUN_020146C4
+_021DA7EC:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DA7F0: .word 0x00005C9C
+ thumb_func_end MOD58_021DA78C
+
+ thumb_func_start MOD58_021DA7F4
+MOD58_021DA7F4: ; 0x021DA7F4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #0xb
+ add r5, r0, #0
+ bl MOD58_021DAB94
+ mov r0, #0xc3
+ mov r1, #5
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD58_021DA674
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD58_021DA7F4
+
+ thumb_func_start MOD58_021DA814
+MOD58_021DA814: ; 0x021DA814
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x38]
+ add r4, r1, #0
+ bl MOD58_021DAC00
+ cmp r0, #0
+ beq _021DA836
+ mov r0, #0xc3
+ mov r1, #6
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ ldr r1, _021DA840 ; =0x00005C9C
+ ldr r0, [r5]
+ ldr r1, [r5, r1]
+ bl MOD58_021DA69C
+_021DA836:
+ add r0, r5, #0
+ bl MOD58_021DA674
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DA840: .word 0x00005C9C
+ thumb_func_end MOD58_021DA814
+
+ thumb_func_start MOD58_021DA844
+MOD58_021DA844: ; 0x021DA844
+ 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 _021DA870
+ neg r0, r4
+ cmp r0, r2
+ ble _021DA864
+ add r0, r2, #0
+_021DA864:
+ ldr r5, [sp, #0x30]
+ mov r4, #0
+ sub r5, r5, r0
+ add r6, r6, r0
+ str r5, [sp, #0x30]
+ sub r2, r2, r0
+_021DA870:
+ cmp r3, #0
+ bge _021DA888
+ neg r0, r3
+ cmp r0, r1
+ ble _021DA87C
+ add r0, r1, #0
+_021DA87C:
+ ldr r5, [sp, #0x34]
+ mov r3, #0
+ sub r5, r5, r0
+ add r7, r7, r0
+ str r5, [sp, #0x34]
+ sub r1, r1, r0
+_021DA888:
+ 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 MOD58_021DA844
+
+ thumb_func_start MOD58_021DA8C4
+MOD58_021DA8C4: ; 0x021DA8C4
+ 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 _021DA904
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0
+ bne _021DA904
+ 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}
+_021DA904:
+ ldr r0, [sp, #0x20]
+ sub r0, r0, r4
+ str r0, [sp, #0x34]
+ bpl _021DA910
+ neg r0, r0
+ str r0, [sp, #0x34]
+_021DA910:
+ ldr r0, [sp, #0x24]
+ sub r7, r0, r5
+ bpl _021DA918
+ neg r7, r7
+_021DA918:
+ ldr r0, [sp, #0x34]
+ cmp r0, r7
+ ble _021DA9A6
+ ldr r0, [sp, #0x20]
+ cmp r4, r0
+ ble _021DA93E
+ ldr r0, [sp, #0x24]
+ cmp r5, r0
+ ble _021DA930
+ mov r0, #1
+ str r0, [sp, #0x2c]
+ b _021DA936
+_021DA930:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x2c]
+_021DA936:
+ str r4, [sp, #0x38]
+ ldr r4, [sp, #0x20]
+ ldr r5, [sp, #0x24]
+ b _021DA950
+_021DA93E:
+ ldr r0, [sp, #0x24]
+ cmp r5, r0
+ bge _021DA94A
+ mov r0, #1
+ str r0, [sp, #0x2c]
+ b _021DA950
+_021DA94A:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x2c]
+_021DA950:
+ mov r0, #4
+ 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 MOD58_021DA844
+ ldr r0, [sp, #0x34]
+ add r4, r4, #1
+ asr r6, r0, #1
+ ldr r0, [sp, #0x38]
+ cmp r4, r0
+ bgt _021DAA2A
+_021DA976:
+ sub r6, r6, r7
+ bpl _021DA982
+ ldr r0, [sp, #0x34]
+ add r6, r6, r0
+ ldr r0, [sp, #0x2c]
+ add r5, r5, r0
+_021DA982:
+ mov r0, #4
+ 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 MOD58_021DA844
+ ldr r0, [sp, #0x38]
+ add r4, r4, #1
+ cmp r4, r0
+ ble _021DA976
+ b _021DAA2A
+_021DA9A6:
+ ldr r0, [sp, #0x24]
+ cmp r5, r0
+ ble _021DA9C6
+ ldr r0, [sp, #0x20]
+ cmp r4, r0
+ ble _021DA9B8
+ mov r0, #1
+ str r0, [sp, #0x28]
+ b _021DA9BE
+_021DA9B8:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x28]
+_021DA9BE:
+ str r5, [sp, #0x30]
+ ldr r5, [sp, #0x24]
+ ldr r4, [sp, #0x20]
+ b _021DA9D8
+_021DA9C6:
+ ldr r0, [sp, #0x20]
+ cmp r4, r0
+ bge _021DA9D2
+ mov r0, #1
+ str r0, [sp, #0x28]
+ b _021DA9D8
+_021DA9D2:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x28]
+_021DA9D8:
+ mov r0, #4
+ 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 MOD58_021DA844
+ ldr r0, [sp, #0x30]
+ add r5, r5, #1
+ asr r6, r7, #1
+ cmp r5, r0
+ bgt _021DAA2A
+_021DA9FC:
+ ldr r0, [sp, #0x34]
+ sub r6, r6, r0
+ bpl _021DAA08
+ ldr r0, [sp, #0x28]
+ add r6, r6, r7
+ add r4, r4, r0
+_021DAA08:
+ mov r0, #4
+ 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 MOD58_021DA844
+ ldr r0, [sp, #0x30]
+ add r5, r5, #1
+ cmp r5, r0
+ ble _021DA9FC
+_021DAA2A:
+ 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 MOD58_021DA8C4
+
+ thumb_func_start MOD58_021DAA3C
+MOD58_021DAA3C: ; 0x021DAA3C
+ mov r2, #0
+_021DAA3E:
+ ldrb r3, [r0, #0x10]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x1c
+ strh r3, [r1, #2]
+ ldrb r3, [r0, #0x10]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x1c
+ beq _021DAA62
+ add r3, r0, r3
+ sub r3, r3, #1
+ ldrb r3, [r3]
+ strb r3, [r1]
+ ldrb r3, [r0, #0x10]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x1c
+ add r3, r0, r3
+ ldrb r3, [r3, #7]
+ strb r3, [r1, #1]
+_021DAA62:
+ add r2, r2, #1
+ add r0, #0x11
+ add r1, r1, #4
+ cmp r2, #5
+ blt _021DAA3E
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD58_021DAA3C
+
+ thumb_func_start MOD58_021DAA70
+MOD58_021DAA70: ; 0x021DAA70
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r7, r0, #0
+ mov r0, #0
+ str r1, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r3, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x20]
+ add r5, r1, #0
+ add r6, r2, #0
+_021DAA86:
+ ldrb r0, [r5, #0x10]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ beq _021DAAEA
+ ldrh r0, [r6, #2]
+ cmp r0, #0
+ beq _021DAAA0
+ ldrb r0, [r6]
+ sub r0, #0x20
+ str r0, [sp, #0x28]
+ ldrb r0, [r6, #1]
+ sub r0, #0x48
+ str r0, [sp, #0x24]
+_021DAAA0:
+ ldrb r0, [r5, #0x10]
+ mov r4, #0
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x1c
+ cmp r1, #0
+ ble _021DAAEA
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ cmp r1, #0
+ ble _021DAAEA
+_021DAAB4:
+ add r0, sp, #0x28
+ str r0, [sp]
+ add r0, sp, #0x24
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ ldrh r0, [r6, #2]
+ add r3, r5, r4
+ str r0, [sp, #0xc]
+ ldrb r1, [r5, #0x10]
+ ldrb r3, [r3, #8]
+ add r0, r7, #0
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ lsl r2, r1, #4
+ ldr r1, _021DAB2C ; =0x021DAE94
+ sub r3, #0x48
+ add r1, r1, r2
+ ldrb r2, [r5, r4]
+ sub r2, #0x20
+ bl MOD58_021DA8C4
+ ldrb r0, [r5, #0x10]
+ add r4, r4, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ cmp r4, r0
+ blt _021DAAB4
+_021DAAEA:
+ ldr r0, [sp, #0x20]
+ add r5, #0x11
+ add r0, r0, #1
+ add r6, r6, #4
+ str r0, [sp, #0x20]
+ cmp r0, #5
+ blt _021DAA86
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0
+ beq _021DAB0A
+ ldr r0, [sp, #0x18]
+ cmp r0, #0
+ beq _021DAB0A
+ add r0, r7, #0
+ bl FUN_020191D0
+_021DAB0A:
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ bl MOD58_021DAA3C
+ mov r3, #0
+ mov r1, #0xf0
+_021DAB16:
+ ldr r0, [sp, #0x10]
+ add r3, r3, #1
+ ldrb r2, [r0, #0x10]
+ bic r2, r1
+ strb r2, [r0, #0x10]
+ add r0, #0x11
+ str r0, [sp, #0x10]
+ cmp r3, #5
+ blt _021DAB16
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DAB2C: .word 0x021DAE94
+ thumb_func_end MOD58_021DAA70
+
+ thumb_func_start MOD58_021DAB30
+MOD58_021DAB30: ; 0x021DAB30
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD58_021DAB30
+
+ thumb_func_start MOD58_021DAB34
+MOD58_021DAB34: ; 0x021DAB34
+ 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 _021DAB4A
+ mov r1, #0
+ strh r1, [r0]
+_021DAB4A:
+ 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 MOD58_021DAB34
+
+ thumb_func_start MOD58_021DAB74
+MOD58_021DAB74: ; 0x021DAB74
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD58_021DAB74
+
+ thumb_func_start MOD58_021DAB78
+MOD58_021DAB78: ; 0x021DAB78
+ ldr r1, _021DAB90 ; =0x0000431C
+ add r3, r0, r1
+ add r1, #0x11
+ add r2, r0, r1
+ mov r1, #0x11
+_021DAB82:
+ ldrb r0, [r3]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021DAB82
+ bx lr
+ .align 2, 0
+_021DAB90: .word 0x0000431C
+ thumb_func_end MOD58_021DAB78
+
+ thumb_func_start MOD58_021DAB94
+MOD58_021DAB94: ; 0x021DAB94
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x50
+ mov r1, #0x27
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r0, [r5, #0x14]
+ add r1, r6, #0
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ ldr r0, [r5, #0x10]
+ ldr r1, [r5, #0x34]
+ add r2, r4, #0
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ mov r0, #0xb5
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #0xb5
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ mov r2, #1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ ldr r0, [r5, #0xc]
+ bl FUN_02024FF4
+ mov r3, #0
+ str r3, [sp]
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0xb5
+ lsl r0, r0, #2
+ ldr r2, [r5, #0x34]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ str r0, [r5, #0x38]
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD58_021DAB94
+
+ thumb_func_start MOD58_021DAC00
+MOD58_021DAC00: ; 0x021DAC00
+ push {r3, lr}
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021DAC12
+ mov r0, #1
+ pop {r3, pc}
+_021DAC12:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD58_021DAC00
+
+ thumb_func_start MOD58_021DAC18
+MOD58_021DAC18: ; 0x021DAC18
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #0
+ add r5, r0, #0
+ str r1, [sp]
+ add r4, r7, #0
+ strb r7, [r5]
+ add r6, r7, #0
+_021DAC26:
+ ldr r0, [sp]
+ ldrb r1, [r0, r6]
+ mov r0, #0xf
+ and r0, r1
+ cmp r0, #1
+ bne _021DAC3C
+ mov r0, #1
+ ldrb r1, [r5]
+ lsl r0, r4
+ orr r0, r1
+ strb r0, [r5]
+_021DAC3C:
+ ldr r0, [sp]
+ ldrb r0, [r0, r6]
+ asr r0, r0, #4
+ cmp r0, #1
+ bne _021DAC52
+ ldrb r0, [r5]
+ add r2, r4, #1
+ mov r1, #1
+ lsl r1, r2
+ orr r0, r1
+ strb r0, [r5]
+_021DAC52:
+ add r4, r4, #2
+ cmp r4, #8
+ bne _021DAC62
+ mov r0, #0
+ add r5, r5, #1
+ add r7, r7, #1
+ strb r0, [r5]
+ add r4, r0, #0
+_021DAC62:
+ mov r0, #6
+ lsl r0, r0, #0xa
+ cmp r7, r0
+ blt _021DAC6E
+ bl ErrorHandling
+_021DAC6E:
+ mov r0, #6
+ add r6, r6, #1
+ lsl r0, r0, #0xa
+ cmp r6, r0
+ blt _021DAC26
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD58_021DAC18
+
+ thumb_func_start MOD58_021DAC7C
+MOD58_021DAC7C: ; 0x021DAC7C
+ push {r3, r4, r5, lr}
+ ldr r1, _021DAD28 ; =0x021C48F8
+ add r4, r0, #0
+ ldrh r0, [r1, #0x1c]
+ ldr r3, _021DAD2C ; =0x0000FFFF
+ cmp r0, r3
+ beq _021DAD16
+ ldrh r1, [r1, #0x1e]
+ cmp r1, r3
+ beq _021DAD16
+ ldr r2, _021DAD30 ; =0x00005CA8
+ ldr r5, [r4, r2]
+ cmp r5, r3
+ beq _021DAD16
+ add r1, r2, #4
+ ldr r1, [r4, r1]
+ cmp r1, r3
+ beq _021DAD16
+ cmp r5, r0
+ ble _021DACAC
+ mov r1, #0
+ sub r3, r5, r0
+ mvn r1, r1
+ b _021DACB0
+_021DACAC:
+ sub r3, r0, r5
+ mov r1, #1
+_021DACB0:
+ sub r0, r2, #6
+ strb r1, [r4, r0]
+ cmp r3, #3
+ blt _021DACE6
+ cmp r3, #0x28
+ bgt _021DACE6
+ ldr r0, _021DAD28 ; =0x021C48F8
+ ldrh r2, [r0, #0x1e]
+ ldr r0, _021DAD34 ; =0x00005CAC
+ ldr r1, [r4, r0]
+ cmp r1, r2
+ ble _021DACD0
+ sub r2, r1, r2
+ mov r1, #0
+ mvn r1, r1
+ b _021DACD4
+_021DACD0:
+ sub r2, r2, r1
+ mov r1, #1
+_021DACD4:
+ sub r0, #9
+ strb r1, [r4, r0]
+ cmp r2, #0x28
+ bgt _021DAD16
+ ldr r0, _021DAD38 ; =0x00005CA0
+ add r0, r4, r0
+ bl MOD58_021DAD3C
+ b _021DAD16
+_021DACE6:
+ cmp r3, #0x28
+ bgt _021DAD16
+ ldr r0, _021DAD28 ; =0x021C48F8
+ ldrh r2, [r0, #0x1e]
+ ldr r0, _021DAD34 ; =0x00005CAC
+ ldr r1, [r4, r0]
+ cmp r1, r2
+ ble _021DACFE
+ sub r2, r1, r2
+ mov r1, #0
+ mvn r1, r1
+ b _021DAD02
+_021DACFE:
+ sub r2, r2, r1
+ mov r1, #1
+_021DAD02:
+ sub r0, #9
+ strb r1, [r4, r0]
+ cmp r2, #3
+ blt _021DAD16
+ cmp r2, #0x28
+ bgt _021DAD16
+ ldr r0, _021DAD38 ; =0x00005CA0
+ add r0, r4, r0
+ bl MOD58_021DAD3C
+_021DAD16:
+ ldr r1, _021DAD28 ; =0x021C48F8
+ ldr r0, _021DAD30 ; =0x00005CA8
+ ldrh r2, [r1, #0x1c]
+ str r2, [r4, r0]
+ ldrh r1, [r1, #0x1e]
+ add r0, r0, #4
+ str r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+ nop
+_021DAD28: .word 0x021C48F8
+_021DAD2C: .word 0x0000FFFF
+_021DAD30: .word 0x00005CA8
+_021DAD34: .word 0x00005CAC
+_021DAD38: .word 0x00005CA0
+ thumb_func_end MOD58_021DAC7C
+
+ thumb_func_start MOD58_021DAD3C
+MOD58_021DAD3C: ; 0x021DAD3C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ ldrsb r0, [r4, r0]
+ cmp r0, #0
+ bne _021DAD60
+ mov r0, #1
+ ldrsb r0, [r4, r0]
+ cmp r0, #0
+ bne _021DAD60
+ ldr r0, _021DAD9C ; =0x0000069A
+ bl FUN_02005508
+ cmp r0, #0
+ bne _021DAD60
+ ldr r0, _021DAD9C ; =0x0000069A
+ bl FUN_020054C8
+_021DAD60:
+ mov r0, #0
+ ldrsb r1, [r4, r0]
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ mul r0, r1
+ bmi _021DAD78
+ mov r0, #1
+ ldrsb r1, [r4, r0]
+ mov r0, #3
+ ldrsb r0, [r4, r0]
+ mul r0, r1
+ bpl _021DAD88
+_021DAD78:
+ ldr r0, _021DAD9C ; =0x0000069A
+ bl FUN_02005508
+ cmp r0, #0
+ bne _021DAD88
+ ldr r0, _021DAD9C ; =0x0000069A
+ bl FUN_020054C8
+_021DAD88:
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ strb r0, [r4]
+ mov r0, #3
+ ldrsb r0, [r4, r0]
+ strb r0, [r4, #1]
+ mov r0, #0
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ pop {r4, pc}
+ .align 2, 0
+_021DAD9C: .word 0x0000069A
+ thumb_func_end MOD58_021DAD3C
+
+ .section .rodata
+ ; 0x021DADA0
+ .incbin "baserom.nds", 0x2A9B80, 0x1F4
+
+ .section .data
+ ; 0x021DAFA0
+ .incbin "baserom.nds", 0x2A9D80, 0x20
+
diff --git a/arm9/modules/59/asm/module_59.s b/arm9/modules/59/asm/module_59.s
new file mode 100644
index 00000000..0809afd7
--- /dev/null
+++ b/arm9/modules/59/asm/module_59.s
@@ -0,0 +1,5042 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD59_021D74E0
+MOD59_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ mov r2, #1
+ add r5, r0, #0
+ mov r0, #3
+ mov r1, #0x52
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ add r0, r5, #0
+ mov r1, #0xb4
+ mov r2, #0x52
+ bl FUN_02006268
+ mov r1, #0
+ mov r2, #0xb4
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x52
+ str r0, [r4]
+ add r0, r5, #0
+ bl FUN_0200628C
+ ldr r0, [r0, #8]
+ str r0, [r4, #4]
+ bl LoadPlayerDataAddress
+ mov r1, #0
+ str r0, [r4, #8]
+ str r1, [r4, #0xc]
+ str r1, [r4, #0x10]
+ str r1, [r4, #0x14]
+ ldr r0, [r4, #8]
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #0x52
+ mov r3, #7
+ bl FUN_02077A84
+ str r0, [r4, #0x70]
+ ldr r0, [r4, #8]
+ mov r1, #3
+ str r0, [sp]
+ mov r0, #0x52
+ mov r2, #0
+ mov r3, #7
+ bl FUN_02077A84
+ str r0, [r4, #0x74]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x88
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x89
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x8a
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x8b
+ strb r1, [r0]
+ add r4, #0x90
+ str r1, [r4]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD59_021D74E0
+
+ thumb_func_start MOD59_021D7564
+MOD59_021D7564: ; 0x021D7564
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ bl FUN_02006278
+ ldr r1, [r5]
+ add r4, r0, #0
+ mov r6, #0
+ cmp r1, #5
+ bls _021D757A
+ b _021D76AC
+_021D757A:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7586: ; jump table
+ .short _021D7592 - _021D7586 - 2 ; case 0
+ .short _021D75FA - _021D7586 - 2 ; case 1
+ .short _021D7642 - _021D7586 - 2 ; case 2
+ .short _021D7668 - _021D7586 - 2 ; case 3
+ .short _021D7690 - _021D7586 - 2 ; case 4
+ .short _021D76AA - _021D7586 - 2 ; case 5
+_021D7592:
+ add r0, r6, #0
+ add r1, r6, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ add r1, r6, #0
+ bl FUN_0200E3A0
+ add r0, r6, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ add r0, r6, #0
+ add r1, r0, #0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D76B4 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D76B8 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ add r0, r4, #0
+ bl MOD59_021D778C
+ add r0, r4, #0
+ bl MOD59_021D79F8
+ add r0, r4, #0
+ bl MOD59_021D7A4C
+ ldr r0, _021D76BC ; =MOD59_021D7724
+ add r1, r4, #0
+ bl FUN_02015F10
+ bl FUN_0201E788
+ mov r0, #1
+ str r0, [r5]
+ b _021D76AC
+_021D75FA:
+ bl MOD59_021D8920
+ cmp r0, #1
+ bne _021D761E
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #2
+ str r0, [r5]
+_021D761E:
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021D76AC
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #3
+ str r0, [r5]
+ b _021D76AC
+_021D7642:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D76AC
+ add r0, r4, #0
+ bl MOD59_021D7A34
+ add r0, r4, #0
+ bl MOD59_021D796C
+ add r0, r4, #0
+ bl MOD59_021D7A5C
+ add r0, r6, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r6, #1
+ b _021D76AC
+_021D7668:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D76AC
+ add r0, r4, #0
+ bl MOD59_021D7A34
+ add r0, r4, #0
+ bl MOD59_021D796C
+ add r0, r4, #0
+ bl MOD59_021D7A5C
+ add r0, r6, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #4
+ str r0, [r5]
+ b _021D76AC
+_021D7690:
+ ldr r0, [r4, #0x14]
+ bl FUN_02006290
+ cmp r0, #1
+ bne _021D76AC
+ ldr r0, [r4, #0x14]
+ bl FUN_02006260
+ add r0, r6, #0
+ str r0, [r4, #0x14]
+ mov r0, #5
+ str r0, [r5]
+ b _021D76AC
+_021D76AA:
+ str r6, [r5]
+_021D76AC:
+ add r0, r6, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D76B4: .word 0xFFFFE0FF
+_021D76B8: .word 0x04001000
+_021D76BC: .word MOD59_021D7724
+ thumb_func_end MOD59_021D7564
+
+ thumb_func_start MOD59_021D76C0
+MOD59_021D76C0: ; 0x021D76C0
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r5, [r4]
+ bl FUN_020238F4
+ ldr r1, [r4, #0x70]
+ ldr r1, [r1, #0x18]
+ bl FUN_0202397C
+ ldr r0, [r4, #4]
+ bl FUN_020238F4
+ ldr r1, [r4, #0x70]
+ ldr r1, [r1, #4]
+ bl FUN_020239C8
+ ldr r0, [r4, #4]
+ bl FUN_02024EB4
+ ldr r1, [r4, #0x74]
+ ldr r1, [r1, #0x18]
+ bl FUN_02024EF4
+ ldr r0, [r4, #0x70]
+ bl FUN_02077AC4
+ ldr r0, [r4, #0x74]
+ bl FUN_02077AC4
+ add r0, r6, #0
+ bl FUN_0200627C
+ add r0, r5, #0
+ bl FUN_020168D0
+ ldr r0, _021D771C ; =0x00000034
+ ldr r1, _021D7720 ; =0x021D76D8
+ bl FUN_02000E7C
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ nop
+_021D771C: .word 0x00000034
+_021D7720: .word 0x021D76D8
+ thumb_func_end MOD59_021D76C0
+
+ thumb_func_start MOD59_021D7724
+MOD59_021D7724: ; 0x021D7724
+ ldr r3, _021D772C ; =0x0201AB61
+ ldr r0, [r0, #0x18]
+ bx r3
+ nop
+_021D772C: .word 0x0201AB61
+ thumb_func_end MOD59_021D7724
+
+ thumb_func_start MOD59_021D7730
+MOD59_021D7730: ; 0x021D7730
+ push {r3, r4}
+ ldr r2, _021D7788 ; =0x021C48F8
+ mov r0, #0
+ ldrh r1, [r2, #0x20]
+ cmp r1, #0
+ beq _021D7784
+ ldrh r3, [r2, #0x1c]
+ mov r1, #1
+ lsl r1, r1, #8
+ cmp r3, r1
+ bhs _021D7784
+ ldrh r2, [r2, #0x1e]
+ cmp r2, #0xc0
+ bhs _021D7784
+ cmp r3, #0x80
+ bhs _021D7758
+ mov r1, #0x80
+ sub r1, r1, r3
+ lsl r1, r1, #0x10
+ b _021D775C
+_021D7758:
+ sub r3, #0x80
+ lsl r1, r3, #0x10
+_021D775C:
+ lsr r3, r1, #0x10
+ cmp r2, #0x64
+ bhs _021D776A
+ mov r1, #0x64
+ sub r1, r1, r2
+ lsl r1, r1, #0x10
+ b _021D776E
+_021D776A:
+ sub r2, #0x64
+ lsl r1, r2, #0x10
+_021D776E:
+ lsr r4, r1, #0x10
+ add r2, r3, #0
+ add r1, r4, #0
+ mul r2, r3
+ mul r1, r4
+ add r2, r2, r1
+ mov r1, #1
+ lsl r1, r1, #8
+ cmp r2, r1
+ bgt _021D7784
+ mov r0, #1
+_021D7784:
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+_021D7788: .word 0x021C48F8
+ thumb_func_end MOD59_021D7730
+
+ thumb_func_start MOD59_021D778C
+MOD59_021D778C: ; 0x021D778C
+ push {r3, r4, r5, lr}
+ sub sp, #0x78
+ ldr r5, _021D7954 ; =0x021D9F18
+ add r4, r0, #0
+ add r3, sp, #0x50
+ mov r2, #5
+_021D7798:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7798
+ add r0, sp, #0x50
+ bl FUN_0201E66C
+ ldr r0, [r4]
+ bl FUN_02016B94
+ add r3, sp, #0x40
+ ldr r5, _021D7958 ; =0x021D9DCC
+ str r0, [r4, #0x18]
+ 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, _021D795C ; =0x021D9EA0
+ add r3, sp, #0x24
+ 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]
+ mov r0, #0xf
+ strb r0, [r2, #0x12]
+ mov r0, #6
+ strb r0, [r2, #0x13]
+ ldr r0, [r4, #0x18]
+ add r3, r1, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_02018744
+ mov r0, #0xe
+ add r2, sp, #0x24
+ strb r0, [r2, #0x12]
+ mov r0, #5
+ strb r0, [r2, #0x13]
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_02018744
+ mov r0, #0xd
+ add r2, sp, #0x24
+ strb r0, [r2, #0x12]
+ mov r0, #4
+ strb r0, [r2, #0x13]
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_02018744
+ mov r0, #0xc
+ add r2, sp, #0x24
+ strb r0, [r2, #0x12]
+ mov r1, #3
+ strb r1, [r2, #0x13]
+ ldr r0, [r4, #0x18]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #3
+ bl FUN_02018744
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4]
+ ldr r2, _021D7960 ; =0x000003E2
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x18]
+ mov r3, #4
+ bl FUN_0200CD68
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4]
+ ldr r2, _021D7964 ; =0x000003D9
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x18]
+ mov r3, #3
+ bl FUN_0200CB00
+ ldr r2, [r4]
+ mov r0, #0
+ mov r1, #0xa0
+ bl FUN_02002ED0
+ ldr r2, [r4]
+ mov r0, #0
+ mov r1, #0xc0
+ bl FUN_02002EEC
+ ldr r5, _021D7968 ; =0x021D9EBC
+ add r3, sp, #8
+ 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, #0xf
+ str r0, [r3]
+ add r0, sp, #8
+ strb r1, [r0, #0x12]
+ mov r1, #6
+ strb r1, [r0, #0x13]
+ ldr r0, [r4, #0x18]
+ mov r1, #4
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #4
+ bl FUN_02018744
+ mov r1, #0xe
+ add r0, sp, #8
+ strb r1, [r0, #0x12]
+ mov r1, #5
+ strb r1, [r0, #0x13]
+ ldr r0, [r4, #0x18]
+ add r2, sp, #8
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #5
+ bl FUN_02018744
+ mov r1, #0xd
+ add r0, sp, #8
+ strb r1, [r0, #0x12]
+ mov r1, #4
+ strb r1, [r0, #0x13]
+ ldr r0, [r4, #0x18]
+ mov r1, #6
+ add r2, sp, #8
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #6
+ bl FUN_02018744
+ mov r1, #0xc
+ add r0, sp, #8
+ strb r1, [r0, #0x12]
+ mov r1, #3
+ strb r1, [r0, #0x13]
+ ldr r0, [r4, #0x18]
+ mov r1, #7
+ add r2, sp, #8
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #7
+ bl FUN_02018744
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0201797C
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #3
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #5
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #6
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #7
+ mov r1, #0
+ bl FUN_0201797C
+ add r0, r4, #0
+ bl MOD59_021D8058
+ mov r0, #0
+ str r0, [r4, #0x78]
+ add sp, #0x78
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7954: .word 0x021D9F18
+_021D7958: .word 0x021D9DCC
+_021D795C: .word 0x021D9EA0
+_021D7960: .word 0x000003E2
+_021D7964: .word 0x000003D9
+_021D7968: .word 0x021D9EBC
+ thumb_func_end MOD59_021D778C
+
+ thumb_func_start MOD59_021D796C
+MOD59_021D796C: ; 0x021D796C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0201797C
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #3
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #5
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #6
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #7
+ mov r1, #0
+ bl FUN_0201797C
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #5
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #6
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #7
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD59_021D796C
+
+ thumb_func_start MOD59_021D79F8
+MOD59_021D79F8: ; 0x021D79F8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r2, _021D7A30 ; =0x00000155
+ ldr r3, [r4]
+ mov r0, #1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ str r0, [r4, #0x4c]
+ bl FUN_0201BD5C
+ mov r0, #0
+ ldr r3, [r4]
+ add r1, r0, #0
+ mov r2, #6
+ bl FUN_020142EC
+ str r0, [r4, #0x60]
+ ldr r0, [r4]
+ bl FUN_0200AA80
+ str r0, [r4, #0x64]
+ mov r0, #0
+ str r0, [r4, #0x50]
+ str r0, [r4, #0x54]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+ nop
+_021D7A30: .word 0x00000155
+ thumb_func_end MOD59_021D79F8
+
+ thumb_func_start MOD59_021D7A34
+MOD59_021D7A34: ; 0x021D7A34
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x64]
+ bl FUN_0200AB18
+ ldr r0, [r4, #0x60]
+ bl FUN_020143D0
+ ldr r0, [r4, #0x4c]
+ bl FUN_0200A8B8
+ pop {r4, pc}
+ thumb_func_end MOD59_021D7A34
+
+ thumb_func_start MOD59_021D7A4C
+MOD59_021D7A4C: ; 0x021D7A4C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02014590
+ str r0, [r4, #0x68]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD59_021D7A4C
+
+ thumb_func_start MOD59_021D7A5C
+MOD59_021D7A5C: ; 0x021D7A5C
+ ldr r3, _021D7A64 ; =0x020145A9
+ ldr r0, [r0, #0x68]
+ bx r3
+ nop
+_021D7A64: .word 0x020145A9
+ thumb_func_end MOD59_021D7A5C
+
+ thumb_func_start MOD59_021D7A68
+MOD59_021D7A68: ; 0x021D7A68
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r3, r0, #0
+ add r6, r2, #0
+ mov r5, #0
+ cmp r4, #6
+ bhi _021D7A92
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7A84: ; jump table
+ .short _021D7A92 - _021D7A84 - 2 ; case 0
+ .short _021D7A98 - _021D7A84 - 2 ; case 1
+ .short _021D7A9E - _021D7A84 - 2 ; case 2
+ .short _021D7A92 - _021D7A84 - 2 ; case 3
+ .short _021D7AA4 - _021D7A84 - 2 ; case 4
+ .short _021D7AAA - _021D7A84 - 2 ; case 5
+ .short _021D7AB0 - _021D7A84 - 2 ; case 6
+_021D7A92:
+ mov r1, #1
+ mov r0, #0
+ b _021D7AB4
+_021D7A98:
+ mov r1, #2
+ add r0, r5, #0
+ b _021D7AB4
+_021D7A9E:
+ mov r1, #4
+ add r0, r5, #0
+ b _021D7AB4
+_021D7AA4:
+ mov r1, #1
+ add r0, r1, #0
+ b _021D7AB4
+_021D7AAA:
+ mov r1, #2
+ mov r0, #1
+ b _021D7AB4
+_021D7AB0:
+ mov r1, #4
+ mov r0, #1
+_021D7AB4:
+ ldr r2, [r3, #0x78]
+ cmp r2, #3
+ bls _021D7ABC
+ b _021D7BDE
+_021D7ABC:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021D7AC8: ; jump table
+ .short _021D7AD0 - _021D7AC8 - 2 ; case 0
+ .short _021D7B2C - _021D7AC8 - 2 ; case 1
+ .short _021D7B7C - _021D7AC8 - 2 ; case 2
+ .short _021D7BD0 - _021D7AC8 - 2 ; case 3
+_021D7AD0:
+ cmp r6, #0
+ bne _021D7B1A
+ mov r2, #0
+ str r2, [r3, #0x7c]
+ add r2, r3, #0
+ mov r6, #0x10
+ add r2, #0x80
+ str r6, [r2]
+ mov r2, #1
+ str r2, [r3, #0x78]
+ cmp r0, #0
+ bne _021D7AFC
+ add r0, r3, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r2, #0xe
+ str r0, [sp]
+ ldr r0, _021D7BE4 ; =0x04000050
+ ldr r3, [r3, #0x7c]
+ bl G2x_SetBlendAlpha_
+ b _021D7B0E
+_021D7AFC:
+ add r0, r3, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r2, #0xe
+ str r0, [sp]
+ ldr r0, _021D7BE8 ; =0x04001050
+ ldr r3, [r3, #0x7c]
+ bl G2x_SetBlendAlpha_
+_021D7B0E:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #1
+ bl FUN_0201797C
+ b _021D7BDE
+_021D7B1A:
+ mov r0, #0x10
+ str r0, [r3, #0x7c]
+ add r0, r3, #0
+ mov r1, #0
+ add r0, #0x80
+ str r1, [r0]
+ mov r0, #2
+ str r0, [r3, #0x78]
+ b _021D7BDE
+_021D7B2C:
+ add r2, r3, #0
+ add r2, #0x80
+ ldr r2, [r2]
+ cmp r2, #0
+ beq _021D7B76
+ ldr r2, [r3, #0x7c]
+ add r2, r2, #1
+ str r2, [r3, #0x7c]
+ add r2, r3, #0
+ add r2, #0x80
+ ldr r2, [r2]
+ sub r4, r2, #1
+ add r2, r3, #0
+ add r2, #0x80
+ str r4, [r2]
+ cmp r0, #0
+ bne _021D7B62
+ add r0, r3, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r2, #0xe
+ str r0, [sp]
+ ldr r0, _021D7BE4 ; =0x04000050
+ ldr r3, [r3, #0x7c]
+ bl G2x_SetBlendAlpha_
+ b _021D7BDE
+_021D7B62:
+ add r0, r3, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r2, #0xe
+ str r0, [sp]
+ ldr r0, _021D7BE8 ; =0x04001050
+ ldr r3, [r3, #0x7c]
+ bl G2x_SetBlendAlpha_
+ b _021D7BDE
+_021D7B76:
+ mov r0, #3
+ str r0, [r3, #0x78]
+ b _021D7BDE
+_021D7B7C:
+ ldr r2, [r3, #0x7c]
+ cmp r2, #0
+ beq _021D7BC0
+ sub r2, r2, #1
+ str r2, [r3, #0x7c]
+ add r2, r3, #0
+ add r2, #0x80
+ ldr r2, [r2]
+ add r4, r2, #1
+ add r2, r3, #0
+ add r2, #0x80
+ str r4, [r2]
+ cmp r0, #0
+ bne _021D7BAC
+ add r0, r3, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r2, #0xe
+ str r0, [sp]
+ ldr r0, _021D7BE4 ; =0x04000050
+ ldr r3, [r3, #0x7c]
+ bl G2x_SetBlendAlpha_
+ b _021D7BDE
+_021D7BAC:
+ add r0, r3, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r2, #0xe
+ str r0, [sp]
+ ldr r0, _021D7BE8 ; =0x04001050
+ ldr r3, [r3, #0x7c]
+ bl G2x_SetBlendAlpha_
+ b _021D7BDE
+_021D7BC0:
+ mov r0, #3
+ str r0, [r3, #0x78]
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0
+ bl FUN_0201797C
+ b _021D7BDE
+_021D7BD0:
+ ldr r0, _021D7BE4 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ ldr r0, _021D7BE8 ; =0x04001050
+ mov r5, #1
+ strh r1, [r0]
+ str r1, [r3, #0x78]
+_021D7BDE:
+ add r0, r5, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D7BE4: .word 0x04000050
+_021D7BE8: .word 0x04001050
+ thumb_func_end MOD59_021D7A68
+
+ thumb_func_start MOD59_021D7BEC
+MOD59_021D7BEC: ; 0x021D7BEC
+ add r2, r0, #0
+ add r2, #0x90
+ ldr r2, [r2]
+ cmp r2, r1
+ bge _021D7C06
+ add r1, r0, #0
+ add r1, #0x90
+ ldr r1, [r1]
+ add r0, #0x90
+ add r1, r1, #1
+ str r1, [r0]
+ mov r0, #0
+ bx lr
+_021D7C06:
+ mov r1, #0
+ add r0, #0x90
+ str r1, [r0]
+ mov r0, #1
+ bx lr
+ thumb_func_end MOD59_021D7BEC
+
+ thumb_func_start MOD59_021D7C10
+MOD59_021D7C10: ; 0x021D7C10
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ lsl r0, r2, #0x18
+ add r4, r1, #0
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ lsl r1, r4, #0x18
+ mov r2, #0
+ ldr r0, [r5, #0x18]
+ lsr r1, r1, #0x18
+ add r3, r2, #0
+ bl FUN_020186B4
+ lsl r1, r4, #0x18
+ ldr r0, [r5, #0x18]
+ lsr r1, r1, #0x18
+ bl FUN_02017CD0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD59_021D7C10
+
+ thumb_func_start MOD59_021D7C44
+MOD59_021D7C44: ; 0x021D7C44
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, [r5, #0x50]
+ add r7, r1, #0
+ mov r4, #0
+ cmp r0, #0
+ beq _021D7C5E
+ cmp r0, #1
+ beq _021D7D1C
+ cmp r0, #2
+ beq _021D7D36
+ b _021D7D54
+_021D7C5E:
+ add r1, r5, #0
+ ldr r0, [r5, #0x18]
+ ldr r2, _021D7D5C ; =0x021D9DB8
+ add r1, #0x1c
+ bl FUN_02019150
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r2, r4, #0
+ add r0, #0x1c
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ add r0, r5, #0
+ ldr r2, _021D7D60 ; =0x000003E2
+ add r0, #0x1c
+ add r1, r4, #0
+ mov r3, #4
+ bl FUN_0200D0BC
+ mov r0, #1
+ bl FUN_02002B60
+ add r0, r4, #0
+ bl FUN_02002B7C
+ mov r0, #1
+ ldr r1, [r5]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ add r6, r0, #0
+ mov r0, #1
+ ldr r1, [r5]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ str r0, [r5, #0x5c]
+ ldr r0, [r5, #0x4c]
+ add r1, r7, #0
+ add r2, r6, #0
+ bl FUN_0200A8E0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r2, [r5, #0x70]
+ add r3, r5, #0
+ add r3, #0x84
+ ldr r0, [r5, #0x64]
+ ldr r2, [r2, #0x18]
+ ldr r3, [r3]
+ add r1, r4, #0
+ bl FUN_0200ABB4
+ mov r1, #1
+ str r1, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r2, [r5, #0x74]
+ ldr r0, [r5, #0x64]
+ ldr r2, [r2, #0x18]
+ add r3, r4, #0
+ bl FUN_0200ABB4
+ ldr r0, [r5, #0x64]
+ ldr r1, [r5, #0x5c]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, [r5, #8]
+ bl FUN_02024FF4
+ add r3, r4, #0
+ str r3, [sp]
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ add r0, r5, #0
+ ldr r2, [r5, #0x5c]
+ add r0, #0x1c
+ mov r1, #1
+ bl FUN_0201BD84
+ str r0, [r5, #0x58]
+ mov r0, #1
+ str r0, [r5, #0x50]
+ b _021D7D54
+_021D7D1C:
+ ldr r0, [r5, #0x58]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D7D54
+ ldr r0, [r5, #0x5c]
+ bl FUN_02021A20
+ mov r0, #2
+ str r0, [r5, #0x50]
+ b _021D7D54
+_021D7D36:
+ cmp r2, #0
+ bne _021D7D46
+ ldr r0, _021D7D64 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ and r0, r1
+ cmp r0, #1
+ bne _021D7D54
+_021D7D46:
+ add r0, r5, #0
+ add r0, #0x1c
+ bl FUN_02019178
+ mov r0, #0
+ str r0, [r5, #0x50]
+ mov r4, #1
+_021D7D54:
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D7D5C: .word 0x021D9DB8
+_021D7D60: .word 0x000003E2
+_021D7D64: .word 0x021C48B8
+ thumb_func_end MOD59_021D7C44
+
+ thumb_func_start MOD59_021D7D68
+MOD59_021D7D68: ; 0x021D7D68
+ push {r3, lr}
+ cmp r2, #0
+ bne _021D7D74
+ ldr r0, _021D7D78 ; =0x000005DC
+ bl FUN_020054C8
+_021D7D74:
+ pop {r3, pc}
+ nop
+_021D7D78: .word 0x000005DC
+ thumb_func_end MOD59_021D7D68
+
+ thumb_func_start MOD59_021D7D7C
+MOD59_021D7D7C: ; 0x021D7D7C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r5, #0x2c]
+ add r4, r2, #0
+ cmp r0, #0
+ beq _021D7D94
+ cmp r0, #1
+ beq _021D7E4C
+ b _021D7E96
+_021D7D94:
+ cmp r1, #0
+ beq _021D7DA0
+ cmp r1, #1
+ beq _021D7DA8
+ cmp r1, #2
+ beq _021D7DB0
+_021D7DA0:
+ ldr r2, _021D7E9C ; =0x021D9DA8
+ ldr r4, _021D7EA0 ; =0x021D9E0C
+ mov r6, #2
+ b _021D7DC4
+_021D7DA8:
+ ldr r2, _021D7EA4 ; =0x021D9DB0
+ ldr r4, _021D7EA8 ; =0x021D9E58
+ mov r6, #3
+ b _021D7DC4
+_021D7DB0:
+ ldr r0, _021D7EAC ; =0x020ECAC0
+ ldr r2, _021D7EB0 ; =0x021D9DA0
+ ldrb r0, [r0]
+ cmp r0, #0xa
+ bne _021D7DC0
+ ldr r4, _021D7EB4 ; =0x021D9F40
+ mov r6, #5
+ b _021D7DC4
+_021D7DC0:
+ ldr r4, _021D7EB8 ; =0x021D9F68
+ mov r6, #5
+_021D7DC4:
+ add r1, r5, #0
+ ldr r0, [r5, #0x18]
+ add r1, #0x30
+ bl FUN_02019150
+ ldr r1, [r5]
+ add r0, r6, #0
+ bl FUN_02012838
+ mov r7, #0
+ str r0, [r5, #0x44]
+ cmp r6, #0
+ ble _021D7DF2
+_021D7DDE:
+ ldr r0, [r5, #0x44]
+ ldr r1, [r5, #0x4c]
+ ldr r2, [r4]
+ ldr r3, [r4, #4]
+ bl FUN_02012880
+ add r7, r7, #1
+ add r4, #8
+ cmp r7, r6
+ blt _021D7DDE
+_021D7DF2:
+ ldr r4, _021D7EBC ; =0x021D9EF8
+ add r3, sp, #4
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5, #0x44]
+ str r0, [sp, #4]
+ lsl r0, r6, #0x10
+ lsr r1, r0, #0x10
+ add r0, sp, #4
+ strh r1, [r0, #0x10]
+ strh r1, [r0, #0x12]
+ ldr r0, _021D7EC0 ; =MOD59_021D7D68
+ mov r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0x30
+ str r0, [sp, #0x10]
+ ldr r3, [r5]
+ add r0, r2, #0
+ lsl r3, r3, #0x18
+ add r2, r1, #0
+ lsr r3, r3, #0x18
+ bl FUN_020010A8
+ str r0, [r5, #0x40]
+ ldr r0, [sp, #0x10]
+ ldr r2, _021D7EC4 ; =0x000003D9
+ mov r1, #1
+ mov r3, #3
+ bl FUN_0200CCA4
+ add r0, r5, #0
+ add r0, #0x30
+ bl FUN_020191D0
+ mov r0, #1
+ str r0, [r5, #0x2c]
+ b _021D7E96
+_021D7E4C:
+ ldr r0, [r5, #0x40]
+ bl FUN_02001204
+ mov r1, #0
+ mvn r1, r1
+ str r0, [r5, #0x48]
+ cmp r0, r1
+ beq _021D7E96
+ sub r1, r1, #1
+ cmp r0, r1
+ bne _021D7E66
+ cmp r4, #1
+ beq _021D7E96
+_021D7E66:
+ add r0, r5, #0
+ add r0, #0x30
+ mov r1, #0
+ bl FUN_0200CCF8
+ add r0, r5, #0
+ add r0, #0x30
+ bl FUN_02019178
+ mov r1, #0
+ ldr r0, [r5, #0x40]
+ add r2, r1, #0
+ bl FUN_02001300
+ ldr r0, [r5, #0x44]
+ bl FUN_02012870
+ ldr r0, _021D7EC8 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0
+ str r0, [r5, #0x2c]
+ mov r0, #1
+ str r0, [sp]
+_021D7E96:
+ ldr r0, [sp]
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7E9C: .word 0x021D9DA8
+_021D7EA0: .word 0x021D9E0C
+_021D7EA4: .word 0x021D9DB0
+_021D7EA8: .word 0x021D9E58
+_021D7EAC: .word 0x020ECAC0
+_021D7EB0: .word 0x021D9DA0
+_021D7EB4: .word 0x021D9F40
+_021D7EB8: .word 0x021D9F68
+_021D7EBC: .word 0x021D9EF8
+_021D7EC0: .word MOD59_021D7D68
+_021D7EC4: .word 0x000003D9
+_021D7EC8: .word 0x000005DC
+ thumb_func_end MOD59_021D7D7C
+
+ thumb_func_start MOD59_021D7ECC
+MOD59_021D7ECC: ; 0x021D7ECC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ str r1, [sp, #0x10]
+ ldr r1, [r4, #0x54]
+ add r6, r2, #0
+ add r7, r3, #0
+ mov r5, #0
+ cmp r1, #5
+ bls _021D7EE2
+ b _021D803C
+_021D7EE2:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7EEE: ; jump table
+ .short _021D7EFA - _021D7EEE - 2 ; case 0
+ .short _021D7FD8 - _021D7EEE - 2 ; case 1
+ .short _021D7FE4 - _021D7EEE - 2 ; case 2
+ .short _021D7FF6 - _021D7EEE - 2 ; case 3
+ .short _021D8016 - _021D7EEE - 2 ; case 4
+ .short _021D8028 - _021D7EEE - 2 ; case 5
+_021D7EFA:
+ add r0, r5, #0
+ add r1, r5, #0
+ bl FUN_0201797C
+ mov r0, #1
+ ldr r1, [r4]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ str r0, [r4, #0x5c]
+ ldr r0, [r4, #0x4c]
+ ldr r1, [sp, #0x10]
+ ldr r2, [r4, #0x5c]
+ bl FUN_0200A8E0
+ cmp r6, #1
+ add r0, sp, #0x14
+ bne _021D7F7C
+ ldr r1, _021D8044 ; =0x021D9D90
+ ldrh r2, [r1, #8]
+ strh r2, [r0]
+ ldrh r2, [r1, #0xa]
+ strh r2, [r0, #2]
+ ldrh r2, [r1, #0xc]
+ ldrh r1, [r1, #0xe]
+ strh r2, [r0, #4]
+ strh r1, [r0, #6]
+ ldr r0, [r4, #0x5c]
+ bl FUN_02002F90
+ mov r1, #0xc
+ sub r2, r1, r0
+ add r1, sp, #0x14
+ strb r2, [r1, #2]
+ lsl r0, r0, #1
+ strb r0, [r1, #4]
+ add r1, r4, #0
+ ldr r0, [r4, #0x18]
+ add r1, #0x1c
+ add r2, sp, #0x14
+ bl FUN_02019150
+ add r1, r5, #0
+ mov r0, #0xc0
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x1c
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ add r1, r5, #0
+ str r1, [sp]
+ ldr r0, _021D8048 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x1c
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ b _021D7FCC
+_021D7F7C:
+ ldr r1, _021D8044 ; =0x021D9D90
+ add r2, sp, #0x14
+ ldrh r3, [r1]
+ strh r3, [r0]
+ ldrh r3, [r1, #2]
+ strh r3, [r0, #2]
+ ldrh r3, [r1, #4]
+ ldrh r1, [r1, #6]
+ strh r3, [r0, #4]
+ strh r1, [r0, #6]
+ ldr r1, [sp, #0x30]
+ strb r7, [r0, #2]
+ strb r1, [r0, #4]
+ add r1, r4, #0
+ ldr r0, [r4, #0x18]
+ add r1, #0x1c
+ bl FUN_02019150
+ add r1, r5, #0
+ mov r0, #0xc0
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x1c
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ add r1, r5, #0
+ str r1, [sp]
+ ldr r0, _021D804C ; =0x000F0200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x1c
+ add r3, r1, #0
+ bl FUN_0201BDE0
+_021D7FCC:
+ ldr r0, [r4, #0x5c]
+ bl FUN_02021A20
+ mov r0, #1
+ str r0, [r4, #0x54]
+ b _021D803C
+_021D7FD8:
+ add r0, #0x1c
+ bl FUN_020191D0
+ mov r0, #2
+ str r0, [r4, #0x54]
+ b _021D803C
+_021D7FE4:
+ add r1, r5, #0
+ add r2, r5, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D803C
+ mov r0, #3
+ str r0, [r4, #0x54]
+ b _021D803C
+_021D7FF6:
+ ldr r0, _021D8050 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ and r0, r1
+ cmp r0, #1
+ beq _021D800A
+ mov r0, #2
+ and r0, r1
+ cmp r0, #2
+ bne _021D803C
+_021D800A:
+ ldr r0, _021D8054 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #4
+ str r0, [r4, #0x54]
+ b _021D803C
+_021D8016:
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D803C
+ mov r0, #5
+ str r0, [r4, #0x54]
+ b _021D803C
+_021D8028:
+ add r0, #0x1c
+ bl FUN_02019178
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ add r0, r5, #0
+ str r0, [r4, #0x54]
+ mov r5, #1
+_021D803C:
+ add r0, r5, #0
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D8044: .word 0x021D9D90
+_021D8048: .word 0x00010200
+_021D804C: .word 0x000F0200
+_021D8050: .word 0x021C48B8
+_021D8054: .word 0x000005DC
+ thumb_func_end MOD59_021D7ECC
+
+ thumb_func_start MOD59_021D8058
+MOD59_021D8058: ; 0x021D8058
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ add r5, r0, #0
+ str r1, [sp, #8]
+ ldr r0, [r5]
+ mov r3, #3
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x18]
+ mov r0, #0x7d
+ bl FUN_0200687C
+ mov r0, #0
+ ldr r3, [r5]
+ mov r1, #0x20
+ add r2, r0, #0
+ bl FUN_02017F18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ mov r1, #0x17
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x18]
+ mov r0, #0x7d
+ mov r3, #7
+ bl FUN_0200687C
+ ldr r0, _021D80F8 ; =0x020ECAC0
+ ldrb r0, [r0]
+ cmp r0, #0xa
+ bne _021D80A6
+ mov r1, #1
+ mov r4, #0x18
+ b _021D80AA
+_021D80A6:
+ mov r1, #2
+ mov r4, #0x19
+_021D80AA:
+ mov r0, #0x60
+ str r0, [sp]
+ ldr r0, [r5]
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x7d
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r0, #0xa0
+ str r0, [sp]
+ ldr r0, [r5]
+ add r1, r4, #0
+ str r0, [sp, #4]
+ mov r0, #0x7d
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ add r0, r5, #0
+ bl MOD59_021D80FC
+ add r0, r5, #0
+ bl MOD59_021D8140
+ add r0, r5, #0
+ bl MOD59_021D8234
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02017FE4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02017FE4
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_021D80F8: .word 0x020ECAC0
+ thumb_func_end MOD59_021D8058
+
+ thumb_func_start MOD59_021D80FC
+MOD59_021D80FC: ; 0x021D80FC
+ push {r4, r5, lr}
+ sub sp, #0x24
+ ldr r5, _021D813C ; =0x021D9E1C
+ add r3, r0, #0
+ ldmia r5!, {r0, r1}
+ add r4, sp, #0x10
+ add r2, r4, #0
+ stmia r4!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r4]
+ add r0, r3, #0
+ add r0, #0x88
+ ldrb r1, [r0]
+ cmp r1, #5
+ bhs _021D8138
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r3]
+ lsl r1, r1, #2
+ str r0, [sp, #0xc]
+ ldr r1, [r2, r1]
+ ldr r2, [r3, #0x18]
+ mov r0, #0x7d
+ mov r3, #3
+ bl FUN_020068C8
+_021D8138:
+ add sp, #0x24
+ pop {r4, r5, pc}
+ .align 2, 0
+_021D813C: .word 0x021D9E1C
+ thumb_func_end MOD59_021D80FC
+
+ thumb_func_start MOD59_021D8140
+MOD59_021D8140: ; 0x021D8140
+ push {r3, r4, r5, lr}
+ sub sp, #0x68
+ ldr r5, _021D8230 ; =0x021D9F90
+ add r4, r0, #0
+ add r3, sp, #0x10
+ mov r2, #0xb
+_021D814C:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D814C
+ add r0, r4, #0
+ add r0, #0x89
+ ldrb r1, [r0]
+ cmp r1, #0
+ beq _021D81BE
+ cmp r1, #0xc
+ bhs _021D81BE
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ lsl r2, r1, #3
+ str r0, [sp, #0xc]
+ add r1, sp, #0x10
+ ldr r1, [r1, r2]
+ ldr r2, [r4, #0x18]
+ mov r0, #0x7d
+ mov r3, #1
+ bl FUN_0200687C
+ mov r0, #0x20
+ str r0, [sp]
+ ldr r0, [r4]
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r1, #0x89
+ ldrb r1, [r1]
+ mov r0, #0x7d
+ mov r3, #0xe0
+ lsl r2, r1, #3
+ add r1, sp, #0x14
+ ldr r1, [r1, r2]
+ mov r2, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #0x16
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x18]
+ mov r0, #0x7d
+ mov r3, #1
+ bl FUN_020068C8
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #7
+ bl MOD59_021D7C10
+_021D81BE:
+ add r0, r4, #0
+ add r0, #0x8a
+ ldrb r1, [r0]
+ cmp r1, #0
+ beq _021D822A
+ cmp r1, #0xc
+ bhs _021D822A
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ lsl r2, r1, #3
+ str r0, [sp, #0xc]
+ add r1, sp, #0x10
+ ldr r1, [r1, r2]
+ ldr r2, [r4, #0x18]
+ mov r0, #0x7d
+ mov r3, #2
+ bl FUN_0200687C
+ mov r0, #0x20
+ str r0, [sp]
+ ldr r0, [r4]
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r1, #0x8a
+ ldrb r1, [r1]
+ mov r0, #0x7d
+ add r3, r0, #0
+ lsl r2, r1, #3
+ add r1, sp, #0x14
+ ldr r1, [r1, r2]
+ mov r2, #0
+ add r3, #0x83
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #0x16
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x18]
+ mov r0, #0x7d
+ mov r3, #2
+ bl FUN_020068C8
+ add r0, r4, #0
+ mov r1, #2
+ mov r2, #8
+ bl MOD59_021D7C10
+_021D822A:
+ add sp, #0x68
+ pop {r3, r4, r5, pc}
+ nop
+_021D8230: .word 0x021D9F90
+ thumb_func_end MOD59_021D8140
+
+ thumb_func_start MOD59_021D8234
+MOD59_021D8234: ; 0x021D8234
+ push {r4, r5, lr}
+ sub sp, #0x24
+ ldr r5, _021D829C ; =0x021D9E30
+ add r4, r0, #0
+ ldmia r5!, {r0, r1}
+ add r3, sp, #0x10
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ add r0, r4, #0
+ add r0, #0x8b
+ ldrb r1, [r0]
+ cmp r1, #5
+ bhs _021D8296
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ lsl r1, r1, #2
+ str r0, [sp, #0xc]
+ ldr r1, [r2, r1]
+ ldr r2, [r4, #0x18]
+ mov r0, #0x7d
+ mov r3, #7
+ bl FUN_020068C8
+ add r0, r4, #0
+ add r0, #0x8b
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021D8288
+ add r0, r4, #0
+ mov r1, #7
+ mov r2, #3
+ bl MOD59_021D7C10
+ add sp, #0x24
+ pop {r4, r5, pc}
+_021D8288:
+ cmp r0, #2
+ bne _021D8296
+ add r0, r4, #0
+ mov r1, #7
+ mov r2, #2
+ bl MOD59_021D7C10
+_021D8296:
+ add sp, #0x24
+ pop {r4, r5, pc}
+ nop
+_021D829C: .word 0x021D9E30
+ thumb_func_end MOD59_021D8234
+
+ thumb_func_start MOD59_021D82A0
+MOD59_021D82A0: ; 0x021D82A0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ add r5, r0, #0
+ ldr r1, _021D83EC ; =0x000001BE
+ str r2, [sp, #8]
+ add r0, sp, #0x10
+ mov r3, #2
+ bl FUN_02068C00
+ ldr r0, [r5]
+ mov r1, #0xc8
+ bl FUN_02016998
+ add r7, r0, #0
+ ldr r2, _021D83F0 ; =0x021D9FE8
+ mov r1, #0
+ add r3, r7, #0
+_021D82C8:
+ ldrb r0, [r2]
+ add r1, r1, #1
+ add r2, r2, #1
+ add r0, r0, #1
+ strh r0, [r3]
+ add r3, r3, #2
+ cmp r1, #0x64
+ blt _021D82C8
+ add r1, sp, #0x10
+ ldrh r0, [r1]
+ ldrh r1, [r1, #2]
+ ldr r2, [r5]
+ bl FUN_0201244C
+ add r1, sp, #0x10
+ add r4, r0, #0
+ ldrh r0, [r1]
+ ldrh r1, [r1, #4]
+ ldr r2, [r5]
+ bl FUN_02012470
+ mov r2, #0
+ add r6, r0, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #9
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x18]
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r3, #0xb
+ str r3, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x18]
+ mov r1, #2
+ add r2, r7, #0
+ bl FUN_02018148
+ add r0, r5, #0
+ mov r1, #2
+ mov r2, #9
+ bl MOD59_021D7C10
+ ldr r3, [r5]
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ mov r0, #1
+ str r0, [sp]
+ mov r3, #0x32
+ ldr r0, [r5, #0x18]
+ mov r1, #2
+ add r2, r4, #0
+ lsl r3, r3, #6
+ bl FUN_02017E14
+ mov r3, #0x20
+ add r2, r3, #0
+ mov r0, #2
+ add r1, r6, #0
+ add r3, #0xe0
+ bl FUN_02017FB4
+ mov r3, #0x12
+ ldr r1, _021D83F4 ; =0x021D9ED8
+ mov r0, #2
+ mov r2, #0x20
+ lsl r3, r3, #4
+ bl FUN_02017FB4
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x18]
+ mov r1, #5
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r0, #7
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x18]
+ mov r1, #5
+ add r2, r7, #0
+ mov r3, #0xb
+ bl FUN_02018148
+ add r0, r5, #0
+ mov r1, #5
+ mov r2, #0xa
+ bl MOD59_021D7C10
+ ldr r3, [r5]
+ mov r0, #5
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ mov r0, #1
+ str r0, [sp]
+ mov r3, #0x32
+ ldr r0, [r5, #0x18]
+ mov r1, #5
+ add r2, r4, #0
+ lsl r3, r3, #6
+ bl FUN_02017E14
+ mov r0, #5
+ add r1, r6, #0
+ mov r2, #0x20
+ lsl r3, r0, #6
+ bl FUN_02017FB4
+ mov r0, #5
+ ldr r1, _021D83F4 ; =0x021D9ED8
+ mov r2, #0x20
+ lsl r3, r0, #6
+ bl FUN_02017FB4
+ add r0, r6, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r7, #0
+ bl FUN_02016A18
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D83EC: .word 0x000001BE
+_021D83F0: .word 0x021D9FE8
+_021D83F4: .word 0x021D9ED8
+ thumb_func_end MOD59_021D82A0
+
+ thumb_func_start MOD59_021D83F8
+MOD59_021D83F8: ; 0x021D83F8
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #0x26
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x18]
+ mov r0, #0x7d
+ mov r3, #6
+ bl FUN_020068C8
+ add r0, r4, #0
+ mov r1, #6
+ mov r2, #9
+ bl MOD59_021D7C10
+ mov r0, #0x60
+ str r0, [sp]
+ ldr r0, [r4]
+ mov r1, #0x27
+ str r0, [sp, #4]
+ mov r0, #0x7d
+ mov r2, #4
+ mov r3, #0xe0
+ bl FUN_02006930
+ ldr r3, [r4]
+ mov r0, #6
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #0x1e
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x18]
+ mov r0, #0x7d
+ mov r3, #6
+ bl FUN_0200687C
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD59_021D83F8
+
+ thumb_func_start MOD59_021D8460
+MOD59_021D8460: ; 0x021D8460
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r6, #0
+ cmp r2, #0
+ bne _021D849C
+ ldr r0, [r5, #0x18]
+ bl FUN_02017B48
+ cmp r0, #0
+ beq _021D8498
+ cmp r0, #0
+ ldr r0, [r5, #0x18]
+ ble _021D848A
+ lsl r1, r4, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #2
+ mov r3, #4
+ bl FUN_020179E0
+ b _021D84E2
+_021D848A:
+ lsl r1, r4, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #1
+ mov r3, #4
+ bl FUN_020179E0
+ b _021D84E2
+_021D8498:
+ mov r6, #1
+ b _021D84E2
+_021D849C:
+ cmp r2, #1
+ bne _021D84C2
+ ldr r0, [r5, #0x18]
+ bl FUN_02017B48
+ add r1, r6, #0
+ sub r1, #0x30
+ cmp r0, r1
+ beq _021D84BE
+ lsl r1, r4, #0x18
+ ldr r0, [r5, #0x18]
+ lsr r1, r1, #0x18
+ mov r2, #2
+ mov r3, #4
+ bl FUN_020179E0
+ b _021D84E2
+_021D84BE:
+ mov r6, #1
+ b _021D84E2
+_021D84C2:
+ cmp r2, #2
+ bne _021D84E2
+ ldr r0, [r5, #0x18]
+ bl FUN_02017B48
+ cmp r0, #0
+ beq _021D84E0
+ lsl r1, r4, #0x18
+ ldr r0, [r5, #0x18]
+ lsr r1, r1, #0x18
+ mov r2, #1
+ mov r3, #4
+ bl FUN_020179E0
+ b _021D84E2
+_021D84E0:
+ mov r6, #1
+_021D84E2:
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD59_021D8460
+
+ thumb_func_start MOD59_021D84E8
+MOD59_021D84E8: ; 0x021D84E8
+ add r1, r0, #0
+ mov r2, #0
+ add r1, #0x8c
+ strb r2, [r1]
+ add r1, r0, #0
+ add r1, #0x8d
+ strb r2, [r1]
+ add r1, r0, #0
+ add r1, #0x8e
+ strb r2, [r1]
+ add r0, #0x8f
+ strb r2, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD59_021D84E8
+
+ thumb_func_start MOD59_021D8504
+MOD59_021D8504: ; 0x021D8504
+ push {r3, r4, r5, lr}
+ sub sp, #0x30
+ add r4, r0, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D858E
+ add r0, r4, #0
+ add r0, #0x8d
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _021D8526
+ add r0, r4, #0
+ add r0, #0x8d
+ ldrb r0, [r0]
+ sub r1, r0, #1
+ b _021D8546
+_021D8526:
+ add r0, r4, #0
+ add r0, #0x8c
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x8c
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x8c
+ ldrb r1, [r0]
+ mov r0, #3
+ and r1, r0
+ add r0, r4, #0
+ add r0, #0x8c
+ strb r1, [r0]
+ mov r1, #4
+_021D8546:
+ add r0, r4, #0
+ add r0, #0x8d
+ strb r1, [r0]
+ mov r0, #0xa
+ str r0, [sp]
+ ldr r0, _021D860C ; =0x04000050
+ mov r1, #4
+ mov r2, #8
+ mov r3, #6
+ bl G2x_SetBlendAlpha_
+ ldr r5, _021D8610 ; =0x021D9DEC
+ add r3, sp, #0x20
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ add r1, r4, #0
+ str r0, [sp, #0xc]
+ add r1, #0x8c
+ ldrb r1, [r1]
+ mov r0, #0x7d
+ mov r3, #1
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ ldr r2, [r4, #0x18]
+ bl FUN_0200687C
+ add sp, #0x30
+ pop {r3, r4, r5, pc}
+_021D858E:
+ add r0, r4, #0
+ add r0, #0x8f
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _021D85A2
+ add r0, r4, #0
+ add r0, #0x8f
+ ldrb r0, [r0]
+ sub r1, r0, #1
+ b _021D85C2
+_021D85A2:
+ add r0, r4, #0
+ add r0, #0x8e
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x8e
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x8e
+ ldrb r1, [r0]
+ mov r0, #3
+ and r1, r0
+ add r0, r4, #0
+ add r0, #0x8e
+ strb r1, [r0]
+ mov r1, #4
+_021D85C2:
+ add r0, r4, #0
+ add r0, #0x8f
+ strb r1, [r0]
+ mov r0, #0xa
+ str r0, [sp]
+ ldr r0, _021D860C ; =0x04000050
+ mov r1, #2
+ mov r2, #8
+ mov r3, #6
+ bl G2x_SetBlendAlpha_
+ ldr r5, _021D8614 ; =0x021D9DFC
+ add r3, sp, #0x10
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ add r1, r4, #0
+ str r0, [sp, #0xc]
+ add r1, #0x8e
+ ldrb r1, [r1]
+ mov r0, #0x7d
+ mov r3, #2
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ ldr r2, [r4, #0x18]
+ bl FUN_0200687C
+ add sp, #0x30
+ pop {r3, r4, r5, pc}
+ nop
+_021D860C: .word 0x04000050
+_021D8610: .word 0x021D9DEC
+_021D8614: .word 0x021D9DFC
+ thumb_func_end MOD59_021D8504
+
+ thumb_func_start MOD59_021D8618
+MOD59_021D8618: ; 0x021D8618
+ ldr r0, _021D8620 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ bx lr
+ .align 2, 0
+_021D8620: .word 0x04000050
+ thumb_func_end MOD59_021D8618
+
+ thumb_func_start MOD59_021D8624
+MOD59_021D8624: ; 0x021D8624
+ add r1, r0, #0
+ mov r2, #0
+ add r1, #0x94
+ str r2, [r1]
+ add r0, #0x98
+ str r2, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD59_021D8624
+
+ thumb_func_start MOD59_021D8634
+MOD59_021D8634: ; 0x021D8634
+ push {r4, r5, r6, lr}
+ sub sp, #0x40
+ add r3, r0, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ mov r4, #0
+ cmp r0, #0
+ beq _021D864E
+ add r0, r3, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ sub r1, r0, #1
+ b _021D865E
+_021D864E:
+ add r0, r3, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r3, #0
+ add r0, #0x94
+ str r1, [r0]
+ mov r1, #8
+_021D865E:
+ add r0, r3, #0
+ add r0, #0x98
+ str r1, [r0]
+ add r0, r3, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D8674
+ ldr r6, _021D86B4 ; =0x021D9E88
+ add r5, sp, #0x28
+ b _021D8678
+_021D8674:
+ ldr r6, _021D86B8 ; =0x021D9E70
+ add r5, sp, #0x10
+_021D8678:
+ add r2, r5, #0
+ ldmia r6!, {r0, r1}
+ stmia r5!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r5!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r5!, {r0, r1}
+ add r0, r3, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ lsl r0, r0, #2
+ ldr r1, [r2, r0]
+ cmp r1, #0xff
+ bne _021D8698
+ mov r4, #1
+ b _021D86AE
+_021D8698:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r3]
+ str r0, [sp, #0xc]
+ ldr r2, [r3, #0x18]
+ mov r0, #0x7d
+ mov r3, #1
+ bl FUN_0200687C
+_021D86AE:
+ add r0, r4, #0
+ add sp, #0x40
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D86B4: .word 0x021D9E88
+_021D86B8: .word 0x021D9E70
+ thumb_func_end MOD59_021D8634
+
+ thumb_func_start MOD59_021D86BC
+MOD59_021D86BC: ; 0x021D86BC
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r4, r0, #0
+ ldr r0, [r6]
+ mov r7, #0
+ cmp r0, #5
+ bls _021D86CC
+ b _021D890A
+_021D86CC:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D86D8: ; jump table
+ .short _021D86E4 - _021D86D8 - 2 ; case 0
+ .short _021D8728 - _021D86D8 - 2 ; case 1
+ .short _021D87A6 - _021D86D8 - 2 ; case 2
+ .short _021D87E0 - _021D86D8 - 2 ; case 3
+ .short _021D887C - _021D86D8 - 2 ; case 4
+ .short _021D88F8 - _021D86D8 - 2 ; case 5
+_021D86E4:
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ add r2, r7, #0
+ add r3, r7, #0
+ bl FUN_020179E0
+ mov r2, #3
+ add r3, r2, #0
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ sub r3, #0x6b
+ bl FUN_020179E0
+ mov r0, #2
+ add r1, r7, #0
+ bl FUN_020178BC
+ mov r0, #5
+ mov r1, #1
+ bl FUN_0201797C
+ add r0, r4, #0
+ add r2, r7, #0
+ add r0, #0xa8
+ str r2, [r0]
+ add r0, r4, #0
+ mov r1, #8
+ add r0, #0xac
+ str r1, [r0]
+ add r4, #0xb0
+ str r2, [r4]
+ mov r0, #1
+ str r0, [r6]
+ b _021D890A
+_021D8728:
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_02017B48
+ ldr r0, [r4, #0x18]
+ mov r1, #5
+ bl FUN_02017B54
+ add r1, r4, #0
+ add r1, #0xb0
+ ldr r3, [r1]
+ add r1, r4, #0
+ add r1, #0xac
+ ldr r2, [r1]
+ lsl r1, r2, #3
+ add r1, r2, r1
+ add r2, r3, #0
+ mul r2, r1
+ lsl r1, r3, #3
+ add r1, r3, r1
+ mul r1, r3
+ lsr r3, r1, #0x1f
+ add r3, r1, r3
+ asr r1, r3, #1
+ sub r5, r2, r1
+ cmp r0, #0x58
+ bge _021D8792
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ mov r2, #1
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xb0
+ str r1, [r0]
+ mov r1, #2
+ ldr r0, [r4, #0x18]
+ add r3, r1, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #0x18]
+ mov r1, #5
+ mov r2, #1
+ mov r3, #2
+ bl FUN_020179E0
+ ldr r0, [r4, #0x18]
+ mov r1, #5
+ mov r2, #3
+ add r3, r5, #0
+ bl FUN_020179E0
+ b _021D890A
+_021D8792:
+ mov r0, #5
+ add r1, r7, #0
+ bl FUN_0201797C
+ mov r0, #0x1e
+ add r4, #0xb0
+ str r0, [r4]
+ mov r0, #2
+ str r0, [r6]
+ b _021D890A
+_021D87A6:
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D87BE
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ add r4, #0xb0
+ sub r0, r0, #1
+ str r0, [r4]
+ b _021D890A
+_021D87BE:
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201797C
+ add r0, r4, #0
+ add r2, r7, #0
+ add r0, #0xa8
+ str r2, [r0]
+ add r0, r4, #0
+ mov r1, #9
+ add r0, #0xac
+ str r1, [r0]
+ add r4, #0xb0
+ str r2, [r4]
+ mov r0, #3
+ str r0, [r6]
+ b _021D890A
+_021D87E0:
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_02017B48
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_02017B54
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r1, [r0]
+ add r0, r4, #0
+ add r0, #0xac
+ ldr r2, [r0]
+ lsl r0, r2, #3
+ add r0, r2, r0
+ lsl r2, r1, #3
+ add r2, r1, r2
+ mul r0, r1
+ mul r2, r1
+ lsr r1, r2, #0x1f
+ add r1, r2, r1
+ sub r0, #0x68
+ asr r1, r1, #1
+ sub r5, r0, r1
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021D8846
+ cmp r5, #0
+ bgt _021D8846
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ mov r2, #3
+ add r3, r7, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ add r2, r7, #0
+ add r0, #0xa8
+ str r2, [r0]
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0xac
+ str r1, [r0]
+ add r4, #0xb0
+ str r2, [r4]
+ mov r0, #4
+ str r0, [r6]
+ b _021D890A
+_021D8846:
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ mov r2, #1
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xb0
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xa8
+ str r5, [r0]
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_020179E0
+ asr r5, r5, #1
+ cmp r5, #0x90
+ ble _021D886E
+ mov r5, #0x90
+_021D886E:
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ mov r2, #3
+ add r3, r5, #0
+ bl FUN_020179E0
+ b _021D890A
+_021D887C:
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_02017B48
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_02017B54
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r1, [r0]
+ add r0, r4, #0
+ add r0, #0xac
+ ldr r2, [r0]
+ lsl r0, r2, #3
+ add r0, r2, r0
+ lsl r2, r1, #3
+ add r2, r1, r2
+ mul r2, r1
+ mul r0, r1
+ lsr r1, r2, #0x1f
+ add r1, r2, r1
+ asr r1, r1, #1
+ sub r5, r0, r1
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021D88CC
+ cmp r5, #0
+ bgt _021D88CC
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ mov r2, #3
+ add r3, r7, #0
+ bl FUN_020179E0
+ mov r0, #5
+ str r0, [r6]
+ b _021D890A
+_021D88CC:
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ mov r2, #1
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xb0
+ str r1, [r0]
+ mov r1, #2
+ ldr r0, [r4, #0x18]
+ add r3, r1, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ mov r2, #3
+ add r3, r5, #0
+ bl FUN_020179E0
+ add r4, #0xa8
+ str r5, [r4]
+ b _021D890A
+_021D88F8:
+ ldr r0, _021D8910 ; =0x000001BE
+ bl FUN_02005578
+ add r0, r4, #0
+ mov r1, #2
+ mov r2, #8
+ bl MOD59_021D7C10
+ mov r7, #1
+_021D890A:
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8910: .word 0x000001BE
+ thumb_func_end MOD59_021D86BC
+
+ thumb_func_start MOD59_021D8914
+MOD59_021D8914: ; 0x021D8914
+ ldr r3, _021D891C ; =0x020178BD
+ mov r0, #2
+ mov r1, #1
+ bx r3
+ .align 2, 0
+_021D891C: .word 0x020178BD
+ thumb_func_end MOD59_021D8914
+
+ thumb_func_start MOD59_021D8920
+MOD59_021D8920: ; 0x021D8920
+ push {r4, r5, r6, lr}
+ sub sp, #0x30
+ add r4, r0, #0
+ ldr r1, [r4, #0xc]
+ mov r5, #0
+ cmp r1, #0x6d
+ bls _021D8932
+ bl _021D985C
+_021D8932:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D893E: ; jump table
+ .short _021D8A1A - _021D893E - 2 ; case 0
+ .short _021D8A5A - _021D893E - 2 ; case 1
+ .short _021D8A76 - _021D893E - 2 ; case 2
+ .short _021D8A92 - _021D893E - 2 ; case 3
+ .short _021D8ADE - _021D893E - 2 ; case 4
+ .short _021D8AEE - _021D893E - 2 ; case 5
+ .short _021D8B02 - _021D893E - 2 ; case 6
+ .short _021D8B16 - _021D893E - 2 ; case 7
+ .short _021D8B60 - _021D893E - 2 ; case 8
+ .short _021D8B80 - _021D893E - 2 ; case 9
+ .short _021D8BA0 - _021D893E - 2 ; case 10
+ .short _021D8BD8 - _021D893E - 2 ; case 11
+ .short _021D8BE8 - _021D893E - 2 ; case 12
+ .short _021D8C02 - _021D893E - 2 ; case 13
+ .short _021D8C16 - _021D893E - 2 ; case 14
+ .short _021D8C30 - _021D893E - 2 ; case 15
+ .short _021D8C44 - _021D893E - 2 ; case 16
+ .short _021D8C5E - _021D893E - 2 ; case 17
+ .short _021D8C72 - _021D893E - 2 ; case 18
+ .short _021D8C98 - _021D893E - 2 ; case 19
+ .short _021D8CA8 - _021D893E - 2 ; case 20
+ .short _021D8CBC - _021D893E - 2 ; case 21
+ .short _021D8CF8 - _021D893E - 2 ; case 22
+ .short _021D8D1C - _021D893E - 2 ; case 23
+ .short _021D8D3E - _021D893E - 2 ; case 24
+ .short _021D8D7C - _021D893E - 2 ; case 25
+ .short _021D8D94 - _021D893E - 2 ; case 26
+ .short _021D8DD6 - _021D893E - 2 ; case 27
+ .short _021D8DEA - _021D893E - 2 ; case 28
+ .short _021D8E34 - _021D893E - 2 ; case 29
+ .short _021D8E44 - _021D893E - 2 ; case 30
+ .short _021D8E58 - _021D893E - 2 ; case 31
+ .short _021D8E90 - _021D893E - 2 ; case 32
+ .short _021D8EA0 - _021D893E - 2 ; case 33
+ .short _021D8EBE - _021D893E - 2 ; case 34
+ .short _021D8ED6 - _021D893E - 2 ; case 35
+ .short _021D8EF0 - _021D893E - 2 ; case 36
+ .short _021D8F0A - _021D893E - 2 ; case 37
+ .short _021D8F24 - _021D893E - 2 ; case 38
+ .short _021D8F3E - _021D893E - 2 ; case 39
+ .short _021D8F5E - _021D893E - 2 ; case 40
+ .short _021D8F7E - _021D893E - 2 ; case 41
+ .short _021D8F92 - _021D893E - 2 ; case 42
+ .short _021D8FA6 - _021D893E - 2 ; case 43
+ .short _021D8FC6 - _021D893E - 2 ; case 44
+ .short _021D900C - _021D893E - 2 ; case 45
+ .short _021D901C - _021D893E - 2 ; case 46
+ .short _021D9030 - _021D893E - 2 ; case 47
+ .short _021D9062 - _021D893E - 2 ; case 48
+ .short _021D90CE - _021D893E - 2 ; case 49
+ .short _021D90E2 - _021D893E - 2 ; case 50
+ .short _021D9106 - _021D893E - 2 ; case 51
+ .short _021D913E - _021D893E - 2 ; case 52
+ .short _021D9178 - _021D893E - 2 ; case 53
+ .short _021D9192 - _021D893E - 2 ; case 54
+ .short _021D91E4 - _021D893E - 2 ; case 55
+ .short _021D9208 - _021D893E - 2 ; case 56
+ .short _021D921A - _021D893E - 2 ; case 57
+ .short _021D922A - _021D893E - 2 ; case 58
+ .short _021D9244 - _021D893E - 2 ; case 59
+ .short _021D925C - _021D893E - 2 ; case 60
+ .short _021D926C - _021D893E - 2 ; case 61
+ .short _021D927E - _021D893E - 2 ; case 62
+ .short _021D9290 - _021D893E - 2 ; case 63
+ .short _021D92CA - _021D893E - 2 ; case 64
+ .short _021D92DC - _021D893E - 2 ; case 65
+ .short _021D92EE - _021D893E - 2 ; case 66
+ .short _021D930A - _021D893E - 2 ; case 67
+ .short _021D9384 - _021D893E - 2 ; case 68
+ .short _021D9396 - _021D893E - 2 ; case 69
+ .short _021D93AE - _021D893E - 2 ; case 70
+ .short _021D93C0 - _021D893E - 2 ; case 71
+ .short _021D93D8 - _021D893E - 2 ; case 72
+ .short _021D93F8 - _021D893E - 2 ; case 73
+ .short _021D942A - _021D893E - 2 ; case 74
+ .short _021D944A - _021D893E - 2 ; case 75
+ .short _021D945C - _021D893E - 2 ; case 76
+ .short _021D9476 - _021D893E - 2 ; case 77
+ .short _021D94DE - _021D893E - 2 ; case 78
+ .short _021D94EC - _021D893E - 2 ; case 79
+ .short _021D950C - _021D893E - 2 ; case 80
+ .short _021D954E - _021D893E - 2 ; case 81
+ .short _021D956E - _021D893E - 2 ; case 82
+ .short _021D9586 - _021D893E - 2 ; case 83
+ .short _021D9598 - _021D893E - 2 ; case 84
+ .short _021D95AA - _021D893E - 2 ; case 85
+ .short _021D95BC - _021D893E - 2 ; case 86
+ .short _021D95D4 - _021D893E - 2 ; case 87
+ .short _021D95E6 - _021D893E - 2 ; case 88
+ .short _021D95F8 - _021D893E - 2 ; case 89
+ .short _021D960A - _021D893E - 2 ; case 90
+ .short _021D9672 - _021D893E - 2 ; case 91
+ .short _021D9684 - _021D893E - 2 ; case 92
+ .short _021D9696 - _021D893E - 2 ; case 93
+ .short _021D96DE - _021D893E - 2 ; case 94
+ .short _021D96EC - _021D893E - 2 ; case 95
+ .short _021D96FE - _021D893E - 2 ; case 96
+ .short _021D9738 - _021D893E - 2 ; case 97
+ .short _021D974C - _021D893E - 2 ; case 98
+ .short _021D9764 - _021D893E - 2 ; case 99
+ .short _021D9788 - _021D893E - 2 ; case 100
+ .short _021D9798 - _021D893E - 2 ; case 101
+ .short _021D97B2 - _021D893E - 2 ; case 102
+ .short _021D97CC - _021D893E - 2 ; case 103
+ .short _021D97DC - _021D893E - 2 ; case 104
+ .short _021D9812 - _021D893E - 2 ; case 105
+ .short _021D982A - _021D893E - 2 ; case 106
+ .short _021D983A - _021D893E - 2 ; case 107
+ .short _021D9848 - _021D893E - 2 ; case 108
+ .short _021D985A - _021D893E - 2 ; case 109
+_021D8A1A:
+ ldr r1, _021D8D70 ; =0x00000405
+ mov r0, #2
+ mov r2, #1
+ bl FUN_0200433C
+ ldr r0, _021D8D70 ; =0x00000405
+ add r1, r5, #0
+ bl FUN_02005350
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #7
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #1
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8A5A:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D8B22
+ add r0, r4, #0
+ mov r1, #0x28
+ bl MOD59_021D7BEC
+ cmp r0, #1
+ bne _021D8B22
+ mov r0, #2
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8A76:
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D8B22
+ mov r0, #3
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ bl _021D985C
+_021D8A92:
+ ldr r0, _021D8D70 ; =0x00000405
+ bl FUN_0200521C
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x89
+ strb r1, [r0]
+ add r0, r4, #0
+ add r1, r5, #0
+ add r0, #0x8a
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8140
+ mov r0, #3
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201797C
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ mov r1, #1
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r5, #0
+ bl FUN_0200E1D0
+ mov r0, #4
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8ADE:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D8B22
+ mov r0, #5
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8AEE:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D8B22
+ mov r0, #6
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8B02:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D8460
+ cmp r0, #1
+ bne _021D8B22
+ mov r0, #7
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8B16:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D7D7C
+ cmp r0, #1
+ beq _021D8B26
+_021D8B22:
+ bl _021D985C
+_021D8B26:
+ ldr r0, [r4, #0x48]
+ cmp r0, #1
+ beq _021D8B38
+ cmp r0, #2
+ beq _021D8B44
+ cmp r0, #3
+ beq _021D8B58
+ bl _021D985C
+_021D8B38:
+ mov r0, #0xa
+ str r0, [r4, #0x10]
+ mov r0, #8
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8B44:
+ mov r0, #0x1f
+ str r0, [r4, #0x10]
+ mov r0, #8
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ bl _021D985C
+_021D8B58:
+ mov r0, #0x29
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8B60:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, r5, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r2, r5, #0
+ add r3, r5, #0
+ bl FUN_0200E1D0
+ mov r0, #9
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8B80:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D8C84
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ mov r0, #1
+ add r1, r5, #0
+ bl FUN_0201797C
+ ldr r0, [r4, #0x10]
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8BA0:
+ add r1, r4, #0
+ mov r2, #1
+ add r1, #0x88
+ strb r2, [r1]
+ bl MOD59_021D80FC
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x8b
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8234
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #0xb
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8BD8:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D8C84
+ mov r0, #0xc
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8BE8:
+ mov r1, #0x12
+ str r1, [sp]
+ mov r1, #2
+ add r2, r5, #0
+ mov r3, #3
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ bne _021D8C84
+ mov r0, #0xd
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8C02:
+ add r1, r4, #0
+ mov r2, #2
+ add r1, #0x88
+ strb r2, [r1]
+ bl MOD59_021D80FC
+ mov r0, #0xe
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8C16:
+ mov r1, #0xc
+ str r1, [sp]
+ mov r1, #3
+ add r2, r5, #0
+ mov r3, #7
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ bne _021D8C84
+ mov r0, #0xf
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8C30:
+ add r1, r4, #0
+ mov r2, #3
+ add r1, #0x88
+ strb r2, [r1]
+ bl MOD59_021D80FC
+ mov r0, #0x10
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8C44:
+ mov r1, #0xc
+ str r1, [sp]
+ mov r1, #4
+ add r2, r5, #0
+ add r3, r1, #0
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ bne _021D8C84
+ mov r0, #0x11
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8C5E:
+ mov r1, #6
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D8C84
+ mov r0, #0x12
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8C72:
+ mov r1, #0xa
+ str r1, [sp]
+ mov r1, #5
+ add r2, r5, #0
+ mov r3, #4
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ beq _021D8C88
+_021D8C84:
+ bl _021D985C
+_021D8C88:
+ mov r0, #0x13
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ bl _021D985C
+_021D8C98:
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #0x14
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8CA8:
+ mov r1, #7
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D8DA0
+ mov r0, #0x15
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8CBC:
+ ldr r6, _021D8D74 ; =0x021D9E44
+ add r3, sp, #0x1c
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ add r1, r2, #0
+ str r0, [r3]
+ ldr r0, [r4, #0x18]
+ str r0, [sp, #0x1c]
+ ldr r0, [r4, #0x68]
+ bl FUN_020145C8
+ mov r0, #6
+ mov r1, #1
+ bl FUN_0201797C
+ add r0, r4, #0
+ mov r1, #3
+ add r0, #0x8b
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8234
+ mov r0, #0x16
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8CF8:
+ ldr r0, _021D8D78 ; =0x021C48B8
+ ldr r0, [r0, #0x48]
+ cmp r0, #0
+ beq _021D8D08
+ mov r0, #0x1b
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8D08:
+ ldr r0, [r4, #0x68]
+ bl FUN_02014630
+ sub r0, r0, #3
+ cmp r0, #1
+ bhi _021D8DA0
+ mov r0, #0x17
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8D1C:
+ ldr r0, [r4, #0x68]
+ bl FUN_02014630
+ cmp r0, #1
+ beq _021D8D2E
+ cmp r0, #2
+ beq _021D8D36
+ bl _021D985C
+_021D8D2E:
+ mov r0, #0x18
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8D36:
+ mov r0, #0x1a
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8D3E:
+ mov r1, #6
+ mov r2, #1
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D8DA0
+ ldr r0, [r4, #0x68]
+ bl FUN_020146C4
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #0x19
+ str r0, [r4, #0xc]
+ bl _021D985C
+ .align 2, 0
+_021D8D70: .word 0x00000405
+_021D8D74: .word 0x021D9E44
+_021D8D78: .word 0x021C48B8
+_021D8D7C:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D8DA0
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ mov r0, #0x1c
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8D94:
+ mov r1, #6
+ mov r2, #1
+ bl MOD59_021D7A68
+ cmp r0, #1
+ beq _021D8DA4
+_021D8DA0:
+ bl _021D985C
+_021D8DA4:
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ ldr r0, [r4, #0x68]
+ bl FUN_020146C4
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x88
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D80FC
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x8b
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8234
+ mov r0, #0xc
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8DD6:
+ mov r1, #8
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D8EB2
+ mov r0, #0x16
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8DEA:
+ add r1, r4, #0
+ add r1, #0x88
+ strb r5, [r1]
+ bl MOD59_021D80FC
+ add r0, r4, #0
+ add r1, r5, #0
+ add r0, #0x8b
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8234
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201797C
+ add r2, r5, #0
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_020179E0
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #0x1d
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8E34:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D8EB2
+ mov r0, #0x1e
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8E44:
+ mov r1, #9
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D8EB2
+ mov r0, #6
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8E58:
+ add r1, r4, #0
+ mov r2, #4
+ add r1, #0x88
+ strb r2, [r1]
+ bl MOD59_021D80FC
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0x8b
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8234
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #0x20
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8E90:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D8EB2
+ mov r0, #0x21
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8EA0:
+ mov r1, #6
+ str r1, [sp]
+ mov r1, #0xa
+ mov r2, #1
+ mov r3, #9
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ beq _021D8EB6
+_021D8EB2:
+ bl _021D985C
+_021D8EB6:
+ mov r0, #0x22
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8EBE:
+ mov r3, #8
+ mov r1, #0xb
+ mov r2, #1
+ str r3, [sp]
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ bne _021D8FCE
+ mov r0, #0x23
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8ED6:
+ mov r1, #6
+ str r1, [sp]
+ mov r1, #0xc
+ mov r2, #1
+ mov r3, #9
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ bne _021D8FCE
+ mov r0, #0x24
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8EF0:
+ mov r1, #0xe
+ str r1, [sp]
+ mov r1, #0xd
+ mov r2, #1
+ mov r3, #5
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ bne _021D8FCE
+ mov r0, #0x25
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8F0A:
+ mov r1, #4
+ str r1, [sp]
+ mov r1, #0xe
+ mov r2, #1
+ mov r3, #0xa
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ bne _021D8FCE
+ mov r0, #0x26
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8F24:
+ mov r1, #0xc
+ str r1, [sp]
+ mov r1, #0xf
+ mov r2, #1
+ mov r3, #6
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ bne _021D8FCE
+ mov r0, #0x27
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8F3E:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, r5, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r2, r5, #0
+ add r3, r5, #0
+ bl FUN_0200E1D0
+ mov r0, #0x28
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8F5E:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D8FCE
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #0x1c
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8F7E:
+ mov r1, #1
+ mov r2, #2
+ bl MOD59_021D8460
+ cmp r0, #1
+ bne _021D8FCE
+ mov r0, #0x2a
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8F92:
+ mov r1, #0x10
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D8FCE
+ mov r0, #0x2b
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8FA6:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, r5, #0
+ str r0, [sp, #8]
+ mov r0, #4
+ add r2, r5, #0
+ add r3, r5, #0
+ bl FUN_0200E1D0
+ mov r0, #0x2c
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8FC6:
+ bl FUN_0200E308
+ cmp r0, #1
+ beq _021D8FD2
+_021D8FCE:
+ bl _021D985C
+_021D8FD2:
+ add r0, r4, #0
+ bl MOD59_021D83F8
+ add r0, r4, #0
+ mov r1, #4
+ add r0, #0x8b
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8234
+ mov r0, #6
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ mov r0, #4
+ add r3, r5, #0
+ bl FUN_0200E1D0
+ mov r0, #0x2d
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D900C:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D90DA
+ mov r0, #0x2e
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D901C:
+ mov r1, #0x11
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D90DA
+ mov r0, #0x2f
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D9030:
+ bl MOD59_021D7730
+ cmp r0, #1
+ bne _021D9054
+ add r0, r4, #0
+ add r1, r5, #0
+ add r0, #0x94
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x98
+ str r1, [r0]
+ ldr r0, [r4, #0x18]
+ bl FUN_02018744
+ mov r0, #0x30
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D9054:
+ ldr r0, _021D9370 ; =0x021C48B8
+ ldr r0, [r0, #0x48]
+ cmp r0, #0
+ beq _021D90DA
+ mov r0, #0x31
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9062:
+ add r0, #0x98
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D9078
+ add r0, r4, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ add r4, #0x98
+ sub r0, r0, #1
+ str r0, [r4]
+ b _021D985C
+_021D9078:
+ ldr r6, _021D9374 ; =0x021D9DC0
+ add r3, sp, #0x10
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r3]
+ add r0, r4, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ lsl r0, r0, #2
+ ldr r1, [r2, r0]
+ ldr r0, _021D9378 ; =0x0000FFFF
+ cmp r1, r0
+ bne _021D90A2
+ ldr r0, _021D937C ; =0x00000706
+ bl FUN_020054C8
+ mov r0, #0x32
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D90A2:
+ mov r0, #0x20
+ str r0, [sp]
+ str r5, [sp, #4]
+ str r5, [sp, #8]
+ ldr r0, [r4]
+ mov r3, #6
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x18]
+ mov r0, #0x7d
+ bl FUN_0200687C
+ add r0, r4, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x94
+ str r1, [r0]
+ mov r0, #4
+ add r4, #0x98
+ str r0, [r4]
+ b _021D985C
+_021D90CE:
+ mov r1, #0x12
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ beq _021D90DC
+_021D90DA:
+ b _021D985C
+_021D90DC:
+ mov r0, #0x2f
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D90E2:
+ mov r0, #1
+ mov r1, #0x10
+ add r2, r5, #0
+ mov r3, #0xb
+ str r0, [sp]
+ bl FUN_0200A208
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ mov r1, #0x10
+ add r2, r5, #0
+ mov r3, #0xd
+ bl FUN_0200A208
+ mov r0, #0x33
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9106:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D91F6
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D91F6
+ mov r0, #1
+ add r1, r5, #0
+ mov r2, #0x10
+ mov r3, #0xb
+ str r0, [sp]
+ bl FUN_0200A208
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ add r1, r5, #0
+ mov r2, #0x10
+ mov r3, #0xd
+ bl FUN_0200A208
+ mov r0, #0x34
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D913E:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D91F6
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D91F6
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #4
+ mov r1, #0x10
+ add r2, r5, #0
+ mov r3, #0xb
+ bl FUN_0200A208
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #4
+ mov r1, #0x10
+ add r2, r5, #0
+ mov r3, #0xd
+ bl FUN_0200A208
+ mov r0, #0x35
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9178:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D91F6
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D91F6
+ mov r0, #0x36
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9192:
+ bl MOD59_021D82A0
+ mov r0, #6
+ add r1, r5, #0
+ bl FUN_0201797C
+ add r0, r4, #0
+ add r1, r5, #0
+ add r0, #0x94
+ str r1, [r0]
+ add r1, r4, #0
+ add r0, r4, #0
+ add r1, #0x94
+ bl MOD59_021D86BC
+ add r0, r4, #0
+ add r1, r5, #0
+ add r0, #0x8b
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8234
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x10
+ add r1, r5, #0
+ add r2, r0, #0
+ mov r3, #0xb
+ bl FUN_0200A208
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0x10
+ add r1, r5, #0
+ add r2, r0, #0
+ mov r3, #0xd
+ bl FUN_0200A208
+ mov r0, #0x37
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D91E4:
+ add r1, r4, #0
+ add r1, #0x94
+ bl MOD59_021D86BC
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #1
+ beq _021D91F8
+_021D91F6:
+ b _021D985C
+_021D91F8:
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D92FA
+ mov r0, #0x38
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9208:
+ add r1, r4, #0
+ add r1, #0x94
+ bl MOD59_021D86BC
+ cmp r0, #1
+ bne _021D92FA
+ mov r0, #0x39
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D921A:
+ mov r1, #0x28
+ bl MOD59_021D7BEC
+ cmp r0, #1
+ bne _021D92FA
+ mov r0, #0x3a
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D922A:
+ mov r1, #0x13
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D92FA
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ mov r0, #0x3b
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9244:
+ mov r1, #2
+ mov r2, #1
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D92FA
+ add r0, r4, #0
+ bl MOD59_021D8914
+ mov r0, #0x3c
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D925C:
+ mov r1, #0x1e
+ bl MOD59_021D7BEC
+ cmp r0, #1
+ bne _021D92FA
+ mov r0, #0x3d
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D926C:
+ mov r1, #0x14
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D92FA
+ mov r0, #0x3e
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D927E:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D92FA
+ mov r0, #0x3f
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9290:
+ bl MOD59_021D84E8
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0x89
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #6
+ add r0, #0x8a
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8140
+ add r2, r5, #0
+ add r3, r2, #0
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ sub r3, #0x30
+ bl FUN_020179E0
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ add r2, r5, #0
+ mov r3, #0x30
+ bl FUN_020179E0
+ mov r0, #0x40
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D92CA:
+ mov r1, #1
+ add r2, r5, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D92FA
+ mov r0, #0x41
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D92DC:
+ mov r1, #2
+ add r2, r5, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D92FA
+ mov r0, #0x42
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D92EE:
+ mov r1, #0x15
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ beq _021D92FC
+_021D92FA:
+ b _021D985C
+_021D92FC:
+ add r0, r4, #0
+ add r1, r5, #0
+ add r0, #0x84
+ str r1, [r0]
+ mov r0, #0x43
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D930A:
+ ldr r0, _021D9370 ; =0x021C48B8
+ mov r1, #1
+ ldr r0, [r0, #0x48]
+ and r1, r0
+ cmp r1, #1
+ bne _021D933C
+ mov r0, #6
+ str r0, [r4, #0x7c]
+ add r0, r4, #0
+ mov r1, #0xa
+ add r0, #0x80
+ str r1, [r0]
+ mov r0, #2
+ str r0, [r4, #0x78]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D9336
+ mov r0, #0x44
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9336:
+ mov r0, #0x46
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D933C:
+ mov r1, #0x20
+ and r1, r0
+ cmp r1, #0x20
+ beq _021D934C
+ mov r1, #0x10
+ and r0, r1
+ cmp r0, #0x10
+ bne _021D9368
+_021D934C:
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D935A
+ mov r1, #1
+ b _021D935C
+_021D935A:
+ mov r1, #0
+_021D935C:
+ add r0, r4, #0
+ add r0, #0x84
+ str r1, [r0]
+ ldr r0, _021D9380 ; =0x000005DC
+ bl FUN_020054C8
+_021D9368:
+ add r0, r4, #0
+ bl MOD59_021D8504
+ b _021D985C
+ .align 2, 0
+_021D9370: .word 0x021C48B8
+_021D9374: .word 0x021D9DC0
+_021D9378: .word 0x0000FFFF
+_021D937C: .word 0x00000706
+_021D9380: .word 0x000005DC
+_021D9384:
+ mov r1, #2
+ mov r2, #1
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D9414
+ mov r0, #0x45
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9396:
+ mov r1, #1
+ add r2, r5, #0
+ bl MOD59_021D8460
+ cmp r0, #1
+ bne _021D9414
+ add r0, r4, #0
+ bl MOD59_021D8618
+ mov r0, #0x48
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D93AE:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D9414
+ mov r0, #0x47
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D93C0:
+ mov r1, #2
+ add r2, r5, #0
+ bl MOD59_021D8460
+ cmp r0, #1
+ bne _021D9414
+ add r0, r4, #0
+ bl MOD59_021D8618
+ mov r0, #0x48
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D93D8:
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D93E4
+ mov r1, #0x16
+ b _021D93E6
+_021D93E4:
+ mov r1, #0x17
+_021D93E6:
+ add r0, r4, #0
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D9414
+ mov r0, #0x49
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D93F8:
+ add r1, r5, #0
+ add r2, r5, #0
+ bl MOD59_021D7D7C
+ cmp r0, #1
+ bne _021D9414
+ ldr r1, [r4, #0x48]
+ sub r0, r5, #2
+ cmp r1, r0
+ beq _021D941C
+ cmp r1, #1
+ beq _021D9416
+ cmp r1, #2
+ beq _021D941C
+_021D9414:
+ b _021D985C
+_021D9416:
+ mov r0, #0x4b
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D941C:
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_02018744
+ mov r0, #0x4a
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D942A:
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D9436
+ mov r1, #1
+ b _021D9438
+_021D9436:
+ mov r1, #2
+_021D9438:
+ add r0, r4, #0
+ mov r2, #1
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D9530
+ mov r0, #0x3f
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D944A:
+ mov r1, #0x18
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D9530
+ mov r0, #0x4c
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D945C:
+ add r0, #0x84
+ ldr r1, [r0]
+ ldr r0, [r4, #0x70]
+ str r1, [r0, #4]
+ ldr r0, _021D9778 ; =0x020FA5FC
+ ldr r1, [r4, #0x70]
+ ldr r2, [r4]
+ bl FUN_02006234
+ str r0, [r4, #0x14]
+ mov r0, #0x4d
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9476:
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #3
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #7
+ mov r1, #1
+ bl FUN_0201797C
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D94AE
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201797C
+ add r2, r5, #0
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_020179E0
+ b _021D94C2
+_021D94AE:
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201797C
+ add r2, r5, #0
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_020179E0
+_021D94C2:
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #0x4e
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D94DE:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D9530
+ mov r0, #0x4f
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D94EC:
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D94F8
+ mov r1, #0x19
+ b _021D94FA
+_021D94F8:
+ mov r1, #0x1a
+_021D94FA:
+ add r0, r4, #0
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D9530
+ mov r0, #0x50
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D950C:
+ add r1, r5, #0
+ add r2, r5, #0
+ bl MOD59_021D7D7C
+ cmp r0, #1
+ bne _021D9530
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ ldr r1, [r4, #0x48]
+ sub r0, r5, #2
+ cmp r1, r0
+ beq _021D953C
+ cmp r1, #1
+ beq _021D9532
+ cmp r1, #2
+ beq _021D953C
+_021D9530:
+ b _021D985C
+_021D9532:
+ mov r0, #0x52
+ str r0, [r4, #0x10]
+ mov r0, #0x51
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D953C:
+ ldr r0, [r4, #0x70]
+ ldr r0, [r0, #0x18]
+ bl FUN_02021A4C
+ mov r0, #0x3f
+ str r0, [r4, #0x10]
+ mov r0, #0x51
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D954E:
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D955A
+ mov r1, #1
+ b _021D955C
+_021D955A:
+ mov r1, #2
+_021D955C:
+ add r0, r4, #0
+ mov r2, #1
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D9616
+ ldr r0, [r4, #0x10]
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D956E:
+ add r1, r4, #0
+ mov r2, #1
+ add r1, #0x89
+ strb r2, [r1]
+ add r1, r4, #0
+ add r1, #0x8a
+ strb r5, [r1]
+ bl MOD59_021D8140
+ mov r0, #0x53
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9586:
+ mov r1, #1
+ add r2, r5, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D9616
+ mov r0, #0x54
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9598:
+ mov r1, #0x1b
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D9616
+ mov r0, #0x55
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D95AA:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D9616
+ mov r0, #0x56
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D95BC:
+ add r1, r4, #0
+ mov r2, #0xa
+ add r1, #0x89
+ strb r2, [r1]
+ add r1, r4, #0
+ add r1, #0x8a
+ strb r5, [r1]
+ bl MOD59_021D8140
+ mov r0, #0x57
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D95D4:
+ mov r1, #1
+ add r2, r5, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D9616
+ mov r0, #0x58
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D95E6:
+ mov r1, #0x1c
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D9616
+ mov r0, #0x59
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D95F8:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D8460
+ cmp r0, #1
+ bne _021D9616
+ mov r0, #0x5a
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D960A:
+ mov r1, #2
+ mov r2, #1
+ bl MOD59_021D7D7C
+ cmp r0, #1
+ beq _021D9618
+_021D9616:
+ b _021D985C
+_021D9618:
+ ldr r0, [r4, #0x48]
+ cmp r0, #5
+ bhi _021D971A
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D962A: ; jump table
+ .short _021D985C - _021D962A - 2 ; case 0
+ .short _021D9636 - _021D962A - 2 ; case 1
+ .short _021D963C - _021D962A - 2 ; case 2
+ .short _021D963C - _021D962A - 2 ; case 3
+ .short _021D963C - _021D962A - 2 ; case 4
+ .short _021D963C - _021D962A - 2 ; case 5
+_021D9636:
+ mov r0, #0x5c
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D963C:
+ ldr r1, _021D977C ; =0x020ECAC0
+ ldrb r1, [r1]
+ cmp r1, #0xa
+ bne _021D964C
+ sub r0, r0, #1
+ lsl r1, r0, #3
+ ldr r0, _021D9780 ; =0x021D9F40
+ b _021D9652
+_021D964C:
+ sub r0, r0, #1
+ lsl r1, r0, #3
+ ldr r0, _021D9784 ; =0x021D9F68
+_021D9652:
+ ldr r1, [r0, r1]
+ ldr r0, [r4, #0x4c]
+ bl FUN_0200A914
+ add r6, r0, #0
+ ldr r0, [r4, #0x74]
+ add r1, r6, #0
+ ldr r0, [r0, #0x18]
+ bl FUN_02021A74
+ add r0, r6, #0
+ bl FUN_02021A20
+ mov r0, #0x5b
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9672:
+ mov r1, #1
+ mov r2, #2
+ bl MOD59_021D8460
+ cmp r0, #1
+ bne _021D971A
+ mov r0, #0x5f
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9684:
+ ldr r0, _021D9778 ; =0x020FA5FC
+ ldr r1, [r4, #0x74]
+ ldr r2, [r4]
+ bl FUN_02006234
+ str r0, [r4, #0x14]
+ mov r0, #0x5d
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9696:
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #3
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #7
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201797C
+ add r2, r5, #0
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_020179E0
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #0x5e
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D96DE:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D971A
+ mov r0, #0x5f
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D96EC:
+ mov r1, #0x1d
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D971A
+ mov r0, #0x60
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D96FE:
+ add r1, r5, #0
+ add r2, r5, #0
+ bl MOD59_021D7D7C
+ cmp r0, #1
+ bne _021D971A
+ ldr r1, [r4, #0x48]
+ sub r0, r5, #2
+ cmp r1, r0
+ beq _021D972A
+ cmp r1, #1
+ beq _021D971C
+ cmp r1, #2
+ beq _021D972A
+_021D971A:
+ b _021D985C
+_021D971C:
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ mov r0, #0x61
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D972A:
+ ldr r0, [r4, #0x74]
+ ldr r0, [r0, #0x18]
+ bl FUN_02021A4C
+ mov r0, #0x58
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9738:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ beq _021D9746
+ b _021D985C
+_021D9746:
+ mov r0, #0x62
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D974C:
+ add r1, r4, #0
+ mov r2, #1
+ add r1, #0x89
+ strb r2, [r1]
+ add r1, r4, #0
+ add r1, #0x8a
+ strb r5, [r1]
+ bl MOD59_021D8140
+ mov r0, #0x63
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9764:
+ mov r1, #1
+ add r2, r5, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D985C
+ mov r0, #0x64
+ str r0, [r4, #0xc]
+ b _021D985C
+ nop
+_021D9778: .word 0x020FA5FC
+_021D977C: .word 0x020ECAC0
+_021D9780: .word 0x021D9F40
+_021D9784: .word 0x021D9F68
+_021D9788:
+ mov r1, #0x1e
+ bl MOD59_021D7BEC
+ cmp r0, #1
+ bne _021D985C
+ mov r0, #0x65
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9798:
+ mov r1, #0x1e
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D985C
+ add r0, r5, #0
+ mov r1, #0x32
+ bl FUN_020053CC
+ mov r0, #0x66
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D97B2:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D985C
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ mov r0, #0x67
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D97CC:
+ mov r1, #0x1e
+ bl MOD59_021D7BEC
+ cmp r0, #1
+ bne _021D985C
+ mov r0, #0x68
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D97DC:
+ add r1, r4, #0
+ add r1, #0x84
+ ldr r1, [r1]
+ cmp r1, #0
+ bne _021D97FA
+ add r1, r4, #0
+ mov r2, #2
+ add r1, #0x89
+ strb r2, [r1]
+ add r1, r4, #0
+ add r1, #0x8a
+ strb r5, [r1]
+ bl MOD59_021D8140
+ b _021D980C
+_021D97FA:
+ add r1, r4, #0
+ mov r2, #6
+ add r1, #0x89
+ strb r2, [r1]
+ add r1, r4, #0
+ add r1, #0x8a
+ strb r5, [r1]
+ bl MOD59_021D8140
+_021D980C:
+ mov r0, #0x69
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9812:
+ mov r1, #1
+ add r2, r5, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D985C
+ add r0, r4, #0
+ bl MOD59_021D8624
+ mov r0, #0x6a
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D982A:
+ mov r1, #0x1e
+ bl MOD59_021D7BEC
+ cmp r0, #1
+ bne _021D985C
+ mov r0, #0x6b
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D983A:
+ bl MOD59_021D8634
+ cmp r0, #1
+ bne _021D985C
+ mov r0, #0x6c
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9848:
+ ldr r0, _021D9864 ; =0x021D9DDC
+ ldr r2, [r4]
+ add r1, r5, #0
+ bl FUN_02006234
+ str r0, [r4, #0x14]
+ mov r0, #0x6d
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D985A:
+ mov r5, #1
+_021D985C:
+ add r0, r5, #0
+ add sp, #0x30
+ pop {r4, r5, r6, pc}
+ nop
+_021D9864: .word 0x021D9DDC
+ thumb_func_end MOD59_021D8920
+
+ thumb_func_start MOD59_021D9868
+MOD59_021D9868: ; 0x021D9868
+ push {r4, lr}
+ mov r2, #1
+ add r4, r0, #0
+ mov r0, #3
+ mov r1, #0x53
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ add r0, r4, #0
+ mov r1, #0x28
+ mov r2, #0x53
+ bl FUN_02006268
+ mov r1, #0
+ mov r2, #0x28
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x53
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r4, #0x24]
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD59_021D9868
+
+ thumb_func_start MOD59_021D9898
+MOD59_021D9898: ; 0x021D9898
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ bl FUN_02006278
+ ldr r1, [r5]
+ add r4, r0, #0
+ mov r6, #0
+ cmp r1, #5
+ bls _021D98AE
+ b _021D99E2
+_021D98AE:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D98BA: ; jump table
+ .short _021D98C6 - _021D98BA - 2 ; case 0
+ .short _021D992C - _021D98BA - 2 ; case 1
+ .short _021D9952 - _021D98BA - 2 ; case 2
+ .short _021D997C - _021D98BA - 2 ; case 3
+ .short _021D998E - _021D98BA - 2 ; case 4
+ .short _021D99C0 - _021D98BA - 2 ; case 5
+_021D98C6:
+ add r0, r6, #0
+ add r1, r6, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ add r1, r6, #0
+ bl FUN_0200E3A0
+ add r0, r6, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ add r0, r6, #0
+ add r1, r0, #0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D99E8 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D99EC ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ add r0, r4, #0
+ bl MOD59_021D9A20
+ add r0, r4, #0
+ bl MOD59_021D9C48
+ ldr r0, _021D99F0 ; =MOD59_021D9A14
+ add r1, r4, #0
+ bl FUN_02015F10
+ bl FUN_0201E788
+ mov r0, #0x3c
+ str r0, [r4, #0x24]
+ mov r0, #1
+ str r0, [r5]
+ b _021D99E2
+_021D992C:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _021D9938
+ sub r0, r0, #1
+ str r0, [r4, #0x24]
+ b _021D99E2
+_021D9938:
+ ldr r0, _021D99F4 ; =0x00000406
+ bl FUN_0200414C
+ ldr r1, _021D99F4 ; =0x00000406
+ mov r0, #4
+ mov r2, #1
+ bl FUN_0200433C
+ mov r0, #0x5a
+ str r0, [r4, #0x24]
+ mov r0, #2
+ str r0, [r5]
+ b _021D99E2
+_021D9952:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _021D995E
+ sub r0, r0, #1
+ str r0, [r4, #0x24]
+ b _021D99E2
+_021D995E:
+ str r6, [r4, #0x24]
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r3, r6, #0
+ bl FUN_0200E1D0
+ mov r0, #3
+ str r0, [r5]
+ b _021D99E2
+_021D997C:
+ bl MOD59_021D9D78
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D99E2
+ mov r0, #4
+ str r0, [r5]
+ b _021D99E2
+_021D998E:
+ bl MOD59_021D9D78
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x28
+ mov r3, #0x30
+ bl MOD59_021D9C74
+ cmp r0, #1
+ bne _021D99E2
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #5
+ str r0, [r5]
+ b _021D99E2
+_021D99C0:
+ bl MOD59_021D9D78
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D99E2
+ add r0, r4, #0
+ bl MOD59_021D9C68
+ add r0, r4, #0
+ bl MOD59_021D9BD0
+ add r0, r6, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r6, #1
+_021D99E2:
+ add r0, r6, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D99E8: .word 0xFFFFE0FF
+_021D99EC: .word 0x04001000
+_021D99F0: .word MOD59_021D9A14
+_021D99F4: .word 0x00000406
+ thumb_func_end MOD59_021D9898
+
+ thumb_func_start MOD59_021D99F8
+MOD59_021D99F8: ; 0x021D99F8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ ldr r4, [r0]
+ add r0, r5, #0
+ bl FUN_0200627C
+ add r0, r4, #0
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD59_021D99F8
+
+ thumb_func_start MOD59_021D9A14
+MOD59_021D9A14: ; 0x021D9A14
+ ldr r3, _021D9A1C ; =0x0201AB61
+ ldr r0, [r0, #4]
+ bx r3
+ nop
+_021D9A1C: .word 0x0201AB61
+ thumb_func_end MOD59_021D9A14
+
+ thumb_func_start MOD59_021D9A20
+MOD59_021D9A20: ; 0x021D9A20
+ push {r3, r4, r5, lr}
+ sub sp, #0xb8
+ ldr r5, _021D9BB4 ; =0x021DA0D4
+ add r4, r0, #0
+ add r3, sp, #0x90
+ mov r2, #5
+_021D9A2C:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D9A2C
+ add r0, sp, #0x90
+ bl FUN_0201E66C
+ ldr r0, [r4]
+ bl FUN_02016B94
+ add r3, sp, #0x80
+ ldr r5, _021D9BB8 ; =0x021DA054
+ str r0, [r4, #4]
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D9BBC ; =0x021DA080
+ add r3, sp, #0x64
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r3, [r4]
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_02018744
+ ldr r5, _021D9BC0 ; =0x021DA09C
+ add r3, sp, #0x48
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ add r3, r1, #0
+ bl FUN_02016C18
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #1
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ bl FUN_0200687C
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #4
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ bl FUN_020068C8
+ ldr r5, _021D9BC4 ; =0x021DA064
+ add r3, sp, #0x2c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #2
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ mov r3, #1
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #5
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ mov r3, #1
+ bl FUN_020068C8
+ ldr r5, _021D9BC8 ; =0x021DA0B8
+ add r3, sp, #0x10
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #3
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r4]
+ mov r3, #3
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #3
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ add r3, r1, #0
+ bl FUN_020068C8
+ mov r2, #0
+ str r2, [sp]
+ ldr r0, [r4]
+ mov r1, #6
+ str r0, [sp, #4]
+ mov r0, #0x88
+ add r3, r2, #0
+ bl FUN_02006930
+ ldr r2, [r4]
+ mov r0, #0
+ mov r1, #0x20
+ bl FUN_02002ED0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02017FE4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02017FE4
+ mov r2, #0xc
+ ldr r0, _021D9BCC ; =0x04000050
+ mov r1, #2
+ mov r3, #4
+ str r2, [sp]
+ bl G2x_SetBlendAlpha_
+ add sp, #0xb8
+ pop {r3, r4, r5, pc}
+ nop
+_021D9BB4: .word 0x021DA0D4
+_021D9BB8: .word 0x021DA054
+_021D9BBC: .word 0x021DA080
+_021D9BC0: .word 0x021DA09C
+_021D9BC4: .word 0x021DA064
+_021D9BC8: .word 0x021DA0B8
+_021D9BCC: .word 0x04000050
+ thumb_func_end MOD59_021D9A20
+
+ thumb_func_start MOD59_021D9BD0
+MOD59_021D9BD0: ; 0x021D9BD0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0201797C
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #3
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #5
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #6
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #7
+ mov r1, #0
+ bl FUN_0201797C
+ ldr r0, _021D9C44 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ ldr r0, [r4, #4]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ pop {r4, pc}
+ nop
+_021D9C44: .word 0x04000050
+ thumb_func_end MOD59_021D9BD0
+
+ thumb_func_start MOD59_021D9C48
+MOD59_021D9C48: ; 0x021D9C48
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r2, _021D9C64 ; =0x00000225
+ ldr r3, [r4]
+ mov r0, #1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ str r0, [r4, #8]
+ bl FUN_0201BD5C
+ mov r0, #0
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+ .align 2, 0
+_021D9C64: .word 0x00000225
+ thumb_func_end MOD59_021D9C48
+
+ thumb_func_start MOD59_021D9C68
+MOD59_021D9C68: ; 0x021D9C68
+ ldr r3, _021D9C70 ; =0x0200A8B9
+ ldr r0, [r0, #8]
+ bx r3
+ nop
+_021D9C70: .word 0x0200A8B9
+ thumb_func_end MOD59_021D9C68
+
+ thumb_func_start MOD59_021D9C74
+MOD59_021D9C74: ; 0x021D9C74
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ str r1, [sp, #0x10]
+ add r7, r3, #0
+ mov r5, #0
+ cmp r0, #3
+ bhi _021D9D66
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9C92: ; jump table
+ .short _021D9C9A - _021D9C92 - 2 ; case 0
+ .short _021D9D24 - _021D9C92 - 2 ; case 1
+ .short _021D9D36 - _021D9C92 - 2 ; case 2
+ .short _021D9D50 - _021D9C92 - 2 ; case 3
+_021D9C9A:
+ mov r0, #2
+ add r1, r5, #0
+ bl FUN_0201797C
+ mov r0, #1
+ ldr r1, [r4]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ add r6, r0, #0
+ ldr r0, [r4, #8]
+ ldr r1, [sp, #0x10]
+ add r2, r6, #0
+ bl FUN_0200A8E0
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ ldr r2, _021D9D6C ; =0x021DA04C
+ add r1, #0x10
+ bl FUN_02019150
+ add r1, r5, #0
+ mov r0, #1
+ lsl r0, r0, #8
+ str r0, [sp]
+ mov r0, #0xc0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x10
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r0, #0
+ bl FUN_02002F08
+ mov r1, #1
+ lsl r1, r1, #8
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ str r7, [sp]
+ add r1, r5, #0
+ ldr r0, _021D9D70 ; =0x000F0200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x10
+ add r2, r6, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ add r0, #0x10
+ bl FUN_020191D0
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #0xf0
+ str r0, [r4, #0x24]
+ mov r0, #1
+ str r0, [r4, #0xc]
+ b _021D9D66
+_021D9D24:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _021D9D30
+ sub r0, r0, #1
+ str r0, [r4, #0x24]
+ b _021D9D66
+_021D9D30:
+ mov r0, #2
+ str r0, [r4, #0xc]
+ b _021D9D66
+_021D9D36:
+ ldr r0, _021D9D74 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ and r0, r1
+ cmp r0, #1
+ beq _021D9D4A
+ mov r0, #2
+ and r0, r1
+ cmp r0, #2
+ bne _021D9D66
+_021D9D4A:
+ mov r0, #3
+ str r0, [r4, #0xc]
+ b _021D9D66
+_021D9D50:
+ add r0, r4, #0
+ add r0, #0x10
+ bl FUN_02019178
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_02018744
+ add r0, r5, #0
+ str r0, [r4, #0xc]
+ mov r5, #1
+_021D9D66:
+ add r0, r5, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9D6C: .word 0x021DA04C
+_021D9D70: .word 0x000F0200
+_021D9D74: .word 0x021C48B8
+ thumb_func_end MOD59_021D9C74
+
+ thumb_func_start MOD59_021D9D78
+MOD59_021D9D78: ; 0x021D9D78
+ push {r3, lr}
+ ldr r1, [r0, #0x20]
+ mov r2, #3
+ add r3, r1, #4
+ str r3, [r0, #0x20]
+ ldr r0, [r0, #4]
+ mov r1, #1
+ asr r3, r3, #4
+ bl FUN_020179E0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD59_021D9D78
+
+ .section .rodata
+ ; 0x021D9D90
+ .incbin "baserom.nds", 0x2AC6B0, 0x36C