summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lcf168
-rw-r--r--arm9/asm/unk_02046030.s34
-rw-r--r--arm9/global.inc50
-rw-r--r--arm9/modules/05/asm/module_05.s4
-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
-rw-r--r--arm9/modules/60/asm/module_60.s1491
-rw-r--r--arm9/modules/61/asm/module_61.s1907
-rw-r--r--arm9/modules/62/asm/module_62.s7543
-rw-r--r--arm9/modules/63/asm/module_63.s8588
-rw-r--r--arm9/undefined_syms.txt9
-rw-r--r--pokediamond.lcf176
13 files changed, 27382 insertions, 185 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index d2073d96..47df3931 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,18 +2406,30 @@ 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;
} >> MODULE_59
- .MODULE_60: {
+ .MODULE_60 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY_MODULE_60_ID = 60;
SDK_OVERLAY.MODULE_60.ID = 60;
SDK_OVERLAY.MODULE_60.START = .;
- FILE_2ACC00.o (.text) /* 0x2A8C00 */
+ module_60.o (.text)
+ module_60.o (.rodata)
+ module_60.o (.init)
+ SDK_OVERLAY.MODULE_60.SINIT_START = .;
+ module_60.o (.ctor)
+ module_60.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_60.SINIT_END = .;
+ . = ALIGN(32);
+ module_60.o (.sdata)
+ module_60.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_60.END = .;
SDK_OVERLAY.MODULE_60.SIZE = SDK_OVERLAY.MODULE_60.END - SDK_OVERLAY.MODULE_60.START;
@@ -2404,18 +2439,30 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_60.BSS_START = .;
- FILE_2ACC00.o (.bss)
+ module_60.o (.bss)
+ module_60.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_60.BSS_END = .;
SDK_OVERLAY.MODULE_60.BSS_SIZE = SDK_OVERLAY.MODULE_60.BSS_END - SDK_OVERLAY.MODULE_60.BSS_START;
} >> MODULE_60
- .MODULE_61: {
+ .MODULE_61 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY_MODULE_61_ID = 61;
SDK_OVERLAY.MODULE_61.ID = 61;
SDK_OVERLAY.MODULE_61.START = .;
- FILE_2ADA00.o (.text) /* 0x2A9A00 */
+ module_61.o (.text)
+ module_61.o (.rodata)
+ module_61.o (.init)
+ SDK_OVERLAY.MODULE_61.SINIT_START = .;
+ module_61.o (.ctor)
+ module_61.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_61.SINIT_END = .;
+ . = ALIGN(32);
+ module_61.o (.sdata)
+ module_61.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_61.END = .;
SDK_OVERLAY.MODULE_61.SIZE = SDK_OVERLAY.MODULE_61.END - SDK_OVERLAY.MODULE_61.START;
@@ -2425,18 +2472,30 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_61.BSS_START = .;
- FILE_2ADA00.o (.bss)
+ module_61.o (.bss)
+ module_61.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_61.BSS_END = .;
SDK_OVERLAY.MODULE_61.BSS_SIZE = SDK_OVERLAY.MODULE_61.BSS_END - SDK_OVERLAY.MODULE_61.BSS_START;
} >> MODULE_61
- .MODULE_62: {
+ .MODULE_62 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY_MODULE_62_ID = 62;
SDK_OVERLAY.MODULE_62.ID = 62;
SDK_OVERLAY.MODULE_62.START = .;
- FILE_2AEC00.o (.text) /* 0x2AAC00 */
+ module_62.o (.text)
+ module_62.o (.rodata)
+ module_62.o (.init)
+ SDK_OVERLAY.MODULE_62.SINIT_START = .;
+ module_62.o (.ctor)
+ module_62.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_62.SINIT_END = .;
+ . = ALIGN(32);
+ module_62.o (.sdata)
+ module_62.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_62.END = .;
SDK_OVERLAY.MODULE_62.SIZE = SDK_OVERLAY.MODULE_62.END - SDK_OVERLAY.MODULE_62.START;
@@ -2446,18 +2505,30 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_62.BSS_START = .;
- FILE_2AEC00.o (.bss)
+ module_62.o (.bss)
+ module_62.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_62.BSS_END = .;
SDK_OVERLAY.MODULE_62.BSS_SIZE = SDK_OVERLAY.MODULE_62.BSS_END - SDK_OVERLAY.MODULE_62.BSS_START;
} >> MODULE_62
- .MODULE_63: {
+ .MODULE_63 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY_MODULE_63_ID = 63;
SDK_OVERLAY.MODULE_63.ID = 63;
SDK_OVERLAY.MODULE_63.START = .;
- FILE_2B2A00.o (.text) /* 0x2AEA00 */
+ module_63.o (.text)
+ module_63.o (.rodata)
+ module_63.o (.init)
+ SDK_OVERLAY.MODULE_63.SINIT_START = .;
+ module_63.o (.ctor)
+ module_63.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_63.SINIT_END = .;
+ . = ALIGN(32);
+ module_63.o (.sdata)
+ module_63.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_63.END = .;
SDK_OVERLAY.MODULE_63.SIZE = SDK_OVERLAY.MODULE_63.END - SDK_OVERLAY.MODULE_63.START;
@@ -2467,7 +2538,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_63.BSS_START = .;
- FILE_2B2A00.o (.bss)
+ module_63.o (.bss)
+ module_63.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_63.BSS_END = .;
SDK_OVERLAY.MODULE_63.BSS_SIZE = SDK_OVERLAY.MODULE_63.BSS_END - SDK_OVERLAY.MODULE_63.BSS_START;
@@ -3603,12 +3675,60 @@ SECTIONS {
WRITEW 57;
WRITEW 0;
- OVERLAY_TABLE(MODULE_58, 58)
- OVERLAY_TABLE(MODULE_59, 59)
- OVERLAY_TABLE(MODULE_60, 60)
- OVERLAY_TABLE(MODULE_61, 61)
- OVERLAY_TABLE(MODULE_62, 62)
- OVERLAY_TABLE(MODULE_63, 63)
+ 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;
+
+ WRITEW 60;
+ WRITEW ADDR(.MODULE_60);
+ WRITEW SDK_OVERLAY.MODULE_60.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_60.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_60.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_60.SINIT_END;
+ WRITEW 60;
+ WRITEW 0;
+
+ WRITEW 61;
+ WRITEW ADDR(.MODULE_61);
+ WRITEW SDK_OVERLAY.MODULE_61.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_61.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_61.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_61.SINIT_END;
+ WRITEW 61;
+ WRITEW 0;
+
+ WRITEW 62;
+ WRITEW ADDR(.MODULE_62);
+ WRITEW SDK_OVERLAY.MODULE_62.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_62.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_62.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_62.SINIT_END;
+ WRITEW 62;
+ WRITEW 0;
+
+ WRITEW 63;
+ WRITEW ADDR(.MODULE_63);
+ WRITEW SDK_OVERLAY.MODULE_63.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_63.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_63.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_63.SINIT_END;
+ WRITEW 63;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_64, 64)
OVERLAY_TABLE(MODULE_65, 65)
OVERLAY_TABLE(MODULE_66, 66)
diff --git a/arm9/asm/unk_02046030.s b/arm9/asm/unk_02046030.s
index 4221d249..4b46da9e 100644
--- a/arm9/asm/unk_02046030.s
+++ b/arm9/asm/unk_02046030.s
@@ -128316,7 +128316,7 @@ FUN_02083E4C: ; 0x02083E4C
add r0, r4, #0x0
mov r1, #0x3
mov r2, #0x0
- bl FUN_021D8B64
+ bl MOD53_021D8B64
ldr r1, _02083E8C ; =0x000043D0
mov r2, #0xe1
mov r0, #0x0
@@ -128381,7 +128381,7 @@ _02083ED0:
ldr r1, [r4, r1]
cmp r1, r0
bne _02083EFE
- bl FUN_021D917C
+ bl MOD53_021D917C
mov r1, #0xc6
lsl r1, r1, #0x2
ldr r1, [r4, r1]
@@ -128437,7 +128437,7 @@ _02083F3C:
add r0, r4, #0x0
mov r1, #0x9
add r2, r6, #0x0
- bl FUN_021D8B64
+ bl MOD53_021D8B64
add sp, #0x4
pop {r3-r6, pc}
_02083F5A:
@@ -128447,14 +128447,14 @@ _02083F5A:
ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x8
- bl FUN_021D8B64
+ bl MOD53_021D8B64
add sp, #0x4
pop {r3-r6, pc}
_02083F6E:
ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x15
- bl FUN_021D8B64
+ bl MOD53_021D8B64
_02083F78:
add sp, #0x4
pop {r3-r6, pc}
@@ -128474,7 +128474,7 @@ FUN_02083F88: ; 0x02083F88
add r4, r3, #0x0
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_021D8B64
+ bl MOD53_021D8B64
bl FUN_02031190
cmp r0, #0x0
bne _02083FB6
@@ -128514,7 +128514,7 @@ FUN_02083FC4: ; 0x02083FC4
add r0, r4, #0x0
mov r1, #0xf
mov r2, #0x0
- bl FUN_021D8B64
+ bl MOD53_021D8B64
_02083FDA:
pop {r4, pc}
@@ -128674,12 +128674,12 @@ FUN_020840CC: ; 0x020840CC
add r0, r4, #0x0
bl FUN_02084270
add r0, r4, #0x0
- bl FUN_021D844C
+ bl MOD54_021D844C
lsl r2, r5, #0x18
add r0, r4, #0x0
mov r1, #0x19
lsr r2, r2, #0x18
- bl FUN_021D88E4
+ bl MOD54_021D88E4
mov r0, #0x1
add r1, r0, #0x0
bl FUN_020334E8
@@ -128693,12 +128693,12 @@ _02084110: .word 0x00000658
thumb_func_start FUN_02084114
FUN_02084114: ; 0x02084114
add r0, r3, #0x0
- ldr r3, _02084120 ; =FUN_021D88E4
+ ldr r3, _02084120 ; =MOD54_021D88E4
mov r1, #0x2
mov r2, #0x0
bx r3
nop
-_02084120: .word FUN_021D88E4 + 1
+_02084120: .word MOD54_021D88E4
thumb_func_start FUN_02084124
FUN_02084124: ; 0x02084124
@@ -128736,7 +128736,7 @@ _0208415E:
ldr r1, [r4, r1]
cmp r1, r0
bne _02084186
- bl FUN_021D8C24
+ bl MOD54_021D8C24
ldr r1, _02084208 ; =0x00004A48
ldr r1, [r4, r1]
cmp r1, r0
@@ -128792,7 +128792,7 @@ _020841C8:
add r0, r4, #0x0
mov r1, #0x8
add r2, r6, #0x0
- bl FUN_021D88E4
+ bl MOD54_021D88E4
add sp, #0x4
pop {r3-r6, pc}
_020841E6:
@@ -128802,14 +128802,14 @@ _020841E6:
ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x7
- bl FUN_021D88E4
+ bl MOD54_021D88E4
add sp, #0x4
pop {r3-r6, pc}
_020841FA:
ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x13
- bl FUN_021D88E4
+ bl MOD54_021D88E4
_02084204:
add sp, #0x4
pop {r3-r6, pc}
@@ -128824,7 +128824,7 @@ FUN_02084210: ; 0x02084210
add r4, r3, #0x0
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_021D89CC
+ bl MOD54_021D89CC
bl FUN_02031190
cmp r0, #0x0
bne _0208422E
@@ -128855,7 +128855,7 @@ FUN_02084238: ; 0x02084238
add r0, r4, #0x0
mov r1, #0xd
mov r2, #0x0
- bl FUN_021D88E4
+ bl MOD54_021D88E4
_0208424E:
pop {r4, pc}
diff --git a/arm9/global.inc b/arm9/global.inc
index 4548a270..60facaee 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -2727,7 +2727,7 @@
.extern MOD04_021D83A8
.extern MOD04_021D83C0
.extern MOD04_021D83F0
-.extern FUN_021D844C
+.extern MOD54_021D844C
.extern MOD04_021D8494
.extern MOD04_021D8558
.extern MOD04_021D8590
@@ -2744,23 +2744,23 @@
.extern MOD04_021D8818
.extern MOD05_021D8820
.extern MOD04_021D8860
-.extern FUN_021D88E4
+.extern MOD54_021D88E4
.extern MOD04_021D8910
.extern MOD04_021D8944
-.extern FUN_021D89CC
+.extern MOD54_021D89CC
.extern MOD04_021D8A54
.extern MOD04_021D8A7C
-.extern FUN_021D8B64
+.extern MOD53_021D8B64
.extern MOD04_021D8BF0
.extern MOD04_021D8C08
-.extern FUN_021D8C24
+.extern MOD54_021D8C24
.extern MOD04_021D8C58
.extern MOD04_021D8C6C
.extern MOD04_021D8CC8
.extern MOD04_021D8CF0
.extern MOD04_021D8D04
.extern MOD04_021D8F08
-.extern FUN_021D917C
+.extern MOD53_021D917C
.extern MOD05_021D959C
.extern MOD05_021D967C
.extern MOD05_021D96F4
@@ -4329,8 +4329,8 @@
.extern MOD20_022524DC
.extern MOD19_022524F4
.extern MOD19_02252504
-.extern FUN_02254A68
-.extern FUN_02254AB8
+.extern MOD51_02254A68
+.extern MOD51_02254AB8
.extern FX_Atan
.extern G3X_SetEdgeColorTable
.extern G3X_SetFogTable
@@ -5588,7 +5588,27 @@
.extern FUN_0201CD38
.extern FUN_020294A8
.extern FUN_0202EEB0
+.extern MOD08_02217E80
+.extern MOD08_02217ECC
+.extern MOD08_02217F08
+.extern MOD08_0222A02C
+.extern FUN_0200C6D8
+.extern FUN_02029CA4
+.extern FUN_02029CF4
+.extern FUN_02029CF8
+.extern FUN_02029D40
+.extern FUN_02029D84
+.extern FUN_02085D9C
+.extern FUN_02085FAC
.extern FUN_02031370
+.extern FUN_02016B44
+.extern FUN_02017BD0
+.extern FUN_0201ED5C
+.extern FUN_0201EE2C
+.extern FUN_0201EFB4
+.extern FUN_0201F05C
+.extern FUN_0200A064
+.extern FUN_0200C918
.extern FUN_02031388
.extern FUN_02052F8C
.extern FUN_02083D48
@@ -5650,6 +5670,20 @@
.extern FUN_02084098
.extern FUN_020048A0
.extern FUN_020048BC
+.extern FUN_02014630
+.extern FUN_02024EF4
+.extern FUN_02004D60
+.extern FUN_020181EC
+.extern FUN_02024FD8
+.extern FUN_02024FE0
+.extern FUN_02025010
+.extern FUN_02025018
+.extern FUN_02025034
+.extern FUN_02025048
+.extern FUN_02025050
+.extern FUN_02025064
+.extern FUN_0202506C
+.extern FUN_0202508C
.extern SDK_OVERLAY_MODULE_00_ID
.extern SDK_OVERLAY_MODULE_01_ID
.extern SDK_OVERLAY_MODULE_02_ID
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index 9b34c034..cbfe382b 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -9489,7 +9489,7 @@ MOD05_021DBEA0: ; 0x021DBEA0
mov r1, #2
bl HandleLoadOverlay
add r0, r4, #0
- bl FUN_02254A68
+ bl MOD51_02254A68
add r4, #0x80
str r0, [r4]
pop {r4, pc}
@@ -9515,7 +9515,7 @@ MOD05_021DBECC: ; 0x021DBECC
push {r3, lr}
add r0, #0x80
ldr r0, [r0]
- bl FUN_02254AB8
+ bl MOD51_02254AB8
ldr r0, _021DBEE0 ; =SDK_OVERLAY_MODULE_51_ID
bl UnloadOverlayByID
pop {r3, pc}
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
diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s
new file mode 100644
index 00000000..6318e002
--- /dev/null
+++ b/arm9/modules/60/asm/module_60.s
@@ -0,0 +1,1491 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD60_021D74E0
+MOD60_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl FUN_0200628C
+ mov r2, #1
+ add r5, r0, #0
+ mov r0, #3
+ mov r1, #0x26
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ mov r1, #0xad
+ add r0, r4, #0
+ lsl r1, r1, #2
+ mov r2, #0x26
+ bl FUN_02006268
+ mov r2, #0xad
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ bl FUN_02024FD8
+ ldrh r1, [r4, #0x18]
+ mov r2, #0xf
+ lsl r0, r0, #0x10
+ bic r1, r2
+ lsr r2, r0, #0x10
+ mov r0, #0xf
+ and r0, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ add r0, r5, #0
+ bl FUN_0202502C
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1f
+ ldrh r1, [r4, #0x18]
+ mov r2, #0x40
+ lsr r0, r0, #0x19
+ bic r1, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ add r0, r5, #0
+ bl FUN_02025048
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1f
+ ldrh r1, [r4, #0x18]
+ mov r2, #0x80
+ lsr r0, r0, #0x18
+ bic r1, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ add r0, r5, #0
+ bl FUN_02025010
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1e
+ ldrh r1, [r4, #0x18]
+ mov r2, #0x30
+ lsr r0, r0, #0x1a
+ bic r1, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ add r0, r5, #0
+ bl FUN_02025064
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1e
+ ldrh r2, [r4, #0x18]
+ ldr r1, _021D75A8 ; =0xFFFFFCFF
+ lsr r0, r0, #0x16
+ and r1, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ add r0, r5, #0
+ bl FUN_02025084
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1b
+ ldrh r2, [r4, #0x18]
+ ldr r1, _021D75AC ; =0xFFFF83FF
+ lsr r0, r0, #0x11
+ and r1, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ mov r0, #0x26
+ str r0, [r4]
+ str r5, [r4, #0x1c]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D75A8: .word 0xFFFFFCFF
+_021D75AC: .word 0xFFFF83FF
+ thumb_func_end MOD60_021D74E0
+
+ thumb_func_start MOD60_021D75B0
+MOD60_021D75B0: ; 0x021D75B0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1e
+ cmp r0, #1
+ bne _021D7680
+ ldrh r1, [r4, #0x18]
+ mov r0, #0xf
+ bic r1, r0
+ add r0, r4, #0
+ add r0, #0x5e
+ ldrh r2, [r0]
+ mov r0, #0xf
+ and r2, r0
+ orr r1, r2
+ strh r1, [r4, #0x18]
+ ldrh r1, [r4, #0x18]
+ mov r2, #0x40
+ add r0, #0xf7
+ bic r1, r2
+ add r2, r4, #0
+ add r2, #0xb2
+ ldrh r2, [r2]
+ lsl r2, r2, #0x1f
+ lsr r2, r2, #0x19
+ orr r1, r2
+ strh r1, [r4, #0x18]
+ ldrh r0, [r4, r0]
+ ldrh r1, [r4, #0x18]
+ mov r2, #0x80
+ lsl r0, r0, #0x1f
+ bic r1, r2
+ lsr r0, r0, #0x18
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ ldrh r1, [r4, #0x18]
+ mov r0, #0x30
+ bic r1, r0
+ ldr r0, _021D76AC ; =0x0000015A
+ ldrh r2, [r4, r0]
+ lsl r2, r2, #0x1e
+ lsr r2, r2, #0x1a
+ orr r1, r2
+ strh r1, [r4, #0x18]
+ ldrh r2, [r4, #0x18]
+ ldr r1, _021D76B0 ; =0xFFFFFCFF
+ and r1, r2
+ add r2, r0, #0
+ add r2, #0x54
+ ldrh r2, [r4, r2]
+ add r0, #0xa8
+ lsl r2, r2, #0x1e
+ lsr r2, r2, #0x16
+ orr r1, r2
+ strh r1, [r4, #0x18]
+ ldrh r0, [r4, r0]
+ ldrh r2, [r4, #0x18]
+ ldr r1, _021D76B4 ; =0xFFFF83FF
+ lsl r0, r0, #0x1b
+ and r1, r2
+ lsr r0, r0, #0x11
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ bl FUN_02024FE0
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x1f
+ bl FUN_02025034
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1f
+ bl FUN_02025050
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x1e
+ bl FUN_02025018
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x16
+ lsr r1, r1, #0x1e
+ bl FUN_0202506C
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x11
+ lsr r1, r1, #0x1b
+ bl FUN_0202508C
+ b _021D769A
+_021D7680:
+ cmp r0, #2
+ bne _021D769A
+ ldrh r0, [r4, #0x18]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1e
+ bl FUN_02004D60
+ ldrh r1, [r4, #0x18]
+ mov r0, #0
+ lsl r1, r1, #0x16
+ lsr r1, r1, #0x1e
+ bl FUN_02024F9C
+_021D769A:
+ add r0, r5, #0
+ bl FUN_0200627C
+ ldr r0, [r4]
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_021D76AC: .word 0x0000015A
+_021D76B0: .word 0xFFFFFCFF
+_021D76B4: .word 0xFFFF83FF
+ thumb_func_end MOD60_021D75B0
+
+ thumb_func_start MOD60_021D76B8
+MOD60_021D76B8: ; 0x021D76B8
+ push {r3, r4, lr}
+ sub sp, #0xc
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #4
+ bhi _021D77A0
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D76D4: ; jump table
+ .short _021D76DE - _021D76D4 - 2 ; case 0
+ .short _021D7706 - _021D76D4 - 2 ; case 1
+ .short _021D7714 - _021D76D4 - 2 ; case 2
+ .short _021D777E - _021D76D4 - 2 ; case 3
+ .short _021D778C - _021D76D4 - 2 ; case 4
+_021D76DE:
+ bl MOD60_021D7834
+ cmp r0, #0
+ bne _021D76EC
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D76EC:
+ mov r3, #0
+ str r3, [r4, #0xc]
+ 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, #3
+ bl FUN_0200E1D0
+ b _021D77A0
+_021D7706:
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D77A0
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D7714:
+ ldr r0, _021D77AC ; =0x021C48B8
+ mov r1, #1
+ ldr r0, [r0, #0x48]
+ tst r1, r0
+ beq _021D773C
+ ldr r1, [r4, #0x10]
+ lsl r1, r1, #0x1b
+ lsr r1, r1, #0x1d
+ cmp r1, #6
+ bne _021D773C
+ ldr r0, _021D77B0 ; =0x0000061B
+ bl FUN_020054C8
+ ldr r1, [r4, #0x10]
+ mov r0, #3
+ bic r1, r0
+ mov r0, #1
+ orr r0, r1
+ str r0, [r4, #0x10]
+ b _021D774E
+_021D773C:
+ mov r1, #2
+ tst r0, r1
+ beq _021D774E
+ ldr r2, [r4, #0x10]
+ mov r0, #3
+ bic r2, r0
+ add r0, r2, #0
+ orr r0, r1
+ str r0, [r4, #0x10]
+_021D774E:
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1e
+ beq _021D7772
+ mov r1, #0
+ str r1, [r4, #0xc]
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ b _021D77A0
+_021D7772:
+ add r0, r4, #0
+ bl MOD60_021D801C
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D777E:
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D77A0
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D778C:
+ bl MOD60_021D78E8
+ cmp r0, #0
+ beq _021D779A
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, pc}
+_021D779A:
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D77A0:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D77AC: .word 0x021C48B8
+_021D77B0: .word 0x0000061B
+ thumb_func_end MOD60_021D76B8
+
+ thumb_func_start MOD60_021D77B4
+MOD60_021D77B4: ; 0x021D77B4
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D77D0 ; =0x021D8140
+ add r3, sp, #0
+ mov r2, #5
+_021D77BE:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D77BE
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D77D0: .word 0x021D8140
+ thumb_func_end MOD60_021D77B4
+
+ thumb_func_start MOD60_021D77D4
+MOD60_021D77D4: ; 0x021D77D4
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #0xa
+ lsr r0, r0, #0x1f
+ beq _021D7804
+ ldr r2, _021D7824 ; =0x00000202
+ mov r1, #1
+ ldrh r0, [r4, r2]
+ add r2, #0x39
+ mov r3, #0xf
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [r4]
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x14]
+ bl FUN_0200CD68
+ ldr r1, [r4, #0x10]
+ ldr r0, _021D7828 ; =0xFFDFFFFF
+ and r0, r1
+ str r0, [r4, #0x10]
+_021D7804:
+ bl FUN_0200BC30
+ bl FUN_020AEEB8
+ ldr r0, [r4, #0x14]
+ bl FUN_0201AB60
+ ldr r3, _021D782C ; =0x027E0000
+ ldr r1, _021D7830 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ add sp, #8
+ pop {r4, pc}
+ nop
+_021D7824: .word 0x00000202
+_021D7828: .word 0xFFDFFFFF
+_021D782C: .word 0x027E0000
+_021D7830: .word 0x00003FF8
+ thumb_func_end MOD60_021D77D4
+
+ thumb_func_start MOD60_021D7834
+MOD60_021D7834: ; 0x021D7834
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ cmp r1, #0
+ beq _021D7848
+ cmp r1, #1
+ beq _021D7888
+ cmp r1, #2
+ beq _021D78A2
+ b _021D78D0
+_021D7848:
+ 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, _021D78DC ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D78E0 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ bl MOD60_021D77B4
+ mov r0, #0
+ bl FUN_0200E388
+ mov r0, #1
+ bl FUN_0200E388
+ add r0, r4, #0
+ bl MOD60_021D7990
+ b _021D78D0
+_021D7888:
+ bl MOD60_021D7A40
+ ldr r3, [r4]
+ mov r0, #1
+ mov r1, #0x1a
+ mov r2, #0xce
+ bl FUN_0200A86C
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ bl MOD60_021D7DF8
+ b _021D78D0
+_021D78A2:
+ bl MOD60_021D7BA4
+ add r0, r4, #0
+ bl MOD60_021D7D18
+ ldr r1, [r4]
+ mov r0, #0x20
+ bl FUN_0201C24C
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ bl FUN_02033F20
+ ldr r0, _021D78E4 ; =MOD60_021D77D4
+ add r1, r4, #0
+ bl FUN_02015F10
+ mov r0, #0
+ str r0, [r4, #8]
+ mov r0, #1
+ pop {r4, pc}
+_021D78D0:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_021D78DC: .word 0xFFFFE0FF
+_021D78E0: .word 0x04001000
+_021D78E4: .word MOD60_021D77D4
+ thumb_func_end MOD60_021D7834
+
+ thumb_func_start MOD60_021D78E8
+MOD60_021D78E8: ; 0x021D78E8
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _021D78F8
+ cmp r0, #1
+ beq _021D7946
+ b _021D7978
+_021D78F8:
+ bl FUN_0201C29C
+ ldr r0, [sp]
+ bl MOD60_021D7CD4
+ ldr r6, [sp]
+ mov r7, #0
+_021D7906:
+ add r0, r6, #0
+ add r0, #0x5c
+ ldrh r0, [r0]
+ mov r4, #0
+ cmp r0, #0
+ ble _021D7928
+ add r5, r6, #0
+_021D7914:
+ ldr r0, [r5, #0x60]
+ bl FUN_02021A20
+ add r0, r6, #0
+ add r0, #0x5c
+ ldrh r0, [r0]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blt _021D7914
+_021D7928:
+ add r7, r7, #1
+ add r6, #0x54
+ cmp r7, #7
+ blt _021D7906
+ ldr r0, [sp]
+ ldr r0, [r0, #0x20]
+ bl FUN_0200A8B8
+ ldr r0, [sp]
+ bl MOD60_021D7B98
+ ldr r0, [sp]
+ bl MOD60_021D7A14
+ b _021D7978
+_021D7946:
+ 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, _021D7988 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D798C ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ ldr r0, [sp]
+ mov r1, #0
+ str r1, [r0, #8]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021D7978:
+ ldr r0, [sp]
+ ldr r0, [r0, #8]
+ add r1, r0, #1
+ ldr r0, [sp]
+ str r1, [r0, #8]
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7988: .word 0xFFFFE0FF
+_021D798C: .word 0x04001000
+ thumb_func_end MOD60_021D78E8
+
+ thumb_func_start MOD60_021D7990
+MOD60_021D7990: ; 0x021D7990
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x80
+ add r6, r0, #0
+ ldr r0, [r6]
+ bl FUN_02016B94
+ add r3, sp, #0
+ ldr r4, _021D7A08 ; =0x021D8114
+ str r0, [r6, #0x14]
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r4, _021D7A0C ; =0x021D8168
+ add r3, sp, #0x10
+ mov r2, #0xe
+_021D79B8:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D79B8
+ ldr r5, _021D7A10 ; =0x021D8104
+ mov r7, #0
+ add r4, sp, #0x10
+_021D79C6:
+ ldr r1, [r5]
+ ldr r0, [r6, #0x14]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r2, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r1, [r5]
+ ldr r0, [r6, #0x14]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02018744
+ add r7, r7, #1
+ add r4, #0x1c
+ add r5, r5, #4
+ cmp r7, #4
+ blt _021D79C6
+ mov r0, #0
+ ldr r3, [r6]
+ mov r1, #0x20
+ add r2, r0, #0
+ bl FUN_02017F18
+ ldr r3, [r6]
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ add sp, #0x80
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7A08: .word 0x021D8114
+_021D7A0C: .word 0x021D8168
+_021D7A10: .word 0x021D8104
+ thumb_func_end MOD60_021D7990
+
+ thumb_func_start MOD60_021D7A14
+MOD60_021D7A14: ; 0x021D7A14
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r4, #0x14]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_020178A0
+ ldr r0, [r4, #0x14]
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD60_021D7A14
+
+ thumb_func_start MOD60_021D7A40
+MOD60_021D7A40: ; 0x021D7A40
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x24
+ add r5, r0, #0
+ ldr r1, [r5]
+ mov r0, #0x49
+ bl FUN_02006670
+ add r4, r0, #0
+ mov r0, #0x49
+ mov r1, #1
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_020169D8
+ add r6, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ add r2, r6, #0
+ bl FUN_02006774
+ add r0, r6, #0
+ add r1, sp, #0x20
+ bl FUN_020B0088
+ ldr r3, [sp, #0x20]
+ mov r1, #0
+ str r1, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r5, #0x14]
+ ldr r3, [r3, #0x10]
+ bl FUN_02017E14
+ ldr r3, [sp, #0x20]
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r5, #0x14]
+ ldr r3, [r3, #0x10]
+ mov r1, #4
+ bl FUN_02017E14
+ add r0, r6, #0
+ bl FUN_02016A18
+ mov r0, #0x49
+ mov r1, #0
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_020169D8
+ add r6, r0, #0
+ add r0, r4, #0
+ mov r1, #0
+ add r2, r6, #0
+ bl FUN_02006774
+ add r0, r6, #0
+ add r1, sp, #0x1c
+ bl FUN_020B0138
+ ldr r1, [sp, #0x1c]
+ mov r0, #0
+ ldr r1, [r1, #0xc]
+ mov r2, #0x20
+ add r3, r0, #0
+ bl FUN_02017FB4
+ ldr r1, [sp, #0x1c]
+ mov r0, #4
+ ldr r1, [r1, #0xc]
+ mov r2, #0x20
+ mov r3, #0
+ bl FUN_02017FB4
+ add r0, r6, #0
+ bl FUN_02016A18
+ mov r0, #0x49
+ mov r1, #2
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_02016998
+ str r0, [r5, #0x24]
+ ldr r2, [r5, #0x24]
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02006774
+ add r1, r5, #0
+ ldr r0, [r5, #0x24]
+ add r1, #0x28
+ bl FUN_020B0180
+ add r0, r4, #0
+ bl FUN_020066F4
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x14]
+ mov r1, #2
+ mov r2, #1
+ bl FUN_02018540
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x14]
+ mov r1, #4
+ mov r2, #1
+ bl FUN_02018540
+ ldr r0, [r5, #0x28]
+ mov r1, #0x20
+ str r1, [sp]
+ mov r1, #2
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ str r1, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ ldrh r2, [r0]
+ add r3, r1, #0
+ lsl r2, r2, #0x15
+ lsr r2, r2, #0x18
+ str r2, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ add r2, r1, #0
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x14]
+ bl FUN_020181EC
+ mov r2, #3
+ add r3, r2, #0
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ sub r3, #0x1b
+ bl FUN_020179E0
+ ldr r0, [r5, #0x14]
+ mov r1, #2
+ bl FUN_0201AC68
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ bl FUN_0201AC68
+ ldr r0, [r5, #0x14]
+ mov r1, #4
+ bl FUN_0201AC68
+ add sp, #0x24
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD60_021D7A40
+
+ thumb_func_start MOD60_021D7B98
+MOD60_021D7B98: ; 0x021D7B98
+ ldr r3, _021D7BA0 ; =0x02016A19
+ ldr r0, [r0, #0x24]
+ bx r3
+ nop
+_021D7BA0: .word 0x02016A19
+ thumb_func_end MOD60_021D7B98
+
+ thumb_func_start MOD60_021D7BA4
+MOD60_021D7BA4: ; 0x021D7BA4
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0xa
+ str r0, [sp, #0x10]
+ add r1, r4, #0
+ mov r2, #1
+ ldr r0, [r4, #0x14]
+ add r1, #0x2c
+ add r3, r2, #0
+ bl FUN_02019064
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #0x1e
+ str r0, [sp, #4]
+ mov r0, #0xe
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x22
+ str r0, [sp, #0x10]
+ add r1, r4, #0
+ mov r2, #1
+ ldr r0, [r4, #0x14]
+ add r1, #0x3c
+ add r3, r2, #0
+ bl FUN_02019064
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, _021D7CC8 ; =0x000001C6
+ add r1, r4, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x14]
+ add r1, #0x4c
+ mov r2, #1
+ mov r3, #2
+ bl FUN_02019064
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r4]
+ ldr r2, _021D7CCC ; =0x00000232
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ mov r3, #0xe
+ bl FUN_0200CB00
+ ldrh r0, [r4, #0x18]
+ ldr r2, _021D7CD0 ; =0x0000023B
+ mov r1, #1
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1b
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [r4]
+ mov r3, #0xf
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x14]
+ bl FUN_0200CD68
+ mov r1, #0x1a
+ ldr r2, [r4]
+ mov r0, #0
+ lsl r1, r1, #4
+ bl FUN_02002ED0
+ mov r1, #0x1a
+ ldr r2, [r4]
+ mov r0, #4
+ lsl r1, r1, #4
+ bl FUN_02002ED0
+ mov r1, #6
+ ldr r2, [r4]
+ mov r0, #0
+ lsl r1, r1, #6
+ bl FUN_02002EEC
+ mov r1, #6
+ ldr r2, [r4]
+ mov r0, #4
+ lsl r1, r1, #6
+ bl FUN_02002EEC
+ add r0, r4, #0
+ add r0, #0x2c
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r4, #0
+ add r0, #0x3c
+ mov r1, #0xff
+ bl FUN_02019620
+ add r0, r4, #0
+ add r0, #0x4c
+ mov r1, #0xff
+ bl FUN_02019620
+ add r0, r4, #0
+ add r0, #0x4c
+ bl FUN_020192B8
+ add r0, r4, #0
+ add r0, #0x3c
+ bl FUN_020192B8
+ add r0, r4, #0
+ add r0, #0x2c
+ bl FUN_020192B8
+ add r0, r4, #0
+ ldr r2, _021D7CCC ; =0x00000232
+ add r0, #0x3c
+ mov r1, #1
+ mov r3, #0xe
+ bl FUN_0200CCA4
+ add r4, #0x4c
+ ldr r2, _021D7CD0 ; =0x0000023B
+ add r0, r4, #0
+ mov r1, #1
+ mov r3, #0xf
+ bl FUN_0200D0BC
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_021D7CC8: .word 0x000001C6
+_021D7CCC: .word 0x00000232
+_021D7CD0: .word 0x0000023B
+ thumb_func_end MOD60_021D7BA4
+
+ thumb_func_start MOD60_021D7CD4
+MOD60_021D7CD4: ; 0x021D7CD4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, #0x3c
+ mov r1, #0
+ bl FUN_0200CCF8
+ add r0, r5, #0
+ add r0, #0x4c
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r6, #0
+ add r5, #0x2c
+ add r7, r6, #0
+_021D7CF0:
+ lsl r4, r6, #4
+ add r0, r5, r4
+ bl FUN_02019570
+ add r0, r5, r4
+ add r1, r7, #0
+ bl FUN_02019620
+ add r0, r5, r4
+ bl FUN_020192B8
+ add r0, r5, r4
+ bl FUN_02019178
+ add r0, r6, #1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ cmp r6, #3
+ blo _021D7CF0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD60_021D7CD4
+
+ thumb_func_start MOD60_021D7D18
+MOD60_021D7D18: ; 0x021D7D18
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ ldr r1, [r6]
+ mov r0, #0x28
+ bl FUN_020219F4
+ add r5, r0, #0
+ ldr r0, [r6, #0x20]
+ mov r1, #0
+ add r2, r5, #0
+ bl FUN_0200A8E0
+ mov r3, #2
+ str r3, [sp]
+ mov r1, #0
+ ldr r0, _021D7DEC ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r0, #0x2c
+ add r2, r5, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r5, #0
+ bl FUN_02021A4C
+ ldr r1, _021D7DF0 ; =0x020ECAC0
+ ldr r0, [r6, #0x20]
+ ldrb r1, [r1]
+ add r2, r5, #0
+ sub r1, #9
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D7DF4 ; =0x0001020F
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ str r1, [sp, #0xc]
+ add r0, #0x4c
+ mov r1, #1
+ add r2, r5, #0
+ mov r3, #4
+ bl FUN_0201BDE0
+ add r7, r6, #0
+ mov r4, #0
+ add r7, #0x3c
+_021D7D7E:
+ add r0, r5, #0
+ bl FUN_02021A4C
+ ldr r0, [r6, #0x20]
+ add r1, r4, #3
+ add r2, r5, #0
+ bl FUN_0200A8E0
+ lsl r0, r4, #4
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D7DF4 ; =0x0001020F
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ add r2, r5, #0
+ mov r3, #4
+ bl FUN_0201BDE0
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #7
+ blo _021D7D7E
+ mov r4, #0
+_021D7DB6:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD60_021D7EA4
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #7
+ blo _021D7DB6
+ add r0, r6, #0
+ add r0, #0x2c
+ bl FUN_020191D0
+ add r0, r6, #0
+ add r0, #0x3c
+ bl FUN_020191D0
+ add r6, #0x4c
+ add r0, r6, #0
+ bl FUN_020191D0
+ add r0, r5, #0
+ bl FUN_02021A20
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7DEC: .word 0x00010200
+_021D7DF0: .word 0x020ECAC0
+_021D7DF4: .word 0x0001020F
+ thumb_func_end MOD60_021D7D18
+
+ thumb_func_start MOD60_021D7DF8
+MOD60_021D7DF8: ; 0x021D7DF8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r5, #0
+ add r6, r0, #0
+ str r5, [sp, #4]
+_021D7E02:
+ ldr r0, [sp, #4]
+ ldr r2, [sp, #4]
+ lsl r7, r0, #2
+ ldr r0, _021D7E9C ; =0x021D8124
+ mov r1, #0x54
+ mul r1, r2
+ add r1, r6, r1
+ str r1, [sp]
+ ldr r0, [r0, r7]
+ add r1, #0x5c
+ mov r4, #0
+ strh r0, [r1]
+ cmp r0, #0
+ ble _021D7E44
+_021D7E1E:
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ add r1, r5, #0
+ lsr r5, r0, #0x10
+ ldr r0, [r6, #0x20]
+ add r1, #0xa
+ bl FUN_0200A914
+ ldr r1, [sp]
+ lsl r2, r4, #2
+ add r1, r1, r2
+ str r0, [r1, #0x60]
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, _021D7E9C ; =0x021D8124
+ ldr r0, [r0, r7]
+ cmp r4, r0
+ blt _021D7E1E
+_021D7E44:
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ cmp r0, #7
+ blo _021D7E02
+ ldrh r0, [r6, #0x18]
+ lsl r0, r0, #0x1c
+ lsr r1, r0, #0x1c
+ add r0, r6, #0
+ add r0, #0x5e
+ strh r1, [r0]
+ ldrh r0, [r6, #0x18]
+ lsl r0, r0, #0x19
+ lsr r1, r0, #0x1f
+ add r0, r6, #0
+ add r0, #0xb2
+ strh r1, [r0]
+ ldrh r0, [r6, #0x18]
+ ldr r1, _021D7EA0 ; =0x00000106
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ strh r0, [r6, r1]
+ ldrh r0, [r6, #0x18]
+ lsl r0, r0, #0x1a
+ lsr r2, r0, #0x1e
+ add r0, r1, #0
+ add r0, #0x54
+ strh r2, [r6, r0]
+ ldrh r0, [r6, #0x18]
+ lsl r0, r0, #0x16
+ lsr r2, r0, #0x1e
+ add r0, r1, #0
+ add r0, #0xa8
+ strh r2, [r6, r0]
+ ldrh r0, [r6, #0x18]
+ add r1, #0xfc
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1b
+ strh r0, [r6, r1]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7E9C: .word 0x021D8124
+_021D7EA0: .word 0x00000106
+ thumb_func_end MOD60_021D7DF8
+
+ thumb_func_start MOD60_021D7EA4
+MOD60_021D7EA4: ; 0x021D7EA4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ str r0, [sp, #0x10]
+ lsl r0, r1, #4
+ str r0, [sp, #0x18]
+ mov r0, #6
+ str r1, [sp, #0x14]
+ lsl r0, r0, #6
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ ldr r3, _021D8010 ; =0x021D80FC
+ ldr r2, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ ldrsb r2, [r3, r2]
+ ldr r3, [sp, #0x18]
+ add r0, #0x3c
+ add r2, #0x64
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ ldr r0, [sp, #0x14]
+ cmp r0, #5
+ bne _021D7F26
+ add r2, r0, #0
+ ldr r0, [sp, #0x18]
+ mov r1, #0x54
+ str r0, [sp]
+ mov r0, #0xff
+ mul r2, r1
+ ldr r3, [sp, #0x10]
+ str r0, [sp, #4]
+ ldr r0, _021D8014 ; =0x0003040F
+ add r3, r3, r2
+ str r0, [sp, #8]
+ mov r1, #0
+ add r2, r3, #0
+ ldr r0, [sp, #0x10]
+ str r1, [sp, #0xc]
+ add r2, #0x5e
+ ldrh r2, [r2]
+ add r0, #0x3c
+ lsl r2, r2, #2
+ add r2, r3, r2
+ ldr r2, [r2, #0x60]
+ mov r3, #0x94
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ add r0, #0x3c
+ bl FUN_020191D0
+ ldr r0, [sp, #0x10]
+ ldr r1, [r0, #0x10]
+ mov r0, #2
+ lsl r0, r0, #0x14
+ orr r1, r0
+ ldr r0, [sp, #0x10]
+ add sp, #0x24
+ str r1, [r0, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_021D7F26:
+ cmp r0, #3
+ bne _021D7F3C
+ mov r1, #0x54
+ mul r1, r0
+ ldr r0, [sp, #0x10]
+ add r0, r0, r1
+ add r0, #0x5e
+ ldrh r0, [r0]
+ bl FUN_02004D60
+ b _021D7F54
+_021D7F3C:
+ cmp r0, #4
+ bne _021D7F54
+ ldr r1, [sp, #0x14]
+ mov r2, #0x54
+ mul r2, r1
+ ldr r1, [sp, #0x10]
+ mov r0, #0
+ add r1, r1, r2
+ add r1, #0x5e
+ ldrh r1, [r1]
+ bl FUN_02024F9C
+_021D7F54:
+ ldr r0, [sp, #0x14]
+ mov r1, #0x54
+ mul r1, r0
+ ldr r0, [sp, #0x10]
+ mov r7, #0
+ add r5, r0, r1
+ add r0, r5, #0
+ add r0, #0x5c
+ ldrh r0, [r0]
+ add r4, r7, #0
+ cmp r0, #0
+ bls _021D8002
+ bls _021D8002
+ ldr r1, _021D8010 ; =0x021D80FC
+ ldr r0, [sp, #0x14]
+ add r0, r1, r0
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x10]
+ str r0, [sp, #0x20]
+ add r0, #0x3c
+ str r0, [sp, #0x20]
+_021D7F7E:
+ add r0, r5, #0
+ add r0, #0x5e
+ ldrh r0, [r0]
+ cmp r4, r0
+ bne _021D7F8C
+ ldr r0, _021D8014 ; =0x0003040F
+ b _021D7F8E
+_021D7F8C:
+ ldr r0, _021D8018 ; =0x0001020F
+_021D7F8E:
+ ldr r1, [sp, #0x14]
+ cmp r1, #4
+ bne _021D7FC8
+ lsl r1, r4, #2
+ add r6, r5, r1
+ ldr r1, [sp, #0x18]
+ add r3, r7, #0
+ str r1, [sp]
+ mov r1, #0xff
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x20]
+ ldr r2, [r6, #0x60]
+ mov r1, #0
+ add r3, #0x64
+ bl FUN_0201BDE0
+ mov r0, #0
+ ldr r1, [r6, #0x60]
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r0, #0xc
+ add r0, r7, r0
+ lsl r0, r0, #0x18
+ asr r7, r0, #0x18
+ b _021D7FF2
+_021D7FC8:
+ ldr r1, [sp, #0x18]
+ lsl r2, r4, #2
+ str r1, [sp]
+ mov r1, #0xff
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #0
+ str r0, [sp, #0xc]
+ add r2, r5, r2
+ ldr r6, [sp, #0x1c]
+ add r3, r1, #0
+ ldrsb r6, [r6, r3]
+ mov r3, #0x30
+ mul r3, r4
+ add r3, #0x64
+ ldr r0, [sp, #0x20]
+ ldr r2, [r2, #0x60]
+ add r3, r6, r3
+ bl FUN_0201BDE0
+_021D7FF2:
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r5, #0
+ add r0, #0x5c
+ ldrh r0, [r0]
+ cmp r4, r0
+ blo _021D7F7E
+_021D8002:
+ ldr r0, [sp, #0x10]
+ add r0, #0x3c
+ str r0, [sp, #0x10]
+ bl FUN_020191D0
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8010: .word 0x021D80FC
+_021D8014: .word 0x0003040F
+_021D8018: .word 0x0001020F
+ thumb_func_end MOD60_021D7EA4
+
+ thumb_func_start MOD60_021D801C
+MOD60_021D801C: ; 0x021D801C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x10]
+ add r1, r5, #0
+ lsl r0, r0, #0x1b
+ lsr r2, r0, #0x1d
+ mov r0, #0x54
+ add r1, #0x5c
+ mul r0, r2
+ add r4, r1, r0
+ cmp r2, #6
+ beq _021D8080
+ ldr r0, _021D80F8 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x10
+ tst r0, r1
+ beq _021D805C
+ ldrh r0, [r4, #2]
+ ldrh r1, [r4]
+ add r0, r0, #1
+ bl _s32_div_f
+ strh r1, [r4, #2]
+ ldr r1, [r5, #0x10]
+ add r0, r5, #0
+ lsl r1, r1, #0x1b
+ lsr r1, r1, #0x1d
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl MOD60_021D7EA4
+ b _021D8080
+_021D805C:
+ mov r0, #0x20
+ tst r0, r1
+ beq _021D8080
+ ldrh r1, [r4]
+ ldrh r0, [r4, #2]
+ add r0, r0, r1
+ sub r0, r0, #1
+ bl _s32_div_f
+ strh r1, [r4, #2]
+ ldr r1, [r5, #0x10]
+ add r0, r5, #0
+ lsl r1, r1, #0x1b
+ lsr r1, r1, #0x1d
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl MOD60_021D7EA4
+_021D8080:
+ ldr r0, _021D80F8 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x40
+ tst r0, r1
+ beq _021D80BE
+ ldr r0, [r5, #0x10]
+ mov r1, #7
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1d
+ add r0, r0, #6
+ bl _u32_div_f
+ ldr r2, [r5, #0x10]
+ mov r0, #0x1c
+ bic r2, r0
+ lsl r0, r1, #0x1d
+ add r3, r2, #0
+ lsr r0, r0, #0x1b
+ orr r3, r0
+ str r3, [r5, #0x10]
+ lsl r3, r3, #0x1b
+ lsr r3, r3, #0x1d
+ lsl r3, r3, #4
+ add r3, #0x18
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ mov r2, #3
+ neg r3, r3
+ bl FUN_0201AEE4
+ pop {r3, r4, r5, pc}
+_021D80BE:
+ mov r0, #0x80
+ tst r0, r1
+ beq _021D80F6
+ ldr r0, [r5, #0x10]
+ mov r1, #7
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1d
+ add r0, r0, #1
+ bl _u32_div_f
+ ldr r2, [r5, #0x10]
+ mov r0, #0x1c
+ bic r2, r0
+ lsl r0, r1, #0x1d
+ add r3, r2, #0
+ lsr r0, r0, #0x1b
+ orr r3, r0
+ str r3, [r5, #0x10]
+ lsl r3, r3, #0x1b
+ lsr r3, r3, #0x1d
+ lsl r3, r3, #4
+ add r3, #0x18
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ mov r2, #3
+ neg r3, r3
+ bl FUN_0201AEE4
+_021D80F6:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D80F8: .word 0x021C48B8
+ thumb_func_end MOD60_021D801C
+
+ .section .rodata
+ ; 0x021D80FC
+ .incbin "baserom.nds", 0x2AD81C, 0xDC
diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s
new file mode 100644
index 00000000..c81d3a4a
--- /dev/null
+++ b/arm9/modules/61/asm/module_61.s
@@ -0,0 +1,1907 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD61_021D74E0
+MOD61_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ mov r2, #2
+ mov r0, #3
+ mov r1, #0x29
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ add r0, r5, #0
+ mov r1, #0xbc
+ mov r2, #0x29
+ bl FUN_02006268
+ mov r1, #0
+ mov r2, #0xbc
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x29
+ str r0, [r4]
+ add r0, r5, #0
+ bl FUN_0200628C
+ str r0, [r4, #0x1c]
+ ldrh r0, [r0]
+ ldr r1, _021D754C ; =0x0000FFFF
+ strb r0, [r4, #0xc]
+ ldrb r0, [r4, #0xc]
+ strb r0, [r4, #0xd]
+ ldr r0, [r4, #0x1c]
+ ldrb r0, [r0, #2]
+ strb r0, [r4, #0x11]
+ ldr r0, [r4, #0x1c]
+ ldrb r0, [r0, #3]
+ strb r0, [r4, #0x12]
+ ldrb r0, [r4, #0x11]
+ strb r0, [r4, #0x16]
+ strb r0, [r4, #0x17]
+ ldr r0, [r4, #0x1c]
+ strh r1, [r0]
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #4]
+ bl FUN_02024FF4
+ strb r0, [r4, #0x10]
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #4]
+ bl FUN_02025084
+ strh r0, [r4, #0xa]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D754C: .word 0x0000FFFF
+ thumb_func_end MOD61_021D74E0
+
+ thumb_func_start MOD61_021D7550
+MOD61_021D7550: ; 0x021D7550
+ push {r3, lr}
+ bl FUN_02006278
+ bl MOD61_021D78D4
+ cmp r0, #0
+ beq _021D7562
+ mov r0, #1
+ pop {r3, pc}
+_021D7562:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD61_021D7550
+
+ thumb_func_start MOD61_021D7568
+MOD61_021D7568: ; 0x021D7568
+ 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 MOD61_021D7568
+
+ thumb_func_start MOD61_021D7584
+MOD61_021D7584: ; 0x021D7584
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r6, r0, #0
+ add r5, r4, #0
+_021D758C:
+ ldr r0, [r6, #0x1c]
+ add r0, #0x1a
+ add r0, r0, r5
+ bl FUN_0201385C
+ cmp r0, #0
+ beq _021D759E
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021D759E:
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, #3
+ blt _021D758C
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD61_021D7584
+
+ thumb_func_start MOD61_021D75AC
+MOD61_021D75AC: ; 0x021D75AC
+ push {r3, lr}
+ ldr r0, _021D75C8 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D75C2
+ ldr r0, _021D75CC ; =0x000005E3
+ bl FUN_020054C8
+ mov r0, #1
+ pop {r3, pc}
+_021D75C2:
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_021D75C8: .word 0x021C48B8
+_021D75CC: .word 0x000005E3
+ thumb_func_end MOD61_021D75AC
+
+ thumb_func_start MOD61_021D75D0
+MOD61_021D75D0: ; 0x021D75D0
+ push {r3, r4, r5, lr}
+ ldr r1, _021D76E0 ; =0x021C48B8
+ add r4, r0, #0
+ ldr r2, [r1, #0x48]
+ mov r1, #1
+ add r5, r2, #0
+ mov r3, #0
+ tst r5, r1
+ beq _021D7648
+ ldrb r1, [r4, #0x11]
+ cmp r1, #3
+ bne _021D762E
+ ldrb r1, [r4, #0x12]
+ cmp r1, #0
+ bne _021D7612
+ bl MOD61_021D7584
+ cmp r0, #0
+ beq _021D7604
+ ldr r0, _021D76E4 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #2
+ strb r0, [r4, #0xc]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D7604:
+ ldr r0, [r4, #0x1c]
+ mov r1, #3
+ strh r1, [r0]
+ ldr r0, _021D76E8 ; =0x000005E3
+ bl FUN_020054C8
+ b _021D7620
+_021D7612:
+ ldr r0, _021D76E4 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #3
+ strb r0, [r4, #0xc]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D7620:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ strb r1, [r0, #3]
+ ldr r1, [r4, #0x1c]
+ ldrb r0, [r1, #3]
+ strb r0, [r1, #2]
+ b _021D7644
+_021D762E:
+ ldr r0, [r4, #0x1c]
+ strb r1, [r0, #2]
+ ldr r1, [r4, #0x1c]
+ ldrb r0, [r1, #2]
+ strh r0, [r1]
+ ldrb r1, [r4, #0x12]
+ ldr r0, [r4, #0x1c]
+ strb r1, [r0, #3]
+ ldr r0, _021D76E4 ; =0x000005DD
+ bl FUN_020054C8
+_021D7644:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D7648:
+ mov r0, #2
+ tst r0, r2
+ beq _021D765C
+ ldr r0, _021D76E4 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #3
+ strb r0, [r4, #0xc]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D765C:
+ mov r0, #8
+ tst r0, r2
+ beq _021D766C
+ mov r0, #3
+ strb r0, [r4, #0x11]
+ strb r3, [r4, #0x12]
+ add r3, r1, #0
+ b _021D76BE
+_021D766C:
+ mov r0, #0x80
+ tst r0, r2
+ beq _021D7688
+ ldrb r0, [r4, #0x11]
+ add r0, r0, #1
+ lsr r3, r0, #0x1f
+ lsl r2, r0, #0x1e
+ sub r2, r2, r3
+ mov r0, #0x1e
+ ror r2, r0
+ add r0, r3, r2
+ strb r0, [r4, #0x11]
+ add r3, r1, #0
+ b _021D76BE
+_021D7688:
+ mov r0, #0x40
+ tst r0, r2
+ beq _021D76A4
+ ldrb r0, [r4, #0x11]
+ add r0, r0, #3
+ lsr r3, r0, #0x1f
+ lsl r2, r0, #0x1e
+ sub r2, r2, r3
+ mov r0, #0x1e
+ ror r2, r0
+ add r0, r3, r2
+ strb r0, [r4, #0x11]
+ add r3, r1, #0
+ b _021D76BE
+_021D76A4:
+ mov r0, #0x30
+ tst r0, r2
+ beq _021D76BA
+ ldrb r0, [r4, #0x11]
+ cmp r0, #3
+ bne _021D76BE
+ ldrb r0, [r4, #0x12]
+ add r3, r1, #0
+ eor r0, r1
+ strb r0, [r4, #0x12]
+ b _021D76BE
+_021D76BA:
+ add r0, r3, #0
+ pop {r3, r4, r5, pc}
+_021D76BE:
+ cmp r3, #0
+ bne _021D76C6
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D76C6:
+ ldr r0, _021D76EC ; =0x000005DC
+ bl FUN_020054C8
+ ldrb r1, [r4, #0x11]
+ cmp r1, #3
+ bne _021D76DA
+ ldrb r0, [r4, #0x12]
+ add r0, r1, r0
+ strb r0, [r4, #0x16]
+ b _021D76DC
+_021D76DA:
+ strb r1, [r4, #0x16]
+_021D76DC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D76E0: .word 0x021C48B8
+_021D76E4: .word 0x000005DD
+_021D76E8: .word 0x000005E3
+_021D76EC: .word 0x000005DC
+ thumb_func_end MOD61_021D75D0
+
+ thumb_func_start MOD61_021D76F0
+MOD61_021D76F0: ; 0x021D76F0
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldrh r0, [r5, #8]
+ cmp r0, #0
+ beq _021D7702
+ cmp r0, #1
+ beq _021D774E
+ b _021D777C
+_021D7702:
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #1
+ mov r2, #0xa
+ mov r3, #6
+ bl FUN_0200D0BC
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #0xff
+ bl FUN_02019620
+ ldr r1, [r5]
+ mov r0, #0x4c
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r0, [r5, #0x20]
+ mov r1, #2
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, _021D7788 ; =0x0001020F
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #1
+ add r2, r4, #0
+ str r3, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ b _021D777C
+_021D774E:
+ ldr r0, _021D778C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ bne _021D775E
+ add sp, #0x10
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D775E:
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #1
+ bl FUN_0200D0E0
+ add r0, r5, #0
+ add r0, #0x94
+ bl FUN_02019570
+ mov r0, #0
+ strh r0, [r5, #8]
+ ldrb r1, [r5, #0xd]
+ add sp, #0x10
+ strb r1, [r5, #0xc]
+ pop {r3, r4, r5, pc}
+_021D777C:
+ ldrh r0, [r5, #8]
+ add r0, r0, #1
+ strh r0, [r5, #8]
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7788: .word 0x0001020F
+_021D778C: .word 0x021C48B8
+ thumb_func_end MOD61_021D76F0
+
+ thumb_func_start MOD61_021D7790
+MOD61_021D7790: ; 0x021D7790
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r1, _021D77B0 ; =0x021D842C
+ str r0, [sp]
+ ldr r0, [r4, #0x18]
+ mov r2, #1
+ mov r3, #5
+ bl FUN_02002198
+ add r4, #0xa4
+ str r0, [r4]
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D77B0: .word 0x021D842C
+ thumb_func_end MOD61_021D7790
+
+ thumb_func_start MOD61_021D77B4
+MOD61_021D77B4: ; 0x021D77B4
+ push {r3, lr}
+ add r1, r0, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl FUN_020021AC
+ cmp r0, #0
+ beq _021D77D0
+ mov r1, #1
+ mvn r1, r1
+ cmp r0, r1
+ beq _021D77D4
+ b _021D77D8
+_021D77D0:
+ mov r0, #1
+ pop {r3, pc}
+_021D77D4:
+ mov r0, #0
+ pop {r3, pc}
+_021D77D8:
+ add r0, r1, #1
+ pop {r3, pc}
+ thumb_func_end MOD61_021D77B4
+
+ thumb_func_start MOD61_021D77DC
+MOD61_021D77DC: ; 0x021D77DC
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldrh r1, [r5, #8]
+ cmp r1, #0
+ beq _021D77F2
+ cmp r1, #1
+ beq _021D7864
+ cmp r1, #2
+ beq _021D787C
+ b _021D78BA
+_021D77F2:
+ mov r1, #1
+ add r0, #0x94
+ mov r2, #0xa
+ mov r3, #6
+ strb r1, [r5, #0x13]
+ bl FUN_0200D0BC
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #0xff
+ bl FUN_02019620
+ ldr r1, [r5]
+ mov r0, #0x4c
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r0, [r5, #0x20]
+ mov r1, #3
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r3, #0
+ str r3, [sp]
+ ldrb r0, [r5, #0x10]
+ mov r1, #1
+ add r2, r4, #0
+ str r0, [sp, #4]
+ ldr r0, _021D78C8 ; =0x0001020F
+ str r0, [sp, #8]
+ add r0, r5, #0
+ str r3, [sp, #0xc]
+ add r0, #0x94
+ bl FUN_0201BDE0
+ strb r0, [r5, #0xf]
+ add r0, r4, #0
+ bl FUN_02021A20
+ mov r1, #0
+ ldr r0, _021D78CC ; =0x00007FFF
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldrb r2, [r5, #0x17]
+ ldr r0, [r5, #0x30]
+ mov r3, #1
+ add r2, #0x22
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ bl FUN_020039E8
+ ldrb r0, [r5, #0x16]
+ strb r0, [r5, #0x17]
+ mov r0, #0
+ strb r0, [r5, #0x15]
+ strb r0, [r5, #0x14]
+ b _021D78BA
+_021D7864:
+ ldrb r0, [r5, #0xf]
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _021D7874
+ add sp, #0x10
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D7874:
+ add r0, r5, #0
+ bl MOD61_021D7790
+ b _021D78BA
+_021D787C:
+ bl MOD61_021D77B4
+ add r4, r0, #0
+ bpl _021D788A
+ add sp, #0x10
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D788A:
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #1
+ bl FUN_0200D0E0
+ add r0, r5, #0
+ add r0, #0x94
+ bl FUN_02019570
+ mov r0, #0
+ strh r0, [r5, #8]
+ cmp r4, #0
+ beq _021D78B0
+ ldr r1, _021D78D0 ; =0x0000FFFF
+ ldr r0, [r5, #0x1c]
+ add sp, #0x10
+ strh r1, [r0]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D78B0:
+ ldrb r1, [r5, #0xd]
+ add sp, #0x10
+ strb r1, [r5, #0xc]
+ strb r0, [r5, #0x13]
+ pop {r3, r4, r5, pc}
+_021D78BA:
+ ldrh r0, [r5, #8]
+ add r0, r0, #1
+ strh r0, [r5, #8]
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_021D78C8: .word 0x0001020F
+_021D78CC: .word 0x00007FFF
+_021D78D0: .word 0x0000FFFF
+ thumb_func_end MOD61_021D77DC
+
+ thumb_func_start MOD61_021D78D4
+MOD61_021D78D4: ; 0x021D78D4
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #5
+ bls _021D78E2
+ b _021D7A46
+_021D78E2:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D78EE: ; jump table
+ .short _021D78FA - _021D78EE - 2 ; case 0
+ .short _021D7940 - _021D78EE - 2 ; case 1
+ .short _021D798A - _021D78EE - 2 ; case 2
+ .short _021D79A6 - _021D78EE - 2 ; case 3
+ .short _021D79E0 - _021D78EE - 2 ; case 4
+ .short _021D7A32 - _021D78EE - 2 ; case 5
+_021D78FA:
+ 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, _021D7A54 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D7A58 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0
+ bl FUN_0200E388
+ mov r0, #1
+ bl FUN_0200E388
+ b _021D7A46
+_021D7940:
+ bl MOD61_021D7B38
+ cmp r0, #0
+ bne _021D794E
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D794E:
+ ldr r0, _021D7A5C ; =MOD61_021D7A6C
+ add r1, r4, #0
+ bl FUN_02015F10
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0
+ bl FUN_0200E394
+ mov r1, #4
+ ldr r0, _021D7A60 ; =0x04000050
+ mov r2, #8
+ mov r3, #0x1c
+ str r1, [sp]
+ bl G2x_SetBlendAlpha_
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #5
+ ldr r0, [r4, #0x30]
+ ldr r2, _021D7A64 ; =0x0000FFFF
+ sub r3, r1, #6
+ bl FUN_02003210
+ b _021D7A46
+_021D798A:
+ add r0, #0xac
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D7996
+ bl FUN_0200BC1C
+_021D7996:
+ ldr r0, [r4, #0x30]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _021D7A46
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D79A6:
+ add r0, #0xac
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D79B2
+ bl FUN_0200BC1C
+_021D79B2:
+ ldrb r1, [r4, #0xc]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _021D7A68 ; =0x021D8444
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ bne _021D79C8
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D79C8:
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r1, #5
+ ldr r0, [r4, #0x30]
+ ldr r2, _021D7A64 ; =0x0000FFFF
+ sub r3, r1, #6
+ bl FUN_02003210
+ b _021D7A46
+_021D79E0:
+ ldr r0, [r4, #0x30]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _021D79FC
+ add r4, #0xac
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D79F6
+ bl FUN_0200BC1C
+_021D79F6:
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D79FC:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D7A54 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D7A58 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ b _021D7A46
+_021D7A32:
+ bl MOD61_021D7B84
+ cmp r0, #0
+ beq _021D7A40
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, pc}
+_021D7A40:
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D7A46:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_021D7A54: .word 0xFFFFE0FF
+_021D7A58: .word 0x04001000
+_021D7A5C: .word MOD61_021D7A6C
+_021D7A60: .word 0x04000050
+_021D7A64: .word 0x0000FFFF
+_021D7A68: .word 0x021D8444
+ thumb_func_end MOD61_021D78D4
+
+ thumb_func_start MOD61_021D7A6C
+MOD61_021D7A6C: ; 0x021D7A6C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x30]
+ cmp r0, #0
+ beq _021D7A7A
+ bl FUN_0200372C
+_021D7A7A:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D7A88
+ bl FUN_0200BC30
+_021D7A88:
+ bl FUN_020AEEB8
+ ldr r0, [r4, #0x18]
+ bl FUN_0201AB60
+ ldr r3, _021D7AA0 ; =0x027E0000
+ ldr r1, _021D7AA4 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021D7AA0: .word 0x027E0000
+_021D7AA4: .word 0x00003FF8
+ thumb_func_end MOD61_021D7A6C
+
+ thumb_func_start MOD61_021D7AA8
+MOD61_021D7AA8: ; 0x021D7AA8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldr r2, [r4, #0x30]
+ cmp r2, #0
+ bne _021D7ABC
+ bl FUN_0200CAB4
+ add sp, #8
+ pop {r4, pc}
+_021D7ABC:
+ ldrb r0, [r4, #0x13]
+ cmp r0, #0
+ bne _021D7B30
+ ldrb r3, [r4, #0x17]
+ ldrb r0, [r4, #0x16]
+ cmp r3, r0
+ beq _021D7AEA
+ mov r1, #0
+ ldr r0, _021D7B34 ; =0x00007FFF
+ str r1, [sp]
+ str r0, [sp, #4]
+ add r3, #0x22
+ add r0, r2, #0
+ lsl r2, r3, #0x10
+ lsr r2, r2, #0x10
+ mov r3, #1
+ bl FUN_020039E8
+ ldrb r0, [r4, #0x16]
+ strb r0, [r4, #0x17]
+ mov r0, #0
+ strb r0, [r4, #0x15]
+ strb r0, [r4, #0x14]
+_021D7AEA:
+ ldrb r0, [r4, #0x14]
+ mov r1, #0
+ mov r3, #1
+ str r0, [sp]
+ ldr r0, _021D7B34 ; =0x00007FFF
+ str r0, [sp, #4]
+ ldrb r2, [r4, #0x16]
+ ldr r0, [r4, #0x30]
+ add r2, #0x22
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ bl FUN_020039E8
+ ldrb r0, [r4, #0x15]
+ ldrb r1, [r4, #0x14]
+ cmp r0, #0
+ beq _021D7B20
+ sub r0, r1, #1
+ strb r0, [r4, #0x14]
+ cmp r1, #1
+ bne _021D7B30
+ ldrb r1, [r4, #0x15]
+ mov r0, #1
+ add sp, #8
+ eor r0, r1
+ strb r0, [r4, #0x15]
+ pop {r4, pc}
+_021D7B20:
+ add r0, r1, #1
+ strb r0, [r4, #0x14]
+ cmp r1, #0xc
+ bne _021D7B30
+ ldrb r1, [r4, #0x15]
+ mov r0, #1
+ eor r0, r1
+ strb r0, [r4, #0x15]
+_021D7B30:
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_021D7B34: .word 0x00007FFF
+ thumb_func_end MOD61_021D7AA8
+
+ thumb_func_start MOD61_021D7B38
+MOD61_021D7B38: ; 0x021D7B38
+ push {r4, lr}
+ add r4, r0, #0
+ ldrh r1, [r4, #8]
+ cmp r1, #3
+ bhi _021D7B7A
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7B4E: ; jump table
+ .short _021D7B56 - _021D7B4E - 2 ; case 0
+ .short _021D7B5C - _021D7B4E - 2 ; case 1
+ .short _021D7B62 - _021D7B4E - 2 ; case 2
+ .short _021D7B6E - _021D7B4E - 2 ; case 3
+_021D7B56:
+ bl MOD61_021D7BD0
+ b _021D7B7A
+_021D7B5C:
+ bl MOD61_021D7CE8
+ b _021D7B7A
+_021D7B62:
+ bl MOD61_021D7FF4
+ add r0, r4, #0
+ bl MOD61_021D8114
+ b _021D7B7A
+_021D7B6E:
+ bl MOD61_021D8228
+ mov r0, #0
+ strh r0, [r4, #8]
+ mov r0, #1
+ pop {r4, pc}
+_021D7B7A:
+ ldrh r0, [r4, #8]
+ add r0, r0, #1
+ strh r0, [r4, #8]
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD61_021D7B38
+
+ thumb_func_start MOD61_021D7B84
+MOD61_021D7B84: ; 0x021D7B84
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD61_021D83E8
+ add r0, r4, #0
+ add r0, #0x24
+ beq _021D7B98
+ ldr r0, [r4, #0x20]
+ bl FUN_0200A8B8
+_021D7B98:
+ add r0, r4, #0
+ bl MOD61_021D80F4
+ add r0, r4, #0
+ bl MOD61_021D7FB4
+ add r0, r4, #0
+ bl MOD61_021D7CB4
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD61_021D7B84
+
+ thumb_func_start MOD61_021D7BB0
+MOD61_021D7BB0: ; 0x021D7BB0
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D7BCC ; =0x021D84A0
+ add r3, sp, #0
+ mov r2, #5
+_021D7BBA:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7BBA
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D7BCC: .word 0x021D84A0
+ thumb_func_end MOD61_021D7BB0
+
+ thumb_func_start MOD61_021D7BD0
+MOD61_021D7BD0: ; 0x021D7BD0
+ push {r4, r5, lr}
+ sub sp, #0x9c
+ add r4, r0, #0
+ bl MOD61_021D7BB0
+ ldr r0, [r4]
+ bl FUN_02016B94
+ add r3, sp, #0
+ ldr r5, _021D7CAC ; =0x021D8434
+ 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, _021D7CB0 ; =0x021D84C8
+ add r3, sp, #0x10
+ mov r2, #0x11
+_021D7BFC:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7BFC
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r3]
+ ldr r0, [r4, #0x18]
+ add r2, sp, #0x10
+ add r3, r1, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ add r2, sp, #0x2c
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ add r2, sp, #0x48
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #3
+ add r2, sp, #0x64
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #4
+ add r2, sp, #0x80
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_02018744
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_02018744
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_02018744
+ ldr r0, [r4, #0x18]
+ mov r1, #3
+ bl FUN_02018744
+ ldr r0, [r4, #0x18]
+ mov r1, #4
+ bl FUN_02018744
+ mov r0, #0
+ ldr r3, [r4]
+ mov r1, #0x20
+ add r2, r0, #0
+ bl FUN_02017F18
+ ldr r3, [r4]
+ mov r0, #1
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r3, [r4]
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r3, [r4]
+ mov r0, #3
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r3, [r4]
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ add sp, #0x9c
+ pop {r4, r5, pc}
+ .align 2, 0
+_021D7CAC: .word 0x021D8434
+_021D7CB0: .word 0x021D84C8
+ thumb_func_end MOD61_021D7BD0
+
+ thumb_func_start MOD61_021D7CB4
+MOD61_021D7CB4: ; 0x021D7CB4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD61_021D7CB4
+
+ thumb_func_start MOD61_021D7CE8
+MOD61_021D7CE8: ; 0x021D7CE8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ ldr r0, [r5, #0x1c]
+ ldr r1, [r5]
+ ldrb r4, [r0, #0xf]
+ str r4, [sp, #0x1c]
+ ldr r0, [sp, #0x1c]
+ add r4, #0xc
+ str r0, [sp, #0x20]
+ add r0, #0x18
+ str r0, [sp, #0x20]
+ mov r0, #0x4f
+ bl FUN_02006670
+ mov r1, #0
+ str r1, [sp]
+ add r6, r0, #0
+ ldr r0, [r5]
+ mov r2, #1
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x18]
+ mov r3, #5
+ bl FUN_0200CB00
+ ldrh r0, [r5, #0xa]
+ mov r1, #0
+ mov r2, #0xa
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [r5]
+ mov r3, #6
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x18]
+ bl FUN_0200CD68
+ mov r0, #0x4f
+ add r1, r4, #0
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_020169D8
+ add r7, r0, #0
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ bl FUN_02006774
+ add r0, r7, #0
+ add r1, sp, #0x28
+ bl FUN_020B0088
+ ldr r3, [sp, #0x28]
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r5, #0x18]
+ ldr r3, [r3, #0x10]
+ mov r1, #1
+ bl FUN_02017E14
+ ldr r3, [sp, #0x28]
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r5, #0x18]
+ ldr r3, [r3, #0x10]
+ mov r1, #4
+ bl FUN_02017E14
+ add r0, r7, #0
+ bl FUN_02016A18
+ ldr r1, [sp, #0x1c]
+ mov r0, #0x4f
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_020169D8
+ add r4, r0, #0
+ ldr r1, [sp, #0x1c]
+ add r0, r6, #0
+ add r2, r4, #0
+ bl FUN_02006774
+ add r0, r4, #0
+ add r1, sp, #0x24
+ bl FUN_020B0138
+ ldr r2, [sp, #0x24]
+ mov r0, #4
+ ldr r1, [r2, #0xc]
+ ldr r2, [r2, #8]
+ mov r3, #0
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ bl FUN_02017FB4
+ ldr r0, [r5]
+ bl FUN_02002FD0
+ str r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0
+ mov r2, #0xe0
+ bl FUN_02003008
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #2
+ mov r2, #0x60
+ bl FUN_02003008
+ mov r0, #0x60
+ str r0, [sp]
+ ldr r1, [sp, #0x24]
+ mov r2, #0
+ ldr r0, [r5, #0x30]
+ ldr r1, [r1, #0xc]
+ add r3, r2, #0
+ bl FUN_02003054
+ ldrb r0, [r5, #0xc]
+ cmp r0, #1
+ bne _021D7E00
+ mov r0, #0x20
+ str r0, [sp]
+ ldr r1, [sp, #0x24]
+ ldr r0, [r5, #0x30]
+ ldr r1, [r1, #0xc]
+ mov r2, #0
+ add r1, #0x60
+ mov r3, #0x10
+ bl FUN_02003054
+_021D7E00:
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0x60
+ str r0, [sp, #4]
+ mov r2, #0
+ str r2, [sp, #8]
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0x13
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x30
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0xe
+ mov r2, #6
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x40
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0xe
+ mov r2, #7
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x50
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0x26
+ mov r2, #0x18
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x60
+ str r0, [sp, #8]
+ ldrh r2, [r5, #0xa]
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0x26
+ add r2, #0x19
+ bl FUN_020030E8
+ mov r0, #0x10
+ mov r1, #0
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r5, #0x30]
+ add r2, r1, #0
+ mov r3, #0x70
+ bl FUN_020039E8
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ ldr r0, [r5, #0x30]
+ mov r1, #2
+ mov r3, #0x30
+ bl FUN_020039E8
+ ldr r0, [r5, #0x30]
+ mov r1, #1
+ bl FUN_020038F0
+ ldr r0, [r5, #0x30]
+ bl FUN_0200372C
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r1, [sp, #0x20]
+ mov r0, #0x4f
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_02016998
+ str r0, [r5, #0x34]
+ ldr r1, [sp, #0x20]
+ ldr r2, [r5, #0x34]
+ add r0, r6, #0
+ bl FUN_02006774
+ add r1, r5, #0
+ ldr r0, [r5, #0x34]
+ add r1, #0x3c
+ bl FUN_020B0180
+ mov r0, #0x4f
+ mov r1, #0x24
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_02016998
+ str r0, [r5, #0x38]
+ ldr r2, [r5, #0x38]
+ add r0, r6, #0
+ mov r1, #0x24
+ bl FUN_02006774
+ add r1, r5, #0
+ ldr r0, [r5, #0x38]
+ add r1, #0x40
+ bl FUN_020B0180
+ add r0, r6, #0
+ bl FUN_020066F4
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x18]
+ ldr r2, _021D7FAC ; =0x00002001
+ mov r1, #4
+ bl FUN_02018540
+ mov r2, #0
+ ldr r0, [r5, #0x3c]
+ mov r1, #0x20
+ str r1, [sp]
+ mov r1, #0x18
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldrh r1, [r0]
+ add r3, r2, #0
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r1, #3
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x18]
+ bl FUN_02018170
+ ldr r0, [r5, #0x18]
+ mov r1, #3
+ bl FUN_0201AC68
+ ldr r0, [r5, #0x18]
+ mov r1, #4
+ bl FUN_0201AC68
+ ldrb r0, [r5, #0xc]
+ cmp r0, #1
+ bne _021D7FA6
+ ldr r0, [r5, #0x40]
+ mov r1, #0x20
+ str r1, [sp]
+ mov r1, #0x18
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ mov r2, #0
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldrh r1, [r0]
+ add r3, r2, #0
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r1, #2
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x18]
+ bl FUN_02018170
+ ldr r0, [r5, #0x18]
+ mov r1, #2
+ bl FUN_0201AC68
+ mov r2, #0
+ strb r2, [r5, #0x14]
+ ldr r0, _021D7FB0 ; =MOD61_021D7AA8
+ add r1, r5, #0
+ strb r2, [r5, #0x15]
+ bl FUN_0200CA44
+_021D7FA6:
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D7FAC: .word 0x00002001
+_021D7FB0: .word MOD61_021D7AA8
+ thumb_func_end MOD61_021D7CE8
+
+ thumb_func_start MOD61_021D7FB4
+MOD61_021D7FB4: ; 0x021D7FB4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4, #0x38]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x34]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ bl FUN_02003038
+ ldr r0, [r4, #0x30]
+ mov r1, #0
+ bl FUN_02003038
+ ldr r0, [r4, #0x30]
+ bl FUN_02002FEC
+ mov r1, #0
+ str r1, [r4, #0x30]
+ ldr r0, _021D7FF0 ; =0x04000050
+ add r2, r1, #0
+ mov r3, #0x1f
+ str r1, [sp]
+ bl G2x_SetBlendAlpha_
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D7FF0: .word 0x04000050
+ thumb_func_end MOD61_021D7FB4
+
+ thumb_func_start MOD61_021D7FF4
+MOD61_021D7FF4: ; 0x021D7FF4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ mov r3, #3
+ add r5, r0, #0
+ str r3, [sp]
+ mov r0, #0x1a
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r2, #1
+ add r1, r5, #0
+ ldr r0, _021D80DC ; =0x00000397
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x44
+ bl FUN_02019064
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0x1a
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r2, #1
+ add r1, r5, #0
+ ldr r0, _021D80E0 ; =0x0000032F
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x54
+ mov r3, #3
+ bl FUN_02019064
+ mov r0, #0xd
+ str r0, [sp]
+ mov r0, #0x1a
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r2, #1
+ add r1, r5, #0
+ ldr r0, _021D80E4 ; =0x000002C7
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x64
+ mov r3, #3
+ bl FUN_02019064
+ mov r0, #0x14
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r2, #1
+ add r1, r5, #0
+ ldr r0, _021D80E8 ; =0x000002B7
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x74
+ mov r3, #0x15
+ bl FUN_02019064
+ mov r0, #0x14
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r2, #1
+ add r1, r5, #0
+ ldr r0, _021D80EC ; =0x000002A7
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x84
+ mov r3, #3
+ bl FUN_02019064
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, _021D80F0 ; =0x00000297
+ add r1, r5, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x94
+ mov r2, #0
+ mov r3, #2
+ bl FUN_02019064
+ mov r4, #0
+ add r5, #0x44
+ add r6, r4, #0
+_021D80BE:
+ add r0, r5, #0
+ add r1, r6, #0
+ bl FUN_02019620
+ cmp r4, #5
+ bge _021D80D0
+ add r0, r5, #0
+ bl FUN_020191D0
+_021D80D0:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #6
+ blt _021D80BE
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D80DC: .word 0x00000397
+_021D80E0: .word 0x0000032F
+_021D80E4: .word 0x000002C7
+_021D80E8: .word 0x000002B7
+_021D80EC: .word 0x000002A7
+_021D80F0: .word 0x00000297
+ thumb_func_end MOD61_021D7FF4
+
+ thumb_func_start MOD61_021D80F4
+MOD61_021D80F4: ; 0x021D80F4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+ add r5, #0x44
+_021D80FC:
+ add r0, r5, #0
+ bl FUN_02019570
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #6
+ blt _021D80FC
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD61_021D80F4
+
+ thumb_func_start MOD61_021D8114
+MOD61_021D8114: ; 0x021D8114
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ mov r7, #0
+ add r6, r4, #0
+ add r5, r7, #0
+ add r6, #0x44
+_021D8122:
+ ldr r0, [r4, #0x1c]
+ add r0, #0x1a
+ add r0, r0, r5
+ bl FUN_0201385C
+ cmp r0, #0
+ beq _021D8164
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r4]
+ add r0, #0x1a
+ add r0, r0, r5
+ bl FUN_020137D4
+ str r0, [sp, #0x10]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D8220 ; =0x00010200
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ mov r1, #1
+ mov r3, #0
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_020191D0
+_021D8164:
+ add r7, r7, #1
+ add r5, #8
+ add r6, #0x10
+ cmp r7, #3
+ blt _021D8122
+ ldrb r0, [r4, #0xc]
+ cmp r0, #1
+ bne _021D81F8
+ ldr r2, _021D8224 ; =0x00000169
+ ldr r3, [r4]
+ mov r0, #1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ str r0, [r4, #0x20]
+ ldr r1, [r4]
+ mov r0, #0x10
+ bl FUN_020219F4
+ add r5, r0, #0
+ add r0, r4, #0
+ str r0, [sp, #0x18]
+ add r0, #0x44
+ mov r6, #0
+ str r0, [sp, #0x18]
+_021D8196:
+ add r0, r5, #0
+ bl FUN_02021A4C
+ ldr r0, [r4, #0x20]
+ add r1, r6, #0
+ add r2, r5, #0
+ bl FUN_0200A8E0
+ mov r0, #1
+ add r1, r5, #0
+ mov r2, #0
+ bl FUN_02002E14
+ mov r1, #0x40
+ sub r7, r1, r0
+ add r0, r6, #3
+ lsl r0, r0, #4
+ str r0, [sp, #0x14]
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _021D8220 ; =0x00010200
+ lsr r3, r7, #0x1f
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r3, r7, r3
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r2, r5, #0
+ add r0, r0, r1
+ mov r1, #1
+ asr r3, r3, #1
+ bl FUN_0201BDE0
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r0, r0, r1
+ bl FUN_020191D0
+ add r6, r6, #1
+ cmp r6, #2
+ blt _021D8196
+ add r0, r5, #0
+ bl FUN_02021A20
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+_021D81F8:
+ mov r0, #2
+ str r0, [sp]
+ mov r3, #0
+ ldr r0, _021D8220 ; =0x00010200
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r2, [r4, #0x1c]
+ add r0, r4, #0
+ ldr r2, [r2, #0x10]
+ add r0, #0x74
+ mov r1, #1
+ bl FUN_0201BDE0
+ add r4, #0x74
+ add r0, r4, #0
+ bl FUN_020191D0
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8220: .word 0x00010200
+_021D8224: .word 0x00000169
+ thumb_func_end MOD61_021D8114
+
+ thumb_func_start MOD61_021D8228
+MOD61_021D8228: ; 0x021D8228
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x94
+ add r5, r0, #0
+ bl FUN_02033F20
+ ldrb r0, [r5, #0xc]
+ cmp r0, #1
+ bne _021D823A
+ b _021D83D4
+_021D823A:
+ ldr r1, [r5]
+ mov r0, #0x20
+ bl FUN_0201C24C
+ ldr r0, [r5]
+ bl FUN_0200BB14
+ add r1, r5, #0
+ add r1, #0xa8
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ bl FUN_0200BB34
+ add r1, r5, #0
+ add r1, #0xac
+ add r2, sp, #0x40
+ ldr r4, _021D83D8 ; =0x021D8480
+ str r0, [r1]
+ ldmia r4!, {r0, r1}
+ add r3, r2, #0
+ stmia r2!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ ldr r6, _021D83DC ; =0x021D8454
+ stmia r2!, {r0, r1}
+ add r4, sp, #0x2c
+ ldmia r6!, {r0, r1}
+ add r2, r4, #0
+ stmia r4!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldr r0, [r6]
+ ldr r6, _021D83E0 ; =0x021D8468
+ str r0, [r4]
+ add r4, sp, #0x14
+ ldmia r6!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r4!, {r0, r1}
+ add r0, r5, #0
+ add r0, #0xa8
+ add r1, r3, #0
+ ldr r0, [r0]
+ mov r3, #0x20
+ bl FUN_0200BB6C
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #3
+ bl FUN_0200BBF0
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r2, sp, #0x14
+ bl FUN_0200BF60
+ ldr r0, [r5]
+ bl FUN_0200A064
+ bl FUN_0206B888
+ mov r1, #0
+ add r3, r0, #0
+ str r1, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x13
+ bl FUN_0200C06C
+ bl FUN_0206B88C
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x13
+ bl FUN_0200C124
+ bl FUN_0206B898
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x13
+ bl FUN_0200C13C
+ mov r6, #0
+ add r4, r6, #0
+ add r7, r6, #0
+ str r5, [sp, #0x10]
+_021D8338:
+ ldr r0, [r5, #0x1c]
+ add r3, r0, r4
+ ldrh r1, [r3, #0x14]
+ ldr r0, _021D83E4 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021D83D4
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r6, [sp, #8]
+ ldrh r3, [r3, #0x14]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ lsl r3, r3, #0x14
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x13
+ lsr r3, r3, #0x14
+ bl FUN_0200C918
+ add r0, sp, #0x60
+ mov r1, #0
+ mov r2, #0x34
+ bl MI_CpuFill8
+ mov r0, #0x80
+ sub r1, r0, r7
+ add r0, sp, #0x60
+ strh r1, [r0]
+ mov r1, #0xa0
+ strh r1, [r0, #2]
+ mov r1, #0
+ strh r1, [r0, #4]
+ strh r1, [r0, #6]
+ mov r0, #2
+ str r0, [sp, #0x8c]
+ ldr r0, [r5, #0x1c]
+ add r2, sp, #0x60
+ add r0, r0, r4
+ ldrh r0, [r0, #0x14]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x1c
+ str r0, [sp, #0x6c]
+ add r0, r1, #0
+ str r0, [sp, #0x90]
+ mov r0, #1
+ str r0, [sp, #0x70]
+ add r0, r1, #0
+ str r0, [sp, #0x78]
+ str r0, [sp, #0x7c]
+ str r0, [sp, #0x80]
+ sub r0, r1, #1
+ str r0, [sp, #0x84]
+ sub r0, r1, #1
+ str r0, [sp, #0x88]
+ add r0, r5, #0
+ add r1, r5, #0
+ str r6, [sp, #0x74]
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl FUN_0200C154
+ ldr r1, [sp, #0x10]
+ add r6, r6, #1
+ add r1, #0xb0
+ str r0, [r1]
+ ldr r0, [sp, #0x10]
+ add r4, r4, #2
+ add r0, r0, #4
+ add r7, #0x28
+ str r0, [sp, #0x10]
+ cmp r6, #3
+ blt _021D8338
+_021D83D4:
+ add sp, #0x94
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D83D8: .word 0x021D8480
+_021D83DC: .word 0x021D8454
+_021D83E0: .word 0x021D8468
+_021D83E4: .word 0x0000FFFF
+ thumb_func_end MOD61_021D8228
+
+ thumb_func_start MOD61_021D83E8
+MOD61_021D83E8: ; 0x021D83E8
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldrb r0, [r6, #0xc]
+ cmp r0, #0
+ bne _021D8428
+ mov r4, #0
+ add r5, r6, #0
+_021D83F6:
+ add r0, r5, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D8404
+ bl FUN_0200C3DC
+_021D8404:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _021D83F6
+ add r0, r6, #0
+ add r1, r6, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl FUN_0200C398
+ add r6, #0xa8
+ ldr r0, [r6]
+ bl FUN_0200BD04
+ bl FUN_0201C29C
+_021D8428:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD61_021D83E8
+
+ .section .rodata
+ ; 0x021D842C
+ .incbin "baserom.nds", 0x2AE94C, 0x128
diff --git a/arm9/modules/62/asm/module_62.s b/arm9/modules/62/asm/module_62.s
new file mode 100644
index 00000000..4623b0ae
--- /dev/null
+++ b/arm9/modules/62/asm/module_62.s
@@ -0,0 +1,7543 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD62_0222D5C0
+MOD62_0222D5C0: ; 0x0222D5C0
+ ldr r3, _0222D5C8 ; =HandleLoadOverlay
+ ldr r0, _0222D5CC ; =SDK_OVERLAY_MODULE_08_ID
+ mov r1, #2
+ bx r3
+ .align 2, 0
+_0222D5C8: .word HandleLoadOverlay
+_0222D5CC: .word SDK_OVERLAY_MODULE_08_ID
+ thumb_func_end MOD62_0222D5C0
+
+ thumb_func_start MOD62_0222D5D0
+MOD62_0222D5D0: ; 0x0222D5D0
+ add r3, r2, #0
+ sub r3, #0xa
+ strb r3, [r0]
+ add r3, r1, #0
+ sub r3, #0xa
+ strb r3, [r0, #2]
+ add r2, #0xa
+ strb r2, [r0, #1]
+ add r1, #0xa
+ strb r1, [r0, #3]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD62_0222D5D0
+
+ thumb_func_start MOD62_0222D5E8
+MOD62_0222D5E8: ; 0x0222D5E8
+ mov r1, #0
+ strb r1, [r0]
+ strb r1, [r0, #2]
+ mov r1, #0xc0
+ strb r1, [r0, #1]
+ mov r1, #0xff
+ strb r1, [r0, #3]
+ bx lr
+ thumb_func_end MOD62_0222D5E8
+
+ thumb_func_start MOD62_0222D5F8
+MOD62_0222D5F8: ; 0x0222D5F8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ beq _0222D64C
+ cmp r2, #1
+ bne _0222D628
+ ldr r3, _0222D650 ; =0x021C48F8
+ mov r1, #0x1c
+ mov r2, #0x1e
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, r4, #0
+ bl FUN_0200C714
+ add r1, sp, #0
+ add r0, r4, #0
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_0200C7A0
+ add r0, r5, #0
+ bl MOD62_0222D5E8
+ pop {r3, r4, r5, pc}
+_0222D628:
+ add r1, sp, #0
+ add r0, r4, #0
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_0200C7A0
+ add r3, sp, #0
+ mov r1, #2
+ mov r2, #0
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, r5, #0
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x18
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ bl MOD62_0222D5D0
+_0222D64C:
+ pop {r3, r4, r5, pc}
+ nop
+_0222D650: .word 0x021C48F8
+ thumb_func_end MOD62_0222D5F8
+
+ thumb_func_start MOD62_0222D654
+MOD62_0222D654: ; 0x0222D654
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ add r7, r4, #0
+ mov r6, #0xcb
+ add r5, r0, #0
+ sub r7, #0x38
+ lsl r6, r6, #2
+_0222D662:
+ ldr r0, [r5, r6]
+ cmp r0, #0
+ beq _0222D670
+ add r1, r7, #0
+ mov r2, #0x10
+ bl FUN_0200C82C
+_0222D670:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #8
+ blt _0222D662
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222D654
+
+ thumb_func_start MOD62_0222D67C
+MOD62_0222D67C: ; 0x0222D67C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ mov r6, #0
+ lsl r0, r0, #3
+ add r0, r7, r0
+ ldr r4, [r0, #8]
+ add r5, r7, #0
+_0222D690:
+ ldrb r1, [r4]
+ cmp r1, #0
+ beq _0222D6CE
+ mov r0, #0xca
+ lsl r0, r0, #2
+ strb r1, [r5, r0]
+ ldrb r1, [r4, #1]
+ add r0, r0, #1
+ strb r1, [r5, r0]
+ ldrb r1, [r4, #2]
+ ldr r0, _0222D6E8 ; =0x0000032A
+ strb r1, [r5, r0]
+ lsl r1, r6, #0x18
+ add r0, r7, #0
+ lsr r1, r1, #0x18
+ bl MOD62_0222D9A0
+ mov r0, #0x33
+ mov r1, #0xcb
+ lsl r0, r0, #4
+ lsl r1, r1, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ mov r2, #0
+ bl MOD62_0222D5F8
+ mov r0, #0xc9
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ b _0222D6DA
+_0222D6CE:
+ mov r0, #0xc9
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, r0, #4
+ strb r1, [r5, r0]
+_0222D6DA:
+ add r6, r6, #1
+ add r4, r4, #3
+ add r5, #0x10
+ cmp r6, #8
+ blt _0222D690
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222D6E8: .word 0x0000032A
+ thumb_func_end MOD62_0222D67C
+
+ thumb_func_start MOD62_0222D6EC
+MOD62_0222D6EC: ; 0x0222D6EC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ mov r0, #0xc9
+ mov r4, #0
+ add r3, r6, #0
+ lsl r0, r0, #2
+_0222D6FA:
+ ldr r2, [r3, r0]
+ cmp r2, #1
+ beq _0222D75C
+ add r0, r6, r1
+ mov r1, #0x42
+ lsl r1, r1, #4
+ ldrb r3, [r0, r1]
+ lsl r5, r4, #4
+ add r0, r1, #0
+ add r2, r6, r5
+ sub r0, #0xf8
+ strb r3, [r2, r0]
+ add r0, r1, #0
+ sub r0, #0xf7
+ add r7, r6, r0
+ mov r0, #0xbe
+ sub r1, #0xf6
+ strb r0, [r7, r5]
+ add r0, r6, r1
+ mov r1, #0x46
+ strb r1, [r0, r5]
+ str r0, [sp]
+ add r0, sp, #8
+ add r1, sp, #4
+ bl FUN_02020AB0
+ ldr r0, [sp, #8]
+ strb r0, [r7, r5]
+ ldr r1, [sp, #4]
+ ldr r0, [sp]
+ strb r1, [r0, r5]
+ lsl r1, r4, #0x18
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ bl MOD62_0222D9A0
+ lsl r1, r4, #0x18
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ bl MOD62_0222D788
+ mov r0, #0xc9
+ mov r2, #1
+ add r1, r6, r5
+ lsl r0, r0, #2
+ str r2, [r1, r0]
+ add sp, #0xc
+ add r0, r4, #0
+ pop {r4, r5, r6, r7, pc}
+_0222D75C:
+ add r4, r4, #1
+ add r3, #0x10
+ cmp r4, #8
+ blt _0222D6FA
+ mov r0, #0xff
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222D6EC
+
+ thumb_func_start MOD62_0222D76C
+MOD62_0222D76C: ; 0x0222D76C
+ mov r1, #0xc9
+ mov r3, #0
+ lsl r1, r1, #2
+_0222D772:
+ ldr r2, [r0, r1]
+ cmp r2, #1
+ beq _0222D77C
+ mov r0, #1
+ bx lr
+_0222D77C:
+ add r3, r3, #1
+ add r0, #0x10
+ cmp r3, #8
+ blt _0222D772
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD62_0222D76C
+
+ thumb_func_start MOD62_0222D788
+MOD62_0222D788: ; 0x0222D788
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #0xc9
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+ lsl r7, r7, #2
+_0222D794:
+ ldr r0, [r5, r7]
+ cmp r0, #1
+ bne _0222D7D4
+ cmp r4, r6
+ bne _0222D7AC
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_0200C6C4
+ b _0222D7D4
+_0222D7AC:
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_0200C6D8
+ add r1, r0, #0
+ bne _0222D7C8
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r1, #1
+ bl FUN_0200C6C4
+ b _0222D7D4
+_0222D7C8:
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r1, #2
+ bl FUN_0200C6C4
+_0222D7D4:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #8
+ blt _0222D794
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222D788
+
+ thumb_func_start MOD62_0222D7E0
+MOD62_0222D7E0: ; 0x0222D7E0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r7, r1, #0
+ add r1, r0, #0
+ add r1, #0xdc
+ ldr r4, [r1]
+ add r1, r0, #0
+ add r1, #0xe0
+ ldr r5, [r1]
+ mov r1, #0x5b
+ str r1, [sp]
+ add r1, #0xca
+ str r1, [sp, #4]
+ mov r1, #0
+ str r1, [sp, #8]
+ mov r1, #1
+ str r1, [sp, #0xc]
+ mov r1, #2
+ str r1, [sp, #0x10]
+ ldr r1, _0222D864 ; =0x0000532D
+ add r6, r2, #0
+ str r1, [sp, #0x14]
+ add r0, #0xe8
+ ldr r0, [r0]
+ mov r1, #3
+ add r2, r4, #0
+ add r3, r5, #0
+ bl FUN_0200C0DC
+ add r0, r7, #0
+ bl FUN_02085FAC
+ add r3, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _0222D868 ; =0x00004E20
+ add r1, r5, #0
+ add r0, r6, r0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r2, #0x5b
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222D86C ; =0x0000564D
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0x5d
+ bl FUN_0200C124
+ mov r3, #1
+ ldr r0, _0222D870 ; =0x000059D9
+ str r3, [sp]
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r2, #0x5b
+ bl FUN_0200C13C
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222D864: .word 0x0000532D
+_0222D868: .word 0x00004E20
+_0222D86C: .word 0x0000564D
+_0222D870: .word 0x000059D9
+ thumb_func_end MOD62_0222D7E0
+
+ thumb_func_start MOD62_0222D874
+MOD62_0222D874: ; 0x0222D874
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x74
+ mov r1, #0x26
+ lsl r1, r1, #4
+ str r0, [sp]
+ ldr r0, [r0, r1]
+ cmp r0, #0
+ bne _0222D886
+ b _0222D994
+_0222D886:
+ ldr r0, [sp]
+ mov r7, #0
+ str r7, [r0, r1]
+ add r4, sp, #0x54
+ add r5, sp, #0x34
+ add r6, r0, #0
+_0222D892:
+ mov r0, #0xff
+ str r0, [r4]
+ str r0, [r5]
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ beq _0222D8AA
+ bl FUN_0200C6D8
+ str r0, [r4]
+ str r7, [r5]
+_0222D8AA:
+ add r7, r7, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ add r6, #0x10
+ cmp r7, #8
+ blt _0222D892
+ mov r0, #0
+ mov ip, r0
+_0222D8BA:
+ mov r0, ip
+ mov r3, #7
+ cmp r0, #7
+ bge _0222D8EA
+ add r4, sp, #0x70
+ add r5, sp, #0x50
+_0222D8C6:
+ sub r7, r4, #4
+ ldr r2, [r4]
+ ldr r0, [r7]
+ cmp r0, r2
+ blt _0222D8DE
+ ldr r1, [r5]
+ sub r6, r5, #4
+ str r0, [r4]
+ ldr r0, [r6]
+ str r0, [r5]
+ str r2, [r7]
+ str r1, [r6]
+_0222D8DE:
+ sub r3, r3, #1
+ mov r0, ip
+ sub r4, r4, #4
+ sub r5, r5, #4
+ cmp r3, r0
+ bgt _0222D8C6
+_0222D8EA:
+ mov r0, ip
+ add r0, r0, #1
+ mov ip, r0
+ cmp r0, #7
+ blt _0222D8BA
+ mov r3, #0xca
+ lsl r3, r3, #2
+ ldr r0, [sp]
+ mov r2, #0
+ add r1, sp, #0x1c
+ add r4, r3, #1
+ add r5, r3, #2
+_0222D902:
+ ldrb r6, [r0, r3]
+ add r2, r2, #1
+ strb r6, [r1]
+ ldrb r6, [r0, r4]
+ strb r6, [r1, #1]
+ ldrb r6, [r0, r5]
+ add r0, #0x10
+ strb r6, [r1, #2]
+ add r1, r1, #3
+ cmp r2, #8
+ blt _0222D902
+ add r3, sp, #0x1c
+ add r2, sp, #4
+ mov r1, #0x18
+_0222D91E:
+ ldrb r0, [r3]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _0222D91E
+ ldr r5, [sp]
+ mov r6, #0
+ add r4, sp, #0x34
+ add r7, sp, #4
+_0222D932:
+ ldr r1, [r4]
+ cmp r1, #0xff
+ bne _0222D94A
+ mov r0, #0xca
+ mov r1, #0
+ lsl r0, r0, #2
+ strb r1, [r5, r0]
+ add r0, r0, #1
+ strb r1, [r5, r0]
+ ldr r0, _0222D998 ; =0x0000032A
+ strb r1, [r5, r0]
+ b _0222D98A
+_0222D94A:
+ lsl r0, r1, #1
+ add r0, r1, r0
+ ldrb r1, [r7, r0]
+ mov r0, #0xca
+ lsl r0, r0, #2
+ strb r1, [r5, r0]
+ ldr r1, [r4]
+ lsl r0, r1, #1
+ add r0, r1, r0
+ add r0, r7, r0
+ ldrb r1, [r0, #1]
+ ldr r0, _0222D99C ; =0x00000329
+ strb r1, [r5, r0]
+ ldr r1, [r4]
+ lsl r0, r1, #1
+ add r0, r1, r0
+ add r0, r7, r0
+ ldrb r1, [r0, #2]
+ ldr r0, _0222D998 ; =0x0000032A
+ strb r1, [r5, r0]
+ ldr r0, [r4]
+ lsl r1, r0, #4
+ ldr r0, [sp]
+ add r1, r0, r1
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0222D98A
+ add r1, r6, #0
+ bl FUN_0200C6C4
+_0222D98A:
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, #0x10
+ cmp r6, #8
+ blt _0222D932
+_0222D994:
+ add sp, #0x74
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222D998: .word 0x0000032A
+_0222D99C: .word 0x00000329
+ thumb_func_end MOD62_0222D874
+
+ thumb_func_start MOD62_0222D9A0
+MOD62_0222D9A0: ; 0x0222D9A0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r5, r1, #0
+ add r1, r0, #0
+ add r1, #0xdc
+ ldr r7, [r1]
+ add r1, r0, #0
+ add r1, #0xe0
+ ldr r6, [r1]
+ mov r1, #0xc9
+ lsl r1, r1, #2
+ add r2, r0, r1
+ lsl r1, r5, #4
+ add r4, r2, r1
+ ldr r1, [r2, r1]
+ cmp r1, #1
+ bne _0222D9CC
+ bl ErrorHandling
+ add sp, #0x34
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_0222D9CC:
+ ldrb r1, [r4, #4]
+ add r2, r5, #0
+ bl MOD62_0222D7E0
+ ldrb r1, [r4, #5]
+ add r0, sp, #0
+ strh r1, [r0]
+ ldrb r1, [r4, #6]
+ strh r1, [r0, #2]
+ mov r1, #0
+ strh r1, [r0, #4]
+ strh r1, [r0, #6]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ mov r0, #1
+ str r0, [sp, #0x2c]
+ sub r0, r0, #2
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x30]
+ str r1, [sp, #8]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ ldrb r0, [r4, #4]
+ bl FUN_02085FAC
+ ldr r0, _0222DA28 ; =0x00004E20
+ add r1, r6, #0
+ add r0, r5, r0
+ str r0, [sp, #0x14]
+ ldr r0, _0222DA2C ; =0x0000532D
+ add r2, sp, #0
+ str r0, [sp, #0x18]
+ ldr r0, _0222DA30 ; =0x0000564D
+ str r0, [sp, #0x1c]
+ ldr r0, _0222DA34 ; =0x000059D9
+ str r0, [sp, #0x20]
+ add r0, r7, #0
+ bl FUN_0200C154
+ str r0, [r4, #8]
+ bl FUN_0200C5A8
+ mov r0, #1
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0222DA28: .word 0x00004E20
+_0222DA2C: .word 0x0000532D
+_0222DA30: .word 0x0000564D
+_0222DA34: .word 0x000059D9
+ thumb_func_end MOD62_0222D9A0
+
+ thumb_func_start MOD62_0222DA38
+MOD62_0222DA38: ; 0x0222DA38
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r2, #0
+ add r6, r1, #0
+ mov r1, #0xc9
+ add r4, r0, #0
+ lsl r7, r5, #4
+ add r3, r4, r7
+ lsl r1, r1, #2
+ ldr r2, [r3, r1]
+ cmp r2, #0
+ bne _0222DA52
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0222DA52:
+ cmp r6, #3
+ bhi _0222DAE2
+ add r2, r6, r6
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0222DA62: ; jump table
+ .short _0222DA6A - _0222DA62 - 2 ; case 0
+ .short _0222DAAA - _0222DA62 - 2 ; case 1
+ .short _0222DA80 - _0222DA62 - 2 ; case 2
+ .short _0222DAAA - _0222DA62 - 2 ; case 3
+_0222DA6A:
+ add r1, r4, #0
+ add r1, #0xd4
+ ldr r1, [r1]
+ cmp r1, #0xff
+ bne _0222DAE6
+ add r4, #0xd4
+ add r1, r5, #0
+ str r5, [r4]
+ bl MOD62_0222D788
+ b _0222DAE6
+_0222DA80:
+ add r0, #0xd4
+ ldr r0, [r0]
+ cmp r0, r5
+ bne _0222DAE6
+ add r0, r1, #0
+ add r0, #0xc
+ add r1, #8
+ ldr r0, [r3, r0]
+ ldr r1, [r3, r1]
+ mov r2, #1
+ bl MOD62_0222D5F8
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD62_0222DBCC
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD62_0222DC48
+ b _0222DAE6
+_0222DAAA:
+ add r1, r4, #0
+ add r1, #0xd4
+ ldr r1, [r1]
+ cmp r1, #0xff
+ bne _0222DAE6
+ add r1, r5, #0
+ bl MOD62_0222DB38
+ mov r1, #0x33
+ add r2, r4, r7
+ lsl r1, r1, #4
+ add r6, r0, #0
+ ldr r0, [r2, r1]
+ sub r1, r1, #4
+ ldr r1, [r2, r1]
+ mov r2, #0
+ bl MOD62_0222D5F8
+ cmp r6, #0
+ bne _0222DADA
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD62_0222DB78
+_0222DADA:
+ mov r0, #0xff
+ add r4, #0xd4
+ str r0, [r4]
+ b _0222DAE6
+_0222DAE2:
+ bl ErrorHandling
+_0222DAE6:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222DA38
+
+ thumb_func_start MOD62_0222DAEC
+MOD62_0222DAEC: ; 0x0222DAEC
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r7, #0xc9
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #2
+_0222DAF8:
+ ldr r0, [r5, r7]
+ cmp r0, #1
+ bne _0222DB06
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD62_0222DB78
+_0222DB06:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #8
+ blt _0222DAF8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222DAEC
+
+ thumb_func_start MOD62_0222DB10
+MOD62_0222DB10: ; 0x0222DB10
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #0xc9
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+ lsl r7, r7, #2
+_0222DB1C:
+ ldr r0, [r5, r7]
+ cmp r0, #1
+ bne _0222DB2E
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r6, #0
+ bl FUN_0200C644
+_0222DB2E:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #8
+ blt _0222DB1C
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222DB10
+
+ thumb_func_start MOD62_0222DB38
+MOD62_0222DB38: ; 0x0222DB38
+ push {r3, lr}
+ lsl r1, r1, #4
+ add r2, r0, r1
+ mov r0, #0xc9
+ lsl r0, r0, #2
+ ldr r1, [r2, r0]
+ cmp r1, #0
+ bne _0222DB4C
+ mov r0, #1
+ pop {r3, pc}
+_0222DB4C:
+ add r0, #8
+ ldr r0, [r2, r0]
+ add r1, sp, #0
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_0200C7A0
+ add r2, sp, #0
+ mov r0, #2
+ mov r1, #0
+ ldrsh r0, [r2, r0]
+ ldrsh r1, [r2, r1]
+ mov r2, #0xbe
+ mov r3, #0x46
+ bl MOD08_0222A02C
+ cmp r0, #0x3c
+ bgt _0222DB74
+ mov r0, #1
+ pop {r3, pc}
+_0222DB74:
+ mov r0, #0
+ pop {r3, pc}
+ thumb_func_end MOD62_0222DB38
+
+ thumb_func_start MOD62_0222DB78
+MOD62_0222DB78: ; 0x0222DB78
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r0, #0xca
+ add r7, r1, #0
+ lsl r0, r0, #2
+ lsl r4, r7, #4
+ add r6, r5, r0
+ ldrb r0, [r6, r4]
+ bl FUN_02085FAC
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r1, _0222DBC8 ; =0x00004E20
+ ldr r0, [r0]
+ add r1, r7, r1
+ bl FUN_0200C358
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ add r7, r5, r0
+ ldr r0, [r7, r4]
+ bl FUN_0200C3DC
+ mov r1, #0
+ mov r2, #0xc9
+ lsl r2, r2, #2
+ str r1, [r7, r4]
+ add r3, r5, r4
+ str r1, [r3, r2]
+ strb r1, [r6, r4]
+ add r0, r2, #5
+ strb r1, [r3, r0]
+ add r0, r2, #6
+ add r2, #0xc
+ strb r1, [r3, r0]
+ ldr r0, [r3, r2]
+ add r2, r1, #0
+ bl MOD62_0222D5D0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222DBC8: .word 0x00004E20
+ thumb_func_end MOD62_0222DB78
+
+ thumb_func_start MOD62_0222DBCC
+MOD62_0222DBCC: ; 0x0222DBCC
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ bl MOD62_0222DB38
+ cmp r0, #0
+ bne _0222DBEC
+ lsl r0, r5, #4
+ add r1, r4, r0
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_0200C90C
+ pop {r3, r4, r5, pc}
+_0222DBEC:
+ lsl r0, r5, #4
+ add r1, r4, r0
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_0200C90C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222DBCC
+
+ thumb_func_start MOD62_0222DC00
+MOD62_0222DC00: ; 0x0222DC00
+ push {r4, r5, r6, r7}
+ mov r2, #0xf1
+ lsl r2, r2, #2
+ ldr r2, [r0, r2]
+ ldr r4, _0222DC44 ; =0x00000329
+ lsl r2, r2, #3
+ add r2, r0, r2
+ ldr r2, [r2, #8]
+ mov r1, #0
+ add r3, r4, #1
+ sub r5, r4, #1
+_0222DC16:
+ ldrb r7, [r0, r5]
+ ldrb r6, [r2]
+ cmp r7, r6
+ bne _0222DC2E
+ ldrb r7, [r0, r4]
+ ldrb r6, [r2, #1]
+ cmp r7, r6
+ bne _0222DC2E
+ ldrb r7, [r0, r3]
+ ldrb r6, [r2, #2]
+ cmp r7, r6
+ beq _0222DC34
+_0222DC2E:
+ mov r0, #1
+ pop {r4, r5, r6, r7}
+ bx lr
+_0222DC34:
+ add r1, r1, #1
+ add r2, r2, #3
+ add r0, #0x10
+ cmp r1, #8
+ blt _0222DC16
+ mov r0, #0
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+_0222DC44: .word 0x00000329
+ thumb_func_end MOD62_0222DC00
+
+ thumb_func_start MOD62_0222DC48
+MOD62_0222DC48: ; 0x0222DC48
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ lsl r4, r1, #4
+ mov r0, #0xcb
+ add r1, r5, r4
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, sp, #0
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_0200C7A0
+ add r2, sp, #0
+ mov r0, #2
+ ldrsh r1, [r2, r0]
+ ldr r0, _0222DC78 ; =0x00000329
+ add r3, r5, r4
+ strb r1, [r3, r0]
+ mov r1, #0
+ ldrsh r1, [r2, r1]
+ add r0, r0, #1
+ strb r1, [r3, r0]
+ pop {r3, r4, r5, pc}
+ nop
+_0222DC78: .word 0x00000329
+ thumb_func_end MOD62_0222DC48
+
+ thumb_func_start MOD62_0222DC7C
+MOD62_0222DC7C: ; 0x0222DC7C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ mov r3, #0xca
+ add r7, r0, #0
+ lsl r3, r3, #2
+ mov r0, #0
+ add r1, r7, #0
+ add r2, sp, #0
+ add r4, r3, #1
+ add r5, r3, #2
+_0222DC90:
+ ldrb r6, [r1, r3]
+ add r0, r0, #1
+ strb r6, [r2]
+ ldrb r6, [r1, r4]
+ strb r6, [r2, #1]
+ ldrb r6, [r1, r5]
+ add r1, #0x10
+ strb r6, [r2, #2]
+ add r2, r2, #3
+ cmp r0, #8
+ blt _0222DC90
+ ldr r0, [r7]
+ mov r2, #0xf1
+ lsl r2, r2, #2
+ ldr r0, [r0, #0x20]
+ ldr r2, [r7, r2]
+ add r1, sp, #0
+ bl FUN_02029CA4
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222DC7C
+
+ thumb_func_start MOD62_0222DCBC
+MOD62_0222DCBC: ; 0x0222DCBC
+ push {r3, r4, r5, r6}
+ mov r3, #0xca
+ lsl r3, r3, #2
+ mov r2, #0
+ add r4, r3, #1
+ add r5, r3, #2
+_0222DCC8:
+ ldrb r6, [r1, r3]
+ add r2, r2, #1
+ strb r6, [r0]
+ ldrb r6, [r1, r4]
+ strb r6, [r0, #1]
+ ldrb r6, [r1, r5]
+ add r1, #0x10
+ strb r6, [r0, #2]
+ add r0, r0, #3
+ cmp r2, #8
+ blt _0222DCC8
+ pop {r3, r4, r5, r6}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD62_0222DCBC
+
+ thumb_func_start MOD62_0222DCE4
+MOD62_0222DCE4: ; 0x0222DCE4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r0, r1, #0
+ add r1, sp, #0
+ add r4, r2, #0
+ add r1, #2
+ add r2, sp, #0
+ add r6, r3, #0
+ bl FUN_0200C7A0
+ add r1, sp, #0
+ mov r0, #0
+ ldrsh r2, [r1, r0]
+ sub r2, r2, r6
+ strb r2, [r5]
+ ldrsh r0, [r1, r0]
+ add r0, r0, r6
+ strb r0, [r5, #1]
+ mov r0, #2
+ ldrsh r2, [r1, r0]
+ sub r2, r2, r4
+ strb r2, [r5, #2]
+ ldrsh r0, [r1, r0]
+ add r0, r0, r4
+ strb r0, [r5, #3]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD62_0222DCE4
+
+ thumb_func_start MOD62_0222DD1C
+MOD62_0222DD1C: ; 0x0222DD1C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #2
+ mov r1, #0x35
+ bl FUN_02011744
+ mov r1, #0x8d
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #2
+ mov r1, #0x35
+ bl FUN_02002C50
+ pop {r4, pc}
+ thumb_func_end MOD62_0222DD1C
+
+ thumb_func_start MOD62_0222DD38
+MOD62_0222DD38: ; 0x0222DD38
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #2
+ bl FUN_02002CF8
+ mov r0, #0x8e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02011870
+ mov r0, #9
+ lsl r0, r0, #6
+ add r0, r4, r0
+ bl FUN_0201D5E8
+ mov r0, #0x8f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02011870
+ mov r0, #0x93
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_0201D5E8
+ mov r0, #0x8d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_020117BC
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222DD38
+
+ thumb_func_start MOD62_0222DD78
+MOD62_0222DD78: ; 0x0222DD78
+ push {r3, lr}
+ sub sp, #0x18
+ add r3, r0, #0
+ mov r0, #0xe
+ str r0, [sp]
+ mov r0, #7
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, _0222DDB0 ; =0x00007530
+ add r2, r3, #0
+ str r0, [sp, #0x14]
+ add r0, r3, #0
+ add r0, #0xe8
+ add r2, #0xdc
+ add r3, #0xe0
+ ldr r0, [r0]
+ ldr r2, [r2]
+ ldr r3, [r3]
+ mov r1, #3
+ bl FUN_0200C0DC
+ add sp, #0x18
+ pop {r3, pc}
+ .align 2, 0
+_0222DDB0: .word 0x00007530
+ thumb_func_end MOD62_0222DD78
+
+ thumb_func_start MOD62_0222DDB4
+MOD62_0222DDB4: ; 0x0222DDB4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ bl MOD62_0222DD78
+ mov r1, #0
+ add r0, r4, #0
+ mov r2, #0x4e
+ mov r3, #0xa5
+ str r1, [sp]
+ bl MOD62_0222DE00
+ mov r0, #0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0xac
+ mov r3, #0xa5
+ bl MOD62_0222DE00
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD62_0222DDB4
+
+ thumb_func_start MOD62_0222DDE0
+MOD62_0222DDE0: ; 0x0222DDE0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x8e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ bl FUN_020119D0
+ mov r0, #0x8f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ bl FUN_020119D0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222DDE0
+
+ thumb_func_start MOD62_0222DE00
+MOD62_0222DE00: ; 0x0222DE00
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x5c
+ add r5, r0, #0
+ add r4, r1, #0
+ str r2, [sp, #0x10]
+ add r7, r3, #0
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #8
+ mov r3, #0x35
+ bl FUN_0200A86C
+ add r1, r4, #5
+ str r0, [sp, #0x14]
+ bl FUN_0200A914
+ str r0, [sp, #0x18]
+ add r0, sp, #0x1c
+ bl FUN_0201901C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ add r1, sp, #0x1c
+ mov r2, #0xa
+ mov r3, #2
+ bl FUN_020190EC
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0222DEF0 ; =0x000F0D02
+ ldr r2, [sp, #0x18]
+ str r0, [sp, #8]
+ add r0, sp, #0x1c
+ mov r1, #2
+ str r3, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, sp, #0x1c
+ mov r1, #2
+ mov r2, #0x35
+ bl FUN_02011898
+ mov r3, #9
+ lsl r3, r3, #6
+ mov r1, #0xc
+ add r6, r4, #0
+ mul r6, r1
+ add r3, r5, r3
+ mov r1, #1
+ mov r2, #2
+ add r3, r3, r6
+ bl FUN_0201D568
+ mov r0, #0x8d
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x1c
+ str r0, [sp, #0x30]
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r0, [r0]
+ bl FUN_0200CA40
+ str r0, [sp, #0x34]
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r0, [r0]
+ ldr r1, _0222DEF4 ; =0x00007530
+ bl FUN_0200C334
+ str r0, [sp, #0x38]
+ mov r0, #0
+ mov r1, #0x91
+ str r0, [sp, #0x3c]
+ add r0, r5, r6
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ str r0, [sp, #0x40]
+ ldr r0, [sp, #0x10]
+ add r7, #0xc0
+ str r0, [sp, #0x44]
+ mov r0, #1
+ str r0, [sp, #0x4c]
+ mov r0, #0x28
+ str r0, [sp, #0x50]
+ mov r0, #2
+ str r0, [sp, #0x54]
+ mov r0, #0x35
+ sub r1, #0xc
+ str r0, [sp, #0x58]
+ str r7, [sp, #0x48]
+ add r5, r5, r1
+ lsl r4, r4, #2
+ add r0, sp, #0x2c
+ bl FUN_020117E8
+ str r0, [r5, r4]
+ ldr r0, [r5, r4]
+ ldr r1, [sp, #0x70]
+ bl FUN_02011AC0
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x14]
+ bl FUN_0200A8B8
+ add r0, sp, #0x1c
+ bl FUN_02019178
+ add sp, #0x5c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0222DEF0: .word 0x000F0D02
+_0222DEF4: .word 0x00007530
+ thumb_func_end MOD62_0222DE00
+
+ thumb_func_start MOD62_0222DEF8
+MOD62_0222DEF8: ; 0x0222DEF8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r6, #0
+ add r5, r0, #0
+ mov r0, #0x42
+ add r3, r1, #0
+ add r7, r6, #0
+ add r2, r6, #0
+ add r4, r6, #0
+ lsl r0, r0, #4
+_0222DF0C:
+ add r1, r5, r2
+ add r2, r2, #1
+ strb r4, [r1, r0]
+ cmp r2, #8
+ blt _0222DF0C
+ lsl r0, r3, #3
+ str r0, [sp, #4]
+ add r0, r5, #0
+ str r0, [sp]
+ add r0, #0x68
+ str r0, [sp]
+_0222DF22:
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl FUN_02029CF8
+ add r1, r5, r4
+ add r1, #0x80
+ ldrb r1, [r1]
+ cmp r1, #0
+ bne _0222DF38
+ cmp r0, #1
+ bne _0222DF50
+_0222DF38:
+ ldr r0, [sp, #4]
+ add r7, r7, #1
+ cmp r7, r0
+ ble _0222DF50
+ mov r0, #0x42
+ add r1, r5, r6
+ add r2, r4, #1
+ lsl r0, r0, #4
+ add r6, r6, #1
+ strb r2, [r1, r0]
+ cmp r6, #8
+ bge _0222DF56
+_0222DF50:
+ add r4, r4, #1
+ cmp r4, #0x51
+ blt _0222DF22
+_0222DF56:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222DEF8
+
+ thumb_func_start MOD62_0222DF5C
+MOD62_0222DF5C: ; 0x0222DF5C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r7, r0, #0
+ add r0, #0xdc
+ ldr r6, [r0]
+ add r0, r7, #0
+ add r0, #0xe0
+ ldr r5, [r0]
+ add r0, r7, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ mov r4, #0
+ str r0, [sp, #0x18]
+_0222DF76:
+ mov r0, #0x42
+ add r1, r7, r4
+ lsl r0, r0, #4
+ ldrb r0, [r1, r0]
+ bl FUN_02085FAC
+ add r3, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _0222DFF4 ; =0x000061A8
+ add r1, r5, #0
+ add r0, r4, r0
+ str r0, [sp, #8]
+ add r0, r6, #0
+ mov r2, #0x5b
+ bl FUN_0200C00C
+ add r4, r4, #1
+ cmp r4, #8
+ blt _0222DF76
+ mov r0, #0x5b
+ str r0, [sp]
+ add r0, #0xca
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, _0222DFF8 ; =0x000066B4
+ mov r1, #3
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r2, r6, #0
+ add r3, r5, #0
+ bl FUN_0200C0DC
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222DFFC ; =0x00006A2C
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r6, #0
+ mov r2, #0x5b
+ mov r3, #0xb4
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222E000 ; =0x00006DB8
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r6, #0
+ mov r2, #0x5b
+ mov r3, #0x58
+ bl FUN_0200C13C
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0222DFF4: .word 0x000061A8
+_0222DFF8: .word 0x000066B4
+_0222DFFC: .word 0x00006A2C
+_0222E000: .word 0x00006DB8
+ thumb_func_end MOD62_0222DF5C
+
+ thumb_func_start MOD62_0222E004
+MOD62_0222E004: ; 0x0222E004
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x58
+ add r5, r0, #0
+ add r0, #0xdc
+ ldr r0, [r0]
+ mov r4, #0
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r7, [r0]
+ add r0, sp, #4
+ strh r4, [r0, #0x20]
+ strh r4, [r0, #0x22]
+ strh r4, [r0, #0x24]
+ strh r4, [r0, #0x26]
+ mov r0, #0x3c
+ str r0, [sp, #0x2c]
+ mov r0, #2
+ str r0, [sp, #0x34]
+ mov r0, #1
+ str r0, [sp, #0x50]
+ sub r0, r0, #2
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x4c]
+ ldr r0, _0222E0B4 ; =0x000066B4
+ str r4, [sp, #0x54]
+ str r0, [sp, #0x3c]
+ ldr r0, _0222E0B8 ; =0x00006A2C
+ str r4, [sp, #0x30]
+ str r0, [sp, #0x40]
+ ldr r0, _0222E0BC ; =0x00006DB8
+ str r0, [sp, #0x44]
+ mov r0, #0xf9
+ lsl r0, r0, #2
+ add r6, r5, r0
+_0222E04A:
+ ldr r0, _0222E0C0 ; =0x000061A8
+ add r1, r7, #0
+ add r0, r4, r0
+ str r0, [sp, #0x38]
+ ldr r0, [sp]
+ add r2, sp, #0x24
+ bl FUN_0200C154
+ add r4, r4, #1
+ stmia r6!, {r0}
+ cmp r4, #8
+ blt _0222E04A
+ ldr r3, _0222E0C4 ; =0x02231158
+ add r2, sp, #4
+ mov r1, #0x10
+_0222E068:
+ ldrh r0, [r3]
+ add r3, r3, #2
+ strh r0, [r2]
+ add r2, r2, #2
+ sub r1, r1, #1
+ bne _0222E068
+ mov r7, #0xf9
+ mov r6, #0
+ add r4, sp, #4
+ lsl r7, r7, #2
+_0222E07C:
+ mov r2, #2
+ ldrsh r2, [r4, r2]
+ mov r0, #0xf9
+ mov r1, #0
+ lsl r0, r0, #2
+ sub r2, r2, #1
+ lsl r2, r2, #0x10
+ ldrsh r1, [r4, r1]
+ ldr r0, [r5, r0]
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ mov r0, #0xf9
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_0200C5A8
+ ldr r0, [r5, r7]
+ mov r1, #0
+ bl FUN_0200C61C
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r6, #8
+ blt _0222E07C
+ add sp, #0x58
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222E0B4: .word 0x000066B4
+_0222E0B8: .word 0x00006A2C
+_0222E0BC: .word 0x00006DB8
+_0222E0C0: .word 0x000061A8
+_0222E0C4: .word 0x02231158
+ thumb_func_end MOD62_0222E004
+
+ thumb_func_start MOD62_0222E0C8
+MOD62_0222E0C8: ; 0x0222E0C8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r7, #0xf9
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #2
+_0222E0D4:
+ add r0, r6, #0
+ add r0, #0xe0
+ ldr r1, _0222E0F4 ; =0x000061A8
+ ldr r0, [r0]
+ add r1, r4, r1
+ bl FUN_0200C358
+ ldr r0, [r5, r7]
+ bl FUN_0200C3DC
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _0222E0D4
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222E0F4: .word 0x000061A8
+ thumb_func_end MOD62_0222E0C8
+
+ thumb_func_start MOD62_0222E0F8
+MOD62_0222E0F8: ; 0x0222E0F8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r1, #0
+ mov r4, #0
+ str r0, [sp]
+ str r4, [sp, #4]
+ add r5, r7, #0
+ add r6, r7, #0
+_0222E108:
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ cmp r1, #0
+ beq _0222E120
+ add r0, r6, #0
+ bl MOD08_02217F08
+ cmp r0, #1
+ bne _0222E120
+ mov r0, #1
+ str r0, [sp, #4]
+_0222E120:
+ add r4, r4, #1
+ add r5, r5, #4
+ add r6, #0x24
+ cmp r4, #8
+ blt _0222E108
+ mov r0, #0x12
+ lsl r0, r0, #4
+ add r0, r7, r0
+ bl MOD08_02217ECC
+ cmp r0, #1
+ bne _0222E160
+ mov r3, #0x59
+ mov r0, #1
+ lsl r3, r3, #2
+ str r0, [sp, #4]
+ ldr r0, [r7, r3]
+ sub r3, #0x44
+ ldrsh r3, [r7, r3]
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020179E0
+ mov r3, #0x59
+ lsl r3, r3, #2
+ ldr r0, [r7, r3]
+ sub r3, #0x42
+ ldrsh r3, [r7, r3]
+ mov r1, #5
+ mov r2, #3
+ bl FUN_020179E0
+_0222E160:
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ bne _0222E17C
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ mov r1, #0
+ str r1, [r0]
+ add r0, r7, #0
+ bl FUN_02016A18
+ ldr r0, [sp]
+ bl FUN_0200CAB4
+_0222E17C:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222E0F8
+
+ thumb_func_start MOD62_0222E180
+MOD62_0222E180: ; 0x0222E180
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ str r1, [sp, #0xc]
+ mov r1, #0x17
+ str r0, [sp, #8]
+ mov r0, #0x35
+ lsl r1, r1, #4
+ str r2, [sp, #0x10]
+ bl FUN_02016998
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #8]
+ mov r1, #0x59
+ add r0, #0xe4
+ ldr r2, [r0]
+ ldr r0, [sp, #0x1c]
+ lsl r1, r1, #2
+ str r2, [r0, r1]
+ add r4, r0, #0
+ add r5, r0, #0
+ ldr r0, [sp, #0xc]
+ mov r1, #0x38
+ lsl r0, r0, #4
+ neg r0, r0
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0xc]
+ ldr r6, [sp, #8]
+ mul r1, r0
+ ldr r0, [sp, #0x10]
+ mov r7, #0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x20]
+_0222E1C4:
+ mov r0, #0xc9
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ bne _0222E1D8
+ mov r0, #0x51
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _0222E22E
+_0222E1D8:
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r1, [r6, r0]
+ mov r0, #0x51
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r1, sp, #0x24
+ ldr r0, [r4, r0]
+ add r1, #2
+ add r2, sp, #0x24
+ bl FUN_0200C7A0
+ add r1, sp, #0x24
+ mov r0, #0
+ ldrsh r3, [r1, r0]
+ mov r0, #2
+ ldrsh r1, [r1, r0]
+ ldr r0, [sp, #0x18]
+ ldr r2, [sp, #0x14]
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ ldr r0, [sp, #0x20]
+ add r2, r1, r2
+ lsl r2, r2, #0x10
+ str r0, [sp, #4]
+ add r0, r5, #0
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ mov r1, #0x51
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD08_02217F08
+ mov r1, #0x51
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD08_02217F08
+_0222E22E:
+ add r7, r7, #1
+ add r6, #0x10
+ add r4, r4, #4
+ add r5, #0x24
+ cmp r7, #8
+ blt _0222E1C4
+ mov r1, #0x59
+ ldr r0, [sp, #0x1c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ mov r1, #5
+ bl FUN_02017B48
+ add r4, r0, #0
+ mov r1, #0x59
+ ldr r0, [sp, #0x1c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ mov r1, #5
+ bl FUN_02017B54
+ add r3, r0, #0
+ ldr r0, [sp, #0xc]
+ mov r5, #0x37
+ lsl r0, r0, #4
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ ldr r0, [sp, #0x10]
+ mov r1, #0x12
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ lsl r3, r3, #0x10
+ ldr r2, [sp, #0xc]
+ mvn r5, r5
+ mul r5, r2
+ add r2, r4, r5
+ lsl r2, r2, #0x10
+ ldr r0, [sp, #0x1c]
+ lsl r1, r1, #4
+ add r0, r0, r1
+ lsl r1, r4, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_02217E80
+ mov r2, #0x96
+ lsl r2, r2, #2
+ ldr r0, [sp, #8]
+ add r1, r2, #0
+ add r3, r0, r2
+ ldr r0, [sp, #0x1c]
+ sub r1, #0xec
+ str r3, [r0, r1]
+ sub r2, #0xec
+ ldr r0, [r0, r2]
+ mov r3, #1
+ str r3, [r0]
+ ldr r0, _0222E2B8 ; =MOD62_0222E0F8
+ ldr r1, [sp, #0x1c]
+ lsl r2, r3, #0xc
+ bl FUN_0200CA44
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222E2B8: .word MOD62_0222E0F8
+ thumb_func_end MOD62_0222E180
+
+ thumb_func_start MOD62_0222E2BC
+MOD62_0222E2BC: ; 0x0222E2BC
+ push {r3, lr}
+ sub sp, #8
+ mov r2, #2
+ mov r1, #0
+ ldr r0, _0222E2D8 ; =MOD62_0222E2DC
+ str r2, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x35
+ add r3, r1, #0
+ bl FUN_02022318
+ add sp, #8
+ pop {r3, pc}
+ nop
+_0222E2D8: .word MOD62_0222E2DC
+ thumb_func_end MOD62_0222E2BC
+
+ thumb_func_start MOD62_0222E2DC
+MOD62_0222E2DC: ; 0x0222E2DC
+ push {r3, lr}
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r0, _0222E348 ; =0x04000008
+ mov r1, #3
+ ldrh r2, [r0]
+ bic r2, r1
+ mov r1, #1
+ orr r1, r2
+ strh r1, [r0]
+ add r0, #0x58
+ ldrh r2, [r0]
+ ldr r1, _0222E34C ; =0xFFFFCFFD
+ and r2, r1
+ strh r2, [r0]
+ add r2, r1, #2
+ ldrh r3, [r0]
+ add r1, r1, #2
+ and r3, r2
+ mov r2, #0x10
+ orr r2, r3
+ strh r2, [r0]
+ ldrh r3, [r0]
+ ldr r2, _0222E350 ; =0x0000CFFB
+ and r3, r2
+ strh r3, [r0]
+ ldrh r3, [r0]
+ sub r2, #0x1c
+ and r3, r1
+ mov r1, #8
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r1, [r0]
+ and r1, r2
+ strh r1, [r0]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl G3X_SetFog
+ mov r0, #0
+ ldr r2, _0222E354 ; =0x00007FFF
+ add r1, r0, #0
+ mov r3, #0x3f
+ str r0, [sp]
+ bl G3X_SetClearColor
+ ldr r1, _0222E358 ; =0xBFFF0000
+ ldr r0, _0222E35C ; =0x04000580
+ str r1, [r0]
+ pop {r3, pc}
+ .align 2, 0
+_0222E348: .word 0x04000008
+_0222E34C: .word 0xFFFFCFFD
+_0222E350: .word 0x0000CFFB
+_0222E354: .word 0x00007FFF
+_0222E358: .word 0xBFFF0000
+_0222E35C: .word 0x04000580
+ thumb_func_end MOD62_0222E2DC
+
+ thumb_func_start MOD62_0222E360
+MOD62_0222E360: ; 0x0222E360
+ push {r3, r4, r5, lr}
+ ldr r3, _0222E398 ; =0x021064B8
+ mov r0, #2
+ mov r1, #0
+ ldr r3, [r3]
+ lsl r0, r0, #0xe
+ add r2, r1, #0
+ blx r3
+ ldr r3, _0222E39C ; =0x021064C0
+ mov r1, #0
+ add r4, r0, #0
+ ldr r3, [r3]
+ mov r0, #0x80
+ add r2, r1, #0
+ blx r3
+ add r5, r0, #0
+ cmp r4, #0
+ bne _0222E388
+ bl ErrorHandling
+_0222E388:
+ cmp r5, #0
+ bne _0222E390
+ bl ErrorHandling
+_0222E390:
+ bl FUN_02012CC8
+ pop {r3, r4, r5, pc}
+ nop
+_0222E398: .word 0x021064B8
+_0222E39C: .word 0x021064C0
+ thumb_func_end MOD62_0222E360
+
+ thumb_func_start MOD62_0222E3A0
+MOD62_0222E3A0: ; 0x0222E3A0
+ push {r3, lr}
+ bl FUN_020222AC
+ bl FUN_02013364
+ cmp r0, #0
+ ble _0222E3B6
+ bl FUN_020222AC
+ bl FUN_020B02C8
+_0222E3B6:
+ bl FUN_02013388
+ mov r0, #1
+ mov r1, #0
+ bl FUN_020222B4
+ pop {r3, pc}
+ thumb_func_end MOD62_0222E3A0
+
+ thumb_func_start MOD62_0222E3C4
+MOD62_0222E3C4: ; 0x0222E3C4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ str r1, [sp, #0x18]
+ str r0, [sp, #0x14]
+ ldr r1, [sp, #0x58]
+ add r0, r3, #0
+ add r6, r2, #0
+ str r3, [sp, #0x1c]
+ bl MOD62_0222F89C
+ cmp r0, #3
+ bhi _0222E442
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222E3E8: ; jump table
+ .short _0222E3F0 - _0222E3E8 - 2 ; case 0
+ .short _0222E402 - _0222E3E8 - 2 ; case 1
+ .short _0222E418 - _0222E3E8 - 2 ; case 2
+ .short _0222E42E - _0222E3E8 - 2 ; case 3
+_0222E3F0:
+ mov r0, #0
+ str r0, [sp, #0x24]
+ mov r0, #4
+ str r0, [sp, #0x28]
+ mov r0, #1
+ mov r5, #0xd
+ mov r4, #6
+ str r0, [sp, #0x2c]
+ b _0222E442
+_0222E402:
+ mov r0, #2
+ str r0, [sp, #0x24]
+ mov r0, #0
+ str r0, [sp, #0x28]
+ mov r0, #4
+ str r0, [sp, #0x2c]
+ mov r0, #1
+ mov r5, #0xb
+ mov r4, #8
+ str r0, [sp, #0x30]
+ b _0222E442
+_0222E418:
+ mov r0, #3
+ str r0, [sp, #0x24]
+ mov r0, #0
+ str r0, [sp, #0x28]
+ mov r0, #4
+ str r0, [sp, #0x2c]
+ mov r0, #1
+ mov r5, #0xb
+ mov r4, #8
+ str r0, [sp, #0x30]
+ b _0222E442
+_0222E42E:
+ mov r0, #2
+ str r0, [sp, #0x24]
+ mov r0, #0
+ str r0, [sp, #0x28]
+ mov r0, #4
+ str r0, [sp, #0x2c]
+ mov r0, #1
+ mov r5, #0xb
+ mov r4, #8
+ str r0, [sp, #0x30]
+_0222E442:
+ lsr r0, r4, #0x1f
+ add r0, r4, r0
+ asr r7, r0, #1
+ ldr r0, [sp, #0x18]
+ bl FUN_0201901C
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #9
+ str r0, [sp, #4]
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0xe
+ str r0, [sp, #0xc]
+ mov r0, #0xa6
+ str r0, [sp, #0x10]
+ lsl r2, r6, #0x18
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ lsr r2, r2, #0x18
+ mov r3, #0x15
+ bl FUN_02019064
+ add r0, r7, #0
+ mov r1, #0x35
+ bl FUN_02012838
+ mov r2, #0x67
+ ldr r1, [sp, #0x1c]
+ lsl r2, r2, #2
+ str r0, [r1, r2]
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #8
+ mov r3, #0x35
+ bl FUN_0200A86C
+ mov r6, #0
+ str r0, [sp, #0x20]
+ cmp r7, #0
+ ble _0222E4D0
+ add r5, sp, #0x24
+_0222E49A:
+ ldr r1, [r5]
+ ldr r0, [sp, #0x20]
+ lsl r2, r1, #3
+ ldr r1, _0222E538 ; =0x02231358
+ ldr r1, [r1, r2]
+ bl FUN_0200A914
+ ldr r2, [r5]
+ add r4, r0, #0
+ lsl r3, r2, #3
+ ldr r2, _0222E538 ; =0x02231358
+ mov r0, #0x67
+ add r2, r2, r3
+ ldr r1, [sp, #0x1c]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r2, [r2, #4]
+ add r1, r4, #0
+ bl FUN_020128A0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, r7
+ blt _0222E49A
+_0222E4D0:
+ ldr r0, [sp, #0x20]
+ bl FUN_0200A8B8
+ mov r1, #0x67
+ ldr r0, [sp, #0x1c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ mov r1, #0
+ str r0, [sp, #0x34]
+ add r0, sp, #0x24
+ strb r1, [r0, #0x18]
+ ldr r1, [sp, #0x18]
+ mov r2, #0xf
+ str r1, [sp, #0x38]
+ mov r1, #1
+ strb r1, [r0, #0x19]
+ strb r7, [r0, #0x1a]
+ ldrb r3, [r0, #0x1b]
+ bic r3, r2
+ strb r3, [r0, #0x1b]
+ ldrb r3, [r0, #0x1b]
+ mov r2, #0x30
+ bic r3, r2
+ strb r3, [r0, #0x1b]
+ ldrb r3, [r0, #0x1b]
+ mov r2, #0xc0
+ bic r3, r2
+ mov r2, #0x40
+ orr r2, r3
+ strb r2, [r0, #0x1b]
+ ldr r0, [sp, #0x18]
+ mov r2, #0x1f
+ mov r3, #0xd
+ bl FUN_0200CCA4
+ mov r0, #0x35
+ str r0, [sp]
+ mov r0, #2
+ mov r2, #0
+ str r0, [sp, #4]
+ add r0, sp, #0x34
+ mov r1, #8
+ add r3, r2, #0
+ bl FUN_02001C14
+ mov r2, #0x1a
+ ldr r1, [sp, #0x1c]
+ lsl r2, r2, #4
+ str r0, [r1, r2]
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222E538: .word 0x02231358
+ thumb_func_end MOD62_0222E3C4
+
+ thumb_func_start MOD62_0222E53C
+MOD62_0222E53C: ; 0x0222E53C
+ push {r4, r5}
+ lsr r5, r0, #0x1f
+ lsl r4, r0, #0x1e
+ sub r4, r4, r5
+ mov r3, #0x1e
+ ror r4, r3
+ add r4, r5, r4
+ mov r3, #0x38
+ mul r3, r4
+ add r3, #0x28
+ strh r3, [r1]
+ asr r1, r0, #2
+ mov r0, #0x35
+ mul r0, r1
+ add r0, #0x1b
+ strh r0, [r2]
+ pop {r4, r5}
+ bx lr
+ thumb_func_end MOD62_0222E53C
+
+ thumb_func_start MOD62_0222E560
+MOD62_0222E560: ; 0x0222E560
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ add r1, r0, #0
+ add r1, #0xdc
+ ldr r4, [r1]
+ add r1, r0, #0
+ add r1, #0xe0
+ add r0, #0xe8
+ ldr r5, [r1]
+ ldr r6, [r0]
+ bl FUN_0206B888
+ mov r1, #0x13
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ mov r0, #0xfa
+ lsl r0, r0, #6
+ str r0, [sp, #0x14]
+ add r0, r6, #0
+ mov r1, #2
+ add r2, r4, #0
+ add r3, r5, #0
+ bl FUN_0200C0DC
+ bl FUN_0206B894
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _0222E5D0 ; =0x00004268
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x13
+ bl FUN_0200C124
+ bl FUN_0206B8A0
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _0222E5D4 ; =0x00004650
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x13
+ bl FUN_0200C13C
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0222E5D0: .word 0x00004268
+_0222E5D4: .word 0x00004650
+ thumb_func_end MOD62_0222E560
+
+ thumb_func_start MOD62_0222E5D8
+MOD62_0222E5D8: ; 0x0222E5D8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x4c
+ add r5, r0, #0
+ ldr r1, [r5]
+ mov r6, #0
+ ldr r0, [r1]
+ cmp r0, #0
+ ble _0222E6C6
+ str r6, [sp, #0xc]
+ add r4, r5, #0
+_0222E5EC:
+ ldr r0, [sp, #0xc]
+ add r0, r1, r0
+ ldr r7, [r0, #4]
+ add r0, r7, #0
+ bl FUN_0206B6C8
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _0222E6CC ; =0x00003A98
+ add r1, r5, #0
+ add r0, r6, r0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x13
+ bl FUN_0200C978
+ mov r1, #0
+ add r0, sp, #0x18
+ strh r1, [r0]
+ strh r1, [r0, #2]
+ strh r1, [r0, #4]
+ strh r1, [r0, #6]
+ mov r0, #0xa
+ str r0, [sp, #0x20]
+ add r0, r1, #0
+ str r0, [sp, #0x24]
+ mov r0, #1
+ str r0, [sp, #0x28]
+ mov r0, #2
+ str r0, [sp, #0x44]
+ add r0, r1, #0
+ str r0, [sp, #0x48]
+ ldr r0, _0222E6CC ; =0x00003A98
+ add r2, sp, #0x18
+ add r0, r6, r0
+ str r0, [sp, #0x2c]
+ mov r0, #0xfa
+ lsl r0, r0, #6
+ str r0, [sp, #0x30]
+ ldr r0, _0222E6D0 ; =0x00004268
+ str r0, [sp, #0x34]
+ ldr r0, _0222E6D4 ; =0x00004650
+ str r0, [sp, #0x38]
+ sub r0, r1, #1
+ str r0, [sp, #0x3c]
+ sub r0, r1, #1
+ str r0, [sp, #0x40]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl FUN_0200C154
+ mov r1, #0xbf
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r7, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #0x10]
+ add r0, r7, #0
+ mov r1, #0x4c
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #0x14]
+ add r0, r7, #0
+ mov r1, #0x70
+ mov r2, #0
+ bl FUN_020671BC
+ add r1, r0, #0
+ ldr r0, [sp, #0x10]
+ ldr r2, [sp, #0x14]
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ mov r0, #0xbf
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r0, [r0]
+ bl FUN_020202DC
+ mov r0, #0xbf
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_0200C5C0
+ ldr r0, [sp, #0xc]
+ ldr r1, [r5]
+ add r0, r0, #4
+ str r0, [sp, #0xc]
+ ldr r0, [r1]
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, r0
+ blt _0222E5EC
+_0222E6C6:
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0222E6CC: .word 0x00003A98
+_0222E6D0: .word 0x00004268
+_0222E6D4: .word 0x00004650
+ thumb_func_end MOD62_0222E5D8
+
+ thumb_func_start MOD62_0222E6D8
+MOD62_0222E6D8: ; 0x0222E6D8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, [r6]
+ mov r4, #0
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _0222E700
+ mov r7, #0xbf
+ add r5, r6, #0
+ lsl r7, r7, #2
+_0222E6EC:
+ ldr r0, [r5, r7]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r6]
+ add r4, r4, #1
+ ldr r0, [r0]
+ add r5, r5, #4
+ cmp r4, r0
+ blt _0222E6EC
+_0222E700:
+ mov r5, #0
+ add r4, r6, #0
+_0222E704:
+ ldr r7, [r4, #4]
+ cmp r7, #0xff
+ beq _0222E748
+ add r1, sp, #0
+ add r0, r5, #0
+ add r1, #2
+ add r2, sp, #0
+ bl MOD62_0222E53C
+ add r2, sp, #0
+ mov r1, #2
+ ldrsh r1, [r2, r1]
+ add r3, r2, #0
+ mov r2, #0
+ ldrsh r2, [r3, r2]
+ lsl r0, r7, #2
+ add r7, r6, r0
+ mov r0, #0xbf
+ lsl r0, r0, #2
+ sub r1, #0x10
+ add r2, #0xc
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ ldr r0, [r7, r0]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ mov r0, #0xbf
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ mov r1, #1
+ bl FUN_0200C644
+_0222E748:
+ add r5, r5, #1
+ add r4, #8
+ cmp r5, #0xc
+ blt _0222E704
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222E6D8
+
+ thumb_func_start MOD62_0222E754
+MOD62_0222E754: ; 0x0222E754
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, [r6]
+ mov r4, #0
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _0222E77A
+ mov r7, #0xbf
+ add r5, r6, #0
+ lsl r7, r7, #2
+_0222E768:
+ ldr r0, [r5, r7]
+ bl FUN_0200C5A8
+ ldr r0, [r6]
+ add r4, r4, #1
+ ldr r0, [r0]
+ add r5, r5, #4
+ cmp r4, r0
+ blt _0222E768
+_0222E77A:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222E754
+
+ thumb_func_start MOD62_0222E77C
+MOD62_0222E77C: ; 0x0222E77C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, [r6]
+ mov r4, #0
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _0222E7A2
+ mov r7, #0xbf
+ add r5, r6, #0
+ lsl r7, r7, #2
+_0222E790:
+ ldr r0, [r5, r7]
+ bl FUN_0200C3DC
+ ldr r0, [r6]
+ add r4, r4, #1
+ ldr r0, [r0]
+ add r5, r5, #4
+ cmp r4, r0
+ blt _0222E790
+_0222E7A2:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222E77C
+
+ thumb_func_start MOD62_0222E7A4
+MOD62_0222E7A4: ; 0x0222E7A4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r6, #0
+ add r4, r7, #0
+ add r5, r7, #0
+_0222E7AE:
+ ldr r0, [r4, #8]
+ bl MOD62_0222F870
+ mov r1, #0x9a
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x99
+ ldr r1, [r4, #4]
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, r0, #4
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ bne _0222E7DC
+ mov r0, #0x99
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #0xff
+ beq _0222E7DC
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD62_02230D38
+_0222E7DC:
+ add r6, r6, #1
+ add r4, #8
+ add r5, #0xc
+ cmp r6, #0xc
+ blt _0222E7AE
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222E7A4
+
+ thumb_func_start MOD62_0222E7E8
+MOD62_0222E7E8: ; 0x0222E7E8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x4c
+ add r4, r0, #0
+ mov r0, #0x35
+ bl FUN_0200BB14
+ add r2, sp, #0x2c
+ ldr r5, _0222E868 ; =0x02231138
+ str r0, [r4, #8]
+ ldmia r5!, {r0, r1}
+ add r3, r2, #0
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ ldr r6, _0222E86C ; =0x0223110C
+ stmia r2!, {r0, r1}
+ add r5, sp, #0x18
+ ldmia r6!, {r0, r1}
+ add r2, r5, #0
+ stmia r5!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r5!, {r0, r1}
+ ldr r0, [r6]
+ add r1, r3, #0
+ str r0, [r5]
+ ldr r0, [r4, #8]
+ mov r3, #0x20
+ bl FUN_0200BB6C
+ ldr r3, _0222E870 ; =0x02231120
+ add r2, sp, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r4, #8]
+ bl FUN_0200BB34
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ mov r2, #0x80
+ bl FUN_0200BBF0
+ cmp r0, #0
+ bne _0222E852
+ bl ErrorHandling
+_0222E852:
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ add r2, sp, #0
+ bl FUN_0200BF60
+ cmp r0, #0
+ bne _0222E864
+ bl ErrorHandling
+_0222E864:
+ add sp, #0x4c
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0222E868: .word 0x02231138
+_0222E86C: .word 0x0223110C
+_0222E870: .word 0x02231120
+ thumb_func_end MOD62_0222E7E8
+
+ thumb_func_start MOD62_0222E874
+MOD62_0222E874: ; 0x0222E874
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ bl FUN_0200C398
+ ldr r0, [r4, #8]
+ bl FUN_0200BD04
+ pop {r4, pc}
+ thumb_func_end MOD62_0222E874
+
+ thumb_func_start MOD62_0222E888
+MOD62_0222E888: ; 0x0222E888
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _0222E8EC ; =0x0000AFC8
+ add r1, r4, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ mov r2, #0x5b
+ add r3, r2, #0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r3, #0xae
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222E8F0 ; =0x0000B798
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x5b
+ mov r3, #0xad
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222E8F4 ; =0x0000BB80
+ mov r2, #0x5b
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0xdc
+ add r4, #0xe0
+ ldr r0, [r0]
+ ldr r1, [r4]
+ mov r3, #0x51
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_0222E8EC: .word 0x0000AFC8
+_0222E8F0: .word 0x0000B798
+_0222E8F4: .word 0x0000BB80
+ thumb_func_end MOD62_0222E888
+
+ thumb_func_start MOD62_0222E8F8
+MOD62_0222E8F8: ; 0x0222E8F8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x64
+ ldr r4, _0222E97C ; =0x02231178
+ add r6, r0, #0
+ add r3, sp, #0
+ mov r2, #6
+_0222E904:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0222E904
+ mov r7, #0
+ add r4, sp, #0
+ add r5, r6, #0
+_0222E912:
+ ldr r1, [r4]
+ add r0, sp, #0
+ strh r1, [r0, #0x30]
+ ldr r1, [r4, #4]
+ add r2, sp, #0x30
+ strh r1, [r0, #0x32]
+ mov r1, #0
+ strh r1, [r0, #0x34]
+ strh r1, [r0, #0x36]
+ mov r0, #0x28
+ str r0, [sp, #0x38]
+ mov r0, #2
+ str r0, [sp, #0x3c]
+ str r0, [sp, #0x40]
+ mov r0, #1
+ str r0, [sp, #0x5c]
+ add r0, r1, #0
+ str r0, [sp, #0x60]
+ ldr r0, _0222E980 ; =0x0000AFC8
+ str r0, [sp, #0x44]
+ ldr r0, _0222E984 ; =0x000066B2
+ str r0, [sp, #0x48]
+ ldr r0, _0222E988 ; =0x0000B798
+ str r0, [sp, #0x4c]
+ ldr r0, _0222E98C ; =0x0000BB80
+ str r0, [sp, #0x50]
+ sub r0, r1, #1
+ str r0, [sp, #0x54]
+ sub r0, r1, #1
+ str r0, [sp, #0x58]
+ add r0, r6, #0
+ add r1, r6, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl FUN_0200C154
+ mov r1, #0xc5
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ ldr r1, [r4, #8]
+ bl FUN_0200C8D0
+ add r7, r7, #1
+ add r4, #0xc
+ add r5, r5, #4
+ cmp r7, #4
+ blt _0222E912
+ add sp, #0x64
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222E97C: .word 0x02231178
+_0222E980: .word 0x0000AFC8
+_0222E984: .word 0x000066B2
+_0222E988: .word 0x0000B798
+_0222E98C: .word 0x0000BB80
+ thumb_func_end MOD62_0222E8F8
+
+ thumb_func_start MOD62_0222E990
+MOD62_0222E990: ; 0x0222E990
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, #0xd8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0222E9B0
+ mov r6, #0xc5
+ mov r4, #0
+ lsl r6, r6, #2
+_0222E9A2:
+ ldr r0, [r5, r6]
+ bl FUN_0200C5A8
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _0222E9A2
+_0222E9B0:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222E990
+
+ thumb_func_start MOD62_0222E9B4
+MOD62_0222E9B4: ; 0x0222E9B4
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #0xc5
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+ lsl r7, r7, #2
+_0222E9C0:
+ ldr r0, [r5, r7]
+ add r1, r6, #0
+ bl FUN_0200C644
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _0222E9C0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222E9B4
+
+ thumb_func_start MOD62_0222E9D4
+MOD62_0222E9D4: ; 0x0222E9D4
+ push {r4, r5, r6, lr}
+ mov r6, #0xc5
+ add r5, r0, #0
+ mov r4, #0
+ lsl r6, r6, #2
+_0222E9DE:
+ ldr r0, [r5, r6]
+ bl FUN_0200C3DC
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _0222E9DE
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222E9D4
+
+ thumb_func_start MOD62_0222E9F0
+MOD62_0222E9F0: ; 0x0222E9F0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ mov r6, #1
+ str r6, [sp]
+ ldr r6, [sp, #0x3c]
+ add r7, r2, #0
+ str r6, [sp, #4]
+ ldr r6, _0222EA68 ; =0x00002AF8
+ add r2, r3, #0
+ add r2, r2, r6
+ str r2, [sp, #8]
+ mov r2, #0x5b
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200C00C
+ mov r0, #0x5b
+ str r0, [sp]
+ ldr r0, [sp, #0x30]
+ mov r1, #0
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r1, [sp, #0x44]
+ add r2, r5, #0
+ str r1, [sp, #0xc]
+ ldr r1, [sp, #0x3c]
+ add r3, r4, #0
+ str r1, [sp, #0x10]
+ add r1, r6, #0
+ add r0, r0, r1
+ str r0, [sp, #0x14]
+ ldr r1, [sp, #0x40]
+ add r0, r7, #0
+ bl FUN_0200C0DC
+ mov r0, #1
+ str r0, [sp]
+ ldr r3, [sp, #0x34]
+ add r0, r6, #0
+ add r0, r3, r0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x5b
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r3, [sp, #0x38]
+ add r0, r6, #0
+ add r0, r3, r0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x5b
+ bl FUN_0200C13C
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222EA68: .word 0x00002AF8
+ thumb_func_end MOD62_0222E9F0
+
+ thumb_func_start MOD62_0222EA6C
+MOD62_0222EA6C: ; 0x0222EA6C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x54
+ add r5, r0, #0
+ ldr r0, _0222EC14 ; =0x0000011E
+ add r2, r5, #0
+ str r0, [sp]
+ mov r0, #0xae
+ str r0, [sp, #4]
+ mov r3, #0x52
+ str r3, [sp, #8]
+ mov r1, #1
+ str r1, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ add r2, #0xe8
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ add r3, #0xb8
+ bl MOD62_0222E9F0
+ ldr r0, _0222EC18 ; =0x00000123
+ add r2, r5, #0
+ str r0, [sp]
+ mov r0, #0xb3
+ str r0, [sp, #4]
+ mov r3, #0x57
+ str r3, [sp, #8]
+ mov r1, #1
+ str r1, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ add r2, #0xe8
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ add r3, #0xbc
+ bl MOD62_0222E9F0
+ mov r6, #0
+ add r4, r5, #0
+ add r7, sp, #0x18
+_0222EAD4:
+ mov r0, #0
+ strh r0, [r7, #8]
+ strh r0, [r7, #0xa]
+ strh r0, [r7, #0xc]
+ mov r0, #0x9a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, r5, #0
+ strh r0, [r7, #0xe]
+ mov r0, #0x28
+ sub r0, r0, r6
+ str r0, [sp, #0x28]
+ mov r0, #0
+ str r0, [sp, #0x2c]
+ mov r0, #1
+ str r0, [sp, #0x30]
+ mov r0, #2
+ str r0, [sp, #0x4c]
+ mov r0, #0
+ str r0, [sp, #0x50]
+ ldr r0, _0222EC1C ; =0x00002C02
+ add r1, #0xe0
+ str r0, [sp, #0x34]
+ add r0, #0x14
+ str r0, [sp, #0x38]
+ ldr r0, _0222EC20 ; =0x00002BA6
+ add r2, sp, #0x20
+ str r0, [sp, #0x3c]
+ sub r0, #0x5c
+ str r0, [sp, #0x40]
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x48]
+ add r0, r5, #0
+ add r0, #0xdc
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl FUN_0200C154
+ mov r1, #0x9b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r1, sp, #0x1c
+ add r0, r6, #0
+ add r1, #2
+ add r2, sp, #0x1c
+ bl MOD62_0222E53C
+ mov r0, #0x9b
+ mov r1, #6
+ mov r2, #4
+ lsl r0, r0, #2
+ ldrsh r1, [r7, r1]
+ ldrsh r2, [r7, r2]
+ ldr r0, [r4, r0]
+ bl FUN_0200C714
+ add r6, r6, #1
+ add r4, #0xc
+ cmp r6, #0xc
+ blt _0222EAD4
+ mov r1, #0
+ add r0, sp, #0x18
+ strh r1, [r0, #8]
+ strh r1, [r0, #0xa]
+ strh r1, [r0, #0xc]
+ strh r1, [r0, #0xe]
+ mov r0, #0x14
+ str r0, [sp, #0x28]
+ mov r0, #1
+ str r1, [sp, #0x2c]
+ str r1, [sp, #0x50]
+ ldr r1, _0222EC24 ; =0x00002C0B
+ str r0, [sp, #0x30]
+ add r0, r1, #0
+ add r0, #0x10
+ str r0, [sp, #0x38]
+ add r0, r1, #0
+ mov r2, #2
+ sub r0, #0x60
+ str r1, [sp, #0x34]
+ str r0, [sp, #0x3c]
+ sub r0, r2, #3
+ sub r1, #0xbc
+ str r1, [sp, #0x40]
+ add r1, r5, #0
+ str r2, [sp, #0x4c]
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x48]
+ add r0, r5, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r2, sp, #0x20
+ bl FUN_0200C154
+ mov r1, #0xbd
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r2, sp, #0x20
+ bl FUN_0200C154
+ mov r1, #0xbe
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r1, #0xcc
+ ldr r0, [r5, r1]
+ add r1, sp, #0x18
+ add r1, #2
+ add r2, sp, #0x18
+ bl MOD62_0222E53C
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ add r3, sp, #0x18
+ mov r1, #2
+ mov r2, #0
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ ldr r0, [r5, r0]
+ bl FUN_0200C714
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ add r3, sp, #0x18
+ mov r1, #2
+ mov r2, #0
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ ldr r0, [r5, r0]
+ bl FUN_0200C714
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x19
+ bl FUN_0200C6C4
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_0200C5C0
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_0200C5C0
+ add sp, #0x54
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222EC14: .word 0x0000011E
+_0222EC18: .word 0x00000123
+_0222EC1C: .word 0x00002C02
+_0222EC20: .word 0x00002BA6
+_0222EC24: .word 0x00002C0B
+ thumb_func_end MOD62_0222EA6C
+
+ thumb_func_start MOD62_0222EC28
+MOD62_0222EC28: ; 0x0222EC28
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ bl MOD62_0222E7A4
+ add r0, r5, #0
+ bl MOD62_0222E6D8
+ mov r7, #0x9a
+ lsl r7, r7, #2
+ mov r4, #0
+ add r6, r7, #4
+_0222EC3E:
+ ldr r0, [r5, r6]
+ cmp r0, #0
+ beq _0222EC4A
+ ldr r1, [r5, r7]
+ bl FUN_0200C5C0
+_0222EC4A:
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, #0xc
+ blt _0222EC3E
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222EC28
+
+ thumb_func_start MOD62_0222EC54
+MOD62_0222EC54: ; 0x0222EC54
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0
+ lsl r6, r1, #3
+ add r0, r5, r6
+ ldr r0, [r0, #4]
+ lsl r4, r2, #3
+ str r1, [sp]
+ add r1, r5, r4
+ ldr r7, [r1, #4]
+ cmp r0, #0xff
+ beq _0222EC80
+ add r1, r2, #1
+ str r1, [sp, #0xc]
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #4]
+ mov r1, #0xa1
+ add r2, sp, #0xc
+ bl FUN_02067830
+_0222EC80:
+ cmp r7, #0xff
+ beq _0222EC9A
+ ldr r0, [sp]
+ add r2, sp, #8
+ add r0, r0, #1
+ str r0, [sp, #8]
+ ldr r1, [r5]
+ lsl r0, r7, #2
+ add r0, r1, r0
+ ldr r0, [r0, #4]
+ mov r1, #0xa1
+ bl FUN_02067830
+_0222EC9A:
+ add r2, r5, #4
+ ldr r1, [r2, r6]
+ ldr r0, [r2, r4]
+ add r7, r5, #0
+ str r0, [r2, r6]
+ str r1, [r2, r4]
+ add r7, #8
+ ldr r0, [r7, r6]
+ add r1, sp, #0x10
+ bl FUN_02029C74
+ add r0, r5, #0
+ str r0, [sp, #4]
+ add r0, #8
+ str r0, [sp, #4]
+ ldr r0, [r0, r4]
+ ldr r1, [r7, r6]
+ bl FUN_02029C74
+ ldr r1, [sp, #4]
+ add r0, sp, #0x10
+ ldr r1, [r1, r4]
+ bl FUN_02029C74
+ add r0, r5, #0
+ bl MOD62_0222EC28
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222EC54
+
+ thumb_func_start MOD62_0222ECD4
+MOD62_0222ECD4: ; 0x0222ECD4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r6, #0x9b
+ mov r4, #0
+ add r5, r7, #0
+ lsl r6, r6, #2
+_0222ECE0:
+ ldr r0, [r5, r6]
+ bl FUN_0200C5A8
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, #0xc
+ blt _0222ECE0
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ bl FUN_0200C5A8
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ bl FUN_0200C5A8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222ECD4
+
+ thumb_func_start MOD62_0222ED04
+MOD62_0222ED04: ; 0x0222ED04
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r6, #0x9b
+ mov r4, #0
+ add r5, r7, #0
+ lsl r6, r6, #2
+_0222ED10:
+ ldr r0, [r5, r6]
+ bl FUN_0200C3DC
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, #0xc
+ blt _0222ED10
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ bl FUN_0200C3DC
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ bl FUN_0200C3DC
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222ED04
+
+ thumb_func_start MOD62_0222ED34
+MOD62_0222ED34: ; 0x0222ED34
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r6, r2, #0
+ add r4, r1, #0
+ lsl r1, r6, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp]
+ mov r1, #0x35
+ str r1, [sp, #4]
+ mov r1, #1
+ add r2, r1, #0
+ mov r3, #0xf
+ add r5, r0, #0
+ bl FUN_0200CD68
+ add r0, r6, #0
+ bl FUN_0200CD64
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xc0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0x26
+ mov r3, #0x35
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x35
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r1, #1
+ mov r2, #0x1f
+ mov r3, #0xd
+ bl FUN_0200CB00
+ bl FUN_0200CAFC
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xd0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0x26
+ mov r3, #0x35
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xe0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0xe
+ mov r2, #7
+ mov r3, #0x35
+ bl FUN_020030E8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD62_0222ED34
+
+ thumb_func_start MOD62_0222EDBC
+MOD62_0222EDBC: ; 0x0222EDBC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r6, r2, #0
+ add r4, r1, #0
+ lsl r1, r6, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp]
+ mov r1, #0x35
+ str r1, [sp, #4]
+ mov r1, #4
+ mov r2, #1
+ mov r3, #0xf
+ add r5, r0, #0
+ bl FUN_0200CD68
+ add r0, r6, #0
+ bl FUN_0200CD64
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xc0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0x26
+ mov r3, #0x35
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x35
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r1, #4
+ mov r2, #0x1f
+ mov r3, #0xd
+ bl FUN_0200CB00
+ bl FUN_0200CAFC
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xd0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0x26
+ mov r3, #0x35
+ bl FUN_020030E8
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xe0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0xe
+ mov r2, #7
+ mov r3, #0x35
+ bl FUN_020030E8
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x30
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0xe
+ mov r2, #7
+ mov r3, #0x35
+ bl FUN_020030E8
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x20
+ mov r1, #0x5b
+ str r0, [sp, #4]
+ mov r0, #0xb0
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r2, #0xcb
+ mov r3, #0x35
+ bl FUN_020030E8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222EDBC
+
+ thumb_func_start MOD62_0222EE78
+MOD62_0222EE78: ; 0x0222EE78
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r1, _0222EEDC ; =0x0000FFFF
+ add r4, r0, #0
+ cmp r5, r1
+ bne _0222EE96
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r4, #0
+ bl FUN_020191D0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_0222EE96:
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #8
+ mov r3, #0x35
+ bl FUN_0200A86C
+ add r1, r5, #0
+ add r6, r0, #0
+ bl FUN_0200A914
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ add r0, r4, #0
+ add r2, r5, #0
+ add r3, r1, #0
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ add r0, r4, #0
+ bl FUN_020191D0
+ add r0, r5, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0222EEDC: .word 0x0000FFFF
+ thumb_func_end MOD62_0222EE78
+
+ thumb_func_start MOD62_0222EEE0
+MOD62_0222EEE0: ; 0x0222EEE0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r7, r0, #0
+ add r0, r5, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bl FUN_0201901C
+ ldr r0, [sp, #0x28]
+ lsl r2, r4, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #0x2c]
+ lsl r3, r6, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x30]
+ add r1, r5, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0xe
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x34]
+ lsr r2, r2, #0x18
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ add r0, r7, #0
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ mov r1, #1
+ add r0, r5, #0
+ add r2, r1, #0
+ mov r3, #0xc
+ bl FUN_0200D0BC
+ add r0, r5, #0
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r5, #0
+ bl FUN_020191D0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222EEE0
+
+ thumb_func_start MOD62_0222EF44
+MOD62_0222EF44: ; 0x0222EF44
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r7, r0, #0
+ add r0, r5, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bl FUN_0201901C
+ ldr r0, [sp, #0x28]
+ lsl r2, r4, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #0x2c]
+ lsl r3, r6, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x30]
+ add r1, r5, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x38]
+ lsr r2, r2, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x34]
+ lsr r3, r3, #0x18
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ add r0, r7, #0
+ bl FUN_02019064
+ add r0, r5, #0
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r5, #0
+ bl FUN_020191D0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222EF44
+
+ thumb_func_start MOD62_0222EFA0
+MOD62_0222EFA0: ; 0x0222EFA0
+ push {r3, r4, lr}
+ sub sp, #0x14
+ mov r1, #2
+ add r4, r0, #0
+ str r1, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r1, #0x94
+ str r1, [sp, #0xc]
+ mov r0, #0xb
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ add r0, #0xe4
+ add r1, #0x88
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #6
+ mov r3, #3
+ bl MOD62_0222EF44
+ mov r1, #2
+ str r1, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r1, #0x9c
+ str r1, [sp, #0xc]
+ mov r0, #0xb
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ add r0, #0xe4
+ add r1, #0x90
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #6
+ mov r3, #0xa
+ bl MOD62_0222EF44
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r1, #0xa4
+ str r1, [sp, #0xc]
+ mov r0, #0xb
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ add r0, #0xe4
+ add r1, #0x98
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #6
+ mov r3, #3
+ bl MOD62_0222EF44
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r1, #0xac
+ str r1, [sp, #0xc]
+ mov r0, #0xb
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ add r0, #0xe4
+ add r1, #0xa0
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #6
+ mov r3, #0xa
+ bl MOD62_0222EF44
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r1, #0xb4
+ str r1, [sp, #0xc]
+ mov r0, #0xb
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ add r0, #0xe4
+ add r1, #0xa8
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #6
+ mov r3, #3
+ bl MOD62_0222EF44
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r1, #0xbc
+ str r1, [sp, #0xc]
+ mov r0, #0xb
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ add r0, #0xe4
+ add r1, #0xb0
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #6
+ mov r3, #0xa
+ bl MOD62_0222EF44
+ mov r2, #0xb
+ str r2, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r1, #0xc4
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ str r2, [sp, #0x10]
+ add r0, #0xe4
+ add r1, #0xb8
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #6
+ mov r3, #3
+ bl MOD62_0222EF44
+ mov r2, #0xb
+ str r2, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r1, #0xcc
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ str r2, [sp, #0x10]
+ add r0, #0xe4
+ add r1, #0xc0
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #6
+ mov r3, #0xa
+ bl MOD62_0222EF44
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222EFA0
+
+ thumb_func_start MOD62_0222F0D4
+MOD62_0222F0D4: ; 0x0222F0D4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r0, #0
+ add r5, r7, #0
+ add r5, #0xec
+ mov r6, #3
+ add r5, #0x30
+_0222F0E2:
+ ldr r0, _0222F160 ; =0x0000041D
+ add r1, r7, r6
+ ldrb r0, [r1, r0]
+ str r0, [sp, #0x10]
+ cmp r0, #0
+ bne _0222F0FE
+ add r0, r5, #0
+ mov r1, #0xee
+ bl FUN_02019620
+ add r0, r5, #0
+ bl FUN_020191D0
+ b _0222F152
+_0222F0FE:
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #0x64
+ mov r1, #0x35
+ bl FUN_020219F4
+ ldr r1, [sp, #0x10]
+ add r4, r0, #0
+ ldr r0, [r7, #0x64]
+ sub r1, r1, #1
+ bl FUN_02029CF4
+ add r1, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #3
+ mov r3, #1
+ bl FUN_02021B04
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0222F164 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ add r2, r4, #0
+ mov r3, #7
+ bl FUN_0201BDE0
+ add r0, r5, #0
+ bl FUN_020191D0
+ add r0, r4, #0
+ bl FUN_02021A20
+_0222F152:
+ add r6, r6, #1
+ add r5, #0x10
+ cmp r6, #0xb
+ blt _0222F0E2
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0222F160: .word 0x0000041D
+_0222F164: .word 0x00010200
+ thumb_func_end MOD62_0222F0D4
+
+ thumb_func_start MOD62_0222F168
+MOD62_0222F168: ; 0x0222F168
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ add r0, r1, #3
+ lsl r4, r0, #4
+ mov r0, #0x42
+ add r1, r6, r1
+ lsl r0, r0, #4
+ add r5, r6, #0
+ ldrb r7, [r1, r0]
+ add r5, #0xec
+ cmp r7, #0
+ bne _0222F194
+ add r0, r5, r4
+ mov r1, #0xee
+ bl FUN_02019620
+ add r0, r5, r4
+ bl FUN_020191D0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_0222F194:
+ add r0, r5, r4
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #0x64
+ mov r1, #0x35
+ bl FUN_020219F4
+ str r0, [sp, #0x10]
+ ldr r0, [r6, #0x64]
+ sub r1, r7, #1
+ bl FUN_02029CF4
+ add r1, r0, #0
+ mov r3, #1
+ ldr r0, [sp, #0x10]
+ mov r2, #3
+ str r3, [sp]
+ bl FUN_02021B04
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0222F1E4 ; =0x00010200
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #8]
+ add r0, r5, r4
+ mov r3, #7
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r5, r4
+ bl FUN_020191D0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222F1E4: .word 0x00010200
+ thumb_func_end MOD62_0222F168
+
+ thumb_func_start MOD62_0222F1E8
+MOD62_0222F1E8: ; 0x0222F1E8
+ push {r3, r4, r5, lr}
+ add r0, #0xec
+ add r5, r0, #0
+ mov r4, #3
+ add r5, #0x30
+_0222F1F2:
+ add r0, r5, #0
+ bl FUN_02019570
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #0xb
+ blt _0222F1F2
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD62_0222F1E8
+
+ thumb_func_start MOD62_0222F208
+MOD62_0222F208: ; 0x0222F208
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r1, _0222F26C ; =0x0000FFFF
+ add r4, r0, #0
+ cmp r5, r1
+ bne _0222F226
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r4, #0
+ bl FUN_020191D0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_0222F226:
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #0xa
+ mov r3, #0x35
+ bl FUN_0200A86C
+ add r1, r5, #0
+ add r6, r0, #0
+ bl FUN_0200A914
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ add r0, r4, #0
+ add r2, r5, #0
+ add r3, r1, #0
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ add r0, r4, #0
+ bl FUN_020191D0
+ add r0, r5, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0222F26C: .word 0x0000FFFF
+ thumb_func_end MOD62_0222F208
+
+ thumb_func_start MOD62_0222F270
+MOD62_0222F270: ; 0x0222F270
+ push {r3, lr}
+ bl FUN_0201E788
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ pop {r3, pc}
+ thumb_func_end MOD62_0222F270
+
+ thumb_func_start MOD62_0222F288
+MOD62_0222F288: ; 0x0222F288
+ push {lr}
+ sub sp, #0xc
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x35
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add sp, #0xc
+ pop {pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222F288
+
+ thumb_func_start MOD62_0222F2A8
+MOD62_0222F2A8: ; 0x0222F2A8
+ push {lr}
+ sub sp, #0xc
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x35
+ 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
+ pop {pc}
+ thumb_func_end MOD62_0222F2A8
+
+ thumb_func_start MOD62_0222F2C8
+MOD62_0222F2C8: ; 0x0222F2C8
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x35
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ mov r0, #0x5b
+ add r2, #0xe4
+ add r1, r0, #0
+ ldr r2, [r2]
+ add r1, #0xb1
+ mov r3, #2
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x35
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ mov r0, #0x5b
+ add r2, #0xe4
+ add r1, r0, #0
+ ldr r2, [r2]
+ add r1, #0xc1
+ mov r3, #2
+ bl FUN_020068C8
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0x40
+ str r0, [sp, #4]
+ add r0, r4, #0
+ str r1, [sp, #8]
+ add r0, #0xe8
+ mov r1, #0x5b
+ add r2, r1, #0
+ ldr r0, [r0]
+ add r2, #0xc5
+ mov r3, #0x35
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x35
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ mov r0, #0x5b
+ add r2, #0xe4
+ add r1, r0, #0
+ ldr r2, [r2]
+ add r1, #0xb2
+ mov r3, #3
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x35
+ str r0, [sp, #0xc]
+ mov r0, #0x5b
+ add r4, #0xe4
+ add r1, r0, #0
+ ldr r2, [r4]
+ add r1, #0xc2
+ mov r3, #3
+ bl FUN_020068C8
+ add sp, #0x10
+ pop {r4, pc}
+ thumb_func_end MOD62_0222F2C8
+
+ thumb_func_start MOD62_0222F36C
+MOD62_0222F36C: ; 0x0222F36C
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x35
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ mov r0, #0x5b
+ add r2, #0xe4
+ add r1, r0, #0
+ ldr r2, [r2]
+ add r1, #0xb0
+ mov r3, #5
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x35
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ mov r0, #0x5b
+ add r2, #0xe4
+ add r1, r0, #0
+ ldr r2, [r2]
+ add r1, #0xc0
+ mov r3, #5
+ bl FUN_020068C8
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x40
+ str r0, [sp, #4]
+ mov r0, #0
+ mov r1, #0x5b
+ add r2, r1, #0
+ add r4, #0xe8
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ add r2, #0xc4
+ mov r3, #0x35
+ bl FUN_020030E8
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222F36C
+
+ thumb_func_start MOD62_0222F3D4
+MOD62_0222F3D4: ; 0x0222F3D4
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x35
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ mov r0, #0x5b
+ add r2, #0xe4
+ add r1, r0, #0
+ ldr r2, [r2]
+ add r1, #0xb0
+ mov r3, #7
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x35
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ mov r0, #0x5b
+ add r2, #0xe4
+ add r1, r0, #0
+ ldr r2, [r2]
+ add r1, #0xbf
+ mov r3, #7
+ bl FUN_020068C8
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x40
+ str r0, [sp, #4]
+ mov r0, #0
+ mov r1, #0x5b
+ add r2, r1, #0
+ add r4, #0xe8
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ add r2, #0xc4
+ mov r3, #0x35
+ bl FUN_020030E8
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222F3D4
+
+ thumb_func_start MOD62_0222F43C
+MOD62_0222F43C: ; 0x0222F43C
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r1, r0, #0
+ add r1, #0xdc
+ ldr r4, [r1]
+ add r1, r0, #0
+ add r1, #0xe0
+ ldr r5, [r1]
+ mov r1, #0x5b
+ str r1, [sp]
+ add r1, #0xc7
+ str r1, [sp, #4]
+ mov r1, #0
+ str r1, [sp, #8]
+ mov r1, #3
+ str r1, [sp, #0xc]
+ mov r2, #2
+ str r2, [sp, #0x10]
+ ldr r2, _0222F57C ; =0x000066B2
+ add r0, #0xe8
+ str r2, [sp, #0x14]
+ ldr r0, [r0]
+ add r2, r4, #0
+ add r3, r5, #0
+ bl FUN_0200C0DC
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _0222F580 ; =0x000062B9
+ mov r2, #0x5b
+ add r3, r2, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, r5, #0
+ add r3, #0xb6
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222F584 ; =0x00006A29
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0xb1
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222F588 ; =0x00006DB5
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0x55
+ bl FUN_0200C13C
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _0222F58C ; =0x000062BA
+ mov r2, #0x5b
+ add r3, r2, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, r5, #0
+ add r3, #0xb7
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222F590 ; =0x00006A2A
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0xb2
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222F594 ; =0x00006DB6
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0x56
+ bl FUN_0200C13C
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _0222F598 ; =0x000062B6
+ mov r2, #0x5b
+ add r3, r2, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, r5, #0
+ add r3, #0xb3
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222F59C ; =0x00006A27
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0xaf
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222F5A0 ; =0x00006DB3
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0x53
+ bl FUN_0200C13C
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _0222F5A4 ; =0x000089C8
+ mov r2, #0x5b
+ add r3, r2, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, r5, #0
+ add r3, #0xb5
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222F5A8 ; =0x00006A28
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0xb0
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222F5AC ; =0x00006DB4
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0x54
+ bl FUN_0200C13C
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0222F57C: .word 0x000066B2
+_0222F580: .word 0x000062B9
+_0222F584: .word 0x00006A29
+_0222F588: .word 0x00006DB5
+_0222F58C: .word 0x000062BA
+_0222F590: .word 0x00006A2A
+_0222F594: .word 0x00006DB6
+_0222F598: .word 0x000062B6
+_0222F59C: .word 0x00006A27
+_0222F5A0: .word 0x00006DB3
+_0222F5A4: .word 0x000089C8
+_0222F5A8: .word 0x00006A28
+_0222F5AC: .word 0x00006DB4
+ thumb_func_end MOD62_0222F43C
+
+ thumb_func_start MOD62_0222F5B0
+MOD62_0222F5B0: ; 0x0222F5B0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0xa0
+ add r7, r0, #0
+ add r0, #0xdc
+ ldr r6, [r0]
+ add r0, r7, #0
+ add r0, #0xe0
+ ldr r5, [r0]
+ mov r0, #0xf9
+ lsl r0, r0, #2
+ add r4, r7, r0
+ mov r1, #0
+ add r2, sp, #0x6c
+ strh r1, [r2]
+ strh r1, [r2, #2]
+ strh r1, [r2, #4]
+ strh r1, [r2, #6]
+ mov r0, #0x3c
+ str r0, [sp, #0x74]
+ mov r0, #2
+ str r0, [sp, #0x7c]
+ mov r0, #1
+ str r1, [sp, #0x9c]
+ sub r1, r0, #2
+ str r0, [sp, #0x98]
+ str r0, [sp, #0x78]
+ ldr r0, _0222F6FC ; =0x000062B9
+ str r1, [sp, #0x90]
+ str r0, [sp, #0x80]
+ ldr r0, _0222F700 ; =0x000066B2
+ str r1, [sp, #0x94]
+ str r0, [sp, #0x84]
+ ldr r0, _0222F704 ; =0x00006A29
+ add r1, r5, #0
+ str r0, [sp, #0x88]
+ ldr r0, _0222F708 ; =0x00006DB5
+ str r0, [sp, #0x8c]
+ add r0, r6, #0
+ bl FUN_0200C154
+ str r0, [r4, #0x20]
+ ldr r0, _0222F70C ; =0x000062BA
+ add r1, r5, #0
+ str r0, [sp, #0x80]
+ ldr r0, _0222F700 ; =0x000066B2
+ add r2, sp, #0x6c
+ str r0, [sp, #0x84]
+ ldr r0, _0222F710 ; =0x00006A2A
+ str r0, [sp, #0x88]
+ ldr r0, _0222F714 ; =0x00006DB6
+ str r0, [sp, #0x8c]
+ add r0, r6, #0
+ bl FUN_0200C154
+ str r0, [r4, #0x24]
+ mov r0, #1
+ str r0, [sp, #0x98]
+ str r0, [sp, #0x78]
+ ldr r0, _0222F718 ; =0x000089C8
+ add r1, r5, #0
+ str r0, [sp, #0x80]
+ ldr r0, _0222F700 ; =0x000066B2
+ add r2, sp, #0x6c
+ str r0, [sp, #0x84]
+ ldr r0, _0222F71C ; =0x00006A28
+ str r0, [sp, #0x88]
+ ldr r0, _0222F720 ; =0x00006DB4
+ str r0, [sp, #0x8c]
+ add r0, r6, #0
+ bl FUN_0200C154
+ str r0, [r4, #0x28]
+ mov r0, #1
+ str r0, [sp, #0x98]
+ mov r0, #0
+ str r0, [sp, #0x78]
+ ldr r0, _0222F724 ; =0x000062B6
+ add r1, r5, #0
+ str r0, [sp, #0x80]
+ ldr r0, _0222F700 ; =0x000066B2
+ add r2, sp, #0x6c
+ str r0, [sp, #0x84]
+ ldr r0, _0222F728 ; =0x00006A27
+ str r0, [sp, #0x88]
+ ldr r0, _0222F72C ; =0x00006DB3
+ str r0, [sp, #0x8c]
+ add r0, r6, #0
+ bl FUN_0200C154
+ str r0, [r4, #0x2c]
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, sp, #0x6c
+ bl FUN_0200C154
+ ldr r3, _0222F730 ; =0x022311A8
+ str r0, [r4, #0x30]
+ add r2, sp, #0x38
+ mov r1, #0x1a
+_0222F676:
+ ldrh r0, [r3]
+ add r3, r3, #2
+ strh r0, [r2]
+ add r2, r2, #2
+ sub r1, r1, #1
+ bne _0222F676
+ ldr r3, _0222F734 ; =0x022311DC
+ add r2, sp, #4
+ mov r1, #0x1a
+_0222F688:
+ ldrh r0, [r3]
+ add r3, r3, #2
+ strh r0, [r2]
+ add r2, r2, #2
+ sub r1, r1, #1
+ bne _0222F688
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0x1d
+ add r4, r7, #0
+ lsl r0, r0, #4
+ add r7, r7, r0
+ add r6, sp, #0x58
+ add r4, #0x20
+ add r5, sp, #0x24
+ add r7, #0x20
+_0222F6A8:
+ mov r0, #0xf9
+ mov r1, #0
+ mov r2, #2
+ lsl r0, r0, #2
+ ldrsh r1, [r6, r1]
+ ldrsh r2, [r6, r2]
+ ldr r0, [r4, r0]
+ bl FUN_0200C714
+ mov r0, #0xf9
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0200C5A8
+ mov r0, #0xf9
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C61C
+ mov r1, #0xf9
+ mov r2, #0
+ mov r3, #2
+ lsl r1, r1, #2
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r5, r3]
+ ldr r1, [r4, r1]
+ add r0, r7, #0
+ bl MOD62_0222DCE4
+ ldr r0, [sp]
+ add r6, r6, #4
+ add r0, r0, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ add r7, r7, #4
+ str r0, [sp]
+ cmp r0, #0xd
+ blt _0222F6A8
+ add sp, #0xa0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222F6FC: .word 0x000062B9
+_0222F700: .word 0x000066B2
+_0222F704: .word 0x00006A29
+_0222F708: .word 0x00006DB5
+_0222F70C: .word 0x000062BA
+_0222F710: .word 0x00006A2A
+_0222F714: .word 0x00006DB6
+_0222F718: .word 0x000089C8
+_0222F71C: .word 0x00006A28
+_0222F720: .word 0x00006DB4
+_0222F724: .word 0x000062B6
+_0222F728: .word 0x00006A27
+_0222F72C: .word 0x00006DB3
+_0222F730: .word 0x022311A8
+_0222F734: .word 0x022311DC
+ thumb_func_end MOD62_0222F5B0
+
+ thumb_func_start MOD62_0222F738
+MOD62_0222F738: ; 0x0222F738
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #0xf9
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+ lsl r7, r7, #2
+_0222F744:
+ ldr r0, [r5, r7]
+ add r1, r6, #0
+ bl FUN_0200C644
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xd
+ blt _0222F744
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222F738
+
+ thumb_func_start MOD62_0222F758
+MOD62_0222F758: ; 0x0222F758
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD62_0222F758
+
+ thumb_func_start MOD62_0222F75C
+MOD62_0222F75C: ; 0x0222F75C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r6, #0xf9
+ mov r4, #8
+ add r5, #0x20
+ lsl r6, r6, #2
+_0222F768:
+ ldr r0, [r5, r6]
+ bl FUN_0200C3DC
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xd
+ blt _0222F768
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD62_0222F75C
+
+ thumb_func_start MOD62_0222F778
+MOD62_0222F778: ; 0x0222F778
+ add r1, r0, #0
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r3, _0222F78C ; =0x02029C75
+ lsl r0, r0, #3
+ add r0, r1, r0
+ ldr r0, [r0, #8]
+ add r1, #0x68
+ bx r3
+ .align 2, 0
+_0222F78C: .word 0x02029C75
+ thumb_func_end MOD62_0222F778
+
+ thumb_func_start MOD62_0222F790
+MOD62_0222F790: ; 0x0222F790
+ mov r1, #0xf1
+ add r2, r0, #0
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ ldr r3, _0222F7A4 ; =0x02029C75
+ lsl r1, r1, #3
+ add r1, r2, r1
+ add r0, #0x68
+ ldr r1, [r1, #8]
+ bx r3
+ .align 2, 0
+_0222F7A4: .word 0x02029C75
+ thumb_func_end MOD62_0222F790
+
+ thumb_func_start MOD62_0222F7A8
+MOD62_0222F7A8: ; 0x0222F7A8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_0222F7AE:
+ ldr r0, [r5, #0x64]
+ add r1, r4, #0
+ bl FUN_02029CF4
+ add r1, r5, r4
+ add r1, #0x80
+ add r4, r4, #1
+ strb r0, [r1]
+ cmp r4, #0x51
+ blt _0222F7AE
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD62_0222F7A8
+
+ thumb_func_start MOD62_0222F7C4
+MOD62_0222F7C4: ; 0x0222F7C4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_0222F7CA:
+ add r2, r5, r4
+ add r2, #0x80
+ ldrb r2, [r2]
+ ldr r0, [r5, #0x64]
+ add r1, r4, #0
+ bl FUN_02029D40
+ add r4, r4, #1
+ cmp r4, #0x51
+ blt _0222F7CA
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD62_0222F7C4
+
+ thumb_func_start MOD62_0222F7E0
+MOD62_0222F7E0: ; 0x0222F7E0
+ push {r3, lr}
+ mov r0, #7
+ str r0, [sp]
+ ldr r0, _0222F804 ; =0x04000050
+ mov r1, #0
+ mov r2, #6
+ mov r3, #0xb
+ bl G2x_SetBlendAlpha_
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _0222F808 ; =0x04001050
+ mov r1, #0
+ mov r2, #0xe
+ mov r3, #7
+ bl G2x_SetBlendAlpha_
+ pop {r3, pc}
+ .align 2, 0
+_0222F804: .word 0x04000050
+_0222F808: .word 0x04001050
+ thumb_func_end MOD62_0222F7E0
+
+ thumb_func_start MOD62_0222F80C
+MOD62_0222F80C: ; 0x0222F80C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0xf1
+ add r5, r0, #0
+ lsl r1, r1, #2
+ ldr r0, [r5, r1]
+ lsl r0, r0, #3
+ add r0, r5, r0
+ ldr r0, [r0, #4]
+ cmp r0, #0xff
+ beq _0222F832
+ ldr r2, [r5]
+ lsl r0, r0, #2
+ add r0, r2, r0
+ add r1, #0x64
+ ldr r0, [r0, #4]
+ ldr r1, [r5, r1]
+ bl FUN_02069B88
+ pop {r3, r4, r5, r6, r7, pc}
+_0222F832:
+ ldr r1, [r5]
+ mov r6, #0
+ ldr r0, [r1]
+ cmp r0, #0
+ ble _0222F868
+ add r4, r6, #0
+_0222F83E:
+ add r0, r1, r4
+ ldr r7, [r0, #4]
+ mov r1, #0x4c
+ add r0, r7, #0
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ bne _0222F85C
+ ldr r1, _0222F86C ; =0x00000428
+ add r0, r7, #0
+ ldr r1, [r5, r1]
+ bl FUN_02069B88
+ pop {r3, r4, r5, r6, r7, pc}
+_0222F85C:
+ ldr r1, [r5]
+ add r6, r6, #1
+ ldr r0, [r1]
+ add r4, r4, #4
+ cmp r6, r0
+ blt _0222F83E
+_0222F868:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222F86C: .word 0x00000428
+ thumb_func_end MOD62_0222F80C
+
+ thumb_func_start MOD62_0222F870
+MOD62_0222F870: ; 0x0222F870
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #0
+ add r6, r0, #0
+ add r5, r7, #0
+ add r4, r7, #0
+_0222F87A:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_02029CC8
+ bl FUN_02029CE0
+ cmp r0, #0
+ beq _0222F88C
+ add r5, r5, #1
+_0222F88C:
+ add r4, r4, #1
+ cmp r4, #8
+ blt _0222F87A
+ cmp r5, #0
+ beq _0222F898
+ mov r7, #1
+_0222F898:
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222F870
+
+ thumb_func_start MOD62_0222F89C
+MOD62_0222F89C: ; 0x0222F89C
+ mov r2, #0xc
+ mul r2, r1
+ add r1, r0, r2
+ mov r0, #0x99
+ lsl r0, r0, #2
+ ldr r2, [r1, r0]
+ add r0, r0, #4
+ ldr r0, [r1, r0]
+ cmp r2, #0xff
+ bne _0222F8B8
+ cmp r0, #0
+ bne _0222F8B8
+ mov r0, #0
+ bx lr
+_0222F8B8:
+ cmp r2, #0xff
+ bne _0222F8C4
+ cmp r0, #1
+ bne _0222F8C4
+ mov r0, #1
+ bx lr
+_0222F8C4:
+ cmp r2, #0xff
+ beq _0222F8D0
+ cmp r0, #1
+ bne _0222F8D0
+ mov r0, #2
+ bx lr
+_0222F8D0:
+ mov r0, #3
+ bx lr
+ thumb_func_end MOD62_0222F89C
+
+ thumb_func_start MOD62_0222F8D4
+MOD62_0222F8D4: ; 0x0222F8D4
+ push {r3, r4}
+ cmp r2, #0xff
+ bne _0222F8E6
+ mov r2, #0xf6
+ lsl r2, r2, #2
+ ldr r4, [r0, r2]
+ sub r2, r2, #4
+ str r4, [r0, r2]
+ b _0222F8EC
+_0222F8E6:
+ mov r4, #0xf5
+ lsl r4, r4, #2
+ str r2, [r0, r4]
+_0222F8EC:
+ mov r2, #0xf3
+ lsl r2, r2, #2
+ str r1, [r0, r2]
+ add r1, r2, #0
+ add r1, #0xc
+ str r3, [r0, r1]
+ mov r1, #0
+ add r2, #0x10
+ str r1, [r0, r2]
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD62_0222F8D4
+
+ thumb_func_start MOD62_0222F904
+MOD62_0222F904: ; 0x0222F904
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xfc
+ mov r1, #1
+ bl FUN_0200CCF8
+ add r0, r4, #0
+ add r0, #0xfc
+ bl FUN_02019570
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_02001C5C
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ add r4, #0xfc
+ add r0, r4, #0
+ bl FUN_02019178
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222F904
+
+ thumb_func_start MOD62_0222F93C
+MOD62_0222F93C: ; 0x0222F93C
+ push {r3, lr}
+ mov r1, #1
+ mov r2, #0
+ mov r3, #3
+ bl MOD62_0222F8D4
+ mov r0, #0
+ pop {r3, pc}
+ thumb_func_end MOD62_0222F93C
+
+ thumb_func_start MOD62_0222F94C
+MOD62_0222F94C: ; 0x0222F94C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD62_0222D874
+ add r0, r4, #0
+ bl MOD62_0222DC7C
+ add r0, r4, #0
+ bl MOD62_0222EC28
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #2
+ add r3, r2, #0
+ bl MOD62_0222F8D4
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD62_0222F94C
+
+ thumb_func_start MOD62_0222F970
+MOD62_0222F970: ; 0x0222F970
+ push {r3, lr}
+ mov r1, #3
+ mov r2, #0
+ add r3, r1, #0
+ bl MOD62_0222F8D4
+ mov r0, #0
+ pop {r3, pc}
+ thumb_func_end MOD62_0222F970
+
+ thumb_func_start MOD62_0222F980
+MOD62_0222F980: ; 0x0222F980
+ push {r3, lr}
+ mov r1, #4
+ mov r2, #0
+ mov r3, #3
+ bl MOD62_0222F8D4
+ mov r0, #0
+ pop {r3, pc}
+ thumb_func_end MOD62_0222F980
+
+ thumb_func_start MOD62_0222F990
+MOD62_0222F990: ; 0x0222F990
+ push {r3, r4, r5, lr}
+ mov r1, #0xf3
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ lsl r2, r1, #2
+ ldr r1, _0222F9B0 ; =0x02231220
+ ldr r1, [r1, r2]
+ blx r1
+ add r4, #0xe0
+ add r5, r0, #0
+ ldr r0, [r4]
+ bl FUN_0200BC1C
+ add r0, r5, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0222F9B0: .word 0x02231220
+ thumb_func_end MOD62_0222F990
+
+ thumb_func_start MOD62_0222F9B4
+MOD62_0222F9B4: ; 0x0222F9B4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _0222FA3C ; =0x021C48B8
+ mov r1, #0x10
+ ldr r0, [r0, #0x4c]
+ tst r1, r0
+ beq _0222F9D2
+ ldr r0, [r4]
+ mov r1, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ bl _s32_div_f
+ str r1, [r4]
+ b _0222FA38
+_0222F9D2:
+ mov r1, #0x20
+ tst r1, r0
+ beq _0222F9EA
+ ldr r0, [r4]
+ cmp r0, #0
+ ble _0222F9E4
+ sub r0, r0, #1
+ str r0, [r4]
+ b _0222FA38
+_0222F9E4:
+ mov r0, #0xb
+ str r0, [r4]
+ b _0222FA38
+_0222F9EA:
+ mov r1, #0x40
+ tst r1, r0
+ beq _0222FA0E
+ ldr r1, [r4]
+ asr r0, r1, #1
+ lsr r0, r0, #0x1e
+ add r0, r1, r0
+ asr r0, r0, #2
+ beq _0222FA0A
+ sub r0, r1, #4
+ mov r1, #0xc
+ str r0, [r4]
+ bl _s32_div_f
+ str r1, [r4]
+ b _0222FA38
+_0222FA0A:
+ mov r0, #0
+ pop {r4, pc}
+_0222FA0E:
+ mov r1, #0x80
+ tst r0, r1
+ beq _0222FA34
+ ldr r1, [r4]
+ asr r0, r1, #1
+ lsr r0, r0, #0x1e
+ add r0, r1, r0
+ asr r0, r0, #2
+ cmp r0, #2
+ beq _0222FA30
+ add r0, r1, #4
+ mov r1, #0xc
+ str r0, [r4]
+ bl _s32_div_f
+ str r1, [r4]
+ b _0222FA38
+_0222FA30:
+ mov r0, #0
+ pop {r4, pc}
+_0222FA34:
+ mov r0, #0
+ pop {r4, pc}
+_0222FA38:
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+_0222FA3C: .word 0x021C48B8
+ thumb_func_end MOD62_0222F9B4
+
+ thumb_func_start MOD62_0222FA40
+MOD62_0222FA40: ; 0x0222FA40
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r4, #0
+ str r2, [sp]
+ cmp r1, #0
+ bne _0222FA50
+ mov r4, #1
+_0222FA50:
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ lsl r6, r1, #2
+ add r7, r5, r0
+ add r1, sp, #4
+ ldr r0, [r7, r6]
+ add r1, #2
+ add r2, sp, #4
+ bl MOD62_0222E53C
+ mov r0, #0xbd
+ add r1, r5, r6
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r3, sp, #4
+ mov r1, #2
+ mov r2, #0
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ bl FUN_0200C714
+ ldr r0, [sp]
+ cmp r0, #1
+ bne _0222FAAE
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ add r1, r5, r0
+ ldr r0, [r7, r6]
+ lsl r4, r4, #2
+ str r0, [r1, r4]
+ ldr r0, [r1, r4]
+ add r1, sp, #4
+ add r1, #2
+ add r2, sp, #4
+ bl MOD62_0222E53C
+ mov r0, #0xbd
+ add r1, r5, r4
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r3, sp, #4
+ mov r1, #2
+ mov r2, #0
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ bl FUN_0200C714
+_0222FAAE:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222FA40
+
+ thumb_func_start MOD62_0222FAB4
+MOD62_0222FAB4: ; 0x0222FAB4
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ mov r1, #0xf5
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ cmp r1, #6
+ bls _0222FAC6
+ b _0222FD4C
+_0222FAC6:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0222FAD2: ; jump table
+ .short _0222FAE0 - _0222FAD2 - 2 ; case 0
+ .short _0222FBBC - _0222FAD2 - 2 ; case 1
+ .short _0222FBCC - _0222FAD2 - 2 ; case 2
+ .short _0222FBE0 - _0222FAD2 - 2 ; case 3
+ .short _0222FCA2 - _0222FAD2 - 2 ; case 4
+ .short _0222FD00 - _0222FAD2 - 2 ; case 5
+ .short _0222FD10 - _0222FAD2 - 2 ; case 6
+_0222FAE0:
+ bl MOD62_0222E560
+ add r0, r4, #0
+ bl MOD62_0222E5D8
+ add r0, r4, #0
+ bl MOD62_0222E6D8
+ add r0, r4, #0
+ bl MOD62_0222F2C8
+ add r0, r4, #0
+ bl MOD62_0222F36C
+ add r0, r4, #0
+ bl MOD62_0222F3D4
+ add r0, r4, #0
+ bl MOD62_0222E7A4
+ add r0, r4, #0
+ bl MOD62_0222EA6C
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r3, #2
+ add r1, r4, #0
+ str r3, [sp, #8]
+ mov r0, #0x28
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ add r1, #0xec
+ mov r2, #1
+ bl MOD62_0222EEE0
+ add r0, r4, #0
+ bl MOD62_0222D67C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_0222DB10
+ add r0, r4, #0
+ bl MOD62_0222D654
+ add r0, r4, #0
+ bl MOD62_0222F43C
+ add r0, r4, #0
+ bl MOD62_0222F5B0
+ add r0, r4, #0
+ bl MOD62_0222E888
+ add r0, r4, #0
+ bl MOD62_0222E8F8
+ add r0, r4, #0
+ bl MOD62_0222F778
+ add r0, r4, #0
+ bl MOD62_0222F7A8
+ ldr r1, _0222FD60 ; =0x00000418
+ add r0, r4, #0
+ ldr r1, [r4, r1]
+ bl MOD62_0222DEF8
+ add r0, r4, #0
+ bl MOD62_0222DF5C
+ add r0, r4, #0
+ bl MOD62_0222E004
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_0222F738
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_0222E9B4
+ add r0, r4, #0
+ bl MOD62_0222DDB4
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_0222DDE0
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #7
+ bl MOD62_0222EE78
+ bl MOD62_0222F270
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_022300DC
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _0222FD4C
+_0222FBBC:
+ bl MOD62_0222F288
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _0222FD4C
+_0222FBCC:
+ bl FUN_0200E308
+ cmp r0, #1
+ beq _0222FBD6
+ b _0222FD4C
+_0222FBD6:
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+_0222FBE0:
+ bl FUN_02020AA4
+ cmp r0, #1
+ bne _0222FBF0
+ add r0, r4, #0
+ bl MOD62_0222F93C
+ b _0222FD4C
+_0222FBF0:
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ ldr r6, [r4, r0]
+ add r0, r4, r0
+ bl MOD62_0222F9B4
+ mov r1, #0xf1
+ lsl r1, r1, #2
+ ldr r5, [r4, r1]
+ cmp r0, #1
+ str r6, [r4, r1]
+ bne _0222FC4C
+ add r0, r4, #0
+ bl MOD62_0222D874
+ add r0, r4, #0
+ bl MOD62_0222DC7C
+ add r0, r4, #0
+ bl MOD62_0222EC28
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ str r5, [r4, r0]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD62_0222FA40
+ add r0, r4, #0
+ bl MOD62_0222DAEC
+ add r0, r4, #0
+ bl MOD62_0222D67C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_0222DB10
+ add r0, r4, #0
+ bl MOD62_0222D654
+ ldr r0, _0222FD64 ; =0x000005DC
+ bl FUN_020054C8
+ b _0222FD4C
+_0222FC4C:
+ ldr r0, _0222FD68 ; =0x021C48B8
+ ldr r2, [r0, #0x48]
+ mov r0, #1
+ tst r0, r2
+ beq _0222FC8E
+ add r0, r1, #0
+ add r0, #0x10
+ ldr r0, [r4, r0]
+ add r1, #0x10
+ add r0, r0, #1
+ str r0, [r4, r1]
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #8
+ bl MOD62_0222EE78
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, r4, #0
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ add r1, #0xfc
+ mov r2, #1
+ add r3, r4, #0
+ bl MOD62_0222E3C4
+ ldr r0, _0222FD64 ; =0x000005DC
+ bl FUN_020054C8
+ b _0222FD4C
+_0222FC8E:
+ mov r0, #2
+ tst r0, r2
+ beq _0222FD4C
+ mov r0, #5
+ add r1, #0x10
+ str r0, [r4, r1]
+ ldr r0, _0222FD6C ; =0x000005DD
+ bl FUN_020054C8
+ b _0222FD4C
+_0222FCA2:
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02001C78
+ add r1, r0, #0
+ mov r0, #1
+ mvn r0, r0
+ cmp r1, r0
+ beq _0222FCBE
+ add r0, r0, #1
+ cmp r1, r0
+ beq _0222FD4C
+ b _0222FCD8
+_0222FCBE:
+ add r0, r4, #0
+ bl MOD62_0222F904
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #7
+ bl MOD62_0222EE78
+ mov r0, #0xf5
+ mov r1, #3
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _0222FD4C
+_0222FCD8:
+ cmp r1, #0
+ beq _0222FD4C
+ add r0, r4, #0
+ blx r1
+ cmp r0, #1
+ beq _0222FCEC
+ add r0, r4, #0
+ bl MOD62_0222F904
+ b _0222FD4C
+_0222FCEC:
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #7
+ bl MOD62_0222EE78
+ mov r0, #0xf5
+ mov r1, #3
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _0222FD4C
+_0222FD00:
+ bl MOD62_0222F2A8
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _0222FD4C
+_0222FD10:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _0222FD4C
+ add r0, r4, #0
+ add r0, #0xec
+ bl FUN_02019178
+ add r0, r4, #0
+ bl MOD62_0222ED04
+ add r0, r4, #0
+ bl MOD62_0222E77C
+ add r0, r4, #0
+ bl MOD62_0222F75C
+ add r0, r4, #0
+ bl MOD62_0222E9D4
+ add r0, r4, #0
+ bl MOD62_0222E0C8
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_02085D9C
+ add sp, #0x10
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_0222FD4C:
+ add r0, r4, #0
+ bl MOD62_0222E754
+ add r0, r4, #0
+ bl MOD62_0222ECD4
+ mov r0, #1
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_0222FD60: .word 0x00000418
+_0222FD64: .word 0x000005DC
+_0222FD68: .word 0x021C48B8
+_0222FD6C: .word 0x000005DD
+ thumb_func_end MOD62_0222FAB4
+
+ thumb_func_start MOD62_0222FD70
+MOD62_0222FD70: ; 0x0222FD70
+ push {r3, lr}
+ cmp r1, #3
+ bhi _0222FDA2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0222FD82: ; jump table
+ .short _0222FD8A - _0222FD82 - 2 ; case 0
+ .short _0222FD9A - _0222FD82 - 2 ; case 1
+ .short _0222FD92 - _0222FD82 - 2 ; case 2
+ .short _0222FD9A - _0222FD82 - 2 ; case 3
+_0222FD8A:
+ mov r1, #1
+ bl FUN_0200C61C
+ pop {r3, pc}
+_0222FD92:
+ mov r1, #2
+ bl FUN_0200C61C
+ pop {r3, pc}
+_0222FD9A:
+ mov r1, #0
+ bl FUN_0200C61C
+ pop {r3, pc}
+_0222FDA2:
+ bl ErrorHandling
+ pop {r3, pc}
+ thumb_func_end MOD62_0222FD70
+
+ thumb_func_start MOD62_0222FDA8
+MOD62_0222FDA8: ; 0x0222FDA8
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ cmp r5, #0
+ beq _0222FDCC
+ add r1, sp, #4
+ add r2, sp, #0
+ bl FUN_020119A4
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ add r0, r5, #0
+ add r1, r1, r4
+ add r2, r2, r6
+ bl FUN_020118C4
+_0222FDCC:
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD62_0222FDA8
+
+ thumb_func_start MOD62_0222FDD0
+MOD62_0222FDD0: ; 0x0222FDD0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #3
+ beq _0222FDE2
+ cmp r0, #6
+ beq _0222FDFC
+ b _0222FE1C
+_0222FDE2:
+ mov r1, #0
+ ldr r0, [r4, #8]
+ sub r2, r1, #1
+ bl MOD62_0222FDA8
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_0200C61C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_0222FDFC:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ mov r2, #2
+ bl MOD62_0222FDA8
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl FUN_0200C61C
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+_0222FE1C:
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222FDD0
+
+ thumb_func_start MOD62_0222FE24
+MOD62_0222FE24: ; 0x0222FE24
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #0x35
+ mov r1, #0xc
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r0, #1
+ str r0, [r4]
+ mov r1, #0
+ str r6, [r4, #4]
+ add r0, r5, #0
+ sub r2, r1, #1
+ str r5, [r4, #8]
+ bl MOD62_0222FDA8
+ mov r2, #0xfa
+ ldr r0, _0222FE54 ; =MOD62_0222FDD0
+ add r1, r4, #0
+ lsl r2, r2, #2
+ bl FUN_0200CA44
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0222FE54: .word MOD62_0222FDD0
+ thumb_func_end MOD62_0222FE24
+
+ thumb_func_start MOD62_0222FE58
+MOD62_0222FE58: ; 0x0222FE58
+ push {r4, r5, r6, lr}
+ add r4, r2, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0xd8
+ ldr r0, [r0]
+ add r6, r1, #0
+ cmp r0, #0
+ bne _0222FE6C
+ b _022300A8
+_0222FE6C:
+ cmp r5, #0x14
+ bls _0222FE72
+ b _022300A4
+_0222FE72:
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222FE7E: ; jump table
+ .short _0222FFE6 - _0222FE7E - 2 ; case 0
+ .short _0222FFE6 - _0222FE7E - 2 ; case 1
+ .short _0222FFE6 - _0222FE7E - 2 ; case 2
+ .short _0222FFE6 - _0222FE7E - 2 ; case 3
+ .short _0222FFE6 - _0222FE7E - 2 ; case 4
+ .short _0222FFE6 - _0222FE7E - 2 ; case 5
+ .short _0222FFE6 - _0222FE7E - 2 ; case 6
+ .short _0222FFE6 - _0222FE7E - 2 ; case 7
+ .short _0222FEA8 - _0222FE7E - 2 ; case 8
+ .short _0222FEF2 - _0222FE7E - 2 ; case 9
+ .short _0222FF40 - _0222FE7E - 2 ; case 10
+ .short _0222FF6E - _0222FE7E - 2 ; case 11
+ .short _0222FFAC - _0222FE7E - 2 ; case 12
+ .short _02230074 - _0222FE7E - 2 ; case 13
+ .short _02230074 - _0222FE7E - 2 ; case 14
+ .short _02230074 - _0222FE7E - 2 ; case 15
+ .short _02230074 - _0222FE7E - 2 ; case 16
+ .short _02230074 - _0222FE7E - 2 ; case 17
+ .short _02230074 - _0222FE7E - 2 ; case 18
+ .short _02230074 - _0222FE7E - 2 ; case 19
+ .short _02230074 - _0222FE7E - 2 ; case 20
+_0222FEA8:
+ cmp r6, #0
+ bne _0222FEE6
+ ldr r1, _022300AC ; =0x00000418
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ ble _0222FEB6
+ b _0222FEBA
+_0222FEB6:
+ add r0, r1, #4
+ ldr r0, [r4, r0]
+_0222FEBA:
+ sub r0, r0, #1
+ str r0, [r4, r1]
+ add r0, r4, #0
+ bl MOD62_0222E0C8
+ ldr r1, _022300AC ; =0x00000418
+ add r0, r4, #0
+ ldr r1, [r4, r1]
+ bl MOD62_0222DEF8
+ add r0, r4, #0
+ bl MOD62_0222DF5C
+ add r0, r4, #0
+ bl MOD62_0222E004
+ add r0, r4, #0
+ bl MOD62_0222F0D4
+ ldr r0, _022300B0 ; =0x000006C5
+ bl FUN_020054C8
+_0222FEE6:
+ ldr r0, _022300B4 ; =0x00000404
+ add r1, r6, #0
+ ldr r0, [r4, r0]
+ bl MOD62_0222FD70
+ pop {r4, r5, r6, pc}
+_0222FEF2:
+ cmp r6, #0
+ bne _0222FF34
+ ldr r1, _022300AC ; =0x00000418
+ ldr r0, [r4, r1]
+ add r0, r0, #1
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ bl _s32_div_f
+ ldr r0, _022300AC ; =0x00000418
+ str r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD62_0222E0C8
+ ldr r1, _022300AC ; =0x00000418
+ add r0, r4, #0
+ ldr r1, [r4, r1]
+ bl MOD62_0222DEF8
+ add r0, r4, #0
+ bl MOD62_0222DF5C
+ add r0, r4, #0
+ bl MOD62_0222E004
+ add r0, r4, #0
+ bl MOD62_0222F0D4
+ ldr r0, _022300B0 ; =0x000006C5
+ bl FUN_020054C8
+_0222FF34:
+ ldr r0, _022300B8 ; =0x00000408
+ add r1, r6, #0
+ ldr r0, [r4, r0]
+ bl MOD62_0222FD70
+ pop {r4, r5, r6, pc}
+_0222FF40:
+ cmp r6, #0
+ bne _0222FF62
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #5
+ beq _0222FF58
+ mov r1, #5
+ str r1, [r4, r0]
+ ldr r0, _022300BC ; =0x000005DD
+ bl FUN_020054C8
+_0222FF58:
+ ldr r0, _022300C0 ; =0x0000040C
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl MOD62_0222FE24
+_0222FF62:
+ ldr r0, _022300C0 ; =0x0000040C
+ add r1, r6, #0
+ ldr r0, [r4, r0]
+ bl MOD62_0222FD70
+ pop {r4, r5, r6, pc}
+_0222FF6E:
+ cmp r6, #0
+ bne _0222FF9E
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #6
+ beq _0222FF8E
+ mov r1, #6
+ str r1, [r4, r0]
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_022300DC
+ ldr r0, _022300C4 ; =0x000005E2
+ bl FUN_020054C8
+_0222FF8E:
+ mov r0, #0x41
+ mov r1, #0x8e
+ lsl r0, r0, #4
+ lsl r1, r1, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r4, r1]
+ bl MOD62_0222FE24
+_0222FF9E:
+ mov r0, #0x41
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ add r1, r6, #0
+ bl MOD62_0222FD70
+ pop {r4, r5, r6, pc}
+_0222FFAC:
+ cmp r6, #0
+ bne _0222FFDA
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #7
+ beq _0222FFCC
+ mov r1, #7
+ str r1, [r4, r0]
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_022300DC
+ ldr r0, _022300BC ; =0x000005DD
+ bl FUN_020054C8
+_0222FFCC:
+ ldr r0, _022300C8 ; =0x00000414
+ mov r1, #0x8f
+ lsl r1, r1, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r4, r1]
+ bl MOD62_0222FE24
+_0222FFDA:
+ ldr r0, _022300C8 ; =0x00000414
+ add r1, r6, #0
+ ldr r0, [r4, r0]
+ bl MOD62_0222FD70
+ pop {r4, r5, r6, pc}
+_0222FFE6:
+ cmp r6, #0
+ bne _022300A8
+ add r0, r4, #0
+ bl MOD62_0222D76C
+ cmp r0, #0
+ bne _02230006
+ ldr r0, _022300CC ; =0x000005F2
+ bl FUN_020054C8
+ add r4, #0xec
+ add r0, r4, #0
+ mov r1, #0xf
+ bl MOD62_0222EE78
+ pop {r4, r5, r6, pc}
+_02230006:
+ mov r0, #0x42
+ lsl r0, r0, #4
+ add r6, r4, r0
+ ldrb r1, [r6, r5]
+ cmp r1, #0
+ beq _0223005C
+ ldr r0, [r4, #0x64]
+ sub r1, r1, #1
+ bl FUN_02029CF4
+ cmp r0, #0
+ beq _0223005C
+ lsl r1, r5, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD62_0222D6EC
+ add r1, r4, #0
+ add r1, #0xd4
+ str r0, [r1]
+ ldrb r0, [r6, r5]
+ bl FUN_02085FD0
+ add r1, r0, #0
+ add r0, r4, #0
+ add r0, #0xec
+ bl MOD62_0222F208
+ ldr r0, [r4]
+ mov r2, #0
+ ldrb r1, [r6, r5]
+ ldr r0, [r0, #0x20]
+ mvn r2, r2
+ bl FUN_02029D44
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD62_0222F168
+ ldr r0, _022300D0 ; =0x000005EB
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_0223005C:
+ ldrb r0, [r6, r5]
+ cmp r0, #0
+ beq _022300A8
+ ldr r0, _022300CC ; =0x000005F2
+ bl FUN_020054C8
+ add r4, #0xec
+ add r0, r4, #0
+ mov r1, #0x10
+ bl MOD62_0222EE78
+ pop {r4, r5, r6, pc}
+_02230074:
+ cmp r6, #0
+ bne _022300A8
+ sub r5, #0xd
+ lsl r2, r5, #0x18
+ add r0, r4, #0
+ lsr r2, r2, #0x18
+ bl MOD62_0222DA38
+ lsl r0, r5, #4
+ add r1, r4, r0
+ mov r0, #0xca
+ lsl r0, r0, #2
+ ldrb r0, [r1, r0]
+ bl FUN_02085FD0
+ add r4, #0xec
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD62_0222F208
+ ldr r0, _022300D0 ; =0x000005EB
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_022300A4:
+ bl ErrorHandling
+_022300A8:
+ pop {r4, r5, r6, pc}
+ nop
+_022300AC: .word 0x00000418
+_022300B0: .word 0x000006C5
+_022300B4: .word 0x00000404
+_022300B8: .word 0x00000408
+_022300BC: .word 0x000005DD
+_022300C0: .word 0x0000040C
+_022300C4: .word 0x000005E2
+_022300C8: .word 0x00000414
+_022300CC: .word 0x000005F2
+_022300D0: .word 0x000005EB
+ thumb_func_end MOD62_0222FE58
+
+ thumb_func_start MOD62_022300D4
+MOD62_022300D4: ; 0x022300D4
+ mov r1, #0x96
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ bx lr
+ thumb_func_end MOD62_022300D4
+
+ thumb_func_start MOD62_022300DC
+MOD62_022300DC: ; 0x022300DC
+ add r0, #0xd8
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD62_022300DC
+
+ thumb_func_start MOD62_022300E4
+MOD62_022300E4: ; 0x022300E4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #4]
+ add r1, sp, #0x10
+ mov r0, #0
+ strb r0, [r1]
+ strb r0, [r1, #1]
+ strb r0, [r1, #2]
+ mov r7, #0x1d
+ lsl r7, r7, #4
+ strb r0, [r1, #3]
+ ldr r1, _022301A0 ; =0x02231260
+ ldr r2, [sp, #4]
+ add r3, r7, #1
+ add r4, r7, #2
+ add r5, r7, #3
+_02230104:
+ ldrb r6, [r1]
+ add r0, r0, #1
+ strb r6, [r2, r7]
+ ldrb r6, [r1, #1]
+ strb r6, [r2, r3]
+ ldrb r6, [r1, #2]
+ strb r6, [r2, r4]
+ ldrb r6, [r1, #3]
+ add r1, r1, #4
+ strb r6, [r2, r5]
+ add r2, r2, #4
+ cmp r0, #0xd
+ blt _02230104
+ cmp r0, #0x15
+ bge _0223017E
+ mov r3, #0x1d
+ ldr r2, [sp, #4]
+ lsl r3, r3, #4
+ add r2, r2, r3
+ lsl r4, r0, #2
+ ldr r1, [sp, #4]
+ ldr r3, [sp, #4]
+ add r1, r1, r4
+ add r2, r2, r4
+ lsl r4, r0, #4
+ add r5, sp, #0xc
+ add r3, r3, r4
+ ldrb r4, [r5, #4]
+ strb r4, [r5]
+ ldrb r4, [r5, #5]
+ strb r4, [r5, #1]
+ ldrb r4, [r5, #6]
+ strb r4, [r5, #2]
+ ldrb r4, [r5, #7]
+ strb r4, [r5, #3]
+ ldrb r4, [r5, #2]
+ ldrb r6, [r5]
+ ldrb r7, [r5, #1]
+ str r4, [sp, #8]
+ ldrb r4, [r5, #3]
+ mov ip, r4
+_02230156:
+ mov r4, #0x1d
+ lsl r4, r4, #4
+ strb r6, [r1, r4]
+ add r4, r4, #1
+ strb r7, [r1, r4]
+ ldr r5, _022301A4 ; =0x000001D2
+ ldr r4, [sp, #8]
+ add r0, r0, #1
+ strb r4, [r1, r5]
+ add r5, r5, #1
+ mov r4, ip
+ strb r4, [r1, r5]
+ mov r4, #0x26
+ lsl r4, r4, #4
+ str r2, [r3, r4]
+ add r1, r1, #4
+ add r2, r2, #4
+ add r3, #0x10
+ cmp r0, #0x15
+ blt _02230156
+_0223017E:
+ mov r0, #0x35
+ str r0, [sp]
+ mov r1, #0x1d
+ ldr r0, [sp, #4]
+ lsl r1, r1, #4
+ add r0, r0, r1
+ ldr r2, _022301A8 ; =MOD62_0222FE58
+ ldr r3, [sp, #4]
+ mov r1, #0x15
+ bl FUN_020220C4
+ mov r2, #0x73
+ ldr r1, [sp, #4]
+ lsl r2, r2, #2
+ str r0, [r1, r2]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022301A0: .word 0x02231260
+_022301A4: .word 0x000001D2
+_022301A8: .word MOD62_0222FE58
+ thumb_func_end MOD62_022300E4
+
+ thumb_func_start MOD62_022301AC
+MOD62_022301AC: ; 0x022301AC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x34
+ ldr r1, _02230214 ; =0x00000428
+ add r5, r0, #0
+ ldr r1, [r5, r1]
+ add r0, sp, #0x24
+ mov r2, #2
+ bl FUN_02068B68
+ ldr r0, _02230214 ; =0x00000428
+ mov r1, #5
+ ldr r0, [r5, r0]
+ mov r2, #0
+ bl FUN_020671BC
+ add r4, r0, #0
+ ldr r0, _02230214 ; =0x00000428
+ mov r1, #2
+ ldr r0, [r5, r0]
+ bl FUN_02068E14
+ add r6, r0, #0
+ mov r0, #0x6b
+ lsl r0, r0, #2
+ lsl r1, r4, #0x10
+ str r6, [r5, r0]
+ add r0, sp, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02069010
+ ldr r0, _02230218 ; =0xFFFFFD80
+ add r6, #0x30
+ str r0, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ add r0, sp, #0x10
+ str r0, [sp, #8]
+ mov r0, #0x69
+ str r1, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, sp, #0x24
+ mov r2, #0xc0
+ add r3, r6, #0
+ bl FUN_020073A0
+ mov r1, #0x6a
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add sp, #0x34
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02230214: .word 0x00000428
+_02230218: .word 0xFFFFFD80
+ thumb_func_end MOD62_022301AC
+
+ thumb_func_start MOD62_0223021C
+MOD62_0223021C: ; 0x0223021C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, _02230268 ; =0x00000428
+ mov r1, #5
+ ldr r0, [r5, r0]
+ mov r2, #0
+ bl FUN_020671BC
+ add r4, r0, #0
+ ldr r0, _02230268 ; =0x00000428
+ ldr r0, [r5, r0]
+ bl FUN_02068854
+ add r6, r0, #0
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_02007314
+ mov r1, #0x97
+ lsl r2, r4, #0x10
+ str r6, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ lsl r1, r1, #2
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ sub r1, #0xb4
+ ldr r1, [r5, r1]
+ lsr r2, r2, #0x10
+ mov r3, #2
+ bl FUN_02069038
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02230268: .word 0x00000428
+ thumb_func_end MOD62_0223021C
+
+ thumb_func_start MOD62_0223026C
+MOD62_0223026C: ; 0x0223026C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xc
+ mov r2, #0
+ bl FUN_02007558
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xd
+ mov r2, #0
+ bl FUN_02007558
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0223026C
+
+ thumb_func_start MOD62_02230290
+MOD62_02230290: ; 0x02230290
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xc
+ bl FUN_0200782C
+ mov r1, #1
+ lsl r1, r1, #8
+ cmp r0, r1
+ bne _022302AC
+ mov r0, #0
+ pop {r4, pc}
+_022302AC:
+ add r1, #0xa8
+ ldr r0, [r4, r1]
+ mov r1, #0xc
+ bl FUN_0200782C
+ mov r2, #1
+ lsl r2, r2, #8
+ cmp r0, r2
+ blt _022302DE
+ add r0, r2, #0
+ add r0, #0xa8
+ ldr r0, [r4, r0]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ mov r1, #0xd
+ add r2, r1, #0
+ ldr r0, [r4, r0]
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r0, #0
+ pop {r4, pc}
+_022302DE:
+ add r2, #0xa8
+ ldr r0, [r4, r2]
+ mov r1, #0xc
+ mov r2, #0x20
+ bl FUN_020079E0
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xd
+ mov r2, #0x20
+ bl FUN_020079E0
+ mov r1, #0x6a
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ bl FUN_02007F34
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_02230290
+
+ thumb_func_start MOD62_0223030C
+MOD62_0223030C: ; 0x0223030C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xc
+ bl FUN_0200782C
+ cmp r0, #0
+ bne _02230324
+ mov r0, #0
+ pop {r4, pc}
+_02230324:
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xc
+ bl FUN_0200782C
+ cmp r0, #0
+ bgt _02230354
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xc
+ mov r2, #0
+ bl FUN_02007558
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xd
+ mov r2, #0
+ bl FUN_02007558
+ mov r0, #0
+ pop {r4, pc}
+_02230354:
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ mov r1, #0xc
+ add r2, r1, #0
+ ldr r0, [r4, r0]
+ sub r2, #0x2c
+ bl FUN_020079E0
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ mov r1, #0xd
+ add r2, r1, #0
+ ldr r0, [r4, r0]
+ sub r2, #0x2d
+ bl FUN_020079E0
+ mov r1, #0x6a
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ bl FUN_02007F34
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0223030C
+
+ thumb_func_start MOD62_02230388
+MOD62_02230388: ; 0x02230388
+ add r2, r1, #0
+ mov r1, #0x6a
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ ldr r3, _02230398 ; =0x02007559
+ mov r1, #6
+ bx r3
+ nop
+_02230398: .word 0x02007559
+ thumb_func_end MOD62_02230388
+
+ thumb_func_start MOD62_0223039C
+MOD62_0223039C: ; 0x0223039C
+ mov r1, #0x6a
+ lsl r1, r1, #2
+ ldr r3, _022303A8 ; =0x02007535
+ ldr r0, [r0, r1]
+ bx r3
+ nop
+_022303A8: .word 0x02007535
+ thumb_func_end MOD62_0223039C
+
+ thumb_func_start MOD62_022303AC
+MOD62_022303AC: ; 0x022303AC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xa4
+ mov r1, #0xf5
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ cmp r2, #0xa
+ bhi _0223042C
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_022303C8: ; jump table
+ .short _022303DE - _022303C8 - 2 ; case 0
+ .short _02230424 - _022303C8 - 2 ; case 1
+ .short _0223049A - _022303C8 - 2 ; case 2
+ .short _022304D2 - _022303C8 - 2 ; case 3
+ .short _02230BDA - _022303C8 - 2 ; case 4
+ .short _022304F2 - _022303C8 - 2 ; case 5
+ .short _02230846 - _022303C8 - 2 ; case 6
+ .short _022308B2 - _022303C8 - 2 ; case 7
+ .short _02230AD4 - _022303C8 - 2 ; case 8
+ .short _02230B00 - _022303C8 - 2 ; case 9
+ .short _02230B96 - _022303C8 - 2 ; case 10
+_022303DE:
+ mov r1, #0
+ bl MOD62_022300DC
+ add r0, r4, #0
+ ldr r1, _0223071C ; =0x0000FFFF
+ add r0, #0xec
+ bl MOD62_0222EE78
+ add r0, r4, #0
+ bl MOD62_0222EFA0
+ add r0, r4, #0
+ bl MOD62_0222F0D4
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #4
+ bl MOD62_0222E180
+ add r0, r4, #0
+ bl MOD62_0222F778
+ add r0, r4, #0
+ bl MOD62_0222F7A8
+ mov r0, #0x26
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_02230424:
+ bl MOD62_022300D4
+ cmp r0, #1
+ bne _0223042E
+_0223042C:
+ b _02230BDA
+_0223042E:
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ mov r1, #1
+ mov r2, #3
+ bl FUN_02003210
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _0223071C ; =0x0000FFFF
+ mov r1, #4
+ bl FUN_02003210
+ mov r0, #0x10
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #7
+ mov r1, #1
+ bl FUN_020178BC
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_0222F738
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_0222E9B4
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_0222DDE0
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_0223049A:
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02230598
+ mov r0, #3
+ mov r1, #1
+ bl FUN_020178BC
+ mov r0, #0x10
+ str r0, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ mov r1, #1
+ mov r2, #2
+ bl FUN_02003210
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_022304D2:
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02230598
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_022300DC
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_022304F2:
+ add r2, r1, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ cmp r2, #7
+ bls _022304FE
+ b _0223080C
+_022304FE:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0223050A: ; jump table
+ .short _0223051A - _0223050A - 2 ; case 0
+ .short _0223058C - _0223050A - 2 ; case 1
+ .short _022305E2 - _0223050A - 2 ; case 2
+ .short _02230646 - _0223050A - 2 ; case 3
+ .short _02230692 - _0223050A - 2 ; case 4
+ .short _022306D6 - _0223050A - 2 ; case 5
+ .short _0223072C - _0223050A - 2 ; case 6
+ .short _022307A0 - _0223050A - 2 ; case 7
+_0223051A:
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _02230720 ; =0x0000080B
+ mov r1, #2
+ bl FUN_02003210
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _0223071C ; =0x0000FFFF
+ mov r1, #8
+ bl FUN_02003210
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_022300DC
+ mov r0, #0x3e
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD62_0222F80C
+ add r0, r4, #0
+ bl MOD62_022301AC
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_02230388
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #0xd
+ bl MOD62_0222EE78
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_0223058C:
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _0223059A
+_02230598:
+ b _02230BDA
+_0223059A:
+ mov r0, #0x35
+ str r0, [sp, #0x80]
+ mov r1, #1
+ mov r2, #0
+ mov r0, #0xff
+ str r0, [sp, #0x88]
+ add r0, r4, #0
+ str r1, [sp, #0x7c]
+ str r1, [sp, #0x94]
+ str r2, [sp, #0x84]
+ str r2, [sp, #0x90]
+ add r0, #0xdc
+ ldr r0, [r0]
+ mov r1, #0x9a
+ str r0, [sp, #0x98]
+ add r0, r4, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ str r0, [sp, #0x9c]
+ ldr r0, _02230724 ; =0x00000428
+ ldr r0, [r4, r0]
+ bl FUN_020671BC
+ str r0, [sp, #0x8c]
+ add r0, sp, #0x7c
+ bl MOD08_02229918
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_022305E2:
+ add r2, sp, #0x58
+ mov r0, #0
+ str r0, [r2]
+ str r0, [r2, #4]
+ str r0, [r2, #8]
+ mov r0, #1
+ str r0, [sp, #0x58]
+ add r0, r1, #0
+ add r0, #0x54
+ ldr r0, [r4, r0]
+ sub r1, #0x10
+ str r0, [sp, #0x60]
+ ldr r0, [r4, r1]
+ add r1, r4, #0
+ add r0, r0, #1
+ str r0, [sp, #0x18]
+ add r0, sp, #0x64
+ bl MOD62_0222DCBC
+ ldr r0, _02230724 ; =0x00000428
+ mov r1, #0xa1
+ ldr r0, [r4, r0]
+ add r2, sp, #0x18
+ bl FUN_02067830
+ ldr r0, _02230724 ; =0x00000428
+ mov r1, #0xaa
+ ldr r0, [r4, r0]
+ add r2, sp, #0x64
+ bl FUN_02067830
+ mov r0, #0x35
+ add r1, sp, #0x58
+ bl MOD08_02228218
+ mov r1, #0x8a
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ bl MOD08_02228524
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ mov r1, #0
+ add r0, r0, #4
+ str r1, [r4, r0]
+ b _02230BDA
+_02230646:
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_02228570
+ cmp r0, #1
+ bne _02230702
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_02229A00
+ cmp r0, #1
+ bne _02230702
+ add r0, r4, #0
+ bl MOD62_02230290
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_022285A4
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_02230388
+ add r0, r4, #0
+ bl MOD62_0223026C
+ ldr r0, _02230728 ; =0x000006C6
+ bl FUN_020054C8
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_02230692:
+ bl MOD62_02230290
+ add r5, r0, #0
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_022299E8
+ cmp r0, #0
+ bne _02230702
+ cmp r5, #0
+ bne _02230702
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_02229A2C
+ mov r0, #0x10
+ mov r1, #0
+ bl FUN_0201E6E4
+ add r0, r4, #0
+ bl MOD62_0223021C
+ mov r0, #0x3e
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ sub r1, r0, #4
+ ldr r1, [r4, r1]
+ sub r0, r0, #4
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_022306D6:
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_022285B4
+ cmp r0, #0
+ bne _02230702
+ mov r0, #0x97
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_02014D7C
+ cmp r0, #1
+ bne _02230702
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02007390
+ cmp r0, #0
+ beq _02230704
+_02230702:
+ b _02230BDA
+_02230704:
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_02228618
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+ nop
+_0223071C: .word 0x0000FFFF
+_02230720: .word 0x0000080B
+_02230724: .word 0x00000428
+_02230728: .word 0x000006C6
+_0223072C:
+ add r0, r1, #0
+ add r0, #0xc
+ ldr r0, [r4, r0]
+ add r2, r0, #1
+ add r0, r1, #0
+ add r0, #0xc
+ str r2, [r4, r0]
+ add r0, r1, #0
+ add r0, #0xc
+ ldr r0, [r4, r0]
+ cmp r0, #0x1e
+ blt _0223081A
+ add r0, r1, #0
+ mov r2, #0
+ add r0, #0xc
+ str r2, [r4, r0]
+ mov r0, #0x35
+ mov r3, #1
+ str r0, [sp, #0x34]
+ mov r0, #5
+ str r0, [sp, #0x38]
+ mov r0, #0xff
+ str r0, [sp, #0x3c]
+ add r0, r4, #0
+ str r3, [sp, #0x30]
+ str r2, [sp, #0x44]
+ str r3, [sp, #0x48]
+ add r0, #0xdc
+ ldr r0, [r0]
+ add r1, #0x54
+ str r0, [sp, #0x4c]
+ add r0, r4, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ str r0, [sp, #0x50]
+ ldr r0, [r4, r1]
+ mov r1, #0x9a
+ bl FUN_020671BC
+ str r0, [sp, #0x40]
+ add r0, sp, #0x30
+ bl MOD08_02229918
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ bl MOD62_0222F7E0
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_022307A0:
+ bl MOD62_0223030C
+ add r5, r0, #0
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_022299E8
+ cmp r0, #0
+ bne _0223081A
+ cmp r5, #0
+ bne _0223081A
+ mov r0, #0xa
+ str r0, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _02230B38 ; =0x0000080B
+ mov r1, #2
+ bl FUN_02003210
+ mov r0, #0xa
+ str r0, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _02230B3C ; =0x0000FFFF
+ mov r1, #8
+ bl FUN_02003210
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_02230388
+ add r0, r4, #0
+ bl MOD62_0223039C
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_02229A2C
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_0223080C:
+ add r0, r4, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _0223081C
+_0223081A:
+ b _02230BDA
+_0223081C:
+ mov r0, #0x10
+ mov r1, #0
+ bl FUN_0201E6E4
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_022300DC
+ mov r0, #0xf7
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r1, #4
+ sub r0, #8
+ str r1, [r4, r0]
+ add r0, r4, #0
+ ldr r1, _02230B3C ; =0x0000FFFF
+ add r0, #0xec
+ bl MOD62_0222EE78
+ b _02230BDA
+_02230846:
+ add r0, #0xec
+ mov r1, #0xc
+ bl MOD62_0222EE78
+ add r0, r4, #0
+ bl MOD62_0222DC00
+ cmp r0, #1
+ bne _02230860
+ mov r0, #0x26
+ mov r1, #1
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+_02230860:
+ add r0, r4, #0
+ bl MOD62_0222DC7C
+ add r0, r4, #0
+ bl MOD62_0222EC28
+ ldr r0, [r4]
+ ldr r0, [r0, #0x28]
+ bl FUN_02029FC8
+ mov r1, #6
+ bl FUN_0202A170
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ mov r0, #0xc
+ mul r0, r1
+ add r2, r4, r0
+ mov r0, #0x99
+ lsl r0, r0, #2
+ ldr r0, [r2, r0]
+ cmp r0, #0xff
+ beq _022308A8
+ ldr r2, [r4]
+ lsl r0, r0, #2
+ add r0, r2, r0
+ ldr r5, [r0, #4]
+ ldr r0, [r2, #0x20]
+ bl FUN_02029C8C
+ add r2, r0, #0
+ add r0, r5, #0
+ mov r1, #0xaa
+ bl FUN_02067830
+_022308A8:
+ mov r0, #0xf5
+ mov r1, #8
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _02230BDA
+_022308B2:
+ add r1, #8
+ ldr r1, [r4, r1]
+ cmp r1, #5
+ bhi _0223093C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_022308C6: ; jump table
+ .short _022308D2 - _022308C6 - 2 ; case 0
+ .short _02230930 - _022308C6 - 2 ; case 1
+ .short _022309B4 - _022308C6 - 2 ; case 2
+ .short _022309C6 - _022308C6 - 2 ; case 3
+ .short _02230A2E - _022308C6 - 2 ; case 4
+ .short _02230A6A - _022308C6 - 2 ; case 5
+_022308D2:
+ bl MOD62_0222DC00
+ cmp r0, #0
+ bne _022308E4
+ mov r0, #0xf5
+ mov r1, #8
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _02230BDA
+_022308E4:
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _02230B38 ; =0x0000080B
+ mov r1, #2
+ bl FUN_02003210
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _02230B3C ; =0x0000FFFF
+ mov r1, #8
+ bl FUN_02003210
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_022300DC
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_02230930:
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _0223093E
+_0223093C:
+ b _02230BDA
+_0223093E:
+ add r0, r4, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_020038F0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r2, #4
+ add r0, r4, #0
+ str r2, [sp, #8]
+ mov r1, #0x28
+ str r1, [sp, #0xc]
+ add r0, #0xe4
+ add r1, #0xe4
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r3, #2
+ bl MOD62_0222EEE0
+ add r0, r4, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ mov r1, #0x19
+ str r0, [sp, #0x1c]
+ mov r0, #4
+ str r0, [sp, #0x20]
+ mov r0, #0xd4
+ str r0, [sp, #0x24]
+ mov r0, #5
+ str r0, [sp, #0x28]
+ add r0, sp, #0x10
+ strb r1, [r0, #0x1c]
+ mov r1, #6
+ strb r1, [r0, #0x1d]
+ mov r0, #0x35
+ bl FUN_02014590
+ mov r1, #0x89
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ add r1, sp, #0x1c
+ bl FUN_020145C8
+ mov r0, #0x43
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0xe
+ bl MOD62_0222EE78
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_022309B4:
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E74C
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+_022309C6:
+ mov r0, #0x89
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0201466C
+ cmp r0, #0
+ beq _02230A76
+ cmp r0, #1
+ beq _022309DC
+ cmp r0, #2
+ bne _02230A76
+_022309DC:
+ mov r1, #0x3e
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ add r0, r4, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_020038F0
+ mov r0, #0x89
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_020146C4
+ mov r0, #0x89
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_020145A8
+ mov r0, #0x43
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #1
+ bl FUN_0200D0E0
+ mov r0, #0x43
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019570
+ mov r0, #0x43
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_02230A2E:
+ mov r0, #0xa
+ str r0, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _02230B38 ; =0x0000080B
+ mov r1, #2
+ bl FUN_02003210
+ mov r0, #0xa
+ str r0, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _02230B3C ; =0x0000FFFF
+ mov r1, #8
+ bl FUN_02003210
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_02230A6A:
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _02230A78
+_02230A76:
+ b _02230BDA
+_02230A78:
+ mov r0, #0x3e
+ lsl r0, r0, #4
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _02230AC2
+ cmp r1, #1
+ beq _02230A8C
+ cmp r1, #2
+ beq _02230ABC
+ b _02230AC2
+_02230A8C:
+ add r0, r4, #0
+ bl MOD62_0222F790
+ add r0, r4, #0
+ bl MOD62_0222F7C4
+ add r0, r4, #0
+ bl MOD62_0222F0D4
+ add r0, r4, #0
+ bl MOD62_0222DAEC
+ add r0, r4, #0
+ bl MOD62_0222D67C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_0222DB10
+ mov r0, #0xf5
+ mov r1, #6
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _02230AC2
+_02230ABC:
+ mov r1, #4
+ sub r0, #0xc
+ str r1, [r4, r0]
+_02230AC2:
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_022300DC
+ mov r0, #0xf7
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _02230BDA
+_02230AD4:
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ mov r1, #1
+ mov r2, #2
+ bl FUN_02003210
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_02230B00:
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02230BDA
+ mov r0, #0x10
+ str r0, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ add r0, r4, #0
+ mov r1, #1
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ add r2, r1, #0
+ bl FUN_02003210
+ mov r0, #0x10
+ str r0, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _02230B3C ; =0x0000FFFF
+ b _02230B40
+ .align 2, 0
+_02230B38: .word 0x0000080B
+_02230B3C: .word 0x0000FFFF
+_02230B40:
+ mov r1, #4
+ bl FUN_02003210
+ mov r0, #3
+ add r1, r0, #0
+ bl FUN_020178BC
+ mov r0, #7
+ mov r1, #3
+ bl FUN_020178BC
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E74C
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_0222F738
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_0222E9B4
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_0222DDE0
+ mov r1, #0
+ add r0, r4, #0
+ mvn r1, r1
+ mov r2, #4
+ bl MOD62_0222E180
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_022300DC
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_02230B96:
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02230BDA
+ add r0, r4, #0
+ bl MOD62_022300D4
+ cmp r0, #1
+ beq _02230BDA
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ mov r1, #0
+ add r0, r4, #0
+ mov r2, #0xff
+ add r3, r1, #0
+ bl MOD62_0222F8D4
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #7
+ bl MOD62_0222EE78
+ add r0, r4, #0
+ bl MOD62_0222F1E8
+ add sp, #0xa4
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_02230BDA:
+ add r0, r4, #0
+ add r0, #0xd4
+ ldr r5, [r0]
+ cmp r5, #0xff
+ bne _02230BF0
+ mov r0, #0x73
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02022144
+ b _02230C98
+_02230BF0:
+ add r0, sp, #0x14
+ add r1, sp, #0x10
+ bl FUN_02020AB0
+ cmp r0, #0
+ beq _02230C3E
+ lsl r6, r5, #4
+ mov r0, #0xca
+ add r1, r4, r6
+ lsl r0, r0, #2
+ ldrb r0, [r1, r0]
+ bl FUN_02085FD0
+ add r1, r0, #0
+ add r0, r4, #0
+ add r0, #0xec
+ bl MOD62_0222F208
+ mov r0, #0xcb
+ ldr r2, [sp, #0x10]
+ add r1, r4, r6
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r1, [sp, #0x14]
+ lsl r2, r2, #0x10
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD62_0222DBCC
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD62_0222DC48
+ b _02230C98
+_02230C3E:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD62_0222DB38
+ lsl r6, r5, #4
+ mov r2, #0x33
+ add r1, r4, r6
+ lsl r2, r2, #4
+ add r7, r0, #0
+ ldr r0, [r1, r2]
+ sub r2, r2, #4
+ ldr r1, [r1, r2]
+ mov r2, #0
+ bl MOD62_0222D5F8
+ cmp r7, #0
+ bne _02230C80
+ mov r1, #0xca
+ ldr r0, [r4]
+ add r2, r4, r6
+ lsl r1, r1, #2
+ ldrb r1, [r2, r1]
+ ldr r0, [r0, #0x20]
+ mov r2, #1
+ bl FUN_02029D84
+ add r0, r4, #0
+ bl MOD62_0222F0D4
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD62_0222DB78
+_02230C80:
+ ldr r0, _02230CB8 ; =0x000005EA
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0xff
+ add r0, #0xd4
+ str r1, [r0]
+ add r0, r4, #0
+ ldr r1, _02230CBC ; =0x0000FFFF
+ add r0, #0xec
+ bl MOD62_0222F208
+_02230C98:
+ add r0, r4, #0
+ bl MOD62_0222F758
+ add r0, r4, #0
+ bl MOD62_0222E990
+ add r0, r4, #0
+ bl MOD62_0222E754
+ add r0, r4, #0
+ bl MOD62_0222ECD4
+ mov r0, #1
+ add sp, #0xa4
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02230CB8: .word 0x000005EA
+_02230CBC: .word 0x0000FFFF
+ thumb_func_end MOD62_022303AC
+
+ thumb_func_start MOD62_02230CC0
+MOD62_02230CC0: ; 0x02230CC0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _02230CD8
+ cmp r1, #1
+ beq _02230CDC
+ cmp r1, #2
+ beq _02230CEC
+ b _02230D26
+_02230CD8:
+ add r1, r1, #1
+ str r1, [r4, r0]
+_02230CDC:
+ bl MOD62_0222F2A8
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230D26
+_02230CEC:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _02230D26
+ add r0, r4, #0
+ add r0, #0xec
+ bl FUN_02019178
+ add r0, r4, #0
+ bl MOD62_0222ED04
+ add r0, r4, #0
+ bl MOD62_0222E77C
+ add r0, r4, #0
+ bl MOD62_0222F75C
+ add r0, r4, #0
+ bl MOD62_0222E9D4
+ add r0, r4, #0
+ bl MOD62_0222E0C8
+ ldr r0, [r4]
+ mov r1, #1
+ bl FUN_02085D9C
+ mov r0, #0
+ pop {r4, pc}
+_02230D26:
+ add r0, r4, #0
+ bl MOD62_0222E754
+ add r0, r4, #0
+ bl MOD62_0222ECD4
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_02230CC0
+
+ thumb_func_start MOD62_02230D38
+MOD62_02230D38: ; 0x02230D38
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ mov r0, #0
+ add r4, r5, #4
+ lsl r6, r1, #3
+ str r0, [sp]
+ ldr r0, [r4, r6]
+ cmp r0, #0xff
+ beq _02230D5C
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #4]
+ mov r1, #0xa1
+ add r2, sp, #0
+ bl FUN_02067830
+_02230D5C:
+ mov r0, #0xff
+ str r0, [r4, r6]
+ add r0, r5, #0
+ bl MOD62_0222EC28
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD62_02230D38
+
+ thumb_func_start MOD62_02230D6C
+MOD62_02230D6C: ; 0x02230D6C
+ push {r4, lr}
+ mov r2, #0xf5
+ add r4, r0, #0
+ lsl r2, r2, #2
+ ldr r1, [r4, r2]
+ cmp r1, #0
+ beq _02230D84
+ cmp r1, #1
+ beq _02230DA2
+ cmp r1, #2
+ beq _02230DB2
+ b _02230DC6
+_02230D84:
+ sub r2, #0x10
+ ldr r1, [r4, r2]
+ bl MOD62_02230D38
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #9
+ bl MOD62_0222EE78
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230DC6
+_02230DA2:
+ ldr r0, _02230DD8 ; =0x021C48B8
+ ldr r3, [r0, #0x48]
+ ldr r0, _02230DDC ; =0x00000CF3
+ tst r0, r3
+ beq _02230DC6
+ add r0, r1, #1
+ str r0, [r4, r2]
+ b _02230DC6
+_02230DB2:
+ mov r1, #0
+ mov r2, #0xff
+ add r3, r1, #0
+ bl MOD62_0222F8D4
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #7
+ bl MOD62_0222EE78
+_02230DC6:
+ add r0, r4, #0
+ bl MOD62_0222E754
+ add r0, r4, #0
+ bl MOD62_0222ECD4
+ mov r0, #1
+ pop {r4, pc}
+ nop
+_02230DD8: .word 0x021C48B8
+_02230DDC: .word 0x00000CF3
+ thumb_func_end MOD62_02230D6C
+
+ thumb_func_start MOD62_02230DE0
+MOD62_02230DE0: ; 0x02230DE0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #3
+ bls _02230DF0
+ b _02230F18
+_02230DF0:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02230DFC: ; jump table
+ .short _02230E04 - _02230DFC - 2 ; case 0
+ .short _02230E46 - _02230DFC - 2 ; case 1
+ .short _02230ED0 - _02230DFC - 2 ; case 2
+ .short _02230EE0 - _02230DFC - 2 ; case 3
+_02230E04:
+ sub r0, #0xe0
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl FUN_0200C6C4
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x14
+ bl FUN_0200C6C4
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_0200C5C0
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #0xa
+ bl MOD62_0222EE78
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_0200C644
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+_02230E46:
+ mov r0, #0xf2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD62_0222F9B4
+ cmp r0, #1
+ bne _02230E66
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD62_0222FA40
+ ldr r0, _02230F28 ; =0x000005DC
+ bl FUN_020054C8
+ b _02230F18
+_02230E66:
+ ldr r0, _02230F2C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _02230EA4
+ mov r2, #0xf1
+ lsl r2, r2, #2
+ ldr r1, [r4, r2]
+ add r2, r2, #4
+ ldr r2, [r4, r2]
+ add r0, r4, #0
+ bl MOD62_0222EC54
+ mov r1, #1
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD62_0222FA40
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #0xb
+ bl MOD62_0222EE78
+ mov r0, #0xf5
+ mov r1, #2
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r0, _02230F28 ; =0x000005DC
+ bl FUN_020054C8
+ b _02230F18
+_02230EA4:
+ mov r0, #2
+ tst r0, r1
+ beq _02230F18
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD62_0222FA40
+ mov r0, #0xf5
+ mov r1, #3
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r0, _02230F30 ; =0x000005DD
+ bl FUN_020054C8
+ b _02230F18
+_02230ED0:
+ ldr r1, _02230F2C ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ ldr r1, _02230F34 ; =0x00000CF3
+ tst r1, r2
+ beq _02230F18
+ mov r1, #3
+ str r1, [r4, r0]
+ b _02230F18
+_02230EE0:
+ sub r0, #0xe0
+ ldr r0, [r4, r0]
+ mov r1, #0x14
+ bl FUN_0200C6C4
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl FUN_0200C6C4
+ mov r1, #0
+ add r0, r4, #0
+ mov r2, #0xff
+ add r3, r1, #0
+ bl MOD62_0222F8D4
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C5C0
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #7
+ bl MOD62_0222EE78
+_02230F18:
+ add r0, r4, #0
+ bl MOD62_0222E754
+ add r0, r4, #0
+ bl MOD62_0222ECD4
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+_02230F28: .word 0x000005DC
+_02230F2C: .word 0x021C48B8
+_02230F30: .word 0x000005DD
+_02230F34: .word 0x00000CF3
+ thumb_func_end MOD62_02230DE0
+
+ thumb_func_start MOD62_02230F38
+MOD62_02230F38: ; 0x02230F38
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD62_02230F38
+
+ thumb_func_start MOD62_02230F3C
+MOD62_02230F3C: ; 0x02230F3C
+ push {r3, lr}
+ 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, _02230F68 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _02230F6C ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ pop {r3, pc}
+ .align 2, 0
+_02230F68: .word 0xFFFFE0FF
+_02230F6C: .word 0x04001000
+ thumb_func_end MOD62_02230F3C
+
+ thumb_func_start MOD62_02230F70
+MOD62_02230F70: ; 0x02230F70
+ push {r3, lr}
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ pop {r3, pc}
+ thumb_func_end MOD62_02230F70
+
+ thumb_func_start MOD62_02230F80
+MOD62_02230F80: ; 0x02230F80
+ push {r4, r5, lr}
+ sub sp, #0xfc
+ add r4, r0, #0
+ bl FUN_0201E6D8
+ ldr r5, _022310B8 ; =0x02231238
+ add r3, sp, #0x10
+ mov r2, #5
+_02230F90:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02230F90
+ add r0, sp, #0x10
+ bl FUN_0201E66C
+ mov r1, #6
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x12
+ bl MIi_CpuClear32
+ mov r1, #0x62
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x14
+ lsl r2, r2, #0x10
+ bl MIi_CpuClear32
+ mov r1, #0x19
+ mov r2, #1
+ mov r0, #0
+ lsl r1, r1, #0x16
+ lsl r2, r2, #0x12
+ bl MIi_CpuClear32
+ mov r1, #0x66
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x14
+ lsl r2, r2, #0x10
+ bl MIi_CpuClear32
+ ldr r5, _022310BC ; =0x02231210
+ add r3, sp, #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, _022310C0 ; =0x02231294
+ add r3, sp, #0xa8
+ mov r2, #0xa
+_02230FF0:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02230FF0
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ add r0, r4, #0
+ add r2, sp, #0xa8
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #2
+ add r2, sp, #0xc4
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #3
+ add r2, sp, #0xe0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018744
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_02018744
+ ldr r1, _022310C4 ; =0x04000008
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #1
+ orr r2, r0
+ strh r2, [r1]
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r5, _022310C8 ; =0x022312E8
+ add r3, sp, #0x38
+ mov r2, #0xe
+_02231052:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02231052
+ add r0, r4, #0
+ mov r1, #4
+ add r2, sp, #0x38
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #5
+ add r2, sp, #0x54
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #6
+ add r2, sp, #0x70
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #7
+ add r2, sp, #0x8c
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_02018744
+ add r0, r4, #0
+ mov r1, #5
+ bl FUN_02018744
+ add r0, r4, #0
+ mov r1, #6
+ bl FUN_02018744
+ add r0, r4, #0
+ mov r1, #7
+ bl FUN_02018744
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E74C
+ add sp, #0xfc
+ pop {r4, r5, pc}
+ nop
+_022310B8: .word 0x02231238
+_022310BC: .word 0x02231210
+_022310C0: .word 0x02231294
+_022310C4: .word 0x04000008
+_022310C8: .word 0x022312E8
+ thumb_func_end MOD62_02230F80
+
+ thumb_func_start MOD62_022310CC
+MOD62_022310CC: ; 0x022310CC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x69
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_020081C4
+ bl FUN_0201C30C
+ bl FUN_0200BC30
+ add r0, r4, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_0200372C
+ add r4, #0xe4
+ ldr r0, [r4]
+ bl FUN_0201AB60
+ ldr r3, _02231104 ; =0x027E0000
+ ldr r1, _02231108 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ nop
+_02231104: .word 0x027E0000
+_02231108: .word 0x00003FF8
+ thumb_func_end MOD62_022310CC
+
+ .section .rodata
+ ; 0x0223110C
+ .incbin "baserom.nds", 0x2B274C, 0x274
+
+ .section .sinit
+ .word MOD62_0222D5C0
diff --git a/arm9/modules/63/asm/module_63.s b/arm9/modules/63/asm/module_63.s
new file mode 100644
index 00000000..beeb3428
--- /dev/null
+++ b/arm9/modules/63/asm/module_63.s
@@ -0,0 +1,8588 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD63_021D74E0
+MOD63_021D74E0: ; 0x021D74E0
+ push {r4, lr}
+ ldr r1, _021D7584 ; =0x00007FFF
+ add r4, r0, #0
+ mov r0, #0
+ bl FUN_0200E3A0
+ ldr r1, _021D7584 ; =0x00007FFF
+ mov r0, #1
+ bl FUN_0200E3A0
+ ldr r1, _021D7588 ; =0x04001050
+ mov r0, #0
+ strh r0, [r1]
+ ldr r1, _021D758C ; =0x04000050
+ strh r0, [r1]
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D7590 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D7594 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ mov r2, #1
+ mov r0, #3
+ mov r1, #0x1e
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ mov r1, #0x79
+ add r0, r4, #0
+ lsl r1, r1, #2
+ mov r2, #0x1e
+ bl FUN_02006268
+ mov r2, #0x79
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x1e
+ str r0, [r4]
+ mov r0, #0x1d
+ mov r1, #0
+ lsl r0, r0, #4
+ strh r1, [r4, r0]
+ add r0, #0x10
+ str r1, [r4, r0]
+ bl MOD63_021D7838
+ add r0, r4, #0
+ bl MOD63_021D7A48
+ add r0, r4, #0
+ bl MOD63_021D7880
+ ldr r0, _021D7598 ; =MOD63_021D782C
+ add r1, r4, #0
+ bl FUN_02015F10
+ bl FUN_0201E788
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+_021D7584: .word 0x00007FFF
+_021D7588: .word 0x04001050
+_021D758C: .word 0x04000050
+_021D7590: .word 0xFFFFE0FF
+_021D7594: .word 0x04001000
+_021D7598: .word MOD63_021D782C
+ thumb_func_end MOD63_021D74E0
+
+ thumb_func_start MOD63_021D759C
+MOD63_021D759C: ; 0x021D759C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r5]
+ cmp r0, #6
+ bhi _021D7614
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D75BA: ; jump table
+ .short _021D75C8 - _021D75BA - 2 ; case 0
+ .short _021D7604 - _021D75BA - 2 ; case 1
+ .short _021D7622 - _021D75BA - 2 ; case 2
+ .short _021D7638 - _021D75BA - 2 ; case 3
+ .short _021D76FA - _021D75BA - 2 ; case 4
+ .short _021D773C - _021D75BA - 2 ; case 5
+ .short _021D777E - _021D75BA - 2 ; case 6
+_021D75C8:
+ add r0, r4, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4]
+ add r0, #0xb4
+ bl MOD63_021D7C18
+ cmp r0, #1
+ bne _021D7614
+ add r0, r4, #0
+ ldr r1, _021D77A4 ; =0x021C48B8
+ mov r2, #0
+ add r0, #0xb4
+ str r2, [r0]
+ ldr r0, [r1, #0x6c]
+ cmp r0, #0
+ bne _021D75F6
+ mov r0, #0x75
+ mov r1, #0x1e
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r0, #2
+ str r0, [r5]
+ b _021D779C
+_021D75F6:
+ mov r0, #0x75
+ lsl r0, r0, #2
+ str r2, [r4, r0]
+ str r2, [r1, #0x6c]
+ mov r0, #1
+ str r0, [r5]
+ b _021D779C
+_021D7604:
+ add r0, r4, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4]
+ add r0, #0xb4
+ bl MOD63_021D7D74
+ cmp r0, #1
+ beq _021D7616
+_021D7614:
+ b _021D779C
+_021D7616:
+ mov r0, #0
+ add r4, #0xb4
+ str r0, [r4]
+ mov r0, #2
+ str r0, [r5]
+ b _021D779C
+_021D7622:
+ mov r0, #0
+ bl FUN_0200415C
+ mov r0, #1
+ ldr r1, _021D77A8 ; =0x00000495
+ add r2, r0, #0
+ bl FUN_0200433C
+ mov r0, #3
+ str r0, [r5]
+ b _021D779C
+_021D7638:
+ mov r0, #0x75
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _021D765A
+ sub r1, r1, #1
+ str r1, [r4, r0]
+ mov r1, #0
+ sub r0, #0x4c
+ str r1, [r4, r0]
+ add r0, r4, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4]
+ add r0, #0xb4
+ bl MOD63_021D8260
+ b _021D779C
+_021D765A:
+ mov r1, #1
+ sub r0, #0x4c
+ str r1, [r4, r0]
+ add r0, r4, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4]
+ add r0, #0xb4
+ bl MOD63_021D8260
+ mov r1, #0x1e
+ lsl r1, r1, #4
+ ldr r0, [r4, r1]
+ ldr r2, _021D77A4 ; =0x021C48B8
+ add r0, r0, #1
+ str r0, [r4, r1]
+ ldr r3, [r2, #0x48]
+ mov r0, #1
+ add r6, r3, #0
+ and r6, r0
+ cmp r6, #1
+ beq _021D768C
+ mov r6, #8
+ and r3, r6
+ cmp r3, #8
+ bne _021D76A8
+_021D768C:
+ mov r0, #0x1d
+ mov r1, #1
+ lsl r0, r0, #4
+ strh r1, [r4, r0]
+ mov r0, #0
+ mov r1, #0x3c
+ bl FUN_020053CC
+ ldr r0, _021D77AC ; =0x000005F4
+ bl FUN_020054C8
+ mov r0, #4
+ str r0, [r5]
+ b _021D779C
+_021D76A8:
+ ldr r6, [r2, #0x44]
+ mov r3, #0x46
+ and r3, r6
+ cmp r3, #0x46
+ bne _021D76D4
+ mov r2, #2
+ sub r1, #0x10
+ strh r2, [r4, r1]
+ mov r1, #6
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #6
+ str r0, [r5]
+ b _021D779C
+_021D76D4:
+ mov r3, #0xe1
+ ldr r6, [r4, r1]
+ lsl r3, r3, #2
+ cmp r6, r3
+ ble _021D779C
+ mov r3, #3
+ sub r1, #0x10
+ strh r3, [r4, r1]
+ mov r1, #0
+ str r0, [r2, #0x6c]
+ bl FUN_0201E74C
+ mov r0, #0
+ mov r1, #0x3c
+ bl FUN_020053CC
+ mov r0, #5
+ str r0, [r5]
+ b _021D779C
+_021D76FA:
+ mov r0, #0x62
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r4, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4]
+ add r0, #0xb4
+ bl MOD63_021D8260
+ bl FUN_02005404
+ cmp r0, #0
+ bne _021D779C
+ ldr r0, _021D77A8 ; =0x00000495
+ mov r1, #0
+ bl FUN_02005350
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #6
+ str r0, [r5]
+ b _021D779C
+_021D773C:
+ mov r0, #0x62
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r4, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4]
+ add r0, #0xb4
+ bl MOD63_021D8260
+ bl FUN_02005404
+ cmp r0, #0
+ bne _021D779C
+ ldr r0, _021D77A8 ; =0x00000495
+ mov r1, #0
+ bl FUN_02005350
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ ldr r3, _021D77B0 ; =0x00007FFF
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #6
+ str r0, [r5]
+ b _021D779C
+_021D777E:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D779C
+ add r0, r4, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4]
+ add r0, #0xb4
+ bl MOD63_021D8360
+ cmp r0, #1
+ bne _021D779C
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D779C:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D77A4: .word 0x021C48B8
+_021D77A8: .word 0x00000495
+_021D77AC: .word 0x000005F4
+_021D77B0: .word 0x00007FFF
+ thumb_func_end MOD63_021D759C
+
+ thumb_func_start MOD63_021D77B4
+MOD63_021D77B4: ; 0x021D77B4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ bl FUN_02006278
+ add r6, r0, #0
+ mov r0, #0x1d
+ lsl r0, r0, #4
+ ldrh r5, [r6, r0]
+ mov r0, #0
+ add r1, r0, #0
+ ldr r4, [r6]
+ bl FUN_02015F10
+ add r0, r6, #0
+ bl MOD63_021D78B0
+ add r0, r6, #0
+ bl MOD63_021D7B9C
+ add r0, r7, #0
+ bl FUN_0200627C
+ add r0, r4, #0
+ bl FUN_020168D0
+ cmp r5, #1
+ beq _021D77F2
+ cmp r5, #2
+ beq _021D77FE
+ cmp r5, #3
+ beq _021D780A
+_021D77F2:
+ mov r0, #0
+ ldr r1, _021D781C ; =0x020FF3D4
+ mvn r0, r0
+ bl FUN_02000E7C
+ b _021D7818
+_021D77FE:
+ mov r0, #0
+ ldr r1, _021D7820 ; =0x020FF368
+ mvn r0, r0
+ bl FUN_02000E7C
+ b _021D7818
+_021D780A:
+ mov r0, #0
+ bl FUN_0200415C
+ ldr r0, _021D7824 ; =0x0000003F
+ ldr r1, _021D7828 ; =0x021DBE18
+ bl FUN_02000E7C
+_021D7818:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D781C: .word 0x020FF3D4
+_021D7820: .word 0x020FF368
+_021D7824: .word 0x0000003F
+_021D7828: .word 0x021DBE18
+ thumb_func_end MOD63_021D77B4
+
+ thumb_func_start MOD63_021D782C
+MOD63_021D782C: ; 0x021D782C
+ ldr r3, _021D7834 ; =0x0201AB61
+ ldr r0, [r0, #4]
+ bx r3
+ nop
+_021D7834: .word 0x0201AB61
+ thumb_func_end MOD63_021D782C
+
+ thumb_func_start MOD63_021D7838
+MOD63_021D7838: ; 0x021D7838
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D7854 ; =0x021DBA90
+ add r3, sp, #0
+ mov r2, #5
+_021D7842:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7842
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D7854: .word 0x021DBA90
+ thumb_func_end MOD63_021D7838
+
+ thumb_func_start MOD63_021D7858
+MOD63_021D7858: ; 0x021D7858
+ ldr r0, _021D787C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ and r0, r1
+ cmp r0, #1
+ beq _021D7874
+ mov r0, #8
+ and r0, r1
+ cmp r0, #8
+ beq _021D7874
+ mov r0, #4
+ and r0, r1
+ cmp r0, #4
+ bne _021D7878
+_021D7874:
+ mov r0, #1
+ bx lr
+_021D7878:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021D787C: .word 0x021C48B8
+ thumb_func_end MOD63_021D7858
+
+ thumb_func_start MOD63_021D7880
+MOD63_021D7880: ; 0x021D7880
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r0, #4
+ mov r1, #0
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ mov r2, #1
+ add r3, r1, #0
+ bl FUN_02022318
+ str r0, [r4, #8]
+ ldr r1, _021D78AC ; =0x04000008
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #1
+ orr r0, r2
+ strh r0, [r1]
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_021D78AC: .word 0x04000008
+ thumb_func_end MOD63_021D7880
+
+ thumb_func_start MOD63_021D78B0
+MOD63_021D78B0: ; 0x021D78B0
+ ldr r3, _021D78B8 ; =0x020223BD
+ ldr r0, [r0, #8]
+ bx r3
+ nop
+_021D78B8: .word 0x020223BD
+ thumb_func_end MOD63_021D78B0
+
+ thumb_func_start MOD63_021D78BC
+MOD63_021D78BC: ; 0x021D78BC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r4, r3, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ add r0, #0x68
+ add r1, r4, #0
+ mov r2, #4
+ bl FUN_02016B20
+ mov r0, #0x30
+ add r1, r6, #0
+ add r2, r4, #0
+ bl LoadFromNarc_2
+ str r0, [r5, #0x5c]
+ mov r0, #0x30
+ add r1, r7, #0
+ add r2, r4, #0
+ bl LoadFromNarc_2
+ add r1, r5, #0
+ add r2, r5, #0
+ str r0, [r5, #0x60]
+ add r0, r5, #4
+ add r1, #0x58
+ add r2, #0x5c
+ bl FUN_0201B234
+ ldr r0, [r5, #0x60]
+ mov r1, #0
+ bl FUN_020BC4C8
+ add r4, r0, #0
+ add r0, r5, #0
+ ldr r2, [r5, #0x58]
+ add r0, #0x68
+ add r1, r4, #0
+ bl FUN_020BB8D0
+ str r0, [r5, #0x64]
+ ldr r0, [r5, #0x5c]
+ bl FUN_020BC0FC
+ add r3, r0, #0
+ ldr r0, [r5, #0x64]
+ ldr r2, [r5, #0x58]
+ add r1, r4, #0
+ bl FUN_020B8110
+ ldr r1, [r5, #0x64]
+ add r0, r5, #4
+ bl FUN_020B7EFC
+ add r4, r5, #0
+ add r6, sp, #0xc
+ mov r3, #0
+ str r3, [r6]
+ add r2, sp, #0
+ str r3, [r6, #4]
+ str r3, [r2]
+ str r3, [r6, #8]
+ str r3, [r2, #4]
+ ldmia r6!, {r0, r1}
+ str r3, [r2, #8]
+ add r4, #0x78
+ stmia r4!, {r0, r1}
+ ldr r0, [r6]
+ ldr r6, _021D796C ; =0x021DB9A8
+ str r0, [r4]
+ add r4, r5, #0
+ ldmia r6!, {r0, r1}
+ add r4, #0x84
+ stmia r4!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r4]
+ add r4, r5, #0
+ ldmia r2!, {r0, r1}
+ add r4, #0x90
+ stmia r4!, {r0, r1}
+ ldr r0, [r2]
+ add r5, #0xa0
+ str r0, [r4]
+ str r3, [r5]
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D796C: .word 0x021DB9A8
+ thumb_func_end MOD63_021D78BC
+
+ thumb_func_start MOD63_021D7970
+MOD63_021D7970: ; 0x021D7970
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x64]
+ add r0, #0x68
+ bl thunk_FUN_020ae84c
+ ldr r0, [r4, #0x60]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x5c]
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021D7970
+
+ thumb_func_start MOD63_021D798C
+MOD63_021D798C: ; 0x021D798C
+ push {r4, r5, lr}
+ sub sp, #0x24
+ ldr r5, _021D7A44 ; =0x021DBA6C
+ add r4, r0, #0
+ add r3, sp, #0
+ mov r2, #4
+_021D7998:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7998
+ ldr r0, [r5]
+ str r0, [r3]
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D7A3E
+ cmp r0, #1
+ beq _021D79B6
+ cmp r0, #2
+ beq _021D79CA
+ add sp, #0x24
+ pop {r4, r5, pc}
+_021D79B6:
+ bl FUN_020222AC
+ mov r0, #0
+ mov r1, #1
+ bl FUN_020222B4
+ mov r0, #0
+ add sp, #0x24
+ str r0, [r4]
+ pop {r4, r5, pc}
+_021D79CA:
+ bl FUN_020222AC
+ bl FUN_0201EBA4
+ add r1, r4, #0
+ add r0, sp, #0
+ add r1, #0x90
+ bl FUN_0201CAA8
+ add r1, r4, #0
+ add r3, r4, #0
+ add r0, r4, #4
+ add r1, #0x78
+ add r2, sp, #0
+ add r3, #0x84
+ bl FUN_0201B26C
+ add r0, r4, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D7A00
+ cmp r0, #1
+ beq _021D7A08
+ cmp r0, #2
+ beq _021D7A18
+ b _021D7A36
+_021D7A00:
+ ldr r0, [r4, #0x64]
+ mov r1, #0
+ str r1, [r0]
+ b _021D7A36
+_021D7A08:
+ ldr r0, [r4, #0x64]
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D7A18
+ mov r0, #0
+ add r4, #0xa0
+ str r0, [r4]
+ b _021D7A36
+_021D7A18:
+ ldr r2, [r4, #0x64]
+ mov r0, #1
+ ldr r1, [r2]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [r2]
+ ldr r2, [r4, #0x64]
+ ldr r0, [r2, #8]
+ ldr r1, [r2]
+ ldrh r0, [r0, #4]
+ lsl r0, r0, #0xc
+ cmp r1, r0
+ bne _021D7A36
+ mov r0, #0
+ str r0, [r2]
+_021D7A36:
+ mov r0, #0
+ mov r1, #1
+ bl FUN_020222B4
+_021D7A3E:
+ add sp, #0x24
+ pop {r4, r5, pc}
+ nop
+_021D7A44: .word 0x021DBA6C
+ thumb_func_end MOD63_021D798C
+
+ thumb_func_start MOD63_021D7A48
+MOD63_021D7A48: ; 0x021D7A48
+ push {r3, r4, r5, lr}
+ sub sp, #0xb8
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016B94
+ add r3, sp, #0xa8
+ ldr r5, _021D7B80 ; =0x021DB9B4
+ str r0, [r4, #4]
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D7B84 ; =0x021DB9E0
+ add r3, sp, #0x8c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #4
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D7B88 ; =0x021DB9C4
+ add r3, sp, #0x70
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #5
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D7B8C ; =0x021DBA50
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #6
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D7B90 ; =0x021DBA34
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D7B94 ; =0x021DB9FC
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r1, #3
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D7B98 ; =0x021DBA18
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #7
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #8
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02017FE4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02017FE4
+ add sp, #0xb8
+ pop {r3, r4, r5, pc}
+ nop
+_021D7B80: .word 0x021DB9B4
+_021D7B84: .word 0x021DB9E0
+_021D7B88: .word 0x021DB9C4
+_021D7B8C: .word 0x021DBA50
+_021D7B90: .word 0x021DBA34
+_021D7B94: .word 0x021DB9FC
+_021D7B98: .word 0x021DBA18
+ thumb_func_end MOD63_021D7A48
+
+ thumb_func_start MOD63_021D7B9C
+MOD63_021D7B9C: ; 0x021D7B9C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #8
+ mov r1, #0
+ bl FUN_0201E74C
+ ldr r0, [r4, #4]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #5
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #7
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD63_021D7B9C
+
+ thumb_func_start MOD63_021D7C18
+MOD63_021D7C18: ; 0x021D7C18
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r6, r1, #0
+ add r4, r2, #0
+ bl MOD63_021D86E0
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, r5, #0
+ bl MOD63_021D83A8
+ ldr r0, _021D7D5C ; =0x020ECAC0
+ ldrb r0, [r0]
+ cmp r0, #0xa
+ bne _021D7C46
+ add r0, r5, #4
+ mov r1, #6
+ mov r2, #0x13
+ add r3, r4, #0
+ bl MOD63_021D78BC
+ b _021D7C52
+_021D7C46:
+ add r0, r5, #4
+ mov r1, #5
+ mov r2, #0x12
+ add r3, r4, #0
+ bl MOD63_021D78BC
+_021D7C52:
+ ldr r0, _021D7D60 ; =0x04000060
+ ldr r2, _021D7D64 ; =0xFFFFCFFF
+ ldrh r1, [r0]
+ add r3, r1, #0
+ and r3, r2
+ mov r1, #0x10
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r1, [r0]
+ and r2, r1
+ mov r1, #8
+ orr r1, r2
+ strh r1, [r0]
+ add r0, r5, #0
+ add r0, #0xf0
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xbc
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xf4
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xc0
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xf8
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xc4
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xd8
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xc8
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xdc
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xcc
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xd0
+ str r1, [r0]
+ add r0, r4, #0
+ bl FUN_0201EB64
+ add r1, r5, #0
+ add r1, #0xa0
+ str r0, [r1]
+ mov r3, #0
+ add r0, r5, #0
+ add r1, r5, #0
+ mov r2, #0xb6
+ str r3, [sp]
+ add r0, #0xa0
+ ldr r0, [r0]
+ add r1, #0xc8
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0xbc
+ lsl r2, r2, #4
+ bl FUN_0201ED5C
+ add r2, r5, #0
+ add r2, #0xa0
+ mov r1, #0x19
+ ldr r2, [r2]
+ mov r0, #0
+ lsl r1, r1, #0xe
+ bl FUN_0201EC94
+ add r1, r5, #0
+ add r1, #0xa0
+ ldr r1, [r1]
+ mov r0, #0
+ bl FUN_0201EE2C
+ add r0, r5, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ bl FUN_0201EB8C
+ mov r3, #0x42
+ lsl r3, r3, #2
+ add r2, r3, #2
+ ldrsh r1, [r5, r3]
+ add r3, r3, #4
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r5, r3]
+ mov r0, #0
+ bl FUN_020B8418
+ ldr r1, _021D7D68 ; =0x00007FFF
+ mov r0, #0
+ bl FUN_020B8404
+ ldr r3, _021D7D6C ; =0x0000010E
+ mov r0, #1
+ add r2, r3, #2
+ ldrsh r1, [r5, r3]
+ add r3, r3, #4
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r5, r3]
+ bl FUN_020B8418
+ ldr r1, _021D7D68 ; =0x00007FFF
+ mov r0, #1
+ bl FUN_020B8404
+ ldr r2, _021D7D60 ; =0x04000060
+ ldr r0, _021D7D64 ; =0xFFFFCFFF
+ ldrh r1, [r2]
+ and r1, r0
+ mov r0, #0x10
+ orr r0, r1
+ strh r0, [r2]
+ ldr r0, _021D7D70 ; =0x021C4918
+ mov r1, #1
+ strb r1, [r0, #5]
+ bl FUN_0201E7A0
+ mov r0, #2
+ str r0, [r5, #4]
+ mov r0, #1
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ nop
+_021D7D5C: .word 0x020ECAC0
+_021D7D60: .word 0x04000060
+_021D7D64: .word 0xFFFFCFFF
+_021D7D68: .word 0x00007FFF
+_021D7D6C: .word 0x0000010E
+_021D7D70: .word 0x021C4918
+ thumb_func_end MOD63_021D7C18
+
+ thumb_func_start MOD63_021D7D74
+MOD63_021D7D74: ; 0x021D7D74
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r7, r1, #0
+ add r5, r2, #0
+ mov r6, #0
+ bl MOD63_021D7858
+ cmp r0, #1
+ bne _021D7D92
+ bl FUN_0200E31C
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021D7D92:
+ ldr r0, [r4]
+ cmp r0, #9
+ bhi _021D7E38
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7DA4: ; jump table
+ .short _021D7DB8 - _021D7DA4 - 2 ; case 0
+ .short _021D7DF6 - _021D7DA4 - 2 ; case 1
+ .short _021D7E24 - _021D7DA4 - 2 ; case 2
+ .short _021D7E8C - _021D7DA4 - 2 ; case 3
+ .short _021D7ECC - _021D7DA4 - 2 ; case 4
+ .short _021D7EF4 - _021D7DA4 - 2 ; case 5
+ .short _021D7F44 - _021D7DA4 - 2 ; case 6
+ .short _021D7F72 - _021D7DA4 - 2 ; case 7
+ .short _021D7FA6 - _021D7DA4 - 2 ; case 8
+ .short _021D8232 - _021D7DA4 - 2 ; case 9
+_021D7DB8:
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E74C
+ ldr r1, _021D80F0 ; =0x00000116
+ add r0, r6, #0
+ strh r0, [r4, r1]
+ add r1, r4, #0
+ mov r2, #0xf
+ add r1, #0xa8
+ strh r2, [r1]
+ str r2, [sp]
+ mov r1, #3
+ str r1, [sp, #4]
+ mov r1, #1
+ ldr r3, _021D80F4 ; =0x00007FFF
+ add r2, r1, #0
+ str r5, [sp, #8]
+ bl FUN_0200E1D0
+ mov r0, #1
+ str r0, [r4]
+ b _021D824E
+_021D7DF6:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D7E38
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _021D7E18
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ b _021D824E
+_021D7E18:
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0xa8
+ strh r1, [r0]
+ str r1, [r4]
+ b _021D824E
+_021D7E24:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D7E38
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #1
+ beq _021D7E3A
+_021D7E38:
+ b _021D824E
+_021D7E3A:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _021D7E7E
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0xa
+ mov r1, #0x10
+ add r2, r6, #0
+ mov r3, #6
+ bl FUN_0200A208
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0xa
+ mov r1, #0x10
+ add r2, r6, #0
+ mov r3, #7
+ bl FUN_0200A208
+ ldr r0, _021D80F0 ; =0x00000116
+ mov r1, #2
+ strh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ mov r0, #3
+ str r0, [r4]
+ b _021D824E
+_021D7E7E:
+ add r0, r4, #0
+ add r1, r6, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ mov r0, #4
+ str r0, [r4]
+ b _021D824E
+_021D7E8C:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D7F94
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D7F94
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0xa
+ add r1, r6, #0
+ mov r2, #0x10
+ mov r3, #6
+ bl FUN_0200A208
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0xa
+ add r1, r6, #0
+ mov r2, #0x10
+ mov r3, #7
+ bl FUN_0200A208
+ ldr r0, _021D80F0 ; =0x00000116
+ mov r1, #3
+ strh r1, [r4, r0]
+ mov r0, #2
+ str r0, [r4]
+ b _021D824E
+_021D7ECC:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _021D7EE6
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ b _021D824E
+_021D7EE6:
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0xa8
+ strh r1, [r0]
+ mov r0, #5
+ str r0, [r4]
+ b _021D824E
+_021D7EF4:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D7F94
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _021D7F36
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ add r0, r6, #0
+ ldr r3, _021D80F4 ; =0x00007FFF
+ add r1, r0, #0
+ add r2, r0, #0
+ str r5, [sp, #8]
+ bl FUN_0200E1D0
+ ldr r0, _021D80F0 ; =0x00000116
+ mov r1, #2
+ strh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ mov r0, #6
+ str r0, [r4]
+ b _021D824E
+_021D7F36:
+ add r0, r4, #0
+ mov r1, #0x28
+ add r0, #0xa8
+ strh r1, [r0]
+ mov r0, #7
+ str r0, [r4]
+ b _021D824E
+_021D7F44:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D7F94
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD63_021D85D8
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r1, #1
+ ldr r3, _021D80F4 ; =0x00007FFF
+ add r0, r6, #0
+ add r2, r1, #0
+ str r5, [sp, #8]
+ bl FUN_0200E1D0
+ mov r0, #5
+ str r0, [r4]
+ b _021D824E
+_021D7F72:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _021D7FA0
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ cmp r0, #0xf
+ beq _021D7F96
+_021D7F94:
+ b _021D824E
+_021D7F96:
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0xa4
+ str r1, [r0]
+ b _021D824E
+_021D7FA0:
+ mov r0, #8
+ str r0, [r4]
+ b _021D824E
+_021D7FA6:
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r2, [r0]
+ add r0, r4, #0
+ add r0, #0xbc
+ ldr r1, [r0]
+ mov r5, #1
+ cmp r1, r2
+ ble _021D7FDE
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ sub r1, r1, r2
+ cmp r1, r0
+ ble _021D7FD4
+ add r1, r4, #0
+ add r1, #0xbc
+ ldr r1, [r1]
+ sub r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xbc
+ str r1, [r0]
+ b _021D7FDA
+_021D7FD4:
+ add r0, r4, #0
+ add r0, #0xbc
+ str r2, [r0]
+_021D7FDA:
+ mov r5, #0
+ b _021D8006
+_021D7FDE:
+ cmp r1, r2
+ bge _021D8006
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ sub r1, r2, r1
+ cmp r1, r0
+ ble _021D7FFE
+ add r1, r4, #0
+ add r1, #0xbc
+ ldr r1, [r1]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xbc
+ str r1, [r0]
+ b _021D8004
+_021D7FFE:
+ add r0, r4, #0
+ add r0, #0xbc
+ str r2, [r0]
+_021D8004:
+ mov r5, #0
+_021D8006:
+ mov r0, #1
+ add r1, r4, #0
+ lsl r0, r0, #8
+ add r1, #0xc0
+ ldr r2, [r4, r0]
+ ldr r1, [r1]
+ cmp r1, r2
+ ble _021D803A
+ add r0, #0x18
+ ldr r0, [r4, r0]
+ sub r1, r1, r2
+ cmp r1, r0
+ ble _021D8030
+ add r1, r4, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ sub r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xc0
+ str r1, [r0]
+ b _021D8036
+_021D8030:
+ add r0, r4, #0
+ add r0, #0xc0
+ str r2, [r0]
+_021D8036:
+ mov r5, #0
+ b _021D8060
+_021D803A:
+ cmp r1, r2
+ bge _021D8060
+ add r0, #0x18
+ ldr r0, [r4, r0]
+ sub r1, r2, r1
+ cmp r1, r0
+ ble _021D8058
+ add r1, r4, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xc0
+ str r1, [r0]
+ b _021D805E
+_021D8058:
+ add r0, r4, #0
+ add r0, #0xc0
+ str r2, [r0]
+_021D805E:
+ mov r5, #0
+_021D8060:
+ mov r0, #0x41
+ add r1, r4, #0
+ lsl r0, r0, #2
+ add r1, #0xc4
+ ldr r2, [r4, r0]
+ ldr r1, [r1]
+ cmp r1, r2
+ ble _021D8094
+ add r0, #0x14
+ ldr r0, [r4, r0]
+ sub r1, r1, r2
+ cmp r1, r0
+ ble _021D808A
+ add r1, r4, #0
+ add r1, #0xc4
+ ldr r1, [r1]
+ sub r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ b _021D8090
+_021D808A:
+ add r0, r4, #0
+ add r0, #0xc4
+ str r2, [r0]
+_021D8090:
+ mov r5, #0
+ b _021D80BA
+_021D8094:
+ cmp r1, r2
+ bge _021D80BA
+ add r0, #0x14
+ ldr r0, [r4, r0]
+ sub r1, r2, r1
+ cmp r1, r0
+ ble _021D80B2
+ add r1, r4, #0
+ add r1, #0xc4
+ ldr r1, [r1]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ b _021D80B8
+_021D80B2:
+ add r0, r4, #0
+ add r0, #0xc4
+ str r2, [r0]
+_021D80B8:
+ mov r5, #0
+_021D80BA:
+ add r0, r4, #0
+ add r0, #0xe4
+ ldr r2, [r0]
+ add r0, r4, #0
+ add r0, #0xc8
+ ldr r1, [r0]
+ cmp r1, r2
+ ble _021D80F8
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ sub r1, r1, r2
+ cmp r1, r0
+ ble _021D80E6
+ add r1, r4, #0
+ add r1, #0xc8
+ ldr r1, [r1]
+ sub r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xc8
+ str r1, [r0]
+ b _021D80EC
+_021D80E6:
+ add r0, r4, #0
+ add r0, #0xc8
+ str r2, [r0]
+_021D80EC:
+ mov r5, #0
+ b _021D8120
+ .align 2, 0
+_021D80F0: .word 0x00000116
+_021D80F4: .word 0x00007FFF
+_021D80F8:
+ cmp r1, r2
+ bge _021D8120
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ sub r1, r2, r1
+ cmp r1, r0
+ ble _021D8118
+ add r1, r4, #0
+ add r1, #0xc8
+ ldr r1, [r1]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xc8
+ str r1, [r0]
+ b _021D811E
+_021D8118:
+ add r0, r4, #0
+ add r0, #0xc8
+ str r2, [r0]
+_021D811E:
+ mov r5, #0
+_021D8120:
+ add r0, r4, #0
+ add r0, #0xe8
+ ldr r2, [r0]
+ add r0, r4, #0
+ add r0, #0xcc
+ ldr r1, [r0]
+ cmp r1, r2
+ ble _021D8156
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ sub r1, r1, r2
+ cmp r1, r0
+ ble _021D814C
+ add r1, r4, #0
+ add r1, #0xcc
+ ldr r1, [r1]
+ sub r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xcc
+ str r1, [r0]
+ b _021D8152
+_021D814C:
+ add r0, r4, #0
+ add r0, #0xcc
+ str r2, [r0]
+_021D8152:
+ mov r5, #0
+ b _021D817E
+_021D8156:
+ cmp r1, r2
+ bge _021D817E
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ sub r1, r2, r1
+ cmp r1, r0
+ ble _021D8176
+ add r1, r4, #0
+ add r1, #0xcc
+ ldr r1, [r1]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xcc
+ str r1, [r0]
+ b _021D817C
+_021D8176:
+ add r0, r4, #0
+ add r0, #0xcc
+ str r2, [r0]
+_021D817C:
+ mov r5, #0
+_021D817E:
+ add r0, r4, #0
+ add r0, #0xec
+ ldr r2, [r0]
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r1, [r0]
+ cmp r1, r2
+ ble _021D81B4
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ sub r1, r1, r2
+ cmp r1, r0
+ ble _021D81AA
+ add r1, r4, #0
+ add r1, #0xd0
+ ldr r1, [r1]
+ sub r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xd0
+ str r1, [r0]
+ b _021D81B0
+_021D81AA:
+ add r0, r4, #0
+ add r0, #0xd0
+ str r2, [r0]
+_021D81B0:
+ mov r5, #0
+ b _021D81DC
+_021D81B4:
+ cmp r1, r2
+ bge _021D81DC
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ sub r1, r2, r1
+ cmp r1, r0
+ ble _021D81D4
+ add r1, r4, #0
+ add r1, #0xd0
+ ldr r1, [r1]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xd0
+ str r1, [r0]
+ b _021D81DA
+_021D81D4:
+ add r0, r4, #0
+ add r0, #0xd0
+ str r2, [r0]
+_021D81DA:
+ mov r5, #0
+_021D81DC:
+ add r1, r4, #0
+ add r1, #0xa0
+ add r0, r4, #0
+ ldr r1, [r1]
+ add r0, #0xbc
+ bl FUN_0201F04C
+ add r1, r4, #0
+ add r1, #0xa0
+ add r0, r4, #0
+ ldr r1, [r1]
+ add r0, #0xc8
+ bl FUN_0201F05C
+ cmp r5, #1
+ bne _021D824E
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E74C
+ add r0, r4, #0
+ mov r1, #0x5a
+ add r0, #0xa8
+ strh r1, [r0]
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0xa4
+ str r1, [r0]
+ mov r0, #9
+ str r0, [r4]
+ b _021D824E
+_021D8232:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _021D824C
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ b _021D824E
+_021D824C:
+ mov r6, #1
+_021D824E:
+ add r0, r4, #0
+ bl MOD63_021D8650
+ add r0, r4, #4
+ bl MOD63_021D798C
+ add r0, r6, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD63_021D7D74
+
+ thumb_func_start MOD63_021D8260
+MOD63_021D8260: ; 0x021D8260
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ mov r4, #0
+ cmp r0, #0
+ beq _021D8272
+ cmp r0, #1
+ beq _021D82FC
+ b _021D8350
+_021D8272:
+ add r1, r5, #0
+ add r1, #0xa0
+ add r0, r5, #0
+ ldr r1, [r1]
+ add r0, #0xfc
+ bl FUN_0201F04C
+ add r1, r5, #0
+ add r1, #0xa0
+ add r0, r5, #0
+ ldr r1, [r1]
+ add r0, #0xe4
+ bl FUN_0201F05C
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #2
+ add r1, r4, #0
+ bl FUN_0201E74C
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E6E4
+ add r0, r4, #0
+ bl FUN_0200E394
+ mov r0, #1
+ bl FUN_0200E394
+ add r0, r4, #0
+ mov r1, #6
+ mov r2, #1
+ bl FUN_0200A274
+ add r0, r4, #0
+ mov r1, #7
+ mov r2, #2
+ bl FUN_0200A274
+ add r0, r5, #0
+ mov r1, #2
+ add r0, #0xa4
+ str r1, [r0]
+ ldr r1, _021D835C ; =0x00007FFF
+ mov r0, #1
+ bl FUN_020B8404
+ add r0, r5, #0
+ add r1, r4, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ mov r0, #1
+ str r0, [r5]
+ b _021D8350
+_021D82FC:
+ add r0, r5, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021D8328
+ add r0, r5, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _021D831A
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E74C
+ b _021D8330
+_021D831A:
+ cmp r0, #0x10
+ bne _021D8330
+ mov r0, #1
+ add r1, r4, #0
+ bl FUN_0201E74C
+ b _021D8330
+_021D8328:
+ mov r0, #1
+ add r1, r4, #0
+ bl FUN_0201E74C
+_021D8330:
+ add r0, r5, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ mov r4, #1
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ add r0, r5, #0
+ add r0, #0xa8
+ ldrh r1, [r0]
+ mov r0, #0x1f
+ and r1, r0
+ add r0, r5, #0
+ add r0, #0xa8
+ strh r1, [r0]
+_021D8350:
+ add r0, r5, #4
+ bl MOD63_021D798C
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D835C: .word 0x00007FFF
+ thumb_func_end MOD63_021D8260
+
+ thumb_func_start MOD63_021D8360
+MOD63_021D8360: ; 0x021D8360
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ add r4, r1, #0
+ add r6, r2, #0
+ bl FUN_0201EB70
+ add r0, r5, #4
+ bl MOD63_021D7970
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r5, #0
+ bl MOD63_021D8644
+ ldr r2, _021D839C ; =0x04000050
+ mov r3, #0
+ strh r3, [r2]
+ add r2, #0x10
+ ldrh r1, [r2]
+ ldr r0, _021D83A0 ; =0x0000CFDF
+ and r0, r1
+ strh r0, [r2]
+ ldr r0, _021D83A4 ; =0x021C4918
+ strb r3, [r0, #5]
+ bl FUN_0201E7A0
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D839C: .word 0x04000050
+_021D83A0: .word 0x0000CFDF
+_021D83A4: .word 0x021C4918
+ thumb_func_end MOD63_021D8360
+
+ thumb_func_start MOD63_021D83A8
+MOD63_021D83A8: ; 0x021D83A8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ add r4, r1, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #7
+ add r6, r2, #0
+ mov r0, #0x30
+ add r2, r5, #0
+ add r3, r1, #0
+ str r4, [sp, #0xc]
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x30
+ mov r1, #0xb
+ add r2, r5, #0
+ mov r3, #3
+ str r4, [sp, #0xc]
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x30
+ mov r1, #8
+ add r2, r5, #0
+ mov r3, #7
+ str r4, [sp, #0xc]
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x30
+ mov r1, #0xc
+ add r2, r5, #0
+ mov r3, #3
+ str r4, [sp, #0xc]
+ bl FUN_020068C8
+ ldr r0, _021D85C8 ; =0x020ECAC0
+ ldrb r7, [r0]
+ cmp r7, #0xa
+ bne _021D841A
+ mov r0, #0xd
+ mov r1, #9
+ str r0, [sp, #0x18]
+ b _021D8420
+_021D841A:
+ mov r0, #0xe
+ mov r1, #0xa
+ str r0, [sp, #0x18]
+_021D8420:
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x30
+ mov r2, #4
+ str r4, [sp, #4]
+ bl FUN_02006930
+ mov r2, #0
+ str r2, [sp]
+ ldr r1, [sp, #0x18]
+ mov r0, #0x30
+ add r3, r2, #0
+ str r4, [sp, #4]
+ bl FUN_02006930
+ cmp r7, #0xa
+ bne _021D8448
+ mov r1, #1
+ mov r7, #2
+ b _021D844C
+_021D8448:
+ mov r1, #3
+ mov r7, #4
+_021D844C:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x30
+ add r2, r5, #0
+ mov r3, #6
+ str r4, [sp, #0xc]
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r3, #1
+ mov r0, #0x30
+ add r1, r7, #0
+ mov r2, #6
+ lsl r3, r3, #0xe
+ str r4, [sp, #4]
+ bl FUN_02006930
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #0x30
+ add r2, r5, #0
+ mov r3, #6
+ str r4, [sp, #0xc]
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x80
+ mov r1, #0x11
+ add r2, r5, #0
+ mov r3, #5
+ str r4, [sp, #0xc]
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x10
+ mov r0, #0x80
+ mov r2, #6
+ lsl r3, r1, #9
+ str r4, [sp, #4]
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x80
+ mov r1, #0xf
+ add r2, r5, #0
+ mov r3, #5
+ str r4, [sp, #0xc]
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x30
+ mov r1, #0xf
+ add r2, r5, #0
+ mov r3, #1
+ str r4, [sp, #0xc]
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x30
+ mov r1, #0x11
+ add r2, r5, #0
+ mov r3, #1
+ str r4, [sp, #0xc]
+ bl FUN_020068C8
+ mov r0, #0x60
+ str r0, [sp]
+ mov r0, #0x30
+ mov r1, #0x10
+ mov r2, #0
+ mov r3, #0x20
+ str r4, [sp, #4]
+ bl FUN_02006930
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02017FE4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02017FE4
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_02017F18
+ ldr r2, _021D85CC ; =0x00000227
+ mov r0, #1
+ mov r1, #0x1a
+ add r3, r4, #0
+ bl FUN_0200A86C
+ add r7, r0, #0
+ mov r0, #0x40
+ add r1, r4, #0
+ bl FUN_020219F4
+ add r1, r6, #0
+ add r4, r0, #0
+ ldr r2, _021D85D0 ; =0x021DB9A0
+ add r0, r5, #0
+ add r1, #0xac
+ bl FUN_02019150
+ mov r1, #0
+ mov r0, #0xe0
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r6, #0
+ add r0, #0xac
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ add r0, r7, #0
+ mov r1, #0
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ add r3, r6, #0
+ add r3, #0xb3
+ ldrb r3, [r3]
+ mov r0, #0
+ add r1, r4, #0
+ mov r2, #1
+ lsl r3, r3, #3
+ bl FUN_02002F40
+ mov r1, #0
+ add r3, r0, #0
+ str r1, [sp]
+ ldr r0, _021D85D4 ; =0x00010100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r6, #0xac
+ str r1, [sp, #0x10]
+ add r0, r6, #0
+ add r2, r4, #0
+ str r1, [sp, #0x14]
+ bl FUN_0201BE3C
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ mov r1, #0x15
+ add r0, sp, #0x1c
+ strh r1, [r0, #2]
+ strh r1, [r0]
+ add r1, sp, #0x1c
+ mov r0, #4
+ add r1, #2
+ mov r2, #2
+ mov r3, #0x42
+ bl FUN_02017FB4
+ mov r0, #4
+ add r1, sp, #0x1c
+ mov r2, #2
+ mov r3, #0x44
+ bl FUN_02017FB4
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D85C8: .word 0x020ECAC0
+_021D85CC: .word 0x00000227
+_021D85D0: .word 0x021DB9A0
+_021D85D4: .word 0x00010100
+ thumb_func_end MOD63_021D83A8
+
+ thumb_func_start MOD63_021D85D8
+MOD63_021D85D8: ; 0x021D85D8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r2, #0xa8
+ add r7, r0, #0
+ ldrh r0, [r2]
+ add r5, r1, #0
+ cmp r0, #0
+ bne _021D863A
+ ldr r0, _021D8640 ; =0x020ECAC0
+ ldrb r0, [r0]
+ cmp r0, #0xa
+ bne _021D85F8
+ mov r1, #0xb
+ mov r6, #0xa
+ mov r4, #0xc
+ b _021D85FE
+_021D85F8:
+ mov r1, #8
+ mov r6, #7
+ mov r4, #9
+_021D85FE:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x80
+ add r2, r7, #0
+ mov r3, #5
+ str r5, [sp, #0xc]
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x80
+ add r1, r6, #0
+ mov r2, #6
+ lsl r3, r0, #6
+ str r5, [sp, #4]
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x80
+ add r1, r4, #0
+ add r2, r7, #0
+ mov r3, #5
+ str r5, [sp, #0xc]
+ bl FUN_020068C8
+_021D863A:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8640: .word 0x020ECAC0
+ thumb_func_end MOD63_021D85D8
+
+ thumb_func_start MOD63_021D8644
+MOD63_021D8644: ; 0x021D8644
+ ldr r3, _021D864C ; =0x02019179
+ add r2, #0xac
+ add r0, r2, #0
+ bx r3
+ .align 2, 0
+_021D864C: .word 0x02019179
+ thumb_func_end MOD63_021D8644
+
+ thumb_func_start MOD63_021D8650
+MOD63_021D8650: ; 0x021D8650
+ push {r4, lr}
+ ldr r1, _021D86DC ; =0x00000116
+ ldrh r2, [r0, r1]
+ cmp r2, #3
+ bhi _021D86B2
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021D8666: ; jump table
+ .short _021D866E - _021D8666 - 2 ; case 0
+ .short _021D86B2 - _021D8666 - 2 ; case 1
+ .short _021D867A - _021D8666 - 2 ; case 2
+ .short _021D8698 - _021D8666 - 2 ; case 3
+_021D866E:
+ mov r3, #5
+ sub r2, r1, #2
+ strh r3, [r0, r2]
+ mov r2, #1
+ strh r2, [r0, r1]
+ b _021D86B2
+_021D867A:
+ sub r2, r1, #2
+ ldrh r2, [r0, r2]
+ add r3, r2, #2
+ sub r2, r1, #2
+ strh r3, [r0, r2]
+ ldrh r2, [r0, r2]
+ cmp r2, #0x1f
+ blo _021D86B2
+ mov r3, #0x1f
+ add r2, r3, #0
+ add r2, #0xf5
+ strh r3, [r0, r2]
+ mov r2, #1
+ strh r2, [r0, r1]
+ b _021D86B2
+_021D8698:
+ sub r2, r1, #2
+ ldrh r2, [r0, r2]
+ sub r3, r2, #2
+ sub r2, r1, #2
+ strh r3, [r0, r2]
+ ldrh r2, [r0, r2]
+ cmp r2, #5
+ bhi _021D86B2
+ mov r3, #5
+ sub r2, r1, #2
+ strh r3, [r0, r2]
+ mov r2, #1
+ strh r2, [r0, r1]
+_021D86B2:
+ mov r1, #0x45
+ lsl r1, r1, #2
+ ldrh r3, [r0, r1]
+ mov r1, #0x1f
+ lsl r1, r1, #0xa
+ lsl r2, r3, #0xa
+ and r1, r2
+ add r4, r3, #0
+ mov r2, #0x1f
+ and r4, r2
+ lsl r3, r3, #5
+ lsl r2, r2, #5
+ and r2, r3
+ orr r2, r4
+ orr r1, r2
+ lsl r1, r1, #0x10
+ mov r0, #1
+ lsr r1, r1, #0x10
+ bl FUN_020B8404
+ pop {r4, pc}
+ .align 2, 0
+_021D86DC: .word 0x00000116
+ thumb_func_end MOD63_021D8650
+
+ thumb_func_start MOD63_021D86E0
+MOD63_021D86E0: ; 0x021D86E0
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ ldr r0, _021D8858 ; =0x020ECAC0
+ ldrb r0, [r0]
+ cmp r0, #0xa
+ bne _021D8788
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0xd8
+ str r2, [r0]
+ mov r1, #0x41
+ add r0, r4, #0
+ mov r3, #0x12
+ lsl r1, r1, #0xc
+ add r0, #0xdc
+ str r1, [r0]
+ add r0, r4, #0
+ mov r5, #0xf6
+ lsl r3, r3, #0xe
+ add r0, #0xe0
+ str r3, [r0]
+ mov r3, #0xc3
+ add r0, r4, #0
+ lsl r3, r3, #0xc
+ add r0, #0xe4
+ str r3, [r0]
+ mov r0, #2
+ add r3, r4, #0
+ lsl r0, r0, #0x10
+ add r3, #0xe8
+ str r0, [r3]
+ add r3, r4, #0
+ lsl r5, r5, #0xc
+ add r3, #0xec
+ str r5, [r3]
+ add r3, r4, #0
+ add r3, #0xf0
+ str r2, [r3]
+ mov r5, #0x5a
+ add r3, r4, #0
+ lsl r5, r5, #0xc
+ add r3, #0xf4
+ str r5, [r3]
+ add r3, r4, #0
+ add r3, #0xf8
+ str r2, [r3]
+ add r2, r4, #0
+ ldr r3, _021D885C ; =0xFFFFE000
+ add r2, #0xfc
+ str r3, [r2]
+ mov r2, #0x1f
+ lsl r2, r2, #0xe
+ lsr r0, r0, #9
+ str r2, [r4, r0]
+ lsr r0, r1, #0xa
+ ldr r2, _021D8860 ; =0xFFFDA000
+ ldr r1, _021D8864 ; =0xFFFFF6E3
+ str r2, [r4, r0]
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r3, _021D8868 ; =0x00000A2B
+ strh r1, [r4, r0]
+ add r2, r0, #2
+ strh r3, [r4, r2]
+ add r3, r1, #0
+ add r3, #0xc6
+ add r2, r0, #4
+ strh r3, [r4, r2]
+ add r1, #0x42
+ add r2, r0, #6
+ strh r1, [r4, r2]
+ add r1, r0, #0
+ ldr r2, _021D886C ; =0x000007A1
+ add r1, #8
+ strh r2, [r4, r1]
+ add r1, r0, #0
+ ldr r2, _021D8870 ; =0xFFFFF513
+ add r1, #0xa
+ strh r2, [r4, r1]
+ mov r1, #3
+ lsl r1, r1, #0xc
+ add r0, #0x10
+ b _021D8828
+_021D8788:
+ add r0, r4, #0
+ ldr r1, _021D8874 ; =0xFFFBF000
+ add r0, #0xd8
+ str r1, [r0]
+ mov r1, #0x29
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ add r0, #0xdc
+ str r1, [r0]
+ mov r1, #0x13
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ add r0, #0xe0
+ str r1, [r0]
+ add r0, r4, #0
+ ldr r1, _021D8878 ; =0xFFF6C000
+ add r0, #0xe4
+ str r1, [r0]
+ mov r1, #0x3a
+ add r0, r4, #0
+ mov r2, #2
+ lsl r1, r1, #0xc
+ add r0, #0xe8
+ str r1, [r0]
+ mov r1, #0xbe
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ add r0, #0xec
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xf0
+ str r1, [r0]
+ mov r1, #0xb
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ add r0, #0xf4
+ str r1, [r0]
+ mov r1, #0x12
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ add r0, #0xf8
+ str r1, [r0]
+ add r0, r4, #0
+ lsl r2, r2, #0xe
+ add r0, #0xfc
+ str r2, [r0]
+ ldr r1, _021D887C ; =0xFFFFB000
+ lsr r0, r2, #7
+ str r1, [r4, r0]
+ mov r0, #0x41
+ lsr r1, r2, #3
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r2, _021D8880 ; =0x00000653
+ add r1, r0, #4
+ strh r2, [r4, r1]
+ ldr r2, _021D8884 ; =0xFFFFF71C
+ add r1, r0, #6
+ strh r2, [r4, r1]
+ add r1, r0, #0
+ sub r2, #0x14
+ add r1, #8
+ strh r2, [r4, r1]
+ add r1, r0, #0
+ ldr r2, _021D8888 ; =0x0000091B
+ add r1, #0xa
+ strh r2, [r4, r1]
+ add r1, r0, #0
+ ldr r2, _021D888C ; =0xFFFFFB61
+ add r1, #0xc
+ strh r2, [r4, r1]
+ add r1, r0, #0
+ mov r2, #0xc5
+ lsl r2, r2, #4
+ add r1, #0xe
+ strh r2, [r4, r1]
+ mov r1, #3
+ lsl r1, r1, #0xc
+ add r0, #0x14
+_021D8828:
+ str r1, [r4, r0]
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xfc
+ add r1, #0xe4
+ add r2, sp, #0xc
+ bl VEC_Subtract
+ add r0, sp, #0xc
+ add r1, sp, #0
+ bl VEC_Normalize
+ mov r0, #0x42
+ ldr r1, [sp]
+ lsl r0, r0, #2
+ strh r1, [r4, r0]
+ add r1, r0, #2
+ ldr r2, [sp, #4]
+ add r0, r0, #4
+ strh r2, [r4, r1]
+ ldr r1, [sp, #8]
+ strh r1, [r4, r0]
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8858: .word 0x020ECAC0
+_021D885C: .word 0xFFFFE000
+_021D8860: .word 0xFFFDA000
+_021D8864: .word 0xFFFFF6E3
+_021D8868: .word 0x00000A2B
+_021D886C: .word 0x000007A1
+_021D8870: .word 0xFFFFF513
+_021D8874: .word 0xFFFBF000
+_021D8878: .word 0xFFF6C000
+_021D887C: .word 0xFFFFB000
+_021D8880: .word 0x00000653
+_021D8884: .word 0xFFFFF71C
+_021D8888: .word 0x0000091B
+_021D888C: .word 0xFFFFFB61
+ thumb_func_end MOD63_021D86E0
+
+ thumb_func_start MOD63_021D8890
+MOD63_021D8890: ; 0x021D8890
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D88AC ; =0x021DBD70
+ add r3, sp, #0
+ mov r2, #5
+_021D889A:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D889A
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D88AC: .word 0x021DBD70
+ thumb_func_end MOD63_021D8890
+
+ thumb_func_start MOD63_021D88B0
+MOD63_021D88B0: ; 0x021D88B0
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D88CC ; =0x021DBD98
+ add r3, sp, #0
+ mov r2, #5
+_021D88BA:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D88BA
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D88CC: .word 0x021DBD98
+ thumb_func_end MOD63_021D88B0
+
+ thumb_func_start MOD63_021D88D0
+MOD63_021D88D0: ; 0x021D88D0
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D88EC ; =0x021DBDC0
+ add r3, sp, #0
+ mov r2, #5
+_021D88DA:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D88DA
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D88EC: .word 0x021DBDC0
+ thumb_func_end MOD63_021D88D0
+
+ thumb_func_start MOD63_021D88F0
+MOD63_021D88F0: ; 0x021D88F0
+ push {r3, r4, r5, lr}
+ sub sp, #0xb8
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016B94
+ add r3, sp, #0xa8
+ ldr r5, _021D89E8 ; =0x021DBB4C
+ str r0, [r4, #0xc]
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D89EC ; =0x021DBC88
+ add r3, sp, #0x8c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D89F0 ; =0x021DBC6C
+ add r3, sp, #0x70
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D89F4 ; =0x021DBBC4
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #3
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D89F8 ; =0x021DBBFC
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #5
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D89FC ; =0x021DBC18
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D8A00 ; =0x021DBC34
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #7
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02017FE4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02017FE4
+ add sp, #0xb8
+ pop {r3, r4, r5, pc}
+ nop
+_021D89E8: .word 0x021DBB4C
+_021D89EC: .word 0x021DBC88
+_021D89F0: .word 0x021DBC6C
+_021D89F4: .word 0x021DBBC4
+_021D89F8: .word 0x021DBBFC
+_021D89FC: .word 0x021DBC18
+_021D8A00: .word 0x021DBC34
+ thumb_func_end MOD63_021D88F0
+
+ thumb_func_start MOD63_021D8A04
+MOD63_021D8A04: ; 0x021D8A04
+ push {r3, r4, r5, lr}
+ sub sp, #0x80
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016B94
+ add r3, sp, #0x70
+ ldr r5, _021D8AC4 ; =0x021DBB3C
+ str r0, [r4, #0xc]
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D8AC8 ; =0xC7FFFFFF
+ ldr r5, _021D8ACC ; =0x021DBC50
+ and r1, r0
+ lsl r0, r2, #1
+ orr r0, r1
+ str r0, [r2]
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #3
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D8AD0 ; =0x021DBCA4
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D8AD4 ; =0x021DBCC0
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D8AD8 ; =0x021DBCDC
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #4
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02017FE4
+ add sp, #0x80
+ pop {r3, r4, r5, pc}
+ nop
+_021D8AC4: .word 0x021DBB3C
+_021D8AC8: .word 0xC7FFFFFF
+_021D8ACC: .word 0x021DBC50
+_021D8AD0: .word 0x021DBCA4
+_021D8AD4: .word 0x021DBCC0
+_021D8AD8: .word 0x021DBCDC
+ thumb_func_end MOD63_021D8A04
+
+ thumb_func_start MOD63_021D8ADC
+MOD63_021D8ADC: ; 0x021D8ADC
+ push {r4, r5, lr}
+ sub sp, #0x9c
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016B94
+ add r3, sp, #0x8c
+ ldr r5, _021D8BBC ; =0x021DBB6C
+ str r0, [r4, #0xc]
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D8BC0 ; =0xC7FFFFFF
+ ldr r5, _021D8BC4 ; =0x021DBCF8
+ and r1, r0
+ lsl r0, r2, #1
+ orr r0, r1
+ str r0, [r2]
+ add r3, sp, #0x70
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D8BC8 ; =0x021DBD14
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #1
+ bl FUN_02016C18
+ ldr r5, _021D8BCC ; =0x021DBD30
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #3
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #1
+ bl FUN_02016C18
+ ldr r5, _021D8BD0 ; =0x021DBBA8
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ add r3, r1, #0
+ bl FUN_02016C18
+ ldr r5, _021D8BD4 ; =0x021DBBE0
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #5
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02017FE4
+ add sp, #0x9c
+ pop {r4, r5, pc}
+ nop
+_021D8BBC: .word 0x021DBB6C
+_021D8BC0: .word 0xC7FFFFFF
+_021D8BC4: .word 0x021DBCF8
+_021D8BC8: .word 0x021DBD14
+_021D8BCC: .word 0x021DBD30
+_021D8BD0: .word 0x021DBBA8
+_021D8BD4: .word 0x021DBBE0
+ thumb_func_end MOD63_021D8ADC
+
+ thumb_func_start MOD63_021D8BD8
+MOD63_021D8BD8: ; 0x021D8BD8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, _021D8C14 ; =MOD63_021D8C20
+ mov r1, #0
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ mov r2, #1
+ add r3, r1, #0
+ bl FUN_02022318
+ str r0, [r4, #0x10]
+ ldr r3, _021D8C18 ; =0x021064B8
+ mov r0, #2
+ mov r1, #0
+ ldr r3, [r3]
+ lsl r0, r0, #0xe
+ add r2, r1, #0
+ blx r3
+ ldr r3, _021D8C1C ; =0x021064C0
+ mov r0, #0x80
+ ldr r3, [r3]
+ mov r1, #0
+ mov r2, #1
+ blx r3
+ add sp, #8
+ pop {r4, pc}
+ nop
+_021D8C14: .word MOD63_021D8C20
+_021D8C18: .word 0x021064B8
+_021D8C1C: .word 0x021064C0
+ thumb_func_end MOD63_021D8BD8
+
+ thumb_func_start MOD63_021D8C20
+MOD63_021D8C20: ; 0x021D8C20
+ push {r3, lr}
+ ldr r0, _021D8C8C ; =0x04000008
+ mov r1, #3
+ ldrh r2, [r0]
+ bic r2, r1
+ strh r2, [r0]
+ add r0, #0x58
+ ldrh r2, [r0]
+ ldr r1, _021D8C90 ; =0xFFFFCFFD
+ and r2, r1
+ strh r2, [r0]
+ ldrh r3, [r0]
+ add r2, r1, #2
+ and r3, r2
+ mov r2, #0x10
+ orr r2, r3
+ strh r2, [r0]
+ ldrh r3, [r0]
+ ldr r2, _021D8C94 ; =0x0000CFFB
+ and r2, r3
+ strh r2, [r0]
+ add r2, r1, #2
+ ldrh r3, [r0]
+ add r1, r1, #2
+ and r3, r2
+ mov r2, #8
+ orr r2, r3
+ strh r2, [r0]
+ ldrh r2, [r0]
+ and r2, r1
+ mov r1, #0x20
+ orr r1, r2
+ strh r1, [r0]
+ ldr r0, _021D8C98 ; =0x021DBB5C
+ bl G3X_SetEdgeColorTable
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl G3X_SetFog
+ mov r0, #0
+ ldr r2, _021D8C9C ; =0x00007FFF
+ add r1, r0, #0
+ mov r3, #0x3f
+ str r0, [sp]
+ bl G3X_SetClearColor
+ ldr r1, _021D8CA0 ; =0xBFFF0000
+ ldr r0, _021D8CA4 ; =0x04000580
+ str r1, [r0]
+ pop {r3, pc}
+ nop
+_021D8C8C: .word 0x04000008
+_021D8C90: .word 0xFFFFCFFD
+_021D8C94: .word 0x0000CFFB
+_021D8C98: .word 0x021DBB5C
+_021D8C9C: .word 0x00007FFF
+_021D8CA0: .word 0xBFFF0000
+_021D8CA4: .word 0x04000580
+ thumb_func_end MOD63_021D8C20
+
+ thumb_func_start MOD63_021D8CA8
+MOD63_021D8CA8: ; 0x021D8CA8
+ ldr r3, _021D8CAC ; =0x02009F81
+ bx r3
+ .align 2, 0
+_021D8CAC: .word 0x02009F81
+ thumb_func_end MOD63_021D8CA8
+
+ thumb_func_start MOD63_021D8CB0
+MOD63_021D8CB0: ; 0x021D8CB0
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02009F80
+ ldr r0, [r4, #0x4c]
+ bl MOD63_021DB598
+ pop {r4, pc}
+ thumb_func_end MOD63_021D8CB0
+
+ thumb_func_start MOD63_021D8CC0
+MOD63_021D8CC0: ; 0x021D8CC0
+ push {r4, r5}
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ ldr r2, [r0]
+ ldr r1, _021D8D08 ; =0xFFFF1FFF
+ add r4, r0, #0
+ and r2, r1
+ lsr r1, r0, #0xd
+ orr r1, r2
+ str r1, [r0]
+ add r4, #0x48
+ ldrh r3, [r4]
+ mov r2, #0x3f
+ mov r1, #0x1f
+ bic r3, r2
+ orr r1, r3
+ mov r3, #0x20
+ orr r1, r3
+ strh r1, [r4]
+ add r4, r0, #0
+ add r4, #0x4a
+ ldrh r5, [r4]
+ mov r1, #0x11
+ bic r5, r2
+ orr r1, r5
+ orr r1, r3
+ strh r1, [r4]
+ add r1, r0, #0
+ mov r2, #0xff
+ add r1, #0x40
+ strh r2, [r1]
+ ldr r1, _021D8D0C ; =0x0000209F
+ add r0, #0x44
+ strh r1, [r0]
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+_021D8D08: .word 0xFFFF1FFF
+_021D8D0C: .word 0x0000209F
+ thumb_func_end MOD63_021D8CC0
+
+ thumb_func_start MOD63_021D8D10
+MOD63_021D8D10: ; 0x021D8D10
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0200A2AC
+ ldr r1, _021D8D90 ; =0x00007FFF
+ mov r0, #0
+ bl FUN_0200E3A0
+ ldr r1, _021D8D90 ; =0x00007FFF
+ mov r0, #1
+ bl FUN_0200E3A0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ mov r0, #3
+ mov r1, #0x4c
+ lsl r2, r0, #0x11
+ bl FUN_0201681C
+ mov r1, #0xab
+ add r0, r4, #0
+ lsl r1, r1, #2
+ mov r2, #0x4c
+ bl FUN_02006268
+ mov r2, #0xab
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x4c
+ str r0, [r4]
+ mov r1, #0
+ mov r0, #0xaa
+ str r1, [r4, #8]
+ lsl r0, r0, #2
+ strb r1, [r4, r0]
+ ldr r0, _021D8D94 ; =0x021C4918
+ strb r1, [r0, #5]
+ bl FUN_0201E7A0
+ bl FUN_0201B9D4
+ str r0, [r4, #0x14]
+ mov r0, #0
+ bl FUN_0201B9E0
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+_021D8D90: .word 0x00007FFF
+_021D8D94: .word 0x021C4918
+ thumb_func_end MOD63_021D8D10
+
+ thumb_func_start MOD63_021D8D98
+MOD63_021D8D98: ; 0x021D8D98
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ bl FUN_02006278
+ add r5, r0, #0
+ mov r0, #0xaa
+ lsl r0, r0, #2
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _021D8DD4
+ ldr r0, _021D8E5C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ bne _021D8DBC
+ mov r0, #8
+ tst r0, r1
+ beq _021D8DD4
+_021D8DBC:
+ mov r0, #1
+ str r0, [r5, #8]
+ ldr r1, _021D8E5C ; =0x021C48B8
+ mov r0, #0
+ str r0, [r1, #0x6c]
+ ldr r1, _021D8E60 ; =0x00007FFF
+ bl FUN_0200E3A0
+ ldr r1, _021D8E60 ; =0x00007FFF
+ mov r0, #1
+ bl FUN_0200E3A0
+_021D8DD4:
+ ldr r0, [r4]
+ cmp r0, #4
+ bhi _021D8E42
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8DE6: ; jump table
+ .short _021D8DF0 - _021D8DE6 - 2 ; case 0
+ .short _021D8E00 - _021D8DE6 - 2 ; case 1
+ .short _021D8E12 - _021D8DE6 - 2 ; case 2
+ .short _021D8E24 - _021D8DE6 - 2 ; case 3
+ .short _021D8E36 - _021D8DE6 - 2 ; case 4
+_021D8DF0:
+ mov r0, #0xaa
+ lsl r0, r0, #2
+ add r0, r5, r0
+ str r0, [r5, #0x30]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8E46
+_021D8E00:
+ add r0, r5, #0
+ bl MOD63_021D8E9C
+ cmp r0, #0
+ beq _021D8E46
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8E46
+_021D8E12:
+ add r0, r5, #0
+ bl MOD63_021D93F0
+ cmp r0, #0
+ beq _021D8E46
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8E46
+_021D8E24:
+ add r0, r5, #0
+ bl MOD63_021DA0A8
+ cmp r0, #0
+ beq _021D8E46
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8E46
+_021D8E36:
+ ldr r1, [r5, #4]
+ ldr r0, _021D8E64 ; =0x00000A8C
+ cmp r1, r0
+ blt _021D8E46
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D8E42:
+ bl ErrorHandling
+_021D8E46:
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _021D8E50
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D8E50:
+ ldr r0, [r5, #4]
+ add r0, r0, #1
+ str r0, [r5, #4]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D8E5C: .word 0x021C48B8
+_021D8E60: .word 0x00007FFF
+_021D8E64: .word 0x00000A8C
+ thumb_func_end MOD63_021D8D98
+
+ thumb_func_start MOD63_021D8E68
+MOD63_021D8E68: ; 0x021D8E68
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ bl FUN_0200E31C
+ ldr r0, [r4, #0x14]
+ bl FUN_0201B9E0
+ add r0, r5, #0
+ bl FUN_0200627C
+ mov r0, #0x4c
+ bl FUN_020168D0
+ ldr r0, _021D8E94 ; =0x0000003F
+ ldr r1, _021D8E98 ; =0x021DBAB8
+ bl FUN_02000E7C
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8E94: .word 0x0000003F
+_021D8E98: .word 0x021DBAB8
+ thumb_func_end MOD63_021D8E68
+
+ thumb_func_start MOD63_021D8E9C
+MOD63_021D8E9C: ; 0x021D8E9C
+ push {r4, lr}
+ add r1, r0, #0
+ ldr r0, [r1, #8]
+ add r4, r1, #0
+ add r4, #0x18
+ cmp r0, #0
+ beq _021D8EAE
+ mov r0, #3
+ strb r0, [r4]
+_021D8EAE:
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhi _021D8F06
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8EC0: ; jump table
+ .short _021D8EC8 - _021D8EC0 - 2 ; case 0
+ .short _021D8ED6 - _021D8EC0 - 2 ; case 1
+ .short _021D8EE6 - _021D8EC0 - 2 ; case 2
+ .short _021D8EFC - _021D8EC0 - 2 ; case 3
+_021D8EC8:
+ add r0, r1, #0
+ bl MOD63_021D8F0C
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _021D8F06
+_021D8ED6:
+ add r1, #0x18
+ add r0, r1, #0
+ bl MOD63_021D8F38
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _021D8F06
+_021D8EE6:
+ add r0, r1, #0
+ ldr r1, [r1, #4]
+ add r0, #0x18
+ bl MOD63_021D90D0
+ cmp r0, #0
+ beq _021D8F06
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _021D8F06
+_021D8EFC:
+ add r0, r1, #0
+ bl MOD63_021D9234
+ mov r0, #1
+ pop {r4, pc}
+_021D8F06:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021D8E9C
+
+ thumb_func_start MOD63_021D8F0C
+MOD63_021D8F0C: ; 0x021D8F0C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD63_021D8890
+ add r0, r4, #0
+ bl MOD63_021D88F0
+ ldr r0, [r4, #0xc]
+ str r0, [r4, #0x24]
+ bl MOD63_021DAEF8
+ str r0, [r4, #0x2c]
+ ldr r0, _021D8F34 ; =MOD63_021D8CA8
+ add r1, r4, #0
+ bl FUN_02015F10
+ mov r0, #1
+ strb r0, [r4, #0x1a]
+ pop {r4, pc}
+ nop
+_021D8F34: .word MOD63_021D8CA8
+ thumb_func_end MOD63_021D8F0C
+
+ thumb_func_start MOD63_021D8F38
+MOD63_021D8F38: ; 0x021D8F38
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x13
+ mov r3, #2
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x13
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x14
+ mov r3, #2
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x15
+ mov r3, #6
+ bl FUN_020068C8
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x4c
+ str r0, [sp, #4]
+ mov r0, #0x80
+ mov r1, #0x12
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x4c
+ str r0, [sp, #4]
+ mov r0, #0x80
+ mov r1, #0x12
+ mov r2, #4
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ mov r1, #1
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ add r3, r1, #0
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #2
+ mov r3, #1
+ bl FUN_020068C8
+ mov r1, #0
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x4c
+ str r0, [sp, #4]
+ mov r0, #0x80
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x16
+ mov r3, #3
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x16
+ mov r3, #7
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x48
+ mov r3, #5
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x49
+ mov r3, #5
+ bl FUN_020068C8
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x4c
+ str r0, [sp, #4]
+ mov r0, #0x80
+ mov r1, #0x47
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021D90C8 ; =0x04000050
+ mov r1, #2
+ mov r2, #8
+ mov r3, #0
+ bl G2x_SetBlendAlpha_
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021D90CC ; =0x04001050
+ mov r1, #2
+ mov r2, #8
+ mov r3, #0
+ bl G2x_SetBlendAlpha_
+ mov r0, #1
+ add r1, r0, #0
+ bl OS_WaitIrq
+ mov r0, #0
+ bl FUN_0200E394
+ mov r0, #1
+ bl FUN_0200E394
+ bl FUN_0201E788
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_021D90C8: .word 0x04000050
+_021D90CC: .word 0x04001050
+ thumb_func_end MOD63_021D8F38
+
+ thumb_func_start MOD63_021D90D0
+MOD63_021D90D0: ; 0x021D90D0
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ add r5, r1, #0
+ bl MOD63_021DB1AC
+ ldrb r0, [r4, #1]
+ cmp r0, #5
+ bls _021D90E6
+ b _021D9208
+_021D90E6:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D90F2: ; jump table
+ .short _021D90FE - _021D90F2 - 2 ; case 0
+ .short _021D9122 - _021D90F2 - 2 ; case 1
+ .short _021D9148 - _021D90F2 - 2 ; case 2
+ .short _021D91AE - _021D90F2 - 2 ; case 3
+ .short _021D91CE - _021D90F2 - 2 ; case 4
+ .short _021D91FA - _021D90F2 - 2 ; case 5
+_021D90FE:
+ mov r2, #0
+ strb r2, [r4, #7]
+ strb r2, [r4, #6]
+ ldr r0, _021D9210 ; =MOD63_021D92A4
+ strb r2, [r4, #8]
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x10]
+ mov r0, #1
+ ldr r1, _021D9214 ; =0x00000494
+ add r2, r0, #0
+ bl FUN_0200433C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9208
+_021D9122:
+ ldrb r0, [r4, #8]
+ cmp r0, #0
+ beq _021D9208
+ cmp r5, #0x73
+ blt _021D9208
+ mov r2, #0
+ strb r2, [r4, #7]
+ mov r0, #0x10
+ strb r0, [r4, #6]
+ ldr r0, _021D9218 ; =MOD63_021D9300
+ strb r2, [r4, #8]
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x10]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9208
+_021D9148:
+ ldrb r0, [r4, #8]
+ cmp r0, #0
+ beq _021D9208
+ ldr r0, _021D921C ; =0x00000109
+ cmp r5, r0
+ blt _021D9208
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021D9220 ; =0x04000050
+ mov r1, #4
+ mov r2, #8
+ mov r3, #0
+ bl G2x_SetBlendAlpha_
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021D9224 ; =0x04001050
+ mov r1, #4
+ mov r2, #8
+ mov r3, #0
+ bl G2x_SetBlendAlpha_
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r2, #0
+ strb r2, [r4, #7]
+ strb r2, [r4, #6]
+ ldr r0, _021D9228 ; =MOD63_021D9360
+ strb r2, [r4, #8]
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x10]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9208
+_021D91AE:
+ ldrb r0, [r4, #8]
+ cmp r0, #0
+ beq _021D9208
+ mov r2, #0
+ strb r2, [r4, #7]
+ strb r2, [r4, #6]
+ ldr r0, _021D922C ; =MOD63_021D93A8
+ strb r2, [r4, #8]
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x10]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9208
+_021D91CE:
+ ldrb r0, [r4, #8]
+ cmp r0, #0
+ beq _021D9208
+ ldr r0, _021D9230 ; =0x000001EA
+ cmp r5, r0
+ blt _021D9208
+ mov r0, #0x12
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #2
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9208
+_021D91FA:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9208
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_021D9208:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_021D9210: .word MOD63_021D92A4
+_021D9214: .word 0x00000494
+_021D9218: .word MOD63_021D9300
+_021D921C: .word 0x00000109
+_021D9220: .word 0x04000050
+_021D9224: .word 0x04001050
+_021D9228: .word MOD63_021D9360
+_021D922C: .word MOD63_021D93A8
+_021D9230: .word 0x000001EA
+ thumb_func_end MOD63_021D90D0
+
+ thumb_func_start MOD63_021D9234
+MOD63_021D9234: ; 0x021D9234
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ ldrb r0, [r4, #0x1a]
+ cmp r0, #0
+ beq _021D9286
+ ldr r0, [r4, #0x2c]
+ bl MOD63_021DAF9C
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #6
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #7
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #5
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ bl FUN_02016A18
+ mov r0, #0
+ strb r0, [r4, #0x1a]
+_021D9286:
+ ldr r0, [r4, #0x28]
+ cmp r0, #0
+ beq _021D92A0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ bne _021D9296
+ bl ErrorHandling
+_021D9296:
+ ldr r0, [r4, #0x28]
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x28]
+_021D92A0:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021D9234
+
+ thumb_func_start MOD63_021D92A4
+MOD63_021D92A4: ; 0x021D92A4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldrb r1, [r4, #7]
+ add r1, r1, #1
+ strb r1, [r4, #7]
+ ldrb r1, [r4, #7]
+ cmp r1, #6
+ blo _021D92C0
+ mov r1, #0
+ strb r1, [r4, #7]
+ ldrb r1, [r4, #6]
+ add r1, r1, #1
+ strb r1, [r4, #6]
+_021D92C0:
+ ldrb r1, [r4, #6]
+ cmp r1, #0x10
+ blo _021D92D2
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x10]
+ mov r0, #1
+ strb r0, [r4, #8]
+_021D92D2:
+ mov r0, #0x10
+ str r0, [sp]
+ ldrb r3, [r4, #6]
+ ldr r0, _021D92F8 ; =0x04000050
+ mov r1, #2
+ mov r2, #8
+ bl G2x_SetBlendAlpha_
+ mov r0, #0x10
+ str r0, [sp]
+ ldrb r3, [r4, #6]
+ ldr r0, _021D92FC ; =0x04001050
+ mov r1, #2
+ mov r2, #8
+ bl G2x_SetBlendAlpha_
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D92F8: .word 0x04000050
+_021D92FC: .word 0x04001050
+ thumb_func_end MOD63_021D92A4
+
+ thumb_func_start MOD63_021D9300
+MOD63_021D9300: ; 0x021D9300
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldrb r1, [r4, #7]
+ add r1, r1, #1
+ strb r1, [r4, #7]
+ ldrb r1, [r4, #7]
+ cmp r1, #4
+ blo _021D931C
+ mov r1, #0
+ strb r1, [r4, #7]
+ ldrb r1, [r4, #6]
+ sub r1, r1, #1
+ strb r1, [r4, #6]
+_021D931C:
+ ldrb r1, [r4, #6]
+ cmp r1, #0
+ bne _021D9332
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x10]
+ mov r1, #1
+ strb r1, [r4, #8]
+ ldr r0, [r4, #0x18]
+ strb r1, [r0]
+_021D9332:
+ mov r0, #0x10
+ str r0, [sp]
+ ldrb r3, [r4, #6]
+ ldr r0, _021D9358 ; =0x04000050
+ mov r1, #2
+ mov r2, #8
+ bl G2x_SetBlendAlpha_
+ mov r0, #0x10
+ str r0, [sp]
+ ldrb r3, [r4, #6]
+ ldr r0, _021D935C ; =0x04001050
+ mov r1, #2
+ mov r2, #8
+ bl G2x_SetBlendAlpha_
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D9358: .word 0x04000050
+_021D935C: .word 0x04001050
+ thumb_func_end MOD63_021D9300
+
+ thumb_func_start MOD63_021D9360
+MOD63_021D9360: ; 0x021D9360
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldrb r1, [r4, #7]
+ add r1, r1, #1
+ strb r1, [r4, #7]
+ ldrb r1, [r4, #7]
+ cmp r1, #4
+ blo _021D937C
+ mov r1, #0
+ strb r1, [r4, #7]
+ ldrb r1, [r4, #6]
+ add r1, r1, #1
+ strb r1, [r4, #6]
+_021D937C:
+ ldrb r1, [r4, #6]
+ cmp r1, #0x10
+ blo _021D938E
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x10]
+ mov r0, #1
+ strb r0, [r4, #8]
+_021D938E:
+ mov r0, #0x10
+ str r0, [sp]
+ ldrb r3, [r4, #6]
+ ldr r0, _021D93A4 ; =0x04000050
+ mov r1, #4
+ mov r2, #8
+ bl G2x_SetBlendAlpha_
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D93A4: .word 0x04000050
+ thumb_func_end MOD63_021D9360
+
+ thumb_func_start MOD63_021D93A8
+MOD63_021D93A8: ; 0x021D93A8
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldrb r1, [r4, #7]
+ add r1, r1, #1
+ strb r1, [r4, #7]
+ ldrb r1, [r4, #7]
+ cmp r1, #4
+ blo _021D93C4
+ mov r1, #0
+ strb r1, [r4, #7]
+ ldrb r1, [r4, #6]
+ add r1, r1, #1
+ strb r1, [r4, #6]
+_021D93C4:
+ ldrb r1, [r4, #6]
+ cmp r1, #0x10
+ blo _021D93D6
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x10]
+ mov r0, #1
+ strb r0, [r4, #8]
+_021D93D6:
+ mov r0, #0x10
+ str r0, [sp]
+ ldrb r3, [r4, #6]
+ ldr r0, _021D93EC ; =0x04001050
+ mov r1, #4
+ mov r2, #8
+ bl G2x_SetBlendAlpha_
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D93EC: .word 0x04001050
+ thumb_func_end MOD63_021D93A8
+
+ thumb_func_start MOD63_021D93F0
+MOD63_021D93F0: ; 0x021D93F0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ add r4, r5, #0
+ add r4, #0x34
+ cmp r0, #0
+ beq _021D9402
+ mov r0, #4
+ strb r0, [r4]
+_021D9402:
+ ldrb r0, [r4]
+ cmp r0, #4
+ bhi _021D9492
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9414: ; jump table
+ .short _021D941E - _021D9414 - 2 ; case 0
+ .short _021D942C - _021D9414 - 2 ; case 1
+ .short _021D943C - _021D9414 - 2 ; case 2
+ .short _021D9452 - _021D9414 - 2 ; case 3
+ .short _021D9488 - _021D9414 - 2 ; case 4
+_021D941E:
+ add r0, r5, #0
+ bl MOD63_021D9498
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _021D9492
+_021D942C:
+ add r5, #0x34
+ add r0, r5, #0
+ bl MOD63_021D96A0
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _021D9492
+_021D943C:
+ add r0, r5, #0
+ add r0, #0x34
+ bl MOD63_021D9810
+ mov r0, #1
+ add r5, #0x39
+ strb r0, [r5]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _021D9492
+_021D9452:
+ add r0, r5, #0
+ ldr r1, [r5, #4]
+ add r0, #0x34
+ bl MOD63_021D99EC
+ cmp r0, #0
+ beq _021D9466
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_021D9466:
+ ldr r0, [r5, #0x44]
+ bl MOD63_021DAC18
+ add r0, r5, #0
+ add r0, #0x39
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _021D9480
+ add r5, #0x34
+ add r0, r5, #0
+ bl MOD63_021D9980
+ b _021D9492
+_021D9480:
+ ldr r0, [r5, #0x4c]
+ bl MOD63_021DB5A8
+ b _021D9492
+_021D9488:
+ add r0, r5, #0
+ bl MOD63_021D95A8
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D9492:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021D93F0
+
+ thumb_func_start MOD63_021D9498
+MOD63_021D9498: ; 0x021D9498
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ bl MOD63_021D88B0
+ add r0, r5, #0
+ bl MOD63_021D8A04
+ add r0, r5, #0
+ bl MOD63_021D8BD8
+ bl MOD63_021DA6E0
+ add r4, r0, #0
+ bl MOD63_021DB498
+ add r6, r0, #0
+ mov r0, #0x4c
+ add r1, r4, #0
+ bl FUN_02016998
+ str r0, [r5, #0x44]
+ mov r0, #0x10
+ bl MOD63_021DAF20
+ str r0, [r5, #0x48]
+ mov r0, #0x4c
+ add r1, r6, #0
+ bl FUN_02016998
+ str r0, [r5, #0x4c]
+ ldr r0, [r5, #0x44]
+ mov r1, #0
+ add r2, r4, #0
+ bl Call_FillMemWithValue
+ ldr r0, [r5, #0x4c]
+ mov r1, #0
+ add r2, r6, #0
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ mov r1, #4
+ add r0, #0x3b
+ strb r1, [r0]
+ ldr r0, [r5, #0x4c]
+ bl MOD63_021DB49C
+ ldr r0, [r5, #0xc]
+ mov r1, #1
+ str r0, [r5, #0x40]
+ ldr r0, _021D9588 ; =0x021C4918
+ strb r1, [r0, #5]
+ bl FUN_0201E7A0
+ ldr r6, _021D958C ; =0x021DBDE8
+ ldr r7, _021D9590 ; =0x021DBAD0
+ mov r4, #0
+_021D950C:
+ mov r0, #0xc
+ add r1, r4, #0
+ mul r1, r0
+ add r3, r6, r1
+ ldr r2, [r3, #4]
+ ldr r1, [r6, r1]
+ ldr r3, [r3, #8]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ add r0, r4, #0
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl FUN_020B8418
+ lsl r1, r4, #1
+ ldrh r1, [r7, r1]
+ add r0, r4, #0
+ bl FUN_020B8404
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021D950C
+ ldr r0, _021D9594 ; =0x00004210
+ ldr r1, _021D9598 ; =0x0000318A
+ mov r2, #0
+ bl FUN_020B83E0
+ ldr r0, _021D959C ; =0x00004A52
+ ldr r1, _021D95A0 ; =0x000039CE
+ mov r2, #0
+ bl FUN_020B83BC
+ mov r0, #0x1f
+ str r0, [sp]
+ mov r0, #2
+ lsl r0, r0, #0xe
+ mov r1, #0
+ str r0, [sp, #4]
+ mov r0, #0xd
+ mov r2, #2
+ add r3, r1, #0
+ bl FUN_020B8390
+ ldr r0, _021D95A4 ; =MOD63_021D8CB0
+ add r1, r5, #0
+ bl FUN_02015F10
+ mov r0, #0x10
+ mov r1, #1
+ mov r2, #2
+ bl FUN_0200A274
+ mov r0, #1
+ add r5, #0x36
+ strb r0, [r5]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9588: .word 0x021C4918
+_021D958C: .word 0x021DBDE8
+_021D9590: .word 0x021DBAD0
+_021D9594: .word 0x00004210
+_021D9598: .word 0x0000318A
+_021D959C: .word 0x00004A52
+_021D95A0: .word 0x000039CE
+_021D95A4: .word MOD63_021D8CB0
+ thumb_func_end MOD63_021D9498
+
+ thumb_func_start MOD63_021D95A8
+MOD63_021D95A8: ; 0x021D95A8
+ push {r4, r5, r6, lr}
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ add r5, r0, #0
+ ldr r1, [r2]
+ ldr r0, _021D969C ; =0xFFFF1FFF
+ and r0, r1
+ str r0, [r2]
+ add r0, r5, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _021D95F6
+ bl FUN_0201EB98
+ ldr r0, [r5, #0x78]
+ bl FUN_0201EB70
+ mov r4, #0
+ mov r6, #0x58
+_021D95D0:
+ add r0, r4, #0
+ mul r0, r6
+ add r0, r5, r0
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #6
+ blo _021D95D0
+ ldr r0, [r5, #0x70]
+ bl FUN_02016A18
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x38
+ strb r1, [r0]
+_021D95F6:
+ add r0, r5, #0
+ add r0, #0x37
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _021D9624
+ ldr r0, [r5, #0x44]
+ bl MOD63_021DAA04
+ mov r4, #0
+_021D9608:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x50]
+ bl FUN_02016A18
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021D9608
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x37
+ strb r1, [r0]
+_021D9624:
+ add r0, r5, #0
+ add r0, #0x36
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _021D9690
+ ldr r0, [r5, #0x48]
+ cmp r0, #0
+ beq _021D963C
+ bl MOD63_021DAF4C
+ mov r0, #0
+ str r0, [r5, #0x48]
+_021D963C:
+ ldr r0, [r5, #0x44]
+ cmp r0, #0
+ beq _021D964A
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r5, #0x44]
+_021D964A:
+ ldr r0, [r5, #0x4c]
+ cmp r0, #0
+ beq _021D965E
+ bl MOD63_021DB580
+ ldr r0, [r5, #0x4c]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r5, #0x4c]
+_021D965E:
+ ldr r0, [r5, #0xc]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r5, #0xc]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r5, #0xc]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r5, #0xc]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r5, #0xc]
+ bl FUN_02016A18
+ ldr r0, [r5, #0x10]
+ bl FUN_020223BC
+ mov r0, #0
+ add r5, #0x36
+ strb r0, [r5]
+_021D9690:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ pop {r4, r5, r6, pc}
+ nop
+_021D969C: .word 0xFFFF1FFF
+ thumb_func_end MOD63_021D95A8
+
+ thumb_func_start MOD63_021D96A0
+MOD63_021D96A0: ; 0x021D96A0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ ldr r3, _021D980C ; =0x021DBB2C
+ add r2, sp, #0x18
+ add r5, r0, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ mov r0, #0x80
+ mov r1, #0x4c
+ bl FUN_02006670
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ str r0, [sp, #0x14]
+ add r0, #0x2c
+ mov r4, #0
+ str r0, [sp, #0x14]
+_021D96C6:
+ lsl r7, r4, #2
+ add r1, sp, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [r1, r7]
+ mov r2, #0x4c
+ add r6, r5, r7
+ bl FUN_02006704
+ str r0, [r6, #0x1c]
+ cmp r0, #0
+ beq _021D96F4
+ ldr r1, [sp, #0x14]
+ add r1, r1, r7
+ bl FUN_020B0138
+ cmp r0, #0
+ bne _021D96F8
+ ldr r0, [r6, #0x2c]
+ bl FUN_02016A18
+ bl ErrorHandling
+ b _021D96F8
+_021D96F4:
+ bl ErrorHandling
+_021D96F8:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021D96C6
+ ldr r0, [sp, #0x10]
+ bl FUN_020066F4
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0xc]
+ mov r0, #0x80
+ mov r1, #0x1c
+ mov r3, #3
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0xc]
+ mov r0, #0x80
+ mov r1, #0x1a
+ mov r3, #3
+ bl FUN_020068C8
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r5, #0x2c]
+ mov r2, #0xa
+ add r3, r1, #0
+ bl MOD63_021D9EA8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0xc]
+ mov r0, #0x80
+ mov r1, #0x11
+ mov r3, #4
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0xc]
+ mov r0, #0x80
+ mov r1, #0xf
+ mov r3, #4
+ bl FUN_020068C8
+ mov r0, #1
+ lsl r0, r0, #8
+ str r0, [sp]
+ mov r0, #0x4c
+ str r0, [sp, #4]
+ mov r0, #0x80
+ mov r1, #0x10
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0xc]
+ mov r0, #0x80
+ mov r1, #0x1b
+ mov r3, #1
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0xc]
+ mov r0, #0x80
+ mov r1, #0x19
+ mov r3, #1
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0xc]
+ mov r0, #0x80
+ mov r1, #0x18
+ mov r3, #2
+ bl FUN_020068C8
+ ldr r0, [r5, #0x10]
+ bl MOD63_021DA6E8
+ ldr r0, [r5, #0x10]
+ bl MOD63_021DAA5C
+ ldr r0, [r5, #0x10]
+ ldr r1, [r5, #0x14]
+ bl MOD63_021DABCC
+ mov r0, #0xe
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #0
+ bl FUN_0200E394
+ mov r0, #1
+ bl FUN_0200E394
+ mov r0, #1
+ strb r0, [r5, #3]
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D980C: .word 0x021DBB2C
+ thumb_func_end MOD63_021D96A0
+
+ thumb_func_start MOD63_021D9810
+MOD63_021D9810: ; 0x021D9810
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ mov r0, #0x80
+ mov r1, #0x46
+ mov r2, #0x4c
+ bl LoadFromNarc_2
+ str r0, [r5, #0x3c]
+ bl FUN_020BC0FC
+ str r0, [r5, #0x40]
+ bl FUN_0201B3C4
+ cmp r0, #0
+ bne _021D9834
+ bl ErrorHandling
+_021D9834:
+ ldr r0, [r5, #0x40]
+ ldr r0, [r0, #0x14]
+ cmp r0, #0
+ bne _021D9840
+ bl ErrorHandling
+_021D9840:
+ ldr r2, [r5, #0x40]
+ ldr r0, [r5, #0x3c]
+ ldr r1, [r2, #0x14]
+ add r1, r2, r1
+ sub r1, r1, r0
+ bl FUN_02016B44
+ mov r0, #0x80
+ mov r1, #0x4c
+ bl FUN_02006670
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ str r0, [sp, #0x10]
+ add r0, #0x48
+ mov r7, #0
+ str r0, [sp, #0x10]
+_021D9862:
+ ldr r1, _021D9964 ; =0x021DBB90
+ lsl r2, r7, #2
+ ldr r1, [r1, r2]
+ mov r0, #0x58
+ add r6, r7, #0
+ mul r6, r0
+ ldr r0, [sp, #0xc]
+ mov r2, #0x4c
+ bl FUN_02006704
+ add r1, r5, r6
+ add r1, #0x9c
+ str r0, [r1]
+ add r0, r5, r6
+ add r0, #0x9c
+ ldr r0, [r0]
+ ldr r1, [r5, #0x40]
+ bl FUN_0201B3A8
+ cmp r0, #0
+ bne _021D9890
+ bl ErrorHandling
+_021D9890:
+ add r0, r5, r6
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl FUN_020BC13C
+ ldrb r0, [r0, #9]
+ cmp r0, #1
+ beq _021D98A4
+ bl ErrorHandling
+_021D98A4:
+ add r0, r5, r6
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl FUN_020BC13C
+ ldrh r1, [r0, #0xe]
+ add r1, r0, r1
+ ldr r1, [r1, #0xc]
+ add r4, r0, r1
+ bne _021D98BC
+ bl ErrorHandling
+_021D98BC:
+ ldr r0, [sp, #0x10]
+ add r1, r4, #0
+ add r0, r0, r6
+ bl FUN_020B80B4
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x40
+ bl FUN_020BC094
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x80
+ bl FUN_020BC094
+ mov r2, #2
+ add r0, r4, #0
+ mov r1, #0
+ lsl r2, r2, #8
+ bl FUN_020BC094
+ mov r2, #1
+ add r0, r4, #0
+ mov r1, #0
+ lsl r2, r2, #0xa
+ bl FUN_020BC094
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0xf
+ bl FUN_020BC02C
+ add r0, r7, #1
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ cmp r7, #6
+ blo _021D9862
+ ldr r0, [sp, #0xc]
+ bl FUN_020066F4
+ mov r0, #0x4c
+ bl FUN_0201EB64
+ add r3, sp, #0x20
+ ldr r4, _021D9968 ; =0x021DBAE4
+ str r0, [r5, #0x44]
+ ldmia r4!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r4]
+ ldr r1, _021D996C ; =0x0029AEC1
+ str r0, [r3]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x44]
+ ldr r3, _021D9970 ; =0x000005C1
+ str r0, [sp, #8]
+ add r0, r2, #0
+ ldr r2, _021D9974 ; =0x021DBB80
+ bl FUN_0201ECA8
+ ldr r0, _021D9978 ; =0x00000981
+ ldr r1, [r5, #0x44]
+ bl FUN_0201EEF0
+ ldr r4, _021D997C ; =0x021DBB08
+ add r3, sp, #0x14
+ ldmia r4!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r4]
+ str r0, [r3]
+ ldr r1, [r5, #0x44]
+ add r0, r2, #0
+ bl FUN_0201EF70
+ ldr r0, [r5, #0x44]
+ bl FUN_0201EB8C
+ mov r0, #1
+ strb r0, [r5, #4]
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9964: .word 0x021DBB90
+_021D9968: .word 0x021DBAE4
+_021D996C: .word 0x0029AEC1
+_021D9970: .word 0x000005C1
+_021D9974: .word 0x021DBB80
+_021D9978: .word 0x00000981
+_021D997C: .word 0x021DBB08
+ thumb_func_end MOD63_021D9810
+
+ thumb_func_start MOD63_021D9980
+MOD63_021D9980: ; 0x021D9980
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ ldr r4, _021D99E4 ; =0x021DBD4C
+ add r5, r0, #0
+ add r3, sp, #0x18
+ mov r2, #4
+_021D998C:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D998C
+ ldr r0, [r4]
+ add r2, sp, #0xc
+ str r0, [r3]
+ ldr r3, _021D99E8 ; =0x021DBAFC
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r1, sp, #0
+ str r0, [r2]
+ mov r0, #0
+ str r0, [r1]
+ str r0, [r1, #4]
+ str r0, [r1, #8]
+ bl FUN_020222AC
+ bl FUN_0201EBA4
+ mov r4, #0
+ add r5, #0x48
+ add r7, sp, #0
+ mov r6, #0x58
+_021D99BE:
+ add r0, r4, #0
+ mul r0, r6
+ add r0, r5, r0
+ add r1, r7, #0
+ add r2, sp, #0x18
+ add r3, sp, #0xc
+ bl FUN_0201B26C
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #6
+ blo _021D99BE
+ mov r0, #0
+ mov r1, #1
+ bl FUN_020222B4
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D99E4: .word 0x021DBD4C
+_021D99E8: .word 0x021DBAFC
+ thumb_func_end MOD63_021D9980
+
+ thumb_func_start MOD63_021D99EC
+MOD63_021D99EC: ; 0x021D99EC
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldrb r0, [r4, #6]
+ add r5, r1, #0
+ cmp r0, #0
+ bne _021D9A00
+ ldr r0, [r4, #0x14]
+ bl MOD63_021DB38C
+_021D9A00:
+ ldrb r0, [r4, #6]
+ ldrb r1, [r4, #7]
+ add r0, r0, #1
+ bl _s32_div_f
+ strb r1, [r4, #6]
+ ldrb r0, [r4, #1]
+ cmp r0, #0x11
+ bhi _021D9B0C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9A1E: ; jump table
+ .short _021D9A42 - _021D9A1E - 2 ; case 0
+ .short _021D9A6A - _021D9A1E - 2 ; case 1
+ .short _021D9A7A - _021D9A1E - 2 ; case 2
+ .short _021D9AB8 - _021D9A1E - 2 ; case 3
+ .short _021D9AEE - _021D9A1E - 2 ; case 4
+ .short _021D9B3E - _021D9A1E - 2 ; case 5
+ .short _021D9B72 - _021D9A1E - 2 ; case 6
+ .short _021D9BC8 - _021D9A1E - 2 ; case 7
+ .short _021D9C04 - _021D9A1E - 2 ; case 8
+ .short _021D9C70 - _021D9A1E - 2 ; case 9
+ .short _021D9CB4 - _021D9A1E - 2 ; case 10
+ .short _021D9CFC - _021D9A1E - 2 ; case 11
+ .short _021D9D38 - _021D9A1E - 2 ; case 12
+ .short _021D9D94 - _021D9A1E - 2 ; case 13
+ .short _021D9DF8 - _021D9A1E - 2 ; case 14
+ .short _021D9E48 - _021D9A1E - 2 ; case 15
+ .short _021D9E84 - _021D9A1E - 2 ; case 16
+ .short _021D9E9A - _021D9A1E - 2 ; case 17
+_021D9A42:
+ mov r0, #0xa
+ lsl r0, r0, #6
+ cmp r5, r0
+ blt _021D9B0C
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E74C
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #8
+ mov r1, #0
+ mov r2, #0x10
+ mov r3, #1
+ bl FUN_0200A208
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9A6A:
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl MOD63_021DACA0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9A7A:
+ ldr r0, _021D9DCC ; =0x000002E9
+ cmp r5, r0
+ bne _021D9A88
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+_021D9A88:
+ ldr r0, _021D9DD0 ; =0x000003C5
+ cmp r5, r0
+ blt _021D9B0C
+ mov r0, #7
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x12
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ ldr r3, _021D9DD4 ; =0x00007FFF
+ mov r0, #3
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ mov r0, #0x10
+ strb r0, [r4, #7]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9AB8:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD63_021D9F38
+ ldr r0, [r4, #0x10]
+ add r1, r5, #0
+ bl MOD63_021DAD6C
+ ldr r0, _021D9DD8 ; =0x00000631
+ cmp r5, r0
+ blt _021D9B0C
+ mov r0, #0x12
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ mov r1, #0
+ str r0, [sp, #8]
+ ldr r3, _021D9DD4 ; =0x00007FFF
+ mov r0, #3
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9AEE:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD63_021D9F38
+ ldr r0, [r4, #0x10]
+ add r1, r5, #0
+ bl MOD63_021DAD6C
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9B0C
+ ldr r0, _021D9DDC ; =0x0000064A
+ cmp r5, r0
+ bge _021D9B0E
+_021D9B0C:
+ b _021D9EA0
+_021D9B0E:
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ mov r2, #1
+ bl MOD63_021DAC24
+ bl MOD63_021D8CC0
+ mov r0, #0
+ strb r0, [r4, #5]
+ mov r0, #0x12
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ ldr r3, _021D9DD4 ; =0x00007FFF
+ mov r0, #3
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9B3E:
+ add r0, r4, #0
+ bl MOD63_021D9EE0
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9C12
+ ldr r0, _021D9DE0 ; =0x000006B3
+ cmp r5, r0
+ blt _021D9C12
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9B72:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9C12
+ mov r1, #0
+ ldr r0, _021D9DE4 ; =0x04000050
+ mov r2, #0x38
+ add r3, r1, #0
+ str r1, [sp]
+ bl G2x_SetBlendAlpha_
+ mov r0, #6
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ mov r1, #0
+ ldr r0, [r4, #0x10]
+ add r2, r1, #0
+ bl MOD63_021DAD18
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9BC8:
+ add r0, r4, #0
+ bl MOD63_021D9F20
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9C12
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ add r2, r5, #0
+ bl MOD63_021DB5CC
+ cmp r0, #0
+ beq _021D9C12
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9C04:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9C12
+ ldr r0, _021D9DE8 ; =0x00000721
+ cmp r5, r0
+ bge _021D9C14
+_021D9C12:
+ b _021D9EA0
+_021D9C14:
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl MOD63_021DACA0
+ mov r1, #0
+ ldr r0, [r4, #0x10]
+ add r2, r1, #0
+ bl MOD63_021DAC24
+ mov r1, #1
+ ldr r0, [r4, #0x10]
+ add r2, r1, #0
+ bl MOD63_021DAC24
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ mov r2, #1
+ bl MOD63_021DAD18
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4, #0x38]
+ mov r2, #7
+ add r3, r1, #0
+ bl MOD63_021D9EA8
+ ldr r0, [r4, #0x10]
+ mov r1, #2
+ mov r2, #1
+ bl MOD63_021DAC24
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9C70:
+ add r0, r4, #0
+ bl MOD63_021D9F20
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9D46
+ ldr r0, _021D9DE8 ; =0x00000721
+ cmp r5, r0
+ blt _021D9D46
+ ldr r0, [r4, #0x10]
+ bl MOD63_021DACC0
+ cmp r0, #0
+ beq _021D9D46
+ ldr r0, _021D9DEC ; =0x00000785
+ cmp r5, r0
+ blt _021D9D46
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9CB4:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9D46
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ mov r2, #0
+ bl MOD63_021DAD18
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4, #0x30]
+ mov r2, #7
+ add r3, r1, #0
+ bl MOD63_021D9EA8
+ ldr r0, [r4, #0x10]
+ mov r1, #2
+ mov r2, #0
+ bl MOD63_021DAC24
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9CFC:
+ add r0, r4, #0
+ bl MOD63_021D9F20
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9D46
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ add r2, r5, #0
+ bl MOD63_021DB5CC
+ cmp r0, #0
+ beq _021D9D46
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9D38:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9D46
+ ldr r0, _021D9DF0 ; =0x000007F8
+ cmp r5, r0
+ bgt _021D9D48
+_021D9D46:
+ b _021D9EA0
+_021D9D48:
+ mov r1, #1
+ ldr r0, [r4, #0x10]
+ add r2, r1, #0
+ bl MOD63_021DAD18
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ mov r2, #1
+ bl MOD63_021DAC24
+ ldr r0, [r4, #0x10]
+ bl MOD63_021DAC6C
+ ldr r0, [r4, #0x10]
+ mov r1, #4
+ bl MOD63_021DAC80
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ mov r0, #0
+ str r0, [r4, #8]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9D94:
+ add r0, r4, #0
+ bl MOD63_021D9F00
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9EA0
+ ldr r0, _021D9DF4 ; =0x00000861
+ cmp r5, r0
+ ble _021D9EA0
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ mov r0, #0
+ str r0, [r4, #8]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+ .align 2, 0
+_021D9DCC: .word 0x000002E9
+_021D9DD0: .word 0x000003C5
+_021D9DD4: .word 0x00007FFF
+_021D9DD8: .word 0x00000631
+_021D9DDC: .word 0x0000064A
+_021D9DE0: .word 0x000006B3
+_021D9DE4: .word 0x04000050
+_021D9DE8: .word 0x00000721
+_021D9DEC: .word 0x00000785
+_021D9DF0: .word 0x000007F8
+_021D9DF4: .word 0x00000861
+_021D9DF8:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9EA0
+ mov r1, #0
+ ldr r0, [r4, #0x10]
+ add r2, r1, #0
+ bl MOD63_021DAD18
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ mov r2, #0
+ bl MOD63_021DAD18
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4, #0x34]
+ mov r2, #7
+ add r3, r1, #0
+ bl MOD63_021D9EA8
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9E48:
+ add r0, r4, #0
+ bl MOD63_021D9F20
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9EA0
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ add r2, r5, #0
+ bl MOD63_021DB5CC
+ cmp r0, #0
+ beq _021D9EA0
+ mov r0, #0x12
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9E84:
+ add r0, r4, #0
+ bl MOD63_021D9F20
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9EA0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9E9A:
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_021D9EA0:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021D99EC
+
+ thumb_func_start MOD63_021D9EA8
+MOD63_021D9EA8: ; 0x021D9EA8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ lsl r7, r2, #5
+ add r6, r1, #0
+ ldr r0, [r5, #0xc]
+ add r1, r7, #0
+ add r4, r3, #0
+ bl DC_FlushRange
+ ldr r1, [r5, #0xc]
+ cmp r6, #0
+ bne _021D9ED0
+ lsl r0, r4, #1
+ add r0, r1, r0
+ add r1, sp, #8
+ ldrb r1, [r1, #0x10]
+ add r2, r7, #0
+ bl GX_LoadBGPltt
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9ED0:
+ lsl r0, r4, #1
+ add r0, r1, r0
+ add r1, sp, #8
+ ldrb r1, [r1, #0x10]
+ add r2, r7, #0
+ bl GXS_LoadBGPltt
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD63_021D9EA8
+
+ thumb_func_start MOD63_021D9EE0
+MOD63_021D9EE0: ; 0x021D9EE0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ add r0, r1, #1
+ str r0, [r4, #8]
+ cmp r1, #0x18
+ ble _021D9EFE
+ mov r2, #4
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ sub r3, r2, #5
+ bl FUN_020179E0
+ mov r0, #0
+ str r0, [r4, #8]
+_021D9EFE:
+ pop {r4, pc}
+ thumb_func_end MOD63_021D9EE0
+
+ thumb_func_start MOD63_021D9F00
+MOD63_021D9F00: ; 0x021D9F00
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ add r0, r1, #1
+ str r0, [r4, #8]
+ cmp r1, #3
+ ble _021D9F1E
+ mov r2, #1
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_020179E0
+ mov r0, #0
+ str r0, [r4, #8]
+_021D9F1E:
+ pop {r4, pc}
+ thumb_func_end MOD63_021D9F00
+
+ thumb_func_start MOD63_021D9F20
+MOD63_021D9F20: ; 0x021D9F20
+ push {r4, lr}
+ add r4, r0, #0
+ mov r2, #1
+ add r3, r2, #0
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ sub r3, #0x11
+ bl FUN_020179E0
+ mov r0, #0
+ str r0, [r4, #8]
+ pop {r4, pc}
+ thumb_func_end MOD63_021D9F20
+
+ thumb_func_start MOD63_021D9F38
+MOD63_021D9F38: ; 0x021D9F38
+ push {r4, r5, r6, lr}
+ sub sp, #0x50
+ add r4, r0, #0
+ add r5, r1, #0
+ add r0, sp, #0x44
+ mov r1, #0
+ str r1, [r0]
+ str r1, [r0, #4]
+ str r1, [r0, #8]
+ ldr r1, _021DA078 ; =0x000004AB
+ cmp r5, r1
+ bgt _021D9FE2
+ ldr r0, [r4, #0x44]
+ bl FUN_0201F008
+ ldr r1, _021DA07C ; =0x000005C1
+ sub r0, #0x20
+ cmp r0, r1
+ ble _021D9F68
+ ldr r0, _021DA080 ; =0x0000FFE0
+ ldr r1, [r4, #0x44]
+ bl FUN_0201EF2C
+ b _021D9F70
+_021D9F68:
+ add r0, r1, #0
+ ldr r1, [r4, #0x44]
+ bl FUN_0201EEF0
+_021D9F70:
+ mov r0, #2
+ ldr r1, [sp, #0x4c]
+ lsl r0, r0, #0xc
+ sub r0, r1, r0
+ str r0, [sp, #0x4c]
+ ldr r1, [r4, #0x44]
+ add r0, sp, #0x44
+ bl FUN_0201EF70
+ ldr r0, _021DA078 ; =0x000004AB
+ cmp r5, r0
+ bne _021DA074
+ ldr r5, _021DA084 ; =0x021DBAD8
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ ldr r1, _021DA088 ; =0x0029AEC1
+ str r0, [r3]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x44]
+ ldr r3, _021DA07C ; =0x000005C1
+ str r0, [sp, #8]
+ add r0, r2, #0
+ ldr r2, _021DA08C ; =0x021DBB80
+ bl FUN_0201ECA8
+ ldr r5, _021DA090 ; =0x021DBB20
+ add r3, sp, #0x2c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ ldr r1, [r4, #0x44]
+ add r0, r2, #0
+ bl FUN_0201EF70
+ ldr r2, _021DA094 ; =0x021DBAC8
+ add r1, sp, #0xc
+ ldrh r3, [r2]
+ add r0, sp, #0xc
+ strh r3, [r1]
+ ldrh r3, [r2, #2]
+ strh r3, [r1, #2]
+ ldrh r3, [r2, #4]
+ ldrh r2, [r2, #6]
+ strh r3, [r1, #4]
+ strh r2, [r1, #6]
+ ldr r1, [r4, #0x44]
+ bl FUN_0201EFB4
+ add sp, #0x50
+ pop {r4, r5, r6, pc}
+_021D9FE2:
+ add r1, #0xd2
+ cmp r5, r1
+ bgt _021DA044
+ mov r1, #1
+ ldr r2, [sp, #0x44]
+ lsl r1, r1, #0xc
+ add r1, r2, r1
+ str r1, [sp, #0x44]
+ ldr r1, [r4, #0x44]
+ bl FUN_0201EF70
+ ldr r3, _021DA098 ; =0x0000057D
+ cmp r5, r3
+ bne _021DA074
+ ldr r6, _021DA09C ; =0x021DBB14
+ add r5, sp, #0x20
+ ldmia r6!, {r0, r1}
+ add r2, r5, #0
+ stmia r5!, {r0, r1}
+ ldr r0, [r6]
+ ldr r1, _021DA088 ; =0x0029AEC1
+ str r0, [r5]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x44]
+ add r3, #0x44
+ str r0, [sp, #8]
+ add r0, r2, #0
+ ldr r2, _021DA08C ; =0x021DBB80
+ bl FUN_0201ECA8
+ ldr r0, _021DA07C ; =0x000005C1
+ ldr r1, [r4, #0x44]
+ bl FUN_0201EEF0
+ ldr r5, _021DA0A0 ; =0x021DBAF0
+ add r3, sp, #0x14
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ ldr r1, [r4, #0x44]
+ add r0, r2, #0
+ bl FUN_0201EF70
+ add sp, #0x50
+ pop {r4, r5, r6, pc}
+_021DA044:
+ ldr r0, _021DA0A4 ; =0x00000618
+ cmp r5, r0
+ blt _021DA062
+ ldr r0, [r4, #0x44]
+ bl FUN_0201F008
+ mov r1, #1
+ add r0, #0x20
+ lsl r1, r1, #0xe
+ cmp r0, r1
+ bge _021DA062
+ ldr r1, [r4, #0x44]
+ mov r0, #0x20
+ bl FUN_0201EF2C
+_021DA062:
+ mov r0, #1
+ ldr r1, [sp, #0x4c]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x4c]
+ ldr r1, [r4, #0x44]
+ add r0, sp, #0x44
+ bl FUN_0201EF70
+_021DA074:
+ add sp, #0x50
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DA078: .word 0x000004AB
+_021DA07C: .word 0x000005C1
+_021DA080: .word 0x0000FFE0
+_021DA084: .word 0x021DBAD8
+_021DA088: .word 0x0029AEC1
+_021DA08C: .word 0x021DBB80
+_021DA090: .word 0x021DBB20
+_021DA094: .word 0x021DBAC8
+_021DA098: .word 0x0000057D
+_021DA09C: .word 0x021DBB14
+_021DA0A0: .word 0x021DBAF0
+_021DA0A4: .word 0x00000618
+ thumb_func_end MOD63_021D9F38
+
+ thumb_func_start MOD63_021DA0A8
+MOD63_021DA0A8: ; 0x021DA0A8
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ mov r5, #0xa3
+ lsl r5, r5, #2
+ cmp r0, #0
+ beq _021DA0BA
+ mov r0, #3
+ strb r0, [r4, r5]
+_021DA0BA:
+ ldrb r0, [r4, r5]
+ cmp r0, #3
+ bhi _021DA116
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DA0CC: ; jump table
+ .short _021DA0D4 - _021DA0CC - 2 ; case 0
+ .short _021DA0E2 - _021DA0CC - 2 ; case 1
+ .short _021DA0F4 - _021DA0CC - 2 ; case 2
+ .short _021DA10C - _021DA0CC - 2 ; case 3
+_021DA0D4:
+ add r0, r4, #0
+ bl MOD63_021DA11C
+ ldrb r0, [r4, r5]
+ add r0, r0, #1
+ strb r0, [r4, r5]
+ b _021DA116
+_021DA0E2:
+ mov r0, #0xa3
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD63_021DA158
+ ldrb r0, [r4, r5]
+ add r0, r0, #1
+ strb r0, [r4, r5]
+ b _021DA116
+_021DA0F4:
+ mov r0, #0xa3
+ lsl r0, r0, #2
+ ldr r1, [r4, #4]
+ add r0, r4, r0
+ bl MOD63_021DA30C
+ cmp r0, #0
+ beq _021DA116
+ ldrb r0, [r4, r5]
+ add r0, r0, #1
+ strb r0, [r4, r5]
+ b _021DA116
+_021DA10C:
+ add r0, r4, #0
+ bl MOD63_021DA418
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DA116:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DA0A8
+
+ thumb_func_start MOD63_021DA11C
+MOD63_021DA11C: ; 0x021DA11C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD63_021D88D0
+ add r0, r4, #0
+ bl MOD63_021D8ADC
+ mov r0, #0xa6
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ ldr r0, _021DA150 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ ldr r0, _021DA154 ; =0x0000028E
+ mov r1, #1
+ strb r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021DA150: .word 0x04000050
+_021DA154: .word 0x0000028E
+ thumb_func_end MOD63_021DA11C
+
+ thumb_func_start MOD63_021DA158
+MOD63_021DA158: ; 0x021DA158
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ add r4, r0, #0
+ mov r0, #0x80
+ mov r1, #0x4c
+ bl FUN_02006670
+ mov r1, #0x35
+ mov r2, #0x4c
+ add r5, r0, #0
+ bl FUN_02006704
+ str r0, [r4, #0x10]
+ cmp r0, #0
+ beq _021DA18E
+ add r1, r4, #0
+ add r1, #0x14
+ bl FUN_020B0138
+ cmp r0, #0
+ bne _021DA192
+ ldr r0, [r4, #0x14]
+ bl FUN_02016A18
+ bl ErrorHandling
+ b _021DA192
+_021DA18E:
+ bl ErrorHandling
+_021DA192:
+ add r0, r5, #0
+ bl FUN_020066F4
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4, #0x14]
+ mov r2, #9
+ add r3, r1, #0
+ bl MOD63_021D9EA8
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ mov r2, #9
+ bl MOD63_021D9EA8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x36
+ mov r3, #1
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x3b
+ mov r3, #1
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x38
+ mov r3, #2
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x3d
+ mov r3, #2
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x39
+ mov r3, #3
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x3e
+ mov r3, #3
+ bl FUN_020068C8
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x3a
+ bl FUN_0200687C
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x3f
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x37
+ mov r3, #5
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x3c
+ mov r3, #5
+ bl FUN_020068C8
+ mov r0, #0xe
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E74C
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ mov r2, #1
+ mov r3, #0x40
+ bl FUN_020179E0
+ mov r0, #1
+ lsl r0, r0, #0xc
+ bl FX_Inv
+ add r5, r0, #0
+ mov r0, #1
+ lsl r0, r0, #0xc
+ bl FX_Inv
+ mov r1, #0
+ str r5, [sp, #0x10]
+ str r1, [sp, #0x14]
+ str r1, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ bl OS_WaitVBlankIntr
+ mov r0, #0x60
+ str r0, [sp]
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ add r2, sp, #0x10
+ mov r3, #0x80
+ bl FUN_02017BD0
+ mov r0, #0x60
+ str r0, [sp]
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ add r2, sp, #0x10
+ mov r3, #0xc0
+ bl FUN_02017BD0
+ mov r0, #1
+ strb r0, [r4, #3]
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD63_021DA158
+
+ thumb_func_start MOD63_021DA30C
+MOD63_021DA30C: ; 0x021DA30C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r5, r1, #0
+ ldrb r1, [r4, #1]
+ cmp r1, #3
+ bhi _021DA3EC
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DA326: ; jump table
+ .short _021DA32E - _021DA326 - 2 ; case 0
+ .short _021DA352 - _021DA326 - 2 ; case 1
+ .short _021DA36A - _021DA326 - 2 ; case 2
+ .short _021DA3DA - _021DA326 - 2 ; case 3
+_021DA32E:
+ ldr r0, _021DA3F8 ; =0x000008E3
+ cmp r5, r0
+ blt _021DA3EC
+ mov r0, #0x78
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021DA3EC
+_021DA352:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021DA3EC
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [r4, #4]
+ str r0, [r4, #8]
+ b _021DA3EC
+_021DA36A:
+ ldr r0, _021DA3FC ; =0x0000097E
+ cmp r5, r0
+ bne _021DA378
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD63_021DA588
+_021DA378:
+ ldr r0, _021DA400 ; =0x000009D3
+ cmp r5, r0
+ bne _021DA386
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD63_021DA588
+_021DA386:
+ ldr r0, _021DA404 ; =0x000009F1
+ cmp r5, r0
+ bne _021DA394
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD63_021DA588
+_021DA394:
+ ldr r0, _021DA408 ; =0x00000A1E
+ cmp r5, r0
+ bne _021DA3A2
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD63_021DA588
+_021DA3A2:
+ ldr r0, _021DA40C ; =0x00000A64
+ cmp r5, r0
+ blt _021DA3AE
+ add r0, r4, #0
+ bl MOD63_021DA478
+_021DA3AE:
+ ldr r0, _021DA410 ; =0x00000A78
+ cmp r5, r0
+ blt _021DA3EC
+ mov r0, #0x12
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #0
+ ldr r3, _021DA414 ; =0x00007FFF
+ add r1, r0, #0
+ add r2, r0, #0
+ bl FUN_0200E1D0
+ add r0, r4, #0
+ bl MOD63_021DA504
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021DA3EC
+_021DA3DA:
+ bl MOD63_021DA504
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021DA3EC
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_021DA3EC:
+ add r0, r4, #0
+ bl MOD63_021DA5A0
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_021DA3F8: .word 0x000008E3
+_021DA3FC: .word 0x0000097E
+_021DA400: .word 0x000009D3
+_021DA404: .word 0x000009F1
+_021DA408: .word 0x00000A1E
+_021DA40C: .word 0x00000A64
+_021DA410: .word 0x00000A78
+_021DA414: .word 0x00007FFF
+ thumb_func_end MOD63_021DA30C
+
+ thumb_func_start MOD63_021DA418
+MOD63_021DA418: ; 0x021DA418
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021DA470 ; =0x0000028E
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ beq _021DA458
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #5
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ bl FUN_02016A18
+ ldr r0, _021DA470 ; =0x0000028E
+ mov r1, #0
+ strb r1, [r4, r0]
+_021DA458:
+ ldr r0, _021DA474 ; =0x0000028F
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _021DA46E
+ add r0, #0xd
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _021DA474 ; =0x0000028F
+ mov r1, #0
+ strb r1, [r4, r0]
+_021DA46E:
+ pop {r4, pc}
+ .align 2, 0
+_021DA470: .word 0x0000028E
+_021DA474: .word 0x0000028F
+ thumb_func_end MOD63_021DA418
+
+ thumb_func_start MOD63_021DA478
+MOD63_021DA478: ; 0x021DA478
+ push {r4, r5, lr}
+ sub sp, #0x2c
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FX_Inv
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ bl FX_Inv
+ mov r1, #0
+ str r5, [sp, #0x1c]
+ str r1, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r0, [sp, #0x28]
+ ldr r0, [r4, #8]
+ bl FX_Inv
+ add r5, r0, #0
+ ldr r0, [r4, #8]
+ bl FX_Inv
+ mov r1, #0
+ str r5, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x18]
+ bl OS_WaitVBlankIntr
+ mov r0, #1
+ ldr r1, [r4, #4]
+ lsl r0, r0, #0xa
+ add r1, r1, r0
+ mov r0, #3
+ lsl r0, r0, #0xc
+ cmp r1, r0
+ bgt _021DA4FE
+ str r1, [r4, #4]
+ add r0, sp, #0x1c
+ str r0, [sp]
+ mov r0, #0x80
+ str r0, [sp, #4]
+ mov r0, #0x5a
+ str r0, [sp, #8]
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ mov r2, #4
+ mov r3, #1
+ bl FUN_02017B60
+ mov r0, #1
+ ldr r1, [r4, #8]
+ lsl r0, r0, #0xa
+ add r0, r1, r0
+ str r0, [r4, #8]
+ add r0, sp, #0xc
+ str r0, [sp]
+ mov r0, #0xc0
+ str r0, [sp, #4]
+ mov r0, #0x5a
+ str r0, [sp, #8]
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ mov r2, #4
+ mov r3, #1
+ bl FUN_02017B60
+_021DA4FE:
+ add sp, #0x2c
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DA478
+
+ thumb_func_start MOD63_021DA504
+MOD63_021DA504: ; 0x021DA504
+ push {r4, r5, lr}
+ sub sp, #0x2c
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FX_Inv
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ bl FX_Inv
+ mov r1, #0
+ str r5, [sp, #0x1c]
+ str r1, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r0, [sp, #0x28]
+ ldr r0, [r4, #8]
+ bl FX_Inv
+ add r5, r0, #0
+ ldr r0, [r4, #8]
+ bl FX_Inv
+ mov r1, #0
+ str r5, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x18]
+ bl OS_WaitVBlankIntr
+ mov r0, #2
+ ldr r1, [r4, #4]
+ lsl r0, r0, #0xa
+ add r0, r1, r0
+ str r0, [r4, #4]
+ add r0, sp, #0x1c
+ str r0, [sp]
+ mov r0, #0x80
+ str r0, [sp, #4]
+ mov r0, #0x5a
+ str r0, [sp, #8]
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ mov r2, #4
+ mov r3, #1
+ bl FUN_02017B60
+ mov r0, #2
+ ldr r1, [r4, #8]
+ lsl r0, r0, #0xa
+ add r0, r1, r0
+ str r0, [r4, #8]
+ add r0, sp, #0xc
+ str r0, [sp]
+ mov r0, #0xc0
+ str r0, [sp, #4]
+ mov r0, #0x5a
+ str r0, [sp, #8]
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ mov r2, #4
+ mov r3, #1
+ bl FUN_02017B60
+ add sp, #0x2c
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DA504
+
+ thumb_func_start MOD63_021DA588
+MOD63_021DA588: ; 0x021DA588
+ mov r1, #1
+ strb r1, [r0]
+ mov r2, #6
+ strb r2, [r0, #3]
+ mov r2, #0
+ strb r2, [r0, #1]
+ ldr r3, _021DA59C ; =0x0201E6E5
+ add r0, r1, #0
+ bx r3
+ nop
+_021DA59C: .word 0x0201E6E5
+ thumb_func_end MOD63_021DA588
+
+ thumb_func_start MOD63_021DA5A0
+MOD63_021DA5A0: ; 0x021DA5A0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ ldrb r0, [r5, #0x18]
+ add r4, r5, #0
+ add r4, #0x18
+ cmp r0, #0
+ beq _021DA630
+ ldrb r3, [r4, #1]
+ ldr r0, _021DA634 ; =0x021DBF40
+ ldrb r1, [r4, #3]
+ ldrb r0, [r0, r3]
+ cmp r1, r0
+ blo _021DA614
+ mov r1, #0
+ str r1, [sp]
+ ldr r6, _021DA638 ; =0x021DBF48
+ ldr r0, [r5, #0x14]
+ ldrb r3, [r6, r3]
+ mov r2, #1
+ lsl r3, r3, #0x1c
+ lsr r3, r3, #0x18
+ bl MOD63_021D9EA8
+ mov r0, #0x20
+ str r0, [sp]
+ ldrb r6, [r4, #1]
+ ldr r3, _021DA63C ; =0x021DBF44
+ ldr r0, [r5, #0x14]
+ ldrb r3, [r3, r6]
+ mov r1, #0
+ mov r2, #1
+ lsl r3, r3, #0x1c
+ lsr r3, r3, #0x18
+ bl MOD63_021D9EA8
+ mov r0, #0x20
+ str r0, [sp]
+ ldr r0, [r5, #0x14]
+ mov r1, #1
+ ldrb r5, [r4, #1]
+ ldr r3, _021DA63C ; =0x021DBF44
+ add r2, r1, #0
+ ldrb r3, [r3, r5]
+ lsl r3, r3, #0x1c
+ lsr r3, r3, #0x18
+ bl MOD63_021D9EA8
+ mov r1, #0
+ strb r1, [r4, #3]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ ldrb r0, [r4, #1]
+ cmp r0, #4
+ blo _021DA618
+ strb r1, [r4]
+ b _021DA618
+_021DA614:
+ add r0, r1, #1
+ strb r0, [r4, #3]
+_021DA618:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ bne _021DA630
+ ldr r0, _021DA634 ; =0x021DBF40
+ ldrb r1, [r4, #3]
+ ldrb r0, [r0]
+ cmp r1, r0
+ blo _021DA630
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E6E4
+_021DA630:
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021DA634: .word 0x021DBF40
+_021DA638: .word 0x021DBF48
+_021DA63C: .word 0x021DBF44
+ thumb_func_end MOD63_021DA5A0
+
+ thumb_func_start MOD63_021DA640
+MOD63_021DA640: ; 0x021DA640
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _021DA66C ; =0x021DBE4C
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_0201D040
+ mov r0, #5
+ mov r1, #0x4c
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021DA66C: .word 0x021DBE4C
+ thumb_func_end MOD63_021DA640
+
+ thumb_func_start MOD63_021DA670
+MOD63_021DA670: ; 0x021DA670
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x2c
+ add r6, r0, #0
+ mov r0, #0
+ str r6, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r2, #0x4b
+ add r5, r1, #0
+ lsl r2, r2, #2
+ ldr r1, [r5, r2]
+ add r4, r3, #0
+ str r1, [sp, #0x14]
+ add r1, r2, #4
+ ldr r1, [r5, r1]
+ add r3, r6, #0
+ str r1, [sp, #0x18]
+ add r1, r2, #0
+ add r1, #8
+ ldr r1, [r5, r1]
+ add r2, #0xc
+ str r1, [sp, #0x1c]
+ ldr r1, [r5, r2]
+ add r2, r6, #0
+ str r1, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x40]
+ add r1, r6, #0
+ bl FUN_02008AA4
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r4]
+ ldr r0, [sp, #0x40]
+ str r0, [r4, #4]
+ str r1, [r4, #8]
+ str r1, [r4, #0xc]
+ mov r0, #1
+ str r1, [r4, #0x10]
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x14]
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x1c]
+ strh r1, [r4, #0x20]
+ mov r0, #1
+ str r0, [r4, #0x24]
+ str r0, [r4, #0x28]
+ mov r0, #0x4c
+ str r0, [r4, #0x2c]
+ add sp, #0x2c
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD63_021DA670
+
+ thumb_func_start MOD63_021DA6E0
+MOD63_021DA6E0: ; 0x021DA6E0
+ mov r0, #0x1b
+ lsl r0, r0, #4
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD63_021DA6E0
+
+ thumb_func_start MOD63_021DA6E8
+MOD63_021DA6E8: ; 0x021DA6E8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ add r5, r0, #0
+ ldr r1, [r2]
+ ldr r0, _021DA9FC ; =0xFFCFFFEF
+ and r1, r0
+ mov r0, #0x10
+ orr r0, r1
+ str r0, [r2]
+ bl MOD63_021DA640
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x80
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ mov r2, #0x4c
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ mov r0, #0x19
+ add r1, r5, #4
+ mov r2, #0x4c
+ bl FUN_02008C9C
+ mov r2, #1
+ str r0, [r5]
+ add r0, r5, #4
+ mov r1, #0
+ lsl r2, r2, #0x14
+ bl FUN_02008D24
+ ldr r4, _021DAA00 ; =0x021DBE28
+ mov r7, #0
+ add r6, r5, #0
+_021DA73C:
+ ldrb r0, [r4]
+ add r1, r7, #0
+ mov r2, #0x4c
+ bl FUN_02008DEC
+ mov r1, #0x4b
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ add r7, r7, #1
+ add r4, r4, #1
+ add r6, r6, #4
+ cmp r7, #4
+ blt _021DA73C
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe0
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x26
+ bl FUN_02008F34
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe0
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x27
+ mov r3, #0
+ bl FUN_02008F34
+ mov r1, #0x53
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe0
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x28
+ mov r3, #0
+ bl FUN_02008F34
+ mov r1, #0x57
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe0
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x29
+ mov r3, #0
+ bl FUN_02008F34
+ mov r1, #0x5b
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe0
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x2a
+ mov r3, #0
+ bl FUN_02008F34
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ add r0, #0xe4
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x21
+ bl FUN_02008FEC
+ mov r1, #5
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ add r0, #0xe4
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x22
+ mov r3, #0
+ bl FUN_02008FEC
+ mov r1, #0x15
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ add r0, #0xe4
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x23
+ mov r3, #0
+ bl FUN_02008FEC
+ mov r1, #0x16
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ add r0, #0xe4
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x24
+ mov r3, #0
+ bl FUN_02008FEC
+ mov r1, #0x17
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ add r0, #0xe4
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x25
+ mov r3, #0
+ bl FUN_02008FEC
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x2b
+ bl FUN_020090AC
+ mov r1, #0x51
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x2c
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x55
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #2
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x2d
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x59
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x2e
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x5d
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x2f
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x61
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xec
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x30
+ bl FUN_020090AC
+ mov r1, #0x52
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xec
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x31
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x56
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xec
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x32
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x5a
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #3
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xec
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x33
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xec
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x34
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x62
+ lsl r1, r1, #2
+ add r7, r1, #0
+ add r6, r1, #0
+ str r0, [r5, r1]
+ mov r4, #0
+ sub r7, #0x4c
+ sub r6, #0x48
+_021DA9DC:
+ ldr r0, [r5, r7]
+ bl FUN_02009A50
+ ldr r0, [r5, r6]
+ bl FUN_02009CF0
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #5
+ blt _021DA9DC
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DA9FC: .word 0xFFCFFFEF
+_021DAA00: .word 0x021DBE28
+ thumb_func_end MOD63_021DA6E8
+
+ thumb_func_start MOD63_021DAA04
+MOD63_021DAA04: ; 0x021DAA04
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #5
+ add r5, r0, #0
+ mov r4, #0
+ lsl r7, r7, #6
+_021DAA0E:
+ lsl r0, r4, #4
+ add r6, r5, r0
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009C0C
+ ldr r0, [r6, r7]
+ bl FUN_02009E04
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #5
+ blo _021DAA0E
+ mov r6, #0x4b
+ mov r4, #0
+ lsl r6, r6, #2
+_021DAA32:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ bl FUN_02008E2C
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021DAA32
+ ldr r0, [r5]
+ bl FUN_0201FD58
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DAA04
+
+ thumb_func_start MOD63_021DAA5C
+MOD63_021DAA5C: ; 0x021DAA5C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xa4
+ ldr r3, _021DABC0 ; =0x021DBE5C
+ add r5, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x38
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r3, _021DABC4 ; =0x021DBE74
+ add r2, sp, #0x20
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r3, _021DABC8 ; =0x021DBE8C
+ add r2, sp, #8
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ add r0, sp, #0x80
+ str r0, [sp]
+ mov r0, #0
+ add r1, r5, #0
+ mov r2, #1
+ add r3, sp, #0x50
+ bl MOD63_021DA670
+ mov r0, #5
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x58]
+ mov r0, #7
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x5c]
+ add r0, sp, #0x50
+ bl FUN_0201FE94
+ mov r1, #0x63
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ mov r1, #0
+ bl FUN_020200BC
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r0, sp, #0x80
+ str r0, [sp]
+ mov r0, #1
+ add r1, r5, #0
+ add r2, r0, #0
+ add r3, sp, #0x50
+ bl MOD63_021DA670
+ mov r0, #5
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x58]
+ mov r0, #7
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x5c]
+ add r0, sp, #0x50
+ bl FUN_0201FE94
+ mov r1, #0x19
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ mov r1, #0
+ bl FUN_020200BC
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD63_021DAC80
+ add r0, sp, #0x80
+ str r0, [sp]
+ mov r0, #2
+ add r1, r5, #0
+ mov r2, #1
+ add r3, sp, #0x50
+ bl MOD63_021DA670
+ mov r0, #5
+ lsl r0, r0, #0x12
+ str r0, [sp, #0x58]
+ mov r0, #7
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x5c]
+ add r0, sp, #0x50
+ bl FUN_0201FE94
+ mov r1, #0x65
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x65
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0
+ str r0, [sp, #4]
+ add r7, sp, #0x20
+ add r6, sp, #8
+ add r4, sp, #0x38
+_021DAB58:
+ add r0, sp, #0x80
+ str r0, [sp]
+ mov r0, #3
+ add r1, r5, #0
+ mov r2, #0
+ add r3, sp, #0x50
+ bl MOD63_021DA670
+ ldr r0, [r7]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x58]
+ ldr r0, [r6]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x5c]
+ add r0, sp, #0x50
+ bl FUN_0201FE94
+ ldr r1, [r4]
+ lsl r1, r1, #2
+ add r2, r5, r1
+ mov r1, #0x63
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ lsl r0, r0, #2
+ add r1, r5, r0
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, [r4]
+ lsl r0, r0, #2
+ add r1, r5, r0
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [sp, #4]
+ add r7, r7, #4
+ add r0, r0, #1
+ add r6, r6, #4
+ add r4, r4, #4
+ str r0, [sp, #4]
+ cmp r0, #6
+ blt _021DAB58
+ add sp, #0xa4
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DABC0: .word 0x021DBE5C
+_021DABC4: .word 0x021DBE74
+_021DABC8: .word 0x021DBE8C
+ thumb_func_end MOD63_021DAA5C
+
+ thumb_func_start MOD63_021DABCC
+MOD63_021DABCC: ; 0x021DABCC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x58
+ add r2, r0, #0
+ add r0, sp, #0x34
+ add r6, r1, #0
+ str r0, [sp]
+ add r1, r2, #0
+ mov r0, #4
+ mov r2, #0
+ add r3, sp, #4
+ bl MOD63_021DA670
+ mov r0, #2
+ str r0, [sp, #0x2c]
+ mov r5, #0
+ add r7, sp, #4
+_021DABEC:
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD63_021DAF80
+ add r4, r0, #0
+ add r0, r7, #0
+ bl FUN_0201FE94
+ str r0, [r4]
+ mov r1, #0
+ bl FUN_020200BC
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_020200A0
+ add r5, r5, #1
+ cmp r5, #0x10
+ blt _021DABEC
+ add sp, #0x58
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DABCC
+
+ thumb_func_start MOD63_021DAC18
+MOD63_021DAC18: ; 0x021DAC18
+ ldr r3, _021DAC20 ; =0x0201FDED
+ ldr r0, [r0]
+ bx r3
+ nop
+_021DAC20: .word 0x0201FDED
+ thumb_func_end MOD63_021DAC18
+
+ thumb_func_start MOD63_021DAC24
+MOD63_021DAC24: ; 0x021DAC24
+ lsl r1, r1, #2
+ add r1, r0, r1
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r3, _021DAC34 ; =0x020200A1
+ add r1, r2, #0
+ bx r3
+ .align 2, 0
+_021DAC34: .word 0x020200A1
+ thumb_func_end MOD63_021DAC24
+
+ thumb_func_start MOD63_021DAC38
+MOD63_021DAC38: ; 0x021DAC38
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r2, #0
+ mov r2, #0x63
+ lsl r2, r2, #2
+ add r4, r0, r2
+ lsl r5, r1, #2
+ ldr r0, [r4, r5]
+ add r7, r3, #0
+ bl FUN_0202011C
+ add r3, r0, #0
+ add r2, sp, #0
+ ldmia r3!, {r0, r1}
+ mov ip, r2
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r1, ip
+ str r0, [r2]
+ str r6, [sp]
+ str r7, [sp, #4]
+ ldr r0, [r4, r5]
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD63_021DAC38
+
+ thumb_func_start MOD63_021DAC6C
+MOD63_021DAC6C: ; 0x021DAC6C
+ push {r3, lr}
+ mov r2, #0xb
+ mov r3, #7
+ mov r1, #1
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ bl MOD63_021DAC38
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DAC6C
+
+ thumb_func_start MOD63_021DAC80
+MOD63_021DAC80: ; 0x021DAC80
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ bl FUN_02020130
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DAC80
+
+ thumb_func_start MOD63_021DACA0
+MOD63_021DACA0: ; 0x021DACA0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ bl FUN_020200BC
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ bl FUN_020200BC
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DACA0
+
+ thumb_func_start MOD63_021DACC0
+MOD63_021DACC0: ; 0x021DACC0
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #0x65
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0202011C
+ add r5, r0, #0
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ mov r0, #0xe
+ ldr r1, [sp]
+ lsl r0, r0, #0xc
+ sub r1, r1, r0
+ mov r0, #0xb
+ lsl r0, r0, #0x10
+ str r1, [sp]
+ cmp r1, r0
+ bgt _021DAD04
+ str r0, [sp]
+ mov r0, #0x65
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, r2, #0
+ bl FUN_02020044
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_021DAD04:
+ mov r0, #0x65
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, r2, #0
+ bl FUN_02020044
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DACC0
+
+ thumb_func_start MOD63_021DAD18
+MOD63_021DAD18: ; 0x021DAD18
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ lsl r4, r1, #2
+ mov r0, #0x63
+ add r1, r5, r4
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r6, r2, #0
+ bl FUN_02020354
+ mov r1, #1
+ bl FUN_020B19C4
+ add r7, r0, #0
+ cmp r6, #0
+ bne _021DAD44
+ ldr r0, _021DAD64 ; =0x021DBFA0
+ add r1, r7, #0
+ mov r2, #0x20
+ bl GX_LoadOBJPltt
+ pop {r3, r4, r5, r6, r7, pc}
+_021DAD44:
+ ldr r0, _021DAD68 ; =0x021DBF64
+ ldr r0, [r0, r4]
+ lsl r0, r0, #4
+ add r1, r5, r0
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ bl FUN_0200955C
+ ldr r0, [r0, #0xc]
+ add r1, r7, #0
+ mov r2, #0x20
+ bl GX_LoadOBJPltt
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DAD64: .word 0x021DBFA0
+_021DAD68: .word 0x021DBF64
+ thumb_func_end MOD63_021DAD18
+
+ thumb_func_start MOD63_021DAD6C
+MOD63_021DAD6C: ; 0x021DAD6C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ ldr r3, _021DAE44 ; =0x021DBE40
+ add r2, sp, #0x18
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldmia r3!, {r0, r1}
+ str r2, [sp, #8]
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ ldr r3, _021DAE48 ; =0x021DBE34
+ str r0, [r2]
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0xc
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ ldr r1, _021DAE4C ; =0x000005C8
+ str r0, [r2]
+ ldr r0, [sp, #4]
+ cmp r0, r1
+ blt _021DADE6
+ mov r4, #0
+_021DAD98:
+ ldr r0, [sp, #8]
+ lsl r7, r4, #2
+ ldr r0, [r0, r7]
+ lsl r1, r0, #2
+ ldr r0, [sp]
+ add r5, r0, r1
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0x24
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r3]
+ ldr r0, _021DAE50 ; =0x021DBF4C
+ ldr r1, [sp, #0x24]
+ ldr r0, [r0, r7]
+ sub r0, r1, r0
+ str r0, [sp, #0x24]
+ mov r0, #1
+ ldr r1, [sp, #0x28]
+ lsl r0, r0, #0xe
+ sub r0, r1, r0
+ str r0, [sp, #0x28]
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r2, #0
+ bl FUN_02020044
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #3
+ blo _021DAD98
+_021DADE6:
+ ldr r1, _021DAE54 ; =0x000005E6
+ ldr r0, [sp, #4]
+ cmp r0, r1
+ blt _021DAE3E
+ mov r5, #0
+_021DADF0:
+ lsl r7, r5, #2
+ add r0, sp, #0xc
+ ldr r0, [r0, r7]
+ lsl r1, r0, #2
+ ldr r0, [sp]
+ add r4, r0, r1
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0x24
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r3]
+ ldr r0, _021DAE58 ; =0x021DBF58
+ ldr r1, [sp, #0x24]
+ ldr r0, [r0, r7]
+ sub r0, r1, r0
+ str r0, [sp, #0x24]
+ mov r0, #1
+ ldr r1, [sp, #0x28]
+ lsl r0, r0, #0xe
+ sub r0, r1, r0
+ str r0, [sp, #0x28]
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, r2, #0
+ bl FUN_02020044
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #3
+ blo _021DADF0
+_021DAE3E:
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DAE44: .word 0x021DBE40
+_021DAE48: .word 0x021DBE34
+_021DAE4C: .word 0x000005C8
+_021DAE50: .word 0x021DBF4C
+_021DAE54: .word 0x000005E6
+_021DAE58: .word 0x021DBF58
+ thumb_func_end MOD63_021DAD6C
+
+ thumb_func_start MOD63_021DAE5C
+MOD63_021DAE5C: ; 0x021DAE5C
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _021DAE88 ; =0x021DBEAC
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_0201D040
+ mov r0, #1
+ mov r1, #0x4c
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021DAE88: .word 0x021DBEAC
+ thumb_func_end MOD63_021DAE5C
+
+ thumb_func_start MOD63_021DAE8C
+MOD63_021DAE8C: ; 0x021DAE8C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x2c
+ add r4, r1, #0
+ mov r1, #0
+ add r5, r0, #0
+ str r1, [sp]
+ sub r0, r1, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ add r6, r2, #0
+ str r1, [sp, #0xc]
+ mov r2, #0x4b
+ str r1, [sp, #0x10]
+ lsl r2, r2, #2
+ ldr r0, [r5, r2]
+ add r3, r1, #0
+ str r0, [sp, #0x14]
+ add r0, r2, #4
+ ldr r0, [r5, r0]
+ str r0, [sp, #0x18]
+ add r0, r2, #0
+ add r0, #8
+ ldr r0, [r5, r0]
+ add r2, #0xc
+ str r0, [sp, #0x1c]
+ ldr r0, [r5, r2]
+ add r2, r1, #0
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ add r0, r6, #0
+ bl FUN_02008AA4
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r4]
+ str r6, [r4, #4]
+ str r1, [r4, #8]
+ str r1, [r4, #0xc]
+ mov r0, #1
+ str r1, [r4, #0x10]
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x14]
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x1c]
+ strh r1, [r4, #0x20]
+ mov r0, #1
+ str r0, [r4, #0x24]
+ str r0, [r4, #0x28]
+ mov r0, #0x4c
+ str r0, [r4, #0x2c]
+ add sp, #0x2c
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DAE8C
+
+ thumb_func_start MOD63_021DAEF8
+MOD63_021DAEF8: ; 0x021DAEF8
+ push {r4, lr}
+ mov r1, #0x7d
+ mov r0, #0x4c
+ lsl r1, r1, #2
+ bl FUN_02016998
+ mov r2, #0x7d
+ add r4, r0, #0
+ mov r1, #0
+ lsl r2, r2, #2
+ bl Call_FillMemWithValue
+ add r0, r4, #0
+ bl MOD63_021DAFEC
+ add r0, r4, #0
+ bl MOD63_021DB150
+ add r0, r4, #0
+ pop {r4, pc}
+ thumb_func_end MOD63_021DAEF8
+
+ thumb_func_start MOD63_021DAF20
+MOD63_021DAF20: ; 0x021DAF20
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x4c
+ mov r1, #8
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r0, #0xc
+ add r6, r5, #0
+ mul r6, r0
+ mov r0, #0x4c
+ add r1, r6, #0
+ bl FUN_02016998
+ mov r1, #0
+ add r2, r6, #0
+ str r0, [r4, #4]
+ bl Call_FillMemWithValue
+ str r5, [r4]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD63_021DAF20
+
+ thumb_func_start MOD63_021DAF4C
+MOD63_021DAF4C: ; 0x021DAF4C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ mov r6, #0
+ cmp r0, #0
+ ble _021DAF72
+ add r4, r6, #0
+_021DAF5A:
+ ldr r0, [r5, #4]
+ add r0, r0, r4
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _021DAF68
+ bl FUN_0200CAB4
+_021DAF68:
+ ldr r0, [r5]
+ add r6, r6, #1
+ add r4, #0xc
+ cmp r6, r0
+ blt _021DAF5A
+_021DAF72:
+ ldr r0, [r5, #4]
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_02016A18
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD63_021DAF4C
+
+ thumb_func_start MOD63_021DAF80
+MOD63_021DAF80: ; 0x021DAF80
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ cmp r4, r0
+ blt _021DAF90
+ bl ErrorHandling
+_021DAF90:
+ mov r0, #0xc
+ ldr r1, [r5, #4]
+ mul r0, r4
+ add r0, r1, r0
+ add r0, r0, #4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD63_021DAF80
+
+ thumb_func_start MOD63_021DAF9C
+MOD63_021DAF9C: ; 0x021DAF9C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ bl MOD63_021DB108
+ mov r6, #0x73
+ mov r4, #0
+ lsl r6, r6, #2
+_021DAFAA:
+ lsl r0, r4, #4
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ cmp r0, #0
+ beq _021DAFB8
+ bl FUN_0200CAB4
+_021DAFB8:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #3
+ blo _021DAFAA
+ mov r6, #0x55
+ mov r4, #0
+ mov r7, #0xc
+ lsl r6, r6, #2
+_021DAFCA:
+ add r0, r4, #0
+ mul r0, r7
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ cmp r0, #0
+ beq _021DAFDA
+ bl FUN_0200CAB4
+_021DAFDA:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0xa
+ blo _021DAFCA
+ add r0, r5, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD63_021DAF9C
+
+ thumb_func_start MOD63_021DAFEC
+MOD63_021DAFEC: ; 0x021DAFEC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ add r7, r0, #0
+ add r3, r1, #0
+ ldr r0, _021DB0FC ; =0xFFCFFFEF
+ mov r1, #0x10
+ and r3, r0
+ orr r3, r1
+ str r3, [r2]
+ ldr r3, _021DB100 ; =0x04001000
+ ldr r2, [r3]
+ and r0, r2
+ orr r0, r1
+ str r0, [r3]
+ bl MOD63_021DAE5C
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x80
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ mov r2, #0x4c
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ mov r0, #0xa
+ add r1, r7, #4
+ mov r2, #0x4c
+ bl FUN_02008C9C
+ ldr r4, _021DB104 ; =0x021DBEBC
+ str r0, [r7]
+ mov r6, #0
+ add r5, r7, #0
+_021DB040:
+ ldrb r0, [r4]
+ add r1, r6, #0
+ mov r2, #0x4c
+ bl FUN_02008DEC
+ mov r1, #0x4b
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r6, r6, #1
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r6, #4
+ blt _021DB040
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe0
+ ldr r0, [r7, r0]
+ mov r1, #0x80
+ mov r2, #4
+ bl FUN_02008F34
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ str r0, [r7, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #3
+ str r2, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ add r0, #0xe4
+ ldr r0, [r7, r0]
+ mov r1, #0x80
+ bl FUN_02008FEC
+ mov r1, #5
+ lsl r1, r1, #6
+ str r0, [r7, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r7, r0]
+ mov r1, #0x80
+ mov r2, #5
+ bl FUN_020090AC
+ mov r1, #0x51
+ lsl r1, r1, #2
+ str r0, [r7, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xec
+ ldr r0, [r7, r0]
+ mov r1, #0x80
+ mov r2, #6
+ bl FUN_020090AC
+ mov r1, #0x52
+ lsl r1, r1, #2
+ str r0, [r7, r1]
+ sub r1, #0xc
+ ldr r0, [r7, r1]
+ bl FUN_02009A50
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r7, r0]
+ bl FUN_02009CF0
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DB0FC: .word 0xFFCFFFEF
+_021DB100: .word 0x04001000
+_021DB104: .word 0x021DBEBC
+ thumb_func_end MOD63_021DAFEC
+
+ thumb_func_start MOD63_021DB108
+MOD63_021DB108: ; 0x021DB108
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009C0C
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ bl FUN_02009E04
+ mov r6, #0x4b
+ mov r4, #0
+ lsl r6, r6, #2
+_021DB126:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ bl FUN_02008E2C
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021DB126
+ ldr r0, [r5]
+ bl FUN_0201FD58
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DB108
+
+ thumb_func_start MOD63_021DB150
+MOD63_021DB150: ; 0x021DB150
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x54
+ add r7, r0, #0
+ mov r6, #0
+ add r4, r6, #0
+ add r5, r7, #0
+_021DB15C:
+ add r0, r7, #0
+ add r1, sp, #0
+ add r2, sp, #0x30
+ bl MOD63_021DAE8C
+ add r0, sp, #0
+ str r4, [sp, #8]
+ str r4, [sp, #0xc]
+ bl FUN_0201FE94
+ mov r1, #0x15
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200BC
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #2
+ lsl r0, r0, #0xc
+ add r6, r6, #1
+ add r4, r4, r0
+ add r5, #0xc
+ cmp r6, #0xa
+ blt _021DB15C
+ add sp, #0x54
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DB150
+
+ thumb_func_start MOD63_021DB1A0
+MOD63_021DB1A0: ; 0x021DB1A0
+ ldr r3, _021DB1A8 ; =0x0201FDED
+ ldr r0, [r0]
+ bx r3
+ nop
+_021DB1A8: .word 0x0201FDED
+ thumb_func_end MOD63_021DB1A0
+
+ thumb_func_start MOD63_021DB1AC
+MOD63_021DB1AC: ; 0x021DB1AC
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ cmp r1, #0xb4
+ bne _021DB1CE
+ mov r2, #3
+ str r2, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ mov r0, #0x71
+ lsl r0, r0, #2
+ add r0, r4, r0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD63_021DB1F8
+ b _021DB1E8
+_021DB1CE:
+ ldr r0, _021DB1F4 ; =0x0000011D
+ cmp r1, r0
+ bne _021DB1E8
+ mov r2, #3
+ add r0, #0xb7
+ str r2, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ add r0, r4, r0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD63_021DB1F8
+_021DB1E8:
+ add r0, r4, #0
+ bl MOD63_021DB1A0
+ add sp, #8
+ pop {r4, pc}
+ nop
+_021DB1F4: .word 0x0000011D
+ thumb_func_end MOD63_021DB1AC
+
+ thumb_func_start MOD63_021DB1F8
+MOD63_021DB1F8: ; 0x021DB1F8
+ push {r4, lr}
+ add r4, r0, #0
+ strb r2, [r4]
+ ldr r2, _021DB228 ; =0xFFFFFFF8
+ strb r3, [r4, #1]
+ add r2, sp
+ ldrb r0, [r2, #0x10]
+ strb r0, [r4, #2]
+ mov r0, #0
+ strb r0, [r4, #4]
+ strb r0, [r4, #3]
+ mov r0, #0x53
+ lsl r0, r0, #2
+ add r0, r1, r0
+ str r0, [r4, #0xc]
+ ldrb r0, [r2, #0x14]
+ add r1, r4, #0
+ mov r2, #0xa
+ strb r0, [r4, #5]
+ ldr r0, _021DB22C ; =MOD63_021DB2F8
+ bl FUN_0200CA44
+ str r0, [r4, #8]
+ pop {r4, pc}
+ .align 2, 0
+_021DB228: .word 0xFFFFFFF8
+_021DB22C: .word MOD63_021DB2F8
+ thumb_func_end MOD63_021DB1F8
+
+ thumb_func_start MOD63_021DB230
+MOD63_021DB230: ; 0x021DB230
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r1, #0
+ str r0, [sp]
+ cmp r2, #0
+ bne _021DB240
+ mov r7, #0x40
+ b _021DB242
+_021DB240:
+ mov r7, #0x20
+_021DB242:
+ mov r5, #0
+ cmp r6, #0
+ bls _021DB2BE
+_021DB248:
+ ldr r0, [sp]
+ mov r1, #0xa
+ bl MOD63_021DB2C8
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_0202011C
+ add r3, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #4
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ bl FUN_0201B9EC
+ lsr r1, r0, #0x1f
+ lsl r2, r0, #0x19
+ sub r2, r2, r1
+ mov r0, #0x19
+ ror r2, r0
+ add r0, r1, r2
+ add r0, #0x40
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ bl FUN_0201B9EC
+ lsr r1, r0, #0x1f
+ lsl r2, r0, #0x1a
+ sub r2, r2, r1
+ mov r0, #0x1a
+ ror r2, r0
+ add r0, r1, r2
+ add r0, r7, r0
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ add r1, sp, #4
+ bl FUN_02020044
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, _021DB2C4 ; =MOD63_021DB334
+ add r1, r4, #0
+ mov r2, #0x14
+ bl FUN_0200CA44
+ str r0, [r4, #8]
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ blo _021DB248
+_021DB2BE:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DB2C4: .word MOD63_021DB334
+ thumb_func_end MOD63_021DB230
+
+ thumb_func_start MOD63_021DB2C8
+MOD63_021DB2C8: ; 0x021DB2C8
+ push {r4, lr}
+ mov r4, #0
+ mov r2, #0xc
+_021DB2CE:
+ add r1, r4, #0
+ mul r1, r2
+ add r3, r0, r1
+ ldrb r1, [r0, r1]
+ cmp r1, #0
+ bne _021DB2E6
+ mov r0, #1
+ strb r0, [r3]
+ mov r0, #0
+ strb r0, [r3, #1]
+ add r0, r3, #0
+ pop {r4, pc}
+_021DB2E6:
+ add r1, r4, #1
+ lsl r1, r1, #0x18
+ lsr r4, r1, #0x18
+ cmp r4, #0xa
+ blo _021DB2CE
+ bl ErrorHandling
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD63_021DB2C8
+
+ thumb_func_start MOD63_021DB2F8
+MOD63_021DB2F8: ; 0x021DB2F8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4, #4]
+ add r5, r0, #0
+ add r0, r1, #1
+ strb r0, [r4, #4]
+ ldrb r0, [r4, #1]
+ cmp r1, r0
+ blo _021DB330
+ ldrb r1, [r4]
+ ldrb r2, [r4, #5]
+ ldr r0, [r4, #0xc]
+ bl MOD63_021DB230
+ mov r0, #0
+ strb r0, [r4, #4]
+ ldrb r0, [r4, #3]
+ add r0, r0, #1
+ strb r0, [r4, #3]
+ ldrb r1, [r4, #3]
+ ldrb r0, [r4, #2]
+ cmp r1, r0
+ blo _021DB330
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #8]
+_021DB330:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DB2F8
+
+ thumb_func_start MOD63_021DB334
+MOD63_021DB334: ; 0x021DB334
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r3]
+ mov r0, #3
+ ldr r1, [sp, #4]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #4]
+ ldr r0, [r4, #4]
+ add r1, r2, #0
+ bl FUN_02020044
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ ldrb r0, [r4, #1]
+ cmp r0, #0x50
+ blo _021DB388
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ mov r1, #0
+ str r1, [r4, #8]
+ strb r1, [r4]
+ ldr r0, [r4, #4]
+ bl FUN_020200BC
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl FUN_020200A0
+_021DB388:
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD63_021DB334
+
+ thumb_func_start MOD63_021DB38C
+MOD63_021DB38C: ; 0x021DB38C
+ ldr r3, _021DB394 ; =MOD63_021DB398
+ mov r1, #2
+ bx r3
+ nop
+_021DB394: .word MOD63_021DB398
+ thumb_func_end MOD63_021DB38C
+
+ thumb_func_start MOD63_021DB398
+MOD63_021DB398: ; 0x021DB398
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ ldr r0, [r6, #4]
+ add r7, r1, #0
+ str r0, [sp]
+ ldr r5, _021DB418 ; =0x00000000
+ beq _021DB414
+_021DB3A8:
+ ldr r0, [sp]
+ ldr r1, [r6]
+ bl MOD63_021DB2C8
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_0202011C
+ add r3, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #4
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ bl FUN_0201B9EC
+ mov r1, #0xe0
+ bl _s32_div_f
+ add r1, #0xa
+ lsl r0, r1, #0xc
+ str r0, [sp, #4]
+ bl FUN_0201B9EC
+ mov r1, #0x38
+ bl _s32_div_f
+ ldr r0, _021DB41C ; =0x0000013A
+ add r0, r1, r0
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ add r1, sp, #4
+ bl FUN_02020044
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, _021DB420 ; =MOD63_021DB424
+ add r1, r4, #0
+ mov r2, #0x14
+ bl FUN_0200CA44
+ str r0, [r4, #8]
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r7
+ blo _021DB3A8
+_021DB414:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DB418: .word 0x00000000
+_021DB41C: .word 0x0000013A
+_021DB420: .word MOD63_021DB424
+ thumb_func_end MOD63_021DB398
+
+ thumb_func_start MOD63_021DB424
+MOD63_021DB424: ; 0x021DB424
+ push {r4, lr}
+ add r4, r1, #0
+ ldrb r1, [r4, #1]
+ add r1, r1, #1
+ strb r1, [r4, #1]
+ ldrb r1, [r4, #1]
+ cmp r1, #8
+ blo _021DB44C
+ bl FUN_0200CAB4
+ mov r1, #0
+ str r1, [r4, #8]
+ strb r1, [r4]
+ ldr r0, [r4, #4]
+ bl FUN_020200BC
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl FUN_020200A0
+_021DB44C:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DB424
+
+ thumb_func_start MOD63_021DB450
+MOD63_021DB450: ; 0x021DB450
+ push {r4, lr}
+ ldr r3, _021DB470 ; =0x021064B8
+ mov r2, #0
+ ldr r3, [r3]
+ blx r3
+ add r4, r0, #0
+ bl FUN_0201327C
+ cmp r4, #0
+ bne _021DB468
+ bl ErrorHandling
+_021DB468:
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0xd
+ pop {r4, pc}
+ nop
+_021DB470: .word 0x021064B8
+ thumb_func_end MOD63_021DB450
+
+ thumb_func_start MOD63_021DB474
+MOD63_021DB474: ; 0x021DB474
+ push {r4, lr}
+ ldr r3, _021DB494 ; =0x021064C0
+ mov r2, #1
+ ldr r3, [r3]
+ blx r3
+ add r4, r0, #0
+ bne _021DB486
+ bl ErrorHandling
+_021DB486:
+ add r0, r4, #0
+ bl FUN_020132BC
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0xd
+ pop {r4, pc}
+ nop
+_021DB494: .word 0x021064C0
+ thumb_func_end MOD63_021DB474
+
+ thumb_func_start MOD63_021DB498
+MOD63_021DB498: ; 0x021DB498
+ mov r0, #0x20
+ bx lr
+ thumb_func_end MOD63_021DB498
+
+ thumb_func_start MOD63_021DB49C
+MOD63_021DB49C: ; 0x021DB49C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ ldr r3, _021DB56C ; =0x021DBECC
+ add r5, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x10
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ mov r0, #0x4c
+ bl FUN_02006D98
+ ldr r7, _021DB570 ; =0x021DBEF0
+ str r0, [r5]
+ mov r4, #0
+_021DB4BA:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ lsl r6, r4, #2
+ add r1, sp, #0x10
+ ldr r1, [r1, r6]
+ add r0, sp, #0x1c
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ mov r2, #0
+ mov r3, #2
+ bl FUN_02068C00
+ ldr r0, _021DB574 ; =0x000003FF
+ lsl r2, r4, #3
+ str r0, [sp]
+ str r4, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ add r3, r7, r2
+ ldr r0, [r5]
+ ldr r2, [r7, r2]
+ ldr r3, [r3, #4]
+ add r1, sp, #0x1c
+ add r6, r5, r6
+ bl FUN_020073A0
+ mov r1, #6
+ mov r2, #1
+ str r0, [r6, #4]
+ bl FUN_02007558
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #3
+ blo _021DB4BA
+ ldr r0, [r5, #8]
+ mov r1, #0x23
+ mov r2, #1
+ bl FUN_02007558
+ mov r0, #1
+ str r0, [r5, #0x10]
+ bl FUN_02012CC8
+ mov r1, #0x12
+ mov r0, #0x4c
+ lsl r1, r1, #0xa
+ bl FUN_02016998
+ str r0, [r5, #0x14]
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x4c
+ str r0, [sp, #4]
+ mov r3, #0x12
+ ldr r0, _021DB578 ; =MOD63_021DB450
+ ldr r1, _021DB57C ; =MOD63_021DB474
+ ldr r2, [r5, #0x14]
+ lsl r3, r3, #0xa
+ bl FUN_02012CDC
+ str r0, [r5, #0x18]
+ bl FUN_0201343C
+ add r2, r0, #0
+ mov r0, #1
+ mov r1, #0xe1
+ lsl r0, r0, #0xc
+ lsl r1, r1, #0xe
+ bl FUN_0201EC94
+ mov r0, #0x3d
+ mov r1, #4
+ mov r2, #0x4c
+ bl FUN_0201318C
+ add r1, r0, #0
+ ldr r0, [r5, #0x18]
+ mov r2, #0xa
+ mov r3, #1
+ bl FUN_02013194
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DB56C: .word 0x021DBECC
+_021DB570: .word 0x021DBEF0
+_021DB574: .word 0x000003FF
+_021DB578: .word MOD63_021DB450
+_021DB57C: .word MOD63_021DB474
+ thumb_func_end MOD63_021DB49C
+
+ thumb_func_start MOD63_021DB580
+MOD63_021DB580: ; 0x021DB580
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ bl FUN_02012DE4
+ ldr r0, [r4, #0x14]
+ bl FUN_02016A18
+ ldr r0, [r4]
+ bl FUN_020072E8
+ pop {r4, pc}
+ thumb_func_end MOD63_021DB580
+
+ thumb_func_start MOD63_021DB598
+MOD63_021DB598: ; 0x021DB598
+ push {r3, lr}
+ cmp r0, #0
+ beq _021DB5A4
+ ldr r0, [r0]
+ bl FUN_020081C4
+_021DB5A4:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DB598
+
+ thumb_func_start MOD63_021DB5A8
+MOD63_021DB5A8: ; 0x021DB5A8
+ push {r4, lr}
+ add r4, r0, #0
+ beq _021DB5C8
+ bl FUN_020222AC
+ bl FUN_020B02C8
+ ldr r0, [r4]
+ bl FUN_02006ED4
+ bl MOD63_021DB934
+ mov r0, #1
+ mov r1, #0
+ bl FUN_020222B4
+_021DB5C8:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DB5A8
+
+ thumb_func_start MOD63_021DB5CC
+MOD63_021DB5CC: ; 0x021DB5CC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r7, r2, #0
+ ldrb r2, [r4, #0x1c]
+ add r5, r4, #0
+ add r6, r1, #0
+ add r5, #0x1c
+ cmp r2, #5
+ bls _021DB5E2
+ b _021DB6FC
+_021DB5E2:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021DB5EE: ; jump table
+ .short _021DB5FA - _021DB5EE - 2 ; case 0
+ .short _021DB63C - _021DB5EE - 2 ; case 1
+ .short _021DB658 - _021DB5EE - 2 ; case 2
+ .short _021DB690 - _021DB5EE - 2 ; case 3
+ .short _021DB6BE - _021DB5EE - 2 ; case 4
+ .short _021DB6E4 - _021DB5EE - 2 ; case 5
+_021DB5FA:
+ ldr r0, _021DB704 ; =0x0400004A
+ mov r1, #0x3f
+ ldrh r2, [r0]
+ add r7, r4, #4
+ bic r2, r1
+ mov r1, #0x11
+ orr r1, r2
+ mov r2, #0x20
+ orr r1, r2
+ strh r1, [r0]
+ lsl r0, r6, #2
+ str r0, [sp]
+ ldr r0, [r7, r0]
+ mov r1, #0xc
+ lsl r2, r2, #5
+ bl FUN_02007558
+ ldr r0, [sp]
+ mov r2, #1
+ ldr r0, [r7, r0]
+ mov r1, #0xd
+ lsl r2, r2, #0xa
+ bl FUN_02007558
+ ldr r0, [sp]
+ mov r1, #6
+ ldr r0, [r7, r0]
+ mov r2, #0
+ bl FUN_02007558
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+_021DB63C:
+ ldr r2, _021DB708 ; =0x021DBED8
+ lsl r3, r6, #3
+ ldr r2, [r2, r3]
+ add r0, r4, #0
+ add r1, r6, #0
+ blx r2
+ cmp r0, #0
+ beq _021DB6FC
+ mov r0, #0
+ strb r0, [r4, #0x1d]
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+ b _021DB6FC
+_021DB658:
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_02013440
+ lsl r0, r6, #2
+ str r0, [sp, #4]
+ ldr r1, _021DB70C ; =0x021DBF08
+ lsl r6, r6, #3
+ ldr r3, [sp, #4]
+ add r7, r4, #4
+ ldr r0, [r4, #0x18]
+ ldr r1, [r1, r6]
+ ldr r2, _021DB710 ; =MOD63_021DB940
+ ldr r3, [r7, r3]
+ bl FUN_020133AC
+ ldr r1, _021DB714 ; =0x021DBF0C
+ ldr r3, [sp, #4]
+ ldr r0, [r4, #0x18]
+ ldr r1, [r1, r6]
+ ldr r2, _021DB710 ; =MOD63_021DB940
+ ldr r3, [r7, r3]
+ bl FUN_020133AC
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+ b _021DB6FC
+_021DB690:
+ ldr r0, [r4, #0x18]
+ bl FUN_020133C8
+ cmp r0, #0
+ bne _021DB6FC
+ ldr r0, _021DB718 ; =0x021DBEC0
+ lsl r1, r6, #2
+ ldr r0, [r0, r1]
+ cmp r7, r0
+ blt _021DB6FC
+ ldr r1, _021DB704 ; =0x0400004A
+ mov r0, #0x3f
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #0x10
+ orr r2, r0
+ mov r0, #0x20
+ orr r0, r2
+ strh r0, [r1]
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+ b _021DB6FC
+_021DB6BE:
+ ldr r2, _021DB71C ; =0x021DBEDC
+ lsl r3, r6, #3
+ ldr r2, [r2, r3]
+ blx r2
+ cmp r0, #0
+ beq _021DB6FC
+ lsl r0, r6, #2
+ add r0, r4, r0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ mov r2, #1
+ bl FUN_02007558
+ mov r0, #0
+ strb r0, [r4, #0x1d]
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+ b _021DB6FC
+_021DB6E4:
+ ldrb r0, [r4, #0x1d]
+ add r0, r0, #1
+ strb r0, [r4, #0x1d]
+ ldrb r0, [r4, #0x1d]
+ cmp r0, #0x14
+ blo _021DB6FC
+ mov r0, #0
+ strb r0, [r4, #0x1d]
+ strb r0, [r5]
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB6FC:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DB704: .word 0x0400004A
+_021DB708: .word 0x021DBED8
+_021DB70C: .word 0x021DBF08
+_021DB710: .word MOD63_021DB940
+_021DB714: .word 0x021DBF0C
+_021DB718: .word 0x021DBEC0
+_021DB71C: .word 0x021DBEDC
+ thumb_func_end MOD63_021DB5CC
+
+ thumb_func_start MOD63_021DB720
+MOD63_021DB720: ; 0x021DB720
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ lsl r0, r1, #2
+ add r0, r5, r0
+ ldr r4, [r0, #4]
+ mov r1, #0
+ add r0, r4, #0
+ mov r2, #6
+ bl FUN_020079E0
+ mov r1, #1
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x11
+ bl FUN_020079E0
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x8c
+ bl FUN_020079E0
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x8d
+ bl FUN_020079E0
+ ldrb r0, [r5, #0x1d]
+ add r0, r0, #1
+ strb r0, [r5, #0x1d]
+ ldrb r0, [r5, #0x1d]
+ cmp r0, #6
+ blo _021DB780
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DB780:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD63_021DB720
+
+ thumb_func_start MOD63_021DB784
+MOD63_021DB784: ; 0x021DB784
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ lsl r0, r1, #2
+ add r0, r5, r0
+ ldr r4, [r0, #4]
+ mov r1, #0
+ add r0, r4, #0
+ sub r2, r1, #3
+ bl FUN_020079E0
+ mov r1, #1
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x13
+ bl FUN_020079E0
+ ldrb r0, [r5, #0x1d]
+ add r0, r0, #1
+ strb r0, [r5, #0x1d]
+ ldrb r0, [r5, #0x1d]
+ cmp r0, #6
+ blo _021DB7CC
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DB7CC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD63_021DB784
+
+ thumb_func_start MOD63_021DB7D0
+MOD63_021DB7D0: ; 0x021DB7D0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ lsl r0, r1, #2
+ add r0, r5, r0
+ ldr r4, [r0, #4]
+ mov r1, #0
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x10
+ bl FUN_020079E0
+ mov r1, #1
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x11
+ bl FUN_020079E0
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x8c
+ bl FUN_020079E0
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x8d
+ bl FUN_020079E0
+ ldrb r0, [r5, #0x1d]
+ add r0, r0, #1
+ strb r0, [r5, #0x1d]
+ ldrb r0, [r5, #0x1d]
+ cmp r0, #6
+ blo _021DB832
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DB832:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DB7D0
+
+ thumb_func_start MOD63_021DB838
+MOD63_021DB838: ; 0x021DB838
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ lsl r0, r1, #2
+ add r0, r5, r0
+ ldr r4, [r0, #4]
+ mov r1, #0
+ add r0, r4, #0
+ sub r2, r1, #6
+ bl FUN_020079E0
+ mov r1, #1
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x11
+ bl FUN_020079E0
+ ldrb r0, [r5, #0x1d]
+ add r0, r0, #1
+ strb r0, [r5, #0x1d]
+ ldrb r0, [r5, #0x1d]
+ cmp r0, #6
+ blo _021DB880
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DB880:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD63_021DB838
+
+ thumb_func_start MOD63_021DB884
+MOD63_021DB884: ; 0x021DB884
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ lsl r0, r1, #2
+ add r0, r5, r0
+ ldr r4, [r0, #4]
+ mov r1, #0
+ add r0, r4, #0
+ mov r2, #8
+ bl FUN_020079E0
+ mov r1, #1
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x11
+ bl FUN_020079E0
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x8c
+ bl FUN_020079E0
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x8d
+ bl FUN_020079E0
+ ldrb r0, [r5, #0x1d]
+ add r0, r0, #1
+ strb r0, [r5, #0x1d]
+ ldrb r0, [r5, #0x1d]
+ cmp r0, #6
+ blo _021DB8E4
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DB8E4:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD63_021DB884
+
+ thumb_func_start MOD63_021DB8E8
+MOD63_021DB8E8: ; 0x021DB8E8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ lsl r0, r1, #2
+ add r0, r5, r0
+ ldr r4, [r0, #4]
+ mov r1, #0
+ add r0, r4, #0
+ mov r2, #6
+ bl FUN_020079E0
+ mov r1, #1
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x15
+ bl FUN_020079E0
+ ldrb r0, [r5, #0x1d]
+ add r0, r0, #1
+ strb r0, [r5, #0x1d]
+ ldrb r0, [r5, #0x1d]
+ cmp r0, #6
+ blo _021DB930
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DB930:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD63_021DB8E8
+
+ thumb_func_start MOD63_021DB934
+MOD63_021DB934: ; 0x021DB934
+ push {r3, lr}
+ bl FUN_02013364
+ bl FUN_02013388
+ pop {r3, pc}
+ thumb_func_end MOD63_021DB934
+
+ thumb_func_start MOD63_021DB940
+MOD63_021DB940: ; 0x021DB940
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ bl FUN_0201341C
+ add r2, sp, #0
+ mov r1, #0
+ str r1, [r2]
+ str r1, [r2, #4]
+ add r4, r0, #0
+ str r1, [r2, #8]
+ bl FUN_0200782C
+ sub r0, #0x80
+ mov r1, #0xac
+ mul r1, r0
+ str r1, [sp]
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_0200782C
+ sub r0, #0x60
+ mov r1, #0xac
+ mul r1, r0
+ str r1, [sp, #4]
+ mov r0, #0x40
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp]
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ add r0, r1, r0
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r1, r0
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #8]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ add r0, r1, r0
+ str r0, [r5, #0x30]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DB940
+
+ .section .rodata
+ ; 0x021DB9A0
+ .incbin "baserom.nds", 0x2B6EC0, 0x478
+
+ .global MOD63_UNK_021DBE18
+MOD63_UNK_021DBE18:
+ .incbin "baserom.nds", 0x2B7338, 0x108
+
+ .section .data
+ ; 0x021DBF40
+ .incbin "baserom.nds", 0x2B7460, 0x60
+
+ .section .bss
+ ; 0x021DBFA0
+ .space 0x20
+
diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt
index 69d8e7c0..ddfc29ef 100644
--- a/arm9/undefined_syms.txt
+++ b/arm9/undefined_syms.txt
@@ -1,12 +1,5 @@
// Overlay
-FUN_021D844C = 0x021D844C;
-FUN_021D88E4 = 0x021D88E4;
-FUN_021D89CC = 0x021D89CC;
-FUN_021D8B64 = 0x021D8B64;
-FUN_021D8C24 = 0x021D8C24;
-FUN_021D917C = 0x021D917C;
-MOD63_UNK_021DBE18 = 0x021DBE18;
FUN_0222DAEC = 0x0222DAEC;
FUN_0222DD1C = 0x0222DD1C;
FUN_0222DD38 = 0x0222DD38;
@@ -28,8 +21,6 @@ FUN_02213B08 = 0x02213B08;
FUN_02213D80 = 0x02213D80;
FUN_02213DBC = 0x02213DBC;
FUN_02213E24 = 0x02213E24;
-FUN_02254A68 = 0x02254A68;
-FUN_02254AB8 = 0x02254AB8;
// Overlay
diff --git a/pokediamond.lcf b/pokediamond.lcf
index 3dc929c7..daee270d 100644
--- a/pokediamond.lcf
+++ b/pokediamond.lcf
@@ -289,355 +289,355 @@ SECTIONS {
INCLUDE arm9.bin
} > arm9
- .arm9_table : AT (0x0010B800) {
+ .arm9_table : AT (0x10B800) {
INCLUDE arm9_table.bin
} >> arm9
- .MODULE_00 : AT (0x0010C400) {
+ .MODULE_00 : AT (0x10C400) {
INCLUDE MODULE_00.bin
} >> arm9
- .MODULE_01 : AT (0x0010C600) {
+ .MODULE_01 : AT (0x10C600) {
INCLUDE MODULE_01.bin
} >> arm9
- .MODULE_02 : AT (0x0010C800) {
+ .MODULE_02 : AT (0x10C800) {
INCLUDE MODULE_02.bin
} >> arm9
- .MODULE_03 : AT (0x0010CA00) {
+ .MODULE_03 : AT (0x10CA00) {
INCLUDE MODULE_03.bin
} >> arm9
- .MODULE_04 : AT (0x0010CC00) {
+ .MODULE_04 : AT (0x10CC00) {
INCLUDE MODULE_04.bin
} >> arm9
- .MODULE_05 : AT (0x00145400) {
+ .MODULE_05 : AT (0x145400) {
INCLUDE MODULE_05.bin
} >> arm9
- .MODULE_06 : AT (0x0016B600) {
+ .MODULE_06 : AT (0x16B600) {
INCLUDE MODULE_06.bin
} >> arm9
- .MODULE_07 : AT (0x00184400) {
+ .MODULE_07 : AT (0x184400) {
INCLUDE MODULE_07.bin
} >> arm9
- .MODULE_08 : AT (0x00187800) {
+ .MODULE_08 : AT (0x187800) {
INCLUDE MODULE_08.bin
} >> arm9
- .MODULE_09 : AT (0x001A3000) {
+ .MODULE_09 : AT (0x1A3000) {
INCLUDE MODULE_09.bin
} >> arm9
- .MODULE_10 : AT (0x001AD200) {
+ .MODULE_10 : AT (0x1AD200) {
INCLUDE MODULE_10.bin
} >> arm9
- .MODULE_11 : AT (0x001AD400) {
+ .MODULE_11 : AT (0x1AD400) {
INCLUDE MODULE_11.bin
} >> arm9
- .MODULE_12 : AT (0x001DFE00) {
+ .MODULE_12 : AT (0x1DFE00) {
INCLUDE MODULE_12.bin
} >> arm9
- .MODULE_13 : AT (0x001F9200) {
+ .MODULE_13 : AT (0x1F9200) {
INCLUDE MODULE_13.bin
} >> arm9
- .MODULE_14 : AT (0x00227E00) {
+ .MODULE_14 : AT (0x227E00) {
INCLUDE MODULE_14.bin
} >> arm9
- .MODULE_15 : AT (0x00237400) {
+ .MODULE_15 : AT (0x237400) {
INCLUDE MODULE_15.bin
} >> arm9
- .MODULE_16 : AT (0x0023BC00) {
+ .MODULE_16 : AT (0x23BC00) {
INCLUDE MODULE_16.bin
} >> arm9
- .MODULE_17 : AT (0x00264200) {
+ .MODULE_17 : AT (0x264200) {
INCLUDE MODULE_17.bin
} >> arm9
- .MODULE_18 : AT (0x0026B200) {
+ .MODULE_18 : AT (0x26B200) {
INCLUDE MODULE_18.bin
} >> arm9
- .MODULE_19 : AT (0x00283000) {
+ .MODULE_19 : AT (0x283000) {
INCLUDE MODULE_19.bin
} >> arm9
- .MODULE_20 : AT (0x00283200) {
+ .MODULE_20 : AT (0x283200) {
INCLUDE MODULE_20.bin
} >> arm9
- .MODULE_21 : AT (0x00285600) {
+ .MODULE_21 : AT (0x285600) {
INCLUDE MODULE_21.bin
} >> arm9
- .MODULE_22 : AT (0x00285C00) {
+ .MODULE_22 : AT (0x285C00) {
INCLUDE MODULE_22.bin
} >> arm9
- .MODULE_23 : AT (0x00286C00) {
+ .MODULE_23 : AT (0x286C00) {
INCLUDE MODULE_23.bin
} >> arm9
- .MODULE_24 : AT (0x00288600) {
+ .MODULE_24 : AT (0x288600) {
INCLUDE MODULE_24.bin
} >> arm9
- .MODULE_25 : AT (0x00289000) {
+ .MODULE_25 : AT (0x289000) {
INCLUDE MODULE_25.bin
} >> arm9
- .MODULE_26 : AT (0x00289600) {
+ .MODULE_26 : AT (0x289600) {
INCLUDE MODULE_26.bin
} >> arm9
- .MODULE_27 : AT (0x00289E00) {
+ .MODULE_27 : AT (0x289E00) {
INCLUDE MODULE_27.bin
} >> arm9
- .MODULE_28 : AT (0x0028AA00) {
+ .MODULE_28 : AT (0x28AA00) {
INCLUDE MODULE_28.bin
} >> arm9
- .MODULE_29 : AT (0x0028C200) {
+ .MODULE_29 : AT (0x28C200) {
INCLUDE MODULE_29.bin
} >> arm9
- .MODULE_30 : AT (0x0028CC00) {
+ .MODULE_30 : AT (0x28CC00) {
INCLUDE MODULE_30.bin
} >> arm9
- .MODULE_31 : AT (0x0028D200) {
+ .MODULE_31 : AT (0x28D200) {
INCLUDE MODULE_31.bin
} >> arm9
- .MODULE_32 : AT (0x0028D800) {
+ .MODULE_32 : AT (0x28D800) {
INCLUDE MODULE_32.bin
} >> arm9
- .MODULE_33 : AT (0x0028DE00) {
+ .MODULE_33 : AT (0x28DE00) {
INCLUDE MODULE_33.bin
} >> arm9
- .MODULE_34 : AT (0x0028E200) {
+ .MODULE_34 : AT (0x28E200) {
INCLUDE MODULE_34.bin
} >> arm9
- .MODULE_35 : AT (0x0028E800) {
+ .MODULE_35 : AT (0x28E800) {
INCLUDE MODULE_35.bin
} >> arm9
- .MODULE_36 : AT (0x0028F200) {
+ .MODULE_36 : AT (0x28F200) {
INCLUDE MODULE_36.bin
} >> arm9
- .MODULE_37 : AT (0x00290000) {
+ .MODULE_37 : AT (0x290000) {
INCLUDE MODULE_37.bin
} >> arm9
- .MODULE_38 : AT (0x00290600) {
+ .MODULE_38 : AT (0x290600) {
INCLUDE MODULE_38.bin
} >> arm9
- .MODULE_39 : AT (0x00291200) {
+ .MODULE_39 : AT (0x291200) {
INCLUDE MODULE_39.bin
} >> arm9
- .MODULE_40 : AT (0x00292000) {
+ .MODULE_40 : AT (0x292000) {
INCLUDE MODULE_40.bin
} >> arm9
- .MODULE_41 : AT (0x00292E00) {
+ .MODULE_41 : AT (0x292E00) {
INCLUDE MODULE_41.bin
} >> arm9
- .MODULE_42 : AT (0x00294000) {
+ .MODULE_42 : AT (0x294000) {
INCLUDE MODULE_42.bin
} >> arm9
- .MODULE_43 : AT (0x00294A00) {
+ .MODULE_43 : AT (0x294A00) {
INCLUDE MODULE_43.bin
} >> arm9
- .MODULE_44 : AT (0x00295400) {
+ .MODULE_44 : AT (0x295400) {
INCLUDE MODULE_44.bin
} >> arm9
- .MODULE_45 : AT (0x00295A00) {
+ .MODULE_45 : AT (0x295A00) {
INCLUDE MODULE_45.bin
} >> arm9
- .MODULE_46 : AT (0x00296400) {
+ .MODULE_46 : AT (0x296400) {
INCLUDE MODULE_46.bin
} >> arm9
- .MODULE_47 : AT (0x00296800) {
+ .MODULE_47 : AT (0x296800) {
INCLUDE MODULE_47.bin
} >> arm9
- .MODULE_48 : AT (0x00297600) {
+ .MODULE_48 : AT (0x297600) {
INCLUDE MODULE_48.bin
} >> arm9
- .MODULE_49 : AT (0x00298000) {
+ .MODULE_49 : AT (0x298000) {
INCLUDE MODULE_49.bin
} >> arm9
- .MODULE_50 : AT (0x00298600) {
+ .MODULE_50 : AT (0x298600) {
INCLUDE MODULE_50.bin
} >> arm9
- .MODULE_51 : AT (0x00298A00) {
+ .MODULE_51 : AT (0x298A00) {
INCLUDE MODULE_51.bin
} >> arm9
- .MODULE_52 : AT (0x00299A00) {
+ .MODULE_52 : AT (0x299A00) {
INCLUDE MODULE_52.bin
} >> arm9
- .MODULE_53 : AT (0x00299E00) {
+ .MODULE_53 : AT (0x299E00) {
INCLUDE MODULE_53.bin
} >> arm9
- .MODULE_54 : AT (0x0029C400) {
+ .MODULE_54 : AT (0x29C400) {
INCLUDE MODULE_54.bin
} >> arm9
- .MODULE_55 : AT (0x0029E800) {
+ .MODULE_55 : AT (0x29E800) {
INCLUDE MODULE_55.bin
} >> arm9
- .MODULE_56 : AT (0x002A1A00) {
+ .MODULE_56 : AT (0x2A1A00) {
INCLUDE MODULE_56.bin
} >> arm9
- .MODULE_57 : AT (0x002A6200) {
+ .MODULE_57 : AT (0x2A6200) {
INCLUDE MODULE_57.bin
} >> arm9
- .MODULE_58 : AT (0x002A8800) {
+ .MODULE_58 : AT (0x2A8800) {
INCLUDE MODULE_58.bin
} >> arm9
- .MODULE_59 : AT (0x002A9E00) {
+ .MODULE_59 : AT (0x2A9E00) {
INCLUDE MODULE_59.bin
} >> arm9
- .MODULE_60 : AT (0x002ACC00) {
+ .MODULE_60 : AT (0x2ACC00) {
INCLUDE MODULE_60.bin
} >> arm9
- .MODULE_61 : AT (0x002ADA00) {
+ .MODULE_61 : AT (0x2ADA00) {
INCLUDE MODULE_61.bin
} >> arm9
- .MODULE_62 : AT (0x002AEC00) {
+ .MODULE_62 : AT (0x2AEC00) {
INCLUDE MODULE_62.bin
} >> arm9
- .MODULE_63 : AT (0x002B2A00) {
+ .MODULE_63 : AT (0x2B2A00) {
INCLUDE MODULE_63.bin
} >> arm9
- .MODULE_64 : AT (0x002B7600) {
+ .MODULE_64 : AT (0x2B7600) {
INCLUDE MODULE_64.bin
} >> arm9
- .MODULE_65 : AT (0x002B9400) {
+ .MODULE_65 : AT (0x2B9400) {
INCLUDE MODULE_65.bin
} >> arm9
- .MODULE_66 : AT (0x002BC400) {
+ .MODULE_66 : AT (0x2BC400) {
INCLUDE MODULE_66.bin
} >> arm9
- .MODULE_67 : AT (0x002BEC00) {
+ .MODULE_67 : AT (0x2BEC00) {
INCLUDE MODULE_67.bin
} >> arm9
- .MODULE_68 : AT (0x002C1200) {
+ .MODULE_68 : AT (0x2C1200) {
INCLUDE MODULE_68.bin
} >> arm9
- .MODULE_69 : AT (0x002C2800) {
+ .MODULE_69 : AT (0x2C2800) {
INCLUDE MODULE_69.bin
} >> arm9
- .MODULE_70 : AT (0x002C4C00) {
+ .MODULE_70 : AT (0x2C4C00) {
INCLUDE MODULE_70.bin
} >> arm9
- .MODULE_71 : AT (0x002C5C00) {
+ .MODULE_71 : AT (0x2C5C00) {
INCLUDE MODULE_71.bin
} >> arm9
- .MODULE_72 : AT (0x002C9C00) {
+ .MODULE_72 : AT (0x2C9C00) {
INCLUDE MODULE_72.bin
} >> arm9
- .MODULE_73 : AT (0x002C9E00) {
+ .MODULE_73 : AT (0x2C9E00) {
INCLUDE MODULE_73.bin
} >> arm9
- .MODULE_74 : AT (0x002CEA00) {
+ .MODULE_74 : AT (0x2CEA00) {
INCLUDE MODULE_74.bin
} >> arm9
- .MODULE_75 : AT (0x002CFE00) {
+ .MODULE_75 : AT (0x2CFE00) {
INCLUDE MODULE_75.bin
} >> arm9
- .MODULE_76 : AT (0x002D5C00) {
+ .MODULE_76 : AT (0x2D5C00) {
INCLUDE MODULE_76.bin
} >> arm9
- .MODULE_77 : AT (0x002D7C00) {
+ .MODULE_77 : AT (0x2D7C00) {
INCLUDE MODULE_77.bin
} >> arm9
- .MODULE_78 : AT (0x002D9800) {
+ .MODULE_78 : AT (0x2D9800) {
INCLUDE MODULE_78.bin
} >> arm9
- .MODULE_79 : AT (0x002D9E00) {
+ .MODULE_79 : AT (0x2D9E00) {
INCLUDE MODULE_79.bin
} >> arm9
- .MODULE_80 : AT (0x002DF200) {
+ .MODULE_80 : AT (0x2DF200) {
INCLUDE MODULE_80.bin
} >> arm9
- .MODULE_81 : AT (0x002E9A00) {
+ .MODULE_81 : AT (0x2E9A00) {
INCLUDE MODULE_81.bin
} >> arm9
- .MODULE_82 : AT (0x002EF000) {
+ .MODULE_82 : AT (0x2EF000) {
INCLUDE MODULE_82.bin
} >> arm9
- .MODULE_83 : AT (0x002F1600) {
+ .MODULE_83 : AT (0x2F1600) {
INCLUDE MODULE_83.bin
} >> arm9
- .MODULE_84 : AT (0x002FFA00) {
+ .MODULE_84 : AT (0x2FFA00) {
INCLUDE MODULE_84.bin
} >> arm9
- .MODULE_85 : AT (0x00303400) {
+ .MODULE_85 : AT (0x303400) {
INCLUDE MODULE_85.bin
} >> arm9
- .MODULE_86 : AT (0x0030C600) {
+ .MODULE_86 : AT (0x30C600) {
INCLUDE MODULE_86.bin
} >> arm9