summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lcf159
-rw-r--r--arm9/global.inc86
-rw-r--r--arm9/modules/76/asm/module_76.s3226
-rw-r--r--arm9/modules/77/asm/module_77.s3214
-rw-r--r--arm9/modules/78/asm/module_78.s444
-rw-r--r--arm9/modules/79/asm/module_79_arm.s4890
-rw-r--r--arm9/modules/79/asm/module_79_thumb.s851
-rw-r--r--arm9/modules/80/asm/module_80.s19283
-rw-r--r--arm9/modules/81/asm/module_81.s10353
-rw-r--r--arm9/undefined_syms.txt1
10 files changed, 42489 insertions, 18 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index a783f588..f2470541 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -2940,7 +2940,17 @@ SECTIONS {
SDK_OVERLAY_MODULE_76_ID = 76;
SDK_OVERLAY.MODULE_76.ID = 76;
SDK_OVERLAY.MODULE_76.START = .;
- FILE_2D5C00.o (.text) /* 0x2D1C00 */
+ module_76.o (.text)
+ module_76.o (.rodata)
+ module_76.o (.init)
+ SDK_OVERLAY.MODULE_76.SINIT_START = .;
+ module_76.o (.ctor)
+ module_76.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_76.SINIT_END = .;
+ . = ALIGN(32);
+ module_76.o (.sdata)
+ module_76.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_76.END = .;
SDK_OVERLAY.MODULE_76.SIZE = SDK_OVERLAY.MODULE_76.END - SDK_OVERLAY.MODULE_76.START;
@@ -2950,7 +2960,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_76.BSS_START = .;
- FILE_2D5C00.o (.bss)
+ module_76.o (.bss)
+ module_76.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_76.BSS_END = .;
SDK_OVERLAY.MODULE_76.BSS_SIZE = SDK_OVERLAY.MODULE_76.BSS_END - SDK_OVERLAY.MODULE_76.BSS_START;
@@ -2961,7 +2972,17 @@ SECTIONS {
SDK_OVERLAY_MODULE_77_ID = 77;
SDK_OVERLAY.MODULE_77.ID = 77;
SDK_OVERLAY.MODULE_77.START = .;
- FILE_2D7C00.o (.text) /* 0x2D3C00 */
+ module_77.o (.text)
+ module_77.o (.rodata)
+ module_77.o (.init)
+ SDK_OVERLAY.MODULE_77.SINIT_START = .;
+ module_77.o (.ctor)
+ module_77.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_77.SINIT_END = .;
+ . = ALIGN(32);
+ module_77.o (.sdata)
+ module_77.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_77.END = .;
SDK_OVERLAY.MODULE_77.SIZE = SDK_OVERLAY.MODULE_77.END - SDK_OVERLAY.MODULE_77.START;
@@ -2971,7 +2992,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_77.BSS_START = .;
- FILE_2D7C00.o (.bss)
+ module_77.o (.bss)
+ module_77.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_77.BSS_END = .;
SDK_OVERLAY.MODULE_77.BSS_SIZE = SDK_OVERLAY.MODULE_77.BSS_END - SDK_OVERLAY.MODULE_77.BSS_START;
@@ -2982,7 +3004,17 @@ SECTIONS {
SDK_OVERLAY_MODULE_78_ID = 78;
SDK_OVERLAY.MODULE_78.ID = 78;
SDK_OVERLAY.MODULE_78.START = .;
- FILE_2D9800.o (.text) /* 0x2D5800 */
+ module_78.o (.text)
+ module_78.o (.rodata)
+ module_78.o (.init)
+ SDK_OVERLAY.MODULE_78.SINIT_START = .;
+ module_78.o (.ctor)
+ module_78.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_78.SINIT_END = .;
+ . = ALIGN(32);
+ module_78.o (.sdata)
+ module_78.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_78.END = .;
SDK_OVERLAY.MODULE_78.SIZE = SDK_OVERLAY.MODULE_78.END - SDK_OVERLAY.MODULE_78.START;
@@ -2992,7 +3024,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_78.BSS_START = .;
- FILE_2D9800.o (.bss)
+ module_78.o (.bss)
+ module_78.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_78.BSS_END = .;
SDK_OVERLAY.MODULE_78.BSS_SIZE = SDK_OVERLAY.MODULE_78.BSS_END - SDK_OVERLAY.MODULE_78.BSS_START;
@@ -3003,7 +3036,24 @@ SECTIONS {
SDK_OVERLAY_MODULE_79_ID = 79;
SDK_OVERLAY.MODULE_79.ID = 79;
SDK_OVERLAY.MODULE_79.START = .;
- FILE_2D9E00.o (.text) /* 0x2D5E00 */
+ module_79_thumb.o (.text)
+ module_79_arm.o (.text)
+ module_79_thumb.o (.rodata)
+ module_79_arm.o (.rodata)
+ module_79_thumb.o (.init)
+ module_79_arm.o (.init)
+ SDK_OVERLAY.MODULE_79.SINIT_START = .;
+ module_79_thumb.o (.ctor)
+ module_79_arm.o (.ctor)
+ module_79_thumb.o (.sinit)
+ module_79_arm.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_79.SINIT_END = .;
+ . = ALIGN(32);
+ module_79_thumb.o (.sdata)
+ module_79_arm.o (.sdata)
+ module_79_thumb.o (.data)
+ module_79_arm.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_79.END = .;
SDK_OVERLAY.MODULE_79.SIZE = SDK_OVERLAY.MODULE_79.END - SDK_OVERLAY.MODULE_79.START;
@@ -3013,7 +3063,10 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_79.BSS_START = .;
- FILE_2D9E00.o (.bss)
+ module_79_thumb.o (.bss)
+ module_79_arm.o (.bss)
+ module_79_thumb.o (.sbss)
+ module_79_arm.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_79.BSS_END = .;
SDK_OVERLAY.MODULE_79.BSS_SIZE = SDK_OVERLAY.MODULE_79.BSS_END - SDK_OVERLAY.MODULE_79.BSS_START;
@@ -3024,7 +3077,17 @@ SECTIONS {
SDK_OVERLAY_MODULE_80_ID = 80;
SDK_OVERLAY.MODULE_80.ID = 80;
SDK_OVERLAY.MODULE_80.START = .;
- FILE_2DF200.o (.text) /* 0x2DB200 */
+ module_80.o (.text)
+ module_80.o (.rodata)
+ module_80.o (.init)
+ SDK_OVERLAY.MODULE_80.SINIT_START = .;
+ module_80.o (.ctor)
+ module_80.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_80.SINIT_END = .;
+ . = ALIGN(32);
+ module_80.o (.sdata)
+ module_80.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_80.END = .;
SDK_OVERLAY.MODULE_80.SIZE = SDK_OVERLAY.MODULE_80.END - SDK_OVERLAY.MODULE_80.START;
@@ -3034,7 +3097,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_80.BSS_START = .;
- FILE_2DF200.o (.bss)
+ module_80.o (.bss)
+ module_80.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_80.BSS_END = .;
SDK_OVERLAY.MODULE_80.BSS_SIZE = SDK_OVERLAY.MODULE_80.BSS_END - SDK_OVERLAY.MODULE_80.BSS_START;
@@ -3045,7 +3109,17 @@ SECTIONS {
SDK_OVERLAY_MODULE_81_ID = 81;
SDK_OVERLAY.MODULE_81.ID = 81;
SDK_OVERLAY.MODULE_81.START = .;
- FILE_2E9A00.o (.text) /* 0x2E5A00 */
+ module_81.o (.text)
+ module_81.o (.rodata)
+ module_81.o (.init)
+ SDK_OVERLAY.MODULE_81.SINIT_START = .;
+ module_81.o (.ctor)
+ module_81.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_81.SINIT_END = .;
+ . = ALIGN(32);
+ module_81.o (.sdata)
+ module_81.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_81.END = .;
SDK_OVERLAY.MODULE_81.SIZE = SDK_OVERLAY.MODULE_81.END - SDK_OVERLAY.MODULE_81.START;
@@ -3055,7 +3129,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_81.BSS_START = .;
- FILE_2E9A00.o (.bss)
+ module_81.o (.bss)
+ module_81.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_81.BSS_END = .;
SDK_OVERLAY.MODULE_81.BSS_SIZE = SDK_OVERLAY.MODULE_81.BSS_END - SDK_OVERLAY.MODULE_81.BSS_START;
@@ -3975,12 +4050,60 @@ SECTIONS {
WRITEW 75;
WRITEW 0;
- OVERLAY_TABLE(MODULE_76, 76)
- OVERLAY_TABLE(MODULE_77, 77)
- OVERLAY_TABLE(MODULE_78, 78)
- OVERLAY_TABLE(MODULE_79, 79)
- OVERLAY_TABLE(MODULE_80, 80)
- OVERLAY_TABLE(MODULE_81, 81)
+ WRITEW 76;
+ WRITEW ADDR(.MODULE_76);
+ WRITEW SDK_OVERLAY.MODULE_76.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_76.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_76.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_76.SINIT_END;
+ WRITEW 76;
+ WRITEW 0;
+
+ WRITEW 77;
+ WRITEW ADDR(.MODULE_77);
+ WRITEW SDK_OVERLAY.MODULE_77.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_77.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_77.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_77.SINIT_END;
+ WRITEW 77;
+ WRITEW 0;
+
+ WRITEW 78;
+ WRITEW ADDR(.MODULE_78);
+ WRITEW SDK_OVERLAY.MODULE_78.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_78.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_78.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_78.SINIT_END;
+ WRITEW 78;
+ WRITEW 0;
+
+ WRITEW 79;
+ WRITEW ADDR(.MODULE_79);
+ WRITEW SDK_OVERLAY.MODULE_79.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_79.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_79.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_79.SINIT_END;
+ WRITEW 79;
+ WRITEW 0;
+
+ WRITEW 80;
+ WRITEW ADDR(.MODULE_80);
+ WRITEW SDK_OVERLAY.MODULE_80.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_80.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_80.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_80.SINIT_END;
+ WRITEW 80;
+ WRITEW 0;
+
+ WRITEW 81;
+ WRITEW ADDR(.MODULE_81);
+ WRITEW SDK_OVERLAY.MODULE_81.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_81.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_81.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_81.SINIT_END;
+ WRITEW 81;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_82, 82)
OVERLAY_TABLE(MODULE_83, 83)
OVERLAY_TABLE(MODULE_84, 84)
diff --git a/arm9/global.inc b/arm9/global.inc
index a9bbc871..d241c10e 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -5801,6 +5801,92 @@
.extern MOD04_021D861C
.extern MOD04_021D8640
.extern MOD04_021D8678
+.extern FUN_02029B08
+.extern FUN_021EB550
+.extern MOD04_021DD904
+.extern MOD04_021DD944
+.extern MOD04_021EB3B8
+.extern MOD04_021EB524
+.extern MOD04_021EB59C
+.extern MOD04_021EF820
+.extern strncat
+.extern fclose
+.extern fread
+.extern fseek
+.extern ftell
+.extern MOD04_021DD82C
+.extern MOD04_021DD844
+.extern MOD04_021DD860
+.extern MOD04_021EEFA8
+.extern MOD04_021EEFFC
+.extern MOD04_021EF06C
+.extern MOD04_021EF074
+.extern MOD04_021EF0E4
+.extern MOD04_021EFB28
+.extern MOD04_021EFB38
+.extern MOD04_021EFC24
+.extern MOD04_021EFC78
+.extern MOD04_021EFCE4
+.extern MOD04_021EFD80
+.extern MOD04_021EFD9C
+.extern MOD04_021EFDB8
+.extern MOD04_021EFF5C
+.extern MOD04_021F0130
+.extern MOD04_021F017C
+.extern MOD04_021F0208
+.extern MOD04_021F024C
+.extern MOD04_021F0250
+.extern MOD04_021F025C
+.extern rewind
+.extern strspn
+.extern FUN_0200B84C
+.extern FUN_02022840
+.extern FUN_02022854
+.extern FUN_02023830
+.extern FUN_02023834
+.extern FUN_02023A6C
+.extern FUN_02023A74
+.extern FUN_0202952C
+.extern FUN_0202ABDC
+.extern FUN_0202ABE4
+.extern FUN_0202ABEC
+.extern FUN_0202ABF8
+.extern FUN_0202AC08
+.extern FUN_0202AC10
+.extern FUN_0202AC18
+.extern FUN_0202E4F0
+.extern FUN_02033288
+.extern FUN_020332DC
+.extern FUN_020335E0
+.extern FUN_020337C8
+.extern FUN_02033EEC
+.extern FUN_0206B384
+.extern FUN_020888BC
+.extern FUN_020888CC
+.extern FUN_0200CA7C
+.extern FUN_02033F04
+.extern FUN_02068E1C
+.extern MOD04_021DD808
+.extern MOD04_021DD984
+.extern MOD04_021DD9DC
+.extern MOD04_021DDF4C
+.extern MOD04_021DE05C
+.extern MOD04_021DE1F8
+.extern MOD56_0221244C
+.extern MOD79_022122E4
+.extern MOD79_02212308
+.extern MOD79_022123A8
+.extern MOD79_02212474
+.extern MOD79_02212480
+.extern FUN_02029B40
+.extern FUN_02029C00
+.extern FUN_02088D1C
+.extern FUN_02088D20
+.extern FUN_02088D4C
+.extern FUN_02088D68
+.extern FUN_02088D84
+.extern FUN_02088DA0
+.extern FUN_02088DBC
.extern FUN_020294F4
.extern FUN_02021C38
.extern FUN_0202822C
diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s
new file mode 100644
index 00000000..45257701
--- /dev/null
+++ b/arm9/modules/76/asm/module_76.s
@@ -0,0 +1,3226 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD76_021D74E0
+MOD76_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ mov r2, #2
+ add r5, r0, #0
+ mov r0, #3
+ mov r1, #0x43
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ mov r1, #0x62
+ add r0, r5, #0
+ lsl r1, r1, #2
+ mov r2, #0x43
+ bl FUN_02006268
+ mov r2, #0x62
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ bl FUN_0200628C
+ str r0, [r4]
+ add r0, r4, #0
+ bl MOD76_021D7638
+ ldr r1, [r4]
+ add r0, r4, #0
+ ldrh r1, [r1, #0x10]
+ mov r2, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD76_021D8C88
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD76_021D8354
+ mov r0, #0
+ str r0, [sp]
+ ldr r3, _021D7560 ; =0x0001020F
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #1
+ bl MOD76_021D7CC8
+ mov r0, #6
+ mov r1, #1
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xc8
+ bl FUN_02019220
+ add r0, r4, #0
+ bl MOD76_021D8CD4
+ ldr r0, _021D7564 ; =MOD76_021D76E8
+ add r1, r4, #0
+ bl FUN_02015F10
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7560: .word 0x0001020F
+_021D7564: .word MOD76_021D76E8
+ thumb_func_end MOD76_021D74E0
+
+ thumb_func_start MOD76_021D7568
+MOD76_021D7568: ; 0x021D7568
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ bl FUN_02006278
+ ldr r1, [r4]
+ add r5, r0, #0
+ cmp r1, #0xc
+ bhi _021D7606
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7584: ; jump table
+ .short _021D759E - _021D7584 - 2 ; case 0
+ .short _021D75A6 - _021D7584 - 2 ; case 1
+ .short _021D75AE - _021D7584 - 2 ; case 2
+ .short _021D75B6 - _021D7584 - 2 ; case 3
+ .short _021D75BE - _021D7584 - 2 ; case 4
+ .short _021D75C6 - _021D7584 - 2 ; case 5
+ .short _021D75CE - _021D7584 - 2 ; case 6
+ .short _021D75D6 - _021D7584 - 2 ; case 7
+ .short _021D75DE - _021D7584 - 2 ; case 8
+ .short _021D75E6 - _021D7584 - 2 ; case 9
+ .short _021D75EA - _021D7584 - 2 ; case 10
+ .short _021D75F2 - _021D7584 - 2 ; case 11
+ .short _021D75FC - _021D7584 - 2 ; case 12
+_021D759E:
+ bl MOD76_021D795C
+ str r0, [r4]
+ b _021D7606
+_021D75A6:
+ bl MOD76_021D7974
+ str r0, [r4]
+ b _021D7606
+_021D75AE:
+ bl MOD76_021D7A94
+ str r0, [r4]
+ b _021D7606
+_021D75B6:
+ bl MOD76_021D7AB4
+ str r0, [r4]
+ b _021D7606
+_021D75BE:
+ bl MOD76_021D7ADC
+ str r0, [r4]
+ b _021D7606
+_021D75C6:
+ bl MOD76_021D7B2C
+ str r0, [r4]
+ b _021D7606
+_021D75CE:
+ bl MOD76_021D7B80
+ str r0, [r4]
+ b _021D7606
+_021D75D6:
+ bl MOD76_021D7B98
+ str r0, [r4]
+ b _021D7606
+_021D75DE:
+ bl MOD76_021D7BC8
+ str r0, [r4]
+ b _021D7606
+_021D75E6:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D75EA:
+ bl MOD76_021D8D44
+ str r0, [r4]
+ b _021D7606
+_021D75F2:
+ bl MOD76_021D8D5C
+ str r0, [r4]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D75FC:
+ bl MOD76_021D8DEC
+ str r0, [r4]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D7606:
+ add r0, r5, #0
+ bl MOD76_021D882C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_0200BC1C
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D7568
+
+ thumb_func_start MOD76_021D761C
+MOD76_021D761C: ; 0x021D761C
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02006278
+ bl MOD76_021D76B8
+ add r0, r4, #0
+ bl FUN_0200627C
+ mov r0, #0x43
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD76_021D761C
+
+ thumb_func_start MOD76_021D7638
+MOD76_021D7638: ; 0x021D7638
+ push {r4, lr}
+ add r4, r0, #0
+ 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, _021D76AC ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D76B0 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #0x43
+ bl FUN_02016B94
+ str r0, [r4, #4]
+ mov r0, #0
+ mov r1, #0x43
+ bl FUN_02079A70
+ bl MOD76_021D7710
+ ldr r0, [r4, #4]
+ bl MOD76_021D7730
+ add r0, r4, #0
+ bl MOD76_021D7814
+ add r0, r4, #0
+ bl MOD76_021D8C4C
+ add r0, r4, #0
+ bl MOD76_021D7900
+ add r0, r4, #0
+ bl MOD76_021D789C
+ add r0, r4, #0
+ bl MOD76_021D7ECC
+ add r0, r4, #0
+ bl MOD76_021D7BE0
+ ldr r0, _021D76B4 ; =MOD76_021D76E8
+ add r1, r4, #0
+ bl FUN_02015F10
+ pop {r4, pc}
+ .align 2, 0
+_021D76AC: .word 0xFFFFE0FF
+_021D76B0: .word 0x04001000
+_021D76B4: .word MOD76_021D76E8
+ thumb_func_end MOD76_021D7638
+
+ thumb_func_start MOD76_021D76B8
+MOD76_021D76B8: ; 0x021D76B8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD76_021D7FAC
+ add r0, r4, #0
+ bl MOD76_021D78E8
+ ldr r0, [r4, #4]
+ bl MOD76_021D77E4
+ add r0, r4, #0
+ bl MOD76_021D7938
+ add r0, r4, #0
+ bl MOD76_021D87F8
+ bl FUN_0201C29C
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D76B8
+
+ thumb_func_start MOD76_021D76E8
+MOD76_021D76E8: ; 0x021D76E8
+ push {r3, lr}
+ ldr r0, [r0, #4]
+ bl FUN_0201AB60
+ bl FUN_0201C30C
+ bl FUN_0200BC30
+ ldr r3, _021D7708 ; =0x027E0000
+ ldr r1, _021D770C ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r3, pc}
+ nop
+_021D7708: .word 0x027E0000
+_021D770C: .word 0x00003FF8
+ thumb_func_end MOD76_021D76E8
+
+ thumb_func_start MOD76_021D7710
+MOD76_021D7710: ; 0x021D7710
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D772C ; =0x021D8F44
+ add r3, sp, #0
+ mov r2, #5
+_021D771A:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D771A
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D772C: .word 0x021D8F44
+ thumb_func_end MOD76_021D7710
+
+ thumb_func_start MOD76_021D7730
+MOD76_021D7730: ; 0x021D7730
+ push {r4, r5, lr}
+ sub sp, #0x64
+ ldr r5, _021D77D4 ; =0x021D8E4C
+ add r3, sp, #0x54
+ 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, _021D77D8 ; =0x021D8E88
+ 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, #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, _021D77DC ; =0x021D8EC0
+ 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, #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, _021D77E0 ; =0x021D8EA4
+ 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, #2
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x43
+ bl FUN_02017F18
+ add sp, #0x64
+ pop {r4, r5, pc}
+ nop
+_021D77D4: .word 0x021D8E4C
+_021D77D8: .word 0x021D8E88
+_021D77DC: .word 0x021D8EC0
+_021D77E0: .word 0x021D8EA4
+ thumb_func_end MOD76_021D7730
+
+ thumb_func_start MOD76_021D77E4
+MOD76_021D77E4: ; 0x021D77E4
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x17
+ mov r1, #0
+ bl FUN_0201E6E4
+ 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
+ mov r0, #0x43
+ add r1, r4, #0
+ bl FUN_02016A8C
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D77E4
+
+ thumb_func_start MOD76_021D7814
+MOD76_021D7814: ; 0x021D7814
+ 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, #0x43
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x71
+ mov r1, #0xa
+ mov r3, #2
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x43
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x71
+ mov r1, #0xb
+ mov r3, #2
+ bl FUN_020068C8
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x43
+ str r0, [sp, #4]
+ mov r0, #0x71
+ mov r1, #0xc
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r1, #7
+ mov r0, #0
+ lsl r1, r1, #6
+ mov r2, #0x43
+ bl FUN_02002EEC
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0x43
+ str r0, [sp, #4]
+ ldr r0, [r4, #4]
+ mov r2, #1
+ mov r3, #0xc
+ bl FUN_0200CB00
+ ldr r0, [r4]
+ ldr r0, [r0, #8]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x43
+ str r0, [sp, #4]
+ ldr r0, [r4, #4]
+ mov r1, #0
+ mov r2, #0xa
+ mov r3, #0xd
+ bl FUN_0200CD68
+ add sp, #0x10
+ pop {r4, pc}
+ thumb_func_end MOD76_021D7814
+
+ thumb_func_start MOD76_021D789C
+MOD76_021D789C: ; 0x021D789C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r5, r7, #0
+ ldr r4, _021D78E4 ; =0x021D8FC4
+ mov r6, #0
+ add r5, #8
+_021D78A8:
+ ldr r0, [r7, #4]
+ add r1, r5, #0
+ add r2, r4, #0
+ bl FUN_02019150
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ add r6, r6, #1
+ add r4, #8
+ add r5, #0x10
+ cmp r6, #0xf
+ blo _021D78A8
+ add r0, r7, #0
+ bl MOD76_021D7DAC
+ add r0, r7, #0
+ add r0, #0xc8
+ mov r1, #0xf
+ bl FUN_02019620
+ add r7, #0xc8
+ add r0, r7, #0
+ mov r1, #0
+ mov r2, #0xa
+ mov r3, #0xd
+ bl FUN_0200D0BC
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D78E4: .word 0x021D8FC4
+ thumb_func_end MOD76_021D789C
+
+ thumb_func_start MOD76_021D78E8
+MOD76_021D78E8: ; 0x021D78E8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+ add r5, #8
+_021D78F0:
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #0xf
+ blo _021D78F0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD76_021D78E8
+
+ thumb_func_start MOD76_021D7900
+MOD76_021D7900: ; 0x021D7900
+ push {r4, lr}
+ ldr r2, _021D7934 ; =0x0000024A
+ add r4, r0, #0
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x43
+ bl FUN_0200A86C
+ add r1, r4, #0
+ add r1, #0xf8
+ str r0, [r1]
+ mov r0, #0x43
+ bl FUN_0200AA80
+ add r1, r4, #0
+ add r1, #0xfc
+ str r0, [r1]
+ mov r0, #1
+ lsl r0, r0, #8
+ mov r1, #0x43
+ bl FUN_020219F4
+ mov r1, #1
+ lsl r1, r1, #8
+ str r0, [r4, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021D7934: .word 0x0000024A
+ thumb_func_end MOD76_021D7900
+
+ thumb_func_start MOD76_021D7938
+MOD76_021D7938: ; 0x021D7938
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ bl FUN_0200AB18
+ mov r0, #1
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D7938
+
+ thumb_func_start MOD76_021D795C
+MOD76_021D795C: ; 0x021D795C
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D7970
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+_021D7970:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD76_021D795C
+
+ thumb_func_start MOD76_021D7974
+MOD76_021D7974: ; 0x021D7974
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D7A88 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x30
+ tst r1, r0
+ beq _021D799C
+ ldr r0, _021D7A8C ; =0x000005DD
+ bl FUN_020054C8
+ ldr r2, [r5]
+ mov r0, #1
+ ldrb r1, [r2, #0x14]
+ eor r0, r1
+ strb r0, [r2, #0x14]
+ add r0, r5, #0
+ bl MOD76_021D7BE0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D799C:
+ add r0, #0xd4
+ add r1, sp, #0
+ ldr r0, [r5, r0]
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_02001448
+ mov r0, #0x41
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02001204
+ add r4, r0, #0
+ ldr r2, [r5]
+ mov r0, #0x41
+ add r1, r2, #0
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, #0x12
+ add r2, #0x10
+ bl FUN_02001448
+ ldr r2, [r5]
+ add r1, sp, #0
+ ldrh r1, [r1, #2]
+ ldrh r2, [r2, #0x12]
+ add r0, r5, #0
+ bl MOD76_021D8AC0
+ ldr r0, [r5]
+ ldrh r1, [r0, #0x10]
+ add r0, sp, #0
+ ldrh r0, [r0]
+ cmp r1, r0
+ beq _021D79EE
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ mov r2, #0
+ bl MOD76_021D8C88
+_021D79EE:
+ add r0, r5, #0
+ bl MOD76_021D8CD4
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _021D7A04
+ add r0, r0, #1
+ cmp r4, r0
+ beq _021D7A82
+ b _021D7A38
+_021D7A04:
+ ldr r0, _021D7A8C ; =0x000005DD
+ bl FUN_020054C8
+ ldr r1, [r5]
+ add r0, r5, #0
+ ldrh r1, [r1, #0x10]
+ mov r2, #1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD76_021D8C88
+ add r0, r5, #0
+ bl MOD76_021D8D24
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD76_021D853C
+ ldr r0, _021D7A90 ; =0x00000186
+ mov r1, #1
+ strb r1, [r5, r0]
+ mov r1, #3
+ lsl r0, r1, #7
+ str r1, [r5, r0]
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021D7A38:
+ ldr r0, _021D7A8C ; =0x000005DD
+ bl FUN_020054C8
+ ldr r1, [r5]
+ add r0, r5, #0
+ ldrh r1, [r1, #0x10]
+ mov r2, #1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD76_021D8C88
+ add r0, r5, #0
+ bl MOD76_021D8D24
+ add r0, r5, #0
+ bl MOD76_021D85E4
+ cmp r0, #4
+ bhs _021D7A6A
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD76_021D853C
+ mov r1, #0
+ b _021D7A74
+_021D7A6A:
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD76_021D853C
+ mov r1, #2
+_021D7A74:
+ ldr r0, _021D7A90 ; =0x00000186
+ strb r1, [r5, r0]
+ mov r1, #3
+ lsl r0, r1, #7
+ str r1, [r5, r0]
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021D7A82:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_021D7A88: .word 0x021C48B8
+_021D7A8C: .word 0x000005DD
+_021D7A90: .word 0x00000186
+ thumb_func_end MOD76_021D7974
+
+ thumb_func_start MOD76_021D7A94
+MOD76_021D7A94: ; 0x021D7A94
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D7AB0 ; =0x00000185
+ ldrb r0, [r4, r0]
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D7AAC
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+_021D7AAC:
+ mov r0, #2
+ pop {r4, pc}
+ .align 2, 0
+_021D7AB0: .word 0x00000185
+ thumb_func_end MOD76_021D7A94
+
+ thumb_func_start MOD76_021D7AB4
+MOD76_021D7AB4: ; 0x021D7AB4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ mov r0, #0x43
+ str r0, [sp]
+ ldr r0, [r4, #4]
+ ldr r1, _021D7AD8 ; =0x021D9034
+ mov r2, #1
+ mov r3, #0xc
+ bl FUN_02002198
+ mov r1, #0x43
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #4
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D7AD8: .word 0x021D9034
+ thumb_func_end MOD76_021D7AB4
+
+ thumb_func_start MOD76_021D7ADC
+MOD76_021D7ADC: ; 0x021D7ADC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x43
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x43
+ bl FUN_020021AC
+ cmp r0, #0
+ beq _021D7AFA
+ mov r1, #1
+ mvn r1, r1
+ cmp r0, r1
+ beq _021D7B0A
+ b _021D7B1A
+_021D7AFA:
+ ldr r1, _021D7B20 ; =0x00000186
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ lsl r2, r1, #3
+ ldr r1, _021D7B24 ; =0x021D8F1C
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r4, pc}
+_021D7B0A:
+ ldr r1, _021D7B20 ; =0x00000186
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ lsl r2, r1, #3
+ ldr r1, _021D7B28 ; =0x021D8F20
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r4, pc}
+_021D7B1A:
+ mov r0, #4
+ pop {r4, pc}
+ nop
+_021D7B20: .word 0x00000186
+_021D7B24: .word 0x021D8F1C
+_021D7B28: .word 0x021D8F20
+ thumb_func_end MOD76_021D7ADC
+
+ thumb_func_start MOD76_021D7B2C
+MOD76_021D7B2C: ; 0x021D7B2C
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ bl MOD76_021D8514
+ str r0, [sp]
+ ldr r1, [r4]
+ add r2, sp, #0
+ ldr r0, [r1]
+ ldrb r1, [r1, #0x17]
+ add r1, #0x36
+ bl FUN_02067830
+ mov r0, #0
+ str r0, [sp]
+ ldr r1, [r4]
+ add r2, sp, #0
+ ldr r0, [r1]
+ ldrb r1, [r1, #0x17]
+ add r1, #0x3e
+ bl FUN_02067830
+ add r0, r4, #0
+ bl MOD76_021D8514
+ mov r1, #0
+ bl FUN_0206AB30
+ str r0, [sp]
+ ldr r1, [r4]
+ add r2, sp, #0
+ ldr r0, [r1]
+ ldrb r1, [r1, #0x17]
+ add r1, #0x3a
+ bl FUN_02067830
+ ldr r0, [r4]
+ mov r1, #0
+ strb r1, [r0, #0x16]
+ mov r0, #8
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD76_021D7B2C
+
+ thumb_func_start MOD76_021D7B80
+MOD76_021D7B80: ; 0x021D7B80
+ push {r4, lr}
+ mov r1, #6
+ add r4, r0, #0
+ bl MOD76_021D853C
+ mov r0, #6
+ mov r1, #5
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ mov r0, #2
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D7B80
+
+ thumb_func_start MOD76_021D7B98
+MOD76_021D7B98: ; 0x021D7B98
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4]
+ ldrb r1, [r1, #0x17]
+ cmp r1, #4
+ bhs _021D7BAE
+ mov r1, #0xa
+ bl MOD76_021D853C
+ mov r1, #4
+ b _021D7BB6
+_021D7BAE:
+ mov r1, #7
+ bl MOD76_021D853C
+ mov r1, #3
+_021D7BB6:
+ ldr r0, _021D7BC4 ; =0x00000186
+ strb r1, [r4, r0]
+ mov r1, #3
+ lsl r0, r1, #7
+ str r1, [r4, r0]
+ mov r0, #2
+ pop {r4, pc}
+ .align 2, 0
+_021D7BC4: .word 0x00000186
+ thumb_func_end MOD76_021D7B98
+
+ thumb_func_start MOD76_021D7BC8
+MOD76_021D7BC8: ; 0x021D7BC8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #1
+ mov r1, #0x43
+ bl FUN_02079A70
+ mov r0, #6
+ mov r1, #9
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD76_021D7BC8
+
+ thumb_func_start MOD76_021D7BE0
+MOD76_021D7BE0: ; 0x021D7BE0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD76_021D8514
+ add r4, r0, #0
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x14]
+ cmp r0, #0
+ ldr r0, [r5, #4]
+ bne _021D7C3A
+ mov r2, #0
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_0201AEE4
+ add r0, r5, #0
+ add r0, #0x18
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x68
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0xb8
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #8
+ bl FUN_02019220
+ ldr r0, _021D7CC4 ; =0x0000FFFF
+ cmp r4, r0
+ beq _021D7C2E
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD76_021D800C
+ b _021D7CBC
+_021D7C2E:
+ mov r1, #1
+ add r0, r5, #0
+ mvn r1, r1
+ bl MOD76_021D800C
+ b _021D7CBC
+_021D7C3A:
+ mov r1, #2
+ add r3, r1, #0
+ mov r2, #0
+ add r3, #0xfe
+ bl FUN_0201AEE4
+ add r0, r5, #0
+ add r0, #8
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x28
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x38
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x48
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x58
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0xa8
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x78
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x88
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x98
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x18
+ bl FUN_02019220
+ ldr r0, _021D7CC4 ; =0x0000FFFF
+ cmp r4, r0
+ beq _021D7CA6
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD76_021D81AC
+ b _021D7CB0
+_021D7CA6:
+ mov r1, #1
+ add r0, r5, #0
+ mvn r1, r1
+ bl MOD76_021D81AC
+_021D7CB0:
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_0200C644
+_021D7CBC:
+ add r0, r5, #0
+ bl MOD76_021D8A58
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7CC4: .word 0x0000FFFF
+ thumb_func_end MOD76_021D7BE0
+
+ thumb_func_start MOD76_021D7CC8
+MOD76_021D7CC8: ; 0x021D7CC8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [sp, #0x28]
+ add r4, r1, #0
+ add r7, r3, #0
+ str r2, [sp, #0x10]
+ cmp r0, #0
+ beq _021D7CE4
+ cmp r0, #1
+ beq _021D7CE8
+ cmp r0, #2
+ beq _021D7D12
+ b _021D7D3E
+_021D7CE4:
+ mov r3, #0
+ b _021D7D3E
+_021D7CE8:
+ mov r1, #1
+ lsl r1, r1, #8
+ mov r0, #0
+ ldr r1, [r5, r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ add r1, r5, #0
+ lsr r6, r0, #0x18
+ add r1, #8
+ lsl r0, r4, #4
+ add r0, r1, r0
+ bl FUN_0201AB0C
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x18
+ sub r0, r0, r6
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ b _021D7D3E
+_021D7D12:
+ mov r1, #1
+ lsl r1, r1, #8
+ mov r0, #0
+ ldr r1, [r5, r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ add r1, r5, #0
+ lsr r6, r0, #0x18
+ add r1, #8
+ lsl r0, r4, #4
+ add r0, r1, r0
+ bl FUN_0201AB0C
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x18
+ sub r1, r0, r6
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ lsl r0, r0, #0x17
+ lsr r3, r0, #0x18
+_021D7D3E:
+ mov r0, #0
+ str r0, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ str r7, [sp, #8]
+ add r1, r5, #0
+ str r0, [sp, #0xc]
+ add r2, r2, #1
+ add r1, #8
+ lsl r0, r4, #4
+ add r0, r1, r0
+ ldr r1, [sp, #0x10]
+ ldr r2, [r5, r2]
+ bl FUN_0201BDE0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD76_021D7CC8
+
+ thumb_func_start MOD76_021D7D60
+MOD76_021D7D60: ; 0x021D7D60
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ add r6, r2, #0
+ add r7, r3, #0
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x10]
+ mov r1, #0
+ add r2, r6, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ add r3, r7, #0
+ bl FUN_0200AD38
+ add r0, r5, #0
+ mov r1, #1
+ add r0, #0xfc
+ lsl r1, r1, #8
+ ldr r0, [r0]
+ ldr r1, [r5, r1]
+ add r2, r4, #0
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D7D60
+
+ thumb_func_start MOD76_021D7DAC
+MOD76_021D7DAC: ; 0x021D7DAC
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r1, #0x1a
+ add r2, r1, #0
+ add r4, r0, #0
+ add r0, #0xf8
+ add r2, #0xe6
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r0, #2
+ mov r1, #0
+ str r0, [sp]
+ ldr r3, _021D7E9C ; =0x000F0E00
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD76_021D7CC8
+ mov r1, #0x1c
+ add r0, r4, #0
+ add r2, r1, #0
+ add r0, #0xf8
+ add r2, #0xe4
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r0, #2
+ str r0, [sp]
+ ldr r3, _021D7E9C ; =0x000F0E00
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD76_021D7CC8
+ mov r1, #0x16
+ add r0, r4, #0
+ add r2, r1, #0
+ add r0, #0xf8
+ add r2, #0xea
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r2, #0
+ ldr r3, _021D7E9C ; =0x000F0E00
+ add r0, r4, #0
+ mov r1, #2
+ str r2, [sp]
+ bl MOD76_021D7CC8
+ mov r1, #0x17
+ add r0, r4, #0
+ add r2, r1, #0
+ add r0, #0xf8
+ add r2, #0xe9
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r2, #0
+ ldr r3, _021D7E9C ; =0x000F0E00
+ add r0, r4, #0
+ mov r1, #3
+ str r2, [sp]
+ bl MOD76_021D7CC8
+ mov r1, #0x18
+ add r0, r4, #0
+ add r2, r1, #0
+ add r0, #0xf8
+ add r2, #0xe8
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r2, #0
+ ldr r3, _021D7E9C ; =0x000F0E00
+ add r0, r4, #0
+ mov r1, #4
+ str r2, [sp]
+ bl MOD76_021D7CC8
+ mov r1, #0x19
+ add r0, r4, #0
+ add r2, r1, #0
+ add r0, #0xf8
+ add r2, #0xe7
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r2, #0
+ ldr r3, _021D7EA0 ; =0x00010200
+ add r0, r4, #0
+ mov r1, #5
+ str r2, [sp]
+ bl MOD76_021D7CC8
+ mov r1, #0x1b
+ add r0, r4, #0
+ add r2, r1, #0
+ add r0, #0xf8
+ add r2, #0xe5
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r0, #2
+ str r0, [sp]
+ ldr r3, _021D7E9C ; =0x000F0E00
+ add r0, r4, #0
+ mov r1, #6
+ mov r2, #0
+ bl MOD76_021D7CC8
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D7E9C: .word 0x000F0E00
+_021D7EA0: .word 0x00010200
+ thumb_func_end MOD76_021D7DAC
+
+ thumb_func_start MOD76_021D7EA4
+MOD76_021D7EA4: ; 0x021D7EA4
+ push {r3, r4}
+ ldr r0, [r0]
+ ldr r1, _021D7EC8 ; =0x0000FFFF
+ ldr r4, [r0, #0xc]
+ mov r0, #1
+ mov r3, #0
+ lsl r0, r0, #8
+_021D7EB2:
+ ldrh r2, [r4]
+ cmp r2, r1
+ beq _021D7EC0
+ add r3, r3, #1
+ add r4, r4, #2
+ cmp r3, r0
+ blo _021D7EB2
+_021D7EC0:
+ add r0, r3, #0
+ pop {r3, r4}
+ bx lr
+ nop
+_021D7EC8: .word 0x0000FFFF
+ thumb_func_end MOD76_021D7EA4
+
+ thumb_func_start MOD76_021D7ECC
+MOD76_021D7ECC: ; 0x021D7ECC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ bl MOD76_021D7EA4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r1, r0, #1
+ mov r0, #0x61
+ lsl r0, r0, #2
+ strb r1, [r5, r0]
+ ldrb r0, [r5, r0]
+ mov r1, #0x43
+ bl FUN_02012838
+ mov r1, #0x42
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r2, #0x93
+ mov r0, #0
+ mov r1, #0x1a
+ lsl r2, r2, #2
+ mov r3, #0x43
+ bl FUN_0200A86C
+ add r7, r0, #0
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldrb r0, [r5, r0]
+ mov r4, #0
+ cmp r0, #0
+ bls _021D7F50
+ add r6, r4, #0
+_021D7F0E:
+ ldr r0, [r5]
+ ldr r0, [r0, #0xc]
+ ldrh r2, [r0, r6]
+ ldr r0, _021D7FA4 ; =0x0000FFFF
+ cmp r2, r0
+ beq _021D7F2A
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r7, #0
+ add r3, r2, #0
+ bl FUN_02012880
+ b _021D7F42
+_021D7F2A:
+ mov r0, #0x42
+ add r1, r5, #0
+ lsl r0, r0, #2
+ add r1, #0xf8
+ mov r2, #0x20
+ add r3, r2, #0
+ ldr r0, [r5, r0]
+ ldr r1, [r1]
+ sub r3, #0x22
+ bl FUN_02012880
+ b _021D7F50
+_021D7F42:
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldrb r0, [r5, r0]
+ add r4, r4, #1
+ add r6, r6, #2
+ cmp r4, r0
+ blo _021D7F0E
+_021D7F50:
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ ldr r4, _021D7FA8 ; =0x021D8EFC
+ add r3, sp, #0
+ 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}
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ add r0, #0x7c
+ str r1, [sp]
+ add r1, r5, #0
+ add r1, #0xd8
+ str r1, [sp, #0xc]
+ ldrb r1, [r5, r0]
+ add r0, sp, #0
+ strh r1, [r0, #0x10]
+ str r5, [sp, #0x1c]
+ ldr r3, [r5]
+ add r0, r2, #0
+ ldrh r1, [r3, #0x12]
+ ldrh r2, [r3, #0x10]
+ mov r3, #0x43
+ bl FUN_020010A8
+ mov r1, #0x41
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r5, #0xd8
+ add r0, r5, #0
+ bl FUN_02019220
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7FA4: .word 0x0000FFFF
+_021D7FA8: .word 0x021D8EFC
+ thumb_func_end MOD76_021D7ECC
+
+ thumb_func_start MOD76_021D7FAC
+MOD76_021D7FAC: ; 0x021D7FAC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r2, [r4]
+ mov r0, #0x41
+ add r1, r2, #0
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, #0x12
+ add r2, #0x10
+ bl FUN_02001300
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D7FAC
+
+ thumb_func_start MOD76_021D7FD0
+MOD76_021D7FD0: ; 0x021D7FD0
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ mov r1, #0x13
+ add r6, r2, #0
+ bl FUN_02001470
+ add r4, r0, #0
+ cmp r6, #1
+ beq _021D7FE8
+ ldr r0, _021D8004 ; =0x000005DD
+ bl FUN_020054C8
+_021D7FE8:
+ ldr r0, [r4]
+ ldrb r0, [r0, #0x14]
+ cmp r0, #0
+ bne _021D7FFA
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD76_021D800C
+ pop {r4, r5, r6, pc}
+_021D7FFA:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD76_021D81AC
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D8004: .word 0x000005DD
+ thumb_func_end MOD76_021D7FD0
+
+ thumb_func_start MOD76_021D8008
+MOD76_021D8008: ; 0x021D8008
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD76_021D8008
+
+ thumb_func_start MOD76_021D800C
+MOD76_021D800C: ; 0x021D800C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0xa8
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ add r0, #0x78
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ add r0, #0x88
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ add r0, #0x98
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _021D8050
+ b _021D815E
+_021D8050:
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_0206AB18
+ add r2, r0, #0
+ cmp r2, #1
+ bhi _021D8072
+ mov r1, #0x21
+ add r0, r5, #0
+ add r2, r1, #0
+ add r0, #0xf8
+ add r2, #0xdf
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ b _021D8080
+_021D8072:
+ mov r0, #1
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0x1d
+ mov r3, #3
+ bl MOD76_021D7D60
+_021D8080:
+ mov r0, #2
+ str r0, [sp]
+ ldr r3, _021D81A4 ; =0x00010200
+ add r0, r5, #0
+ mov r1, #7
+ mov r2, #0
+ bl MOD76_021D7CC8
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_0206AB18
+ add r2, r0, #0
+ bne _021D80B0
+ mov r1, #0x21
+ add r0, r5, #0
+ add r2, r1, #0
+ add r0, #0xf8
+ add r2, #0xdf
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ b _021D80BE
+_021D80B0:
+ mov r0, #1
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0x1e
+ mov r3, #3
+ bl MOD76_021D7D60
+_021D80BE:
+ mov r0, #2
+ str r0, [sp]
+ ldr r3, _021D81A4 ; =0x00010200
+ add r0, r5, #0
+ mov r1, #8
+ mov r2, #0
+ bl MOD76_021D7CC8
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0
+ bl FUN_0206AB30
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0x1f
+ mov r3, #2
+ bl MOD76_021D7D60
+ mov r0, #2
+ str r0, [sp]
+ ldr r3, _021D81A4 ; =0x00010200
+ add r0, r5, #0
+ mov r1, #9
+ mov r2, #0
+ bl MOD76_021D7CC8
+ ldr r2, _021D81A8 ; =0x0000024B
+ mov r0, #1
+ mov r1, #0x1a
+ mov r3, #0x43
+ bl FUN_0200A86C
+ mov r2, #1
+ lsl r2, r2, #8
+ ldr r2, [r5, r2]
+ add r1, r4, #0
+ add r6, r0, #0
+ bl FUN_0200A8E0
+ mov r2, #0
+ ldr r3, _021D81A4 ; =0x00010200
+ add r0, r5, #0
+ mov r1, #0xa
+ str r2, [sp]
+ bl MOD76_021D7CC8
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ lsl r1, r4, #0x10
+ add r0, r5, #0
+ lsr r1, r1, #0x10
+ bl MOD76_021D8BF8
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_0200C644
+ add r0, r5, #0
+ add r0, #0x28
+ bl FUN_02019220
+ add r0, r5, #0
+ add r0, #0x38
+ bl FUN_02019220
+ add r0, r5, #0
+ add r0, #0x48
+ bl FUN_02019220
+ add r0, r5, #0
+ add r0, #0x58
+ bl FUN_02019220
+ b _021D817E
+_021D815E:
+ add r0, r5, #0
+ add r0, #0x28
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x38
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x48
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x58
+ bl FUN_0201958C
+_021D817E:
+ add r0, r5, #0
+ add r0, #0xa8
+ bl FUN_02019220
+ add r0, r5, #0
+ add r0, #0x78
+ bl FUN_02019220
+ add r0, r5, #0
+ add r0, #0x88
+ bl FUN_02019220
+ add r5, #0x98
+ add r0, r5, #0
+ bl FUN_02019220
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D81A4: .word 0x00010200
+_021D81A8: .word 0x0000024B
+ thumb_func_end MOD76_021D800C
+
+ thumb_func_start MOD76_021D81AC
+MOD76_021D81AC: ; 0x021D81AC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0xb8
+ mov r1, #0
+ bl FUN_02019620
+ mov r1, #1
+ mvn r1, r1
+ cmp r4, r1
+ beq _021D8222
+ add r0, r4, #0
+ mov r1, #0xa
+ bl FUN_0206AB18
+ bl FUN_0208315C
+ add r6, r0, #0
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #0xc5
+ mov r3, #0x43
+ bl FUN_0200A86C
+ mov r2, #1
+ lsl r2, r2, #8
+ ldr r2, [r5, r2]
+ add r1, r6, #0
+ add r7, r0, #0
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ ldr r0, _021D8240 ; =0x00010200
+ add r2, r2, #1
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ ldr r2, [r5, r2]
+ add r0, #0xb8
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ lsl r1, r4, #0x10
+ add r0, r5, #0
+ lsr r1, r1, #0x10
+ bl MOD76_021D8300
+ add r0, r5, #0
+ add r0, #0x68
+ bl FUN_02019220
+ b _021D8232
+_021D8222:
+ add r0, r5, #0
+ lsr r1, r1, #0x10
+ bl MOD76_021D8300
+ add r0, r5, #0
+ add r0, #0x68
+ bl FUN_0201958C
+_021D8232:
+ add r5, #0xb8
+ add r0, r5, #0
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8240: .word 0x00010200
+ thumb_func_end MOD76_021D81AC
+
+ thumb_func_start MOD76_021D8244
+MOD76_021D8244: ; 0x021D8244
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #5
+ lsl r6, r2, #1
+ str r0, [sp]
+ add r4, r1, #0
+ mov r0, #1
+ add r7, r6, #0
+ str r0, [sp, #4]
+ add r7, #0x22
+ str r0, [sp, #8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ lsl r3, r7, #0x18
+ ldr r0, [r5, #4]
+ mov r1, #2
+ add r2, r4, #0
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r6, #0x23
+ str r0, [sp, #8]
+ mov r0, #0x10
+ add r2, r4, #1
+ str r0, [sp, #0xc]
+ lsl r2, r2, #0x10
+ lsl r3, r6, #0x18
+ ldr r0, [r5, #4]
+ mov r1, #2
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r2, r4, #0
+ str r0, [sp, #8]
+ mov r0, #0x10
+ add r2, #0x20
+ str r0, [sp, #0xc]
+ lsl r2, r2, #0x10
+ lsl r3, r7, #0x18
+ ldr r0, [r5, #4]
+ mov r1, #2
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x10
+ add r4, #0x21
+ str r0, [sp, #0xc]
+ lsl r2, r4, #0x10
+ lsl r3, r6, #0x18
+ ldr r0, [r5, #4]
+ mov r1, #2
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D8244
+
+ thumb_func_start MOD76_021D82D8
+MOD76_021D82D8: ; 0x021D82D8
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r4, #0
+ mov r6, #0x12
+_021D82E0:
+ lsl r2, r4, #0x18
+ add r0, r5, #0
+ add r1, r6, #0
+ lsr r2, r2, #0x18
+ bl MOD76_021D8244
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #6
+ blo _021D82E0
+ ldr r0, [r5, #4]
+ mov r1, #2
+ bl FUN_0201AC68
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD76_021D82D8
+
+ thumb_func_start MOD76_021D8300
+MOD76_021D8300: ; 0x021D8300
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD76_021D82D8
+ ldr r0, _021D8350 ; =0x0000FFFF
+ cmp r4, r0
+ beq _021D8344
+ add r0, r4, #0
+ mov r1, #0xa
+ bl FUN_0206AB18
+ bl FUN_02083114
+ mov r1, #0xa
+ bl _s32_div_f
+ lsl r0, r0, #0x18
+ asr r6, r0, #0x18
+ mov r4, #0
+ cmp r6, #0
+ ble _021D8344
+ mov r7, #0xe
+_021D832E:
+ lsl r2, r4, #0x18
+ add r0, r5, #0
+ add r1, r7, #0
+ lsr r2, r2, #0x18
+ bl MOD76_021D8244
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, r6
+ blt _021D832E
+_021D8344:
+ ldr r0, [r5, #4]
+ mov r1, #2
+ bl FUN_0201AC68
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8350: .word 0x0000FFFF
+ thumb_func_end MOD76_021D8300
+
+ thumb_func_start MOD76_021D8354
+MOD76_021D8354: ; 0x021D8354
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #0xa
+ bls _021D8360
+ b _021D84D8
+_021D8360:
+ add r1, r5, r5
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D836C: ; jump table
+ .short _021D8382 - _021D836C - 2 ; case 0
+ .short _021D839A - _021D836C - 2 ; case 1
+ .short _021D83AE - _021D836C - 2 ; case 2
+ .short _021D83C6 - _021D836C - 2 ; case 3
+ .short _021D83F2 - _021D836C - 2 ; case 4
+ .short _021D841E - _021D836C - 2 ; case 5
+ .short _021D844A - _021D836C - 2 ; case 6
+ .short _021D8476 - _021D836C - 2 ; case 7
+ .short _021D848A - _021D836C - 2 ; case 8
+ .short _021D84B6 - _021D836C - 2 ; case 9
+ .short _021D84C6 - _021D836C - 2 ; case 10
+_021D8382:
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ b _021D84D8
+_021D839A:
+ bl MOD76_021D8514
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_0200AD5C
+ b _021D84D8
+_021D83AE:
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ b _021D84D8
+_021D83C6:
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ add r0, r4, #0
+ bl MOD76_021D8514
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_0200AD5C
+ b _021D84D8
+_021D83F2:
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ add r0, r4, #0
+ bl MOD76_021D8514
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_0200AD5C
+ b _021D84D8
+_021D841E:
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ add r0, r4, #0
+ bl MOD76_021D8524
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_0200AD5C
+ b _021D84D8
+_021D844A:
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ add r0, r4, #0
+ bl MOD76_021D8514
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_0200AD5C
+ b _021D84D8
+_021D8476:
+ bl MOD76_021D8514
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_0200AD5C
+ b _021D84D8
+_021D848A:
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ add r0, r4, #0
+ bl MOD76_021D8514
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_0200AD5C
+ b _021D84D8
+_021D84B6:
+ ldr r2, [r4]
+ add r0, #0xfc
+ ldr r0, [r0]
+ ldr r2, [r2, #4]
+ mov r1, #2
+ bl FUN_0200ABC0
+ b _021D84D8
+_021D84C6:
+ bl MOD76_021D8524
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200AD5C
+_021D84D8:
+ ldr r1, [r4]
+ add r0, r4, #0
+ ldrb r2, [r1, #0x15]
+ add r0, #0xf8
+ mov r1, #0x2c
+ add r3, r2, #0
+ mul r3, r1
+ ldr r1, _021D8510 ; =0x021D8F6C
+ lsl r2, r5, #2
+ add r1, r1, r3
+ ldr r0, [r0]
+ ldr r1, [r2, r1]
+ bl FUN_0200A914
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0xfc
+ lsl r1, r1, #8
+ ldr r0, [r0]
+ ldr r1, [r4, r1]
+ add r2, r5, #0
+ bl FUN_0200B7B8
+ add r0, r5, #0
+ bl FUN_02021A20
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8510: .word 0x021D8F6C
+ thumb_func_end MOD76_021D8354
+
+ thumb_func_start MOD76_021D8514
+MOD76_021D8514: ; 0x021D8514
+ ldr r0, [r0]
+ ldr r2, [r0, #0xc]
+ ldrh r1, [r0, #0x12]
+ ldrh r0, [r0, #0x10]
+ add r0, r1, r0
+ lsl r0, r0, #1
+ ldrh r0, [r2, r0]
+ bx lr
+ thumb_func_end MOD76_021D8514
+
+ thumb_func_start MOD76_021D8524
+MOD76_021D8524: ; 0x021D8524
+ push {r3, lr}
+ ldr r1, [r0]
+ mov r2, #0
+ ldr r0, [r1]
+ ldrb r1, [r1, #0x17]
+ add r1, #0x36
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D8524
+
+ thumb_func_start MOD76_021D853C
+MOD76_021D853C: ; 0x021D853C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r5, r1, #0
+ add r0, #0xc8
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD76_021D8354
+ mov r0, #1
+ bl FUN_02002B60
+ mov r0, #0
+ bl FUN_02002B7C
+ ldr r0, [r4]
+ ldr r0, [r0, #8]
+ bl FUN_02024FF4
+ mov r3, #0
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D858C ; =MOD76_021D8594
+ mov r1, #1
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r2, #0xff
+ add r0, r4, #0
+ ldr r2, [r4, r2]
+ add r0, #0xc8
+ bl FUN_0201BD84
+ ldr r1, _021D8590 ; =0x00000185
+ strb r0, [r4, r1]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_021D858C: .word MOD76_021D8594
+_021D8590: .word 0x00000185
+ thumb_func_end MOD76_021D853C
+
+ thumb_func_start MOD76_021D8594
+MOD76_021D8594: ; 0x021D8594
+ push {r3, lr}
+ cmp r1, #5
+ bhi _021D85D6
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D85A6: ; jump table
+ .short _021D85D6 - _021D85A6 - 2 ; case 0
+ .short _021D85B2 - _021D85A6 - 2 ; case 1
+ .short _021D85B8 - _021D85A6 - 2 ; case 2
+ .short _021D85BE - _021D85A6 - 2 ; case 3
+ .short _021D85C6 - _021D85A6 - 2 ; case 4
+ .short _021D85CE - _021D85A6 - 2 ; case 5
+_021D85B2:
+ bl FUN_02005514
+ pop {r3, pc}
+_021D85B8:
+ bl FUN_02005CBC
+ pop {r3, pc}
+_021D85BE:
+ ldr r0, _021D85DC ; =0x000005E6
+ bl FUN_020054C8
+ b _021D85D6
+_021D85C6:
+ ldr r0, _021D85E0 ; =0x00000483
+ bl FUN_02005C28
+ b _021D85D6
+_021D85CE:
+ ldr r0, _021D85DC ; =0x000005E6
+ bl FUN_02005508
+ pop {r3, pc}
+_021D85D6:
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_021D85DC: .word 0x000005E6
+_021D85E0: .word 0x00000483
+ thumb_func_end MOD76_021D8594
+
+ thumb_func_start MOD76_021D85E4
+MOD76_021D85E4: ; 0x021D85E4
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+_021D85EC:
+ ldr r0, [r5]
+ add r1, r4, #0
+ ldr r0, [r0]
+ add r1, #0x36
+ add r2, r6, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021D8608
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021D85EC
+_021D8608:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD76_021D85E4
+
+ thumb_func_start MOD76_021D860C
+MOD76_021D860C: ; 0x021D860C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #3
+ bl MOD76_021D853C
+ add r0, r4, #0
+ bl MOD76_021D85E4
+ ldr r1, [r4]
+ strb r0, [r1, #0x17]
+ mov r0, #6
+ mov r1, #5
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ mov r0, #2
+ pop {r4, pc}
+ thumb_func_end MOD76_021D860C
+
+ thumb_func_start MOD76_021D862C
+MOD76_021D862C: ; 0x021D862C
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ add r0, #0xc8
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD76_021D8354
+ mov r0, #0
+ str r0, [sp]
+ ldr r3, _021D8678 ; =0x0001020F
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #1
+ bl MOD76_021D7CC8
+ add r0, r4, #0
+ add r0, #0xc8
+ bl FUN_02019220
+ ldr r1, [r4]
+ add r0, r4, #0
+ ldrh r1, [r1, #0x10]
+ mov r2, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD76_021D8C88
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD76_021D8CB4
+ mov r0, #1
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D8678: .word 0x0001020F
+ thumb_func_end MOD76_021D862C
+
+ thumb_func_start MOD76_021D867C
+MOD76_021D867C: ; 0x021D867C
+ ldr r0, [r0]
+ mov r1, #1
+ strb r1, [r0, #0x16]
+ mov r0, #8
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD76_021D867C
+
+ thumb_func_start MOD76_021D8688
+MOD76_021D8688: ; 0x021D8688
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ add r0, #0xc8
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD76_021D8354
+ mov r0, #0
+ str r0, [sp]
+ ldr r3, _021D86D4 ; =0x0001020F
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #1
+ bl MOD76_021D7CC8
+ add r0, r4, #0
+ add r0, #0xc8
+ bl FUN_02019220
+ ldr r1, [r4]
+ add r0, r4, #0
+ ldrh r1, [r1, #0x10]
+ mov r2, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD76_021D8C88
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD76_021D8CB4
+ mov r0, #1
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D86D4: .word 0x0001020F
+ thumb_func_end MOD76_021D8688
+
+ thumb_func_start MOD76_021D86D8
+MOD76_021D86D8: ; 0x021D86D8
+ mov r1, #6
+ mov r2, #0xa
+ lsl r1, r1, #6
+ str r2, [r0, r1]
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD76_021D86D8
+
+ thumb_func_start MOD76_021D86E4
+MOD76_021D86E4: ; 0x021D86E4
+ push {r4, lr}
+ mov r1, #7
+ add r4, r0, #0
+ bl MOD76_021D853C
+ ldr r0, _021D86FC ; =0x00000186
+ mov r1, #3
+ strb r1, [r4, r0]
+ sub r0, r0, #6
+ str r1, [r4, r0]
+ mov r0, #2
+ pop {r4, pc}
+ .align 2, 0
+_021D86FC: .word 0x00000186
+ thumb_func_end MOD76_021D86E4
+
+ thumb_func_start MOD76_021D8700
+MOD76_021D8700: ; 0x021D8700
+ push {r4, lr}
+ mov r1, #8
+ add r4, r0, #0
+ bl MOD76_021D853C
+ mov r0, #6
+ mov r1, #8
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ ldr r0, [r4]
+ mov r1, #1
+ strb r1, [r0, #0x16]
+ mov r0, #2
+ pop {r4, pc}
+ thumb_func_end MOD76_021D8700
+
+ thumb_func_start MOD76_021D871C
+MOD76_021D871C: ; 0x021D871C
+ push {r4, lr}
+ mov r1, #4
+ add r4, r0, #0
+ bl MOD76_021D853C
+ ldr r1, _021D8734 ; =0x00000186
+ mov r0, #2
+ mov r2, #3
+ strb r0, [r4, r1]
+ lsl r1, r2, #7
+ str r2, [r4, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021D8734: .word 0x00000186
+ thumb_func_end MOD76_021D871C
+
+ thumb_func_start MOD76_021D8738
+MOD76_021D8738: ; 0x021D8738
+ push {r4, lr}
+ mov r1, #5
+ add r4, r0, #0
+ bl MOD76_021D853C
+ mov r1, #6
+ lsl r0, r1, #6
+ str r1, [r4, r0]
+ mov r0, #2
+ pop {r4, pc}
+ thumb_func_end MOD76_021D8738
+
+ thumb_func_start MOD76_021D874C
+MOD76_021D874C: ; 0x021D874C
+ mov r1, #6
+ mov r2, #0xa
+ lsl r1, r1, #6
+ str r2, [r0, r1]
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD76_021D874C
+
+ thumb_func_start MOD76_021D8758
+MOD76_021D8758: ; 0x021D8758
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x4c
+ ldr r3, _021D87EC ; =0x021D8E70
+ add r2, sp, #0x34
+ add r4, r0, #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}
+ mov r0, #0x40
+ mov r1, #0x43
+ bl FUN_0201C24C
+ mov r0, #0x43
+ bl FUN_0200BB14
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ bl FUN_0200BB34
+ mov r7, #0x45
+ lsl r7, r7, #2
+ add r2, sp, #0x14
+ ldr r3, _021D87F0 ; =0x021D8EDC
+ str r0, [r4, r7]
+ ldmia r3!, {r0, r1}
+ add r6, r2, #0
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ ldr r5, _021D87F4 ; =0x021D8E5C
+ stmia r2!, {r0, r1}
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ add r1, r6, #0
+ str r0, [r3]
+ sub r0, r7, #4
+ ldr r0, [r4, r0]
+ mov r3, #0x20
+ bl FUN_0200BB6C
+ sub r1, r7, #4
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ mov r2, #0xd
+ bl FUN_0200BBF0
+ sub r1, r7, #4
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ add r2, sp, #0x34
+ bl FUN_0200BF60
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D87EC: .word 0x021D8E70
+_021D87F0: .word 0x021D8EDC
+_021D87F4: .word 0x021D8E5C
+ thumb_func_end MOD76_021D8758
+
+ thumb_func_start MOD76_021D87F8
+MOD76_021D87F8: ; 0x021D87F8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r6, #0x46
+ mov r4, #0
+ add r5, r7, #0
+ lsl r6, r6, #2
+_021D8804:
+ ldr r0, [r5, r6]
+ bl FUN_0200C3DC
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xd
+ blo _021D8804
+ mov r1, #0x11
+ lsl r1, r1, #4
+ ldr r0, [r7, r1]
+ add r1, r1, #4
+ ldr r1, [r7, r1]
+ bl FUN_0200C398
+ mov r0, #0x11
+ lsl r0, r0, #4
+ ldr r0, [r7, r0]
+ bl FUN_0200BD04
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD76_021D87F8
+
+ thumb_func_start MOD76_021D882C
+MOD76_021D882C: ; 0x021D882C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #1
+ mov r6, #0x46
+ add r5, r0, #0
+ mov r4, #0
+ lsl r7, r7, #0xc
+ lsl r6, r6, #2
+_021D883A:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ add r1, r7, #0
+ ldr r0, [r0]
+ bl FUN_020201E4
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0xd
+ blo _021D883A
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD76_021D882C
+
+ thumb_func_start MOD76_021D8854
+MOD76_021D8854: ; 0x021D8854
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _021D89D0 ; =0x0000B8A8
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #5
+ bl FUN_0200C00C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _021D89D4 ; =0x0000B8A9
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #8
+ bl FUN_0200C00C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _021D89D8 ; =0x0000B8AA
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #2
+ bl FUN_0200C00C
+ ldr r4, _021D89DC ; =0x0000B8AC
+ mov r7, #0x45
+ lsl r7, r7, #2
+ add r6, r4, #6
+_021D88BC:
+ mov r0, #0x11
+ str r4, [sp]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r7]
+ mov r2, #1
+ mov r3, #0
+ bl FUN_0206E130
+ add r4, r4, #1
+ cmp r4, r6
+ bls _021D88BC
+ ldr r0, _021D89E0 ; =0x0000B8AB
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #1
+ mov r3, #0
+ bl FUN_0206E2AC
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, _021D89D0 ; =0x0000B8A8
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #9
+ bl FUN_0200C06C
+ mov r1, #0x11
+ lsl r1, r1, #4
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ ldr r3, _021D89D4 ; =0x0000B8A9
+ mov r2, #1
+ bl FUN_0206E164
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D89D0 ; =0x0000B8A8
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #4]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #4
+ bl FUN_0200C124
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D89D4 ; =0x0000B8A9
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #4]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #7
+ bl FUN_0200C124
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D89D8 ; =0x0000B8AA
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #4]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #1
+ bl FUN_0200C124
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D89D0 ; =0x0000B8A8
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #4]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #3
+ bl FUN_0200C13C
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D89D4 ; =0x0000B8A9
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #4]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #6
+ bl FUN_0200C13C
+ mov r3, #0
+ mov r1, #0x11
+ ldr r0, _021D89D8 ; =0x0000B8AA
+ str r3, [sp]
+ lsl r1, r1, #4
+ str r0, [sp, #4]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ bl FUN_0200C13C
+ mov r1, #0x11
+ lsl r1, r1, #4
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r2, _021D89E0 ; =0x0000B8AB
+ ldr r1, [r5, r1]
+ add r3, r2, #0
+ bl FUN_0206E1D4
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D89D0: .word 0x0000B8A8
+_021D89D4: .word 0x0000B8A9
+_021D89D8: .word 0x0000B8AA
+_021D89DC: .word 0x0000B8AC
+_021D89E0: .word 0x0000B8AB
+ thumb_func_end MOD76_021D8854
+
+ thumb_func_start MOD76_021D89E4
+MOD76_021D89E4: ; 0x021D89E4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r2, #0
+ ldrb r0, [r0, #0x14]
+ cmp r0, #0
+ bne _021D8A00
+ add r0, r1, #0
+ mov r1, #3
+ bl FUN_0206AB18
+ add r6, r0, #0
+ b _021D8A0C
+_021D8A00:
+ add r0, r1, #0
+ mov r1, #0xb
+ bl FUN_0206AB18
+ add r6, r0, #0
+ add r6, #0x12
+_021D8A0C:
+ bl FUN_0206E12C
+ add r7, r0, #0
+ add r0, r6, #0
+ bl FUN_0206E0F0
+ add r3, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _021D8A54 ; =0x0000B8AC
+ mov r1, #0x11
+ add r0, r4, r0
+ lsl r1, r1, #4
+ str r0, [sp, #4]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ add r2, r7, #0
+ bl FUN_0200C9D8
+ add r0, r6, #0
+ bl FUN_0206E114
+ add r1, r0, #0
+ add r0, r4, #6
+ lsl r0, r0, #2
+ add r2, r5, r0
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r2, r0]
+ add r1, r1, #2
+ bl FUN_0200C66C
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8A54: .word 0x0000B8AC
+ thumb_func_end MOD76_021D89E4
+
+ thumb_func_start MOD76_021D8A58
+MOD76_021D8A58: ; 0x021D8A58
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r4, #0
+ mov r7, #0x20
+ add r5, r6, #0
+_021D8A62:
+ mov r0, #0x13
+ lsl r0, r0, #4
+ lsl r2, r7, #0x10
+ ldr r0, [r5, r0]
+ mov r1, #0x98
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ ldr r0, [r6]
+ mov r1, #0x61
+ lsl r1, r1, #2
+ ldrh r0, [r0, #0x12]
+ ldrb r1, [r6, r1]
+ add r0, r0, r4
+ sub r1, r1, #1
+ cmp r0, r1
+ blo _021D8A92
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ b _021D8AB4
+_021D8A92:
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_0200C644
+ ldr r2, [r6]
+ add r0, r6, #0
+ ldr r1, [r2, #0xc]
+ ldrh r2, [r2, #0x12]
+ add r2, r2, r4
+ lsl r2, r2, #1
+ ldrh r1, [r1, r2]
+ lsl r2, r4, #0x10
+ lsr r2, r2, #0x10
+ bl MOD76_021D89E4
+_021D8AB4:
+ add r4, r4, #1
+ add r7, #0x10
+ add r5, r5, #4
+ cmp r4, #7
+ blo _021D8A62
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD76_021D8A58
+
+ thumb_func_start MOD76_021D8AC0
+MOD76_021D8AC0: ; 0x021D8AC0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ str r2, [sp]
+ cmp r1, r2
+ bhs _021D8B30
+ ldr r0, [sp]
+ mov r6, #0
+ add r0, r0, #6
+ lsl r0, r0, #1
+ add r4, r5, #0
+ str r0, [sp, #4]
+ add r7, sp, #0xc
+_021D8ADA:
+ mov r0, #0x13
+ lsl r0, r0, #4
+ add r1, sp, #0xc
+ ldr r0, [r4, r0]
+ add r1, #2
+ add r2, sp, #0xc
+ bl FUN_0200C7A0
+ mov r0, #0
+ ldrsh r0, [r7, r0]
+ cmp r0, #0x20
+ bne _021D8B10
+ mov r0, #0x80
+ strh r0, [r7]
+ ldr r0, [r5]
+ ldr r1, [r0, #0xc]
+ ldr r0, [sp, #4]
+ ldrh r1, [r0, r1]
+ ldr r0, _021D8BF4 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021D8B14
+ lsl r2, r6, #0x10
+ add r0, r5, #0
+ lsr r2, r2, #0x10
+ bl MOD76_021D89E4
+ b _021D8B14
+_021D8B10:
+ sub r0, #0x10
+ strh r0, [r7]
+_021D8B14:
+ mov r0, #0x13
+ mov r1, #2
+ mov r2, #0
+ lsl r0, r0, #4
+ ldrsh r1, [r7, r1]
+ ldrsh r2, [r7, r2]
+ ldr r0, [r4, r0]
+ bl FUN_0200C714
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #7
+ blo _021D8ADA
+ b _021D8B94
+_021D8B30:
+ ldr r0, [sp]
+ cmp r1, r0
+ bls _021D8BF0
+ lsl r0, r0, #1
+ mov r6, #0
+ add r4, r5, #0
+ str r0, [sp, #8]
+ add r7, sp, #0xc
+_021D8B40:
+ mov r0, #0x13
+ lsl r0, r0, #4
+ add r1, sp, #0xc
+ ldr r0, [r4, r0]
+ add r1, #2
+ add r2, sp, #0xc
+ bl FUN_0200C7A0
+ mov r0, #0
+ ldrsh r0, [r7, r0]
+ cmp r0, #0x80
+ bne _021D8B76
+ mov r0, #0x20
+ strh r0, [r7]
+ ldr r0, [r5]
+ ldr r1, [r0, #0xc]
+ ldr r0, [sp, #8]
+ ldrh r1, [r0, r1]
+ ldr r0, _021D8BF4 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021D8B7A
+ lsl r2, r6, #0x10
+ add r0, r5, #0
+ lsr r2, r2, #0x10
+ bl MOD76_021D89E4
+ b _021D8B7A
+_021D8B76:
+ add r0, #0x10
+ strh r0, [r7]
+_021D8B7A:
+ mov r0, #0x13
+ mov r1, #2
+ mov r2, #0
+ lsl r0, r0, #4
+ ldrsh r1, [r7, r1]
+ ldrsh r2, [r7, r2]
+ ldr r0, [r4, r0]
+ bl FUN_0200C714
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #7
+ blo _021D8B40
+_021D8B94:
+ mov r6, #0
+ add r4, r5, #0
+ add r7, sp, #0xc
+_021D8B9A:
+ mov r0, #0x13
+ lsl r0, r0, #4
+ add r1, sp, #0xc
+ ldr r0, [r4, r0]
+ add r1, #2
+ add r2, sp, #0xc
+ bl FUN_0200C7A0
+ mov r0, #0
+ ldrsh r1, [r7, r0]
+ sub r1, #0x20
+ asr r0, r1, #3
+ lsr r0, r0, #0x1c
+ add r0, r1, r0
+ asr r0, r0, #4
+ strh r0, [r7]
+ mov r0, #0
+ ldrsh r1, [r7, r0]
+ ldr r0, [sp]
+ add r0, r0, r1
+ mov r1, #0x61
+ lsl r1, r1, #2
+ ldrb r1, [r5, r1]
+ sub r1, r1, #1
+ cmp r0, r1
+ blt _021D8BDC
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ b _021D8BE8
+_021D8BDC:
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_0200C644
+_021D8BE8:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #7
+ blo _021D8B9A
+_021D8BF0:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8BF4: .word 0x0000FFFF
+ thumb_func_end MOD76_021D8AC0
+
+ thumb_func_start MOD76_021D8BF8
+MOD76_021D8BF8: ; 0x021D8BF8
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r0, r1, #0
+ mov r1, #1
+ bl FUN_0206AB18
+ add r4, r0, #0
+ bl FUN_0206E2A8
+ add r6, r0, #0
+ add r0, r4, #0
+ bl FUN_0206E278
+ add r3, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _021D8C48 ; =0x0000B8AB
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #4]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ add r2, r6, #0
+ bl FUN_0200C9D8
+ add r0, r4, #0
+ bl FUN_0206E290
+ add r1, r0, #0
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r1, #2
+ bl FUN_0200C66C
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ nop
+_021D8C48: .word 0x0000B8AB
+ thumb_func_end MOD76_021D8BF8
+
+ thumb_func_start MOD76_021D8C4C
+MOD76_021D8C4C: ; 0x021D8C4C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ bl MOD76_021D8758
+ add r0, r6, #0
+ bl MOD76_021D8854
+ ldr r4, _021D8C84 ; =0x021D903C
+ mov r7, #0
+ add r5, r6, #0
+_021D8C60:
+ mov r0, #0x11
+ mov r1, #0x45
+ lsl r0, r0, #4
+ lsl r1, r1, #2
+ ldr r0, [r6, r0]
+ ldr r1, [r6, r1]
+ add r2, r4, #0
+ bl FUN_0200C154
+ mov r1, #0x46
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r7, r7, #1
+ add r4, #0x34
+ add r5, r5, #4
+ cmp r7, #0xd
+ blo _021D8C60
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8C84: .word 0x021D903C
+ thumb_func_end MOD76_021D8C4C
+
+ thumb_func_start MOD76_021D8C88
+MOD76_021D8C88: ; 0x021D8C88
+ push {r3, r4, r5, lr}
+ add r3, r1, #0
+ add r5, r0, #0
+ add r4, r2, #0
+ mov r0, #0x4a
+ lsl r2, r3, #4
+ lsl r0, r0, #2
+ add r2, #0x20
+ lsl r2, r2, #0x10
+ ldr r0, [r5, r0]
+ mov r1, #0xc4
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ mov r0, #0x4a
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ bl FUN_0200C66C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D8C88
+
+ thumb_func_start MOD76_021D8CB4
+MOD76_021D8CB4: ; 0x021D8CB4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ bl FUN_0200C644
+ mov r0, #0x47
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ bl FUN_0200C644
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D8CB4
+
+ thumb_func_start MOD76_021D8CD4
+MOD76_021D8CD4: ; 0x021D8CD4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldrh r0, [r0, #0x12]
+ cmp r0, #0
+ beq _021D8CEE
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_0200C644
+ b _021D8CFA
+_021D8CEE:
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C644
+_021D8CFA:
+ ldr r0, [r4]
+ ldrh r0, [r0, #0x12]
+ add r2, r0, #7
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldrb r1, [r4, r0]
+ cmp r2, r1
+ bge _021D8D16
+ sub r0, #0x60
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_0200C644
+ pop {r4, pc}
+_021D8D16:
+ sub r0, #0x60
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D8CD4
+
+ thumb_func_start MOD76_021D8D24
+MOD76_021D8D24: ; 0x021D8D24
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D8D24
+
+ thumb_func_start MOD76_021D8D44
+MOD76_021D8D44: ; 0x021D8D44
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #1
+ mov r1, #0x43
+ bl FUN_02079A70
+ mov r0, #6
+ mov r1, #0xb
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD76_021D8D44
+
+ thumb_func_start MOD76_021D8D5C
+MOD76_021D8D5C: ; 0x021D8D5C
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r2, _021D8DE4 ; =0x021D8E48
+ add r1, sp, #0
+ ldrb r3, [r2]
+ add r4, r0, #0
+ strb r3, [r1]
+ ldrb r3, [r2, #1]
+ ldrb r2, [r2, #2]
+ strb r3, [r1, #1]
+ strb r2, [r1, #2]
+ bl MOD76_021D76B8
+ ldr r0, [r4]
+ mov r1, #0x53
+ ldr r0, [r0]
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4]
+ ldr r2, [r0, #8]
+ add r0, r1, #4
+ str r2, [r4, r0]
+ add r0, r1, #0
+ mov r2, #0
+ add r0, #0x11
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ add r0, #0x14
+ strb r2, [r4, r0]
+ mov r0, #1
+ add r1, #0x13
+ strb r0, [r4, r1]
+ add r0, r4, #0
+ bl MOD76_021D8514
+ mov r1, #0x59
+ lsl r1, r1, #2
+ strh r0, [r4, r1]
+ mov r2, #2
+ sub r0, r1, #6
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ mov r2, #1
+ add r0, #0x14
+ str r2, [r4, r0]
+ add r0, r1, #0
+ mov r2, #0
+ add r0, #0x10
+ sub r1, #0x18
+ str r2, [r4, r0]
+ add r0, r4, r1
+ add r1, sp, #0
+ bl FUN_0207B000
+ mov r1, #0x53
+ lsl r1, r1, #2
+ ldr r0, _021D8DE8 ; =0x020FA6E8
+ add r1, r4, r1
+ mov r2, #0x43
+ bl FUN_02006234
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #0xc
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D8DE4: .word 0x021D8E48
+_021D8DE8: .word 0x020FA6E8
+ thumb_func_end MOD76_021D8D5C
+
+ thumb_func_start MOD76_021D8DEC
+MOD76_021D8DEC: ; 0x021D8DEC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02006290
+ cmp r0, #0
+ beq _021D8E3E
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02006260
+ add r0, r4, #0
+ bl MOD76_021D7638
+ ldr r1, [r4]
+ add r0, r4, #0
+ ldrh r1, [r1, #0x10]
+ mov r2, #1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD76_021D8C88
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD76_021D8CB4
+ add r0, r4, #0
+ bl MOD76_021D8D24
+ ldr r0, _021D8E44 ; =0x00000162
+ ldr r1, [r4]
+ ldrb r2, [r4, r0]
+ add r0, #0x1e
+ strb r2, [r1, #0x17]
+ mov r1, #7
+ str r1, [r4, r0]
+ mov r0, #0
+ pop {r4, pc}
+_021D8E3E:
+ mov r0, #0xc
+ pop {r4, pc}
+ nop
+_021D8E44: .word 0x00000162
+ thumb_func_end MOD76_021D8DEC
+
+ .section .rodata
+ ; 0x021D8E48
+ .incbin "baserom.nds", 0x2D7568, 0x498
diff --git a/arm9/modules/77/asm/module_77.s b/arm9/modules/77/asm/module_77.s
new file mode 100644
index 00000000..fdbd40cd
--- /dev/null
+++ b/arm9/modules/77/asm/module_77.s
@@ -0,0 +1,3214 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD77_021D74E0
+MOD77_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ 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 r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D75D4 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D75D8 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #3
+ mov r1, #0x32
+ lsl r2, r2, #7
+ bl FUN_0201681C
+ ldr r1, _021D75DC ; =0x0000C32C
+ add r0, r4, #0
+ mov r2, #0x32
+ bl FUN_02006268
+ ldr r2, _021D75DC ; =0x0000C32C
+ mov r1, #0
+ add r5, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x32
+ str r0, [r5]
+ ldr r0, _021D75E0 ; =0x020ECAC4
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021D753E
+ mov r1, #1
+ b _021D7540
+_021D753E:
+ mov r1, #0
+_021D7540:
+ ldr r0, _021D75E4 ; =0x0000C2F0
+ str r1, [r5, r0]
+ add r0, r4, #0
+ bl FUN_0200628C
+ add r4, r0, #0
+ bl FUN_02029AFC
+ str r0, [r5, #4]
+ bl FUN_02029B38
+ ldr r1, _021D75E8 ; =0x0000C314
+ str r0, [r5, r1]
+ ldr r0, [r5, #4]
+ bl FUN_02029B3C
+ ldr r1, _021D75EC ; =0x0000C318
+ str r0, [r5, r1]
+ ldr r0, [r5, #4]
+ bl FUN_02029C00
+ ldr r1, _021D75F0 ; =0x0000C324
+ str r0, [r5, r1]
+ add r0, r4, #0
+ bl LoadPlayerDataAddress
+ str r0, [r5, #8]
+ bl MOD77_021D7C24
+ bl MOD77_021D7C44
+ ldr r0, [r5]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201B2EC
+ ldr r0, [r5]
+ bl FUN_02016B94
+ ldr r1, _021D75F4 ; =0x0000C010
+ str r0, [r5, r1]
+ bl FUN_0201E788
+ bl FUN_0201BD5C
+ ldr r2, [r5]
+ mov r0, #8
+ mov r1, #0x40
+ bl FUN_0200AA90
+ ldr r1, _021D75F8 ; =0x0000C070
+ str r0, [r5, r1]
+ ldr r0, [r5]
+ bl FUN_0201EB64
+ ldr r1, _021D75FC ; =0x0000C2CC
+ str r0, [r5, r1]
+ mov r0, #0
+ add r1, #0x1c
+ str r0, [r5, r1]
+ ldr r0, _021D7600 ; =0x021C4918
+ mov r1, #1
+ strb r1, [r0, #5]
+ bl FUN_0201E7A0
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ add r0, r5, #0
+ bl MOD77_021D7C64
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D75D4: .word 0xFFFFE0FF
+_021D75D8: .word 0x04001000
+_021D75DC: .word 0x0000C32C
+_021D75E0: .word 0x020ECAC4
+_021D75E4: .word 0x0000C2F0
+_021D75E8: .word 0x0000C314
+_021D75EC: .word 0x0000C318
+_021D75F0: .word 0x0000C324
+_021D75F4: .word 0x0000C010
+_021D75F8: .word 0x0000C070
+_021D75FC: .word 0x0000C2CC
+_021D7600: .word 0x021C4918
+ thumb_func_end MOD77_021D74E0
+
+ thumb_func_start MOD77_021D7604
+MOD77_021D7604: ; 0x021D7604
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ bl FUN_02006278
+ ldr r1, [r5]
+ add r4, r0, #0
+ mov r7, #0
+ cmp r1, #0x12
+ bls _021D761A
+ b _021D7B66
+_021D761A:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7626: ; jump table
+ .short _021D764C - _021D7626 - 2 ; case 0
+ .short _021D76A8 - _021D7626 - 2 ; case 1
+ .short _021D76B6 - _021D7626 - 2 ; case 2
+ .short _021D76D6 - _021D7626 - 2 ; case 3
+ .short _021D76FA - _021D7626 - 2 ; case 4
+ .short _021D7744 - _021D7626 - 2 ; case 5
+ .short _021D776C - _021D7626 - 2 ; case 6
+ .short _021D77A2 - _021D7626 - 2 ; case 7
+ .short _021D77DE - _021D7626 - 2 ; case 8
+ .short _021D7838 - _021D7626 - 2 ; case 9
+ .short _021D7886 - _021D7626 - 2 ; case 10
+ .short _021D78DC - _021D7626 - 2 ; case 11
+ .short _021D78EE - _021D7626 - 2 ; case 12
+ .short _021D7916 - _021D7626 - 2 ; case 13
+ .short _021D7964 - _021D7626 - 2 ; case 14
+ .short _021D7A32 - _021D7626 - 2 ; case 15
+ .short _021D7B0E - _021D7626 - 2 ; case 16
+ .short _021D7B1C - _021D7626 - 2 ; case 17
+ .short _021D7B3E - _021D7626 - 2 ; case 18
+_021D764C:
+ ldr r2, _021D7968 ; =0x0000013E
+ ldr r3, [r4]
+ mov r0, #1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ ldr r1, _021D796C ; =0x0000C060
+ str r0, [r4, r1]
+ add r0, r4, #0
+ bl MOD77_021D8814
+ add r0, r4, #0
+ bl MOD77_021D7FAC
+ add r0, r7, #0
+ ldr r1, _021D7970 ; =0x0000C2EC
+ add r3, r0, #0
+ str r0, [r4, r1]
+ mov r1, #6
+ str r1, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ ldr r2, [r4]
+ str r2, [sp, #8]
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #1
+ str r0, [r5]
+ b _021D7B66
+_021D76A8:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D7780
+ mov r0, #2
+ str r0, [r5]
+ b _021D7B66
+_021D76B6:
+ add r1, r7, #0
+ mov r2, #1
+ bl MOD77_021D8294
+ cmp r0, #1
+ bne _021D7780
+ ldr r0, _021D7974 ; =0x0000C314
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D76D0
+ mov r0, #3
+ str r0, [r5]
+ b _021D7B66
+_021D76D0:
+ mov r0, #0xe
+ str r0, [r5]
+ b _021D7B66
+_021D76D6:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD77_021D8294
+ cmp r0, #1
+ bne _021D7780
+ ldr r0, _021D7978 ; =0x021D8F64
+ ldr r1, _021D797C ; =0x0000C024
+ str r0, [sp]
+ ldr r2, _021D7980 ; =0x021D8F18
+ ldr r3, _021D7984 ; =0x021D8FB4
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD77_021D8370
+ mov r0, #4
+ str r0, [r5]
+ b _021D7B66
+_021D76FA:
+ ldr r0, _021D7988 ; =0x0000C054
+ ldr r0, [r4, r0]
+ bl FUN_02001204
+ add r6, r0, #0
+ sub r0, r7, #1
+ cmp r6, r0
+ beq _021D7780
+ add r0, r4, #0
+ bl MOD77_021D84D8
+ ldr r0, _021D798C ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r6, #2
+ cmp r0, #4
+ bhi _021D7732
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7728: ; jump table
+ .short _021D773E - _021D7728 - 2 ; case 0
+ .short _021D7732 - _021D7728 - 2 ; case 1
+ .short _021D7732 - _021D7728 - 2 ; case 2
+ .short _021D7738 - _021D7728 - 2 ; case 3
+ .short _021D773E - _021D7728 - 2 ; case 4
+_021D7732:
+ mov r0, #0xe
+ str r0, [r5]
+ b _021D7B66
+_021D7738:
+ mov r0, #5
+ str r0, [r5]
+ b _021D7B66
+_021D773E:
+ mov r0, #0x11
+ str r0, [r5]
+ b _021D7B66
+_021D7744:
+ mov r1, #2
+ mov r2, #1
+ bl MOD77_021D8294
+ cmp r0, #1
+ bne _021D7780
+ ldr r0, [r4]
+ ldr r1, _021D7990 ; =0x021D8F38
+ str r0, [sp]
+ ldr r0, _021D7994 ; =0x0000C010
+ ldr r2, _021D7998 ; =0x000001D9
+ ldr r0, [r4, r0]
+ mov r3, #7
+ bl FUN_02002198
+ ldr r1, _021D799C ; =0x0000C05C
+ str r0, [r4, r1]
+ mov r0, #6
+ str r0, [r5]
+ b _021D7B66
+_021D776C:
+ ldr r0, _021D799C ; =0x0000C05C
+ ldr r1, [r4]
+ ldr r0, [r4, r0]
+ bl FUN_020021AC
+ cmp r0, #0
+ beq _021D7782
+ sub r1, r7, #2
+ cmp r0, r1
+ beq _021D779C
+_021D7780:
+ b _021D7B66
+_021D7782:
+ ldr r0, _021D79A0 ; =0x0000C2F0
+ ldr r1, [r4, r0]
+ cmp r1, #1
+ bne _021D7796
+ mov r1, #0x67
+ add r0, #0x2c
+ str r1, [r4, r0]
+ mov r0, #9
+ str r0, [r5]
+ b _021D7B66
+_021D7796:
+ mov r0, #7
+ str r0, [r5]
+ b _021D7B66
+_021D779C:
+ mov r0, #3
+ str r0, [r5]
+ b _021D7B66
+_021D77A2:
+ mov r1, #3
+ mov r2, #1
+ bl MOD77_021D8294
+ cmp r0, #1
+ bne _021D77EE
+ ldr r1, _021D79A4 ; =0x0000C31C
+ add r0, r7, #0
+ str r0, [r4, r1]
+ bl FUN_02088DA0
+ add r6, r0, #0
+ add r0, r7, #0
+ bl FUN_02088DBC
+ mov r1, #0x99
+ lsl r1, r1, #2
+ str r1, [sp]
+ ldr r1, _021D797C ; =0x0000C024
+ str r6, [sp, #4]
+ str r0, [sp, #8]
+ ldr r2, _021D79A8 ; =0x021D8F20
+ ldr r3, _021D79AC ; =0x021D8FD4
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD77_021D8418
+ mov r0, #8
+ str r0, [r5]
+ b _021D7B66
+_021D77DE:
+ ldr r0, _021D7988 ; =0x0000C054
+ ldr r0, [r4, r0]
+ bl FUN_02001204
+ add r6, r0, #0
+ sub r0, r7, #1
+ cmp r6, r0
+ bne _021D77F0
+_021D77EE:
+ b _021D7B66
+_021D77F0:
+ add r0, r4, #0
+ bl MOD77_021D84D8
+ ldr r0, _021D798C ; =0x000005DC
+ bl FUN_020054C8
+ sub r0, r7, #2
+ cmp r6, r0
+ beq _021D780A
+ add r0, r7, #0
+ bl FUN_02088DA0
+ ldrb r6, [r0, r6]
+_021D780A:
+ mov r0, #1
+ mvn r0, r0
+ cmp r6, r0
+ beq _021D7832
+ ldr r0, _021D79A4 ; =0x0000C31C
+ str r6, [r4, r0]
+ ldr r0, [r4, r0]
+ bl MOD77_021D8F04
+ cmp r0, #1
+ bne _021D7826
+ mov r0, #9
+ str r0, [r5]
+ b _021D7B66
+_021D7826:
+ ldr r0, _021D79B0 ; =0x0000C320
+ mov r1, #0
+ str r1, [r4, r0]
+ mov r0, #0xb
+ str r0, [r5]
+ b _021D7B66
+_021D7832:
+ mov r0, #3
+ str r0, [r5]
+ b _021D7B66
+_021D7838:
+ mov r1, #4
+ mov r2, #1
+ bl MOD77_021D8294
+ cmp r0, #1
+ bne _021D792A
+ ldr r0, _021D79B0 ; =0x0000C320
+ add r1, r7, #0
+ str r1, [r4, r0]
+ sub r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02088D20
+ add r6, r0, #0
+ bl FUN_02088D4C
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ bl FUN_02088DA0
+ str r0, [sp, #0x10]
+ add r0, r6, #0
+ bl FUN_02088DBC
+ ldr r1, [sp, #0xc]
+ ldr r2, _021D79A8 ; =0x021D8F20
+ str r1, [sp]
+ ldr r1, [sp, #0x10]
+ ldr r3, _021D79AC ; =0x021D8FD4
+ str r1, [sp, #4]
+ ldr r1, _021D797C ; =0x0000C024
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD77_021D8418
+ mov r0, #0xa
+ str r0, [r5]
+ b _021D7B66
+_021D7886:
+ ldr r0, _021D7988 ; =0x0000C054
+ ldr r0, [r4, r0]
+ bl FUN_02001204
+ add r6, r0, #0
+ sub r0, r7, #1
+ cmp r6, r0
+ beq _021D792A
+ add r0, r4, #0
+ bl MOD77_021D84D8
+ ldr r0, _021D798C ; =0x000005DC
+ bl FUN_020054C8
+ sub r0, r7, #2
+ cmp r6, r0
+ beq _021D78B6
+ ldr r0, _021D79A4 ; =0x0000C31C
+ ldr r0, [r4, r0]
+ bl FUN_02088D20
+ bl FUN_02088DA0
+ ldrb r6, [r0, r6]
+_021D78B6:
+ mov r0, #1
+ mvn r0, r0
+ cmp r6, r0
+ beq _021D78C8
+ ldr r0, _021D79B0 ; =0x0000C320
+ str r6, [r4, r0]
+ mov r0, #0xb
+ str r0, [r5]
+ b _021D7B66
+_021D78C8:
+ ldr r0, _021D79A0 ; =0x0000C2F0
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _021D78D6
+ mov r0, #3
+ str r0, [r5]
+ b _021D7B66
+_021D78D6:
+ mov r0, #7
+ str r0, [r5]
+ b _021D7B66
+_021D78DC:
+ ldr r2, _021D79A4 ; =0x0000C31C
+ ldr r1, [r4, r2]
+ add r2, r2, #4
+ ldr r2, [r4, r2]
+ bl MOD77_021D85E0
+ mov r0, #0xc
+ str r0, [r5]
+ b _021D7B66
+_021D78EE:
+ mov r1, #5
+ mov r2, #1
+ bl MOD77_021D8294
+ cmp r0, #1
+ bne _021D792A
+ ldr r0, [r4]
+ ldr r1, _021D7990 ; =0x021D8F38
+ str r0, [sp]
+ ldr r0, _021D7994 ; =0x0000C010
+ ldr r2, _021D7998 ; =0x000001D9
+ ldr r0, [r4, r0]
+ mov r3, #7
+ bl FUN_02002198
+ ldr r1, _021D799C ; =0x0000C05C
+ str r0, [r4, r1]
+ mov r0, #0xd
+ str r0, [r5]
+ b _021D7B66
+_021D7916:
+ ldr r0, _021D799C ; =0x0000C05C
+ ldr r1, [r4]
+ ldr r0, [r4, r0]
+ bl FUN_020021AC
+ cmp r0, #0
+ beq _021D792C
+ sub r1, r7, #2
+ cmp r0, r1
+ beq _021D7958
+_021D792A:
+ b _021D7B66
+_021D792C:
+ add r0, r4, #0
+ bl MOD77_021D8698
+ ldr r2, _021D79A4 ; =0x0000C31C
+ ldr r0, [r4, #4]
+ ldr r1, [r4, r2]
+ add r2, r2, #4
+ ldr r2, [r4, r2]
+ bl FUN_02029B08
+ ldr r0, _021D79A4 ; =0x0000C31C
+ add r1, r0, #0
+ ldr r2, [r4, r0]
+ sub r1, #8
+ str r2, [r4, r1]
+ add r1, r0, #4
+ ldr r1, [r4, r1]
+ sub r0, r0, #4
+ str r1, [r4, r0]
+ mov r0, #0xe
+ str r0, [r5]
+ b _021D7B66
+_021D7958:
+ add r0, r4, #0
+ bl MOD77_021D8698
+ mov r0, #3
+ str r0, [r5]
+ b _021D7B66
+_021D7964:
+ ldr r1, _021D79A0 ; =0x0000C2F0
+ b _021D79B4
+ .align 2, 0
+_021D7968: .word 0x0000013E
+_021D796C: .word 0x0000C060
+_021D7970: .word 0x0000C2EC
+_021D7974: .word 0x0000C314
+_021D7978: .word 0x021D8F64
+_021D797C: .word 0x0000C024
+_021D7980: .word 0x021D8F18
+_021D7984: .word 0x021D8FB4
+_021D7988: .word 0x0000C054
+_021D798C: .word 0x000005DC
+_021D7990: .word 0x021D8F38
+_021D7994: .word 0x0000C010
+_021D7998: .word 0x000001D9
+_021D799C: .word 0x0000C05C
+_021D79A0: .word 0x0000C2F0
+_021D79A4: .word 0x0000C31C
+_021D79A8: .word 0x021D8F20
+_021D79AC: .word 0x021D8FD4
+_021D79B0: .word 0x0000C320
+_021D79B4:
+ ldr r0, [r4, r1]
+ cmp r0, #1
+ bne _021D79CA
+ add r0, r1, #0
+ add r0, #0x34
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D79CA
+ add r0, r1, #4
+ strh r7, [r4, r0]
+ b _021D79D0
+_021D79CA:
+ ldr r0, _021D7B74 ; =0x0000C2F4
+ mov r1, #1
+ strh r1, [r4, r0]
+_021D79D0:
+ add r0, r4, #0
+ bl MOD77_021D8914
+ add r0, r4, #0
+ bl MOD77_021D7DCC
+ add r0, r4, #0
+ bl MOD77_021D8970
+ add r0, r4, #0
+ bl MOD77_021D89F4
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ ldr r0, _021D7B78 ; =0x0000C014
+ mov r2, #0
+ add r0, r4, r0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, _021D7B7C ; =0x0000C034
+ ldr r2, _021D7B80 ; =0x000001D9
+ add r0, r4, r0
+ mov r1, #0
+ mov r3, #7
+ bl FUN_0200CCA4
+ ldr r0, _021D7B84 ; =0x0000C314
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D7A1A
+ add r0, r4, #0
+ bl MOD77_021D8510
+_021D7A1A:
+ add r0, r4, #0
+ bl MOD77_021D86B4
+ ldr r0, _021D7B88 ; =0x0000C328
+ mov r1, #0
+ str r1, [r4, r0]
+ mov r1, #1
+ sub r0, #0x40
+ str r1, [r4, r0]
+ mov r0, #0xf
+ str r0, [r5]
+ b _021D7B66
+_021D7A32:
+ ldr r1, _021D7B8C ; =0x0000C2D8
+ ldrh r6, [r4, r1]
+ bl MOD77_021D7E24
+ ldr r0, _021D7B90 ; =0x021C48B8
+ mov r3, #2
+ ldr r1, [r0, #0x48]
+ add r0, r1, #0
+ tst r0, r3
+ bne _021D7A4E
+ ldr r0, _021D7B94 ; =0x0000C2F8
+ ldr r2, [r4, r0]
+ tst r2, r3
+ beq _021D7A94
+_021D7A4E:
+ ldr r0, _021D7B7C ; =0x0000C034
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200CCF8
+ ldr r0, _021D7B98 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ ldr r0, _021D7B78 ; =0x0000C014
+ mov r2, #0
+ add r0, r4, r0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, _021D7B84 ; =0x0000C314
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ bne _021D7A88
+ mov r1, #2
+ sub r0, #0x2c
+ str r1, [r4, r0]
+ mov r0, #3
+ str r0, [r5]
+ b _021D7B66
+_021D7A88:
+ add r0, r4, #0
+ bl MOD77_021D8698
+ mov r0, #0x11
+ str r0, [r5]
+ b _021D7B66
+_021D7A94:
+ lsl r2, r3, #9
+ tst r2, r1
+ beq _021D7AC0
+ add r2, r0, #0
+ add r2, #0x30
+ ldr r2, [r4, r2]
+ cmp r2, #0
+ bne _021D7AC0
+ mov r1, #1
+ add r0, #0x30
+ str r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD77_021D86B4
+ ldr r0, _021D7B88 ; =0x0000C328
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _021D7B66
+ ldr r0, _021D7B98 ; =0x000005DD
+ bl FUN_020054C8
+ b _021D7B66
+_021D7AC0:
+ ldr r0, _021D7B9C ; =0x00000403
+ tst r0, r1
+ beq _021D7ADA
+ ldr r0, _021D7B88 ; =0x0000C328
+ ldr r2, [r4, r0]
+ cmp r2, #1
+ bne _021D7ADA
+ mov r1, #0
+ str r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD77_021D86B4
+ b _021D7B66
+_021D7ADA:
+ ldr r2, _021D7B90 ; =0x021C48B8
+ add r0, r4, #0
+ ldr r2, [r2, #0x44]
+ bl MOD77_021D8B20
+ cmp r0, #1
+ bne _021D7AFA
+ ldr r0, _021D7B88 ; =0x0000C328
+ ldr r1, [r4, r0]
+ cmp r1, #1
+ bne _021D7AFA
+ mov r1, #0
+ str r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD77_021D86B4
+_021D7AFA:
+ ldr r0, _021D7B8C ; =0x0000C2D8
+ ldrh r0, [r4, r0]
+ cmp r6, r0
+ beq _021D7B66
+ mov r0, #0x10
+ str r0, [r5]
+ ldr r0, _021D7B98 ; =0x000005DD
+ bl FUN_020054C8
+ b _021D7B66
+_021D7B0E:
+ bl MOD77_021D8CF8
+ cmp r0, #1
+ bne _021D7B66
+ mov r0, #0xf
+ str r0, [r5]
+ b _021D7B66
+_021D7B1C:
+ ldr r0, _021D7BA0 ; =0x0000C2EC
+ add r1, r7, #0
+ str r7, [r4, r0]
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r2, r7, #0
+ str r0, [sp, #8]
+ add r0, r7, #0
+ add r3, r7, #0
+ bl FUN_0200E1D0
+ mov r0, #0x12
+ str r0, [r5]
+ b _021D7B66
+_021D7B3E:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D7B66
+ ldr r0, _021D7BA4 ; =0x0000C2E8
+ mov r1, #1
+ str r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD77_021D8248
+ add r0, r4, #0
+ bl MOD77_021D88D0
+ ldr r0, _021D7BA8 ; =0x0000C060
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ add r0, r7, #0
+ str r0, [r5]
+ mov r7, #1
+_021D7B66:
+ add r0, r4, #0
+ bl MOD77_021D8D84
+ add r0, r7, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D7B74: .word 0x0000C2F4
+_021D7B78: .word 0x0000C014
+_021D7B7C: .word 0x0000C034
+_021D7B80: .word 0x000001D9
+_021D7B84: .word 0x0000C314
+_021D7B88: .word 0x0000C328
+_021D7B8C: .word 0x0000C2D8
+_021D7B90: .word 0x021C48B8
+_021D7B94: .word 0x0000C2F8
+_021D7B98: .word 0x000005DD
+_021D7B9C: .word 0x00000403
+_021D7BA0: .word 0x0000C2EC
+_021D7BA4: .word 0x0000C2E8
+_021D7BA8: .word 0x0000C060
+ thumb_func_end MOD77_021D7604
+
+ thumb_func_start MOD77_021D7BAC
+MOD77_021D7BAC: ; 0x021D7BAC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ mov r0, #4
+ mov r1, #0
+ ldr r5, [r4]
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #8
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #0
+ bl FUN_0201E74C
+ ldr r0, _021D7C14 ; =0x0000C2CC
+ ldr r0, [r4, r0]
+ bl FUN_0201EB70
+ ldr r0, _021D7C18 ; =0x0000C070
+ ldr r0, [r4, r0]
+ bl FUN_0200AB18
+ bl FUN_0201B398
+ ldr r0, _021D7C1C ; =0x0000C010
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ add r0, r6, #0
+ bl FUN_0200627C
+ add r0, r5, #0
+ bl FUN_020168D0
+ ldr r0, _021D7C20 ; =0x021C4918
+ mov r1, #0
+ strb r1, [r0, #5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ nop
+_021D7C14: .word 0x0000C2CC
+_021D7C18: .word 0x0000C070
+_021D7C1C: .word 0x0000C010
+_021D7C20: .word 0x021C4918
+ thumb_func_end MOD77_021D7BAC
+
+ thumb_func_start MOD77_021D7C24
+MOD77_021D7C24: ; 0x021D7C24
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D7C40 ; =0x021D9084
+ add r3, sp, #0
+ mov r2, #5
+_021D7C2E:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7C2E
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D7C40: .word 0x021D9084
+ thumb_func_end MOD77_021D7C24
+
+ thumb_func_start MOD77_021D7C44
+MOD77_021D7C44: ; 0x021D7C44
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _021D7C60 ; =0x021D8F54
+ 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_02016BBC
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021D7C60: .word 0x021D8F54
+ thumb_func_end MOD77_021D7C44
+
+ thumb_func_start MOD77_021D7C64
+MOD77_021D7C64: ; 0x021D7C64
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ mov r2, #0
+ str r0, [sp, #8]
+ str r2, [r0, #0xc]
+ str r2, [sp]
+ add r0, sp, #0x20
+ str r0, [sp, #4]
+ ldr r3, [sp, #8]
+ mov r0, #0x66
+ ldr r3, [r3]
+ mov r1, #0x12
+ bl FUN_02006D18
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ mov r1, #6
+ bl _u32_div_f
+ add r7, r0, #0
+ ldr r0, [sp, #0x18]
+ mov r5, #1
+ add r4, r0, #6
+ cmp r7, #1
+ ble _021D7CCA
+ ldr r6, [sp, #8]
+ add r6, #0xc
+_021D7C9A:
+ ldrh r0, [r4]
+ cmp r0, #2
+ beq _021D7CC2
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ mov r2, #2
+ mov r3, #4
+ add r1, r0, #0
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ ldr r1, [r1, #0xc]
+ bl MOD77_021D7D58
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+_021D7CC2:
+ add r5, r5, #1
+ add r4, r4, #6
+ cmp r5, r7
+ blt _021D7C9A
+_021D7CCA:
+ ldr r0, [sp, #0x18]
+ bl FUN_02016A18
+ mov r7, #1
+ bl FUN_02088D1C
+ str r0, [sp, #0x10]
+ cmp r0, #1
+ ble _021D7D52
+ ldr r6, [sp, #8]
+ add r6, #0xc
+_021D7CE0:
+ add r0, r7, #0
+ bl FUN_02088D84
+ add r1, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ add r0, sp, #0x1c
+ str r0, [sp, #4]
+ ldr r3, [sp, #8]
+ mov r0, #0x66
+ ldr r3, [r3]
+ mov r2, #0
+ bl FUN_02006D18
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x1c]
+ mov r5, #1
+ lsr r0, r0, #2
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ add r4, r0, #4
+ ldr r0, [sp, #0xc]
+ cmp r0, #1
+ ble _021D7D44
+_021D7D10:
+ add r0, r7, #0
+ bl FUN_02088D68
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ mov r2, #0
+ mov r3, #2
+ add r1, r0, #0
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ ldr r1, [r1, #0xc]
+ bl MOD77_021D7D58
+ ldr r0, [r6]
+ add r5, r5, #1
+ add r0, r0, #1
+ str r0, [r6]
+ ldr r0, [sp, #0xc]
+ add r4, r4, #4
+ cmp r5, r0
+ blt _021D7D10
+_021D7D44:
+ ldr r0, [sp, #0x14]
+ bl FUN_02016A18
+ ldr r0, [sp, #0x10]
+ add r7, r7, #1
+ cmp r7, r0
+ blt _021D7CE0
+_021D7D52:
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD77_021D7C64
+
+ thumb_func_start MOD77_021D7D58
+MOD77_021D7D58: ; 0x021D7D58
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ ldr r5, _021D7DC8 ; =0x021D903C
+ add r7, r2, #0
+ add r6, r3, #0
+ add r4, r0, #0
+ mov ip, r1
+ add r3, sp, #0xc
+ mov r2, #4
+_021D7D6A:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7D6A
+ ldr r0, [r5]
+ mov r1, #0x30
+ str r0, [r3]
+ mov r0, ip
+ add r5, r0, #0
+ mul r5, r1
+ add r0, r4, r5
+ strh r7, [r0, #0x10]
+ strh r6, [r0, #0x12]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, sp, #0xc
+ add r1, sp, #0
+ str r7, [sp]
+ str r6, [sp, #4]
+ bl MOD77_021D8AA8
+ add r3, r4, r5
+ add r6, sp, #0xc
+ add r3, #0x14
+ mov r2, #4
+_021D7D9C:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7D9C
+ ldr r0, [r6]
+ add r2, sp, #0x38
+ str r0, [r3]
+ ldrh r1, [r2, #0x10]
+ ldrh r2, [r2, #0x14]
+ ldr r0, [r4, #4]
+ bl FUN_02029B40
+ add r2, r4, r5
+ strh r0, [r2, #0x38]
+ add r0, sp, #0x38
+ ldrh r1, [r0, #0x10]
+ strh r1, [r2, #0x3a]
+ ldrh r0, [r0, #0x14]
+ strh r0, [r2, #0x3c]
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7DC8: .word 0x021D903C
+ thumb_func_end MOD77_021D7D58
+
+ thumb_func_start MOD77_021D7DCC
+MOD77_021D7DCC: ; 0x021D7DCC
+ push {r4, r5, r6, r7}
+ ldr r1, [r0, #0xc]
+ mov r4, #0
+ cmp r1, #0
+ bls _021D7E0A
+ ldr r1, _021D7E10 ; =0x0000C318
+ add r5, r0, #0
+ mov r3, #3
+ sub r2, r1, #4
+_021D7DDE:
+ ldrh r6, [r5, #0x3a]
+ ldr r7, [r0, r2]
+ cmp r7, r6
+ bne _021D7E00
+ ldrh r6, [r5, #0x3c]
+ ldr r7, [r0, r1]
+ cmp r7, r6
+ bne _021D7E00
+ strh r3, [r5, #0x38]
+ mov r6, #0x10
+ ldrsh r7, [r5, r6]
+ ldr r6, _021D7E14 ; =0x0000C2B4
+ str r7, [r0, r6]
+ mov r6, #0x12
+ ldrsh r7, [r5, r6]
+ ldr r6, _021D7E18 ; =0x0000C2B8
+ str r7, [r0, r6]
+_021D7E00:
+ ldr r6, [r0, #0xc]
+ add r4, r4, #1
+ add r5, #0x30
+ cmp r4, r6
+ blo _021D7DDE
+_021D7E0A:
+ pop {r4, r5, r6, r7}
+ bx lr
+ nop
+_021D7E10: .word 0x0000C318
+_021D7E14: .word 0x0000C2B4
+_021D7E18: .word 0x0000C2B8
+ thumb_func_end MOD77_021D7DCC
+
+ thumb_func_start MOD77_021D7E1C
+MOD77_021D7E1C: ; 0x021D7E1C
+ ldr r3, _021D7E20 ; =FUN_02088D20
+ bx r3
+ .align 2, 0
+_021D7E20: .word FUN_02088D20
+ thumb_func_end MOD77_021D7E1C
+
+ thumb_func_start MOD77_021D7E24
+MOD77_021D7E24: ; 0x021D7E24
+ push {r4, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ ldr r0, _021D7F2C ; =0x0000C2F8
+ mov r1, #0
+ str r1, [r4, r0]
+ ldr r1, _021D7F30 ; =0x021C48F8
+ ldrh r2, [r1, #0x20]
+ cmp r2, #0
+ beq _021D7E86
+ ldrh r2, [r1, #0x1c]
+ cmp r2, #0xc8
+ blo _021D7E54
+ cmp r2, #0xf8
+ bhi _021D7E54
+ ldrh r1, [r1, #0x1e]
+ cmp r1, #0xa8
+ blo _021D7E54
+ cmp r1, #0xb8
+ bhi _021D7E54
+ mov r1, #2
+ add sp, #0x18
+ str r1, [r4, r0]
+ pop {r4, pc}
+_021D7E54:
+ ldr r0, _021D7F34 ; =0x0000C2FC
+ mov r2, #0
+ add r1, r0, #0
+ str r2, [r4, r0]
+ add r1, #0xc
+ str r2, [r4, r1]
+ add r1, r0, #0
+ add r1, #0x10
+ str r2, [r4, r1]
+ add r1, r0, #0
+ add r1, #0x14
+ str r2, [r4, r1]
+ sub r1, r0, #4
+ str r2, [r4, r1]
+ ldr r2, _021D7F30 ; =0x021C48F8
+ add r1, r0, #4
+ ldrh r3, [r2, #0x1c]
+ str r3, [r4, r1]
+ add r1, r0, #0
+ ldrh r2, [r2, #0x1e]
+ add r1, #8
+ add r0, #0x14
+ str r2, [r4, r1]
+ mov r1, #4
+ str r1, [r4, r0]
+_021D7E86:
+ ldr r0, _021D7F30 ; =0x021C48F8
+ ldrh r0, [r0, #0x22]
+ cmp r0, #0
+ beq _021D7F02
+ ldr r1, _021D7F34 ; =0x0000C2FC
+ ldr r2, [r4, r1]
+ cmp r2, #0
+ beq _021D7E9E
+ cmp r2, #1
+ beq _021D7EBA
+ add sp, #0x18
+ pop {r4, pc}
+_021D7E9E:
+ add r0, r1, #0
+ add r0, #0x14
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D7EAE
+ add r0, r2, #1
+ str r0, [r4, r1]
+ b _021D7EBA
+_021D7EAE:
+ add r0, r1, #0
+ add r0, #0x14
+ ldr r0, [r4, r0]
+ add r1, #0x14
+ sub r0, r0, #1
+ str r0, [r4, r1]
+_021D7EBA:
+ add r0, sp, #0xc
+ mov r1, #0xc3
+ str r0, [sp]
+ add r0, sp, #8
+ lsl r1, r1, #8
+ str r0, [sp, #4]
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ add r2, sp, #0x14
+ add r3, sp, #0x10
+ bl MOD77_021D7F3C
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0xc]
+ orr r0, r1
+ ldr r1, _021D7F2C ; =0x0000C2F8
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r2, [sp, #0x10]
+ add r0, #0x10
+ str r2, [r4, r0]
+ ldr r2, [sp, #8]
+ add r0, r1, #0
+ add r0, #0x14
+ str r2, [r4, r0]
+ add r0, r1, #0
+ ldr r2, _021D7F30 ; =0x021C48F8
+ add r0, #8
+ ldrh r3, [r2, #0x1c]
+ add r1, #0xc
+ add sp, #0x18
+ str r3, [r4, r0]
+ ldrh r0, [r2, #0x1e]
+ str r0, [r4, r1]
+ pop {r4, pc}
+_021D7F02:
+ ldr r0, _021D7F38 ; =0x0000C310
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _021D7F10
+ mov r1, #1
+ sub r0, #0x18
+ str r1, [r4, r0]
+_021D7F10:
+ ldr r1, _021D7F34 ; =0x0000C2FC
+ mov r2, #0
+ add r0, r1, #0
+ str r2, [r4, r1]
+ add r0, #0xc
+ str r2, [r4, r0]
+ add r0, r1, #0
+ add r0, #0x10
+ str r2, [r4, r0]
+ add r1, #0x14
+ str r2, [r4, r1]
+ add sp, #0x18
+ pop {r4, pc}
+ nop
+_021D7F2C: .word 0x0000C2F8
+_021D7F30: .word 0x021C48F8
+_021D7F34: .word 0x0000C2FC
+_021D7F38: .word 0x0000C310
+ thumb_func_end MOD77_021D7E24
+
+ thumb_func_start MOD77_021D7F3C
+MOD77_021D7F3C: ; 0x021D7F3C
+ push {r3, r4, r5, r6, r7, lr}
+ mov lr, r0
+ ldr r0, _021D7FA4 ; =0x021C48F8
+ mov ip, r1
+ ldrh r5, [r0, #0x1c]
+ mov r1, #0
+ add r7, r2, #0
+ add r6, r3, #0
+ ldr r0, _021D7FA8 ; =0x0000FFFF
+ add r2, r1, #0
+ add r3, r1, #0
+ add r4, r1, #0
+ cmp r5, r0
+ beq _021D7F6C
+ mov r0, lr
+ sub r3, r5, r0
+ bpl _021D7F66
+ sub r0, r1, #1
+ eor r3, r0
+ mov r1, #0x10
+ b _021D7F6C
+_021D7F66:
+ cmp r3, #0
+ ble _021D7F6C
+ mov r1, #0x20
+_021D7F6C:
+ str r1, [r7]
+ mov r1, #0x3f
+ add r0, r3, #0
+ and r0, r1
+ str r0, [r6]
+ ldr r0, _021D7FA4 ; =0x021C48F8
+ ldrh r3, [r0, #0x1e]
+ ldr r0, _021D7FA8 ; =0x0000FFFF
+ cmp r3, r0
+ beq _021D7F94
+ mov r0, ip
+ sub r4, r3, r0
+ bpl _021D7F8E
+ sub r1, #0x40
+ eor r4, r1
+ mov r2, #0x80
+ b _021D7F94
+_021D7F8E:
+ cmp r4, #0
+ ble _021D7F94
+ mov r2, #0x40
+_021D7F94:
+ ldr r0, [sp, #0x18]
+ add r1, r4, #0
+ str r2, [r0]
+ mov r0, #0x3f
+ and r1, r0
+ ldr r0, [sp, #0x1c]
+ str r1, [r0]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7FA4: .word 0x021C48F8
+_021D7FA8: .word 0x0000FFFF
+ thumb_func_end MOD77_021D7F3C
+
+ thumb_func_start MOD77_021D7FAC
+MOD77_021D7FAC: ; 0x021D7FAC
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r0, _021D8208 ; =0x0000C010
+ ldr r2, _021D820C ; =0x021D8F7C
+ ldr r0, [r5, r0]
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, _021D8208 ; =0x0000C010
+ mov r1, #6
+ ldr r0, [r5, r0]
+ bl FUN_02018744
+ ldr r0, _021D8208 ; =0x0000C010
+ ldr r2, _021D8210 ; =0x021D8F98
+ ldr r0, [r5, r0]
+ mov r1, #7
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r2, _021D8208 ; =0x0000C010
+ str r0, [sp, #0xc]
+ ldr r2, [r5, r2]
+ mov r0, #0x81
+ mov r1, #5
+ mov r3, #7
+ bl FUN_0200687C
+ mov r0, #0x80
+ str r0, [sp]
+ ldr r0, [r5]
+ mov r1, #6
+ str r0, [sp, #4]
+ mov r0, #0x81
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ mov r1, #7
+ str r0, [sp, #0xc]
+ ldr r2, _021D8208 ; =0x0000C010
+ mov r0, #0x81
+ ldr r2, [r5, r2]
+ add r3, r1, #0
+ bl FUN_020068C8
+ ldr r0, [r5, #8]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [r5]
+ mov r1, #6
+ str r0, [sp, #4]
+ ldr r0, _021D8208 ; =0x0000C010
+ ldr r2, _021D8214 ; =0x000001E2
+ ldr r0, [r5, r0]
+ add r3, r1, #0
+ bl FUN_0200CD68
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r5]
+ ldr r2, _021D8218 ; =0x000001D9
+ str r0, [sp, #4]
+ ldr r0, _021D8208 ; =0x0000C010
+ mov r1, #6
+ ldr r0, [r5, r0]
+ mov r3, #7
+ bl FUN_0200CB00
+ ldr r2, [r5]
+ mov r0, #4
+ mov r1, #0x80
+ bl FUN_02002ED0
+ ldr r3, [r5]
+ mov r0, #6
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r1, _021D821C ; =0x00004753
+ mov r0, #6
+ bl FUN_02017FE4
+ ldr r1, _021D8208 ; =0x0000C010
+ ldr r2, _021D8220 ; =0x021D8F40
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ add r1, r5, r1
+ bl FUN_02019150
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ ldr r0, _021D8224 ; =0x0000C014
+ mov r2, #0
+ add r0, r5, r0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, _021D8224 ; =0x0000C014
+ ldr r2, _021D8214 ; =0x000001E2
+ add r0, r5, r0
+ mov r1, #0
+ mov r3, #6
+ bl FUN_0200D0BC
+ ldr r0, _021D8228 ; =0x0000C064
+ mov r3, #0
+ str r3, [r5, r0]
+ sub r0, #0x54
+ ldr r0, [r5, r0]
+ ldr r2, _021D820C ; =0x021D8F7C
+ mov r1, #2
+ bl FUN_02016C18
+ ldr r0, _021D8208 ; =0x0000C010
+ mov r1, #2
+ ldr r0, [r5, r0]
+ bl FUN_02018744
+ ldr r0, _021D8208 ; =0x0000C010
+ ldr r2, _021D8210 ; =0x021D8F98
+ ldr r0, [r5, r0]
+ mov r1, #3
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r2, _021D8208 ; =0x0000C010
+ str r0, [sp, #0xc]
+ ldr r2, [r5, r2]
+ mov r0, #0x81
+ mov r1, #5
+ mov r3, #3
+ bl FUN_0200687C
+ mov r0, #0x80
+ str r0, [sp]
+ ldr r0, [r5]
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x81
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r2, _021D8208 ; =0x0000C010
+ str r0, [sp, #0xc]
+ ldr r2, [r5, r2]
+ mov r0, #0x81
+ mov r1, #7
+ mov r3, #3
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r5]
+ ldr r2, _021D8218 ; =0x000001D9
+ str r0, [sp, #4]
+ ldr r0, _021D8208 ; =0x0000C010
+ mov r1, #2
+ ldr r0, [r5, r0]
+ mov r3, #7
+ bl FUN_0200CB00
+ ldr r2, [r5]
+ mov r0, #0
+ mov r1, #0x80
+ bl FUN_02002ED0
+ ldr r3, [r5]
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ mov r0, #2
+ mov r1, #0
+ bl FUN_02017FE4
+ ldr r1, [r5]
+ mov r0, #0x10
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r1, [r5]
+ mov r0, #2
+ bl FUN_02002C50
+ ldr r1, _021D822C ; =0x00004E56
+ add r0, sp, #0x10
+ strh r1, [r0, #6]
+ ldr r1, _021D8230 ; =0x00003571
+ mov r3, #0x82
+ strh r1, [r0, #4]
+ ldr r1, _021D8234 ; =0x0000208C
+ strh r1, [r0, #2]
+ ldr r1, _021D8238 ; =0x00007FFF
+ strh r1, [r0]
+ mov r0, #2
+ add r1, sp, #0x14
+ add r1, #2
+ add r2, r0, #0
+ bl FUN_02017FB4
+ mov r0, #2
+ add r1, sp, #0x14
+ add r2, r0, #0
+ mov r3, #0x84
+ bl FUN_02017FB4
+ mov r0, #2
+ add r1, sp, #0x10
+ add r1, #2
+ add r2, r0, #0
+ mov r3, #0x86
+ bl FUN_02017FB4
+ mov r0, #2
+ add r1, sp, #0x10
+ add r2, r0, #0
+ mov r3, #0x9e
+ bl FUN_02017FB4
+ ldr r1, _021D8208 ; =0x0000C010
+ ldr r2, _021D823C ; =0x021D8F30
+ ldr r0, [r5, r1]
+ add r1, #0x24
+ add r1, r5, r1
+ bl FUN_02019150
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ ldr r0, _021D8240 ; =0x0000C034
+ mov r2, #0
+ add r0, r5, r0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, _021D8244 ; =0x0000C060
+ mov r1, #0xc
+ ldr r0, [r5, r0]
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r0, #2
+ add r1, r4, #0
+ mov r2, #0
+ mov r3, #0x30
+ bl FUN_02002F40
+ mov r1, #0
+ add r3, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D8240 ; =0x0000C034
+ str r1, [sp, #8]
+ add r0, r5, r0
+ mov r1, #2
+ add r2, r4, #0
+ bl FUN_0201BD84
+ add r0, r4, #0
+ bl FUN_02021A20
+ mov r0, #2
+ bl FUN_02002CF8
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ nop
+_021D8208: .word 0x0000C010
+_021D820C: .word 0x021D8F7C
+_021D8210: .word 0x021D8F98
+_021D8214: .word 0x000001E2
+_021D8218: .word 0x000001D9
+_021D821C: .word 0x00004753
+_021D8220: .word 0x021D8F40
+_021D8224: .word 0x0000C014
+_021D8228: .word 0x0000C064
+_021D822C: .word 0x00004E56
+_021D8230: .word 0x00003571
+_021D8234: .word 0x0000208C
+_021D8238: .word 0x00007FFF
+_021D823C: .word 0x021D8F30
+_021D8240: .word 0x0000C034
+_021D8244: .word 0x0000C060
+ thumb_func_end MOD77_021D7FAC
+
+ thumb_func_start MOD77_021D8248
+MOD77_021D8248: ; 0x021D8248
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D8288 ; =0x0000C034
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _021D828C ; =0x0000C014
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _021D8290 ; =0x0000C010
+ mov r1, #2
+ ldr r0, [r4, r0]
+ bl FUN_020178A0
+ ldr r0, _021D8290 ; =0x0000C010
+ mov r1, #6
+ ldr r0, [r4, r0]
+ bl FUN_020178A0
+ ldr r0, _021D8290 ; =0x0000C010
+ mov r1, #3
+ ldr r0, [r4, r0]
+ bl FUN_020178A0
+ ldr r0, _021D8290 ; =0x0000C010
+ mov r1, #7
+ ldr r0, [r4, r0]
+ bl FUN_020178A0
+ pop {r4, pc}
+ nop
+_021D8288: .word 0x0000C034
+_021D828C: .word 0x0000C014
+_021D8290: .word 0x0000C010
+ thumb_func_end MOD77_021D8248
+
+ thumb_func_start MOD77_021D8294
+MOD77_021D8294: ; 0x021D8294
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, _021D8348 ; =0x0000C064
+ add r6, r1, #0
+ ldr r1, [r5, r0]
+ mov r4, #0
+ cmp r1, #0
+ beq _021D82B0
+ cmp r1, #1
+ beq _021D830A
+ cmp r1, #2
+ beq _021D832A
+ b _021D8340
+_021D82B0:
+ mov r1, #0xd8
+ str r1, [sp]
+ mov r1, #0x20
+ sub r0, #0x50
+ str r1, [sp, #4]
+ add r0, r5, r0
+ mov r1, #0xf
+ add r2, r4, #0
+ add r3, r4, #0
+ bl FUN_020196F4
+ mov r0, #1
+ ldr r1, [r5]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ ldr r2, _021D834C ; =0x0000C06C
+ add r1, r6, #0
+ str r0, [r5, r2]
+ add r0, r2, #0
+ sub r0, #0xc
+ ldr r0, [r5, r0]
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ ldr r0, [r5, #8]
+ bl FUN_02024FF4
+ add r3, r4, #0
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r2, _021D8350 ; =0x0000C014
+ str r3, [sp, #8]
+ add r0, r5, r2
+ add r2, #0x58
+ ldr r2, [r5, r2]
+ mov r1, #1
+ bl FUN_0201BD84
+ ldr r1, _021D8354 ; =0x0000C068
+ mov r2, #1
+ str r0, [r5, r1]
+ sub r0, r1, #4
+ str r2, [r5, r0]
+ b _021D8340
+_021D830A:
+ add r0, r0, #4
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D8340
+ ldr r0, _021D834C ; =0x0000C06C
+ ldr r0, [r5, r0]
+ bl FUN_02021A20
+ ldr r0, _021D8348 ; =0x0000C064
+ mov r1, #2
+ str r1, [r5, r0]
+ b _021D8340
+_021D832A:
+ cmp r2, #0
+ bne _021D8338
+ ldr r0, _021D8358 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _021D8340
+_021D8338:
+ ldr r0, _021D8348 ; =0x0000C064
+ mov r1, #0
+ str r1, [r5, r0]
+ mov r4, #1
+_021D8340:
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D8348: .word 0x0000C064
+_021D834C: .word 0x0000C06C
+_021D8350: .word 0x0000C014
+_021D8354: .word 0x0000C068
+_021D8358: .word 0x021C48B8
+ thumb_func_end MOD77_021D8294
+
+ thumb_func_start MOD77_021D835C
+MOD77_021D835C: ; 0x021D835C
+ push {r3, lr}
+ cmp r2, #0
+ bne _021D8368
+ ldr r0, _021D836C ; =0x000005DC
+ bl FUN_020054C8
+_021D8368:
+ pop {r3, pc}
+ nop
+_021D836C: .word 0x000005DC
+ thumb_func_end MOD77_021D835C
+
+ thumb_func_start MOD77_021D8370
+MOD77_021D8370: ; 0x021D8370
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0
+ ldr r0, _021D8400 ; =0x0000C010
+ add r6, r3, #0
+ ldr r0, [r5, r0]
+ str r1, [sp]
+ bl FUN_02019150
+ ldrh r0, [r6, #0x10]
+ ldr r1, [r5]
+ bl FUN_02012838
+ ldr r1, _021D8404 ; =0x0000C058
+ mov r7, #0
+ str r0, [r5, r1]
+ ldrh r0, [r6, #0x10]
+ cmp r0, #0
+ ble _021D83B2
+ ldr r4, [sp, #0x38]
+_021D8398:
+ ldr r0, _021D8404 ; =0x0000C058
+ ldr r1, _021D8408 ; =0x0000C060
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ ldr r2, [r4]
+ ldr r3, [r4, #4]
+ bl FUN_02012880
+ ldrh r0, [r6, #0x10]
+ add r7, r7, #1
+ add r4, #8
+ cmp r7, r0
+ blt _021D8398
+_021D83B2:
+ add r3, sp, #4
+ add r2, r3, #0
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, _021D8404 ; =0x0000C058
+ mov r1, #0
+ ldr r0, [r5, r0]
+ str r0, [sp, #4]
+ ldr r0, [sp]
+ str r0, [sp, #0x10]
+ ldr r0, _021D840C ; =MOD77_021D835C
+ str r0, [sp, #8]
+ ldr r3, [r5]
+ add r0, r2, #0
+ lsl r3, r3, #0x18
+ add r2, r1, #0
+ lsr r3, r3, #0x18
+ bl FUN_020010A8
+ ldr r1, _021D8410 ; =0x0000C054
+ ldr r2, _021D8414 ; =0x000001D9
+ str r0, [r5, r1]
+ ldr r0, [sp, #0x10]
+ mov r1, #1
+ mov r3, #7
+ bl FUN_0200CCA4
+ ldr r0, [sp]
+ bl FUN_020191D0
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D8400: .word 0x0000C010
+_021D8404: .word 0x0000C058
+_021D8408: .word 0x0000C060
+_021D840C: .word MOD77_021D835C
+_021D8410: .word 0x0000C054
+_021D8414: .word 0x000001D9
+ thumb_func_end MOD77_021D8370
+
+ thumb_func_start MOD77_021D8418
+MOD77_021D8418: ; 0x021D8418
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ ldr r0, _021D84C4 ; =0x0000C010
+ str r1, [sp]
+ ldr r0, [r5, r0]
+ str r3, [sp, #4]
+ ldr r7, [sp, #0x44]
+ ldr r6, [sp, #0x48]
+ bl FUN_02019150
+ ldr r2, [sp, #0x40]
+ ldr r3, [r5]
+ mov r0, #0
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ str r0, [sp, #8]
+ ldr r1, [r5]
+ add r0, r6, #0
+ bl FUN_02012838
+ ldr r1, _021D84C8 ; =0x0000C058
+ mov r4, #0
+ str r0, [r5, r1]
+ cmp r6, #0
+ bls _021D8462
+_021D844E:
+ ldr r0, _021D84C8 ; =0x0000C058
+ ldrb r2, [r7, r4]
+ ldr r0, [r5, r0]
+ ldr r1, [sp, #8]
+ add r3, r4, #0
+ bl FUN_02012880
+ add r4, r4, #1
+ cmp r4, r6
+ blo _021D844E
+_021D8462:
+ ldr r0, [sp, #8]
+ bl FUN_0200A8B8
+ ldr r4, [sp, #4]
+ add r3, sp, #0xc
+ ldmia r4!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ str r4, [sp, #4]
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ str r4, [sp, #4]
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ str r4, [sp, #4]
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, _021D84C8 ; =0x0000C058
+ mov r1, #0
+ ldr r0, [r5, r0]
+ str r4, [sp, #4]
+ str r0, [sp, #0xc]
+ add r0, sp, #0xc
+ strh r6, [r0, #0x10]
+ ldr r0, [sp]
+ str r0, [sp, #0x18]
+ ldr r0, _021D84CC ; =MOD77_021D835C
+ 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
+ ldr r1, _021D84D0 ; =0x0000C054
+ ldr r2, _021D84D4 ; =0x000001D9
+ str r0, [r5, r1]
+ ldr r0, [sp, #0x18]
+ mov r1, #1
+ mov r3, #7
+ bl FUN_0200CCA4
+ ldr r0, [sp]
+ bl FUN_020191D0
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D84C4: .word 0x0000C010
+_021D84C8: .word 0x0000C058
+_021D84CC: .word MOD77_021D835C
+_021D84D0: .word 0x0000C054
+_021D84D4: .word 0x000001D9
+ thumb_func_end MOD77_021D8418
+
+ thumb_func_start MOD77_021D84D8
+MOD77_021D84D8: ; 0x021D84D8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D8504 ; =0x0000C024
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200CCF8
+ ldr r0, _021D8504 ; =0x0000C024
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _021D8508 ; =0x0000C054
+ mov r1, #0
+ ldr r0, [r4, r0]
+ add r2, r1, #0
+ bl FUN_02001300
+ ldr r0, _021D850C ; =0x0000C058
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ pop {r4, pc}
+ .align 2, 0
+_021D8504: .word 0x0000C024
+_021D8508: .word 0x0000C054
+_021D850C: .word 0x0000C058
+ thumb_func_end MOD77_021D84D8
+
+ thumb_func_start MOD77_021D8510
+MOD77_021D8510: ; 0x021D8510
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #1
+ ldr r1, [r5]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ add r4, r0, #0
+ mov r0, #1
+ ldr r1, [r5]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ ldr r1, _021D85C4 ; =0x0000C010
+ add r6, r0, #0
+ ldr r0, [r5, r1]
+ add r1, #0x34
+ ldr r2, _021D85C8 ; =0x021D8F28
+ add r1, r5, r1
+ bl FUN_02019150
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x30
+ str r0, [sp, #4]
+ ldr r0, _021D85CC ; =0x0000C044
+ mov r2, #0
+ add r0, r5, r0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, _021D85CC ; =0x0000C044
+ ldr r2, _021D85D0 ; =0x000001D9
+ add r0, r5, r0
+ mov r1, #0
+ mov r3, #7
+ bl FUN_0200CCA4
+ ldr r0, _021D85D4 ; =0x0000C070
+ ldr r2, _021D85D8 ; =0x0000C314
+ ldr r0, [r5, r0]
+ ldr r2, [r5, r2]
+ mov r1, #0
+ bl FUN_0200B4A0
+ ldr r3, _021D85D8 ; =0x0000C314
+ ldr r0, _021D85D4 ; =0x0000C070
+ ldr r2, [r5, r3]
+ add r3, r3, #4
+ ldr r0, [r5, r0]
+ ldr r3, [r5, r3]
+ mov r1, #1
+ bl FUN_0200B4D8
+ ldr r0, _021D85DC ; =0x0000C060
+ mov r1, #0xd
+ ldr r0, [r5, r0]
+ add r2, r6, #0
+ bl FUN_0200A8E0
+ ldr r0, _021D85D4 ; =0x0000C070
+ add r1, r4, #0
+ ldr r0, [r5, r0]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ mov r1, #0
+ ldr r0, _021D85CC ; =0x0000C044
+ str r1, [sp]
+ str r1, [sp, #4]
+ add r0, r5, r0
+ add r2, r4, #0
+ add r3, r1, #0
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_02021A20
+ ldr r0, _021D85CC ; =0x0000C044
+ add r0, r5, r0
+ bl FUN_020191D0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D85C4: .word 0x0000C010
+_021D85C8: .word 0x021D8F28
+_021D85CC: .word 0x0000C044
+_021D85D0: .word 0x000001D9
+_021D85D4: .word 0x0000C070
+_021D85D8: .word 0x0000C314
+_021D85DC: .word 0x0000C060
+ thumb_func_end MOD77_021D8510
+
+ thumb_func_start MOD77_021D85E0
+MOD77_021D85E0: ; 0x021D85E0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ str r1, [sp, #0xc]
+ ldr r1, [r5]
+ mov r0, #0x40
+ add r4, r2, #0
+ bl FUN_020219F4
+ add r7, r0, #0
+ ldr r1, [r5]
+ mov r0, #0x40
+ bl FUN_020219F4
+ ldr r1, _021D8688 ; =0x0000C010
+ add r6, r0, #0
+ ldr r0, [r5, r1]
+ add r1, #0x34
+ ldr r2, _021D868C ; =0x021D8F28
+ add r1, r5, r1
+ bl FUN_02019150
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x30
+ str r0, [sp, #4]
+ ldr r0, _021D8690 ; =0x0000C044
+ mov r2, #0
+ add r0, r5, r0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, _021D8690 ; =0x0000C044
+ ldr r2, _021D8694 ; =0x000001D9
+ add r0, r5, r0
+ mov r1, #0
+ mov r3, #7
+ bl FUN_0200CCA4
+ ldr r0, [r5]
+ add r1, r4, #0
+ str r0, [sp]
+ ldr r0, [sp, #0xc]
+ add r2, r7, #0
+ add r3, r6, #0
+ bl MOD77_021D8E9C
+ cmp r4, #0
+ beq _021D865C
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r1, #0
+ ldr r0, _021D8690 ; =0x0000C044
+ add r2, r6, #0
+ add r0, r5, r0
+ add r3, r1, #0
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+_021D865C:
+ mov r1, #0
+ ldr r0, _021D8690 ; =0x0000C044
+ str r1, [sp]
+ str r1, [sp, #4]
+ add r0, r5, r0
+ add r2, r7, #0
+ add r3, r1, #0
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_02021A20
+ ldr r0, _021D8690 ; =0x0000C044
+ add r0, r5, r0
+ bl FUN_020191D0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8688: .word 0x0000C010
+_021D868C: .word 0x021D8F28
+_021D8690: .word 0x0000C044
+_021D8694: .word 0x000001D9
+ thumb_func_end MOD77_021D85E0
+
+ thumb_func_start MOD77_021D8698
+MOD77_021D8698: ; 0x021D8698
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D86B0 ; =0x0000C044
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200CCF8
+ ldr r0, _021D86B0 ; =0x0000C044
+ add r0, r4, r0
+ bl FUN_02019178
+ pop {r4, pc}
+ .align 2, 0
+_021D86B0: .word 0x0000C044
+ thumb_func_end MOD77_021D8698
+
+ thumb_func_start MOD77_021D86B4
+MOD77_021D86B4: ; 0x021D86B4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ ldr r0, _021D8808 ; =0x0000C328
+ ldr r1, [r5, r0]
+ cmp r1, #0
+ bne _021D870E
+ mov r0, #1
+ ldr r1, [r5]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ add r4, r0, #0
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x30
+ str r0, [sp, #4]
+ ldr r0, _021D880C ; =0x0000C014
+ mov r2, #0
+ add r0, r5, r0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, _021D8810 ; =0x0000C060
+ mov r1, #0xe
+ ldr r0, [r5, r0]
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r3, #0
+ ldr r0, _021D880C ; =0x0000C014
+ str r3, [sp]
+ str r3, [sp, #4]
+ add r0, r5, r0
+ mov r1, #1
+ add r2, r4, #0
+ str r3, [sp, #8]
+ bl FUN_0201BD84
+ add r0, r4, #0
+ bl FUN_02021A20
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+_021D870E:
+ add r2, r0, #0
+ sub r2, #0x74
+ ldr r3, [r5, r2]
+ mov r1, #0
+ add r2, r3, #0
+ sub r2, #0x30
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add r3, #0x30
+ str r2, [sp, #0x18]
+ lsl r2, r3, #0x10
+ asr r2, r2, #0x10
+ sub r0, #0x70
+ str r2, [sp, #0x14]
+ ldr r2, [r5, r0]
+ str r1, [sp, #0x1c]
+ add r0, r2, #0
+ sub r0, #0x30
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r2, #0x30
+ str r0, [sp, #0x10]
+ lsl r0, r2, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ bls _021D87FA
+ add r4, r5, #0
+_021D8748:
+ mov r0, #0x10
+ ldrsh r2, [r4, r0]
+ ldr r0, [sp, #0x18]
+ cmp r2, r0
+ ble _021D87EC
+ ldr r0, [sp, #0x14]
+ cmp r2, r0
+ bge _021D87EC
+ mov r0, #0x12
+ ldrsh r2, [r4, r0]
+ ldr r0, [sp, #0x10]
+ cmp r2, r0
+ ble _021D87EC
+ ldr r0, [sp, #0xc]
+ cmp r2, r0
+ bge _021D87EC
+ ldrh r0, [r4, #0x38]
+ cmp r0, #0
+ beq _021D87EC
+ ldr r1, [r5]
+ mov r0, #0x40
+ bl FUN_020219F4
+ add r7, r0, #0
+ ldr r1, [r5]
+ mov r0, #0x40
+ bl FUN_020219F4
+ add r6, r0, #0
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x30
+ str r0, [sp, #4]
+ ldr r0, _021D880C ; =0x0000C014
+ mov r2, #0
+ add r0, r5, r0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, [r5]
+ add r2, r7, #0
+ str r0, [sp]
+ ldrh r0, [r4, #0x3a]
+ ldrh r1, [r4, #0x3c]
+ add r3, r6, #0
+ bl MOD77_021D8E9C
+ ldrh r0, [r4, #0x3c]
+ cmp r0, #0
+ beq _021D87C8
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, _021D880C ; =0x0000C014
+ mov r1, #1
+ add r0, r5, r0
+ add r2, r6, #0
+ mov r3, #0
+ bl FUN_0201BD84
+_021D87C8:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, _021D880C ; =0x0000C014
+ mov r1, #1
+ add r0, r5, r0
+ add r2, r7, #0
+ mov r3, #0
+ bl FUN_0201BD84
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_02021A20
+ mov r1, #1
+_021D87EC:
+ ldr r0, [sp, #0x1c]
+ ldr r2, [r5, #0xc]
+ add r0, r0, #1
+ add r4, #0x30
+ str r0, [sp, #0x1c]
+ cmp r0, r2
+ blo _021D8748
+_021D87FA:
+ cmp r1, #0
+ bne _021D8804
+ ldr r0, _021D8808 ; =0x0000C328
+ mov r1, #0
+ str r1, [r5, r0]
+_021D8804:
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8808: .word 0x0000C328
+_021D880C: .word 0x0000C014
+_021D8810: .word 0x0000C060
+ thumb_func_end MOD77_021D86B4
+
+ thumb_func_start MOD77_021D8814
+MOD77_021D8814: ; 0x021D8814
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r2, [r4]
+ mov r0, #0x81
+ mov r1, #0
+ bl LoadFromNarc_2
+ ldr r2, _021D88B4 ; =0x0000C0CC
+ str r0, [r4, r2]
+ add r0, r2, #0
+ sub r1, r2, #4
+ sub r0, #0x58
+ add r0, r4, r0
+ add r1, r4, r1
+ add r2, r4, r2
+ bl FUN_0201B234
+ ldr r2, [r4]
+ mov r0, #0x81
+ mov r1, #1
+ bl LoadFromNarc_2
+ ldr r2, _021D88B8 ; =0x0000C294
+ str r0, [r4, r2]
+ add r0, r2, #0
+ add r1, r2, #0
+ sub r0, #0xc8
+ sub r1, #0x14
+ add r0, r4, r0
+ add r1, r4, r1
+ add r2, r4, r2
+ bl FUN_0201B234
+ ldr r2, [r4]
+ mov r0, #0x81
+ mov r1, #2
+ bl LoadFromNarc_2
+ ldr r2, _021D88BC ; =0x0000C298
+ str r0, [r4, r2]
+ add r0, r2, #0
+ add r1, r2, #0
+ sub r0, #0x78
+ sub r1, #0x14
+ add r0, r4, r0
+ add r1, r4, r1
+ add r2, r4, r2
+ bl FUN_0201B234
+ ldr r2, [r4]
+ mov r0, #0x81
+ mov r1, #3
+ bl LoadFromNarc_2
+ ldr r2, _021D88C0 ; =0x0000C28C
+ str r0, [r4, r2]
+ add r1, r2, #0
+ ldr r0, _021D88C4 ; =0x0000C124
+ sub r1, #0x14
+ add r0, r4, r0
+ add r1, r4, r1
+ add r2, r4, r2
+ bl FUN_0201B234
+ ldr r2, [r4]
+ mov r0, #0x81
+ mov r1, #4
+ bl LoadFromNarc_2
+ ldr r2, _021D88C8 ; =0x0000C290
+ str r0, [r4, r2]
+ add r1, r2, #0
+ ldr r0, _021D88CC ; =0x0000C178
+ sub r1, #0x14
+ add r0, r4, r0
+ add r1, r4, r1
+ add r2, r4, r2
+ bl FUN_0201B234
+ pop {r4, pc}
+ .align 2, 0
+_021D88B4: .word 0x0000C0CC
+_021D88B8: .word 0x0000C294
+_021D88BC: .word 0x0000C298
+_021D88C0: .word 0x0000C28C
+_021D88C4: .word 0x0000C124
+_021D88C8: .word 0x0000C290
+_021D88CC: .word 0x0000C178
+ thumb_func_end MOD77_021D8814
+
+ thumb_func_start MOD77_021D88D0
+MOD77_021D88D0: ; 0x021D88D0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D8900 ; =0x0000C290
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _021D8904 ; =0x0000C28C
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _021D8908 ; =0x0000C298
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _021D890C ; =0x0000C294
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _021D8910 ; =0x0000C0CC
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ pop {r4, pc}
+ nop
+_021D8900: .word 0x0000C290
+_021D8904: .word 0x0000C28C
+_021D8908: .word 0x0000C298
+_021D890C: .word 0x0000C294
+_021D8910: .word 0x0000C0CC
+ thumb_func_end MOD77_021D88D0
+
+ thumb_func_start MOD77_021D8914
+MOD77_021D8914: ; 0x021D8914
+ push {r4, r5}
+ ldr r1, _021D896C ; =0x0000C29C
+ mov r3, #0
+ str r3, [r0, r1]
+ add r2, r1, #4
+ str r3, [r0, r2]
+ add r2, r1, #0
+ add r2, #8
+ str r3, [r0, r2]
+ mov r2, #1
+ add r4, r1, #0
+ lsl r2, r2, #0xc
+ add r4, #0xc
+ str r2, [r0, r4]
+ add r4, r1, #0
+ add r4, #0x10
+ str r2, [r0, r4]
+ add r4, r1, #0
+ add r4, #0x14
+ str r2, [r0, r4]
+ mov r5, #0x69
+ add r4, r1, #0
+ lsl r5, r5, #6
+ add r4, #0x18
+ str r5, [r0, r4]
+ mov r5, #0x1f
+ add r4, r1, #0
+ lsl r5, r5, #0xa
+ add r4, #0x1c
+ str r5, [r0, r4]
+ add r4, r1, #0
+ add r4, #0x20
+ str r3, [r0, r4]
+ add r3, r1, #0
+ add r3, #0x24
+ str r2, [r0, r3]
+ add r3, r1, #0
+ add r3, #0x28
+ str r2, [r0, r3]
+ add r1, #0x2c
+ str r2, [r0, r1]
+ pop {r4, r5}
+ bx lr
+ nop
+_021D896C: .word 0x0000C29C
+ thumb_func_end MOD77_021D8914
+
+ thumb_func_start MOD77_021D8970
+MOD77_021D8970: ; 0x021D8970
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ ldr r6, _021D89E4 ; =0x021D8F48
+ add r4, r0, #0
+ ldmia r6!, {r0, r1}
+ add r5, sp, #8
+ add r2, r5, #0
+ stmia r5!, {r0, r1}
+ ldr r0, [r6]
+ add r1, r2, #0
+ str r0, [r5]
+ add r7, sp, #0x14
+ mov r3, #0
+ str r3, [r7]
+ str r3, [r7, #4]
+ str r3, [r7, #8]
+ ldr r0, _021D89E8 ; =0x0000C2CC
+ str r3, [sp]
+ ldr r0, [r4, r0]
+ ldr r2, _021D89EC ; =0x000005C1
+ str r0, [sp, #4]
+ add r0, r7, #0
+ bl FUN_0201ED5C
+ ldr r2, _021D89E8 ; =0x0000C2CC
+ mov r1, #0x19
+ ldr r2, [r4, r2]
+ mov r0, #0
+ lsl r1, r1, #0xe
+ bl FUN_0201EC94
+ ldr r1, _021D89E8 ; =0x0000C2CC
+ mov r0, #0
+ ldr r1, [r4, r1]
+ bl FUN_0201EE2C
+ ldr r0, _021D89E8 ; =0x0000C2CC
+ ldr r0, [r4, r0]
+ bl FUN_0201EB8C
+ ldr r0, _021D89F0 ; =0x0000C2F4
+ ldrh r1, [r4, r0]
+ cmp r1, #0
+ bne _021D89D0
+ mov r1, #1
+ sub r0, #0x1c
+ strh r1, [r4, r0]
+ b _021D89D6
+_021D89D0:
+ mov r1, #0
+ sub r0, #0x1c
+ strh r1, [r4, r0]
+_021D89D6:
+ add r0, r4, #0
+ bl MOD77_021D8CF8
+ cmp r0, #1
+ bne _021D89D6
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D89E4: .word 0x021D8F48
+_021D89E8: .word 0x0000C2CC
+_021D89EC: .word 0x000005C1
+_021D89F0: .word 0x0000C2F4
+ thumb_func_end MOD77_021D8970
+
+ thumb_func_start MOD77_021D89F4
+MOD77_021D89F4: ; 0x021D89F4
+ push {r4, lr}
+ ldr r3, _021D8A28 ; =0x0000C2DC
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [r4, r3]
+ add r1, r3, #4
+ str r0, [r4, r1]
+ add r1, r3, #0
+ ldr r2, _021D8A2C ; =0xFFFFF001
+ add r1, #8
+ str r2, [r4, r1]
+ ldr r1, [r4, r3]
+ add r2, r3, #4
+ add r3, #8
+ ldr r2, [r4, r2]
+ ldr r3, [r4, r3]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl FUN_020B8418
+ pop {r4, pc}
+ nop
+_021D8A28: .word 0x0000C2DC
+_021D8A2C: .word 0xFFFFF001
+ thumb_func_end MOD77_021D89F4
+
+ thumb_func_start MOD77_021D8A30
+MOD77_021D8A30: ; 0x021D8A30
+ push {r4, r5, lr}
+ sub sp, #0x24
+ add r4, r1, #0
+ ldr r1, [r4, #4]
+ ldr r3, _021D8AA4 ; =0x020FFA38
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ asr r1, r1, #4
+ lsl r2, r1, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r5, r0, #0
+ bl MTX_RotY33_
+ ldr r0, [r4]
+ ldr r3, _021D8AA4 ; =0x020FFA38
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #0
+ bl MTX_RotX33_
+ add r0, r5, #0
+ add r1, sp, #0
+ add r2, r5, #0
+ bl MTX_Concat33
+ ldr r0, [r4, #8]
+ ldr r3, _021D8AA4 ; =0x020FFA38
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #0
+ bl MTX_RotZ33_
+ add r0, r5, #0
+ add r1, sp, #0
+ add r2, r5, #0
+ bl MTX_Concat33
+ add sp, #0x24
+ pop {r4, r5, pc}
+ nop
+_021D8AA4: .word 0x020FFA38
+ thumb_func_end MOD77_021D8A30
+
+ thumb_func_start MOD77_021D8AA8
+MOD77_021D8AA8: ; 0x021D8AA8
+ push {r4, r5, lr}
+ sub sp, #0x24
+ add r4, r1, #0
+ ldr r1, [r4]
+ ldr r3, _021D8B1C ; =0x020FFA38
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ asr r1, r1, #4
+ lsl r2, r1, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r5, r0, #0
+ bl MTX_RotY33_
+ ldr r0, [r4, #4]
+ ldr r3, _021D8B1C ; =0x020FFA38
+ neg r0, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #0
+ bl MTX_RotX33_
+ add r0, r5, #0
+ add r1, sp, #0
+ add r2, r5, #0
+ bl MTX_Concat33
+ ldr r0, [r4, #8]
+ ldr r3, _021D8B1C ; =0x020FFA38
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ add r1, r2, #1
+ lsl r1, r1, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #0
+ bl MTX_RotZ33_
+ add r0, r5, #0
+ add r1, sp, #0
+ add r2, r5, #0
+ bl MTX_Concat33
+ add sp, #0x24
+ pop {r4, r5, pc}
+ .align 2, 0
+_021D8B1C: .word 0x020FFA38
+ thumb_func_end MOD77_021D8AA8
+
+ thumb_func_start MOD77_021D8B20
+MOD77_021D8B20: ; 0x021D8B20
+ push {r3, r4, r5, r6, r7, lr}
+ add r3, r0, #0
+ ldr r0, _021D8CD8 ; =0x0000C2B4
+ add r7, r2, #0
+ add r4, r0, #4
+ ldr r4, [r3, r4]
+ ldr r2, [r3, r0]
+ lsl r4, r4, #0x10
+ asr r4, r4, #0x10
+ lsl r2, r2, #0x10
+ mov lr, r4
+ mov r4, #1
+ mov r6, #0
+ asr r2, r2, #0x10
+ tst r1, r4
+ bne _021D8B4E
+ add r1, r0, #0
+ add r1, #0x44
+ ldr r4, [r3, r1]
+ mov r1, #1
+ mov ip, r4
+ tst r1, r4
+ beq _021D8B72
+_021D8B4E:
+ ldr r1, _021D8CDC ; =0x0000C2F4
+ ldrh r0, [r3, r1]
+ cmp r0, #1
+ bne _021D8B6E
+ add r0, r1, #0
+ sub r0, #0x1c
+ ldrh r0, [r3, r0]
+ cmp r0, #0
+ bne _021D8B68
+ mov r0, #1
+ sub r1, #0x1c
+ strh r0, [r3, r1]
+ b _021D8B6E
+_021D8B68:
+ mov r0, #0
+ sub r1, #0x1c
+ strh r0, [r3, r1]
+_021D8B6E:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021D8B72:
+ add r1, r0, #0
+ add r1, #0x24
+ ldrh r1, [r3, r1]
+ cmp r1, #0
+ bne _021D8BA4
+ add r1, r0, #0
+ add r1, #0x54
+ ldr r1, [r3, r1]
+ cmp r1, #0
+ bne _021D8B8E
+ add r0, #0x58
+ ldr r0, [r3, r0]
+ cmp r0, #0
+ beq _021D8B9C
+_021D8B8E:
+ lsl r0, r1, #0x16
+ ldr r1, _021D8CE0 ; =0x0000C30C
+ lsr r0, r0, #0x10
+ ldr r1, [r3, r1]
+ lsl r1, r1, #0x16
+ lsr r1, r1, #0x10
+ b _021D8BC8
+_021D8B9C:
+ mov r0, #1
+ lsl r0, r0, #9
+ add r1, r0, #0
+ b _021D8BC8
+_021D8BA4:
+ add r1, r0, #0
+ add r1, #0x54
+ ldr r1, [r3, r1]
+ cmp r1, #0
+ bne _021D8BB6
+ add r0, #0x58
+ ldr r0, [r3, r0]
+ cmp r0, #0
+ beq _021D8BC4
+_021D8BB6:
+ lsl r0, r1, #0x12
+ ldr r1, _021D8CE0 ; =0x0000C30C
+ lsr r0, r0, #0x10
+ ldr r1, [r3, r1]
+ lsl r1, r1, #0x12
+ lsr r1, r1, #0x10
+ b _021D8BC8
+_021D8BC4:
+ mov r0, #0x20
+ add r1, r0, #0
+_021D8BC8:
+ mov r4, #0x20
+ tst r4, r7
+ bne _021D8BD6
+ mov r5, ip
+ mov r4, #0x20
+ tst r4, r5
+ beq _021D8C02
+_021D8BD6:
+ ldr r6, _021D8CDC ; =0x0000C2F4
+ ldrh r4, [r3, r6]
+ cmp r4, #1
+ bne _021D8BEC
+ add r4, r6, #0
+ sub r4, #0x3c
+ ldr r4, [r3, r4]
+ sub r6, #0x3c
+ add r4, r4, r0
+ str r4, [r3, r6]
+ b _021D8C00
+_021D8BEC:
+ ldr r5, _021D8CE4 ; =0xFFFFD820
+ mov r4, lr
+ cmp r4, r5
+ bge _021D8C00
+ add r4, r6, #0
+ sub r4, #0x3c
+ ldr r4, [r3, r4]
+ sub r6, #0x3c
+ add r4, r4, r0
+ str r4, [r3, r6]
+_021D8C00:
+ mov r6, #1
+_021D8C02:
+ mov r4, #0x10
+ tst r4, r7
+ bne _021D8C12
+ ldr r4, _021D8CE8 ; =0x0000C2F8
+ ldr r5, [r3, r4]
+ mov r4, #0x10
+ tst r4, r5
+ beq _021D8C3E
+_021D8C12:
+ ldr r5, _021D8CDC ; =0x0000C2F4
+ ldrh r4, [r3, r5]
+ cmp r4, #1
+ bne _021D8C28
+ add r4, r5, #0
+ sub r4, #0x3c
+ ldr r4, [r3, r4]
+ sub r5, #0x3c
+ sub r0, r4, r0
+ str r0, [r3, r5]
+ b _021D8C3C
+_021D8C28:
+ ldr r4, _021D8CEC ; =0xFFFFCC80
+ mov r6, lr
+ cmp r6, r4
+ ble _021D8C3C
+ add r4, r5, #0
+ sub r4, #0x3c
+ ldr r4, [r3, r4]
+ sub r5, #0x3c
+ sub r0, r4, r0
+ str r0, [r3, r5]
+_021D8C3C:
+ mov r6, #1
+_021D8C3E:
+ mov r4, #0x40
+ add r0, r7, #0
+ tst r0, r4
+ bne _021D8C4E
+ ldr r0, _021D8CE8 ; =0x0000C2F8
+ ldr r0, [r3, r0]
+ tst r0, r4
+ beq _021D8C88
+_021D8C4E:
+ ldr r4, _021D8CDC ; =0x0000C2F4
+ ldrh r0, [r3, r4]
+ cmp r0, #1
+ bne _021D8C74
+ mov r0, #0x3e
+ add r5, r2, r1
+ lsl r0, r0, #8
+ cmp r5, r0
+ bge _021D8C6E
+ add r0, r4, #0
+ sub r0, #0x40
+ ldr r0, [r3, r0]
+ sub r4, #0x40
+ add r0, r0, r1
+ str r0, [r3, r4]
+ b _021D8C86
+_021D8C6E:
+ sub r4, #0x40
+ str r0, [r3, r4]
+ b _021D8C86
+_021D8C74:
+ ldr r0, _021D8CF0 ; =0x00002020
+ cmp r2, r0
+ bge _021D8C86
+ add r0, r4, #0
+ sub r0, #0x40
+ ldr r0, [r3, r0]
+ sub r4, #0x40
+ add r0, r0, r1
+ str r0, [r3, r4]
+_021D8C86:
+ mov r6, #1
+_021D8C88:
+ mov r4, #0x80
+ add r0, r7, #0
+ tst r0, r4
+ bne _021D8C98
+ ldr r0, _021D8CE8 ; =0x0000C2F8
+ ldr r0, [r3, r0]
+ tst r0, r4
+ beq _021D8CD2
+_021D8C98:
+ ldr r4, _021D8CDC ; =0x0000C2F4
+ ldrh r0, [r3, r4]
+ cmp r0, #1
+ bne _021D8CBC
+ ldr r0, _021D8CF4 ; =0xFFFFC200
+ sub r2, r2, r1
+ cmp r2, r0
+ ble _021D8CB6
+ add r0, r4, #0
+ sub r0, #0x40
+ ldr r0, [r3, r0]
+ sub r4, #0x40
+ sub r0, r0, r1
+ str r0, [r3, r4]
+ b _021D8CD0
+_021D8CB6:
+ sub r4, #0x40
+ str r0, [r3, r4]
+ b _021D8CD0
+_021D8CBC:
+ mov r0, #0x13
+ lsl r0, r0, #8
+ cmp r2, r0
+ ble _021D8CD0
+ add r0, r4, #0
+ sub r0, #0x40
+ ldr r0, [r3, r0]
+ sub r4, #0x40
+ sub r0, r0, r1
+ str r0, [r3, r4]
+_021D8CD0:
+ mov r6, #1
+_021D8CD2:
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8CD8: .word 0x0000C2B4
+_021D8CDC: .word 0x0000C2F4
+_021D8CE0: .word 0x0000C30C
+_021D8CE4: .word 0xFFFFD820
+_021D8CE8: .word 0x0000C2F8
+_021D8CEC: .word 0xFFFFCC80
+_021D8CF0: .word 0x00002020
+_021D8CF4: .word 0xFFFFC200
+ thumb_func_end MOD77_021D8B20
+
+ thumb_func_start MOD77_021D8CF8
+MOD77_021D8CF8: ; 0x021D8CF8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D8D7C ; =0x0000C2CC
+ ldr r0, [r5, r0]
+ bl FUN_0201F010
+ ldr r1, _021D8D80 ; =0x0000C2D8
+ mov r4, #0
+ ldrh r2, [r5, r1]
+ cmp r2, #0
+ beq _021D8D42
+ cmp r2, #1
+ bne _021D8D70
+ mov r2, #0x16
+ lsl r2, r2, #0xe
+ cmp r0, r2
+ ble _021D8D3A
+ mov r2, #2
+ lsl r2, r2, #0xe
+ sub r0, r0, r2
+ add r2, r1, #0
+ sub r2, #0x18
+ ldr r3, [r5, r2]
+ add r2, r1, #0
+ sub r3, #0x80
+ sub r2, #0x18
+ str r3, [r5, r2]
+ add r2, r1, #0
+ sub r2, #0x18
+ ldr r2, [r5, r2]
+ sub r1, #0x14
+ str r2, [r5, r1]
+ b _021D8D70
+_021D8D3A:
+ mov r0, #5
+ lsl r0, r0, #0x10
+ mov r4, #1
+ b _021D8D70
+_021D8D42:
+ mov r2, #0x12
+ lsl r2, r2, #0x10
+ cmp r0, r2
+ bge _021D8D6A
+ mov r2, #2
+ lsl r2, r2, #0xe
+ add r0, r0, r2
+ add r2, r1, #0
+ sub r2, #0x18
+ ldr r3, [r5, r2]
+ add r2, r1, #0
+ add r3, #0x80
+ sub r2, #0x18
+ str r3, [r5, r2]
+ add r2, r1, #0
+ sub r2, #0x18
+ ldr r2, [r5, r2]
+ sub r1, #0x14
+ str r2, [r5, r1]
+ b _021D8D70
+_021D8D6A:
+ mov r0, #0x4a
+ lsl r0, r0, #0xe
+ mov r4, #1
+_021D8D70:
+ ldr r1, _021D8D7C ; =0x0000C2CC
+ ldr r1, [r5, r1]
+ bl FUN_0201EFE0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8D7C: .word 0x0000C2CC
+_021D8D80: .word 0x0000C2D8
+ thumb_func_end MOD77_021D8CF8
+
+ thumb_func_start MOD77_021D8D84
+MOD77_021D8D84: ; 0x021D8D84
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x70
+ ldr r4, _021D8E74 ; =0x021D8FF4
+ add r5, r0, #0
+ add r3, sp, #0x4c
+ mov r2, #4
+_021D8D90:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D8D90
+ ldr r0, [r4]
+ str r0, [r3]
+ ldr r0, _021D8E78 ; =0x0000C2E8
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D8E6E
+ cmp r0, #1
+ beq _021D8DC2
+ cmp r0, #2
+ bne _021D8E6E
+ bl FUN_020222AC
+ mov r0, #0
+ mov r1, #1
+ bl FUN_020222B4
+ ldr r0, _021D8E78 ; =0x0000C2E8
+ mov r1, #0
+ add sp, #0x70
+ str r1, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D8DC2:
+ bl FUN_020222AC
+ bl FUN_0201EBA4
+ ldr r1, _021D8E7C ; =0x0000C2B4
+ add r0, sp, #0x4c
+ add r1, r5, r1
+ bl MOD77_021D8A30
+ ldr r3, _021D8E80 ; =0x0000C29C
+ ldr r0, _021D8E84 ; =0x0000C074
+ add r1, r5, r3
+ add r3, #0xc
+ add r0, r5, r0
+ add r2, sp, #0x4c
+ add r3, r5, r3
+ bl FUN_0201B26C
+ ldr r4, _021D8E88 ; =0x021D9060
+ add r3, sp, #0x28
+ mov r2, #4
+_021D8DEC:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D8DEC
+ ldr r0, [r4]
+ add r2, sp, #0x28
+ str r0, [r3]
+ ldr r3, _021D8E8C ; =0x0000C220
+ add r1, r3, #0
+ add r0, r5, r3
+ add r1, #0x7c
+ add r3, #0xa0
+ add r1, r5, r1
+ add r3, r5, r3
+ bl FUN_0201B26C
+ ldr r4, _021D8E90 ; =0x021D9018
+ add r3, sp, #4
+ mov r2, #4
+_021D8E12:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D8E12
+ ldr r0, [r4]
+ mov r7, #0
+ str r0, [r3]
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ bls _021D8E66
+ ldr r0, _021D8E94 ; =0x0000C0D0
+ add r6, r5, #0
+ add r0, r5, r0
+ add r6, #0x14
+ add r4, r5, #0
+ str r0, [sp]
+_021D8E32:
+ add r0, r6, #0
+ add r1, sp, #0x4c
+ add r2, sp, #4
+ bl MTX_Concat33
+ ldrh r2, [r4, #0x38]
+ cmp r2, #0
+ beq _021D8E5A
+ add r1, r2, #0
+ mov r0, #0x54
+ mul r1, r0
+ ldr r0, [sp]
+ ldr r3, _021D8E98 ; =0x0000C2C0
+ add r0, r0, r1
+ ldr r1, _021D8E80 ; =0x0000C29C
+ add r2, sp, #4
+ add r1, r5, r1
+ add r3, r5, r3
+ bl FUN_0201B26C
+_021D8E5A:
+ ldr r0, [r5, #0xc]
+ add r7, r7, #1
+ add r6, #0x30
+ add r4, #0x30
+ cmp r7, r0
+ blo _021D8E32
+_021D8E66:
+ mov r0, #0
+ mov r1, #1
+ bl FUN_020222B4
+_021D8E6E:
+ add sp, #0x70
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8E74: .word 0x021D8FF4
+_021D8E78: .word 0x0000C2E8
+_021D8E7C: .word 0x0000C2B4
+_021D8E80: .word 0x0000C29C
+_021D8E84: .word 0x0000C074
+_021D8E88: .word 0x021D9060
+_021D8E8C: .word 0x0000C220
+_021D8E90: .word 0x021D9018
+_021D8E94: .word 0x0000C0D0
+_021D8E98: .word 0x0000C2C0
+ thumb_func_end MOD77_021D8D84
+
+ thumb_func_start MOD77_021D8E9C
+MOD77_021D8E9C: ; 0x021D8E9C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ str r1, [sp]
+ add r6, r2, #0
+ str r3, [sp, #4]
+ bl MOD77_021D7E1C
+ ldr r7, [sp, #0x20]
+ mov r2, #0x99
+ add r4, r0, #0
+ mov r0, #0
+ mov r1, #0x1a
+ lsl r2, r2, #2
+ add r3, r7, #0
+ bl FUN_0200A86C
+ str r0, [sp, #8]
+ add r1, r5, #0
+ add r2, r6, #0
+ bl FUN_0200A8E0
+ ldr r0, [sp, #8]
+ bl FUN_0200A8B8
+ cmp r4, #0
+ bne _021D8EDA
+ mov r5, #0
+ mov r4, #1
+ str r5, [sp]
+ b _021D8EDC
+_021D8EDA:
+ mov r5, #1
+_021D8EDC:
+ add r0, r4, #0
+ bl FUN_02088D4C
+ add r2, r0, #0
+ mov r0, #0
+ mov r1, #0x1a
+ add r3, r7, #0
+ bl FUN_0200A86C
+ ldr r1, [sp]
+ ldr r2, [sp, #4]
+ add r4, r0, #0
+ bl FUN_0200A8E0
+ add r0, r4, #0
+ bl FUN_0200A8B8
+ add r0, r5, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD77_021D8E9C
+
+ thumb_func_start MOD77_021D8F04
+MOD77_021D8F04: ; 0x021D8F04
+ push {r3, lr}
+ bl MOD77_021D7E1C
+ cmp r0, #0
+ beq _021D8F12
+ mov r0, #1
+ pop {r3, pc}
+_021D8F12:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD77_021D8F04
+
+ .section .rodata
+ ; 0x021D8F18
+ .incbin "baserom.nds", 0x2D9638, 0x194
diff --git a/arm9/modules/78/asm/module_78.s b/arm9/modules/78/asm/module_78.s
new file mode 100644
index 00000000..03fb6972
--- /dev/null
+++ b/arm9/modules/78/asm/module_78.s
@@ -0,0 +1,444 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD78_021D74E0
+MOD78_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ mov r2, #2
+ add r5, r0, #0
+ mov r0, #3
+ mov r1, #0x48
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ add r0, r5, #0
+ mov r1, #0xa0
+ mov r2, #0x48
+ bl FUN_02006268
+ mov r1, #0
+ mov r2, #0xa0
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ bl FUN_0200628C
+ add r5, r0, #0
+ add r0, r4, #0
+ ldrb r1, [r5]
+ add r0, #0x9c
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x9d
+ strb r1, [r0]
+ mov r0, #0x48
+ bl FUN_0201EB64
+ str r0, [r4]
+ bl MOD78_021D7708
+ add r0, r4, #0
+ bl MOD78_021D778C
+ add r0, sp, #0xc
+ mov r1, #0
+ str r1, [r0]
+ str r1, [r0, #4]
+ str r1, [r0, #8]
+ str r1, [sp]
+ str r1, [sp, #4]
+ ldr r1, [r4]
+ ldr r2, _021D75C4 ; =0x021D789C
+ str r1, [sp, #8]
+ ldr r1, _021D75C8 ; =0x0029AEC1
+ ldr r3, _021D75CC ; =0x000005C1
+ bl FUN_0201ECA8
+ ldr r0, [r4]
+ bl FUN_0201EB8C
+ mov r4, #0
+ mov r7, #2
+ mov r6, #4
+_021D7558:
+ ldr r2, [r5, #4]
+ mov r0, #6
+ add r1, r4, #0
+ mul r1, r0
+ add r3, r2, r1
+ ldrsh r1, [r2, r1]
+ ldrsh r2, [r3, r7]
+ ldrsh r3, [r3, r6]
+ add r0, r4, #0
+ bl FUN_020B8418
+ ldr r2, [r5, #4]
+ lsl r1, r4, #1
+ add r1, r2, r1
+ ldrh r1, [r1, #0x18]
+ add r0, r4, #0
+ bl FUN_020B8404
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021D7558
+ ldr r2, [r5, #4]
+ ldrh r0, [r2, #0x20]
+ ldrh r1, [r2, #0x22]
+ ldr r2, [r2, #0x28]
+ bl FUN_020B83E0
+ ldr r2, [r5, #4]
+ ldrh r0, [r2, #0x24]
+ ldrh r1, [r2, #0x26]
+ ldr r2, [r2, #0x2c]
+ bl FUN_020B83BC
+ ldr r3, [r5, #4]
+ ldr r0, [r3, #0x40]
+ str r0, [sp]
+ ldr r0, [r3, #0x44]
+ str r0, [sp, #4]
+ ldr r0, [r3, #0x30]
+ ldr r1, [r3, #0x34]
+ ldr r2, [r3, #0x38]
+ ldr r3, [r3, #0x3c]
+ bl FUN_020B8390
+ mov r0, #0
+ mov r1, #0x48
+ bl FUN_02079A70
+ mov r0, #1
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D75C4: .word 0x021D789C
+_021D75C8: .word 0x0029AEC1
+_021D75CC: .word 0x000005C1
+ thumb_func_end MOD78_021D74E0
+
+ thumb_func_start MOD78_021D75D0
+MOD78_021D75D0: ; 0x021D75D0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x3c
+ ldr r6, _021D76AC ; =0x021D78AC
+ add r2, r0, #0
+ add r5, r1, #0
+ add r4, sp, #0x18
+ mov r3, #4
+_021D75DE:
+ ldmia r6!, {r0, r1}
+ stmia r4!, {r0, r1}
+ sub r3, r3, #1
+ bne _021D75DE
+ ldr r0, [r6]
+ add r3, sp, #0xc
+ str r0, [r4]
+ ldr r4, _021D76B0 ; =0x021D787C
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r4]
+ add r1, sp, #0
+ str r0, [r3]
+ mov r0, #0
+ str r0, [r1]
+ str r0, [r1, #4]
+ str r0, [r1, #8]
+ add r0, r2, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021D7614
+ cmp r0, #1
+ beq _021D7622
+ b _021D7662
+_021D7614:
+ ldr r0, _021D76B4 ; =0x000006DC
+ bl FUN_020054C8
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D7662
+_021D7622:
+ add r0, r4, #0
+ add r0, #0x9d
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021D7654
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r2, [r0]
+ mov r0, #1
+ ldr r1, [r2]
+ lsl r0, r0, #0xc
+ add r1, r1, r0
+ ldr r0, [r2, #8]
+ ldrh r0, [r0, #4]
+ lsl r0, r0, #0xc
+ cmp r1, r0
+ bne _021D7662
+ add r1, r4, #0
+ mov r0, #1
+ add r1, #0x9d
+ strb r0, [r1]
+ mov r1, #0x48
+ bl FUN_02079A70
+ b _021D7662
+_021D7654:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D7662
+ add sp, #0x3c
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D7662:
+ mov r3, #1
+ mov r2, #0
+ lsl r3, r3, #0xc
+_021D7668:
+ lsl r0, r2, #2
+ add r0, r4, r0
+ add r0, #0x80
+ ldr r1, [r0]
+ ldr r5, [r1, #8]
+ ldr r0, [r1]
+ ldrh r5, [r5, #4]
+ add r0, r0, r3
+ lsl r5, r5, #0xc
+ cmp r0, r5
+ bge _021D7680
+ str r0, [r1]
+_021D7680:
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #4
+ blo _021D7668
+ bl FUN_020222AC
+ bl FUN_0201EBA4
+ add r0, r4, #4
+ add r1, sp, #0
+ add r2, sp, #0x18
+ add r3, sp, #0xc
+ bl FUN_0201B26C
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_020222B4
+ mov r0, #0
+ add sp, #0x3c
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D76AC: .word 0x021D78AC
+_021D76B0: .word 0x021D787C
+_021D76B4: .word 0x000006DC
+ thumb_func_end MOD78_021D75D0
+
+ thumb_func_start MOD78_021D76B8
+MOD78_021D76B8: ; 0x021D76B8
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ bl FUN_02006278
+ add r6, r0, #0
+ add r7, r6, #0
+ mov r4, #0
+ add r7, #0x70
+_021D76C8:
+ lsl r0, r4, #2
+ add r5, r6, r0
+ add r1, r5, #0
+ add r1, #0x80
+ ldr r1, [r1]
+ add r0, r7, #0
+ bl thunk_FUN_020ae84c
+ ldr r0, [r5, #0x60]
+ bl FUN_02016A18
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021D76C8
+ ldr r0, [r6, #0x5c]
+ bl FUN_02016A18
+ ldr r0, [r6]
+ bl FUN_0201EB70
+ ldr r0, [sp]
+ bl FUN_0200627C
+ bl FUN_0201B398
+ mov r0, #0x48
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD78_021D76B8
+
+ thumb_func_start MOD78_021D7708
+MOD78_021D7708: ; 0x021D7708
+ 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, _021D7758 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D775C ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ bl MOD78_021D776C
+ mov r0, #0x48
+ bl FUN_0201B2EC
+ ldr r2, _021D7760 ; =0x04000060
+ ldr r0, _021D7764 ; =0xFFFFCFFF
+ ldrh r1, [r2]
+ and r1, r0
+ mov r0, #0x20
+ orr r0, r1
+ strh r0, [r2]
+ ldr r0, _021D7768 ; =0x021D7888
+ bl G3X_SetEdgeColorTable
+ bl FUN_0201E7A0
+ pop {r3, pc}
+ nop
+_021D7758: .word 0xFFFFE0FF
+_021D775C: .word 0x04001000
+_021D7760: .word 0x04000060
+_021D7764: .word 0xFFFFCFFF
+_021D7768: .word 0x021D7888
+ thumb_func_end MOD78_021D7708
+
+ thumb_func_start MOD78_021D776C
+MOD78_021D776C: ; 0x021D776C
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D7788 ; =0x021D78D0
+ add r3, sp, #0
+ mov r2, #5
+_021D7776:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7776
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D7788: .word 0x021D78D0
+ thumb_func_end MOD78_021D776C
+
+ thumb_func_start MOD78_021D778C
+MOD78_021D778C: ; 0x021D778C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #0x78
+ mov r1, #0x48
+ bl FUN_02006670
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x70
+ mov r1, #0x48
+ mov r2, #4
+ bl FUN_02016B20
+ add r1, r5, #0
+ add r1, #0x9c
+ ldrb r2, [r1]
+ mov r1, #0xa
+ ldr r0, [sp]
+ add r3, r2, #0
+ mul r3, r1
+ ldr r1, _021D7878 ; =0x021D7900
+ mov r2, #0x48
+ ldrh r1, [r1, r3]
+ bl FUN_02006704
+ add r1, r5, #0
+ add r2, r5, #0
+ str r0, [r5, #0x5c]
+ add r0, r5, #4
+ add r1, #0x58
+ add r2, #0x5c
+ bl FUN_0201B234
+ ldr r0, [r5, #0x5c]
+ bl FUN_020BC0FC
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x58]
+ mov r1, #0
+ mov r2, #0x40
+ bl FUN_020BC094
+ ldr r0, [r5, #0x58]
+ mov r1, #0
+ mov r2, #0x80
+ bl FUN_020BC094
+ mov r2, #2
+ ldr r0, [r5, #0x58]
+ mov r1, #0
+ lsl r2, r2, #8
+ bl FUN_020BC094
+ mov r2, #1
+ ldr r0, [r5, #0x58]
+ mov r1, #0
+ lsl r2, r2, #0xa
+ bl FUN_020BC094
+ add r0, r5, #0
+ str r0, [sp, #8]
+ add r0, #0x70
+ mov r6, #0
+ str r0, [sp, #8]
+_021D780E:
+ add r1, r5, #0
+ add r1, #0x9c
+ ldrb r3, [r1]
+ lsl r0, r6, #2
+ add r4, r5, r0
+ add r2, r3, #0
+ mov r1, #0xa
+ mul r2, r1
+ ldr r3, _021D7878 ; =0x021D7900
+ lsl r1, r6, #1
+ add r2, r3, r2
+ add r1, r1, r2
+ ldrh r1, [r1, #2]
+ ldr r0, [sp]
+ mov r2, #0x48
+ bl FUN_02006704
+ str r0, [r4, #0x60]
+ mov r1, #0
+ bl FUN_020BC4C8
+ add r7, r0, #0
+ ldr r0, [sp, #8]
+ ldr r2, [r5, #0x58]
+ add r1, r7, #0
+ bl FUN_020BB8D0
+ add r1, r4, #0
+ add r1, #0x80
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ ldr r2, [r5, #0x58]
+ ldr r3, [sp, #4]
+ add r1, r7, #0
+ bl FUN_020B8110
+ add r4, #0x80
+ ldr r1, [r4]
+ add r0, r5, #4
+ bl FUN_020B7EFC
+ add r0, r6, #1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #4
+ blo _021D780E
+ ldr r0, [sp]
+ bl FUN_020066F4
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7878: .word 0x021D7900
+ thumb_func_end MOD78_021D778C
+
+ .section .rodata
+ ; 0x021D787C
+ .incbin "baserom.nds", 0x2D9B9C, 0x7C
+
+ .section .data
+ ; 0x021D7900
+ .incbin "baserom.nds", 0x2D9C20, 0x40
diff --git a/arm9/modules/79/asm/module_79_arm.s b/arm9/modules/79/asm/module_79_arm.s
new file mode 100644
index 00000000..3b45bc8c
--- /dev/null
+++ b/arm9/modules/79/asm/module_79_arm.s
@@ -0,0 +1,4890 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD79_0221248C
+MOD79_0221248C: ; 0x0221248C
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ movs r7, r0
+ mov r6, r1
+ mov r5, r2
+ bne _022124B8
+ ldr r0, _02212544 ; =0x02216858
+ ldr r1, _02212548 ; =0x0221686C
+ ldr r3, _0221254C ; =0x000001B7
+ mov r2, #0
+ bl __msl_assertion_failed
+_022124B8:
+ cmp r5, #0
+ bne _022124D4
+ ldr r0, _02212550 ; =0x0221687C
+ ldr r1, _02212548 ; =0x0221686C
+ mov r2, #0
+ mov r3, #0x1b8
+ bl __msl_assertion_failed
+_022124D4:
+ ldr r4, [r5]
+ cmp r4, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r3, [r7, #0x10]
+ ldr r0, [r7, #0xc]
+ sub r0, r0, r3
+ cmp r0, #0
+ addle sp, sp, #4
+ movle r0, #0
+ ldmleia sp!, {r4, r5, r6, r7, pc}
+ ldr r1, [r7, #4]
+ cmp r4, r0
+ movge r4, r0
+ mov r0, r6
+ mov r2, r4
+ add r1, r1, r3
+ bl memcpy
+ mov r0, #0
+ strb r0, [r6, r4]
+ str r4, [r5]
+ ldr r1, [r7, #0x10]
+ mov r0, #1
+ add r1, r1, r4
+ str r1, [r7, #0x10]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02212544: .word 0x02216858
+_02212548: .word 0x0221686C
+_0221254C: .word 0x000001B7
+_02212550: .word 0x0221687C
+ arm_func_end MOD79_0221248C
+
+ arm_func_start MOD79_02212554
+MOD79_02212554: ; 0x02212554
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #0xc
+ mov r8, r0
+ add r6, sp, #0
+ add r5, sp, #4
+ add r4, r8, #0x60
+ mov r7, #0
+ mvn sb, #0
+_02212574:
+ ldr r0, [r8, #0x48]
+ mov r1, r7
+ mov r2, r6
+ mov r3, r5
+ bl MOD04_021EFF5C
+ cmp r0, sb
+ beq _0221259C
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ beq _022125C4
+_0221259C:
+ mov r0, #1
+ str r0, [r8, #0xfc]
+ mov r0, #5
+ str r0, [r8, #0x38]
+ ldr r0, [r8, #0x48]
+ bl MOD04_021EFB28
+ str r0, [r8, #0x4c]
+ add sp, sp, #0xc
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_022125C4:
+ ldr r0, [sp]
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ ldr r3, [r8, #0x60]
+ ldr r1, [r8, #0x54]
+ ldr r2, [r8, #0x5c]
+ mov r0, r8
+ add r1, r1, r3
+ sub r2, r2, r3
+ bl MOD79_02212F68
+ cmp r0, sb
+ addeq sp, sp, #0xc
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ ldr r1, [r4]
+ add r0, r1, r0
+ str r0, [r4]
+ ldr r1, [r8, #0x60]
+ ldr r0, [r8, #0x5c]
+ cmp r1, r0
+ blt _02212574
+ mov r0, #1
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ arm_func_end MOD79_02212554
+
+ arm_func_start MOD79_0221262C
+MOD79_0221262C: ; 0x0221262C
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ bne _0221264C
+ ldr r0, _02212664 ; =0x02216888
+ ldr r1, _02212668 ; =0x0221686C
+ mov r2, #0
+ mov r3, #0x16c
+ bl __msl_assertion_failed
+_0221264C:
+ mov r1, #0
+ str r1, [r4, #0xc]
+ str r1, [r4, #0x10]
+ ldr r0, [r4, #4]
+ strb r1, [r0]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02212664: .word 0x02216888
+_02212668: .word 0x0221686C
+ arm_func_end MOD79_0221262C
+
+ arm_func_start MOD79_0221266C
+MOD79_0221266C: ; 0x0221266C
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #0x10
+ mov r2, r1
+ mov r4, r0
+ ldr r1, _022126A0 ; =0x02216890
+ add r0, sp, #0
+ bl sprintf
+ add r1, sp, #0
+ mov r0, r4
+ mov r2, #0
+ bl MOD79_02212794
+ add sp, sp, #0x10
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022126A0: .word 0x02216890
+ arm_func_end MOD79_0221266C
+
+ arm_func_start MOD79_022126A4
+MOD79_022126A4: ; 0x022126A4
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ movs r4, r0
+ strb r1, [sp]
+ bne _022126CC
+ ldr r0, _022126F4 ; =0x02216888
+ ldr r1, _022126F8 ; =0x0221686C
+ ldr r3, _022126FC ; =0x00000131
+ mov r2, #0
+ bl __msl_assertion_failed
+_022126CC:
+ cmp r4, #0
+ addeq sp, sp, #8
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ add r1, sp, #0
+ mov r0, r4
+ mov r2, #1
+ bl MOD79_02212794
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022126F4: .word 0x02216888
+_022126F8: .word 0x0221686C
+_022126FC: .word 0x00000131
+ arm_func_end MOD79_022126A4
+
+ arm_func_start MOD79_02212700
+MOD79_02212700: ; 0x02212700
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r4, r2
+ mov r2, #0
+ mov r5, r0
+ bl MOD79_02212794
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r1, _0221278C ; =0x02216894
+ mov r0, r5
+ mov r2, #2
+ bl MOD79_02212794
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ mov r0, r5
+ mov r1, r4
+ mov r2, #0
+ bl MOD79_02212794
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r1, _02212790 ; =0x02216898
+ mov r0, r5
+ mov r2, #2
+ bl MOD79_02212794
+ cmp r0, #0
+ movne r0, #1
+ moveq r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0221278C: .word 0x02216894
+_02212790: .word 0x02216898
+ arm_func_end MOD79_02212700
+
+ arm_func_start MOD79_02212794
+MOD79_02212794: ; 0x02212794
+ stmdb sp!, {r0, r1, r2, r3}
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ movs r7, r0
+ mov r6, r1
+ ldr r5, [r7]
+ bne _022127C4
+ ldr r0, _02212A40 ; =0x02216888
+ ldr r1, _02212A44 ; =0x0221686C
+ mov r2, #0
+ mov r3, #0xb7
+ bl __msl_assertion_failed
+_022127C4:
+ cmp r6, #0
+ bne _022127E0
+ ldr r0, _02212A48 ; =0x0221689C
+ ldr r1, _02212A44 ; =0x0221686C
+ mov r2, #0
+ mov r3, #0xb8
+ bl __msl_assertion_failed
+_022127E0:
+ ldr r0, [sp, #0x28]
+ cmp r0, #0
+ bge _02212800
+ ldr r0, _02212A4C ; =0x022168A4
+ ldr r1, _02212A44 ; =0x0221686C
+ mov r2, #0
+ mov r3, #0xb9
+ bl __msl_assertion_failed
+_02212800:
+ cmp r7, #0
+ addeq sp, sp, #0xc
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ cmp r6, #0
+ addeq sp, sp, #0xc
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r0, [sp, #0x28]
+ cmp r0, #0
+ addlt sp, sp, #0xc
+ movlt r0, #0
+ ldmltia sp!, {r4, r5, r6, r7, lr}
+ addlt sp, sp, #0x10
+ bxlt lr
+ cmp r0, #0
+ bne _02212860
+ mov r0, r6
+ bl strlen
+ str r0, [sp, #0x28]
+_02212860:
+ ldr r0, [r7, #0x20]
+ cmp r0, #1
+ bne _02212968
+ ldr r0, [r5, #0x168]
+ cmp r0, #0
+ bne _0221288C
+ ldr r0, _02212A50 ; =0x022168B4
+ ldr r1, _02212A44 ; =0x0221686C
+ mov r2, #0
+ mov r3, #0xce
+ bl __msl_assertion_failed
+_0221288C:
+ ldr r2, [r7, #8]
+ ldr r1, [r7, #0xc]
+ add r0, sp, #8
+ sub r1, r2, r1
+ str r1, [sp, #8]
+ ldr r2, [r7, #4]
+ ldr r1, [r7, #0xc]
+ add r3, sp, #0x28
+ add r1, r2, r1
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldr r4, [r5, #0x17c]
+ mov r0, r5
+ mov r2, r6
+ add r1, r5, #0x164
+ .word 0xE12FFF34
+ mov r4, r0
+ cmp r4, #2
+ bne _0221294C
+ ldr r0, [r7, #0x18]
+ cmp r0, #0
+ beq _02212910
+ ldr r0, [r7]
+ mov r1, #1
+ str r1, [r0, #0xfc]
+ ldr r0, [r7]
+ mov r1, #2
+ str r1, [r0, #0x38]
+ add sp, sp, #0xc
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ add sp, sp, #0x10
+ bx lr
+_02212910:
+ ldr r1, [r7, #0x14]
+ mov r0, r7
+ bl MOD79_02212CF0
+ cmp r0, #0
+ beq _0221295C
+ ldr r0, [r7]
+ mov r2, #1
+ str r2, [r0, #0xfc]
+ ldr r1, [r7]
+ add sp, sp, #0xc
+ str r2, [r1, #0x38]
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ add sp, sp, #0x10
+ bx lr
+_0221294C:
+ ldr r1, [r7, #0xc]
+ ldr r0, [sp, #8]
+ add r0, r1, r0
+ str r0, [r7, #0xc]
+_0221295C:
+ cmp r4, #2
+ beq _0221288C
+ b _02212A2C
+_02212968:
+ ldr r2, [r7, #0xc]
+ ldr r1, [sp, #0x28]
+ ldr r0, [r7, #8]
+ add r4, r2, r1
+ cmp r4, r0
+ blt _02212A00
+_02212980:
+ ldr r0, [r7, #0x18]
+ cmp r0, #0
+ beq _022129B8
+ ldr r0, [r7]
+ mov r1, #1
+ str r1, [r0, #0xfc]
+ ldr r0, [r7]
+ mov r1, #2
+ str r1, [r0, #0x38]
+ add sp, sp, #0xc
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ add sp, sp, #0x10
+ bx lr
+_022129B8:
+ ldr r1, [r7, #0x14]
+ mov r0, r7
+ bl MOD79_02212CF0
+ cmp r0, #0
+ bne _022129F4
+ ldr r0, [r7]
+ mov r2, #1
+ str r2, [r0, #0xfc]
+ ldr r1, [r7]
+ add sp, sp, #0xc
+ str r2, [r1, #0x38]
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ add sp, sp, #0x10
+ bx lr
+_022129F4:
+ ldr r0, [r7, #8]
+ cmp r4, r0
+ bge _02212980
+_02212A00:
+ ldr r3, [r7, #4]
+ ldr r0, [r7, #0xc]
+ ldr r2, [sp, #0x28]
+ mov r1, r6
+ add r0, r3, r0
+ bl memcpy
+ str r4, [r7, #0xc]
+ ldr r1, [r7, #4]
+ ldr r0, [r7, #0xc]
+ mov r2, #0
+ strb r2, [r1, r0]
+_02212A2C:
+ mov r0, #1
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ add sp, sp, #0x10
+ bx lr
+ .align 2, 0
+_02212A40: .word 0x02216888
+_02212A44: .word 0x0221686C
+_02212A48: .word 0x0221689C
+_02212A4C: .word 0x022168A4
+_02212A50: .word 0x022168B4
+ arm_func_end MOD79_02212794
+
+ arm_func_start MOD79_02212A54
+MOD79_02212A54: ; 0x02212A54
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ bne _02212A74
+ ldr r0, _02212AAC ; =0x02216888
+ ldr r1, _02212AB0 ; =0x0221686C
+ mov r2, #0
+ mov r3, #0x9b
+ bl __msl_assertion_failed
+_02212A74:
+ cmp r4, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r1, [r4, #0x1c]
+ cmp r1, #0
+ bne _02212A98
+ bl MOD04_021DD82C
+_02212A98:
+ mov r0, r4
+ mov r1, #0
+ mov r2, #0x24
+ bl Call_FillMemWithValue
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02212AAC: .word 0x02216888
+_02212AB0: .word 0x0221686C
+ arm_func_end MOD79_02212A54
+
+ arm_func_start MOD79_02212AB4
+MOD79_02212AB4: ; 0x02212AB4
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ movs r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bne _02212AE4
+ ldr r0, _02212BB0 ; =0x022168F0
+ ldr r1, _02212BB4 ; =0x0221686C
+ mov r2, #0
+ mov r3, #0x74
+ bl __msl_assertion_failed
+_02212AE4:
+ cmp r6, #0
+ bne _02212B00
+ ldr r0, _02212BB8 ; =0x02216888
+ ldr r1, _02212BB4 ; =0x0221686C
+ mov r2, #0
+ mov r3, #0x75
+ bl __msl_assertion_failed
+_02212B00:
+ cmp r5, #0
+ bne _02212B1C
+ ldr r0, _02212BBC ; =0x022168FC
+ ldr r1, _02212BB4 ; =0x0221686C
+ mov r2, #0
+ mov r3, #0x76
+ bl __msl_assertion_failed
+_02212B1C:
+ cmp r4, #0
+ bgt _02212B38
+ ldr r0, _02212BC0 ; =0x02216908
+ ldr r1, _02212BB4 ; =0x0221686C
+ mov r2, #0
+ mov r3, #0x77
+ bl __msl_assertion_failed
+_02212B38:
+ cmp r7, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ cmp r6, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ cmp r5, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ cmp r4, #0
+ addle sp, sp, #4
+ movle r0, #0
+ ldmleia sp!, {r4, r5, r6, r7, pc}
+ str r7, [r6]
+ str r5, [r6, #4]
+ str r4, [r6, #8]
+ mov r2, #0
+ str r2, [r6, #0xc]
+ str r2, [r6, #0x14]
+ mov r0, #1
+ str r0, [r6, #0x18]
+ str r0, [r6, #0x1c]
+ str r2, [r6, #0x20]
+ ldr r1, [r6, #4]
+ strb r2, [r1]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02212BB0: .word 0x022168F0
+_02212BB4: .word 0x0221686C
+_02212BB8: .word 0x02216888
+_02212BBC: .word 0x022168FC
+_02212BC0: .word 0x02216908
+ arm_func_end MOD79_02212AB4
+
+ arm_func_start MOD79_02212BC4
+MOD79_02212BC4: ; 0x02212BC4
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ movs r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bne _02212BF4
+ ldr r0, _02212CDC ; =0x022168F0
+ ldr r1, _02212CE0 ; =0x0221686C
+ mov r2, #0
+ mov r3, #0x43
+ bl __msl_assertion_failed
+_02212BF4:
+ cmp r6, #0
+ bne _02212C10
+ ldr r0, _02212CE4 ; =0x02216888
+ ldr r1, _02212CE0 ; =0x0221686C
+ mov r2, #0
+ mov r3, #0x44
+ bl __msl_assertion_failed
+_02212C10:
+ cmp r5, #0
+ bgt _02212C2C
+ ldr r0, _02212CE8 ; =0x02216914
+ ldr r1, _02212CE0 ; =0x0221686C
+ mov r2, #0
+ mov r3, #0x45
+ bl __msl_assertion_failed
+_02212C2C:
+ cmp r4, #0
+ bgt _02212C48
+ ldr r0, _02212CEC ; =0x02216924
+ ldr r1, _02212CE0 ; =0x0221686C
+ mov r2, #0
+ mov r3, #0x46
+ bl __msl_assertion_failed
+_02212C48:
+ cmp r7, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ cmp r6, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ cmp r5, #0
+ addle sp, sp, #4
+ movle r0, #0
+ ldmleia sp!, {r4, r5, r6, r7, pc}
+ cmp r4, #0
+ addle sp, sp, #4
+ movle r0, #0
+ ldmleia sp!, {r4, r5, r6, r7, pc}
+ str r7, [r6]
+ mov r2, #0
+ str r2, [r6, #4]
+ str r2, [r6, #8]
+ str r2, [r6, #0xc]
+ str r2, [r6, #0x10]
+ str r4, [r6, #0x14]
+ str r2, [r6, #0x18]
+ str r2, [r6, #0x1c]
+ mov r0, r6
+ mov r1, r5
+ str r2, [r6, #0x20]
+ bl MOD79_02212CF0
+ cmp r0, #0
+ moveq r0, #0
+ ldrne r0, [r6, #4]
+ movne r1, #0
+ strneb r1, [r0]
+ movne r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02212CDC: .word 0x022168F0
+_02212CE0: .word 0x0221686C
+_02212CE4: .word 0x02216888
+_02212CE8: .word 0x02216914
+_02212CEC: .word 0x02216924
+ arm_func_end MOD79_02212BC4
+
+ arm_func_start MOD79_02212CF0
+MOD79_02212CF0: ; 0x02212CF0
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ movs r5, r0
+ mov r4, r1
+ bne _02212D18
+ ldr r0, _02212D84 ; =0x02216888
+ ldr r1, _02212D88 ; =0x0221686C
+ mov r2, #0
+ mov r3, #0x20
+ bl __msl_assertion_failed
+_02212D18:
+ cmp r4, #0
+ bgt _02212D34
+ ldr r0, _02212D8C ; =0x02216924
+ ldr r1, _02212D88 ; =0x0221686C
+ mov r2, #0
+ mov r3, #0x21
+ bl __msl_assertion_failed
+_02212D34:
+ cmp r5, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ cmp r4, #0
+ addle sp, sp, #4
+ movle r0, #0
+ ldmleia sp!, {r4, r5, pc}
+ ldr r1, [r5, #8]
+ ldr r0, [r5, #4]
+ add r4, r1, r4
+ mov r1, r4
+ bl MOD04_021DD844
+ cmp r0, #0
+ moveq r0, #0
+ strne r0, [r5, #4]
+ strne r4, [r5, #8]
+ movne r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02212D84: .word 0x02216888
+_02212D88: .word 0x0221686C
+_02212D8C: .word 0x02216924
+ arm_func_end MOD79_02212CF0
+
+ arm_func_start MOD79_02212D90
+MOD79_02212D90: ; 0x02212D90
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ movs r4, r0
+ bne _02212DB4
+ ldr r0, _02212DF8 ; =0x02216938
+ ldr r1, _02212DFC ; =0x02216944
+ mov r2, #0
+ mov r3, #0x5e
+ bl __msl_assertion_failed
+_02212DB4:
+ ldr r0, [r4, #0x150]
+ cmp r0, #0
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, pc}
+ ldr r0, [r4, #0x140]
+ bl MOD04_021EF06C
+ str r0, [sp]
+ ldr r0, [r4, #0x44]
+ str r0, [sp, #4]
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #0x148]
+ ldr r2, [r4, #0x14c]
+ ldr r3, [r4, #0x144]
+ ldr ip, [r4, #0x150]
+ .word 0xE12FFF3C
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02212DF8: .word 0x02216938
+_02212DFC: .word 0x02216944
+ arm_func_end MOD79_02212D90
+
+ arm_func_start MOD79_02212E00
+MOD79_02212E00: ; 0x02212E00
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x10
+ movs r6, r0
+ mov r5, r1
+ mov r4, r2
+ bne _02212E2C
+ ldr r0, _02212E70 ; =0x02216938
+ ldr r1, _02212E74 ; =0x02216944
+ mov r2, #0
+ mov r3, #0x45
+ bl __msl_assertion_failed
+_02212E2C:
+ ldr ip, [r6, #0x3c]
+ cmp ip, #0
+ addeq sp, sp, #0x10
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r0, [r6, #0x100]
+ mov r2, r5
+ str r0, [sp]
+ ldr r0, [r6, #0x104]
+ mov r3, r4
+ str r0, [sp, #4]
+ ldr r0, [r6, #0x44]
+ str r0, [sp, #8]
+ ldr r0, [r6, #4]
+ ldr r1, [r6, #0x10]
+ .word 0xE12FFF3C
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_02212E70: .word 0x02216938
+_02212E74: .word 0x02216944
+ arm_func_end MOD79_02212E00
+
+ arm_func_start MOD79_02212E78
+MOD79_02212E78: ; 0x02212E78
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ movs r5, r0
+ bne _02212E9C
+ ldr r0, _02212EFC ; =0x02216938
+ ldr r1, _02212F00 ; =0x02216944
+ mov r2, #0
+ mov r3, #0x1b
+ bl __msl_assertion_failed
+_02212E9C:
+ ldr ip, [r5, #0x40]
+ cmp ip, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ movne r4, #0
+ movne r3, r4
+ ldreq r4, [r5, #0xc0]
+ ldreq r3, [r5, #0x100]
+ ldr r0, [r5, #0x44]
+ mov r2, r4
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ ldr r1, [r5, #0x38]
+ .word 0xE12FFF3C
+ cmp r4, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ cmp r0, #0
+ moveq r0, #1
+ streq r0, [r5, #0xd8]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02212EFC: .word 0x02216938
+_02212F00: .word 0x02216944
+ arm_func_end MOD79_02212E78
+
+ arm_func_start MOD79_02212F04
+MOD79_02212F04: ; 0x02212F04
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ ldr r3, [r6, #0x5c]
+ mov r5, r1
+ mov r4, r2
+ cmp r3, #0
+ mov r3, #0
+ bne _02212F48
+ bl MOD79_02212F68
+ mov r3, r0
+ mvn r0, #0
+ cmp r3, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ cmp r3, r4
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, pc}
+_02212F48:
+ add r0, r6, #0x50
+ add r1, r5, r3
+ sub r2, r4, r3
+ bl MOD79_02212794
+ cmp r0, #0
+ moveq r0, #0
+ movne r0, #2
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD79_02212F04
+
+ arm_func_start MOD79_02212F68
+MOD79_02212F68: ; 0x02212F68
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldr r0, [r4, #0x48]
+ mov r3, #0
+ bl MOD04_021EFC24
+ mvn r1, #0
+ cmp r0, r1
+ bne _02212FD8
+ ldr r0, [r4, #0x48]
+ bl MOD04_021EFB28
+ mvn r1, #5
+ cmp r0, r1
+ beq _02212FB4
+ mvn r1, #0x19
+ cmp r0, r1
+ beq _02212FB4
+ mvn r1, #0x4b
+ cmp r0, r1
+ bne _02212FBC
+_02212FB4:
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_02212FBC:
+ mov r1, #1
+ str r1, [r4, #0xfc]
+ mov r1, #5
+ str r1, [r4, #0x38]
+ str r0, [r4, #0x4c]
+ mvn r0, #0
+ ldmia sp!, {r4, pc}
+_02212FD8:
+ ldr r1, [r4, #0x10]
+ cmp r1, #4
+ ldreq r1, [r4, #0x148]
+ addeq r1, r1, r0
+ streq r1, [r4, #0x148]
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD79_02212F68
+
+ arm_func_start MOD79_02212FF0
+MOD79_02212FF0: ; 0x02212FF0
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r7, r0
+ mov r5, r2
+ ldr r2, [r5]
+ ldr r0, [r7, #0x134]
+ mov r6, r1
+ cmp r0, #0
+ sub r4, r2, #1
+ beq _02213050
+ bl MOD04_021F025C
+ ldr r1, _02213230 ; =0x02216958
+ ldr r2, [r7, #0x138]
+ ldr r1, [r1]
+ add r1, r2, r1
+ cmp r0, r1
+ addlo sp, sp, #4
+ movlo r0, #1
+ ldmloia sp!, {r4, r5, r6, r7, pc}
+ ldr r1, _02213234 ; =0x0221695C
+ str r0, [r7, #0x138]
+ ldr r0, [r1]
+ cmp r4, r0
+ movge r4, r0
+_02213050:
+ ldr r1, [r7, #0x84]
+ ldr r0, [r7, #0x80]
+ cmp r1, r0
+ bge _02213098
+ mov r1, r6
+ mov r2, r5
+ add r0, r7, #0x74
+ bl MOD79_0221248C
+ ldr r1, [r7, #0x84]
+ ldr r0, [r7, #0x80]
+ add sp, sp, #4
+ cmp r1, r0
+ ldreq r0, [r7, #0xf8]
+ streq r0, [r7, #0x80]
+ ldreq r0, [r7, #0xf8]
+ streq r0, [r7, #0x84]
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02213098:
+ ldr r0, [r7, #0x48]
+ mov r1, r6
+ mov r2, r4
+ mov r3, #0
+ bl MOD04_021EFC78
+ mov r2, r0
+ mvn r0, #0
+ str r2, [sp]
+ cmp r2, r0
+ bne _0221311C
+ ldr r0, [r7, #0x48]
+ bl MOD04_021EFB28
+ mvn r1, #5
+ cmp r0, r1
+ beq _022130EC
+ mvn r1, #0x19
+ cmp r0, r1
+ beq _022130EC
+ mvn r1, #0x4b
+ cmp r0, r1
+ bne _022130F8
+_022130EC:
+ add sp, sp, #4
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_022130F8:
+ mov r2, #1
+ str r2, [r7, #0xfc]
+ mov r1, #5
+ str r1, [r7, #0x38]
+ str r0, [r7, #0x4c]
+ add sp, sp, #4
+ str r2, [r7, #0x130]
+ mov r0, #3
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_0221311C:
+ cmp r2, #0
+ moveq r0, #1
+ streq r0, [r7, #0x130]
+ addeq sp, sp, #4
+ moveq r0, #2
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, [r7, #0x168]
+ cmp r0, #0
+ beq _0221320C
+ mov r1, r6
+ add r0, r7, #0x98
+ bl MOD79_02212794
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #3
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ mov r0, r7
+ bl MOD79_02213238
+ cmp r0, #0
+ bne _02213188
+ mov r0, #1
+ str r0, [r7, #0xfc]
+ mov r0, #0x11
+ str r0, [r7, #0x38]
+ add sp, sp, #4
+ mov r0, #3
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02213188:
+ ldr r1, [r7, #0x80]
+ ldr r0, [r7, #0x84]
+ sub r0, r1, r0
+ cmp r0, #0
+ movle r0, #0
+ strleb r0, [r6]
+ strle r0, [r5]
+ addle sp, sp, #4
+ movle r0, #1
+ ldmleia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, [r5]
+ add r2, sp, #0
+ sub r3, r0, #1
+ mov r1, r6
+ add r0, r7, #0x74
+ str r3, [sp]
+ bl MOD79_0221248C
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #3
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r1, [r7, #0x84]
+ ldr r0, [r7, #0x80]
+ cmp r1, r0
+ ldreq r0, [r7, #0xf8]
+ streq r0, [r7, #0x80]
+ ldreq r0, [r7, #0xf8]
+ streq r0, [r7, #0x84]
+ ldr r2, [sp]
+ cmp r2, #0
+ addle sp, sp, #4
+ movle r0, #1
+ ldmleia sp!, {r4, r5, r6, r7, pc}
+_0221320C:
+ mov r0, #0
+ strb r0, [r6, r2]
+ ldr r1, [sp]
+ str r1, [r5]
+ ldr r1, [sp]
+ cmp r1, #0
+ movle r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02213230: .word 0x02216958
+_02213234: .word 0x0221695C
+ arm_func_end MOD79_02212FF0
+
+ arm_func_start MOD79_02213238
+MOD79_02213238: ; 0x02213238
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #0x14
+ mov r1, #0
+ mov r4, r0
+ str r1, [sp, #8]
+ str r1, [sp, #0xc]
+ add r8, sp, #0xc
+ add r6, sp, #8
+ add r5, r4, #0x74
+ add r7, r4, #0x164
+_02213260:
+ ldr ip, [r4, #0xa8]
+ ldr r0, [r4, #0xa4]
+ ldr r2, [r4, #0x9c]
+ sub r0, r0, ip
+ str r0, [sp, #8]
+ ldr r3, [r4, #0x80]
+ ldr r0, [r4, #0x7c]
+ ldr r1, [r4, #0x78]
+ sub r0, r0, r3
+ str r0, [sp, #0xc]
+ add r0, r1, r3
+ str r0, [sp]
+ str r8, [sp, #4]
+ ldr sb, [r4, #0x180]
+ mov r0, r4
+ mov r1, r7
+ mov r3, r6
+ add r2, r2, ip
+ .word 0xE12FFF39
+ mov sb, r0
+ cmp sb, #2
+ bne _022132D4
+ ldr r1, [r4, #0x88]
+ mov r0, r5
+ bl MOD79_02212CF0
+ cmp r0, #0
+ addeq sp, sp, #0x14
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_022132D4:
+ cmp sb, #2
+ bne _022132E8
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ beq _02213260
+_022132E8:
+ ldr r1, [r4, #0xa8]
+ ldr r0, [sp, #8]
+ add r0, r1, r0
+ str r0, [r4, #0xa8]
+ ldr r1, [r4, #0x80]
+ ldr r0, [sp, #0xc]
+ add r0, r1, r0
+ str r0, [r4, #0x80]
+ ldr r1, [r4, #0xa8]
+ cmp r1, #0xff
+ ble _02213348
+ ldr r0, [r4, #0xa4]
+ subs r5, r0, r1
+ bne _0221332C
+ add r0, r4, #0x98
+ bl MOD79_0221262C
+ b _02213348
+_0221332C:
+ ldr r0, [r4, #0x9c]
+ mov r2, r5
+ add r1, r0, r1
+ bl memmove
+ mov r0, #0
+ str r0, [r4, #0xa8]
+ str r5, [r4, #0xa4]
+_02213348:
+ cmp sb, #3
+ addne sp, sp, #0x14
+ movne r0, #1
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ mov r0, #1
+ str r0, [r4, #0xfc]
+ mov r0, #0x11
+ str r0, [r4, #0x38]
+ mov r0, #0
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ arm_func_end MOD79_02213238
+
+ arm_func_start MOD79_02213374
+MOD79_02213374: ; 0x02213374
+ bx lr
+ arm_func_end MOD79_02213374
+
+ arm_func_start MOD79_02213378
+MOD79_02213378: ; 0x02213378
+ bx lr
+ arm_func_end MOD79_02213378
+
+ arm_func_start MOD79_0221337C
+MOD79_0221337C: ; 0x0221337C
+ bx lr
+ arm_func_end MOD79_0221337C
+
+ arm_func_start MOD79_02213380
+MOD79_02213380: ; 0x02213380
+ bx lr
+ arm_func_end MOD79_02213380
+
+ arm_func_start MOD79_02213384
+MOD79_02213384: ; 0x02213384
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r0, _02213400 ; =0x02217138
+ ldr r0, [r0]
+ cmp r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r0, _02213404 ; =MOD79_02213638
+ bl MOD79_02213510
+ ldr r5, _02213408 ; =0x0221712C
+ mov r6, #0
+ ldr r0, [r5]
+ cmp r0, #0
+ ble _022133D4
+ ldr r4, _02213400 ; =0x02217138
+_022133B8:
+ ldr r0, [r4]
+ ldr r0, [r0, r6, lsl #2]
+ bl MOD04_021DD82C
+ ldr r0, [r5]
+ add r6, r6, #1
+ cmp r6, r0
+ blt _022133B8
+_022133D4:
+ ldr r0, _02213400 ; =0x02217138
+ ldr r0, [r0]
+ bl MOD04_021DD82C
+ ldr r2, _02213400 ; =0x02217138
+ mov r3, #0
+ ldr r1, _02213408 ; =0x0221712C
+ ldr r0, _0221340C ; =0x02217130
+ str r3, [r2]
+ str r3, [r1]
+ str r3, [r0]
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_02213400: .word 0x02217138
+_02213404: .word MOD79_02213638
+_02213408: .word 0x0221712C
+_0221340C: .word 0x02217130
+ arm_func_end MOD79_02213384
+
+ arm_func_start MOD79_02213410
+MOD79_02213410: ; 0x02213410
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ bne _02213430
+ ldr r0, _022134FC ; =0x02216960
+ ldr r1, _02213500 ; =0x0221696C
+ ldr r3, _02213504 ; =0x00000132
+ mov r2, #0
+ bl __msl_assertion_failed
+_02213430:
+ ldr r0, [r4, #0x108]
+ cmp r0, #0
+ bne _02213450
+ ldr r0, _02213508 ; =0x02216980
+ ldr r1, _02213500 ; =0x0221696C
+ ldr r3, _0221350C ; =0x00000133
+ mov r2, #0
+ bl __msl_assertion_failed
+_02213450:
+ mov r0, #0
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0x14]
+ bl MOD04_021DD82C
+ ldr r1, [r4, #0x108]
+ mov r0, #0
+ str r1, [r4, #0x14]
+ str r0, [r4, #0x108]
+ ldr r0, [r4, #0x18]
+ bl MOD04_021DD82C
+ mov r0, #0
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x1c]
+ strh r0, [r4, #0x20]
+ ldr r0, [r4, #0x24]
+ bl MOD04_021DD82C
+ mov r0, #0
+ str r0, [r4, #0x24]
+ ldr r0, [r4, #0x48]
+ mov r1, #2
+ bl MOD04_021EFD80
+ ldr r0, [r4, #0x48]
+ bl MOD04_021EFD9C
+ mvn r1, #0
+ add r0, r4, #0x50
+ str r1, [r4, #0x48]
+ bl MOD79_0221262C
+ add r0, r4, #0x74
+ bl MOD79_0221262C
+ add r0, r4, #0x98
+ bl MOD79_0221262C
+ mov r0, #0
+ str r0, [r4, #0xe4]
+ str r0, [r4, #0xe8]
+ str r0, [r4, #0xec]
+ str r0, [r4, #0xf0]
+ str r0, [r4, #0xf4]
+ str r0, [r4, #0xf8]
+ str r0, [r4, #0x130]
+ ldr r0, [r4, #0x10c]
+ add r0, r0, #1
+ str r0, [r4, #0x10c]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022134FC: .word 0x02216960
+_02213500: .word 0x0221696C
+_02213504: .word 0x00000132
+_02213508: .word 0x02216980
+_0221350C: .word 0x00000133
+ arm_func_end MOD79_02213410
+
+ arm_func_start MOD79_02213510
+MOD79_02213510: ; 0x02213510
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ ldr r1, _02213580 ; =0x02217130
+ mov r5, r0
+ ldr r0, [r1]
+ cmp r0, #0
+ addle sp, sp, #4
+ ldmleia sp!, {r4, r5, r6, r7, pc}
+ bl MOD79_02213378
+ ldr r7, _02213584 ; =0x0221712C
+ mov r4, #0
+ ldr r0, [r7]
+ cmp r0, #0
+ ble _02213574
+ ldr r6, _02213588 ; =0x02217138
+_0221354C:
+ ldr r0, [r6]
+ ldr r0, [r0, r4, lsl #2]
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _02213564
+ .word 0xE12FFF35
+_02213564:
+ ldr r0, [r7]
+ add r4, r4, #1
+ cmp r4, r0
+ blt _0221354C
+_02213574:
+ bl MOD79_02213374
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02213580: .word 0x02217130
+_02213584: .word 0x0221712C
+_02213588: .word 0x02217138
+ arm_func_end MOD79_02213510
+
+ arm_func_start MOD79_0221358C
+MOD79_0221358C: ; 0x0221358C
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ bpl _022135AC
+ ldr r0, _0221361C ; =0x02216998
+ ldr r1, _02213620 ; =0x0221696C
+ ldr r3, _02213624 ; =0x00000101
+ mov r2, #0
+ bl __msl_assertion_failed
+_022135AC:
+ ldr r0, _02213628 ; =0x0221712C
+ ldr r0, [r0]
+ cmp r4, r0
+ blt _022135D0
+ ldr r0, _0221362C ; =0x022169A8
+ ldr r1, _02213620 ; =0x0221696C
+ ldr r3, _02213630 ; =0x00000102
+ mov r2, #0
+ bl __msl_assertion_failed
+_022135D0:
+ bl MOD79_02213378
+ cmp r4, #0
+ blt _022135EC
+ ldr r0, _02213628 ; =0x0221712C
+ ldr r0, [r0]
+ cmp r4, r0
+ blt _022135F8
+_022135EC:
+ bl MOD79_02213374
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_022135F8:
+ ldr r0, _02213634 ; =0x02217138
+ ldr r0, [r0]
+ ldr r4, [r0, r4, lsl #2]
+ ldr r0, [r4]
+ cmp r0, #0
+ moveq r4, #0
+ bl MOD79_02213374
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0221361C: .word 0x02216998
+_02213620: .word 0x0221696C
+_02213624: .word 0x00000101
+_02213628: .word 0x0221712C
+_0221362C: .word 0x022169A8
+_02213630: .word 0x00000102
+_02213634: .word 0x02217138
+ arm_func_end MOD79_0221358C
+
+ arm_func_start MOD79_02213638
+MOD79_02213638: ; 0x02213638
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ bne _02213658
+ ldr r0, _02213800 ; =0x02216960
+ ldr r1, _02213804 ; =0x0221696C
+ mov r2, #0
+ mov r3, #0xb3
+ bl __msl_assertion_failed
+_02213658:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bge _02213678
+ ldr r0, _02213808 ; =0x022169C4
+ ldr r1, _02213804 ; =0x0221696C
+ mov r2, #0
+ mov r3, #0xb4
+ bl __msl_assertion_failed
+_02213678:
+ ldr r0, _0221380C ; =0x0221712C
+ ldr r1, [r4, #4]
+ ldr r0, [r0]
+ cmp r1, r0
+ blt _022136A0
+ ldr r0, _02213810 ; =0x022169E0
+ ldr r1, _02213804 ; =0x0221696C
+ mov r2, #0
+ mov r3, #0xb5
+ bl __msl_assertion_failed
+_022136A0:
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _022136C0
+ ldr r0, _02213814 ; =0x02216A08
+ ldr r1, _02213804 ; =0x0221696C
+ mov r2, #0
+ mov r3, #0xb6
+ bl __msl_assertion_failed
+_022136C0:
+ cmp r4, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r0, [r4]
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ movlt r0, #0
+ ldmltia sp!, {r4, pc}
+ ldr r0, _0221380C ; =0x0221712C
+ ldr r0, [r0]
+ cmp r1, r0
+ movge r0, #0
+ ldmgeia sp!, {r4, pc}
+ bl MOD79_02213378
+ ldr r0, [r4, #0x14]
+ bl MOD04_021DD82C
+ ldr r0, [r4, #0x18]
+ bl MOD04_021DD82C
+ ldr r0, [r4, #0x24]
+ bl MOD04_021DD82C
+ ldr r0, [r4, #0x28]
+ bl MOD04_021DD82C
+ ldr r0, [r4, #0x108]
+ bl MOD04_021DD82C
+ ldr r0, [r4, #0x15c]
+ bl MOD04_021DD82C
+ ldr r0, [r4, #0x48]
+ mvn r1, #0
+ cmp r0, r1
+ beq _02213754
+ mov r1, #2
+ bl MOD04_021EFD80
+ ldr r0, [r4, #0x48]
+ bl MOD04_021EFD9C
+_02213754:
+ add r0, r4, #0x50
+ bl MOD79_02212A54
+ add r0, r4, #0x74
+ bl MOD79_02212A54
+ add r0, r4, #0x98
+ bl MOD79_02212A54
+ add r0, r4, #0xbc
+ bl MOD79_02212A54
+ ldr r0, [r4, #0x140]
+ cmp r0, #0
+ beq _02213788
+ mov r0, r4
+ bl MOD79_022149E4
+_02213788:
+ ldr r0, [r4, #0x13c]
+ cmp r0, #0
+ beq _022137B0
+ bl MOD79_02215074
+ cmp r0, #0
+ beq _022137B0
+ ldr r0, [r4, #0x13c]
+ bl MOD79_02215058
+ mov r0, #0
+ str r0, [r4, #0x13c]
+_022137B0:
+ ldr r0, [r4, #0x16c]
+ cmp r0, #0
+ beq _022137DC
+ ldr r2, [r4, #0x178]
+ cmp r2, #0
+ beq _022137D4
+ mov r0, r4
+ add r1, r4, #0x164
+ .word 0xE12FFF32
+_022137D4:
+ mov r0, #0
+ str r0, [r4, #0x16c]
+_022137DC:
+ mov r1, #0
+ ldr r0, _02213818 ; =0x02217130
+ str r1, [r4]
+ ldr r1, [r0]
+ sub r1, r1, #1
+ str r1, [r0]
+ bl MOD79_02213374
+ mov r0, #1
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02213800: .word 0x02216960
+_02213804: .word 0x0221696C
+_02213808: .word 0x022169C4
+_0221380C: .word 0x0221712C
+_02213810: .word 0x022169E0
+_02213814: .word 0x02216A08
+_02213818: .word 0x02217130
+ arm_func_end MOD79_02213638
+
+ arm_func_start MOD79_0221381C
+MOD79_0221381C: ; 0x0221381C
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ bl MOD79_02213378
+ bl MOD79_022139CC
+ mov r5, r0
+ mvn r0, #0
+ cmp r5, r0
+ bne _0221384C
+ bl MOD79_02213374
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_0221384C:
+ ldr r0, _022139C0 ; =0x02217138
+ mov r1, #0
+ ldr r0, [r0]
+ mov r2, #0x184
+ ldr r4, [r0, r5, lsl #2]
+ mov r0, r4
+ bl Call_FillMemWithValue
+ mov r0, #1
+ str r0, [r4]
+ ldr r0, _022139C4 ; =0x02217134
+ str r5, [r4, #4]
+ ldr r2, [r0]
+ mov ip, #0
+ add r1, r2, #1
+ str r1, [r0]
+ str r2, [r4, #8]
+ str ip, [r4, #0xc]
+ str ip, [r4, #0x10]
+ str ip, [r4, #0x14]
+ str ip, [r4, #0x18]
+ str ip, [r4, #0x1c]
+ strh ip, [r4, #0x20]
+ str ip, [r4, #0x24]
+ str ip, [r4, #0x28]
+ str ip, [r4, #0x2c]
+ str ip, [r4, #0x30]
+ str ip, [r4, #0x34]
+ str ip, [r4, #0x38]
+ str ip, [r4, #0x3c]
+ str ip, [r4, #0x40]
+ str ip, [r4, #0x44]
+ mvn r0, #0
+ str r0, [r4, #0x48]
+ str ip, [r4, #0x4c]
+ str ip, [r4, #0xe0]
+ str ip, [r4, #0xe4]
+ str ip, [r4, #0xe8]
+ str ip, [r4, #0xec]
+ str ip, [r4, #0xf0]
+ str ip, [r4, #0xf4]
+ str ip, [r4, #0xf8]
+ str ip, [r4, #0xfc]
+ str ip, [r4, #0x100]
+ str r0, [r4, #0x104]
+ str ip, [r4, #0x108]
+ str ip, [r4, #0x10c]
+ str ip, [r4, #0x110]
+ str ip, [r4, #0x12c]
+ str ip, [r4, #0x134]
+ str ip, [r4, #0x138]
+ str ip, [r4, #0x13c]
+ mov r0, #0x1f4
+ str r0, [r4, #0x158]
+ add r0, r4, #0x100
+ mov r1, #0x50
+ strh r1, [r0, #0x60]
+ str ip, [r4, #0x15c]
+ mov r0, r4
+ add r1, r4, #0x50
+ mov r2, #0x800
+ mov r3, #0x1000
+ str ip, [r4, #0x164]
+ bl MOD79_02212BC4
+ cmp r0, #0
+ beq _02213964
+ mov r2, #0x800
+ mov r0, r4
+ mov r3, r2
+ add r1, r4, #0x74
+ bl MOD79_02212BC4
+_02213964:
+ cmp r0, #0
+ beq _02213980
+ mov r0, r4
+ add r1, r4, #0x98
+ mov r2, #0x800
+ mov r3, #0x400
+ bl MOD79_02212BC4
+_02213980:
+ cmp r0, #0
+ bne _022139A0
+ mov r0, r4
+ bl MOD79_02213638
+ bl MOD79_02213374
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_022139A0:
+ ldr r0, _022139C8 ; =0x02217130
+ ldr r1, [r0]
+ add r1, r1, #1
+ str r1, [r0]
+ bl MOD79_02213374
+ mov r0, r4
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_022139C0: .word 0x02217138
+_022139C4: .word 0x02217134
+_022139C8: .word 0x02217130
+ arm_func_end MOD79_0221381C
+
+ arm_func_start MOD79_022139CC
+MOD79_022139CC: ; 0x022139CC
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #4
+ ldr r1, _02213AF4 ; =0x0221712C
+ mov r0, #0
+ ldr r2, [r1]
+ cmp r2, #0
+ ble _02213A10
+ ldr r1, _02213AF8 ; =0x02217138
+ ldr r3, [r1]
+_022139F0:
+ ldr r1, [r3, r0, lsl #2]
+ ldr r1, [r1]
+ cmp r1, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ add r0, r0, #1
+ cmp r0, r2
+ blt _022139F0
+_02213A10:
+ ldr r0, _02213AFC ; =0x02217130
+ ldr r0, [r0]
+ cmp r0, r2
+ beq _02213A34
+ ldr r0, _02213B00 ; =0x02216A1C
+ ldr r1, _02213B04 ; =0x0221696C
+ mov r2, #0
+ mov r3, #0x33
+ bl __msl_assertion_failed
+_02213A34:
+ ldr r1, _02213AF4 ; =0x0221712C
+ ldr r0, _02213AF8 ; =0x02217138
+ ldr r7, [r1]
+ ldr r0, [r0]
+ add r6, r7, #4
+ mov r1, r6, lsl #2
+ bl MOD04_021DD844
+ cmp r0, #0
+ addeq sp, sp, #4
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ ldr r8, _02213AF8 ; =0x02217138
+ mov r5, r7
+ str r0, [r8]
+ cmp r7, r6
+ bge _02213AE0
+ mov sb, #0
+ mov r4, #0x184
+_02213A7C:
+ mov r0, r4
+ bl MOD04_021DD860
+ ldr r1, [r8]
+ str r0, [r1, r5, lsl #2]
+ ldr r0, [r8]
+ ldr r0, [r0, r5, lsl #2]
+ cmp r0, #0
+ bne _02213AD0
+ sub r5, r5, #1
+ cmp r5, r7
+ blt _02213AC4
+ ldr r4, _02213AF8 ; =0x02217138
+_02213AAC:
+ ldr r0, [r4]
+ ldr r0, [r0, r5, lsl #2]
+ bl MOD04_021DD82C
+ sub r5, r5, #1
+ cmp r5, r7
+ bge _02213AAC
+_02213AC4:
+ add sp, sp, #4
+ mvn r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_02213AD0:
+ add r5, r5, #1
+ str sb, [r0]
+ cmp r5, r6
+ blt _02213A7C
+_02213AE0:
+ ldr r1, _02213AF4 ; =0x0221712C
+ mov r0, r7
+ str r6, [r1]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ .align 2, 0
+_02213AF4: .word 0x0221712C
+_02213AF8: .word 0x02217138
+_02213AFC: .word 0x02217130
+_02213B00: .word 0x02216A1C
+_02213B04: .word 0x0221696C
+ arm_func_end MOD79_022139CC
+
+ arm_func_start MOD79_02213B08
+MOD79_02213B08: ; 0x02213B08
+ ldr ip, _02213B14 ; =MOD79_02213510
+ ldr r0, _02213B18 ; =MOD79_02213E84
+ bx ip
+ .align 2, 0
+_02213B14: .word MOD79_02213510
+_02213B18: .word MOD79_02213E84
+ arm_func_end MOD79_02213B08
+
+ arm_func_start MOD79_02213B1C
+MOD79_02213B1C: ; 0x02213B1C
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ movs r8, r0
+ mov r7, r1
+ mov r6, r2
+ mov r5, r3
+ beq _02213B40
+ ldrsb r0, [r8]
+ cmp r0, #0
+ bne _02213B54
+_02213B40:
+ ldr r0, _02213D64 ; =0x02216A50
+ ldr r1, _02213D68 ; =0x02216A44
+ mov r2, #0
+ mov r3, #0x128
+ bl __msl_assertion_failed
+_02213B54:
+ cmp r5, #0
+ bge _02213B70
+ ldr r0, _02213D6C ; =0x02216A60
+ ldr r1, _02213D68 ; =0x02216A44
+ ldr r3, _02213D70 ; =0x00000129
+ mov r2, #0
+ bl __msl_assertion_failed
+_02213B70:
+ cmp r6, #0
+ beq _02213B94
+ cmp r5, #0
+ bne _02213B94
+ ldr r0, _02213D74 ; =0x02216A70
+ ldr r1, _02213D68 ; =0x02216A44
+ ldr r3, _02213D78 ; =0x0000012A
+ mov r2, #0
+ bl __msl_assertion_failed
+_02213B94:
+ cmp r8, #0
+ beq _02213BA8
+ ldrsb r0, [r8]
+ cmp r0, #0
+ bne _02213BB0
+_02213BA8:
+ mvn r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_02213BB0:
+ cmp r5, #0
+ mvnlt r0, #0
+ ldmltia sp!, {r4, r5, r6, r7, r8, pc}
+ cmp r6, #0
+ beq _02213BD0
+ cmp r5, #0
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+_02213BD0:
+ ldr r0, _02213D7C ; =0x0221713C
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02213BE4
+ bl MOD79_02213E24
+_02213BE4:
+ bl MOD79_0221381C
+ movs r4, r0
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+ mov r1, #0
+ mov r0, r8
+ str r1, [r4, #0xc]
+ bl MOD04_021F0208
+ str r0, [r4, #0x14]
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ bne _02213C24
+ mov r0, r4
+ bl MOD79_02213638
+ mvn r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_02213C24:
+ cmp r7, #0
+ beq _02213C60
+ ldrsb r0, [r7]
+ cmp r0, #0
+ beq _02213C60
+ mov r0, r7
+ bl MOD04_021F0208
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x28]
+ cmp r0, #0
+ bne _02213C60
+ mov r0, r4
+ bl MOD79_02213638
+ mvn r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_02213C60:
+ ldr r1, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ str r1, [r4, #0x13c]
+ str r0, [r4, #0x30]
+ ldr r1, [sp, #0x24]
+ ldr r0, [sp, #0x28]
+ str r1, [r4, #0x3c]
+ str r0, [r4, #0x40]
+ ldr r1, [sp, #0x2c]
+ ldr r0, [sp, #0x1c]
+ str r1, [r4, #0x44]
+ str r0, [r4, #0x134]
+ cmp r6, #0
+ movne r0, #1
+ moveq r0, #0
+ str r0, [r4, #0xe0]
+ ldr r0, [r4, #0xe0]
+ cmp r0, #0
+ beq _02213CC4
+ mov r0, r4
+ mov r2, r6
+ mov r3, r5
+ add r1, r4, #0xbc
+ bl MOD79_02212AB4
+ b _02213CD8
+_02213CC4:
+ mov r2, #0x800
+ mov r0, r4
+ mov r3, r2
+ add r1, r4, #0xbc
+ bl MOD79_02212BC4
+_02213CD8:
+ cmp r0, #0
+ bne _02213CF0
+ mov r0, r4
+ bl MOD79_02213638
+ mvn r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_02213CF0:
+ ldr r0, [sp, #0x18]
+ cmp r0, #0
+ beq _02213D1C
+ mov r0, r4
+ bl MOD79_02214A60
+ cmp r0, #0
+ bne _02213D1C
+ mov r0, r4
+ bl MOD79_02213638
+ mvn r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_02213D1C:
+ ldr r0, [sp, #0x20]
+ cmp r0, #0
+ beq _02213D5C
+ mov r0, r4
+ bl MOD79_02213E84
+ cmp r0, #0
+ bne _02213D54
+ mov r5, #0xa
+_02213D3C:
+ mov r0, r5
+ bl MOD04_021F0250
+ mov r0, r4
+ bl MOD79_02213E84
+ cmp r0, #0
+ beq _02213D3C
+_02213D54:
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_02213D5C:
+ ldr r0, [r4, #4]
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_02213D64: .word 0x02216A50
+_02213D68: .word 0x02216A44
+_02213D6C: .word 0x02216A60
+_02213D70: .word 0x00000129
+_02213D74: .word 0x02216A70
+_02213D78: .word 0x0000012A
+_02213D7C: .word 0x0221713C
+ arm_func_end MOD79_02213B1C
+
+ arm_func_start MOD79_02213D80
+MOD79_02213D80: ; 0x02213D80
+ stmdb sp!, {lr}
+ sub sp, sp, #0x1c
+ mov ip, #0
+ str ip, [sp]
+ str ip, [sp, #4]
+ str r1, [sp, #8]
+ str ip, [sp, #0xc]
+ str r2, [sp, #0x10]
+ str r3, [sp, #0x14]
+ mov r1, ip
+ mov r2, ip
+ mov r3, ip
+ bl MOD79_02213B1C
+ add sp, sp, #0x1c
+ ldmia sp!, {pc}
+ arm_func_end MOD79_02213D80
+
+ arm_func_start MOD79_02213DBC
+MOD79_02213DBC: ; 0x02213DBC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD79_02213378
+ ldr r0, _02213E1C ; =0x0221713C
+ ldr r1, [r0]
+ subs r1, r1, #1
+ str r1, [r0]
+ bne _02213E10
+ bl MOD79_02213384
+ ldr r0, _02213E20 ; =0x02217128
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02213E00
+ bl MOD04_021DD82C
+ ldr r0, _02213E20 ; =0x02217128
+ mov r1, #0
+ str r1, [r0]
+_02213E00:
+ bl MOD79_02213374
+ bl MOD79_0221337C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02213E10:
+ bl MOD79_02213374
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02213E1C: .word 0x0221713C
+_02213E20: .word 0x02217128
+ arm_func_end MOD79_02213DBC
+
+ arm_func_start MOD79_02213E24
+MOD79_02213E24: ; 0x02213E24
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD79_02213378
+ ldr r0, _02213E78 ; =0x0221713C
+ ldr r1, [r0]
+ add r1, r1, #1
+ str r1, [r0]
+ cmp r1, #1
+ bne _02213E6C
+ bl MOD79_02213380
+ ldr r1, _02213E7C ; =0x0221695C
+ mov r3, #0x7d
+ ldr r0, _02213E80 ; =0x02216958
+ mov r2, #0xfa
+ str r3, [r1]
+ str r2, [r0]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02213E6C:
+ bl MOD79_02213374
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02213E78: .word 0x0221713C
+_02213E7C: .word 0x0221695C
+_02213E80: .word 0x02216958
+ arm_func_end MOD79_02213E24
+
+ arm_func_start MOD79_02213E84
+MOD79_02213E84: ; 0x02213E84
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ movs r4, r0
+ bne _02213EA8
+ ldr r0, _02213FE8 ; =0x02216A88
+ ldr r1, _02213FEC ; =0x02216A44
+ mov r2, #0
+ mov r3, #0x5b
+ bl __msl_assertion_failed
+_02213EA8:
+ ldr r0, [r4, #4]
+ bl MOD79_0221358C
+ cmp r0, r4
+ beq _02213ECC
+ ldr r0, _02213FF0 ; =0x02216A94
+ ldr r1, _02213FEC ; =0x02216A44
+ mov r2, #0
+ mov r3, #0x5c
+ bl __msl_assertion_failed
+_02213ECC:
+ ldr r0, [r4, #0x12c]
+ cmp r0, #0
+ addne sp, sp, #4
+ movne r0, #0
+ ldmneia sp!, {r4, r5, pc}
+ mov r0, #1
+ str r0, [r4, #0x12c]
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ bne _02213EFC
+ mov r0, r4
+ bl MOD79_02216478
+_02213EFC:
+ ldr r0, [r4, #0x10]
+ cmp r0, #1
+ bne _02213F10
+ mov r0, r4
+ bl MOD79_0221621C
+_02213F10:
+ ldr r0, [r4, #0x10]
+ cmp r0, #2
+ bne _02213F24
+ mov r0, r4
+ bl MOD79_022160C0
+_02213F24:
+ ldr r0, [r4, #0x10]
+ cmp r0, #3
+ bne _02213F38
+ mov r0, r4
+ bl MOD79_02215E40
+_02213F38:
+ ldr r0, [r4, #0x10]
+ cmp r0, #4
+ bne _02213F4C
+ mov r0, r4
+ bl MOD79_02215DA8
+_02213F4C:
+ ldr r0, [r4, #0x10]
+ cmp r0, #5
+ bne _02213F60
+ mov r0, r4
+ bl MOD79_02215D28
+_02213F60:
+ ldr r0, [r4, #0x10]
+ cmp r0, #6
+ bne _02213F74
+ mov r0, r4
+ bl MOD79_02215AA8
+_02213F74:
+ ldr r0, [r4, #0x10]
+ cmp r0, #7
+ bne _02213F88
+ mov r0, r4
+ bl MOD79_02215174
+_02213F88:
+ ldr r0, [r4, #0x10]
+ cmp r0, #8
+ bne _02213F9C
+ mov r0, r4
+ bl MOD79_0221507C
+_02213F9C:
+ ldr r0, [r4, #0x108]
+ cmp r0, #0
+ beq _02213FB0
+ mov r0, r4
+ bl MOD79_02213410
+_02213FB0:
+ ldr r5, [r4, #0xfc]
+ cmp r5, #0
+ moveq r0, #0
+ streq r0, [r4, #0x12c]
+ beq _02213FDC
+ mov r0, r4
+ bl MOD79_02213FF4
+ mov r0, r4
+ bl MOD79_02212E78
+ mov r0, r4
+ bl MOD79_02213638
+_02213FDC:
+ mov r0, r5
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02213FE8: .word 0x02216A88
+_02213FEC: .word 0x02216A44
+_02213FF0: .word 0x02216A94
+ arm_func_end MOD79_02213E84
+
+ arm_func_start MOD79_02213FF4
+MOD79_02213FF4: ; 0x02213FF4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr lr, [r0, #0xec]
+ ldr r3, _022140CC ; =0x51EB851F
+ mov r1, lr, lsr #0x1f
+ smull r2, ip, r3, lr
+ mov ip, ip, asr #5
+ add ip, r1, ip
+ cmp ip, #5
+ addls pc, pc, ip, lsl #2
+ b _022140C4
+_02214020: ; jump table
+ b _022140C4 ; case 0
+ b _02214038 ; case 1
+ b _02214038 ; case 2
+ b _02214038 ; case 3
+ b _02214040 ; case 4
+ b _022140BC ; case 5
+_02214038:
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02214040:
+ ldr r1, _022140D0 ; =0x00000191
+ sub r1, lr, r1
+ cmp r1, #9
+ addls pc, pc, r1, lsl #2
+ b _022140AC
+_02214054: ; jump table
+ b _0221407C ; case 0
+ b _022140AC ; case 1
+ b _0221408C ; case 2
+ b _0221409C ; case 3
+ b _022140AC ; case 4
+ b _022140AC ; case 5
+ b _022140AC ; case 6
+ b _022140AC ; case 7
+ b _022140AC ; case 8
+ b _0221409C ; case 9
+_0221407C:
+ mov r1, #9
+ str r1, [r0, #0x38]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0221408C:
+ mov r1, #0xa
+ str r1, [r0, #0x38]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0221409C:
+ mov r1, #0xb
+ str r1, [r0, #0x38]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022140AC:
+ mov r1, #8
+ str r1, [r0, #0x38]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022140BC:
+ mov r1, #0xc
+ str r1, [r0, #0x38]
+_022140C4:
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022140CC: .word 0x51EB851F
+_022140D0: .word 0x00000191
+ arm_func_end MOD79_02213FF4
+
+ arm_func_start MOD79_022140D4
+MOD79_022140D4: ; 0x022140D4
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #4
+ movs sl, r0
+ bne _022140F8
+ ldr r0, _02214330 ; =0x02216AD0
+ ldr r1, _02214334 ; =0x02216ADC
+ ldr r3, _02214338 ; =0x00000404
+ mov r2, #0
+ bl __msl_assertion_failed
+_022140F8:
+ ldr r0, [sl, #0x13c]
+ cmp r0, #0
+ bne _02214118
+ ldr r0, _0221433C ; =0x02216AE8
+ ldr r1, _02214334 ; =0x02216ADC
+ ldr r3, _02214340 ; =0x00000405
+ mov r2, #0
+ bl __msl_assertion_failed
+_02214118:
+ ldr r0, [sl, #0x140]
+ cmp r0, #0
+ bne _02214138
+ ldr r0, _02214344 ; =0x02216AFC
+ ldr r1, _02214334 ; =0x02216ADC
+ ldr r3, _02214348 ; =0x00000406
+ mov r2, #0
+ bl __msl_assertion_failed
+_02214138:
+ ldr r0, [sl, #0x13c]
+ ldr r0, [r0]
+ bl MOD04_021EF06C
+ mov r4, r0
+ ldr r0, [sl, #0x140]
+ bl MOD04_021EF06C
+ cmp r4, r0
+ beq _0221416C
+ ldr r0, _0221434C ; =0x02216B1C
+ ldr r1, _02214334 ; =0x02216ADC
+ ldr r3, _02214350 ; =0x00000407
+ mov r2, #0
+ bl __msl_assertion_failed
+_0221416C:
+ ldr r0, [sl, #0x144]
+ cmp r0, #0
+ bge _0221418C
+ ldr r0, _02214354 ; =0x02216B70
+ ldr r1, _02214334 ; =0x02216ADC
+ ldr r3, _02214358 ; =0x00000408
+ mov r2, #0
+ bl __msl_assertion_failed
+_0221418C:
+ ldr r0, [sl, #0x140]
+ bl MOD04_021EF06C
+ ldr r1, [sl, #0x144]
+ cmp r1, r0
+ ble _022141B4
+ ldr r0, _0221435C ; =0x02216B94
+ ldr r1, _02214334 ; =0x02216ADC
+ ldr r3, _02214360 ; =0x00000409
+ mov r2, #0
+ bl __msl_assertion_failed
+_022141B4:
+ ldr r0, [sl, #0x140]
+ add sb, sl, #0x140
+ bl MOD04_021EF06C
+ ldr r1, [sl, #0x5c]
+ mov r7, r0
+ cmp r1, #0
+ beq _0221421C
+ mov r0, sl
+ bl MOD79_02212554
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r1, [sl, #0x60]
+ ldr r0, [sl, #0x5c]
+ cmp r1, r0
+ addlt sp, sp, #4
+ movlt r0, #2
+ ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ add r0, sl, #0x50
+ bl MOD79_0221262C
+ ldr r0, [sl, #0x144]
+ cmp r0, r7
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_0221421C:
+ ldr r1, [sb, #4]
+ cmp r1, r7
+ bge _022142E0
+ ldr r6, _02214364 ; =0x02216BE4
+ ldr fp, _02214334 ; =0x02216ADC
+ mov r5, #0
+ mov r4, #1
+_02214238:
+ ldr r0, [sb]
+ bl MOD04_021EEFFC
+ movs r8, r0
+ bne _0221425C
+ ldr r3, _02214368 ; =0x0000042F
+ mov r0, r6
+ mov r1, fp
+ mov r2, r5
+ bl __msl_assertion_failed
+_0221425C:
+ ldr r0, [sb, #4]
+ mov r1, sl
+ cmp r0, #0
+ moveq r2, r4
+ movne r2, r5
+ mov r0, r8
+ bl MOD79_02214378
+ cmp r0, #0
+ bne _022142B8
+ ldr r0, [sl, #0xfc]
+ cmp r0, #0
+ beq _02214298
+ ldr r0, [sl, #0x38]
+ cmp r0, #0
+ bne _022142AC
+_02214298:
+ ldr r0, _0221436C ; =0x02216BF0
+ ldr r1, _02214334 ; =0x02216ADC
+ ldr r3, _02214370 ; =0x0000043B
+ mov r2, #0
+ bl __msl_assertion_failed
+_022142AC:
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_022142B8:
+ cmp r0, #2
+ addeq sp, sp, #4
+ moveq r0, #2
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r0, [sb, #4]
+ add r0, r0, #1
+ str r0, [sb, #4]
+ ldr r1, [sb, #4]
+ cmp r1, r7
+ blt _02214238
+_022142E0:
+ ldr r0, [sl, #0x13c]
+ ldr r0, [r0, #0xc]
+ cmp r0, #0
+ beq _02214318
+ ldr r0, _02214374 ; =0x02216C1C
+ bl strlen
+ mov r2, r0
+ ldr r1, _02214374 ; =0x02216C1C
+ mov r0, sl
+ bl MOD79_02212F04
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_02214318:
+ ldr r0, [sl, #0x5c]
+ cmp r0, #0
+ movne r0, #2
+ moveq r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_02214330: .word 0x02216AD0
+_02214334: .word 0x02216ADC
+_02214338: .word 0x00000404
+_0221433C: .word 0x02216AE8
+_02214340: .word 0x00000405
+_02214344: .word 0x02216AFC
+_02214348: .word 0x00000406
+_0221434C: .word 0x02216B1C
+_02214350: .word 0x00000407
+_02214354: .word 0x02216B70
+_02214358: .word 0x00000408
+_0221435C: .word 0x02216B94
+_02214360: .word 0x00000409
+_02214364: .word 0x02216BE4
+_02214368: .word 0x0000042F
+_0221436C: .word 0x02216BF0
+_02214370: .word 0x0000043B
+_02214374: .word 0x02216C1C
+ arm_func_end MOD79_022140D4
+
+ arm_func_start MOD79_02214378
+MOD79_02214378: ; 0x02214378
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr ip, _02214554 ; =0x00000808
+ sub sp, sp, ip
+ mov r6, r0
+ ldr r3, [r6, #4]
+ mvn r0, #0
+ mov r5, r1
+ mov r4, r2
+ cmp r3, r0
+ bne _022144D8
+ mov r2, #0
+ str r2, [r6, #4]
+ ldr r0, [r5, #0x13c]
+ ldr r0, [r0, #0xc]
+ cmp r0, #0
+ bne _02214410
+ ldr r0, [r6]
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022143D8
+ ldr r0, _02214558 ; =0x02216C48
+ ldr r1, _0221455C ; =0x02216ADC
+ ldr r3, _02214560 ; =0x000003A9
+ bl __msl_assertion_failed
+_022143D8:
+ cmp r4, #0
+ beq _022143F8
+ ldr r1, [r6]
+ add r0, sp, #8
+ ldr r2, [r1, #4]
+ ldr r1, _02214564 ; =0x02216C68
+ bl sprintf
+ b _02214498
+_022143F8:
+ ldr r1, [r6]
+ add r0, sp, #8
+ ldr r2, [r1, #4]
+ ldr r1, _02214568 ; =0x02216C6C
+ bl sprintf
+ b _02214498
+_02214410:
+ ldr r3, [r6]
+ ldr r1, [r3]
+ cmp r1, #0
+ bne _02214440
+ cmp r4, #0
+ ldrne r2, _0221456C ; =0x02216C74
+ ldr r3, [r3, #4]
+ ldreq r2, _02214570 ; =0x02216C9C
+ ldr r1, _02214574 ; =0x02216CC8
+ add r0, sp, #8
+ bl sprintf
+ b _02214498
+_02214440:
+ sub r0, r1, #1
+ cmp r0, #1
+ bhi _02214488
+ cmp r1, #1
+ ldreq r1, [r3, #0xc]
+ ldreq r0, [r3, #0x10]
+ ldrne r1, [r3, #0x10]
+ ldrne r0, [r3, #0x14]
+ cmp r4, #0
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldrne r2, _0221456C ; =0x02216C74
+ ldr r3, [r3, #4]
+ ldreq r2, _02214570 ; =0x02216C9C
+ ldr r1, _02214578 ; =0x02216CF8
+ add r0, sp, #8
+ bl sprintf
+ b _02214498
+_02214488:
+ ldr r0, _0221457C ; =0x02216D4C
+ ldr r1, _0221455C ; =0x02216ADC
+ mov r3, #0x3dc
+ bl __msl_assertion_failed
+_02214498:
+ add r0, sp, #8
+ bl strlen
+ mov r2, r0
+ add r1, sp, #8
+ mov r0, r5
+ bl MOD79_02212F04
+ cmp r0, #0
+ ldreq ip, _02214554 ; =0x00000808
+ moveq r0, #0
+ addeq sp, sp, ip
+ ldmeqia sp!, {r4, r5, r6, pc}
+ cmp r0, #2
+ ldreq ip, _02214554 ; =0x00000808
+ moveq r0, #2
+ addeq sp, sp, ip
+ ldmeqia sp!, {r4, r5, r6, pc}
+_022144D8:
+ ldr r0, [r6]
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02214500
+ mov r0, r6
+ mov r1, r5
+ bl MOD79_022147E8
+ ldr ip, _02214554 ; =0x00000808
+ add sp, sp, ip
+ ldmia sp!, {r4, r5, r6, pc}
+_02214500:
+ cmp r0, #1
+ bne _02214520
+ mov r0, r6
+ mov r1, r5
+ bl MOD79_0221467C
+ ldr ip, _02214554 ; =0x00000808
+ add sp, sp, ip
+ ldmia sp!, {r4, r5, r6, pc}
+_02214520:
+ cmp r0, #2
+ beq _0221453C
+ ldr r0, _02214580 ; =0x02216D50
+ ldr r1, _0221455C ; =0x02216ADC
+ ldr r3, _02214584 ; =0x000003F5
+ mov r2, #0
+ bl __msl_assertion_failed
+_0221453C:
+ mov r0, r6
+ mov r1, r5
+ bl MOD79_02214588
+ ldr ip, _02214554 ; =0x00000808
+ add sp, sp, ip
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_02214554: .word 0x00000808
+_02214558: .word 0x02216C48
+_0221455C: .word 0x02216ADC
+_02214560: .word 0x000003A9
+_02214564: .word 0x02216C68
+_02214568: .word 0x02216C6C
+_0221456C: .word 0x02216C74
+_02214570: .word 0x02216C9C
+_02214574: .word 0x02216CC8
+_02214578: .word 0x02216CF8
+_0221457C: .word 0x02216D4C
+_02214580: .word 0x02216D50
+_02214584: .word 0x000003F5
+ arm_func_end MOD79_02214378
+
+ arm_func_start MOD79_02214588
+MOD79_02214588: ; 0x02214588
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ ldr r0, [r5, #4]
+ mov r4, r1
+ cmp r0, #0
+ bge _022145B8
+ ldr r0, _02214668 ; =0x02216D74
+ ldr r1, _0221466C ; =0x02216ADC
+ ldr r3, _02214670 ; =0x0000036E
+ mov r2, #0
+ bl __msl_assertion_failed
+_022145B8:
+ ldr r0, [r5]
+ ldr r1, [r0, #0xc]
+ cmp r1, #0
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r0, [r5, #4]
+ cmp r0, r1
+ blt _022145F0
+ ldr r0, _02214674 ; =0x02216D84
+ ldr r1, _0221466C ; =0x02216ADC
+ ldr r3, _02214678 ; =0x00000375
+ mov r2, #0
+ bl __msl_assertion_failed
+_022145F0:
+ ldr r1, [r5]
+ ldr r3, [r5, #4]
+ ldr r0, [r1, #0xc]
+ ldr r1, [r1, #8]
+ sub r2, r0, r3
+ cmp r2, #0x8000
+ movge r2, #0x8000
+ mov r0, r4
+ add r1, r1, r3
+ bl MOD79_02212F68
+ mvn r1, #0
+ cmp r0, r1
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r1, [r5, #4]
+ add r1, r1, r0
+ str r1, [r5, #4]
+ ldr r2, [r5]
+ ldr r1, [r5, #4]
+ ldr r2, [r2, #0xc]
+ cmp r2, r1
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, pc}
+ cmp r0, #0
+ bne _022145F0
+ mov r0, #2
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02214668: .word 0x02216D74
+_0221466C: .word 0x02216ADC
+_02214670: .word 0x0000036E
+_02214674: .word 0x02216D84
+_02214678: .word 0x00000375
+ arm_func_end MOD79_02214588
+
+ arm_func_start MOD79_0221467C
+MOD79_0221467C: ; 0x0221467C
+ stmdb sp!, {r4, r5, lr}
+ ldr ip, _022147CC ; =0x00001004
+ sub sp, sp, ip
+ mov r5, r0
+ ldr r0, [r5, #4]
+ mov r4, r1
+ cmp r0, #0
+ bge _022146B0
+ ldr r0, _022147D0 ; =0x02216D74
+ ldr r1, _022147D4 ; =0x02216ADC
+ ldr r3, _022147D8 ; =0x00000336
+ mov r2, #0
+ bl __msl_assertion_failed
+_022146B0:
+ ldr r1, [r5, #4]
+ ldr r0, [r5, #0xc]
+ cmp r1, r0
+ blt _022146D4
+ ldr r0, _022147DC ; =0x02216DB4
+ ldr r1, _022147D4 ; =0x02216ADC
+ ldr r3, _022147E0 ; =0x00000337
+ mov r2, #0
+ bl __msl_assertion_failed
+_022146D4:
+ ldr r0, [r5, #8]
+ bl ftell
+ ldr r1, [r5, #4]
+ cmp r1, r0
+ beq _022146FC
+ ldr r0, _022147E4 ; =0x02216DDC
+ ldr r1, _022147D4 ; =0x02216ADC
+ mov r2, #0
+ mov r3, #0x338
+ bl __msl_assertion_failed
+_022146FC:
+ ldr r3, [r5, #8]
+ add r0, sp, #0
+ mov r1, #1
+ mov r2, #0x1000
+ bl fread
+ mov r2, r0
+ cmp r2, #0
+ bgt _0221473C
+ ldr ip, _022147CC ; =0x00001004
+ mov r0, #1
+ str r0, [r4, #0xfc]
+ mov r0, #0xe
+ str r0, [r4, #0x38]
+ add sp, sp, ip
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_0221473C:
+ ldr r0, [r5, #4]
+ add r0, r0, r2
+ str r0, [r5, #4]
+ ldr r1, [r5, #4]
+ ldr r0, [r5, #0xc]
+ cmp r1, r0
+ ble _02214778
+ ldr ip, _022147CC ; =0x00001004
+ mov r0, #1
+ str r0, [r4, #0xfc]
+ mov r0, #0xe
+ str r0, [r4, #0x38]
+ add sp, sp, ip
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_02214778:
+ add r1, sp, #0
+ mov r0, r4
+ bl MOD79_02212F04
+ cmp r0, #0
+ ldreq ip, _022147CC ; =0x00001004
+ moveq r0, #0
+ addeq sp, sp, ip
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r2, [r5, #4]
+ ldr r1, [r5, #0xc]
+ cmp r2, r1
+ ldreq ip, _022147CC ; =0x00001004
+ moveq r0, #1
+ addeq sp, sp, ip
+ ldmeqia sp!, {r4, r5, pc}
+ cmp r0, #1
+ beq _022146FC
+ mov r0, #2
+ ldr ip, _022147CC ; =0x00001004
+ add sp, sp, ip
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_022147CC: .word 0x00001004
+_022147D0: .word 0x02216D74
+_022147D4: .word 0x02216ADC
+_022147D8: .word 0x00000336
+_022147DC: .word 0x02216DB4
+_022147E0: .word 0x00000337
+_022147E4: .word 0x02216DDC
+ arm_func_end MOD79_0221467C
+
+ arm_func_start MOD79_022147E8
+MOD79_022147E8: ; 0x022147E8
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #4
+ mov r4, r0
+ ldr r0, [r4, #4]
+ mov sl, r1
+ cmp r0, #0
+ bge _02214818
+ ldr r0, _022149BC ; =0x02216D74
+ ldr r1, _022149C0 ; =0x02216ADC
+ ldr r3, _022149C4 ; =0x000002E7
+ mov r2, #0
+ bl __msl_assertion_failed
+_02214818:
+ ldr r0, [r4]
+ ldr r1, [r0, #0xc]
+ cmp r1, #0
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r0, [r4, #4]
+ cmp r0, r1
+ blt _02214850
+ ldr r0, _022149C8 ; =0x02216E14
+ ldr r1, _022149C0 ; =0x02216ADC
+ ldr r3, _022149CC ; =0x000002EE
+ mov r2, #0
+ bl __msl_assertion_failed
+_02214850:
+ ldr r0, [sl, #0x13c]
+ ldr r0, [r0, #0xc]
+ cmp r0, #0
+ bne _02214968
+ ldr r1, [r4]
+ ldr r0, [r1, #0x10]
+ cmp r0, #0
+ beq _02214968
+ ldr r0, _022149D0 ; =0x02216738
+ ldr r7, [r1, #8]
+ ldrb r3, [r0]
+ ldrb r2, [r0, #1]
+ ldrb r1, [r0, #2]
+ ldrb r0, [r0, #3]
+ strb r3, [sp]
+ strb r2, [sp, #1]
+ strb r1, [sp, #2]
+ strb r0, [sp, #3]
+ ldrsb r8, [r7]
+ mov sb, #0
+ cmp r8, #0
+ beq _0221495C
+ mov fp, sb
+ mov r4, #3
+ mov r5, #0x2b
+_022148B4:
+ ldr r0, _022149D4 ; =0x02216E40
+ mov r1, r8
+ bl strchr
+ cmp r0, #0
+ beq _022148D8
+ mov r1, r8
+ add r0, sl, #0x50
+ bl MOD79_022126A4
+ b _0221494C
+_022148D8:
+ cmp r8, #0x20
+ bne _022148F0
+ mov r1, r5
+ add r0, sl, #0x50
+ bl MOD79_022126A4
+ b _0221494C
+_022148F0:
+ mov r0, r8, asr #3
+ add r0, r8, r0, lsr #28
+ mov r6, r0, asr #4
+ cmp r6, #0x10
+ blt _02214918
+ ldr r0, _022149D8 ; =0x02216E84
+ ldr r1, _022149C0 ; =0x02216ADC
+ ldr r3, _022149DC ; =0x0000030D
+ mov r2, fp
+ bl __msl_assertion_failed
+_02214918:
+ ldr r0, _022149E0 ; =0x02216E94
+ mov r1, r8, lsr #0x1f
+ ldrsb r2, [r0, r6]
+ rsb r0, r1, r8, lsl #28
+ add r1, r1, r0, ror #28
+ ldr r0, _022149E0 ; =0x02216E94
+ strb r2, [sp, #1]
+ ldrsb r2, [r0, r1]
+ add r1, sp, #0
+ add r0, sl, #0x50
+ strb r2, [sp, #2]
+ mov r2, r4
+ bl MOD79_02212794
+_0221494C:
+ add sb, sb, #1
+ ldrsb r8, [r7, sb]
+ cmp r8, #0
+ bne _022148B4
+_0221495C:
+ add sp, sp, #4
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_02214968:
+ ldr r1, [r4]
+ ldr r0, [r4, #4]
+ ldr r2, [r1, #0xc]
+ ldr r1, [r1, #8]
+ sub r5, r2, r0
+ mov r0, sl
+ mov r2, r5
+ bl MOD79_02212F68
+ mvn r1, #0
+ cmp r0, r1
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r1, [r4, #4]
+ cmp r0, r5
+ add r0, r1, r0
+ str r0, [r4, #4]
+ moveq r0, #1
+ movne r0, #2
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_022149BC: .word 0x02216D74
+_022149C0: .word 0x02216ADC
+_022149C4: .word 0x000002E7
+_022149C8: .word 0x02216E14
+_022149CC: .word 0x000002EE
+_022149D0: .word 0x02216738
+_022149D4: .word 0x02216E40
+_022149D8: .word 0x02216E84
+_022149DC: .word 0x0000030D
+_022149E0: .word 0x02216E94
+ arm_func_end MOD79_022147E8
+
+ arm_func_start MOD79_022149E4
+MOD79_022149E4: ; 0x022149E4
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ ldr r0, [r6, #0x140]
+ cmp r0, #0
+ beq _02214A38
+ bl MOD04_021EF06C
+ mov r4, r0
+ cmp r4, #0
+ mov r5, #0
+ ble _02214A28
+_02214A0C:
+ ldr r0, [r6, #0x140]
+ mov r1, r5
+ bl MOD04_021EEFFC
+ bl MOD79_02214BF4
+ add r5, r5, #1
+ cmp r5, r4
+ blt _02214A0C
+_02214A28:
+ ldr r0, [r6, #0x140]
+ bl MOD04_021EF074
+ mov r0, #0
+ str r0, [r6, #0x140]
+_02214A38:
+ ldr r0, [r6, #0x13c]
+ cmp r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r1, [r0, #0x10]
+ cmp r1, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ bl MOD79_02215058
+ mov r0, #0
+ str r0, [r6, #0x13c]
+ ldmia sp!, {r4, r5, r6, pc}
+ arm_func_end MOD79_022149E4
+
+ arm_func_start MOD79_02214A60
+MOD79_02214A60: ; 0x02214A60
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #0x10
+ mov r4, r0
+ ldr r0, [r4, #0x13c]
+ cmp r0, #0
+ bne _02214A8C
+ ldr r0, _02214BE4 ; =0x02216AE8
+ ldr r1, _02214BE8 ; =0x02216ADC
+ mov r2, #0
+ mov r3, #0x278
+ bl __msl_assertion_failed
+_02214A8C:
+ ldr r0, [r4, #0x13c]
+ cmp r0, #0
+ addeq sp, sp, #0x10
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+ mov r0, #0
+ str r0, [r4, #0x144]
+ str r0, [r4, #0x148]
+ str r0, [r4, #0x14c]
+ ldr r0, [r4, #0x13c]
+ ldr r0, [r0, #4]
+ str r0, [r4, #0x150]
+ ldr r0, [r4, #0x13c]
+ ldr r0, [r0, #8]
+ str r0, [r4, #0x154]
+ ldr r0, [r4, #0x13c]
+ ldr r0, [r0]
+ bl MOD04_021EF06C
+ mov r7, r0
+ mov r1, r7
+ mov r0, #0x10
+ mov r2, #0
+ bl MOD04_021EF0E4
+ str r0, [r4, #0x140]
+ ldr r0, [r4, #0x140]
+ cmp r0, #0
+ addeq sp, sp, #0x10
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+ cmp r7, #0
+ mov r8, #0
+ ble _02214B98
+ add r6, sp, #0
+ mov r5, r8
+_02214B14:
+ ldr r0, [r4, #0x13c]
+ mov r1, r8
+ ldr r0, [r0]
+ bl MOD04_021EEFFC
+ str r5, [r6]
+ str r5, [r6, #4]
+ str r5, [r6, #8]
+ str r5, [r6, #0xc]
+ str r0, [sp]
+ mov r0, r6
+ bl MOD79_02214C5C
+ cmp r0, #0
+ bne _02214B80
+ subs r8, r8, #1
+ bmi _02214B68
+_02214B50:
+ ldr r0, [r4, #0x140]
+ mov r1, r8
+ bl MOD04_021EEFFC
+ bl MOD79_02214BF4
+ subs r8, r8, #1
+ bpl _02214B50
+_02214B68:
+ ldr r0, [r4, #0x140]
+ bl MOD04_021EF074
+ mov r0, #0
+ add sp, sp, #0x10
+ str r0, [r4, #0x140]
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_02214B80:
+ ldr r0, [r4, #0x140]
+ mov r1, r6
+ bl MOD04_021EEFA8
+ add r8, r8, #1
+ cmp r8, r7
+ blt _02214B14
+_02214B98:
+ ldr r0, [r4, #0x13c]
+ ldr r0, [r0]
+ bl MOD04_021EF06C
+ mov r5, r0
+ ldr r0, [r4, #0x140]
+ bl MOD04_021EF06C
+ cmp r5, r0
+ beq _02214BCC
+ ldr r0, _02214BEC ; =0x02216B1C
+ ldr r1, _02214BE8 ; =0x02216ADC
+ ldr r3, _02214BF0 ; =0x000002B1
+ mov r2, #0
+ bl __msl_assertion_failed
+_02214BCC:
+ mov r0, r4
+ bl MOD79_02214D0C
+ str r0, [r4, #0x14c]
+ mov r0, #1
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_02214BE4: .word 0x02216AE8
+_02214BE8: .word 0x02216ADC
+_02214BEC: .word 0x02216B1C
+_02214BF0: .word 0x000002B1
+ arm_func_end MOD79_02214A60
+
+ arm_func_start MOD79_02214BF4
+MOD79_02214BF4: ; 0x02214BF4
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldr r0, [r4]
+ ldr r0, [r0]
+ cmp r0, #0
+ ldmeqia sp!, {r4, pc}
+ cmp r0, #1
+ bne _02214C30
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _02214C24
+ bl fclose
+_02214C24:
+ mov r0, #0
+ str r0, [r4, #8]
+ ldmia sp!, {r4, pc}
+_02214C30:
+ cmp r0, #2
+ ldmeqia sp!, {r4, pc}
+ ldr r0, _02214C50 ; =0x02216D4C
+ ldr r1, _02214C54 ; =0x02216ADC
+ ldr r3, _02214C58 ; =0x00000269
+ mov r2, #0
+ bl __msl_assertion_failed
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02214C50: .word 0x02216D4C
+_02214C54: .word 0x02216ADC
+_02214C58: .word 0x00000269
+ arm_func_end MOD79_02214BF4
+
+ arm_func_start MOD79_02214C5C
+MOD79_02214C5C: ; 0x02214C5C
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldr r1, [r4]
+ mvn r0, #0
+ ldr r1, [r1]
+ str r0, [r4, #4]
+ cmp r1, #0
+ beq _02214CFC
+ cmp r1, #1
+ bne _02214CD8
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ mov r1, #0
+ mov r2, #2
+ bl fseek
+ cmp r0, #0
+ movne r0, #0
+ ldmneia sp!, {r4, pc}
+ ldr r0, [r4, #8]
+ bl ftell
+ str r0, [r4, #0xc]
+ ldr r1, [r4, #0xc]
+ mvn r0, #0
+ cmp r1, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r0, [r4, #8]
+ bl rewind
+ b _02214CFC
+_02214CD8:
+ cmp r1, #2
+ beq _02214CFC
+ ldr r0, _02214D04 ; =0x02216D4C
+ ldr r1, _02214D08 ; =0x02216ADC
+ mov r2, #0
+ mov r3, #0x244
+ bl __msl_assertion_failed
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_02214CFC:
+ mov r0, #1
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02214D04: .word 0x02216D4C
+_02214D08: .word 0x02216ADC
+ arm_func_end MOD79_02214C5C
+
+ arm_func_start MOD79_02214D0C
+MOD79_02214D0C: ; 0x02214D0C
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ ldr r4, [r5, #0x13c]
+ cmp r4, #0
+ bne _02214D38
+ ldr r0, _02214D74 ; =0x02216EA8
+ ldr r1, _02214D78 ; =0x02216ADC
+ mov r2, #0
+ mov r3, #0x20c
+ bl __msl_assertion_failed
+_02214D38:
+ cmp r4, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _02214D64
+ mov r0, r5
+ bl MOD79_02214D7C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_02214D64:
+ mov r0, r5
+ bl MOD79_02214F48
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02214D74: .word 0x02216EA8
+_02214D78: .word 0x02216ADC
+ arm_func_end MOD79_02214D0C
+
+ arm_func_start MOD79_02214D7C
+MOD79_02214D7C: ; 0x02214D7C
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #4
+ ldr r1, _02214F24 ; =0x0221714C
+ mov r8, r0
+ ldr r0, [r1]
+ ldr r7, [r8, #0x13c]
+ cmp r0, #0
+ mov r4, #0
+ bne _02214DD4
+ ldr r0, _02214F28 ; =0x02216EB0
+ bl strlen
+ ldr r5, _02214F24 ; =0x0221714C
+ ldr r3, _02214F2C ; =0x02217148
+ add sl, r0, #0x2f
+ ldr r2, _02214F30 ; =0x02217144
+ add sb, r0, #0x4c
+ ldr r1, _02214F34 ; =0x02217140
+ add r6, r0, #4
+ str r0, [r5]
+ str sl, [r3]
+ str sb, [r2]
+ str r6, [r1]
+_02214DD4:
+ ldr r0, [r7]
+ bl MOD04_021EF06C
+ mov r5, r0
+ cmp r5, #0
+ mov r6, #0
+ ble _02214F10
+ mov fp, r6
+ mov sb, #0x1ec
+_02214DF4:
+ ldr r0, [r7]
+ mov r1, r6
+ bl MOD04_021EEFFC
+ mov sl, r0
+ ldr r0, [sl]
+ cmp r0, #0
+ bne _02214E34
+ ldr r0, _02214F2C ; =0x02217148
+ ldr r1, [r0]
+ ldr r0, [sl, #4]
+ add r4, r4, r1
+ bl strlen
+ add r1, r4, r0
+ ldr r0, [sl, #0xc]
+ add r4, r1, r0
+ b _02214F04
+_02214E34:
+ cmp r0, #1
+ bne _02214EA0
+ ldr r0, _02214F30 ; =0x02217144
+ ldr r1, [r0]
+ ldr r0, [sl, #4]
+ add r4, r4, r1
+ bl strlen
+ add r4, r4, r0
+ ldr r0, [sl, #0xc]
+ bl strlen
+ add r4, r4, r0
+ ldr r0, [sl, #0x10]
+ bl strlen
+ add r4, r4, r0
+ ldr r0, [r8, #0x140]
+ mov r1, r6
+ bl MOD04_021EEFFC
+ movs sl, r0
+ bne _02214E94
+ ldr r0, _02214F38 ; =0x02216ED8
+ ldr r1, _02214F3C ; =0x02216ADC
+ mov r2, fp
+ mov r3, sb
+ bl __msl_assertion_failed
+_02214E94:
+ ldr r0, [sl, #0xc]
+ add r4, r4, r0
+ b _02214F04
+_02214EA0:
+ cmp r0, #2
+ bne _02214EE4
+ ldr r0, _02214F30 ; =0x02217144
+ ldr r1, [r0]
+ ldr r0, [sl, #4]
+ add r4, r4, r1
+ bl strlen
+ add r4, r4, r0
+ ldr r0, [sl, #0x10]
+ bl strlen
+ add r4, r4, r0
+ ldr r0, [sl, #0x14]
+ bl strlen
+ add r1, r4, r0
+ ldr r0, [sl, #0xc]
+ add r4, r1, r0
+ b _02214F04
+_02214EE4:
+ ldr r0, _02214F40 ; =0x02216D4C
+ ldr r1, _02214F3C ; =0x02216ADC
+ ldr r3, _02214F44 ; =0x000001F9
+ mov r2, #0
+ bl __msl_assertion_failed
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_02214F04:
+ add r6, r6, #1
+ cmp r6, r5
+ blt _02214DF4
+_02214F10:
+ ldr r0, _02214F34 ; =0x02217140
+ ldr r0, [r0]
+ add r0, r4, r0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_02214F24: .word 0x0221714C
+_02214F28: .word 0x02216EB0
+_02214F2C: .word 0x02217148
+_02214F30: .word 0x02217144
+_02214F34: .word 0x02217140
+_02214F38: .word 0x02216ED8
+_02214F3C: .word 0x02216ADC
+_02214F40: .word 0x02216D4C
+_02214F44: .word 0x000001F9
+ arm_func_end MOD79_02214D7C
+
+ arm_func_start MOD79_02214F48
+MOD79_02214F48: ; 0x02214F48
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #4
+ ldr sl, [r0, #0x13c]
+ mov r6, #0
+ ldr r0, [sl]
+ bl MOD04_021EF06C
+ movs r7, r0
+ addeq sp, sp, #4
+ moveq r0, r6
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ cmp r7, #0
+ mov r8, r6
+ ble _02214FE4
+ ldr fp, _02214FF4 ; =0x02216EE0
+ mov r5, r8
+ mov r4, #0x1b0
+_02214F88:
+ ldr r0, [sl]
+ mov r1, r8
+ bl MOD04_021EEFFC
+ mov sb, r0
+ ldr r0, [sb]
+ cmp r0, #0
+ beq _02214FB8
+ ldr r1, _02214FF8 ; =0x02216ADC
+ mov r0, fp
+ mov r2, r5
+ mov r3, r4
+ bl __msl_assertion_failed
+_02214FB8:
+ ldr r0, [sb, #4]
+ bl strlen
+ add r8, r8, #1
+ ldr r1, [sb, #0xc]
+ add r2, r6, r0
+ ldr r0, [sb, #0x14]
+ add r1, r2, r1
+ add r0, r1, r0, lsl #1
+ cmp r8, r7
+ add r6, r0, #1
+ blt _02214F88
+_02214FE4:
+ sub r0, r7, #1
+ add r0, r6, r0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_02214FF4: .word 0x02216EE0
+_02214FF8: .word 0x02216ADC
+ arm_func_end MOD79_02214F48
+
+ arm_func_start MOD79_02214FFC
+MOD79_02214FFC: ; 0x02214FFC
+ stmdb sp!, {r4, lr}
+ ldr r4, [r0, #0x13c]
+ cmp r4, #0
+ bne _02215020
+ ldr r0, _02215040 ; =0x02216EA8
+ ldr r1, _02215044 ; =0x02216ADC
+ ldr r3, _02215048 ; =0x00000192
+ mov r2, #0
+ bl __msl_assertion_failed
+_02215020:
+ cmp r4, #0
+ ldreq r0, _0221504C ; =0x02216EF8
+ ldmeqia sp!, {r4, pc}
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ ldrne r0, _02215050 ; =0x02216EFC
+ ldreq r0, _02215054 ; =0x02216F40
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02215040: .word 0x02216EA8
+_02215044: .word 0x02216ADC
+_02215048: .word 0x00000192
+_0221504C: .word 0x02216EF8
+_02215050: .word 0x02216EFC
+_02215054: .word 0x02216F40
+ arm_func_end MOD79_02214FFC
+
+ arm_func_start MOD79_02215058
+MOD79_02215058: ; 0x02215058
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldr r0, [r4]
+ bl MOD04_021EF074
+ mov r0, r4
+ bl MOD04_021DD82C
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD79_02215058
+
+ arm_func_start MOD79_02215074
+MOD79_02215074: ; 0x02215074
+ ldr r0, [r0, #0x10]
+ bx lr
+ arm_func_end MOD79_02215074
+
+ arm_func_start MOD79_0221507C
+MOD79_0221507C: ; 0x0221507C
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ ldr ip, _02215170 ; =0x00002008
+ sub sp, sp, ip
+ mov r5, r0
+ bl MOD04_021F025C
+ mov r4, r0
+ mov r1, #0
+ mov r8, #0x2000
+ add r7, sp, #4
+ add r6, sp, #0
+ b _02215144
+_022150A8:
+ mov r0, r5
+ mov r1, r7
+ mov r2, r6
+ str r8, [sp]
+ bl MOD79_02212FF0
+ cmp r0, #3
+ ldreq ip, _02215170 ; =0x00002008
+ addeq sp, sp, ip
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+ cmp r0, #1
+ ldreq ip, _02215170 ; =0x00002008
+ addeq sp, sp, ip
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+ cmp r0, #2
+ bne _0221511C
+ mov r0, #1
+ str r0, [r5, #0xfc]
+ ldr r1, [r5, #0x104]
+ cmp r1, #0
+ ldrle ip, _02215170 ; =0x00002008
+ addle sp, sp, ip
+ ldmleia sp!, {r4, r5, r6, r7, r8, pc}
+ ldr r0, [r5, #0x100]
+ ldr ip, _02215170 ; =0x00002008
+ cmp r0, r1
+ movlt r0, #0xf
+ add sp, sp, ip
+ strlt r0, [r5, #0x38]
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_0221511C:
+ ldr r2, [sp]
+ mov r0, r5
+ mov r1, r7
+ bl MOD79_02215640
+ cmp r0, #0
+ ldreq ip, _02215170 ; =0x00002008
+ addeq sp, sp, ip
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+ bl MOD04_021F025C
+ sub r1, r0, r4
+_02215144:
+ ldr r0, [r5, #0xfc]
+ cmp r0, #0
+ ldrne ip, _02215170 ; =0x00002008
+ addne sp, sp, ip
+ ldmneia sp!, {r4, r5, r6, r7, r8, pc}
+ ldr r0, [r5, #0x158]
+ cmp r1, r0
+ blo _022150A8
+ ldr ip, _02215170 ; =0x00002008
+ add sp, sp, ip
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_02215170: .word 0x00002008
+ arm_func_end MOD79_0221507C
+
+ arm_func_start MOD79_02215174
+MOD79_02215174: ; 0x02215174
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ ldr ip, _02215618 ; =0x00001018
+ sub sp, sp, ip
+ mov r3, #0x1000
+ add r1, sp, #0x13
+ add r2, sp, #4
+ mov r6, r0
+ str r3, [sp, #4]
+ bl MOD79_02212FF0
+ mov r4, r0
+ cmp r4, #3
+ ldreq ip, _02215618 ; =0x00001018
+ addeq sp, sp, ip
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ cmp r4, #1
+ bne _022151CC
+ ldr r1, [r6, #0x84]
+ ldr r0, [r6, #0x80]
+ cmp r1, r0
+ ldreq ip, _02215618 ; =0x00001018
+ addeq sp, sp, ip
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_022151CC:
+ cmp r4, #0
+ bne _022151F4
+ ldr r2, [sp, #4]
+ add r1, sp, #0x13
+ add r0, r6, #0x74
+ bl MOD79_02212794
+ cmp r0, #0
+ ldreq ip, _02215618 ; =0x00001018
+ addeq sp, sp, ip
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_022151F4:
+ ldr r2, [r6, #0x84]
+ ldr r0, [r6, #0x78]
+ ldr r1, _0221561C ; =0x02216F64
+ add r5, r0, r2
+ mov r0, r5
+ str r2, [r6, #0xf4]
+ bl strstr
+ cmp r0, #0
+ bne _02215224
+ ldr r1, _02215620 ; =0x02216F6C
+ mov r0, r5
+ bl strstr
+_02215224:
+ cmp r0, #0
+ beq _022155E0
+ mov r1, #0
+ strb r1, [r0, #2]
+ ldr r7, [r6, #0x78]
+ add r3, r0, #2
+ ldr r1, [r6, #0x80]
+ sub r2, r3, r7
+ str r2, [r6, #0x80]
+ ldr r2, [r6, #0x78]
+ add r4, r0, #4
+ sub r0, r3, r2
+ str r0, [r6, #0xf8]
+ ldr r0, [r6, #0xf8]
+ sub r8, r4, r7
+ str r0, [r6, #0x84]
+ ldr r2, [r6, #0xec]
+ ldr r3, _02215624 ; =0x51EB851F
+ mov r0, r2, lsr #0x1f
+ smull r2, r7, r3, r2
+ mov r7, r7, asr #5
+ add r7, r0, r7
+ cmp r7, #1
+ sub sl, r1, r8
+ bne _022152DC
+ cmp sl, #0
+ beq _022152B0
+ ldr r0, [r6, #0x78]
+ mov r1, r4
+ add r2, sl, #1
+ bl memmove
+ str sl, [r6, #0x80]
+ mov r0, #0
+ str r0, [r6, #0x84]
+ b _022152B8
+_022152B0:
+ add r0, r6, #0x74
+ bl MOD79_0221262C
+_022152B8:
+ mov r1, #0
+ mov r3, #6
+ mov r0, r6
+ mov r2, r1
+ str r3, [r6, #0x10]
+ bl MOD79_02212E00
+ ldr ip, _02215618 ; =0x00001018
+ add sp, sp, ip
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_022152DC:
+ cmp r7, #3
+ bne _02215448
+ ldr r0, [r6, #0x10c]
+ cmp r0, #0xa
+ ldrgt ip, _02215618 ; =0x00001018
+ movgt r0, #1
+ strgt r0, [r6, #0xfc]
+ movgt r0, #0xb
+ addgt sp, sp, ip
+ strgt r0, [r6, #0x38]
+ ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ ldr r1, _02215628 ; =0x02216F70
+ mov r0, r5
+ bl strstr
+ cmp r0, #0
+ beq _02215448
+ add r4, r0, #9
+ ldr r1, _0221562C ; =0x0210430C
+ mov r2, #0
+ b _02215330
+_0221532C:
+ add r4, r4, #1
+_02215330:
+ ldrsb r0, [r4]
+ cmp r0, #0
+ blt _02215344
+ cmp r0, #0x80
+ blt _0221534C
+_02215344:
+ mov r0, r2
+ b _02215358
+_0221534C:
+ mov r0, r0, lsl #1
+ ldrh r0, [r1, r0]
+ and r0, r0, #0x100
+_02215358:
+ cmp r0, #0
+ bne _0221532C
+ mov r3, r4
+ ldr r1, _0221562C ; =0x0210430C
+ mov r2, #0
+ b _02215374
+_02215370:
+ add r3, r3, #1
+_02215374:
+ ldrsb r0, [r3]
+ cmp r0, #0
+ beq _022153AC
+ cmp r0, #0
+ blt _02215390
+ cmp r0, #0x80
+ blt _02215398
+_02215390:
+ mov r0, r2
+ b _022153A4
+_02215398:
+ mov r0, r0, lsl #1
+ ldrh r0, [r1, r0]
+ and r0, r0, #0x100
+_022153A4:
+ cmp r0, #0
+ beq _02215370
+_022153AC:
+ mov r0, #0
+ strb r0, [r3]
+ ldrsb r0, [r4]
+ cmp r0, #0x2f
+ bne _0221541C
+ ldr r0, [r6, #0x18]
+ bl strlen
+ mov r5, r0
+ mov r0, r4
+ bl strlen
+ add r1, r5, #0xe
+ add r0, r1, r0
+ bl MOD04_021DD860
+ str r0, [r6, #0x108]
+ ldr r0, [r6, #0x108]
+ ldr r1, _02215630 ; =0x02216F7C
+ cmp r0, #0
+ moveq r0, #1
+ streq r0, [r6, #0xfc]
+ streq r0, [r6, #0x38]
+ str r4, [sp]
+ ldrh r3, [r6, #0x20]
+ ldr r0, [r6, #0x108]
+ ldr r2, [r6, #0x18]
+ bl sprintf
+ ldr ip, _02215618 ; =0x00001018
+ add sp, sp, ip
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_0221541C:
+ mov r0, r4
+ bl MOD04_021F0208
+ str r0, [r6, #0x108]
+ ldr r0, [r6, #0x108]
+ ldr ip, _02215618 ; =0x00001018
+ cmp r0, #0
+ moveq r0, #1
+ streq r0, [r6, #0xfc]
+ add sp, sp, ip
+ streq r0, [r6, #0x38]
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_02215448:
+ ldr r1, _02215634 ; =0x02216F8C
+ mov r0, r5
+ bl strstr
+ movs sb, r0
+ beq _02215530
+ ldr r7, _02215638 ; =0x0221673C
+ add r3, sp, #8
+ mov r2, #5
+_02215468:
+ ldrb r1, [r7], #1
+ ldrb r0, [r7], #1
+ subs r2, r2, #1
+ strb r1, [r3], #1
+ strb r0, [r3], #1
+ bne _02215468
+ ldrb r1, [r7]
+ add r8, sb, #0x10
+ add r0, sp, #8
+ mov r7, r8
+ strb r1, [r3]
+ bl strlen
+ b _022154A0
+_0221549C:
+ add r7, r7, #1
+_022154A0:
+ cmp r7, #0
+ beq _022154CC
+ ldrsb r1, [r7]
+ cmp r1, #0
+ beq _022154CC
+ cmp r1, #0xa
+ beq _022154CC
+ cmp r1, #0xd
+ beq _022154CC
+ cmp r1, #0x20
+ bne _0221549C
+_022154CC:
+ sub r2, r7, r8
+ cmp r2, r0
+ ldrgt ip, _02215618 ; =0x00001018
+ movgt r0, #1
+ strgt r0, [r6, #0xfc]
+ movgt r0, #0x10
+ addgt sp, sp, ip
+ strgt r0, [r6, #0x38]
+ ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ cmp r0, r2
+ bne _02215524
+ add r1, sp, #8
+ mov r0, r8
+ bl strncmp
+ cmp r0, #0
+ ldrge ip, _02215618 ; =0x00001018
+ movge r0, #1
+ strge r0, [r6, #0xfc]
+ movge r0, #0x10
+ addge sp, sp, ip
+ strge r0, [r6, #0x38]
+ ldmgeia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_02215524:
+ mov r0, r8
+ bl atol
+ str r0, [r6, #0x104]
+_02215530:
+ ldr r1, _0221563C ; =0x02216F9C
+ mov r0, r5
+ bl strstr
+ cmp r0, #0
+ movne r0, #1
+ moveq r0, #0
+ str r0, [r6, #0x110]
+ ldr r0, [r6, #0x110]
+ cmp r0, #0
+ movne r0, #0
+ strneb r0, [r6, #0x114]
+ strne r0, [r6, #0x120]
+ strne r0, [r6, #0x124]
+ strne r0, [r6, #0x128]
+ ldr r0, [r6, #0xc]
+ sub r0, r0, #3
+ cmp r0, #1
+ ldrls ip, _02215618 ; =0x00001018
+ movls r0, #1
+ addls sp, sp, ip
+ strls r0, [r6, #0xfc]
+ ldmlsia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ mov r0, #8
+ str r0, [r6, #0x10]
+ cmp sb, #0
+ beq _022155B4
+ ldr r0, [r6, #0x104]
+ cmp r0, #0
+ ldreq ip, _02215618 ; =0x00001018
+ moveq r0, #1
+ addeq sp, sp, ip
+ streq r0, [r6, #0xfc]
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_022155B4:
+ cmp sl, #0
+ ldrle ip, _02215618 ; =0x00001018
+ addle sp, sp, ip
+ ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ mov r0, r6
+ mov r1, r4
+ mov r2, sl
+ bl MOD79_02215640
+ ldr ip, _02215618 ; =0x00001018
+ add sp, sp, ip
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_022155E0:
+ cmp r4, #2
+ ldrne ip, _02215618 ; =0x00001018
+ addne sp, sp, ip
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ mov r0, #1
+ str r0, [r6, #0xfc]
+ mov r0, #7
+ str r0, [r6, #0x38]
+ ldr r0, [r6, #0x48]
+ bl MOD04_021EFB28
+ str r0, [r6, #0x4c]
+ ldr ip, _02215618 ; =0x00001018
+ add sp, sp, ip
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ .align 2, 0
+_02215618: .word 0x00001018
+_0221561C: .word 0x02216F64
+_02215620: .word 0x02216F6C
+_02215624: .word 0x51EB851F
+_02215628: .word 0x02216F70
+_0221562C: .word 0x0210430C
+_02215630: .word 0x02216F7C
+_02215634: .word 0x02216F8C
+_02215638: .word 0x0221673C
+_0221563C: .word 0x02216F9C
+ arm_func_end MOD79_02215174
+
+ arm_func_start MOD79_02215640
+MOD79_02215640: ; 0x02215640
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0xc
+ movs r6, r0
+ mov r5, r1
+ mov r4, r2
+ bne _0221566C
+ ldr r0, _02215884 ; =0x02216FB8
+ ldr r1, _02215888 ; =0x02216FC4
+ ldr r3, _0221588C ; =0x0000035D
+ mov r2, #0
+ bl __msl_assertion_failed
+_0221566C:
+ cmp r5, #0
+ bne _02215688
+ ldr r0, _02215890 ; =0x02216FD4
+ ldr r1, _02215888 ; =0x02216FC4
+ ldr r3, _02215894 ; =0x0000035E
+ mov r2, #0
+ bl __msl_assertion_failed
+_02215688:
+ cmp r4, #0
+ bgt _022156A4
+ ldr r0, _02215898 ; =0x02216FDC
+ ldr r1, _02215888 ; =0x02216FC4
+ ldr r3, _0221589C ; =0x0000035F
+ mov r2, #0
+ bl __msl_assertion_failed
+_022156A4:
+ ldr r0, [r6, #0x110]
+ cmp r0, #0
+ beq _0221586C
+ cmp r4, #0
+ ble _02215860
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #1
+ add r8, r6, #0x124
+ mov sl, #0xa
+ mov r7, #0
+ str r0, [sp]
+ mov fp, #3
+_022156D8:
+ ldr r0, [r6, #0x128]
+ cmp r0, #0
+ bne _02215780
+ mov r0, r5
+ mov r1, sl
+ bl strchr
+ movs sb, r0
+ beq _02215764
+ mov r0, r6
+ mov r1, r5
+ sub r2, sb, r5
+ bl MOD79_022158A8
+ add r1, sb, #1
+ sub r2, r1, r5
+ mov r0, r6
+ mov r5, r1
+ sub r4, r4, r2
+ bl MOD79_02215984
+ str r0, [r6, #0x124]
+ ldr r1, [r6, #0x124]
+ mvn r0, #0
+ cmp r1, r0
+ bne _02215750
+ mov r0, #1
+ str r0, [r6, #0xfc]
+ mov r0, #7
+ str r0, [r6, #0x38]
+ add sp, sp, #0xc
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_02215750:
+ cmp r1, #0
+ ldrne r0, [sp]
+ streq fp, [r6, #0x128]
+ strne r0, [r6, #0x128]
+ b _02215858
+_02215764:
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl MOD79_022158A8
+ add sp, sp, #0xc
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_02215780:
+ cmp r0, #1
+ bne _022157DC
+ ldr sb, [r6, #0x124]
+ mov r0, r6
+ cmp sb, r4
+ movge sb, r4
+ mov r1, r5
+ mov r2, sb
+ bl MOD79_022159E4
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r0, [r8]
+ add r5, r5, sb
+ sub r0, r0, sb
+ str r0, [r8]
+ ldr r0, [r6, #0x124]
+ sub r4, r4, sb
+ cmp r0, #0
+ ldreq r0, [sp, #4]
+ streq r0, [r6, #0x128]
+ b _02215858
+_022157DC:
+ cmp r0, #2
+ bne _02215824
+ mov r0, r5
+ mov r1, sl
+ bl strchr
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ strb r7, [r6, #0x114]
+ str r7, [r6, #0x120]
+ add r0, r0, #1
+ sub r1, r0, r5
+ str r7, [r6, #0x124]
+ mov r5, r0
+ str r7, [r6, #0x128]
+ sub r4, r4, r1
+ b _02215858
+_02215824:
+ cmp r0, #3
+ moveq r0, #1
+ addeq sp, sp, #0xc
+ streq r0, [r6, #0xfc]
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r0, _022158A0 ; =0x02216FE4
+ ldr r1, _02215888 ; =0x02216FC4
+ ldr r3, _022158A4 ; =0x000003E3
+ mov r2, #0
+ bl __msl_assertion_failed
+ add sp, sp, #0xc
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_02215858:
+ cmp r4, #0
+ bgt _022156D8
+_02215860:
+ add sp, sp, #0xc
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_0221586C:
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl MOD79_022159E4
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_02215884: .word 0x02216FB8
+_02215888: .word 0x02216FC4
+_0221588C: .word 0x0000035D
+_02215890: .word 0x02216FD4
+_02215894: .word 0x0000035E
+_02215898: .word 0x02216FDC
+_0221589C: .word 0x0000035F
+_022158A0: .word 0x02216FE4
+_022158A4: .word 0x000003E3
+ arm_func_end MOD79_02215640
+
+ arm_func_start MOD79_022158A8
+MOD79_022158A8: ; 0x022158A8
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ movs r4, r0
+ mov r7, r1
+ mov r6, r2
+ bne _022158D4
+ ldr r0, _0221596C ; =0x02216FB8
+ ldr r1, _02215970 ; =0x02216FC4
+ ldr r3, _02215974 ; =0x00000333
+ mov r2, #0
+ bl __msl_assertion_failed
+_022158D4:
+ cmp r7, #0
+ bne _022158F0
+ ldr r0, _02215978 ; =0x02216FD4
+ ldr r1, _02215970 ; =0x02216FC4
+ mov r2, #0
+ mov r3, #0x334
+ bl __msl_assertion_failed
+_022158F0:
+ cmp r6, #0
+ bge _0221590C
+ ldr r0, _0221597C ; =0x02216FE8
+ ldr r1, _02215970 ; =0x02216FC4
+ ldr r3, _02215980 ; =0x00000335
+ mov r2, #0
+ bl __msl_assertion_failed
+_0221590C:
+ cmp r6, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r3, [r4, #0x120]
+ cmp r3, #0xa
+ addge sp, sp, #4
+ ldmgeia sp!, {r4, r5, r6, r7, pc}
+ rsb r5, r3, #0xa
+ cmp r5, r6
+ movge r5, r6
+ add r0, r4, #0x114
+ mov r1, r7
+ mov r2, r5
+ add r0, r0, r3
+ bl memcpy
+ ldr r0, [r4, #0x120]
+ mov r1, #0
+ add r0, r0, r5
+ str r0, [r4, #0x120]
+ ldr r0, [r4, #0x120]
+ add r0, r4, r0
+ strb r1, [r0, #0x114]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221596C: .word 0x02216FB8
+_02215970: .word 0x02216FC4
+_02215974: .word 0x00000333
+_02215978: .word 0x02216FD4
+_0221597C: .word 0x02216FE8
+_02215980: .word 0x00000335
+ arm_func_end MOD79_022158A8
+
+ arm_func_start MOD79_02215984
+MOD79_02215984: ; 0x02215984
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, [r0, #0x120]
+ add r4, r0, #0x114
+ cmp r1, #0
+ bne _022159B0
+ ldr r0, _022159D4 ; =0x02216FF4
+ ldr r1, _022159D8 ; =0x02216FC4
+ ldr r3, _022159DC ; =0x00000321
+ mov r2, #0
+ bl __msl_assertion_failed
+_022159B0:
+ ldr r1, _022159E0 ; =0x02216FF8
+ add r2, sp, #0
+ mov r0, r4
+ bl sscanf
+ cmp r0, #1
+ mvnne r0, #0
+ ldreq r0, [sp]
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022159D4: .word 0x02216FF4
+_022159D8: .word 0x02216FC4
+_022159DC: .word 0x00000321
+_022159E0: .word 0x02216FF8
+ arm_func_end MOD79_02215984
+
+ arm_func_start MOD79_022159E4
+MOD79_022159E4: ; 0x022159E4
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldr r0, [r4, #0x100]
+ mov lr, #0
+ add r0, r0, r2
+ str r0, [r4, #0x100]
+ ldr r3, [r4, #0x100]
+ ldr r0, [r4, #0x104]
+ mov ip, lr
+ cmp r3, r0
+ beq _02215A1C
+ ldr r0, [r4, #0x130]
+ cmp r0, #0
+ beq _02215A24
+_02215A1C:
+ mov r0, #1
+ str r0, [r4, #0xfc]
+_02215A24:
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ bne _02215A50
+ add r0, r4, #0xbc
+ bl MOD79_02212794
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr lr, [r4, #0xc0]
+ ldr ip, [r4, #0xc8]
+ b _02215A90
+_02215A50:
+ cmp r0, #1
+ bne _02215A84
+ cmp r2, #0
+ beq _02215A78
+ mov r0, #1
+ str r0, [r4, #0xfc]
+ mov r0, #0xd
+ str r0, [r4, #0x38]
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_02215A78:
+ mov lr, r1
+ mov ip, r2
+ b _02215A90
+_02215A84:
+ cmp r0, #2
+ moveq lr, r1
+ moveq ip, r2
+_02215A90:
+ mov r0, r4
+ mov r1, lr
+ mov r2, ip
+ bl MOD79_02212E00
+ mov r0, #1
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD79_022159E4
+
+ arm_func_start MOD79_02215AA8
+MOD79_02215AA8: ; 0x02215AA8
+ stmdb sp!, {r4, r5, lr}
+ ldr ip, _02215BD0 ; =0x00000404
+ sub sp, sp, ip
+ mov r3, #0x400
+ add r1, sp, #4
+ add r2, sp, #0
+ mov r4, r0
+ str r3, [sp]
+ bl MOD79_02212FF0
+ mov r5, r0
+ cmp r5, #3
+ ldreq ip, _02215BD0 ; =0x00000404
+ addeq sp, sp, ip
+ ldmeqia sp!, {r4, r5, pc}
+ cmp r5, #1
+ bne _02215B00
+ ldr r1, [r4, #0x84]
+ ldr r0, [r4, #0x80]
+ cmp r1, r0
+ ldreq ip, _02215BD0 ; =0x00000404
+ addeq sp, sp, ip
+ ldmeqia sp!, {r4, r5, pc}
+_02215B00:
+ cmp r5, #0
+ bne _02215B28
+ ldr r2, [sp]
+ add r1, sp, #4
+ add r0, r4, #0x74
+ bl MOD79_02212794
+ cmp r0, #0
+ ldreq ip, _02215BD0 ; =0x00000404
+ addeq sp, sp, ip
+ ldmeqia sp!, {r4, r5, pc}
+_02215B28:
+ ldr r0, [r4, #0x78]
+ ldr r1, _02215BD4 ; =0x02216FFC
+ bl strstr
+ cmp r0, #0
+ beq _02215B98
+ mov r1, #0
+ strb r1, [r0]
+ ldr r1, [r4, #0x78]
+ sub r5, r0, r1
+ add r1, r5, #1
+ mov r0, r4
+ str r1, [r4, #0xf8]
+ bl MOD79_02215BD8
+ cmp r0, #0
+ ldreq ip, _02215BD0 ; =0x00000404
+ addeq sp, sp, ip
+ ldmeqia sp!, {r4, r5, pc}
+ add r3, r5, #2
+ mov r1, #0
+ str r3, [r4, #0x84]
+ mov r3, #7
+ mov r0, r4
+ mov r2, r1
+ str r3, [r4, #0x10]
+ bl MOD79_02212E00
+ ldr ip, _02215BD0 ; =0x00000404
+ add sp, sp, ip
+ ldmia sp!, {r4, r5, pc}
+_02215B98:
+ cmp r5, #2
+ ldrne ip, _02215BD0 ; =0x00000404
+ addne sp, sp, ip
+ ldmneia sp!, {r4, r5, pc}
+ mov r0, #1
+ str r0, [r4, #0xfc]
+ mov r0, #7
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0x48]
+ bl MOD04_021EFB28
+ str r0, [r4, #0x4c]
+ ldr ip, _02215BD0 ; =0x00000404
+ add sp, sp, ip
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02215BD0: .word 0x00000404
+_02215BD4: .word 0x02216FFC
+ arm_func_end MOD79_02215AA8
+
+ arm_func_start MOD79_02215BD8
+MOD79_02215BD8: ; 0x02215BD8
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #0x18
+ movs r4, r0
+ bne _02215BFC
+ ldr r0, _02215D0C ; =0x02216FB8
+ ldr r1, _02215D10 ; =0x02216FC4
+ ldr r3, _02215D14 ; =0x0000024E
+ mov r2, #0
+ bl __msl_assertion_failed
+_02215BFC:
+ ldr r0, [r4, #0x80]
+ cmp r0, #0
+ bgt _02215C1C
+ ldr r0, _02215D18 ; =0x02217000
+ ldr r1, _02215D10 ; =0x02216FC4
+ ldr r3, _02215D1C ; =0x0000024F
+ mov r2, #0
+ bl __msl_assertion_failed
+_02215C1C:
+ add r1, sp, #0x10
+ str r1, [sp]
+ add r0, sp, #0x14
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x78]
+ ldr r1, _02215D20 ; =0x02217020
+ add r2, sp, #8
+ add r3, sp, #0xc
+ bl sscanf
+ mov r3, #0
+ mov ip, #1
+ ldr r2, _02215D24 ; =0x0210430C
+ b _02215C5C
+_02215C50:
+ ldr r1, [sp, #0x14]
+ add r1, r1, #1
+ str r1, [sp, #0x14]
+_02215C5C:
+ ldr lr, [r4, #0x78]
+ ldr r1, [sp, #0x14]
+ ldrsb lr, [lr, r1]
+ cmp lr, #0
+ beq _02215CA0
+ mov r1, ip
+ cmp lr, #0
+ blt _02215C84
+ cmp lr, #0x80
+ movlt r1, r3
+_02215C84:
+ cmp r1, #0
+ movne r1, r3
+ moveq r1, lr, lsl #1
+ ldreqh r1, [r2, r1]
+ andeq r1, r1, #0x100
+ cmp r1, #0
+ bne _02215C50
+_02215CA0:
+ cmp r0, #3
+ bne _02215CC8
+ ldr r1, [sp, #8]
+ cmp r1, #1
+ blt _02215CC8
+ ldr r0, [sp, #0x10]
+ cmp r0, #0x64
+ blt _02215CC8
+ cmp r0, #0x258
+ blt _02215CE4
+_02215CC8:
+ mov r0, #1
+ str r0, [r4, #0xfc]
+ mov r0, #7
+ str r0, [r4, #0x38]
+ add sp, sp, #0x18
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_02215CE4:
+ str r1, [r4, #0xe4]
+ ldr r1, [sp, #0xc]
+ mov r0, #1
+ str r1, [r4, #0xe8]
+ ldr r1, [sp, #0x10]
+ str r1, [r4, #0xec]
+ ldr r1, [sp, #0x14]
+ str r1, [r4, #0xf0]
+ add sp, sp, #0x18
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02215D0C: .word 0x02216FB8
+_02215D10: .word 0x02216FC4
+_02215D14: .word 0x0000024E
+_02215D18: .word 0x02217000
+_02215D1C: .word 0x0000024F
+_02215D20: .word 0x02217020
+_02215D24: .word 0x0210430C
+ arm_func_end MOD79_02215BD8
+
+ arm_func_start MOD79_02215D28
+MOD79_02215D28: ; 0x02215D28
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ mov r4, r0
+ mov r2, #0
+ ldr r0, [r4, #0x48]
+ add r1, sp, #0
+ mov r3, r2
+ bl MOD04_021EFF5C
+ mvn r1, #0
+ cmp r0, r1
+ bne _02215D78
+ mov r0, #1
+ str r0, [r4, #0xfc]
+ mov r0, #5
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0x48]
+ bl MOD04_021EFB28
+ add sp, sp, #8
+ str r0, [r4, #0x4c]
+ ldmia sp!, {r4, pc}
+_02215D78:
+ ldr r0, [sp]
+ cmp r0, #0
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, pc}
+ mov r1, #0
+ mov r3, #6
+ mov r0, r4
+ mov r2, r1
+ str r3, [r4, #0x10]
+ bl MOD79_02212E00
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD79_02215D28
+
+ arm_func_start MOD79_02215DA8
+MOD79_02215DA8: ; 0x02215DA8
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ ldr r4, [r6, #0x148]
+ bl MOD79_022140D4
+ movs r5, r0
+ bne _02215DF8
+ ldr r0, [r6, #0xfc]
+ cmp r0, #0
+ beq _02215DD8
+ ldr r0, [r6, #0x38]
+ cmp r0, #0
+ bne _02215DEC
+_02215DD8:
+ ldr r0, _02215E38 ; =0x02217030
+ ldr r1, _02215E3C ; =0x02216FC4
+ mov r2, #0
+ mov r3, #0x200
+ bl __msl_assertion_failed
+_02215DEC:
+ mov r0, r6
+ bl MOD79_022149E4
+ ldmia sp!, {r4, r5, r6, pc}
+_02215DF8:
+ ldr r0, [r6, #0x148]
+ cmp r4, r0
+ beq _02215E0C
+ mov r0, r6
+ bl MOD79_02212D90
+_02215E0C:
+ cmp r5, #1
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r0, r6
+ bl MOD79_022149E4
+ mov r1, #0
+ mov r3, #5
+ mov r0, r6
+ mov r2, r1
+ str r3, [r6, #0x10]
+ bl MOD79_02212E00
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_02215E38: .word 0x02217030
+_02215E3C: .word 0x02216FC4
+ arm_func_end MOD79_02215DA8
+
+ arm_func_start MOD79_02215E40
+MOD79_02215E40: ; 0x02215E40
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0x14
+ mov r5, r0
+ ldr r0, [r5, #0x5c]
+ cmp r0, #0
+ bne _02216020
+ ldr r0, [r5, #0x13c]
+ add r4, r5, #0x50
+ cmp r0, #0
+ ldrne r1, _02216080 ; =0x0221705C
+ bne _02215E7C
+ ldr r0, [r5, #0xc]
+ cmp r0, #3
+ ldreq r1, _02216084 ; =0x02217064
+ ldrne r1, _02216088 ; =0x0221706C
+_02215E7C:
+ mov r0, r4
+ mov r2, #0
+ bl MOD79_02212794
+ ldr r0, [r5, #0x15c]
+ cmp r0, #0
+ bne _02215EA4
+ ldr r0, _0221608C ; =0x02217128
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02215EB8
+_02215EA4:
+ ldr r1, [r5, #0x14]
+ mov r0, r4
+ mov r2, #0
+ bl MOD79_02212794
+ b _02215EC8
+_02215EB8:
+ ldr r1, [r5, #0x24]
+ mov r0, r4
+ mov r2, #0
+ bl MOD79_02212794
+_02215EC8:
+ ldr r1, _02216090 ; =0x02217074
+ mov r0, r4
+ mov r2, #0
+ bl MOD79_02212794
+ ldrh r0, [r5, #0x20]
+ cmp r0, #0x50
+ bne _02215EF8
+ ldr r2, [r5, #0x18]
+ ldr r1, _02216094 ; =0x02217080
+ mov r0, r4
+ bl MOD79_02212700
+ b _02215F40
+_02215EF8:
+ ldr r1, _02216098 ; =0x02217088
+ mov r0, r4
+ mov r2, #0
+ bl MOD79_02212794
+ ldr r1, [r5, #0x18]
+ mov r0, r4
+ mov r2, #0
+ bl MOD79_02212794
+ mov r0, r4
+ mov r1, #0x3a
+ bl MOD79_022126A4
+ ldrh r1, [r5, #0x20]
+ mov r0, r4
+ bl MOD79_0221266C
+ mov r0, r4
+ ldr r1, _0221609C ; =0x02216FFC
+ mov r2, #2
+ bl MOD79_02212794
+_02215F40:
+ ldr r0, [r5, #0x28]
+ cmp r0, #0
+ beq _02215F5C
+ ldr r1, _022160A0 ; =0x02217090
+ bl strstr
+ cmp r0, #0
+ bne _02215F6C
+_02215F5C:
+ ldr r1, _022160A0 ; =0x02217090
+ ldr r2, _022160A4 ; =0x0221709C
+ mov r0, r4
+ bl MOD79_02212700
+_02215F6C:
+ ldr r0, [r5, #0x34]
+ cmp r0, #0
+ beq _02215F8C
+ ldr r1, _022160A8 ; =0x022170AC
+ ldr r2, _022160AC ; =0x022170B8
+ mov r0, r4
+ bl MOD79_02212700
+ b _02215F9C
+_02215F8C:
+ ldr r1, _022160A8 ; =0x022170AC
+ ldr r2, _022160B0 ; =0x022170C4
+ mov r0, r4
+ bl MOD79_02212700
+_02215F9C:
+ ldr r0, [r5, #0x13c]
+ cmp r0, #0
+ beq _02215FE0
+ ldr r2, [r5, #0x14c]
+ ldr r1, _022160B4 ; =0x022170CC
+ add r0, sp, #0
+ bl sprintf
+ ldr r1, _022160B8 ; =0x022170D0
+ add r2, sp, #0
+ mov r0, r4
+ bl MOD79_02212700
+ mov r0, r5
+ bl MOD79_02214FFC
+ mov r2, r0
+ ldr r1, _022160BC ; =0x022170E0
+ mov r0, r4
+ bl MOD79_02212700
+_02215FE0:
+ ldr r1, [r5, #0x28]
+ cmp r1, #0
+ beq _02215FF8
+ mov r0, r4
+ mov r2, #0
+ bl MOD79_02212794
+_02215FF8:
+ ldr r1, _0221609C ; =0x02216FFC
+ mov r0, r4
+ mov r2, #2
+ bl MOD79_02212794
+ add r0, r5, #0x50
+ cmp r4, r0
+ beq _02216020
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #0xc]
+ bl MOD79_02212794
+_02216020:
+ mov r0, r5
+ bl MOD79_02212554
+ cmp r0, #0
+ addeq sp, sp, #0x14
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r1, [r5, #0x60]
+ ldr r0, [r5, #0x5c]
+ cmp r1, r0
+ addlt sp, sp, #0x14
+ ldmltia sp!, {r4, r5, pc}
+ add r0, r5, #0x50
+ bl MOD79_0221262C
+ ldr r0, [r5, #0x13c]
+ mov r1, #0
+ cmp r0, #0
+ movne r0, #4
+ strne r0, [r5, #0x10]
+ moveq r0, #5
+ streq r0, [r5, #0x10]
+ mov r0, r5
+ mov r2, r1
+ bl MOD79_02212E00
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02216080: .word 0x0221705C
+_02216084: .word 0x02217064
+_02216088: .word 0x0221706C
+_0221608C: .word 0x02217128
+_02216090: .word 0x02217074
+_02216094: .word 0x02217080
+_02216098: .word 0x02217088
+_0221609C: .word 0x02216FFC
+_022160A0: .word 0x02217090
+_022160A4: .word 0x0221709C
+_022160A8: .word 0x022170AC
+_022160AC: .word 0x022170B8
+_022160B0: .word 0x022170C4
+_022160B4: .word 0x022170CC
+_022160B8: .word 0x022170D0
+_022160BC: .word 0x022170E0
+ arm_func_end MOD79_02215E40
+
+ arm_func_start MOD79_022160C0
+MOD79_022160C0: ; 0x022160C0
+ stmdb sp!, {r4, lr}
+ ldr ip, _02216208 ; =0x00000408
+ sub sp, sp, ip
+ mov r4, r0
+ ldr r1, [r4, #0x168]
+ cmp r1, #0
+ bne _02216130
+ ldr r0, [r4, #0x14]
+ ldr r1, _0221620C ; =0x022170F0
+ mov r2, #8
+ bl strncmp
+ cmp r0, #0
+ ldreq ip, _02216208 ; =0x00000408
+ moveq r0, #1
+ streq r0, [r4, #0xfc]
+ moveq r0, #0x11
+ addeq sp, sp, ip
+ streq r0, [r4, #0x38]
+ ldmeqia sp!, {r4, pc}
+ mov r1, #0
+ mov r3, #3
+ mov r0, r4
+ mov r2, r1
+ str r3, [r4, #0x10]
+ bl MOD79_02212E00
+ ldr ip, _02216208 ; =0x00000408
+ add sp, sp, ip
+ ldmia sp!, {r4, pc}
+_02216130:
+ ldr r1, [r4, #0x170]
+ cmp r1, #0
+ beq _0221615C
+ mov r1, #0
+ mov r3, #3
+ mov r2, r1
+ str r3, [r4, #0x10]
+ bl MOD79_02212E00
+ ldr ip, _02216208 ; =0x00000408
+ add sp, sp, ip
+ ldmia sp!, {r4, pc}
+_0221615C:
+ ldr r1, [r4, #0x16c]
+ cmp r1, #0
+ bne _0221619C
+ ldr r2, [r4, #0x174]
+ add r1, r4, #0x164
+ .word 0xE12FFF32
+ cmp r0, #3
+ bne _0221619C
+ ldr r0, _02216210 ; =0x02216FE4
+ ldr r1, _02216214 ; =0x02216FC4
+ ldr r3, _02216218 ; =0x00000146
+ mov r2, #0
+ bl __msl_assertion_failed
+ ldr ip, _02216208 ; =0x00000408
+ add sp, sp, ip
+ ldmia sp!, {r4, pc}
+_0221619C:
+ ldr r1, [r4, #0x60]
+ ldr r0, [r4, #0x5c]
+ cmp r1, r0
+ bge _022161E4
+ mov r0, r4
+ bl MOD79_02212554
+ cmp r0, #0
+ ldreq ip, _02216208 ; =0x00000408
+ addeq sp, sp, ip
+ ldmeqia sp!, {r4, pc}
+ ldr r1, [r4, #0x60]
+ ldr r0, [r4, #0x5c]
+ cmp r1, r0
+ ldrlt ip, _02216208 ; =0x00000408
+ addlt sp, sp, ip
+ ldmltia sp!, {r4, pc}
+ add r0, r4, #0x50
+ bl MOD79_0221262C
+_022161E4:
+ mov r3, #0x400
+ add r1, sp, #4
+ add r2, sp, #0
+ mov r0, r4
+ str r3, [sp]
+ bl MOD79_02212FF0
+ ldr ip, _02216208 ; =0x00000408
+ add sp, sp, ip
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02216208: .word 0x00000408
+_0221620C: .word 0x022170F0
+_02216210: .word 0x02216FE4
+_02216214: .word 0x02216FC4
+_02216218: .word 0x00000146
+ arm_func_end MOD79_022160C0
+
+ arm_func_start MOD79_0221621C
+MOD79_0221621C: ; 0x0221621C
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #0x10
+ mov r4, r0
+ ldr r1, [r4, #0x48]
+ mvn r0, #0
+ cmp r1, r0
+ bne _022163D4
+ mov r0, #2
+ mov r1, #1
+ mov r2, #0
+ bl MOD04_021EFDB8
+ str r0, [r4, #0x48]
+ ldr r0, [r4, #0x48]
+ mvn r1, #0
+ cmp r0, r1
+ bne _02216280
+ mov r0, #1
+ str r0, [r4, #0xfc]
+ mov r0, #5
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0x48]
+ bl MOD04_021EFB28
+ add sp, sp, #0x10
+ str r0, [r4, #0x4c]
+ ldmia sp!, {r4, pc}
+_02216280:
+ mov r1, #0
+ bl MOD04_021F017C
+ cmp r0, #0
+ bne _022162B4
+ mov r0, #1
+ str r0, [r4, #0xfc]
+ mov r0, #5
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #0x48]
+ bl MOD04_021EFB28
+ add sp, sp, #0x10
+ str r0, [r4, #0x4c]
+ ldmia sp!, {r4, pc}
+_022162B4:
+ ldr r0, [r4, #0x134]
+ cmp r0, #0
+ beq _022162D0
+ ldr r1, _0221646C ; =0x0221695C
+ ldr r0, [r4, #0x48]
+ ldr r1, [r1]
+ bl MOD04_021F0130
+_022162D0:
+ add r1, sp, #0
+ mov r0, #0
+ str r0, [r1]
+ str r0, [r1, #4]
+ mov r0, #2
+ strb r0, [sp, #1]
+ ldr r0, [r4, #0x15c]
+ cmp r0, #0
+ beq _02216318
+ add r0, r4, #0x100
+ ldrh r0, [r0, #0x60]
+ mov r1, r0, asr #8
+ mov r0, r0, lsl #8
+ and r1, r1, #0xff
+ and r0, r0, #0xff00
+ orr r0, r1, r0
+ strh r0, [sp, #2]
+ b _02216368
+_02216318:
+ ldr r0, _02216470 ; =0x02217128
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0221634C
+ ldr r0, _02216474 ; =0x02217124
+ ldrh r0, [r0]
+ mov r1, r0, asr #8
+ mov r0, r0, lsl #8
+ and r1, r1, #0xff
+ and r0, r0, #0xff00
+ orr r0, r1, r0
+ strh r0, [sp, #2]
+ b _02216368
+_0221634C:
+ ldrh r0, [r4, #0x20]
+ mov r1, r0, asr #8
+ mov r0, r0, lsl #8
+ and r1, r1, #0xff
+ and r0, r0, #0xff00
+ orr r0, r1, r0
+ strh r0, [sp, #2]
+_02216368:
+ ldr r0, [r4, #0x1c]
+ add r1, sp, #0
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x48]
+ mov r2, #8
+ bl MOD04_021EFCE4
+ mvn r1, #0
+ cmp r0, r1
+ bne _022163D4
+ ldr r0, [r4, #0x48]
+ bl MOD04_021EFB28
+ mvn r1, #5
+ cmp r0, r1
+ beq _022163D4
+ mvn r1, #0x19
+ cmp r0, r1
+ beq _022163D4
+ mvn r1, #0x4b
+ cmp r0, r1
+ beq _022163D4
+ mov r1, #1
+ str r1, [r4, #0xfc]
+ mov r1, #6
+ str r1, [r4, #0x38]
+ add sp, sp, #0x10
+ str r0, [r4, #0x4c]
+ ldmia sp!, {r4, pc}
+_022163D4:
+ ldr r0, [r4, #0x48]
+ add r2, sp, #8
+ add r3, sp, #0xc
+ mov r1, #0
+ bl MOD04_021EFF5C
+ cmp r0, #0
+ movgt r1, #1
+ movle r1, #0
+ mvn r0, #0
+ cmp r1, r0
+ beq _0221640C
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ beq _0221643C
+_0221640C:
+ mov r0, #1
+ str r0, [r4, #0xfc]
+ mov r0, #6
+ cmp r1, #0
+ addne sp, sp, #0x10
+ str r0, [r4, #0x38]
+ ldmneia sp!, {r4, pc}
+ ldr r0, [r4, #0x48]
+ bl MOD04_021EFB28
+ add sp, sp, #0x10
+ str r0, [r4, #0x4c]
+ ldmia sp!, {r4, pc}
+_0221643C:
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ addeq sp, sp, #0x10
+ ldmeqia sp!, {r4, pc}
+ mov r1, #0
+ mov r3, #2
+ mov r0, r4
+ mov r2, r1
+ str r3, [r4, #0x10]
+ bl MOD79_02212E00
+ add sp, sp, #0x10
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0221646C: .word 0x0221695C
+_02216470: .word 0x02217128
+_02216474: .word 0x02217124
+ arm_func_end MOD79_0221621C
+
+ arm_func_start MOD79_02216478
+MOD79_02216478: ; 0x02216478
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r1, #0
+ mov r4, r0
+ mov r2, r1
+ bl MOD79_02212E00
+ bl MOD04_021F024C
+ mov r0, r4
+ bl MOD79_02216548
+ cmp r0, #0
+ moveq r0, #1
+ streq r0, [r4, #0xfc]
+ moveq r0, #3
+ addeq sp, sp, #4
+ streq r0, [r4, #0x38]
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r5, [r4, #0x15c]
+ cmp r5, #0
+ bne _022164D4
+ ldr r0, _02216544 ; =0x02217128
+ ldr r5, [r0]
+ cmp r5, #0
+ ldreq r5, [r4, #0x18]
+_022164D4:
+ mov r0, r5
+ bl MOD04_021EFB38
+ str r0, [r4, #0x1c]
+ ldr r1, [r4, #0x1c]
+ mvn r0, #0
+ cmp r1, r0
+ bne _02216524
+ mov r0, r5
+ bl FUN_0209A6EC
+ cmp r0, #0
+ moveq r0, #1
+ streq r0, [r4, #0xfc]
+ moveq r0, #4
+ addeq sp, sp, #4
+ streq r0, [r4, #0x38]
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r0, [r0, #0xc]
+ ldr r0, [r0]
+ ldr r0, [r0]
+ str r0, [r4, #0x1c]
+_02216524:
+ mov r1, #0
+ mov r3, #1
+ mov r0, r4
+ mov r2, r1
+ str r3, [r4, #0x10]
+ bl MOD79_02212E00
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02216544: .word 0x02217128
+ arm_func_end MOD79_02216478
+
+ arm_func_start MOD79_02216548
+MOD79_02216548: ; 0x02216548
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #4
+ movs r7, r0
+ bne _0221656C
+ ldr r0, _02216704 ; =0x02216FB8
+ ldr r1, _02216708 ; =0x02216FC4
+ mov r2, #0
+ mov r3, #0x25
+ bl __msl_assertion_failed
+_0221656C:
+ cmp r7, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ ldr r0, [r7, #0x14]
+ cmp r0, #0
+ bne _0221659C
+ ldr r0, _0221670C ; =0x022170FC
+ ldr r1, _02216708 ; =0x02216FC4
+ mov r2, #0
+ mov r3, #0x2b
+ bl __msl_assertion_failed
+_0221659C:
+ ldr r6, [r7, #0x14]
+ cmp r6, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ ldr r1, _02216710 ; =0x0221710C
+ mov r0, r6
+ mov r2, #7
+ bl strncmp
+ cmp r0, #0
+ addeq r6, r6, #7
+ moveq r4, #0
+ beq _022165FC
+ ldr r1, _02216714 ; =0x022170F0
+ mov r0, r6
+ mov r2, #8
+ bl strncmp
+ cmp r0, #0
+ addeq r6, r6, #8
+ moveq r4, #1
+ beq _022165FC
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_022165FC:
+ ldr r1, _02216718 ; =0x02217114
+ mov r0, r6
+ bl strspn
+ mov r8, r0
+ ldrsb r5, [r6, r8]
+ mov r1, #0
+ mov r0, r6
+ strb r1, [r6, r8]
+ add sb, r6, r8
+ bl MOD04_021F0208
+ str r0, [r7, #0x18]
+ ldr r0, [r7, #0x18]
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ strb r5, [sb]
+ ldrsb r0, [r6, r8]!
+ cmp r0, #0x3a
+ bne _02216688
+ add r6, r6, #1
+ mov r0, r6
+ bl atol
+ strh r0, [r7, #0x20]
+ ldrh r0, [r7, #0x20]
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_02216670:
+ ldrsb r0, [r6, #1]!
+ cmp r0, #0
+ beq _0221669C
+ cmp r0, #0x2f
+ bne _02216670
+ b _0221669C
+_02216688:
+ cmp r4, #0
+ ldrne r0, _0221671C ; =0x000001BB
+ strneh r0, [r7, #0x20]
+ moveq r0, #0x50
+ streqh r0, [r7, #0x20]
+_0221669C:
+ ldrsb r0, [r6]
+ cmp r0, #0
+ ldreq r6, _02216720 ; =0x02217118
+ mov r0, r6
+ bl MOD04_021F0208
+ str r0, [r7, #0x24]
+ ldr r6, [r7, #0x24]
+ mov r1, #0x20
+ mov r0, r6
+ bl strchr
+ cmp r0, #0
+ beq _022166F0
+ mov r5, #0x2b
+ mov r4, #0x20
+_022166D4:
+ strb r5, [r0]
+ ldr r6, [r7, #0x24]
+ mov r1, r4
+ mov r0, r6
+ bl strchr
+ cmp r0, #0
+ bne _022166D4
+_022166F0:
+ cmp r6, #0
+ movne r0, #1
+ moveq r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ .align 2, 0
+_02216704: .word 0x02216FB8
+_02216708: .word 0x02216FC4
+_0221670C: .word 0x022170FC
+_02216710: .word 0x0221710C
+_02216714: .word 0x022170F0
+_02216718: .word 0x02217114
+_0221671C: .word 0x000001BB
+_02216720: .word 0x02217118
+ arm_func_end MOD79_02216548
+ ; 0x02216724
+
+ .section .rodata
+ ; 0x02216738
+ .incbin "baserom.nds", 0x2DE6D8, 0x10
+
+ .section .data
+ ; 0x0221686C
+ .incbin "baserom.nds", 0x2DE80C, 0x8B4
diff --git a/arm9/modules/79/asm/module_79_thumb.s b/arm9/modules/79/asm/module_79_thumb.s
new file mode 100644
index 00000000..ac0c1188
--- /dev/null
+++ b/arm9/modules/79/asm/module_79_thumb.s
@@ -0,0 +1,851 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD79_02211E60
+MOD79_02211E60: ; 0x02211E60
+ lsl r1, r0, #0x10
+ orr r1, r0
+ ldr r0, _02211E6C ; =0x02217120
+ str r1, [r0]
+ bx lr
+ nop
+_02211E6C: .word 0x02217120
+ thumb_func_end MOD79_02211E60
+
+ thumb_func_start MOD79_02211E70
+MOD79_02211E70: ; 0x02211E70
+ ldr r1, _02211E8C ; =0x02217120
+ mov r0, #0x45
+ ldr r2, [r1]
+ add r3, r2, #0
+ mul r3, r0
+ ldr r0, _02211E90 ; =0x00001111
+ add r2, r3, r0
+ ldr r0, _02211E94 ; =0x7FFFFFFF
+ and r0, r2
+ str r0, [r1]
+ asr r0, r0, #0x10
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+ .align 2, 0
+_02211E8C: .word 0x02217120
+_02211E90: .word 0x00001111
+_02211E94: .word 0x7FFFFFFF
+ thumb_func_end MOD79_02211E70
+
+ thumb_func_start MOD79_02211E98
+MOD79_02211E98: ; 0x02211E98
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ mov r0, #0
+ add r5, r2, #0
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ str r0, [sp, #0x10]
+ add r0, #8
+ add r7, r1, #0
+ str r3, [sp]
+ str r0, [sp, #0x10]
+ bl MOD79_02211FA4
+ ldr r1, [sp, #0x30]
+ add r0, r0, #1
+ cmp r1, r0
+ bge _02211EC2
+ add sp, #0x18
+ mov r0, #2
+ pop {r3, r4, r5, r6, r7, pc}
+_02211EC2:
+ ldr r1, [sp, #0x10]
+ mov r0, #0xa
+ bl MOD04_021DD944
+ add r6, r0, #0
+ bne _02211ED4
+ add sp, #0x18
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02211ED4:
+ lsr r0, r4, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ ldr r0, [sp, #0x14]
+ add r0, r0, r1
+ lsr r1, r4, #0x10
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #8]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r0, r1
+ lsr r1, r4, #8
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0xc]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r0, r1
+ lsl r1, r4, #0x18
+ lsr r4, r1, #0x18
+ lsl r1, r4, #0x18
+ lsr r1, r1, #0x18
+ add r0, r0, r1
+ str r0, [sp, #0x14]
+ mov r0, #0
+ cmp r5, #0
+ ble _02211F20
+_02211F12:
+ ldrb r2, [r7, r0]
+ ldr r1, [sp, #0x14]
+ add r0, r0, #1
+ add r1, r1, r2
+ str r1, [sp, #0x14]
+ cmp r0, r5
+ blt _02211F12
+_02211F20:
+ ldr r0, [sp, #0x14]
+ bl MOD79_02211E60
+ bl MOD79_02211E70
+ eor r0, r4
+ strb r0, [r6, #4]
+ bl MOD79_02211E70
+ ldr r1, [sp, #0xc]
+ eor r0, r1
+ strb r0, [r6, #5]
+ bl MOD79_02211E70
+ ldr r1, [sp, #8]
+ eor r0, r1
+ strb r0, [r6, #6]
+ bl MOD79_02211E70
+ ldr r1, [sp, #4]
+ mov r4, #0
+ eor r0, r1
+ strb r0, [r6, #7]
+ cmp r5, #0
+ ble _02211F64
+_02211F52:
+ bl MOD79_02211E70
+ ldrb r1, [r7, r4]
+ eor r1, r0
+ add r0, r6, r4
+ add r4, r4, #1
+ strb r1, [r0, #8]
+ cmp r4, r5
+ blt _02211F52
+_02211F64:
+ ldr r1, _02211FA0 ; =0x4A3B2C1D
+ ldr r0, [sp, #0x14]
+ add r5, #8
+ eor r1, r0
+ lsr r0, r1, #0x18
+ strb r0, [r6]
+ lsr r0, r1, #0x10
+ strb r0, [r6, #1]
+ lsr r0, r1, #8
+ strb r0, [r6, #2]
+ strb r1, [r6, #3]
+ ldr r1, [sp]
+ add r0, r6, #0
+ add r2, r5, #0
+ mov r3, #2
+ bl MOD04_021EF820
+ ldr r0, [sp, #0x10]
+ bl MOD79_02211FA4
+ ldr r1, [sp]
+ mov r2, #0
+ strb r2, [r1, r0]
+ mov r0, #0xa
+ add r1, r6, #0
+ bl MOD04_021DD904
+ mov r0, #0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02211FA0: .word 0x4A3B2C1D
+ thumb_func_end MOD79_02211E98
+
+ thumb_func_start MOD79_02211FA4
+MOD79_02211FA4: ; 0x02211FA4
+ push {r3, r4, r5, lr}
+ mov r1, #3
+ add r5, r0, #0
+ bl _u32_div_f
+ cmp r1, #0
+ beq _02211FB6
+ mov r4, #1
+ b _02211FB8
+_02211FB6:
+ mov r4, #0
+_02211FB8:
+ add r0, r5, #0
+ mov r1, #3
+ bl _u32_div_f
+ add r0, r0, r4
+ lsl r0, r0, #2
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD79_02211FA4
+
+ thumb_func_start MOD79_02211FC8
+MOD79_02211FC8: ; 0x02211FC8
+ add r0, #8
+ cmp r0, #7
+ bhi _02212022
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02211FDA: ; jump table
+ .short _02211FEA - _02211FDA - 2 ; case 0
+ .short _02212022 - _02211FDA - 2 ; case 1
+ .short _02211FF2 - _02211FDA - 2 ; case 2
+ .short _02211FFA - _02211FDA - 2 ; case 3
+ .short _02212002 - _02211FDA - 2 ; case 4
+ .short _0221200A - _02211FDA - 2 ; case 5
+ .short _02212012 - _02211FDA - 2 ; case 6
+ .short _0221201A - _02211FDA - 2 ; case 7
+_02211FEA:
+ ldr r0, _0221202C ; =0x02216760
+ mov r1, #0
+ str r1, [r0, #8]
+ bx lr
+_02211FF2:
+ ldr r0, _0221202C ; =0x02216760
+ mov r1, #1
+ str r1, [r0, #8]
+ bx lr
+_02211FFA:
+ ldr r0, _0221202C ; =0x02216760
+ mov r1, #2
+ str r1, [r0, #8]
+ bx lr
+_02212002:
+ ldr r0, _0221202C ; =0x02216760
+ mov r1, #3
+ str r1, [r0, #8]
+ bx lr
+_0221200A:
+ ldr r0, _0221202C ; =0x02216760
+ mov r1, #4
+ str r1, [r0, #8]
+ bx lr
+_02212012:
+ ldr r0, _0221202C ; =0x02216760
+ mov r1, #5
+ str r1, [r0, #8]
+ bx lr
+_0221201A:
+ ldr r0, _0221202C ; =0x02216760
+ mov r1, #6
+ str r1, [r0, #8]
+ bx lr
+_02212022:
+ ldr r0, _0221202C ; =0x02216760
+ mov r1, #0
+ str r1, [r0, #8]
+ bx lr
+ nop
+_0221202C: .word 0x02216760
+ thumb_func_end MOD79_02211FC8
+
+ thumb_func_start MOD79_02212030
+MOD79_02212030: ; 0x02212030
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x4c
+ add r4, r1, #0
+ mov r3, #0
+ ldr r1, _022122B8 ; =0x02216760
+ mvn r3, r3
+ str r3, [r1, #4]
+ ldr r3, [r1]
+ add r6, r0, #0
+ cmp r3, #1
+ bne _02212048
+ b _022122B2
+_02212048:
+ cmp r2, #0
+ beq _0221204E
+ b _02212202
+_0221204E:
+ cmp r3, #4
+ beq _0221205A
+ cmp r3, #6
+ beq _02212126
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_0221205A:
+ cmp r4, #0x20
+ bne _0221211E
+ ldr r5, [r1, #0x28]
+ ldr r3, _022122BC ; =0x02216724
+ add r5, #0x14
+ add r2, sp, #4
+ mov r1, #0x11
+_02212068:
+ ldrb r0, [r3]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _02212068
+ add r3, sp, #0x14
+ ldr r2, _022122C0 ; =0x02216794
+ add r3, #1
+ mov r1, #0x15
+_0221207C:
+ ldrb r0, [r2]
+ add r2, r2, #1
+ strb r0, [r3]
+ add r3, r3, #1
+ sub r1, r1, #1
+ bne _0221207C
+ add r0, sp, #0x14
+ add r0, #1
+ add r1, r6, #0
+ add r2, r4, #0
+ bl strncat
+ add r0, sp, #0x14
+ add r0, #1
+ bl strlen
+ add r1, sp, #0x14
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, #1
+ bl MATH_CalcSHA1
+ ldr r0, _022122B8 ; =0x02216760
+ ldr r1, _022122C4 ; =0x022167AC
+ ldr r0, [r0, #0x24]
+ bl strcat
+ mov r2, #0
+ ldr r4, _022122B8 ; =0x02216760
+ add r3, r2, #0
+ add r1, sp, #4
+ mov r7, #0xf
+_022120BC:
+ ldrb r0, [r5, r2]
+ asr r0, r0, #4
+ ldrsb r6, [r1, r0]
+ ldr r0, [r4, #0x28]
+ strb r6, [r0, r3]
+ ldrb r0, [r5, r2]
+ ldr r6, [r4, #0x28]
+ add r2, r2, #1
+ and r0, r7
+ ldrsb r0, [r1, r0]
+ add r6, r6, r3
+ add r3, r3, #2
+ strb r0, [r6, #1]
+ cmp r2, #0x14
+ blt _022120BC
+ ldr r0, _022122B8 ; =0x02216760
+ mov r2, #0
+ ldr r1, [r0, #0x28]
+ add r1, #0x28
+ strb r2, [r1]
+ ldr r0, [r0, #0x24]
+ ldr r1, _022122C8 ; =0x022167B4
+ bl strcat
+ ldr r3, _022122B8 ; =0x02216760
+ ldr r0, [r3, #0x30]
+ str r0, [sp]
+ ldr r0, [r3, #0x10]
+ ldr r1, [r3, #0x14]
+ ldr r2, [r3, #0x18]
+ ldr r3, [r3, #0x2c]
+ bl MOD79_02211E98
+ cmp r0, #0
+ beq _02212114
+ cmp r0, #1
+ beq _0221210A
+ cmp r0, #2
+ bne _02212114
+_0221210A:
+ ldr r0, _022122B8 ; =0x02216760
+ mov r1, #1
+ str r1, [r0]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_02212114:
+ ldr r0, _022122B8 ; =0x02216760
+ mov r1, #5
+ str r1, [r0]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_0221211E:
+ mov r0, #1
+ str r0, [r1]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_02212126:
+ cmp r4, #0x16
+ bne _022121D0
+ ldr r1, _022122CC ; =0x022167BC
+ mov r2, #0x16
+ bl strncmp
+ cmp r0, #0
+ bne _02212144
+ ldr r0, _022122B8 ; =0x02216760
+ mov r1, #1
+ str r1, [r0]
+ mov r1, #0x1a
+ str r1, [r0, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_02212144:
+ ldr r1, _022122D0 ; =0x022167D4
+ add r0, r6, #0
+ mov r2, #0x16
+ bl strncmp
+ cmp r0, #0
+ bne _02212160
+ ldr r0, _022122B8 ; =0x02216760
+ mov r1, #1
+ str r1, [r0]
+ mov r1, #0x1b
+ str r1, [r0, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_02212160:
+ ldr r1, _022122D4 ; =0x022167EC
+ add r0, r6, #0
+ mov r2, #0x16
+ bl strncmp
+ cmp r0, #0
+ bne _0221217C
+ ldr r0, _022122B8 ; =0x02216760
+ mov r1, #1
+ str r1, [r0]
+ mov r1, #0x1c
+ str r1, [r0, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_0221217C:
+ ldr r1, _022122D8 ; =0x02216804
+ add r0, r6, #0
+ mov r2, #0x16
+ bl strncmp
+ cmp r0, #0
+ bne _02212198
+ ldr r0, _022122B8 ; =0x02216760
+ mov r1, #1
+ str r1, [r0]
+ mov r1, #0x1d
+ str r1, [r0, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_02212198:
+ ldr r1, _022122DC ; =0x0221681C
+ add r0, r6, #0
+ mov r2, #0x16
+ bl strncmp
+ cmp r0, #0
+ bne _022121B4
+ ldr r0, _022122B8 ; =0x02216760
+ mov r1, #1
+ str r1, [r0]
+ mov r1, #0x1e
+ str r1, [r0, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_022121B4:
+ ldr r1, _022122E0 ; =0x02216834
+ add r0, r6, #0
+ mov r2, #0x16
+ bl strncmp
+ cmp r0, #0
+ bne _022121D0
+ ldr r0, _022122B8 ; =0x02216760
+ mov r1, #1
+ str r1, [r0]
+ mov r1, #0x1f
+ str r1, [r0, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_022121D0:
+ ldr r0, _022122B8 ; =0x02216760
+ ldr r2, [r0, #0x20]
+ cmp r4, r2
+ ldr r0, [r0, #0x1c]
+ bgt _022121EA
+ add r1, r6, #0
+ add r2, r4, #0
+ bl memcpy
+ ldr r0, _022122B8 ; =0x02216760
+ mov r1, #7
+ str r1, [r0]
+ b _022121FA
+_022121EA:
+ add r1, r6, #0
+ bl memcpy
+ ldr r0, _022122B8 ; =0x02216760
+ mov r1, #1
+ str r1, [r0]
+ mov r1, #0x20
+ str r1, [r0, #8]
+_022121FA:
+ ldr r0, _022122B8 ; =0x02216760
+ add sp, #0x4c
+ str r4, [r0, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_02212202:
+ mov r0, #1
+ str r0, [r1]
+ cmp r2, #0x13
+ bhi _022122B2
+ add r0, r2, r2
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02212216: ; jump table
+ .short _022122B2 - _02212216 - 2 ; case 0
+ .short _0221223E - _02212216 - 2 ; case 1
+ .short _02212246 - _02212216 - 2 ; case 2
+ .short _0221224E - _02212216 - 2 ; case 3
+ .short _02212256 - _02212216 - 2 ; case 4
+ .short _0221225E - _02212216 - 2 ; case 5
+ .short _02212266 - _02212216 - 2 ; case 6
+ .short _0221226E - _02212216 - 2 ; case 7
+ .short _02212276 - _02212216 - 2 ; case 8
+ .short _0221227E - _02212216 - 2 ; case 9
+ .short _02212286 - _02212216 - 2 ; case 10
+ .short _0221228E - _02212216 - 2 ; case 11
+ .short _02212296 - _02212216 - 2 ; case 12
+ .short _022122B2 - _02212216 - 2 ; case 13
+ .short _022122B2 - _02212216 - 2 ; case 14
+ .short _0221229E - _02212216 - 2 ; case 15
+ .short _022122A6 - _02212216 - 2 ; case 16
+ .short _022122B2 - _02212216 - 2 ; case 17
+ .short _022122B2 - _02212216 - 2 ; case 18
+ .short _022122AE - _02212216 - 2 ; case 19
+_0221223E:
+ mov r0, #8
+ str r0, [r1, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_02212246:
+ mov r0, #9
+ str r0, [r1, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_0221224E:
+ mov r0, #0xa
+ str r0, [r1, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_02212256:
+ mov r0, #0xb
+ str r0, [r1, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_0221225E:
+ mov r0, #0xc
+ str r0, [r1, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_02212266:
+ mov r0, #0xd
+ str r0, [r1, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_0221226E:
+ mov r0, #0xe
+ str r0, [r1, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_02212276:
+ mov r0, #0xf
+ str r0, [r1, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_0221227E:
+ mov r0, #0x10
+ str r0, [r1, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_02212286:
+ mov r0, #0x11
+ str r0, [r1, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_0221228E:
+ mov r0, #0x12
+ str r0, [r1, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_02212296:
+ mov r0, #0x13
+ str r0, [r1, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_0221229E:
+ mov r0, #0x16
+ str r0, [r1, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_022122A6:
+ mov r0, #0x17
+ str r0, [r1, #8]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_022122AE:
+ mov r0, #0x19
+ str r0, [r1, #8]
+_022122B2:
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_022122B8: .word 0x02216760
+_022122BC: .word 0x02216724
+_022122C0: .word 0x02216794
+_022122C4: .word 0x022167AC
+_022122C8: .word 0x022167B4
+_022122CC: .word 0x022167BC
+_022122D0: .word 0x022167D4
+_022122D4: .word 0x022167EC
+_022122D8: .word 0x02216804
+_022122DC: .word 0x0221681C
+_022122E0: .word 0x02216834
+ thumb_func_end MOD79_02212030
+
+ thumb_func_start MOD79_022122E4
+MOD79_022122E4: ; 0x022122E4
+ push {r3, lr}
+ ldr r0, _02212304 ; =0x02216760
+ mov r1, #2
+ str r1, [r0]
+ sub r1, r1, #3
+ str r1, [r0, #4]
+ mov r0, #0
+ bl MOD04_021EB59C
+ cmp r0, #0
+ bne _02212300
+ ldr r0, _02212304 ; =0x02216760
+ mov r1, #1
+ str r1, [r0]
+_02212300:
+ pop {r3, pc}
+ nop
+_02212304: .word 0x02216760
+ thumb_func_end MOD79_022122E4
+
+ thumb_func_start MOD79_02212308
+MOD79_02212308: ; 0x02212308
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ ldr r1, _02212398 ; =0x02216760
+ add r4, r3, #0
+ ldr r3, [r1]
+ add r7, r0, #0
+ cmp r3, #2
+ beq _0221231C
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0221231C:
+ str r5, [r1, #0x10]
+ str r2, [r1, #0x14]
+ str r4, [r1, #0x18]
+ ldr r2, [sp, #0x18]
+ add r4, #8
+ str r2, [r1, #0x1c]
+ ldr r2, [sp, #0x1c]
+ str r2, [r1, #0x20]
+ bl strlen
+ add r6, r0, #0
+ add r0, r4, #0
+ bl MOD79_02211FA4
+ add r1, r0, #0
+ add r6, #0x45
+ mov r0, #0xa
+ add r1, r6, r1
+ bl MOD04_021DD944
+ ldr r1, _02212398 ; =0x02216760
+ cmp r0, #0
+ str r0, [r1, #0x24]
+ bne _02212350
+ mov r0, #2
+ pop {r3, r4, r5, r6, r7, pc}
+_02212350:
+ ldr r1, _0221239C ; =0x0221684C
+ add r2, r7, #0
+ add r3, r5, #0
+ bl sprintf
+ ldr r0, _02212398 ; =0x02216760
+ ldr r5, [r0, #0x24]
+ add r0, r5, #0
+ bl strlen
+ add r6, r0, #0
+ ldr r0, _022123A0 ; =0x022167AC
+ bl strlen
+ add r1, r5, r6
+ add r1, r1, r0
+ ldr r0, _02212398 ; =0x02216760
+ str r1, [r0, #0x28]
+ ldr r0, _022123A4 ; =0x022167B4
+ bl strlen
+ ldr r1, _02212398 ; =0x02216760
+ ldr r2, [r1, #0x28]
+ add r2, #0x28
+ add r0, r2, r0
+ str r0, [r1, #0x2c]
+ add r0, r4, #0
+ bl MOD79_02211FA4
+ add r1, r0, #1
+ ldr r0, _02212398 ; =0x02216760
+ str r1, [r0, #0x30]
+ mov r1, #3
+ str r1, [r0]
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02212398: .word 0x02216760
+_0221239C: .word 0x0221684C
+_022123A0: .word 0x022167AC
+_022123A4: .word 0x022167B4
+ thumb_func_end MOD79_02212308
+
+ thumb_func_start MOD79_022123A8
+MOD79_022123A8: ; 0x022123A8
+ push {r3, lr}
+ ldr r1, _02212440 ; =0x02216760
+ ldr r0, [r1]
+ cmp r0, #7
+ bhi _02212438
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022123BE: ; jump table
+ .short _02212438 - _022123BE - 2 ; case 0
+ .short _02212438 - _022123BE - 2 ; case 1
+ .short _02212438 - _022123BE - 2 ; case 2
+ .short _022123CE - _022123BE - 2 ; case 3
+ .short _022123F4 - _022123BE - 2 ; case 4
+ .short _02212404 - _022123BE - 2 ; case 5
+ .short _0221242A - _022123BE - 2 ; case 6
+ .short _02212438 - _022123BE - 2 ; case 7
+_022123CE:
+ ldr r0, [r1, #0x24]
+ ldr r1, _02212444 ; =MOD79_02212030
+ ldr r2, _02212448 ; =0x02216760
+ bl MOD04_021EB3B8
+ ldr r1, _02212440 ; =0x02216760
+ str r0, [r1, #4]
+ bl MOD79_02211FC8
+ ldr r0, _02212440 ; =0x02216760
+ ldr r1, [r0, #4]
+ cmp r1, #0
+ blt _022123EE
+ mov r1, #4
+ str r1, [r0]
+ b _02212438
+_022123EE:
+ mov r1, #1
+ str r1, [r0]
+ b _02212438
+_022123F4:
+ bl MOD04_021EB524
+ cmp r0, #0
+ bne _02212438
+ ldr r0, _02212440 ; =0x02216760
+ mov r1, #1
+ str r1, [r0]
+ b _02212438
+_02212404:
+ ldr r0, [r1, #0x24]
+ ldr r1, _02212444 ; =MOD79_02212030
+ ldr r2, _02212448 ; =0x02216760
+ bl MOD04_021EB3B8
+ ldr r1, _02212440 ; =0x02216760
+ str r0, [r1, #4]
+ bl MOD79_02211FC8
+ ldr r0, _02212440 ; =0x02216760
+ ldr r1, [r0, #4]
+ cmp r1, #0
+ blt _02212424
+ mov r1, #6
+ str r1, [r0]
+ b _02212438
+_02212424:
+ mov r1, #1
+ str r1, [r0]
+ b _02212438
+_0221242A:
+ bl MOD04_021EB524
+ cmp r0, #0
+ bne _02212438
+ ldr r0, _02212440 ; =0x02216760
+ mov r1, #1
+ str r1, [r0]
+_02212438:
+ ldr r0, _02212440 ; =0x02216760
+ ldr r0, [r0]
+ pop {r3, pc}
+ nop
+_02212440: .word 0x02216760
+_02212444: .word MOD79_02212030
+_02212448: .word 0x02216760
+ thumb_func_end MOD79_022123A8
+
+ thumb_func_start MOD79_0221244C
+MOD79_0221244C: ; 0x0221244C
+ push {r3, lr}
+ ldr r0, _02212470 ; =0x02216760
+ ldr r1, [r0, #0x24]
+ cmp r1, #0
+ beq _02212464
+ mov r0, #0xa
+ mov r2, #0
+ bl MOD04_021DD904
+ ldr r0, _02212470 ; =0x02216760
+ mov r1, #0
+ str r1, [r0, #0x24]
+_02212464:
+ blx FUN_021EB550
+ ldr r0, _02212470 ; =0x02216760
+ mov r1, #1
+ str r1, [r0]
+ pop {r3, pc}
+ .align 2, 0
+_02212470: .word 0x02216760
+ thumb_func_end MOD79_0221244C
+
+ thumb_func_start MOD79_02212474
+MOD79_02212474: ; 0x02212474
+ ldr r0, _0221247C ; =0x02216760
+ ldr r0, [r0, #8]
+ bx lr
+ nop
+_0221247C: .word 0x02216760
+ thumb_func_end MOD79_02212474
+
+ thumb_func_start MOD79_02212480
+MOD79_02212480: ; 0x02212480
+ ldr r0, _02212488 ; =0x02216760
+ ldr r0, [r0, #0xc]
+ bx lr
+ nop
+_02212488: .word 0x02216760
+ thumb_func_end MOD79_02212480
+
+ .section .rodata
+ ; 0x02216724
+ .incbin "baserom.nds", 0x2DE6C4, 0x14
+
+ .section .data
+ ; 0x02216760
+ .incbin "baserom.nds", 0x2DE700, 0x10C
+
+ .section .bss
+ ; 0x2217120
+ .space 0x40
diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s
new file mode 100644
index 00000000..555f3678
--- /dev/null
+++ b/arm9/modules/80/asm/module_80.s
@@ -0,0 +1,19283 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD80_0222D5C0
+MOD80_0222D5C0: ; 0x0222D5C0
+ push {r3, r4}
+ ldr r3, _0222D5D8 ; =0x02237CE0
+ mov r4, #1
+ str r4, [r3]
+ mov r4, #0
+ str r4, [r3, #4]
+ str r0, [r3, #8]
+ str r1, [r3, #0xc]
+ str r2, [r3, #0x10]
+ pop {r3, r4}
+ bx lr
+ nop
+_0222D5D8: .word 0x02237CE0
+ thumb_func_end MOD80_0222D5C0
+
+ thumb_func_start MOD80_0222D5DC
+MOD80_0222D5DC: ; 0x0222D5DC
+ push {r3, lr}
+ ldr r1, _0222D8D4 ; =0x02237CE0
+ ldr r0, [r1]
+ cmp r0, #0x16
+ bls _0222D5E8
+ b _0222DB8A
+_0222D5E8:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222D5F4: ; jump table
+ .short _0222DB8A - _0222D5F4 - 2 ; case 0
+ .short _0222DB8A - _0222D5F4 - 2 ; case 1
+ .short _0222D622 - _0222D5F4 - 2 ; case 2
+ .short _0222DB7E - _0222D5F4 - 2 ; case 3
+ .short _0222D6D0 - _0222D5F4 - 2 ; case 4
+ .short _0222DB7E - _0222D5F4 - 2 ; case 5
+ .short _0222D756 - _0222D5F4 - 2 ; case 6
+ .short _0222DB7E - _0222D5F4 - 2 ; case 7
+ .short _0222D7D6 - _0222D5F4 - 2 ; case 8
+ .short _0222DB7E - _0222D5F4 - 2 ; case 9
+ .short _0222D86A - _0222D5F4 - 2 ; case 10
+ .short _0222DB7E - _0222D5F4 - 2 ; case 11
+ .short _0222D8EA - _0222D5F4 - 2 ; case 12
+ .short _0222DB7E - _0222D5F4 - 2 ; case 13
+ .short _0222D970 - _0222D5F4 - 2 ; case 14
+ .short _0222DB7E - _0222D5F4 - 2 ; case 15
+ .short _0222D9E8 - _0222D5F4 - 2 ; case 16
+ .short _0222DB7E - _0222D5F4 - 2 ; case 17
+ .short _0222DABA - _0222D5F4 - 2 ; case 18
+ .short _0222DB7E - _0222D5F4 - 2 ; case 19
+ .short _0222DB0E - _0222D5F4 - 2 ; case 20
+ .short _0222DB7E - _0222D5F4 - 2 ; case 21
+ .short _0222DB8A - _0222D5F4 - 2 ; case 22
+_0222D622:
+ bl MOD79_022123A8
+ cmp r0, #1
+ beq _0222D630
+ cmp r0, #7
+ beq _0222D648
+ pop {r3, pc}
+_0222D630:
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ bl MOD79_02212474
+ bl MOD80_0222DF38
+ ldr r1, _0222D8D4 ; =0x02237CE0
+ str r0, [r1, #4]
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222D648:
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mov r1, #0x16
+ ldr r2, _0222D8D8 ; =0x02237E00
+ str r1, [r0]
+ ldrb r2, [r2, #0x1c]
+ cmp r2, #0xe
+ bhi _0222D6C2
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0222D662: ; jump table
+ .short _0222D6C2 - _0222D662 - 2 ; case 0
+ .short _0222D680 - _0222D662 - 2 ; case 1
+ .short _0222D686 - _0222D662 - 2 ; case 2
+ .short _0222D68C - _0222D662 - 2 ; case 3
+ .short _0222D6C2 - _0222D662 - 2 ; case 4
+ .short _0222D6C2 - _0222D662 - 2 ; case 5
+ .short _0222D6C2 - _0222D662 - 2 ; case 6
+ .short _0222D692 - _0222D662 - 2 ; case 7
+ .short _0222D6A4 - _0222D662 - 2 ; case 8
+ .short _0222D6AA - _0222D662 - 2 ; case 9
+ .short _0222D6B0 - _0222D662 - 2 ; case 10
+ .short _0222D6B6 - _0222D662 - 2 ; case 11
+ .short _0222D698 - _0222D662 - 2 ; case 12
+ .short _0222D69E - _0222D662 - 2 ; case 13
+ .short _0222D6BC - _0222D662 - 2 ; case 14
+_0222D680:
+ mov r1, #0
+ str r1, [r0, #4]
+ b _0222D6CA
+_0222D686:
+ sub r1, #0x1b
+ str r1, [r0, #4]
+ b _0222D6CA
+_0222D68C:
+ sub r1, #0x1a
+ str r1, [r0, #4]
+ b _0222D6CA
+_0222D692:
+ sub r1, #0x17
+ str r1, [r0, #4]
+ b _0222D6CA
+_0222D698:
+ sub r1, #0x1c
+ str r1, [r0, #4]
+ b _0222D6CA
+_0222D69E:
+ sub r1, #0x1d
+ str r1, [r0, #4]
+ b _0222D6CA
+_0222D6A4:
+ sub r1, #0x1e
+ str r1, [r0, #4]
+ b _0222D6CA
+_0222D6AA:
+ sub r1, #0x1f
+ str r1, [r0, #4]
+ b _0222D6CA
+_0222D6B0:
+ sub r1, #0x20
+ str r1, [r0, #4]
+ b _0222D6CA
+_0222D6B6:
+ sub r1, #0x21
+ str r1, [r0, #4]
+ b _0222D6CA
+_0222D6BC:
+ sub r1, #0x18
+ str r1, [r0, #4]
+ b _0222D6CA
+_0222D6C2:
+ mov r1, #0xc
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+_0222D6CA:
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222D6D0:
+ bl MOD79_022123A8
+ cmp r0, #1
+ beq _0222D6DE
+ cmp r0, #7
+ beq _0222D6F6
+ pop {r3, pc}
+_0222D6DE:
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ bl MOD79_02212474
+ bl MOD80_0222DF38
+ ldr r1, _0222D8D4 ; =0x02237CE0
+ str r0, [r1, #4]
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222D6F6:
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mov r2, #0x16
+ ldr r1, _0222D8D8 ; =0x02237E00
+ str r2, [r0]
+ ldrb r1, [r1, #0x1c]
+ cmp r1, #5
+ bgt _0222D720
+ cmp r1, #0
+ blt _0222D748
+ add r3, r1, r1
+ add r3, pc
+ ldrh r3, [r3, #6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_0222D714: ; jump table
+ .short _0222D748 - _0222D714 - 2 ; case 0
+ .short _0222D726 - _0222D714 - 2 ; case 1
+ .short _0222D72C - _0222D714 - 2 ; case 2
+ .short _0222D732 - _0222D714 - 2 ; case 3
+ .short _0222D748 - _0222D714 - 2 ; case 4
+ .short _0222D738 - _0222D714 - 2 ; case 5
+_0222D720:
+ cmp r1, #0xe
+ beq _0222D73E
+ b _0222D748
+_0222D726:
+ mov r1, #0
+ str r1, [r0, #4]
+ b _0222D750
+_0222D72C:
+ sub r2, #0x1b
+ str r2, [r0, #4]
+ b _0222D750
+_0222D732:
+ sub r2, #0x1a
+ str r2, [r0, #4]
+ b _0222D750
+_0222D738:
+ sub r2, #0x19
+ str r2, [r0, #4]
+ b _0222D750
+_0222D73E:
+ mov r1, #1
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+ b _0222D750
+_0222D748:
+ mov r1, #0xc
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+_0222D750:
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222D756:
+ bl MOD79_022123A8
+ cmp r0, #1
+ beq _0222D764
+ cmp r0, #7
+ beq _0222D77C
+ pop {r3, pc}
+_0222D764:
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ bl MOD79_02212474
+ bl MOD80_0222DF38
+ ldr r1, _0222D8D4 ; =0x02237CE0
+ str r0, [r1, #4]
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222D77C:
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ bl MOD79_02212480
+ mov r1, #0x49
+ lsl r1, r1, #2
+ cmp r0, r1
+ bne _0222D796
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mov r1, #0
+ str r1, [r0, #4]
+ b _0222D7D0
+_0222D796:
+ ldr r0, _0222D8DC ; =0x02237DE0
+ ldr r0, [r0, #0x40]
+ ldrb r0, [r0]
+ cmp r0, #3
+ beq _0222D7B4
+ cmp r0, #5
+ beq _0222D7AA
+ cmp r0, #0xe
+ beq _0222D7BE
+ b _0222D7C8
+_0222D7AA:
+ mov r1, #2
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+ b _0222D7D0
+_0222D7B4:
+ mov r1, #3
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+ b _0222D7D0
+_0222D7BE:
+ mov r1, #1
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+ b _0222D7D0
+_0222D7C8:
+ mov r1, #0xc
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+_0222D7D0:
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222D7D6:
+ bl MOD79_022123A8
+ cmp r0, #1
+ beq _0222D7E4
+ cmp r0, #7
+ beq _0222D7FC
+ pop {r3, pc}
+_0222D7E4:
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ bl MOD79_02212474
+ bl MOD80_0222DF38
+ ldr r1, _0222D8D4 ; =0x02237CE0
+ str r0, [r1, #4]
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222D7FC:
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ bl MOD79_02212480
+ mov r1, #0x49
+ lsl r1, r1, #2
+ cmp r0, r1
+ bne _0222D816
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mov r1, #1
+ str r1, [r0, #4]
+ b _0222D864
+_0222D816:
+ ldr r0, _0222D8DC ; =0x02237DE0
+ ldr r0, [r0, #0x40]
+ ldrb r0, [r0]
+ cmp r0, #5
+ bgt _0222D830
+ cmp r0, #3
+ blt _0222D85C
+ beq _0222D840
+ cmp r0, #4
+ beq _0222D84A
+ cmp r0, #5
+ beq _0222D836
+ b _0222D85C
+_0222D830:
+ cmp r0, #0xe
+ beq _0222D852
+ b _0222D85C
+_0222D836:
+ mov r1, #2
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+ b _0222D864
+_0222D840:
+ mov r1, #3
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+ b _0222D864
+_0222D84A:
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mov r1, #0
+ str r1, [r0, #4]
+ b _0222D864
+_0222D852:
+ mov r1, #1
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+ b _0222D864
+_0222D85C:
+ mov r1, #0xc
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+_0222D864:
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222D86A:
+ bl MOD79_022123A8
+ cmp r0, #1
+ beq _0222D878
+ cmp r0, #7
+ beq _0222D890
+ pop {r3, pc}
+_0222D878:
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ bl MOD79_02212474
+ bl MOD80_0222DF38
+ ldr r1, _0222D8D4 ; =0x02237CE0
+ str r0, [r1, #4]
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222D890:
+ ldr r1, _0222D8D4 ; =0x02237CE0
+ mov r2, #0x16
+ ldr r0, _0222D8D8 ; =0x02237E00
+ str r2, [r1]
+ ldrb r0, [r0, #0x1c]
+ cmp r0, #5
+ bgt _0222D8AE
+ cmp r0, #1
+ blt _0222D8CC
+ beq _0222D8B4
+ cmp r0, #3
+ beq _0222D8C0
+ cmp r0, #5
+ beq _0222D8BA
+ b _0222D8CC
+_0222D8AE:
+ cmp r0, #0xe
+ beq _0222D8C6
+ b _0222D8CC
+_0222D8B4:
+ mov r0, #0
+ str r0, [r1, #4]
+ b _0222D8E4
+_0222D8BA:
+ sub r2, #0x19
+ str r2, [r1, #4]
+ b _0222D8E4
+_0222D8C0:
+ sub r2, #0x1a
+ str r2, [r1, #4]
+ b _0222D8E4
+_0222D8C6:
+ sub r2, #0x18
+ str r2, [r1, #4]
+ b _0222D8E4
+_0222D8CC:
+ mov r1, #0xc
+ ldr r0, _0222D8D4 ; =0x02237CE0
+ b _0222D8E0
+ nop
+_0222D8D4: .word 0x02237CE0
+_0222D8D8: .word 0x02237E00
+_0222D8DC: .word 0x02237DE0
+_0222D8E0:
+ mvn r1, r1
+ str r1, [r0, #4]
+_0222D8E4:
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222D8EA:
+ bl MOD79_022123A8
+ cmp r0, #1
+ beq _0222D8F8
+ cmp r0, #7
+ beq _0222D910
+ pop {r3, pc}
+_0222D8F8:
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ bl MOD79_02212474
+ bl MOD80_0222DF38
+ ldr r1, _0222DB8C ; =0x02237CE0
+ str r0, [r1, #4]
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222D910:
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mov r2, #0x16
+ ldr r1, _0222DB90 ; =0x02237E00
+ str r2, [r0]
+ ldrb r1, [r1, #0x1c]
+ cmp r1, #5
+ bgt _0222D93A
+ cmp r1, #0
+ blt _0222D962
+ add r3, r1, r1
+ add r3, pc
+ ldrh r3, [r3, #6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_0222D92E: ; jump table
+ .short _0222D962 - _0222D92E - 2 ; case 0
+ .short _0222D940 - _0222D92E - 2 ; case 1
+ .short _0222D94C - _0222D92E - 2 ; case 2
+ .short _0222D952 - _0222D92E - 2 ; case 3
+ .short _0222D962 - _0222D92E - 2 ; case 4
+ .short _0222D946 - _0222D92E - 2 ; case 5
+_0222D93A:
+ cmp r1, #0xe
+ beq _0222D958
+ b _0222D962
+_0222D940:
+ mov r1, #0
+ str r1, [r0, #4]
+ b _0222D96A
+_0222D946:
+ sub r2, #0x19
+ str r2, [r0, #4]
+ b _0222D96A
+_0222D94C:
+ sub r2, #0x1b
+ str r2, [r0, #4]
+ b _0222D96A
+_0222D952:
+ sub r2, #0x1a
+ str r2, [r0, #4]
+ b _0222D96A
+_0222D958:
+ mov r1, #1
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+ b _0222D96A
+_0222D962:
+ mov r1, #0xc
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+_0222D96A:
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222D970:
+ bl MOD79_022123A8
+ cmp r0, #1
+ beq _0222D97E
+ cmp r0, #7
+ beq _0222D996
+ pop {r3, pc}
+_0222D97E:
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ bl MOD79_02212474
+ bl MOD80_0222DF38
+ ldr r1, _0222DB8C ; =0x02237CE0
+ str r0, [r1, #4]
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222D996:
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ bl MOD79_02212480
+ mov r1, #0x49
+ lsl r1, r1, #2
+ cmp r0, r1
+ blo _0222D9BA
+ bl MOD79_02212480
+ mov r1, #0x49
+ lsl r1, r1, #2
+ bl _u32_div_f
+ ldr r1, _0222DB8C ; =0x02237CE0
+ str r0, [r1, #4]
+ b _0222D9E2
+_0222D9BA:
+ cmp r0, #0
+ bne _0222D9C6
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mov r1, #0
+ str r1, [r0, #4]
+ b _0222D9E2
+_0222D9C6:
+ ldr r0, _0222DB94 ; =0x02237DE0
+ ldr r0, [r0, #0x40]
+ ldrb r0, [r0]
+ cmp r0, #0xe
+ bne _0222D9DA
+ mov r1, #1
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+ b _0222D9E2
+_0222D9DA:
+ mov r1, #0xc
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+_0222D9E2:
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222D9E8:
+ bl MOD79_022123A8
+ cmp r0, #1
+ beq _0222D9F6
+ cmp r0, #7
+ beq _0222DA0E
+ pop {r3, pc}
+_0222D9F6:
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ bl MOD79_02212474
+ bl MOD80_0222DF38
+ ldr r1, _0222DB8C ; =0x02237CE0
+ str r0, [r1, #4]
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222DA0E:
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ bl MOD79_02212480
+ mov r1, #0x49
+ lsl r1, r1, #2
+ cmp r0, r1
+ bne _0222DA28
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mov r1, #0
+ str r1, [r0, #4]
+ b _0222DAB4
+_0222DA28:
+ ldr r0, _0222DB94 ; =0x02237DE0
+ ldr r0, [r0, #0x40]
+ ldrb r0, [r0]
+ cmp r0, #0xe
+ bhi _0222DAAC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222DA3E: ; jump table
+ .short _0222DAAC - _0222DA3E - 2 ; case 0
+ .short _0222DAAC - _0222DA3E - 2 ; case 1
+ .short _0222DA5C - _0222DA3E - 2 ; case 2
+ .short _0222DAAC - _0222DA3E - 2 ; case 3
+ .short _0222DAAC - _0222DA3E - 2 ; case 4
+ .short _0222DAAC - _0222DA3E - 2 ; case 5
+ .short _0222DAAC - _0222DA3E - 2 ; case 6
+ .short _0222DAAC - _0222DA3E - 2 ; case 7
+ .short _0222DA7A - _0222DA3E - 2 ; case 8
+ .short _0222DA84 - _0222DA3E - 2 ; case 9
+ .short _0222DA8E - _0222DA3E - 2 ; case 10
+ .short _0222DA98 - _0222DA3E - 2 ; case 11
+ .short _0222DA66 - _0222DA3E - 2 ; case 12
+ .short _0222DA70 - _0222DA3E - 2 ; case 13
+ .short _0222DAA2 - _0222DA3E - 2 ; case 14
+_0222DA5C:
+ mov r1, #4
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+ b _0222DAB4
+_0222DA66:
+ mov r1, #5
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+ b _0222DAB4
+_0222DA70:
+ mov r1, #6
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+ b _0222DAB4
+_0222DA7A:
+ mov r1, #7
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+ b _0222DAB4
+_0222DA84:
+ mov r1, #8
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+ b _0222DAB4
+_0222DA8E:
+ mov r1, #9
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+ b _0222DAB4
+_0222DA98:
+ mov r1, #0xa
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+ b _0222DAB4
+_0222DAA2:
+ mov r1, #1
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+ b _0222DAB4
+_0222DAAC:
+ mov r1, #0xc
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+_0222DAB4:
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222DABA:
+ bl MOD79_022123A8
+ cmp r0, #1
+ beq _0222DAC8
+ cmp r0, #7
+ beq _0222DAE0
+ pop {r3, pc}
+_0222DAC8:
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ bl MOD79_02212474
+ bl MOD80_0222DF38
+ ldr r1, _0222DB8C ; =0x02237CE0
+ str r0, [r1, #4]
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222DAE0:
+ ldr r1, _0222DB8C ; =0x02237CE0
+ mov r2, #0x16
+ ldr r0, _0222DB90 ; =0x02237E00
+ str r2, [r1]
+ ldrb r0, [r0, #0x1c]
+ cmp r0, #1
+ beq _0222DAF8
+ cmp r0, #2
+ beq _0222DB04
+ cmp r0, #0xe
+ beq _0222DAFE
+ b _0222DB08
+_0222DAF8:
+ mov r0, #0
+ str r0, [r1, #4]
+ b _0222DB08
+_0222DAFE:
+ sub r2, #0x18
+ str r2, [r1, #4]
+ b _0222DB08
+_0222DB04:
+ sub r2, #0x1b
+ str r2, [r1, #4]
+_0222DB08:
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222DB0E:
+ bl MOD79_022123A8
+ cmp r0, #1
+ beq _0222DB1C
+ cmp r0, #7
+ beq _0222DB34
+ pop {r3, pc}
+_0222DB1C:
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ bl MOD79_02212474
+ bl MOD80_0222DF38
+ ldr r1, _0222DB8C ; =0x02237CE0
+ str r0, [r1, #4]
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222DB34:
+ ldr r1, _0222DB8C ; =0x02237CE0
+ mov r2, #0x16
+ ldr r0, _0222DB90 ; =0x02237E00
+ str r2, [r1]
+ ldrb r0, [r0, #0x1c]
+ cmp r0, #7
+ bgt _0222DB52
+ cmp r0, #1
+ blt _0222DB70
+ beq _0222DB58
+ cmp r0, #6
+ beq _0222DB5E
+ cmp r0, #7
+ beq _0222DB64
+ b _0222DB70
+_0222DB52:
+ cmp r0, #0xe
+ beq _0222DB6A
+ b _0222DB70
+_0222DB58:
+ mov r0, #0
+ str r0, [r1, #4]
+ b _0222DB78
+_0222DB5E:
+ mov r0, #1
+ str r0, [r1, #4]
+ b _0222DB78
+_0222DB64:
+ mov r0, #2
+ str r0, [r1, #4]
+ b _0222DB78
+_0222DB6A:
+ sub r2, #0x18
+ str r2, [r1, #4]
+ b _0222DB78
+_0222DB70:
+ mov r1, #0xc
+ ldr r0, _0222DB8C ; =0x02237CE0
+ mvn r1, r1
+ str r1, [r0, #4]
+_0222DB78:
+ bl MOD56_0221244C
+ pop {r3, pc}
+_0222DB7E:
+ mov r0, #0x16
+ str r0, [r1]
+ sub r0, #0x22
+ str r0, [r1, #4]
+ bl MOD56_0221244C
+_0222DB8A:
+ pop {r3, pc}
+ .align 2, 0
+_0222DB8C: .word 0x02237CE0
+_0222DB90: .word 0x02237E00
+_0222DB94: .word 0x02237DE0
+ thumb_func_end MOD80_0222D5DC
+
+ thumb_func_start MOD80_0222DB98
+MOD80_0222DB98: ; 0x0222DB98
+ ldr r1, _0222DBB4 ; =0x02237CE0
+ ldr r0, [r1]
+ cmp r0, #1
+ beq _0222DBA6
+ cmp r0, #0x16
+ beq _0222DBAA
+ b _0222DBB0
+_0222DBA6:
+ mov r0, #1
+ bx lr
+_0222DBAA:
+ mov r0, #1
+ str r0, [r1]
+ bx lr
+_0222DBB0:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_0222DBB4: .word 0x02237CE0
+ thumb_func_end MOD80_0222DB98
+
+ thumb_func_start MOD80_0222DBB8
+MOD80_0222DBB8: ; 0x0222DBB8
+ ldr r0, _0222DBC0 ; =0x02237CE0
+ ldr r0, [r0, #4]
+ bx lr
+ nop
+_0222DBC0: .word 0x02237CE0
+ thumb_func_end MOD80_0222DBB8
+
+ thumb_func_start MOD80_0222DBC4
+MOD80_0222DBC4: ; 0x0222DBC4
+ push {r3, lr}
+ add r1, r0, #0
+ mov r2, #0x49
+ ldr r0, _0222DC04 ; =0x02237CF4
+ lsl r2, r2, #2
+ bl memcpy
+ bl MOD79_022122E4
+ mov r0, #2
+ str r0, [sp]
+ mov r2, #0x49
+ ldr r0, _0222DC08 ; =0x02237680
+ ldr r1, _0222DC04 ; =0x02237CF4
+ ldr r3, _0222DC0C ; =0x02237E1C
+ lsl r2, r2, #2
+ bl MOD80_0222DF00
+ cmp r0, #0
+ beq _0222DBF4
+ ldr r0, _0222DC10 ; =0x02237CE0
+ mov r1, #2
+ str r1, [r0]
+ pop {r3, pc}
+_0222DBF4:
+ ldr r0, _0222DC10 ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ sub r1, #0x23
+ str r1, [r0, #4]
+ bl MOD56_0221244C
+ pop {r3, pc}
+ .align 2, 0
+_0222DC04: .word 0x02237CF4
+_0222DC08: .word 0x02237680
+_0222DC0C: .word 0x02237E1C
+_0222DC10: .word 0x02237CE0
+ thumb_func_end MOD80_0222DBC4
+
+ thumb_func_start MOD80_0222DC14
+MOD80_0222DC14: ; 0x0222DC14
+ push {r3, lr}
+ ldr r0, _0222DC54 ; =0x02237CEC
+ ldr r2, _0222DC58 ; =0x02237CF4
+ ldr r1, [r0]
+ ldr r0, [r0, #4]
+ str r1, [r2]
+ str r0, [r2, #4]
+ bl MOD79_022122E4
+ mov r0, #2
+ str r0, [sp]
+ ldr r0, _0222DC5C ; =0x022376CC
+ ldr r1, _0222DC58 ; =0x02237CF4
+ ldr r3, _0222DC60 ; =0x02237E1C
+ mov r2, #8
+ bl MOD80_0222DF00
+ cmp r0, #0
+ beq _0222DC42
+ ldr r0, _0222DC64 ; =0x02237CE0
+ mov r1, #4
+ str r1, [r0]
+ pop {r3, pc}
+_0222DC42:
+ ldr r0, _0222DC64 ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ sub r1, #0x23
+ str r1, [r0, #4]
+ bl MOD56_0221244C
+ pop {r3, pc}
+ nop
+_0222DC54: .word 0x02237CEC
+_0222DC58: .word 0x02237CF4
+_0222DC5C: .word 0x022376CC
+_0222DC60: .word 0x02237E1C
+_0222DC64: .word 0x02237CE0
+ thumb_func_end MOD80_0222DC14
+
+ thumb_func_start MOD80_0222DC68
+MOD80_0222DC68: ; 0x0222DC68
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, _0222DCA8 ; =0x02237DE0
+ str r4, [r0, #0x40]
+ bl MOD79_022122E4
+ mov r0, #0x49
+ lsl r0, r0, #2
+ str r0, [sp]
+ ldr r0, _0222DCAC ; =0x0223771C
+ ldr r1, _0222DCB0 ; =0x02237CF4
+ mov r2, #0
+ add r3, r4, #0
+ bl MOD80_0222DF00
+ cmp r0, #0
+ beq _0222DC96
+ ldr r0, _0222DCB4 ; =0x02237CE0
+ mov r1, #6
+ str r1, [r0]
+ add sp, #4
+ pop {r3, r4, pc}
+_0222DC96:
+ ldr r0, _0222DCB4 ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ sub r1, #0x23
+ str r1, [r0, #4]
+ bl MOD56_0221244C
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_0222DCA8: .word 0x02237DE0
+_0222DCAC: .word 0x0223771C
+_0222DCB0: .word 0x02237CF4
+_0222DCB4: .word 0x02237CE0
+ thumb_func_end MOD80_0222DC68
+
+ thumb_func_start MOD80_0222DCB8
+MOD80_0222DCB8: ; 0x0222DCB8
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, _0222DCF8 ; =0x02237DE0
+ str r4, [r0, #0x40]
+ bl MOD79_022122E4
+ mov r0, #0x49
+ lsl r0, r0, #2
+ str r0, [sp]
+ ldr r0, _0222DCFC ; =0x02237764
+ ldr r1, _0222DD00 ; =0x02237CF4
+ mov r2, #0
+ add r3, r4, #0
+ bl MOD80_0222DF00
+ cmp r0, #0
+ beq _0222DCE6
+ ldr r0, _0222DD04 ; =0x02237CE0
+ mov r1, #8
+ str r1, [r0]
+ add sp, #4
+ pop {r3, r4, pc}
+_0222DCE6:
+ ldr r0, _0222DD04 ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ sub r1, #0x23
+ str r1, [r0, #4]
+ bl MOD56_0221244C
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_0222DCF8: .word 0x02237DE0
+_0222DCFC: .word 0x02237764
+_0222DD00: .word 0x02237CF4
+_0222DD04: .word 0x02237CE0
+ thumb_func_end MOD80_0222DCB8
+
+ thumb_func_start MOD80_0222DD08
+MOD80_0222DD08: ; 0x0222DD08
+ push {r3, lr}
+ bl MOD79_022122E4
+ mov r0, #2
+ str r0, [sp]
+ ldr r0, _0222DD3C ; =0x022377B0
+ ldr r1, _0222DD40 ; =0x02237CF4
+ ldr r3, _0222DD44 ; =0x02237E1C
+ mov r2, #0
+ bl MOD80_0222DF00
+ cmp r0, #0
+ beq _0222DD2A
+ ldr r0, _0222DD48 ; =0x02237CE0
+ mov r1, #0xa
+ str r1, [r0]
+ pop {r3, pc}
+_0222DD2A:
+ ldr r0, _0222DD48 ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ sub r1, #0x23
+ str r1, [r0, #4]
+ bl MOD56_0221244C
+ pop {r3, pc}
+ nop
+_0222DD3C: .word 0x022377B0
+_0222DD40: .word 0x02237CF4
+_0222DD44: .word 0x02237E1C
+_0222DD48: .word 0x02237CE0
+ thumb_func_end MOD80_0222DD08
+
+ thumb_func_start MOD80_0222DD4C
+MOD80_0222DD4C: ; 0x0222DD4C
+ push {r3, lr}
+ bl MOD79_022122E4
+ mov r0, #2
+ str r0, [sp]
+ ldr r0, _0222DD80 ; =0x022377FC
+ ldr r1, _0222DD84 ; =0x02237CF4
+ ldr r3, _0222DD88 ; =0x02237E1C
+ mov r2, #0
+ bl MOD80_0222DF00
+ cmp r0, #0
+ beq _0222DD6E
+ ldr r0, _0222DD8C ; =0x02237CE0
+ mov r1, #0xc
+ str r1, [r0]
+ pop {r3, pc}
+_0222DD6E:
+ ldr r0, _0222DD8C ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ sub r1, #0x23
+ str r1, [r0, #4]
+ bl MOD56_0221244C
+ pop {r3, pc}
+ nop
+_0222DD80: .word 0x022377FC
+_0222DD84: .word 0x02237CF4
+_0222DD88: .word 0x02237E1C
+_0222DD8C: .word 0x02237CE0
+ thumb_func_end MOD80_0222DD4C
+
+ thumb_func_start MOD80_0222DD90
+MOD80_0222DD90: ; 0x0222DD90
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ ldr r0, _0222DDF4 ; =0x02237DE0
+ add r6, r2, #0
+ str r6, [r0, #0x40]
+ add r4, r1, #0
+ bl MOD79_022122E4
+ ldrb r0, [r5]
+ ldr r1, _0222DDF8 ; =0x02237CF4
+ mov r2, #7
+ strb r0, [r1]
+ ldrb r0, [r5, #1]
+ add r3, r6, #0
+ strb r0, [r1, #1]
+ ldrb r0, [r5, #2]
+ strb r0, [r1, #2]
+ ldrb r0, [r5, #3]
+ strb r0, [r1, #3]
+ ldrb r0, [r5, #4]
+ strb r0, [r1, #4]
+ ldrb r0, [r5, #5]
+ strb r0, [r1, #5]
+ ldr r0, _0222DDFC ; =0x02237CE0
+ strb r4, [r0, #0x1a]
+ mov r0, #0x49
+ lsl r0, r0, #2
+ mul r0, r4
+ str r0, [sp]
+ ldr r0, _0222DE00 ; =0x02237848
+ bl MOD80_0222DF00
+ cmp r0, #0
+ beq _0222DDE0
+ ldr r0, _0222DDFC ; =0x02237CE0
+ mov r1, #0xe
+ str r1, [r0]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0222DDE0:
+ ldr r0, _0222DDFC ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ sub r1, #0x23
+ str r1, [r0, #4]
+ bl MOD56_0221244C
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_0222DDF4: .word 0x02237DE0
+_0222DDF8: .word 0x02237CF4
+_0222DDFC: .word 0x02237CE0
+_0222DE00: .word 0x02237848
+ thumb_func_end MOD80_0222DD90
+
+ thumb_func_start MOD80_0222DE04
+MOD80_0222DE04: ; 0x0222DE04
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ ldr r0, _0222DE58 ; =0x02237DE0
+ add r6, r2, #0
+ add r4, r1, #0
+ str r6, [r0, #0x40]
+ bl MOD79_022122E4
+ mov r2, #0x49
+ ldr r0, _0222DE5C ; =0x02237CF4
+ add r1, r4, #0
+ lsl r2, r2, #2
+ bl memcpy
+ ldr r0, _0222DE58 ; =0x02237DE0
+ mov r2, #0x49
+ str r5, [r0, #0x38]
+ lsl r2, r2, #2
+ str r2, [sp]
+ ldr r0, _0222DE60 ; =0x02237894
+ ldr r1, _0222DE5C ; =0x02237CF4
+ add r2, r2, #4
+ add r3, r6, #0
+ bl MOD80_0222DF00
+ cmp r0, #0
+ beq _0222DE46
+ ldr r0, _0222DE64 ; =0x02237CE0
+ mov r1, #0x10
+ str r1, [r0]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0222DE46:
+ ldr r0, _0222DE64 ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ sub r1, #0x23
+ str r1, [r0, #4]
+ bl MOD56_0221244C
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0222DE58: .word 0x02237DE0
+_0222DE5C: .word 0x02237CF4
+_0222DE60: .word 0x02237894
+_0222DE64: .word 0x02237CE0
+ thumb_func_end MOD80_0222DE04
+
+ thumb_func_start MOD80_0222DE68
+MOD80_0222DE68: ; 0x0222DE68
+ push {r3, lr}
+ ldr r0, _0222DEA8 ; =0x02237CEC
+ ldr r2, _0222DEAC ; =0x02237CF4
+ ldr r1, [r0]
+ ldr r0, [r0, #4]
+ str r1, [r2]
+ str r0, [r2, #4]
+ bl MOD79_022122E4
+ mov r0, #2
+ str r0, [sp]
+ ldr r0, _0222DEB0 ; =0x022378E4
+ ldr r1, _0222DEAC ; =0x02237CF4
+ ldr r3, _0222DEB4 ; =0x02237E1C
+ mov r2, #8
+ bl MOD80_0222DF00
+ cmp r0, #0
+ beq _0222DE96
+ ldr r0, _0222DEB8 ; =0x02237CE0
+ mov r1, #0x12
+ str r1, [r0]
+ pop {r3, pc}
+_0222DE96:
+ ldr r0, _0222DEB8 ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ sub r1, #0x23
+ str r1, [r0, #4]
+ bl MOD56_0221244C
+ pop {r3, pc}
+ nop
+_0222DEA8: .word 0x02237CEC
+_0222DEAC: .word 0x02237CF4
+_0222DEB0: .word 0x022378E4
+_0222DEB4: .word 0x02237E1C
+_0222DEB8: .word 0x02237CE0
+ thumb_func_end MOD80_0222DE68
+
+ thumb_func_start MOD80_0222DEBC
+MOD80_0222DEBC: ; 0x0222DEBC
+ push {r3, lr}
+ bl MOD79_022122E4
+ mov r0, #2
+ str r0, [sp]
+ ldr r0, _0222DEF0 ; =0x02237938
+ ldr r1, _0222DEF4 ; =0x02237CF4
+ ldr r3, _0222DEF8 ; =0x02237E1C
+ mov r2, #0
+ bl MOD80_0222DF00
+ cmp r0, #0
+ beq _0222DEDE
+ ldr r0, _0222DEFC ; =0x02237CE0
+ mov r1, #0x14
+ str r1, [r0]
+ pop {r3, pc}
+_0222DEDE:
+ ldr r0, _0222DEFC ; =0x02237CE0
+ mov r1, #0x16
+ str r1, [r0]
+ sub r1, #0x23
+ str r1, [r0, #4]
+ bl MOD56_0221244C
+ pop {r3, pc}
+ nop
+_0222DEF0: .word 0x02237938
+_0222DEF4: .word 0x02237CF4
+_0222DEF8: .word 0x02237E1C
+_0222DEFC: .word 0x02237CE0
+ thumb_func_end MOD80_0222DEBC
+
+ thumb_func_start MOD80_0222DF00
+MOD80_0222DF00: ; 0x0222DF00
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r1, #0
+ ldr r1, [sp, #0x18]
+ str r3, [sp]
+ str r1, [sp, #4]
+ add r4, r2, #0
+ ldr r1, _0222DF34 ; =0x02237CE0
+ add r2, r5, #0
+ ldr r1, [r1, #8]
+ add r3, r4, #0
+ bl MOD79_02212308
+ cmp r0, #0
+ beq _0222DF26
+ cmp r0, #1
+ beq _0222DF2C
+ cmp r0, #2
+ b _0222DF2C
+_0222DF26:
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0222DF2C:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_0222DF34: .word 0x02237CE0
+ thumb_func_end MOD80_0222DF00
+
+ thumb_func_start MOD80_0222DF38
+MOD80_0222DF38: ; 0x0222DF38
+ push {r4, lr}
+ cmp r0, #0x20
+ bhi _0222DFB0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222DF4A: ; jump table
+ .short _0222DF8C - _0222DF4A - 2 ; case 0
+ .short _0222DF8C - _0222DF4A - 2 ; case 1
+ .short _0222DF92 - _0222DF4A - 2 ; case 2
+ .short _0222DF8C - _0222DF4A - 2 ; case 3
+ .short _0222DF8C - _0222DF4A - 2 ; case 4
+ .short _0222DF8C - _0222DF4A - 2 ; case 5
+ .short _0222DF8C - _0222DF4A - 2 ; case 6
+ .short _0222DFB0 - _0222DF4A - 2 ; case 7
+ .short _0222DF92 - _0222DF4A - 2 ; case 8
+ .short _0222DF8C - _0222DF4A - 2 ; case 9
+ .short _0222DF8C - _0222DF4A - 2 ; case 10
+ .short _0222DF98 - _0222DF4A - 2 ; case 11
+ .short _0222DF9E - _0222DF4A - 2 ; case 12
+ .short _0222DF9E - _0222DF4A - 2 ; case 13
+ .short _0222DF8C - _0222DF4A - 2 ; case 14
+ .short _0222DFAA - _0222DF4A - 2 ; case 15
+ .short _0222DFA4 - _0222DF4A - 2 ; case 16
+ .short _0222DFA4 - _0222DF4A - 2 ; case 17
+ .short _0222DFA4 - _0222DF4A - 2 ; case 18
+ .short _0222DFA4 - _0222DF4A - 2 ; case 19
+ .short _0222DF8C - _0222DF4A - 2 ; case 20
+ .short _0222DF8C - _0222DF4A - 2 ; case 21
+ .short _0222DF8C - _0222DF4A - 2 ; case 22
+ .short _0222DF8C - _0222DF4A - 2 ; case 23
+ .short _0222DFB0 - _0222DF4A - 2 ; case 24
+ .short _0222DF92 - _0222DF4A - 2 ; case 25
+ .short _0222DFA4 - _0222DF4A - 2 ; case 26
+ .short _0222DFA4 - _0222DF4A - 2 ; case 27
+ .short _0222DFA4 - _0222DF4A - 2 ; case 28
+ .short _0222DFA4 - _0222DF4A - 2 ; case 29
+ .short _0222DFAA - _0222DF4A - 2 ; case 30
+ .short _0222DFA4 - _0222DF4A - 2 ; case 31
+ .short _0222DF8C - _0222DF4A - 2 ; case 32
+_0222DF8C:
+ mov r4, #0xc
+ mvn r4, r4
+ b _0222DFB4
+_0222DF92:
+ mov r4, #0xc
+ mvn r4, r4
+ b _0222DFB4
+_0222DF98:
+ mov r4, #0xe
+ mvn r4, r4
+ b _0222DFB4
+_0222DF9E:
+ mov r4, #0xe
+ mvn r4, r4
+ b _0222DFB4
+_0222DFA4:
+ mov r4, #1
+ mvn r4, r4
+ b _0222DFB4
+_0222DFAA:
+ mov r4, #1
+ mvn r4, r4
+ b _0222DFB4
+_0222DFB0:
+ mov r4, #0xc
+ mvn r4, r4
+_0222DFB4:
+ mov r0, #0xc
+ mvn r0, r0
+ cmp r4, r0
+ beq _0222DFCC
+ bl FUN_020A71F8
+ cmp r0, #9
+ beq _0222DFC8
+ mov r4, #0xd
+ mvn r4, r4
+_0222DFC8:
+ bl MOD04_021DD6F0
+_0222DFCC:
+ add r0, r4, #0
+ pop {r4, pc}
+ thumb_func_end MOD80_0222DF38
+
+ thumb_func_start MOD80_0222DFD0
+MOD80_0222DFD0: ; 0x0222DFD0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _0222DFE4
+ cmp r0, #1
+ beq _0222E0E2
+ b _0222E0F8
+_0222DFE4:
+ 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, _0222E100 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _0222E104 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r2, #7
+ mov r0, #3
+ mov r1, #0x3e
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ ldr r1, _0222E108 ; =0x00001044
+ add r0, r6, #0
+ mov r2, #0x3e
+ bl FUN_02006268
+ ldr r2, _0222E108 ; =0x00001044
+ mov r1, #0
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x3e
+ bl FUN_02016B94
+ str r0, [r4, #4]
+ ldr r0, _0222E10C ; =0x02237E24
+ add r2, sp, #0
+ ldr r3, _0222E110 ; =0x02236E50
+ str r4, [r0, #4]
+ add r7, r2, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ add r0, r7, #0
+ bl FUN_02016BBC
+ mov r0, #0xb
+ mov r1, #0x40
+ mov r2, #0x3e
+ bl FUN_0200AA90
+ mov r1, #0xb3
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ ldr r2, _0222E114 ; =0x0000024F
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x3e
+ bl FUN_0200A86C
+ ldr r1, _0222E118 ; =0x00000B34
+ mov r2, #0x25
+ str r0, [r4, r1]
+ mov r0, #0
+ mov r1, #0x1a
+ lsl r2, r2, #4
+ mov r3, #0x3e
+ bl FUN_0200A86C
+ ldr r1, _0222E11C ; =0x00000B3C
+ ldr r2, _0222E120 ; =0x00000265
+ str r0, [r4, r1]
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x3e
+ bl FUN_0200A86C
+ mov r1, #0x2d
+ lsl r1, r1, #6
+ str r0, [r4, r1]
+ ldr r2, _0222E124 ; =0x0000016A
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x3e
+ bl FUN_0200A86C
+ ldr r1, _0222E128 ; =0x00000B38
+ str r0, [r4, r1]
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD80_0222E338
+ add r0, r4, #0
+ bl MOD80_0222E7C8
+ ldr r1, _0222E12C ; =0x00000449
+ mov r0, #4
+ mov r2, #1
+ bl FUN_0200433C
+ ldr r1, _0222E130 ; =0x00020020
+ mov r0, #0x3e
+ bl FUN_02016998
+ str r0, [r4, #0x48]
+ add r0, #0x1f
+ mov r1, #0x1f
+ bic r0, r1
+ mov r1, #2
+ lsl r1, r1, #0x10
+ mov r2, #0
+ bl tempName_NNS_FndCreateExpHeapEx
+ str r0, [r4, #0x4c]
+ mov r0, #1
+ str r0, [r5]
+ b _0222E0F8
+_0222E0E2:
+ bl FUN_02088858
+ bl FUN_020888BC
+ bl FUN_0202E49C
+ mov r0, #0
+ str r0, [r5]
+ add sp, #0x10
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0222E0F8:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222E100: .word 0xFFFFE0FF
+_0222E104: .word 0x04001000
+_0222E108: .word 0x00001044
+_0222E10C: .word 0x02237E24
+_0222E110: .word 0x02236E50
+_0222E114: .word 0x0000024F
+_0222E118: .word 0x00000B34
+_0222E11C: .word 0x00000B3C
+_0222E120: .word 0x00000265
+_0222E124: .word 0x0000016A
+_0222E128: .word 0x00000B38
+_0222E12C: .word 0x00000449
+_0222E130: .word 0x00020020
+ thumb_func_end MOD80_0222DFD0
+
+ thumb_func_start MOD80_0222E134
+MOD80_0222E134: ; 0x0222E134
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ bl MOD04_021DD984
+ bl MOD80_0222D5DC
+ ldr r1, [r5]
+ cmp r1, #5
+ bhi _0222E224
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222E158: ; jump table
+ .short _0222E164 - _0222E158 - 2 ; case 0
+ .short _0222E180 - _0222E158 - 2 ; case 1
+ .short _0222E1A4 - _0222E158 - 2 ; case 2
+ .short _0222E1B2 - _0222E158 - 2 ; case 3
+ .short _0222E1C6 - _0222E158 - 2 ; case 4
+ .short _0222E220 - _0222E158 - 2 ; case 5
+_0222E164:
+ bl FUN_0202E4C8
+ cmp r0, #0
+ beq _0222E224
+ ldr r1, [r4, #0x4c]
+ ldr r0, _0222E240 ; =0x02237E24
+ str r1, [r0]
+ ldr r0, _0222E244 ; =MOD80_0222E750
+ ldr r1, _0222E248 ; =MOD80_0222E778
+ bl MOD04_021DD968
+ mov r0, #1
+ str r0, [r5]
+ b _0222E224
+_0222E180:
+ ldr r3, [r4, #0x14]
+ mov r2, #0xc
+ add r6, r3, #0
+ mul r6, r2
+ ldr r2, _0222E24C ; =0x02237984
+ add r0, r4, #0
+ ldr r2, [r2, r6]
+ blx r2
+ str r0, [r5]
+ add r0, r4, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0222E224
+ add r0, r4, #0
+ bl MOD80_0222E7F0
+ b _0222E224
+_0222E1A4:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0222E224
+ mov r0, #3
+ str r0, [r5]
+ b _0222E224
+_0222E1B2:
+ ldr r3, [r4, #0x14]
+ mov r2, #0xc
+ add r6, r3, #0
+ mul r6, r2
+ ldr r2, _0222E250 ; =0x02237988
+ add r0, r4, #0
+ ldr r2, [r2, r6]
+ blx r2
+ str r0, [r5]
+ b _0222E224
+_0222E1C6:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0222E224
+ add r0, r4, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0222E20A
+ add r0, r4, #0
+ bl MOD80_0222E7C8
+ ldr r0, [r4]
+ ldr r0, [r0, #0x1c]
+ bl FUN_020239CC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD80_02235850
+ add r1, r4, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r0, r4, #0
+ mov r2, #0
+ bl MOD80_02235B90
+ add r0, r4, #0
+ bl MOD80_0222F338
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xac
+ str r1, [r0]
+_0222E20A:
+ ldr r3, [r4, #0x14]
+ mov r2, #0xc
+ add r6, r3, #0
+ mul r6, r2
+ ldr r2, _0222E254 ; =0x0223798C
+ ldr r1, [r5]
+ ldr r2, [r2, r6]
+ add r0, r4, #0
+ blx r2
+ str r0, [r5]
+ b _0222E224
+_0222E220:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_0222E224:
+ add r0, r4, #0
+ bl MOD80_0222E85C
+ add r0, r4, #0
+ bl MOD80_0222E87C
+ ldr r0, _0222E258 ; =0x00000B84
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _0222E23C
+ bl FUN_0201FDEC
+_0222E23C:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0222E240: .word 0x02237E24
+_0222E244: .word MOD80_0222E750
+_0222E248: .word MOD80_0222E778
+_0222E24C: .word 0x02237984
+_0222E250: .word 0x02237988
+_0222E254: .word 0x0223798C
+_0222E258: .word 0x00000B84
+ thumb_func_end MOD80_0222E134
+
+ thumb_func_start MOD80_0222E25C
+MOD80_0222E25C: ; 0x0222E25C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r4, #0x48]
+ bl FUN_02016A18
+ bl FUN_020888CC
+ bl FUN_02088868
+ add r0, r4, #0
+ bl MOD80_0222E7F0
+ ldr r0, _0222E2D4 ; =0x00000B38
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ mov r0, #0x2d
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ ldr r0, _0222E2D8 ; =0x00000B3C
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ ldr r0, _0222E2DC ; =0x00000B34
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ mov r0, #0xb3
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_0200AB18
+ add r0, r4, #0
+ bl MOD80_0222E398
+ bl FUN_0202E4F0
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ ldr r0, [r4]
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200627C
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0x3e
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0222E2D4: .word 0x00000B38
+_0222E2D8: .word 0x00000B3C
+_0222E2DC: .word 0x00000B34
+ thumb_func_end MOD80_0222E25C
+
+ thumb_func_start MOD80_0222E2E0
+MOD80_0222E2E0: ; 0x0222E2E0
+ push {r4, lr}
+ ldr r1, _0222E30C ; =0x00001014
+ add r4, r0, #0
+ ldr r1, [r4, r1]
+ cmp r1, #0
+ beq _0222E2F4
+ blx r1
+ ldr r0, _0222E30C ; =0x00001014
+ mov r1, #0
+ str r1, [r4, r0]
+_0222E2F4:
+ bl FUN_0201C30C
+ bl FUN_02009F80
+ ldr r3, _0222E310 ; =0x027E0000
+ ldr r1, _0222E314 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ nop
+_0222E30C: .word 0x00001014
+_0222E310: .word 0x027E0000
+_0222E314: .word 0x00003FF8
+ thumb_func_end MOD80_0222E2E0
+
+ thumb_func_start MOD80_0222E318
+MOD80_0222E318: ; 0x0222E318
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _0222E334 ; =0x02236E70
+ add r3, sp, #0
+ mov r2, #5
+_0222E322:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0222E322
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_0222E334: .word 0x02236E70
+ thumb_func_end MOD80_0222E318
+
+ thumb_func_start MOD80_0222E338
+MOD80_0222E338: ; 0x0222E338
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r1, #0
+ bl FUN_0200628C
+ mov r1, #0
+ str r0, [r4]
+ add r0, r4, #0
+ add r2, r1, #0
+ str r1, [r4, #0x14]
+ bl MOD80_0222E7A8
+ add r1, r4, #0
+ mov r0, #0
+ add r1, #0xb4
+ strh r0, [r1]
+ ldr r1, _0222E390 ; =0x00000B22
+ mov r3, #3
+ strh r0, [r4, r1]
+ add r2, r1, #2
+ strb r3, [r4, r2]
+ add r2, r1, #3
+ strb r0, [r4, r2]
+ add r2, r1, #4
+ strb r0, [r4, r2]
+ add r1, r1, #6
+ strh r0, [r4, r1]
+ ldr r2, _0222E394 ; =0x00000FEC
+ add r1, r4, #0
+ strh r0, [r4, r2]
+ mov r3, #0x12
+ add r1, #0xb8
+ strh r3, [r1]
+ add r1, r2, #0
+ add r1, #0x1c
+ strh r0, [r4, r1]
+ add r1, r2, #0
+ add r1, #0x1e
+ strh r0, [r4, r1]
+ add r1, r2, #2
+ strh r0, [r4, r1]
+ sub r2, #0x14
+ str r0, [r4, r2]
+ pop {r4, pc}
+ .align 2, 0
+_0222E390: .word 0x00000B22
+_0222E394: .word 0x00000FEC
+ thumb_func_end MOD80_0222E338
+
+ thumb_func_start MOD80_0222E398
+MOD80_0222E398: ; 0x0222E398
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD80_0222E398
+
+ thumb_func_start MOD80_0222E39C
+MOD80_0222E39C: ; 0x0222E39C
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _0222E3C8 ; =0x02236E60
+ 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, #0x3e
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_0222E3C8: .word 0x02236E60
+ thumb_func_end MOD80_0222E39C
+
+ thumb_func_start MOD80_0222E3CC
+MOD80_0222E3CC: ; 0x0222E3CC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ 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, #0x3e
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ ldr r1, _0222E5C8 ; =0x00000B88
+ mov r0, #0x4e
+ add r1, r5, r1
+ mov r2, #0x3e
+ bl FUN_02008C9C
+ ldr r1, _0222E5CC ; =0x00000B84
+ mov r2, #1
+ str r0, [r5, r1]
+ add r0, r1, #4
+ add r0, r5, r0
+ mov r1, #0
+ lsl r2, r2, #0x14
+ bl FUN_02008D24
+ mov r7, #0xcb
+ mov r6, #0
+ add r4, r5, #0
+ lsl r7, r7, #4
+_0222E414:
+ mov r0, #3
+ add r1, r6, #0
+ mov r2, #0x3e
+ bl FUN_02008DEC
+ str r0, [r4, r7]
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _0222E414
+ mov r0, #0
+ str r0, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #0xcb
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0x68
+ mov r2, #0x12
+ bl FUN_02008F34
+ mov r1, #0x33
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #0x3e
+ sub r1, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ mov r1, #0x68
+ mov r2, #9
+ bl FUN_02008FEC
+ ldr r1, _0222E5D0 ; =0x00000CC4
+ mov r2, #0x13
+ str r0, [r5, r1]
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x68
+ mov r3, #1
+ bl FUN_020090AC
+ ldr r1, _0222E5D4 ; =0x00000CC8
+ mov r2, #0x14
+ str r0, [r5, r1]
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x68
+ mov r3, #1
+ bl FUN_020090AC
+ ldr r1, _0222E5D8 ; =0x00000CCC
+ mov r3, #1
+ str r0, [r5, r1]
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ sub r1, #0x1c
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x68
+ mov r2, #0x20
+ bl FUN_02008F34
+ mov r1, #0xcd
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #9
+ str r0, [sp, #8]
+ mov r0, #0x3e
+ sub r1, #0x1c
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ mov r1, #0x68
+ mov r2, #8
+ mov r3, #0
+ bl FUN_02008FEC
+ ldr r1, _0222E5DC ; =0x00000CD4
+ mov r3, #1
+ str r0, [r5, r1]
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ sub r1, #0x1c
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x68
+ mov r2, #0x21
+ bl FUN_020090AC
+ ldr r1, _0222E5E0 ; =0x00000CD8
+ mov r3, #1
+ str r0, [r5, r1]
+ str r3, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ sub r1, #0x1c
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x68
+ mov r2, #0x22
+ bl FUN_020090AC
+ ldr r1, _0222E5E4 ; =0x00000CDC
+ str r0, [r5, r1]
+ sub r1, #0x1c
+ ldr r0, [r5, r1]
+ bl FUN_02009A50
+ mov r0, #0xcd
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02009A50
+ ldr r0, _0222E5D0 ; =0x00000CC4
+ ldr r0, [r5, r0]
+ bl FUN_02009CF0
+ ldr r0, _0222E5DC ; =0x00000CD4
+ ldr r0, [r5, r0]
+ bl FUN_02009CF0
+ bl FUN_0206B888
+ add r1, r0, #0
+ mov r0, #0x13
+ add r2, sp, #0x18
+ mov r3, #0x3e
+ bl FUN_02006C08
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ mov r1, #0x60
+ ldr r0, [r0, #0xc]
+ bl DC_FlushRange
+ ldr r0, [sp, #0x18]
+ mov r1, #0x60
+ ldr r0, [r0, #0xc]
+ add r2, r1, #0
+ bl GX_LoadOBJPltt
+ ldr r0, [sp, #0x18]
+ mov r7, #0x1f
+ ldr r4, [r0, #0xc]
+ mov r3, #0
+ add r5, r7, #0
+_0222E570:
+ ldrh r2, [r4]
+ mov r0, #0x1f
+ add r3, r3, #1
+ add r1, r2, #0
+ and r1, r0
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r1, r0, #1
+ asr r0, r2, #0xa
+ add r6, r0, #0
+ and r6, r7
+ lsr r0, r6, #0x1f
+ add r0, r6, r0
+ asr r2, r2, #5
+ add r6, r2, #0
+ and r6, r5
+ lsr r2, r6, #0x1f
+ add r2, r6, r2
+ asr r0, r0, #1
+ asr r2, r2, #1
+ lsl r0, r0, #0xa
+ lsl r2, r2, #5
+ orr r0, r2
+ orr r0, r1
+ strh r0, [r4]
+ add r4, r4, #2
+ cmp r3, #0x30
+ blt _0222E570
+ ldr r0, [sp, #0x18]
+ mov r1, #0x60
+ ldr r0, [r0, #0xc]
+ bl DC_FlushRange
+ ldr r0, [sp, #0x18]
+ mov r1, #0xc0
+ ldr r0, [r0, #0xc]
+ mov r2, #0x60
+ bl GX_LoadOBJPltt
+ ldr r0, [sp, #0x14]
+ bl FUN_02016A18
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222E5C8: .word 0x00000B88
+_0222E5CC: .word 0x00000B84
+_0222E5D0: .word 0x00000CC4
+_0222E5D4: .word 0x00000CC8
+_0222E5D8: .word 0x00000CCC
+_0222E5DC: .word 0x00000CD4
+_0222E5E0: .word 0x00000CD8
+_0222E5E4: .word 0x00000CDC
+ thumb_func_end MOD80_0222E3CC
+
+ thumb_func_start MOD80_0222E5E8
+MOD80_0222E5E8: ; 0x0222E5E8
+ push {r3, r4}
+ ldr r4, _0222E610 ; =0x00000B84
+ ldr r1, [r1, r4]
+ str r1, [r0]
+ str r2, [r0, #4]
+ mov r2, #0
+ mov r1, #1
+ str r2, [r0, #0x10]
+ lsl r1, r1, #0xc
+ str r1, [r0, #0x14]
+ str r1, [r0, #0x18]
+ str r1, [r0, #0x1c]
+ strh r2, [r0, #0x20]
+ mov r1, #1
+ str r1, [r0, #0x24]
+ str r3, [r0, #0x28]
+ mov r1, #0x3e
+ str r1, [r0, #0x2c]
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+_0222E610: .word 0x00000B84
+ thumb_func_end MOD80_0222E5E8
+
+ thumb_func_start MOD80_0222E614
+MOD80_0222E614: ; 0x0222E614
+ push {r3, r4, lr}
+ sub sp, #0x2c
+ 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, #0xcb
+ str r1, [sp, #0x10]
+ lsl r2, r2, #4
+ 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, #0x40
+ 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, #0xcb
+ str r1, [sp]
+ sub r0, r1, #2
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ lsl r3, r3, #4
+ ldr r2, [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, #0x64
+ 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
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x2c
+ pop {r3, r4, pc}
+ thumb_func_end MOD80_0222E614
+
+ thumb_func_start MOD80_0222E6A8
+MOD80_0222E6A8: ; 0x0222E6A8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ ldr r5, _0222E6D8 ; =0x02236E48
+ add r4, sp, #4
+ ldrh r6, [r5]
+ add r3, sp, #4
+ strh r6, [r4]
+ ldrh r6, [r5, #2]
+ strh r6, [r4, #2]
+ ldrh r6, [r5, #4]
+ ldrh r5, [r5, #6]
+ strh r6, [r4, #4]
+ strh r5, [r4, #6]
+ strb r1, [r4, #2]
+ strh r2, [r4, #6]
+ mov r1, #0x3e
+ str r1, [sp]
+ add r1, r3, #0
+ mov r2, #0x1f
+ mov r3, #0xb
+ bl FUN_02002198
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0222E6D8: .word 0x02236E48
+ thumb_func_end MOD80_0222E6A8
+
+ thumb_func_start MOD80_0222E6DC
+MOD80_0222E6DC: ; 0x0222E6DC
+ str r1, [r0, #0x2c]
+ str r2, [r0, #0x30]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD80_0222E6DC
+
+ thumb_func_start MOD80_0222E6E4
+MOD80_0222E6E4: ; 0x0222E6E4
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r5, r2, #0
+ cmp r1, #0
+ ble _0222E702
+ lsl r0, r1, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _0222E710
+_0222E702:
+ lsl r0, r1, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_0222E710:
+ bl _ffix
+ str r0, [sp]
+ cmp r5, #0
+ ble _0222E72C
+ lsl r0, r5, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _0222E73A
+_0222E72C:
+ lsl r0, r5, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_0222E73A:
+ bl _ffix
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, sp, #0
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r4, r5, pc}
+ thumb_func_end MOD80_0222E6E4
+
+ thumb_func_start MOD80_0222E750
+MOD80_0222E750: ; 0x0222E750
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ bl OS_DisableInterrupts
+ add r6, r0, #0
+ ldr r0, _0222E774 ; =0x02237E24
+ add r1, r5, #0
+ ldr r0, [r0]
+ add r2, r4, #0
+ bl tempName_NNS_FndAllocFromExpHeapEx
+ add r4, r0, #0
+ add r0, r6, #0
+ bl OS_RestoreInterrupts
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0222E774: .word 0x02237E24
+ thumb_func_end MOD80_0222E750
+
+ thumb_func_start MOD80_0222E778
+MOD80_0222E778: ; 0x0222E778
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ beq _0222E794
+ bl OS_DisableInterrupts
+ add r4, r0, #0
+ ldr r0, _0222E798 ; =0x02237E24
+ add r1, r5, #0
+ ldr r0, [r0]
+ bl FUN_020ADDF0
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+_0222E794:
+ pop {r3, r4, r5, pc}
+ nop
+_0222E798: .word 0x02237E24
+ thumb_func_end MOD80_0222E778
+
+ thumb_func_start MOD80_0222E79C
+MOD80_0222E79C: ; 0x0222E79C
+ push {r3, lr}
+ bl MOD04_021DDB08
+ mov r1, #3
+ sub r0, r1, r0
+ pop {r3, pc}
+ thumb_func_end MOD80_0222E79C
+
+ thumb_func_start MOD80_0222E7A8
+MOD80_0222E7A8: ; 0x0222E7A8
+ str r1, [r0, #0x18]
+ str r2, [r0, #0x24]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD80_0222E7A8
+
+ thumb_func_start MOD80_0222E7B0
+MOD80_0222E7B0: ; 0x0222E7B0
+ ldr r1, [r0, #0x14]
+ str r1, [r0, #0x20]
+ ldr r1, [r0, #0x18]
+ str r1, [r0, #0x14]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD80_0222E7B0
+
+ thumb_func_start MOD80_0222E7BC
+MOD80_0222E7BC: ; 0x0222E7BC
+ ldr r0, [r0]
+ ldr r3, _0222E7C4 ; =FUN_02024FF4
+ ldr r0, [r0, #0x24]
+ bx r3
+ .align 2, 0
+_0222E7C4: .word FUN_02024FF4
+ thumb_func_end MOD80_0222E7BC
+
+ thumb_func_start MOD80_0222E7C8
+MOD80_0222E7C8: ; 0x0222E7C8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222E318
+ bl MOD80_0222E39C
+ add r0, r4, #0
+ bl MOD80_0222E3CC
+ add r0, r4, #0
+ bl MOD80_0222E614
+ ldr r0, _0222E7EC ; =MOD80_0222E2E0
+ add r1, r4, #0
+ bl FUN_02015F10
+ pop {r4, pc}
+ nop
+_0222E7EC: .word MOD80_0222E2E0
+ thumb_func_end MOD80_0222E7C8
+
+ thumb_func_start MOD80_0222E7F0
+MOD80_0222E7F0: ; 0x0222E7F0
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ bl MOD80_02235D10
+ mov r0, #0x33
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ bl FUN_02009C0C
+ mov r0, #0xcd
+ lsl r0, r0, #4
+ ldr r0, [r6, r0]
+ bl FUN_02009C0C
+ ldr r0, _0222E850 ; =0x00000CC4
+ ldr r0, [r6, r0]
+ bl FUN_02009E04
+ ldr r0, _0222E854 ; =0x00000CD4
+ ldr r0, [r6, r0]
+ bl FUN_02009E04
+ mov r7, #0xcb
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #4
+_0222E824:
+ ldr r0, [r5, r7]
+ bl FUN_02008E2C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _0222E824
+ ldr r0, _0222E858 ; =0x00000B84
+ ldr r0, [r6, r0]
+ bl FUN_0201FD58
+ ldr r0, _0222E858 ; =0x00000B84
+ mov r1, #0
+ str r1, [r6, r0]
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222E850: .word 0x00000CC4
+_0222E854: .word 0x00000CD4
+_0222E858: .word 0x00000B84
+ thumb_func_end MOD80_0222E7F0
+
+ thumb_func_start MOD80_0222E85C
+MOD80_0222E85C: ; 0x0222E85C
+ ldrh r1, [r0, #0x3a]
+ cmp r1, #0
+ beq _0222E866
+ sub r1, r1, #1
+ strh r1, [r0, #0x3a]
+_0222E866:
+ bx lr
+ thumb_func_end MOD80_0222E85C
+
+ thumb_func_start MOD80_0222E868
+MOD80_0222E868: ; 0x0222E868
+ ldr r1, _0222E878 ; =0x0000100A
+ mov r2, #1
+ strh r2, [r0, r1]
+ mov r2, #0
+ sub r1, r1, #2
+ strh r2, [r0, r1]
+ bx lr
+ nop
+_0222E878: .word 0x0000100A
+ thumb_func_end MOD80_0222E868
+
+ thumb_func_start MOD80_0222E87C
+MOD80_0222E87C: ; 0x0222E87C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _0222E8B4 ; =0x0000100A
+ ldrh r1, [r4, r0]
+ cmp r1, #0
+ beq _0222E8B0
+ ldr r0, [r4]
+ sub r1, r1, #1
+ ldr r0, [r0, #0xc]
+ bl FUN_0206B4E4
+ ldr r1, _0222E8B8 ; =0x00001008
+ ldrh r2, [r4, r1]
+ add r0, r2, r0
+ strh r0, [r4, r1]
+ add r0, r1, #2
+ ldrh r0, [r4, r0]
+ add r2, r0, #1
+ add r0, r1, #2
+ strh r2, [r4, r0]
+ ldrh r0, [r4, r0]
+ cmp r0, #0x13
+ bne _0222E8B0
+ mov r2, #0
+ add r0, r1, #2
+ strh r2, [r4, r0]
+_0222E8B0:
+ pop {r4, pc}
+ nop
+_0222E8B4: .word 0x0000100A
+_0222E8B8: .word 0x00001008
+ thumb_func_end MOD80_0222E87C
+
+ thumb_func_start MOD80_0222E8BC
+MOD80_0222E8BC: ; 0x0222E8BC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _0222E8D0 ; =0x00000E98
+ mov r1, #1
+ add r0, r4, r0
+ bl FUN_0200D858
+ ldr r1, _0222E8D4 ; =0x00000FD8
+ str r0, [r4, r1]
+ pop {r4, pc}
+ .align 2, 0
+_0222E8D0: .word 0x00000E98
+_0222E8D4: .word 0x00000FD8
+ thumb_func_end MOD80_0222E8BC
+
+ thumb_func_start MOD80_0222E8D8
+MOD80_0222E8D8: ; 0x0222E8D8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _0222E8F0 ; =0x00000FD8
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _0222E8EE
+ bl FUN_0200DBFC
+ ldr r0, _0222E8F0 ; =0x00000FD8
+ mov r1, #0
+ str r1, [r4, r0]
+_0222E8EE:
+ pop {r4, pc}
+ .align 2, 0
+_0222E8F0: .word 0x00000FD8
+ thumb_func_end MOD80_0222E8D8
+
+ thumb_func_start MOD80_0222E8F4
+MOD80_0222E8F4: ; 0x0222E8F4
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl MOD80_0222EDE0
+ ldr r0, [r4, #4]
+ bl MOD80_0222EA04
+ add r0, r4, #0
+ bl MOD80_0222EB6C
+ add r0, r4, #0
+ bl MOD80_0222EC98
+ add r0, r4, #0
+ bl MOD80_0222EC24
+ add r0, r4, #0
+ bl MOD80_02236D84
+ add r0, r4, #0
+ bl MOD80_0222F20C
+ ldr r1, _0222E9B0 ; =0x00000449
+ mov r0, #4
+ mov r2, #1
+ bl FUN_0200433C
+ ldrh r0, [r4, #0x34]
+ cmp r0, #0
+ bne _0222E968
+ add r0, r4, #0
+ bl MOD80_0222EB40
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ mov r0, #1
+ strh r0, [r4, #0x34]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x1c]
+ bl FUN_020239CC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD80_02235900
+ b _0222E9A2
+_0222E968:
+ ldr r0, _0222E9B4 ; =0x0000100C
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _0222E988
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ b _0222E99E
+_0222E988:
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+_0222E99E:
+ mov r0, #5
+ str r0, [r4, #0x2c]
+_0222E9A2:
+ ldr r0, _0222E9B4 ; =0x0000100C
+ mov r1, #0
+ str r1, [r4, r0]
+ mov r0, #2
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_0222E9B0: .word 0x00000449
+_0222E9B4: .word 0x0000100C
+ thumb_func_end MOD80_0222E8F4
+
+ thumb_func_start MOD80_0222E9B8
+MOD80_0222E9B8: ; 0x0222E9B8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222E79C
+ bl FUN_02033EEC
+ ldr r1, [r4, #0x2c]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _0222E9D4 ; =0x022379FC
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r4, pc}
+ nop
+_0222E9D4: .word 0x022379FC
+ thumb_func_end MOD80_0222E9B8
+
+ thumb_func_start MOD80_0222E9D8
+MOD80_0222E9D8: ; 0x0222E9D8
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02033ED0
+ add r0, r4, #0
+ bl MOD80_0222EC88
+ add r0, r4, #0
+ bl MOD80_0222EE08
+ add r0, r4, #0
+ bl MOD80_0222ED9C
+ ldr r0, [r4, #4]
+ bl MOD80_0222EB14
+ add r0, r4, #0
+ bl MOD80_0222E7B0
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_0222E9D8
+
+ thumb_func_start MOD80_0222EA04
+MOD80_0222EA04: ; 0x0222EA04
+ push {r4, r5, lr}
+ sub sp, #0x9c
+ ldr r5, _0222EAFC ; =0x02236EA4
+ 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, _0222EB00 ; =0x02236F04
+ 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, _0222EB04 ; =0x02236EE8
+ 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
+ ldr r5, _0222EB08 ; =0x02236F20
+ 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, _0222EB0C ; =0x02236F3C
+ 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, _0222EB10 ; =0x02236ECC
+ 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, #0x3e
+ bl FUN_02017F18
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x3e
+ bl FUN_02017F18
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x9c
+ pop {r4, r5, pc}
+ nop
+_0222EAFC: .word 0x02236EA4
+_0222EB00: .word 0x02236F04
+_0222EB04: .word 0x02236EE8
+_0222EB08: .word 0x02236F20
+_0222EB0C: .word 0x02236F3C
+_0222EB10: .word 0x02236ECC
+ thumb_func_end MOD80_0222EA04
+
+ thumb_func_start MOD80_0222EB14
+MOD80_0222EB14: ; 0x0222EB14
+ 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, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020178A0
+ pop {r4, pc}
+ thumb_func_end MOD80_0222EB14
+
+ thumb_func_start MOD80_0222EB40
+MOD80_0222EB40: ; 0x0222EB40
+ 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
+ ldr r0, _0222EB68 ; =0x00000D5C
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl FUN_020200A0
+ pop {r4, pc}
+ .align 2, 0
+_0222EB68: .word 0x00000D5C
+ thumb_func_end MOD80_0222EB40
+
+ thumb_func_start MOD80_0222EB6C
+MOD80_0222EB6C: ; 0x0222EB6C
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r4, [r5, #4]
+ mov r0, #0x60
+ str r0, [sp]
+ mov r0, #0x3e
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x68
+ mov r1, #4
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r1, #0x1a
+ mov r0, #0
+ lsl r1, r1, #4
+ mov r2, #0x3e
+ bl FUN_02002EEC
+ ldr r0, [r5]
+ ldr r0, [r0, #0x24]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x3e
+ 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, #0x3e
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x1f
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #3
+ lsl r0, r0, #0xa
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x68
+ mov r1, #0xe
+ add r2, r4, #0
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x68
+ mov r1, #0x1e
+ add r2, r4, #0
+ bl FUN_020068C8
+ 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, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x68
+ mov r1, #0x1d
+ add r2, r4, #0
+ mov r3, #2
+ bl FUN_020068C8
+ add r0, r5, #0
+ bl MOD80_0222F338
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD80_0222EB6C
+
+ thumb_func_start MOD80_0222EC24
+MOD80_0222EC24: ; 0x0222EC24
+ push {r4, lr}
+ sub sp, #0x30
+ mov r2, #0xcf
+ add r4, r0, #0
+ lsl r2, r2, #4
+ add r0, sp, #0
+ add r1, r4, #0
+ add r2, r4, r2
+ mov r3, #1
+ bl MOD80_0222E5E8
+ add r0, r4, #0
+ add r0, #0xb4
+ ldrh r0, [r0]
+ lsl r1, r0, #2
+ ldr r0, _0222EC7C ; =0x02236E98
+ ldrh r0, [r0, r1]
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0xb4
+ ldrh r0, [r0]
+ lsl r1, r0, #2
+ ldr r0, _0222EC80 ; =0x02236E9A
+ ldrh r0, [r0, r1]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ add r0, sp, #0
+ bl FUN_0201FE94
+ ldr r1, _0222EC84 ; =0x00000D5C
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, _0222EC84 ; =0x00000D5C
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl FUN_02020130
+ add sp, #0x30
+ pop {r4, pc}
+ nop
+_0222EC7C: .word 0x02236E98
+_0222EC80: .word 0x02236E9A
+_0222EC84: .word 0x00000D5C
+ thumb_func_end MOD80_0222EC24
+
+ thumb_func_start MOD80_0222EC88
+MOD80_0222EC88: ; 0x0222EC88
+ ldr r1, _0222EC90 ; =0x00000D5C
+ ldr r3, _0222EC94 ; =FUN_0201FFC8
+ ldr r0, [r0, r1]
+ bx r3
+ .align 2, 0
+_0222EC90: .word 0x00000D5C
+_0222EC94: .word FUN_0201FFC8
+ thumb_func_end MOD80_0222EC88
+
+ thumb_func_start MOD80_0222EC98
+MOD80_0222EC98: ; 0x0222EC98
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ mov r3, #1
+ add r7, r0, #0
+ str r3, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x28
+ ldr r1, _0222ED88 ; =0x00000EB8
+ str r0, [sp, #0x10]
+ ldr r0, [r7, #4]
+ add r1, r7, r1
+ mov r2, #0
+ bl FUN_02019064
+ ldr r0, _0222ED88 ; =0x00000EB8
+ mov r1, #0
+ add r0, r7, r0
+ bl FUN_02019620
+ mov r0, #2
+ str r0, [sp]
+ mov r3, #0
+ mov r2, #0xb5
+ ldr r0, _0222ED8C ; =0x000F0400
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, _0222ED88 ; =0x00000EB8
+ str r3, [sp, #0xc]
+ lsl r2, r2, #4
+ ldr r2, [r7, r2]
+ add r0, r7, r0
+ mov r1, #1
+ bl FUN_0201BDE0
+ mov r0, #0
+ str r0, [sp, #0x14]
+ ldr r0, _0222ED90 ; =0x00000ED8
+ mov r6, #0x61
+ mov r4, #6
+ add r5, r7, r0
+_0222ECF2:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0xf
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r7, #4]
+ add r1, r5, #0
+ mov r2, #1
+ mov r3, #9
+ bl FUN_02019064
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [sp, #0x14]
+ add r6, #0x1e
+ add r0, r0, #1
+ add r4, r4, #5
+ add r5, #0x10
+ str r0, [sp, #0x14]
+ cmp r0, #3
+ blt _0222ECF2
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r3, #2
+ ldr r1, _0222ED94 ; =0x00000E98
+ str r3, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x60
+ str r0, [sp, #0x10]
+ ldr r0, [r7, #4]
+ add r1, r7, r1
+ mov r2, #0
+ bl FUN_02019064
+ ldr r0, _0222ED94 ; =0x00000E98
+ mov r1, #0xf
+ add r0, r7, r0
+ bl FUN_02019620
+ mov r0, #0x13
+ 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, #0x96
+ ldr r1, _0222ED98 ; =0x00000FB8
+ str r0, [sp, #0x10]
+ ldr r0, [r7, #4]
+ add r1, r7, r1
+ mov r2, #0
+ mov r3, #2
+ bl FUN_02019064
+ ldr r0, _0222ED98 ; =0x00000FB8
+ mov r1, #0xf
+ add r0, r7, r0
+ bl FUN_02019620
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222ED88: .word 0x00000EB8
+_0222ED8C: .word 0x000F0400
+_0222ED90: .word 0x00000ED8
+_0222ED94: .word 0x00000E98
+_0222ED98: .word 0x00000FB8
+ thumb_func_end MOD80_0222EC98
+
+ thumb_func_start MOD80_0222ED9C
+MOD80_0222ED9C: ; 0x0222ED9C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, _0222EDD0 ; =0x00000FB8
+ add r0, r6, r0
+ bl FUN_02019178
+ ldr r0, _0222EDD4 ; =0x00000E98
+ add r0, r6, r0
+ bl FUN_02019178
+ ldr r0, _0222EDD8 ; =0x00000ED8
+ mov r4, #0
+ add r5, r6, r0
+_0222EDB6:
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #3
+ blt _0222EDB6
+ ldr r0, _0222EDDC ; =0x00000EB8
+ add r0, r6, r0
+ bl FUN_02019178
+ pop {r4, r5, r6, pc}
+ nop
+_0222EDD0: .word 0x00000FB8
+_0222EDD4: .word 0x00000E98
+_0222EDD8: .word 0x00000ED8
+_0222EDDC: .word 0x00000EB8
+ thumb_func_end MOD80_0222ED9C
+
+ thumb_func_start MOD80_0222EDE0
+MOD80_0222EDE0: ; 0x0222EDE0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xb4
+ mov r1, #0x3e
+ bl FUN_020219F4
+ ldr r1, _0222EE04 ; =0x00000B4C
+ str r0, [r4, r1]
+ sub r1, #0x18
+ ldr r0, [r4, r1]
+ mov r1, #0x27
+ bl FUN_0200A914
+ mov r1, #0xb5
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ pop {r4, pc}
+ nop
+_0222EE04: .word 0x00000B4C
+ thumb_func_end MOD80_0222EDE0
+
+ thumb_func_start MOD80_0222EE08
+MOD80_0222EE08: ; 0x0222EE08
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _0222EE20 ; =0x00000B4C
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ mov r0, #0xb5
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ pop {r4, pc}
+ .align 2, 0
+_0222EE20: .word 0x00000B4C
+ thumb_func_end MOD80_0222EE08
+
+ thumb_func_start MOD80_0222EE24
+MOD80_0222EE24: ; 0x0222EE24
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _0222EE60 ; =0x00000FEC
+ ldrh r0, [r4, r0]
+ cmp r0, #0
+ beq _0222EE5A
+ 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
+ add r0, r4, #0
+ mov r1, #7
+ mov r2, #0xb
+ bl MOD80_0222E7A8
+ mov r0, #1
+ str r0, [r4, #0x1c]
+ mov r0, #9
+ str r0, [r4, #0x2c]
+_0222EE5A:
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_0222EE60: .word 0x00000FEC
+ thumb_func_end MOD80_0222EE24
+
+ thumb_func_start MOD80_0222EE64
+MOD80_0222EE64: ; 0x0222EE64
+ push {r3, lr}
+ mov r1, #0xa
+ mov r2, #2
+ bl MOD80_0222E6DC
+ mov r0, #3
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD80_0222EE64
+
+ thumb_func_start MOD80_0222EE74
+MOD80_0222EE74: ; 0x0222EE74
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ mov r0, #3
+ str r0, [r4, #0x2c]
+ add sp, #0xc
+ pop {r3, r4, pc}
+ thumb_func_end MOD80_0222EE74
+
+ thumb_func_start MOD80_0222EE98
+MOD80_0222EE98: ; 0x0222EE98
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0222EEA8
+ mov r0, #5
+ str r0, [r4, #0x2c]
+_0222EEA8:
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_0222EE98
+
+ thumb_func_start MOD80_0222EEAC
+MOD80_0222EEAC: ; 0x0222EEAC
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0222EEBC
+ mov r0, #5
+ str r0, [r4, #0x2c]
+_0222EEBC:
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_0222EEAC
+
+ thumb_func_start MOD80_0222EEC0
+MOD80_0222EEC0: ; 0x0222EEC0
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r1, _0222EEF4 ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ mov r1, #4
+ mov r2, #1
+ mov r3, #0
+ bl MOD80_0222F250
+ add r0, r4, #0
+ mov r1, #0xa
+ mov r2, #6
+ bl MOD80_0222E6DC
+ ldr r0, _0222EEF8 ; =0x00000D5C
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl FUN_020200BC
+ add r0, r4, #0
+ bl MOD80_0222E868
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_0222EEF4: .word 0x00000F0F
+_0222EEF8: .word 0x00000D5C
+ thumb_func_end MOD80_0222EEC0
+
+ thumb_func_start MOD80_0222EEFC
+MOD80_0222EEFC: ; 0x0222EEFC
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r1, _0222F084 ; =0x021C48B8
+ mov r2, #2
+ ldr r1, [r1, #0x48]
+ add r4, r0, #0
+ tst r2, r1
+ beq _0222EF36
+ bl MOD80_0222E7BC
+ add r2, r0, #0
+ ldr r0, _0222F088 ; =0x00000F0F
+ mov r1, #7
+ str r0, [sp]
+ add r0, r4, #0
+ mov r3, #0
+ bl MOD80_0222F2A8
+ add r0, r4, #0
+ mov r1, #0xa
+ mov r2, #0xc
+ bl MOD80_0222E6DC
+ ldr r0, _0222F08C ; =0x00000D5C
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl FUN_020200BC
+ b _0222F07C
+_0222EF36:
+ mov r2, #1
+ tst r2, r1
+ beq _0222F002
+ add r1, r4, #0
+ add r1, #0xb4
+ ldrh r1, [r1]
+ cmp r1, #0
+ beq _0222EF50
+ cmp r1, #1
+ beq _0222EFBE
+ cmp r1, #2
+ beq _0222EFD2
+ b _0222F07C
+_0222EF50:
+ ldrh r1, [r4, #0x36]
+ cmp r1, #0
+ bne _0222EF6A
+ mov r1, #5
+ add r2, r1, #0
+ bl MOD80_0222E7A8
+ mov r0, #9
+ str r0, [r4, #0x2c]
+ ldr r0, _0222F090 ; =0x000005DC
+ bl FUN_020054C8
+ b _0222F07C
+_0222EF6A:
+ ldrh r1, [r4, #0x3a]
+ cmp r1, #0
+ bne _0222EF8C
+ mov r1, #7
+ mov r2, #0xb
+ bl MOD80_0222E7A8
+ mov r0, #2
+ str r0, [r4, #0x1c]
+ mov r0, #9
+ str r0, [r4, #0x2c]
+ ldr r0, _0222F094 ; =0x00000708
+ strh r0, [r4, #0x3a]
+ ldr r0, _0222F090 ; =0x000005DC
+ bl FUN_020054C8
+ b _0222F07C
+_0222EF8C:
+ ldr r0, _0222F08C ; =0x00000D5C
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl FUN_020200BC
+ ldr r0, _0222F088 ; =0x00000F0F
+ mov r1, #0x22
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #1
+ mov r3, #0
+ bl MOD80_0222F250
+ add r0, r4, #0
+ mov r1, #0xb
+ mov r2, #5
+ bl MOD80_0222E6DC
+ ldr r0, _0222F098 ; =0x000005F3
+ bl FUN_020054C8
+ ldr r0, _0222F09C ; =0x00000FDC
+ mov r1, #0
+ str r1, [r4, r0]
+ b _0222F07C
+_0222EFBE:
+ mov r1, #4
+ mov r2, #0
+ bl MOD80_0222E7A8
+ mov r0, #9
+ str r0, [r4, #0x2c]
+ ldr r0, _0222F090 ; =0x000005DC
+ bl FUN_020054C8
+ b _0222F07C
+_0222EFD2:
+ bl MOD80_0222E7BC
+ add r2, r0, #0
+ ldr r0, _0222F088 ; =0x00000F0F
+ mov r1, #7
+ str r0, [sp]
+ add r0, r4, #0
+ mov r3, #0
+ bl MOD80_0222F2A8
+ add r0, r4, #0
+ mov r1, #0xa
+ mov r2, #0xc
+ bl MOD80_0222E6DC
+ ldr r0, _0222F08C ; =0x00000D5C
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl FUN_020200BC
+ ldr r0, _0222F090 ; =0x000005DC
+ bl FUN_020054C8
+ b _0222F07C
+_0222F002:
+ mov r0, #0x40
+ tst r0, r1
+ beq _0222F040
+ add r0, r4, #0
+ add r0, #0xb4
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _0222F07C
+ add r0, r4, #0
+ add r0, #0xb4
+ ldrh r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xb4
+ strh r1, [r0]
+ ldr r0, _0222F090 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ add r0, #0xb4
+ ldrh r0, [r0]
+ ldr r1, _0222F0A0 ; =0x02236E98
+ ldr r2, _0222F0A4 ; =0x02236E9A
+ lsl r3, r0, #2
+ ldr r0, _0222F08C ; =0x00000D5C
+ ldrh r1, [r1, r3]
+ ldrh r2, [r2, r3]
+ ldr r0, [r4, r0]
+ bl MOD80_0222E6E4
+ b _0222F07C
+_0222F040:
+ mov r0, #0x80
+ tst r0, r1
+ beq _0222F07C
+ add r0, r4, #0
+ add r0, #0xb4
+ ldrh r0, [r0]
+ cmp r0, #2
+ bhs _0222F07C
+ add r0, r4, #0
+ add r0, #0xb4
+ ldrh r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xb4
+ strh r1, [r0]
+ ldr r0, _0222F090 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ add r0, #0xb4
+ ldrh r0, [r0]
+ ldr r1, _0222F0A0 ; =0x02236E98
+ ldr r2, _0222F0A4 ; =0x02236E9A
+ lsl r3, r0, #2
+ ldr r0, _0222F08C ; =0x00000D5C
+ ldrh r1, [r1, r3]
+ ldrh r2, [r2, r3]
+ ldr r0, [r4, r0]
+ bl MOD80_0222E6E4
+_0222F07C:
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_0222F084: .word 0x021C48B8
+_0222F088: .word 0x00000F0F
+_0222F08C: .word 0x00000D5C
+_0222F090: .word 0x000005DC
+_0222F094: .word 0x00000708
+_0222F098: .word 0x000005F3
+_0222F09C: .word 0x00000FDC
+_0222F0A0: .word 0x02236E98
+_0222F0A4: .word 0x02236E9A
+ thumb_func_end MOD80_0222EEFC
+
+ thumb_func_start MOD80_0222F0A8
+MOD80_0222F0A8: ; 0x0222F0A8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r0, [r0, #0x1c]
+ bl FUN_020239CC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD80_02235A10
+ mov r0, #8
+ str r0, [r4, #0x2c]
+ ldr r0, _0222F0CC ; =0x00000FEC
+ mov r1, #0
+ strh r1, [r4, r0]
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_0222F0CC: .word 0x00000FEC
+ thumb_func_end MOD80_0222F0A8
+
+ thumb_func_start MOD80_0222F0D0
+MOD80_0222F0D0: ; 0x0222F0D0
+ ldr r1, _0222F0E0 ; =0x00000FEC
+ ldrh r1, [r0, r1]
+ cmp r1, #0
+ beq _0222F0DC
+ mov r1, #9
+ str r1, [r0, #0x2c]
+_0222F0DC:
+ mov r0, #3
+ bx lr
+ .align 2, 0
+_0222F0E0: .word 0x00000FEC
+ thumb_func_end MOD80_0222F0D0
+
+ thumb_func_start MOD80_0222F0E4
+MOD80_0222F0E4: ; 0x0222F0E4
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ bne _0222F10A
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ b _0222F122
+_0222F10A:
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+_0222F122:
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ mov r0, #4
+ add sp, #0xc
+ pop {r3, r4, pc}
+ thumb_func_end MOD80_0222F0E4
+
+ thumb_func_start MOD80_0222F12C
+MOD80_0222F12C: ; 0x0222F12C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #0xd
+ add r2, r1, #0
+ ldr r0, [r4, #4]
+ add r2, #0xf5
+ bl MOD80_0222E6A8
+ ldr r1, _0222F148 ; =0x00000FCC
+ str r0, [r4, r1]
+ mov r0, #0xd
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_0222F148: .word 0x00000FCC
+ thumb_func_end MOD80_0222F12C
+
+ thumb_func_start MOD80_0222F14C
+MOD80_0222F14C: ; 0x0222F14C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _0222F1AC ; =0x00000FCC
+ mov r1, #0x3e
+ ldr r0, [r4, r0]
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _0222F1A8
+ sub r1, r1, #1
+ cmp r0, r1
+ ldr r0, _0222F1B0 ; =0x00000FB8
+ bne _0222F18A
+ add r0, r4, r0
+ mov r1, #1
+ bl FUN_0200D0E0
+ ldr r0, _0222F1B0 ; =0x00000FB8
+ add r0, r4, r0
+ bl FUN_02019570
+ ldr r0, _0222F1B4 ; =0x00000D5C
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl FUN_020200BC
+ mov r0, #5
+ str r0, [r4, #0x2c]
+ b _0222F1A8
+_0222F18A:
+ add r0, r4, r0
+ mov r1, #1
+ bl FUN_0200D0E0
+ ldr r0, _0222F1B0 ; =0x00000FB8
+ add r0, r4, r0
+ bl FUN_02019570
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD80_0222E7A8
+ mov r0, #7
+ str r0, [r4, #0x2c]
+_0222F1A8:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_0222F1AC: .word 0x00000FCC
+_0222F1B0: .word 0x00000FB8
+_0222F1B4: .word 0x00000D5C
+ thumb_func_end MOD80_0222F14C
+
+ thumb_func_start MOD80_0222F1B8
+MOD80_0222F1B8: ; 0x0222F1B8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x2e
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0222F1D2
+ ldr r0, [r4, #0x30]
+ str r0, [r4, #0x2c]
+_0222F1D2:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_0222F1B8
+
+ thumb_func_start MOD80_0222F1D8
+MOD80_0222F1D8: ; 0x0222F1D8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x2e
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0222F204
+ ldr r0, _0222F208 ; =0x00000FDC
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ ldr r1, [r4, r0]
+ cmp r1, #0x2d
+ ble _0222F204
+ mov r1, #0
+ str r1, [r4, r0]
+ ldr r0, [r4, #0x30]
+ str r0, [r4, #0x2c]
+_0222F204:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_0222F208: .word 0x00000FDC
+ thumb_func_end MOD80_0222F1D8
+
+ thumb_func_start MOD80_0222F20C
+MOD80_0222F20C: ; 0x0222F20C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldrh r1, [r7, #0x36]
+ mov r0, #0xc
+ ldr r2, _0222F240 ; =0x02236EB4
+ mul r0, r1
+ add r4, r2, r0
+ ldr r0, _0222F244 ; =0x00000ED8
+ mov r6, #0
+ add r5, r7, r0
+_0222F220:
+ ldr r1, _0222F248 ; =0x00000B34
+ ldr r2, [r4]
+ ldr r1, [r7, r1]
+ ldr r3, _0222F24C ; =0x00000F0F
+ add r0, r5, #0
+ bl MOD80_0222F300
+ add r0, r5, #0
+ bl FUN_020191D0
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, #0x10
+ cmp r6, #3
+ blt _0222F220
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222F240: .word 0x02236EB4
+_0222F244: .word 0x00000ED8
+_0222F248: .word 0x00000B34
+_0222F24C: .word 0x00000F0F
+ thumb_func_end MOD80_0222F20C
+
+ thumb_func_start MOD80_0222F250
+MOD80_0222F250: ; 0x0222F250
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r2, #0
+ ldr r2, _0222F29C ; =0x00000B34
+ add r5, r0, #0
+ ldr r0, [r5, r2]
+ add r2, #0x18
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ ldr r0, _0222F2A0 ; =0x00000E98
+ mov r1, #0xf
+ add r0, r5, r0
+ bl FUN_02019620
+ ldr r0, _0222F2A0 ; =0x00000E98
+ mov r1, #0
+ add r0, r5, r0
+ mov r2, #1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ mov r3, #0
+ str r3, [sp]
+ str r4, [sp, #4]
+ ldr r0, _0222F2A0 ; =0x00000E98
+ ldr r2, _0222F2A4 ; =0x00000B4C
+ str r3, [sp, #8]
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ mov r1, #0x2e
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_0222F29C: .word 0x00000B34
+_0222F2A0: .word 0x00000E98
+_0222F2A4: .word 0x00000B4C
+ thumb_func_end MOD80_0222F250
+
+ thumb_func_start MOD80_0222F2A8
+MOD80_0222F2A8: ; 0x0222F2A8
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r2, #0
+ ldr r2, _0222F2F4 ; =0x00000B34
+ add r5, r0, #0
+ ldr r0, [r5, r2]
+ add r2, #0x18
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ ldr r0, _0222F2F8 ; =0x00000FB8
+ mov r1, #0xf
+ add r0, r5, r0
+ bl FUN_02019620
+ ldr r0, _0222F2F8 ; =0x00000FB8
+ mov r1, #0
+ add r0, r5, r0
+ mov r2, #1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ mov r3, #0
+ str r3, [sp]
+ str r4, [sp, #4]
+ ldr r0, _0222F2F8 ; =0x00000FB8
+ ldr r2, _0222F2FC ; =0x00000B4C
+ str r3, [sp, #8]
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ mov r1, #0x2e
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_0222F2F4: .word 0x00000B34
+_0222F2F8: .word 0x00000FB8
+_0222F2FC: .word 0x00000B4C
+ thumb_func_end MOD80_0222F2A8
+
+ thumb_func_start MOD80_0222F300
+MOD80_0222F300: ; 0x0222F300
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r0, r1, #0
+ add r4, r3, #0
+ add r1, r2, #0
+ bl FUN_0200A914
+ lsl r1, r4, #0x18
+ add r6, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl FUN_02019620
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ add r0, r5, #0
+ mov r1, #1
+ add r2, r6, #0
+ str r3, [sp, #8]
+ bl FUN_0201BD84
+ add r0, r6, #0
+ bl FUN_02021A20
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD80_0222F300
+
+ thumb_func_start MOD80_0222F338
+MOD80_0222F338: ; 0x0222F338
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, [r0, #4]
+ mov r0, #2
+ lsl r0, r0, #8
+ str r0, [sp]
+ mov r0, #0x3e
+ str r0, [sp, #4]
+ mov r0, #0x68
+ mov r1, #5
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x2a
+ lsl r0, r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x68
+ mov r1, #0xf
+ 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, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x68
+ mov r1, #0x1f
+ add r2, r4, #0
+ mov r3, #5
+ bl FUN_020068C8
+ add sp, #0x10
+ pop {r4, pc}
+ thumb_func_end MOD80_0222F338
+
+ thumb_func_start MOD80_0222F394
+MOD80_0222F394: ; 0x0222F394
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl MOD80_0222F7F0
+ ldr r0, [r4, #4]
+ bl MOD80_0222F494
+ add r0, r4, #0
+ bl MOD80_0222F5A8
+ add r0, r4, #0
+ bl MOD80_0222F6EC
+ add r0, r4, #0
+ bl MOD80_0222F690
+ add r0, r4, #0
+ add r0, #0xd4
+ bl FUN_020690E4
+ str r0, [sp]
+ mov r0, #7
+ lsl r0, r0, #6
+ ldr r2, _0222F448 ; =0x00000B34
+ add r0, r4, r0
+ str r0, [sp, #4]
+ add r1, r2, #4
+ ldr r0, [r4, r2]
+ sub r2, r2, #4
+ ldr r3, _0222F44C ; =0x00000F08
+ ldr r1, [r4, r1]
+ ldr r2, [r4, r2]
+ add r3, r4, r3
+ bl MOD80_0222FBC0
+ ldr r0, _0222F448 ; =0x00000B34
+ ldr r1, _0222F450 ; =0x00000F58
+ mov r2, #0x1e
+ lsl r2, r2, #4
+ ldr r0, [r4, r0]
+ add r1, r4, r1
+ add r2, r4, r2
+ bl MOD80_0222FD28
+ ldr r1, _0222F454 ; =0x000001C7
+ ldrsb r0, [r4, r1]
+ add r1, r1, #1
+ ldrsb r1, [r4, r1]
+ bl MOD80_02234668
+ mov r1, #0x71
+ lsl r1, r1, #2
+ ldrsh r2, [r4, r1]
+ ldr r3, _0222F458 ; =0x00000F78
+ add r1, r1, #2
+ str r2, [sp]
+ ldrsb r1, [r4, r1]
+ ldr r2, _0222F448 ; =0x00000B34
+ add r3, r4, r3
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r1, r2, #4
+ ldr r0, [r4, r2]
+ sub r2, r2, #4
+ ldr r1, [r4, r1]
+ ldr r2, [r4, r2]
+ bl MOD80_02234048
+ add r0, r4, #0
+ add r0, #0xd4
+ bl MOD80_0222FD88
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ mov r0, #2
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_0222F448: .word 0x00000B34
+_0222F44C: .word 0x00000F08
+_0222F450: .word 0x00000F58
+_0222F454: .word 0x000001C7
+_0222F458: .word 0x00000F78
+ thumb_func_end MOD80_0222F394
+
+ thumb_func_start MOD80_0222F45C
+MOD80_0222F45C: ; 0x0222F45C
+ push {r3, lr}
+ ldr r1, [r0, #0x2c]
+ lsl r2, r1, #2
+ ldr r1, _0222F46C ; =0x02237A40
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, pc}
+ nop
+_0222F46C: .word 0x02237A40
+ thumb_func_end MOD80_0222F45C
+
+ thumb_func_start MOD80_0222F470
+MOD80_0222F470: ; 0x0222F470
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222F6DC
+ add r0, r4, #0
+ bl MOD80_0222F830
+ add r0, r4, #0
+ bl MOD80_0222F7B8
+ ldr r0, [r4, #4]
+ bl MOD80_0222F57C
+ add r0, r4, #0
+ bl MOD80_0222E7B0
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD80_0222F470
+
+ thumb_func_start MOD80_0222F494
+MOD80_0222F494: ; 0x0222F494
+ push {r4, r5, lr}
+ sub sp, #0x8c
+ ldr r5, _0222F568 ; =0x02236FC8
+ add r4, r0, #0
+ ldmia r5!, {r0, r1}
+ add r3, sp, #0x70
+ 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, _0222F56C ; =0x02236FAC
+ 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
+ ldr r5, _0222F570 ; =0x02236F90
+ 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, _0222F574 ; =0x02236F74
+ 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, _0222F578 ; =0x02236F58
+ 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]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x3e
+ bl FUN_02017F18
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x3e
+ bl FUN_02017F18
+ add sp, #0x8c
+ pop {r4, r5, pc}
+ nop
+_0222F568: .word 0x02236FC8
+_0222F56C: .word 0x02236FAC
+_0222F570: .word 0x02236F90
+_0222F574: .word 0x02236F74
+_0222F578: .word 0x02236F58
+ thumb_func_end MOD80_0222F494
+
+ thumb_func_start MOD80_0222F57C
+MOD80_0222F57C: ; 0x0222F57C
+ 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, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020178A0
+ pop {r4, pc}
+ thumb_func_end MOD80_0222F57C
+
+ thumb_func_start MOD80_0222F5A8
+MOD80_0222F5A8: ; 0x0222F5A8
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r4, [r5, #4]
+ mov r0, #0x60
+ str r0, [sp]
+ mov r0, #0x3e
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x68
+ mov r1, #7
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r0, #1
+ lsl r0, r0, #8
+ str r0, [sp]
+ mov r0, #0x3e
+ str r0, [sp, #4]
+ mov r0, #0x68
+ mov r1, #5
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r1, #0x1a
+ mov r0, #0
+ lsl r1, r1, #4
+ mov r2, #0x3e
+ bl FUN_02002EEC
+ ldr r0, [r5]
+ ldr r0, [r0, #0x24]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x3e
+ 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, #0x3e
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x1f
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xa
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x68
+ mov r1, #0x11
+ add r2, r4, #0
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x68
+ mov r1, #0x19
+ add r2, r4, #0
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x2a
+ lsl r0, r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x68
+ mov r1, #0xf
+ 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, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x68
+ mov r1, #0x1f
+ add r2, r4, #0
+ mov r3, #5
+ bl FUN_020068C8
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD80_0222F5A8
+
+ thumb_func_start MOD80_0222F690
+MOD80_0222F690: ; 0x0222F690
+ push {r4, lr}
+ sub sp, #0x30
+ mov r2, #0xcf
+ add r4, r0, #0
+ lsl r2, r2, #4
+ add r0, sp, #0
+ add r1, r4, #0
+ add r2, r4, r2
+ mov r3, #1
+ bl MOD80_0222E5E8
+ mov r0, #0x32
+ lsl r0, r0, #0xe
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ add r0, sp, #0
+ bl FUN_0201FE94
+ ldr r1, _0222F6D8 ; =0x00000E6C
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, _0222F6D8 ; =0x00000E6C
+ mov r1, #0x25
+ ldr r0, [r4, r0]
+ bl FUN_02020130
+ bl FUN_02033E74
+ add sp, #0x30
+ pop {r4, pc}
+ nop
+_0222F6D8: .word 0x00000E6C
+ thumb_func_end MOD80_0222F690
+
+ thumb_func_start MOD80_0222F6DC
+MOD80_0222F6DC: ; 0x0222F6DC
+ ldr r1, _0222F6E4 ; =0x00000E6C
+ ldr r3, _0222F6E8 ; =FUN_0201FFC8
+ ldr r0, [r0, r1]
+ bx r3
+ .align 2, 0
+_0222F6E4: .word 0x00000E6C
+_0222F6E8: .word FUN_0201FFC8
+ thumb_func_end MOD80_0222F6DC
+
+ thumb_func_start MOD80_0222F6EC
+MOD80_0222F6EC: ; 0x0222F6EC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r0, [sp, #0x14]
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r3, #2
+ str r3, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x28
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ ldr r2, _0222F7A8 ; =0x00000E98
+ ldr r1, [sp, #0x14]
+ ldr r0, [r0, #4]
+ add r1, r1, r2
+ mov r2, #0
+ bl FUN_02019064
+ ldr r1, _0222F7A8 ; =0x00000E98
+ ldr r0, [sp, #0x14]
+ add r0, r0, r1
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #0xf
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x5e
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ ldr r2, _0222F7AC ; =0x00000ED8
+ ldr r1, [sp, #0x14]
+ ldr r0, [r0, #4]
+ add r1, r1, r2
+ mov r2, #0
+ mov r3, #0x15
+ bl FUN_02019064
+ ldr r1, _0222F7B0 ; =0x00000F08
+ ldr r0, [sp, #0x14]
+ ldr r4, _0222F7B4 ; =0x02236FE4
+ mov r6, #0x86
+ mov r7, #0
+ add r5, r0, r1
+_0222F754:
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [r4, #8]
+ mov r2, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldr r0, [r4, #0xc]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ ldr r3, [r4]
+ ldr r0, [r0, #4]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r1, [r4, #8]
+ ldr r0, [r4, #0xc]
+ add r7, r7, #1
+ mul r0, r1
+ add r6, r6, r0
+ add r4, #0x10
+ add r5, #0x10
+ cmp r7, #0xa
+ blt _0222F754
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222F7A8: .word 0x00000E98
+_0222F7AC: .word 0x00000ED8
+_0222F7B0: .word 0x00000F08
+_0222F7B4: .word 0x02236FE4
+ thumb_func_end MOD80_0222F6EC
+
+ thumb_func_start MOD80_0222F7B8
+MOD80_0222F7B8: ; 0x0222F7B8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _0222F7E4 ; =0x00000E98
+ add r0, r5, r0
+ bl FUN_02019178
+ ldr r0, _0222F7E8 ; =0x00000ED8
+ add r0, r5, r0
+ bl FUN_02019178
+ ldr r0, _0222F7EC ; =0x00000F08
+ mov r4, #0
+ add r5, r5, r0
+_0222F7D2:
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #0xa
+ blt _0222F7D2
+ pop {r3, r4, r5, pc}
+ nop
+_0222F7E4: .word 0x00000E98
+_0222F7E8: .word 0x00000ED8
+_0222F7EC: .word 0x00000F08
+ thumb_func_end MOD80_0222F7B8
+
+ thumb_func_start MOD80_0222F7F0
+MOD80_0222F7F0: ; 0x0222F7F0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r0, #0xb4
+ mov r1, #0x3e
+ bl FUN_020219F4
+ ldr r1, _0222F82C ; =0x00000B4C
+ str r0, [r5, r1]
+ sub r1, #0x18
+ ldr r0, [r5, r1]
+ mov r1, #0x27
+ bl FUN_0200A914
+ mov r1, #0xb5
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r4, #0
+ mov r7, #0x14
+ add r6, r1, #4
+_0222F816:
+ add r0, r7, #0
+ mov r1, #0x3e
+ bl FUN_020219F4
+ str r0, [r5, r6]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xa
+ blt _0222F816
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222F82C: .word 0x00000B4C
+ thumb_func_end MOD80_0222F7F0
+
+ thumb_func_start MOD80_0222F830
+MOD80_0222F830: ; 0x0222F830
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldr r6, _0222F85C ; =0x00000B54
+ mov r4, #0
+ add r5, r7, #0
+_0222F83A:
+ ldr r0, [r5, r6]
+ bl FUN_02021A20
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xa
+ blt _0222F83A
+ ldr r0, _0222F860 ; =0x00000B4C
+ ldr r0, [r7, r0]
+ bl FUN_02021A20
+ mov r0, #0xb5
+ lsl r0, r0, #4
+ ldr r0, [r7, r0]
+ bl FUN_02021A20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222F85C: .word 0x00000B54
+_0222F860: .word 0x00000B4C
+ thumb_func_end MOD80_0222F830
+
+ thumb_func_start MOD80_0222F864
+MOD80_0222F864: ; 0x0222F864
+ mov r1, #1
+ str r1, [r0, #0x2c]
+ mov r0, #3
+ bx lr
+ thumb_func_end MOD80_0222F864
+
+ thumb_func_start MOD80_0222F86C
+MOD80_0222F86C: ; 0x0222F86C
+ push {r4, lr}
+ sub sp, #8
+ ldr r1, _0222F8C0 ; =0x021C48B8
+ mov r2, #1
+ ldr r3, [r1, #0x48]
+ add r4, r0, #0
+ add r1, r3, #0
+ tst r1, r2
+ beq _0222F8A2
+ ldr r1, _0222F8C4 ; =0x00000F0F
+ mov r3, #0
+ str r1, [sp]
+ add r1, r4, #0
+ add r1, #0xd4
+ str r1, [sp, #4]
+ mov r1, #5
+ bl MOD80_0222FB3C
+ add r0, r4, #0
+ mov r1, #3
+ mov r2, #7
+ bl MOD80_0222E6DC
+ ldr r0, _0222F8C8 ; =0x000005DC
+ bl FUN_020054C8
+ b _0222F8B8
+_0222F8A2:
+ mov r1, #2
+ tst r3, r1
+ beq _0222F8B8
+ str r1, [r4, #0x2c]
+ add r1, r2, #0
+ mov r2, #0
+ bl MOD80_0222E7A8
+ ldr r0, _0222F8C8 ; =0x000005DC
+ bl FUN_020054C8
+_0222F8B8:
+ mov r0, #3
+ add sp, #8
+ pop {r4, pc}
+ nop
+_0222F8C0: .word 0x021C48B8
+_0222F8C4: .word 0x00000F0F
+_0222F8C8: .word 0x000005DC
+ thumb_func_end MOD80_0222F86C
+
+ thumb_func_start MOD80_0222F8CC
+MOD80_0222F8CC: ; 0x0222F8CC
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #6
+ mov r1, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ mov r0, #4
+ add sp, #0xc
+ pop {r3, r4, pc}
+ thumb_func_end MOD80_0222F8CC
+
+ thumb_func_start MOD80_0222F8F4
+MOD80_0222F8F4: ; 0x0222F8F4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r2, _0222F910 ; =0x0000014E
+ mov r1, #0xf
+ bl MOD80_0222E6A8
+ ldr r1, _0222F914 ; =0x00000FCC
+ str r0, [r4, r1]
+ mov r0, #6
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_0222F910: .word 0x0000014E
+_0222F914: .word 0x00000FCC
+ thumb_func_end MOD80_0222F8F4
+
+ thumb_func_start MOD80_0222F918
+MOD80_0222F918: ; 0x0222F918
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _0222F960 ; =0x00000FCC
+ mov r1, #0x3e
+ ldr r0, [r4, r0]
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _0222F95C
+ sub r1, r1, #1
+ cmp r0, r1
+ bne _0222F942
+ ldr r0, _0222F964 ; =0x00000E98
+ mov r1, #0
+ add r0, r4, r0
+ str r1, [r4, #0x2c]
+ bl FUN_0200D0E0
+ b _0222F956
+_0222F942:
+ mov r0, #2
+ str r0, [r4, #0x2c]
+ ldr r0, _0222F968 ; =0x0000100C
+ mov r1, #1
+ str r1, [r4, r0]
+ add r0, r4, #0
+ mov r1, #7
+ mov r2, #8
+ bl MOD80_0222E7A8
+_0222F956:
+ add r0, r4, #0
+ bl MOD80_0222FE18
+_0222F95C:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_0222F960: .word 0x00000FCC
+_0222F964: .word 0x00000E98
+_0222F968: .word 0x0000100C
+ thumb_func_end MOD80_0222F918
+
+ thumb_func_start MOD80_0222F96C
+MOD80_0222F96C: ; 0x0222F96C
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0
+ add r2, sp, #8
+ strb r0, [r2, #8]
+ mov r0, #1
+ strb r0, [r2, #9]
+ mov r0, #2
+ strb r0, [r2, #0xa]
+ ldrb r3, [r2, #0xb]
+ mov r1, #0xf
+ bic r3, r1
+ strb r3, [r2, #0xb]
+ ldrb r3, [r2, #0xb]
+ mov r1, #0x30
+ bic r3, r1
+ strb r3, [r2, #0xb]
+ ldrb r3, [r2, #0xb]
+ mov r1, #0xc0
+ bic r3, r1
+ mov r1, #0x3e
+ strb r3, [r2, #0xb]
+ bl FUN_02012838
+ ldr r1, _0222F9FC ; =0x00000FC8
+ mov r2, #0x36
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ ldr r1, _0222FA00 ; =0x00000B34
+ mov r3, #1
+ ldr r1, [r4, r1]
+ bl FUN_02012880
+ ldr r0, _0222F9FC ; =0x00000FC8
+ ldr r1, _0222FA00 ; =0x00000B34
+ ldr r0, [r4, r0]
+ ldr r1, [r4, r1]
+ mov r2, #0x37
+ mov r3, #2
+ bl FUN_02012880
+ ldr r0, _0222F9FC ; =0x00000FC8
+ mov r2, #0x1f
+ ldr r1, [r4, r0]
+ sub r0, #0xf0
+ str r1, [sp, #8]
+ add r0, r4, r0
+ mov r1, #0
+ mov r3, #0xb
+ str r0, [sp, #0xc]
+ bl FUN_0200CCA4
+ mov r0, #0x3e
+ str r0, [sp]
+ mov r0, #2
+ mov r2, #0
+ str r0, [sp, #4]
+ add r0, sp, #8
+ mov r1, #9
+ add r3, r2, #0
+ bl FUN_02001C14
+ mov r1, #0xfd
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ mov r0, #8
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_0222F9FC: .word 0x00000FC8
+_0222FA00: .word 0x00000B34
+ thumb_func_end MOD80_0222F96C
+
+ thumb_func_start MOD80_0222FA04
+MOD80_0222FA04: ; 0x0222FA04
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0xfd
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02001C78
+ cmp r0, #1
+ beq _0222FA26
+ cmp r0, #2
+ beq _0222FAA4
+ mov r1, #1
+ mvn r1, r1
+ cmp r0, r1
+ beq _0222FAA4
+ b _0222FAD6
+_0222FA26:
+ mov r0, #0xfd
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_02001C5C
+ ldr r0, _0222FADC ; =0x00000FC8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _0222FAE0 ; =0x00000ED8
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200CCF8
+ add r4, r5, #0
+ add r4, #0xd4
+ add r0, r4, #0
+ bl MOD80_022331F8
+ cmp r0, #0
+ beq _0222FA80
+ ldr r0, [r5]
+ ldr r0, [r0, #8]
+ bl FUN_0206B9AC
+ cmp r0, #6
+ bne _0222FA80
+ ldr r0, _0222FAE4 ; =0x00000F0F
+ mov r1, #0x24
+ str r0, [sp]
+ add r0, r5, #0
+ mov r2, #1
+ mov r3, #0
+ str r4, [sp, #4]
+ bl MOD80_0222FB3C
+ add r0, r5, #0
+ mov r1, #3
+ mov r2, #1
+ bl MOD80_0222E6DC
+ add sp, #8
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+_0222FA80:
+ ldr r0, _0222FAE4 ; =0x00000F0F
+ mov r1, #6
+ str r0, [sp]
+ add r0, r5, #0
+ mov r2, #1
+ mov r3, #0
+ str r4, [sp, #4]
+ bl MOD80_0222FB3C
+ add r0, r5, #0
+ mov r1, #3
+ mov r2, #5
+ bl MOD80_0222E6DC
+ add r0, r5, #0
+ bl MOD80_0222FE18
+ b _0222FAD6
+_0222FAA4:
+ mov r0, #0xfd
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_02001C5C
+ ldr r0, _0222FADC ; =0x00000FC8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _0222FAE0 ; =0x00000ED8
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200CCF8
+ mov r0, #2
+ str r0, [r5, #0x2c]
+ add r0, r5, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD80_0222E7A8
+ add r0, r5, #0
+ bl MOD80_0222FE18
+_0222FAD6:
+ mov r0, #3
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0222FADC: .word 0x00000FC8
+_0222FAE0: .word 0x00000ED8
+_0222FAE4: .word 0x00000F0F
+ thumb_func_end MOD80_0222FA04
+
+ thumb_func_start MOD80_0222FAE8
+MOD80_0222FAE8: ; 0x0222FAE8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x2e
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0222FB02
+ ldr r0, [r4, #0x30]
+ str r0, [r4, #0x2c]
+_0222FB02:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_0222FAE8
+
+ thumb_func_start MOD80_0222FB08
+MOD80_0222FB08: ; 0x0222FB08
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x2e
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0222FB34
+ ldr r0, _0222FB38 ; =0x00000FDC
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ ldr r1, [r4, r0]
+ cmp r1, #0x2d
+ ble _0222FB34
+ mov r1, #0
+ str r1, [r4, r0]
+ ldr r0, [r4, #0x30]
+ str r0, [r4, #0x2c]
+_0222FB34:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_0222FB38: .word 0x00000FDC
+ thumb_func_end MOD80_0222FB08
+
+ thumb_func_start MOD80_0222FB3C
+MOD80_0222FB3C: ; 0x0222FB3C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, [sp, #0x24]
+ add r6, r1, #0
+ add r4, r2, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ mov r0, #0xb3
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_0200AC60
+ ldr r0, _0222FBB4 ; =0x00000B34
+ add r1, r6, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0xb3
+ add r6, r0, #0
+ lsl r1, r1, #4
+ ldr r0, [r5, r1]
+ add r1, #0x1c
+ ldr r1, [r5, r1]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ ldr r0, _0222FBB8 ; =0x00000E98
+ mov r1, #0xf
+ add r0, r5, r0
+ bl FUN_02019620
+ ldr r0, _0222FBB8 ; =0x00000E98
+ mov r1, #0
+ add r0, r5, r0
+ mov r2, #1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ mov r3, #0
+ str r3, [sp]
+ str r4, [sp, #4]
+ ldr r0, _0222FBB8 ; =0x00000E98
+ ldr r2, _0222FBBC ; =0x00000B4C
+ str r3, [sp, #8]
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ mov r1, #0x2e
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ add r0, r6, #0
+ bl FUN_02021A20
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0222FBB4: .word 0x00000B34
+_0222FBB8: .word 0x00000E98
+_0222FBBC: .word 0x00000B4C
+ thumb_func_end MOD80_0222FB3C
+
+ thumb_func_start MOD80_0222FBC0
+MOD80_0222FBC0: ; 0x0222FBC0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ str r1, [sp, #8]
+ mov r0, #0x16
+ mov r1, #0x3e
+ add r7, r2, #0
+ add r6, r3, #0
+ ldr r4, [sp, #0x4c]
+ bl FUN_020219F4
+ str r0, [sp, #0x1c]
+ mov r0, #0x12
+ mov r1, #0x3e
+ bl FUN_020219F4
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x1c]
+ mov r1, #0x76
+ bl FUN_020672BC
+ mov r2, #0
+ ldrsh r0, [r4, r2]
+ mov r1, #6
+ str r0, [sp, #0x10]
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ str r0, [sp, #0x14]
+ mov r0, #3
+ ldrsb r4, [r4, r0]
+ ldr r0, [sp, #0x48]
+ bl FUN_020672BC
+ str r0, [sp, #0x30]
+ add r0, r5, #0
+ mov r1, #0x46
+ bl FUN_0200A914
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x14]
+ ldr r2, _0222FD1C ; =0x022373C0
+ lsl r0, r0, #2
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0xc]
+ add r0, r5, #0
+ ldr r1, [r2, r1]
+ bl FUN_0200A914
+ str r0, [sp, #0x28]
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ mov r1, #3
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r2, r4, #0
+ add r3, r1, #0
+ bl FUN_0200AD38
+ add r0, r7, #0
+ add r1, r5, #0
+ mov r2, #0x66
+ mov r3, #0x3e
+ bl FUN_0200A9C4
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #8]
+ ldr r1, [sp, #0x10]
+ bl FUN_0200A914
+ ldr r1, [sp, #0x30]
+ str r0, [sp, #0x2c]
+ lsl r1, r1, #0x10
+ ldr r0, [sp, #0x18]
+ lsr r1, r1, #0x10
+ mov r2, #0x3e
+ bl FUN_0206E768
+ mov r4, #0
+ add r5, r6, #0
+ add r7, r4, #0
+_0222FC64:
+ add r0, r5, #0
+ add r1, r7, #0
+ bl FUN_02019620
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #5
+ blt _0222FC64
+ mov r2, #0
+ ldr r0, _0222FD20 ; =0x000F0200
+ str r2, [sp]
+ str r0, [sp, #4]
+ ldr r1, [sp, #0x1c]
+ add r0, r6, #0
+ add r3, r2, #0
+ bl MOD80_02236D50
+ ldr r0, [sp, #0x14]
+ cmp r0, #3
+ beq _0222FCA2
+ mov r3, #0
+ ldr r1, _0222FD24 ; =0x02237A34
+ ldr r0, [sp, #0xc]
+ str r3, [sp]
+ ldr r0, [r1, r0]
+ ldr r1, [sp, #0x28]
+ str r0, [sp, #4]
+ add r0, r6, #0
+ mov r2, #0x46
+ bl MOD80_02236D50
+_0222FCA2:
+ mov r2, #0
+ ldr r0, _0222FD20 ; =0x000F0200
+ str r2, [sp]
+ str r0, [sp, #4]
+ add r0, r6, #0
+ ldr r1, [sp, #0x2c]
+ add r0, #0x10
+ add r3, r2, #0
+ bl MOD80_02236D50
+ mov r0, #2
+ str r0, [sp]
+ ldr r0, _0222FD20 ; =0x000F0200
+ mov r2, #0
+ str r0, [sp, #4]
+ add r0, r6, #0
+ ldr r1, [sp, #0x24]
+ add r0, #0x20
+ add r3, r2, #0
+ bl MOD80_02236D50
+ mov r2, #0
+ ldr r0, _0222FD20 ; =0x000F0200
+ str r2, [sp]
+ str r0, [sp, #4]
+ add r0, r6, #0
+ ldr r1, [sp, #0x20]
+ add r0, #0x30
+ add r3, r2, #0
+ bl MOD80_02236D50
+ mov r2, #0
+ ldr r0, _0222FD20 ; =0x000F0200
+ str r2, [sp]
+ add r6, #0x40
+ str r0, [sp, #4]
+ ldr r1, [sp, #0x18]
+ add r0, r6, #0
+ add r3, r2, #0
+ bl MOD80_02236D50
+ ldr r0, [sp, #0x20]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x24]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x28]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x1c]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x2c]
+ bl FUN_02021A20
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222FD1C: .word 0x022373C0
+_0222FD20: .word 0x000F0200
+_0222FD24: .word 0x02237A34
+ thumb_func_end MOD80_0222FBC0
+
+ thumb_func_start MOD80_0222FD28
+MOD80_0222FD28: ; 0x0222FD28
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #0x10
+ mov r1, #0x3e
+ add r7, r2, #0
+ bl FUN_020219F4
+ add r4, r0, #0
+ add r0, r6, #0
+ mov r1, #0x30
+ bl FUN_0200A914
+ add r6, r0, #0
+ add r0, r4, #0
+ add r1, r7, #0
+ bl FUN_02021E28
+ mov r2, #0
+ ldr r0, _0222FD84 ; =0x000F0200
+ str r2, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r2, #0
+ bl MOD80_02236D50
+ mov r2, #0
+ ldr r0, _0222FD84 ; =0x000F0200
+ str r2, [sp]
+ add r5, #0x10
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD80_02236D50
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_02021A20
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222FD84: .word 0x000F0200
+ thumb_func_end MOD80_0222FD28
+
+ thumb_func_start MOD80_0222FD88
+MOD80_0222FD88: ; 0x0222FD88
+ push {r4, r5, r6, lr}
+ sub sp, #0x30
+ mov r1, #0x32
+ add r5, r0, #0
+ mov r0, #0x3e
+ lsl r1, r1, #6
+ bl FUN_02016998
+ add r4, r0, #0
+ add r0, sp, #0x20
+ add r1, r5, #0
+ mov r2, #2
+ bl FUN_02068B68
+ mov r1, #0
+ add r0, r5, #0
+ add r2, r1, #0
+ bl FUN_020671BC
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020671BC
+ mov r3, #0
+ str r3, [sp]
+ mov r1, #0xa
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ str r4, [sp, #0xc]
+ str r6, [sp, #0x10]
+ str r3, [sp, #0x14]
+ mov r1, #2
+ str r1, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ add r1, sp, #0x20
+ ldrh r0, [r1]
+ ldrh r1, [r1, #2]
+ mov r2, #0x3e
+ bl FUN_020124B4
+ mov r1, #0x32
+ add r0, r4, #0
+ lsl r1, r1, #6
+ bl DC_FlushRange
+ mov r1, #0x4a
+ mov r2, #0x32
+ add r0, r4, #0
+ lsl r1, r1, #8
+ lsl r2, r2, #6
+ bl GX_LoadOBJ
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x3e
+ mov r3, #0x1a
+ str r0, [sp, #4]
+ add r1, sp, #0x20
+ ldrh r0, [r1]
+ ldrh r1, [r1, #4]
+ mov r2, #1
+ lsl r3, r3, #4
+ bl FUN_02006930
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0x30
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD80_0222FD88
+
+ thumb_func_start MOD80_0222FE18
+MOD80_0222FE18: ; 0x0222FE18
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r1, _0222FE54 ; =0x000001C7
+ add r4, r0, #0
+ ldrsb r0, [r4, r1]
+ add r1, r1, #1
+ ldrsb r1, [r4, r1]
+ bl MOD80_02234668
+ mov r1, #0x71
+ lsl r1, r1, #2
+ ldrsh r2, [r4, r1]
+ add r1, r1, #2
+ ldr r3, _0222FE58 ; =0x00000F78
+ str r2, [sp]
+ ldrsb r1, [r4, r1]
+ ldr r2, _0222FE5C ; =0x00000B34
+ add r3, r4, r3
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r1, r2, #4
+ ldr r0, [r4, r2]
+ sub r2, r2, #4
+ ldr r1, [r4, r1]
+ ldr r2, [r4, r2]
+ bl MOD80_02234048
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_0222FE54: .word 0x000001C7
+_0222FE58: .word 0x00000F78
+_0222FE5C: .word 0x00000B34
+ thumb_func_end MOD80_0222FE18
+
+ thumb_func_start MOD80_0222FE60
+MOD80_0222FE60: ; 0x0222FE60
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl MOD80_0223022C
+ ldr r0, [r4, #4]
+ bl MOD80_0222FF6C
+ add r0, r4, #0
+ bl MOD80_02230054
+ add r0, r4, #0
+ bl MOD80_02230128
+ add r0, r4, #0
+ bl MOD80_022300CC
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r1, [r0]
+ mov r0, #0x49
+ lsl r0, r0, #2
+ add r5, r1, #0
+ mul r5, r0
+ add r0, #0xd4
+ add r0, r4, r0
+ add r0, r0, r5
+ bl FUN_020690E4
+ str r0, [sp]
+ mov r0, #0xb9
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r2, _0222FF24 ; =0x00000B34
+ add r0, r0, r5
+ str r0, [sp, #4]
+ add r1, r2, #4
+ ldr r0, [r4, r2]
+ sub r2, r2, #4
+ ldr r3, _0222FF28 ; =0x00000F08
+ ldr r1, [r4, r1]
+ ldr r2, [r4, r2]
+ add r3, r4, r3
+ bl MOD80_0222FBC0
+ add r3, r4, #0
+ add r3, #0xc4
+ ldr r0, _0222FF24 ; =0x00000B34
+ mov r2, #0xc1
+ ldr r5, [r3]
+ mov r3, #0x49
+ ldr r1, _0222FF2C ; =0x00000F58
+ lsl r2, r2, #2
+ lsl r3, r3, #2
+ ldr r0, [r4, r0]
+ add r2, r4, r2
+ mul r3, r5
+ add r1, r4, r1
+ add r2, r2, r3
+ bl MOD80_0222FD28
+ add r0, r4, #0
+ mov r1, #0x7e
+ add r0, #0xc4
+ lsl r1, r1, #2
+ add r2, r4, r1
+ ldr r0, [r0]
+ sub r1, #0xd4
+ mul r1, r0
+ add r0, r2, r1
+ bl MOD80_0222FD88
+ ldr r0, _0222FF24 ; =0x00000B34
+ ldr r1, _0222FF30 ; =0x00000F78
+ ldr r0, [r4, r0]
+ add r1, r4, r1
+ bl MOD80_02230550
+ add r0, r4, #0
+ bl MOD80_0223043C
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ mov r0, #2
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_0222FF24: .word 0x00000B34
+_0222FF28: .word 0x00000F08
+_0222FF2C: .word 0x00000F58
+_0222FF30: .word 0x00000F78
+ thumb_func_end MOD80_0222FE60
+
+ thumb_func_start MOD80_0222FF34
+MOD80_0222FF34: ; 0x0222FF34
+ push {r3, lr}
+ ldr r1, [r0, #0x2c]
+ lsl r2, r1, #2
+ ldr r1, _0222FF44 ; =0x02237A64
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, pc}
+ nop
+_0222FF44: .word 0x02237A64
+ thumb_func_end MOD80_0222FF34
+
+ thumb_func_start MOD80_0222FF48
+MOD80_0222FF48: ; 0x0222FF48
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_02230118
+ add r0, r4, #0
+ bl MOD80_022302C4
+ add r0, r4, #0
+ bl MOD80_022301F4
+ ldr r0, [r4, #4]
+ bl MOD80_02230030
+ add r0, r4, #0
+ bl MOD80_0222E7B0
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD80_0222FF48
+
+ thumb_func_start MOD80_0222FF6C
+MOD80_0222FF6C: ; 0x0222FF6C
+ push {r3, r4, r5, lr}
+ sub sp, #0x70
+ ldr r5, _02230020 ; =0x022370D8
+ add r4, r0, #0
+ ldmia r5!, {r0, r1}
+ add r3, sp, #0x54
+ 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, _02230024 ; =0x022370BC
+ 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]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _02230028 ; =0x022370A0
+ 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, _0223002C ; =0x02237084
+ 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]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x3e
+ bl FUN_02017F18
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x3e
+ bl FUN_02017F18
+ add sp, #0x70
+ pop {r3, r4, r5, pc}
+ nop
+_02230020: .word 0x022370D8
+_02230024: .word 0x022370BC
+_02230028: .word 0x022370A0
+_0223002C: .word 0x02237084
+ thumb_func_end MOD80_0222FF6C
+
+ thumb_func_start MOD80_02230030
+MOD80_02230030: ; 0x02230030
+ 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, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020178A0
+ pop {r4, pc}
+ thumb_func_end MOD80_02230030
+
+ thumb_func_start MOD80_02230054
+MOD80_02230054: ; 0x02230054
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ mov r1, #0x1a
+ add r5, r0, #0
+ mov r0, #0
+ lsl r1, r1, #4
+ mov r2, #0x3e
+ ldr r4, [r5, #4]
+ bl FUN_02002EEC
+ ldr r0, [r5]
+ ldr r0, [r0, #0x24]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x3e
+ 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, #0x3e
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x1f
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xa
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x68
+ mov r1, #0x11
+ add r2, r4, #0
+ bl FUN_0200687C
+ mov r0, #0x60
+ str r0, [sp]
+ mov r0, #0x3e
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x68
+ mov r1, #7
+ add r3, r2, #0
+ bl FUN_02006930
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD80_02230054
+
+ thumb_func_start MOD80_022300CC
+MOD80_022300CC: ; 0x022300CC
+ push {r4, lr}
+ sub sp, #0x30
+ mov r2, #0xcf
+ add r4, r0, #0
+ lsl r2, r2, #4
+ add r0, sp, #0
+ add r1, r4, #0
+ add r2, r4, r2
+ mov r3, #1
+ bl MOD80_0222E5E8
+ mov r0, #0x32
+ lsl r0, r0, #0xe
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ add r0, sp, #0
+ bl FUN_0201FE94
+ ldr r1, _02230114 ; =0x00000E6C
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, _02230114 ; =0x00000E6C
+ mov r1, #0x25
+ ldr r0, [r4, r0]
+ bl FUN_02020130
+ bl FUN_02033E74
+ add sp, #0x30
+ pop {r4, pc}
+ nop
+_02230114: .word 0x00000E6C
+ thumb_func_end MOD80_022300CC
+
+ thumb_func_start MOD80_02230118
+MOD80_02230118: ; 0x02230118
+ ldr r1, _02230120 ; =0x00000E6C
+ ldr r3, _02230124 ; =FUN_0201FFC8
+ ldr r0, [r0, r1]
+ bx r3
+ .align 2, 0
+_02230120: .word 0x00000E6C
+_02230124: .word FUN_0201FFC8
+ thumb_func_end MOD80_02230118
+
+ thumb_func_start MOD80_02230128
+MOD80_02230128: ; 0x02230128
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r0, [sp, #0x14]
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r3, #2
+ str r3, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x28
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ ldr r2, _022301E4 ; =0x00000E98
+ ldr r1, [sp, #0x14]
+ ldr r0, [r0, #4]
+ add r1, r1, r2
+ mov r2, #0
+ bl FUN_02019064
+ ldr r1, _022301E4 ; =0x00000E98
+ ldr r0, [sp, #0x14]
+ add r0, r0, r1
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #0xf
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x5e
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ ldr r2, _022301E8 ; =0x00000ED8
+ ldr r1, [sp, #0x14]
+ ldr r0, [r0, #4]
+ add r1, r1, r2
+ mov r2, #0
+ mov r3, #0x15
+ bl FUN_02019064
+ ldr r1, _022301EC ; =0x00000F08
+ ldr r0, [sp, #0x14]
+ ldr r4, _022301F0 ; =0x022370F4
+ mov r6, #0x86
+ mov r7, #0
+ add r5, r0, r1
+_02230190:
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [r4, #8]
+ mov r2, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldr r0, [r4, #0xc]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ ldr r3, [r4]
+ ldr r0, [r0, #4]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r1, [r4, #8]
+ ldr r0, [r4, #0xc]
+ add r7, r7, #1
+ mul r0, r1
+ add r6, r6, r0
+ add r4, #0x10
+ add r5, #0x10
+ cmp r7, #0xa
+ blo _02230190
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022301E4: .word 0x00000E98
+_022301E8: .word 0x00000ED8
+_022301EC: .word 0x00000F08
+_022301F0: .word 0x022370F4
+ thumb_func_end MOD80_02230128
+
+ thumb_func_start MOD80_022301F4
+MOD80_022301F4: ; 0x022301F4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _02230220 ; =0x00000E98
+ add r0, r5, r0
+ bl FUN_02019178
+ ldr r0, _02230224 ; =0x00000ED8
+ add r0, r5, r0
+ bl FUN_02019178
+ ldr r0, _02230228 ; =0x00000F08
+ mov r4, #0
+ add r5, r5, r0
+_0223020E:
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #0xa
+ blo _0223020E
+ pop {r3, r4, r5, pc}
+ nop
+_02230220: .word 0x00000E98
+_02230224: .word 0x00000ED8
+_02230228: .word 0x00000F08
+ thumb_func_end MOD80_022301F4
+
+ thumb_func_start MOD80_0223022C
+MOD80_0223022C: ; 0x0223022C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r1, #0x7e
+ add r0, #0xc4
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r0, [r0]
+ sub r1, #0xd4
+ mul r1, r0
+ add r4, r2, r1
+ mov r0, #0xb4
+ mov r1, #0x3e
+ bl FUN_020219F4
+ ldr r1, _022302B0 ; =0x00000B4C
+ str r0, [r5, r1]
+ sub r1, #0x1c
+ ldr r0, [r5, r1]
+ bl FUN_0200B84C
+ ldr r0, _022302B4 ; =0x0000011E
+ ldrb r2, [r4, r0]
+ cmp r2, #0
+ beq _02230268
+ mov r0, #0xb3
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #8
+ bl FUN_0200B4A0
+_02230268:
+ ldr r2, _022302B8 ; =0x0000011F
+ ldrb r3, [r4, r2]
+ cmp r3, #0
+ beq _02230280
+ mov r0, #0xb3
+ sub r2, r2, #1
+ lsl r0, r0, #4
+ ldrb r2, [r4, r2]
+ ldr r0, [r5, r0]
+ mov r1, #9
+ bl FUN_0200B4D8
+_02230280:
+ mov r1, #0xb3
+ lsl r1, r1, #4
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x4f
+ mov r3, #0x3e
+ bl FUN_0200A9C4
+ ldr r1, _022302BC ; =0x00000B54
+ mov r2, #0x50
+ str r0, [r5, r1]
+ add r0, r1, #0
+ sub r0, #0x24
+ sub r1, #0x20
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ mov r3, #0x3e
+ bl FUN_0200A9C4
+ ldr r1, _022302C0 ; =0x00000B58
+ str r0, [r5, r1]
+ pop {r3, r4, r5, pc}
+ nop
+_022302B0: .word 0x00000B4C
+_022302B4: .word 0x0000011E
+_022302B8: .word 0x0000011F
+_022302BC: .word 0x00000B54
+_022302C0: .word 0x00000B58
+ thumb_func_end MOD80_0223022C
+
+ thumb_func_start MOD80_022302C4
+MOD80_022302C4: ; 0x022302C4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _022302E4 ; =0x00000B54
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ ldr r0, _022302E8 ; =0x00000B58
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ ldr r0, _022302EC ; =0x00000B4C
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ pop {r4, pc}
+ nop
+_022302E4: .word 0x00000B54
+_022302E8: .word 0x00000B58
+_022302EC: .word 0x00000B4C
+ thumb_func_end MOD80_022302C4
+
+ thumb_func_start MOD80_022302F0
+MOD80_022302F0: ; 0x022302F0
+ mov r1, #1
+ str r1, [r0, #0x2c]
+ mov r0, #3
+ bx lr
+ thumb_func_end MOD80_022302F0
+
+ thumb_func_start MOD80_022302F8
+MOD80_022302F8: ; 0x022302F8
+ push {r3, r4, r5, lr}
+ ldr r1, _02230388 ; =0x021C48B8
+ mov r2, #1
+ ldr r1, [r1, #0x48]
+ add r4, r0, #0
+ add r3, r1, #0
+ tst r3, r2
+ beq _02230326
+ ldr r1, _0223038C ; =0x00000F0F
+ mov r3, #0
+ str r1, [sp]
+ mov r1, #0x10
+ bl MOD80_022304F8
+ add r0, r4, #0
+ mov r1, #3
+ mov r2, #4
+ bl MOD80_0222E6DC
+ ldr r0, _02230390 ; =0x000005DC
+ bl FUN_020054C8
+ b _02230384
+_02230326:
+ mov r3, #2
+ add r5, r1, #0
+ tst r5, r3
+ beq _02230340
+ mov r1, #4
+ mov r2, #0
+ str r3, [r4, #0x2c]
+ bl MOD80_0222E7A8
+ ldr r0, _02230390 ; =0x000005DC
+ bl FUN_020054C8
+ b _02230384
+_02230340:
+ mov r0, #0x10
+ tst r0, r1
+ beq _02230362
+ add r0, r4, #0
+ add r0, #0xb6
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _02230384
+ add r0, r4, #0
+ add r0, #0xb6
+ strh r2, [r0]
+ mov r0, #6
+ str r0, [r4, #0x2c]
+ ldr r0, _02230390 ; =0x000005DC
+ bl FUN_020054C8
+ b _02230384
+_02230362:
+ mov r0, #0x20
+ tst r0, r1
+ beq _02230384
+ add r0, r4, #0
+ add r0, #0xb6
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _02230384
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb6
+ strh r1, [r0]
+ mov r0, #6
+ str r0, [r4, #0x2c]
+ ldr r0, _02230390 ; =0x000005DC
+ bl FUN_020054C8
+_02230384:
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02230388: .word 0x021C48B8
+_0223038C: .word 0x00000F0F
+_02230390: .word 0x000005DC
+ thumb_func_end MOD80_022302F8
+
+ thumb_func_start MOD80_02230394
+MOD80_02230394: ; 0x02230394
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, _022303D0 ; =0x00000B34
+ ldr r1, _022303D4 ; =0x00000F78
+ ldr r0, [r4, r0]
+ add r1, r4, r1
+ bl MOD80_02230550
+ add r0, r4, #0
+ bl MOD80_0223043C
+ mov r1, #0
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ mov r0, #4
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_022303D0: .word 0x00000B34
+_022303D4: .word 0x00000F78
+ thumb_func_end MOD80_02230394
+
+ thumb_func_start MOD80_022303D8
+MOD80_022303D8: ; 0x022303D8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r2, #0x73
+ ldr r0, [r4, #4]
+ mov r1, #0xf
+ lsl r2, r2, #2
+ bl MOD80_0222E6A8
+ ldr r1, _022303F4 ; =0x00000FCC
+ str r0, [r4, r1]
+ mov r0, #5
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_022303F4: .word 0x00000FCC
+ thumb_func_end MOD80_022303D8
+
+ thumb_func_start MOD80_022303F8
+MOD80_022303F8: ; 0x022303F8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02230438 ; =0x00000FCC
+ mov r1, #0x3e
+ ldr r0, [r4, r0]
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02230432
+ sub r1, r1, #1
+ cmp r0, r1
+ bne _02230424
+ mov r0, #2
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ mov r1, #4
+ mov r2, #0
+ bl MOD80_0222E7A8
+ b _02230432
+_02230424:
+ mov r0, #2
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ mov r1, #5
+ mov r2, #6
+ bl MOD80_0222E7A8
+_02230432:
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_02230438: .word 0x00000FCC
+ thumb_func_end MOD80_022303F8
+
+ thumb_func_start MOD80_0223043C
+MOD80_0223043C: ; 0x0223043C
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ add r0, #0xb6
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _0223048C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x68
+ mov r1, #0x1b
+ bl FUN_020068C8
+ ldr r2, _022304BC ; =0x00000B34
+ ldr r0, _022304C0 ; =0x00000F98
+ mov r3, #0xba
+ ldr r1, [r4, r2]
+ add r2, r2, #4
+ lsl r3, r3, #2
+ add r0, r4, r0
+ ldr r2, [r4, r2]
+ add r3, r4, r3
+ add r4, #0xc4
+ ldr r5, [r4]
+ mov r4, #0x49
+ lsl r4, r4, #2
+ mul r4, r5
+ add r3, r3, r4
+ bl MOD80_022305A8
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+_0223048C:
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x68
+ mov r1, #0x1c
+ bl FUN_020068C8
+ ldr r2, _022304C4 ; =0x00000B54
+ ldr r0, _022304C0 ; =0x00000F98
+ ldr r1, [r4, r2]
+ add r2, r2, #4
+ ldr r2, [r4, r2]
+ add r0, r4, r0
+ bl MOD80_02230614
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022304BC: .word 0x00000B34
+_022304C0: .word 0x00000F98
+_022304C4: .word 0x00000B54
+ thumb_func_end MOD80_0223043C
+
+ thumb_func_start MOD80_022304C8
+MOD80_022304C8: ; 0x022304C8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0223043C
+ mov r0, #1
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_022304C8
+
+ thumb_func_start MOD80_022304D8
+MOD80_022304D8: ; 0x022304D8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x2e
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _022304F2
+ ldr r0, [r4, #0x30]
+ str r0, [r4, #0x2c]
+_022304F2:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_022304D8
+
+ thumb_func_start MOD80_022304F8
+MOD80_022304F8: ; 0x022304F8
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r2, #0
+ ldr r2, _02230544 ; =0x00000B34
+ add r5, r0, #0
+ ldr r0, [r5, r2]
+ add r2, #0x18
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ ldr r0, _02230548 ; =0x00000E98
+ mov r1, #0xf
+ add r0, r5, r0
+ bl FUN_02019620
+ ldr r0, _02230548 ; =0x00000E98
+ mov r1, #0
+ add r0, r5, r0
+ mov r2, #1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ mov r3, #0
+ str r3, [sp]
+ str r4, [sp, #4]
+ ldr r0, _02230548 ; =0x00000E98
+ ldr r2, _0223054C ; =0x00000B4C
+ str r3, [sp, #8]
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ mov r1, #0x2e
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02230544: .word 0x00000B34
+_02230548: .word 0x00000E98
+_0223054C: .word 0x00000B4C
+ thumb_func_end MOD80_022304F8
+
+ thumb_func_start MOD80_02230550
+MOD80_02230550: ; 0x02230550
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r1, #0
+ add r6, r0, #0
+ mov r1, #0x4a
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r0, r6, #0
+ mov r1, #0x4e
+ bl FUN_0200A914
+ add r6, r0, #0
+ mov r2, #0
+ ldr r0, _022305A4 ; =0x000F0200
+ str r2, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r3, #2
+ bl MOD80_02236D50
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _022305A4 ; =0x000F0200
+ add r5, #0x10
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #0
+ mov r3, #2
+ bl MOD80_02236D50
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_02021A20
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ nop
+_022305A4: .word 0x000F0200
+ thumb_func_end MOD80_02230550
+
+ thumb_func_start MOD80_022305A8
+MOD80_022305A8: ; 0x022305A8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r1, #0
+ mov r1, #0
+ add r5, r0, #0
+ add r7, r2, #0
+ add r4, r3, #0
+ bl FUN_02019620
+ mov r0, #3
+ str r0, [sp]
+ ldr r0, _02230610 ; =0x000F0200
+ mov r3, #0
+ str r0, [sp, #4]
+ ldrsh r2, [r4, r3]
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD80_02233EA4
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #0x46
+ str r0, [sp, #4]
+ ldr r0, _02230610 ; =0x000F0200
+ mov r2, #2
+ str r0, [sp, #8]
+ ldrsb r2, [r4, r2]
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r3, #0
+ bl MOD80_02233EF4
+ mov r0, #3
+ mov r1, #4
+ ldrsb r0, [r4, r0]
+ ldrsb r1, [r4, r1]
+ bl MOD80_02234668
+ add r2, r0, #0
+ mov r0, #0x13
+ str r0, [sp]
+ ldr r0, _02230610 ; =0x000F0200
+ add r1, r6, #0
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ add r0, r5, #0
+ mov r3, #0
+ bl MOD80_02233F5C
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02230610: .word 0x000F0200
+ thumb_func_end MOD80_022305A8
+
+ thumb_func_start MOD80_02230614
+MOD80_02230614: ; 0x02230614
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r1, #0
+ mov r1, #0
+ add r6, r0, #0
+ add r4, r2, #0
+ bl FUN_02019620
+ cmp r5, #0
+ beq _0223063A
+ mov r2, #0
+ ldr r0, _02230658 ; =0x000F0200
+ str r2, [sp]
+ str r0, [sp, #4]
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r3, #3
+ bl MOD80_02236D50
+_0223063A:
+ cmp r4, #0
+ beq _02230652
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _02230658 ; =0x000F0200
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r6, #0
+ mov r2, #8
+ mov r3, #0x13
+ bl MOD80_02236D50
+_02230652:
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ nop
+_02230658: .word 0x000F0200
+ thumb_func_end MOD80_02230614
+
+ thumb_func_start MOD80_0223065C
+MOD80_0223065C: ; 0x0223065C
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl MOD80_02230AC0
+ ldr r0, [r4, #4]
+ bl MOD80_02230760
+ add r0, r4, #0
+ bl MOD80_02230840
+ add r0, r4, #0
+ bl MOD80_02230944
+ add r0, r4, #0
+ bl MOD80_022308EC
+ ldr r1, _02230708 ; =0x00000B34
+ ldr r0, _0223070C ; =0x00000F08
+ ldr r1, [r4, r1]
+ add r0, r4, r0
+ bl MOD80_022318D4
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _02230710 ; =0x00010200
+ ldr r2, _02230714 ; =0x00000B38
+ str r0, [sp, #4]
+ ldr r1, [r4, r2]
+ sub r2, #0x16
+ ldr r0, _02230718 ; =0x00000F18
+ ldrsh r2, [r4, r2]
+ add r0, r4, r0
+ mov r3, #2
+ bl MOD80_02233EA4
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _02230710 ; =0x00010200
+ ldr r2, _02230708 ; =0x00000B34
+ str r0, [sp, #8]
+ ldr r1, [r4, r2]
+ sub r2, #0x10
+ ldr r0, _0223071C ; =0x00000F38
+ ldrsb r2, [r4, r2]
+ add r0, r4, r0
+ mov r3, #1
+ bl MOD80_02233EF4
+ ldr r1, _02230720 ; =0x00000B25
+ ldrsb r0, [r4, r1]
+ add r1, r1, #1
+ ldrsb r1, [r4, r1]
+ bl MOD80_02234668
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _02230710 ; =0x00010200
+ ldr r1, _02230708 ; =0x00000B34
+ str r0, [sp, #4]
+ ldr r0, _02230724 ; =0x00000F58
+ ldr r1, [r4, r1]
+ add r0, r4, r0
+ mov r3, #2
+ bl MOD80_02233F9C
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ mov r0, #2
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_02230708: .word 0x00000B34
+_0223070C: .word 0x00000F08
+_02230710: .word 0x00010200
+_02230714: .word 0x00000B38
+_02230718: .word 0x00000F18
+_0223071C: .word 0x00000F38
+_02230720: .word 0x00000B25
+_02230724: .word 0x00000F58
+ thumb_func_end MOD80_0223065C
+
+ thumb_func_start MOD80_02230728
+MOD80_02230728: ; 0x02230728
+ push {r3, lr}
+ ldr r1, [r0, #0x2c]
+ lsl r2, r1, #2
+ ldr r1, _02230738 ; =0x02237A94
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, pc}
+ nop
+_02230738: .word 0x02237A94
+ thumb_func_end MOD80_02230728
+
+ thumb_func_start MOD80_0223073C
+MOD80_0223073C: ; 0x0223073C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_02230934
+ add r0, r4, #0
+ bl MOD80_02230B2C
+ add r0, r4, #0
+ bl MOD80_02230A88
+ ldr r0, [r4, #4]
+ bl MOD80_02230814
+ add r0, r4, #0
+ bl MOD80_0222E7B0
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD80_0223073C
+
+ thumb_func_start MOD80_02230760
+MOD80_02230760: ; 0x02230760
+ push {r4, r5, lr}
+ sub sp, #0x54
+ ldr r5, _02230808 ; =0x022371D0
+ add r4, r0, #0
+ ldmia r5!, {r0, r1}
+ add r3, sp, #0x38
+ 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, _0223080C ; =0x022371EC
+ 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, #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, _02230810 ; =0x022371B4
+ 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, #2
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x3e
+ bl FUN_02017F18
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x3e
+ bl FUN_02017F18
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x3e
+ bl FUN_02017F18
+ add sp, #0x54
+ pop {r4, r5, pc}
+ nop
+_02230808: .word 0x022371D0
+_0223080C: .word 0x022371EC
+_02230810: .word 0x022371B4
+ thumb_func_end MOD80_02230760
+
+ thumb_func_start MOD80_02230814
+MOD80_02230814: ; 0x02230814
+ 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, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020178A0
+ pop {r4, pc}
+ thumb_func_end MOD80_02230814
+
+ thumb_func_start MOD80_02230840
+MOD80_02230840: ; 0x02230840
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r4, [r5, #4]
+ mov r0, #0x60
+ str r0, [sp]
+ mov r0, #0x3e
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x68
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r0, #1
+ lsl r0, r0, #8
+ str r0, [sp]
+ mov r0, #0x3e
+ str r0, [sp, #4]
+ mov r0, #0x68
+ mov r1, #5
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r1, #0x1a
+ mov r0, #0
+ lsl r1, r1, #4
+ mov r2, #0x3e
+ bl FUN_02002EEC
+ ldr r0, [r5]
+ ldr r0, [r0, #0x24]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x3e
+ 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, #0x3e
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x1f
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xa
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x68
+ mov r1, #0xd
+ add r2, r4, #0
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x68
+ mov r1, #0x1a
+ add r2, r4, #0
+ bl FUN_020068C8
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02230840
+
+ thumb_func_start MOD80_022308EC
+MOD80_022308EC: ; 0x022308EC
+ push {r4, lr}
+ sub sp, #0x30
+ mov r2, #0xcf
+ add r4, r0, #0
+ lsl r2, r2, #4
+ add r0, sp, #0
+ add r1, r4, #0
+ add r2, r4, r2
+ mov r3, #1
+ bl MOD80_0222E5E8
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, sp, #0
+ bl FUN_0201FE94
+ ldr r1, _02230930 ; =0x00000D5C
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, _02230930 ; =0x00000D5C
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl FUN_02020130
+ bl FUN_02033E74
+ add sp, #0x30
+ pop {r4, pc}
+ nop
+_02230930: .word 0x00000D5C
+ thumb_func_end MOD80_022308EC
+
+ thumb_func_start MOD80_02230934
+MOD80_02230934: ; 0x02230934
+ ldr r1, _0223093C ; =0x00000D5C
+ ldr r3, _02230940 ; =FUN_0201FFC8
+ ldr r0, [r0, r1]
+ bx r3
+ .align 2, 0
+_0223093C: .word 0x00000D5C
+_02230940: .word FUN_0201FFC8
+ thumb_func_end MOD80_02230934
+
+ thumb_func_start MOD80_02230944
+MOD80_02230944: ; 0x02230944
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ mov r3, #1
+ str r0, [sp, #0x14]
+ str r3, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x28
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ ldr r2, _02230A6C ; =0x00000EB8
+ ldr r1, [sp, #0x14]
+ ldr r0, [r0, #4]
+ add r1, r1, r2
+ mov r2, #0
+ bl FUN_02019064
+ ldr r1, _02230A6C ; =0x00000EB8
+ ldr r0, [sp, #0x14]
+ add r0, r0, r1
+ mov r1, #0
+ bl FUN_02019620
+ mov r2, #0
+ mov r3, #0xb5
+ ldr r0, _02230A70 ; =0x000F0D00
+ str r2, [sp]
+ str r0, [sp, #4]
+ ldr r1, _02230A6C ; =0x00000EB8
+ ldr r0, [sp, #0x14]
+ lsl r3, r3, #4
+ add r0, r0, r1
+ ldr r1, [sp, #0x14]
+ ldr r1, [r1, r3]
+ mov r3, #1
+ bl MOD80_02236D1C
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r3, #2
+ str r3, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x60
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ ldr r2, _02230A74 ; =0x00000E98
+ ldr r1, [sp, #0x14]
+ ldr r0, [r0, #4]
+ add r1, r1, r2
+ mov r2, #0
+ bl FUN_02019064
+ ldr r1, _02230A74 ; =0x00000E98
+ ldr r0, [sp, #0x14]
+ add r0, r0, r1
+ mov r1, #0
+ bl FUN_02019620
+ ldr r1, _02230A78 ; =0x00000F08
+ ldr r0, [sp, #0x14]
+ ldr r4, _02230A7C ; =0x0223719C
+ mov r7, #0
+ mov r6, #0x96
+ add r5, r0, r1
+_022309D2:
+ ldrh r0, [r4, #2]
+ add r1, r5, #0
+ mov r2, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0xb
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldrh r3, [r4]
+ ldr r0, [sp, #0x14]
+ lsl r3, r3, #0x18
+ ldr r0, [r0, #4]
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ add r7, r7, #1
+ add r6, #0x16
+ add r4, r4, #4
+ add r5, #0x10
+ cmp r7, #6
+ blt _022309D2
+ ldr r1, _02230A78 ; =0x00000F08
+ ldr r0, [sp, #0x14]
+ ldr r6, _02230A80 ; =0x0000011A
+ add r0, r0, r1
+ ldr r4, _02230A84 ; =0x02237194
+ mov r5, #0
+ str r0, [sp, #0x18]
+_02230A20:
+ add r0, r5, #6
+ lsl r7, r0, #4
+ ldrh r0, [r4, #2]
+ ldr r1, [sp, #0x18]
+ mov r2, #2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldrh r3, [r4]
+ ldr r0, [sp, #0x14]
+ add r1, r1, r7
+ lsl r3, r3, #0x18
+ ldr r0, [r0, #4]
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ ldr r0, [sp, #0x18]
+ mov r1, #0
+ add r0, r0, r7
+ bl FUN_02019620
+ add r5, r5, #1
+ add r6, #0x10
+ add r4, r4, #4
+ cmp r5, #2
+ blt _02230A20
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02230A6C: .word 0x00000EB8
+_02230A70: .word 0x000F0D00
+_02230A74: .word 0x00000E98
+_02230A78: .word 0x00000F08
+_02230A7C: .word 0x0223719C
+_02230A80: .word 0x0000011A
+_02230A84: .word 0x02237194
+ thumb_func_end MOD80_02230944
+
+ thumb_func_start MOD80_02230A88
+MOD80_02230A88: ; 0x02230A88
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _02230AB4 ; =0x00000E98
+ add r0, r5, r0
+ bl FUN_02019178
+ ldr r0, _02230AB8 ; =0x00000EB8
+ add r0, r5, r0
+ bl FUN_02019178
+ ldr r0, _02230ABC ; =0x00000F08
+ mov r4, #0
+ add r5, r5, r0
+_02230AA2:
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #8
+ blt _02230AA2
+ pop {r3, r4, r5, pc}
+ nop
+_02230AB4: .word 0x00000E98
+_02230AB8: .word 0x00000EB8
+_02230ABC: .word 0x00000F08
+ thumb_func_end MOD80_02230A88
+
+ thumb_func_start MOD80_02230AC0
+MOD80_02230AC0: ; 0x02230AC0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xb4
+ mov r1, #0x3e
+ bl FUN_020219F4
+ ldr r1, _02230B28 ; =0x00000B4C
+ str r0, [r4, r1]
+ sub r1, #0x18
+ ldr r0, [r4, r1]
+ mov r1, #0x29
+ bl FUN_0200A914
+ mov r1, #0xb5
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ mov r0, #0x3e
+ mov r1, #0x30
+ bl FUN_02016998
+ mov r1, #0xfe
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ ldr r1, [r4, r1]
+ mov r0, #0
+ mov r2, #0x30
+ bl MIi_CpuClearFast
+ mov r2, #0xfe
+ lsl r2, r2, #4
+ ldr r2, [r4, r2]
+ mov r0, #0x3e
+ mov r1, #0
+ add r2, #0x1c
+ bl MOD80_02234204
+ mov r1, #0xfe
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ str r0, [r1, #0x18]
+ mov r0, #0x3e
+ bl MOD80_02234228
+ mov r1, #0xfe
+ lsl r1, r1, #4
+ ldr r2, [r4, r1]
+ add r1, #0x38
+ str r0, [r2, #0x14]
+ add r0, r4, r1
+ bl MOD80_022346D8
+ pop {r4, pc}
+ .align 2, 0
+_02230B28: .word 0x00000B4C
+ thumb_func_end MOD80_02230AC0
+
+ thumb_func_start MOD80_02230B2C
+MOD80_02230B2C: ; 0x02230B2C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0x14]
+ bl FUN_02016A18
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0x18]
+ bl FUN_02016A18
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _02230B68 ; =0x00000B4C
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ mov r0, #0xb5
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ pop {r4, pc}
+ nop
+_02230B68: .word 0x00000B4C
+ thumb_func_end MOD80_02230B2C
+
+ thumb_func_start MOD80_02230B6C
+MOD80_02230B6C: ; 0x02230B6C
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r1, _02230B90 ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ mov r1, #8
+ mov r2, #1
+ mov r3, #0
+ bl MOD80_0223187C
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #1
+ bl MOD80_0222E6DC
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_02230B90: .word 0x00000F0F
+ thumb_func_end MOD80_02230B6C
+
+ thumb_func_start MOD80_02230B94
+MOD80_02230B94: ; 0x02230B94
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl MOD80_02231008
+ ldr r0, _02230CB4 ; =0x021C48B8
+ mov r2, #1
+ ldr r1, [r0, #0x48]
+ add r0, r1, #0
+ tst r0, r2
+ beq _02230C44
+ add r0, r4, #0
+ bl MOD80_02230FF0
+ cmp r0, #4
+ bhi _02230CAE
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02230BBE: ; jump table
+ .short _02230BC8 - _02230BBE - 2 ; case 0
+ .short _02230BD4 - _02230BBE - 2 ; case 1
+ .short _02230C10 - _02230BBE - 2 ; case 2
+ .short _02230C1C - _02230BBE - 2 ; case 3
+ .short _02230C22 - _02230BBE - 2 ; case 4
+_02230BC8:
+ mov r0, #3
+ str r0, [r4, #0x2c]
+ ldr r0, _02230CB8 ; =0x000005DC
+ bl FUN_020054C8
+ b _02230CAE
+_02230BD4:
+ ldr r0, _02230CBC ; =0x00000B22
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ beq _02230C04
+ mov r1, #0x12
+ bl FUN_02068678
+ mov r1, #0xfe
+ lsl r1, r1, #4
+ ldr r2, [r4, r1]
+ str r0, [r2, #0x20]
+ ldr r1, [r4, r1]
+ ldr r0, _02230CBC ; =0x00000B22
+ ldr r1, [r1, #0x20]
+ add r0, r4, r0
+ bl MOD80_022338E0
+ cmp r0, #0
+ beq _02230C04
+ ldr r0, _02230CB8 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+_02230C04:
+ mov r0, #8
+ str r0, [r4, #0x2c]
+ ldr r0, _02230CB8 ; =0x000005DC
+ bl FUN_020054C8
+ b _02230CAE
+_02230C10:
+ mov r0, #0xb
+ str r0, [r4, #0x2c]
+ ldr r0, _02230CB8 ; =0x000005DC
+ bl FUN_020054C8
+ b _02230CAE
+_02230C1C:
+ mov r0, #0xe
+ str r0, [r4, #0x2c]
+ b _02230CAE
+_02230C22:
+ ldr r0, _02230CC0 ; =0x00000F0F
+ mov r1, #0xf
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #1
+ mov r3, #0
+ bl MOD80_0223187C
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #0x16
+ bl MOD80_0222E6DC
+ ldr r0, _02230CB8 ; =0x000005DC
+ bl FUN_020054C8
+ b _02230CAE
+_02230C44:
+ mov r0, #2
+ tst r0, r1
+ beq _02230C6A
+ ldr r0, _02230CC0 ; =0x00000F0F
+ mov r1, #0xf
+ str r0, [sp]
+ add r0, r4, #0
+ mov r3, #0
+ bl MOD80_0223187C
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #0x16
+ bl MOD80_0222E6DC
+ ldr r0, _02230CB8 ; =0x000005DC
+ bl FUN_020054C8
+ b _02230CAE
+_02230C6A:
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ bl MOD80_02235B70
+ add r5, r0, #0
+ ldr r0, _02230CC4 ; =0x00000FEE
+ ldrh r0, [r4, r0]
+ cmp r0, #0
+ beq _02230CAE
+ cmp r5, #0
+ blt _02230CAE
+ add r0, r5, #1
+ lsl r0, r0, #2
+ add r1, r4, r0
+ mov r0, #0xe7
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ lsl r1, r5, #2
+ add r1, #0x10
+ bl FUN_02020130
+ mov r0, #2
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ mov r1, #3
+ mov r2, #0
+ bl MOD80_0222E7A8
+ add r4, #0xc4
+ ldr r0, _02230CB8 ; =0x000005DC
+ str r5, [r4]
+ bl FUN_020054C8
+_02230CAE:
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+ nop
+_02230CB4: .word 0x021C48B8
+_02230CB8: .word 0x000005DC
+_02230CBC: .word 0x00000B22
+_02230CC0: .word 0x00000F0F
+_02230CC4: .word 0x00000FEE
+ thumb_func_end MOD80_02230B94
+
+ thumb_func_start MOD80_02230CC8
+MOD80_02230CC8: ; 0x02230CC8
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r1, _02230D54 ; =0x00000B22
+ add r4, r0, #0
+ ldrsh r2, [r4, r1]
+ cmp r2, #0
+ bne _02230CF6
+ ldr r1, _02230D58 ; =0x00000F0F
+ mov r2, #1
+ str r1, [sp]
+ mov r1, #0xc
+ mov r3, #0
+ bl MOD80_0223187C
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #1
+ bl MOD80_0222E6DC
+ ldr r0, _02230D5C ; =0x000005F3
+ bl FUN_020054C8
+ b _02230D4C
+_02230CF6:
+ add r0, r4, r1
+ add r1, r1, #6
+ add r1, r4, r1
+ bl MOD80_022319C0
+ cmp r0, #0
+ beq _02230D26
+ ldr r0, _02230D58 ; =0x00000F0F
+ mov r1, #0x21
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #1
+ mov r3, #0
+ bl MOD80_0223187C
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #1
+ bl MOD80_0222E6DC
+ ldr r0, _02230D5C ; =0x000005F3
+ bl FUN_020054C8
+ b _02230D4C
+_02230D26:
+ ldr r0, _02230D60 ; =0x000005FF
+ bl FUN_020054C8
+ ldr r0, _02230D58 ; =0x00000F0F
+ mov r1, #0xd
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #1
+ mov r3, #0
+ bl MOD80_0223187C
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #0xf
+ bl MOD80_0222E6DC
+ add r0, r4, #0
+ bl MOD80_02235C40
+_02230D4C:
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_02230D54: .word 0x00000B22
+_02230D58: .word 0x00000F0F
+_02230D5C: .word 0x000005F3
+_02230D60: .word 0x000005FF
+ thumb_func_end MOD80_02230CC8
+
+ thumb_func_start MOD80_02230D64
+MOD80_02230D64: ; 0x02230D64
+ push {r3, r4, lr}
+ sub sp, #0x2c
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl FUN_0202AC08
+ lsr r1, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x1c]
+ lsr r1, r0, #0x10
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x20]
+ lsr r1, r0, #8
+ lsl r1, r1, #0x18
+ lsl r0, r0, #0x18
+ lsr r1, r1, #0x18
+ lsr r0, r0, #0x18
+ str r1, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, sp, #0xc
+ add r1, sp, #0
+ bl MOD04_021DE1F8
+ add r0, sp, #0xc
+ bl RTC_ConvertDateToDay
+ add r4, r0, #0
+ add r0, sp, #0x1c
+ bl RTC_ConvertDateToDay
+ sub r0, r4, r0
+ bmi _02230DB2
+ cmp r0, #3
+ bge _02230DB2
+ add sp, #0x2c
+ mov r0, #1
+ pop {r3, r4, pc}
+_02230DB2:
+ mov r0, #0
+ add sp, #0x2c
+ pop {r3, r4, pc}
+ thumb_func_end MOD80_02230D64
+
+ thumb_func_start MOD80_02230DB8
+MOD80_02230DB8: ; 0x02230DB8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldrh r0, [r5, #0x36]
+ mov r4, #3
+ cmp r0, #0
+ beq _02230DC6
+ add r4, r4, #2
+_02230DC6:
+ add r0, r5, #0
+ bl MOD80_02230D64
+ cmp r0, #0
+ beq _02230DD2
+ add r4, r4, #2
+_02230DD2:
+ ldr r0, _02230E0C ; =0x00000B22
+ mov r2, #0x7e
+ lsl r2, r2, #2
+ add r0, r5, r0
+ add r1, r4, #0
+ add r2, r5, r2
+ bl MOD80_0222DD90
+ ldr r1, _02230E0C ; =0x00000B22
+ ldrh r2, [r5, r1]
+ add r0, r1, #6
+ strh r2, [r5, r0]
+ add r0, r1, #2
+ ldrh r2, [r5, r0]
+ add r0, r1, #0
+ add r0, #8
+ strh r2, [r5, r0]
+ add r0, r1, #4
+ ldrh r0, [r5, r0]
+ add r1, #0xa
+ strh r0, [r5, r1]
+ mov r0, #0x10
+ str r0, [r5, #0x2c]
+ ldr r0, _02230E10 ; =0x00000FEE
+ mov r1, #0
+ strh r1, [r5, r0]
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+ nop
+_02230E0C: .word 0x00000B22
+_02230E10: .word 0x00000FEE
+ thumb_func_end MOD80_02230DB8
+
+ thumb_func_start MOD80_02230E14
+MOD80_02230E14: ; 0x02230E14
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl MOD80_0222DB98
+ cmp r0, #0
+ beq _02230E94
+ bl MOD80_0222DBB8
+ add r5, r0, #0
+ add r0, #0xf
+ cmp r0, #0x16
+ bhi _02230E94
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02230E38: ; jump table
+ .short _02230E90 - _02230E38 - 2 ; case 0
+ .short _02230E84 - _02230E38 - 2 ; case 1
+ .short _02230E8A - _02230E38 - 2 ; case 2
+ .short _02230E90 - _02230E38 - 2 ; case 3
+ .short _02230E94 - _02230E38 - 2 ; case 4
+ .short _02230E94 - _02230E38 - 2 ; case 5
+ .short _02230E94 - _02230E38 - 2 ; case 6
+ .short _02230E94 - _02230E38 - 2 ; case 7
+ .short _02230E94 - _02230E38 - 2 ; case 8
+ .short _02230E94 - _02230E38 - 2 ; case 9
+ .short _02230E94 - _02230E38 - 2 ; case 10
+ .short _02230E94 - _02230E38 - 2 ; case 11
+ .short _02230E94 - _02230E38 - 2 ; case 12
+ .short _02230E84 - _02230E38 - 2 ; case 13
+ .short _02230E94 - _02230E38 - 2 ; case 14
+ .short _02230E66 - _02230E38 - 2 ; case 15
+ .short _02230E66 - _02230E38 - 2 ; case 16
+ .short _02230E66 - _02230E38 - 2 ; case 17
+ .short _02230E66 - _02230E38 - 2 ; case 18
+ .short _02230E66 - _02230E38 - 2 ; case 19
+ .short _02230E66 - _02230E38 - 2 ; case 20
+ .short _02230E66 - _02230E38 - 2 ; case 21
+ .short _02230E66 - _02230E38 - 2 ; case 22
+_02230E66:
+ add r0, r4, #0
+ add r0, #0xc0
+ str r5, [r0]
+ ldr r0, _02230E98 ; =0x000005FF
+ mov r1, #0
+ bl FUN_020054F0
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD80_02235B90
+ mov r0, #0x11
+ str r0, [r4, #0x2c]
+ b _02230E94
+_02230E84:
+ mov r0, #0x1a
+ str r0, [r4, #0x2c]
+ b _02230E94
+_02230E8A:
+ bl FUN_020335E0
+ b _02230E94
+_02230E90:
+ mov r0, #0x13
+ str r0, [r4, #0x2c]
+_02230E94:
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02230E98: .word 0x000005FF
+ thumb_func_end MOD80_02230E14
+
+ thumb_func_start MOD80_02230E9C
+MOD80_02230E9C: ; 0x02230E9C
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ add r1, r4, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ cmp r1, #0
+ ldr r1, _02230EF0 ; =0x00000F0F
+ bne _02230ECC
+ str r1, [sp]
+ mov r1, #0xe
+ mov r2, #1
+ mov r3, #0
+ bl MOD80_0223187C
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #1
+ bl MOD80_0222E6DC
+ ldr r0, _02230EF4 ; =0x000005F3
+ bl FUN_020054C8
+ b _02230EE8
+_02230ECC:
+ str r1, [sp]
+ mov r1, #0x1e
+ mov r2, #1
+ mov r3, #0
+ bl MOD80_0223187C
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #0x12
+ bl MOD80_0222E6DC
+ ldr r0, _02230EF8 ; =0x00000FDC
+ mov r1, #0
+ str r1, [r4, r0]
+_02230EE8:
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_02230EF0: .word 0x00000F0F
+_02230EF4: .word 0x000005F3
+_02230EF8: .word 0x00000FDC
+ thumb_func_end MOD80_02230E9C
+
+ thumb_func_start MOD80_02230EFC
+MOD80_02230EFC: ; 0x02230EFC
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r1, _02230F34 ; =0x00000FDC
+ add r4, r0, #0
+ ldr r2, [r4, r1]
+ add r2, r2, #1
+ str r2, [r4, r1]
+ ldr r2, [r4, r1]
+ cmp r2, #0x2d
+ ble _02230F2E
+ sub r1, #0xcd
+ str r1, [sp]
+ mov r1, #0x20
+ mov r2, #1
+ mov r3, #0
+ bl MOD80_0223187C
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #1
+ bl MOD80_0222E6DC
+ ldr r0, _02230F38 ; =0x00000FEE
+ mov r1, #1
+ strh r1, [r4, r0]
+_02230F2E:
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_02230F34: .word 0x00000FDC
+_02230F38: .word 0x00000FEE
+ thumb_func_end MOD80_02230EFC
+
+ thumb_func_start MOD80_02230F3C
+MOD80_02230F3C: ; 0x02230F3C
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r1, _02230F6C ; =0x00000B28
+ add r4, r0, #0
+ mov r3, #0
+ strh r3, [r4, r1]
+ ldr r1, _02230F70 ; =0x00000F0F
+ mov r2, #1
+ str r1, [sp]
+ mov r1, #0x26
+ bl MOD80_0223187C
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #1
+ bl MOD80_0222E6DC
+ ldr r0, _02230F74 ; =0x000005F3
+ bl FUN_020054C8
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_02230F6C: .word 0x00000B28
+_02230F70: .word 0x00000F0F
+_02230F74: .word 0x000005F3
+ thumb_func_end MOD80_02230F3C
+
+ thumb_func_start MOD80_02230F78
+MOD80_02230F78: ; 0x02230F78
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r1, _02230FA8 ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ mov r1, #0x8f
+ mov r2, #4
+ mov r3, #0
+ bl MOD80_0223187C
+ add r0, r4, #0
+ mov r1, #0x15
+ mov r2, #0x1b
+ bl MOD80_0222E6DC
+ ldr r0, _02230FAC ; =0x00000FDC
+ mov r1, #0
+ str r1, [r4, r0]
+ ldr r0, _02230FB0 ; =0x000005F3
+ bl FUN_020054C8
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_02230FA8: .word 0x00000F0F
+_02230FAC: .word 0x00000FDC
+_02230FB0: .word 0x000005F3
+ thumb_func_end MOD80_02230F78
+
+ thumb_func_start MOD80_02230FB4
+MOD80_02230FB4: ; 0x02230FB4
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r1, _02230FE8 ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ mov r1, #0x94
+ mov r2, #4
+ mov r3, #0
+ bl MOD80_0223187C
+ add r0, r4, #0
+ mov r1, #0x15
+ mov r2, #2
+ bl MOD80_0222E6DC
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD80_0222E7A8
+ ldr r0, _02230FEC ; =0x000005F3
+ bl FUN_020054C8
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_02230FE8: .word 0x00000F0F
+_02230FEC: .word 0x000005F3
+ thumb_func_end MOD80_02230FB4
+
+ thumb_func_start MOD80_02230FF0
+MOD80_02230FF0: ; 0x02230FF0
+ mov r1, #0xfe
+ lsl r1, r1, #4
+ ldr r1, [r0, r1]
+ ldr r0, [r1, #0x24]
+ cmp r0, #0
+ bne _02231000
+ ldr r0, [r1, #0x28]
+ bx lr
+_02231000:
+ ldr r0, [r1, #0x2c]
+ add r0, r0, #3
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD80_02230FF0
+
+ thumb_func_start MOD80_02231008
+MOD80_02231008: ; 0x02231008
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, _02231100 ; =0x021C48B8
+ mov r1, #0x40
+ ldr r0, [r0, #0x48]
+ tst r1, r0
+ beq _0223104E
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r1, [r4, r0]
+ ldr r0, [r1, #0x24]
+ cmp r0, #0
+ bne _02231036
+ ldr r0, [r1, #0x28]
+ cmp r0, #0
+ ble _022310D0
+ sub r0, r0, #1
+ str r0, [r1, #0x28]
+ ldr r0, _02231104 ; =0x000005DC
+ bl FUN_020054C8
+ b _022310D0
+_02231036:
+ ldr r0, [r1, #0x2c]
+ cmp r0, #0
+ beq _02231042
+ ldr r0, _02231104 ; =0x000005DC
+ bl FUN_020054C8
+_02231042:
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ str r1, [r0, #0x2c]
+ b _022310D0
+_0223104E:
+ mov r1, #0x80
+ tst r1, r0
+ beq _0223108A
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r1, [r4, r0]
+ ldr r0, [r1, #0x24]
+ cmp r0, #0
+ bne _02231072
+ ldr r0, [r1, #0x28]
+ cmp r0, #2
+ bge _022310D0
+ add r0, r0, #1
+ str r0, [r1, #0x28]
+ ldr r0, _02231104 ; =0x000005DC
+ bl FUN_020054C8
+ b _022310D0
+_02231072:
+ ldr r0, [r1, #0x2c]
+ cmp r0, #1
+ beq _0223107E
+ ldr r0, _02231104 ; =0x000005DC
+ bl FUN_020054C8
+_0223107E:
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ str r1, [r0, #0x2c]
+ b _022310D0
+_0223108A:
+ mov r1, #0x10
+ tst r1, r0
+ beq _022310AE
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0x24]
+ cmp r0, #1
+ beq _022310A2
+ ldr r0, _02231104 ; =0x000005DC
+ bl FUN_020054C8
+_022310A2:
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ str r1, [r0, #0x24]
+ b _022310D0
+_022310AE:
+ mov r1, #0x20
+ tst r0, r1
+ beq _022310D0
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0x24]
+ cmp r0, #0
+ beq _022310C6
+ ldr r0, _02231104 ; =0x000005DC
+ bl FUN_020054C8
+_022310C6:
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ str r1, [r0, #0x24]
+_022310D0:
+ add r0, r4, #0
+ bl MOD80_02230FF0
+ lsl r1, r0, #2
+ ldr r0, _02231108 ; =0x02237A80
+ ldrh r0, [r0, r1]
+ lsl r0, r0, #0xc
+ str r0, [sp]
+ add r0, r4, #0
+ bl MOD80_02230FF0
+ lsl r1, r0, #2
+ ldr r0, _0223110C ; =0x02237A82
+ ldrh r0, [r0, r1]
+ add r1, sp, #0
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r0, _02231110 ; =0x00000D5C
+ ldr r0, [r4, r0]
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_02231100: .word 0x021C48B8
+_02231104: .word 0x000005DC
+_02231108: .word 0x02237A80
+_0223110C: .word 0x02237A82
+_02231110: .word 0x00000D5C
+ thumb_func_end MOD80_02231008
+
+ thumb_func_start MOD80_02231114
+MOD80_02231114: ; 0x02231114
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #6
+ mov r1, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ mov r0, #4
+ add sp, #0xc
+ pop {r3, r4, pc}
+ thumb_func_end MOD80_02231114
+
+ thumb_func_start MOD80_0223113C
+MOD80_0223113C: ; 0x0223113C
+ push {r3, r4, lr}
+ sub sp, #0x14
+ ldr r1, _022311B4 ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ mov r1, #9
+ mov r2, #1
+ mov r3, #0
+ bl MOD80_0223187C
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #4
+ bl MOD80_0222E6DC
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #0xd
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, _022311B8 ; =0x0000013A
+ ldr r1, _022311BC ; =0x00000ED8
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #0xf
+ bl FUN_02019064
+ ldr r0, _022311BC ; =0x00000ED8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #0xd
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, _022311C0 ; =0x0000016E
+ ldr r1, _022311C4 ; =0x00000EE8
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #0x15
+ bl FUN_02019064
+ ldr r0, _022311C4 ; =0x00000EE8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ mov r0, #3
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .align 2, 0
+_022311B4: .word 0x00000F0F
+_022311B8: .word 0x0000013A
+_022311BC: .word 0x00000ED8
+_022311C0: .word 0x0000016E
+_022311C4: .word 0x00000EE8
+ thumb_func_end MOD80_0223113C
+
+ thumb_func_start MOD80_022311C8
+MOD80_022311C8: ; 0x022311C8
+ push {r4, lr}
+ ldr r2, _022311F0 ; =0x00000FC8
+ add r4, r0, #0
+ ldr r3, _022311F4 ; =0x00000B34
+ add r1, r4, r2
+ sub r2, #0xf0
+ ldr r3, [r4, r3]
+ add r2, r4, r2
+ bl MOD80_02234370
+ ldr r1, _022311F8 ; =0x00000FD4
+ str r0, [r4, r1]
+ add r0, r4, #0
+ ldr r1, _022311FC ; =0x0000FFFF
+ add r0, #0xb0
+ strh r1, [r0]
+ mov r0, #5
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_022311F0: .word 0x00000FC8
+_022311F4: .word 0x00000B34
+_022311F8: .word 0x00000FD4
+_022311FC: .word 0x0000FFFF
+ thumb_func_end MOD80_022311C8
+
+ thumb_func_start MOD80_02231200
+MOD80_02231200: ; 0x02231200
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _022312B4 ; =0x00000FD4
+ add r1, r4, #0
+ ldr r0, [r4, r0]
+ add r1, #0xb0
+ bl MOD80_02234698
+ cmp r0, #0xa
+ bhi _02231236
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02231220: ; jump table
+ .short _022312AE - _02231220 - 2 ; case 0
+ .short _02231240 - _02231220 - 2 ; case 1
+ .short _02231240 - _02231220 - 2 ; case 2
+ .short _02231240 - _02231220 - 2 ; case 3
+ .short _02231240 - _02231220 - 2 ; case 4
+ .short _02231240 - _02231220 - 2 ; case 5
+ .short _02231240 - _02231220 - 2 ; case 6
+ .short _02231240 - _02231220 - 2 ; case 7
+ .short _02231240 - _02231220 - 2 ; case 8
+ .short _02231240 - _02231220 - 2 ; case 9
+ .short _02231240 - _02231220 - 2 ; case 10
+_02231236:
+ mov r1, #1
+ mvn r1, r1
+ cmp r0, r1
+ beq _02231266
+ b _022312AE
+_02231240:
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r2, [r4, r0]
+ sub r0, #0xc
+ add r1, r2, #6
+ ldr r0, [r4, r0]
+ add r2, r2, #4
+ bl FUN_02001300
+ ldr r0, _022312B8 ; =0x00000FC8
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ ldr r0, _022312BC ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #6
+ str r0, [r4, #0x2c]
+ b _022312AE
+_02231266:
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r2, [r4, r0]
+ sub r0, #0xc
+ add r1, r2, #6
+ ldr r0, [r4, r0]
+ add r2, r2, #4
+ bl FUN_02001300
+ ldr r0, _022312B8 ; =0x00000FC8
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ ldr r0, _022312C0 ; =0x00000ED8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200CCF8
+ ldr r0, _022312C4 ; =0x00000E98
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200D0E0
+ ldr r0, _022312C0 ; =0x00000ED8
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _022312C8 ; =0x00000EE8
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _022312BC ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0
+ str r0, [r4, #0x2c]
+_022312AE:
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_022312B4: .word 0x00000FD4
+_022312B8: .word 0x00000FC8
+_022312BC: .word 0x000005DC
+_022312C0: .word 0x00000ED8
+_022312C4: .word 0x00000E98
+_022312C8: .word 0x00000EE8
+ thumb_func_end MOD80_02231200
+
+ thumb_func_start MOD80_022312CC
+MOD80_022312CC: ; 0x022312CC
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r3, _02231310 ; =0x00000B38
+ add r4, r0, #0
+ ldr r1, [r4, r3]
+ mov r2, #0xfe
+ lsl r2, r2, #4
+ str r1, [sp]
+ ldr r1, [r4, r2]
+ sub r3, r3, #4
+ str r1, [sp, #4]
+ ldr r1, [r4]
+ ldr r1, [r1, #0x10]
+ str r1, [sp, #8]
+ add r1, r2, #0
+ sub r1, #0x18
+ sub r2, #0xf8
+ ldr r3, [r4, r3]
+ add r1, r4, r1
+ add r2, r4, r2
+ bl MOD80_022344DC
+ ldr r1, _02231314 ; =0x00000FD4
+ str r0, [r4, r1]
+ add r0, r4, #0
+ ldr r1, _02231318 ; =0x0000FFFF
+ add r0, #0xb0
+ strh r1, [r0]
+ mov r0, #7
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_02231310: .word 0x00000B38
+_02231314: .word 0x00000FD4
+_02231318: .word 0x0000FFFF
+ thumb_func_end MOD80_022312CC
+
+ thumb_func_start MOD80_0223131C
+MOD80_0223131C: ; 0x0223131C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, _02231464 ; =0x00000FD4
+ add r1, r4, #0
+ ldr r0, [r4, r0]
+ add r1, #0xb0
+ bl MOD80_02234698
+ add r5, r0, #0
+ mov r0, #1
+ mvn r0, r0
+ cmp r5, r0
+ beq _02231342
+ add r0, r0, #1
+ cmp r5, r0
+ bne _02231340
+ b _0223145C
+_02231340:
+ b _0223138C
+_02231342:
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r2, [r4, r0]
+ sub r0, #0xc
+ add r1, r2, #0
+ ldr r0, [r4, r0]
+ add r1, #0xa
+ add r2, #8
+ bl FUN_02001300
+ ldr r0, _02231468 ; =0x00000FC8
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ ldr r0, _0223146C ; =0x00000EE8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200CCF8
+ ldr r0, _02231470 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #4
+ str r0, [r4, #0x2c]
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r3, [r4, r0]
+ add r0, #0x38
+ ldrh r2, [r3, #6]
+ ldrh r1, [r3, #4]
+ add r0, r4, r0
+ add r1, r2, r1
+ ldrh r2, [r3, #0xa]
+ ldrh r3, [r3, #8]
+ bl MOD80_022346F0
+ b _0223145C
+_0223138C:
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r2, [r4, r0]
+ sub r0, #0xc
+ add r1, r2, #0
+ ldr r0, [r4, r0]
+ add r1, #0xa
+ add r2, #8
+ bl FUN_02001300
+ ldr r0, _02231468 ; =0x00000FC8
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ ldr r0, _02231474 ; =0x00000ED8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200CCF8
+ ldr r0, _0223146C ; =0x00000EE8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200CCF8
+ ldr r0, _02231474 ; =0x00000ED8
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _0223146C ; =0x00000EE8
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _02231478 ; =0x00000B22
+ strh r5, [r4, r0]
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ ldr r0, _02231470 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _0223147C ; =0x00000F18
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _02231480 ; =0x00010200
+ ldr r1, _02231484 ; =0x00000B38
+ str r0, [sp, #4]
+ ldr r0, _0223147C ; =0x00000F18
+ ldr r1, [r4, r1]
+ add r0, r4, r0
+ add r2, r5, #0
+ mov r3, #2
+ bl MOD80_02233EA4
+ add r0, r5, #0
+ mov r1, #0x12
+ bl FUN_02068678
+ mov r1, #0xfe
+ lsl r1, r1, #4
+ ldr r2, [r4, r1]
+ str r0, [r2, #0x20]
+ ldr r3, [r4, r1]
+ add r1, #0x38
+ add r0, r4, r1
+ ldrh r2, [r3, #6]
+ ldrh r1, [r3, #4]
+ add r1, r2, r1
+ ldrh r2, [r3, #0xa]
+ ldrh r3, [r3, #8]
+ bl MOD80_022346F0
+ mov r1, #0xfe
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ ldr r0, _02231478 ; =0x00000B22
+ ldr r1, [r1, #0x20]
+ add r0, r4, r0
+ bl MOD80_022338E0
+ cmp r0, #0
+ beq _0223145C
+ ldr r0, _02231488 ; =0x00000F38
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _02231480 ; =0x00010200
+ ldr r2, _0223148C ; =0x00000B34
+ str r0, [sp, #8]
+ ldr r1, [r4, r2]
+ sub r2, #0x10
+ ldr r0, _02231488 ; =0x00000F38
+ ldrsb r2, [r4, r2]
+ add r0, r4, r0
+ mov r3, #1
+ bl MOD80_02233EF4
+_0223145C:
+ mov r0, #3
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_02231464: .word 0x00000FD4
+_02231468: .word 0x00000FC8
+_0223146C: .word 0x00000EE8
+_02231470: .word 0x000005DC
+_02231474: .word 0x00000ED8
+_02231478: .word 0x00000B22
+_0223147C: .word 0x00000F18
+_02231480: .word 0x00010200
+_02231484: .word 0x00000B38
+_02231488: .word 0x00000F38
+_0223148C: .word 0x00000B34
+ thumb_func_end MOD80_0223131C
+
+ thumb_func_start MOD80_02231490
+MOD80_02231490: ; 0x02231490
+ push {r3, r4, lr}
+ sub sp, #0x14
+ ldr r1, _022314E0 ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ mov r1, #0xa
+ mov r2, #1
+ mov r3, #0
+ bl MOD80_0223187C
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #9
+ bl MOD80_0222E6DC
+ mov r0, #0xa
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _022314E4 ; =0x0000013A
+ ldr r1, _022314E8 ; =0x00000ED8
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #0x15
+ bl FUN_02019064
+ ldr r0, _022314E8 ; =0x00000ED8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ mov r0, #3
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_022314E0: .word 0x00000F0F
+_022314E4: .word 0x0000013A
+_022314E8: .word 0x00000ED8
+ thumb_func_end MOD80_02231490
+
+ thumb_func_start MOD80_022314EC
+MOD80_022314EC: ; 0x022314EC
+ push {r4, lr}
+ ldr r1, _02231514 ; =0x00000FC8
+ add r4, r0, #0
+ ldr r2, _02231518 ; =0x00000B34
+ add r0, r4, r1
+ sub r1, #0xf0
+ ldr r2, [r4, r2]
+ add r1, r4, r1
+ bl MOD80_02234560
+ ldr r1, _0223151C ; =0x00000FD4
+ str r0, [r4, r1]
+ add r0, r4, #0
+ ldr r1, _02231520 ; =0x0000FFFF
+ add r0, #0xb0
+ strh r1, [r0]
+ mov r0, #0xa
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_02231514: .word 0x00000FC8
+_02231518: .word 0x00000B34
+_0223151C: .word 0x00000FD4
+_02231520: .word 0x0000FFFF
+ thumb_func_end MOD80_022314EC
+
+ thumb_func_start MOD80_02231524
+MOD80_02231524: ; 0x02231524
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, _022315F0 ; =0x00000FD4
+ add r1, r5, #0
+ ldr r0, [r5, r0]
+ add r1, #0xb0
+ bl MOD80_02234698
+ add r4, r0, #0
+ cmp r4, #2
+ bhi _0223154A
+ cmp r4, #0
+ beq _0223158E
+ cmp r4, #1
+ beq _0223158E
+ cmp r4, #2
+ beq _0223158E
+ b _022315EA
+_0223154A:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _022315EA
+ ldr r0, _022315F0 ; =0x00000FD4
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r2, r1, #0
+ bl FUN_02001300
+ ldr r0, _022315F4 ; =0x00000FC8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _022315F8 ; =0x00000ED8
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200CCF8
+ ldr r0, _022315FC ; =0x00000E98
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200D0E0
+ ldr r0, _022315F8 ; =0x00000ED8
+ add r0, r5, r0
+ bl FUN_02019178
+ ldr r0, _02231600 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0
+ str r0, [r5, #0x2c]
+ b _022315EA
+_0223158E:
+ ldr r0, _022315F0 ; =0x00000FD4
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r2, r1, #0
+ bl FUN_02001300
+ ldr r0, _022315F4 ; =0x00000FC8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _022315F8 ; =0x00000ED8
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200CCF8
+ ldr r0, _022315F8 ; =0x00000ED8
+ add r0, r5, r0
+ bl FUN_02019178
+ ldr r0, _02231600 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _02231604 ; =0x00000B24
+ add r1, r4, #1
+ strb r1, [r5, r0]
+ ldr r0, _02231608 ; =0x00000F38
+ mov r1, #0
+ add r0, r5, r0
+ str r1, [r5, #0x2c]
+ bl FUN_02019620
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _0223160C ; =0x00010200
+ ldr r2, _02231610 ; =0x00000B34
+ str r0, [sp, #8]
+ ldr r1, [r5, r2]
+ sub r2, #0x10
+ ldr r0, _02231608 ; =0x00000F38
+ ldrsb r2, [r5, r2]
+ add r0, r5, r0
+ mov r3, #1
+ bl MOD80_02233EF4
+_022315EA:
+ mov r0, #3
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_022315F0: .word 0x00000FD4
+_022315F4: .word 0x00000FC8
+_022315F8: .word 0x00000ED8
+_022315FC: .word 0x00000E98
+_02231600: .word 0x000005DC
+_02231604: .word 0x00000B24
+_02231608: .word 0x00000F38
+_0223160C: .word 0x00010200
+_02231610: .word 0x00000B34
+ thumb_func_end MOD80_02231524
+
+ thumb_func_start MOD80_02231614
+MOD80_02231614: ; 0x02231614
+ push {r3, r4, lr}
+ sub sp, #0x14
+ ldr r1, _02231664 ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ mov r1, #0xb
+ mov r2, #1
+ mov r3, #0
+ bl MOD80_0223187C
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #0xc
+ bl MOD80_0222E6DC
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0xd
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, _02231668 ; =0x0000013A
+ ldr r1, _0223166C ; =0x00000ED8
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #0xf
+ bl FUN_02019064
+ ldr r0, _0223166C ; =0x00000ED8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ mov r0, #3
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_02231664: .word 0x00000F0F
+_02231668: .word 0x0000013A
+_0223166C: .word 0x00000ED8
+ thumb_func_end MOD80_02231614
+
+ thumb_func_start MOD80_02231670
+MOD80_02231670: ; 0x02231670
+ push {r4, lr}
+ ldr r1, _02231698 ; =0x00000FC8
+ add r4, r0, #0
+ ldr r2, _0223169C ; =0x00000B34
+ add r0, r4, r1
+ sub r1, #0xf0
+ ldr r2, [r4, r2]
+ add r1, r4, r1
+ bl MOD80_022345D0
+ ldr r1, _022316A0 ; =0x00000FD4
+ str r0, [r4, r1]
+ add r0, r4, #0
+ ldr r1, _022316A4 ; =0x0000FFFF
+ add r0, #0xb0
+ strh r1, [r0]
+ mov r0, #0xd
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_02231698: .word 0x00000FC8
+_0223169C: .word 0x00000B34
+_022316A0: .word 0x00000FD4
+_022316A4: .word 0x0000FFFF
+ thumb_func_end MOD80_02231670
+
+ thumb_func_start MOD80_022316A8
+MOD80_022316A8: ; 0x022316A8
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, _0223176C ; =0x00000FD4
+ add r1, r5, #0
+ ldr r0, [r5, r0]
+ add r1, #0xb0
+ bl MOD80_02234698
+ add r4, r0, #0
+ cmp r4, #0xc
+ beq _022316D0
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _022316D0
+ add r0, r0, #1
+ cmp r4, r0
+ beq _02231766
+ b _0223170C
+_022316D0:
+ ldr r0, _0223176C ; =0x00000FD4
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r2, r1, #0
+ bl FUN_02001300
+ ldr r0, _02231770 ; =0x00000FC8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _02231774 ; =0x00000ED8
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200CCF8
+ ldr r0, _02231778 ; =0x00000E98
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200D0E0
+ ldr r0, _02231774 ; =0x00000ED8
+ add r0, r5, r0
+ bl FUN_02019178
+ ldr r0, _0223177C ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0
+ str r0, [r5, #0x2c]
+ b _02231766
+_0223170C:
+ ldr r0, _0223176C ; =0x00000FD4
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r2, r1, #0
+ bl FUN_02001300
+ ldr r0, _02231770 ; =0x00000FC8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _02231774 ; =0x00000ED8
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200CCF8
+ ldr r0, _02231774 ; =0x00000ED8
+ add r0, r5, r0
+ bl FUN_02019178
+ ldr r0, _0223177C ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _02231780 ; =0x00000B22
+ add r1, r4, #0
+ add r0, r5, r0
+ bl MOD80_02234640
+ ldr r0, _02231784 ; =0x00000F58
+ mov r1, #0
+ add r0, r5, r0
+ str r1, [r5, #0x2c]
+ bl FUN_02019620
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _02231788 ; =0x00010200
+ ldr r1, _0223178C ; =0x00000B34
+ str r0, [sp, #4]
+ ldr r0, _02231784 ; =0x00000F58
+ ldr r1, [r5, r1]
+ add r0, r5, r0
+ add r2, r4, #0
+ mov r3, #2
+ bl MOD80_02233F9C
+_02231766:
+ mov r0, #3
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223176C: .word 0x00000FD4
+_02231770: .word 0x00000FC8
+_02231774: .word 0x00000ED8
+_02231778: .word 0x00000E98
+_0223177C: .word 0x000005DC
+_02231780: .word 0x00000B22
+_02231784: .word 0x00000F58
+_02231788: .word 0x00010200
+_0223178C: .word 0x00000B34
+ thumb_func_end MOD80_022316A8
+
+ thumb_func_start MOD80_02231790
+MOD80_02231790: ; 0x02231790
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r2, _022317AC ; =0x0000020A
+ mov r1, #0xf
+ bl MOD80_0222E6A8
+ ldr r1, _022317B0 ; =0x00000FCC
+ str r0, [r4, r1]
+ mov r0, #0x17
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_022317AC: .word 0x0000020A
+_022317B0: .word 0x00000FCC
+ thumb_func_end MOD80_02231790
+
+ thumb_func_start MOD80_022317B4
+MOD80_022317B4: ; 0x022317B4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _022317F4 ; =0x00000FCC
+ mov r1, #0x3e
+ ldr r0, [r4, r0]
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _022317F0
+ sub r1, r1, #1
+ cmp r0, r1
+ bne _022317D6
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ b _022317F0
+_022317D6:
+ mov r0, #2
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD80_0222E7A8
+ add r0, r4, #0
+ bl MOD80_02235C40
+ mov r0, #0
+ add r4, #0xc0
+ str r0, [r4]
+_022317F0:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_022317F4: .word 0x00000FCC
+ thumb_func_end MOD80_022317B4
+
+ thumb_func_start MOD80_022317F8
+MOD80_022317F8: ; 0x022317F8
+ mov r1, #1
+ str r1, [r0, #0x2c]
+ mov r0, #3
+ bx lr
+ thumb_func_end MOD80_022317F8
+
+ thumb_func_start MOD80_02231800
+MOD80_02231800: ; 0x02231800
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r1, _02231824 ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ mov r1, #0x8e
+ mov r2, #1
+ mov r3, #0
+ bl MOD80_0223187C
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #1
+ bl MOD80_0222E6DC
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_02231824: .word 0x00000F0F
+ thumb_func_end MOD80_02231800
+
+ thumb_func_start MOD80_02231828
+MOD80_02231828: ; 0x02231828
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x2e
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02231842
+ ldr r0, [r4, #0x30]
+ str r0, [r4, #0x2c]
+_02231842:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02231828
+
+ thumb_func_start MOD80_02231848
+MOD80_02231848: ; 0x02231848
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x2e
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02231874
+ ldr r0, _02231878 ; =0x00000FDC
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ ldr r1, [r4, r0]
+ cmp r1, #0x2d
+ ble _02231874
+ mov r1, #0
+ str r1, [r4, r0]
+ ldr r0, [r4, #0x30]
+ str r0, [r4, #0x2c]
+_02231874:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_02231878: .word 0x00000FDC
+ thumb_func_end MOD80_02231848
+
+ thumb_func_start MOD80_0223187C
+MOD80_0223187C: ; 0x0223187C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r2, #0
+ ldr r2, _022318C8 ; =0x00000B34
+ add r5, r0, #0
+ ldr r0, [r5, r2]
+ add r2, #0x18
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ ldr r0, _022318CC ; =0x00000E98
+ mov r1, #0xf
+ add r0, r5, r0
+ bl FUN_02019620
+ ldr r0, _022318CC ; =0x00000E98
+ mov r1, #0
+ add r0, r5, r0
+ mov r2, #1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ mov r3, #0
+ str r3, [sp]
+ str r4, [sp, #4]
+ ldr r0, _022318CC ; =0x00000E98
+ ldr r2, _022318D0 ; =0x00000B4C
+ str r3, [sp, #8]
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ mov r1, #0x2e
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_022318C8: .word 0x00000B34
+_022318CC: .word 0x00000E98
+_022318D0: .word 0x00000B4C
+ thumb_func_end MOD80_0223187C
+
+ thumb_func_start MOD80_022318D4
+MOD80_022318D4: ; 0x022318D4
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #0x3b
+ bl FUN_0200A914
+ add r6, r0, #0
+ mov r2, #0
+ ldr r0, _022319B8 ; =0x000F0200
+ str r2, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r2, #0
+ bl MOD80_02236D50
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ mov r1, #0x3d
+ bl FUN_0200A914
+ add r6, r0, #0
+ mov r2, #0
+ ldr r0, _022319B8 ; =0x000F0200
+ str r2, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x20
+ add r1, r6, #0
+ add r3, r2, #0
+ bl MOD80_02236D50
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ mov r1, #0x3f
+ bl FUN_0200A914
+ add r6, r0, #0
+ mov r2, #0
+ ldr r0, _022319B8 ; =0x000F0200
+ str r2, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x40
+ add r1, r6, #0
+ add r3, r2, #0
+ bl MOD80_02236D50
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ mov r1, #0x41
+ bl FUN_0200A914
+ add r6, r0, #0
+ add r3, r5, #0
+ add r3, #0x67
+ ldrb r3, [r3]
+ mov r0, #0
+ add r1, r6, #0
+ add r2, r0, #0
+ lsl r3, r3, #3
+ bl FUN_02002F40
+ add r2, r0, #0
+ mov r3, #0
+ ldr r0, _022319BC ; =0x00010200
+ str r3, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x60
+ add r1, r6, #0
+ bl MOD80_02236D50
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ mov r1, #0x42
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r3, r5, #0
+ add r3, #0x77
+ ldrb r3, [r3]
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ lsl r3, r3, #3
+ bl FUN_02002F40
+ add r2, r0, #0
+ mov r3, #0
+ ldr r0, _022319BC ; =0x00010200
+ str r3, [sp]
+ add r5, #0x70
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD80_02236D50
+ add r0, r4, #0
+ bl FUN_02021A20
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ nop
+_022319B8: .word 0x000F0200
+_022319BC: .word 0x00010200
+ thumb_func_end MOD80_022318D4
+
+ thumb_func_start MOD80_022319C0
+MOD80_022319C0: ; 0x022319C0
+ mov r2, #0
+ ldrsh r3, [r0, r2]
+ ldrsh r2, [r1, r2]
+ cmp r3, r2
+ bne _022319EC
+ mov r2, #2
+ ldrsb r3, [r0, r2]
+ ldrsb r2, [r1, r2]
+ cmp r3, r2
+ bne _022319EC
+ mov r2, #3
+ ldrsb r3, [r0, r2]
+ ldrsb r2, [r1, r2]
+ cmp r3, r2
+ bne _022319EC
+ mov r2, #4
+ ldrsb r3, [r0, r2]
+ ldrsb r0, [r1, r2]
+ cmp r3, r0
+ bne _022319EC
+ mov r0, #1
+ bx lr
+_022319EC:
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD80_022319C0
+
+ thumb_func_start MOD80_022319F0
+MOD80_022319F0: ; 0x022319F0
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl MOD80_0223205C
+ ldr r0, [r4, #4]
+ bl MOD80_02231AB0
+ add r0, r4, #0
+ bl MOD80_02231BF4
+ add r0, r4, #0
+ bl MOD80_02231EA8
+ add r0, r4, #0
+ bl MOD80_02231CBC
+ ldr r0, [r4, #0x20]
+ cmp r0, #8
+ bne _02231A30
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ b _02231A46
+_02231A30:
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+_02231A46:
+ add r1, r4, #0
+ add r1, #0xb8
+ ldrh r1, [r1]
+ add r0, r4, #0
+ bl MOD80_02232D7C
+ add r0, r4, #0
+ bl MOD80_02236D84
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ mov r0, #2
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_022319F0
+
+ thumb_func_start MOD80_02231A64
+MOD80_02231A64: ; 0x02231A64
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222E79C
+ bl FUN_02033EEC
+ ldr r1, [r4, #0x2c]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02231A80 ; =0x02237B04
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r4, pc}
+ nop
+_02231A80: .word 0x02237B04
+ thumb_func_end MOD80_02231A64
+
+ thumb_func_start MOD80_02231A84
+MOD80_02231A84: ; 0x02231A84
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02033ED0
+ add r0, r4, #0
+ bl MOD80_02231E44
+ add r0, r4, #0
+ bl MOD80_022320E8
+ add r0, r4, #0
+ bl MOD80_0223200C
+ ldr r0, [r4, #4]
+ bl MOD80_02231BC8
+ add r0, r4, #0
+ bl MOD80_0222E7B0
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02231A84
+
+ thumb_func_start MOD80_02231AB0
+MOD80_02231AB0: ; 0x02231AB0
+ push {r4, r5, lr}
+ sub sp, #0x9c
+ ldr r5, _02231BB0 ; =0x02237210
+ 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, _02231BB4 ; =0x02237288
+ 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, _02231BB8 ; =0x022372A4
+ 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
+ ldr r5, _02231BBC ; =0x0223726C
+ 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
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ ldr r5, _02231BC0 ; =0x02237234
+ 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, _02231BC4 ; =0x02237250
+ 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, #0x3e
+ bl FUN_02017F18
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x3e
+ bl FUN_02017F18
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x9c
+ pop {r4, r5, pc}
+ nop
+_02231BB0: .word 0x02237210
+_02231BB4: .word 0x02237288
+_02231BB8: .word 0x022372A4
+_02231BBC: .word 0x0223726C
+_02231BC0: .word 0x02237234
+_02231BC4: .word 0x02237250
+ thumb_func_end MOD80_02231AB0
+
+ thumb_func_start MOD80_02231BC8
+MOD80_02231BC8: ; 0x02231BC8
+ 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, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020178A0
+ pop {r4, pc}
+ thumb_func_end MOD80_02231BC8
+
+ thumb_func_start MOD80_02231BF4
+MOD80_02231BF4: ; 0x02231BF4
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r4, [r5, #4]
+ mov r0, #0x60
+ str r0, [sp]
+ mov r0, #0x3e
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x68
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r0, #1
+ lsl r0, r0, #8
+ str r0, [sp]
+ mov r0, #0x3e
+ str r0, [sp, #4]
+ mov r0, #0x68
+ mov r1, #5
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r1, #0x1a
+ mov r0, #0
+ lsl r1, r1, #4
+ mov r2, #0x3e
+ bl FUN_02002EEC
+ ldr r0, [r5]
+ ldr r0, [r0, #0x24]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x3e
+ 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, #0x3e
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x1f
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xa
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x68
+ mov r1, #0xc
+ add r2, r4, #0
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x68
+ mov r1, #0x18
+ add r2, r4, #0
+ bl FUN_020068C8
+ 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, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x68
+ mov r1, #0x1d
+ add r2, r4, #0
+ mov r3, #2
+ bl FUN_020068C8
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD80_02231BF4
+
+ thumb_func_start MOD80_02231CBC
+MOD80_02231CBC: ; 0x02231CBC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ mov r2, #0xcf
+ add r5, r0, #0
+ lsl r2, r2, #4
+ add r0, sp, #0
+ add r1, r5, #0
+ add r2, r5, r2
+ mov r3, #1
+ bl MOD80_0222E5E8
+ add r0, r5, #0
+ add r0, #0xba
+ ldrh r0, [r0]
+ lsl r1, r0, #2
+ ldr r0, _02231E28 ; =0x022372C0
+ ldrh r0, [r0, r1]
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0xba
+ ldrh r0, [r0]
+ lsl r1, r0, #2
+ ldr r0, _02231E2C ; =0x022372C2
+ ldrh r0, [r0, r1]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ add r0, sp, #0
+ bl FUN_0201FE94
+ ldr r1, _02231E30 ; =0x00000D5C
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, _02231E30 ; =0x00000D5C
+ mov r1, #4
+ ldr r0, [r5, r0]
+ bl FUN_02020130
+ ldr r0, _02231E30 ; =0x00000D5C
+ mov r1, #1
+ ldr r0, [r5, r0]
+ bl FUN_02020238
+ ldr r6, _02231E28 ; =0x022372C0
+ mov r7, #0
+ add r4, r5, #0
+_02231D1E:
+ ldrh r0, [r6]
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldrh r0, [r6, #2]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ mov r0, #0x14
+ str r0, [sp, #0x24]
+ add r0, sp, #0
+ bl FUN_0201FE94
+ ldr r1, _02231E34 ; =0x00000D64
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r0, [r4, r0]
+ add r1, r7, #6
+ bl FUN_02020130
+ ldr r0, _02231E34 ; =0x00000D64
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl FUN_02020238
+ add r7, r7, #1
+ add r6, r6, #4
+ add r4, r4, #4
+ cmp r7, #0x1e
+ blt _02231D1E
+ ldr r6, _02231E28 ; =0x022372C0
+ mov r7, #0
+ add r4, r5, #0
+_02231D5C:
+ ldrh r0, [r6]
+ add r0, r0, #4
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldrh r0, [r6, #2]
+ add r0, r0, #6
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ mov r0, #0xa
+ str r0, [sp, #0x24]
+ add r0, sp, #0
+ bl FUN_0201FE94
+ ldr r1, _02231E38 ; =0x00000DDC
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r0, [r4, r0]
+ mov r1, #0x28
+ bl FUN_02020130
+ ldr r0, _02231E38 ; =0x00000DDC
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl FUN_02020238
+ add r7, r7, #1
+ add r6, r6, #4
+ add r4, r4, #4
+ cmp r7, #0x1e
+ blt _02231D5C
+ ldr r6, _02231E28 ; =0x022372C0
+ mov r7, #0
+ add r4, r5, #0
+_02231D9E:
+ ldrh r0, [r6]
+ add r0, #0xc
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldrh r0, [r6, #2]
+ add r0, r0, #6
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ mov r0, #0xa
+ str r0, [sp, #0x24]
+ add r0, sp, #0
+ bl FUN_0201FE94
+ ldr r1, _02231E3C ; =0x00000E54
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r0, [r4, r0]
+ mov r1, #0x2a
+ bl FUN_02020130
+ ldr r0, _02231E3C ; =0x00000E54
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl FUN_02020238
+ add r7, r7, #1
+ add r6, r6, #4
+ add r4, r4, #4
+ cmp r7, #6
+ blt _02231D9E
+ mov r7, #0xe9
+ ldr r4, _02231E40 ; =0x02237208
+ mov r6, #0
+ lsl r7, r7, #4
+_02231DE2:
+ ldrh r0, [r4]
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldrh r0, [r4, #2]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ add r0, sp, #0
+ bl FUN_0201FE94
+ mov r1, #0xe9
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0xe9
+ lsl r0, r0, #4
+ add r1, r6, #0
+ ldr r0, [r5, r0]
+ add r1, #0x26
+ bl FUN_02020130
+ ldr r0, [r5, r7]
+ mov r1, #1
+ bl FUN_02020238
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r6, #2
+ blt _02231DE2
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02231E28: .word 0x022372C0
+_02231E2C: .word 0x022372C2
+_02231E30: .word 0x00000D5C
+_02231E34: .word 0x00000D64
+_02231E38: .word 0x00000DDC
+_02231E3C: .word 0x00000E54
+_02231E40: .word 0x02237208
+ thumb_func_end MOD80_02231CBC
+
+ thumb_func_start MOD80_02231E44
+MOD80_02231E44: ; 0x02231E44
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r7, #0xe9
+ mov r6, #0
+ add r4, r5, #0
+ lsl r7, r7, #4
+_02231E50:
+ ldr r0, [r4, r7]
+ bl FUN_0201FFC8
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #2
+ blt _02231E50
+ ldr r0, _02231E98 ; =0x00000D5C
+ ldr r0, [r5, r0]
+ bl FUN_0201FFC8
+ ldr r7, _02231E9C ; =0x00000DDC
+ mov r6, #0
+ add r4, r5, #0
+_02231E6C:
+ ldr r0, _02231EA0 ; =0x00000D64
+ ldr r0, [r4, r0]
+ bl FUN_0201FFC8
+ ldr r0, [r4, r7]
+ bl FUN_0201FFC8
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #0x1e
+ blt _02231E6C
+ ldr r6, _02231EA4 ; =0x00000E54
+ mov r4, #0
+_02231E86:
+ ldr r0, [r5, r6]
+ bl FUN_0201FFC8
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _02231E86
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02231E98: .word 0x00000D5C
+_02231E9C: .word 0x00000DDC
+_02231EA0: .word 0x00000D64
+_02231EA4: .word 0x00000E54
+ thumb_func_end MOD80_02231E44
+
+ thumb_func_start MOD80_02231EA8
+MOD80_02231EA8: ; 0x02231EA8
+ push {r3, r4, lr}
+ sub sp, #0x14
+ mov r3, #1
+ add r4, r0, #0
+ str r3, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x28
+ ldr r1, _02231FDC ; =0x00000EB8
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #0
+ bl FUN_02019064
+ ldr r0, _02231FDC ; =0x00000EB8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ mov r2, #0
+ mov r1, #0xb5
+ ldr r0, _02231FE0 ; =0x000F0E00
+ str r2, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02231FDC ; =0x00000EB8
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ add r0, r4, r0
+ mov r3, #1
+ bl MOD80_02236D50
+ mov r1, #3
+ str r1, [sp]
+ mov r0, #0xd
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ mov r0, #0x60
+ ldr r1, _02231FE4 ; =0x00000EC8
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #5
+ bl FUN_02019064
+ ldr r0, _02231FE4 ; =0x00000EC8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ ldr r0, _02231FE4 ; =0x00000EC8
+ add r0, r4, r0
+ bl FUN_020191D0
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r3, #2
+ ldr r1, _02231FE8 ; =0x00000E98
+ str r3, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ add r0, #0xfc
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #0
+ bl FUN_02019064
+ ldr r0, _02231FE8 ; =0x00000E98
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _02231FEC ; =0x0000013F
+ ldr r1, _02231FF0 ; =0x00000FB8
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #2
+ bl FUN_02019064
+ ldr r0, _02231FF0 ; =0x00000FB8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, _02231FF4 ; =0x00000165
+ ldr r1, _02231FF8 ; =0x00000EE8
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #1
+ mov r3, #0x19
+ bl FUN_02019064
+ ldr r0, _02231FF8 ; =0x00000EE8
+ mov r1, #6
+ add r0, r4, r0
+ bl FUN_02019620
+ mov r3, #1
+ ldr r0, _02231FFC ; =0x00010306
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r1, _02232000 ; =0x00000B48
+ ldr r0, _02231FF8 ; =0x00000EE8
+ ldr r1, [r4, r1]
+ add r0, r4, r0
+ mov r2, #0
+ bl MOD80_02236D50
+ mov r1, #0xd
+ str r1, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #6
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, _02232004 ; =0x00000171
+ ldr r1, _02232008 ; =0x00000ED8
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #0x15
+ bl FUN_02019064
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .align 2, 0
+_02231FDC: .word 0x00000EB8
+_02231FE0: .word 0x000F0E00
+_02231FE4: .word 0x00000EC8
+_02231FE8: .word 0x00000E98
+_02231FEC: .word 0x0000013F
+_02231FF0: .word 0x00000FB8
+_02231FF4: .word 0x00000165
+_02231FF8: .word 0x00000EE8
+_02231FFC: .word 0x00010306
+_02232000: .word 0x00000B48
+_02232004: .word 0x00000171
+_02232008: .word 0x00000ED8
+ thumb_func_end MOD80_02231EA8
+
+ thumb_func_start MOD80_0223200C
+MOD80_0223200C: ; 0x0223200C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02232044 ; =0x00000FB8
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _02232048 ; =0x00000EE8
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _0223204C ; =0x00000ED8
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _02232050 ; =0x00000E98
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _02232054 ; =0x00000EC8
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _02232058 ; =0x00000EB8
+ add r0, r4, r0
+ bl FUN_02019178
+ pop {r4, pc}
+ nop
+_02232044: .word 0x00000FB8
+_02232048: .word 0x00000EE8
+_0223204C: .word 0x00000ED8
+_02232050: .word 0x00000E98
+_02232054: .word 0x00000EC8
+_02232058: .word 0x00000EB8
+ thumb_func_end MOD80_0223200C
+
+ thumb_func_start MOD80_0223205C
+MOD80_0223205C: ; 0x0223205C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x12
+ mov r1, #0x3e
+ bl FUN_020219F4
+ ldr r1, _022320D4 ; =0x00000B44
+ str r0, [r4, r1]
+ mov r0, #0xb4
+ mov r1, #0x3e
+ bl FUN_020219F4
+ ldr r1, _022320D8 ; =0x00000B4C
+ str r0, [r4, r1]
+ ldr r0, [r4, #0x24]
+ cmp r0, #5
+ bne _02232090
+ sub r1, #0x18
+ ldr r0, [r4, r1]
+ mov r1, #0x15
+ bl FUN_0200A914
+ mov r1, #0xb5
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ b _022320A4
+_02232090:
+ cmp r0, #6
+ bne _022320A4
+ sub r1, #0x18
+ ldr r0, [r4, r1]
+ mov r1, #0x11
+ bl FUN_0200A914
+ mov r1, #0xb5
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+_022320A4:
+ ldr r0, _022320DC ; =0x00000B34
+ mov r1, #0x67
+ ldr r0, [r4, r0]
+ bl FUN_0200A914
+ ldr r1, _022320E0 ; =0x00000B48
+ str r0, [r4, r1]
+ add r0, r4, #0
+ add r0, #0xba
+ ldrh r0, [r0]
+ cmp r0, #0x1e
+ bne _022320C4
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xba
+ strh r1, [r0]
+_022320C4:
+ mov r0, #0x3e
+ mov r1, #0x78
+ bl FUN_02016998
+ ldr r1, _022320E4 ; =0x00001004
+ str r0, [r4, r1]
+ pop {r4, pc}
+ nop
+_022320D4: .word 0x00000B44
+_022320D8: .word 0x00000B4C
+_022320DC: .word 0x00000B34
+_022320E0: .word 0x00000B48
+_022320E4: .word 0x00001004
+ thumb_func_end MOD80_0223205C
+
+ thumb_func_start MOD80_022320E8
+MOD80_022320E8: ; 0x022320E8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02232118 ; =0x00001004
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _0223211C ; =0x00000B44
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ ldr r0, _02232120 ; =0x00000B4C
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ ldr r0, _02232124 ; =0x00000B48
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ mov r0, #0xb5
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ pop {r4, pc}
+ .align 2, 0
+_02232118: .word 0x00001004
+_0223211C: .word 0x00000B44
+_02232120: .word 0x00000B4C
+_02232124: .word 0x00000B48
+ thumb_func_end MOD80_022320E8
+
+ thumb_func_start MOD80_02232128
+MOD80_02232128: ; 0x02232128
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _02232138
+ mov r0, #1
+ str r0, [r4, #0x2c]
+_02232138:
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_02232128
+
+ thumb_func_start MOD80_0223213C
+MOD80_0223213C: ; 0x0223213C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ bl MOD80_0223237C
+ ldr r0, [r5, #0x24]
+ cmp r0, #5
+ beq _0223214E
+ b _02232250
+_0223214E:
+ ldr r0, _02232370 ; =0x021C48B8
+ ldr r2, [r0, #0x48]
+ mov r0, #2
+ tst r0, r2
+ beq _02232168
+ add r0, r5, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD80_0222E7A8
+ mov r0, #2
+ str r0, [r5, #0x2c]
+ b _02232368
+_02232168:
+ mov r1, #1
+ add r0, r2, #0
+ tst r0, r1
+ beq _022321B6
+ add r0, r5, #0
+ add r0, #0xba
+ ldrh r0, [r0]
+ cmp r0, #0x1e
+ bne _0223218E
+ add r0, r5, #0
+ mov r2, #0
+ bl MOD80_0222E7A8
+ mov r0, #2
+ str r0, [r5, #0x2c]
+ ldr r0, _02232374 ; =0x000005DC
+ bl FUN_020054C8
+ b _02232368
+_0223218E:
+ cmp r0, #0x1f
+ beq _022321B6
+ ldr r0, _02232374 ; =0x000005DC
+ bl FUN_020054C8
+ add r2, r5, #0
+ add r3, r5, #0
+ ldr r1, [r5]
+ add r2, #0xb8
+ add r3, #0xba
+ ldr r0, [r1, #8]
+ ldrh r2, [r2]
+ ldrh r3, [r3]
+ ldr r1, [r1, #0xc]
+ bl MOD80_02233054
+ cmp r0, #1
+ beq _022321B8
+ cmp r0, #2
+ beq _02232232
+_022321B6:
+ b _02232368
+_022321B8:
+ add r2, r5, #0
+ add r3, r5, #0
+ ldr r1, [r5]
+ add r2, #0xb8
+ add r3, #0xba
+ ldr r0, [r1, #8]
+ ldrh r2, [r2]
+ ldrh r3, [r3]
+ ldr r1, [r1, #0xc]
+ bl MOD80_02232FF8
+ cmp r0, #0
+ beq _02232214
+ add r2, r5, #0
+ add r3, r5, #0
+ ldr r1, [r5]
+ add r2, #0xb8
+ add r3, #0xba
+ ldr r0, [r1, #8]
+ ldrh r2, [r2]
+ ldrh r3, [r3]
+ ldr r1, [r1, #0xc]
+ bl MOD80_02232FB8
+ add r2, r0, #0
+ mov r0, #0xb3
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ ldr r0, _02232378 ; =0x00000F0F
+ mov r3, #0
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0x16
+ mov r2, #1
+ str r3, [sp, #4]
+ bl MOD80_02232B34
+ add r0, r5, #0
+ mov r1, #3
+ mov r2, #7
+ bl MOD80_0222E6DC
+ b _02232368
+_02232214:
+ ldr r0, _02232378 ; =0x00000F0F
+ mov r2, #1
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0x1a
+ mov r3, #0
+ str r2, [sp, #4]
+ bl MOD80_02232B34
+ add r0, r5, #0
+ mov r1, #4
+ mov r2, #1
+ bl MOD80_0222E6DC
+ b _02232368
+_02232232:
+ ldr r0, _02232378 ; =0x00000F0F
+ mov r2, #1
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0x1b
+ mov r3, #0
+ str r2, [sp, #4]
+ bl MOD80_02232B34
+ add r0, r5, #0
+ mov r1, #4
+ mov r2, #1
+ bl MOD80_0222E6DC
+ b _02232368
+_02232250:
+ cmp r0, #6
+ bne _022322BA
+ ldr r0, _02232370 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #2
+ tst r0, r1
+ beq _02232274
+ add r0, r5, #0
+ mov r1, #3
+ mov r2, #0
+ bl MOD80_0222E7A8
+ mov r0, #2
+ str r0, [r5, #0x2c]
+ ldr r0, _02232374 ; =0x000005DC
+ bl FUN_020054C8
+ b _02232368
+_02232274:
+ mov r0, #1
+ tst r0, r1
+ beq _02232368
+ add r0, r5, #0
+ add r0, #0xba
+ ldrh r3, [r0]
+ cmp r3, #0x1e
+ bne _0223229A
+ add r0, r5, #0
+ mov r1, #3
+ mov r2, #0
+ bl MOD80_0222E7A8
+ mov r0, #2
+ str r0, [r5, #0x2c]
+ ldr r0, _02232374 ; =0x000005DC
+ bl FUN_020054C8
+ b _02232368
+_0223229A:
+ cmp r3, #0x1f
+ beq _02232368
+ add r2, r5, #0
+ ldr r1, [r5]
+ add r2, #0xb8
+ ldr r0, [r1, #8]
+ ldrh r2, [r2]
+ ldr r1, [r1, #0xc]
+ bl MOD80_02233054
+ cmp r0, #0
+ beq _02232362
+ cmp r0, #1
+ beq _022322BC
+ cmp r0, #2
+ beq _02232362
+_022322BA:
+ b _02232368
+_022322BC:
+ add r2, r5, #0
+ add r3, r5, #0
+ ldr r1, [r5]
+ add r2, #0xb8
+ add r3, #0xba
+ ldr r0, [r1, #8]
+ ldrh r2, [r2]
+ ldrh r3, [r3]
+ ldr r1, [r1, #0xc]
+ bl MOD80_02232FB8
+ add r2, r5, #0
+ add r2, #0xc4
+ mov r1, #0xba
+ ldr r3, [r2]
+ mov r2, #0x49
+ lsl r1, r1, #2
+ lsl r2, r2, #2
+ add r1, r5, r1
+ mul r2, r3
+ add r1, r1, r2
+ add r4, r0, #0
+ bl MOD80_022330E4
+ cmp r0, #0
+ beq _0223235A
+ add r2, r5, #0
+ add r3, r5, #0
+ ldr r1, [r5]
+ add r2, #0xb8
+ add r3, #0xba
+ ldr r0, [r1, #8]
+ ldrh r2, [r2]
+ ldrh r3, [r3]
+ ldr r1, [r1, #0xc]
+ bl MOD80_02232FF8
+ cmp r0, #0
+ beq _0223233C
+ mov r0, #0xb3
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ add r2, r4, #0
+ bl FUN_0200ACF8
+ ldr r0, _02232378 ; =0x00000F0F
+ mov r3, #0
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0x12
+ mov r2, #1
+ str r3, [sp, #4]
+ bl MOD80_02232B34
+ add r0, r5, #0
+ mov r1, #3
+ mov r2, #9
+ bl MOD80_0222E6DC
+ ldr r0, _02232374 ; =0x000005DC
+ bl FUN_020054C8
+ b _02232368
+_0223233C:
+ ldr r0, _02232378 ; =0x00000F0F
+ mov r2, #1
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0x1a
+ mov r3, #0
+ str r2, [sp, #4]
+ bl MOD80_02232B34
+ add r0, r5, #0
+ mov r1, #4
+ mov r2, #1
+ bl MOD80_0222E6DC
+ b _02232368
+_0223235A:
+ ldr r0, _02232374 ; =0x000005DC
+ bl FUN_020054C8
+ b _02232368
+_02232362:
+ ldr r0, _02232374 ; =0x000005DC
+ bl FUN_020054C8
+_02232368:
+ mov r0, #3
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_02232370: .word 0x021C48B8
+_02232374: .word 0x000005DC
+_02232378: .word 0x00000F0F
+ thumb_func_end MOD80_0223213C
+
+ thumb_func_start MOD80_0223237C
+MOD80_0223237C: ; 0x0223237C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, _02232448 ; =0x021C48B8
+ mov r4, #0
+ ldr r0, [r0, #0x48]
+ mov r2, #0x40
+ add r1, r4, #0
+ tst r2, r0
+ beq _02232392
+ mov r1, #1
+ b _022323AE
+_02232392:
+ mov r2, #0x80
+ tst r2, r0
+ beq _0223239C
+ mov r1, #2
+ b _022323AE
+_0223239C:
+ mov r2, #0x20
+ tst r2, r0
+ beq _022323A6
+ mov r1, #3
+ b _022323AE
+_022323A6:
+ mov r2, #0x10
+ tst r0, r2
+ beq _022323AE
+ mov r1, #4
+_022323AE:
+ cmp r1, #0
+ beq _022323FE
+ add r0, r5, #0
+ add r0, #0xba
+ ldrh r0, [r0]
+ ldr r3, _0223244C ; =0x02237340
+ sub r2, r1, #1
+ lsl r6, r0, #2
+ add r1, r3, r6
+ ldrb r2, [r2, r1]
+ cmp r2, r0
+ beq _022323FE
+ cmp r2, #0x63
+ beq _022323CE
+ cmp r2, #0x65
+ bne _022323F6
+_022323CE:
+ add r0, r5, #0
+ add r0, #0xb8
+ ldrh r0, [r0]
+ mov r1, #0x13
+ sub r2, #0x64
+ bl MOD80_02232460
+ add r1, r5, #0
+ add r1, #0xb8
+ strh r0, [r1]
+ add r1, r5, #0
+ add r1, #0xb8
+ ldrh r1, [r1]
+ add r0, r5, #0
+ bl MOD80_02232D7C
+ ldr r0, _02232450 ; =0x000005DC
+ bl FUN_020054C8
+ b _022323FE
+_022323F6:
+ add r0, r5, #0
+ add r0, #0xba
+ mov r4, #1
+ strh r2, [r0]
+_022323FE:
+ cmp r4, #0
+ beq _02232420
+ ldr r0, _02232450 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ add r0, #0xba
+ ldrh r0, [r0]
+ ldr r1, _02232454 ; =0x022372C0
+ ldr r2, _02232458 ; =0x022372C2
+ lsl r3, r0, #2
+ ldr r0, _0223245C ; =0x00000D5C
+ ldrh r1, [r1, r3]
+ ldrh r2, [r2, r3]
+ ldr r0, [r5, r0]
+ bl MOD80_0222E6E4
+_02232420:
+ add r0, r5, #0
+ add r0, #0xba
+ ldrh r0, [r0]
+ cmp r0, #0x1f
+ beq _0223242E
+ cmp r0, #5
+ bhi _0223243A
+_0223242E:
+ ldr r0, _0223245C ; =0x00000D5C
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_02020238
+ pop {r4, r5, r6, pc}
+_0223243A:
+ ldr r0, _0223245C ; =0x00000D5C
+ mov r1, #1
+ ldr r0, [r5, r0]
+ bl FUN_02020238
+ pop {r4, r5, r6, pc}
+ nop
+_02232448: .word 0x021C48B8
+_0223244C: .word 0x02237340
+_02232450: .word 0x000005DC
+_02232454: .word 0x022372C0
+_02232458: .word 0x022372C2
+_0223245C: .word 0x00000D5C
+ thumb_func_end MOD80_0223237C
+
+ thumb_func_start MOD80_02232460
+MOD80_02232460: ; 0x02232460
+ add r0, r0, r2
+ bpl _02232468
+ sub r0, r1, #1
+ bx lr
+_02232468:
+ cmp r0, r1
+ bne _0223246E
+ mov r0, #0
+_0223246E:
+ bx lr
+ thumb_func_end MOD80_02232460
+
+ thumb_func_start MOD80_02232470
+MOD80_02232470: ; 0x02232470
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0
+ add r2, sp, #8
+ strb r0, [r2, #8]
+ mov r0, #1
+ strb r0, [r2, #9]
+ mov r0, #3
+ strb r0, [r2, #0xa]
+ ldrb r3, [r2, #0xb]
+ mov r1, #0xf
+ bic r3, r1
+ strb r3, [r2, #0xb]
+ ldrb r3, [r2, #0xb]
+ mov r1, #0x30
+ bic r3, r1
+ strb r3, [r2, #0xb]
+ ldrb r3, [r2, #0xb]
+ mov r1, #0xc0
+ bic r3, r1
+ mov r1, #0x3e
+ strb r3, [r2, #0xb]
+ bl FUN_02012838
+ ldr r1, _02232510 ; =0x00000FC8
+ mov r2, #0x5e
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ ldr r1, _02232514 ; =0x00000B34
+ mov r3, #1
+ ldr r1, [r4, r1]
+ bl FUN_02012880
+ ldr r0, _02232510 ; =0x00000FC8
+ ldr r1, _02232514 ; =0x00000B34
+ ldr r0, [r4, r0]
+ ldr r1, [r4, r1]
+ mov r2, #0x5f
+ mov r3, #2
+ bl FUN_02012880
+ ldr r0, _02232510 ; =0x00000FC8
+ ldr r1, _02232514 ; =0x00000B34
+ ldr r0, [r4, r0]
+ ldr r1, [r4, r1]
+ mov r2, #0x60
+ mov r3, #3
+ bl FUN_02012880
+ ldr r0, _02232510 ; =0x00000FC8
+ mov r2, #0x1f
+ ldr r1, [r4, r0]
+ sub r0, #0xf0
+ str r1, [sp, #8]
+ add r0, r4, r0
+ mov r1, #1
+ mov r3, #0xb
+ str r0, [sp, #0xc]
+ bl FUN_0200CCA4
+ mov r0, #0x3e
+ str r0, [sp]
+ mov r0, #2
+ mov r2, #0
+ str r0, [sp, #4]
+ add r0, sp, #8
+ mov r1, #9
+ add r3, r2, #0
+ bl FUN_02001C14
+ mov r1, #0xfd
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ mov r0, #8
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_02232510: .word 0x00000FC8
+_02232514: .word 0x00000B34
+ thumb_func_end MOD80_02232470
+
+ thumb_func_start MOD80_02232518
+MOD80_02232518: ; 0x02232518
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0xfd
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02001C78
+ cmp r0, #3
+ bhi _0223253C
+ cmp r0, #1
+ blo _0223253A
+ beq _02232546
+ cmp r0, #2
+ beq _02232574
+ cmp r0, #3
+ beq _0223262E
+_0223253A:
+ b _0223265A
+_0223253C:
+ mov r1, #1
+ mvn r1, r1
+ cmp r0, r1
+ beq _0223262E
+ b _0223265A
+_02232546:
+ mov r0, #0xfd
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_02001C5C
+ ldr r0, _02232660 ; =0x00000FC8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _02232664 ; =0x00000ED8
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200CCF8
+ mov r0, #2
+ str r0, [r5, #0x2c]
+ add r0, r5, #0
+ mov r1, #8
+ mov r2, #5
+ bl MOD80_0222E7A8
+ b _0223265A
+_02232574:
+ mov r0, #0xfd
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_02001C5C
+ ldr r0, _02232660 ; =0x00000FC8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _02232664 ; =0x00000ED8
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200CCF8
+ add r2, r5, #0
+ add r3, r5, #0
+ ldr r1, [r5]
+ add r2, #0xb8
+ add r3, #0xba
+ ldr r0, [r1, #8]
+ ldrh r2, [r2]
+ ldrh r3, [r3]
+ ldr r1, [r1, #0xc]
+ bl MOD80_02232FB8
+ bl MOD80_02233018
+ cmp r0, #0
+ beq _022325CE
+ ldr r0, _02232668 ; =0x00000F0F
+ mov r2, #1
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0x25
+ mov r3, #0
+ str r2, [sp, #4]
+ bl MOD80_02232B34
+ add r0, r5, #0
+ mov r1, #4
+ mov r2, #1
+ bl MOD80_0222E6DC
+ b _0223265A
+_022325CE:
+ add r0, r5, #0
+ add r0, #0xb8
+ ldrh r0, [r0]
+ mov r4, #0
+ bl MOD80_02232FAC
+ cmp r0, #0
+ beq _022325FE
+ add r1, r5, #0
+ ldr r0, [r5]
+ add r1, #0xba
+ ldrh r1, [r1]
+ ldr r0, [r0, #8]
+ bl FUN_0206B9B0
+ mov r1, #0xa1
+ add r2, r4, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _022325FE
+ mov r0, #0xe
+ mov r4, #1
+ str r0, [r5, #0x2c]
+_022325FE:
+ cmp r4, #0
+ bne _0223265A
+ add r2, r5, #0
+ add r3, r5, #0
+ ldr r1, [r5]
+ add r2, #0xb8
+ add r3, #0xba
+ ldr r0, [r1, #8]
+ ldrh r2, [r2]
+ ldrh r3, [r3]
+ ldr r1, [r1, #0xc]
+ bl MOD80_02232FB8
+ add r1, r5, #0
+ add r1, #0xbc
+ str r0, [r1]
+ mov r0, #2
+ str r0, [r5, #0x2c]
+ add r0, r5, #0
+ mov r1, #6
+ mov r2, #0
+ bl MOD80_0222E7A8
+ b _0223265A
+_0223262E:
+ mov r0, #0xfd
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_02001C5C
+ ldr r0, _02232660 ; =0x00000FC8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _02232664 ; =0x00000ED8
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200CCF8
+ ldr r0, _0223266C ; =0x00000E98
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200D0E0
+ mov r0, #1
+ str r0, [r5, #0x2c]
+_0223265A:
+ mov r0, #3
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02232660: .word 0x00000FC8
+_02232664: .word 0x00000ED8
+_02232668: .word 0x00000F0F
+_0223266C: .word 0x00000E98
+ thumb_func_end MOD80_02232518
+
+ thumb_func_start MOD80_02232670
+MOD80_02232670: ; 0x02232670
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0
+ add r2, sp, #8
+ strb r0, [r2, #8]
+ mov r0, #1
+ strb r0, [r2, #9]
+ mov r0, #3
+ strb r0, [r2, #0xa]
+ ldrb r3, [r2, #0xb]
+ mov r1, #0xf
+ bic r3, r1
+ strb r3, [r2, #0xb]
+ ldrb r3, [r2, #0xb]
+ mov r1, #0x30
+ bic r3, r1
+ strb r3, [r2, #0xb]
+ ldrb r3, [r2, #0xb]
+ mov r1, #0xc0
+ bic r3, r1
+ mov r1, #0x3e
+ strb r3, [r2, #0xb]
+ bl FUN_02012838
+ ldr r1, _02232710 ; =0x00000FC8
+ mov r2, #0x54
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ ldr r1, _02232714 ; =0x00000B34
+ mov r3, #1
+ ldr r1, [r4, r1]
+ bl FUN_02012880
+ ldr r0, _02232710 ; =0x00000FC8
+ ldr r1, _02232714 ; =0x00000B34
+ ldr r0, [r4, r0]
+ ldr r1, [r4, r1]
+ mov r2, #0x55
+ mov r3, #2
+ bl FUN_02012880
+ ldr r0, _02232710 ; =0x00000FC8
+ ldr r1, _02232714 ; =0x00000B34
+ ldr r0, [r4, r0]
+ ldr r1, [r4, r1]
+ mov r2, #0x56
+ mov r3, #3
+ bl FUN_02012880
+ ldr r0, _02232710 ; =0x00000FC8
+ mov r2, #0x1f
+ ldr r1, [r4, r0]
+ sub r0, #0xf0
+ str r1, [sp, #8]
+ add r0, r4, r0
+ mov r1, #0
+ mov r3, #0xb
+ str r0, [sp, #0xc]
+ bl FUN_0200CCA4
+ mov r0, #0x3e
+ str r0, [sp]
+ mov r0, #2
+ mov r2, #0
+ str r0, [sp, #4]
+ add r0, sp, #8
+ mov r1, #9
+ add r3, r2, #0
+ bl FUN_02001C14
+ mov r1, #0xfd
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ mov r0, #0xa
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_02232710: .word 0x00000FC8
+_02232714: .word 0x00000B34
+ thumb_func_end MOD80_02232670
+
+ thumb_func_start MOD80_02232718
+MOD80_02232718: ; 0x02232718
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0xfd
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02001C78
+ cmp r0, #3
+ bhi _0223273C
+ cmp r0, #1
+ blo _0223273A
+ beq _02232746
+ cmp r0, #2
+ beq _02232774
+ cmp r0, #3
+ beq _0223280A
+_0223273A:
+ b _02232836
+_0223273C:
+ mov r1, #1
+ mvn r1, r1
+ cmp r0, r1
+ beq _0223280A
+ b _02232836
+_02232746:
+ mov r0, #0xfd
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_02001C5C
+ ldr r0, _0223283C ; =0x00000FC8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _02232840 ; =0x00000ED8
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200CCF8
+ mov r0, #2
+ str r0, [r5, #0x2c]
+ add r0, r5, #0
+ mov r1, #8
+ mov r2, #6
+ bl MOD80_0222E7A8
+ b _02232836
+_02232774:
+ mov r0, #0xfd
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_02001C5C
+ ldr r0, _0223283C ; =0x00000FC8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _02232840 ; =0x00000ED8
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200CCF8
+ add r2, r5, #0
+ add r3, r5, #0
+ ldr r1, [r5]
+ add r2, #0xb8
+ add r3, #0xba
+ ldr r0, [r1, #8]
+ ldrh r2, [r2]
+ ldrh r3, [r3]
+ ldr r1, [r1, #0xc]
+ bl MOD80_02232FB8
+ bl MOD80_02233018
+ cmp r0, #0
+ beq _022327CE
+ ldr r0, _02232844 ; =0x00000F0F
+ mov r2, #1
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0x25
+ mov r3, #0
+ str r2, [sp, #4]
+ bl MOD80_02232B34
+ add r0, r5, #0
+ mov r1, #4
+ mov r2, #1
+ bl MOD80_0222E6DC
+ b _02232836
+_022327CE:
+ add r0, r5, #0
+ add r0, #0xb8
+ ldrh r0, [r0]
+ mov r4, #0
+ bl MOD80_02232FAC
+ cmp r0, #0
+ beq _022327FE
+ add r1, r5, #0
+ ldr r0, [r5]
+ add r1, #0xba
+ ldrh r1, [r1]
+ ldr r0, [r0, #8]
+ bl FUN_0206B9B0
+ mov r1, #0xa1
+ add r2, r4, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _022327FE
+ mov r0, #0xb
+ mov r4, #1
+ str r0, [r5, #0x2c]
+_022327FE:
+ cmp r4, #0
+ bne _02232836
+ add r0, r5, #0
+ bl MOD80_02232990
+ b _02232836
+_0223280A:
+ mov r0, #0xfd
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_02001C5C
+ ldr r0, _0223283C ; =0x00000FC8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _02232840 ; =0x00000ED8
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200CCF8
+ ldr r0, _02232848 ; =0x00000E98
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200D0E0
+ mov r0, #1
+ str r0, [r5, #0x2c]
+_02232836:
+ mov r0, #3
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223283C: .word 0x00000FC8
+_02232840: .word 0x00000ED8
+_02232844: .word 0x00000F0F
+_02232848: .word 0x00000E98
+ thumb_func_end MOD80_02232718
+
+ thumb_func_start MOD80_0223284C
+MOD80_0223284C: ; 0x0223284C
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ beq _0223285C
+ cmp r0, #8
+ bne _0223287C
+_0223285C:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, _022328A0 ; =0x0000100C
+ mov r1, #1
+ str r1, [r4, r0]
+ b _02232894
+_0223287C:
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+_02232894:
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ mov r0, #4
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_022328A0: .word 0x0000100C
+ thumb_func_end MOD80_0223284C
+
+ thumb_func_start MOD80_022328A4
+MOD80_022328A4: ; 0x022328A4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r2, _022328C0 ; =0x000001AD
+ mov r1, #0xf
+ bl MOD80_0222E6A8
+ ldr r1, _022328C4 ; =0x00000FCC
+ str r0, [r4, r1]
+ mov r0, #6
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_022328C0: .word 0x000001AD
+_022328C4: .word 0x00000FCC
+ thumb_func_end MOD80_022328A4
+
+ thumb_func_start MOD80_022328C8
+MOD80_022328C8: ; 0x022328C8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _022328FC ; =0x00000FCC
+ mov r1, #0x3e
+ ldr r0, [r4, r0]
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _022328F8
+ sub r1, r1, #1
+ cmp r0, r1
+ bne _022328EA
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ b _022328F8
+_022328EA:
+ mov r0, #2
+ mov r1, #0
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD80_0222E7A8
+_022328F8:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_022328FC: .word 0x00000FCC
+ thumb_func_end MOD80_022328C8
+
+ thumb_func_start MOD80_02232900
+MOD80_02232900: ; 0x02232900
+ push {r4, lr}
+ sub sp, #8
+ ldr r1, _02232928 ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ mov r2, #1
+ mov r1, #0x19
+ mov r3, #0
+ str r2, [sp, #4]
+ bl MOD80_02232B34
+ add r0, r4, #0
+ mov r1, #3
+ mov r2, #0xc
+ bl MOD80_0222E6DC
+ mov r0, #3
+ add sp, #8
+ pop {r4, pc}
+ nop
+_02232928: .word 0x00000F0F
+ thumb_func_end MOD80_02232900
+
+ thumb_func_start MOD80_0223292C
+MOD80_0223292C: ; 0x0223292C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r2, _02232948 ; =0x000001AD
+ mov r1, #0xd
+ bl MOD80_0222E6A8
+ ldr r1, _0223294C ; =0x00000FCC
+ str r0, [r4, r1]
+ mov r0, #0xd
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_02232948: .word 0x000001AD
+_0223294C: .word 0x00000FCC
+ thumb_func_end MOD80_0223292C
+
+ thumb_func_start MOD80_02232950
+MOD80_02232950: ; 0x02232950
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02232988 ; =0x00000FCC
+ mov r1, #0x3e
+ ldr r0, [r4, r0]
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02232982
+ sub r1, r1, #1
+ cmp r0, r1
+ bne _0223297C
+ ldr r0, _0223298C ; =0x00000FB8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200D0E0
+ mov r0, #1
+ str r0, [r4, #0x2c]
+ b _02232982
+_0223297C:
+ add r0, r4, #0
+ bl MOD80_02232990
+_02232982:
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_02232988: .word 0x00000FCC
+_0223298C: .word 0x00000FB8
+ thumb_func_end MOD80_02232950
+
+ thumb_func_start MOD80_02232990
+MOD80_02232990: ; 0x02232990
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r1, #0x7e
+ add r0, #0xc4
+ lsl r1, r1, #2
+ add r2, r4, r1
+ ldr r0, [r0]
+ sub r1, #0xd4
+ mul r1, r0
+ add r0, r2, r1
+ bl MOD80_022331F8
+ cmp r0, #0
+ beq _022329E6
+ add r0, r4, #0
+ add r0, #0xb8
+ ldrh r0, [r0]
+ cmp r0, #0x12
+ beq _022329E6
+ ldr r0, [r4]
+ ldr r0, [r0, #8]
+ bl FUN_0206B9AC
+ cmp r0, #6
+ bne _022329E6
+ ldr r0, _02232A2C ; =0x00000F0F
+ mov r2, #1
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0x1c
+ mov r3, #0
+ str r2, [sp, #4]
+ bl MOD80_02232B34
+ add r0, r4, #0
+ mov r1, #4
+ mov r2, #1
+ bl MOD80_0222E6DC
+ add sp, #8
+ mov r0, #0
+ pop {r4, pc}
+_022329E6:
+ add r2, r4, #0
+ add r3, r4, #0
+ ldr r1, [r4]
+ add r2, #0xb8
+ add r3, #0xba
+ ldr r0, [r1, #8]
+ ldrh r2, [r2]
+ ldrh r3, [r3]
+ ldr r1, [r1, #0xc]
+ bl MOD80_02232FB8
+ add r1, r4, #0
+ add r1, #0xbc
+ str r0, [r1]
+ mov r0, #2
+ str r0, [r4, #0x2c]
+ ldr r0, _02232A30 ; =0x0000100C
+ mov r1, #1
+ str r1, [r4, r0]
+ add r0, r4, #0
+ mov r1, #7
+ mov r2, #9
+ bl MOD80_0222E7A8
+ add r0, r4, #0
+ add r0, #0xd4
+ add r1, r4, #0
+ bl MOD80_0223311C
+ mov r0, #0
+ add r4, #0xc0
+ str r0, [r4]
+ mov r0, #1
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_02232A2C: .word 0x00000F0F
+_02232A30: .word 0x0000100C
+ thumb_func_end MOD80_02232990
+
+ thumb_func_start MOD80_02232A34
+MOD80_02232A34: ; 0x02232A34
+ push {r4, lr}
+ sub sp, #8
+ ldr r1, _02232A5C ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ mov r2, #1
+ mov r1, #0x19
+ mov r3, #0
+ str r2, [sp, #4]
+ bl MOD80_02232B34
+ add r0, r4, #0
+ mov r1, #3
+ mov r2, #0xf
+ bl MOD80_0222E6DC
+ mov r0, #3
+ add sp, #8
+ pop {r4, pc}
+ nop
+_02232A5C: .word 0x00000F0F
+ thumb_func_end MOD80_02232A34
+
+ thumb_func_start MOD80_02232A60
+MOD80_02232A60: ; 0x02232A60
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r2, _02232A7C ; =0x000001AD
+ mov r1, #0xd
+ bl MOD80_0222E6A8
+ ldr r1, _02232A80 ; =0x00000FCC
+ str r0, [r4, r1]
+ mov r0, #0x10
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_02232A7C: .word 0x000001AD
+_02232A80: .word 0x00000FCC
+ thumb_func_end MOD80_02232A60
+
+ thumb_func_start MOD80_02232A84
+MOD80_02232A84: ; 0x02232A84
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02232AE0 ; =0x00000FCC
+ mov r1, #0x3e
+ ldr r0, [r4, r0]
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02232ADA
+ sub r1, r1, #1
+ cmp r0, r1
+ bne _02232AB0
+ ldr r0, _02232AE4 ; =0x00000FB8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200D0E0
+ mov r0, #1
+ str r0, [r4, #0x2c]
+ b _02232ADA
+_02232AB0:
+ add r2, r4, #0
+ add r3, r4, #0
+ ldr r1, [r4]
+ add r2, #0xb8
+ add r3, #0xba
+ ldr r0, [r1, #8]
+ ldrh r2, [r2]
+ ldrh r3, [r3]
+ ldr r1, [r1, #0xc]
+ bl MOD80_02232FB8
+ add r1, r4, #0
+ add r1, #0xbc
+ str r0, [r1]
+ mov r0, #2
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ mov r1, #6
+ mov r2, #0
+ bl MOD80_0222E7A8
+_02232ADA:
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_02232AE0: .word 0x00000FCC
+_02232AE4: .word 0x00000FB8
+ thumb_func_end MOD80_02232A84
+
+ thumb_func_start MOD80_02232AE8
+MOD80_02232AE8: ; 0x02232AE8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x2e
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02232B02
+ ldr r0, [r4, #0x30]
+ str r0, [r4, #0x2c]
+_02232B02:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02232AE8
+
+ thumb_func_start MOD80_02232B08
+MOD80_02232B08: ; 0x02232B08
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x2e
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02232B2C
+ ldr r0, _02232B30 ; =0x00000FB8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200D0E0
+ ldr r0, [r4, #0x30]
+ str r0, [r4, #0x2c]
+_02232B2C:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_02232B30: .word 0x00000FB8
+ thumb_func_end MOD80_02232B08
+
+ thumb_func_start MOD80_02232B34
+MOD80_02232B34: ; 0x02232B34
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, _02232B9C ; =0x00000B34
+ add r6, r2, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0xb3
+ add r7, r0, #0
+ lsl r1, r1, #4
+ ldr r0, [r5, r1]
+ add r1, #0x1c
+ ldr r1, [r5, r1]
+ add r2, r7, #0
+ bl FUN_0200B7B8
+ ldr r0, [sp, #0x24]
+ cmp r0, #0
+ bne _02232B60
+ ldr r0, _02232BA0 ; =0x00000E98
+ b _02232B62
+_02232B60:
+ ldr r0, _02232BA4 ; =0x00000FB8
+_02232B62:
+ add r4, r5, r0
+ add r0, r4, #0
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ mov r3, #0
+ str r3, [sp]
+ str r6, [sp, #4]
+ ldr r2, _02232BA8 ; =0x00000B4C
+ str r3, [sp, #8]
+ ldr r2, [r5, r2]
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_0201BD84
+ mov r1, #0x2e
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ add r0, r7, #0
+ bl FUN_02021A20
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02232B9C: .word 0x00000B34
+_02232BA0: .word 0x00000E98
+_02232BA4: .word 0x00000FB8
+_02232BA8: .word 0x00000B4C
+ thumb_func_end MOD80_02232B34
+
+ thumb_func_start MOD80_02232BAC
+MOD80_02232BAC: ; 0x02232BAC
+ push {r3, r4, r5, lr}
+ add r5, r2, #0
+ add r2, r3, #0
+ bl FUN_02006704
+ add r4, r0, #0
+ beq _02232BCE
+ add r1, r5, #0
+ bl FUN_020B0030
+ cmp r0, #0
+ bne _02232BCE
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02232BCE:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02232BAC
+
+ thumb_func_start MOD80_02232BD4
+MOD80_02232BD4: ; 0x02232BD4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r6, r2, #0
+ add r1, r6, #0
+ add r2, r5, #0
+ str r0, [sp]
+ add r7, r3, #0
+ ldr r4, [sp, #0x28]
+ bl FUN_0206B6D4
+ add r1, r0, #0
+ ldr r0, [sp, #0x24]
+ add r2, sp, #8
+ mov r3, #0x3e
+ bl MOD80_02232BAC
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ add r1, r4, #0
+ mov r2, #2
+ ldr r0, [r0, #0x14]
+ add r1, #0xc
+ lsl r2, r2, #8
+ bl MIi_CpuCopyFast
+ lsl r0, r7, #4
+ add r0, #0xc
+ lsl r0, r0, #5
+ str r0, [r4]
+ ldr r0, [sp, #0x20]
+ add r1, r5, #0
+ str r0, [r4, #8]
+ ldr r0, [sp]
+ add r2, r6, #0
+ bl FUN_0206B7BC
+ add r0, r0, #3
+ str r0, [r4, #4]
+ ldr r0, [sp, #4]
+ bl FUN_02016A18
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD80_02232BD4
+
+ thumb_func_start MOD80_02232C2C
+MOD80_02232C2C: ; 0x02232C2C
+ push {r4, lr}
+ add r4, r1, #0
+ bl FUN_020687C8
+ strb r0, [r4, #3]
+ pop {r4, pc}
+ thumb_func_end MOD80_02232C2C
+
+ thumb_func_start MOD80_02232C38
+MOD80_02232C38: ; 0x02232C38
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r1, _02232C84 ; =0x00001010
+ mov r6, #2
+ lsl r6, r6, #8
+ add r7, r6, #0
+ ldr r5, [r0, r1]
+ str r0, [sp]
+ mov r4, #0
+ add r7, #0xc
+_02232C4A:
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _02232C6E
+ add r0, r5, #0
+ add r0, #0xc
+ add r1, r6, #0
+ bl DC_FlushRange
+ add r0, r5, #0
+ ldr r1, [r5]
+ add r0, #0xc
+ add r2, r6, #0
+ bl GX_LoadOBJ
+ ldr r0, [r5, #8]
+ ldr r1, [r5, #4]
+ bl FUN_02020248
+_02232C6E:
+ add r4, r4, #1
+ add r5, r5, r7
+ cmp r4, #0x1e
+ blt _02232C4A
+ ldr r1, _02232C84 ; =0x00001010
+ ldr r0, [sp]
+ ldr r0, [r0, r1]
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02232C84: .word 0x00001010
+ thumb_func_end MOD80_02232C38
+
+ thumb_func_start MOD80_02232C88
+MOD80_02232C88: ; 0x02232C88
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ str r1, [sp, #0xc]
+ add r7, r2, #0
+ add r6, r3, #0
+ ldr r4, [sp, #0x40]
+ bl FUN_02066A6C
+ add r0, r5, #0
+ mov r1, #0xab
+ mov r2, #0
+ bl FUN_020672BC
+ str r0, [sp, #0x1c]
+ add r0, r5, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020672BC
+ strh r0, [r6]
+ add r0, r5, #0
+ mov r1, #0x70
+ mov r2, #0
+ bl FUN_020672BC
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ mov r1, #0x4c
+ mov r2, #0
+ bl FUN_020672BC
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ mov r1, #6
+ mov r2, #0
+ bl FUN_020672BC
+ str r0, [sp, #0x18]
+ ldrh r0, [r6]
+ mov r1, #0x6f
+ mov r2, #0
+ strh r0, [r4]
+ add r0, r5, #0
+ bl FUN_020672BC
+ add r0, r0, #1
+ strb r0, [r4, #2]
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ beq _02232CF2
+ mov r0, #0
+ strb r0, [r4, #3]
+_02232CF2:
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_02066A94
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0
+ beq _02232D60
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0x10]
+ str r0, [sp]
+ ldr r0, [sp, #0x3c]
+ ldr r2, [sp, #0x14]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x44]
+ ldr r3, [sp, #0x38]
+ str r0, [sp, #8]
+ ldrh r0, [r6]
+ bl MOD80_02232BD4
+ ldr r0, [sp, #0xc]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [sp, #0x18]
+ cmp r0, #0
+ beq _02232D54
+ add r0, r7, #0
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [sp, #0x18]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0206EA98
+ cmp r0, #0
+ beq _02232D48
+ add r0, r7, #0
+ mov r1, #0x29
+ bl FUN_02020130
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+_02232D48:
+ add r0, r7, #0
+ mov r1, #0x28
+ bl FUN_02020130
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+_02232D54:
+ add r0, r7, #0
+ mov r1, #0
+ bl FUN_020200A0
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+_02232D60:
+ ldr r0, [sp, #0xc]
+ mov r1, #0
+ bl FUN_020200A0
+ add r0, r7, #0
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [sp, #0x44]
+ mov r1, #0
+ str r1, [r0, #8]
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02232C88
+
+ thumb_func_start MOD80_02232D7C
+MOD80_02232D7C: ; 0x02232D7C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x68
+ add r5, r0, #0
+ ldr r0, [r5]
+ str r1, [sp, #0x10]
+ ldr r0, [r0, #0xc]
+ ldr r1, _02232F7C ; =0x00003D68
+ str r0, [sp, #0x20]
+ mov r0, #3
+ bl FUN_020169D8
+ ldr r1, _02232F80 ; =0x00001010
+ str r0, [sp, #0x18]
+ str r0, [r5, r1]
+ mov r0, #0x13
+ mov r1, #0x3e
+ bl FUN_02006670
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ blt _02232E3A
+ cmp r0, #0x12
+ bge _02232E3A
+ ldr r6, _02232F84 ; =0x00001004
+ mov r4, #0
+_02232DB0:
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x10]
+ add r2, r4, #0
+ bl FUN_0206B5E4
+ ldr r2, [r5, r6]
+ lsl r1, r4, #2
+ add r1, r2, r1
+ bl MOD80_02232C2C
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x1e
+ blo _02232DB0
+ mov r4, #0
+_02232DD0:
+ ldr r0, _02232F84 ; =0x00001004
+ lsl r6, r4, #2
+ ldr r1, [r5, r0]
+ mov r0, #0
+ strh r0, [r1, r6]
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x10]
+ add r2, r4, #0
+ add r7, r5, r6
+ bl FUN_0206B5E4
+ ldr r1, [sp, #0x1c]
+ str r4, [sp]
+ str r1, [sp, #4]
+ ldr r1, _02232F84 ; =0x00001004
+ add r2, r4, #0
+ ldr r1, [r5, r1]
+ add r3, sp, #0x2c
+ add r1, r1, r6
+ str r1, [sp, #8]
+ mov r1, #0x83
+ lsl r1, r1, #2
+ mul r2, r1
+ ldr r1, [sp, #0x18]
+ lsl r6, r4, #1
+ add r1, r1, r2
+ str r1, [sp, #0xc]
+ ldr r1, _02232F88 ; =0x00000D64
+ ldr r2, _02232F8C ; =0x00000DDC
+ ldr r1, [r7, r1]
+ ldr r2, [r7, r2]
+ add r3, r3, r6
+ bl MOD80_02232C88
+ cmp r4, #6
+ bhs _02232E22
+ ldr r0, _02232F90 ; =0x00000E54
+ mov r1, #0
+ ldr r0, [r7, r0]
+ bl FUN_020200A0
+_02232E22:
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x1e
+ blo _02232DD0
+ ldr r2, _02232F94 ; =0x00000B44
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x10]
+ ldr r2, [r5, r2]
+ bl FUN_0206B484
+ b _02232F22
+_02232E3A:
+ ldr r0, [r5]
+ ldr r0, [r0, #8]
+ bl FUN_0206B9AC
+ mov r4, #0
+ str r0, [sp, #0x14]
+ cmp r0, #0
+ ble _02232EC8
+_02232E4A:
+ ldr r0, [r5]
+ add r1, r4, #0
+ ldr r0, [r0, #8]
+ bl FUN_0206B9B0
+ str r0, [sp, #0x24]
+ bl FUN_020690E4
+ ldr r1, _02232F84 ; =0x00001004
+ lsl r6, r4, #2
+ ldr r1, [r5, r1]
+ str r0, [sp, #0x28]
+ add r1, r1, r6
+ bl MOD80_02232C2C
+ ldr r0, [sp, #0x1c]
+ str r4, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02232F84 ; =0x00001004
+ add r1, r4, #0
+ ldr r0, [r5, r0]
+ ldr r2, _02232F8C ; =0x00000DDC
+ add r0, r0, r6
+ str r0, [sp, #8]
+ mov r0, #0x83
+ lsl r0, r0, #2
+ mul r1, r0
+ ldr r0, [sp, #0x18]
+ add r7, r5, r6
+ add r0, r0, r1
+ str r0, [sp, #0xc]
+ ldr r1, _02232F88 ; =0x00000D64
+ ldr r0, [sp, #0x28]
+ ldr r1, [r7, r1]
+ ldr r2, [r7, r2]
+ lsl r6, r4, #1
+ add r3, sp, #0x2c
+ add r3, r3, r6
+ bl MOD80_02232C88
+ ldr r0, [sp, #0x24]
+ mov r1, #0xa1
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ ldr r0, _02232F90 ; =0x00000E54
+ beq _02232EB4
+ ldr r0, [r7, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ b _02232EBC
+_02232EB4:
+ ldr r0, [r7, r0]
+ mov r1, #0
+ bl FUN_020200A0
+_02232EBC:
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [sp, #0x14]
+ cmp r4, r0
+ blt _02232E4A
+_02232EC8:
+ cmp r4, #0x1e
+ bhs _02232F14
+ mov r7, #0
+_02232ECE:
+ ldr r0, _02232F84 ; =0x00001004
+ lsl r1, r4, #2
+ ldr r0, [r5, r0]
+ add r6, r5, r1
+ strh r7, [r0, r1]
+ ldr r0, _02232F88 ; =0x00000D64
+ add r1, r7, #0
+ ldr r0, [r6, r0]
+ bl FUN_020200A0
+ ldr r0, _02232F8C ; =0x00000DDC
+ mov r1, #0
+ ldr r0, [r6, r0]
+ bl FUN_020200A0
+ mov r0, #0x83
+ lsl r0, r0, #2
+ add r1, r4, #0
+ mul r1, r0
+ ldr r0, [sp, #0x18]
+ add r1, r0, r1
+ mov r0, #0
+ str r0, [r1, #8]
+ cmp r4, #6
+ bhs _02232F0A
+ ldr r0, _02232F90 ; =0x00000E54
+ mov r1, #0
+ ldr r0, [r6, r0]
+ bl FUN_020200A0
+_02232F0A:
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x1e
+ blo _02232ECE
+_02232F14:
+ ldr r2, _02232F98 ; =0x00000B34
+ mov r1, #0x59
+ ldr r0, [r5, r2]
+ add r2, #0x10
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+_02232F22:
+ ldr r0, [sp, #0x1c]
+ bl FUN_020066F4
+ ldr r0, _02232F9C ; =0x00000EC8
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_02019620
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02232FA0 ; =0x00010200
+ ldr r1, _02232F94 ; =0x00000B44
+ str r0, [sp, #4]
+ ldr r0, _02232F9C ; =0x00000EC8
+ ldr r1, [r5, r1]
+ add r0, r5, r0
+ mov r2, #0
+ mov r3, #5
+ bl MOD80_02236D50
+ ldr r0, [r5, #0x24]
+ cmp r0, #6
+ bne _02232F72
+ add r3, r5, #0
+ add r3, #0xc4
+ mov r2, #0xba
+ ldr r4, [r3]
+ mov r3, #0x49
+ ldr r0, _02232F84 ; =0x00001004
+ lsl r2, r2, #2
+ lsl r3, r3, #2
+ ldr r1, _02232F88 ; =0x00000D64
+ add r2, r5, r2
+ mul r3, r4
+ add r2, r2, r3
+ ldr r0, [r5, r0]
+ ldr r3, [sp, #0x18]
+ add r1, r5, r1
+ bl MOD80_022331C4
+_02232F72:
+ ldr r1, _02232FA4 ; =MOD80_02232C38
+ ldr r0, _02232FA8 ; =0x00001014
+ str r1, [r5, r0]
+ add sp, #0x68
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02232F7C: .word 0x00003D68
+_02232F80: .word 0x00001010
+_02232F84: .word 0x00001004
+_02232F88: .word 0x00000D64
+_02232F8C: .word 0x00000DDC
+_02232F90: .word 0x00000E54
+_02232F94: .word 0x00000B44
+_02232F98: .word 0x00000B34
+_02232F9C: .word 0x00000EC8
+_02232FA0: .word 0x00010200
+_02232FA4: .word MOD80_02232C38
+_02232FA8: .word 0x00001014
+ thumb_func_end MOD80_02232D7C
+
+ thumb_func_start MOD80_02232FAC
+MOD80_02232FAC: ; 0x02232FAC
+ cmp r0, #0x12
+ bne _02232FB4
+ mov r0, #1
+ bx lr
+_02232FB4:
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD80_02232FAC
+
+ thumb_func_start MOD80_02232FB8
+MOD80_02232FB8: ; 0x02232FB8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r2, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ add r7, r1, #0
+ add r4, r3, #0
+ bl MOD80_02232FAC
+ cmp r0, #0
+ beq _02232FEA
+ add r0, r5, #0
+ bl FUN_0206B9AC
+ sub r0, r0, #1
+ cmp r4, r0
+ ble _02232FDC
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02232FDC:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0206B9B0
+ bl FUN_020690E4
+ pop {r3, r4, r5, r6, r7, pc}
+_02232FEA:
+ add r0, r7, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl FUN_0206B5E4
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02232FB8
+
+ thumb_func_start MOD80_02232FF8
+MOD80_02232FF8: ; 0x02232FF8
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r2, #0
+ bl MOD80_02232FAC
+ cmp r0, #0
+ beq _02233014
+ add r0, r4, #0
+ bl FUN_0206B9AC
+ cmp r0, #2
+ bge _02233014
+ mov r0, #0
+ pop {r4, pc}
+_02233014:
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD80_02232FF8
+
+ thumb_func_start MOD80_02233018
+MOD80_02233018: ; 0x02233018
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r4, #0
+ bl FUN_02066A6C
+ ldr r5, _02233050 ; =0x02237220
+ str r0, [sp]
+ add r6, r4, #0
+_02233028:
+ ldrh r1, [r5]
+ add r0, r7, #0
+ mov r2, #0
+ bl FUN_020672BC
+ add r6, r6, #1
+ add r4, r4, r0
+ add r5, r5, #2
+ cmp r6, #0xa
+ blt _02233028
+ ldr r1, [sp]
+ add r0, r7, #0
+ bl FUN_02066A94
+ cmp r4, #0
+ beq _0223304C
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223304C:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02233050: .word 0x02237220
+ thumb_func_end MOD80_02233018
+
+ thumb_func_start MOD80_02233054
+MOD80_02233054: ; 0x02233054
+ push {r4, lr}
+ bl MOD80_02232FB8
+ add r4, r0, #0
+ bne _02233062
+ mov r0, #0
+ pop {r4, pc}
+_02233062:
+ mov r1, #0xab
+ mov r2, #0
+ bl FUN_020672BC
+ cmp r0, #0
+ bne _02233072
+ mov r0, #0
+ pop {r4, pc}
+_02233072:
+ add r0, r4, #0
+ mov r1, #0xac
+ mov r2, #0
+ bl FUN_020672BC
+ cmp r0, #0
+ beq _02233084
+ mov r0, #2
+ pop {r4, pc}
+_02233084:
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD80_02233054
+
+ thumb_func_start MOD80_02233088
+MOD80_02233088: ; 0x02233088
+ push {r3, r4}
+ mov r4, #0
+ ldrsh r3, [r0, r4]
+ ldrsh r2, [r1, r4]
+ cmp r3, r2
+ beq _0223309A
+ add r0, r4, #0
+ pop {r3, r4}
+ bx lr
+_0223309A:
+ mov r2, #2
+ ldrsb r3, [r1, r2]
+ cmp r3, #3
+ beq _022330AE
+ ldrsb r2, [r0, r2]
+ cmp r3, r2
+ beq _022330AE
+ add r0, r4, #0
+ pop {r3, r4}
+ bx lr
+_022330AE:
+ mov r2, #3
+ ldrsb r3, [r0, r2]
+ cmp r3, #0
+ bne _022330BC
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+_022330BC:
+ ldrsb r0, [r1, r2]
+ cmp r0, #0
+ beq _022330CC
+ cmp r0, r3
+ ble _022330CC
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+_022330CC:
+ mov r0, #4
+ ldrsb r0, [r1, r0]
+ cmp r0, #0
+ beq _022330DE
+ cmp r0, r3
+ bge _022330DE
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+_022330DE:
+ mov r0, #1
+ pop {r3, r4}
+ bx lr
+ thumb_func_end MOD80_02233088
+
+ thumb_func_start MOD80_022330E4
+MOD80_022330E4: ; 0x022330E4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #5
+ mov r2, #0
+ add r5, r0, #0
+ bl FUN_020672BC
+ add r1, sp, #0
+ strh r0, [r1]
+ add r0, r5, #0
+ mov r1, #0x6f
+ mov r2, #0
+ bl FUN_020672BC
+ add r1, r0, #1
+ add r0, sp, #0
+ strb r1, [r0, #2]
+ add r0, r5, #0
+ bl FUN_020687C8
+ add r1, sp, #0
+ strb r0, [r1, #3]
+ add r0, sp, #0
+ add r1, r4, #0
+ bl MOD80_02233088
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD80_022330E4
+
+ thumb_func_start MOD80_0223311C
+MOD80_0223311C: ; 0x0223311C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r4, r0, #0
+ add r0, r5, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020672BC
+ add r1, sp, #0
+ strh r0, [r1, #6]
+ add r0, r5, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ mov r1, #0x6f
+ mov r2, #0
+ bl FUN_020672BC
+ add r1, r0, #1
+ add r0, sp, #0
+ strb r1, [r0, #8]
+ add r0, r5, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ bl FUN_020687C8
+ add r1, sp, #0
+ strb r0, [r1, #9]
+ add r0, r4, #0
+ ldrh r2, [r1, #6]
+ add r0, #0xec
+ strh r2, [r0]
+ add r0, r4, #0
+ ldrh r1, [r1, #8]
+ add r0, #0xee
+ strh r1, [r0]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD80_02234288
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ add r2, r5, r0
+ add r5, #0xc4
+ ldr r1, [r5]
+ sub r0, #0xd4
+ mul r0, r1
+ add r0, r2, r0
+ bl FUN_020690E4
+ mov r1, #5
+ mov r2, #0
+ add r5, r0, #0
+ bl FUN_020672BC
+ add r1, sp, #0
+ strh r0, [r1]
+ add r0, r5, #0
+ mov r1, #0x6f
+ mov r2, #0
+ bl FUN_020672BC
+ add r0, r0, #1
+ add r1, sp, #0
+ strb r0, [r1, #2]
+ mov r0, #0
+ strb r0, [r1, #3]
+ strb r0, [r1, #4]
+ add r0, r4, #0
+ ldrh r2, [r1]
+ add r0, #0xf0
+ strh r2, [r0]
+ add r0, r4, #0
+ ldrh r2, [r1, #2]
+ add r0, #0xf2
+ add r4, #0xf4
+ strh r2, [r0]
+ ldrh r0, [r1, #4]
+ strh r0, [r4]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD80_0223311C
+
+ thumb_func_start MOD80_022331C4
+MOD80_022331C4: ; 0x022331C4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r2, #0
+ add r4, r3, #0
+ mov r6, #0
+_022331CE:
+ mov r0, #0
+ ldrsh r0, [r5, r0]
+ cmp r0, #0
+ beq _022331E8
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD80_02233088
+ cmp r0, #0
+ bne _022331E8
+ ldr r0, [r4, #4]
+ add r0, r0, #3
+ str r0, [r4, #4]
+_022331E8:
+ mov r0, #0x83
+ lsl r0, r0, #2
+ add r6, r6, #1
+ add r5, r5, #4
+ add r4, r4, r0
+ cmp r6, #0x1e
+ blt _022331CE
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD80_022331C4
+
+ thumb_func_start MOD80_022331F8
+MOD80_022331F8: ; 0x022331F8
+ push {r3, lr}
+ mov r1, #6
+ mov r2, #0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0206EA98
+ cmp r0, #0
+ beq _02233212
+ mov r0, #1
+ pop {r3, pc}
+_02233212:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD80_022331F8
+
+ thumb_func_start MOD80_02233218
+MOD80_02233218: ; 0x02233218
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl MOD80_02233618
+ ldr r0, [r4, #4]
+ bl MOD80_02233358
+ add r0, r4, #0
+ bl MOD80_0223346C
+ add r0, r4, #0
+ bl MOD80_02233500
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ add r0, r4, #0
+ bl MOD80_02236D84
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #3
+ ldr r2, _02233298 ; =0x00000B34
+ str r0, [sp, #4]
+ sub r0, r0, #4
+ str r0, [sp, #8]
+ add r1, r2, #4
+ ldr r0, [r4, r2]
+ sub r2, r2, #4
+ ldr r3, _0223329C ; =0x00000F08
+ ldr r1, [r4, r1]
+ ldr r2, [r4, r2]
+ add r3, r4, r3
+ bl MOD80_02233FB4
+ ldr r1, _022332A0 ; =0x00000B18
+ add r3, r4, #0
+ add r0, r4, r1
+ str r0, [sp]
+ add r0, r1, #0
+ add r0, #0x1c
+ add r1, #0x18
+ ldr r2, _022332A4 ; =0x00000F38
+ add r3, #0xbc
+ ldr r0, [r4, r0]
+ ldr r1, [r4, r1]
+ ldr r3, [r3]
+ add r2, r4, r2
+ bl MOD80_022340DC
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ mov r0, #2
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_02233298: .word 0x00000B34
+_0223329C: .word 0x00000F08
+_022332A0: .word 0x00000B18
+_022332A4: .word 0x00000F38
+ thumb_func_end MOD80_02233218
+
+ thumb_func_start MOD80_022332A8
+MOD80_022332A8: ; 0x022332A8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222E79C
+ bl FUN_02033EEC
+ ldr r1, [r4, #0x2c]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _022332C4 ; =0x02237B84
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r4, pc}
+ nop
+_022332C4: .word 0x02237B84
+ thumb_func_end MOD80_022332A8
+
+ thumb_func_start MOD80_022332C8
+MOD80_022332C8: ; 0x022332C8
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02033ED0
+ add r0, r4, #0
+ bl MOD80_02233684
+ add r0, r4, #0
+ bl MOD80_022335E0
+ ldr r0, [r4, #4]
+ bl MOD80_02233440
+ add r0, r4, #0
+ bl MOD80_0222E7B0
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD80_022332C8
+
+ thumb_func_start MOD80_022332EC
+MOD80_022332EC: ; 0x022332EC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, _0223334C ; =0x00000B34
+ add r4, r2, #0
+ ldr r0, [r5, r0]
+ bl FUN_0200A914
+ mov r1, #0xb3
+ add r6, r0, #0
+ lsl r1, r1, #4
+ ldr r0, [r5, r1]
+ add r1, #0x1c
+ ldr r1, [r5, r1]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ ldr r0, _02233350 ; =0x00000E98
+ mov r1, #0xf
+ add r0, r5, r0
+ bl FUN_02019620
+ ldr r0, _02233350 ; =0x00000E98
+ mov r1, #0
+ add r0, r5, r0
+ mov r2, #1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ mov r3, #0
+ str r3, [sp]
+ str r4, [sp, #4]
+ ldr r0, _02233350 ; =0x00000E98
+ ldr r2, _02233354 ; =0x00000B4C
+ str r3, [sp, #8]
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ mov r1, #0x2e
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ add r0, r6, #0
+ bl FUN_02021A20
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0223334C: .word 0x00000B34
+_02233350: .word 0x00000E98
+_02233354: .word 0x00000B4C
+ thumb_func_end MOD80_022332EC
+
+ thumb_func_start MOD80_02233358
+MOD80_02233358: ; 0x02233358
+ push {r4, r5, lr}
+ sub sp, #0x8c
+ ldr r5, _0223342C ; =0x02237420
+ add r4, r0, #0
+ ldmia r5!, {r0, r1}
+ add r3, sp, #0x70
+ 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, _02233430 ; =0x0223743C
+ 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
+ ldr r5, _02233434 ; =0x02237458
+ 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, _02233438 ; =0x02237404
+ 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, _0223343C ; =0x022373E8
+ 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]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x3e
+ bl FUN_02017F18
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x3e
+ bl FUN_02017F18
+ add sp, #0x8c
+ pop {r4, r5, pc}
+ nop
+_0223342C: .word 0x02237420
+_02233430: .word 0x0223743C
+_02233434: .word 0x02237458
+_02233438: .word 0x02237404
+_0223343C: .word 0x022373E8
+ thumb_func_end MOD80_02233358
+
+ thumb_func_start MOD80_02233440
+MOD80_02233440: ; 0x02233440
+ 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, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020178A0
+ pop {r4, pc}
+ thumb_func_end MOD80_02233440
+
+ thumb_func_start MOD80_0223346C
+MOD80_0223346C: ; 0x0223346C
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r4, [r5, #4]
+ mov r0, #0x60
+ str r0, [sp]
+ mov r0, #0x3e
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x68
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r1, #0x1a
+ mov r0, #0
+ lsl r1, r1, #4
+ mov r2, #0x3e
+ bl FUN_02002EEC
+ ldr r0, [r5]
+ ldr r0, [r0, #0x24]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x3e
+ 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, #0x3e
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x1f
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xa
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x68
+ mov r1, #0xb
+ add r2, r4, #0
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x68
+ mov r1, #0x17
+ add r2, r4, #0
+ bl FUN_020068C8
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD80_0223346C
+
+ thumb_func_start MOD80_02233500
+MOD80_02233500: ; 0x02233500
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ mov r3, #1
+ add r7, r0, #0
+ str r3, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x28
+ ldr r1, _022335CC ; =0x00000EB8
+ str r0, [sp, #0x10]
+ ldr r0, [r7, #4]
+ add r1, r7, r1
+ mov r2, #0
+ bl FUN_02019064
+ ldr r0, _022335CC ; =0x00000EB8
+ mov r1, #0
+ add r0, r7, r0
+ bl FUN_02019620
+ mov r2, #0
+ mov r1, #0xb5
+ ldr r0, _022335D0 ; =0x000F0E00
+ str r2, [sp]
+ str r0, [sp, #4]
+ ldr r0, _022335CC ; =0x00000EB8
+ lsl r1, r1, #4
+ ldr r1, [r7, r1]
+ add r0, r7, r0
+ mov r3, #1
+ bl MOD80_02236D1C
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r3, #2
+ ldr r1, _022335D4 ; =0x00000E98
+ str r3, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x60
+ str r0, [sp, #0x10]
+ ldr r0, [r7, #4]
+ add r1, r7, r1
+ mov r2, #0
+ bl FUN_02019064
+ ldr r0, _022335D4 ; =0x00000E98
+ mov r1, #0
+ add r0, r7, r0
+ bl FUN_02019620
+ mov r0, #0
+ str r0, [sp, #0x14]
+ ldr r0, _022335D8 ; =0x00000F08
+ ldr r4, _022335DC ; =0x022373D0
+ mov r6, #0x96
+ add r5, r7, r0
+_0223357E:
+ ldrh r0, [r4, #2]
+ add r1, r5, #0
+ mov r2, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0xb
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldrh r3, [r4]
+ ldr r0, [r7, #4]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ bl FUN_020191D0
+ ldr r0, [sp, #0x14]
+ add r6, #0x16
+ add r0, r0, #1
+ add r4, r4, #4
+ add r5, #0x10
+ str r0, [sp, #0x14]
+ cmp r0, #6
+ blt _0223357E
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022335CC: .word 0x00000EB8
+_022335D0: .word 0x000F0E00
+_022335D4: .word 0x00000E98
+_022335D8: .word 0x00000F08
+_022335DC: .word 0x022373D0
+ thumb_func_end MOD80_02233500
+
+ thumb_func_start MOD80_022335E0
+MOD80_022335E0: ; 0x022335E0
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, _0223360C ; =0x00000F08
+ mov r4, #0
+ add r5, r6, r0
+_022335EA:
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #6
+ blt _022335EA
+ ldr r0, _02233610 ; =0x00000E98
+ add r0, r6, r0
+ bl FUN_02019178
+ ldr r0, _02233614 ; =0x00000EB8
+ add r0, r6, r0
+ bl FUN_02019178
+ pop {r4, r5, r6, pc}
+ nop
+_0223360C: .word 0x00000F08
+_02233610: .word 0x00000E98
+_02233614: .word 0x00000EB8
+ thumb_func_end MOD80_022335E0
+
+ thumb_func_start MOD80_02233618
+MOD80_02233618: ; 0x02233618
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xb4
+ mov r1, #0x3e
+ bl FUN_020219F4
+ ldr r1, _02233680 ; =0x00000B4C
+ str r0, [r4, r1]
+ sub r1, #0x18
+ ldr r0, [r4, r1]
+ mov r1, #0x5a
+ bl FUN_0200A914
+ mov r1, #0xb5
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ mov r0, #0x3e
+ mov r1, #0x30
+ bl FUN_02016998
+ mov r1, #0xfe
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ ldr r1, [r4, r1]
+ mov r0, #0
+ mov r2, #0x30
+ bl MIi_CpuClearFast
+ mov r2, #0xfe
+ lsl r2, r2, #4
+ ldr r2, [r4, r2]
+ mov r0, #0x3e
+ mov r1, #0
+ add r2, #0x1c
+ bl MOD80_02234204
+ mov r1, #0xfe
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ str r0, [r1, #0x18]
+ mov r0, #0x3e
+ bl MOD80_02234228
+ mov r1, #0xfe
+ lsl r1, r1, #4
+ ldr r2, [r4, r1]
+ add r1, #0x38
+ str r0, [r2, #0x14]
+ add r0, r4, r1
+ bl MOD80_022346D8
+ pop {r4, pc}
+ .align 2, 0
+_02233680: .word 0x00000B4C
+ thumb_func_end MOD80_02233618
+
+ thumb_func_start MOD80_02233684
+MOD80_02233684: ; 0x02233684
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0x14]
+ bl FUN_02016A18
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0x18]
+ bl FUN_02016A18
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _022336C0 ; =0x00000B4C
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ mov r0, #0xb5
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ pop {r4, pc}
+ nop
+_022336C0: .word 0x00000B4C
+ thumb_func_end MOD80_02233684
+
+ thumb_func_start MOD80_022336C4
+MOD80_022336C4: ; 0x022336C4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _022336EC
+ ldr r0, _022336F4 ; =0x00000F0F
+ mov r1, #9
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #1
+ mov r3, #0
+ bl MOD80_022332EC
+ add r0, r4, #0
+ mov r1, #0x10
+ mov r2, #1
+ bl MOD80_0222E6DC
+_022336EC:
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_022336F4: .word 0x00000F0F
+ thumb_func_end MOD80_022336C4
+
+ thumb_func_start MOD80_022336F8
+MOD80_022336F8: ; 0x022336F8
+ push {r3, r4, lr}
+ sub sp, #0x14
+ ldr r1, _02233770 ; =0x021C48B8
+ add r4, r0, #0
+ ldr r2, [r1, #0x48]
+ mov r1, #2
+ tst r1, r2
+ beq _02233714
+ mov r1, #5
+ add r2, r1, #0
+ bl MOD80_0222E7A8
+ mov r0, #2
+ str r0, [r4, #0x2c]
+_02233714:
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #0xd
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, _02233774 ; =0x0000011A
+ ldr r1, _02233778 ; =0x00000ED8
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #0xf
+ bl FUN_02019064
+ ldr r0, _02233778 ; =0x00000ED8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #0xd
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, _0223377C ; =0x0000014E
+ ldr r1, _02233780 ; =0x00000EE8
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #0x15
+ bl FUN_02019064
+ ldr r0, _02233780 ; =0x00000EE8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ mov r0, #3
+ str r0, [r4, #0x2c]
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .align 2, 0
+_02233770: .word 0x021C48B8
+_02233774: .word 0x0000011A
+_02233778: .word 0x00000ED8
+_0223377C: .word 0x0000014E
+_02233780: .word 0x00000EE8
+ thumb_func_end MOD80_022336F8
+
+ thumb_func_start MOD80_02233784
+MOD80_02233784: ; 0x02233784
+ push {r4, lr}
+ ldr r2, _022337AC ; =0x00000FC8
+ add r4, r0, #0
+ ldr r3, _022337B0 ; =0x00000B34
+ add r1, r4, r2
+ sub r2, #0xf0
+ ldr r3, [r4, r3]
+ add r2, r4, r2
+ bl MOD80_02234370
+ ldr r1, _022337B4 ; =0x00000FD4
+ str r0, [r4, r1]
+ add r0, r4, #0
+ ldr r1, _022337B8 ; =0x0000FFFF
+ add r0, #0xb0
+ strh r1, [r0]
+ mov r0, #4
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_022337AC: .word 0x00000FC8
+_022337B0: .word 0x00000B34
+_022337B4: .word 0x00000FD4
+_022337B8: .word 0x0000FFFF
+ thumb_func_end MOD80_02233784
+
+ thumb_func_start MOD80_022337BC
+MOD80_022337BC: ; 0x022337BC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02233878 ; =0x00000FD4
+ add r1, r4, #0
+ ldr r0, [r4, r0]
+ add r1, #0xb0
+ bl MOD80_02234698
+ cmp r0, #9
+ bhi _022337F0
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_022337DC: ; jump table
+ .short _02233872 - _022337DC - 2 ; case 0
+ .short _022337FA - _022337DC - 2 ; case 1
+ .short _022337FA - _022337DC - 2 ; case 2
+ .short _022337FA - _022337DC - 2 ; case 3
+ .short _022337FA - _022337DC - 2 ; case 4
+ .short _022337FA - _022337DC - 2 ; case 5
+ .short _022337FA - _022337DC - 2 ; case 6
+ .short _022337FA - _022337DC - 2 ; case 7
+ .short _022337FA - _022337DC - 2 ; case 8
+ .short _022337FA - _022337DC - 2 ; case 9
+_022337F0:
+ mov r1, #1
+ mvn r1, r1
+ cmp r0, r1
+ beq _02233820
+ b _02233872
+_022337FA:
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r2, [r4, r0]
+ sub r0, #0xc
+ add r1, r2, #6
+ ldr r0, [r4, r0]
+ add r2, r2, #4
+ bl FUN_02001300
+ ldr r0, _0223387C ; =0x00000FC8
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ mov r0, #5
+ str r0, [r4, #0x2c]
+ ldr r0, _02233880 ; =0x000005DC
+ bl FUN_020054C8
+ b _02233872
+_02233820:
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r2, [r4, r0]
+ sub r0, #0xc
+ add r1, r2, #6
+ ldr r0, [r4, r0]
+ add r2, r2, #4
+ bl FUN_02001300
+ ldr r0, _0223387C ; =0x00000FC8
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ ldr r0, _02233884 ; =0x00000ED8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200CCF8
+ ldr r0, _02233888 ; =0x00000E98
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200D0E0
+ ldr r0, _02233884 ; =0x00000ED8
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _0223388C ; =0x00000EE8
+ add r0, r4, r0
+ bl FUN_02019178
+ mov r1, #5
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD80_0222E7A8
+ mov r0, #2
+ str r0, [r4, #0x2c]
+ ldr r0, _02233880 ; =0x000005DC
+ bl FUN_020054C8
+_02233872:
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_02233878: .word 0x00000FD4
+_0223387C: .word 0x00000FC8
+_02233880: .word 0x000005DC
+_02233884: .word 0x00000ED8
+_02233888: .word 0x00000E98
+_0223388C: .word 0x00000EE8
+ thumb_func_end MOD80_022337BC
+
+ thumb_func_start MOD80_02233890
+MOD80_02233890: ; 0x02233890
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r3, _022338D4 ; =0x00000B38
+ add r4, r0, #0
+ ldr r1, [r4, r3]
+ mov r2, #0xfe
+ lsl r2, r2, #4
+ str r1, [sp]
+ ldr r1, [r4, r2]
+ sub r3, r3, #4
+ str r1, [sp, #4]
+ ldr r1, [r4]
+ ldr r1, [r1, #0x10]
+ str r1, [sp, #8]
+ add r1, r2, #0
+ sub r1, #0x18
+ sub r2, #0xf8
+ ldr r3, [r4, r3]
+ add r1, r4, r1
+ add r2, r4, r2
+ bl MOD80_022344DC
+ ldr r1, _022338D8 ; =0x00000FD4
+ str r0, [r4, r1]
+ add r0, r4, #0
+ ldr r1, _022338DC ; =0x0000FFFF
+ add r0, #0xb0
+ strh r1, [r0]
+ mov r0, #6
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_022338D4: .word 0x00000B38
+_022338D8: .word 0x00000FD4
+_022338DC: .word 0x0000FFFF
+ thumb_func_end MOD80_02233890
+
+ thumb_func_start MOD80_022338E0
+MOD80_022338E0: ; 0x022338E0
+ cmp r1, #0
+ beq _022338EE
+ cmp r1, #0xfe
+ beq _022338F6
+ cmp r1, #0xff
+ beq _022338FE
+ b _02233906
+_022338EE:
+ mov r1, #1
+ strb r1, [r0, #2]
+ add r0, r1, #0
+ bx lr
+_022338F6:
+ mov r1, #2
+ strb r1, [r0, #2]
+ mov r0, #1
+ bx lr
+_022338FE:
+ mov r1, #3
+ strb r1, [r0, #2]
+ mov r0, #1
+ bx lr
+_02233906:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD80_022338E0
+
+ thumb_func_start MOD80_0223390C
+MOD80_0223390C: ; 0x0223390C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, _02233A4C ; =0x00000FD4
+ add r1, r4, #0
+ ldr r0, [r4, r0]
+ add r1, #0xb0
+ bl MOD80_02234698
+ add r5, r0, #0
+ mov r0, #1
+ mvn r0, r0
+ cmp r5, r0
+ beq _02233932
+ add r0, r0, #1
+ cmp r5, r0
+ bne _02233930
+ b _02233A44
+_02233930:
+ b _0223398C
+_02233932:
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r2, [r4, r0]
+ sub r0, #0xc
+ add r1, r2, #0
+ ldr r0, [r4, r0]
+ add r1, #0xa
+ add r2, #8
+ bl FUN_02001300
+ ldr r0, _02233A50 ; =0x00000FC8
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ ldr r0, _02233A54 ; =0x00000EE8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200CCF8
+ ldr r0, _02233A58 ; =0x00000ED8
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _02233A54 ; =0x00000EE8
+ add r0, r4, r0
+ bl FUN_02019178
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ ldr r0, _02233A5C ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r3, [r4, r0]
+ add r0, #0x38
+ ldrh r2, [r3, #6]
+ ldrh r1, [r3, #4]
+ add r0, r4, r0
+ add r1, r2, r1
+ ldrh r2, [r3, #0xa]
+ ldrh r3, [r3, #8]
+ bl MOD80_022346F0
+ b _02233A44
+_0223398C:
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r2, [r4, r0]
+ sub r0, #0xc
+ add r1, r2, #0
+ ldr r0, [r4, r0]
+ add r1, #0xa
+ add r2, #8
+ bl FUN_02001300
+ ldr r0, _02233A50 ; =0x00000FC8
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ ldr r0, _02233A58 ; =0x00000ED8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200CCF8
+ ldr r0, _02233A54 ; =0x00000EE8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200CCF8
+ ldr r0, _02233A58 ; =0x00000ED8
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _02233A54 ; =0x00000EE8
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _02233A60 ; =0x00000B1C
+ strh r5, [r4, r0]
+ ldr r0, _02233A5C ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #0x12
+ bl FUN_02068678
+ mov r1, #0xfe
+ lsl r1, r1, #4
+ ldr r2, [r4, r1]
+ str r0, [r2, #0x20]
+ ldr r1, [r4, r1]
+ ldr r0, _02233A60 ; =0x00000B1C
+ ldr r1, [r1, #0x20]
+ add r0, r4, r0
+ bl MOD80_022338E0
+ cmp r0, #0
+ beq _02233A00
+ mov r0, #0xa
+ str r0, [r4, #0x2c]
+ ldr r0, _02233A64 ; =0x00000B1E
+ ldrsb r1, [r4, r0]
+ b _02233A06
+_02233A00:
+ mov r0, #7
+ str r0, [r4, #0x2c]
+ mov r1, #3
+_02233A06:
+ ldr r2, _02233A60 ; =0x00000B1C
+ ldr r3, _02233A68 ; =0x00000F08
+ ldrsh r0, [r4, r2]
+ add r3, r4, r3
+ str r0, [sp]
+ mov r0, #0
+ str r1, [sp, #4]
+ mvn r0, r0
+ str r0, [sp, #8]
+ add r0, r2, #0
+ add r1, r2, #0
+ add r0, #0x18
+ add r1, #0x1c
+ add r2, #0x14
+ ldr r0, [r4, r0]
+ ldr r1, [r4, r1]
+ ldr r2, [r4, r2]
+ bl MOD80_02233FB4
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r3, [r4, r0]
+ add r0, #0x38
+ ldrh r2, [r3, #6]
+ ldrh r1, [r3, #4]
+ add r0, r4, r0
+ add r1, r2, r1
+ ldrh r2, [r3, #0xa]
+ ldrh r3, [r3, #8]
+ bl MOD80_022346F0
+_02233A44:
+ mov r0, #3
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_02233A4C: .word 0x00000FD4
+_02233A50: .word 0x00000FC8
+_02233A54: .word 0x00000EE8
+_02233A58: .word 0x00000ED8
+_02233A5C: .word 0x000005DC
+_02233A60: .word 0x00000B1C
+_02233A64: .word 0x00000B1E
+_02233A68: .word 0x00000F08
+ thumb_func_end MOD80_0223390C
+
+ thumb_func_start MOD80_02233A6C
+MOD80_02233A6C: ; 0x02233A6C
+ push {r3, r4, lr}
+ sub sp, #0x14
+ ldr r1, _02233ABC ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ mov r1, #0xa
+ mov r2, #1
+ mov r3, #0
+ bl MOD80_022332EC
+ add r0, r4, #0
+ mov r1, #0x10
+ mov r2, #8
+ bl MOD80_0222E6DC
+ mov r0, #0xa
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _02233AC0 ; =0x0000011A
+ ldr r1, _02233AC4 ; =0x00000ED8
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #0x15
+ bl FUN_02019064
+ ldr r0, _02233AC4 ; =0x00000ED8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ mov r0, #3
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_02233ABC: .word 0x00000F0F
+_02233AC0: .word 0x0000011A
+_02233AC4: .word 0x00000ED8
+ thumb_func_end MOD80_02233A6C
+
+ thumb_func_start MOD80_02233AC8
+MOD80_02233AC8: ; 0x02233AC8
+ push {r4, lr}
+ ldr r1, _02233AF0 ; =0x00000FC8
+ add r4, r0, #0
+ ldr r2, _02233AF4 ; =0x00000B34
+ add r0, r4, r1
+ sub r1, #0xf0
+ ldr r2, [r4, r2]
+ add r1, r4, r1
+ bl MOD80_02234560
+ ldr r1, _02233AF8 ; =0x00000FD4
+ str r0, [r4, r1]
+ add r0, r4, #0
+ ldr r1, _02233AFC ; =0x0000FFFF
+ add r0, #0xb0
+ strh r1, [r0]
+ mov r0, #9
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_02233AF0: .word 0x00000FC8
+_02233AF4: .word 0x00000B34
+_02233AF8: .word 0x00000FD4
+_02233AFC: .word 0x0000FFFF
+ thumb_func_end MOD80_02233AC8
+
+ thumb_func_start MOD80_02233B00
+MOD80_02233B00: ; 0x02233B00
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, _02233BCC ; =0x00000FD4
+ add r1, r5, #0
+ ldr r0, [r5, r0]
+ add r1, #0xb0
+ bl MOD80_02234698
+ add r4, r0, #0
+ cmp r4, #2
+ bhi _02233B26
+ cmp r4, #0
+ beq _02233B6A
+ cmp r4, #1
+ beq _02233B6A
+ cmp r4, #2
+ beq _02233B6A
+ b _02233BC6
+_02233B26:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _02233BC6
+ ldr r0, _02233BCC ; =0x00000FD4
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r2, r1, #0
+ bl FUN_02001300
+ ldr r0, _02233BD0 ; =0x00000FC8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _02233BD4 ; =0x00000ED8
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200CCF8
+ ldr r0, _02233BD8 ; =0x00000E98
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200D0E0
+ ldr r0, _02233BD4 ; =0x00000ED8
+ add r0, r5, r0
+ bl FUN_02019178
+ ldr r0, _02233BDC ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0
+ str r0, [r5, #0x2c]
+ b _02233BC6
+_02233B6A:
+ ldr r0, _02233BCC ; =0x00000FD4
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r2, r1, #0
+ bl FUN_02001300
+ ldr r0, _02233BD0 ; =0x00000FC8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _02233BD4 ; =0x00000ED8
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200CCF8
+ ldr r0, _02233BD4 ; =0x00000ED8
+ add r0, r5, r0
+ bl FUN_02019178
+ ldr r0, _02233BDC ; =0x000005DC
+ bl FUN_020054C8
+ ldr r3, _02233BE0 ; =0x00000F08
+ ldr r2, _02233BE4 ; =0x00000B1E
+ add r0, r4, #1
+ strb r0, [r5, r2]
+ mov r1, #0xa
+ str r1, [r5, #0x2c]
+ sub r0, r2, #2
+ ldrsh r0, [r5, r0]
+ sub r1, #0xb
+ add r3, r5, r3
+ str r0, [sp]
+ ldrsb r0, [r5, r2]
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ add r0, r2, #0
+ add r1, r2, #0
+ add r0, #0x16
+ add r1, #0x1a
+ add r2, #0x12
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ ldr r2, [r5, r2]
+ bl MOD80_02233FB4
+_02233BC6:
+ mov r0, #3
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02233BCC: .word 0x00000FD4
+_02233BD0: .word 0x00000FC8
+_02233BD4: .word 0x00000ED8
+_02233BD8: .word 0x00000E98
+_02233BDC: .word 0x000005DC
+_02233BE0: .word 0x00000F08
+_02233BE4: .word 0x00000B1E
+ thumb_func_end MOD80_02233B00
+
+ thumb_func_start MOD80_02233BE8
+MOD80_02233BE8: ; 0x02233BE8
+ push {r3, r4, lr}
+ sub sp, #0x14
+ ldr r1, _02233C38 ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ mov r1, #0xb
+ mov r2, #1
+ mov r3, #0
+ bl MOD80_022332EC
+ add r0, r4, #0
+ mov r1, #0x10
+ mov r2, #0xb
+ bl MOD80_0222E6DC
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0xd
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, _02233C3C ; =0x0000011A
+ ldr r1, _02233C40 ; =0x00000ED8
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #0xf
+ bl FUN_02019064
+ ldr r0, _02233C40 ; =0x00000ED8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ mov r0, #3
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_02233C38: .word 0x00000F0F
+_02233C3C: .word 0x0000011A
+_02233C40: .word 0x00000ED8
+ thumb_func_end MOD80_02233BE8
+
+ thumb_func_start MOD80_02233C44
+MOD80_02233C44: ; 0x02233C44
+ push {r4, lr}
+ ldr r1, _02233C6C ; =0x00000FC8
+ add r4, r0, #0
+ ldr r2, _02233C70 ; =0x00000B34
+ add r0, r4, r1
+ sub r1, #0xf0
+ ldr r2, [r4, r2]
+ add r1, r4, r1
+ bl MOD80_022345D0
+ ldr r1, _02233C74 ; =0x00000FD4
+ str r0, [r4, r1]
+ add r0, r4, #0
+ ldr r1, _02233C78 ; =0x0000FFFF
+ add r0, #0xb0
+ strh r1, [r0]
+ mov r0, #0xc
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_02233C6C: .word 0x00000FC8
+_02233C70: .word 0x00000B34
+_02233C74: .word 0x00000FD4
+_02233C78: .word 0x0000FFFF
+ thumb_func_end MOD80_02233C44
+
+ thumb_func_start MOD80_02233C7C
+MOD80_02233C7C: ; 0x02233C7C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, _02233D6C ; =0x00000FD4
+ add r1, r5, #0
+ ldr r0, [r5, r0]
+ add r1, #0xb0
+ bl MOD80_02234698
+ add r4, r0, #0
+ cmp r4, #0xc
+ beq _02233CA4
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _02233CA4
+ add r0, r0, #1
+ cmp r4, r0
+ beq _02233D66
+ b _02233CFA
+_02233CA4:
+ ldr r0, _02233D6C ; =0x00000FD4
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r2, r1, #0
+ bl FUN_02001300
+ ldr r0, _02233D70 ; =0x00000FC8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _02233D74 ; =0x00000ED8
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200CCF8
+ ldr r0, _02233D78 ; =0x00000E98
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200D0E0
+ ldr r0, _02233D74 ; =0x00000ED8
+ add r0, r5, r0
+ bl FUN_02019178
+ ldr r0, _02233D7C ; =0x000005DC
+ bl FUN_020054C8
+ mov r1, #0xfe
+ lsl r1, r1, #4
+ ldr r1, [r5, r1]
+ ldr r0, _02233D80 ; =0x00000B1C
+ ldr r1, [r1, #0x20]
+ add r0, r5, r0
+ bl MOD80_022338E0
+ cmp r0, #0
+ beq _02233CF4
+ mov r0, #0
+ str r0, [r5, #0x2c]
+ b _02233D66
+_02233CF4:
+ mov r0, #7
+ str r0, [r5, #0x2c]
+ b _02233D66
+_02233CFA:
+ ldr r0, _02233D7C ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _02233D6C ; =0x00000FD4
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r2, r1, #0
+ bl FUN_02001300
+ ldr r0, _02233D70 ; =0x00000FC8
+ ldr r0, [r5, r0]
+ bl FUN_02012870
+ ldr r0, _02233D74 ; =0x00000ED8
+ mov r1, #0
+ add r0, r5, r0
+ bl FUN_0200CCF8
+ ldr r0, _02233D74 ; =0x00000ED8
+ add r0, r5, r0
+ bl FUN_02019178
+ ldr r0, _02233D80 ; =0x00000B1C
+ add r1, r4, #0
+ add r0, r5, r0
+ bl MOD80_02234640
+ mov r0, #0xd
+ ldr r1, _02233D84 ; =0x00000B1F
+ str r0, [r5, #0x2c]
+ ldrsb r0, [r5, r1]
+ add r1, r1, #1
+ ldrsb r1, [r5, r1]
+ bl MOD80_02234668
+ ldr r2, _02233D80 ; =0x00000B1C
+ ldr r3, _02233D88 ; =0x00000F08
+ ldrsh r1, [r5, r2]
+ add r3, r5, r3
+ str r1, [sp]
+ add r1, r2, #2
+ ldrsb r1, [r5, r1]
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r2, #0
+ add r1, r2, #0
+ add r0, #0x18
+ add r1, #0x1c
+ add r2, #0x14
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ ldr r2, [r5, r2]
+ bl MOD80_02233FB4
+_02233D66:
+ mov r0, #3
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02233D6C: .word 0x00000FD4
+_02233D70: .word 0x00000FC8
+_02233D74: .word 0x00000ED8
+_02233D78: .word 0x00000E98
+_02233D7C: .word 0x000005DC
+_02233D80: .word 0x00000B1C
+_02233D84: .word 0x00000B1F
+_02233D88: .word 0x00000F08
+ thumb_func_end MOD80_02233C7C
+
+ thumb_func_start MOD80_02233D8C
+MOD80_02233D8C: ; 0x02233D8C
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r1, _02233DB0 ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ mov r1, #0x17
+ mov r2, #1
+ mov r3, #0
+ bl MOD80_022332EC
+ add r0, r4, #0
+ mov r1, #0x10
+ mov r2, #0xe
+ bl MOD80_0222E6DC
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_02233DB0: .word 0x00000F0F
+ thumb_func_end MOD80_02233D8C
+
+ thumb_func_start MOD80_02233DB4
+MOD80_02233DB4: ; 0x02233DB4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r2, _02233DD0 ; =0x000001EA
+ mov r1, #0xf
+ bl MOD80_0222E6A8
+ ldr r1, _02233DD4 ; =0x00000FCC
+ str r0, [r4, r1]
+ mov r0, #0xf
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_02233DD0: .word 0x000001EA
+_02233DD4: .word 0x00000FCC
+ thumb_func_end MOD80_02233DB4
+
+ thumb_func_start MOD80_02233DD8
+MOD80_02233DD8: ; 0x02233DD8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02233E28 ; =0x00000FCC
+ mov r1, #0x3e
+ ldr r0, [r4, r0]
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02233E22
+ sub r1, r1, #1
+ cmp r0, r1
+ bne _02233E04
+ mov r1, #5
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD80_0222E7A8
+ mov r0, #2
+ str r0, [r4, #0x2c]
+ b _02233E22
+_02233E04:
+ mov r1, #7
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD80_0222E7A8
+ mov r0, #2
+ str r0, [r4, #0x2c]
+ ldr r0, _02233E2C ; =0x0000100C
+ mov r1, #1
+ str r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xd4
+ add r1, r4, #0
+ bl MOD80_02234330
+_02233E22:
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_02233E28: .word 0x00000FCC
+_02233E2C: .word 0x0000100C
+ thumb_func_end MOD80_02233DD8
+
+ thumb_func_start MOD80_02233E30
+MOD80_02233E30: ; 0x02233E30
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ bne _02233E5C
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, _02233E80 ; =0x0000100C
+ mov r1, #1
+ str r1, [r4, r0]
+ b _02233E74
+_02233E5C:
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+_02233E74:
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ mov r0, #4
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_02233E80: .word 0x0000100C
+ thumb_func_end MOD80_02233E30
+
+ thumb_func_start MOD80_02233E84
+MOD80_02233E84: ; 0x02233E84
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x2e
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02233E9E
+ ldr r0, [r4, #0x30]
+ str r0, [r4, #0x2c]
+_02233E9E:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02233E84
+
+ thumb_func_start MOD80_02233EA4
+MOD80_02233EA4: ; 0x02233EA4
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r6, r0, #0
+ add r5, r3, #0
+ cmp r2, #0
+ beq _02233ED2
+ add r0, r1, #0
+ add r1, r2, #0
+ bl FUN_0200A914
+ add r4, r0, #0
+ ldr r0, [sp, #0x1c]
+ str r5, [sp]
+ str r0, [sp, #4]
+ ldr r3, [sp, #0x18]
+ add r0, r6, #0
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD80_02236D50
+ add r0, r4, #0
+ bl FUN_02021A20
+_02233ED2:
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02233EA4
+
+ thumb_func_start MOD80_02233ED8
+MOD80_02233ED8: ; 0x02233ED8
+ cmp r0, #1
+ bne _02233EE2
+ ldr r0, _02233EF0 ; =0x02237B48
+ ldr r0, [r0]
+ bx lr
+_02233EE2:
+ cmp r0, #2
+ bne _02233EEA
+ ldr r0, _02233EF0 ; =0x02237B48
+ ldr r1, [r0, #4]
+_02233EEA:
+ add r0, r1, #0
+ bx lr
+ nop
+_02233EF0: .word 0x02237B48
+ thumb_func_end MOD80_02233ED8
+
+ thumb_func_start MOD80_02233EF4
+MOD80_02233EF4: ; 0x02233EF4
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r6, r0, #0
+ add r5, r2, #0
+ cmp r3, #0
+ bne _02233F04
+ cmp r5, #3
+ beq _02233F54
+_02233F04:
+ add r0, r1, #0
+ ldr r1, _02233F58 ; =0x022373C0
+ lsl r2, r5, #2
+ ldr r1, [r1, r2]
+ bl FUN_0200A914
+ add r4, r0, #0
+ ldr r0, [sp, #0x1c]
+ cmp r0, #3
+ ble _02233F34
+ ldr r1, [sp, #0x20]
+ add r0, r5, #0
+ bl MOD80_02233ED8
+ mov r1, #0
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldr r2, [sp, #0x1c]
+ ldr r3, [sp, #0x18]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD80_02236D50
+ b _02233F4E
+_02233F34:
+ ldr r1, [sp, #0x20]
+ add r0, r5, #0
+ bl MOD80_02233ED8
+ ldr r1, [sp, #0x1c]
+ ldr r3, [sp, #0x18]
+ str r1, [sp]
+ str r0, [sp, #4]
+ add r0, r6, #0
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD80_02236D50
+_02233F4E:
+ add r0, r4, #0
+ bl FUN_02021A20
+_02233F54:
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02233F58: .word 0x022373C0
+ thumb_func_end MOD80_02233EF4
+
+ thumb_func_start MOD80_02233F5C
+MOD80_02233F5C: ; 0x02233F5C
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r6, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ add r5, r3, #0
+ cmp r2, r0
+ beq _02233F92
+ add r0, r1, #0
+ ldr r1, _02233F98 ; =0x02237494
+ lsl r2, r2, #3
+ ldr r1, [r1, r2]
+ bl FUN_0200A914
+ add r4, r0, #0
+ ldr r0, [sp, #0x1c]
+ str r5, [sp]
+ str r0, [sp, #4]
+ ldr r2, [sp, #0x20]
+ ldr r3, [sp, #0x18]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD80_02236D50
+ add r0, r4, #0
+ bl FUN_02021A20
+_02233F92:
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ nop
+_02233F98: .word 0x02237494
+ thumb_func_end MOD80_02233F5C
+
+ thumb_func_start MOD80_02233F9C
+MOD80_02233F9C: ; 0x02233F9C
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r4, [sp, #0x18]
+ str r4, [sp]
+ ldr r4, [sp, #0x1c]
+ str r4, [sp, #4]
+ mov r4, #0
+ str r4, [sp, #8]
+ bl MOD80_02233F5C
+ add sp, #0xc
+ pop {r3, r4, pc}
+ thumb_func_end MOD80_02233F9C
+
+ thumb_func_start MOD80_02233FB4
+MOD80_02233FB4: ; 0x02233FB4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r1, [sp, #0x10]
+ mov r1, #0x61
+ str r0, [sp, #0xc]
+ add r6, r3, #0
+ bl FUN_0200A914
+ str r0, [sp, #0x14]
+ mov r2, #0
+ ldr r0, _02234044 ; =0x000F0200
+ str r2, [sp]
+ str r0, [sp, #4]
+ ldr r1, [sp, #0x14]
+ add r0, r6, #0
+ add r3, r2, #0
+ bl MOD80_02236D50
+ add r5, r6, #0
+ mov r4, #1
+ add r5, #0x10
+ mov r7, #0
+_02233FE0:
+ add r0, r5, #0
+ add r1, r7, #0
+ bl FUN_02019620
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #3
+ blt _02233FE0
+ mov r3, #0
+ ldr r0, _02234044 ; =0x000F0200
+ str r3, [sp]
+ str r0, [sp, #4]
+ add r0, r6, #0
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0x30]
+ add r0, #0x10
+ bl MOD80_02233EA4
+ ldr r2, [sp, #0x34]
+ sub r0, r2, #1
+ cmp r0, #1
+ bhi _02234022
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x46
+ str r0, [sp, #4]
+ ldr r0, _02234044 ; =0x000F0200
+ ldr r1, [sp, #0xc]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r0, #0x10
+ bl MOD80_02233EF4
+_02234022:
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _02234044 ; =0x000F0200
+ add r6, #0x20
+ str r0, [sp, #4]
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #0x38]
+ add r0, r6, #0
+ mov r3, #2
+ bl MOD80_02233F9C
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02234044: .word 0x000F0200
+ thumb_func_end MOD80_02233FB4
+
+ thumb_func_start MOD80_02234048
+MOD80_02234048: ; 0x02234048
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r1, [sp, #0x10]
+ mov r1, #0x61
+ str r0, [sp, #0xc]
+ add r6, r3, #0
+ bl FUN_0200A914
+ str r0, [sp, #0x14]
+ mov r2, #0
+ ldr r0, _022340D8 ; =0x000F0200
+ str r2, [sp]
+ str r0, [sp, #4]
+ ldr r1, [sp, #0x14]
+ add r0, r6, #0
+ add r3, r2, #0
+ bl MOD80_02236D50
+ add r5, r6, #0
+ mov r4, #1
+ add r5, #0x10
+ mov r7, #0
+_02234074:
+ add r0, r5, #0
+ add r1, r7, #0
+ bl FUN_02019620
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #3
+ blt _02234074
+ mov r3, #0
+ ldr r0, _022340D8 ; =0x000F0200
+ str r3, [sp]
+ str r0, [sp, #4]
+ add r0, r6, #0
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0x30]
+ add r0, #0x10
+ bl MOD80_02233EA4
+ ldr r2, [sp, #0x34]
+ sub r0, r2, #1
+ cmp r0, #1
+ bhi _022340B6
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x46
+ str r0, [sp, #4]
+ ldr r0, _022340D8 ; =0x000F0200
+ ldr r1, [sp, #0xc]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r0, #0x10
+ bl MOD80_02233EF4
+_022340B6:
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _022340D8 ; =0x000F0200
+ add r6, #0x20
+ str r0, [sp, #4]
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #0x38]
+ add r0, r6, #0
+ mov r3, #2
+ bl MOD80_02233F9C
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022340D8: .word 0x000F0200
+ thumb_func_end MOD80_02234048
+
+ thumb_func_start MOD80_022340DC
+MOD80_022340DC: ; 0x022340DC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r4, r0, #0
+ add r5, r1, #0
+ mov r0, #0xb
+ mov r1, #0x3e
+ str r2, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r7, [sp, #0x38]
+ bl FUN_020219F4
+ str r0, [sp, #0x18]
+ mov r0, #0xb
+ mov r1, #0x3e
+ bl FUN_020219F4
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0xc]
+ ldr r2, [sp, #0x18]
+ mov r1, #0x76
+ bl FUN_020672BC
+ ldr r0, [sp, #0xc]
+ mov r1, #0x6f
+ mov r2, #0
+ bl FUN_020672BC
+ add r6, r0, #1
+ ldr r0, [sp, #0xc]
+ bl FUN_020687C8
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x64
+ bl FUN_0200A914
+ str r0, [sp, #0x20]
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ mov r1, #3
+ str r0, [sp, #4]
+ ldr r2, [sp, #0x10]
+ add r0, r5, #0
+ add r3, r1, #0
+ bl FUN_0200AD38
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x66
+ mov r3, #0x3e
+ bl FUN_0200A9C4
+ str r0, [sp, #0x1c]
+ cmp r6, #3
+ beq _0223415A
+ ldr r1, _022341F8 ; =0x022373C0
+ lsl r2, r6, #2
+ ldr r1, [r1, r2]
+ ldr r2, [sp, #0x14]
+ add r0, r4, #0
+ bl FUN_0200A8E0
+_0223415A:
+ ldr r5, [sp, #8]
+ mov r4, #0
+_0223415E:
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #3
+ blt _0223415E
+ mov r2, #0
+ ldr r0, _022341FC ; =0x000F0200
+ str r2, [sp]
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ ldr r1, [sp, #0x20]
+ add r3, r2, #0
+ bl MOD80_02236D50
+ mov r2, #0
+ ldr r0, _022341FC ; =0x000F0200
+ str r2, [sp]
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ ldr r1, [sp, #0x18]
+ add r0, #0x10
+ add r3, r2, #0
+ bl MOD80_02236D50
+ mov r0, #2
+ str r0, [sp]
+ ldr r0, _022341FC ; =0x000F0200
+ mov r2, #0
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ ldr r1, [sp, #0x1c]
+ add r0, #0x20
+ add r3, r2, #0
+ bl MOD80_02236D50
+ cmp r6, #3
+ beq _022341CA
+ sub r0, r6, #1
+ mov r3, #0
+ lsl r1, r0, #2
+ ldr r0, _02234200 ; =0x02237B48
+ str r3, [sp]
+ ldr r0, [r0, r1]
+ ldr r1, [sp, #0x14]
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ mov r2, #0x46
+ add r0, #0x10
+ str r0, [sp, #8]
+ bl MOD80_02236D50
+_022341CA:
+ ldr r0, [sp, #0xc]
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020672BC
+ strh r0, [r7]
+ ldr r0, [sp, #0x10]
+ strb r6, [r7, #2]
+ strb r0, [r7, #3]
+ ldr r0, [sp, #0x1c]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x20]
+ bl FUN_02021A20
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022341F8: .word 0x022373C0
+_022341FC: .word 0x000F0200
+_02234200: .word 0x02237B48
+ thumb_func_end MOD80_022340DC
+
+ thumb_func_start MOD80_02234204
+MOD80_02234204: ; 0x02234204
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r2, #0
+ mov r2, #0
+ add r3, r0, #0
+ str r2, [sp]
+ add r0, sp, #8
+ str r0, [sp, #4]
+ mov r0, #0x4b
+ mov r1, #0xd
+ bl FUN_02006D18
+ ldr r1, [sp, #8]
+ lsr r1, r1, #1
+ str r1, [r4]
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02234204
+
+ thumb_func_start MOD80_02234228
+MOD80_02234228: ; 0x02234228
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ ldr r1, _02234280 ; =0x000001EE
+ add r5, r0, #0
+ mov r0, #0x3e
+ bl FUN_02016998
+ add r4, r0, #0
+ ldr r2, _02234280 ; =0x000001EE
+ mov r0, #0
+ add r1, r4, #0
+ bl MIi_CpuClearFast
+ mov r2, #0
+ str r2, [sp]
+ add r0, sp, #8
+ str r0, [sp, #4]
+ mov r0, #0x4b
+ mov r1, #0xc
+ add r3, r5, #0
+ bl FUN_02006D18
+ add r7, r0, #0
+ ldr r0, [sp, #8]
+ ldr r5, _02234284 ; =0x00000000
+ lsr r3, r0, #1
+ beq _02234274
+ ldr r0, _02234280 ; =0x000001EE
+ add r6, r7, #0
+ mov r1, #1
+_02234264:
+ ldrh r2, [r6]
+ cmp r2, r0
+ bhs _0223426C
+ strb r1, [r4, r2]
+_0223426C:
+ add r5, r5, #1
+ add r6, r6, #2
+ cmp r5, r3
+ blo _02234264
+_02234274:
+ add r0, r7, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02234280: .word 0x000001EE
+_02234284: .word 0x00000000
+ thumb_func_end MOD80_02234228
+
+ thumb_func_start MOD80_02234288
+MOD80_02234288: ; 0x02234288
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0xb8
+ ldrh r0, [r0]
+ bl MOD80_02232FAC
+ cmp r0, #0
+ beq _022342B0
+ bl FUN_020669BC
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ add r1, r5, #0
+ bl MIi_CpuCopyFast
+ b _022342BC
+_022342B0:
+ add r0, r4, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ add r1, r5, #0
+ bl FUN_02069A64
+_022342BC:
+ ldr r0, [r4]
+ ldr r0, [r0, #0x1c]
+ bl FUN_0202398C
+ add r1, r0, #0
+ mov r0, #0x43
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r2, #8
+ bl StringCopyN
+ ldr r0, [r4]
+ ldr r0, [r0, #0x1c]
+ bl FUN_020239C0
+ mov r1, #0x47
+ lsl r1, r1, #2
+ strh r0, [r5, r1]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ bl FUN_02029B38
+ ldr r1, _02234324 ; =0x0000011E
+ strb r0, [r5, r1]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x18]
+ bl FUN_02029B3C
+ ldr r1, _02234328 ; =0x0000011F
+ strb r0, [r5, r1]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x1c]
+ bl FUN_02023A28
+ mov r1, #0x12
+ lsl r1, r1, #4
+ strb r0, [r5, r1]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x1c]
+ bl FUN_020239CC
+ add r1, r5, #0
+ add r1, #0xf6
+ strb r0, [r1]
+ ldr r0, _0223432C ; =0x00000122
+ mov r1, #0xa
+ strb r1, [r5, r0]
+ mov r1, #2
+ add r0, r0, #1
+ strb r1, [r5, r0]
+ pop {r3, r4, r5, pc}
+ nop
+_02234324: .word 0x0000011E
+_02234328: .word 0x0000011F
+_0223432C: .word 0x00000122
+ thumb_func_end MOD80_02234288
+
+ thumb_func_start MOD80_02234330
+MOD80_02234330: ; 0x02234330
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD80_02234288
+ ldr r0, _0223436C ; =0x00000B18
+ add r1, r5, #0
+ ldrh r2, [r4, r0]
+ add r1, #0xec
+ strh r2, [r1]
+ add r1, r0, #2
+ ldrh r2, [r4, r1]
+ add r1, r5, #0
+ add r1, #0xee
+ strh r2, [r1]
+ add r1, r0, #4
+ ldrh r2, [r4, r1]
+ add r1, r5, #0
+ add r1, #0xf0
+ strh r2, [r1]
+ add r1, r0, #6
+ ldrh r2, [r4, r1]
+ add r1, r5, #0
+ add r1, #0xf2
+ strh r2, [r1]
+ add r0, #8
+ ldrh r0, [r4, r0]
+ add r5, #0xf4
+ strh r0, [r5]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223436C: .word 0x00000B18
+ thumb_func_end MOD80_02234330
+
+ thumb_func_start MOD80_02234370
+MOD80_02234370: ; 0x02234370
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r7, r0, #0
+ add r5, r1, #0
+ mov r0, #9
+ mov r1, #0x3e
+ str r2, [sp]
+ add r6, r3, #0
+ bl FUN_02012838
+ str r0, [r5]
+ mov r4, #0
+_02234388:
+ add r2, r4, #0
+ ldr r0, [r5]
+ add r1, r6, #0
+ add r2, #0x68
+ add r3, r4, #1
+ bl FUN_02012880
+ add r4, r4, #1
+ cmp r4, #9
+ blt _02234388
+ ldr r3, _022343D8 ; =0x02237474
+ add r2, sp, #4
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ 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, [r5]
+ mov r1, #0
+ str r0, [sp, #4]
+ ldr r0, [sp]
+ mov r2, #0x1f
+ mov r3, #0xb
+ str r0, [sp, #0x10]
+ bl FUN_0200CCA4
+ mov r0, #0xfe
+ lsl r0, r0, #4
+ ldr r2, [r7, r0]
+ add r0, sp, #4
+ ldrh r1, [r2, #6]
+ ldrh r2, [r2, #4]
+ mov r3, #0x3e
+ bl FUN_020010A8
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022343D8: .word 0x02237474
+ thumb_func_end MOD80_02234370
+
+ thumb_func_start MOD80_022343DC
+MOD80_022343DC: ; 0x022343DC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ str r0, [sp]
+ ldr r0, [sp, #0x38]
+ str r1, [sp, #4]
+ str r0, [sp, #0x38]
+ ldr r0, [sp, #0x40]
+ ldr r4, [sp, #0x44]
+ lsl r5, r0, #1
+ add r0, r0, #1
+ lsl r1, r0, #1
+ ldr r0, _022344D8 ; =0x02237B50
+ str r2, [sp, #8]
+ ldrh r1, [r0, r1]
+ ldrh r0, [r0, r5]
+ str r3, [sp, #0xc]
+ mov r6, #0
+ sub r7, r1, r0
+ add r0, r4, #0
+ bl FUN_02024CA4
+ str r0, [sp, #0x14]
+ ldr r0, _022344D8 ; =0x02237B50
+ ldrh r0, [r0, r5]
+ str r0, [sp, #0x18]
+ add r0, r6, #0
+ str r0, [sp, #0x1c]
+ cmp r7, #0
+ ble _02234456
+ ldr r0, [sp, #0x18]
+ lsl r1, r0, #1
+ ldr r0, [sp, #0xc]
+ add r5, r0, r1
+_0223441E:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ beq _02234434
+ ldrh r1, [r5]
+ add r0, r4, #0
+ bl FUN_020245F0
+ cmp r0, #0
+ beq _0223444A
+ add r6, r6, #1
+ b _0223444A
+_02234434:
+ ldrh r1, [r5]
+ ldr r0, [sp, #0x38]
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ beq _0223444A
+ add r0, r4, #0
+ bl FUN_020245F0
+ cmp r0, #0
+ beq _0223444A
+ add r6, r6, #1
+_0223444A:
+ ldr r0, [sp, #0x1c]
+ add r5, r5, #2
+ add r0, r0, #1
+ str r0, [sp, #0x1c]
+ cmp r0, r7
+ blt _0223441E
+_02234456:
+ add r0, r6, #1
+ mov r1, #0x3e
+ bl FUN_02012838
+ ldr r1, [sp]
+ str r0, [r1]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ cmp r7, #0
+ ble _022344C2
+ ldr r0, [sp, #0x18]
+ lsl r1, r0, #1
+ ldr r0, [sp, #0xc]
+ add r5, r0, r1
+_02234472:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ beq _02234494
+ ldrh r1, [r5]
+ add r0, r4, #0
+ bl FUN_020245F0
+ cmp r0, #0
+ beq _022344B6
+ ldrh r2, [r5]
+ ldr r0, [sp]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ add r3, r2, #0
+ bl FUN_02012880
+ b _022344B6
+_02234494:
+ ldrh r1, [r5]
+ ldr r0, [sp, #0x38]
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ beq _022344B6
+ add r0, r4, #0
+ bl FUN_020245F0
+ cmp r0, #0
+ beq _022344B6
+ ldrh r2, [r5]
+ ldr r0, [sp]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ add r3, r2, #0
+ bl FUN_02012880
+_022344B6:
+ ldr r0, [sp, #0x10]
+ add r5, r5, #2
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, r7
+ blt _02234472
+_022344C2:
+ ldr r0, [sp]
+ mov r2, #0x75
+ add r3, r2, #0
+ ldr r0, [r0]
+ ldr r1, [sp, #8]
+ sub r3, #0x77
+ bl FUN_02012880
+ add r0, r6, #1
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022344D8: .word 0x02237B50
+ thumb_func_end MOD80_022343DC
+
+ thumb_func_start MOD80_022344DC
+MOD80_022344DC: ; 0x022344DC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ ldr r5, [sp, #0x54]
+ add r7, r0, #0
+ add r6, r1, #0
+ add r0, r2, #0
+ mov r1, #0xf
+ str r2, [sp, #0x10]
+ str r3, [sp, #0x14]
+ bl FUN_02019620
+ ldrh r1, [r5, #6]
+ ldrh r0, [r5, #4]
+ ldr r2, [sp, #0x14]
+ add r4, r1, r0
+ ldr r0, [r5, #0x14]
+ ldr r1, [sp, #0x50]
+ str r0, [sp]
+ ldr r0, [r5, #0x1c]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x58]
+ str r4, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r3, [r5, #0x18]
+ add r0, r6, #0
+ bl MOD80_022343DC
+ ldr r3, _02234558 ; =0x02237474
+ add r5, r0, #0
+ add r2, sp, #0x18
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ 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, #0x18
+ strh r5, [r0, #0x10]
+ ldr r0, [r6]
+ mov r1, #0
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x10]
+ mov r2, #0x1f
+ mov r3, #0xb
+ str r0, [sp, #0x24]
+ bl FUN_0200CCA4
+ lsl r1, r4, #1
+ ldr r2, _0223455C ; =0x0000101C
+ add r3, r7, r1
+ ldrh r1, [r3, r2]
+ add r2, #0x14
+ ldrh r2, [r3, r2]
+ add r0, sp, #0x18
+ mov r3, #0x3e
+ bl FUN_020010A8
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02234558: .word 0x02237474
+_0223455C: .word 0x0000101C
+ thumb_func_end MOD80_022344DC
+
+ thumb_func_start MOD80_02234560
+MOD80_02234560: ; 0x02234560
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r6, r0, #0
+ str r1, [sp]
+ mov r0, #4
+ mov r1, #0x3e
+ add r7, r2, #0
+ bl FUN_02012838
+ ldr r5, _022345C8 ; =0x02237B64
+ str r0, [r6]
+ mov r4, #0
+_02234578:
+ ldr r0, [r6]
+ ldr r2, [r5]
+ ldr r3, [r5, #4]
+ add r1, r7, #0
+ bl FUN_02012880
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, #4
+ blt _02234578
+ ldr r3, _022345CC ; =0x02237474
+ add r2, sp, #4
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ mov r1, #4
+ add r0, sp, #4
+ strh r1, [r0, #0x10]
+ ldr r0, [r6]
+ mov r1, #0
+ str r0, [sp, #4]
+ ldr r0, [sp]
+ mov r2, #0x1f
+ mov r3, #0xb
+ str r0, [sp, #0x10]
+ bl FUN_0200CCA4
+ mov r1, #0
+ add r0, sp, #4
+ add r2, r1, #0
+ mov r3, #0x3e
+ bl FUN_020010A8
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022345C8: .word 0x02237B64
+_022345CC: .word 0x02237474
+ thumb_func_end MOD80_02234560
+
+ thumb_func_start MOD80_022345D0
+MOD80_022345D0: ; 0x022345D0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r6, r0, #0
+ str r1, [sp]
+ mov r0, #0xd
+ mov r1, #0x3e
+ add r7, r2, #0
+ bl FUN_02012838
+ ldr r5, _02234638 ; =0x02237494
+ str r0, [r6]
+ mov r4, #0
+_022345E8:
+ ldr r0, [r6]
+ ldr r2, [r5]
+ add r1, r7, #0
+ add r3, r4, #0
+ bl FUN_02012880
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, #0xd
+ blt _022345E8
+ ldr r3, _0223463C ; =0x02237474
+ add r2, sp, #4
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ mov r1, #0xd
+ add r0, sp, #4
+ strh r1, [r0, #0x10]
+ ldr r0, [r6]
+ mov r1, #0
+ str r0, [sp, #4]
+ ldr r0, [sp]
+ mov r2, #0x1f
+ mov r3, #0xb
+ str r0, [sp, #0x10]
+ bl FUN_0200CCA4
+ mov r1, #0
+ add r0, sp, #4
+ add r2, r1, #0
+ mov r3, #0x3e
+ bl FUN_020010A8
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02234638: .word 0x02237494
+_0223463C: .word 0x02237474
+ thumb_func_end MOD80_022345D0
+
+ thumb_func_start MOD80_02234640
+MOD80_02234640: ; 0x02234640
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #0xc
+ blt _0223464E
+ bl ErrorHandling
+_0223464E:
+ ldr r0, _02234660 ; =0x02237498
+ lsl r1, r5, #3
+ ldrsh r0, [r0, r1]
+ strb r0, [r4, #3]
+ ldr r0, _02234664 ; =0x0223749A
+ ldrsh r0, [r0, r1]
+ strb r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+ nop
+_02234660: .word 0x02237498
+_02234664: .word 0x0223749A
+ thumb_func_end MOD80_02234640
+
+ thumb_func_start MOD80_02234668
+MOD80_02234668: ; 0x02234668
+ push {r3, r4, r5, r6}
+ ldr r6, _02234694 ; =0x02237494
+ mov r5, #0
+ mov r2, #6
+ mov r3, #4
+_02234672:
+ ldrsh r4, [r6, r3]
+ cmp r0, r4
+ bne _02234684
+ ldrsh r4, [r6, r2]
+ cmp r1, r4
+ bne _02234684
+ add r0, r5, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+_02234684:
+ add r5, r5, #1
+ add r6, #8
+ cmp r5, #0xd
+ blt _02234672
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+ nop
+_02234694: .word 0x02237494
+ thumb_func_end MOD80_02234668
+
+ thumb_func_start MOD80_02234698
+MOD80_02234698: ; 0x02234698
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_02001204
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, sp, #0
+ bl FUN_0200143C
+ add r0, sp, #0
+ ldrh r1, [r4]
+ ldrh r0, [r0]
+ cmp r1, r0
+ beq _022346CA
+ ldr r0, _022346D0 ; =0x0000FFFF
+ cmp r1, r0
+ beq _022346C4
+ ldr r0, _022346D4 ; =0x000005DC
+ bl FUN_020054C8
+_022346C4:
+ add r0, sp, #0
+ ldrh r0, [r0]
+ strh r0, [r4]
+_022346CA:
+ add r0, r6, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_022346D0: .word 0x0000FFFF
+_022346D4: .word 0x000005DC
+ thumb_func_end MOD80_02234698
+
+ thumb_func_start MOD80_022346D8
+MOD80_022346D8: ; 0x022346D8
+ mov r2, #0
+ add r3, r0, #0
+ add r1, r2, #0
+_022346DE:
+ strh r1, [r3, #4]
+ strh r1, [r3, #0x18]
+ add r2, r2, #1
+ add r3, r3, #2
+ cmp r2, #0xa
+ blt _022346DE
+ strh r1, [r0]
+ strh r1, [r0, #2]
+ bx lr
+ thumb_func_end MOD80_022346D8
+
+ thumb_func_start MOD80_022346F0
+MOD80_022346F0: ; 0x022346F0
+ lsl r1, r1, #1
+ add r0, r0, r1
+ strh r2, [r0, #4]
+ strh r3, [r0, #0x18]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD80_022346F0
+
+ thumb_func_start MOD80_022346FC
+MOD80_022346FC: ; 0x022346FC
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl MOD80_022349A4
+ ldr r0, [r4, #4]
+ bl MOD80_02234780
+ add r0, r4, #0
+ bl MOD80_022348CC
+ add r0, r4, #0
+ bl MOD80_02234958
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ add r0, r4, #0
+ bl MOD80_02236D84
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ mov r0, #2
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_022346FC
+
+ thumb_func_start MOD80_02234740
+MOD80_02234740: ; 0x02234740
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222E79C
+ bl FUN_02033EEC
+ ldr r1, [r4, #0x2c]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _0223475C ; =0x02237BC8
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r4, pc}
+ nop
+_0223475C: .word 0x02237BC8
+ thumb_func_end MOD80_02234740
+
+ thumb_func_start MOD80_02234760
+MOD80_02234760: ; 0x02234760
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_022349BC
+ add r0, r4, #0
+ bl MOD80_02234994
+ ldr r0, [r4, #4]
+ bl MOD80_022348A0
+ add r0, r4, #0
+ bl MOD80_0222E7B0
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02234760
+
+ thumb_func_start MOD80_02234780
+MOD80_02234780: ; 0x02234780
+ push {r4, r5, lr}
+ sub sp, #0x9c
+ ldr r5, _02234888 ; =0x022374FC
+ 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, _0223488C ; =0x02237544
+ 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, _02234890 ; =0x02237528
+ 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, _02234894 ; =0x0223757C
+ 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
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ ldr r5, _02234898 ; =0x02237560
+ 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, _0223489C ; =0x0223750C
+ 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]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x3e
+ bl FUN_02017F18
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x3e
+ bl FUN_02017F18
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x9c
+ pop {r4, r5, pc}
+ nop
+_02234888: .word 0x022374FC
+_0223488C: .word 0x02237544
+_02234890: .word 0x02237528
+_02234894: .word 0x0223757C
+_02234898: .word 0x02237560
+_0223489C: .word 0x0223750C
+ thumb_func_end MOD80_02234780
+
+ thumb_func_start MOD80_022348A0
+MOD80_022348A0: ; 0x022348A0
+ 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, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020178A0
+ pop {r4, pc}
+ thumb_func_end MOD80_022348A0
+
+ thumb_func_start MOD80_022348CC
+MOD80_022348CC: ; 0x022348CC
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r4, [r5, #4]
+ mov r0, #0x60
+ mov r1, #0
+ str r0, [sp]
+ mov r0, #0x3e
+ str r0, [sp, #4]
+ mov r0, #0x68
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02006930
+ mov r1, #0x1a
+ mov r0, #0
+ lsl r1, r1, #4
+ mov r2, #0x3e
+ bl FUN_02002EEC
+ ldr r0, [r5]
+ ldr r0, [r0, #0x24]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x3e
+ 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, #0x3e
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x1f
+ mov r3, #0xb
+ bl FUN_0200CB00
+ ldr r0, _02234954 ; =0x00000FEC
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ bne _02234944
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #5
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #0x10
+ mov r1, #0
+ bl FUN_0201E74C
+_02234944:
+ ldr r0, [r5, #0x20]
+ cmp r0, #9
+ bne _02234950
+ add r0, r5, #0
+ bl MOD80_0222F338
+_02234950:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02234954: .word 0x00000FEC
+ thumb_func_end MOD80_022348CC
+
+ thumb_func_start MOD80_02234958
+MOD80_02234958: ; 0x02234958
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0x13
+ 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
+ ldr r1, _02234990 ; =0x00000E98
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #2
+ bl FUN_02019064
+ ldr r0, _02234990 ; =0x00000E98
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_02234990: .word 0x00000E98
+ thumb_func_end MOD80_02234958
+
+ thumb_func_start MOD80_02234994
+MOD80_02234994: ; 0x02234994
+ ldr r1, _0223499C ; =0x00000E98
+ ldr r3, _022349A0 ; =FUN_02019178
+ add r0, r0, r1
+ bx r3
+ .align 2, 0
+_0223499C: .word 0x00000E98
+_022349A0: .word FUN_02019178
+ thumb_func_end MOD80_02234994
+
+ thumb_func_start MOD80_022349A4
+MOD80_022349A4: ; 0x022349A4
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xb4
+ mov r1, #0x3e
+ bl FUN_020219F4
+ ldr r1, _022349B8 ; =0x00000B4C
+ str r0, [r4, r1]
+ pop {r4, pc}
+ nop
+_022349B8: .word 0x00000B4C
+ thumb_func_end MOD80_022349A4
+
+ thumb_func_start MOD80_022349BC
+MOD80_022349BC: ; 0x022349BC
+ ldr r1, _022349C4 ; =0x00000B4C
+ ldr r3, _022349C8 ; =FUN_02021A20
+ ldr r0, [r0, r1]
+ bx r3
+ .align 2, 0
+_022349C4: .word 0x00000B4C
+_022349C8: .word FUN_02021A20
+ thumb_func_end MOD80_022349BC
+
+ thumb_func_start MOD80_022349CC
+MOD80_022349CC: ; 0x022349CC
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r1, [r4, #0x24]
+ cmp r1, #0xc
+ bhi _02234AA4
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_022349E4: ; jump table
+ .short _02234AA4 - _022349E4 - 2 ; case 0
+ .short _02234AA4 - _022349E4 - 2 ; case 1
+ .short _02234AA4 - _022349E4 - 2 ; case 2
+ .short _02234AA4 - _022349E4 - 2 ; case 3
+ .short _02234AA4 - _022349E4 - 2 ; case 4
+ .short _02234AA4 - _022349E4 - 2 ; case 5
+ .short _02234AA4 - _022349E4 - 2 ; case 6
+ .short _022349FE - _022349E4 - 2 ; case 7
+ .short _02234A1A - _022349E4 - 2 ; case 8
+ .short _02234A36 - _022349E4 - 2 ; case 9
+ .short _02234A52 - _022349E4 - 2 ; case 10
+ .short _02234A74 - _022349E4 - 2 ; case 11
+ .short _02234A8A - _022349E4 - 2 ; case 12
+_022349FE:
+ ldr r1, _02234AB4 ; =0x00000F0F
+ mov r2, #0x18
+ str r1, [sp]
+ ldr r1, _02234AB8 ; =0x00000B34
+ mov r3, #1
+ ldr r1, [r4, r1]
+ bl MOD80_02236C70
+ add r0, r4, #0
+ mov r1, #0x25
+ mov r2, #2
+ bl MOD80_0222E6DC
+ b _02234AA8
+_02234A1A:
+ ldr r1, _02234AB4 ; =0x00000F0F
+ mov r2, #0x18
+ str r1, [sp]
+ ldr r1, _02234AB8 ; =0x00000B34
+ mov r3, #1
+ ldr r1, [r4, r1]
+ bl MOD80_02236C70
+ add r0, r4, #0
+ mov r1, #0x25
+ mov r2, #7
+ bl MOD80_0222E6DC
+ b _02234AA8
+_02234A36:
+ ldr r1, _02234AB4 ; =0x00000F0F
+ mov r2, #0x18
+ str r1, [sp]
+ ldr r1, _02234AB8 ; =0x00000B34
+ mov r3, #1
+ ldr r1, [r4, r1]
+ bl MOD80_02236C70
+ add r0, r4, #0
+ mov r1, #0x25
+ mov r2, #0xc
+ bl MOD80_0222E6DC
+ b _02234AA8
+_02234A52:
+ ldr r1, _02234AB4 ; =0x00000F0F
+ mov r2, #0x18
+ str r1, [sp]
+ ldr r1, _02234AB8 ; =0x00000B34
+ mov r3, #1
+ ldr r1, [r4, r1]
+ bl MOD80_02236C70
+ add r0, r4, #0
+ mov r1, #0x25
+ mov r2, #0x12
+ bl MOD80_0222E6DC
+ ldr r0, _02234ABC ; =0x0000100C
+ mov r1, #1
+ str r1, [r4, r0]
+ b _02234AA8
+_02234A74:
+ ldr r1, _02234AB4 ; =0x00000F0F
+ mov r2, #0x18
+ str r1, [sp]
+ ldr r1, _02234AB8 ; =0x00000B34
+ mov r3, #0
+ ldr r1, [r4, r1]
+ bl MOD80_02236C70
+ mov r0, #0x18
+ str r0, [r4, #0x2c]
+ b _02234AA8
+_02234A8A:
+ ldr r1, _02234AB4 ; =0x00000F0F
+ mov r2, #0x8a
+ str r1, [sp]
+ ldr r1, _02234AB8 ; =0x00000B34
+ mov r3, #1
+ ldr r1, [r4, r1]
+ bl MOD80_02236C70
+ mov r0, #1
+ str r0, [r4, #0x18]
+ mov r0, #0x1d
+ str r0, [r4, #0x2c]
+ b _02234AA8
+_02234AA4:
+ bl ErrorHandling
+_02234AA8:
+ add r0, r4, #0
+ bl MOD80_0222E8BC
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_02234AB4: .word 0x00000F0F
+_02234AB8: .word 0x00000B34
+_02234ABC: .word 0x0000100C
+ thumb_func_end MOD80_022349CC
+
+ thumb_func_start MOD80_02234AC0
+MOD80_02234AC0: ; 0x02234AC0
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xd4
+ bl FUN_0206AA84
+ add r0, r4, #0
+ add r0, #0xd4
+ bl MOD80_0222DBC4
+ mov r0, #3
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ mov r1, #4
+ mov r2, #6
+ bl MOD80_02235820
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_02234AC0
+
+ thumb_func_start MOD80_02234AE4
+MOD80_02234AE4: ; 0x02234AE4
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222DB98
+ cmp r0, #0
+ beq _02234B5A
+ bl MOD80_0222DBB8
+ add r1, r0, #0
+ add r1, #0xf
+ cmp r1, #0xf
+ bhi _02234B5A
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02234B08: ; jump table
+ .short _02234B4E - _02234B08 - 2 ; case 0
+ .short _02234B4E - _02234B08 - 2 ; case 1
+ .short _02234B56 - _02234B08 - 2 ; case 2
+ .short _02234B46 - _02234B08 - 2 ; case 3
+ .short _02234B3E - _02234B08 - 2 ; case 4
+ .short _02234B3E - _02234B08 - 2 ; case 5
+ .short _02234B3E - _02234B08 - 2 ; case 6
+ .short _02234B3E - _02234B08 - 2 ; case 7
+ .short _02234B3E - _02234B08 - 2 ; case 8
+ .short _02234B3E - _02234B08 - 2 ; case 9
+ .short _02234B3E - _02234B08 - 2 ; case 10
+ .short _02234B46 - _02234B08 - 2 ; case 11
+ .short _02234B5A - _02234B08 - 2 ; case 12
+ .short _02234B4E - _02234B08 - 2 ; case 13
+ .short _02234B36 - _02234B08 - 2 ; case 14
+ .short _02234B28 - _02234B08 - 2 ; case 15
+_02234B28:
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD80_02235534
+ mov r0, #0x1e
+ str r0, [r4, #0x2c]
+ b _02234B5A
+_02234B36:
+ str r0, [r4, #0x3c]
+ mov r0, #0x26
+ str r0, [r4, #0x2c]
+ b _02234B5A
+_02234B3E:
+ str r0, [r4, #0x3c]
+ mov r0, #0x27
+ str r0, [r4, #0x2c]
+ b _02234B5A
+_02234B46:
+ str r0, [r4, #0x3c]
+ mov r0, #0x27
+ str r0, [r4, #0x2c]
+ b _02234B5A
+_02234B4E:
+ str r0, [r4, #0x3c]
+ mov r0, #0x26
+ str r0, [r4, #0x2c]
+ b _02234B5A
+_02234B56:
+ bl FUN_020335E0
+_02234B5A:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02234AE4
+
+ thumb_func_start MOD80_02234B60
+MOD80_02234B60: ; 0x02234B60
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222DC14
+ mov r0, #5
+ str r0, [r4, #0x2c]
+ mov r0, #1
+ strh r0, [r4, #0x36]
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_02234B60
+
+ thumb_func_start MOD80_02234B74
+MOD80_02234B74: ; 0x02234B74
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222DB98
+ cmp r0, #0
+ beq _02234BD2
+ bl MOD80_0222DBB8
+ add r1, r0, #0
+ add r1, #0xf
+ cmp r1, #0xf
+ bhi _02234BD2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02234B98: ; jump table
+ .short _02234BC6 - _02234B98 - 2 ; case 0
+ .short _02234BC6 - _02234B98 - 2 ; case 1
+ .short _02234BCE - _02234B98 - 2 ; case 2
+ .short _02234BBE - _02234B98 - 2 ; case 3
+ .short _02234BD2 - _02234B98 - 2 ; case 4
+ .short _02234BD2 - _02234B98 - 2 ; case 5
+ .short _02234BD2 - _02234B98 - 2 ; case 6
+ .short _02234BD2 - _02234B98 - 2 ; case 7
+ .short _02234BD2 - _02234B98 - 2 ; case 8
+ .short _02234BD2 - _02234B98 - 2 ; case 9
+ .short _02234BC6 - _02234B98 - 2 ; case 10
+ .short _02234BBE - _02234B98 - 2 ; case 11
+ .short _02234BC6 - _02234B98 - 2 ; case 12
+ .short _02234BC6 - _02234B98 - 2 ; case 13
+ .short _02234BC6 - _02234B98 - 2 ; case 14
+ .short _02234BB8 - _02234B98 - 2 ; case 15
+_02234BB8:
+ mov r0, #0x21
+ str r0, [r4, #0x2c]
+ b _02234BD2
+_02234BBE:
+ str r0, [r4, #0x3c]
+ mov r0, #0x27
+ str r0, [r4, #0x2c]
+ b _02234BD2
+_02234BC6:
+ mov r0, #4
+ bl FUN_020336A0
+ b _02234BD2
+_02234BCE:
+ bl FUN_020335E0
+_02234BD2:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02234B74
+
+ thumb_func_start MOD80_02234BD8
+MOD80_02234BD8: ; 0x02234BD8
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xd4
+ bl MOD80_0222DC68
+ mov r0, #8
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ mov r1, #9
+ mov r2, #0xb
+ bl MOD80_02235820
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_02234BD8
+
+ thumb_func_start MOD80_02234BF4
+MOD80_02234BF4: ; 0x02234BF4
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl MOD80_0222DB98
+ cmp r0, #0
+ beq _02234C82
+ bl MOD80_0222DBB8
+ add r1, r0, #0
+ add r1, #0xf
+ cmp r1, #0xf
+ bhi _02234C82
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02234C18: ; jump table
+ .short _02234C76 - _02234C18 - 2 ; case 0
+ .short _02234C76 - _02234C18 - 2 ; case 1
+ .short _02234C7E - _02234C18 - 2 ; case 2
+ .short _02234C6E - _02234C18 - 2 ; case 3
+ .short _02234C82 - _02234C18 - 2 ; case 4
+ .short _02234C82 - _02234C18 - 2 ; case 5
+ .short _02234C82 - _02234C18 - 2 ; case 6
+ .short _02234C82 - _02234C18 - 2 ; case 7
+ .short _02234C82 - _02234C18 - 2 ; case 8
+ .short _02234C82 - _02234C18 - 2 ; case 9
+ .short _02234C82 - _02234C18 - 2 ; case 10
+ .short _02234C68 - _02234C18 - 2 ; case 11
+ .short _02234C62 - _02234C18 - 2 ; case 12
+ .short _02234C76 - _02234C18 - 2 ; case 13
+ .short _02234C82 - _02234C18 - 2 ; case 14
+ .short _02234C38 - _02234C18 - 2 ; case 15
+_02234C38:
+ ldr r0, _02234C88 ; =0x000001F5
+ ldrsb r5, [r4, r0]
+ cmp r5, #0
+ beq _02234C46
+ mov r0, #0x18
+ str r0, [r4, #0x2c]
+ b _02234C82
+_02234C46:
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_0202AC18
+ add r1, r4, #0
+ add r2, r0, #0
+ add r0, r4, #0
+ add r1, #0xd4
+ add r3, r5, #0
+ bl MOD80_022355F0
+ mov r0, #0x1e
+ str r0, [r4, #0x2c]
+ b _02234C82
+_02234C62:
+ mov r0, #0x26
+ str r0, [r4, #0x2c]
+ b _02234C82
+_02234C68:
+ mov r0, #0x26
+ str r0, [r4, #0x2c]
+ b _02234C82
+_02234C6E:
+ str r0, [r4, #0x3c]
+ mov r0, #0x27
+ str r0, [r4, #0x2c]
+ b _02234C82
+_02234C76:
+ str r0, [r4, #0x3c]
+ mov r0, #0x26
+ str r0, [r4, #0x2c]
+ b _02234C82
+_02234C7E:
+ bl FUN_020335E0
+_02234C82:
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+ nop
+_02234C88: .word 0x000001F5
+ thumb_func_end MOD80_02234BF4
+
+ thumb_func_start MOD80_02234C8C
+MOD80_02234C8C: ; 0x02234C8C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222DD4C
+ mov r0, #0xa
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_02234C8C
+
+ thumb_func_start MOD80_02234C9C
+MOD80_02234C9C: ; 0x02234C9C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222DB98
+ cmp r0, #0
+ beq _02234CF8
+ bl MOD80_0222DBB8
+ add r0, #0xf
+ cmp r0, #0xf
+ bhi _02234CF8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02234CBE: ; jump table
+ .short _02234CEC - _02234CBE - 2 ; case 0
+ .short _02234CEC - _02234CBE - 2 ; case 1
+ .short _02234CF4 - _02234CBE - 2 ; case 2
+ .short _02234CEC - _02234CBE - 2 ; case 3
+ .short _02234CF8 - _02234CBE - 2 ; case 4
+ .short _02234CF8 - _02234CBE - 2 ; case 5
+ .short _02234CF8 - _02234CBE - 2 ; case 6
+ .short _02234CF8 - _02234CBE - 2 ; case 7
+ .short _02234CF8 - _02234CBE - 2 ; case 8
+ .short _02234CF8 - _02234CBE - 2 ; case 9
+ .short _02234CE4 - _02234CBE - 2 ; case 10
+ .short _02234CE4 - _02234CBE - 2 ; case 11
+ .short _02234CE4 - _02234CBE - 2 ; case 12
+ .short _02234CEC - _02234CBE - 2 ; case 13
+ .short _02234CF8 - _02234CBE - 2 ; case 14
+ .short _02234CDE - _02234CBE - 2 ; case 15
+_02234CDE:
+ mov r0, #0x21
+ str r0, [r4, #0x2c]
+ b _02234CF8
+_02234CE4:
+ mov r0, #3
+ bl FUN_020336A0
+ b _02234CF8
+_02234CEC:
+ mov r0, #4
+ bl FUN_020336A0
+ b _02234CF8
+_02234CF4:
+ bl FUN_020335E0
+_02234CF8:
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_02234C9C
+
+ thumb_func_start MOD80_02234CFC
+MOD80_02234CFC: ; 0x02234CFC
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xd4
+ bl FUN_0206AA84
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r1, [r0]
+ mov r0, #0x49
+ lsl r0, r0, #2
+ mul r0, r1
+ add r1, r4, r0
+ mov r0, #3
+ lsl r0, r0, #8
+ ldr r2, _02234D38 ; =0x000009F4
+ ldr r0, [r1, r0]
+ add r1, r4, #0
+ add r1, #0xd4
+ add r2, r4, r2
+ bl MOD80_0222DE04
+ add r0, r4, #0
+ mov r1, #0xe
+ mov r2, #0x10
+ bl MOD80_02235820
+ mov r0, #0xd
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_02234D38: .word 0x000009F4
+ thumb_func_end MOD80_02234CFC
+
+ thumb_func_start MOD80_02234D3C
+MOD80_02234D3C: ; 0x02234D3C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222DB98
+ cmp r0, #0
+ beq _02234DEE
+ bl MOD80_0222DBB8
+ add r1, r0, #0
+ add r1, #0xf
+ cmp r1, #0xf
+ bhi _02234DEE
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02234D60: ; jump table
+ .short _02234DE2 - _02234D60 - 2 ; case 0
+ .short _02234DE2 - _02234D60 - 2 ; case 1
+ .short _02234DEA - _02234D60 - 2 ; case 2
+ .short _02234DDA - _02234D60 - 2 ; case 3
+ .short _02234DD2 - _02234D60 - 2 ; case 4
+ .short _02234DD2 - _02234D60 - 2 ; case 5
+ .short _02234DD2 - _02234D60 - 2 ; case 6
+ .short _02234DD2 - _02234D60 - 2 ; case 7
+ .short _02234DD2 - _02234D60 - 2 ; case 8
+ .short _02234DD2 - _02234D60 - 2 ; case 9
+ .short _02234DCA - _02234D60 - 2 ; case 10
+ .short _02234DEE - _02234D60 - 2 ; case 11
+ .short _02234DEE - _02234D60 - 2 ; case 12
+ .short _02234DE2 - _02234D60 - 2 ; case 13
+ .short _02234DEE - _02234D60 - 2 ; case 14
+ .short _02234D80 - _02234D60 - 2 ; case 15
+_02234D80:
+ mov r0, #0x1e
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD80_02235534
+ add r2, r4, #0
+ add r2, #0xb8
+ ldr r1, _02234DF4 ; =0x000009F4
+ ldrh r2, [r2]
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD80_022356AC
+ ldr r0, [r4]
+ ldr r1, _02234DF4 ; =0x000009F4
+ ldr r0, [r0, #0x18]
+ add r1, r4, r1
+ bl MOD80_02235784
+ ldr r0, [r4]
+ mov r1, #0x19
+ ldr r0, [r0, #0x28]
+ bl FUN_0202A170
+ ldr r0, [r4]
+ ldr r1, _02234DF4 ; =0x000009F4
+ ldr r0, [r0, #0x2c]
+ add r1, r4, r1
+ bl MOD80_022357A0
+ ldr r0, [r4]
+ mov r1, #0x18
+ ldr r0, [r0, #0x28]
+ bl FUN_0202A0E8
+ b _02234DEE
+_02234DCA:
+ str r0, [r4, #0x3c]
+ mov r0, #0x11
+ str r0, [r4, #0x2c]
+ b _02234DEE
+_02234DD2:
+ str r0, [r4, #0x3c]
+ mov r0, #0x27
+ str r0, [r4, #0x2c]
+ b _02234DEE
+_02234DDA:
+ str r0, [r4, #0x3c]
+ mov r0, #0x27
+ str r0, [r4, #0x2c]
+ b _02234DEE
+_02234DE2:
+ str r0, [r4, #0x3c]
+ mov r0, #0x26
+ str r0, [r4, #0x2c]
+ b _02234DEE
+_02234DEA:
+ bl FUN_020335E0
+_02234DEE:
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_02234DF4: .word 0x000009F4
+ thumb_func_end MOD80_02234D3C
+
+ thumb_func_start MOD80_02234DF8
+MOD80_02234DF8: ; 0x02234DF8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222DE68
+ mov r0, #0xf
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_02234DF8
+
+ thumb_func_start MOD80_02234E08
+MOD80_02234E08: ; 0x02234E08
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222DB98
+ cmp r0, #0
+ beq _02234E64
+ bl MOD80_0222DBB8
+ add r0, #0xf
+ cmp r0, #0xf
+ bhi _02234E64
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02234E2A: ; jump table
+ .short _02234E58 - _02234E2A - 2 ; case 0
+ .short _02234E58 - _02234E2A - 2 ; case 1
+ .short _02234E60 - _02234E2A - 2 ; case 2
+ .short _02234E58 - _02234E2A - 2 ; case 3
+ .short _02234E64 - _02234E2A - 2 ; case 4
+ .short _02234E64 - _02234E2A - 2 ; case 5
+ .short _02234E64 - _02234E2A - 2 ; case 6
+ .short _02234E64 - _02234E2A - 2 ; case 7
+ .short _02234E64 - _02234E2A - 2 ; case 8
+ .short _02234E64 - _02234E2A - 2 ; case 9
+ .short _02234E50 - _02234E2A - 2 ; case 10
+ .short _02234E64 - _02234E2A - 2 ; case 11
+ .short _02234E64 - _02234E2A - 2 ; case 12
+ .short _02234E58 - _02234E2A - 2 ; case 13
+ .short _02234E64 - _02234E2A - 2 ; case 14
+ .short _02234E4A - _02234E2A - 2 ; case 15
+_02234E4A:
+ mov r0, #0x21
+ str r0, [r4, #0x2c]
+ b _02234E64
+_02234E50:
+ mov r0, #3
+ bl FUN_020336A0
+ b _02234E64
+_02234E58:
+ mov r0, #4
+ bl FUN_020336A0
+ b _02234E64
+_02234E60:
+ bl FUN_020335E0
+_02234E64:
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_02234E08
+
+ thumb_func_start MOD80_02234E68
+MOD80_02234E68: ; 0x02234E68
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xd4
+ bl MOD80_0222DCB8
+ mov r0, #0x19
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02234E68
+
+ thumb_func_start MOD80_02234E7C
+MOD80_02234E7C: ; 0x02234E7C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl MOD80_0222DB98
+ cmp r0, #0
+ beq _02234EE2
+ bl MOD80_0222DBB8
+ add r1, r0, #0
+ add r1, #0xf
+ cmp r1, #0x10
+ bhi _02234EE2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02234EA0: ; jump table
+ .short _02234FF4 - _02234EA0 - 2 ; case 0
+ .short _02234FF4 - _02234EA0 - 2 ; case 1
+ .short _02234FFC - _02234EA0 - 2 ; case 2
+ .short _02234FF4 - _02234EA0 - 2 ; case 3
+ .short _02235006 - _02234EA0 - 2 ; case 4
+ .short _02235006 - _02234EA0 - 2 ; case 5
+ .short _02235006 - _02234EA0 - 2 ; case 6
+ .short _02235006 - _02234EA0 - 2 ; case 7
+ .short _02235006 - _02234EA0 - 2 ; case 8
+ .short _02235006 - _02234EA0 - 2 ; case 9
+ .short _02235006 - _02234EA0 - 2 ; case 10
+ .short _02234FA4 - _02234EA0 - 2 ; case 11
+ .short _02234F38 - _02234EA0 - 2 ; case 12
+ .short _02234FF4 - _02234EA0 - 2 ; case 13
+ .short _02235006 - _02234EA0 - 2 ; case 14
+ .short _02234EC2 - _02234EA0 - 2 ; case 15
+ .short _02234EC8 - _02234EA0 - 2 ; case 16
+_02234EC2:
+ mov r0, #0x1a
+ str r0, [r4, #0x2c]
+ b _02235006
+_02234EC8:
+ mov r0, #1
+ add r1, r4, #0
+ strh r0, [r4, #0x36]
+ add r0, r4, #0
+ add r1, #0xd4
+ bl MOD80_022357DC
+ cmp r0, #0
+ beq _02234F2C
+ cmp r0, #1
+ beq _02234EE4
+ cmp r0, #2
+ beq _02234F08
+_02234EE2:
+ b _02235006
+_02234EE4:
+ add r0, r4, #0
+ bl MOD80_0222E8D8
+ ldr r0, _0223500C ; =0x00000F0F
+ ldr r1, _02235010 ; =0x00000B34
+ str r0, [sp]
+ ldr r1, [r4, r1]
+ add r0, r4, #0
+ mov r2, #0x1d
+ mov r3, #1
+ bl MOD80_02236C70
+ add r0, r4, #0
+ mov r1, #0x25
+ mov r2, #0x1c
+ bl MOD80_0222E6DC
+ b _02235006
+_02234F08:
+ add r0, r4, #0
+ bl MOD80_0222E8D8
+ ldr r0, _0223500C ; =0x00000F0F
+ ldr r1, _02235010 ; =0x00000B34
+ str r0, [sp]
+ ldr r1, [r4, r1]
+ add r0, r4, #0
+ mov r2, #0x23
+ mov r3, #1
+ bl MOD80_02236C70
+ add r0, r4, #0
+ mov r1, #0x25
+ mov r2, #0x1c
+ bl MOD80_0222E6DC
+ b _02235006
+_02234F2C:
+ mov r0, #0x12
+ str r0, [r4, #0x2c]
+ ldr r0, _02235014 ; =0x0000100C
+ mov r1, #1
+ str r1, [r4, r0]
+ b _02235006
+_02234F38:
+ mov r0, #0
+ strh r0, [r4, #0x36]
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_0202ABDC
+ cmp r0, #0
+ beq _02234F9C
+ mov r0, #0x3e
+ bl FUN_020669C0
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r1, r5, #0
+ ldr r0, [r0]
+ bl FUN_0202ABEC
+ add r0, r5, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ mov r0, #0xb3
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ mov r0, #2
+ str r0, [r4, #0x28]
+ mov r0, #0x22
+ str r0, [r4, #0x2c]
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_0202AC18
+ add r2, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r3, #0
+ bl MOD80_022355F0
+ ldr r0, [r4]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_0202ABE4
+ add r0, r5, #0
+ bl FUN_02016A18
+ b _02235006
+_02234F9C:
+ add r0, r4, #0
+ bl MOD80_022350C4
+ b _02235006
+_02234FA4:
+ mov r0, #0
+ strh r0, [r4, #0x36]
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_0202ABDC
+ cmp r0, #0
+ beq _02235006
+ mov r0, #0x3e
+ bl FUN_020669C0
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r1, r5, #0
+ ldr r0, [r0]
+ bl FUN_0202ABEC
+ add r0, r5, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ mov r0, #0xb3
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ mov r0, #3
+ str r0, [r4, #0x28]
+ mov r0, #0x22
+ str r0, [r4, #0x2c]
+ ldr r0, [r4]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_0202ABE4
+ add r0, r5, #0
+ bl FUN_02016A18
+ b _02235006
+_02234FF4:
+ str r0, [r4, #0x3c]
+ mov r0, #0x26
+ str r0, [r4, #0x2c]
+ b _02235006
+_02234FFC:
+ mov r0, #3
+ mov r1, #1
+ mov r2, #0
+ bl FUN_02033F70
+_02235006:
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+ nop
+_0223500C: .word 0x00000F0F
+_02235010: .word 0x00000B34
+_02235014: .word 0x0000100C
+ thumb_func_end MOD80_02234E7C
+
+ thumb_func_start MOD80_02235018
+MOD80_02235018: ; 0x02235018
+ push {r4, lr}
+ mov r1, #1
+ mov r2, #0
+ add r4, r0, #0
+ bl MOD80_0222E7A8
+ mov r0, #0x24
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_02235018
+
+ thumb_func_start MOD80_0223502C
+MOD80_0223502C: ; 0x0223502C
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xd4
+ bl MOD80_0222DC68
+ mov r0, #0x1b
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_0223502C
+
+ thumb_func_start MOD80_02235040
+MOD80_02235040: ; 0x02235040
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222DB98
+ cmp r0, #0
+ beq _022350BE
+ bl MOD80_0222DBB8
+ add r1, r0, #0
+ add r1, #0xf
+ cmp r1, #0xf
+ bhi _022350B8
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02235064: ; jump table
+ .short _022350AC - _02235064 - 2 ; case 0
+ .short _022350AC - _02235064 - 2 ; case 1
+ .short _022350B4 - _02235064 - 2 ; case 2
+ .short _022350A4 - _02235064 - 2 ; case 3
+ .short _022350B8 - _02235064 - 2 ; case 4
+ .short _022350B8 - _02235064 - 2 ; case 5
+ .short _022350B8 - _02235064 - 2 ; case 6
+ .short _022350B8 - _02235064 - 2 ; case 7
+ .short _022350B8 - _02235064 - 2 ; case 8
+ .short _022350B8 - _02235064 - 2 ; case 9
+ .short _022350B8 - _02235064 - 2 ; case 10
+ .short _022350B8 - _02235064 - 2 ; case 11
+ .short _0223509E - _02235064 - 2 ; case 12
+ .short _022350AC - _02235064 - 2 ; case 13
+ .short _022350B8 - _02235064 - 2 ; case 14
+ .short _02235084 - _02235064 - 2 ; case 15
+_02235084:
+ add r0, r4, #0
+ bl MOD80_02235830
+ cmp r0, #0
+ beq _02235098
+ mov r0, #0x16
+ str r0, [r4, #0x2c]
+ mov r0, #0
+ strh r0, [r4, #0x36]
+ b _022350B8
+_02235098:
+ mov r0, #1
+ strh r0, [r4, #0x36]
+ b _022350B8
+_0223509E:
+ mov r0, #0
+ strh r0, [r4, #0x36]
+ b _022350B8
+_022350A4:
+ str r0, [r4, #0x3c]
+ mov r0, #0x27
+ str r0, [r4, #0x2c]
+ b _022350B8
+_022350AC:
+ str r0, [r4, #0x3c]
+ mov r0, #0x26
+ str r0, [r4, #0x2c]
+ b _022350B8
+_022350B4:
+ bl FUN_020335E0
+_022350B8:
+ add r0, r4, #0
+ bl MOD80_022350C4
+_022350BE:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02235040
+
+ thumb_func_start MOD80_022350C4
+MOD80_022350C4: ; 0x022350C4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x1c]
+ cmp r1, #1
+ beq _022350D4
+ cmp r1, #2
+ beq _022350E2
+ pop {r4, pc}
+_022350D4:
+ mov r1, #1
+ mov r2, #0
+ bl MOD80_0222E7A8
+ mov r0, #0x24
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_022350E2:
+ mov r1, #2
+ mov r2, #3
+ bl MOD80_0222E7A8
+ mov r0, #0x24
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+ thumb_func_end MOD80_022350C4
+
+ thumb_func_start MOD80_022350F0
+MOD80_022350F0: ; 0x022350F0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_0202AC18
+ ldr r3, _02235154 ; =0x000001F5
+ add r1, r4, #0
+ add r2, r0, #0
+ ldrsb r3, [r4, r3]
+ add r0, r4, #0
+ add r1, #0xd4
+ bl MOD80_022355F0
+ ldr r0, [r4]
+ add r1, r4, #0
+ ldr r0, [r0, #0x18]
+ add r1, #0xd4
+ bl MOD80_02235784
+ ldr r0, [r4]
+ mov r1, #0x19
+ ldr r0, [r0, #0x28]
+ bl FUN_0202A170
+ ldr r0, [r4]
+ add r1, r4, #0
+ ldr r0, [r0, #0x2c]
+ add r1, #0xd4
+ bl MOD80_022357A0
+ ldr r0, [r4]
+ mov r1, #0x18
+ ldr r0, [r0, #0x28]
+ bl FUN_0202A0E8
+ ldr r0, [r4]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_0202ABE4
+ mov r0, #0x1e
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ mov r1, #0x13
+ mov r2, #0xb
+ bl MOD80_02235820
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_02235154: .word 0x000001F5
+ thumb_func_end MOD80_022350F0
+
+ thumb_func_start MOD80_02235158
+MOD80_02235158: ; 0x02235158
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222DD08
+ mov r0, #0x14
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_02235158
+
+ thumb_func_start MOD80_02235168
+MOD80_02235168: ; 0x02235168
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222DB98
+ cmp r0, #0
+ beq _022351C8
+ bl MOD80_0222DBB8
+ add r1, r0, #0
+ add r1, #0xf
+ cmp r1, #0xf
+ bhi _022351C8
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0223518C: ; jump table
+ .short _022351BC - _0223518C - 2 ; case 0
+ .short _022351BC - _0223518C - 2 ; case 1
+ .short _022351C4 - _0223518C - 2 ; case 2
+ .short _022351BA - _0223518C - 2 ; case 3
+ .short _022351C8 - _0223518C - 2 ; case 4
+ .short _022351C8 - _0223518C - 2 ; case 5
+ .short _022351C8 - _0223518C - 2 ; case 6
+ .short _022351C8 - _0223518C - 2 ; case 7
+ .short _022351C8 - _0223518C - 2 ; case 8
+ .short _022351C8 - _0223518C - 2 ; case 9
+ .short _022351C8 - _0223518C - 2 ; case 10
+ .short _022351BA - _0223518C - 2 ; case 11
+ .short _022351B2 - _0223518C - 2 ; case 12
+ .short _022351BC - _0223518C - 2 ; case 13
+ .short _022351C8 - _0223518C - 2 ; case 14
+ .short _022351AC - _0223518C - 2 ; case 15
+_022351AC:
+ mov r0, #0x21
+ str r0, [r4, #0x2c]
+ b _022351C8
+_022351B2:
+ mov r0, #3
+ bl FUN_020336A0
+ b _022351C8
+_022351BA:
+ str r0, [r4, #0x3c]
+_022351BC:
+ mov r0, #4
+ bl FUN_020336A0
+ b _022351C8
+_022351C4:
+ bl FUN_020335E0
+_022351C8:
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_02235168
+
+ thumb_func_start MOD80_022351CC
+MOD80_022351CC: ; 0x022351CC
+ mov r0, #3
+ bx lr
+ thumb_func_end MOD80_022351CC
+
+ thumb_func_start MOD80_022351D0
+MOD80_022351D0: ; 0x022351D0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #1
+ strh r1, [r4, #0x36]
+ mov r1, #9
+ mov r2, #7
+ bl MOD80_0222E7A8
+ mov r0, #0x24
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_022351D0
+
+ thumb_func_start MOD80_022351E8
+MOD80_022351E8: ; 0x022351E8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #0
+ strh r1, [r4, #0x36]
+ mov r1, #9
+ mov r2, #8
+ bl MOD80_0222E7A8
+ mov r0, #0x24
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_022351E8
+
+ thumb_func_start MOD80_02235200
+MOD80_02235200: ; 0x02235200
+ push {r4, lr}
+ mov r1, #9
+ add r2, r1, #0
+ add r4, r0, #0
+ bl MOD80_0222E7A8
+ mov r0, #0x24
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_02235200
+
+ thumb_func_start MOD80_02235214
+MOD80_02235214: ; 0x02235214
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #0
+ strh r1, [r4, #0x36]
+ mov r1, #9
+ mov r2, #0xa
+ bl MOD80_0222E7A8
+ mov r0, #0x1e
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_02235214
+
+ thumb_func_start MOD80_0223522C
+MOD80_0223522C: ; 0x0223522C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222DD4C
+ mov r0, #0x17
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_0223522C
+
+ thumb_func_start MOD80_0223523C
+MOD80_0223523C: ; 0x0223523C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222DB98
+ cmp r0, #0
+ beq _022352A6
+ bl MOD80_0222DBB8
+ add r0, #0xf
+ cmp r0, #0xf
+ bhi _022352A6
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223525E: ; jump table
+ .short _0223529A - _0223525E - 2 ; case 0
+ .short _0223529A - _0223525E - 2 ; case 1
+ .short _022352A2 - _0223525E - 2 ; case 2
+ .short _0223529A - _0223525E - 2 ; case 3
+ .short _022352A6 - _0223525E - 2 ; case 4
+ .short _022352A6 - _0223525E - 2 ; case 5
+ .short _022352A6 - _0223525E - 2 ; case 6
+ .short _022352A6 - _0223525E - 2 ; case 7
+ .short _022352A6 - _0223525E - 2 ; case 8
+ .short _022352A6 - _0223525E - 2 ; case 9
+ .short _02235292 - _0223525E - 2 ; case 10
+ .short _0223528C - _0223525E - 2 ; case 11
+ .short _02235286 - _0223525E - 2 ; case 12
+ .short _0223529A - _0223525E - 2 ; case 13
+ .short _022352A6 - _0223525E - 2 ; case 14
+ .short _0223527E - _0223525E - 2 ; case 15
+_0223527E:
+ add r0, r4, #0
+ bl MOD80_022350C4
+ b _022352A6
+_02235286:
+ add r0, r4, #0
+ bl MOD80_022350C4
+_0223528C:
+ add r0, r4, #0
+ bl MOD80_022350C4
+_02235292:
+ mov r0, #3
+ bl FUN_020336A0
+ b _022352A6
+_0223529A:
+ mov r0, #4
+ bl FUN_020336A0
+ b _022352A6
+_022352A2:
+ bl FUN_020335E0
+_022352A6:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_0223523C
+
+ thumb_func_start MOD80_022352AC
+MOD80_022352AC: ; 0x022352AC
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r1, _022352E8 ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ ldr r1, _022352EC ; =0x00000B34
+ mov r2, #0x89
+ ldr r1, [r4, r1]
+ mov r3, #1
+ bl MOD80_02236C70
+ add r0, r4, #0
+ mov r1, #0x25
+ mov r2, #0x24
+ bl MOD80_0222E6DC
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD80_0222E7A8
+ add r0, r4, #0
+ bl MOD80_0222E8D8
+ add r0, r4, #0
+ bl MOD80_02235C40
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_022352E8: .word 0x00000F0F
+_022352EC: .word 0x00000B34
+ thumb_func_end MOD80_022352AC
+
+ thumb_func_start MOD80_022352F0
+MOD80_022352F0: ; 0x022352F0
+ push {r3, lr}
+ ldr r1, [r0, #0x3c]
+ mov r2, #0x90
+ add r1, #0xf
+ cmp r1, #0xe
+ bhi _02235330
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02235308: ; jump table
+ .short _02235330 - _02235308 - 2 ; case 0
+ .short _0223532E - _02235308 - 2 ; case 1
+ .short _02235330 - _02235308 - 2 ; case 2
+ .short _02235330 - _02235308 - 2 ; case 3
+ .short _02235326 - _02235308 - 2 ; case 4
+ .short _02235326 - _02235308 - 2 ; case 5
+ .short _02235326 - _02235308 - 2 ; case 6
+ .short _02235326 - _02235308 - 2 ; case 7
+ .short _02235326 - _02235308 - 2 ; case 8
+ .short _02235326 - _02235308 - 2 ; case 9
+ .short _02235330 - _02235308 - 2 ; case 10
+ .short _02235330 - _02235308 - 2 ; case 11
+ .short _02235330 - _02235308 - 2 ; case 12
+ .short _0223532E - _02235308 - 2 ; case 13
+ .short _0223532A - _02235308 - 2 ; case 14
+_02235326:
+ mov r2, #0x1a
+ b _02235330
+_0223532A:
+ mov r2, #0x8d
+ b _02235330
+_0223532E:
+ mov r2, #0x92
+_02235330:
+ ldr r1, _02235340 ; =0x00000F0F
+ mov r3, #1
+ str r1, [sp]
+ ldr r1, _02235344 ; =0x00000B34
+ ldr r1, [r0, r1]
+ bl MOD80_02236C70
+ pop {r3, pc}
+ .align 2, 0
+_02235340: .word 0x00000F0F
+_02235344: .word 0x00000B34
+ thumb_func_end MOD80_022352F0
+
+ thumb_func_start MOD80_02235348
+MOD80_02235348: ; 0x02235348
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_022352F0
+ add r0, r4, #0
+ mov r1, #0x25
+ mov r2, #0x24
+ bl MOD80_0222E6DC
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD80_0222E7A8
+ add r0, r4, #0
+ bl MOD80_0222E8D8
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02235348
+
+ thumb_func_start MOD80_02235370
+MOD80_02235370: ; 0x02235370
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_022352F0
+ add r0, r4, #0
+ mov r1, #0x25
+ mov r2, #0x24
+ bl MOD80_0222E6DC
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD80_0222E7A8
+ add r0, r4, #0
+ bl MOD80_0222E8D8
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02235370
+
+ thumb_func_start MOD80_02235398
+MOD80_02235398: ; 0x02235398
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #0x25
+ mov r2, #0x1e
+ bl MOD80_0222E6DC
+ add r0, r4, #0
+ mov r1, #0x21
+ mov r2, #0x24
+ bl MOD80_02235820
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02235398
+
+ thumb_func_start MOD80_022353B4
+MOD80_022353B4: ; 0x022353B4
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl FUN_02022830
+ ldr r0, [r4]
+ mov r1, #2
+ ldr r0, [r0, #0x20]
+ bl FUN_02022840
+ mov r0, #0x1f
+ str r0, [r4, #0x2c]
+ bl FUN_0201B9EC
+ ldr r1, _022353EC ; =0x00000445
+ bl _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #0x3c
+ blo _022353E0
+ bl ErrorHandling
+_022353E0:
+ ldr r0, _022353F0 ; =0x00000FDC
+ add r1, r5, #2
+ str r1, [r4, r0]
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+ nop
+_022353EC: .word 0x00000445
+_022353F0: .word 0x00000FDC
+ thumb_func_end MOD80_022353B4
+
+ thumb_func_start MOD80_022353F4
+MOD80_022353F4: ; 0x022353F4
+ ldr r1, _0223540C ; =0x00000FDC
+ ldr r2, [r0, r1]
+ sub r2, r2, #1
+ str r2, [r0, r1]
+ ldr r1, [r0, r1]
+ cmp r1, #0
+ bne _02235406
+ mov r1, #0x20
+ str r1, [r0, #0x2c]
+_02235406:
+ mov r0, #3
+ bx lr
+ nop
+_0223540C: .word 0x00000FDC
+ thumb_func_end MOD80_022353F4
+
+ thumb_func_start MOD80_02235410
+MOD80_02235410: ; 0x02235410
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r0, [r0, #0x20]
+ bl FUN_02022854
+ cmp r0, #1
+ bne _02235426
+ ldr r0, _0223542C ; =0x00000FE4
+ ldrh r0, [r4, r0]
+ str r0, [r4, #0x2c]
+_02235426:
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_0223542C: .word 0x00000FE4
+ thumb_func_end MOD80_02235410
+
+ thumb_func_start MOD80_02235430
+MOD80_02235430: ; 0x02235430
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r0, [r0, #0x20]
+ bl FUN_02022854
+ cmp r0, #2
+ bne _0223544C
+ ldr r0, _02235450 ; =0x00000FE6
+ ldrh r0, [r4, r0]
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ bl MOD80_0222E8D8
+_0223544C:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_02235450: .word 0x00000FE6
+ thumb_func_end MOD80_02235430
+
+ thumb_func_start MOD80_02235454
+MOD80_02235454: ; 0x02235454
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02022830
+ ldr r0, [r4]
+ mov r1, #2
+ ldr r0, [r0, #0x20]
+ bl FUN_02022840
+ mov r0, #0x23
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02235454
+
+ thumb_func_start MOD80_02235470
+MOD80_02235470: ; 0x02235470
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r0, [r0, #0x20]
+ bl FUN_02022854
+ cmp r0, #2
+ bne _022354AE
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD80_0222E7A8
+ add r0, r4, #0
+ bl MOD80_0222E8D8
+ ldr r0, _022354B4 ; =0x00000F0F
+ ldr r1, _022354B8 ; =0x00000B34
+ str r0, [sp]
+ ldr r1, [r4, r1]
+ ldr r2, [r4, #0x28]
+ add r0, r4, #0
+ mov r3, #1
+ bl MOD80_02236C70
+ add r0, r4, #0
+ mov r1, #0x25
+ mov r2, #0x1c
+ bl MOD80_0222E6DC
+_022354AE:
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_022354B4: .word 0x00000F0F
+_022354B8: .word 0x00000B34
+ thumb_func_end MOD80_02235470
+
+ thumb_func_start MOD80_022354BC
+MOD80_022354BC: ; 0x022354BC
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl MOD80_0222E8D8
+ bl FUN_02033ED0
+ ldr r0, _02235510 ; =0x0000100C
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _022354EC
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ b _02235504
+_022354EC:
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+_02235504:
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ mov r0, #4
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_02235510: .word 0x0000100C
+ thumb_func_end MOD80_022354BC
+
+ thumb_func_start MOD80_02235514
+MOD80_02235514: ; 0x02235514
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x2e
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0223552E
+ ldr r0, [r4, #0x30]
+ str r0, [r4, #0x2c]
+_0223552E:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02235514
+
+ thumb_func_start MOD80_02235534
+MOD80_02235534: ; 0x02235534
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, #0xb8
+ ldrh r0, [r0]
+ add r6, r1, #0
+ cmp r0, #0x12
+ beq _02235590
+ mov r0, #0x3e
+ bl FUN_020669C0
+ add r1, r5, #0
+ add r2, r5, #0
+ add r4, r0, #0
+ ldr r0, [r5]
+ add r1, #0xb8
+ add r2, #0xba
+ ldrh r1, [r1]
+ ldrh r2, [r2]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206B5E4
+ add r1, r4, #0
+ bl FUN_02069A64
+ add r2, r5, #0
+ ldr r0, [r5]
+ add r2, #0xb8
+ ldrh r2, [r2]
+ ldr r0, [r0]
+ add r1, r4, #0
+ bl FUN_0202ABF8
+ add r1, r5, #0
+ add r2, r5, #0
+ ldr r0, [r5]
+ add r1, #0xb8
+ add r2, #0xba
+ ldrh r1, [r1]
+ ldrh r2, [r2]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206B2FC
+ add r0, r4, #0
+ bl FUN_02016A18
+ b _022355DC
+_02235590:
+ add r1, r5, #0
+ ldr r0, [r5]
+ add r1, #0xba
+ ldrh r1, [r1]
+ ldr r0, [r0, #8]
+ bl FUN_0206B9B0
+ add r4, r0, #0
+ bl FUN_0206AA84
+ add r2, r5, #0
+ ldr r0, [r5]
+ add r2, #0xb8
+ ldrh r2, [r2]
+ ldr r0, [r0]
+ add r1, r4, #0
+ bl FUN_0202ABF8
+ add r1, r5, #0
+ ldr r0, [r5]
+ add r1, #0xba
+ ldrh r1, [r1]
+ ldr r0, [r0, #8]
+ bl FUN_0206B938
+ ldr r0, [r5]
+ ldr r1, _022355EC ; =0x000001B9
+ ldr r0, [r0, #8]
+ bl FUN_0206BAE4
+ cmp r0, #0
+ bne _022355DC
+ ldr r0, [r5]
+ ldr r0, [r0, #0x20]
+ bl FUN_02029EF8
+ bl FUN_02029F08
+_022355DC:
+ cmp r6, #0
+ beq _022355EA
+ ldr r0, [r5]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_0202ABE4
+_022355EA:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022355EC: .word 0x000001B9
+ thumb_func_end MOD80_02235534
+
+ thumb_func_start MOD80_022355F0
+MOD80_022355F0: ; 0x022355F0
+ push {r0, r1, r2, r3}
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #6
+ mov r2, #0
+ add r6, r3, #0
+ bl FUN_020671BC
+ ldr r0, [r5]
+ add r1, r4, #0
+ ldr r0, [r0, #0x20]
+ bl FUN_0202C144
+ mov r0, #0x12
+ str r0, [sp, #0x20]
+ ldr r0, [r5]
+ ldr r0, [r0, #8]
+ bl FUN_0206B9AC
+ cmp r0, #6
+ bne _02235624
+ mov r0, #0
+ str r0, [sp, #0x20]
+_02235624:
+ cmp r6, #0
+ beq _02235640
+ mov r1, #0x46
+ add r0, sp, #0
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #9
+ add r2, sp, #0
+ bl FUN_02067830
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl MOD80_02235754
+_02235640:
+ ldr r0, [sp, #0x20]
+ cmp r0, #0x12
+ bne _02235664
+ ldr r0, [r5]
+ add r1, r4, #0
+ ldr r0, [r0, #8]
+ bl FUN_0206B900
+ ldr r0, [r5]
+ ldr r0, [r0, #8]
+ bl FUN_0206B9AC
+ add r1, r5, #0
+ mov r2, #0x12
+ add r1, #0xcc
+ str r2, [r1]
+ sub r1, r0, #1
+ b _02235690
+_02235664:
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ add r1, sp, #0x20
+ ldr r0, [r0, #0xc]
+ add r2, sp, #4
+ bl FUN_0206B384
+ add r0, r4, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r5]
+ ldr r1, [sp, #0x20]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206B244
+ add r0, r5, #0
+ ldr r1, [sp, #0x20]
+ add r0, #0xcc
+ str r1, [r0]
+ ldr r1, [sp, #4]
+_02235690:
+ add r0, r5, #0
+ add r0, #0xd0
+ str r1, [r0]
+ ldr r0, [r5]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_0202ABE4
+ add sp, #8
+ pop {r4, r5, r6}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ .align 2, 0
+ thumb_func_end MOD80_022355F0
+
+ thumb_func_start MOD80_022356AC
+MOD80_022356AC: ; 0x022356AC
+ push {r0, r1, r2, r3}
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ ldr r0, [r0, #0x20]
+ bl FUN_0202C144
+ mov r0, #0x12
+ str r0, [sp, #0x20]
+ ldr r0, [r5]
+ ldr r0, [r0, #8]
+ bl FUN_0206B9AC
+ cmp r0, #6
+ bne _022356D2
+ mov r0, #0
+ str r0, [sp, #0x20]
+_022356D2:
+ mov r1, #0x46
+ add r0, sp, #0
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #9
+ add r2, sp, #0
+ bl FUN_02067830
+ ldr r0, [sp, #0x20]
+ cmp r0, #0x12
+ bne _02235706
+ ldr r0, [r5]
+ add r1, r4, #0
+ ldr r0, [r0, #8]
+ bl FUN_0206B900
+ ldr r0, [r5]
+ ldr r0, [r0, #8]
+ bl FUN_0206B9AC
+ add r1, r5, #0
+ mov r2, #0x12
+ add r1, #0xcc
+ str r2, [r1]
+ sub r1, r0, #1
+ b _02235732
+_02235706:
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ add r1, sp, #0x20
+ ldr r0, [r0, #0xc]
+ add r2, sp, #4
+ bl FUN_0206B384
+ add r0, r4, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r5]
+ ldr r1, [sp, #0x20]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206B244
+ add r0, r5, #0
+ ldr r1, [sp, #0x20]
+ add r0, #0xcc
+ str r1, [r0]
+ ldr r1, [sp, #4]
+_02235732:
+ add r0, r5, #0
+ add r0, #0xd0
+ str r1, [r0]
+ ldr r0, [r5]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_0202ABE4
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl MOD80_02235754
+ add sp, #8
+ pop {r3, r4, r5}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ thumb_func_end MOD80_022356AC
+
+ thumb_func_start MOD80_02235754
+MOD80_02235754: ; 0x02235754
+ push {r3, r4, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ add r0, sp, #0xc
+ add r1, sp, #0
+ bl MOD04_021DE1F8
+ ldr r1, [sp, #0x14]
+ ldr r3, [sp, #0xc]
+ add r0, r4, #0
+ lsl r4, r3, #0x18
+ ldr r3, [sp, #0x10]
+ lsl r1, r1, #0x18
+ lsl r3, r3, #0x18
+ lsr r3, r3, #8
+ ldr r2, [sp, #0x18]
+ lsr r1, r1, #0x10
+ orr r3, r4
+ orr r1, r3
+ orr r1, r2
+ bl FUN_0202AC10
+ add sp, #0x1c
+ pop {r3, r4, pc}
+ thumb_func_end MOD80_02235754
+
+ thumb_func_start MOD80_02235784
+MOD80_02235784: ; 0x02235784
+ push {r4, lr}
+ ldr r3, _0223579C ; =0x0000011E
+ add r4, r1, #0
+ add r2, r3, #1
+ ldrb r1, [r4, r3]
+ add r3, r3, #5
+ ldrb r2, [r4, r2]
+ ldrb r3, [r4, r3]
+ bl FUN_020337C8
+ pop {r4, pc}
+ nop
+_0223579C: .word 0x0000011E
+ thumb_func_end MOD80_02235784
+
+ thumb_func_start MOD80_022357A0
+MOD80_022357A0: ; 0x022357A0
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #0x74
+ add r2, sp, #4
+ bl FUN_020671BC
+ add r0, r4, #0
+ bl FUN_020689E0
+ add r3, r0, #0
+ mov r0, #0x3e
+ str r0, [sp]
+ add r0, #0xce
+ add r0, r4, r0
+ add r4, #0xf6
+ ldrb r1, [r4]
+ add r2, sp, #4
+ bl FUN_0202952C
+ add r1, r0, #0
+ add r0, r5, #0
+ mov r2, #4
+ bl FUN_02028AD4
+ add sp, #0x1c
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD80_022357A0
+
+ thumb_func_start MOD80_022357DC
+MOD80_022357DC: ; 0x022357DC
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r1, #0
+ bl MOD80_022331F8
+ cmp r0, #0
+ beq _022357FA
+ ldr r0, [r4]
+ ldr r0, [r0, #8]
+ bl FUN_0206B9AC
+ cmp r0, #6
+ bne _022357FA
+ mov r0, #2
+ pop {r4, pc}
+_022357FA:
+ ldr r0, _0223581C ; =0x00001008
+ ldrh r1, [r4, r0]
+ mov r0, #0x87
+ lsl r0, r0, #2
+ cmp r1, r0
+ bne _02235816
+ ldr r0, [r4]
+ ldr r0, [r0, #8]
+ bl FUN_0206B9AC
+ cmp r0, #6
+ bne _02235816
+ mov r0, #1
+ pop {r4, pc}
+_02235816:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_0223581C: .word 0x00001008
+ thumb_func_end MOD80_022357DC
+
+ thumb_func_start MOD80_02235820
+MOD80_02235820: ; 0x02235820
+ ldr r3, _0223582C ; =0x00000FE4
+ strh r1, [r0, r3]
+ add r1, r3, #2
+ strh r2, [r0, r1]
+ bx lr
+ nop
+_0223582C: .word 0x00000FE4
+ thumb_func_end MOD80_02235820
+
+ thumb_func_start MOD80_02235830
+MOD80_02235830: ; 0x02235830
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_0202ABDC
+ cmp r0, #0
+ bne _0223584A
+ ldrh r0, [r4, #0x36]
+ cmp r0, #0
+ beq _0223584A
+ mov r0, #1
+ pop {r4, pc}
+_0223584A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02235830
+
+ thumb_func_start MOD80_02235850
+MOD80_02235850: ; 0x02235850
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD80_02235C88
+ ldr r2, _022358F0 ; =0x00000D14
+ add r0, sp, #0
+ add r1, r5, #0
+ add r2, r5, r2
+ mov r3, #2
+ bl MOD80_0222E5E8
+ mov r0, #2
+ str r0, [sp, #0x28]
+ lsl r0, r0, #0x12
+ str r0, [sp, #8]
+ ldr r0, _022358F4 ; =0x00182000
+ str r0, [sp, #0xc]
+ add r0, sp, #0
+ bl FUN_0201FE94
+ mov r1, #0xe7
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0xe7
+ lsl r0, r0, #4
+ mov r1, #7
+ mul r1, r4
+ ldr r0, [r5, r0]
+ add r1, r1, #3
+ bl FUN_02020130
+ mov r0, #0xe7
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r4, _022358F8 ; =0x022375A6
+ mov r7, #0
+ mov r6, #0xe
+_022358AC:
+ add r0, sp, #0
+ bl FUN_0201FE94
+ ldr r1, _022358FC ; =0x00000E74
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, _022358FC ; =0x00000E74
+ add r1, r6, #0
+ ldr r0, [r5, r0]
+ bl FUN_02020130
+ ldr r0, _022358FC ; =0x00000E74
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ ldr r0, _022358FC ; =0x00000E74
+ ldrh r1, [r4]
+ ldrh r2, [r4, #2]
+ ldr r0, [r5, r0]
+ bl MOD80_02235AFC
+ add r7, r7, #1
+ add r5, r5, #4
+ add r6, r6, #4
+ add r4, r4, #4
+ cmp r7, #7
+ blt _022358AC
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022358F0: .word 0x00000D14
+_022358F4: .word 0x00182000
+_022358F8: .word 0x022375A6
+_022358FC: .word 0x00000E74
+ thumb_func_end MOD80_02235850
+
+ thumb_func_start MOD80_02235900
+MOD80_02235900: ; 0x02235900
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD80_02235850
+ ldr r0, _0223593C ; =MOD80_02235964
+ mov r1, #0x10
+ mov r2, #5
+ mov r3, #0x3e
+ bl FUN_020061E8
+ ldr r1, _02235940 ; =0x00000FE8
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ bl FUN_0201B6C8
+ mov r1, #0
+ add r2, r1, #0
+ str r1, [r0]
+ sub r2, #0x28
+ str r2, [r0, #4]
+ str r4, [r0, #8]
+ str r5, [r0, #0xc]
+ bl MOD80_02235948
+ ldr r0, _02235944 ; =0x0000062F
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+ nop
+_0223593C: .word MOD80_02235964
+_02235940: .word 0x00000FE8
+_02235944: .word 0x0000062F
+ thumb_func_end MOD80_02235900
+
+ thumb_func_start MOD80_02235948
+MOD80_02235948: ; 0x02235948
+ add r3, r0, #0
+ ldr r2, [r3, #0xc]
+ mov r0, #0xe7
+ lsl r0, r0, #4
+ ldr r0, [r2, r0]
+ ldr r3, [r3, #8]
+ mov r2, #7
+ mul r2, r3
+ ldr r3, _02235960 ; =FUN_02020130
+ add r1, r1, r2
+ bx r3
+ nop
+_02235960: .word FUN_02020130
+ thumb_func_end MOD80_02235948
+
+ thumb_func_start MOD80_02235964
+MOD80_02235964: ; 0x02235964
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r5, [r4, #0xc]
+ cmp r0, #3
+ bhi _02235A06
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223597E: ; jump table
+ .short _02235986 - _0223597E - 2 ; case 0
+ .short _022359AE - _0223597E - 2 ; case 1
+ .short _022359CA - _0223597E - 2 ; case 2
+ .short _022359F2 - _0223597E - 2 ; case 3
+_02235986:
+ ldr r0, [r4, #4]
+ cmp r0, #0xa0
+ ble _0223599A
+ mov r0, #0xa0
+ str r0, [r4, #4]
+ mov r1, #1
+ add r0, r4, #0
+ str r1, [r4]
+ bl MOD80_02235948
+_0223599A:
+ ldr r0, [r4, #4]
+ mov r1, #0x80
+ add r2, r0, #5
+ mov r0, #0xe7
+ str r2, [r4, #4]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl MOD80_02235AFC
+ pop {r4, r5, r6, pc}
+_022359AE:
+ mov r0, #0xe7
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02020388
+ cmp r0, #0
+ bne _02235A06
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD80_02235948
+ mov r0, #2
+ str r0, [r4]
+ pop {r4, r5, r6, pc}
+_022359CA:
+ ldr r0, [r4, #4]
+ cmp r0, #0x82
+ bge _022359DE
+ mov r0, #0x82
+ str r0, [r4, #4]
+ mov r1, #3
+ add r0, r4, #0
+ str r1, [r4]
+ bl MOD80_02235948
+_022359DE:
+ ldr r0, [r4, #4]
+ mov r1, #0x80
+ sub r2, r0, #2
+ mov r0, #0xe7
+ str r2, [r4, #4]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl MOD80_02235AFC
+ pop {r4, r5, r6, pc}
+_022359F2:
+ ldr r0, _02235A08 ; =0x0000060D
+ bl FUN_020054C8
+ ldr r1, [r4, #0xc]
+ ldr r0, _02235A0C ; =0x00000FEC
+ mov r2, #1
+ strh r2, [r1, r0]
+ add r0, r6, #0
+ bl FUN_0200621C
+_02235A06:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02235A08: .word 0x0000060D
+_02235A0C: .word 0x00000FEC
+ thumb_func_end MOD80_02235964
+
+ thumb_func_start MOD80_02235A10
+MOD80_02235A10: ; 0x02235A10
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r0, _02235A48 ; =MOD80_02235A54
+ mov r1, #0x10
+ mov r2, #5
+ mov r3, #0x3e
+ bl FUN_020061E8
+ ldr r1, _02235A4C ; =0x00000FE8
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ bl FUN_0201B6C8
+ mov r1, #0
+ str r1, [r0]
+ mov r1, #0x82
+ str r1, [r0, #4]
+ str r4, [r0, #8]
+ mov r1, #5
+ str r5, [r0, #0xc]
+ bl MOD80_02235948
+ ldr r0, _02235A50 ; =0x0000060E
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+ nop
+_02235A48: .word MOD80_02235A54
+_02235A4C: .word 0x00000FE8
+_02235A50: .word 0x0000060E
+ thumb_func_end MOD80_02235A10
+
+ thumb_func_start MOD80_02235A54
+MOD80_02235A54: ; 0x02235A54
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ ldr r5, [r4, #0xc]
+ cmp r1, #3
+ bhi _02235AF4
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02235A6C: ; jump table
+ .short _02235A74 - _02235A6C - 2 ; case 0
+ .short _02235A9E - _02235A6C - 2 ; case 1
+ .short _02235AC2 - _02235A6C - 2 ; case 2
+ .short _02235AEA - _02235A6C - 2 ; case 3
+_02235A74:
+ ldr r0, [r4, #4]
+ cmp r0, #0xa0
+ ble _02235A8A
+ mov r0, #0xa0
+ str r0, [r4, #4]
+ mov r0, #1
+ str r0, [r4]
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD80_02235948
+_02235A8A:
+ ldr r0, [r4, #4]
+ mov r1, #0x80
+ add r2, r0, #2
+ mov r0, #0xe7
+ str r2, [r4, #4]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl MOD80_02235AFC
+ pop {r3, r4, r5, pc}
+_02235A9E:
+ mov r0, #0xe7
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02020388
+ cmp r0, #0
+ bne _02235AF4
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD80_02235948
+ mov r0, #2
+ str r0, [r4]
+ mov r0, #0x63
+ lsl r0, r0, #4
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+_02235AC2:
+ mov r0, #0x13
+ ldr r1, [r4, #4]
+ mvn r0, r0
+ cmp r1, r0
+ bge _02235AD6
+ mov r1, #3
+ add r0, r4, #0
+ str r1, [r4]
+ bl MOD80_02235948
+_02235AD6:
+ ldr r0, [r4, #4]
+ mov r1, #0x80
+ sub r2, r0, #5
+ mov r0, #0xe7
+ str r2, [r4, #4]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl MOD80_02235AFC
+ pop {r3, r4, r5, pc}
+_02235AEA:
+ ldr r1, _02235AF8 ; =0x00000FEC
+ mov r2, #1
+ strh r2, [r5, r1]
+ bl FUN_0200621C
+_02235AF4:
+ pop {r3, r4, r5, pc}
+ nop
+_02235AF8: .word 0x00000FEC
+ thumb_func_end MOD80_02235A54
+
+ thumb_func_start MOD80_02235AFC
+MOD80_02235AFC: ; 0x02235AFC
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r5, r2, #0
+ cmp r1, #0
+ ble _02235B1A
+ lsl r0, r1, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _02235B28
+_02235B1A:
+ lsl r0, r1, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_02235B28:
+ bl _ffix
+ sub r5, #8
+ str r0, [sp]
+ cmp r5, #0
+ ble _02235B46
+ lsl r0, r5, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _02235B54
+_02235B46:
+ lsl r0, r5, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_02235B54:
+ bl _ffix
+ mov r1, #1
+ lsl r1, r1, #0x14
+ add r0, r0, r1
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, sp, #0
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r4, r5, pc}
+ thumb_func_end MOD80_02235AFC
+
+ thumb_func_start MOD80_02235B70
+MOD80_02235B70: ; 0x02235B70
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02235B8C ; =0x022375C2
+ bl FUN_02020988
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02235B86
+ cmp r0, r4
+ blt _02235B8A
+_02235B86:
+ mov r0, #0
+ mvn r0, r0
+_02235B8A:
+ pop {r4, pc}
+ .align 2, 0
+_02235B8C: .word 0x022375C2
+ thumb_func_end MOD80_02235B70
+
+ thumb_func_start MOD80_02235B90
+MOD80_02235B90: ; 0x02235B90
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ add r0, r1, #0
+ beq _02235BAA
+ add r0, r2, #0
+ cmp r0, #1
+ bne _02235BAA
+ ldr r0, _02235C24 ; =0x0000064F
+ bl FUN_020054C8
+_02235BAA:
+ ldr r4, [sp, #4]
+ mov r0, #0xe
+ mov r6, #0
+ str r0, [sp, #0x10]
+ add r5, r4, #0
+ mov r7, #0x11
+_02235BB6:
+ ldr r0, [sp, #8]
+ cmp r6, r0
+ bge _02235C00
+ ldr r0, _02235C28 ; =0x000002EE
+ ldr r1, [sp, #4]
+ ldrb r0, [r4, r0]
+ mov r3, #0xc6
+ add r2, r1, #0
+ str r0, [sp]
+ ldr r0, _02235C2C ; =0x00000FF4
+ lsl r3, r3, #2
+ ldr r0, [r1, r0]
+ ldr r1, _02235C30 ; =0x00000FFC
+ ldrb r3, [r4, r3]
+ ldr r1, [r2, r1]
+ add r2, r6, #0
+ bl MOD80_02235CD0
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ ldr r0, _02235C34 ; =0x00000E74
+ beq _02235BEC
+ ldr r0, [r5, r0]
+ ldr r1, [sp, #0x10]
+ bl FUN_02020130
+ b _02235BF4
+_02235BEC:
+ ldr r0, [r5, r0]
+ add r1, r7, #0
+ bl FUN_02020130
+_02235BF4:
+ ldr r0, _02235C34 ; =0x00000E74
+ mov r1, #1
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+ b _02235C0A
+_02235C00:
+ ldr r0, _02235C34 ; =0x00000E74
+ mov r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_020200A0
+_02235C0A:
+ mov r0, #0x49
+ lsl r0, r0, #2
+ add r4, r4, r0
+ ldr r0, [sp, #0x10]
+ add r6, r6, #1
+ add r0, r0, #4
+ str r0, [sp, #0x10]
+ add r5, r5, #4
+ add r7, r7, #4
+ cmp r6, #7
+ blt _02235BB6
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02235C24: .word 0x0000064F
+_02235C28: .word 0x000002EE
+_02235C2C: .word 0x00000FF4
+_02235C30: .word 0x00000FFC
+_02235C34: .word 0x00000E74
+ thumb_func_end MOD80_02235B90
+
+ thumb_func_start MOD80_02235C38
+MOD80_02235C38: ; 0x02235C38
+ lsl r0, r0, #2
+ add r0, #0xe
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD80_02235C38
+
+ thumb_func_start MOD80_02235C40
+MOD80_02235C40: ; 0x02235C40
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r7, _02235C84 ; =0x00000E74
+ add r5, r0, #0
+ mov r4, #0
+_02235C48:
+ ldr r0, [r5, r7]
+ bl FUN_02020128
+ cmp r0, #0
+ beq _02235C7A
+ ldr r0, _02235C84 ; =0x00000E74
+ ldr r0, [r5, r0]
+ bl FUN_020201DC
+ add r6, r0, #0
+ add r0, r4, #0
+ bl MOD80_02235C38
+ add r0, r0, #1
+ cmp r6, r0
+ beq _02235C7A
+ add r0, r4, #0
+ bl MOD80_02235C38
+ add r1, r0, #0
+ ldr r0, _02235C84 ; =0x00000E74
+ add r1, r1, #1
+ ldr r0, [r5, r0]
+ bl FUN_02020130
+_02235C7A:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #7
+ blt _02235C48
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02235C84: .word 0x00000E74
+ thumb_func_end MOD80_02235C40
+
+ thumb_func_start MOD80_02235C88
+MOD80_02235C88: ; 0x02235C88
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r2, _02235CC8 ; =0x00000FFC
+ add r4, r0, #0
+ mov r0, #0x56
+ mov r1, #7
+ add r2, r4, r2
+ mov r3, #0x3e
+ bl FUN_02006C08
+ ldr r3, _02235CCC ; =0x00000FF8
+ mov r1, #9
+ str r0, [r4, r3]
+ mov r0, #0x3e
+ sub r3, r3, #4
+ str r0, [sp]
+ mov r0, #0x56
+ mov r2, #1
+ add r3, r4, r3
+ bl FUN_02006BB0
+ mov r1, #0xff
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ add r0, r1, #4
+ mov r1, #2
+ ldr r0, [r4, r0]
+ lsl r1, r1, #0xe
+ bl DC_FlushRange
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_02235CC8: .word 0x00000FFC
+_02235CCC: .word 0x00000FF8
+ thumb_func_end MOD80_02235C88
+
+ thumb_func_start MOD80_02235CD0
+MOD80_02235CD0: ; 0x02235CD0
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r6, r1, #0
+ ldr r0, [sp, #0x18]
+ add r1, r3, #0
+ add r5, r2, #0
+ bl FUN_020536C8
+ add r4, r0, #0
+ mov r0, #6
+ lsl r0, r0, #8
+ ldr r1, [r7, #0x14]
+ mul r0, r4
+ add r0, r1, r0
+ ldr r1, _02235D0C ; =0x02237598
+ lsl r2, r5, #1
+ ldrh r1, [r1, r2]
+ mov r2, #2
+ ldr r6, [r6, #0xc]
+ lsl r2, r2, #8
+ bl GXS_LoadOBJ
+ lsl r0, r4, #5
+ add r1, r5, #2
+ add r0, r6, r0
+ lsl r1, r1, #5
+ mov r2, #0x20
+ bl GXS_LoadOBJPltt
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02235D0C: .word 0x02237598
+ thumb_func_end MOD80_02235CD0
+
+ thumb_func_start MOD80_02235D10
+MOD80_02235D10: ; 0x02235D10
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02235D30 ; =0x00000FEC
+ ldrh r1, [r4, r0]
+ cmp r1, #0
+ beq _02235D2E
+ add r0, #0xc
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ mov r0, #0xff
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+_02235D2E:
+ pop {r4, pc}
+ .align 2, 0
+_02235D30: .word 0x00000FEC
+ thumb_func_end MOD80_02235D10
+
+ thumb_func_start MOD80_02235D34
+MOD80_02235D34: ; 0x02235D34
+ push {r4, lr}
+ add r4, r0, #0
+ add r2, r4, #0
+ add r3, r4, #0
+ ldr r1, [r4]
+ add r2, #0xb8
+ add r3, #0xba
+ ldr r0, [r1, #8]
+ ldrh r2, [r2]
+ ldrh r3, [r3]
+ ldr r1, [r1, #0xc]
+ bl MOD80_02232FB8
+ str r0, [r4, #0x60]
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0x71
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r2, #1
+ add r0, #0x73
+ strb r2, [r0]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x74
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x72
+ strb r2, [r0]
+ add r0, r4, #0
+ add r0, #0x78
+ strh r1, [r0]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x20]
+ bl FUN_02079C70
+ add r1, r4, #0
+ add r1, #0x8c
+ str r0, [r1]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x34]
+ str r0, [r4, #0x7c]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x24]
+ str r0, [r4, #0x64]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x20]
+ bl FUN_0202A918
+ add r1, r4, #0
+ add r1, #0x80
+ str r0, [r1]
+ add r0, r4, #0
+ ldr r1, _02235DCC ; =0x022375E4
+ add r0, #0x60
+ bl FUN_0207B000
+ ldr r1, [r4]
+ add r0, r4, #0
+ ldr r1, [r1, #0x1c]
+ add r0, #0x60
+ bl FUN_0207C2A4
+ add r1, r4, #0
+ ldr r0, _02235DD0 ; =0x020FA6E8
+ add r1, #0x60
+ mov r2, #0x3e
+ bl FUN_02006234
+ str r0, [r4, #0x5c]
+ mov r0, #1
+ add r4, #0xac
+ str r0, [r4]
+ mov r0, #2
+ pop {r4, pc}
+ nop
+_02235DCC: .word 0x022375E4
+_02235DD0: .word 0x020FA6E8
+ thumb_func_end MOD80_02235D34
+
+ thumb_func_start MOD80_02235DD4
+MOD80_02235DD4: ; 0x02235DD4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x5c]
+ mov r4, #3
+ bl FUN_02006290
+ cmp r0, #0
+ beq _02235DF6
+ ldr r0, [r5, #0x5c]
+ bl FUN_02006260
+ ldr r2, [r5, #0x24]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD80_0222E7A8
+ mov r4, #4
+_02235DF6:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02235DD4
+
+ thumb_func_start MOD80_02235DFC
+MOD80_02235DFC: ; 0x02235DFC
+ push {r3, lr}
+ bl MOD80_0222E7B0
+ mov r0, #1
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02235DFC
+
+ thumb_func_start MOD80_02235E08
+MOD80_02235E08: ; 0x02235E08
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x3e
+ bl FUN_020669C0
+ mov r1, #1
+ lsl r1, r1, #0xc
+ str r0, [r4, r1]
+ ldr r0, [r4, #0x24]
+ cmp r0, #0xa
+ bls _02235E20
+ b _02235F94
+_02235E20:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02235E2C: ; jump table
+ .short _02235F94 - _02235E2C - 2 ; case 0
+ .short _02235F94 - _02235E2C - 2 ; case 1
+ .short _02235F94 - _02235E2C - 2 ; case 2
+ .short _02235F94 - _02235E2C - 2 ; case 3
+ .short _02235F94 - _02235E2C - 2 ; case 4
+ .short _02235F94 - _02235E2C - 2 ; case 5
+ .short _02235F94 - _02235E2C - 2 ; case 6
+ .short _02235E42 - _02235E2C - 2 ; case 7
+ .short _02235E88 - _02235E2C - 2 ; case 8
+ .short _02235F26 - _02235E2C - 2 ; case 9
+ .short _02235ECE - _02235E2C - 2 ; case 10
+_02235E42:
+ add r0, r4, #0
+ add r0, #0xd4
+ bl FUN_020690E4
+ add r1, r4, #0
+ add r1, #0x90
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r1, [r0]
+ add r0, r4, #0
+ add r0, #0x94
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xd4
+ bl MOD80_022361AC
+ add r1, r4, #0
+ add r1, #0xc8
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0xc8
+ ldr r1, [r0]
+ add r0, r4, #0
+ add r0, #0x98
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #3
+ add r0, #0x9c
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0xa0
+ str r1, [r0]
+ b _02235F94
+_02235E88:
+ add r0, r4, #0
+ add r0, #0xd4
+ bl FUN_020690E4
+ add r1, r4, #0
+ add r1, #0x94
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0x94
+ ldr r1, [r0]
+ add r0, r4, #0
+ add r0, #0x90
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xd4
+ bl MOD80_022361AC
+ add r1, r4, #0
+ add r1, #0xc8
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0xc8
+ ldr r1, [r0]
+ add r0, r4, #0
+ add r0, #0x98
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #3
+ add r0, #0x9c
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #4
+ add r0, #0xa0
+ str r1, [r0]
+ b _02235F94
+_02235ECE:
+ add r0, r4, #0
+ add r0, #0xd4
+ bl FUN_020690E4
+ add r1, r4, #0
+ add r1, #0x94
+ str r0, [r1]
+ ldr r0, [r4]
+ mov r1, #1
+ lsl r1, r1, #0xc
+ ldr r0, [r0]
+ ldr r1, [r4, r1]
+ bl FUN_0202ABEC
+ mov r0, #1
+ lsl r0, r0, #0xc
+ ldr r0, [r4, r0]
+ bl FUN_020690E4
+ add r1, r4, #0
+ add r1, #0x90
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0xd4
+ bl MOD80_022361AC
+ add r1, r4, #0
+ add r1, #0xc8
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0xc8
+ ldr r1, [r0]
+ add r0, r4, #0
+ add r0, #0x98
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #3
+ add r0, #0x9c
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0xa0
+ str r1, [r0]
+ b _02235F94
+_02235F26:
+ ldr r0, [r4]
+ ldr r1, [r4, r1]
+ ldr r0, [r0]
+ bl FUN_0202ABEC
+ mov r0, #1
+ lsl r0, r0, #0xc
+ ldr r0, [r4, r0]
+ bl FUN_020690E4
+ add r1, r4, #0
+ add r1, #0x90
+ str r0, [r1]
+ add r0, r4, #0
+ mov r1, #0x7e
+ add r0, #0xc4
+ lsl r1, r1, #2
+ add r2, r4, r1
+ ldr r0, [r0]
+ sub r1, #0xd4
+ mul r1, r0
+ add r0, r2, r1
+ bl FUN_020690E4
+ add r1, r4, #0
+ add r1, #0x94
+ str r0, [r1]
+ add r0, r4, #0
+ mov r1, #0x7e
+ add r0, #0xc4
+ lsl r1, r1, #2
+ add r2, r4, r1
+ ldr r0, [r0]
+ sub r1, #0xd4
+ mul r1, r0
+ add r0, r2, r1
+ bl MOD80_022361AC
+ add r1, r4, #0
+ add r1, #0xc8
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0xc8
+ ldr r1, [r0]
+ add r0, r4, #0
+ add r0, #0x98
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #3
+ add r0, #0x9c
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0xa0
+ str r1, [r0]
+_02235F94:
+ ldr r0, [r4]
+ mov r2, #0x3e
+ ldr r1, [r0, #0x24]
+ add r0, r4, #0
+ add r0, #0xa4
+ str r1, [r0]
+ add r1, r4, #0
+ ldr r0, _02235FB8 ; =0x022375F0
+ add r1, #0x90
+ bl FUN_02006234
+ str r0, [r4, #0x5c]
+ mov r0, #1
+ add r4, #0xac
+ str r0, [r4]
+ mov r0, #2
+ pop {r4, pc}
+ nop
+_02235FB8: .word 0x022375F0
+ thumb_func_end MOD80_02235E08
+
+ thumb_func_start MOD80_02235FBC
+MOD80_02235FBC: ; 0x02235FBC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r4, r0, #0
+ ldr r0, [r4, #0x2c]
+ mov r6, #3
+ cmp r0, #0
+ beq _02235FD2
+ cmp r0, #1
+ bne _02235FD0
+ b _02236148
+_02235FD0:
+ b _0223617E
+_02235FD2:
+ ldr r0, [r4, #0x5c]
+ bl FUN_02006290
+ cmp r0, #0
+ bne _02235FDE
+ b _0223617E
+_02235FDE:
+ ldr r0, [r4, #0x5c]
+ bl FUN_02006260
+ ldr r1, [r4, #0x24]
+ cmp r1, #9
+ bne _02236060
+ add r0, r4, #0
+ bl MOD80_022361E8
+ mov r1, #6
+ mov r2, #0
+ add r7, r0, #0
+ bl FUN_020671BC
+ add r3, r0, #0
+ add r0, sp, #0x30
+ lsl r3, r3, #0x10
+ str r0, [sp]
+ mov r0, #0
+ add r1, r7, #0
+ mov r2, #1
+ lsr r3, r3, #0x10
+ bl FUN_02069168
+ str r0, [sp, #0x24]
+ cmp r0, #0
+ beq _02236052
+ ldr r5, [r4]
+ ldr r0, [r5, #0x20]
+ bl FUN_0204C1A8
+ ldr r1, [r5, #0x3c]
+ ldr r2, [sp, #0x24]
+ str r1, [sp]
+ ldr r1, [r5, #0x10]
+ str r1, [sp, #4]
+ ldr r1, [r5, #0x30]
+ str r1, [sp, #8]
+ ldr r1, [r5, #0x28]
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x30]
+ add r1, r7, #0
+ str r0, [sp, #0x14]
+ mov r0, #4
+ str r0, [sp, #0x18]
+ mov r0, #0x3e
+ str r0, [sp, #0x1c]
+ ldr r3, [r5, #0x24]
+ mov r0, #0
+ bl FUN_0206C700
+ add r1, r4, #0
+ add r1, #0xa8
+ str r0, [r1]
+ mov r0, #1
+ str r0, [r4, #0x2c]
+ b _0223617E
+_02236052:
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD80_0222E7A8
+ mov r6, #4
+ b _0223617E
+_02236060:
+ cmp r1, #8
+ beq _02236068
+ cmp r1, #0xa
+ bne _0223613A
+_02236068:
+ add r0, r4, #0
+ bl MOD80_022361E8
+ add r7, r0, #0
+ mov r0, #0x3e
+ bl FUN_020669C0
+ str r0, [sp, #0x20]
+ ldr r0, [r4]
+ ldr r1, [sp, #0x20]
+ ldr r0, [r0]
+ bl FUN_0202ABEC
+ add r0, r7, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020671BC
+ add r5, r0, #0
+ ldr r0, [sp, #0x20]
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r5, r0
+ bne _022360B6
+ mov r1, #0
+ add r0, r7, #0
+ add r2, r1, #0
+ bl FUN_020671BC
+ add r5, r0, #0
+ mov r1, #0
+ ldr r0, [sp, #0x20]
+ add r2, r1, #0
+ bl FUN_020671BC
+ cmp r5, r0
+ beq _02236126
+_022360B6:
+ add r0, r7, #0
+ mov r1, #6
+ mov r2, #0
+ bl FUN_020671BC
+ add r3, r0, #0
+ add r0, sp, #0x2c
+ lsl r3, r3, #0x10
+ str r0, [sp]
+ mov r0, #0
+ add r1, r7, #0
+ mov r2, #1
+ lsr r3, r3, #0x10
+ bl FUN_02069168
+ str r0, [sp, #0x28]
+ cmp r0, #0
+ beq _02236118
+ ldr r5, [r4]
+ ldr r0, [r5, #0x20]
+ bl FUN_0204C1A8
+ ldr r1, [r5, #0x3c]
+ ldr r2, [sp, #0x28]
+ str r1, [sp]
+ ldr r1, [r5, #0x10]
+ str r1, [sp, #4]
+ ldr r1, [r5, #0x30]
+ str r1, [sp, #8]
+ ldr r1, [r5, #0x28]
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x2c]
+ add r1, r7, #0
+ str r0, [sp, #0x14]
+ mov r0, #4
+ str r0, [sp, #0x18]
+ mov r0, #0x3e
+ str r0, [sp, #0x1c]
+ ldr r3, [r5, #0x24]
+ mov r0, #0
+ bl FUN_0206C700
+ add r1, r4, #0
+ add r1, #0xa8
+ str r0, [r1]
+ mov r0, #1
+ str r0, [r4, #0x2c]
+ b _02236132
+_02236118:
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD80_0222E7A8
+ mov r6, #4
+ b _02236132
+_02236126:
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD80_0222E7A8
+ mov r6, #4
+_02236132:
+ ldr r0, [sp, #0x20]
+ bl FUN_02016A18
+ b _0223617E
+_0223613A:
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD80_0222E7A8
+ mov r6, #4
+ b _0223617E
+_02236148:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ bl FUN_0206C91C
+ cmp r0, #0
+ beq _0223617E
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ bl FUN_0206C92C
+ add r0, r4, #0
+ bl MOD80_02236218
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _02236184 ; =0xFFFF1FFF
+ and r0, r1
+ str r0, [r2]
+ add r0, r4, #0
+ mov r1, #7
+ mov r2, #0xc
+ bl MOD80_0222E7A8
+ mov r6, #4
+_0223617E:
+ add r0, r6, #0
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02236184: .word 0xFFFF1FFF
+ thumb_func_end MOD80_02235FBC
+
+ thumb_func_start MOD80_02236188
+MOD80_02236188: ; 0x02236188
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #1
+ lsl r0, r0, #0xc
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ add r0, r4, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl MOD80_0222E7B0
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02236188
+
+ thumb_func_start MOD80_022361AC
+MOD80_022361AC: ; 0x022361AC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x3e
+ bl FUN_02023928
+ add r4, r0, #0
+ bl FUN_02023948
+ mov r1, #0x43
+ lsl r1, r1, #2
+ add r0, r4, #0
+ add r1, r5, r1
+ bl FUN_0202395C
+ ldr r1, _022361E0 ; =0x00000122
+ add r0, r4, #0
+ ldrb r1, [r5, r1]
+ bl FUN_02023A6C
+ ldr r1, _022361E4 ; =0x00000123
+ add r0, r4, #0
+ ldrb r1, [r5, r1]
+ bl FUN_02023A74
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022361E0: .word 0x00000122
+_022361E4: .word 0x00000123
+ thumb_func_end MOD80_022361AC
+
+ thumb_func_start MOD80_022361E8
+MOD80_022361E8: ; 0x022361E8
+ push {r3, lr}
+ cmp r1, #9
+ bne _02236200
+ mov r1, #0x7e
+ lsl r1, r1, #2
+ add r2, r0, r1
+ add r0, #0xc4
+ ldr r0, [r0]
+ sub r1, #0xd4
+ mul r1, r0
+ add r0, r2, r1
+ pop {r3, pc}
+_02236200:
+ cmp r1, #0xa
+ bne _02236208
+ add r0, #0xd4
+ pop {r3, pc}
+_02236208:
+ cmp r1, #8
+ bne _02236210
+ add r0, #0xd4
+ pop {r3, pc}
+_02236210:
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, pc}
+ thumb_func_end MOD80_022361E8
+
+ thumb_func_start MOD80_02236218
+MOD80_02236218: ; 0x02236218
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r1, [r5, #0x24]
+ bl MOD80_022361E8
+ add r4, r0, #0
+ add r0, r5, #0
+ add r0, #0xcc
+ ldr r0, [r0]
+ cmp r0, #0x12
+ bne _02236248
+ ldr r0, [r5]
+ add r5, #0xd0
+ ldr r0, [r0, #8]
+ ldr r1, [r5]
+ bl FUN_0206B9B0
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_02069B88
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_02236248:
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r5, #0
+ str r0, [sp, #4]
+ str r0, [sp]
+ ldr r0, [r5]
+ add r1, #0xcc
+ add r2, #0xd0
+ ldr r0, [r0, #0xc]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl FUN_0206B2FC
+ ldr r0, [r5]
+ add r1, sp, #4
+ ldr r0, [r0, #0xc]
+ add r2, sp, #0
+ bl FUN_0206B384
+ add r0, r4, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r5]
+ ldr r1, [sp, #4]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206B244
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD80_02236218
+
+ thumb_func_start MOD80_02236284
+MOD80_02236284: ; 0x02236284
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl MOD80_02236664
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4, #4]
+ bl MOD80_02236378
+ add r0, r4, #0
+ bl MOD80_02236488
+ add r0, r4, #0
+ bl MOD80_02236580
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E74C
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E74C
+ ldr r0, [r4]
+ ldr r0, [r0, #0x20]
+ bl FUN_02033288
+ add r0, r4, #0
+ bl MOD80_02236D84
+ bl MOD04_021DDD7C
+ cmp r0, #0
+ bne _0223631E
+ ldr r0, [r4]
+ ldr r0, [r0, #0x40]
+ cmp r0, #0
+ beq _02236318
+ ldr r0, _02236328 ; =0x00000F0F
+ ldr r1, _0223632C ; =0x00000B3C
+ str r0, [sp]
+ mov r2, #1
+ ldr r1, [r4, r1]
+ add r0, r4, #0
+ add r3, r2, #0
+ bl MOD80_02236C70
+ add r0, r4, #0
+ mov r1, #0xa
+ mov r2, #2
+ bl MOD80_0222E6DC
+ add r0, r4, #0
+ bl MOD80_0222E8BC
+ b _02236322
+_02236318:
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ b _02236322
+_0223631E:
+ mov r0, #0xf
+ str r0, [r4, #0x2c]
+_02236322:
+ mov r0, #2
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_02236328: .word 0x00000F0F
+_0223632C: .word 0x00000B3C
+ thumb_func_end MOD80_02236284
+
+ thumb_func_start MOD80_02236330
+MOD80_02236330: ; 0x02236330
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222E79C
+ bl FUN_02033EEC
+ ldr r1, [r4, #0x2c]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _0223634C ; =0x02237C68
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r4, pc}
+ nop
+_0223634C: .word 0x02237C68
+ thumb_func_end MOD80_02236330
+
+ thumb_func_start MOD80_02236350
+MOD80_02236350: ; 0x02236350
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0223669C
+ add r0, r4, #0
+ bl MOD80_02236638
+ ldr r0, [r4, #4]
+ bl MOD80_02236464
+ add r0, r4, #0
+ bl MOD80_0222E7B0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ bne _02236374
+ mov r0, #5
+ pop {r4, pc}
+_02236374:
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD80_02236350
+
+ thumb_func_start MOD80_02236378
+MOD80_02236378: ; 0x02236378
+ push {r3, r4, r5, lr}
+ sub sp, #0x70
+ ldr r5, _02236454 ; =0x02237638
+ add r4, r0, #0
+ ldmia r5!, {r0, r1}
+ add r3, sp, #0x54
+ 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
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E6E4
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02018744
+ ldr r5, _02236458 ; =0x0223761C
+ 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]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ ldr r5, _0223645C ; =0x02237654
+ 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
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E74C
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_02018744
+ ldr r5, _02236460 ; =0x02237600
+ 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]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x3e
+ bl FUN_02017F18
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x3e
+ bl FUN_02017F18
+ mov r0, #0x10
+ mov r1, #0
+ bl FUN_0201E74C
+ add sp, #0x70
+ pop {r3, r4, r5, pc}
+ nop
+_02236454: .word 0x02237638
+_02236458: .word 0x0223761C
+_0223645C: .word 0x02237654
+_02236460: .word 0x02237600
+ thumb_func_end MOD80_02236378
+
+ thumb_func_start MOD80_02236464
+MOD80_02236464: ; 0x02236464
+ 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, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020178A0
+ pop {r4, pc}
+ thumb_func_end MOD80_02236464
+
+ thumb_func_start MOD80_02236488
+MOD80_02236488: ; 0x02236488
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r4, [r5, #4]
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x3e
+ str r0, [sp, #4]
+ mov r0, #0x5c
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x3e
+ str r0, [sp, #4]
+ mov r0, #0x5c
+ mov r1, #3
+ mov r2, #4
+ bl FUN_02006930
+ mov r1, #0x1a
+ mov r0, #0
+ lsl r1, r1, #4
+ mov r2, #0x3e
+ bl FUN_02002EEC
+ mov r1, #0x1a
+ mov r0, #4
+ lsl r1, r1, #4
+ mov r2, #0x3e
+ bl FUN_02002EEC
+ ldr r0, [r5]
+ ldr r0, [r0, #0x24]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x3e
+ 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, #0x3e
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x1f
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r1, #0
+ mov r0, #0x36
+ str r1, [sp]
+ lsl r0, r0, #6
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x5c
+ mov r1, #2
+ add r2, r4, #0
+ mov r3, #1
+ bl FUN_0200687C
+ mov r1, #0
+ mov r0, #6
+ str r1, [sp]
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x5c
+ mov r1, #4
+ add r2, r4, #0
+ mov r3, #1
+ bl FUN_020068C8
+ mov r1, #0
+ mov r0, #0x36
+ str r1, [sp]
+ lsl r0, r0, #6
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x5c
+ mov r1, #9
+ add r2, r4, #0
+ mov r3, #5
+ bl FUN_0200687C
+ mov r1, #0
+ mov r0, #6
+ str r1, [sp]
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #0x3e
+ str r0, [sp, #0xc]
+ mov r0, #0x5c
+ mov r1, #0xa
+ add r2, r4, #0
+ mov r3, #5
+ bl FUN_020068C8
+ 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}
+ thumb_func_end MOD80_02236488
+
+ thumb_func_start MOD80_02236580
+MOD80_02236580: ; 0x02236580
+ push {r3, r4, lr}
+ sub sp, #0x14
+ mov r3, #4
+ add r4, r0, #0
+ str r3, [sp]
+ mov r0, #0x17
+ str r0, [sp, #4]
+ mov r0, #0x10
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x94
+ ldr r1, _02236628 ; =0x00000EC8
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #0
+ bl FUN_02019064
+ ldr r0, _02236628 ; =0x00000EC8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x81
+ lsl r0, r0, #2
+ ldr r1, _0223662C ; =0x00000EB8
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #4
+ bl FUN_02019064
+ ldr r0, _0223662C ; =0x00000EB8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ mov r3, #1
+ mov r1, #0xb5
+ ldr r0, _02236630 ; =0x000F0E00
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0223662C ; =0x00000EB8
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ add r0, r4, r0
+ mov r2, #0
+ bl MOD80_02236D1C
+ mov r0, #0x13
+ 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
+ ldr r1, _02236634 ; =0x00000E98
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #2
+ bl FUN_02019064
+ ldr r0, _02236634 ; =0x00000E98
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_02019620
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_02236628: .word 0x00000EC8
+_0223662C: .word 0x00000EB8
+_02236630: .word 0x000F0E00
+_02236634: .word 0x00000E98
+ thumb_func_end MOD80_02236580
+
+ thumb_func_start MOD80_02236638
+MOD80_02236638: ; 0x02236638
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02236658 ; =0x00000E98
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _0223665C ; =0x00000EB8
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _02236660 ; =0x00000EC8
+ add r0, r4, r0
+ bl FUN_02019178
+ pop {r4, pc}
+ nop
+_02236658: .word 0x00000E98
+_0223665C: .word 0x00000EB8
+_02236660: .word 0x00000EC8
+ thumb_func_end MOD80_02236638
+
+ thumb_func_start MOD80_02236664
+MOD80_02236664: ; 0x02236664
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xb4
+ mov r1, #0x3e
+ bl FUN_020219F4
+ ldr r1, _02236694 ; =0x00000B4C
+ str r0, [r4, r1]
+ mov r0, #1
+ lsl r0, r0, #8
+ mov r1, #0x3e
+ bl FUN_020219F4
+ ldr r1, _02236698 ; =0x00000B7C
+ str r0, [r4, r1]
+ sub r1, #0x48
+ ldr r0, [r4, r1]
+ mov r1, #0x1f
+ bl FUN_0200A914
+ mov r1, #0xb5
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ pop {r4, pc}
+ .align 2, 0
+_02236694: .word 0x00000B4C
+_02236698: .word 0x00000B7C
+ thumb_func_end MOD80_02236664
+
+ thumb_func_start MOD80_0223669C
+MOD80_0223669C: ; 0x0223669C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xb5
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ ldr r0, _022366BC ; =0x00000B7C
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ ldr r0, _022366C0 ; =0x00000B4C
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ pop {r4, pc}
+ .align 2, 0
+_022366BC: .word 0x00000B7C
+_022366C0: .word 0x00000B4C
+ thumb_func_end MOD80_0223669C
+
+ thumb_func_start MOD80_022366C4
+MOD80_022366C4: ; 0x022366C4
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r1, _022366F4 ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ mov r1, #0x2d
+ lsl r1, r1, #6
+ ldr r1, [r4, r1]
+ mov r2, #0x10
+ mov r3, #1
+ bl MOD80_02236C70
+ add r0, r4, #0
+ mov r1, #0xb
+ mov r2, #1
+ bl MOD80_0222E6DC
+ ldr r0, _022366F8 ; =0x0000100A
+ mov r1, #1
+ strh r1, [r4, r0]
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_022366F4: .word 0x00000F0F
+_022366F8: .word 0x0000100A
+ thumb_func_end MOD80_022366C4
+
+ thumb_func_start MOD80_022366FC
+MOD80_022366FC: ; 0x022366FC
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, _02236758 ; =0x00000FCC
+ mov r1, #0x3e
+ ldr r0, [r4, r0]
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02236750
+ sub r1, r1, #1
+ cmp r0, r1
+ bne _0223672E
+ bl FUN_020332DC
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD80_0222E7A8
+ mov r0, #9
+ str r0, [r4, #0x2c]
+ b _02236750
+_0223672E:
+ ldr r0, _0223675C ; =0x00000F0F
+ ldr r1, _02236760 ; =0x00000B3C
+ str r0, [sp]
+ mov r2, #1
+ ldr r1, [r4, r1]
+ add r0, r4, #0
+ add r3, r2, #0
+ bl MOD80_02236C70
+ add r0, r4, #0
+ mov r1, #0xa
+ mov r2, #2
+ bl MOD80_0222E6DC
+ add r0, r4, #0
+ bl MOD80_0222E8BC
+_02236750:
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_02236758: .word 0x00000FCC
+_0223675C: .word 0x00000F0F
+_02236760: .word 0x00000B3C
+ thumb_func_end MOD80_022366FC
+
+ thumb_func_start MOD80_02236764
+MOD80_02236764: ; 0x02236764
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r1, _0223678C ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ ldr r1, _02236790 ; =0x00000B34
+ mov r2, #7
+ ldr r1, [r4, r1]
+ mov r3, #1
+ bl MOD80_02236C70
+ add r0, r4, #0
+ mov r1, #0xb
+ mov r2, #0xe
+ bl MOD80_0222E6DC
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_0223678C: .word 0x00000F0F
+_02236790: .word 0x00000B34
+ thumb_func_end MOD80_02236764
+
+ thumb_func_start MOD80_02236794
+MOD80_02236794: ; 0x02236794
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _022367F4 ; =0x00000FCC
+ mov r1, #0x3e
+ ldr r0, [r4, r0]
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _022367F0
+ sub r1, r1, #1
+ cmp r0, r1
+ bne _022367D2
+ bl MOD04_021DDD7C
+ cmp r0, #0
+ bne _022367BE
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ b _022367F0
+_022367BE:
+ add r0, r4, #0
+ mov r1, #7
+ mov r2, #0xb
+ bl MOD80_0222E7A8
+ mov r0, #1
+ str r0, [r4, #0x1c]
+ mov r0, #9
+ str r0, [r4, #0x2c]
+ b _022367F0
+_022367D2:
+ bl MOD04_021DDD7C
+ cmp r0, #0
+ beq _022367DE
+ bl MOD04_021DDBBC
+_022367DE:
+ bl FUN_020332DC
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD80_0222E7A8
+ mov r0, #9
+ str r0, [r4, #0x2c]
+_022367F0:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_022367F4: .word 0x00000FCC
+ thumb_func_end MOD80_02236794
+
+ thumb_func_start MOD80_022367F8
+MOD80_022367F8: ; 0x022367F8
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r1, _02236820 ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ mov r1, #0x2d
+ lsl r1, r1, #6
+ ldr r1, [r4, r1]
+ mov r2, #0x19
+ mov r3, #1
+ bl MOD80_02236C70
+ add r0, r4, #0
+ mov r1, #0xa
+ mov r2, #0x10
+ bl MOD80_0222E6DC
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_02236820: .word 0x00000F0F
+ thumb_func_end MOD80_022367F8
+
+ thumb_func_start MOD80_02236824
+MOD80_02236824: ; 0x02236824
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020332DC
+ bl MOD04_021DDBBC
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD80_0222E7A8
+ mov r0, #0x11
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02236824
+
+ thumb_func_start MOD80_02236844
+MOD80_02236844: ; 0x02236844
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r1, _0223686C ; =0x00000F0F
+ add r4, r0, #0
+ str r1, [sp]
+ mov r1, #0x2d
+ lsl r1, r1, #6
+ ldr r1, [r4, r1]
+ mov r2, #0x1a
+ mov r3, #1
+ bl MOD80_02236C70
+ add r0, r4, #0
+ mov r1, #0x12
+ mov r2, #9
+ bl MOD80_0222E6DC
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_0223686C: .word 0x00000F0F
+ thumb_func_end MOD80_02236844
+
+ thumb_func_start MOD80_02236870
+MOD80_02236870: ; 0x02236870
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x50
+ mov r1, #2
+ mov r2, #1
+ mov r3, #0x14
+ bl MOD04_021DDEE0
+ mov r0, #2
+ bl MOD04_021DDE7C
+ bl MOD04_021DDDCC
+ mov r0, #3
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+ thumb_func_end MOD80_02236870
+
+ thumb_func_start MOD80_02236890
+MOD80_02236890: ; 0x02236890
+ push {r3, r4, lr}
+ sub sp, #0x44
+ add r4, r0, #0
+ bl MOD04_021DDCE8
+ bl MOD04_021DDD7C
+ cmp r0, #0
+ beq _022368F4
+ bl MOD04_021DDC1C
+ cmp r0, #4
+ beq _022368EA
+ cmp r0, #7
+ beq _022368B4
+ cmp r0, #8
+ beq _022368D4
+ b _022368F4
+_022368B4:
+ add r0, sp, #4
+ bl MOD04_021DD808
+ str r0, [r4, #0x40]
+ ldr r0, [sp, #4]
+ str r0, [r4, #0x44]
+ bl MOD04_021DD6F0
+ bl MOD04_021DDBBC
+ add r0, r4, #0
+ bl MOD80_0222E8D8
+ mov r0, #0x15
+ str r0, [r4, #0x2c]
+ b _022368F4
+_022368D4:
+ add r0, sp, #0
+ bl MOD04_021DD808
+ add r0, r4, #0
+ bl MOD80_0222E8D8
+ mov r0, #0x13
+ str r0, [r4, #0x2c]
+ sub r0, #0x15
+ str r0, [r4, #0x3c]
+ b _022368F4
+_022368EA:
+ add r0, sp, #8
+ bl MOD04_021DD9DC
+ mov r0, #4
+ str r0, [r4, #0x2c]
+_022368F4:
+ mov r0, #3
+ add sp, #0x44
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02236890
+
+ thumb_func_start MOD80_022368FC
+MOD80_022368FC: ; 0x022368FC
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD04_021DE05C
+ cmp r0, #0
+ beq _0223690C
+ mov r0, #5
+ str r0, [r4, #0x2c]
+_0223690C:
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_022368FC
+
+ thumb_func_start MOD80_02236910
+MOD80_02236910: ; 0x02236910
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ bl MOD04_021DDF4C
+ cmp r0, #3
+ beq _02236928
+ cmp r0, #4
+ beq _0223692E
+ cmp r0, #5
+ beq _0223692E
+ b _02236998
+_02236928:
+ mov r0, #6
+ str r0, [r4, #0x2c]
+ b _02236998
+_0223692E:
+ add r0, r4, #0
+ bl MOD80_0222E8D8
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD04_021DD718
+ str r0, [r4, #0x40]
+ ldr r0, [sp, #4]
+ str r0, [r4, #0x44]
+ bl MOD04_021DD6F0
+ bl MOD04_021DDBBC
+ ldr r0, [sp]
+ cmp r0, #7
+ bhi _02236986
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223695C: ; jump table
+ .short _02236986 - _0223695C - 2 ; case 0
+ .short _0223696C - _0223695C - 2 ; case 1
+ .short _0223696C - _0223695C - 2 ; case 2
+ .short _02236986 - _0223695C - 2 ; case 3
+ .short _02236972 - _0223695C - 2 ; case 4
+ .short _02236986 - _0223695C - 2 ; case 5
+ .short _0223697C - _0223695C - 2 ; case 6
+ .short _02236982 - _0223695C - 2 ; case 7
+_0223696C:
+ mov r0, #0x15
+ str r0, [r4, #0x2c]
+ b _02236986
+_02236972:
+ blx FUN_021EB550
+ mov r0, #0x15
+ str r0, [r4, #0x2c]
+ b _02236986
+_0223697C:
+ mov r0, #0x15
+ str r0, [r4, #0x2c]
+ b _02236986
+_02236982:
+ bl FUN_020335E0
+_02236986:
+ ldr r1, [sp, #4]
+ ldr r0, _022369A0 ; =0xFFFFB1E0
+ cmp r1, r0
+ bge _02236998
+ ldr r0, _022369A4 ; =0xFFFF8AD1
+ cmp r1, r0
+ blt _02236998
+ mov r0, #0x15
+ str r0, [r4, #0x2c]
+_02236998:
+ mov r0, #3
+ add sp, #8
+ pop {r4, pc}
+ nop
+_022369A0: .word 0xFFFFB1E0
+_022369A4: .word 0xFFFF8AD1
+ thumb_func_end MOD80_02236910
+
+ thumb_func_start MOD80_022369A8
+MOD80_022369A8: ; 0x022369A8
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ ldr r0, [r0, #0x14]
+ bl FUN_02028228
+ add r4, r0, #0
+ ldr r0, [r5]
+ ldr r0, [r0, #4]
+ bl FUN_02023830
+ cmp r0, #0
+ bne _022369CC
+ ldr r1, [r5]
+ ldr r0, [r1, #4]
+ ldr r1, [r1, #0x38]
+ bl FUN_02023834
+_022369CC:
+ ldr r0, [r5]
+ ldr r0, [r0, #4]
+ bl FUN_02023830
+ add r6, r0, #0
+ add r0, r4, #0
+ bl FUN_02096D68
+ add r3, r0, #0
+ add r2, r1, #0
+ add r0, r6, #0
+ add r1, r3, #0
+ bl MOD80_0222D5C0
+ mov r0, #7
+ str r0, [r5, #0x2c]
+ mov r0, #3
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD80_022369A8
+
+ thumb_func_start MOD80_022369F0
+MOD80_022369F0: ; 0x022369F0
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222DEBC
+ mov r0, #8
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_022369F0
+
+ thumb_func_start MOD80_02236A00
+MOD80_02236A00: ; 0x02236A00
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD80_0222DB98
+ cmp r0, #0
+ beq _02236A82
+ bl MOD80_0222DBB8
+ add r1, r0, #0
+ add r1, #0xf
+ cmp r1, #0x11
+ bhi _02236A82
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02236A24: ; jump table
+ .short _02236A68 - _02236A24 - 2 ; case 0
+ .short _02236A70 - _02236A24 - 2 ; case 1
+ .short _02236A78 - _02236A24 - 2 ; case 2
+ .short _02236A68 - _02236A24 - 2 ; case 3
+ .short _02236A82 - _02236A24 - 2 ; case 4
+ .short _02236A82 - _02236A24 - 2 ; case 5
+ .short _02236A82 - _02236A24 - 2 ; case 6
+ .short _02236A82 - _02236A24 - 2 ; case 7
+ .short _02236A82 - _02236A24 - 2 ; case 8
+ .short _02236A82 - _02236A24 - 2 ; case 9
+ .short _02236A82 - _02236A24 - 2 ; case 10
+ .short _02236A82 - _02236A24 - 2 ; case 11
+ .short _02236A82 - _02236A24 - 2 ; case 12
+ .short _02236A70 - _02236A24 - 2 ; case 13
+ .short _02236A60 - _02236A24 - 2 ; case 14
+ .short _02236A48 - _02236A24 - 2 ; case 15
+ .short _02236A58 - _02236A24 - 2 ; case 16
+ .short _02236A60 - _02236A24 - 2 ; case 17
+_02236A48:
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD80_0222E7A8
+ mov r0, #9
+ str r0, [r4, #0x2c]
+ b _02236A82
+_02236A58:
+ str r0, [r4, #0x3c]
+ mov r0, #0x13
+ str r0, [r4, #0x2c]
+ b _02236A82
+_02236A60:
+ str r0, [r4, #0x3c]
+ mov r0, #0x13
+ str r0, [r4, #0x2c]
+ b _02236A82
+_02236A68:
+ str r0, [r4, #0x3c]
+ mov r0, #0x13
+ str r0, [r4, #0x2c]
+ b _02236A82
+_02236A70:
+ str r0, [r4, #0x3c]
+ mov r0, #0x13
+ str r0, [r4, #0x2c]
+ b _02236A82
+_02236A78:
+ add r0, r4, #0
+ bl MOD80_0222E8D8
+ bl FUN_020335E0
+_02236A82:
+ add r0, r4, #0
+ bl MOD80_0222E8D8
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_02236A00
+
+ thumb_func_start MOD80_02236A8C
+MOD80_02236A8C: ; 0x02236A8C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x44]
+ neg r0, r0
+ bl MOD04_021D80E0
+ ldr r2, [r4, #0x44]
+ add r1, r0, #0
+ add r0, r4, #0
+ neg r2, r2
+ bl MOD80_02236E04
+ mov r0, #0x16
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ thumb_func_end MOD80_02236A8C
+
+ thumb_func_start MOD80_02236AAC
+MOD80_02236AAC: ; 0x02236AAC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02236AD4 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ bne _02236AC0
+ mov r0, #2
+ tst r0, r1
+ beq _02236ACE
+_02236AC0:
+ ldr r0, _02236AD8 ; =0x00000EC8
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200CCF8
+ mov r0, #0
+ str r0, [r4, #0x2c]
+_02236ACE:
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_02236AD4: .word 0x021C48B8
+_02236AD8: .word 0x00000EC8
+ thumb_func_end MOD80_02236AAC
+
+ thumb_func_start MOD80_02236ADC
+MOD80_02236ADC: ; 0x02236ADC
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl FUN_02033ED0
+ add r0, r4, #0
+ bl MOD80_0222E8D8
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ ldr r0, _02236B14 ; =0x0000100C
+ mov r1, #1
+ str r1, [r4, r0]
+ mov r0, #4
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_02236B14: .word 0x0000100C
+ thumb_func_end MOD80_02236ADC
+
+ thumb_func_start MOD80_02236B18
+MOD80_02236B18: ; 0x02236B18
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02236B4C ; =0x00000FCC
+ mov r1, #0x3e
+ ldr r0, [r4, r0]
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02236B48
+ sub r1, r1, #1
+ cmp r0, r1
+ bne _02236B3A
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ b _02236B48
+_02236B3A:
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD80_0222E7A8
+ mov r0, #9
+ str r0, [r4, #0x2c]
+_02236B48:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+_02236B4C: .word 0x00000FCC
+ thumb_func_end MOD80_02236B18
+
+ thumb_func_start MOD80_02236B50
+MOD80_02236B50: ; 0x02236B50
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4, #0x3c]
+ mov r2, #0
+ add r0, #0xf
+ cmp r0, #0x11
+ bhi _02236B9E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02236B6C: ; jump table
+ .short _02236B9C - _02236B6C - 2 ; case 0
+ .short _02236B98 - _02236B6C - 2 ; case 1
+ .short _02236B9E - _02236B6C - 2 ; case 2
+ .short _02236B9C - _02236B6C - 2 ; case 3
+ .short _02236B9E - _02236B6C - 2 ; case 4
+ .short _02236B9E - _02236B6C - 2 ; case 5
+ .short _02236B9E - _02236B6C - 2 ; case 6
+ .short _02236B9E - _02236B6C - 2 ; case 7
+ .short _02236B9E - _02236B6C - 2 ; case 8
+ .short _02236B9E - _02236B6C - 2 ; case 9
+ .short _02236B9C - _02236B6C - 2 ; case 10
+ .short _02236B9E - _02236B6C - 2 ; case 11
+ .short _02236B9C - _02236B6C - 2 ; case 12
+ .short _02236B98 - _02236B6C - 2 ; case 13
+ .short _02236B94 - _02236B6C - 2 ; case 14
+ .short _02236B9E - _02236B6C - 2 ; case 15
+ .short _02236B90 - _02236B6C - 2 ; case 16
+ .short _02236B94 - _02236B6C - 2 ; case 17
+_02236B90:
+ mov r2, #0x8c
+ b _02236B9E
+_02236B94:
+ mov r2, #0x8d
+ b _02236B9E
+_02236B98:
+ mov r2, #0x92
+ b _02236B9E
+_02236B9C:
+ mov r2, #0x91
+_02236B9E:
+ ldr r0, _02236BC0 ; =0x00000F0F
+ ldr r1, _02236BC4 ; =0x00000B34
+ str r0, [sp]
+ ldr r1, [r4, r1]
+ add r0, r4, #0
+ mov r3, #1
+ bl MOD80_02236C70
+ add r0, r4, #0
+ mov r1, #0xa
+ mov r2, #0x14
+ bl MOD80_0222E6DC
+ mov r0, #3
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_02236BC0: .word 0x00000F0F
+_02236BC4: .word 0x00000B34
+ thumb_func_end MOD80_02236B50
+
+ thumb_func_start MOD80_02236BC8
+MOD80_02236BC8: ; 0x02236BC8
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020332DC
+ bl MOD04_021DDBBC
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD80_0222E7A8
+ mov r0, #9
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02236BC8
+
+ thumb_func_start MOD80_02236BE8
+MOD80_02236BE8: ; 0x02236BE8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x2e
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02236C02
+ ldr r0, [r4, #0x30]
+ str r0, [r4, #0x2c]
+_02236C02:
+ mov r0, #3
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02236BE8
+
+ thumb_func_start MOD80_02236C08
+MOD80_02236C08: ; 0x02236C08
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x2e
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02236C32
+ ldr r0, _02236C38 ; =0x00000FDC
+ ldr r0, [r4, r0]
+ cmp r0, #0x1e
+ ble _02236C2A
+ ldr r0, [r4, #0x30]
+ str r0, [r4, #0x2c]
+_02236C2A:
+ ldr r0, _02236C38 ; =0x00000FDC
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+_02236C32:
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_02236C38: .word 0x00000FDC
+ thumb_func_end MOD80_02236C08
+
+ thumb_func_start MOD80_02236C3C
+MOD80_02236C3C: ; 0x02236C3C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x2e
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02236C66
+ mov r2, #0x8d
+ ldr r0, [r4, #4]
+ mov r1, #0xd
+ lsl r2, r2, #2
+ bl MOD80_0222E6A8
+ ldr r1, _02236C6C ; =0x00000FCC
+ str r0, [r4, r1]
+ ldr r0, [r4, #0x30]
+ str r0, [r4, #0x2c]
+_02236C66:
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_02236C6C: .word 0x00000FCC
+ thumb_func_end MOD80_02236C3C
+
+ thumb_func_start MOD80_02236C70
+MOD80_02236C70: ; 0x02236C70
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r0, r1, #0
+ add r1, r2, #0
+ add r4, r3, #0
+ bl FUN_0200A914
+ mov r1, #0xb3
+ add r6, r0, #0
+ lsl r1, r1, #4
+ ldr r0, [r5, r1]
+ add r1, #0x1c
+ ldr r1, [r5, r1]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, _02236CD8 ; =0x00000E98
+ mov r1, #0xf
+ add r0, r5, r0
+ bl FUN_02019620
+ ldr r0, _02236CD8 ; =0x00000E98
+ mov r1, #0
+ add r0, r5, r0
+ mov r2, #1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ mov r3, #0
+ str r3, [sp]
+ str r4, [sp, #4]
+ ldr r0, _02236CD8 ; =0x00000E98
+ ldr r2, _02236CDC ; =0x00000B4C
+ str r3, [sp, #8]
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ mov r1, #0x2e
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ ldr r0, _02236CE0 ; =0x00000FDC
+ mov r1, #0
+ str r1, [r5, r0]
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02236CD8: .word 0x00000E98
+_02236CDC: .word 0x00000B4C
+_02236CE0: .word 0x00000FDC
+ thumb_func_end MOD80_02236C70
+
+ thumb_func_start MOD80_02236CE4
+MOD80_02236CE4: ; 0x02236CE4
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r3, #1
+ beq _02236CF2
+ cmp r3, #2
+ beq _02236D08
+ b _02236D16
+_02236CF2:
+ ldr r0, [sp, #0xc]
+ mov r2, #0
+ bl FUN_02002E14
+ ldrb r1, [r4, #7]
+ lsl r1, r1, #3
+ sub r1, r1, r0
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r2, r0, #1
+ b _02236D16
+_02236D08:
+ ldr r0, [sp, #0xc]
+ mov r2, #0
+ bl FUN_02002E14
+ ldrb r1, [r4, #7]
+ lsl r1, r1, #3
+ sub r2, r1, r0
+_02236D16:
+ add r0, r2, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02236CE4
+
+ thumb_func_start MOD80_02236D1C
+MOD80_02236D1C: ; 0x02236D1C
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r3, #0
+ ldr r3, [sp, #0x24]
+ add r5, r0, #0
+ str r3, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ ldr r3, [sp, #0x20]
+ add r6, r1, #0
+ bl MOD80_02236CE4
+ add r3, r0, #0
+ str r4, [sp]
+ mov r1, #0
+ ldr r0, [sp, #0x24]
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ mov r1, #1
+ add r2, r6, #0
+ bl FUN_0201BDE0
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD80_02236D1C
+
+ thumb_func_start MOD80_02236D50
+MOD80_02236D50: ; 0x02236D50
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r3, #0
+ ldr r3, [sp, #0x24]
+ add r5, r0, #0
+ str r3, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ ldr r3, [sp, #0x20]
+ add r6, r1, #0
+ bl MOD80_02236CE4
+ add r3, r0, #0
+ str r4, [sp]
+ mov r1, #0
+ ldr r0, [sp, #0x24]
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r2, r6, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD80_02236D50
+
+ thumb_func_start MOD80_02236D84
+MOD80_02236D84: ; 0x02236D84
+ ldr r3, _02236D88 ; =FUN_02033E74
+ bx r3
+ .align 2, 0
+_02236D88: .word FUN_02033E74
+ thumb_func_end MOD80_02236D84
+
+ thumb_func_start MOD80_02236D8C
+MOD80_02236D8C: ; 0x02236D8C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #1
+ add r6, r1, #0
+ lsl r0, r0, #8
+ mov r1, #0x3e
+ bl FUN_020219F4
+ add r4, r0, #0
+ mov r0, #0x2d
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ add r1, r6, #0
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r1, #0xb3
+ lsl r1, r1, #4
+ ldr r0, [r5, r1]
+ add r1, #0x4c
+ ldr r1, [r5, r1]
+ add r2, r4, #0
+ bl FUN_0200B7B8
+ ldr r0, _02236DFC ; =0x00000EC8
+ mov r1, #0xf
+ add r0, r5, r0
+ bl FUN_02019620
+ ldr r0, _02236DFC ; =0x00000EC8
+ mov r1, #1
+ add r0, r5, r0
+ mov r2, #0x1f
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ ldr r0, _02236DFC ; =0x00000EC8
+ ldr r2, _02236E00 ; =0x00000B7C
+ str r3, [sp, #8]
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ mov r1, #0x2e
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ add r0, r4, #0
+ bl FUN_02021A20
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_02236DFC: .word 0x00000EC8
+_02236E00: .word 0x00000B7C
+ thumb_func_end MOD80_02236D8C
+
+ thumb_func_start MOD80_02236E04
+MOD80_02236E04: ; 0x02236E04
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0
+ add r4, r1, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _02236E16
+ mov r4, #0xb
+_02236E16:
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0xb3
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ mov r3, #5
+ bl FUN_0200AD38
+ ldr r0, _02236E44 ; =0x00000E98
+ mov r1, #1
+ add r0, r5, r0
+ bl FUN_0200D0E0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD80_02236D8C
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_02236E44: .word 0x00000E98
+ thumb_func_end MOD80_02236E04
+
+ .section .rodata
+ ; 0x02236E48
+ .incbin "baserom.nds", 0x2E8A88, 0x828
+
+ .section .data
+ ; 0x02237680
+ .incbin "baserom.nds", 0x2E92C0, 0x660
+
+ .section .bss
+ ; 0x02237CE0
+ .space 0x160
diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s
new file mode 100644
index 00000000..c0b33a96
--- /dev/null
+++ b/arm9/modules/81/asm/module_81.s
@@ -0,0 +1,10353 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD81_02237E40
+MOD81_02237E40: ; 0x02237E40
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _02237E50
+ b _02237FC8
+_02237E50:
+ mov r0, #3
+ mov r1, #0x39
+ lsl r2, r0, #0xf
+ bl FUN_0201681C
+ mov r0, #3
+ mov r1, #0x3a
+ lsl r2, r0, #0xf
+ bl FUN_0201681C
+ bl MOD81_02238858
+ ldr r1, _02237FD0 ; =0x00000492
+ mov r0, #3
+ mov r2, #1
+ bl FUN_0200433C
+ mov r1, #0x55
+ add r0, r5, #0
+ lsl r1, r1, #2
+ mov r2, #0x39
+ bl FUN_02006268
+ add r4, r0, #0
+ bne _02237E84
+ b _02237FC2
+_02237E84:
+ add r0, r5, #0
+ bl FUN_0200628C
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r4, #4]
+ mov r0, #0x39
+ bl FUN_02016B94
+ str r0, [r4, #8]
+ mov r0, #0x19
+ lsl r0, r0, #4
+ mov r1, #0x39
+ bl FUN_020219F4
+ str r0, [r4, #0x14]
+ ldr r2, _02237FD4 ; =0x00000137
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x39
+ bl FUN_0200A86C
+ str r0, [r4, #0x10]
+ mov r0, #0x39
+ bl FUN_0200AA80
+ str r0, [r4, #0xc]
+ ldr r2, [r4]
+ ldr r0, [r2, #0x10]
+ cmp r0, #1
+ beq _02237ECC
+ cmp r0, #2
+ beq _02237EFE
+ cmp r0, #4
+ beq _02237F0A
+ b _02237F22
+_02237ECC:
+ ldr r0, [r4, #0xc]
+ ldr r2, [r2]
+ mov r1, #0
+ bl FUN_0200ACF8
+ ldr r2, [r4]
+ ldr r0, [r4, #0xc]
+ ldr r2, [r2, #4]
+ mov r1, #1
+ bl FUN_0200ACF8
+ ldr r2, [r4]
+ ldr r0, [r4, #0xc]
+ ldr r2, [r2, #8]
+ mov r1, #2
+ bl FUN_0200ABC0
+ ldr r0, [r4]
+ ldr r0, [r0, #4]
+ bl MOD81_02237FE8
+ mov r1, #0x52
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ b _02237F22
+_02237EFE:
+ ldr r0, [r4, #0xc]
+ ldr r2, [r2]
+ mov r1, #0
+ bl FUN_0200ACF8
+ b _02237F22
+_02237F0A:
+ ldr r0, [r4, #0xc]
+ ldr r2, [r2, #4]
+ mov r1, #1
+ bl FUN_0200ACF8
+ ldr r0, [r4]
+ ldr r0, [r0, #4]
+ bl MOD81_02237FE8
+ mov r1, #0x52
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+_02237F22:
+ bl FUN_020B0FC0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x7f
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ mov r1, #0x39
+ str r1, [sp, #0x10]
+ mov r1, #0x80
+ add r2, r0, #0
+ bl FUN_02009EAC
+ add r1, r4, #0
+ mov r0, #0x40
+ add r1, #0x1c
+ mov r2, #0x39
+ bl FUN_02008C9C
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ mov r2, #0x3a
+ add r0, #0x1c
+ mov r1, #0
+ lsl r2, r2, #0xe
+ bl FUN_02008D24
+ ldr r0, [r4]
+ mov r1, #5
+ ldr r0, [r0]
+ mov r2, #0
+ bl FUN_020672BC
+ mov r1, #0x53
+ lsl r1, r1, #2
+ strh r0, [r4, r1]
+ ldr r0, [r4]
+ mov r1, #5
+ ldr r0, [r0, #4]
+ mov r2, #0
+ bl FUN_020672BC
+ ldr r1, _02237FD8 ; =0x0000014E
+ strh r0, [r4, r1]
+ mov r0, #0
+ add r1, r1, #2
+ str r0, [r4, r1]
+ 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, _02237FDC ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _02237FE0 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ ldr r0, _02237FE4 ; =MOD81_022380F4
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA7C
+ mov r1, #0x51
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #0
+ add r1, #0xc
+ str r0, [r4, r1]
+_02237FC2:
+ add sp, #0x14
+ mov r0, #1
+ pop {r4, r5, pc}
+_02237FC8:
+ mov r0, #0
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02237FD0: .word 0x00000492
+_02237FD4: .word 0x00000137
+_02237FD8: .word 0x0000014E
+_02237FDC: .word 0xFFFFE0FF
+_02237FE0: .word 0x04001000
+_02237FE4: .word MOD81_022380F4
+ thumb_func_end MOD81_02237E40
+
+ thumb_func_start MOD81_02237FE8
+MOD81_02237FE8: ; 0x02237FE8
+ push {r3, lr}
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020672BC
+ mov r1, #0x1c
+ bl FUN_02068678
+ cmp r0, #0
+ bne _02238000
+ mov r0, #1
+ pop {r3, pc}
+_02238000:
+ mov r0, #0
+ pop {r3, pc}
+ thumb_func_end MOD81_02237FE8
+
+ thumb_func_start MOD81_02238004
+MOD81_02238004: ; 0x02238004
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ bl OS_DisableInterrupts
+ add r6, r0, #0
+ add r0, r5, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0200CAB4
+ bl FUN_02033ED0
+ ldr r0, [r4, #0xc]
+ bl FUN_0200AB18
+ ldr r0, [r4, #0x10]
+ bl FUN_0200A8B8
+ ldr r0, [r4, #0x14]
+ bl FUN_02021A20
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x18]
+ bl FUN_0201FD58
+ bl FUN_02009FA0
+ add r0, r5, #0
+ bl FUN_0200627C
+ mov r0, #0x39
+ bl FUN_020168D0
+ mov r0, #0x3a
+ bl FUN_020168D0
+ add r0, r6, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD81_02238004
+
+ thumb_func_start MOD81_02238064
+MOD81_02238064: ; 0x02238064
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r3, [r4, #4]
+ cmp r3, #7
+ bhs _022380E0
+ ldr r1, [r4]
+ ldr r6, _022380E4 ; =0x0223CF90
+ lsl r2, r3, #4
+ ldr r1, [r1, #0x10]
+ ldr r6, [r6, r2]
+ tst r1, r6
+ beq _022380D0
+ mov r1, #0x15
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ cmp r1, #0
+ bne _02238098
+ ldr r1, _022380E8 ; =0x0223CF84
+ ldr r1, [r1, r2]
+ blx r1
+ mov r1, #0x15
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+_02238098:
+ ldr r2, [r4, #4]
+ mov r0, #0x15
+ lsl r3, r2, #4
+ ldr r2, _022380EC ; =0x0223CF88
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r2, [r2, r3]
+ add r1, r5, #0
+ blx r2
+ cmp r0, #0
+ beq _022380D8
+ ldr r1, [r4, #4]
+ mov r0, #0x15
+ lsl r2, r1, #4
+ ldr r1, _022380F0 ; =0x0223CF8C
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r1, [r1, r2]
+ blx r1
+ mov r0, #0x15
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ str r1, [r5]
+ b _022380D8
+_022380D0:
+ add r0, r3, #1
+ str r0, [r4, #4]
+ mov r0, #0
+ str r0, [r5]
+_022380D8:
+ bl MOD81_02238864
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_022380E0:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022380E4: .word 0x0223CF90
+_022380E8: .word 0x0223CF84
+_022380EC: .word 0x0223CF88
+_022380F0: .word 0x0223CF8C
+ thumb_func_end MOD81_02238064
+
+ thumb_func_start MOD81_022380F4
+MOD81_022380F4: ; 0x022380F4
+ push {r3, lr}
+ ldr r0, [r1, #0x18]
+ bl FUN_0201FDEC
+ bl FUN_02009F80
+ ldr r3, _02238110 ; =0x027E0000
+ ldr r1, _02238114 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r3, pc}
+ nop
+_02238110: .word 0x027E0000
+_02238114: .word 0x00003FF8
+ thumb_func_end MOD81_022380F4
+
+ thumb_func_start MOD81_02238118
+MOD81_02238118: ; 0x02238118
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0x39
+ add r6, r1, #0
+ add r1, r0, #0
+ add r1, #0xc7
+ bl FUN_02016998
+ add r4, r0, #0
+ ldr r0, _022381DC ; =0x00000000
+ str r0, [r5]
+ beq _022381D4
+ mov r0, #0x5d
+ mov r1, #6
+ add r2, sp, #4
+ mov r3, #0x39
+ bl FUN_02006C08
+ add r7, r0, #0
+ beq _02238152
+ mov r0, #0
+ add r1, r4, #0
+ mov r2, #0x60
+ bl MIi_CpuClear16
+ add r0, r7, #0
+ bl FUN_02016A18
+_02238152:
+ add r1, r4, #0
+ mov r0, #0
+ add r1, #0xec
+ str r0, [r1]
+ add r1, r4, #0
+ add r1, #0xe8
+ str r0, [r1]
+ add r1, r4, #0
+ add r1, #0xf0
+ str r0, [r1]
+ add r1, r4, #0
+ add r1, #0xf4
+ str r0, [r1]
+ add r1, r4, #0
+ add r1, #0xe4
+ str r5, [r1]
+ add r1, r4, #0
+ add r1, #0xf8
+ str r0, [r1]
+ add r1, r4, #0
+ add r1, #0xfc
+ str r6, [r1]
+ add r3, r4, #0
+ add r2, r0, #0
+_02238182:
+ add r1, r3, #0
+ add r1, #0xc4
+ add r0, r0, #1
+ add r3, r3, #4
+ str r2, [r1]
+ cmp r0, #8
+ blt _02238182
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _022381E0 ; =0x04000050
+ mov r1, #4
+ mov r2, #0xc
+ mov r3, #0x10
+ bl G2x_SetBlendAlpha_
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _022381E4 ; =0x04001050
+ mov r1, #4
+ mov r2, #0xc
+ mov r3, #0x10
+ bl G2x_SetBlendAlpha_
+ ldr r0, _022381E8 ; =MOD81_02238248
+ add r1, r4, #0
+ mov r2, #0x14
+ bl FUN_0200CA44
+ add r1, r4, #0
+ add r1, #0xc0
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022381D4
+ add r0, r4, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ mov r1, #1
+ str r1, [r0]
+_022381D4:
+ add r0, r4, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022381DC: .word 0x00000000
+_022381E0: .word 0x04000050
+_022381E4: .word 0x04001050
+_022381E8: .word MOD81_02238248
+ thumb_func_end MOD81_02238118
+
+ thumb_func_start MOD81_022381EC
+MOD81_022381EC: ; 0x022381EC
+ add r1, r0, #0
+ add r1, #0xe4
+ ldr r1, [r1]
+ ldr r1, [r1]
+ cmp r1, #1
+ bne _022381FE
+ mov r1, #1
+ add r0, #0xe8
+ str r1, [r0]
+_022381FE:
+ bx lr
+ thumb_func_end MOD81_022381EC
+
+ thumb_func_start MOD81_02238200
+MOD81_02238200: ; 0x02238200
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _02238246
+ mov r4, #0
+ add r5, r6, #0
+_02238212:
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02238224
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD81_0223840C
+_02238224:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _02238212
+ add r0, r6, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ mov r1, #0
+ str r1, [r0]
+ add r0, r6, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ bl FUN_0200CAB4
+ add r0, r6, #0
+ bl FUN_02016A18
+_02238246:
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD81_02238200
+
+ thumb_func_start MOD81_02238248
+MOD81_02238248: ; 0x02238248
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _022382C6
+ add r0, r4, #0
+ add r0, #0xf0
+ ldr r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xf0
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xf0
+ ldr r0, [r0]
+ cmp r0, #0
+ bgt _02238284
+ ldr r0, _0223832C ; =0x000006AE
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0x1e
+ add r0, #0xf0
+ str r1, [r0]
+ add r0, r4, #0
+ bl MOD81_02238358
+_02238284:
+ add r0, r4, #0
+ add r0, #0xec
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02238328
+ bl GX_BeginLoadBGExtPltt
+ bl GXS_BeginLoadBGExtPltt
+ add r0, r4, #0
+ mov r1, #0x60
+ bl DC_FlushRange
+ mov r1, #6
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ mov r2, #0x60
+ bl GX_LoadBGExtPltt
+ mov r1, #6
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ mov r2, #0x60
+ bl GXS_LoadBGExtPltt
+ bl GX_EndLoadBGExtPltt
+ bl GXS_EndLoadBGExtPltt
+ mov r0, #0
+ add r4, #0xec
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_022382C6:
+ add r0, r4, #0
+ add r0, #0xec
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02238308
+ bl GX_BeginLoadBGExtPltt
+ bl GXS_BeginLoadBGExtPltt
+ add r0, r4, #0
+ mov r1, #0x60
+ bl DC_FlushRange
+ mov r1, #6
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ mov r2, #0x60
+ bl GX_LoadBGExtPltt
+ mov r1, #6
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ mov r2, #0x60
+ bl GXS_LoadBGExtPltt
+ bl GX_EndLoadBGExtPltt
+ bl GXS_EndLoadBGExtPltt
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xec
+ str r1, [r0]
+_02238308:
+ add r0, r4, #0
+ add r0, #0xf4
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02238328
+ add r0, r4, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ mov r1, #0
+ str r1, [r0]
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02238328:
+ pop {r3, r4, r5, pc}
+ nop
+_0223832C: .word 0x000006AE
+ thumb_func_end MOD81_02238248
+
+ thumb_func_start MOD81_02238330
+MOD81_02238330: ; 0x02238330
+ push {r3, r4}
+ cmp r1, #0
+ blt _02238340
+ cmp r1, #0x60
+ bge _02238340
+ mov r4, #0
+ lsl r1, r1, #1
+ strh r4, [r0, r1]
+_02238340:
+ cmp r2, #0
+ blt _0223834C
+ cmp r2, #0x60
+ bge _0223834C
+ lsl r1, r2, #1
+ strh r3, [r0, r1]
+_0223834C:
+ mov r1, #1
+ add r0, #0xec
+ str r1, [r0]
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD81_02238330
+
+ thumb_func_start MOD81_02238358
+MOD81_02238358: ; 0x02238358
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02238404
+ mov r0, #0x39
+ mov r1, #0x18
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02238404
+ add r0, r5, #0
+ str r5, [r4]
+ add r0, #0xfc
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _0223838A
+ mov r0, #0
+ mvn r0, r0
+ b _0223838C
+_0223838A:
+ mov r0, #0xf
+_0223838C:
+ str r0, [r4, #4]
+ mov r0, #0
+ str r0, [r4, #0xc]
+ mov r0, #2
+ str r0, [r4, #8]
+ add r0, r5, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ add r1, r4, #0
+ str r0, [r4, #0x10]
+ add r0, r5, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r2, #0xa
+ str r0, [r4, #0x14]
+ ldr r0, _02238408 ; =MOD81_0223843C
+ bl FUN_0200CA44
+ add r1, r5, #0
+ add r1, #0xf8
+ ldr r1, [r1]
+ lsl r1, r1, #2
+ add r1, r5, r1
+ add r1, #0xc4
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022383FE
+ add r0, r5, #0
+ add r0, #0xf4
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0xf4
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0xf8
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ cmp r0, #8
+ blt _02238404
+ mov r0, #0
+ add r5, #0xf8
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_022383FE:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02238404:
+ pop {r3, r4, r5, pc}
+ nop
+_02238408: .word MOD81_0223843C
+ thumb_func_end MOD81_02238358
+
+ thumb_func_start MOD81_0223840C
+MOD81_0223840C: ; 0x0223840C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r5, #0
+ lsl r4, r1, #2
+ add r6, #0xc4
+ ldr r0, [r6, r4]
+ cmp r0, #0
+ beq _0223843A
+ bl FUN_0201B6C8
+ bl FUN_02016A18
+ ldr r0, [r6, r4]
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r6, r4]
+ add r0, r5, #0
+ add r0, #0xf4
+ ldr r0, [r0]
+ add r5, #0xf4
+ sub r0, r0, #1
+ str r0, [r5]
+_0223843A:
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD81_0223840C
+
+ thumb_func_start MOD81_0223843C
+MOD81_0223843C: ; 0x0223843C
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0xc]
+ add r1, r0, #1
+ str r1, [r4, #0xc]
+ ldr r0, [r4, #8]
+ cmp r1, r0
+ blt _022384A4
+ mov r3, #0
+ str r3, [r4, #0xc]
+ ldr r0, [r4, #0x14]
+ cmp r0, #1
+ bne _0223847C
+ ldr r1, [r4, #4]
+ ldr r0, [r4]
+ add r2, r1, #1
+ cmp r2, #0xf
+ blt _0223846E
+ bl MOD81_02238330
+ ldr r0, [r4]
+ ldr r1, [r4, #0x10]
+ bl MOD81_0223840C
+ pop {r4, pc}
+_0223846E:
+ ldr r3, _022384A8 ; =0x00007FFF
+ bl MOD81_02238330
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, pc}
+_0223847C:
+ ldr r2, [r4, #4]
+ ldr r0, [r4]
+ cmp r2, #0
+ bge _02238496
+ add r1, r2, #0
+ add r2, r2, #1
+ bl MOD81_02238330
+ ldr r0, [r4]
+ ldr r1, [r4, #0x10]
+ bl MOD81_0223840C
+ pop {r4, pc}
+_02238496:
+ ldr r3, _022384A8 ; =0x00007FFF
+ add r1, r2, #1
+ bl MOD81_02238330
+ ldr r0, [r4, #4]
+ sub r0, r0, #1
+ str r0, [r4, #4]
+_022384A4:
+ pop {r4, pc}
+ nop
+_022384A8: .word 0x00007FFF
+ thumb_func_end MOD81_0223843C
+
+ thumb_func_start MOD81_022384AC
+MOD81_022384AC: ; 0x022384AC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r0, [sp]
+ add r6, r1, #0
+ mov r0, #0x39
+ mov r1, #0x24
+ add r7, r2, #0
+ str r3, [sp, #4]
+ ldr r5, [sp, #0x28]
+ bl FUN_02016998
+ add r4, r0, #0
+ ldr r0, _0223850C ; =0x00000001
+ str r0, [r5]
+ beq _02238504
+ ldr r1, [sp]
+ str r1, [r4]
+ str r6, [r4, #8]
+ ldr r1, [sp, #4]
+ str r7, [r4, #0xc]
+ str r1, [r4, #0x10]
+ ldr r1, [sp, #0x20]
+ str r1, [r4, #0x14]
+ cmp r6, r7
+ bge _022384E0
+ mov r0, #0
+_022384E0:
+ str r0, [r4, #0x18]
+ ldr r0, [sp, #0x24]
+ mov r2, #0
+ str r0, [r4, #0x1c]
+ str r5, [r4, #4]
+ ldr r0, _02238510 ; =MOD81_02238514
+ add r1, r4, #0
+ str r2, [r5]
+ bl FUN_0200CA60
+ str r0, [r4, #0x20]
+ cmp r0, #0
+ bne _02238504
+ mov r0, #1
+ str r0, [r5]
+ add r0, r4, #0
+ bl FUN_02016A18
+_02238504:
+ add r0, r4, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223850C: .word 0x00000001
+_02238510: .word MOD81_02238514
+ thumb_func_end MOD81_022384AC
+
+ thumb_func_start MOD81_02238514
+MOD81_02238514: ; 0x02238514
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0x10]
+ mul r1, r0
+ asr r2, r1, #0xc
+ asr r1, r2, #4
+ lsr r1, r1, #0x1b
+ add r1, r2, r1
+ asr r2, r1, #5
+ ldr r1, [r4, #0x18]
+ cmp r1, #0
+ beq _02238536
+ cmp r1, #1
+ beq _0223854C
+ b _02238560
+_02238536:
+ ldr r1, [r4, #0xc]
+ add r0, r0, r2
+ cmp r0, r1
+ bge _02238542
+ str r0, [r4, #8]
+ b _02238560
+_02238542:
+ str r1, [r4, #8]
+ ldr r0, [r4, #4]
+ mov r1, #1
+ str r1, [r0]
+ b _02238560
+_0223854C:
+ ldr r1, [r4, #0xc]
+ sub r0, r0, r2
+ cmp r0, r1
+ ble _02238558
+ str r0, [r4, #8]
+ b _02238560
+_02238558:
+ str r1, [r4, #8]
+ ldr r0, [r4, #4]
+ mov r1, #1
+ str r1, [r0]
+_02238560:
+ add r0, r4, #0
+ bl MOD81_02238588
+ ldr r0, [r4, #4]
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223857C
+ add r0, r4, #0
+ bl MOD81_02238898
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+_0223857C:
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x14]
+ add r0, r1, r0
+ str r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD81_02238514
+
+ thumb_func_start MOD81_02238588
+MOD81_02238588: ; 0x02238588
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ add r2, sp, #4
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #8]
+ mov r3, #0x80
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r0, #2
+ ldr r0, _022385CC ; =0x0223CF6C
+ ldr r0, [r0, r1]
+ mov r1, #2
+ str r0, [sp]
+ ldr r0, [r4]
+ bl FUN_02017BD0
+ ldr r0, [r4, #0x1c]
+ add r2, sp, #4
+ lsl r1, r0, #2
+ ldr r0, _022385CC ; =0x0223CF6C
+ mov r3, #0x80
+ ldr r0, [r0, r1]
+ mov r1, #6
+ str r0, [sp]
+ ldr r0, [r4]
+ bl FUN_02017BD0
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .align 2, 0
+_022385CC: .word 0x0223CF6C
+ thumb_func_end MOD81_02238588
+
+ thumb_func_start MOD81_022385D0
+MOD81_022385D0: ; 0x022385D0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ add r5, r0, #0
+ ldr r0, [sp, #0x58]
+ add r4, r1, #0
+ str r2, [sp, #0x14]
+ str r3, [sp, #0x18]
+ cmp r0, #0
+ beq _022385E8
+ mov r6, #0x19
+ lsl r6, r6, #8
+ b _022385EC
+_022385E8:
+ mov r6, #0x32
+ lsl r6, r6, #6
+_022385EC:
+ mov r0, #0x39
+ add r1, r6, #0
+ bl FUN_020169D8
+ add r7, r0, #0
+ beq _02238690
+ ldr r3, _022386B8 ; =0x0223CF74
+ add r2, sp, #0x24
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ cmp r4, #0
+ ldr r0, [r5]
+ bne _0223860E
+ ldr r4, [r0]
+ b _02238610
+_0223860E:
+ ldr r4, [r0, #4]
+_02238610:
+ add r0, r4, #0
+ bl FUN_02066A6C
+ str r0, [sp, #0x20]
+ add r0, sp, #0x34
+ add r1, r4, #0
+ mov r2, #2
+ bl FUN_02068B70
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl FUN_020672BC
+ str r0, [sp, #0x1c]
+ add r0, r4, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020672BC
+ lsl r0, r0, #0x10
+ ldr r1, [sp, #0x58]
+ lsr r0, r0, #0x10
+ cmp r1, #0
+ beq _02238648
+ ldr r1, [sp, #0x2c]
+ lsl r1, r1, #1
+ str r1, [sp, #0x2c]
+_02238648:
+ ldr r1, [sp, #0x1c]
+ str r7, [sp]
+ str r1, [sp, #4]
+ ldr r1, [sp, #0x58]
+ mov r2, #0x39
+ str r1, [sp, #8]
+ mov r1, #2
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ add r1, sp, #0x24
+ ldrh r0, [r1, #0x10]
+ ldrh r1, [r1, #0x12]
+ add r3, sp, #0x24
+ bl FUN_02012530
+ add r0, r7, #0
+ add r1, r6, #0
+ bl DC_FlushRange
+ ldr r1, [sp, #0x14]
+ mov r0, #0
+ str r0, [sp]
+ lsl r1, r1, #0x18
+ ldr r0, [r5, #8]
+ lsr r1, r1, #0x18
+ add r2, r7, #0
+ add r3, r6, #0
+ bl FUN_02017E14
+ ldr r1, [sp, #0x20]
+ add r0, r4, #0
+ bl FUN_02066A94
+ add r0, r7, #0
+ bl FUN_02016A18
+_02238690:
+ ldr r0, [sp, #0x14]
+ cmp r0, #4
+ blo _0223869A
+ mov r2, #4
+ b _0223869C
+_0223869A:
+ mov r2, #0
+_0223869C:
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x39
+ ldr r3, [sp, #0x18]
+ str r0, [sp, #4]
+ add r1, sp, #0x24
+ ldrh r0, [r1, #0x10]
+ ldrh r1, [r1, #0x14]
+ lsl r3, r3, #5
+ bl FUN_02006930
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ nop
+_022386B8: .word 0x0223CF74
+ thumb_func_end MOD81_022385D0
+
+ thumb_func_start MOD81_022386BC
+MOD81_022386BC: ; 0x022386BC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ cmp r1, #0
+ bne _022386CE
+ mov r1, #0xc6
+ b _022386DE
+_022386CE:
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _022386DC
+ mov r1, #0xc7
+ b _022386DE
+_022386DC:
+ mov r1, #0xc6
+_022386DE:
+ mov r0, #0x39
+ str r0, [sp]
+ mov r0, #7
+ mov r2, #0
+ add r3, sp, #0x1c
+ bl FUN_02006BDC
+ add r7, r0, #0
+ beq _02238746
+ mov r0, #0xa
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x1c]
+ ldr r2, [sp, #0x38]
+ add r0, #0xc
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ mov r0, #0x20
+ ldr r3, [sp, #0x3c]
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x18]
+ lsl r1, r4, #0x18
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ ldr r0, [r5, #8]
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018170
+ mov r0, #0xa
+ str r0, [sp]
+ str r0, [sp, #4]
+ lsl r0, r6, #0x18
+ ldr r2, [sp, #0x38]
+ ldr r3, [sp, #0x3c]
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ lsl r1, r4, #0x18
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ ldr r0, [r5, #8]
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_020186B4
+ add r0, r7, #0
+ bl FUN_02016A18
+_02238746:
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD81_022386BC
+
+ thumb_func_start MOD81_0223874C
+MOD81_0223874C: ; 0x0223874C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r3, #0
+ mov r0, #0x3a
+ add r3, r5, #0
+ str r0, [sp]
+ add r1, r2, #0
+ add r0, r4, #0
+ mov r2, #1
+ add r3, #8
+ bl FUN_02006C30
+ str r0, [r5]
+ mov r0, #0x3a
+ add r3, r5, #0
+ str r0, [sp]
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #1
+ add r3, #0xc
+ bl FUN_02006C5C
+ str r0, [r5, #4]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223874C
+
+ thumb_func_start MOD81_02238784
+MOD81_02238784: ; 0x02238784
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _02238796
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4]
+_02238796:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _022387A4
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #4]
+_022387A4:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_02238784
+
+ thumb_func_start MOD81_022387A8
+MOD81_022387A8: ; 0x022387A8
+ str r2, [r0]
+ str r3, [r0, #8]
+ ldr r2, [r1, #8]
+ str r2, [r0, #0xc]
+ ldr r1, [r1, #0xc]
+ ldr r2, [sp]
+ str r1, [r0, #0x10]
+ add r1, r0, #0
+ add r1, #0x20
+ strb r2, [r1]
+ mov r1, #0
+ str r1, [r0, #4]
+ str r1, [r0, #0x14]
+ str r1, [r0, #0x18]
+ str r1, [r0, #0x1c]
+ bx lr
+ thumb_func_end MOD81_022387A8
+
+ thumb_func_start MOD81_022387C8
+MOD81_022387C8: ; 0x022387C8
+ push {r4, lr}
+ sub sp, #0x20
+ ldr r0, [r0, #0x18]
+ str r0, [sp]
+ lsl r0, r2, #0xc
+ str r0, [sp, #8]
+ lsl r0, r3, #0xc
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x28]
+ str r1, [sp, #4]
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x2c]
+ str r0, [sp, #0x18]
+ mov r0, #0x39
+ str r0, [sp, #0x1c]
+ add r0, sp, #0
+ bl FUN_0201FF84
+ add r4, r0, #0
+ beq _02238804
+ mov r1, #1
+ bl FUN_020200BC
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_020200D8
+_02238804:
+ add r0, r4, #0
+ add sp, #0x20
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_022387C8
+
+ thumb_func_start MOD81_0223880C
+MOD81_0223880C: ; 0x0223880C
+ ldr r0, [r0, #8]
+ bx lr
+ thumb_func_end MOD81_0223880C
+
+ thumb_func_start MOD81_02238810
+MOD81_02238810: ; 0x02238810
+ ldr r0, [r0, #0xc]
+ bx lr
+ thumb_func_end MOD81_02238810
+
+ thumb_func_start MOD81_02238814
+MOD81_02238814: ; 0x02238814
+ ldr r0, [r0, #0x10]
+ bx lr
+ thumb_func_end MOD81_02238814
+
+ thumb_func_start MOD81_02238818
+MOD81_02238818: ; 0x02238818
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD81_02238818
+
+ thumb_func_start MOD81_02238820
+MOD81_02238820: ; 0x02238820
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD81_02238820
+
+ thumb_func_start MOD81_02238828
+MOD81_02238828: ; 0x02238828
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD81_02238828
+
+ thumb_func_start MOD81_02238830
+MOD81_02238830: ; 0x02238830
+ mov r1, #0x53
+ lsl r1, r1, #2
+ ldrh r0, [r0, r1]
+ bx lr
+ thumb_func_end MOD81_02238830
+
+ thumb_func_start MOD81_02238838
+MOD81_02238838: ; 0x02238838
+ ldr r1, _02238840 ; =0x0000014E
+ ldrh r0, [r0, r1]
+ bx lr
+ nop
+_02238840: .word 0x0000014E
+ thumb_func_end MOD81_02238838
+
+ thumb_func_start MOD81_02238844
+MOD81_02238844: ; 0x02238844
+ ldr r0, [r0]
+ ldr r3, _0223884C ; =FUN_02025084
+ ldr r0, [r0, #0x14]
+ bx r3
+ .align 2, 0
+_0223884C: .word FUN_02025084
+ thumb_func_end MOD81_02238844
+
+ thumb_func_start MOD81_02238850
+MOD81_02238850: ; 0x02238850
+ ldr r0, [r0]
+ ldr r0, [r0, #0x10]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD81_02238850
+
+ thumb_func_start MOD81_02238858
+MOD81_02238858: ; 0x02238858
+ ldr r0, _02238860 ; =0x0223D3C0
+ mov r1, #0
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+_02238860: .word 0x0223D3C0
+ thumb_func_end MOD81_02238858
+
+ thumb_func_start MOD81_02238864
+MOD81_02238864: ; 0x02238864
+ push {r4, r5, r6, lr}
+ ldr r6, _02238890 ; =0x0223D3C0
+ ldr r0, [r6]
+ cmp r0, #0
+ beq _0223888C
+ mov r4, #0
+ cmp r0, #0
+ ble _02238886
+ ldr r5, _02238894 ; =0x0223D3C4
+_02238876:
+ ldr r0, [r5]
+ bl FUN_02016A18
+ ldr r0, [r6]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blt _02238876
+_02238886:
+ ldr r0, _02238890 ; =0x0223D3C0
+ mov r1, #0
+ str r1, [r0]
+_0223888C:
+ pop {r4, r5, r6, pc}
+ nop
+_02238890: .word 0x0223D3C0
+_02238894: .word 0x0223D3C4
+ thumb_func_end MOD81_02238864
+
+ thumb_func_start MOD81_02238898
+MOD81_02238898: ; 0x02238898
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _022388B8 ; =0x0223D3C0
+ ldr r0, [r0]
+ cmp r0, #0x20
+ blt _022388A8
+ bl ErrorHandling
+_022388A8:
+ ldr r0, _022388B8 ; =0x0223D3C0
+ ldr r2, [r0]
+ add r1, r2, #1
+ str r1, [r0]
+ ldr r0, _022388BC ; =0x0223D3C4
+ lsl r1, r2, #2
+ str r4, [r0, r1]
+ pop {r4, pc}
+ .align 2, 0
+_022388B8: .word 0x0223D3C0
+_022388BC: .word 0x0223D3C4
+ thumb_func_end MOD81_02238898
+
+ thumb_func_start MOD81_022388C0
+MOD81_022388C0: ; 0x022388C0
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r4, r1, #0
+ mov r0, #0x3a
+ mov r1, #0x20
+ add r5, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r6, r0, #0
+ beq _02238906
+ ldr r3, [sp]
+ add r1, r4, #0
+ add r2, r5, #0
+ bl MOD81_02238CA0
+ mov r1, #0x8c
+ mov r0, #0x3a
+ mul r1, r7
+ bl FUN_02016998
+ str r0, [r6, #0x18]
+ mov r4, #0
+ str r7, [r6, #0x1c]
+ cmp r7, #0
+ bls _02238906
+ add r5, r4, #0
+_022388F6:
+ ldr r0, [r6, #0x18]
+ add r0, r0, r5
+ bl MOD81_02238A38
+ add r4, r4, #1
+ add r5, #0x8c
+ cmp r4, r7
+ blo _022388F6
+_02238906:
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD81_022388C0
+
+ thumb_func_start MOD81_0223890C
+MOD81_0223890C: ; 0x0223890C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x1c]
+ mov r6, #0
+ cmp r0, #0
+ bls _0223892C
+ add r4, r6, #0
+_0223891A:
+ ldr r0, [r5, #0x18]
+ add r0, r0, r4
+ bl MOD81_02238A6C
+ ldr r0, [r5, #0x1c]
+ add r6, r6, #1
+ add r4, #0x8c
+ cmp r6, r0
+ blo _0223891A
+_0223892C:
+ ldr r0, [r5, #0x18]
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl MOD81_02238D0C
+ add r0, r5, #0
+ bl FUN_02016A18
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD81_0223890C
+
+ thumb_func_start MOD81_02238940
+MOD81_02238940: ; 0x02238940
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ mov r1, #0
+ add r5, r0, #0
+ mov r0, #0x11
+ add r2, r1, #0
+ bl FUN_020BB1C0
+ bl FUN_0201EBA4
+ ldr r0, [r5, #0x1c]
+ mov r6, #0
+ cmp r0, #0
+ bls _02238976
+ add r4, r6, #0
+_0223895E:
+ ldr r0, [r5, #0x18]
+ add r0, r0, r4
+ ldr r1, [r0, #0x64]
+ cmp r1, #0
+ beq _0223896C
+ bl MOD81_02238988
+_0223896C:
+ ldr r0, [r5, #0x1c]
+ add r6, r6, #1
+ add r4, #0x8c
+ cmp r6, r0
+ blo _0223895E
+_02238976:
+ mov r2, #1
+ mov r0, #0x12
+ add r1, sp, #0
+ str r2, [sp]
+ bl FUN_020BB1C0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD81_02238940
+
+ thumb_func_start MOD81_02238988
+MOD81_02238988: ; 0x02238988
+ push {r4, lr}
+ sub sp, #0x50
+ add r4, r0, #0
+ add r0, sp, #0x2c
+ bl MTX_Identity33_
+ add r0, r4, #0
+ add r0, #0x80
+ ldrh r0, [r0]
+ ldr r3, _02238A34 ; =0x020FFA38
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #8
+ bl MTX_RotX33_
+ add r1, sp, #0x2c
+ add r0, sp, #8
+ add r2, r1, #0
+ bl MTX_Concat33
+ add r0, r4, #0
+ add r0, #0x82
+ ldrh r0, [r0]
+ ldr r3, _02238A34 ; =0x020FFA38
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #8
+ bl MTX_RotY33_
+ add r1, sp, #0x2c
+ add r0, sp, #8
+ add r2, r1, #0
+ bl MTX_Concat33
+ add r0, r4, #0
+ add r0, #0x84
+ ldrh r0, [r0]
+ ldr r3, _02238A34 ; =0x020FFA38
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #8
+ bl MTX_RotZ33_
+ add r1, sp, #0x2c
+ add r0, sp, #8
+ add r2, r1, #0
+ bl MTX_Concat33
+ add r0, r4, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ cmp r0, #0x1f
+ beq _02238A20
+ str r0, [sp]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ str r0, [sp, #4]
+ bl FUN_020B8390
+_02238A20:
+ add r1, r4, #0
+ add r0, r4, #4
+ add r4, #0x74
+ add r1, #0x68
+ add r2, sp, #0x2c
+ add r3, r4, #0
+ bl FUN_0201B26C
+ add sp, #0x50
+ pop {r4, pc}
+ .align 2, 0
+_02238A34: .word 0x020FFA38
+ thumb_func_end MOD81_02238988
+
+ thumb_func_start MOD81_02238A38
+MOD81_02238A38: ; 0x02238A38
+ mov r1, #0
+ str r1, [r0, #0x64]
+ add r2, r0, #0
+ str r1, [r0]
+ add r2, #0x84
+ strh r1, [r2]
+ mov r2, #0x84
+ ldrsh r3, [r0, r2]
+ add r2, r0, #0
+ add r2, #0x82
+ strh r3, [r2]
+ mov r2, #0x82
+ ldrsh r3, [r0, r2]
+ add r2, r0, #0
+ add r2, #0x80
+ strh r3, [r2]
+ mov r2, #1
+ lsl r2, r2, #0xc
+ str r2, [r0, #0x7c]
+ str r2, [r0, #0x78]
+ str r2, [r0, #0x74]
+ str r1, [r0, #0x70]
+ str r1, [r0, #0x6c]
+ str r1, [r0, #0x68]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD81_02238A38
+
+ thumb_func_start MOD81_02238A6C
+MOD81_02238A6C: ; 0x02238A6C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _02238A80
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4]
+ str r0, [r4, #0x64]
+_02238A80:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_02238A6C
+
+ thumb_func_start MOD81_02238A84
+MOD81_02238A84: ; 0x02238A84
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ ldr r4, [r0, #0x18]
+ add r6, r1, #0
+ mov r0, #0x8c
+ mul r6, r0
+ add r7, r2, #0
+ mov r0, #1
+ str r0, [sp]
+ str r3, [sp, #4]
+ add r1, r3, #0
+ add r0, r7, #0
+ mov r2, #0
+ mov r3, #0x3a
+ add r5, r4, r6
+ bl FUN_02006C98
+ str r0, [r4, r6]
+ ldr r1, [sp, #4]
+ add r0, r7, #0
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r4, r6]
+ bl DC_FlushRange
+ ldr r0, [r4, r6]
+ cmp r0, #0
+ beq _02238B02
+ bl FUN_020BC13C
+ str r0, [r5, #0x58]
+ ldrh r1, [r0, #0xe]
+ add r1, r0, r1
+ ldr r1, [r1, #0xc]
+ add r0, r0, r1
+ str r0, [r5, #0x5c]
+ ldr r0, [r5]
+ bl FUN_020BC0FC
+ str r0, [r5, #0x60]
+ bl FUN_0201B3C4
+ ldr r0, [r5]
+ ldr r1, [r5, #0x60]
+ bl FUN_0201B3A8
+ ldr r1, [r5, #0x5c]
+ add r0, r5, #4
+ bl FUN_020B80B4
+ ldr r0, [sp, #0x20]
+ mov r1, #0x1f
+ str r0, [r5, #0x68]
+ ldr r0, [sp, #0x24]
+ str r0, [r5, #0x6c]
+ ldr r0, [sp, #0x28]
+ str r0, [r5, #0x70]
+ add r0, r5, #0
+ add r0, #0x88
+ str r1, [r0]
+ ldr r0, [sp, #0x2c]
+ str r0, [r5, #0x64]
+_02238B02:
+ add r0, r5, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD81_02238A84
+
+ thumb_func_start MOD81_02238B08
+MOD81_02238B08: ; 0x02238B08
+ add r2, r0, #0
+ add r2, #0x68
+ add r3, r1, #0
+ ldmia r2!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r2]
+ str r0, [r3]
+ bx lr
+ thumb_func_end MOD81_02238B08
+
+ thumb_func_start MOD81_02238B18
+MOD81_02238B18: ; 0x02238B18
+ add r3, r1, #0
+ add r2, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, #0x68
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ bx lr
+ thumb_func_end MOD81_02238B18
+
+ thumb_func_start MOD81_02238B28
+MOD81_02238B28: ; 0x02238B28
+ add r2, r0, #0
+ add r2, #0x80
+ ldrh r2, [r2]
+ strh r2, [r1]
+ add r2, r0, #0
+ add r2, #0x82
+ ldrh r2, [r2]
+ add r0, #0x84
+ strh r2, [r1, #2]
+ ldrh r0, [r0]
+ strh r0, [r1, #4]
+ bx lr
+ thumb_func_end MOD81_02238B28
+
+ thumb_func_start MOD81_02238B40
+MOD81_02238B40: ; 0x02238B40
+ ldrh r3, [r1]
+ add r2, r0, #0
+ add r2, #0x80
+ strh r3, [r2]
+ add r2, r0, #0
+ ldrh r3, [r1, #2]
+ add r2, #0x82
+ add r0, #0x84
+ strh r3, [r2]
+ ldrh r1, [r1, #4]
+ strh r1, [r0]
+ bx lr
+ thumb_func_end MOD81_02238B40
+
+ thumb_func_start MOD81_02238B58
+MOD81_02238B58: ; 0x02238B58
+ str r1, [r0, #0x64]
+ bx lr
+ thumb_func_end MOD81_02238B58
+
+ thumb_func_start MOD81_02238B5C
+MOD81_02238B5C: ; 0x02238B5C
+ push {r3, lr}
+ add r2, r0, #0
+ add r2, #0x88
+ str r1, [r2]
+ cmp r1, #0x1f
+ ldr r0, [r0, #0x5c]
+ beq _02238B76
+ mov r2, #0x1f
+ mov r1, #0
+ lsl r2, r2, #0x10
+ bl FUN_020BC02C
+ pop {r3, pc}
+_02238B76:
+ mov r2, #0x1f
+ mov r1, #1
+ lsl r2, r2, #0x10
+ bl FUN_020BC02C
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD81_02238B5C
+
+ thumb_func_start MOD81_02238B84
+MOD81_02238B84: ; 0x02238B84
+ str r1, [r0, #0x74]
+ str r1, [r0, #0x78]
+ str r1, [r0, #0x7c]
+ bx lr
+ thumb_func_end MOD81_02238B84
+
+ thumb_func_start MOD81_02238B8C
+MOD81_02238B8C: ; 0x02238B8C
+ push {r3, r4, lr}
+ sub sp, #0x4c
+ add r4, r0, #0
+ add r0, sp, #0x28
+ bl MTX_Identity33_
+ add r0, r4, #0
+ add r0, #0x80
+ ldrh r0, [r0]
+ ldr r3, _02238C3C ; =0x020FFA38
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #4
+ bl MTX_RotX33_
+ add r1, sp, #0x28
+ add r0, sp, #4
+ add r2, r1, #0
+ bl MTX_Concat33
+ add r0, r4, #0
+ add r0, #0x82
+ ldrh r0, [r0]
+ ldr r3, _02238C3C ; =0x020FFA38
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #4
+ bl MTX_RotY33_
+ add r1, sp, #0x28
+ add r0, sp, #4
+ add r2, r1, #0
+ bl MTX_Concat33
+ add r0, r4, #0
+ add r0, #0x84
+ ldrh r0, [r0]
+ ldr r3, _02238C3C ; =0x020FFA38
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #4
+ bl MTX_RotZ33_
+ add r1, sp, #0x28
+ add r0, sp, #4
+ add r2, r1, #0
+ bl MTX_Concat33
+ mov r1, #0
+ mov r0, #0x11
+ add r2, r1, #0
+ bl FUN_020BB1C0
+ bl FUN_0201EBA4
+ add r1, r4, #0
+ ldr r0, [r4, #0x5c]
+ add r4, #0x74
+ add r1, #0x68
+ add r2, sp, #0x28
+ add r3, r4, #0
+ bl FUN_0201B6D0
+ add r4, r0, #0
+ mov r2, #1
+ mov r0, #0x12
+ add r1, sp, #0
+ str r2, [sp]
+ bl FUN_020BB1C0
+ add r0, r4, #0
+ add sp, #0x4c
+ pop {r3, r4, pc}
+ .align 2, 0
+_02238C3C: .word 0x020FFA38
+ thumb_func_end MOD81_02238B8C
+
+ thumb_func_start MOD81_02238C40
+MOD81_02238C40: ; 0x02238C40
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r4, r1, #0
+ ldr r1, [r2]
+ add r0, sp, #0
+ bl FUN_0201F03C
+ add r2, sp, #0
+ ldmia r2!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldr r0, [r2]
+ str r0, [r4]
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_02238C40
+
+ thumb_func_start MOD81_02238C60
+MOD81_02238C60: ; 0x02238C60
+ ldr r3, _02238C6C ; =FUN_0201EF90
+ add r2, r0, #0
+ add r0, r1, #0
+ ldr r1, [r2]
+ bx r3
+ nop
+_02238C6C: .word FUN_0201EF90
+ thumb_func_end MOD81_02238C60
+
+ thumb_func_start MOD81_02238C70
+MOD81_02238C70: ; 0x02238C70
+ ldr r3, _02238C7C ; =FUN_0201EFB4
+ add r2, r0, #0
+ add r0, r1, #0
+ ldr r1, [r2]
+ bx r3
+ nop
+_02238C7C: .word FUN_0201EFB4
+ thumb_func_end MOD81_02238C70
+
+ thumb_func_start MOD81_02238C80
+MOD81_02238C80: ; 0x02238C80
+ ldr r3, _02238C8C ; =FUN_0201EE2C
+ add r2, r0, #0
+ add r0, r1, #0
+ ldr r1, [r2]
+ bx r3
+ nop
+_02238C8C: .word FUN_0201EE2C
+ thumb_func_end MOD81_02238C80
+
+ thumb_func_start MOD81_02238C90
+MOD81_02238C90: ; 0x02238C90
+ ldr r3, _02238C9C ; =FUN_0201EEF0
+ add r2, r0, #0
+ add r0, r1, #0
+ ldr r1, [r2]
+ bx r3
+ nop
+_02238C9C: .word FUN_0201EEF0
+ thumb_func_end MOD81_02238C90
+
+ thumb_func_start MOD81_02238CA0
+MOD81_02238CA0: ; 0x02238CA0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ mov r0, #0x3a
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl FUN_0201EB64
+ str r0, [r5]
+ str r4, [r5, #4]
+ str r6, [r5, #8]
+ mov r1, #0x4b
+ add r2, r5, #0
+ str r7, [r5, #0xc]
+ mov r0, #0
+ strh r0, [r5, #0x10]
+ strh r0, [r5, #0x12]
+ strh r0, [r5, #0x14]
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ ldr r3, _02238D08 ; =0x00000FA4
+ str r0, [sp, #8]
+ add r0, r5, #4
+ lsl r1, r1, #0xe
+ add r2, #0x10
+ bl FUN_0201ECA8
+ mov r1, #0
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x10]
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x14]
+ ldr r1, [r5]
+ add r0, sp, #0xc
+ bl FUN_0201EC58
+ ldr r0, [r5]
+ bl FUN_0201EB8C
+ mov r1, #0xfa
+ ldr r2, [r5]
+ mov r0, #0
+ lsl r1, r1, #0xe
+ bl FUN_0201EC94
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02238D08: .word 0x00000FA4
+ thumb_func_end MOD81_02238CA0
+
+ thumb_func_start MOD81_02238D0C
+MOD81_02238D0C: ; 0x02238D0C
+ ldr r3, _02238D14 ; =FUN_0201EB70
+ ldr r0, [r0]
+ bx r3
+ nop
+_02238D14: .word FUN_0201EB70
+ thumb_func_end MOD81_02238D0C
+
+ thumb_func_start MOD81_02238D18
+MOD81_02238D18: ; 0x02238D18
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x3a
+ mov r1, #0x6c
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02238D60
+ str r5, [r4]
+ mov r0, #0
+ str r0, [r4, #4]
+ add r0, r5, #0
+ bl MOD81_0223880C
+ str r0, [r4, #0x40]
+ mov r0, #0x3a
+ bl FUN_02006D98
+ str r0, [r4, #0xc]
+ mov r0, #0
+ str r0, [r4, #0x10]
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ mov r1, #0x3a
+ bl FUN_020219F4
+ str r0, [r4, #0x54]
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ mov r1, #0x3a
+ bl FUN_020219F4
+ str r0, [r4, #0x58]
+ mov r0, #0
+ str r0, [r4, #0x64]
+ str r0, [r4, #0x68]
+_02238D60:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD81_02238D18
+
+ thumb_func_start MOD81_02238D64
+MOD81_02238D64: ; 0x02238D64
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02238DC2
+ bl MOD81_0223951C
+ add r0, r4, #0
+ bl MOD81_022395E8
+ add r0, r4, #0
+ bl MOD81_02239498
+ ldr r0, [r4, #0x54]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x58]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x5c]
+ bl MOD81_0223890C
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0x40]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0x40]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ add r0, #0x44
+ bl FUN_02019178
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _02238DB6
+ bl FUN_02007534
+_02238DB6:
+ ldr r0, [r4, #0xc]
+ bl FUN_020072E8
+ add r0, r4, #0
+ bl FUN_02016A18
+_02238DC2:
+ pop {r4, pc}
+ thumb_func_end MOD81_02238D64
+
+ thumb_func_start MOD81_02238DC4
+MOD81_02238DC4: ; 0x02238DC4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r2, [r4]
+ add r5, r0, #0
+ cmp r2, #4
+ bhs _02238DF2
+ lsl r3, r2, #2
+ ldr r2, _02238DF8 ; =0x0223CFFC
+ add r1, r5, #4
+ ldr r2, [r2, r3]
+ blx r2
+ cmp r0, #0
+ beq _02238DE8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r5, #4]
+_02238DE8:
+ add r0, r5, #0
+ bl MOD81_02238DFC
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02238DF2:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_02238DF8: .word 0x0223CFFC
+ thumb_func_end MOD81_02238DC4
+
+ thumb_func_start MOD81_02238DFC
+MOD81_02238DFC: ; 0x02238DFC
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ bl G3X_ResetMtxStack
+ mov r1, #0
+ mov r0, #0x11
+ add r2, r1, #0
+ bl FUN_020BB1C0
+ bl FUN_020BB394
+ bl FUN_020B02C8
+ ldr r0, [r4, #0xc]
+ bl FUN_020081C4
+ ldr r0, [r4, #0xc]
+ bl FUN_02006ED4
+ mov r2, #1
+ str r2, [sp]
+ mov r0, #0x12
+ add r1, sp, #0
+ bl FUN_020BB1C0
+ ldr r0, [r4, #0x5c]
+ bl MOD81_02238940
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_020222B4
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_02238DFC
+
+ thumb_func_start MOD81_02238E44
+MOD81_02238E44: ; 0x02238E44
+ push {r3, r4, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ ldr r0, _02239040 ; =0x0223D054
+ bl FUN_0201E66C
+ ldr r2, _02239044 ; =0x04000304
+ ldr r0, _02239048 ; =0xFFFF7FFF
+ ldrh r1, [r2]
+ and r0, r1
+ strh r0, [r2]
+ ldr r0, _0223904C ; =0x0223D00C
+ bl FUN_02016BBC
+ ldr r0, [r4, #0x40]
+ ldr r2, _02239050 ; =0x0223D01C
+ mov r1, #1
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x40]
+ ldr r2, _02239054 ; =0x0223D038
+ mov r1, #2
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x40]
+ ldr r2, _02239054 ; =0x0223D038
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r2, _02239058 ; =0x04000008
+ mov r0, #3
+ ldrh r3, [r2]
+ mov r1, #1
+ bic r3, r0
+ add r0, r3, #0
+ orr r0, r1
+ strh r0, [r2]
+ mov r2, #0
+ str r2, [sp]
+ ldr r0, [r4, #0x40]
+ add r3, r1, #0
+ bl FUN_02017F48
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_02018540
+ ldr r0, [r4]
+ bl MOD81_02238844
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x3a
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ mov r2, #0x6d
+ mov r3, #2
+ bl FUN_0200CD68
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ add r1, r4, #0
+ str r0, [sp, #8]
+ mov r2, #1
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldr r0, [r4, #0x40]
+ add r1, #0x44
+ mov r3, #2
+ bl FUN_02019064
+ add r0, r4, #0
+ add r0, #0x44
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r3, #0x20
+ str r3, [sp]
+ mov r0, #0x3a
+ str r0, [sp, #4]
+ mov r0, #0xe
+ mov r1, #7
+ mov r2, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x40]
+ mov r0, #0x5d
+ mov r1, #0x16
+ 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, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x40]
+ mov r0, #0x5d
+ mov r1, #0x15
+ mov r3, #2
+ bl FUN_020068C8
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x3a
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x5d
+ mov r1, #0x17
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x40]
+ mov r0, #0x5d
+ mov r1, #0x16
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x40]
+ mov r0, #0x5d
+ mov r1, #0x15
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x3a
+ str r0, [sp, #4]
+ mov r0, #0x5d
+ mov r1, #0x17
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ bl FUN_02017CD0
+ add r0, r4, #0
+ bl MOD81_022392D8
+ mov r1, #0
+ mov r0, #1
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD81_022388C0
+ str r0, [r4, #0x5c]
+ add r0, r4, #0
+ bl MOD81_022393A4
+ str r0, [r4, #0x10]
+ mov r1, #0
+ mov r0, #0x6a
+ str r1, [sp]
+ lsl r0, r0, #0xa
+ str r0, [sp, #4]
+ ldr r0, _0223905C ; =0x00073800
+ mov r2, #0x5d
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r4, #0x5c]
+ mov r3, #0x1b
+ bl MOD81_02238A84
+ ldr r2, _02239060 ; =0x0223CFF4
+ str r0, [r4, #0x60]
+ ldrh r3, [r2]
+ add r0, sp, #0x14
+ add r1, sp, #0x14
+ strh r3, [r0]
+ ldrh r3, [r2, #2]
+ ldrh r2, [r2, #4]
+ strh r3, [r0, #2]
+ strh r2, [r0, #4]
+ ldr r0, [r4, #0x60]
+ bl MOD81_02238B40
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add r0, r4, #0
+ bl MOD81_022393F4
+ ldr r0, _02239064 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ bl FUN_02033E74
+ mov r0, #1
+ mov r1, #0x39
+ bl FUN_02033F04
+ mov r0, #0x10
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #1
+ add sp, #0x1c
+ pop {r3, r4, pc}
+ .align 2, 0
+_02239040: .word 0x0223D054
+_02239044: .word 0x04000304
+_02239048: .word 0xFFFF7FFF
+_0223904C: .word 0x0223D00C
+_02239050: .word 0x0223D01C
+_02239054: .word 0x0223D038
+_02239058: .word 0x04000008
+_0223905C: .word 0x00073800
+_02239060: .word 0x0223CFF4
+_02239064: .word 0x04000050
+ thumb_func_end MOD81_02238E44
+
+ thumb_func_start MOD81_02239068
+MOD81_02239068: ; 0x02239068
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1]
+ cmp r0, #0
+ bne _0223908E
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0223908E
+ ldr r0, [r4, #0x28]
+ mov r1, #1
+ bl FUN_02020130
+ ldr r0, [r4, #0x28]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #1
+ pop {r4, pc}
+_0223908E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_02239068
+
+ thumb_func_start MOD81_02239094
+MOD81_02239094: ; 0x02239094
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ add r4, r0, #0
+ ldr r0, [r5]
+ cmp r0, #4
+ bhi _022390CE
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022390AE: ; jump table
+ .short _022390B8 - _022390AE - 2 ; case 0
+ .short _022390C4 - _022390AE - 2 ; case 1
+ .short _02239138 - _022390AE - 2 ; case 2
+ .short _022391BE - _022390AE - 2 ; case 3
+ .short _022391DE - _022390AE - 2 ; case 4
+_022390B8:
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _022391EE
+_022390C4:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0xa
+ bgt _022390D0
+_022390CE:
+ b _022391EE
+_022390D0:
+ ldr r0, [r4]
+ bl MOD81_02238814
+ str r0, [sp, #0xc]
+ ldr r0, [r4]
+ bl MOD81_02238810
+ add r7, r0, #0
+ ldr r0, [r4]
+ bl MOD81_02238850
+ cmp r0, #1
+ bne _022390F0
+ mov r1, #0
+ mov r6, #2
+ b _022390F4
+_022390F0:
+ mov r1, #4
+ mov r6, #3
+_022390F4:
+ ldr r0, [sp, #0xc]
+ ldr r2, [r4, #0x54]
+ bl FUN_0200A8E0
+ ldr r1, [r4, #0x58]
+ ldr r2, [r4, #0x54]
+ add r0, r7, #0
+ bl FUN_0200B7B8
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ add r0, r4, #0
+ ldr r2, [r4, #0x58]
+ add r0, #0x44
+ mov r1, #1
+ bl FUN_0201BD84
+ add r0, r4, #0
+ add r0, #0x44
+ mov r1, #0x6d
+ mov r2, #2
+ bl FUN_0200D06C
+ add r0, r4, #0
+ add r0, #0x44
+ bl FUN_020191D0
+ mov r0, #0
+ str r0, [r4, #8]
+ str r6, [r5]
+ b _022391EE
+_02239138:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0x3c
+ ble _022391EE
+ ldr r0, [r4]
+ bl MOD81_02238814
+ add r6, r0, #0
+ ldr r0, [r4]
+ bl MOD81_02238810
+ add r7, r0, #0
+ ldr r2, [r4, #0x54]
+ add r0, r6, #0
+ mov r1, #1
+ bl FUN_0200A8E0
+ ldr r1, [r4, #0x58]
+ ldr r2, [r4, #0x54]
+ add r0, r7, #0
+ bl FUN_0200B7B8
+ ldr r0, [r4]
+ bl MOD81_02238818
+ mov r1, #0x4c
+ mov r2, #0
+ bl FUN_020672BC
+ cmp r0, #0
+ bne _0223918A
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_02007314
+ ldr r0, [r4]
+ bl MOD81_02238830
+ bl FUN_02005578
+_0223918A:
+ add r0, r4, #0
+ add r0, #0x44
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ add r0, r4, #0
+ ldr r2, [r4, #0x58]
+ add r0, #0x44
+ mov r1, #1
+ bl FUN_0201BD84
+ add r0, r4, #0
+ add r0, #0x44
+ bl FUN_02019548
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _022391EE
+_022391BE:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0x3c
+ ble _022391EE
+ add r0, r4, #0
+ add r0, #0x44
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _022391EE
+_022391DE:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0x14
+ ble _022391EE
+ add sp, #0x10
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_022391EE:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD81_02239094
+
+ thumb_func_start MOD81_022391F4
+MOD81_022391F4: ; 0x022391F4
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r5, r0, #0
+ cmp r1, #4
+ bhi _022392CE
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0223920E: ; jump table
+ .short _02239218 - _0223920E - 2 ; case 0
+ .short _02239232 - _0223920E - 2 ; case 1
+ .short _02239258 - _0223920E - 2 ; case 2
+ .short _02239284 - _0223920E - 2 ; case 3
+ .short _022392B6 - _0223920E - 2 ; case 4
+_02239218:
+ ldr r0, _022392D4 ; =0x000006A8
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #0
+ mov r2, #0x10
+ mov r3, #0xc
+ bl MOD81_022394BC
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _022392CE
+_02239232:
+ bl MOD81_0223950C
+ cmp r0, #0
+ beq _022392CE
+ ldr r0, [r5, #0x10]
+ bl FUN_02007534
+ ldr r0, [r5, #0x2c]
+ mov r1, #0
+ bl FUN_02020130
+ ldr r0, [r5, #0x2c]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _022392CE
+_02239258:
+ ldr r0, [r5, #0x2c]
+ bl FUN_02020388
+ cmp r0, #0
+ bne _022392CE
+ ldr r0, [r5, #0x60]
+ mov r1, #1
+ bl MOD81_02238B58
+ mov r1, #0x10
+ add r0, r5, #0
+ mov r2, #0
+ add r3, r1, #0
+ bl MOD81_022394BC
+ add r0, r5, #0
+ bl MOD81_02239578
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _022392CE
+_02239284:
+ bl MOD81_022395D4
+ cmp r0, #2
+ bge _02239296
+ add r0, r5, #0
+ bl MOD81_022395C4
+ cmp r0, #1
+ bne _022392CE
+_02239296:
+ mov r0, #0x18
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _022392CE
+_022392B6:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _022392CE
+ add r0, r5, #0
+ bl MOD81_022395C4
+ cmp r0, #0
+ beq _022392CE
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_022392CE:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_022392D4: .word 0x000006A8
+ thumb_func_end MOD81_022391F4
+
+ thumb_func_start MOD81_022392D8
+MOD81_022392D8: ; 0x022392D8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ bl FUN_020BB7F4
+ bl G3X_InitMtxStack
+ ldr r0, _02239380 ; =0x04000060
+ ldr r2, _02239384 ; =0xFFFFCFFD
+ ldrh r1, [r0]
+ and r1, r2
+ strh r1, [r0]
+ ldrh r3, [r0]
+ add r1, r2, #2
+ and r3, r1
+ mov r1, #0x10
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r3, [r0]
+ ldr r1, _02239388 ; =0x0000CFFB
+ and r1, r3
+ strh r1, [r0]
+ add r1, r2, #2
+ ldrh r3, [r0]
+ lsr r2, r2, #0x11
+ and r3, r1
+ mov r1, #8
+ orr r1, r3
+ strh r1, [r0]
+ mov r0, #0
+ add r1, r0, #0
+ mov r3, #0x3f
+ str r0, [sp]
+ bl G3X_SetClearColor
+ ldr r1, _0223938C ; =0x04000540
+ mov r0, #2
+ str r0, [r1]
+ ldr r0, _02239390 ; =0xBFFF0000
+ str r0, [r1, #0x40]
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_020AEB70
+ mov r0, #1
+ lsl r0, r0, #0xe
+ mov r1, #1
+ bl FUN_020AEDF4
+ ldr r3, _02239394 ; =0x021064B8
+ mov r0, #1
+ mov r1, #0
+ ldr r3, [r3]
+ lsl r0, r0, #0xe
+ add r2, r1, #0
+ blx r3
+ ldr r3, _02239398 ; =0x021064C0
+ add r4, r0, #0
+ ldr r3, [r3]
+ mov r0, #0x80
+ mov r1, #0
+ mov r2, #1
+ blx r3
+ ldr r2, _0223939C ; =0x7FFF0000
+ add r6, r0, #0
+ and r2, r4
+ lsl r1, r4, #0x10
+ lsr r2, r2, #0x10
+ ldr r0, [r5, #0xc]
+ lsr r1, r1, #0xd
+ lsl r2, r2, #4
+ bl FUN_020081A8
+ ldr r2, _022393A0 ; =0xFFFF0000
+ lsl r1, r6, #0x10
+ and r2, r6
+ lsr r2, r2, #0x10
+ ldr r0, [r5, #0xc]
+ lsr r1, r1, #0xd
+ lsl r2, r2, #3
+ bl FUN_020081B4
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_02239380: .word 0x04000060
+_02239384: .word 0xFFFFCFFD
+_02239388: .word 0x0000CFFB
+_0223938C: .word 0x04000540
+_02239390: .word 0xBFFF0000
+_02239394: .word 0x021064B8
+_02239398: .word 0x021064C0
+_0223939C: .word 0x7FFF0000
+_022393A0: .word 0xFFFF0000
+ thumb_func_end MOD81_022392D8
+
+ thumb_func_start MOD81_022393A4
+MOD81_022393A4: ; 0x022393A4
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD81_02238818
+ add r5, r0, #0
+ add r0, sp, #0x10
+ add r1, r5, #0
+ mov r2, #2
+ bl FUN_02068B70
+ ldr r0, [r4]
+ bl MOD81_02238830
+ add r1, r0, #0
+ add r0, r4, #0
+ add r0, #0x14
+ bl FUN_02069010
+ add r0, r5, #0
+ mov r1, #2
+ bl FUN_02068E1C
+ add r3, r0, #0
+ mov r1, #0
+ str r1, [sp]
+ add r0, r4, #0
+ str r1, [sp, #4]
+ add r0, #0x14
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r4, #0xc]
+ add r3, #0x50
+ add r1, sp, #0x10
+ mov r2, #0x80
+ bl FUN_020073A0
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD81_022393A4
+
+ thumb_func_start MOD81_022393F4
+MOD81_022393F4: ; 0x022393F4
+ push {r4, lr}
+ sub sp, #0x70
+ add r4, r0, #0
+ add r0, #0x30
+ mov r1, #0x5d
+ mov r2, #7
+ mov r3, #8
+ bl MOD81_0223874C
+ add r0, sp, #0x5c
+ bl FUN_020B19DC
+ add r0, sp, #0x38
+ bl FUN_020B1A24
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ add r0, sp, #0x38
+ str r0, [sp, #0x10]
+ mov r0, #0x5d
+ mov r1, #9
+ bl FUN_02006AE4
+ mov r0, #0x3a
+ str r0, [sp]
+ add r0, sp, #0x5c
+ str r0, [sp, #4]
+ mov r0, #0x5d
+ mov r1, #0xa
+ mov r2, #1
+ mov r3, #0
+ bl FUN_02006A8C
+ mov r0, #2
+ add r1, r4, #0
+ str r0, [sp]
+ add r0, sp, #0x14
+ add r1, #0x30
+ add r2, sp, #0x38
+ add r3, sp, #0x5c
+ bl MOD81_022387A8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #0x14
+ mov r2, #0x80
+ mov r3, #0x64
+ bl MOD81_022387C8
+ str r0, [r4, #0x28]
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #0x14
+ mov r2, #0x80
+ mov r3, #0x5a
+ bl MOD81_022387C8
+ str r0, [r4, #0x2c]
+ mov r1, #1
+ bl FUN_02020238
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r4, #0x2c]
+ mov r1, #0
+ bl FUN_020200A0
+ add sp, #0x70
+ pop {r4, pc}
+ thumb_func_end MOD81_022393F4
+
+ thumb_func_start MOD81_02239498
+MOD81_02239498: ; 0x02239498
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_022394A0:
+ ldr r0, [r5, #0x28]
+ cmp r0, #0
+ beq _022394AA
+ bl FUN_0201FFC8
+_022394AA:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _022394A0
+ add r6, #0x30
+ add r0, r6, #0
+ bl MOD81_02238784
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD81_02239498
+
+ thumb_func_start MOD81_022394BC
+MOD81_022394BC: ; 0x022394BC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x3a
+ mov r1, #0x14
+ str r2, [sp]
+ add r7, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02239502
+ str r5, [r4]
+ lsl r0, r6, #0xc
+ str r0, [r4, #4]
+ ldr r0, [sp]
+ lsl r1, r0, #0xc
+ str r1, [r4, #8]
+ ldr r0, [r4, #4]
+ sub r0, r1, r0
+ add r1, r7, #0
+ bl _s32_div_f
+ str r0, [r4, #0xc]
+ ldr r0, _02239504 ; =MOD81_0223953C
+ str r7, [r4, #0x10]
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA60
+ str r0, [r5, #0x64]
+ ldr r0, _02239508 ; =0x04000050
+ mov r1, #1
+ add r2, r6, #0
+ bl G2x_SetBlendBrightness_
+_02239502:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02239504: .word MOD81_0223953C
+_02239508: .word 0x04000050
+ thumb_func_end MOD81_022394BC
+
+ thumb_func_start MOD81_0223950C
+MOD81_0223950C: ; 0x0223950C
+ ldr r0, [r0, #0x64]
+ cmp r0, #0
+ bne _02239516
+ mov r0, #1
+ bx lr
+_02239516:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD81_0223950C
+
+ thumb_func_start MOD81_0223951C
+MOD81_0223951C: ; 0x0223951C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x64]
+ cmp r0, #0
+ beq _02239538
+ bl FUN_0201B6C8
+ bl MOD81_02238898
+ ldr r0, [r4, #0x64]
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x64]
+_02239538:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223951C
+
+ thumb_func_start MOD81_0223953C
+MOD81_0223953C: ; 0x0223953C
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x10]
+ sub r0, r0, #1
+ str r0, [r4, #0x10]
+ cmp r0, #0
+ ble _0223955E
+ ldr r1, [r4, #4]
+ ldr r0, [r4, #0xc]
+ add r2, r1, r0
+ str r2, [r4, #4]
+ ldr r0, _02239574 ; =0x04000050
+ mov r1, #1
+ asr r2, r2, #0xc
+ bl G2x_SetBlendBrightness_
+ pop {r4, pc}
+_0223955E:
+ ldr r2, [r4, #8]
+ ldr r0, _02239574 ; =0x04000050
+ mov r1, #1
+ asr r2, r2, #0xc
+ bl G2x_SetBlendBrightness_
+ ldr r0, [r4]
+ bl MOD81_0223951C
+ pop {r4, pc}
+ nop
+_02239574: .word 0x04000050
+ thumb_func_end MOD81_0223953C
+
+ thumb_func_start MOD81_02239578
+MOD81_02239578: ; 0x02239578
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x3a
+ mov r1, #0x30
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _022395B8
+ str r5, [r4]
+ ldr r0, [r5, #0x60]
+ add r1, r4, #0
+ str r0, [r4, #4]
+ add r1, #8
+ bl MOD81_02238B08
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #0x14
+ bl MOD81_02238B28
+ ldr r0, _022395BC ; =0x00002F60
+ mov r2, #0
+ str r0, [r4, #0x1c]
+ str r2, [r4, #0x20]
+ strh r2, [r4, #0x2c]
+ str r2, [r4, #0x24]
+ ldr r0, _022395C0 ; =MOD81_02239608
+ add r1, r4, #0
+ str r2, [r4, #0x28]
+ bl FUN_0200CA44
+ str r0, [r5, #0x68]
+_022395B8:
+ pop {r3, r4, r5, pc}
+ nop
+_022395BC: .word 0x00002F60
+_022395C0: .word MOD81_02239608
+ thumb_func_end MOD81_02239578
+
+ thumb_func_start MOD81_022395C4
+MOD81_022395C4: ; 0x022395C4
+ ldr r0, [r0, #0x68]
+ cmp r0, #0
+ bne _022395CE
+ mov r0, #1
+ bx lr
+_022395CE:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD81_022395C4
+
+ thumb_func_start MOD81_022395D4
+MOD81_022395D4: ; 0x022395D4
+ push {r3, lr}
+ ldr r0, [r0, #0x68]
+ cmp r0, #0
+ beq _022395E4
+ bl FUN_0201B6C8
+ ldr r0, [r0, #0x20]
+ pop {r3, pc}
+_022395E4:
+ mov r0, #0
+ pop {r3, pc}
+ thumb_func_end MOD81_022395D4
+
+ thumb_func_start MOD81_022395E8
+MOD81_022395E8: ; 0x022395E8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x68]
+ cmp r0, #0
+ beq _02239604
+ bl FUN_0201B6C8
+ bl FUN_02016A18
+ ldr r0, [r4, #0x68]
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x68]
+_02239604:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_022395E8
+
+ thumb_func_start MOD81_02239608
+MOD81_02239608: ; 0x02239608
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ bne _0223967C
+ ldr r1, [r4, #0xc]
+ ldr r0, [r4, #0x1c]
+ add r0, r1, r0
+ str r0, [r4, #0xc]
+ ldr r1, [r4, #0x1c]
+ cmp r1, #0
+ blt _0223962A
+ mov r0, #0x1e
+ lsl r0, r0, #6
+ sub r0, r1, r0
+ str r0, [r4, #0x1c]
+ b _0223967C
+_0223962A:
+ mov r0, #0x1e
+ lsl r0, r0, #6
+ sub r0, r1, r0
+ str r0, [r4, #0x1c]
+ ldr r1, [r4, #0xc]
+ ldr r0, _022396E0 ; =0xFFFFC000
+ cmp r1, r0
+ bgt _0223967C
+ str r0, [r4, #0xc]
+ ldr r1, [r4, #0x1c]
+ mov r0, #0x2c
+ mul r0, r1
+ mov r1, #0x64
+ bl _s32_div_f
+ neg r1, r0
+ mov r0, #0xfa
+ lsl r0, r0, #4
+ str r1, [r4, #0x1c]
+ cmp r1, r0
+ bge _02239658
+ mov r0, #1
+ str r0, [r4, #0x24]
+_02239658:
+ ldr r0, _022396E4 ; =0x000005E6
+ bl FUN_020054C8
+ ldr r0, [r4, #0x20]
+ add r0, r0, #1
+ str r0, [r4, #0x20]
+ cmp r0, #1
+ beq _0223966E
+ cmp r0, #3
+ beq _02239674
+ b _0223967C
+_0223966E:
+ mov r0, #0xb0
+ strh r0, [r4, #0x2c]
+ b _0223967C
+_02239674:
+ mov r0, #0x2c
+ ldrsh r0, [r4, r0]
+ add r0, #0x50
+ strh r0, [r4, #0x2c]
+_0223967C:
+ mov r0, #0x14
+ mov r2, #0x2c
+ ldrsh r3, [r4, r0]
+ ldrsh r0, [r4, r2]
+ add r1, r4, #0
+ add r1, #0x14
+ add r0, r3, r0
+ strh r0, [r4, #0x14]
+ mov r0, #0x18
+ ldrsh r3, [r4, r0]
+ ldrsh r0, [r4, r2]
+ sub r0, r3, r0
+ strh r0, [r4, #0x18]
+ ldr r0, [r4, #4]
+ bl MOD81_02238B40
+ mov r2, #0x2c
+ ldrsh r3, [r4, r2]
+ ldr r5, [r4, #8]
+ add r1, r4, #0
+ lsl r0, r3, #2
+ add r0, r3, r0
+ add r0, r5, r0
+ str r0, [r4, #8]
+ ldrsh r2, [r4, r2]
+ ldr r3, [r4, #0x10]
+ add r1, #8
+ lsl r0, r2, #2
+ add r0, r2, r0
+ add r0, r3, r0
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #4]
+ bl MOD81_02238B18
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _022396DE
+ mov r0, #0x2c
+ ldrsh r0, [r4, r0]
+ sub r0, #0xe
+ strh r0, [r4, #0x2c]
+ ldr r0, [r4, #0x28]
+ add r0, r0, #1
+ str r0, [r4, #0x28]
+ cmp r0, #0x1e
+ ble _022396DE
+ ldr r0, [r4]
+ bl MOD81_022395E8
+_022396DE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022396E0: .word 0xFFFFC000
+_022396E4: .word 0x000005E6
+ thumb_func_end MOD81_02239608
+
+ thumb_func_start MOD81_022396E8
+MOD81_022396E8: ; 0x022396E8
+ push {r3, r4, r5, lr}
+ mov r1, #0x5b
+ add r5, r0, #0
+ mov r0, #0x3a
+ lsl r1, r1, #2
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _0223974A
+ str r5, [r4]
+ mov r0, #0
+ str r0, [r4, #4]
+ add r0, r5, #0
+ bl MOD81_0223880C
+ add r1, r4, #0
+ add r1, #0xc0
+ str r0, [r1]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xd4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xcc
+ str r1, [r0]
+ mov r0, #0x16
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ add r0, r0, #4
+ str r1, [r4, r0]
+ bl FUN_0201BA60
+ add r1, r4, #0
+ add r1, #0xbc
+ str r0, [r1]
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0xd0
+ str r2, [r0]
+ mov r0, #0x5a
+ lsl r0, r0, #2
+ str r2, [r4, r0]
+ ldr r0, _02239750 ; =MOD81_02239F58
+ add r1, r4, #0
+ bl FUN_0200CA98
+_0223974A:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02239750: .word MOD81_02239F58
+ thumb_func_end MOD81_022396E8
+
+ thumb_func_start MOD81_02239754
+MOD81_02239754: ; 0x02239754
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl OS_DisableInterrupts
+ add r4, r0, #0
+ cmp r5, #0
+ beq _022397A0
+ add r0, r5, #0
+ bl MOD81_02239C94
+ add r0, r5, #0
+ bl MOD81_02239DF0
+ add r0, r5, #0
+ bl MOD81_02239F1C
+ mov r0, #0x16
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _02239782
+ bl FUN_0200CAB4
+_02239782:
+ mov r0, #0x59
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _02239790
+ bl MOD81_0223A1FC
+_02239790:
+ add r0, r5, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ bl FUN_0201BA1C
+ add r0, r5, #0
+ bl FUN_02016A18
+_022397A0:
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD81_02239754
+
+ thumb_func_start MOD81_022397A8
+MOD81_022397A8: ; 0x022397A8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r2, [r4]
+ add r5, r0, #0
+ cmp r2, #4
+ bhs _022397D6
+ lsl r3, r2, #2
+ ldr r2, _022397DC ; =0x0223D094
+ add r1, r5, #4
+ ldr r2, [r2, r3]
+ blx r2
+ cmp r0, #0
+ beq _022397CC
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r5, #4]
+_022397CC:
+ add r0, r5, #0
+ bl MOD81_022397E0
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_022397D6:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_022397DC: .word 0x0223D094
+ thumb_func_end MOD81_022397A8
+
+ thumb_func_start MOD81_022397E0
+MOD81_022397E0: ; 0x022397E0
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02239800
+ bl G3X_ResetMtxStack
+ add r4, #0xd4
+ ldr r0, [r4]
+ bl MOD81_02238940
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_020222B4
+_02239800:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_022397E0
+
+ thumb_func_start MOD81_02239804
+MOD81_02239804: ; 0x02239804
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl MOD81_022399FC
+ add r0, r4, #0
+ bl MOD81_02239CDC
+ add r0, r4, #0
+ bl MOD81_02239E00
+ mov r0, #8
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #1
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_02239804
+
+ thumb_func_start MOD81_02239838
+MOD81_02239838: ; 0x02239838
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _02239848
+ cmp r1, #1
+ beq _0223985E
+ b _02239876
+_02239848:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _02239876
+ ldr r0, _0223987C ; =0x0223D444
+ mov r1, #0
+ str r1, [r0]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _02239876
+_0223985E:
+ ldr r1, _0223987C ; =0x0223D444
+ ldr r2, [r1]
+ cmp r2, #0x1e
+ bge _0223986A
+ add r2, r2, #1
+ str r2, [r1]
+_0223986A:
+ add r0, #0xd0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02239876
+ mov r0, #1
+ pop {r4, pc}
+_02239876:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_0223987C: .word 0x0223D444
+ thumb_func_end MOD81_02239838
+
+ thumb_func_start MOD81_02239880
+MOD81_02239880: ; 0x02239880
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #4
+ bhi _02239926
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02239898: ; jump table
+ .short _022398A2 - _02239898 - 2 ; case 0
+ .short _022398AE - _02239898 - 2 ; case 1
+ .short _022398F2 - _02239898 - 2 ; case 2
+ .short _02239908 - _02239898 - 2 ; case 3
+ .short _0223991E - _02239898 - 2 ; case 4
+_022398A2:
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _02239926
+_022398AE:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #8
+ ble _02239926
+ add r0, r4, #0
+ add r0, #0xd8
+ ldr r0, [r0]
+ mov r1, #0
+ mov r2, #0x1f
+ mov r3, #0x18
+ bl MOD81_0223A228
+ add r0, r4, #0
+ bl MOD81_0223A2AC
+ mov r1, #0x16
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ add r0, r4, #0
+ add r0, #0xd8
+ ldr r0, [r0]
+ mov r1, #0
+ bl MOD81_02238B5C
+ add r4, #0xd8
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD81_02238B58
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _02239926
+_022398F2:
+ mov r0, #0x16
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD81_0223A658
+ cmp r0, #0
+ beq _02239926
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _02239926
+_02239908:
+ mov r0, #0x16
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD81_0223A64C
+ cmp r0, #0
+ beq _02239926
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _02239926
+_0223991E:
+ bl MOD81_02239F4C
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02239926:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD81_02239880
+
+ thumb_func_start MOD81_0223992C
+MOD81_0223992C: ; 0x0223992C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #4
+ bhi _022399F2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02239946: ; jump table
+ .short _02239950 - _02239946 - 2 ; case 0
+ .short _02239966 - _02239946 - 2 ; case 1
+ .short _02239984 - _02239946 - 2 ; case 2
+ .short _022399A0 - _02239946 - 2 ; case 3
+ .short _022399E4 - _02239946 - 2 ; case 4
+_02239950:
+ mov r0, #0x16
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD81_0223A664
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _022399F2
+_02239966:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #2
+ ble _022399F2
+ mov r0, #0
+ str r0, [r4, #8]
+ add r4, #0xc4
+ ldr r0, [r4]
+ bl MOD81_022381EC
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _022399F2
+_02239984:
+ add r1, r4, #0
+ add r1, #0xc8
+ ldr r1, [r1]
+ cmp r1, #0
+ bne _022399F2
+ mov r1, #0x59
+ lsl r1, r1, #2
+ add r1, r4, r1
+ bl MOD81_0223A104
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _022399F2
+_022399A0:
+ ldr r0, [r4, #8]
+ cmp r0, #0x28
+ bge _022399B6
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0x28
+ bne _022399B6
+ mov r0, #0x6b
+ lsl r0, r0, #4
+ bl FUN_020054C8
+_022399B6:
+ mov r0, #0x16
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD81_0223A64C
+ cmp r0, #0
+ beq _022399F2
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #0
+ ldr r3, _022399F8 ; =0x00007FFF
+ add r1, r0, #0
+ add r2, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _022399F2
+_022399E4:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _022399F2
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_022399F2:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_022399F8: .word 0x00007FFF
+ thumb_func_end MOD81_0223992C
+
+ thumb_func_start MOD81_022399FC
+MOD81_022399FC: ; 0x022399FC
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r0, _02239C78 ; =0x0223D0EC
+ bl FUN_0201E66C
+ ldr r2, _02239C7C ; =0x04000304
+ ldr r0, _02239C80 ; =0xFFFF7FFF
+ ldrh r1, [r2]
+ and r0, r1
+ strh r0, [r2]
+ ldr r0, _02239C84 ; =0x0223D084
+ bl FUN_02016BBC
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r2, _02239C88 ; =0x0223D0B4
+ mov r1, #2
+ mov r3, #1
+ bl FUN_02016C18
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r2, _02239C88 ; =0x0223D0B4
+ mov r1, #6
+ mov r3, #1
+ bl FUN_02016C18
+ bl OS_DisableInterrupts
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r2, _02239C8C ; =0x0223D0D0
+ mov r1, #3
+ mov r3, #2
+ bl FUN_02016C18
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r2, _02239C8C ; =0x0223D0D0
+ mov r1, #7
+ mov r3, #2
+ bl FUN_02016C18
+ add r0, r5, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ add r2, #0xc0
+ mov r1, #2
+ ldr r2, [r2]
+ mov r0, #0x5d
+ add r3, r1, #0
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ mov r0, #0x5d
+ mov r1, #2
+ mov r3, #6
+ bl FUN_0200687C
+ mov r1, #0
+ str r1, [sp]
+ add r2, r4, #0
+ str r1, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ mov r0, #0x5d
+ mov r3, #2
+ bl FUN_020068C8
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ mov r0, #0x5d
+ mov r3, #6
+ bl FUN_020068C8
+ ldr r0, [r4]
+ bl MOD81_02238828
+ add r5, r0, #0
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x3a
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x5d
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x3a
+ str r0, [sp, #4]
+ mov r0, #0x5d
+ mov r1, #3
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ ldr r0, _02239C90 ; =0x0223D07C
+ lsl r1, r5, #1
+ ldrh r5, [r0, r1]
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x40
+ str r0, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #0x5d
+ mov r1, #3
+ mov r2, #0
+ add r3, r5, #0
+ bl FUN_02006948
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x40
+ str r0, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #0x5d
+ mov r1, #3
+ mov r2, #4
+ add r3, r5, #0
+ bl FUN_02006948
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ mov r0, #0x5d
+ mov r1, #5
+ 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, #0x3a
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ mov r0, #0x5d
+ mov r1, #5
+ 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, #0x3a
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ mov r0, #0x5d
+ mov r1, #4
+ mov r3, #3
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ mov r0, #0x5d
+ mov r1, #4
+ mov r3, #7
+ bl FUN_020068C8
+ mov r0, #0x3a
+ mov r1, #0x60
+ bl FUN_02016998
+ add r5, r0, #0
+ beq _02239C02
+ mov r0, #0
+ add r1, r5, #0
+ mov r2, #0x60
+ bl MIi_CpuClear32
+ add r0, r5, #0
+ mov r1, #0x60
+ bl DC_FlushRange
+ bl GX_BeginLoadBGExtPltt
+ bl GXS_BeginLoadBGExtPltt
+ mov r1, #6
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ mov r2, #0x60
+ bl GX_LoadBGExtPltt
+ mov r1, #6
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ mov r2, #0x60
+ bl GXS_LoadBGExtPltt
+ bl GX_EndLoadBGExtPltt
+ bl GXS_EndLoadBGExtPltt
+ add r0, r5, #0
+ bl FUN_02016A18
+_02239C02:
+ add r0, r4, #0
+ add r0, #0xc0
+ mov r3, #0xff
+ ldr r0, [r0]
+ mov r1, #6
+ mov r2, #3
+ mvn r3, r3
+ bl FUN_020179E0
+ mov r0, #7
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add r0, r4, #0
+ add r0, #0xc0
+ mov r1, #3
+ ldr r0, [r0]
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ add r0, #0xc8
+ mov r1, #1
+ bl MOD81_02238118
+ add r1, r4, #0
+ add r1, #0xc4
+ str r0, [r1]
+ mov r0, #0x4a
+ lsl r0, r0, #2
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0xd0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0xc0
+ mov r1, #0x12
+ mov r2, #1
+ ldr r0, [r0]
+ lsl r1, r1, #6
+ lsl r2, r2, #0xc
+ mov r3, #1
+ bl MOD81_022384AC
+ add r4, #0xcc
+ str r0, [r4]
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02239C78: .word 0x0223D0EC
+_02239C7C: .word 0x04000304
+_02239C80: .word 0xFFFF7FFF
+_02239C84: .word 0x0223D084
+_02239C88: .word 0x0223D0B4
+_02239C8C: .word 0x0223D0D0
+_02239C90: .word 0x0223D07C
+ thumb_func_end MOD81_022399FC
+
+ thumb_func_start MOD81_02239C94
+MOD81_02239C94: ; 0x02239C94
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02239CAA
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ bl MOD81_02238200
+_02239CAA:
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ mov r1, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ mov r1, #3
+ bl FUN_020178A0
+ add r4, #0xc0
+ ldr r0, [r4]
+ mov r1, #7
+ bl FUN_020178A0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_02239C94
+
+ thumb_func_start MOD81_02239CDC
+MOD81_02239CDC: ; 0x02239CDC
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ bl FUN_020BB7F4
+ bl G3X_InitMtxStack
+ ldr r0, _02239DBC ; =0x04000060
+ ldr r1, _02239DC0 ; =0xFFFFCFFD
+ ldrh r2, [r0]
+ 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, _02239DC4 ; =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, _02239DC8 ; =0x0223D0A4
+ bl G3X_SetEdgeColorTable
+ mov r1, #0
+ ldr r0, _02239DCC ; =0x000043FF
+ ldr r2, _02239DD0 ; =0x00007FFF
+ mov r3, #0x3f
+ str r1, [sp]
+ bl G3X_SetClearColor
+ ldr r1, _02239DD4 ; =0x04000540
+ mov r0, #2
+ str r0, [r1]
+ ldr r0, _02239DD8 ; =0xBFFF0000
+ str r0, [r1, #0x40]
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_020AEB70
+ mov r0, #1
+ lsl r0, r0, #0xe
+ mov r1, #1
+ bl FUN_020AEDF4
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r1, _02239DDC ; =0x04000008
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ strh r2, [r1]
+ mov r1, #0
+ mov r0, #1
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD81_022388C0
+ add r1, r4, #0
+ add r1, #0xd4
+ str r0, [r1]
+ mov r1, #0
+ ldr r0, _02239DE0 ; =0xFFFC8800
+ str r1, [sp]
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ add r0, r4, #0
+ str r1, [sp, #0xc]
+ add r0, #0xd4
+ ldr r0, [r0]
+ mov r2, #0x5d
+ mov r3, #0x1b
+ bl MOD81_02238A84
+ add r1, r4, #0
+ add r1, #0xd8
+ str r0, [r1]
+ ldr r1, _02239DE4 ; =0x0000EBE0
+ ldr r0, _02239DE8 ; =0x0223D444
+ strh r1, [r0, #4]
+ mov r1, #0
+ strh r1, [r0, #6]
+ strh r1, [r0, #8]
+ add r0, r4, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ ldr r1, _02239DEC ; =0x0223D448
+ bl MOD81_02238C60
+ add r4, #0xd8
+ mov r1, #7
+ ldr r0, [r4]
+ lsl r1, r1, #0xa
+ bl MOD81_02238B84
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_02239DBC: .word 0x04000060
+_02239DC0: .word 0xFFFFCFFD
+_02239DC4: .word 0x0000CFFB
+_02239DC8: .word 0x0223D0A4
+_02239DCC: .word 0x000043FF
+_02239DD0: .word 0x00007FFF
+_02239DD4: .word 0x04000540
+_02239DD8: .word 0xBFFF0000
+_02239DDC: .word 0x04000008
+_02239DE0: .word 0xFFFC8800
+_02239DE4: .word 0x0000EBE0
+_02239DE8: .word 0x0223D444
+_02239DEC: .word 0x0223D448
+ thumb_func_end MOD81_02239CDC
+
+ thumb_func_start MOD81_02239DF0
+MOD81_02239DF0: ; 0x02239DF0
+ push {r3, lr}
+ add r0, #0xd4
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02239DFE
+ bl MOD81_0223890C
+_02239DFE:
+ pop {r3, pc}
+ thumb_func_end MOD81_02239DF0
+
+ thumb_func_start MOD81_02239E00
+MOD81_02239E00: ; 0x02239E00
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x74
+ add r7, r0, #0
+ add r0, #0xc
+ mov r1, #0x5d
+ mov r2, #0xb
+ mov r3, #0xc
+ bl MOD81_0223874C
+ add r0, sp, #0x60
+ bl FUN_020B19DC
+ add r0, sp, #0x3c
+ bl FUN_020B1A24
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ add r0, sp, #0x3c
+ str r0, [sp, #0x10]
+ mov r0, #0x5d
+ mov r1, #0xd
+ bl FUN_02006AE4
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ add r0, sp, #0x3c
+ str r0, [sp, #0x10]
+ mov r0, #0x5d
+ mov r1, #0xd
+ mov r2, #1
+ bl FUN_02006AE4
+ mov r0, #0x3a
+ str r0, [sp]
+ add r0, sp, #0x60
+ str r0, [sp, #4]
+ mov r0, #0x5d
+ mov r1, #0xe
+ mov r2, #1
+ mov r3, #0
+ bl FUN_02006A8C
+ mov r0, #0x3a
+ str r0, [sp]
+ add r0, sp, #0x60
+ str r0, [sp, #4]
+ mov r0, #0x5d
+ mov r1, #0xe
+ mov r2, #2
+ mov r3, #0
+ bl FUN_02006A8C
+ mov r0, #1
+ add r1, r7, #0
+ str r0, [sp]
+ add r0, sp, #0x18
+ add r1, #0xc
+ add r2, sp, #0x3c
+ add r3, sp, #0x60
+ bl MOD81_022387A8
+ ldr r0, _02239F18 ; =0x035947D1
+ bl FUN_0201BA1C
+ mov r0, #0
+ str r0, [sp, #0x14]
+ add r4, r7, #0
+_02239E9A:
+ bl FUN_0201BA60
+ mov r1, #0xe8
+ bl _u32_div_f
+ add r6, r1, #0
+ add r6, #0xc
+ bl FUN_0201BA60
+ mov r1, #0x71
+ lsl r1, r1, #2
+ bl _u32_div_f
+ add r5, r1, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ sub r5, #0x1c
+ str r0, [sp, #4]
+ ldr r0, [r7]
+ add r1, sp, #0x18
+ add r2, r6, #0
+ add r3, r5, #0
+ bl MOD81_022387C8
+ str r0, [r4, #0x1c]
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r5, #0x38
+ ldr r0, [r7]
+ add r1, sp, #0x18
+ add r2, r6, #0
+ add r3, r5, #0
+ bl MOD81_022387C8
+ str r0, [r4, #0x20]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ bl FUN_02020130
+ ldr r0, [r4, #0x20]
+ mov r1, #1
+ bl FUN_02020130
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r4, #0x20]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [sp, #0x14]
+ add r4, #8
+ add r0, r0, #1
+ str r0, [sp, #0x14]
+ cmp r0, #0x14
+ blt _02239E9A
+ add sp, #0x74
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02239F18: .word 0x035947D1
+ thumb_func_end MOD81_02239E00
+
+ thumb_func_start MOD81_02239F1C
+MOD81_02239F1C: ; 0x02239F1C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_02239F24:
+ ldr r0, [r5, #0x1c]
+ cmp r0, #0
+ beq _02239F2E
+ bl FUN_0201FFC8
+_02239F2E:
+ ldr r0, [r5, #0x20]
+ cmp r0, #0
+ beq _02239F38
+ bl FUN_0201FFC8
+_02239F38:
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, #0x14
+ blt _02239F24
+ add r6, #0xc
+ add r0, r6, #0
+ bl MOD81_02238784
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD81_02239F1C
+
+ thumb_func_start MOD81_02239F4C
+MOD81_02239F4C: ; 0x02239F4C
+ mov r1, #0x5a
+ mov r2, #1
+ lsl r1, r1, #2
+ str r2, [r0, r1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD81_02239F4C
+
+ thumb_func_start MOD81_02239F58
+MOD81_02239F58: ; 0x02239F58
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5a
+ add r4, r1, #0
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _02239FAC
+ mov r1, #0
+ str r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ mov r3, #0xff
+ ldr r0, [r0]
+ mov r1, #2
+ mov r2, #3
+ mvn r3, r3
+ bl FUN_020179E0
+ add r4, #0xc0
+ ldr r0, [r4]
+ mov r1, #6
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ mov r0, #3
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #7
+ mov r1, #1
+ bl FUN_0201797C
+ ldr r2, _02239FB0 ; =0x04000304
+ ldrh r1, [r2]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02239FAC:
+ pop {r3, r4, r5, pc}
+ nop
+_02239FB0: .word 0x04000304
+ thumb_func_end MOD81_02239F58
+
+ thumb_func_start MOD81_02239FB4
+MOD81_02239FB4: ; 0x02239FB4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ str r5, [r2, #4]
+ add r0, r2, #0
+ str r1, [r0]
+ mov r1, #0x52
+ mov r7, #0
+ lsl r1, r1, #2
+ str r7, [r0, r1]
+ add r1, r1, #4
+ str r2, [sp]
+ str r7, [r0, r1]
+ add r4, r2, #0
+ add r6, r2, #0
+_02239FD0:
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r5, #0x1c]
+ bl FUN_0202011C
+ add r2, r6, #0
+ add r3, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, #0x58
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r7, r7, #1
+ str r0, [r2]
+ add r4, r4, #4
+ add r5, #8
+ add r6, #0xc
+ cmp r7, #0x14
+ blt _02239FD0
+ ldr r0, _0223A018 ; =MOD81_0223A01C
+ ldr r1, [sp]
+ mov r2, #0
+ bl FUN_0200CA44
+ ldr r1, [sp]
+ ldr r1, [r1]
+ str r0, [r1]
+ ldr r0, [sp]
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _0223A014
+ ldr r0, [sp]
+ bl FUN_02016A18
+_0223A014:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223A018: .word MOD81_0223A01C
+ thumb_func_end MOD81_02239FB4
+
+ thumb_func_start MOD81_0223A01C
+MOD81_0223A01C: ; 0x0223A01C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r1, #0
+ mov r1, #0x52
+ lsl r1, r1, #2
+ ldr r0, [r6, r1]
+ add r0, r0, #1
+ str r0, [r6, r1]
+ ldr r0, [r6, r1]
+ cmp r0, #0xc
+ ble _0223A050
+ mov r0, #0
+ str r0, [r6, r1]
+ add r0, r1, #4
+ ldr r0, [r6, r0]
+ cmp r0, #0x14
+ bge _0223A050
+ lsl r0, r0, #2
+ mov r2, #1
+ add r0, r6, r0
+ str r2, [r0, #8]
+ add r0, r1, #4
+ ldr r0, [r6, r0]
+ add r2, r0, #1
+ add r0, r1, #4
+ str r2, [r6, r0]
+_0223A050:
+ mov r0, #0
+ add r7, r6, #0
+ str r0, [sp, #4]
+ add r5, r6, #0
+ str r6, [sp]
+ add r4, r0, #0
+ add r7, #0x58
+_0223A05E:
+ mov r1, #0x21
+ ldr r2, [r5, #0x5c]
+ lsl r1, r1, #0xc
+ add r2, r2, r1
+ mov r1, #0x6a
+ add r0, r5, #0
+ lsl r1, r1, #0xe
+ add r0, #0x5c
+ str r2, [r5, #0x5c]
+ cmp r2, r1
+ blt _0223A09E
+ mov r1, #0x71
+ ldr r2, [r0]
+ lsl r1, r1, #0xe
+ sub r1, r2, r1
+ str r1, [r0]
+ ldr r0, [sp]
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _0223A09E
+ ldr r0, [r6, #4]
+ mov r1, #1
+ add r0, r0, r4
+ ldr r0, [r0, #0x1c]
+ bl FUN_020200A0
+ ldr r0, [r6, #4]
+ mov r1, #1
+ add r0, r0, r4
+ ldr r0, [r0, #0x20]
+ bl FUN_020200A0
+_0223A09E:
+ ldr r0, [r6, #4]
+ add r1, r7, #0
+ add r0, r0, r4
+ ldr r0, [r0, #0x1c]
+ bl FUN_02020044
+ add r2, r5, #0
+ add r2, #0x58
+ add r3, sp, #8
+ ldmia r2!, {r0, r1}
+ mov ip, r3
+ stmia r3!, {r0, r1}
+ ldr r0, [r2]
+ str r0, [r3]
+ mov r0, #0xe
+ ldr r1, [sp, #0xc]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0xc]
+ ldr r0, [r6, #4]
+ mov r1, ip
+ add r0, r0, r4
+ ldr r0, [r0, #0x20]
+ bl FUN_02020044
+ ldr r0, [sp]
+ add r5, #0xc
+ add r0, r0, #4
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r4, #8
+ add r0, r0, #1
+ add r7, #0xc
+ str r0, [sp, #4]
+ cmp r0, #0x14
+ blt _0223A05E
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223A01C
+
+ thumb_func_start MOD81_0223A0EC
+MOD81_0223A0EC: ; 0x0223A0EC
+ push {r4, lr}
+ add r4, r0, #0
+ beq _0223A102
+ bl FUN_0201B6C8
+ ldr r0, [r0]
+ mov r1, #0
+ str r1, [r0]
+ add r0, r4, #0
+ bl FUN_0200CAB4
+_0223A102:
+ pop {r4, pc}
+ thumb_func_end MOD81_0223A0EC
+
+ thumb_func_start MOD81_0223A104
+MOD81_0223A104: ; 0x0223A104
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ mov r1, #0x17
+ add r6, r0, #0
+ mov r0, #0x3a
+ lsl r1, r1, #4
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _0223A170
+ str r6, [r4]
+ add r6, #0xc0
+ mov r0, #0x55
+ ldr r1, [r6]
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl FUN_02017B54
+ lsl r1, r0, #0xc
+ mov r0, #0x56
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ sub r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl FUN_02017B54
+ mov r1, #0x57
+ lsl r0, r0, #0xc
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r2, #0
+ add r0, r1, #4
+ str r2, [r4, r0]
+ add r0, r1, #0
+ add r0, #8
+ str r2, [r4, r0]
+ add r0, r1, #0
+ add r0, #0xc
+ str r5, [r4, r0]
+ add r1, #0x10
+ str r2, [r4, r1]
+ ldr r0, _0223A174 ; =MOD81_0223A178
+ add r1, r4, #0
+ bl FUN_0200CA60
+ str r0, [r5]
+ cmp r0, #0
+ bne _0223A170
+ add r0, r4, #0
+ bl FUN_02016A18
+_0223A170:
+ pop {r4, r5, r6, pc}
+ nop
+_0223A174: .word MOD81_0223A178
+ thumb_func_end MOD81_0223A104
+
+ thumb_func_start MOD81_0223A178
+MOD81_0223A178: ; 0x0223A178
+ push {r4, r5, r6, lr}
+ mov r3, #0x59
+ add r4, r1, #0
+ lsl r3, r3, #2
+ mov r0, #2
+ ldr r1, [r4, r3]
+ lsl r0, r0, #0x14
+ cmp r1, r0
+ bge _0223A1FA
+ sub r0, r3, #4
+ ldr r1, [r4, r0]
+ add r0, r3, #0
+ sub r0, #0x44
+ add r1, r1, r0
+ sub r0, r3, #4
+ str r1, [r4, r0]
+ add r5, r3, #0
+ ldr r1, [r4, r3]
+ ldr r0, [r4, r0]
+ sub r5, #0xc
+ add r0, r1, r0
+ str r0, [r4, r3]
+ add r0, r3, #0
+ sub r0, #0x10
+ ldr r5, [r4, r5]
+ ldr r3, [r4, r3]
+ ldr r0, [r4, r0]
+ sub r3, r5, r3
+ mov r1, #2
+ mov r2, #3
+ asr r3, r3, #0xc
+ bl FUN_020179E0
+ mov r5, #0x55
+ lsl r5, r5, #2
+ add r3, r5, #0
+ ldr r0, [r4, r5]
+ add r3, #8
+ add r5, #0x10
+ ldr r6, [r4, r3]
+ ldr r3, [r4, r5]
+ mov r1, #6
+ sub r3, r6, r3
+ mov r2, #3
+ asr r3, r3, #0xc
+ bl FUN_020179E0
+ mov r1, #0x59
+ lsl r1, r1, #2
+ mov r0, #2
+ ldr r2, [r4, r1]
+ lsl r0, r0, #0x12
+ cmp r2, r0
+ blt _0223A1FA
+ add r0, r1, #0
+ add r0, #8
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _0223A1FA
+ add r1, #8
+ ldr r0, [r4]
+ add r1, r4, r1
+ add r2, r4, #4
+ bl MOD81_02239FB4
+_0223A1FA:
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD81_0223A178
+
+ thumb_func_start MOD81_0223A1FC
+MOD81_0223A1FC: ; 0x0223A1FC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ beq _0223A226
+ bl FUN_0201B6C8
+ add r4, r0, #0
+ mov r0, #0x5a
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ mov r2, #0
+ str r2, [r1]
+ add r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD81_0223A0EC
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0223A226:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD81_0223A1FC
+
+ thumb_func_start MOD81_0223A228
+MOD81_0223A228: ; 0x0223A228
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ add r5, r1, #0
+ mov r0, #0x3a
+ mov r1, #0x14
+ add r7, r2, #0
+ add r6, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _0223A268
+ lsl r0, r5, #0xc
+ str r0, [r4]
+ lsl r1, r7, #0xc
+ str r1, [r4, #8]
+ ldr r0, [r4]
+ sub r0, r1, r0
+ add r1, r6, #0
+ bl _s32_div_f
+ str r0, [r4, #4]
+ ldr r0, [sp]
+ str r6, [r4, #0xc]
+ add r1, r5, #0
+ str r0, [r4, #0x10]
+ bl MOD81_02238B5C
+ ldr r0, _0223A26C ; =MOD81_0223A270
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA44
+_0223A268:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223A26C: .word MOD81_0223A270
+ thumb_func_end MOD81_0223A228
+
+ thumb_func_start MOD81_0223A270
+MOD81_0223A270: ; 0x0223A270
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ sub r0, r0, #1
+ str r0, [r4, #0xc]
+ cmp r0, #0
+ ble _0223A292
+ ldr r1, [r4]
+ ldr r0, [r4, #4]
+ add r1, r1, r0
+ str r1, [r4]
+ ldr r0, [r4, #0x10]
+ asr r1, r1, #0xc
+ bl MOD81_02238B5C
+ pop {r3, r4, r5, pc}
+_0223A292:
+ ldr r1, [r4, #8]
+ ldr r0, [r4, #0x10]
+ asr r1, r1, #0xc
+ bl MOD81_02238B5C
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223A270
+
+ thumb_func_start MOD81_0223A2AC
+MOD81_0223A2AC: ; 0x0223A2AC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r5, #0
+ add r4, #0xdc
+ add r0, #0xd8
+ add r1, r4, #0
+ ldr r0, [r0]
+ add r1, #8
+ bl MOD81_02238B08
+ add r0, r5, #0
+ add r0, #0xd8
+ add r1, r4, #0
+ ldr r0, [r0]
+ add r1, #0x20
+ bl MOD81_02238B28
+ add r3, r4, #0
+ add r3, #8
+ add r2, r4, #0
+ ldmia r3!, {r0, r1}
+ add r2, #0x14
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ add r0, r5, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ str r0, [r4, #4]
+ add r0, r5, #0
+ add r0, #0xd8
+ ldr r0, [r0]
+ add r5, #0xdc
+ str r0, [r5]
+ ldr r0, [r4, #0xc]
+ str r0, [r4, #0x28]
+ ldr r1, [r4, #0xc]
+ ldr r0, _0223A37C ; =0xFFFF8000
+ sub r0, r0, r1
+ mov r1, #0x1e
+ bl _s32_div_f
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ mov r2, #1
+ mov r1, #0x1e
+ add r0, #0x80
+ str r1, [r0]
+ mov r1, #0
+ str r1, [r4, #0x38]
+ str r1, [r4, #0x3c]
+ str r1, [r4, #0x40]
+ add r0, r4, #0
+ str r1, [r4, #0x44]
+ add r0, #0x54
+ strh r1, [r0]
+ add r0, r4, #0
+ lsl r2, r2, #0xe
+ add r0, #0x56
+ strh r2, [r0]
+ add r0, r4, #0
+ add r0, #0x5a
+ strh r1, [r0]
+ str r1, [r4, #0x7c]
+ add r2, r4, #0
+ add r0, r1, #0
+_0223A330:
+ add r3, r2, #0
+ add r3, #0x5c
+ strh r0, [r3]
+ add r3, r2, #0
+ add r3, #0x5e
+ strh r0, [r3]
+ add r3, r2, #0
+ add r3, #0x60
+ strh r0, [r3]
+ add r3, r2, #0
+ add r3, #0x62
+ add r1, r1, #1
+ add r2, #8
+ strh r0, [r3]
+ cmp r1, #3
+ blt _0223A330
+ mov r1, #0xd
+ str r0, [r4, #0x78]
+ add r0, r4, #0
+ lsl r1, r1, #8
+ mov r2, #0x1e
+ bl MOD81_0223A384
+ mov r1, #0x29
+ mov r2, #5
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xe
+ mov r3, #0x1e
+ bl MOD81_0223A3C0
+ ldr r0, _0223A380 ; =MOD81_0223A57C
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, pc}
+ nop
+_0223A37C: .word 0xFFFF8000
+_0223A380: .word MOD81_0223A57C
+ thumb_func_end MOD81_0223A2AC
+
+ thumb_func_start MOD81_0223A384
+MOD81_0223A384: ; 0x0223A384
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ beq _0223A3B2
+ mov r0, #0x56
+ ldrsh r0, [r5, r0]
+ add r1, r6, #0
+ sub r0, r4, r0
+ bl _s32_div_f
+ add r1, r5, #0
+ add r1, #0x5a
+ strh r0, [r1]
+ mov r0, #0x56
+ ldrsh r1, [r5, r0]
+ mov r0, #0x5a
+ ldrsh r0, [r5, r0]
+ add r1, r1, r0
+ add r0, r5, #0
+ add r0, #0x56
+ strh r1, [r0]
+ b _0223A3B6
+_0223A3B2:
+ add r0, #0x56
+ strh r4, [r0]
+_0223A3B6:
+ add r0, r5, #0
+ add r0, #0x58
+ strh r4, [r0]
+ str r6, [r5, #0x74]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD81_0223A384
+
+ thumb_func_start MOD81_0223A3C0
+MOD81_0223A3C0: ; 0x0223A3C0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ beq _0223A3F8
+ ldr r0, [r5, #0x38]
+ add r1, r7, #0
+ sub r0, r4, r0
+ bl _s32_div_f
+ str r0, [r5, #0x40]
+ ldr r0, [r5, #0x3c]
+ add r1, r7, #0
+ sub r0, r6, r0
+ bl _s32_div_f
+ str r0, [r5, #0x44]
+ ldr r1, [r5, #0x38]
+ ldr r0, [r5, #0x40]
+ add r0, r1, r0
+ str r0, [r5, #0x38]
+ ldr r1, [r5, #0x3c]
+ ldr r0, [r5, #0x44]
+ add r0, r1, r0
+ str r0, [r5, #0x3c]
+ str r4, [r5, #0x48]
+ str r6, [r5, #0x4c]
+_0223A3F8:
+ str r7, [r5, #0x50]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD81_0223A3C0
+
+ thumb_func_start MOD81_0223A3FC
+MOD81_0223A3FC: ; 0x0223A3FC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ beq _0223A422
+ lsl r0, r4, #3
+ str r0, [sp]
+ add r1, r5, r0
+ mov r0, #0x5c
+ ldrsh r0, [r1, r0]
+ add r1, r7, #0
+ sub r0, r6, r0
+ bl _s32_div_f
+ ldr r1, [sp]
+ add r1, r5, r1
+ add r1, #0x5e
+ strh r0, [r1]
+_0223A422:
+ lsl r1, r4, #3
+ add r0, r5, r1
+ add r0, #0x60
+ strh r6, [r0]
+ add r0, r5, r1
+ add r0, #0x62
+ strh r7, [r0]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223A3FC
+
+ thumb_func_start MOD81_0223A434
+MOD81_0223A434: ; 0x0223A434
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x74]
+ cmp r0, #0
+ beq _0223A460
+ sub r0, r0, #1
+ str r0, [r5, #0x74]
+ beq _0223A456
+ mov r0, #0x56
+ ldrsh r1, [r5, r0]
+ mov r0, #0x5a
+ ldrsh r0, [r5, r0]
+ add r1, r1, r0
+ add r0, r5, #0
+ add r0, #0x56
+ strh r1, [r0]
+ b _0223A460
+_0223A456:
+ mov r0, #0x58
+ ldrsh r1, [r5, r0]
+ add r0, r5, #0
+ add r0, #0x56
+ strh r1, [r0]
+_0223A460:
+ mov r0, #0x54
+ ldrsh r1, [r5, r0]
+ mov r0, #0x56
+ ldrsh r0, [r5, r0]
+ add r1, r1, r0
+ add r0, r5, #0
+ add r0, #0x54
+ strh r1, [r0]
+ add r0, r5, #0
+ add r0, #0x54
+ ldrh r0, [r0]
+ mov r1, #0xb6
+ bl _s32_div_f
+ add r4, r0, #0
+ mov r0, #0x5a
+ lsl r0, r0, #2
+ cmp r4, r0
+ blt _0223A488
+ sub r4, r4, r0
+_0223A488:
+ ldr r0, [r5, #0x50]
+ cmp r0, #0
+ beq _0223A4AE
+ ldr r1, [r5, #0x38]
+ ldr r0, [r5, #0x40]
+ add r0, r1, r0
+ str r0, [r5, #0x38]
+ ldr r1, [r5, #0x3c]
+ ldr r0, [r5, #0x44]
+ add r0, r1, r0
+ str r0, [r5, #0x3c]
+ ldr r0, [r5, #0x50]
+ sub r0, r0, #1
+ str r0, [r5, #0x50]
+ bne _0223A4AE
+ ldr r0, [r5, #0x48]
+ str r0, [r5, #0x38]
+ ldr r0, [r5, #0x4c]
+ str r0, [r5, #0x3c]
+_0223A4AE:
+ add r0, r4, #0
+ add r0, #0x5a
+ lsl r1, r0, #2
+ ldr r0, _0223A578 ; =0x020EDF50
+ ldr r2, [r5, #0x38]
+ ldr r0, [r0, r1]
+ asr r3, r2, #0x1f
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r3, #2
+ mov r6, #0
+ lsl r3, r3, #0xa
+ add r3, r0, r3
+ adc r1, r6
+ lsl r0, r1, #0x14
+ lsr r1, r3, #0xc
+ ldr r2, [r5, #8]
+ orr r1, r0
+ add r0, r2, r1
+ str r0, [r5, #0x14]
+ ldr r2, [r5, #0x3c]
+ ldr r0, _0223A578 ; =0x020EDF50
+ lsl r1, r4, #2
+ ldr r0, [r0, r1]
+ asr r3, r2, #0x1f
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r4, #2
+ add r3, r6, #0
+ lsl r4, r4, #0xa
+ add r4, r0, r4
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r4, #0xc
+ ldr r2, [r5, #0x10]
+ orr r1, r0
+ add r0, r2, r1
+ str r0, [r5, #0x1c]
+ mov r0, #0x22
+ ldrsh r1, [r5, r0]
+ mov r0, #0x56
+ ldrsh r0, [r5, r0]
+ mov r2, #0x5e
+ mov r6, #0x60
+ add r0, r1, r0
+ strh r0, [r5, #0x22]
+ add r0, r5, #0
+ mov r1, #0x5c
+_0223A512:
+ add r4, r0, #0
+ add r4, #0x62
+ ldrh r4, [r4]
+ cmp r4, #0
+ beq _0223A54A
+ add r4, r0, #0
+ add r4, #0x62
+ ldrh r4, [r4]
+ sub r7, r4, #1
+ add r4, r0, #0
+ add r4, #0x62
+ strh r7, [r4]
+ add r4, r0, #0
+ add r4, #0x62
+ ldrh r4, [r4]
+ cmp r4, #0
+ bne _0223A53E
+ ldrsh r7, [r0, r6]
+ add r4, r0, #0
+ add r4, #0x5c
+ strh r7, [r4]
+ b _0223A54A
+_0223A53E:
+ ldrsh r7, [r0, r1]
+ ldrsh r4, [r0, r2]
+ add r7, r7, r4
+ add r4, r0, #0
+ add r4, #0x5c
+ strh r7, [r4]
+_0223A54A:
+ add r3, r3, #1
+ add r0, #8
+ cmp r3, #3
+ blt _0223A512
+ mov r0, #0x20
+ ldrsh r1, [r5, r0]
+ mov r0, #0x5c
+ ldrsh r0, [r5, r0]
+ add r0, r1, r0
+ strh r0, [r5, #0x20]
+ mov r0, #0x22
+ ldrsh r1, [r5, r0]
+ mov r0, #0x64
+ ldrsh r0, [r5, r0]
+ add r0, r1, r0
+ strh r0, [r5, #0x22]
+ mov r0, #0x24
+ ldrsh r1, [r5, r0]
+ mov r0, #0x6c
+ ldrsh r0, [r5, r0]
+ add r0, r1, r0
+ strh r0, [r5, #0x24]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223A578: .word 0x020EDF50
+ thumb_func_end MOD81_0223A434
+
+ thumb_func_start MOD81_0223A57C
+MOD81_0223A57C: ; 0x0223A57C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223A5DC
+ ldr r1, [r4, #0x28]
+ ldr r0, [r4, #0x2c]
+ add r0, r1, r0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ cmp r0, #0
+ bgt _0223A5DC
+ mov r1, #2
+ lsl r1, r1, #8
+ str r1, [r4, #0x30]
+ mov r0, #0
+ lsl r1, r1, #5
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ add r2, r1, #0
+ mov r3, #0x3c
+ bl MOD81_0223A3C0
+ ldr r2, _0223A5F8 ; =0xFFFFF800
+ add r0, r4, #0
+ mov r1, #0
+ mov r3, #0x1e
+ bl MOD81_0223A3FC
+ mov r0, #1
+ str r0, [r4, #0x7c]
+ ldr r1, _0223A5FC ; =MOD81_0223A600
+ add r0, r5, #0
+ bl FUN_0201B6C4
+_0223A5DC:
+ add r0, r4, #0
+ bl MOD81_0223A434
+ add r1, r4, #0
+ ldr r0, [r4]
+ add r1, #0x14
+ bl MOD81_02238B18
+ ldr r0, [r4]
+ add r4, #0x20
+ add r1, r4, #0
+ bl MOD81_02238B40
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223A5F8: .word 0xFFFFF800
+_0223A5FC: .word MOD81_0223A600
+ thumb_func_end MOD81_0223A57C
+
+ thumb_func_start MOD81_0223A600
+MOD81_0223A600: ; 0x0223A600
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x78]
+ cmp r0, #0
+ bne _0223A64A
+ ldr r1, [r4, #0x2c]
+ ldr r0, [r4, #0x30]
+ add r1, r1, r0
+ str r1, [r4, #0x2c]
+ ldr r0, [r4, #0x28]
+ add r0, r0, r1
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ bl MOD81_0223A434
+ add r1, r4, #0
+ ldr r0, [r4]
+ add r1, #0x14
+ bl MOD81_02238B18
+ add r1, r4, #0
+ ldr r0, [r4]
+ add r1, #0x20
+ bl MOD81_02238B40
+ ldr r0, [r4]
+ bl MOD81_02238B8C
+ cmp r0, #0
+ bne _0223A64A
+ ldr r0, [r4]
+ mov r1, #0
+ bl MOD81_02238B58
+ mov r0, #1
+ str r0, [r4, #0x78]
+_0223A64A:
+ pop {r4, pc}
+ thumb_func_end MOD81_0223A600
+
+ thumb_func_start MOD81_0223A64C
+MOD81_0223A64C: ; 0x0223A64C
+ push {r3, lr}
+ bl FUN_0201B6C8
+ ldr r0, [r0, #0x78]
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223A64C
+
+ thumb_func_start MOD81_0223A658
+MOD81_0223A658: ; 0x0223A658
+ push {r3, lr}
+ bl FUN_0201B6C8
+ ldr r0, [r0, #0x7c]
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223A658
+
+ thumb_func_start MOD81_0223A664
+MOD81_0223A664: ; 0x0223A664
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ bl FUN_0201B6C8
+ add r4, r0, #0
+ mov r1, #0
+ str r1, [r4, #0x78]
+ add r0, sp, #0
+ strh r1, [r0, #4]
+ ldrh r1, [r0, #4]
+ strh r1, [r0, #2]
+ strh r1, [r0]
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl MOD81_02238C80
+ ldr r0, [r4, #4]
+ add r1, sp, #0
+ bl MOD81_02238C60
+ ldr r1, _0223A6EC ; =0x000058CC
+ mov r0, #2
+ lsl r0, r0, #0x12
+ str r1, [r4, #0x2c]
+ sub r0, r1, r0
+ str r0, [r4, #0x28]
+ add r0, r4, #0
+ mov r1, #0
+ mov r3, #0x14
+ add r0, #0x80
+ str r3, [r0]
+ ldr r0, [r4, #0x28]
+ add r2, r1, #0
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ bl MOD81_0223A3C0
+ mov r2, #0x56
+ ldrsh r2, [r4, r2]
+ add r0, r4, #0
+ mov r1, #1
+ neg r2, r2
+ mov r3, #0x1e
+ bl MOD81_0223A3FC
+ mov r1, #2
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xfe
+ mov r3, #0x32
+ bl MOD81_0223A3FC
+ mov r1, #2
+ ldr r0, [r4]
+ lsl r1, r1, #0xc
+ bl MOD81_02238B84
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD81_02238B58
+ ldr r1, _0223A6F0 ; =MOD81_0223A6F4
+ add r0, r5, #0
+ bl FUN_0201B6C4
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223A6EC: .word 0x000058CC
+_0223A6F0: .word MOD81_0223A6F4
+ thumb_func_end MOD81_0223A664
+
+ thumb_func_start MOD81_0223A6F4
+MOD81_0223A6F4: ; 0x0223A6F4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD81_0223A434
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223A734
+ ldr r1, [r4, #0x28]
+ ldr r0, [r4, #0x2c]
+ add r0, r1, r0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _0223A734
+ ldr r1, _0223A74C ; =MOD81_0223A750
+ add r0, r5, #0
+ bl FUN_0201B6C4
+_0223A734:
+ add r1, r4, #0
+ ldr r0, [r4]
+ add r1, #0x14
+ bl MOD81_02238B18
+ ldr r0, [r4]
+ add r4, #0x20
+ add r1, r4, #0
+ bl MOD81_02238B40
+ pop {r3, r4, r5, pc}
+ nop
+_0223A74C: .word MOD81_0223A750
+ thumb_func_end MOD81_0223A6F4
+
+ thumb_func_start MOD81_0223A750
+MOD81_0223A750: ; 0x0223A750
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD81_0223A434
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ cmp r0, #0x6e
+ ble _0223A792
+ ldr r1, [r4, #0x28]
+ ldr r0, _0223A7A8 ; =0xFFFC5800
+ sub r0, r0, r1
+ mov r1, #0x35
+ bl _s32_div_f
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ mov r1, #0x35
+ add r0, #0x80
+ str r1, [r0]
+ ldr r1, _0223A7AC ; =MOD81_0223A7B0
+ add r0, r5, #0
+ bl FUN_0201B6C4
+_0223A792:
+ add r1, r4, #0
+ ldr r0, [r4]
+ add r1, #0x14
+ bl MOD81_02238B18
+ ldr r0, [r4]
+ add r4, #0x20
+ add r1, r4, #0
+ bl MOD81_02238B40
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223A7A8: .word 0xFFFC5800
+_0223A7AC: .word MOD81_0223A7B0
+ thumb_func_end MOD81_0223A750
+
+ thumb_func_start MOD81_0223A7B0
+MOD81_0223A7B0: ; 0x0223A7B0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD81_0223A434
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223A7F0
+ ldr r1, [r4, #0x28]
+ ldr r0, [r4, #0x2c]
+ add r0, r1, r0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _0223A7F0
+ ldr r1, _0223A808 ; =MOD81_0223A80C
+ add r0, r5, #0
+ bl FUN_0201B6C4
+_0223A7F0:
+ add r1, r4, #0
+ ldr r0, [r4]
+ add r1, #0x14
+ bl MOD81_02238B18
+ ldr r0, [r4]
+ add r4, #0x20
+ add r1, r4, #0
+ bl MOD81_02238B40
+ pop {r3, r4, r5, pc}
+ nop
+_0223A808: .word MOD81_0223A80C
+ thumb_func_end MOD81_0223A7B0
+
+ thumb_func_start MOD81_0223A80C
+MOD81_0223A80C: ; 0x0223A80C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD81_0223A434
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ cmp r0, #1
+ ble _0223A83E
+ mov r0, #2
+ lsl r0, r0, #0x10
+ str r0, [r4, #0x2c]
+ ldr r1, _0223A854 ; =MOD81_0223A858
+ add r0, r5, #0
+ bl FUN_0201B6C4
+_0223A83E:
+ add r1, r4, #0
+ ldr r0, [r4]
+ add r1, #0x14
+ bl MOD81_02238B18
+ ldr r0, [r4]
+ add r4, #0x20
+ add r1, r4, #0
+ bl MOD81_02238B40
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223A854: .word MOD81_0223A858
+ thumb_func_end MOD81_0223A80C
+
+ thumb_func_start MOD81_0223A858
+MOD81_0223A858: ; 0x0223A858
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x78]
+ cmp r0, #0
+ bne _0223A894
+ add r0, r4, #0
+ bl MOD81_0223A434
+ ldr r1, [r4, #0x28]
+ ldr r0, [r4, #0x2c]
+ add r0, r1, r0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x18]
+ add r1, r4, #0
+ ldr r0, [r4]
+ add r1, #0x14
+ bl MOD81_02238B18
+ add r1, r4, #0
+ ldr r0, [r4]
+ add r1, #0x20
+ bl MOD81_02238B40
+ ldr r0, [r4]
+ bl MOD81_02238B8C
+ cmp r0, #0
+ bne _0223A894
+ mov r0, #1
+ str r0, [r4, #0x78]
+_0223A894:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223A858
+
+ thumb_func_start MOD81_0223A898
+MOD81_0223A898: ; 0x0223A898
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x3a
+ mov r1, #0xa4
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _0223A8C2
+ str r5, [r4]
+ mov r0, #0
+ str r0, [r4, #4]
+ add r0, r5, #0
+ bl MOD81_0223880C
+ str r0, [r4, #0x24]
+ mov r0, #0
+ str r0, [r4, #0x28]
+ add r0, r4, #0
+ add r0, #0x34
+ bl MOD81_0223AD80
+_0223A8C2:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223A898
+
+ thumb_func_start MOD81_0223A8C8
+MOD81_0223A8C8: ; 0x0223A8C8
+ push {r4, lr}
+ add r4, r0, #0
+ beq _0223A8F6
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ add r0, r4, #0
+ bl MOD81_0223ABC0
+ add r0, r4, #0
+ bl MOD81_0223ACD8
+ add r0, r4, #0
+ bl MOD81_0223AD68
+ add r0, r4, #0
+ add r0, #0x34
+ bl MOD81_0223AD88
+ add r0, r4, #0
+ bl FUN_02016A18
+_0223A8F6:
+ pop {r4, pc}
+ thumb_func_end MOD81_0223A8C8
+
+ thumb_func_start MOD81_0223A8F8
+MOD81_0223A8F8: ; 0x0223A8F8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r2, [r4]
+ add r5, r0, #0
+ cmp r2, #2
+ bhs _0223A926
+ lsl r3, r2, #2
+ ldr r2, _0223A92C ; =0x0223D114
+ add r1, r5, #4
+ ldr r2, [r2, r3]
+ blx r2
+ cmp r0, #0
+ beq _0223A91C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r5, #4]
+_0223A91C:
+ add r0, r5, #0
+ bl MOD81_0223A930
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0223A926:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_0223A92C: .word 0x0223D114
+ thumb_func_end MOD81_0223A8F8
+
+ thumb_func_start MOD81_0223A930
+MOD81_0223A930: ; 0x0223A930
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ cmp r0, #0
+ beq _0223A94C
+ bl G3X_ResetMtxStack
+ ldr r0, [r4, #0x28]
+ bl MOD81_02238940
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_020222B4
+_0223A94C:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223A930
+
+ thumb_func_start MOD81_0223A950
+MOD81_0223A950: ; 0x0223A950
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl MOD81_0223AA68
+ add r0, r4, #0
+ bl MOD81_0223ABD8
+ add r0, r4, #0
+ bl MOD81_0223ACE8
+ mov r2, #0
+ ldr r0, _0223A990 ; =MOD81_0223B090
+ add r1, r4, #0
+ str r2, [r4, #0xc]
+ bl FUN_0200CA98
+ mov r0, #3
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ ldr r3, _0223A994 ; =0x00007FFF
+ mov r0, #0
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ mov r0, #1
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_0223A990: .word MOD81_0223B090
+_0223A994: .word 0x00007FFF
+ thumb_func_end MOD81_0223A950
+
+ thumb_func_start MOD81_0223A998
+MOD81_0223A998: ; 0x0223A998
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #4
+ bhi _0223AA54
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223A9B2: ; jump table
+ .short _0223A9BC - _0223A9B2 - 2 ; case 0
+ .short _0223A9C8 - _0223A9B2 - 2 ; case 1
+ .short _0223A9F2 - _0223A9B2 - 2 ; case 2
+ .short _0223AA1C - _0223A9B2 - 2 ; case 3
+ .short _0223AA46 - _0223A9B2 - 2 ; case 4
+_0223A9BC:
+ mov r0, #0
+ str r0, [r5, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0223AA54
+_0223A9C8:
+ ldr r0, [r5, #8]
+ add r0, r0, #1
+ str r0, [r5, #8]
+ cmp r0, #0xa
+ ble _0223AA54
+ ldr r0, _0223AA5C ; =0x000006AC
+ bl FUN_020054C8
+ add r1, r5, #0
+ add r0, r5, #0
+ add r1, #0x34
+ bl MOD81_0223AD9C
+ ldr r0, [r5, #0x2c]
+ mov r1, #1
+ bl MOD81_02238B58
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0223AA54
+_0223A9F2:
+ add r0, r5, #0
+ add r0, #0x34
+ bl MOD81_0223AE48
+ cmp r0, #0
+ beq _0223AA54
+ ldr r0, _0223AA60 ; =0x000006AD
+ bl FUN_020054C8
+ ldr r0, [r5, #0x20]
+ mov r1, #3
+ bl FUN_02020130
+ ldr r0, [r5, #0x20]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0223AA54
+_0223AA1C:
+ ldr r0, [r5, #0x20]
+ bl FUN_02020388
+ cmp r0, #0
+ bne _0223AA54
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #0
+ ldr r3, _0223AA64 ; =0x00007FFF
+ add r1, r0, #0
+ add r2, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0223AA54
+_0223AA46:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0223AA54
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_0223AA54:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_0223AA5C: .word 0x000006AC
+_0223AA60: .word 0x000006AD
+_0223AA64: .word 0x00007FFF
+ thumb_func_end MOD81_0223A998
+
+ thumb_func_start MOD81_0223AA68
+MOD81_0223AA68: ; 0x0223AA68
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, _0223ABAC ; =0x0223D158
+ bl FUN_0201E66C
+ ldr r2, _0223ABB0 ; =0x04000304
+ ldr r0, _0223ABB4 ; =0xFFFF7FFF
+ ldrh r1, [r2]
+ and r0, r1
+ strh r0, [r2]
+ ldr r0, _0223ABB8 ; =0x0223D11C
+ bl FUN_02016BBC
+ ldr r0, [r4, #0x24]
+ ldr r2, _0223ABBC ; =0x0223D13C
+ mov r1, #3
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x24]
+ ldr r2, _0223ABBC ; =0x0223D13C
+ mov r1, #7
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4]
+ bl MOD81_02238828
+ cmp r0, #3
+ bhi _0223AABA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223AAB2: ; jump table
+ .short _0223AABA - _0223AAB2 - 2 ; case 0
+ .short _0223AAC6 - _0223AAB2 - 2 ; case 1
+ .short _0223AAD2 - _0223AAB2 - 2 ; case 2
+ .short _0223AADE - _0223AAB2 - 2 ; case 3
+_0223AABA:
+ mov r0, #0xf
+ str r0, [sp, #0x10]
+ mov r7, #0x10
+ mov r6, #0x11
+ mov r5, #0
+ b _0223AAE8
+_0223AAC6:
+ mov r0, #0xf
+ str r0, [sp, #0x10]
+ mov r7, #0x10
+ mov r6, #0x11
+ mov r5, #0x20
+ b _0223AAE8
+_0223AAD2:
+ mov r0, #0xf
+ str r0, [sp, #0x10]
+ mov r7, #0x10
+ mov r6, #0x11
+ mov r5, #0x40
+ b _0223AAE8
+_0223AADE:
+ mov r0, #0x18
+ str r0, [sp, #0x10]
+ mov r7, #0x19
+ mov r6, #0x1a
+ mov r5, #0
+_0223AAE8:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x24]
+ mov r0, #0x5d
+ add r1, r7, #0
+ 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, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x24]
+ mov r0, #0x5d
+ add r1, r7, #0
+ 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, #0x3a
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x10]
+ ldr r2, [r4, #0x24]
+ mov r0, #0x5d
+ mov r3, #3
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x10]
+ ldr r2, [r4, #0x24]
+ mov r0, #0x5d
+ mov r3, #7
+ bl FUN_020068C8
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #0x5d
+ add r1, r6, #0
+ add r3, r5, #0
+ bl FUN_02006948
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #0x5d
+ add r1, r6, #0
+ mov r2, #4
+ add r3, r5, #0
+ bl FUN_02006948
+ mov r1, #3
+ add r3, r1, #0
+ ldr r0, [r4, #0x24]
+ add r2, r1, #0
+ add r3, #0xfd
+ bl FUN_020179E0
+ ldr r0, [r4, #0x24]
+ mov r1, #7
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ 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}
+ .align 2, 0
+_0223ABAC: .word 0x0223D158
+_0223ABB0: .word 0x04000304
+_0223ABB4: .word 0xFFFF7FFF
+_0223ABB8: .word 0x0223D11C
+_0223ABBC: .word 0x0223D13C
+ thumb_func_end MOD81_0223AA68
+
+ thumb_func_start MOD81_0223ABC0
+MOD81_0223ABC0: ; 0x0223ABC0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x24]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #0x24]
+ mov r1, #7
+ bl FUN_020178A0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223ABC0
+
+ thumb_func_start MOD81_0223ABD8
+MOD81_0223ABD8: ; 0x0223ABD8
+ push {r3, r4, lr}
+ sub sp, #0x24
+ add r4, r0, #0
+ bl FUN_020BB7F4
+ bl G3X_InitMtxStack
+ ldr r0, _0223ACAC ; =0x04000060
+ ldr r1, _0223ACB0 ; =0xFFFFCFFD
+ ldrh r2, [r0]
+ 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, _0223ACB4 ; =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, _0223ACB8 ; =0x0223D12C
+ bl G3X_SetEdgeColorTable
+ mov r1, #0
+ ldr r0, _0223ACBC ; =0x000043FF
+ ldr r2, _0223ACC0 ; =0x00007FFF
+ mov r3, #0x3f
+ str r1, [sp]
+ bl G3X_SetClearColor
+ ldr r1, _0223ACC4 ; =0x04000540
+ mov r0, #2
+ str r0, [r1]
+ ldr r0, _0223ACC8 ; =0xBFFF0000
+ str r0, [r1, #0x40]
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_020AEB70
+ mov r0, #1
+ lsl r0, r0, #0xe
+ mov r1, #1
+ bl FUN_020AEDF4
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r1, _0223ACCC ; =0x04000008
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ strh r2, [r1]
+ mov r1, #0
+ mov r0, #1
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD81_022388C0
+ str r0, [r4, #0x28]
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r4, #0x28]
+ mov r2, #0x5d
+ mov r3, #0x1b
+ bl MOD81_02238A84
+ ldr r1, _0223ACD0 ; =0x000018E3
+ str r0, [r4, #0x2c]
+ add r0, sp, #0x10
+ strh r1, [r0]
+ mov r1, #0
+ strh r1, [r0, #2]
+ strh r1, [r0, #4]
+ ldr r0, [r4, #0x28]
+ add r1, sp, #0x10
+ bl MOD81_02238C60
+ ldr r0, [r4, #0x28]
+ ldr r1, _0223ACD4 ; =0x000007D2
+ bl MOD81_02238C90
+ ldr r0, [r4, #0x28]
+ add r1, sp, #0x18
+ bl MOD81_02238C40
+ add sp, #0x24
+ pop {r3, r4, pc}
+ nop
+_0223ACAC: .word 0x04000060
+_0223ACB0: .word 0xFFFFCFFD
+_0223ACB4: .word 0x0000CFFB
+_0223ACB8: .word 0x0223D12C
+_0223ACBC: .word 0x000043FF
+_0223ACC0: .word 0x00007FFF
+_0223ACC4: .word 0x04000540
+_0223ACC8: .word 0xBFFF0000
+_0223ACCC: .word 0x04000008
+_0223ACD0: .word 0x000018E3
+_0223ACD4: .word 0x000007D2
+ thumb_func_end MOD81_0223ABD8
+
+ thumb_func_start MOD81_0223ACD8
+MOD81_0223ACD8: ; 0x0223ACD8
+ push {r3, lr}
+ ldr r0, [r0, #0x28]
+ cmp r0, #0
+ beq _0223ACE4
+ bl MOD81_0223890C
+_0223ACE4:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223ACD8
+
+ thumb_func_start MOD81_0223ACE8
+MOD81_0223ACE8: ; 0x0223ACE8
+ push {r4, lr}
+ sub sp, #0x70
+ add r4, r0, #0
+ add r0, #0x10
+ mov r1, #0x5d
+ mov r2, #7
+ mov r3, #8
+ bl MOD81_0223874C
+ add r0, sp, #0x5c
+ bl FUN_020B19DC
+ add r0, sp, #0x38
+ bl FUN_020B1A24
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ add r0, sp, #0x38
+ str r0, [sp, #0x10]
+ mov r0, #0x5d
+ mov r1, #9
+ bl FUN_02006AE4
+ mov r0, #0x3a
+ str r0, [sp]
+ add r0, sp, #0x5c
+ str r0, [sp, #4]
+ mov r0, #0x5d
+ mov r1, #0xa
+ mov r2, #1
+ mov r3, #0
+ bl FUN_02006A8C
+ mov r0, #0
+ add r1, r4, #0
+ str r0, [sp]
+ add r0, sp, #0x14
+ add r1, #0x10
+ add r2, sp, #0x38
+ add r3, sp, #0x5c
+ bl MOD81_022387A8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #0x14
+ mov r2, #0x80
+ mov r3, #0x60
+ bl MOD81_022387C8
+ mov r1, #0
+ str r0, [r4, #0x20]
+ bl FUN_020200A0
+ add sp, #0x70
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223ACE8
+
+ thumb_func_start MOD81_0223AD68
+MOD81_0223AD68: ; 0x0223AD68
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ beq _0223AD76
+ bl FUN_0201FFC8
+_0223AD76:
+ add r4, #0x10
+ add r0, r4, #0
+ bl MOD81_02238784
+ pop {r4, pc}
+ thumb_func_end MOD81_0223AD68
+
+ thumb_func_start MOD81_0223AD80
+MOD81_0223AD80: ; 0x0223AD80
+ mov r1, #0
+ str r1, [r0, #4]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD81_0223AD80
+
+ thumb_func_start MOD81_0223AD88
+MOD81_0223AD88: ; 0x0223AD88
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _0223AD9A
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #4]
+_0223AD9A:
+ pop {r4, pc}
+ thumb_func_end MOD81_0223AD88
+
+ thumb_func_start MOD81_0223AD9C
+MOD81_0223AD9C: ; 0x0223AD9C
+ push {r4, lr}
+ add r4, r1, #0
+ str r0, [r4]
+ ldr r1, [r0, #0x2c]
+ ldr r2, _0223AE2C ; =0xFFFFD870
+ str r1, [r4, #0xc]
+ ldr r0, [r0, #0x28]
+ ldr r1, _0223AE30 ; =0xFFF50E00
+ str r0, [r4, #8]
+ mov r0, #0
+ str r0, [r4, #0x10]
+ str r1, [r4, #0x14]
+ mov r1, #0xe2
+ lsl r1, r1, #0xc
+ str r1, [r4, #0x18]
+ add r1, r4, #0
+ add r1, #0x6c
+ strh r2, [r1]
+ add r1, r4, #0
+ ldr r2, _0223AE34 ; =0xFFFFF550
+ add r1, #0x6e
+ strh r2, [r1]
+ ldr r1, _0223AE38 ; =0x000134C4
+ str r1, [r4, #0x3c]
+ ldr r1, _0223AE3C ; =0xFFFF4D56
+ str r1, [r4, #0x40]
+ str r0, [r4, #0x60]
+ str r0, [r4, #0x64]
+ mov r1, #2
+ str r0, [r4, #0x68]
+ lsl r1, r1, #0xc
+ strh r1, [r4, #0x34]
+ ldr r1, _0223AE40 ; =0xFFFFE000
+ strh r1, [r4, #0x36]
+ strh r0, [r4, #0x38]
+ add r1, r4, #0
+ ldr r0, [r4, #0xc]
+ add r1, #0x34
+ bl MOD81_02238B40
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x54]
+ mov r0, #0x4a
+ lsl r0, r0, #0xa
+ str r0, [r4, #0x44]
+ mov r0, #0x63
+ lsl r0, r0, #0xa
+ str r0, [r4, #0x48]
+ mov r0, #0
+ str r0, [r4, #0x5c]
+ add r0, r4, #0
+ bl MOD81_0223AE90
+ add r1, r4, #0
+ ldr r0, [r4, #0xc]
+ add r1, #0x28
+ bl MOD81_02238B18
+ add r1, r4, #0
+ ldr r0, [r4, #0xc]
+ add r1, #0x34
+ bl MOD81_02238B28
+ ldr r0, _0223AE44 ; =MOD81_0223AF5C
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA44
+ str r0, [r4, #4]
+ pop {r4, pc}
+ nop
+_0223AE2C: .word 0xFFFFD870
+_0223AE30: .word 0xFFF50E00
+_0223AE34: .word 0xFFFFF550
+_0223AE38: .word 0x000134C4
+_0223AE3C: .word 0xFFFF4D56
+_0223AE40: .word 0xFFFFE000
+_0223AE44: .word MOD81_0223AF5C
+ thumb_func_end MOD81_0223AD9C
+
+ thumb_func_start MOD81_0223AE48
+MOD81_0223AE48: ; 0x0223AE48
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ bne _0223AE52
+ mov r0, #1
+ bx lr
+_0223AE52:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD81_0223AE48
+
+ thumb_func_start MOD81_0223AE58
+MOD81_0223AE58: ; 0x0223AE58
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r4, [sp, #0x18]
+ add r5, r0, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ cmp r4, #0
+ beq _0223AE8E
+ ldr r0, [r5, #0x44]
+ sub r0, r1, r0
+ add r1, r4, #0
+ bl _s32_div_f
+ str r0, [r5, #0x4c]
+ ldr r0, [r5, #0x48]
+ add r1, r4, #0
+ sub r0, r6, r0
+ bl _s32_div_f
+ str r0, [r5, #0x50]
+ ldr r0, [r5, #0x54]
+ add r1, r4, #0
+ sub r0, r7, r0
+ bl _s32_div_f
+ str r0, [r5, #0x58]
+ ldr r0, [sp, #0x18]
+ str r0, [r5, #0x5c]
+_0223AE8E:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD81_0223AE58
+
+ thumb_func_start MOD81_0223AE90
+MOD81_0223AE90: ; 0x0223AE90
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0x6c
+ ldrh r0, [r0]
+ mov r1, #0xb6
+ bl _s32_div_f
+ add r4, r0, #0
+ mov r0, #0x5a
+ lsl r0, r0, #2
+ cmp r4, r0
+ blt _0223AEAA
+ sub r4, r4, r0
+_0223AEAA:
+ mov r0, #0x6c
+ ldrsh r1, [r5, r0]
+ mov r0, #0x6e
+ ldrsh r0, [r5, r0]
+ add r1, r1, r0
+ add r0, r5, #0
+ add r0, #0x6c
+ strh r1, [r0]
+ ldr r0, [r5, #0x5c]
+ cmp r0, #0
+ beq _0223AEE4
+ ldr r1, [r5, #0x44]
+ ldr r0, [r5, #0x4c]
+ add r0, r1, r0
+ str r0, [r5, #0x44]
+ ldr r1, [r5, #0x48]
+ ldr r0, [r5, #0x50]
+ add r0, r1, r0
+ str r0, [r5, #0x48]
+ ldr r1, [r5, #0x54]
+ ldr r0, [r5, #0x58]
+ add r1, r1, r0
+ str r1, [r5, #0x54]
+ ldr r0, [r5, #0xc]
+ bl MOD81_02238B84
+ ldr r0, [r5, #0x5c]
+ sub r0, r0, #1
+ str r0, [r5, #0x5c]
+_0223AEE4:
+ add r0, r4, #0
+ add r0, #0x5a
+ lsl r1, r0, #2
+ ldr r0, _0223AF58 ; =0x020EDF50
+ ldr r2, [r5, #0x44]
+ ldr r0, [r0, r1]
+ asr r3, r2, #0x1f
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ str r1, [r5, #0x1c]
+ ldr r2, [r5, #0x48]
+ ldr r0, _0223AF58 ; =0x020EDF50
+ lsl r1, r4, #2
+ ldr r0, [r0, r1]
+ asr r3, r2, #0x1f
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ str r1, [r5, #0x20]
+ add r1, r5, #0
+ str r3, [r5, #0x24]
+ mov r0, #0x34
+ ldrsh r2, [r5, r0]
+ mov r0, #3
+ lsl r0, r0, #8
+ add r0, r2, r0
+ strh r0, [r5, #0x34]
+ ldr r0, [r5, #0xc]
+ add r1, #0x34
+ bl MOD81_02238B40
+ add r0, r5, #0
+ add r1, r5, #0
+ add r5, #0x28
+ add r0, #0x1c
+ add r1, #0x10
+ add r2, r5, #0
+ bl VEC_Add
+ pop {r3, r4, r5, pc}
+ nop
+_0223AF58: .word 0x020EDF50
+ thumb_func_end MOD81_0223AE90
+
+ thumb_func_start MOD81_0223AF5C
+MOD81_0223AF5C: ; 0x0223AF5C
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldr r1, [r4, #0x68]
+ cmp r1, #0x3c
+ bge _0223AF6C
+ add r1, r1, #1
+ str r1, [r4, #0x68]
+_0223AF6C:
+ ldr r1, [r4, #0x60]
+ cmp r1, #4
+ bls _0223AF74
+ b _0223B084
+_0223AF74:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0223AF80: ; jump table
+ .short _0223AF8A - _0223AF80 - 2 ; case 0
+ .short _0223AFBE - _0223AF80 - 2 ; case 1
+ .short _0223AFFC - _0223AF80 - 2 ; case 2
+ .short _0223B042 - _0223AF80 - 2 ; case 3
+ .short _0223B072 - _0223AF80 - 2 ; case 4
+_0223AF8A:
+ ldr r1, [r4, #0x14]
+ ldr r0, [r4, #0x3c]
+ add r0, r1, r0
+ str r0, [r4, #0x14]
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4, #0x40]
+ add r0, r1, r0
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ bl MOD81_0223AE90
+ add r1, r4, #0
+ ldr r0, [r4, #0xc]
+ add r1, #0x28
+ bl MOD81_02238B18
+ ldr r0, [r4, #0xc]
+ bl MOD81_02238B8C
+ cmp r0, #0
+ beq _0223B084
+ ldr r0, [r4, #0x60]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0x60]
+ pop {r3, r4, pc}
+_0223AFBE:
+ ldr r0, [r4, #0xc]
+ bl MOD81_02238B8C
+ cmp r0, #0
+ bne _0223AFD8
+ ldr r0, [r4]
+ bl MOD81_0223B088
+ ldr r0, [r4, #0x60]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0x60]
+ pop {r3, r4, pc}
+_0223AFD8:
+ ldr r1, [r4, #0x14]
+ ldr r0, [r4, #0x3c]
+ add r0, r1, r0
+ str r0, [r4, #0x14]
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4, #0x40]
+ add r0, r1, r0
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ bl MOD81_0223AE90
+ ldr r0, [r4, #0xc]
+ add r4, #0x28
+ add r1, r4, #0
+ bl MOD81_02238B18
+ add sp, #4
+ pop {r3, r4, pc}
+_0223AFFC:
+ ldr r1, [r4, #0x14]
+ ldr r0, [r4, #0x3c]
+ add r0, r1, r0
+ str r0, [r4, #0x14]
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4, #0x40]
+ add r0, r1, r0
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ bl MOD81_0223AE90
+ add r1, r4, #0
+ ldr r0, [r4, #0xc]
+ add r1, #0x28
+ bl MOD81_02238B18
+ ldr r0, [r4, #0x68]
+ cmp r0, #0x3c
+ blt _0223B084
+ mov r1, #2
+ lsl r1, r1, #0xa
+ mov r0, #0xc
+ str r0, [sp]
+ add r0, r4, #0
+ add r2, r1, #0
+ lsr r3, r1, #2
+ bl MOD81_0223AE58
+ mov r0, #0
+ str r0, [r4, #0x64]
+ ldr r0, [r4, #0x60]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0x60]
+ pop {r3, r4, pc}
+_0223B042:
+ add r0, r4, #0
+ bl MOD81_0223AE90
+ add r1, r4, #0
+ ldr r0, [r4, #0xc]
+ add r1, #0x28
+ bl MOD81_02238B18
+ ldr r0, [r4, #0x64]
+ add r0, r0, #1
+ str r0, [r4, #0x64]
+ cmp r0, #0xc
+ blt _0223B084
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl MOD81_02238B58
+ mov r0, #0
+ str r0, [r4, #0x64]
+ ldr r0, [r4, #0x60]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0x60]
+ pop {r3, r4, pc}
+_0223B072:
+ ldr r1, [r4, #0x64]
+ add r1, r1, #1
+ str r1, [r4, #0x64]
+ cmp r1, #8
+ ble _0223B084
+ mov r1, #0
+ str r1, [r4, #4]
+ bl FUN_0200CAB4
+_0223B084:
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD81_0223AF5C
+
+ thumb_func_start MOD81_0223B088
+MOD81_0223B088: ; 0x0223B088
+ mov r1, #1
+ str r1, [r0, #0xc]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD81_0223B088
+
+ thumb_func_start MOD81_0223B090
+MOD81_0223B090: ; 0x0223B090
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _0223B0DC
+ mov r3, #0
+ ldr r1, _0223B0E0 ; =0x00001150
+ str r3, [r4, #0xc]
+ add r0, sp, #0
+ strh r1, [r0]
+ strh r3, [r0, #2]
+ strh r3, [r0, #4]
+ mov r1, #3
+ ldr r0, [r4, #0x24]
+ add r2, r1, #0
+ bl FUN_020179E0
+ mov r2, #3
+ add r3, r2, #0
+ ldr r0, [r4, #0x24]
+ mov r1, #7
+ add r3, #0xfd
+ bl FUN_020179E0
+ ldr r0, [r4, #0x28]
+ add r1, sp, #0
+ bl MOD81_02238C70
+ ldr r2, _0223B0E4 ; =0x04000304
+ ldrh r1, [r2]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0223B0DC:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223B0E0: .word 0x00001150
+_0223B0E4: .word 0x04000304
+ thumb_func_end MOD81_0223B090
+
+ thumb_func_start MOD81_0223B0E8
+MOD81_0223B0E8: ; 0x0223B0E8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x3a
+ mov r1, #0x24
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _0223B106
+ str r5, [r4]
+ mov r0, #0
+ str r0, [r4, #4]
+ add r0, r5, #0
+ bl MOD81_0223880C
+ str r0, [r4, #0xc]
+_0223B106:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223B0E8
+
+ thumb_func_start MOD81_0223B10C
+MOD81_0223B10C: ; 0x0223B10C
+ push {r4, lr}
+ add r4, r0, #0
+ beq _0223B11C
+ bl MOD81_0223B478
+ add r0, r4, #0
+ bl FUN_02016A18
+_0223B11C:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223B10C
+
+ thumb_func_start MOD81_0223B120
+MOD81_0223B120: ; 0x0223B120
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r2, [r4]
+ add r5, r0, #0
+ cmp r2, #2
+ bhs _0223B148
+ lsl r3, r2, #2
+ ldr r2, _0223B14C ; =0x0223D180
+ add r1, r5, #4
+ ldr r2, [r2, r3]
+ blx r2
+ cmp r0, #0
+ beq _0223B144
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r5, #4]
+_0223B144:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0223B148:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223B14C: .word 0x0223D180
+ thumb_func_end MOD81_0223B120
+
+ thumb_func_start MOD81_0223B150
+MOD81_0223B150: ; 0x0223B150
+ push {lr}
+ sub sp, #0xc
+ bl MOD81_0223B264
+ mov r0, #8
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ ldr r3, _0223B174 ; =0x00007FFF
+ mov r0, #0
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ mov r0, #1
+ add sp, #0xc
+ pop {pc}
+ .align 2, 0
+_0223B174: .word 0x00007FFF
+ thumb_func_end MOD81_0223B150
+
+ thumb_func_start MOD81_0223B178
+MOD81_0223B178: ; 0x0223B178
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _0223B190
+ cmp r0, #1
+ beq _0223B1C2
+ cmp r0, #2
+ beq _0223B1EE
+ b _0223B1FC
+_0223B190:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0223B1FC
+ ldr r0, _0223B204 ; =0xFFE80000
+ mov r2, #0
+ str r0, [r5, #0x10]
+ mov r0, #5
+ lsl r0, r0, #0x10
+ str r0, [r5, #0x14]
+ ldr r0, _0223B208 ; =0x00005999
+ add r1, r5, #0
+ str r0, [r5, #0x18]
+ ldr r0, _0223B20C ; =0xFFFFDDDE
+ str r0, [r5, #0x1c]
+ mov r0, #0x3c
+ str r0, [r5, #8]
+ ldr r0, _0223B210 ; =MOD81_0223B21C
+ str r2, [r5, #0x20]
+ bl FUN_0200CA60
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0223B1FC
+_0223B1C2:
+ ldr r0, [r5, #0x20]
+ cmp r0, #0
+ beq _0223B1FC
+ ldr r0, _0223B214 ; =0x000006A9
+ bl FUN_020054C8
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #0
+ ldr r3, _0223B218 ; =0x00007FFF
+ add r1, r0, #0
+ add r2, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0223B1FC
+_0223B1EE:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0223B1FC
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_0223B1FC:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_0223B204: .word 0xFFE80000
+_0223B208: .word 0x00005999
+_0223B20C: .word 0xFFFFDDDE
+_0223B210: .word MOD81_0223B21C
+_0223B214: .word 0x000006A9
+_0223B218: .word 0x00007FFF
+ thumb_func_end MOD81_0223B178
+
+ thumb_func_start MOD81_0223B21C
+MOD81_0223B21C: ; 0x0223B21C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _0223B24A
+ sub r0, r0, #1
+ str r0, [r4, #8]
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x18]
+ add r0, r1, r0
+ str r0, [r4, #0x10]
+ ldr r1, [r4, #0x14]
+ ldr r0, [r4, #0x1c]
+ add r2, r1, r0
+ str r2, [r4, #0x14]
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ asr r1, r1, #0xc
+ asr r2, r2, #0xc
+ bl MOD81_0223B4B0
+ pop {r3, r4, r5, pc}
+_0223B24A:
+ mov r1, #0x2f
+ mvn r1, r1
+ ldr r0, [r4, #0xc]
+ add r2, r1, #0
+ bl MOD81_0223B4B0
+ mov r0, #1
+ str r0, [r4, #0x20]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223B21C
+
+ thumb_func_start MOD81_0223B264
+MOD81_0223B264: ; 0x0223B264
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r0, _0223B45C ; =0x0223D1EC
+ bl FUN_0201E66C
+ ldr r2, _0223B460 ; =0x04000304
+ ldrh r1, [r2]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2]
+ ldr r0, _0223B464 ; =0x0223D188
+ bl FUN_02016BBC
+ ldr r0, [r4, #0xc]
+ ldr r2, _0223B468 ; =0x0223D198
+ mov r1, #1
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0xc]
+ ldr r2, _0223B468 ; =0x0223D198
+ mov r1, #5
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0xc]
+ ldr r2, _0223B46C ; =0x0223D1B4
+ mov r1, #2
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0xc]
+ ldr r2, _0223B470 ; =0x0223D1D0
+ mov r1, #3
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0xc]
+ ldr r2, _0223B470 ; =0x0223D1D0
+ mov r1, #7
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x5d
+ mov r1, #0x13
+ 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, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x5d
+ mov r1, #0x13
+ 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, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x5d
+ mov r1, #0x12
+ mov r3, #3
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x5d
+ mov r1, #0x12
+ mov r3, #7
+ bl FUN_020068C8
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x3a
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x5d
+ mov r1, #0x14
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x3a
+ str r0, [sp, #4]
+ mov r0, #0x5d
+ mov r1, #0x14
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r0, #0xc8
+ str r0, [sp]
+ mov r1, #1
+ ldr r0, [r4, #0xc]
+ mov r2, #0
+ add r3, r1, #0
+ bl FUN_02017F48
+ mov r0, #0xc8
+ str r0, [sp]
+ ldr r0, [r4, #0xc]
+ mov r1, #5
+ mov r2, #0
+ mov r3, #1
+ bl FUN_02017F48
+ mov r0, #0xc8
+ str r0, [sp]
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ mov r2, #0
+ mov r3, #1
+ bl FUN_02017F48
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4]
+ mov r2, #1
+ mov r3, #0xe
+ bl MOD81_022385D0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4]
+ mov r2, #5
+ mov r3, #0xe
+ bl MOD81_022385D0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r4]
+ mov r1, #1
+ mov r2, #2
+ mov r3, #0xf
+ bl MOD81_022385D0
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x40
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ mov r2, #0xc8
+ bl FUN_02018540
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x40
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r0, [r4, #0xc]
+ mov r1, #5
+ mov r2, #0xc8
+ bl FUN_02018540
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x40
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ mov r2, #0xc8
+ bl FUN_02018540
+ mov r0, #0x14
+ str r0, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ mov r2, #1
+ mov r3, #0xe
+ bl MOD81_022386BC
+ mov r0, #0x14
+ str r0, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ mov r2, #5
+ mov r3, #0xe
+ bl MOD81_022386BC
+ mov r2, #2
+ str r2, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ mov r1, #1
+ mov r3, #0xf
+ bl MOD81_022386BC
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_02017CD0
+ ldr r0, [r4, #0xc]
+ mov r1, #5
+ bl FUN_02017CD0
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ bl FUN_02017CD0
+ ldr r0, [r4, #0xc]
+ ldr r2, _0223B474 ; =0xFFFFFE80
+ mov r1, #0x50
+ bl MOD81_0223B4B0
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_0223B45C: .word 0x0223D1EC
+_0223B460: .word 0x04000304
+_0223B464: .word 0x0223D188
+_0223B468: .word 0x0223D198
+_0223B46C: .word 0x0223D1B4
+_0223B470: .word 0x0223D1D0
+_0223B474: .word 0xFFFFFE80
+ thumb_func_end MOD81_0223B264
+
+ thumb_func_start MOD81_0223B478
+MOD81_0223B478: ; 0x0223B478
+ push {r4, lr}
+ add r4, r0, #0
+ 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, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #6
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #5
+ bl FUN_020178A0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223B478
+
+ thumb_func_start MOD81_0223B4B0
+MOD81_0223B4B0: ; 0x0223B4B0
+ push {r4, r5, r6, lr}
+ ldr r3, _0223B4E4 ; =0x000001FF
+ add r4, r1, #0
+ add r6, r2, #0
+ and r4, r3
+ add r5, r0, #0
+ mov r1, #2
+ mov r2, #3
+ and r3, r6
+ bl FUN_020179E0
+ add r0, r5, #0
+ mov r1, #1
+ mov r2, #3
+ add r3, r4, #0
+ bl FUN_020179E0
+ add r4, #0xc0
+ add r0, r5, #0
+ mov r1, #5
+ mov r2, #3
+ add r3, r4, #0
+ bl FUN_020179E0
+ pop {r4, r5, r6, pc}
+ nop
+_0223B4E4: .word 0x000001FF
+ thumb_func_end MOD81_0223B4B0
+
+ thumb_func_start MOD81_0223B4E8
+MOD81_0223B4E8: ; 0x0223B4E8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x3a
+ mov r1, #0xb0
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _0223B51C
+ str r5, [r4]
+ mov r0, #0
+ str r0, [r4, #4]
+ add r0, r5, #0
+ bl MOD81_0223880C
+ str r0, [r4, #0x24]
+ mov r0, #0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0xc]
+ add r0, r4, #0
+ add r0, #0x34
+ bl MOD81_0223B9A0
+ ldr r0, _0223B520 ; =MOD81_0223BCA8
+ add r1, r4, #0
+ bl FUN_02015F10
+_0223B51C:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223B520: .word MOD81_0223BCA8
+ thumb_func_end MOD81_0223B4E8
+
+ thumb_func_start MOD81_0223B524
+MOD81_0223B524: ; 0x0223B524
+ push {r4, lr}
+ add r4, r0, #0
+ beq _0223B552
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ add r0, r4, #0
+ bl MOD81_0223B7D0
+ add r0, r4, #0
+ bl MOD81_0223B8F8
+ add r0, r4, #0
+ bl MOD81_0223B988
+ add r0, r4, #0
+ add r0, #0x34
+ bl MOD81_0223B9A8
+ add r0, r4, #0
+ bl FUN_02016A18
+_0223B552:
+ pop {r4, pc}
+ thumb_func_end MOD81_0223B524
+
+ thumb_func_start MOD81_0223B554
+MOD81_0223B554: ; 0x0223B554
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r2, [r4]
+ add r5, r0, #0
+ cmp r2, #2
+ bhs _0223B57C
+ lsl r3, r2, #2
+ ldr r2, _0223B580 ; =0x0223D214
+ add r1, r5, #4
+ ldr r2, [r2, r3]
+ blx r2
+ cmp r0, #0
+ beq _0223B578
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r5, #4]
+_0223B578:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0223B57C:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223B580: .word 0x0223D214
+ thumb_func_end MOD81_0223B554
+
+ thumb_func_start MOD81_0223B584
+MOD81_0223B584: ; 0x0223B584
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl MOD81_0223B670
+ add r0, r4, #0
+ bl MOD81_0223B7E8
+ add r0, r4, #0
+ bl MOD81_0223B908
+ mov r0, #8
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ ldr r3, _0223B5B8 ; =0x00007FFF
+ mov r0, #0
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ mov r0, #1
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_0223B5B8: .word 0x00007FFF
+ thumb_func_end MOD81_0223B584
+
+ thumb_func_start MOD81_0223B5BC
+MOD81_0223B5BC: ; 0x0223B5BC
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #3
+ bhi _0223B662
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223B5D6: ; jump table
+ .short _0223B5DE - _0223B5D6 - 2 ; case 0
+ .short _0223B5FE - _0223B5D6 - 2 ; case 1
+ .short _0223B628 - _0223B5D6 - 2 ; case 2
+ .short _0223B654 - _0223B5D6 - 2 ; case 3
+_0223B5DE:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0223B662
+ ldr r0, [r5, #0x20]
+ mov r1, #3
+ bl FUN_02020130
+ ldr r0, [r5, #0x20]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0223B662
+_0223B5FE:
+ ldr r0, [r5, #0x20]
+ bl FUN_02020388
+ cmp r0, #0
+ bne _0223B662
+ ldr r0, _0223B668 ; =0x000006AB
+ bl FUN_020054C8
+ add r1, r5, #0
+ add r0, r5, #0
+ add r1, #0x34
+ bl MOD81_0223B9BC
+ ldr r0, [r5, #0x2c]
+ mov r1, #1
+ bl MOD81_02238B58
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0223B662
+_0223B628:
+ add r5, #0x34
+ add r0, r5, #0
+ bl MOD81_0223BA7C
+ cmp r0, #0
+ beq _0223B662
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #0
+ ldr r3, _0223B66C ; =0x00007FFF
+ add r1, r0, #0
+ add r2, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0223B662
+_0223B654:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0223B662
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_0223B662:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_0223B668: .word 0x000006AB
+_0223B66C: .word 0x00007FFF
+ thumb_func_end MOD81_0223B5BC
+
+ thumb_func_start MOD81_0223B670
+MOD81_0223B670: ; 0x0223B670
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, _0223B7C0 ; =0x0223D258
+ bl FUN_0201E66C
+ ldr r2, _0223B7C4 ; =0x04000304
+ ldrh r1, [r2]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2]
+ ldr r0, _0223B7C8 ; =0x0223D21C
+ bl FUN_02016BBC
+ ldr r0, [r4, #0x24]
+ ldr r2, _0223B7CC ; =0x0223D23C
+ mov r1, #3
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x24]
+ ldr r2, _0223B7CC ; =0x0223D23C
+ mov r1, #7
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4]
+ bl MOD81_02238828
+ cmp r0, #3
+ bhi _0223B6C2
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223B6BA: ; jump table
+ .short _0223B6C2 - _0223B6BA - 2 ; case 0
+ .short _0223B6CE - _0223B6BA - 2 ; case 1
+ .short _0223B6DA - _0223B6BA - 2 ; case 2
+ .short _0223B6E6 - _0223B6BA - 2 ; case 3
+_0223B6C2:
+ mov r0, #0xf
+ str r0, [sp, #0x10]
+ mov r7, #0x10
+ mov r6, #0x11
+ mov r5, #0
+ b _0223B6F0
+_0223B6CE:
+ mov r0, #0xf
+ str r0, [sp, #0x10]
+ mov r7, #0x10
+ mov r6, #0x11
+ mov r5, #0x20
+ b _0223B6F0
+_0223B6DA:
+ mov r0, #0xf
+ str r0, [sp, #0x10]
+ mov r7, #0x10
+ mov r6, #0x11
+ mov r5, #0x40
+ b _0223B6F0
+_0223B6E6:
+ mov r0, #0x18
+ str r0, [sp, #0x10]
+ mov r7, #0x19
+ mov r6, #0x1a
+ mov r5, #0
+_0223B6F0:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x24]
+ mov r0, #0x5d
+ add r1, r7, #0
+ 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, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x24]
+ mov r0, #0x5d
+ add r1, r7, #0
+ 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, #0x3a
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x10]
+ ldr r2, [r4, #0x24]
+ mov r0, #0x5d
+ mov r3, #3
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x10]
+ ldr r2, [r4, #0x24]
+ mov r0, #0x5d
+ mov r3, #7
+ bl FUN_020068C8
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #0x5d
+ add r1, r6, #0
+ add r3, r5, #0
+ bl FUN_02006948
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #0x5d
+ add r1, r6, #0
+ mov r2, #4
+ add r3, r5, #0
+ bl FUN_02006948
+ mov r1, #3
+ ldr r0, [r4, #0x24]
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ mov r2, #3
+ add r3, r2, #0
+ ldr r0, [r4, #0x24]
+ mov r1, #7
+ add r3, #0xfd
+ bl FUN_020179E0
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ bl FUN_02033E74
+ mov r0, #1
+ mov r1, #0x39
+ bl FUN_02033F04
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223B7C0: .word 0x0223D258
+_0223B7C4: .word 0x04000304
+_0223B7C8: .word 0x0223D21C
+_0223B7CC: .word 0x0223D23C
+ thumb_func_end MOD81_0223B670
+
+ thumb_func_start MOD81_0223B7D0
+MOD81_0223B7D0: ; 0x0223B7D0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x24]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #0x24]
+ mov r1, #7
+ bl FUN_020178A0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223B7D0
+
+ thumb_func_start MOD81_0223B7E8
+MOD81_0223B7E8: ; 0x0223B7E8
+ push {r3, r4, lr}
+ sub sp, #0x24
+ add r4, r0, #0
+ bl FUN_020BB7F4
+ bl G3X_InitMtxStack
+ ldr r0, _0223B8C8 ; =0x04000060
+ ldr r1, _0223B8CC ; =0xFFFFCFFD
+ ldrh r2, [r0]
+ 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, _0223B8D0 ; =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, _0223B8D4 ; =0x0223D22C
+ bl G3X_SetEdgeColorTable
+ mov r1, #0
+ ldr r0, _0223B8D8 ; =0x000043FF
+ ldr r2, _0223B8DC ; =0x00007FFF
+ mov r3, #0x3f
+ str r1, [sp]
+ bl G3X_SetClearColor
+ ldr r1, _0223B8E0 ; =0x04000540
+ mov r0, #2
+ str r0, [r1]
+ ldr r0, _0223B8E4 ; =0xBFFF0000
+ str r0, [r1, #0x40]
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_020AEB70
+ mov r0, #1
+ lsl r0, r0, #0xe
+ mov r1, #1
+ bl FUN_020AEDF4
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r1, _0223B8E8 ; =0x04000008
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ strh r2, [r1]
+ mov r1, #0
+ mov r0, #1
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD81_022388C0
+ str r0, [r4, #0x28]
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r4, #0x28]
+ mov r2, #0x5d
+ mov r3, #0x1b
+ bl MOD81_02238A84
+ ldr r1, _0223B8EC ; =0x000018E3
+ str r0, [r4, #0x2c]
+ add r0, sp, #0x10
+ strh r1, [r0]
+ mov r1, #0
+ strh r1, [r0, #2]
+ strh r1, [r0, #4]
+ ldr r0, [r4, #0x28]
+ add r1, sp, #0x10
+ bl MOD81_02238C60
+ ldr r1, _0223B8F0 ; =0x00001150
+ add r0, sp, #0x10
+ strh r1, [r0]
+ ldr r0, [r4, #0x28]
+ add r1, sp, #0x10
+ bl MOD81_02238C70
+ ldr r0, [r4, #0x28]
+ ldr r1, _0223B8F4 ; =0x000007D2
+ bl MOD81_02238C90
+ ldr r0, [r4, #0x28]
+ add r1, sp, #0x18
+ bl MOD81_02238C40
+ add sp, #0x24
+ pop {r3, r4, pc}
+ .align 2, 0
+_0223B8C8: .word 0x04000060
+_0223B8CC: .word 0xFFFFCFFD
+_0223B8D0: .word 0x0000CFFB
+_0223B8D4: .word 0x0223D22C
+_0223B8D8: .word 0x000043FF
+_0223B8DC: .word 0x00007FFF
+_0223B8E0: .word 0x04000540
+_0223B8E4: .word 0xBFFF0000
+_0223B8E8: .word 0x04000008
+_0223B8EC: .word 0x000018E3
+_0223B8F0: .word 0x00001150
+_0223B8F4: .word 0x000007D2
+ thumb_func_end MOD81_0223B7E8
+
+ thumb_func_start MOD81_0223B8F8
+MOD81_0223B8F8: ; 0x0223B8F8
+ push {r3, lr}
+ ldr r0, [r0, #0x28]
+ cmp r0, #0
+ beq _0223B904
+ bl MOD81_0223890C
+_0223B904:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223B8F8
+
+ thumb_func_start MOD81_0223B908
+MOD81_0223B908: ; 0x0223B908
+ push {r4, lr}
+ sub sp, #0x70
+ add r4, r0, #0
+ add r0, #0x10
+ mov r1, #0x5d
+ mov r2, #7
+ mov r3, #8
+ bl MOD81_0223874C
+ add r0, sp, #0x5c
+ bl FUN_020B19DC
+ add r0, sp, #0x38
+ bl FUN_020B1A24
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ add r0, sp, #0x38
+ str r0, [sp, #0x10]
+ mov r0, #0x5d
+ mov r1, #9
+ bl FUN_02006AE4
+ mov r0, #0x3a
+ str r0, [sp]
+ add r0, sp, #0x5c
+ str r0, [sp, #4]
+ mov r0, #0x5d
+ mov r1, #0xa
+ mov r2, #1
+ mov r3, #0
+ bl FUN_02006A8C
+ mov r0, #1
+ add r1, r4, #0
+ str r0, [sp]
+ add r0, sp, #0x14
+ add r1, #0x10
+ add r2, sp, #0x38
+ add r3, sp, #0x5c
+ bl MOD81_022387A8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #0x14
+ mov r2, #0x80
+ mov r3, #0x60
+ bl MOD81_022387C8
+ mov r1, #0
+ str r0, [r4, #0x20]
+ bl FUN_020200A0
+ add sp, #0x70
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223B908
+
+ thumb_func_start MOD81_0223B988
+MOD81_0223B988: ; 0x0223B988
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ beq _0223B996
+ bl FUN_0201FFC8
+_0223B996:
+ add r4, #0x10
+ add r0, r4, #0
+ bl MOD81_02238784
+ pop {r4, pc}
+ thumb_func_end MOD81_0223B988
+
+ thumb_func_start MOD81_0223B9A0
+MOD81_0223B9A0: ; 0x0223B9A0
+ mov r1, #0
+ str r1, [r0, #4]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD81_0223B9A0
+
+ thumb_func_start MOD81_0223B9A8
+MOD81_0223B9A8: ; 0x0223B9A8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _0223B9BA
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #4]
+_0223B9BA:
+ pop {r4, pc}
+ thumb_func_end MOD81_0223B9A8
+
+ thumb_func_start MOD81_0223B9BC
+MOD81_0223B9BC: ; 0x0223B9BC
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ str r0, [r4]
+ ldr r1, [r0, #0x2c]
+ ldr r2, _0223BA5C ; =0xFFFFD870
+ str r1, [r4, #0xc]
+ ldr r0, [r0, #0x28]
+ ldr r1, _0223BA60 ; =0x003D6C00
+ str r0, [r4, #8]
+ mov r0, #0
+ str r0, [r4, #0x10]
+ str r1, [r4, #0x14]
+ ldr r1, _0223BA64 ; =0xFFE44000
+ str r1, [r4, #0x18]
+ add r1, r4, #0
+ add r1, #0x78
+ strh r2, [r1]
+ add r1, r4, #0
+ ldr r2, _0223BA68 ; =0xFFFFF550
+ add r1, #0x7a
+ strh r2, [r1]
+ ldr r1, _0223BA6C ; =0xFFFEF2C6
+ str r1, [r4, #0x3c]
+ ldr r1, _0223BA70 ; =0x0000936D
+ str r1, [r4, #0x40]
+ str r0, [r4, #0x6c]
+ str r0, [r4, #0x70]
+ mov r1, #2
+ str r0, [r4, #0x74]
+ lsl r1, r1, #0xc
+ strh r1, [r4, #0x34]
+ ldr r1, _0223BA74 ; =0xFFFFE000
+ strh r1, [r4, #0x36]
+ strh r0, [r4, #0x38]
+ add r1, r4, #0
+ ldr r0, [r4, #0xc]
+ add r1, #0x34
+ bl MOD81_02238B40
+ mov r3, #2
+ lsl r3, r3, #8
+ mov r1, #0x4a
+ mov r2, #0x63
+ str r3, [r4, #0x5c]
+ lsl r0, r3, #2
+ str r0, [r4, #0x44]
+ str r0, [r4, #0x48]
+ mov r0, #0
+ str r0, [r4, #0x68]
+ mov r0, #0xc
+ str r0, [sp]
+ add r0, r4, #0
+ lsl r1, r1, #0xa
+ lsl r2, r2, #0xa
+ lsl r3, r3, #3
+ bl MOD81_0223BA8C
+ add r0, r4, #0
+ bl MOD81_0223BAD0
+ add r1, r4, #0
+ ldr r0, [r4, #0xc]
+ add r1, #0x28
+ bl MOD81_02238B18
+ add r1, r4, #0
+ ldr r0, [r4, #0xc]
+ add r1, #0x34
+ bl MOD81_02238B28
+ ldr r0, _0223BA78 ; =MOD81_0223BBC8
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA44
+ str r0, [r4, #4]
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_0223BA5C: .word 0xFFFFD870
+_0223BA60: .word 0x003D6C00
+_0223BA64: .word 0xFFE44000
+_0223BA68: .word 0xFFFFF550
+_0223BA6C: .word 0xFFFEF2C6
+_0223BA70: .word 0x0000936D
+_0223BA74: .word 0xFFFFE000
+_0223BA78: .word MOD81_0223BBC8
+ thumb_func_end MOD81_0223B9BC
+
+ thumb_func_start MOD81_0223BA7C
+MOD81_0223BA7C: ; 0x0223BA7C
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ bne _0223BA86
+ mov r0, #1
+ bx lr
+_0223BA86:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD81_0223BA7C
+
+ thumb_func_start MOD81_0223BA8C
+MOD81_0223BA8C: ; 0x0223BA8C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [sp, #0x18]
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ str r0, [sp]
+ cmp r0, #0
+ beq _0223BACC
+ ldr r0, [r5, #0x44]
+ ldr r1, [sp]
+ sub r0, r4, r0
+ bl _s32_div_f
+ str r0, [r5, #0x4c]
+ ldr r0, [r5, #0x48]
+ ldr r1, [sp]
+ sub r0, r6, r0
+ bl _s32_div_f
+ str r0, [r5, #0x50]
+ ldr r0, [r5, #0x5c]
+ ldr r1, [sp]
+ sub r0, r7, r0
+ bl _s32_div_f
+ str r0, [r5, #0x60]
+ str r4, [r5, #0x54]
+ str r6, [r5, #0x58]
+ ldr r0, [sp, #0x18]
+ str r7, [r5, #0x64]
+ str r0, [r5, #0x68]
+_0223BACC:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223BA8C
+
+ thumb_func_start MOD81_0223BAD0
+MOD81_0223BAD0: ; 0x0223BAD0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _0223BBC0 ; =0x0223D3A0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223BBAE
+ add r0, r5, #0
+ add r0, #0x78
+ ldrh r0, [r0]
+ mov r1, #0xb6
+ bl _s32_div_f
+ add r4, r0, #0
+ mov r0, #0x5a
+ lsl r0, r0, #2
+ cmp r4, r0
+ blt _0223BAF4
+ sub r4, r4, r0
+_0223BAF4:
+ mov r0, #0x78
+ ldrsh r1, [r5, r0]
+ mov r0, #0x7a
+ ldrsh r0, [r5, r0]
+ sub r1, r1, r0
+ add r0, r5, #0
+ add r0, #0x78
+ strh r1, [r0]
+ ldr r0, [r5, #0x68]
+ cmp r0, #0
+ beq _0223BB3C
+ sub r0, r0, #1
+ str r0, [r5, #0x68]
+ beq _0223BB28
+ ldr r1, [r5, #0x44]
+ ldr r0, [r5, #0x4c]
+ add r0, r1, r0
+ str r0, [r5, #0x44]
+ ldr r1, [r5, #0x48]
+ ldr r0, [r5, #0x50]
+ add r0, r1, r0
+ str r0, [r5, #0x48]
+ ldr r1, [r5, #0x5c]
+ ldr r0, [r5, #0x60]
+ add r0, r1, r0
+ b _0223BB32
+_0223BB28:
+ ldr r0, [r5, #0x54]
+ str r0, [r5, #0x44]
+ ldr r0, [r5, #0x58]
+ str r0, [r5, #0x48]
+ ldr r0, [r5, #0x64]
+_0223BB32:
+ str r0, [r5, #0x5c]
+ ldr r0, [r5, #0xc]
+ ldr r1, [r5, #0x5c]
+ bl MOD81_02238B84
+_0223BB3C:
+ add r0, r4, #0
+ add r0, #0x5a
+ lsl r1, r0, #2
+ ldr r0, _0223BBC4 ; =0x020EDF50
+ ldr r2, [r5, #0x44]
+ ldr r0, [r0, r1]
+ asr r3, r2, #0x1f
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ str r1, [r5, #0x1c]
+ ldr r2, [r5, #0x48]
+ ldr r0, _0223BBC4 ; =0x020EDF50
+ lsl r1, r4, #2
+ ldr r0, [r0, r1]
+ asr r3, r2, #0x1f
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ str r1, [r5, #0x20]
+ add r1, r5, #0
+ str r3, [r5, #0x24]
+ mov r0, #0x34
+ ldrsh r2, [r5, r0]
+ mov r0, #3
+ lsl r0, r0, #8
+ sub r0, r2, r0
+ strh r0, [r5, #0x34]
+ ldr r0, [r5, #0xc]
+ add r1, #0x34
+ bl MOD81_02238B40
+ add r0, r5, #0
+ add r1, r5, #0
+ add r5, #0x28
+ add r0, #0x1c
+ add r1, #0x10
+ add r2, r5, #0
+ bl VEC_Add
+ pop {r3, r4, r5, pc}
+_0223BBAE:
+ add r2, r5, #0
+ add r2, #0x10
+ ldmia r2!, {r0, r1}
+ add r5, #0x28
+ stmia r5!, {r0, r1}
+ ldr r0, [r2]
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+ nop
+_0223BBC0: .word 0x0223D3A0
+_0223BBC4: .word 0x020EDF50
+ thumb_func_end MOD81_0223BAD0
+
+ thumb_func_start MOD81_0223BBC8
+MOD81_0223BBC8: ; 0x0223BBC8
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #0x74]
+ cmp r1, #0x46
+ bge _0223BBD6
+ add r1, r1, #1
+ str r1, [r4, #0x74]
+_0223BBD6:
+ ldr r1, [r4, #0x6c]
+ cmp r1, #3
+ bhi _0223BC9C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0223BBE8: ; jump table
+ .short _0223BBF0 - _0223BBE8 - 2 ; case 0
+ .short _0223BC16 - _0223BBE8 - 2 ; case 1
+ .short _0223BC50 - _0223BBE8 - 2 ; case 2
+ .short _0223BC8A - _0223BBE8 - 2 ; case 3
+_0223BBF0:
+ add r0, r4, #0
+ bl MOD81_0223BAD0
+ add r1, r4, #0
+ ldr r0, [r4, #0xc]
+ add r1, #0x28
+ bl MOD81_02238B18
+ ldr r0, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r4, #0x74]
+ cmp r0, #0xc
+ blt _0223BC9C
+ mov r0, #0
+ str r0, [r4, #0x74]
+ ldr r0, [r4, #0x6c]
+ add r0, r0, #1
+ str r0, [r4, #0x6c]
+ pop {r4, pc}
+_0223BC16:
+ ldr r0, [r4, #0xc]
+ bl MOD81_02238B8C
+ cmp r0, #0
+ bne _0223BC2E
+ ldr r0, [r4]
+ bl MOD81_0223BCA0
+ ldr r0, [r4, #0x6c]
+ add r0, r0, #1
+ str r0, [r4, #0x6c]
+ pop {r4, pc}
+_0223BC2E:
+ ldr r1, [r4, #0x14]
+ ldr r0, [r4, #0x3c]
+ add r0, r1, r0
+ str r0, [r4, #0x14]
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4, #0x40]
+ add r0, r1, r0
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ bl MOD81_0223BAD0
+ ldr r0, [r4, #0xc]
+ add r4, #0x28
+ add r1, r4, #0
+ bl MOD81_02238B18
+ pop {r4, pc}
+_0223BC50:
+ ldr r1, [r4, #0x14]
+ ldr r0, [r4, #0x3c]
+ add r0, r1, r0
+ str r0, [r4, #0x14]
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4, #0x40]
+ add r0, r1, r0
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ bl MOD81_0223BAD0
+ add r1, r4, #0
+ ldr r0, [r4, #0xc]
+ add r1, #0x28
+ bl MOD81_02238B18
+ ldr r0, [r4, #0x74]
+ cmp r0, #0x46
+ blt _0223BC9C
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl MOD81_02238B58
+ mov r0, #0
+ str r0, [r4, #0x70]
+ ldr r0, [r4, #0x6c]
+ add r0, r0, #1
+ str r0, [r4, #0x6c]
+ pop {r4, pc}
+_0223BC8A:
+ ldr r1, [r4, #0x70]
+ add r1, r1, #1
+ str r1, [r4, #0x70]
+ cmp r1, #8
+ ble _0223BC9C
+ mov r1, #0
+ str r1, [r4, #4]
+ bl FUN_0200CAB4
+_0223BC9C:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223BBC8
+
+ thumb_func_start MOD81_0223BCA0
+MOD81_0223BCA0: ; 0x0223BCA0
+ mov r1, #1
+ str r1, [r0, #0xc]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD81_0223BCA0
+
+ thumb_func_start MOD81_0223BCA8
+MOD81_0223BCA8: ; 0x0223BCA8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ cmp r0, #0
+ beq _0223BCC6
+ bl G3X_ResetMtxStack
+ ldr r0, [r4, #0x28]
+ bl MOD81_02238940
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_020222B4
+_0223BCC6:
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _0223BD08
+ ldr r1, _0223BD0C ; =0x0000EEB0
+ add r0, sp, #0
+ strh r1, [r0]
+ mov r1, #0
+ strh r1, [r0, #2]
+ strh r1, [r0, #4]
+ mov r1, #3
+ add r3, r1, #0
+ ldr r0, [r4, #0x24]
+ add r2, r1, #0
+ add r3, #0xfd
+ bl FUN_020179E0
+ ldr r0, [r4, #0x24]
+ mov r1, #7
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #0x28]
+ add r1, sp, #0
+ bl MOD81_02238C70
+ ldr r2, _0223BD10 ; =0x04000304
+ ldr r0, _0223BD14 ; =0xFFFF7FFF
+ ldrh r1, [r2]
+ and r0, r1
+ strh r0, [r2]
+ mov r0, #0
+ str r0, [r4, #0xc]
+_0223BD08:
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_0223BD0C: .word 0x0000EEB0
+_0223BD10: .word 0x04000304
+_0223BD14: .word 0xFFFF7FFF
+ thumb_func_end MOD81_0223BCA8
+
+ thumb_func_start MOD81_0223BD18
+MOD81_0223BD18: ; 0x0223BD18
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x3a
+ mov r1, #0x3c
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _0223BD46
+ str r5, [r4]
+ mov r0, #0
+ str r0, [r4, #4]
+ add r0, r5, #0
+ bl MOD81_0223880C
+ str r0, [r4, #0xc]
+ mov r0, #0
+ str r0, [r4, #0x20]
+ str r0, [r4, #0x10]
+ str r0, [r4, #0x14]
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x30]
+ str r0, [r4, #0x34]
+ str r0, [r4, #0x38]
+_0223BD46:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223BD18
+
+ thumb_func_start MOD81_0223BD4C
+MOD81_0223BD4C: ; 0x0223BD4C
+ push {r4, lr}
+ add r4, r0, #0
+ beq _0223BD80
+ bl MOD81_0223C1A8
+ add r0, r4, #0
+ bl MOD81_0223C2EC
+ ldr r0, [r4, #0x30]
+ cmp r0, #0
+ beq _0223BD66
+ bl MOD81_0223C460
+_0223BD66:
+ ldr r0, [r4, #0x34]
+ cmp r0, #0
+ beq _0223BD70
+ bl MOD81_0223C3B0
+_0223BD70:
+ ldr r0, [r4, #0x38]
+ cmp r0, #0
+ beq _0223BD7A
+ bl MOD81_0223C514
+_0223BD7A:
+ add r0, r4, #0
+ bl FUN_02016A18
+_0223BD80:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223BD4C
+
+ thumb_func_start MOD81_0223BD84
+MOD81_0223BD84: ; 0x0223BD84
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r2, [r4]
+ add r5, r0, #0
+ cmp r2, #3
+ bhs _0223BDB2
+ lsl r3, r2, #2
+ ldr r2, _0223BDB8 ; =0x0223D288
+ add r1, r5, #4
+ ldr r2, [r2, r3]
+ blx r2
+ cmp r0, #0
+ beq _0223BDA8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r5, #4]
+_0223BDA8:
+ add r0, r5, #0
+ bl MOD81_0223BDBC
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0223BDB2:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_0223BDB8: .word 0x0223D288
+ thumb_func_end MOD81_0223BD84
+
+ thumb_func_start MOD81_0223BDBC
+MOD81_0223BDBC: ; 0x0223BDBC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ beq _0223BDEE
+ mov r0, #0x2a
+ ldrsh r1, [r4, r0]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ strh r0, [r4, #0x2a]
+ add r1, r4, #0
+ ldr r0, [r4, #0x24]
+ add r1, #0x28
+ bl MOD81_02238B40
+ bl G3X_ResetMtxStack
+ ldr r0, [r4, #0x20]
+ bl MOD81_02238940
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_020222B4
+_0223BDEE:
+ pop {r4, pc}
+ thumb_func_end MOD81_0223BDBC
+
+ thumb_func_start MOD81_0223BDF0
+MOD81_0223BDF0: ; 0x0223BDF0
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl MOD81_0223BF74
+ add r0, r4, #0
+ bl MOD81_0223C1DC
+ mov r0, #8
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ ldr r3, _0223BE1C ; =0x00007FFF
+ mov r0, #0
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ mov r0, #1
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_0223BE1C: .word 0x00007FFF
+ thumb_func_end MOD81_0223BDF0
+
+ thumb_func_start MOD81_0223BE20
+MOD81_0223BE20: ; 0x0223BE20
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #6
+ bhi _0223BEEA
+ add r2, r1, r1
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0223BE38: ; jump table
+ .short _0223BE46 - _0223BE38 - 2 ; case 0
+ .short _0223BE64 - _0223BE38 - 2 ; case 1
+ .short _0223BE7E - _0223BE38 - 2 ; case 2
+ .short _0223BE90 - _0223BE38 - 2 ; case 3
+ .short _0223BEA8 - _0223BE38 - 2 ; case 4
+ .short _0223BECC - _0223BE38 - 2 ; case 5
+ .short _0223BEE0 - _0223BE38 - 2 ; case 6
+_0223BE46:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0223BEEA
+ mov r0, #0
+ str r0, [r4, #8]
+ add r0, r4, #0
+ add r4, #0x30
+ add r1, r4, #0
+ bl MOD81_0223C3CC
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _0223BEEA
+_0223BE64:
+ ldr r1, [r4, #8]
+ add r1, r1, #1
+ str r1, [r4, #8]
+ cmp r1, #8
+ ble _0223BEEA
+ add r4, #0x34
+ add r1, r4, #0
+ bl MOD81_0223C300
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _0223BEEA
+_0223BE7E:
+ ldr r0, [r4, #0x34]
+ cmp r0, #0
+ bne _0223BEEA
+ ldr r0, [r4, #0x30]
+ cmp r0, #0
+ bne _0223BEEA
+ add r0, r1, #1
+ str r0, [r5]
+ b _0223BEEA
+_0223BE90:
+ mov r1, #0
+ add r0, #0x14
+ mvn r1, r1
+ bl MOD81_02238118
+ str r0, [r4, #0x10]
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _0223BEEA
+_0223BEA8:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0x1e
+ ble _0223BEEA
+ add r0, r4, #0
+ add r0, #0x38
+ str r0, [sp]
+ ldr r0, [r4, #0x24]
+ mov r1, #0x1f
+ mov r2, #0
+ mov r3, #0x28
+ bl MOD81_0223C47C
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _0223BEEA
+_0223BECC:
+ ldr r0, [r4, #0x38]
+ cmp r0, #0
+ bne _0223BEEA
+ ldr r0, [r4, #0x10]
+ bl MOD81_022381EC
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _0223BEEA
+_0223BEE0:
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ bne _0223BEEA
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0223BEEA:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223BE20
+
+ thumb_func_start MOD81_0223BEF0
+MOD81_0223BEF0: ; 0x0223BEF0
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _0223BF08
+ cmp r0, #1
+ beq _0223BF30
+ cmp r0, #2
+ beq _0223BF5A
+ b _0223BF6E
+_0223BF08:
+ mov r0, #0x4a
+ lsl r0, r0, #2
+ mov r3, #1
+ str r0, [sp]
+ add r0, r5, #0
+ str r3, [sp, #4]
+ add r0, #0x1c
+ str r0, [sp, #8]
+ ldr r0, [r5, #0xc]
+ lsl r1, r3, #0xc
+ lsl r2, r3, #0xa
+ bl MOD81_022384AC
+ str r0, [r5, #0x18]
+ mov r0, #0
+ str r0, [r5, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0223BF6E
+_0223BF30:
+ ldr r0, [r5, #8]
+ add r0, r0, #1
+ str r0, [r5, #8]
+ cmp r0, #0xd
+ ble _0223BF6E
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0223BF6E
+_0223BF5A:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0223BF6E
+ ldr r0, [r5, #0x1c]
+ cmp r0, #0
+ beq _0223BF6E
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_0223BF6E:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ thumb_func_end MOD81_0223BEF0
+
+ thumb_func_start MOD81_0223BF74
+MOD81_0223BF74: ; 0x0223BF74
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r0, _0223C18C ; =0x0223D2EC
+ bl FUN_0201E66C
+ ldr r2, _0223C190 ; =0x04000304
+ ldrh r1, [r2]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2]
+ ldr r0, _0223C194 ; =0x0223D294
+ bl FUN_02016BBC
+ ldr r0, [r4, #0xc]
+ ldr r2, _0223C198 ; =0x0223D2B4
+ mov r1, #2
+ mov r3, #1
+ bl FUN_02016C18
+ ldr r0, [r4, #0xc]
+ ldr r2, _0223C198 ; =0x0223D2B4
+ mov r1, #6
+ mov r3, #1
+ bl FUN_02016C18
+ bl OS_DisableInterrupts
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ ldr r2, _0223C19C ; =0x0223D2D0
+ mov r1, #3
+ mov r3, #2
+ bl FUN_02016C18
+ ldr r0, [r4, #0xc]
+ ldr r2, _0223C19C ; =0x0223D2D0
+ mov r1, #7
+ mov r3, #2
+ bl FUN_02016C18
+ add r0, r5, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ mov r1, #2
+ ldr r2, [r4, #0xc]
+ mov r0, #0x5d
+ add r3, r1, #0
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x5d
+ mov r1, #2
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x5d
+ mov r3, #2
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x5d
+ mov r3, #6
+ bl FUN_020068C8
+ ldr r0, [r4]
+ bl MOD81_02238828
+ add r5, r0, #0
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x3a
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x5d
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x3a
+ str r0, [sp, #4]
+ mov r0, #0x5d
+ mov r1, #3
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ ldr r0, _0223C1A0 ; =0x0223D280
+ lsl r1, r5, #1
+ ldrh r5, [r0, r1]
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x40
+ str r0, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #0x5d
+ mov r1, #3
+ mov r2, #0
+ add r3, r5, #0
+ bl FUN_02006948
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x40
+ str r0, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #0x5d
+ mov r1, #3
+ mov r2, #4
+ add r3, r5, #0
+ bl FUN_02006948
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x5d
+ mov r1, #5
+ 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, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x5d
+ mov r1, #5
+ 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, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x5d
+ mov r1, #4
+ mov r3, #3
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x5d
+ mov r1, #4
+ mov r3, #7
+ bl FUN_020068C8
+ mov r0, #0x3a
+ mov r1, #0x60
+ bl FUN_02016998
+ add r5, r0, #0
+ beq _0223C14A
+ mov r0, #0
+ add r1, r5, #0
+ mov r2, #0x60
+ bl MIi_CpuClear32
+ add r0, r5, #0
+ mov r1, #0x60
+ bl DC_FlushRange
+ bl GX_BeginLoadBGExtPltt
+ bl GXS_BeginLoadBGExtPltt
+ mov r1, #6
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ mov r2, #0x60
+ bl GX_LoadBGExtPltt
+ mov r1, #6
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ mov r2, #0x60
+ bl GXS_LoadBGExtPltt
+ bl GX_EndLoadBGExtPltt
+ bl GXS_EndLoadBGExtPltt
+ add r0, r5, #0
+ bl FUN_02016A18
+_0223C14A:
+ ldr r0, [r4, #0xc]
+ ldr r3, _0223C1A4 ; =0xFFFFFE80
+ mov r1, #2
+ mov r2, #3
+ bl FUN_020179E0
+ mov r2, #3
+ add r3, r2, #0
+ ldr r0, [r4, #0xc]
+ mov r1, #6
+ sub r3, #0xc3
+ bl FUN_020179E0
+ mov r1, #3
+ ldr r0, [r4, #0xc]
+ add r2, r1, #0
+ mov r3, #0x43
+ bl FUN_020179E0
+ mov r0, #7
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223C18C: .word 0x0223D2EC
+_0223C190: .word 0x04000304
+_0223C194: .word 0x0223D294
+_0223C198: .word 0x0223D2B4
+_0223C19C: .word 0x0223D2D0
+_0223C1A0: .word 0x0223D280
+_0223C1A4: .word 0xFFFFFE80
+ thumb_func_end MOD81_0223BF74
+
+ thumb_func_start MOD81_0223C1A8
+MOD81_0223C1A8: ; 0x0223C1A8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _0223C1B8
+ ldr r0, [r4, #0x10]
+ bl MOD81_02238200
+_0223C1B8:
+ 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
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223C1A8
+
+ thumb_func_start MOD81_0223C1DC
+MOD81_0223C1DC: ; 0x0223C1DC
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ bl FUN_020BB7F4
+ bl G3X_InitMtxStack
+ ldr r0, _0223C2C0 ; =0x04000060
+ ldr r1, _0223C2C4 ; =0xFFFFCFFD
+ ldrh r2, [r0]
+ 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, _0223C2C8 ; =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, _0223C2CC ; =0x0223D2A4
+ bl G3X_SetEdgeColorTable
+ mov r1, #0
+ ldr r0, _0223C2D0 ; =0x000043FF
+ ldr r2, _0223C2D4 ; =0x00007FFF
+ mov r3, #0x3f
+ str r1, [sp]
+ bl G3X_SetClearColor
+ ldr r1, _0223C2D8 ; =0x04000540
+ mov r0, #2
+ str r0, [r1]
+ ldr r0, _0223C2DC ; =0xBFFF0000
+ str r0, [r1, #0x40]
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_020AEB70
+ mov r0, #1
+ lsl r0, r0, #0xe
+ mov r1, #1
+ bl FUN_020AEDF4
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r1, _0223C2E0 ; =0x04000008
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ strh r2, [r1]
+ mov r1, #0
+ mov r0, #1
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD81_022388C0
+ str r0, [r4, #0x20]
+ mov r1, #0
+ mov r0, #0x23
+ str r1, [sp]
+ lsl r0, r0, #0xe
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x20]
+ mov r2, #0x5d
+ mov r3, #0x1b
+ bl MOD81_02238A84
+ str r0, [r4, #0x24]
+ ldr r0, _0223C2E4 ; =0x0223D450
+ mov r1, #0
+ strh r1, [r0]
+ strh r1, [r0, #2]
+ strh r1, [r0, #4]
+ ldr r0, [r4, #0x20]
+ ldr r1, _0223C2E8 ; =0x0223D450
+ bl MOD81_02238C60
+ ldr r0, [r4, #0x20]
+ mov r1, #1
+ bl MOD81_02238C80
+ mov r1, #2
+ ldr r0, [r4, #0x24]
+ lsl r1, r1, #0xc
+ bl MOD81_02238B84
+ ldr r0, [r4, #0x24]
+ add r4, #0x28
+ add r1, r4, #0
+ bl MOD81_02238B28
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_0223C2C0: .word 0x04000060
+_0223C2C4: .word 0xFFFFCFFD
+_0223C2C8: .word 0x0000CFFB
+_0223C2CC: .word 0x0223D2A4
+_0223C2D0: .word 0x000043FF
+_0223C2D4: .word 0x00007FFF
+_0223C2D8: .word 0x04000540
+_0223C2DC: .word 0xBFFF0000
+_0223C2E0: .word 0x04000008
+_0223C2E4: .word 0x0223D450
+_0223C2E8: .word 0x0223D450
+ thumb_func_end MOD81_0223C1DC
+
+ thumb_func_start MOD81_0223C2EC
+MOD81_0223C2EC: ; 0x0223C2EC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ beq _0223C2FE
+ bl MOD81_0223890C
+ mov r0, #0
+ str r0, [r4, #0x20]
+_0223C2FE:
+ pop {r4, pc}
+ thumb_func_end MOD81_0223C2EC
+
+ thumb_func_start MOD81_0223C300
+MOD81_0223C300: ; 0x0223C300
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #0x3a
+ mov r1, #0x24
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _0223C340
+ str r6, [r4]
+ ldr r0, [r6, #0xc]
+ add r1, r4, #0
+ str r0, [r4, #4]
+ ldr r0, _0223C344 ; =0xFFE80000
+ mov r2, #0
+ str r0, [r4, #0xc]
+ asr r0, r0, #1
+ str r0, [r4, #0x10]
+ ldr r0, _0223C348 ; =0x00009999
+ str r0, [r4, #0x14]
+ mov r0, #0x28
+ str r0, [r4, #8]
+ ldr r0, _0223C34C ; =MOD81_0223C350
+ str r5, [r4, #0x1c]
+ bl FUN_0200CA60
+ str r0, [r5]
+ cmp r0, #0
+ bne _0223C340
+ add r0, r4, #0
+ bl FUN_02016A18
+_0223C340:
+ pop {r4, r5, r6, pc}
+ nop
+_0223C344: .word 0xFFE80000
+_0223C348: .word 0x00009999
+_0223C34C: .word MOD81_0223C350
+ thumb_func_end MOD81_0223C300
+
+ thumb_func_start MOD81_0223C350
+MOD81_0223C350: ; 0x0223C350
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _0223C390
+ ldr r1, [r4, #0xc]
+ ldr r0, [r4, #0x14]
+ mov r2, #3
+ add r0, r1, r0
+ str r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x14]
+ add r0, r1, r0
+ str r0, [r4, #0x10]
+ ldr r3, [r4, #0xc]
+ ldr r0, [r4, #4]
+ mov r1, #2
+ asr r3, r3, #0xc
+ bl FUN_020179E0
+ ldr r3, [r4, #0x10]
+ ldr r0, [r4, #4]
+ mov r1, #6
+ mov r2, #3
+ asr r3, r3, #0xc
+ bl FUN_020179E0
+ ldr r0, [r4, #8]
+ sub r0, r0, #1
+ str r0, [r4, #8]
+ pop {r3, r4, r5, pc}
+_0223C390:
+ ldr r0, [r4, #4]
+ mov r1, #2
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #4]
+ mov r1, #6
+ mov r2, #3
+ mov r3, #0xc0
+ bl FUN_020179E0
+ add r0, r5, #0
+ bl MOD81_0223C3B0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD81_0223C350
+
+ thumb_func_start MOD81_0223C3B0
+MOD81_0223C3B0: ; 0x0223C3B0
+ push {r4, lr}
+ add r4, r0, #0
+ beq _0223C3CA
+ bl FUN_0201B6C8
+ ldr r1, [r0, #0x1c]
+ mov r2, #0
+ str r2, [r1]
+ bl MOD81_02238898
+ add r0, r4, #0
+ bl FUN_0200CAB4
+_0223C3CA:
+ pop {r4, pc}
+ thumb_func_end MOD81_0223C3B0
+
+ thumb_func_start MOD81_0223C3CC
+MOD81_0223C3CC: ; 0x0223C3CC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #0x3a
+ mov r1, #0x1c
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _0223C418
+ str r5, [r4]
+ ldr r0, [r6, #0x24]
+ add r1, r4, #0
+ str r0, [r4, #8]
+ add r1, #0xc
+ bl MOD81_02238B08
+ mov r0, #0x32
+ ldr r1, [r4, #0x10]
+ lsl r0, r0, #0xc
+ sub r1, r0, r1
+ asr r0, r1, #3
+ lsr r0, r0, #0x1c
+ add r0, r1, r0
+ asr r0, r0, #4
+ str r0, [r4, #0x18]
+ mov r0, #0x10
+ str r0, [r4, #4]
+ ldr r0, _0223C41C ; =MOD81_0223C420
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA44
+ str r0, [r5]
+ cmp r0, #0
+ bne _0223C418
+ add r0, r4, #0
+ bl FUN_02016A18
+_0223C418:
+ pop {r4, r5, r6, pc}
+ nop
+_0223C41C: .word MOD81_0223C420
+ thumb_func_end MOD81_0223C3CC
+
+ thumb_func_start MOD81_0223C420
+MOD81_0223C420: ; 0x0223C420
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _0223C446
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x18]
+ add r0, r1, r0
+ str r0, [r4, #0x10]
+ add r1, r4, #0
+ ldr r0, [r4, #8]
+ add r1, #0xc
+ bl MOD81_02238B18
+ ldr r0, [r4, #4]
+ sub r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_0223C446:
+ mov r0, #0x32
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #8]
+ add r4, #0xc
+ add r1, r4, #0
+ bl MOD81_02238B18
+ add r0, r5, #0
+ bl MOD81_0223C460
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223C420
+
+ thumb_func_start MOD81_0223C460
+MOD81_0223C460: ; 0x0223C460
+ push {r4, lr}
+ add r4, r0, #0
+ beq _0223C47A
+ bl FUN_0201B6C8
+ ldr r1, [r0]
+ mov r2, #0
+ str r2, [r1]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+_0223C47A:
+ pop {r4, pc}
+ thumb_func_end MOD81_0223C460
+
+ thumb_func_start MOD81_0223C47C
+MOD81_0223C47C: ; 0x0223C47C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r0, [sp]
+ add r6, r1, #0
+ mov r0, #0x3a
+ mov r1, #0x18
+ str r2, [sp, #4]
+ add r7, r3, #0
+ ldr r5, [sp, #0x20]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _0223C4D4
+ str r5, [r4]
+ lsl r0, r6, #0xc
+ str r0, [r4, #4]
+ ldr r0, [sp, #4]
+ lsl r1, r0, #0xc
+ str r1, [r4, #0xc]
+ ldr r0, [r4, #4]
+ sub r0, r1, r0
+ add r1, r7, #0
+ bl _s32_div_f
+ str r0, [r4, #8]
+ ldr r0, [sp]
+ str r7, [r4, #0x10]
+ add r1, r6, #0
+ str r0, [r4, #0x14]
+ bl MOD81_02238B5C
+ ldr r0, _0223C4DC ; =MOD81_0223C4E0
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA44
+ str r0, [r5]
+ cmp r0, #0
+ bne _0223C4D8
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_0223C4D4:
+ mov r0, #0
+ str r0, [r5]
+_0223C4D8:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223C4DC: .word MOD81_0223C4E0
+ thumb_func_end MOD81_0223C47C
+
+ thumb_func_start MOD81_0223C4E0
+MOD81_0223C4E0: ; 0x0223C4E0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1, #0x10]
+ sub r0, r0, #1
+ str r0, [r1, #0x10]
+ cmp r0, #0
+ ble _0223C500
+ ldr r2, [r1, #4]
+ ldr r0, [r1, #8]
+ add r2, r2, r0
+ str r2, [r1, #4]
+ ldr r0, [r1, #0x14]
+ asr r1, r2, #0xc
+ bl MOD81_02238B5C
+ pop {r4, pc}
+_0223C500:
+ ldr r0, [r1, #0x14]
+ ldr r1, [r1, #0xc]
+ asr r1, r1, #0xc
+ bl MOD81_02238B5C
+ add r0, r4, #0
+ bl MOD81_0223C514
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223C4E0
+
+ thumb_func_start MOD81_0223C514
+MOD81_0223C514: ; 0x0223C514
+ push {r4, lr}
+ add r4, r0, #0
+ beq _0223C52E
+ bl FUN_0201B6C8
+ ldr r1, [r0]
+ mov r2, #0
+ str r2, [r1]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+_0223C52E:
+ pop {r4, pc}
+ thumb_func_end MOD81_0223C514
+
+ thumb_func_start MOD81_0223C530
+MOD81_0223C530: ; 0x0223C530
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x3a
+ mov r1, #0x70
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _0223C57A
+ str r5, [r4]
+ mov r0, #0
+ str r0, [r4, #4]
+ add r0, r5, #0
+ bl MOD81_0223880C
+ str r0, [r4, #0x44]
+ mov r0, #0x3a
+ bl FUN_02006D98
+ str r0, [r4, #0x10]
+ mov r0, #0
+ str r0, [r4, #0x14]
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ mov r1, #0x3a
+ bl FUN_020219F4
+ str r0, [r4, #0x58]
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ mov r1, #0x3a
+ bl FUN_020219F4
+ str r0, [r4, #0x5c]
+ mov r0, #0
+ str r0, [r4, #0x68]
+ str r0, [r4, #0x6c]
+ str r0, [r4, #0x60]
+_0223C57A:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223C530
+
+ thumb_func_start MOD81_0223C580
+MOD81_0223C580: ; 0x0223C580
+ push {r4, lr}
+ add r4, r0, #0
+ beq _0223C5D2
+ bl MOD81_0223CD08
+ add r0, r4, #0
+ bl MOD81_0223CC84
+ ldr r0, [r4, #0x6c]
+ bl MOD81_0223CDE0
+ ldr r0, [r4, #0x58]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x5c]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x60]
+ cmp r0, #0
+ beq _0223C5AC
+ bl MOD81_0223890C
+_0223C5AC:
+ ldr r0, [r4, #0x44]
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ add r0, #0x48
+ bl FUN_02019178
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _0223C5C6
+ bl FUN_02007534
+_0223C5C6:
+ ldr r0, [r4, #0x10]
+ bl FUN_020072E8
+ add r0, r4, #0
+ bl FUN_02016A18
+_0223C5D2:
+ pop {r4, pc}
+ thumb_func_end MOD81_0223C580
+
+ thumb_func_start MOD81_0223C5D4
+MOD81_0223C5D4: ; 0x0223C5D4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r2, [r4]
+ add r5, r0, #0
+ cmp r2, #4
+ bhs _0223C602
+ lsl r3, r2, #2
+ ldr r2, _0223C608 ; =0x0223D31C
+ add r1, r5, #4
+ ldr r2, [r2, r3]
+ blx r2
+ cmp r0, #0
+ beq _0223C5F8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r5, #4]
+_0223C5F8:
+ add r0, r5, #0
+ bl MOD81_0223C60C
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0223C602:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_0223C608: .word 0x0223D31C
+ thumb_func_end MOD81_0223C5D4
+
+ thumb_func_start MOD81_0223C60C
+MOD81_0223C60C: ; 0x0223C60C
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ bl G3X_ResetMtxStack
+ mov r1, #0
+ mov r0, #0x11
+ add r2, r1, #0
+ bl FUN_020BB1C0
+ bl FUN_020BB394
+ bl FUN_020B02C8
+ ldr r0, [r4, #0x10]
+ bl FUN_020081C4
+ ldr r0, [r4, #0x10]
+ bl FUN_02006ED4
+ mov r2, #1
+ str r2, [sp]
+ mov r0, #0x12
+ add r1, sp, #0
+ bl FUN_020BB1C0
+ ldr r0, [r4, #0x60]
+ cmp r0, #0
+ beq _0223C64A
+ bl MOD81_02238940
+_0223C64A:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_020222B4
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223C60C
+
+ thumb_func_start MOD81_0223C658
+MOD81_0223C658: ; 0x0223C658
+ push {r3, r4, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ ldr r0, _0223C808 ; =0x0223D374
+ bl FUN_0201E66C
+ ldr r2, _0223C80C ; =0x04000304
+ ldrh r1, [r2]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2]
+ ldr r0, _0223C810 ; =0x0223D32C
+ bl FUN_02016BBC
+ ldr r0, [r4, #0x44]
+ ldr r2, _0223C814 ; =0x0223D33C
+ mov r1, #1
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x44]
+ ldr r2, _0223C818 ; =0x0223D358
+ mov r1, #2
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r2, _0223C81C ; =0x04000008
+ mov r0, #3
+ ldrh r3, [r2]
+ mov r1, #1
+ bic r3, r0
+ add r0, r3, #0
+ orr r0, r1
+ strh r0, [r2]
+ mov r2, #0
+ str r2, [sp]
+ ldr r0, [r4, #0x44]
+ add r3, r1, #0
+ bl FUN_02017F48
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ ldr r0, [r4, #0x44]
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_02018540
+ ldr r0, [r4]
+ bl MOD81_02238844
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x3a
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x44]
+ mov r1, #1
+ mov r2, #0x6d
+ mov r3, #2
+ bl FUN_0200CD68
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ add r1, r4, #0
+ str r0, [sp, #8]
+ mov r2, #1
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldr r0, [r4, #0x44]
+ add r1, #0x48
+ mov r3, #2
+ bl FUN_02019064
+ add r0, r4, #0
+ add r0, #0x48
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r3, #0x20
+ str r3, [sp]
+ mov r0, #0x3a
+ str r0, [sp, #4]
+ mov r0, #0xe
+ mov r1, #7
+ mov r2, #0
+ bl FUN_02006930
+ ldr r0, [r4, #0x44]
+ mov r1, #1
+ bl FUN_02017CD0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x44]
+ mov r0, #0x5d
+ mov r1, #0x16
+ 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, #0x3a
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x44]
+ mov r0, #0x5d
+ mov r1, #0x15
+ mov r3, #2
+ bl FUN_020068C8
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x3a
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x5d
+ mov r1, #0x17
+ add r3, r2, #0
+ bl FUN_02006930
+ add r0, r4, #0
+ bl MOD81_0223CAC4
+ mov r1, #0
+ mov r0, #1
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD81_022388C0
+ str r0, [r4, #0x60]
+ add r0, r4, #0
+ bl MOD81_0223CB90
+ mov r1, #6
+ mov r2, #1
+ str r0, [r4, #0x14]
+ bl FUN_02007558
+ mov r1, #0
+ mov r0, #0x13
+ str r1, [sp]
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #0x1e
+ lsl r0, r0, #0xe
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r4, #0x60]
+ mov r2, #0x5d
+ mov r3, #0x1b
+ bl MOD81_02238A84
+ ldr r2, _0223C820 ; =0x0223D314
+ str r0, [r4, #0x64]
+ ldrh r3, [r2]
+ add r0, sp, #0x14
+ add r1, sp, #0x14
+ strh r3, [r0]
+ ldrh r3, [r2, #2]
+ ldrh r2, [r2, #4]
+ strh r3, [r0, #2]
+ strh r2, [r0, #4]
+ ldr r0, [r4, #0x64]
+ bl MOD81_02238B40
+ add r0, r4, #0
+ bl MOD81_0223CBE0
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _0223C824 ; =0x04000050
+ mov r1, #1
+ mov r2, #4
+ mov r3, #0x10
+ bl G2x_SetBlendAlpha_
+ mov r0, #0x10
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ mov r0, #1
+ add sp, #0x1c
+ pop {r3, r4, pc}
+ .align 2, 0
+_0223C808: .word 0x0223D374
+_0223C80C: .word 0x04000304
+_0223C810: .word 0x0223D32C
+_0223C814: .word 0x0223D33C
+_0223C818: .word 0x0223D358
+_0223C81C: .word 0x04000008
+_0223C820: .word 0x0223D314
+_0223C824: .word 0x04000050
+ thumb_func_end MOD81_0223C658
+
+ thumb_func_start MOD81_0223C828
+MOD81_0223C828: ; 0x0223C828
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1]
+ cmp r0, #0
+ bne _0223C84E
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0223C84E
+ ldr r0, [r4, #0x2c]
+ mov r1, #1
+ bl FUN_02020130
+ ldr r0, [r4, #0x2c]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #1
+ pop {r4, pc}
+_0223C84E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223C828
+
+ thumb_func_start MOD81_0223C854
+MOD81_0223C854: ; 0x0223C854
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #4
+ bhi _0223C91C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0223C86C: ; jump table
+ .short _0223C876 - _0223C86C - 2 ; case 0
+ .short _0223C884 - _0223C86C - 2 ; case 1
+ .short _0223C8AE - _0223C86C - 2 ; case 2
+ .short _0223C8D6 - _0223C86C - 2 ; case 3
+ .short _0223C90E - _0223C86C - 2 ; case 4
+_0223C876:
+ add r1, r4, #0
+ add r1, #0x6c
+ bl MOD81_0223CD64
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+_0223C884:
+ ldr r0, [r4, #0x6c]
+ cmp r0, #0
+ bne _0223C91C
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ bl FUN_02020130
+ ldr r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [r4, #0x64]
+ mov r1, #0
+ bl MOD81_02238B58
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _0223C91C
+_0223C8AE:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0xa
+ ble _0223C91C
+ ldr r0, [r4, #0x14]
+ mov r1, #6
+ mov r2, #0
+ bl FUN_02007558
+ add r0, r4, #0
+ mov r1, #0x10
+ mov r2, #0
+ mov r3, #0xc
+ bl MOD81_0223CCA8
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ b _0223C91C
+_0223C8D6:
+ bl MOD81_0223CCF8
+ cmp r0, #0
+ beq _0223C91C
+ ldr r0, [r4]
+ bl MOD81_02238820
+ mov r1, #0x4c
+ mov r2, #0
+ bl FUN_020672BC
+ cmp r0, #0
+ bne _0223C902
+ ldr r0, [r4]
+ bl MOD81_02238838
+ bl FUN_02005578
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl FUN_02007314
+_0223C902:
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _0223C91C
+_0223C90E:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0x1e
+ ble _0223C91C
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0223C91C:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD81_0223C854
+
+ thumb_func_start MOD81_0223C920
+MOD81_0223C920: ; 0x0223C920
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #5
+ bhi _0223C95C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0223C93A: ; jump table
+ .short _0223C946 - _0223C93A - 2 ; case 0
+ .short _0223C952 - _0223C93A - 2 ; case 1
+ .short _0223C9D0 - _0223C93A - 2 ; case 2
+ .short _0223CA32 - _0223C93A - 2 ; case 3
+ .short _0223CA52 - _0223C93A - 2 ; case 4
+ .short _0223CA7C - _0223C93A - 2 ; case 5
+_0223C946:
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _0223CA8A
+_0223C952:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0xa
+ bgt _0223C95E
+_0223C95C:
+ b _0223CA8A
+_0223C95E:
+ ldr r0, [r4]
+ bl MOD81_02238814
+ str r0, [sp, #0xc]
+ ldr r0, [r4]
+ bl MOD81_02238810
+ add r7, r0, #0
+ ldr r0, [r4]
+ bl MOD81_02238850
+ cmp r0, #1
+ bne _0223C97E
+ mov r1, #2
+ add r6, r1, #0
+ b _0223C982
+_0223C97E:
+ mov r1, #5
+ mov r6, #3
+_0223C982:
+ ldr r0, [sp, #0xc]
+ ldr r2, [r4, #0x58]
+ bl FUN_0200A8E0
+ ldr r1, [r4, #0x5c]
+ ldr r2, [r4, #0x58]
+ add r0, r7, #0
+ bl FUN_0200B7B8
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x48
+ mov r1, #1
+ bl FUN_0201BD84
+ add r0, r4, #0
+ add r0, #0x48
+ mov r1, #0x6d
+ mov r2, #2
+ bl FUN_0200D06C
+ add r0, r4, #0
+ add r0, #0x48
+ bl FUN_020191D0
+ ldr r0, _0223CA90 ; =0x00000484
+ bl FUN_02005C28
+ mov r0, #0
+ str r0, [r4, #8]
+ mov r0, #1
+ str r0, [r4, #0xc]
+ str r6, [r5]
+ b _0223CA8A
+_0223C9D0:
+ mov r1, #0x3c
+ bl MOD81_0223CA94
+ cmp r0, #0
+ beq _0223CA8A
+ ldr r0, [r4]
+ bl MOD81_02238814
+ add r6, r0, #0
+ ldr r0, [r4]
+ bl MOD81_02238810
+ add r7, r0, #0
+ ldr r2, [r4, #0x58]
+ add r0, r6, #0
+ mov r1, #3
+ bl FUN_0200A8E0
+ ldr r1, [r4, #0x5c]
+ ldr r2, [r4, #0x58]
+ add r0, r7, #0
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ add r0, #0x48
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x48
+ mov r1, #1
+ bl FUN_0201BD84
+ add r0, r4, #0
+ add r0, #0x48
+ bl FUN_02019548
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _0223CA8A
+_0223CA32:
+ mov r1, #0x3c
+ bl MOD81_0223CA94
+ cmp r0, #0
+ beq _0223CA8A
+ add r0, r4, #0
+ add r0, #0x48
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _0223CA8A
+_0223CA52:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0xa
+ ble _0223CA8A
+ mov r0, #0x10
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3a
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _0223CA8A
+_0223CA7C:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0223CA8A
+ add sp, #0x10
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223CA8A:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223CA90: .word 0x00000484
+ thumb_func_end MOD81_0223C920
+
+ thumb_func_start MOD81_0223CA94
+MOD81_0223CA94: ; 0x0223CA94
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0
+ cmp r0, #0
+ beq _0223CAA6
+ bl FUN_02005CBC
+ str r0, [r5, #0xc]
+_0223CAA6:
+ ldr r0, [r5, #8]
+ cmp r0, r4
+ bge _0223CAB4
+ add r0, r0, #1
+ str r0, [r5, #8]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0223CAB4:
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ bne _0223CABE
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0223CABE:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223CA94
+
+ thumb_func_start MOD81_0223CAC4
+MOD81_0223CAC4: ; 0x0223CAC4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ bl FUN_020BB7F4
+ bl G3X_InitMtxStack
+ ldr r0, _0223CB6C ; =0x04000060
+ ldr r2, _0223CB70 ; =0xFFFFCFFD
+ ldrh r1, [r0]
+ and r1, r2
+ strh r1, [r0]
+ ldrh r3, [r0]
+ add r1, r2, #2
+ and r3, r1
+ mov r1, #0x10
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r3, [r0]
+ ldr r1, _0223CB74 ; =0x0000CFFB
+ and r1, r3
+ strh r1, [r0]
+ add r1, r2, #2
+ ldrh r3, [r0]
+ lsr r2, r2, #0x11
+ and r3, r1
+ mov r1, #8
+ orr r1, r3
+ strh r1, [r0]
+ mov r0, #0
+ add r1, r0, #0
+ mov r3, #0x3f
+ str r0, [sp]
+ bl G3X_SetClearColor
+ ldr r1, _0223CB78 ; =0x04000540
+ mov r0, #2
+ str r0, [r1]
+ ldr r0, _0223CB7C ; =0xBFFF0000
+ str r0, [r1, #0x40]
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_020AEB70
+ mov r0, #1
+ lsl r0, r0, #0xe
+ mov r1, #1
+ bl FUN_020AEDF4
+ ldr r3, _0223CB80 ; =0x021064B8
+ mov r0, #1
+ mov r1, #0
+ ldr r3, [r3]
+ lsl r0, r0, #0xe
+ add r2, r1, #0
+ blx r3
+ ldr r3, _0223CB84 ; =0x021064C0
+ add r4, r0, #0
+ ldr r3, [r3]
+ mov r0, #0x80
+ mov r1, #0
+ mov r2, #1
+ blx r3
+ ldr r2, _0223CB88 ; =0x7FFF0000
+ add r6, r0, #0
+ and r2, r4
+ lsl r1, r4, #0x10
+ lsr r2, r2, #0x10
+ ldr r0, [r5, #0x10]
+ lsr r1, r1, #0xd
+ lsl r2, r2, #4
+ bl FUN_020081A8
+ ldr r2, _0223CB8C ; =0xFFFF0000
+ lsl r1, r6, #0x10
+ and r2, r6
+ lsr r2, r2, #0x10
+ ldr r0, [r5, #0x10]
+ lsr r1, r1, #0xd
+ lsl r2, r2, #3
+ bl FUN_020081B4
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0223CB6C: .word 0x04000060
+_0223CB70: .word 0xFFFFCFFD
+_0223CB74: .word 0x0000CFFB
+_0223CB78: .word 0x04000540
+_0223CB7C: .word 0xBFFF0000
+_0223CB80: .word 0x021064B8
+_0223CB84: .word 0x021064C0
+_0223CB88: .word 0x7FFF0000
+_0223CB8C: .word 0xFFFF0000
+ thumb_func_end MOD81_0223CAC4
+
+ thumb_func_start MOD81_0223CB90
+MOD81_0223CB90: ; 0x0223CB90
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD81_02238820
+ add r5, r0, #0
+ add r0, sp, #0x10
+ add r1, r5, #0
+ mov r2, #2
+ bl FUN_02068B70
+ ldr r0, [r4]
+ bl MOD81_02238838
+ add r1, r0, #0
+ add r0, r4, #0
+ add r0, #0x18
+ bl FUN_02069010
+ add r0, r5, #0
+ mov r1, #2
+ bl FUN_02068E1C
+ add r3, r0, #0
+ mov r1, #0
+ str r1, [sp]
+ add r0, r4, #0
+ str r1, [sp, #4]
+ add r0, #0x18
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r4, #0x10]
+ add r3, #0x50
+ add r1, sp, #0x10
+ mov r2, #0x80
+ bl FUN_020073A0
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD81_0223CB90
+
+ thumb_func_start MOD81_0223CBE0
+MOD81_0223CBE0: ; 0x0223CBE0
+ push {r4, lr}
+ sub sp, #0x70
+ add r4, r0, #0
+ add r0, #0x34
+ mov r1, #0x5d
+ mov r2, #7
+ mov r3, #8
+ bl MOD81_0223874C
+ add r0, sp, #0x5c
+ bl FUN_020B19DC
+ add r0, sp, #0x38
+ bl FUN_020B1A24
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x3a
+ str r0, [sp, #0xc]
+ add r0, sp, #0x38
+ str r0, [sp, #0x10]
+ mov r0, #0x5d
+ mov r1, #9
+ bl FUN_02006AE4
+ mov r0, #0x3a
+ str r0, [sp]
+ add r0, sp, #0x5c
+ str r0, [sp, #4]
+ mov r0, #0x5d
+ mov r1, #0xa
+ mov r2, #1
+ mov r3, #0
+ bl FUN_02006A8C
+ mov r0, #2
+ add r1, r4, #0
+ str r0, [sp]
+ add r0, sp, #0x14
+ add r1, #0x34
+ add r2, sp, #0x38
+ add r3, sp, #0x5c
+ bl MOD81_022387A8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #0x14
+ mov r2, #0x80
+ mov r3, #0x64
+ bl MOD81_022387C8
+ str r0, [r4, #0x2c]
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #0x14
+ mov r2, #0x80
+ mov r3, #0x5a
+ bl MOD81_022387C8
+ str r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_02020238
+ ldr r0, [r4, #0x2c]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r4, #0x30]
+ mov r1, #0
+ bl FUN_020200A0
+ add sp, #0x70
+ pop {r4, pc}
+ thumb_func_end MOD81_0223CBE0
+
+ thumb_func_start MOD81_0223CC84
+MOD81_0223CC84: ; 0x0223CC84
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_0223CC8C:
+ ldr r0, [r5, #0x2c]
+ cmp r0, #0
+ beq _0223CC96
+ bl FUN_0201FFC8
+_0223CC96:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _0223CC8C
+ add r6, #0x34
+ add r0, r6, #0
+ bl MOD81_02238784
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD81_0223CC84
+
+ thumb_func_start MOD81_0223CCA8
+MOD81_0223CCA8: ; 0x0223CCA8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x3a
+ mov r1, #0x14
+ str r2, [sp]
+ add r7, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _0223CCEE
+ str r5, [r4]
+ lsl r0, r6, #0xc
+ str r0, [r4, #4]
+ ldr r0, [sp]
+ lsl r1, r0, #0xc
+ str r1, [r4, #8]
+ ldr r0, [r4, #4]
+ sub r0, r1, r0
+ add r1, r7, #0
+ bl _s32_div_f
+ str r0, [r4, #0xc]
+ ldr r0, _0223CCF0 ; =MOD81_0223CD28
+ str r7, [r4, #0x10]
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA60
+ str r0, [r5, #0x68]
+ ldr r0, _0223CCF4 ; =0x04000050
+ mov r1, #1
+ add r2, r6, #0
+ bl G2x_SetBlendBrightness_
+_0223CCEE:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223CCF0: .word MOD81_0223CD28
+_0223CCF4: .word 0x04000050
+ thumb_func_end MOD81_0223CCA8
+
+ thumb_func_start MOD81_0223CCF8
+MOD81_0223CCF8: ; 0x0223CCF8
+ ldr r0, [r0, #0x68]
+ cmp r0, #0
+ bne _0223CD02
+ mov r0, #1
+ bx lr
+_0223CD02:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD81_0223CCF8
+
+ thumb_func_start MOD81_0223CD08
+MOD81_0223CD08: ; 0x0223CD08
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x68]
+ cmp r0, #0
+ beq _0223CD24
+ bl FUN_0201B6C8
+ bl MOD81_02238898
+ ldr r0, [r4, #0x68]
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x68]
+_0223CD24:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223CD08
+
+ thumb_func_start MOD81_0223CD28
+MOD81_0223CD28: ; 0x0223CD28
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x10]
+ sub r0, r0, #1
+ str r0, [r4, #0x10]
+ cmp r0, #0
+ ble _0223CD4A
+ ldr r1, [r4, #4]
+ ldr r0, [r4, #0xc]
+ add r2, r1, r0
+ str r2, [r4, #4]
+ ldr r0, _0223CD60 ; =0x04000050
+ mov r1, #1
+ asr r2, r2, #0xc
+ bl G2x_SetBlendBrightness_
+ pop {r4, pc}
+_0223CD4A:
+ ldr r2, [r4, #8]
+ ldr r0, _0223CD60 ; =0x04000050
+ mov r1, #1
+ asr r2, r2, #0xc
+ bl G2x_SetBlendBrightness_
+ ldr r0, [r4]
+ bl MOD81_0223CD08
+ pop {r4, pc}
+ nop
+_0223CD60: .word 0x04000050
+ thumb_func_end MOD81_0223CD28
+
+ thumb_func_start MOD81_0223CD64
+MOD81_0223CD64: ; 0x0223CD64
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x3a
+ mov r1, #0x44
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _0223CDD2
+ mov r1, #0
+ str r1, [r4, #4]
+ str r6, [r4]
+ ldr r0, [r5, #0x60]
+ str r0, [r4, #0x10]
+ ldr r0, [r5, #0x64]
+ str r0, [r4, #0x14]
+ str r5, [r4, #8]
+ ldr r0, _0223CDD8 ; =0x000018CC
+ str r1, [r4, #0x18]
+ str r0, [r4, #0x1c]
+ mov r0, #0x14
+ str r0, [r4, #0x20]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ strh r0, [r4, #0x3a]
+ str r1, [r4, #0x40]
+ ldr r0, [r4, #0x14]
+ bl MOD81_02238B5C
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl MOD81_02238B58
+ add r1, r4, #0
+ ldr r0, [r4, #0x14]
+ add r1, #0x24
+ bl MOD81_02238B08
+ add r1, r4, #0
+ ldr r0, [r4, #0x14]
+ add r1, #0x34
+ bl MOD81_02238B28
+ ldr r0, _0223CDDC ; =MOD81_0223CE54
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA44
+ str r0, [r6]
+ cmp r0, #0
+ bne _0223CDD6
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, r5, r6, pc}
+_0223CDD2:
+ mov r0, #0
+ str r0, [r6]
+_0223CDD6:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0223CDD8: .word 0x000018CC
+_0223CDDC: .word MOD81_0223CE54
+ thumb_func_end MOD81_0223CD64
+
+ thumb_func_start MOD81_0223CDE0
+MOD81_0223CDE0: ; 0x0223CDE0
+ push {r4, lr}
+ add r4, r0, #0
+ beq _0223CDFA
+ bl FUN_0201B6C8
+ ldr r1, [r0]
+ mov r2, #0
+ str r2, [r1]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+_0223CDFA:
+ pop {r4, pc}
+ thumb_func_end MOD81_0223CDE0
+
+ thumb_func_start MOD81_0223CDFC
+MOD81_0223CDFC: ; 0x0223CDFC
+ add r1, r0, #0
+ ldr r0, [r1, #0x40]
+ cmp r0, #0
+ beq _0223CE1E
+ mov r0, #0x3a
+ ldrsh r2, [r1, r0]
+ mov r0, #0x3c
+ ldrsh r0, [r1, r0]
+ add r0, r2, r0
+ strh r0, [r1, #0x3a]
+ ldr r0, [r1, #0x40]
+ sub r0, r0, #1
+ str r0, [r1, #0x40]
+ bne _0223CE1E
+ mov r0, #0x3e
+ ldrsh r0, [r1, r0]
+ strh r0, [r1, #0x3a]
+_0223CE1E:
+ mov r0, #0x36
+ ldrsh r2, [r1, r0]
+ mov r0, #0x3a
+ ldrsh r0, [r1, r0]
+ ldr r3, _0223CE34 ; =MOD81_02238B40
+ add r0, r2, r0
+ strh r0, [r1, #0x36]
+ ldr r0, [r1, #0x14]
+ add r1, #0x34
+ bx r3
+ nop
+_0223CE34: .word MOD81_02238B40
+ thumb_func_end MOD81_0223CDFC
+
+ thumb_func_start MOD81_0223CE38
+MOD81_0223CE38: ; 0x0223CE38
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ beq _0223CE50
+ mov r0, #0x3a
+ ldrsh r0, [r5, r0]
+ sub r0, r1, r0
+ add r1, r4, #0
+ bl _s32_div_f
+ strh r0, [r5, #0x3c]
+ str r4, [r5, #0x40]
+_0223CE50:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD81_0223CE38
+
+ thumb_func_start MOD81_0223CE54
+MOD81_0223CE54: ; 0x0223CE54
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD81_0223CDFC
+ ldr r0, [r4, #4]
+ cmp r0, #5
+ bhi _0223CF62
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223CE72: ; jump table
+ .short _0223CE7E - _0223CE72 - 2 ; case 0
+ .short _0223CEAE - _0223CE72 - 2 ; case 1
+ .short _0223CEC6 - _0223CE72 - 2 ; case 2
+ .short _0223CEDC - _0223CE72 - 2 ; case 3
+ .short _0223CF24 - _0223CE72 - 2 ; case 4
+ .short _0223CF52 - _0223CE72 - 2 ; case 5
+_0223CE7E:
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ beq _0223CE9E
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ add r0, r1, r0
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x20]
+ sub r0, r0, #1
+ str r0, [r4, #0x20]
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4, #0x14]
+ asr r1, r1, #0xc
+ bl MOD81_02238B5C
+ pop {r3, r4, r5, pc}
+_0223CE9E:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x1f
+ bl MOD81_02238B5C
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_0223CEAE:
+ mov r1, #6
+ add r0, r4, #0
+ lsl r1, r1, #6
+ mov r2, #0x1e
+ bl MOD81_0223CE38
+ mov r0, #0
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_0223CEC6:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ cmp r0, #0xa
+ ble _0223CF62
+ mov r0, #0
+ str r0, [r4, #0x30]
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_0223CEDC:
+ ldr r1, [r4, #0x28]
+ ldr r0, [r4, #0x30]
+ add r0, r1, r0
+ str r0, [r4, #0x28]
+ mov r0, #0x1e
+ ldr r1, [r4, #0x30]
+ lsl r0, r0, #6
+ sub r0, r1, r0
+ str r0, [r4, #0x30]
+ add r1, r4, #0
+ ldr r0, [r4, #0x14]
+ add r1, #0x24
+ bl MOD81_02238B18
+ ldr r1, [r4, #0x28]
+ ldr r0, _0223CF64 ; =0xFFFF5000
+ cmp r1, r0
+ bge _0223CF62
+ ldr r0, _0223CF68 ; =0x000005E6
+ bl FUN_020054C8
+ mov r0, #0
+ ldr r1, [r4, #0x30]
+ mvn r0, r0
+ mul r0, r1
+ str r0, [r4, #0x30]
+ ldr r0, [r4, #8]
+ mov r1, #0
+ mov r2, #0x10
+ mov r3, #8
+ bl MOD81_0223CCA8
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_0223CF24:
+ ldr r1, [r4, #0x28]
+ ldr r0, [r4, #0x30]
+ add r1, r1, r0
+ mov r0, #0x13
+ lsl r0, r0, #0xc
+ str r1, [r4, #0x28]
+ cmp r1, r0
+ blt _0223CF36
+ str r0, [r4, #0x28]
+_0223CF36:
+ add r1, r4, #0
+ ldr r0, [r4, #0x14]
+ add r1, #0x24
+ bl MOD81_02238B18
+ mov r0, #0x13
+ ldr r1, [r4, #0x28]
+ lsl r0, r0, #0xc
+ cmp r1, r0
+ bne _0223CF62
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_0223CF52:
+ ldr r0, [r4, #8]
+ bl MOD81_0223CCF8
+ cmp r0, #0
+ beq _0223CF62
+ add r0, r5, #0
+ bl MOD81_0223CDE0
+_0223CF62:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223CF64: .word 0xFFFF5000
+_0223CF68: .word 0x000005E6
+ thumb_func_end MOD81_0223CE54
+
+ .section .rodata
+ ; 0x0223CF6C
+ .incbin "baserom.nds", 0x2EEB2C, 0x430
+
+ .section .data
+ ; 0x0223D3A0
+ .incbin "baserom.nds", 0x2EEF60, 0x20
+
+ .section .bss
+ ; 0x0223D3C0
+ .space 0xA0
diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt
index 4cca1421..6a81ad19 100644
--- a/arm9/undefined_syms.txt
+++ b/arm9/undefined_syms.txt
@@ -1,5 +1,6 @@
// Overlay
+FUN_021EB550 = 0x021EB550;
FUN_0222DAEC = 0x0222DAEC;
FUN_0222DD1C = 0x0222DD1C;
FUN_0222DD38 = 0x0222DD38;