summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lcf30
-rw-r--r--arm9/global.inc36
-rw-r--r--arm9/modules/69/asm/module_69.s4138
-rw-r--r--arm9/undefined_syms.txt1
4 files changed, 4200 insertions, 5 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index c0bda60d..05416fb6 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -106,7 +106,6 @@ MEMORY {
binary.MODULE_FILES (RW) : ORIGIN = 0x0, LENGTH = 0x0 > component.files
check.ITCM (RWX) : ORIGIN = 0x0, LENGTH = 0x08000 > itcm.check
check.DTCM (RW) : ORIGIN = 0x0, LENGTH = 0x04000 > dtcm.check
-
}
SECTIONS {
@@ -802,6 +801,7 @@ SECTIONS {
SDK_OVERLAY.MODULE_11.BSS_SIZE = SDK_OVERLAY.MODULE_11.BSS_END - SDK_OVERLAY.MODULE_11.BSS_START;
} >> MODULE_11
+
.MODULE_12 :
{
ALIGNALL(4); . = ALIGN(32);
@@ -2667,7 +2667,17 @@ SECTIONS {
SDK_OVERLAY_MODULE_69_ID = 69;
SDK_OVERLAY.MODULE_69.ID = 69;
SDK_OVERLAY.MODULE_69.START = .;
- FILE_2C2800.o (.text) /* 0x2BE800 */
+ module_69.o (.text)
+ module_69.o (.rodata)
+ module_69.o (.init)
+ SDK_OVERLAY.MODULE_69.SINIT_START = .;
+ module_69.o (.ctor)
+ module_69.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_69.SINIT_END = .;
+ . = ALIGN(32);
+ module_69.o (.sdata)
+ module_69.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_69.END = .;
SDK_OVERLAY.MODULE_69.SIZE = SDK_OVERLAY.MODULE_69.END - SDK_OVERLAY.MODULE_69.START;
@@ -2677,7 +2687,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_69.BSS_START = .;
- FILE_2C2800.o (.bss)
+ module_69.o (.bss)
+ module_69.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_69.BSS_END = .;
SDK_OVERLAY.MODULE_69.BSS_SIZE = SDK_OVERLAY.MODULE_69.BSS_END - SDK_OVERLAY.MODULE_69.BSS_START;
@@ -3754,8 +3765,17 @@ SECTIONS {
OVERLAY_TABLE(MODULE_66, 66)
OVERLAY_TABLE(MODULE_67, 67)
OVERLAY_TABLE(MODULE_68, 68)
- OVERLAY_TABLE(MODULE_69, 69)
- OVERLAY_TABLE(MODULE_70, 70)
+
+ WRITEW 69;
+ WRITEW ADDR(.MODULE_69);
+ WRITEW SDK_OVERLAY.MODULE_69.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_69.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_69.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_69.SINIT_END;
+ WRITEW 69;
+ WRITEW 0;
+
+ OVERLAY_TABLE(MODULE_70, 70)
OVERLAY_TABLE(MODULE_71, 71)
OVERLAY_TABLE(MODULE_72, 72)
OVERLAY_TABLE(MODULE_73, 73)
diff --git a/arm9/global.inc b/arm9/global.inc
index 5d4f69d7..b355fcd4 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -168,6 +168,8 @@
.extern FUN_02006930
.extern FUN_02006BB0
.extern FUN_02006C08
+.extern FUN_02006C30
+.extern FUN_02006C5C
.extern FUN_02006C98
.extern FUN_02006D98
.extern FUN_02006ED4
@@ -183,6 +185,8 @@
.extern FUN_02007E68
.extern FUN_02007E98
.extern FUN_02007F20
+.extern FUN_02008010
+.extern FUN_02008030
.extern FUN_020080D0
.extern FUN_020081C4
.extern FUN_02008AA4
@@ -355,7 +359,9 @@
.extern FUN_0200E3A0
.extern FUN_0200E3BC
.extern FUN_02011B20
+.extern FUN_02012400
.extern FUN_02012420
+.extern FUN_02012530
.extern FUN_0201259C
.extern FUN_020125D4
.extern FUN_0201265C
@@ -468,6 +474,7 @@
.extern FUN_020191A4
.extern FUN_020191D0
.extern FUN_02019220
+.extern FUN_02019270
.extern FUN_02019548
.extern FUN_02019570
.extern FUN_0201958C
@@ -540,6 +547,7 @@
.extern FUN_0201EB70
.extern FUN_0201EB8C
.extern FUN_0201EBA4
+.extern FUN_0201EC58
.extern FUN_0201EC68
.extern FUN_0201EC88
.extern FUN_0201EC94
@@ -568,6 +576,7 @@
.extern FUN_0202022C
.extern FUN_02020248
.extern FUN_02020310
+.extern FUN_02020334
.extern FUN_02020354
.extern FUN_02020388
.extern FUN_02020398
@@ -587,6 +596,8 @@
.extern FUN_02021A74
.extern FUN_02021CE0
.extern FUN_02021D3C
+.extern FUN_02021D5C
+.extern FUN_02021D9C
.extern FUN_02021E28
.extern FUN_02021EF0
.extern FUN_02021F2C
@@ -2227,6 +2238,7 @@
.extern FUN_020672BC
.extern FUN_02067830
.extern FUN_02068678
+.extern FUN_020687C0
.extern FUN_02068854
.extern FUN_020689E0
.extern FUN_02068AAC
@@ -2509,6 +2521,7 @@
.extern FUN_020AEB70
.extern FUN_020AEC7C
.extern FUN_020AEC98
+.extern FUN_020AEDF4
.extern FUN_020AEE40
.extern FUN_020AEEB8
.extern FUN_020AEF1C
@@ -2545,6 +2558,7 @@
.extern FUN_020B19C4
.extern FUN_020B19DC
.extern FUN_020B1A14
+.extern FUN_020B1A1C
.extern FUN_020B1A24
.extern FUN_020B1EA4
.extern FUN_020B1EC4
@@ -2982,6 +2996,7 @@
.extern FUN_0222E3A0
.extern FUN_0222E7E8
.extern FUN_0222E874
+.extern FUN_0222EC60
.extern FUN_0222ED34
.extern FUN_0222EDBC
.extern FUN_0222F440
@@ -3247,6 +3262,19 @@
.extern G2x_SetBGyAffine_
.extern G2x_SetBlendAlpha_
.extern G2x_SetBlendBrightness_
+.extern G3B_Begin
+.extern G3B_Color
+.extern G3B_End
+.extern G3B_LightColor
+.extern G3B_LightVector
+.extern G3B_LoadMtx44
+.extern G3B_MaterialColorDiffAmb
+.extern G3B_MaterialColorSpecEmi
+.extern G3B_Normal
+.extern G3B_PolygonAttr
+.extern G3B_PopMtx
+.extern G3B_PushMtx
+.extern G3B_Vtx
.extern G3X_GetBoxTestResult
.extern G3X_GetClipMtx
.extern G3X_GetVectorMtx
@@ -3255,6 +3283,8 @@
.extern G3X_ResetMtxStack
.extern G3X_SetClearColor
.extern G3X_SetFog
+.extern G3_BeginMakeDL
+.extern G3_EndMakeDL
.extern G3_LoadMtx43
.extern G3_MultMtx33
.extern G3_MultMtx43
@@ -3390,6 +3420,7 @@
.extern MI_HBlankDmaCopy16
.extern MI_HBlankDmaCopy32
.extern MI_Init
+.extern MI_SendGXCommand
.extern MI_SendGXCommandAsync
.extern MI_SendGXCommandAsyncFast
.extern MI_SetWramBank
@@ -3426,12 +3457,16 @@
.extern MTX_MultVec43
.extern MTX_Rot22_
.extern MTX_RotX33_
+.extern MTX_RotX44_
.extern MTX_RotY33_
+.extern MTX_RotY44_
.extern MTX_RotZ33_
+.extern MTX_RotZ44_
.extern MTX_Scale43_
.extern MTX_ScaleApply22
.extern MTX_ScaleApply33
.extern MTX_ScaleApply43
+.extern MTX_TransApply44
.extern NitroMain
.extern OS_AllocFromArenaHi
.extern OS_AllocFromArenaLo
@@ -3726,6 +3761,7 @@
.extern VEC_Add
.extern VEC_CrossProduct
.extern VEC_DotProduct
+.extern VEC_Fx16Add
.extern VEC_Fx16CrossProduct
.extern VEC_Fx16DotProduct
.extern VEC_Fx16Normalize
diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s
new file mode 100644
index 00000000..79e1cc11
--- /dev/null
+++ b/arm9/modules/69/asm/module_69.s
@@ -0,0 +1,4138 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD69_0222D5C0
+MOD69_0222D5C0: ; 0x0222D5C0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #3
+ mov r1, #0x3f
+ lsl r2, r0, #0x10
+ bl FUN_0201681C
+ ldr r1, _0222D70C ; =0x00001B60
+ add r0, r5, #0
+ mov r2, #0x3f
+ bl FUN_02006268
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_0200628C
+ mov r2, #0x4e
+ str r0, [r4, #0xc]
+ mov r0, #0
+ mov r1, #0x1a
+ lsl r2, r2, #2
+ mov r3, #0x3f
+ bl FUN_0200A86C
+ ldr r1, _0222D710 ; =0x00001B5C
+ str r0, [r4, r1]
+ mov r0, #0x7d
+ lsl r0, r0, #2
+ mov r1, #0x3f
+ bl FUN_020219F4
+ ldr r1, _0222D714 ; =0x00001B54
+ str r0, [r4, r1]
+ mov r0, #0x7d
+ lsl r0, r0, #2
+ mov r1, #0x3f
+ bl FUN_020219F4
+ ldr r1, _0222D718 ; =0x00001B58
+ str r0, [r4, r1]
+ mov r0, #0x3f
+ bl FUN_0200AA80
+ ldr r1, _0222D71C ; =0x00001B50
+ str r0, [r4, r1]
+ mov r0, #0
+ str r0, [r4, #4]
+ ldr r0, [r4, #0xc]
+ ldr r0, [r0, #4]
+ bl FUN_0206B9AC
+ add r6, r0, #0
+ mov r5, #0
+ cmp r6, #0
+ ble _0222D664
+ mov r7, #0x7b
+ lsl r7, r7, #2
+_0222D63A:
+ ldr r0, [r4, #0xc]
+ add r1, r5, #0
+ ldr r0, [r0, #4]
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ bne _0222D65E
+ ldr r0, [r4, #4]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r5, [r0, r7]
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+_0222D65E:
+ add r5, r5, #1
+ cmp r5, r6
+ blt _0222D63A
+_0222D664:
+ add r0, r4, #0
+ bl MOD69_0222DBAC
+ add r0, r4, #0
+ bl MOD69_0222DD54
+ add r0, r4, #0
+ bl MOD69_0222DE98
+ ldr r0, _0222D720 ; =0x00001B3C
+ mov r1, #0
+ str r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD69_0222EDCC
+ ldr r1, _0222D724 ; =0x00001B38
+ mov r2, #5
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ ldr r1, _0222D728 ; =0xFFFFF493
+ lsl r2, r2, #0xe
+ bl MOD69_0222EEBC
+ ldr r0, _0222D724 ; =0x00001B38
+ mov r2, #0xf
+ ldr r0, [r4, r0]
+ ldr r1, _0222D72C ; =0xFFFFF923
+ lsl r2, r2, #0xe
+ bl MOD69_0222EEBC
+ ldr r0, _0222D724 ; =0x00001B38
+ mov r2, #0xa
+ ldr r0, [r4, r0]
+ ldr r1, _0222D730 ; =0xFFFFFDB6
+ lsl r2, r2, #0xe
+ bl MOD69_0222EEBC
+ ldr r0, _0222D724 ; =0x00001B38
+ mov r2, #0x23
+ ldr r0, [r4, r0]
+ ldr r1, _0222D734 ; =0x0000024A
+ lsl r2, r2, #0xe
+ bl MOD69_0222EEBC
+ ldr r0, _0222D724 ; =0x00001B38
+ mov r2, #0x1e
+ ldr r0, [r4, r0]
+ ldr r1, _0222D738 ; =0x000006DD
+ lsl r2, r2, #0xe
+ bl MOD69_0222EEBC
+ ldr r0, _0222D724 ; =0x00001B38
+ mov r2, #0xa
+ ldr r0, [r4, r0]
+ ldr r1, _0222D73C ; =0x00000B6D
+ lsl r2, r2, #0x10
+ bl MOD69_0222EEBC
+ add r0, r4, #0
+ bl MOD69_0222F1B0
+ ldr r1, _0222D720 ; =0x00001B3C
+ ldr r2, _0222D740 ; =0x04000304
+ str r0, [r4, r1]
+ ldrh r1, [r2]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2]
+ mov r0, #0
+ str r0, [r4]
+ ldr r0, _0222D744 ; =MOD69_0222DB2C
+ add r1, r4, #0
+ mov r2, #6
+ bl MOD69_0222DBA4
+ ldr r1, _0222D748 ; =0x00001B34
+ mov r2, #1
+ str r0, [r4, r1]
+ ldr r1, _0222D74C ; =0x00000493
+ mov r0, #8
+ bl FUN_0200433C
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222D70C: .word 0x00001B60
+_0222D710: .word 0x00001B5C
+_0222D714: .word 0x00001B54
+_0222D718: .word 0x00001B58
+_0222D71C: .word 0x00001B50
+_0222D720: .word 0x00001B3C
+_0222D724: .word 0x00001B38
+_0222D728: .word 0xFFFFF493
+_0222D72C: .word 0xFFFFF923
+_0222D730: .word 0xFFFFFDB6
+_0222D734: .word 0x0000024A
+_0222D738: .word 0x000006DD
+_0222D73C: .word 0x00000B6D
+_0222D740: .word 0x04000304
+_0222D744: .word MOD69_0222DB2C
+_0222D748: .word 0x00001B34
+_0222D74C: .word 0x00000493
+
+ thumb_func_start MOD69_0222D750
+MOD69_0222D750: ; 0x0222D750
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r6, r0, #0
+ cmp r1, #0
+ beq _0222D762
+ cmp r1, #1
+ beq _0222D7C6
+ b _0222D7D2
+_0222D762:
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, _0222D7D8 ; =0x00001B34
+ ldr r0, [r4, r0]
+ bl FUN_0200CAB4
+ ldr r0, _0222D7DC ; =0x00001B3C
+ ldr r0, [r4, r0]
+ bl MOD69_0222F360
+ ldr r0, _0222D7E0 ; =0x00001B38
+ ldr r0, [r4, r0]
+ bl MOD69_0222F150
+ add r0, r4, #0
+ bl MOD69_0222E1A0
+ add r0, r4, #0
+ bl MOD69_0222DE88
+ add r0, r4, #0
+ bl MOD69_0222DD18
+ ldr r0, _0222D7E4 ; =0x00001B50
+ ldr r0, [r4, r0]
+ bl FUN_0200AB18
+ ldr r0, _0222D7E8 ; =0x00001B54
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ ldr r0, _0222D7EC ; =0x00001B58
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ ldr r0, _0222D7F0 ; =0x00001B5C
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ add r0, r6, #0
+ bl FUN_0200627C
+ mov r0, #0x3f
+ bl FUN_020168D0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _0222D7D2
+_0222D7C6:
+ bl MOD69_0222F19C
+ cmp r0, #0
+ beq _0222D7D2
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_0222D7D2:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ nop
+_0222D7D8: .word 0x00001B34
+_0222D7DC: .word 0x00001B3C
+_0222D7E0: .word 0x00001B38
+_0222D7E4: .word 0x00001B50
+_0222D7E8: .word 0x00001B54
+_0222D7EC: .word 0x00001B58
+_0222D7F0: .word 0x00001B5C
+
+ thumb_func_start MOD69_0222D7F4
+MOD69_0222D7F4: ; 0x0222D7F4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ bl FUN_02006278
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #5
+ bhs _0222D820
+ lsl r2, r1, #2
+ ldr r1, _0222D824 ; =0x0222F7D4
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _0222D81C
+ mov r0, #0
+ str r0, [r4]
+ str r0, [r4, #8]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+_0222D81C:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0222D820:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0222D824: .word 0x0222F7D4
+
+ thumb_func_start MOD69_0222D828
+MOD69_0222D828: ; 0x0222D828
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _0222D83A
+ cmp r0, #1
+ beq _0222D858
+ b _0222D866
+_0222D83A:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x3f
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0222D866
+_0222D858:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0222D866
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, pc}
+_0222D866:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD69_0222D86C
+MOD69_0222D86C: ; 0x0222D86C
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _0222D87E
+ cmp r0, #1
+ beq _0222D8A6
+ b _0222D8BC
+_0222D87E:
+ mov r0, #2
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x3f
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ mov r0, #0
+ mov r1, #0x1e
+ bl FUN_020053CC
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0222D8BC
+_0222D8A6:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0222D8BC
+ bl FUN_02005404
+ cmp r0, #0
+ bne _0222D8BC
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, pc}
+_0222D8BC:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD69_0222D8C4
+MOD69_0222D8C4: ; 0x0222D8C4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ cmp r1, #0
+ beq _0222D8D6
+ sub r0, r1, #1
+ str r0, [r4, #8]
+ mov r0, #0
+ pop {r4, pc}
+_0222D8D6:
+ ldr r1, [r4]
+ cmp r1, #6
+ bhi _0222D9CC
+ add r2, r1, r1
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0222D8E8: ; jump table
+ .short _0222D8F6 - _0222D8E8 - 2 ; case 0
+ .short _0222D900 - _0222D8E8 - 2 ; case 1
+ .short _0222D920 - _0222D8E8 - 2 ; case 2
+ .short _0222D936 - _0222D8E8 - 2 ; case 3
+ .short _0222D956 - _0222D8E8 - 2 ; case 4
+ .short _0222D978 - _0222D8E8 - 2 ; case 5
+ .short _0222D992 - _0222D8E8 - 2 ; case 6
+_0222D8F6:
+ ldr r0, _0222D9D0 ; =0x0222F960
+ mov r2, #0
+ str r2, [r0]
+ add r0, r1, #1
+ str r0, [r4]
+_0222D900:
+ ldr r1, _0222D9D0 ; =0x0222F960
+ add r0, r4, #0
+ ldr r1, [r1]
+ mov r2, #0
+ bl MOD69_0222E218
+ ldr r1, _0222D9D0 ; =0x0222F960
+ add r0, r4, #0
+ ldr r1, [r1]
+ mov r2, #1
+ bl MOD69_0222E53C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0222D9CC
+_0222D920:
+ mov r1, #0
+ bl MOD69_0222DB14
+ cmp r0, #0
+ beq _0222D9CC
+ mov r0, #0x14
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0222D9CC
+_0222D936:
+ ldr r1, _0222D9D0 ; =0x0222F960
+ mov r2, #1
+ ldr r1, [r1]
+ mov r3, #0
+ bl MOD69_0222E6FC
+ ldr r1, _0222D9D0 ; =0x0222F960
+ add r0, r4, #0
+ ldr r1, [r1]
+ mov r2, #1
+ bl MOD69_0222E804
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0222D9CC
+_0222D956:
+ mov r1, #0
+ bl MOD69_0222DB14
+ cmp r0, #0
+ beq _0222D9CC
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD69_0222DB14
+ cmp r0, #0
+ beq _0222D9CC
+ mov r0, #0x1e
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0222D9CC
+_0222D978:
+ mov r1, #0
+ bl MOD69_0222EA84
+ ldr r1, _0222D9D0 ; =0x0222F960
+ add r0, r4, #0
+ ldr r1, [r1]
+ mov r2, #1
+ bl MOD69_0222E590
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0222D9CC
+_0222D992:
+ mov r1, #0
+ bl MOD69_0222DB14
+ cmp r0, #0
+ beq _0222D9CC
+ ldr r0, _0222D9D0 ; =0x0222F960
+ ldr r0, [r0]
+ lsl r0, r0, #2
+ add r1, r4, r0
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, _0222D9D0 ; =0x0222F960
+ ldr r1, [r0]
+ add r1, r1, #1
+ str r1, [r0]
+ ldr r0, [r4, #4]
+ cmp r1, r0
+ bge _0222D9C8
+ mov r0, #0x1e
+ str r0, [r4, #8]
+ mov r0, #1
+ str r0, [r4]
+ b _0222D9CC
+_0222D9C8:
+ mov r0, #1
+ pop {r4, pc}
+_0222D9CC:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_0222D9D0: .word 0x0222F960
+
+ thumb_func_start MOD69_0222D9D4
+MOD69_0222D9D4: ; 0x0222D9D4
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ cmp r1, #0
+ beq _0222D9EA
+ sub r0, r1, #1
+ str r0, [r4, #8]
+ add sp, #0x10
+ mov r0, #0
+ pop {r4, pc}
+_0222D9EA:
+ ldr r1, [r4]
+ cmp r1, #8
+ bhi _0222DAD4
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0222D9FC: ; jump table
+ .short _0222DA0E - _0222D9FC - 2 ; case 0
+ .short _0222DA2E - _0222D9FC - 2 ; case 1
+ .short _0222DA44 - _0222D9FC - 2 ; case 2
+ .short _0222DA66 - _0222D9FC - 2 ; case 3
+ .short _0222DA74 - _0222D9FC - 2 ; case 4
+ .short _0222DA90 - _0222D9FC - 2 ; case 5
+ .short _0222DA9E - _0222D9FC - 2 ; case 6
+ .short _0222DAB4 - _0222D9FC - 2 ; case 7
+ .short _0222DAC4 - _0222D9FC - 2 ; case 8
+_0222DA0E:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ mov r0, #0x3f
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x10]
+ mov r0, #0x69
+ mov r3, #3
+ bl FUN_020068C8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0222DAD4
+_0222DA2E:
+ mov r1, #0
+ bl MOD69_0222E2D8
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD69_0222E5F0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0222DAD4
+_0222DA44:
+ mov r1, #0
+ bl MOD69_0222DB14
+ cmp r0, #0
+ beq _0222DAD4
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD69_0222DB14
+ cmp r0, #0
+ beq _0222DAD4
+ mov r0, #0x14
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0222DAD4
+_0222DA66:
+ mov r1, #0
+ bl MOD69_0222E644
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0222DAD4
+_0222DA74:
+ mov r1, #0
+ bl MOD69_0222DB14
+ cmp r0, #0
+ beq _0222DAD4
+ add r0, r4, #0
+ bl MOD69_0222EB4C
+ mov r0, #0x14
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0222DAD4
+_0222DA90:
+ mov r1, #0
+ bl FUN_0222EC60
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0222DAD4
+_0222DA9E:
+ mov r1, #0
+ bl MOD69_0222DB14
+ cmp r0, #0
+ beq _0222DAD4
+ mov r0, #0x14
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0222DAD4
+_0222DAB4:
+ ldr r0, _0222DADC ; =0x00001B3C
+ ldr r0, [r4, r0]
+ bl MOD69_0222F378
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0222DAD4
+_0222DAC4:
+ ldr r0, _0222DAE0 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _0222DAD4
+ add sp, #0x10
+ mov r0, #1
+ pop {r4, pc}
+_0222DAD4:
+ mov r0, #0
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_0222DADC: .word 0x00001B3C
+_0222DAE0: .word 0x021C48B8
+
+ thumb_func_start MOD69_0222DAE4
+MOD69_0222DAE4: ; 0x0222DAE4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _0222DAF4
+ cmp r1, #1
+ beq _0222DB02
+ b _0222DB10
+_0222DAF4:
+ mov r1, #0
+ bl MOD69_0222E6A0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _0222DB10
+_0222DB02:
+ mov r1, #0
+ bl MOD69_0222DB14
+ cmp r0, #0
+ beq _0222DB10
+ mov r0, #1
+ pop {r4, pc}
+_0222DB10:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD69_0222DB14
+MOD69_0222DB14: ; 0x0222DB14
+ lsl r1, r1, #2
+ add r1, r0, r1
+ mov r0, #0x6d
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ bne _0222DB26
+ mov r0, #1
+ bx lr
+_0222DB26:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD69_0222DB2C
+MOD69_0222DB2C: ; 0x0222DB2C
+ push {r4, lr}
+ sub sp, #8
+ ldr r0, _0222DB94 ; =0x04000600
+ add r4, r1, #0
+ ldr r1, [r0]
+ mov r0, #2
+ lsl r0, r0, #0x1a
+ tst r0, r1
+ bne _0222DB8E
+ blx G3X_ResetMtxStack
+ mov r1, #0
+ mov r0, #0x11
+ add r2, r1, #0
+ blx FUN_020BB1C0
+ ldr r0, _0222DB98 ; =0x00001B38
+ ldr r0, [r4, r0]
+ bl MOD69_0222F11C
+ mov r2, #1
+ mov r0, #0x12
+ add r1, sp, #4
+ str r2, [sp, #4]
+ blx FUN_020BB1C0
+ mov r1, #0
+ mov r0, #0x11
+ add r2, r1, #0
+ blx FUN_020BB1C0
+ ldr r0, _0222DB9C ; =0x00001B3C
+ ldr r0, [r4, r0]
+ bl MOD69_0222F63C
+ mov r2, #1
+ mov r0, #0x12
+ add r1, sp, #0
+ str r2, [sp]
+ blx FUN_020BB1C0
+ ldr r0, _0222DBA0 ; =0x04000540
+ mov r1, #1
+ str r1, [r0]
+ ldr r0, [r4, #0x24]
+ bl FUN_0201FDEC
+ bl FUN_02009F80
+_0222DB8E:
+ add sp, #8
+ pop {r4, pc}
+ nop
+_0222DB94: .word 0x04000600
+_0222DB98: .word 0x00001B38
+_0222DB9C: .word 0x00001B3C
+_0222DBA0: .word 0x04000540
+
+ thumb_func_start MOD69_0222DBA4
+MOD69_0222DBA4: ; 0x0222DBA4
+ ldr r3, _0222DBA8 ; =0x0200CA61
+ bx r3
+ .align 2, 0
+_0222DBA8: .word 0x0200CA61
+
+ thumb_func_start MOD69_0222DBAC
+MOD69_0222DBAC: ; 0x0222DBAC
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0x3f
+ bl FUN_02016B94
+ str r0, [r4, #0x10]
+ ldr r0, _0222DCF4 ; =0x0222F8CC
+ bl FUN_0201E66C
+ ldr r2, _0222DCF8 ; =0x04000304
+ ldr r0, _0222DCFC ; =0xFFFF7FFF
+ ldrh r1, [r2]
+ and r0, r1
+ strh r0, [r2]
+ ldr r0, _0222DD00 ; =0x0222F7C4
+ bl FUN_02016BBC
+ ldr r0, [r4, #0x10]
+ ldr r2, _0222DD04 ; =0x0222F850
+ mov r1, #1
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x10]
+ ldr r2, _0222DD08 ; =0x0222F818
+ mov r1, #2
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x10]
+ ldr r2, _0222DD0C ; =0x0222F834
+ mov r1, #3
+ mov r3, #0
+ bl FUN_02016C18
+ mov r2, #0
+ str r2, [sp]
+ mov r1, #1
+ ldr r0, [r4, #0x10]
+ 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, #0x10]
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r3, #0
+ add r1, r4, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ mov r2, #1
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldr r0, [r4, #0x10]
+ add r1, #0x14
+ bl FUN_02019064
+ add r0, r4, #0
+ add r0, #0x14
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r4, #0
+ add r0, #0x14
+ bl FUN_02019548
+ add r0, r4, #0
+ add r0, #0x14
+ bl FUN_02019270
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3f
+ str r0, [sp, #0xc]
+ mov r1, #3
+ ldr r2, [r4, #0x10]
+ mov r0, #0x69
+ add r3, r1, #0
+ bl FUN_0200687C
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x3f
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x10]
+ mov r0, #0x69
+ mov r3, #3
+ bl FUN_020068C8
+ mov r0, #0x60
+ str r0, [sp]
+ mov r0, #0x3f
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x69
+ mov r1, #4
+ 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, #0x3f
+ str r0, [sp, #0xc]
+ mov r1, #2
+ ldr r2, [r4, #0x10]
+ mov r0, #0x69
+ add r3, r1, #0
+ bl FUN_020068C8
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_02017CD0
+ ldr r0, _0222DD10 ; =0x04000040
+ mov r1, #0
+ strh r1, [r0]
+ add r4, r0, #0
+ strh r1, [r0, #4]
+ add r4, #8
+ ldrh r3, [r4]
+ mov r2, #0x3f
+ mov r1, #0x1b
+ bic r3, r2
+ orr r1, r3
+ mov r3, #0x20
+ orr r1, r3
+ strh r1, [r4]
+ add r0, #0xa
+ ldrh r4, [r0]
+ mov r1, #0x1f
+ bic r4, r2
+ orr r1, r4
+ orr r1, r3
+ strh r1, [r0]
+ lsl r2, r3, #0x15
+ ldr r1, [r2]
+ ldr r0, _0222DD14 ; =0xFFFF1FFF
+ and r1, r0
+ lsl r0, r3, #8
+ orr r0, r1
+ str r0, [r2]
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_0222DCF4: .word 0x0222F8CC
+_0222DCF8: .word 0x04000304
+_0222DCFC: .word 0xFFFF7FFF
+_0222DD00: .word 0x0222F7C4
+_0222DD04: .word 0x0222F850
+_0222DD08: .word 0x0222F818
+_0222DD0C: .word 0x0222F834
+_0222DD10: .word 0x04000040
+_0222DD14: .word 0xFFFF1FFF
+
+ thumb_func_start MOD69_0222DD18
+MOD69_0222DD18: ; 0x0222DD18
+ push {r4, lr}
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ add r4, r0, #0
+ ldr r1, [r2]
+ ldr r0, _0222DD50 ; =0xFFFF1FFF
+ and r0, r1
+ str r0, [r2]
+ add r0, r4, #0
+ add r0, #0x14
+ bl FUN_02019178
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0x10]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0x10]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+_0222DD50: .word 0xFFFF1FFF
+
+ thumb_func_start MOD69_0222DD54
+MOD69_0222DD54: ; 0x0222DD54
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ blx FUN_020BB7F4
+ blx G3X_InitMtxStack
+ ldr r0, _0222DDE4 ; =0x04000060
+ ldr r2, _0222DDE8 ; =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, _0222DDEC ; =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]
+ blx G3X_SetClearColor
+ ldr r1, _0222DDF0 ; =0x04000540
+ mov r0, #2
+ str r0, [r1]
+ ldr r0, _0222DDF4 ; =0xBFFF0000
+ str r0, [r1, #0x40]
+ mov r0, #1
+ add r1, r0, #0
+ blx FUN_020AEB70
+ mov r0, #1
+ lsl r0, r0, #0xe
+ mov r1, #1
+ blx FUN_020AEDF4
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r0, _0222DDF8 ; =0x04000008
+ mov r1, #3
+ ldrh r2, [r0]
+ bic r2, r1
+ mov r1, #2
+ orr r1, r2
+ strh r1, [r0]
+ mov r1, #0
+ add r0, #0x48
+ mov r2, #0x18
+ add r3, r1, #0
+ str r1, [sp]
+ blx G2x_SetBlendAlpha_
+ add r0, r4, #0
+ bl MOD69_0222DDFC
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_0222DDE4: .word 0x04000060
+_0222DDE8: .word 0xFFFFCFFD
+_0222DDEC: .word 0x0000CFFB
+_0222DDF0: .word 0x04000540
+_0222DDF4: .word 0xBFFF0000
+_0222DDF8: .word 0x04000008
+
+ thumb_func_start MOD69_0222DDFC
+MOD69_0222DDFC: ; 0x0222DDFC
+ push {r4, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ mov r0, #0x3f
+ bl FUN_0201EB64
+ ldr r2, _0222DE80 ; =0x00001B1C
+ ldr r3, _0222DE84 ; =0x00000FA4
+ str r0, [r4, r2]
+ mov r0, #0
+ add r1, r2, #4
+ str r0, [r4, r1]
+ add r1, r2, #0
+ add r1, #8
+ str r0, [r4, r1]
+ add r1, r2, #0
+ add r1, #0xc
+ str r0, [r4, r1]
+ add r1, r2, #0
+ add r1, #0x10
+ strh r0, [r4, r1]
+ add r1, r2, #0
+ add r1, #0x12
+ strh r0, [r4, r1]
+ add r1, r2, #0
+ add r1, #0x14
+ strh r0, [r4, r1]
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4, r2]
+ mov r1, #5
+ str r0, [sp, #8]
+ add r0, r2, #4
+ add r2, #0x10
+ add r0, r4, r0
+ lsl r1, r1, #0xc
+ add r2, r4, r2
+ 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, _0222DE80 ; =0x00001B1C
+ add r0, sp, #0xc
+ ldr r1, [r4, r1]
+ bl FUN_0201EC58
+ ldr r0, _0222DE80 ; =0x00001B1C
+ ldr r0, [r4, r0]
+ bl FUN_0201EB8C
+ ldr r2, _0222DE80 ; =0x00001B1C
+ mov r0, #1
+ mov r1, #0x7d
+ ldr r2, [r4, r2]
+ lsl r0, r0, #0xc
+ lsl r1, r1, #0xe
+ bl FUN_0201EC94
+ add sp, #0x18
+ pop {r4, pc}
+ nop
+_0222DE80: .word 0x00001B1C
+_0222DE84: .word 0x00000FA4
+
+ thumb_func_start MOD69_0222DE88
+MOD69_0222DE88: ; 0x0222DE88
+ ldr r1, _0222DE90 ; =0x00001B1C
+ ldr r3, _0222DE94 ; =0x0201EB71
+ ldr r0, [r0, r1]
+ bx r3
+ .align 2, 0
+_0222DE90: .word 0x00001B1C
+_0222DE94: .word 0x0201EB71
+
+ thumb_func_start MOD69_0222DE98
+MOD69_0222DE98: ; 0x0222DE98
+ push {r3, r4, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ blx FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x80
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ mov r2, #0x3f
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ add r1, r4, #0
+ mov r0, #0x40
+ add r1, #0x28
+ mov r2, #0x3f
+ bl FUN_02008C9C
+ str r0, [r4, #0x24]
+ mov r0, #0x3f
+ str r0, [sp]
+ mov r0, #0x1b
+ mov r1, #0x29
+ mov r2, #0
+ add r3, sp, #0x18
+ bl FUN_02006C30
+ mov r1, #0x5b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #0x3f
+ str r0, [sp]
+ mov r0, #0x1b
+ mov r1, #0x2a
+ mov r2, #0
+ add r3, sp, #0x14
+ bl FUN_02006C5C
+ mov r1, #0x17
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x14]
+ add r0, r4, #0
+ bl MOD69_0222DF0C
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ add sp, #0x1c
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD69_0222DF0C
+MOD69_0222DF0C: ; 0x0222DF0C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xd4
+ mov r3, #0
+ str r0, [sp, #0x14]
+ str r1, [sp, #0xac]
+ str r2, [sp, #0xb0]
+ str r3, [sp, #0xa4]
+ str r3, [sp, #0xb4]
+ str r3, [sp, #0xb8]
+ str r3, [sp, #0xbc]
+ mov r1, #3
+ add r0, sp, #0xc0
+ strb r1, [r0]
+ add r0, sp, #0x5c
+ str r0, [sp, #0xa0]
+ add r0, sp, #0x48
+ str r0, [sp, #0xa8]
+ ldr r0, [sp, #0x14]
+ mov r1, #0x28
+ ldr r0, [r0, #0x24]
+ add r2, r3, #0
+ str r0, [sp, #0x80]
+ add r0, sp, #0xa0
+ str r0, [sp, #0x84]
+ mov r0, #1
+ str r0, [sp, #0x98]
+ mov r0, #0x3f
+ str r3, [sp, #0x88]
+ str r3, [sp, #0x8c]
+ str r3, [sp, #0x90]
+ str r0, [sp, #0x9c]
+ str r0, [sp]
+ mov r0, #0x1b
+ add r3, sp, #0x44
+ bl FUN_02006BB0
+ str r0, [sp, #0x28]
+ mov r0, #0x1b
+ mov r1, #0x27
+ add r2, sp, #0x40
+ mov r3, #0x3f
+ bl FUN_02006C08
+ str r0, [sp, #0x24]
+ mov r0, #0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x14]
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ bgt _0222DF72
+ b _0222E0D4
+_0222DF72:
+ mov r0, #0x32
+ lsl r0, r0, #6
+ mov r1, #0x5d
+ ldr r5, [sp, #0x14]
+ str r0, [sp, #0x1c]
+ ldr r7, [sp, #0x20]
+ lsl r1, r1, #2
+ add r0, r5, #0
+ add r0, r0, r1
+ str r0, [sp, #0x18]
+ add r1, #0xa8
+ add r0, r5, #0
+ add r4, r0, r1
+ ldr r0, [sp, #0x1c]
+ add r6, r7, #0
+ str r0, [sp, #0x38]
+ str r0, [sp, #0x3c]
+ str r0, [sp, #0x30]
+ str r0, [sp, #0x34]
+_0222DF98:
+ add r0, sp, #0x5c
+ blx FUN_020B1A24
+ add r0, sp, #0x48
+ blx FUN_020B19DC
+ ldr r0, [sp, #0x44]
+ add r1, r7, #0
+ mov r2, #1
+ add r3, sp, #0x5c
+ blx FUN_020B1768
+ ldr r0, [sp, #0x40]
+ add r1, r6, #0
+ mov r2, #1
+ add r3, sp, #0x48
+ blx FUN_020B1240
+ ldr r0, [sp, #0x20]
+ add r0, r0, #1
+ str r0, [sp, #0x94]
+ add r0, sp, #0x80
+ bl FUN_0201FF84
+ mov r1, #0x15
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [sp, #0x14]
+ mov r1, #0x7b
+ ldr r0, [r0, #0xc]
+ lsl r1, r1, #2
+ ldr r0, [r0, #4]
+ ldr r1, [r5, r1]
+ bl FUN_0206B9B0
+ str r0, [sp, #0x2c]
+ ldr r1, [sp, #0x2c]
+ add r0, sp, #0xc4
+ mov r2, #2
+ bl FUN_02068B68
+ ldr r0, [sp, #0x2c]
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020671BC
+ mov r1, #0x81
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r1, #0
+ ldr r0, [sp, #0x2c]
+ add r2, r1, #0
+ bl FUN_020671BC
+ str r4, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ mov r0, #0x81
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, sp, #0xc4
+ str r0, [sp, #0x10]
+ add r0, sp, #0xc4
+ ldrh r0, [r0]
+ ldrh r1, [r1, #2]
+ ldr r3, _0222E198 ; =0x0222F86C
+ mov r2, #0x3f
+ bl FUN_02012530
+ ldr r1, [sp, #0x30]
+ add r0, r4, #0
+ blx DC_FlushRange
+ ldr r2, [sp, #0x34]
+ add r0, r4, #0
+ add r1, r7, #0
+ blx GX_LoadOBJ
+ mov r1, #0
+ ldr r0, [sp, #0x2c]
+ add r2, r1, #0
+ bl FUN_020671BC
+ str r4, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ mov r0, #0x81
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, sp, #0xc4
+ str r0, [sp, #0x10]
+ add r0, sp, #0xc4
+ ldrh r0, [r0]
+ ldrh r1, [r1, #2]
+ ldr r3, _0222E19C ; =0x0222F87C
+ mov r2, #0x3f
+ bl FUN_02012530
+ ldr r1, [sp, #0x38]
+ add r0, r4, #0
+ blx DC_FlushRange
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x3c]
+ add r0, r4, #0
+ blx GX_LoadOBJ
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x3f
+ str r0, [sp, #4]
+ add r0, sp, #0xc4
+ add r1, sp, #0xc4
+ ldrh r0, [r0]
+ ldrh r1, [r1, #4]
+ mov r2, #1
+ add r3, r6, #0
+ bl FUN_02006930
+ mov r1, #0x81
+ lsl r1, r1, #2
+ ldr r1, [r5, r1]
+ ldr r0, [sp, #0x18]
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02069010
+ mov r0, #0x19
+ lsl r0, r0, #8
+ ldr r1, [sp, #0x1c]
+ add r7, r7, r0
+ add r0, r1, r0
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r6, #0x20
+ add r0, #0x14
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ add r5, r5, #4
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x14]
+ ldr r1, [r0, #4]
+ ldr r0, [sp, #0x20]
+ cmp r0, r1
+ bge _0222E0D4
+ b _0222DF98
+_0222E0D4:
+ add r0, sp, #0x5c
+ blx FUN_020B1A24
+ add r0, sp, #0x48
+ blx FUN_020B19DC
+ mov r1, #0x96
+ ldr r0, [sp, #0x44]
+ lsl r1, r1, #8
+ mov r2, #1
+ add r3, sp, #0x5c
+ blx FUN_020B1768
+ ldr r0, [sp, #0x40]
+ mov r1, #0xc0
+ mov r2, #1
+ add r3, sp, #0x48
+ blx FUN_020B1240
+ ldr r0, [sp, #0x14]
+ ldr r0, [r0, #0xc]
+ ldr r0, [r0]
+ bl FUN_020239CC
+ cmp r0, #1
+ bne _0222E10C
+ mov r1, #1
+ b _0222E10E
+_0222E10C:
+ mov r1, #0
+_0222E10E:
+ lsl r1, r1, #0x10
+ add r0, sp, #0xc4
+ lsr r1, r1, #0x10
+ bl FUN_020690AC
+ mov r1, #0x87
+ ldr r0, [sp, #0x14]
+ lsl r1, r1, #2
+ add r0, r0, r1
+ str r0, [sp]
+ add r1, sp, #0xc4
+ ldrh r0, [r1]
+ ldrh r1, [r1, #2]
+ ldr r3, _0222E198 ; =0x0222F86C
+ mov r2, #0x3f
+ bl FUN_02012400
+ mov r1, #0x87
+ ldr r0, [sp, #0x14]
+ lsl r1, r1, #2
+ add r0, r0, r1
+ mov r1, #0x32
+ lsl r1, r1, #6
+ blx DC_FlushRange
+ mov r1, #0x87
+ mov r2, #0x32
+ ldr r0, [sp, #0x14]
+ lsl r1, r1, #2
+ add r0, r0, r1
+ mov r1, #0x96
+ lsl r1, r1, #8
+ lsl r2, r2, #6
+ blx GX_LoadOBJ
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x3f
+ str r0, [sp, #4]
+ add r1, sp, #0xc4
+ ldrh r0, [r1]
+ ldrh r1, [r1, #4]
+ mov r2, #1
+ mov r3, #0xc0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp, #0x94]
+ add r0, sp, #0x80
+ bl FUN_0201FF84
+ mov r2, #0x5a
+ ldr r1, [sp, #0x14]
+ lsl r2, r2, #2
+ str r0, [r1, r2]
+ add r0, r1, #0
+ ldr r0, [r0, r2]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [sp, #0x24]
+ bl FUN_02016A18
+ ldr r0, [sp, #0x28]
+ bl FUN_02016A18
+ add sp, #0xd4
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0222E198: .word 0x0222F86C
+_0222E19C: .word 0x0222F87C
+
+ thumb_func_start MOD69_0222E1A0
+MOD69_0222E1A0: ; 0x0222E1A0
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, [r6, #4]
+ mov r4, #0
+ cmp r0, #0
+ ble _0222E1C2
+ mov r7, #0x15
+ add r5, r6, #0
+ lsl r7, r7, #4
+_0222E1B2:
+ ldr r0, [r5, r7]
+ bl FUN_0201FFC8
+ ldr r0, [r6, #4]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blt _0222E1B2
+_0222E1C2:
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r6, r0]
+ bl FUN_02016A18
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02016A18
+ ldr r0, [r6, #0x24]
+ bl FUN_0201FD58
+ bl FUN_02009FA0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD69_0222E1E4
+MOD69_0222E1E4: ; 0x0222E1E4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1, #4]
+ mov r2, #0
+ str r2, [r0]
+ ldr r0, [r1]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+
+ thumb_func_start MOD69_0222E1FC
+MOD69_0222E1FC: ; 0x0222E1FC
+ str r1, [r0]
+ str r2, [r0, #4]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD69_0222E204
+MOD69_0222E204: ; 0x0222E204
+ ldr r3, _0222E210 ; =0x0200CA99
+ add r1, r0, #0
+ ldr r0, _0222E214 ; =MOD69_0222E1E4
+ mov r2, #0
+ bx r3
+ nop
+_0222E210: .word 0x0200CA99
+_0222E214: .word MOD69_0222E1E4
+
+ thumb_func_start MOD69_0222E218
+MOD69_0222E218: ; 0x0222E218
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #0x3f
+ mov r1, #0x2c
+ str r2, [sp]
+ bl FUN_02016998
+ mov r1, #0x6d
+ lsl r1, r1, #6
+ add r4, r6, r1
+ ldr r1, [sp]
+ add r5, r0, #0
+ lsl r1, r1, #2
+ str r1, [sp, #4]
+ ldr r2, [sp, #4]
+ add r1, r5, #0
+ add r2, r4, r2
+ bl MOD69_0222E1FC
+ lsl r0, r7, #2
+ add r1, r6, r0
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ ldr r3, _0222E298 ; =0x0222F7A8
+ str r0, [r5, #8]
+ lsl r0, r7, #0x1f
+ lsr r2, r0, #0x1c
+ ldr r0, _0222E29C ; =0x0222F7A4
+ ldr r6, [r0, r2]
+ add r0, r5, #0
+ ldr r2, [r3, r2]
+ add r0, #0x18
+ add r1, r6, #0
+ mov r3, #0x1c
+ bl MOD69_0222F680
+ mov r0, #6
+ add r1, r5, #0
+ str r6, [r5, #0xc]
+ lsl r0, r0, #0x10
+ str r0, [r5, #0x10]
+ mov r0, #0
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #8]
+ add r1, #0xc
+ bl FUN_02020044
+ ldr r0, [r5, #8]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, _0222E2A0 ; =MOD69_0222E2A4
+ add r1, r5, #0
+ mov r2, #0
+ bl MOD69_0222DBA4
+ ldr r1, [sp, #4]
+ str r0, [r4, r1]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222E298: .word 0x0222F7A8
+_0222E29C: .word 0x0222F7A4
+_0222E2A0: .word MOD69_0222E2A4
+
+ thumb_func_start MOD69_0222E2A4
+MOD69_0222E2A4: ; 0x0222E2A4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD69_0222F6A0
+ str r0, [r4, #0xc]
+ add r1, r4, #0
+ ldr r0, [r4, #8]
+ add r1, #0xc
+ bl FUN_02020044
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD69_0222F6C0
+ cmp r0, #0
+ beq _0222E2D6
+ add r0, r4, #0
+ bl MOD69_0222E204
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0222E2D6:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD69_0222E2D8
+MOD69_0222E2D8: ; 0x0222E2D8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #0x3f
+ mov r1, #0x2c
+ bl FUN_02016998
+ mov r1, #0x6d
+ lsl r1, r1, #6
+ add r5, r0, #0
+ add r4, r6, r1
+ lsl r7, r7, #2
+ add r1, r5, #0
+ add r2, r4, r7
+ bl MOD69_0222E1FC
+ mov r0, #0x5a
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r1, #0x3a
+ str r0, [r5, #8]
+ add r0, r5, #0
+ mov r2, #0x1a
+ add r0, #0x18
+ lsl r1, r1, #0xe
+ lsl r2, r2, #0xe
+ mov r3, #0x1c
+ bl MOD69_0222F680
+ mov r0, #2
+ lsl r0, r0, #0x12
+ str r0, [r5, #0xc]
+ mov r0, #0x3a
+ lsl r0, r0, #0xe
+ str r0, [r5, #0x10]
+ mov r0, #0
+ str r0, [r5, #0x14]
+ add r1, r5, #0
+ ldr r0, [r5, #8]
+ add r1, #0xc
+ bl FUN_02020044
+ ldr r0, [r5, #8]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, _0222E344 ; =MOD69_0222E348
+ add r1, r5, #0
+ mov r2, #0
+ bl MOD69_0222DBA4
+ str r0, [r4, r7]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222E344: .word MOD69_0222E348
+
+ thumb_func_start MOD69_0222E348
+MOD69_0222E348: ; 0x0222E348
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD69_0222F6A0
+ str r0, [r4, #0x10]
+ add r1, r4, #0
+ ldr r0, [r4, #8]
+ add r1, #0xc
+ bl FUN_02020044
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD69_0222F6C0
+ cmp r0, #0
+ beq _0222E37A
+ add r0, r4, #0
+ bl MOD69_0222E204
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0222E37A:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD69_0222E37C
+MOD69_0222E37C: ; 0x0222E37C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #8
+ bl MOD69_0222F6A0
+ asr r0, r0, #0xc
+ add r2, r0, #0
+ add r2, #0x60
+ cmp r0, #0
+ bge _0222E396
+ mov r0, #0
+_0222E396:
+ cmp r2, #0
+ bge _0222E39C
+ mov r2, #0
+_0222E39C:
+ cmp r0, #0xff
+ ble _0222E3A4
+ mov r2, #0
+ add r0, r2, #0
+_0222E3A4:
+ cmp r2, #0xff
+ ble _0222E3AA
+ mov r2, #0xff
+_0222E3AA:
+ lsl r1, r0, #8
+ mov r0, #0xff
+ lsl r0, r0, #8
+ and r1, r0
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x18
+ orr r0, r1
+ ldr r1, _0222E3DC ; =0x04000040
+ strh r0, [r1]
+ ldr r0, _0222E3E0 ; =0x000020A0
+ strh r0, [r1, #4]
+ add r0, r4, #0
+ add r0, #8
+ bl MOD69_0222F6C0
+ cmp r0, #0
+ beq _0222E3D8
+ add r0, r4, #0
+ bl MOD69_0222E204
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0222E3D8:
+ pop {r3, r4, r5, pc}
+ nop
+_0222E3DC: .word 0x04000040
+_0222E3E0: .word 0x000020A0
+
+ thumb_func_start MOD69_0222E3E4
+MOD69_0222E3E4: ; 0x0222E3E4
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #8
+ bl MOD69_0222F6A0
+ asr r2, r0, #0xc
+ ldr r0, [r4, #0x24]
+ add r3, r2, r0
+ cmp r2, #0
+ bge _0222E3FE
+ mov r2, #0
+_0222E3FE:
+ cmp r3, #0
+ bge _0222E404
+ mov r3, #0
+_0222E404:
+ cmp r2, #0xbf
+ ble _0222E40C
+ mov r3, #0
+ add r2, r3, #0
+_0222E40C:
+ cmp r3, #0xbf
+ ble _0222E412
+ mov r3, #0xbf
+_0222E412:
+ ldr r0, [r4, #0x1c]
+ ldr r6, [r4, #0x20]
+ lsl r1, r0, #8
+ mov r0, #0xff
+ lsl r0, r0, #8
+ lsl r6, r6, #0x18
+ lsl r2, r2, #8
+ and r1, r0
+ lsr r6, r6, #0x18
+ orr r6, r1
+ ldr r1, _0222E450 ; =0x04000040
+ and r2, r0
+ lsl r0, r3, #0x18
+ lsr r0, r0, #0x18
+ strh r6, [r1]
+ orr r0, r2
+ strh r0, [r1, #4]
+ add r0, r4, #0
+ add r0, #8
+ bl MOD69_0222F6C0
+ cmp r0, #0
+ beq _0222E44C
+ add r0, r4, #0
+ bl MOD69_0222E204
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0222E44C:
+ pop {r4, r5, r6, pc}
+ nop
+_0222E450: .word 0x04000040
+
+ thumb_func_start MOD69_0222E454
+MOD69_0222E454: ; 0x0222E454
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r0, #8
+ bl MOD69_0222F6A0
+ asr r4, r0, #0xc
+ add r0, r5, #0
+ add r0, #0x1c
+ bl MOD69_0222F6A0
+ asr r2, r0, #0xc
+ cmp r4, #0
+ bge _0222E474
+ mov r4, #0
+_0222E474:
+ cmp r2, #0
+ bge _0222E47A
+ mov r2, #0
+_0222E47A:
+ cmp r4, #0xff
+ ble _0222E482
+ mov r2, #0
+ add r4, r2, #0
+_0222E482:
+ cmp r2, #0xff
+ ble _0222E488
+ mov r2, #0xff
+_0222E488:
+ ldr r0, [r5, #0x30]
+ mov r3, #0xff
+ lsl r2, r2, #0x18
+ ldr r1, [r5, #0x34]
+ lsl r4, r4, #8
+ lsl r3, r3, #8
+ and r4, r3
+ lsr r2, r2, #0x18
+ lsl r0, r0, #8
+ orr r4, r2
+ ldr r2, _0222E4C4 ; =0x04000040
+ and r3, r0
+ lsl r0, r1, #0x18
+ lsr r0, r0, #0x18
+ strh r4, [r2]
+ orr r0, r3
+ strh r0, [r2, #4]
+ add r0, r5, #0
+ add r0, #8
+ bl MOD69_0222F6C0
+ cmp r0, #0
+ beq _0222E4C2
+ add r0, r5, #0
+ bl MOD69_0222E204
+ add r0, r6, #0
+ bl FUN_0200CAB4
+_0222E4C2:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0222E4C4: .word 0x04000040
+
+ thumb_func_start MOD69_0222E4C8
+MOD69_0222E4C8: ; 0x0222E4C8
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r0, #8
+ bl MOD69_0222F6A0
+ asr r4, r0, #0xc
+ add r0, r5, #0
+ add r0, #0x1c
+ bl MOD69_0222F6A0
+ asr r2, r0, #0xc
+ cmp r4, #0
+ bge _0222E4E8
+ mov r4, #0
+_0222E4E8:
+ cmp r2, #0
+ bge _0222E4EE
+ mov r2, #0
+_0222E4EE:
+ cmp r4, #0xbf
+ ble _0222E4F6
+ mov r2, #0
+ add r4, r2, #0
+_0222E4F6:
+ cmp r2, #0xbf
+ ble _0222E4FC
+ mov r2, #0xbf
+_0222E4FC:
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5, #0x34]
+ lsl r1, r0, #8
+ mov r0, #0xff
+ lsl r0, r0, #8
+ lsl r3, r3, #0x18
+ and r1, r0
+ lsr r3, r3, #0x18
+ orr r3, r1
+ ldr r1, _0222E538 ; =0x04000040
+ strh r3, [r1]
+ lsl r3, r4, #8
+ and r3, r0
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x18
+ orr r0, r3
+ strh r0, [r1, #4]
+ add r0, r5, #0
+ add r0, #8
+ bl MOD69_0222F6C0
+ cmp r0, #0
+ beq _0222E536
+ add r0, r5, #0
+ bl MOD69_0222E204
+ add r0, r6, #0
+ bl FUN_0200CAB4
+_0222E536:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0222E538: .word 0x04000040
+
+ thumb_func_start MOD69_0222E53C
+MOD69_0222E53C: ; 0x0222E53C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r7, r1, #0
+ mov r0, #0x3f
+ mov r1, #0x1c
+ add r6, r2, #0
+ bl FUN_02016998
+ mov r1, #0x6d
+ lsl r1, r1, #6
+ add r5, r0, #0
+ add r4, r4, r1
+ lsl r6, r6, #2
+ add r1, r5, #0
+ add r2, r4, r6
+ bl MOD69_0222E1FC
+ lsl r0, r7, #0x1f
+ lsr r2, r0, #0x1c
+ ldr r1, _0222E584 ; =0x0222F7B4
+ add r0, r5, #0
+ ldr r3, _0222E588 ; =0x0222F7B8
+ ldr r1, [r1, r2]
+ ldr r2, [r3, r2]
+ add r0, #8
+ mov r3, #0x1c
+ bl MOD69_0222F680
+ ldr r0, _0222E58C ; =MOD69_0222E37C
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD69_0222DBA4
+ str r0, [r4, r6]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222E584: .word 0x0222F7B4
+_0222E588: .word 0x0222F7B8
+_0222E58C: .word MOD69_0222E37C
+
+ thumb_func_start MOD69_0222E590
+MOD69_0222E590: ; 0x0222E590
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r7, r1, #0
+ mov r0, #0x3f
+ mov r1, #0x28
+ add r6, r2, #0
+ bl FUN_02016998
+ mov r1, #0x6d
+ lsl r1, r1, #6
+ add r5, r0, #0
+ add r4, r4, r1
+ lsl r6, r6, #2
+ add r1, r5, #0
+ add r2, r4, r6
+ bl MOD69_0222E1FC
+ add r0, r5, #0
+ mov r1, #2
+ ldr r2, _0222E5E4 ; =0xFFF60000
+ add r0, #8
+ lsl r1, r1, #0x10
+ mov r3, #0x1c
+ bl MOD69_0222F680
+ lsl r0, r7, #0x1f
+ lsr r1, r0, #0x1d
+ ldr r0, _0222E5E8 ; =0x0222F790
+ mov r2, #1
+ ldr r0, [r0, r1]
+ add r1, r5, #0
+ str r0, [r5, #0x1c]
+ add r0, #0x60
+ str r0, [r5, #0x20]
+ mov r0, #0x80
+ str r0, [r5, #0x24]
+ ldr r0, _0222E5EC ; =MOD69_0222E3E4
+ bl MOD69_0222DBA4
+ str r0, [r4, r6]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222E5E4: .word 0xFFF60000
+_0222E5E8: .word 0x0222F790
+_0222E5EC: .word MOD69_0222E3E4
+
+ thumb_func_start MOD69_0222E5F0
+MOD69_0222E5F0: ; 0x0222E5F0
+ push {r4, r5, r6, lr}
+ add r4, r0, #0
+ add r6, r1, #0
+ mov r0, #0x3f
+ mov r1, #0x28
+ bl FUN_02016998
+ mov r1, #0x6d
+ lsl r1, r1, #6
+ add r5, r0, #0
+ add r4, r4, r1
+ lsl r6, r6, #2
+ add r1, r5, #0
+ add r2, r4, r6
+ bl MOD69_0222E1FC
+ add r0, r5, #0
+ mov r2, #6
+ ldr r1, _0222E63C ; =0xFFF70000
+ add r0, #8
+ lsl r2, r2, #0xe
+ mov r3, #0x1c
+ bl MOD69_0222F680
+ mov r0, #0x58
+ str r0, [r5, #0x1c]
+ mov r0, #0xa8
+ str r0, [r5, #0x20]
+ mov r0, #0x90
+ str r0, [r5, #0x24]
+ ldr r0, _0222E640 ; =MOD69_0222E3E4
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD69_0222DBA4
+ str r0, [r4, r6]
+ pop {r4, r5, r6, pc}
+ nop
+_0222E63C: .word 0xFFF70000
+_0222E640: .word MOD69_0222E3E4
+
+ thumb_func_start MOD69_0222E644
+MOD69_0222E644: ; 0x0222E644
+ push {r4, r5, r6, lr}
+ add r4, r0, #0
+ add r6, r1, #0
+ mov r0, #0x3f
+ mov r1, #0x38
+ bl FUN_02016998
+ mov r1, #0x6d
+ lsl r1, r1, #6
+ add r5, r0, #0
+ add r4, r4, r1
+ lsl r6, r6, #2
+ add r1, r5, #0
+ add r2, r4, r6
+ bl MOD69_0222E1FC
+ add r0, r5, #0
+ mov r1, #0x16
+ add r0, #8
+ lsl r1, r1, #0xe
+ mov r2, #0
+ mov r3, #0xc
+ bl MOD69_0222F680
+ add r0, r5, #0
+ mov r1, #0x2a
+ mov r2, #0xff
+ add r0, #0x1c
+ lsl r1, r1, #0xe
+ lsl r2, r2, #0xc
+ mov r3, #0xc
+ bl MOD69_0222F680
+ mov r0, #0x18
+ str r0, [r5, #0x30]
+ add r0, #0x90
+ str r0, [r5, #0x34]
+ ldr r0, _0222E69C ; =MOD69_0222E454
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD69_0222DBA4
+ str r0, [r4, r6]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0222E69C: .word MOD69_0222E454
+
+ thumb_func_start MOD69_0222E6A0
+MOD69_0222E6A0: ; 0x0222E6A0
+ push {r4, r5, r6, lr}
+ add r4, r0, #0
+ add r6, r1, #0
+ mov r0, #0x3f
+ mov r1, #0x38
+ bl FUN_02016998
+ mov r1, #0x6d
+ lsl r1, r1, #6
+ add r5, r0, #0
+ add r4, r4, r1
+ lsl r6, r6, #2
+ add r1, r5, #0
+ add r2, r4, r6
+ bl MOD69_0222E1FC
+ mov r1, #6
+ add r0, r5, #0
+ lsl r1, r1, #0xe
+ add r0, #8
+ lsl r2, r1, #2
+ mov r3, #0x18
+ bl MOD69_0222F680
+ add r0, r5, #0
+ mov r1, #0x2a
+ mov r2, #6
+ add r0, #0x1c
+ lsl r1, r1, #0xe
+ lsl r2, r2, #0x10
+ mov r3, #0x18
+ bl MOD69_0222F680
+ mov r0, #0
+ str r0, [r5, #0x30]
+ mov r0, #0xff
+ str r0, [r5, #0x34]
+ ldr r0, _0222E6F8 ; =MOD69_0222E4C8
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD69_0222DBA4
+ str r0, [r4, r6]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0222E6F8: .word MOD69_0222E4C8
+
+ thumb_func_start MOD69_0222E6FC
+MOD69_0222E6FC: ; 0x0222E6FC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x3f
+ mov r1, #0x74
+ str r2, [sp]
+ str r3, [sp, #4]
+ bl FUN_02016998
+ mov r1, #0x6d
+ lsl r1, r1, #6
+ add r7, r5, r1
+ ldr r1, [sp, #4]
+ add r4, r0, #0
+ lsl r1, r1, #2
+ str r1, [sp, #0xc]
+ ldr r2, [sp, #0xc]
+ add r1, r4, #0
+ add r2, r7, r2
+ bl MOD69_0222E1FC
+ lsl r0, r6, #2
+ str r0, [sp, #8]
+ add r1, r5, r0
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r1, [r1, r0]
+ add r0, #0x24
+ str r1, [r4, #8]
+ add r1, r5, r0
+ mov r0, #0x14
+ mul r0, r6
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x10
+ str r1, [r4, #0xc]
+ bl FUN_02008010
+ ldr r0, [sp]
+ str r0, [r4, #0x6c]
+ ldr r0, [sp, #8]
+ add r1, r5, r0
+ mov r0, #0x81
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ str r0, [r4, #0x70]
+ ldr r0, [r4, #8]
+ bl FUN_02020350
+ add r3, r4, #0
+ add r5, r0, #0
+ add r3, #0x24
+ mov r2, #4
+_0222E768:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0222E768
+ ldr r0, [r5]
+ add r5, r4, #0
+ str r0, [r3]
+ add r3, r4, #0
+ add r5, #0x24
+ add r3, #0x48
+ mov r2, #4
+_0222E77E:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0222E77E
+ ldr r0, [r5]
+ str r0, [r3]
+ add r0, r4, #0
+ add r0, #0x48
+ blx FUN_020B1A24
+ mov r3, #0x19
+ add r0, r4, #0
+ lsl r3, r3, #8
+ add r2, r6, #0
+ mul r2, r3
+ lsr r3, r3, #1
+ add r0, #0x48
+ mov r1, #1
+ add r2, r2, r3
+ blx FUN_020B1A1C
+ ldr r0, _0222E7BC ; =MOD69_0222E7C0
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA44
+ ldr r1, [sp, #0xc]
+ str r0, [r7, r1]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222E7BC: .word MOD69_0222E7C0
+
+ thumb_func_start MOD69_0222E7C0
+MOD69_0222E7C0: ; 0x0222E7C0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x6c]
+ cmp r0, #0
+ beq _0222E7DA
+ ldr r0, [r4, #0x70]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02005578
+ mov r0, #0
+ str r0, [r4, #0x6c]
+_0222E7DA:
+ add r0, r4, #0
+ add r0, #0x10
+ bl FUN_02008030
+ add r2, r0, #0
+ bmi _0222E7F6
+ mov r1, #0x24
+ ldr r0, [r4, #8]
+ add r4, #0x24
+ mul r1, r2
+ add r1, r4, r1
+ bl FUN_02020334
+ pop {r3, r4, r5, pc}
+_0222E7F6:
+ add r0, r4, #0
+ bl MOD69_0222E204
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD69_0222E804
+MOD69_0222E804: ; 0x0222E804
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r7, r1, #0
+ mov r0, #0x3f
+ mov r1, #0x38
+ str r2, [sp]
+ bl FUN_02016998
+ mov r1, #0x6d
+ lsl r1, r1, #6
+ add r6, r5, r1
+ ldr r1, [sp]
+ add r4, r0, #0
+ lsl r1, r1, #2
+ str r1, [sp, #4]
+ ldr r2, [sp, #4]
+ add r1, r4, #0
+ add r2, r6, r2
+ bl MOD69_0222E1FC
+ str r5, [r4, #8]
+ ldr r0, [r5, #0x10]
+ ldr r1, _0222E894 ; =0x00001B50
+ str r0, [r4, #0xc]
+ add r0, r5, #0
+ add r0, #0x14
+ str r0, [r4, #0x10]
+ ldr r0, [r5, r1]
+ str r0, [r4, #0x14]
+ add r0, r1, #4
+ ldr r0, [r5, r0]
+ str r0, [r4, #0x18]
+ add r0, r1, #0
+ add r0, #8
+ ldr r0, [r5, r0]
+ add r1, #0xc
+ str r0, [r4, #0x1c]
+ ldr r0, [r5, r1]
+ str r0, [r4, #0x20]
+ mov r0, #1
+ tst r0, r7
+ beq _0222E85E
+ mov r0, #0
+ b _0222E860
+_0222E85E:
+ mov r0, #0x78
+_0222E860:
+ lsl r1, r7, #2
+ str r0, [r4, #0x2c]
+ ldr r0, [r5, #0xc]
+ add r2, r5, r1
+ mov r1, #0x7b
+ lsl r1, r1, #2
+ ldr r0, [r0, #4]
+ ldr r1, [r2, r1]
+ bl FUN_0206B9B0
+ str r0, [r4, #0x24]
+ ldr r0, [r5, #0xc]
+ mov r2, #0
+ ldr r0, [r0]
+ add r1, r4, #0
+ str r0, [r4, #0x28]
+ str r2, [r4, #0x30]
+ ldr r0, _0222E898 ; =MOD69_0222E9AC
+ str r2, [r4, #0x34]
+ bl FUN_0200CA44
+ ldr r1, [sp, #4]
+ str r0, [r6, r1]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222E894: .word 0x00001B50
+_0222E898: .word MOD69_0222E9AC
+
+ thumb_func_start MOD69_0222E89C
+MOD69_0222E89C: ; 0x0222E89C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5, #0x1c]
+ add r4, r1, #0
+ bl FUN_02021D5C
+ mov r6, #0
+ str r0, [sp, #0x10]
+ cmp r0, #0
+ ble _0222E8F2
+_0222E8B2:
+ ldr r0, [r5, #0x18]
+ ldr r1, [r5, #0x1c]
+ add r2, r6, #0
+ bl FUN_02021D9C
+ mov r0, #0
+ ldr r1, [r5, #0x18]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0x88
+ sub r0, r1, r0
+ lsr r7, r0, #1
+ str r4, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0222E8F8 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r3, [r5, #0x2c]
+ ldr r0, [r5, #0x10]
+ ldr r2, [r5, #0x18]
+ add r3, r3, r7
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ add r6, r6, #1
+ add r4, #0x10
+ cmp r6, r0
+ blt _0222E8B2
+_0222E8F2:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0222E8F8: .word 0x00010200
+
+ thumb_func_start MOD69_0222E8FC
+MOD69_0222E8FC: ; 0x0222E8FC
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0x24]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_0200AC60
+ ldr r0, [r4, #0x24]
+ bl FUN_020687C0
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ ldr r0, [r4, #0x14]
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, [r4, #0x24]
+ bl FUN_020689E0
+ cmp r0, #0
+ beq _0222E93C
+ cmp r0, #1
+ beq _0222E948
+ cmp r0, #2
+ b _0222E954
+_0222E93C:
+ ldr r0, [r4, #0x20]
+ ldr r2, [r4, #0x18]
+ mov r1, #1
+ bl FUN_0200A8E0
+ b _0222E95E
+_0222E948:
+ ldr r0, [r4, #0x20]
+ ldr r2, [r4, #0x18]
+ mov r1, #2
+ bl FUN_0200A8E0
+ b _0222E95E
+_0222E954:
+ ldr r0, [r4, #0x20]
+ ldr r2, [r4, #0x18]
+ mov r1, #3
+ bl FUN_0200A8E0
+_0222E95E:
+ ldr r0, [r4, #0x14]
+ ldr r1, [r4, #0x1c]
+ ldr r2, [r4, #0x18]
+ bl FUN_0200B7B8
+ add sp, #8
+ pop {r4, pc}
+
+ thumb_func_start MOD69_0222E96C
+MOD69_0222E96C: ; 0x0222E96C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ ldr r1, [r5, #0x24]
+ ldr r2, [r5, #0x28]
+ bl MOD69_0222F6C4
+ add r4, r0, #0
+ beq _0222E982
+ cmp r4, #1
+ bne _0222E996
+_0222E982:
+ ldr r0, [r5, #0x24]
+ mov r1, #0x98
+ mov r2, #0
+ bl FUN_020671BC
+ add r2, r0, #0
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ bl FUN_0200AFF4
+_0222E996:
+ ldr r0, [r5, #0x20]
+ ldr r2, [r5, #0x18]
+ add r1, r4, #5
+ bl FUN_0200A8E0
+ ldr r0, [r5, #0x14]
+ ldr r1, [r5, #0x1c]
+ ldr r2, [r5, #0x18]
+ bl FUN_0200B7B8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD69_0222E9AC
+MOD69_0222E9AC: ; 0x0222E9AC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x30]
+ cmp r0, #0
+ beq _0222E9BE
+ sub r0, r0, #1
+ str r0, [r4, #0x30]
+ pop {r3, r4, r5, pc}
+_0222E9BE:
+ ldr r0, [r4, #0x34]
+ cmp r0, #3
+ bhi _0222EA82
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222E9D0: ; jump table
+ .short _0222E9D8 - _0222E9D0 - 2 ; case 0
+ .short _0222E9FC - _0222E9D0 - 2 ; case 1
+ .short _0222EA2E - _0222E9D0 - 2 ; case 2
+ .short _0222EA76 - _0222E9D0 - 2 ; case 3
+_0222E9D8:
+ ldr r0, [r4, #0x20]
+ ldr r2, [r4, #0x1c]
+ mov r1, #0
+ bl FUN_0200A8E0
+ add r0, r4, #0
+ mov r1, #0x18
+ bl MOD69_0222E89C
+ ldr r0, [r4, #0x10]
+ bl FUN_02019548
+ mov r0, #0x14
+ str r0, [r4, #0x30]
+ ldr r0, [r4, #0x34]
+ add r0, r0, #1
+ str r0, [r4, #0x34]
+ pop {r3, r4, r5, pc}
+_0222E9FC:
+ ldr r0, [r4, #0x24]
+ ldr r2, [r4, #0x1c]
+ mov r1, #0x76
+ bl FUN_020671BC
+ add r0, r4, #0
+ mov r1, #0x48
+ bl MOD69_0222E89C
+ add r0, r4, #0
+ bl MOD69_0222E8FC
+ add r0, r4, #0
+ mov r1, #0x58
+ bl MOD69_0222E89C
+ ldr r0, [r4, #0x10]
+ bl FUN_02019548
+ mov r0, #0x14
+ str r0, [r4, #0x30]
+ ldr r0, [r4, #0x34]
+ add r0, r0, #1
+ str r0, [r4, #0x34]
+ pop {r3, r4, r5, pc}
+_0222EA2E:
+ ldr r0, [r4, #0x24]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_0200AD18
+ ldr r0, [r4, #0x20]
+ ldr r2, [r4, #0x18]
+ mov r1, #4
+ bl FUN_0200A8E0
+ ldr r0, [r4, #0x14]
+ ldr r1, [r4, #0x1c]
+ ldr r2, [r4, #0x18]
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ mov r1, #0x78
+ bl MOD69_0222E89C
+ add r0, r4, #0
+ bl MOD69_0222E96C
+ add r0, r4, #0
+ mov r1, #0x88
+ bl MOD69_0222E89C
+ ldr r0, [r4, #0x10]
+ bl FUN_02019548
+ ldr r0, [r4, #0x34]
+ add r0, r0, #1
+ str r0, [r4, #0x34]
+ pop {r3, r4, r5, pc}
+_0222EA76:
+ add r0, r4, #0
+ bl MOD69_0222E204
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0222EA82:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD69_0222EA84
+MOD69_0222EA84: ; 0x0222EA84
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ mov r0, #0x3f
+ mov r1, #0x30
+ bl FUN_02016998
+ mov r1, #0x6d
+ lsl r1, r1, #6
+ add r4, r0, #0
+ add r6, r5, r1
+ lsl r7, r7, #2
+ add r1, r4, #0
+ add r2, r6, r7
+ bl MOD69_0222E1FC
+ ldr r0, [r5, #0x10]
+ add r5, #0x14
+ str r0, [r4, #0xc]
+ add r0, r4, #0
+ str r5, [r4, #0x10]
+ mov r2, #1
+ str r2, [r4, #0x2c]
+ mov r1, #0
+ add r0, #0x14
+ lsl r2, r2, #0x14
+ mov r3, #0x1c
+ str r1, [r4, #0x28]
+ bl MOD69_0222F680
+ ldr r0, _0222EAD0 ; =MOD69_0222EAD4
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD69_0222DBA4
+ str r0, [r6, r7]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222EAD0: .word MOD69_0222EAD4
+
+ thumb_func_start MOD69_0222EAD4
+MOD69_0222EAD4: ; 0x0222EAD4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x28]
+ cmp r0, #0
+ beq _0222EAEA
+ cmp r0, #1
+ beq _0222EB16
+ cmp r0, #2
+ beq _0222EB2C
+ pop {r3, r4, r5, pc}
+_0222EAEA:
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD69_0222F6A0
+ ldr r1, [r4, #0x2c]
+ asr r3, r0, #0xc
+ lsl r1, r1, #0x18
+ ldr r0, [r4, #0xc]
+ lsr r1, r1, #0x18
+ mov r2, #3
+ bl FUN_020179E0
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD69_0222F6C0
+ cmp r0, #0
+ beq _0222EB48
+ ldr r0, [r4, #0x28]
+ add r0, r0, #1
+ str r0, [r4, #0x28]
+ pop {r3, r4, r5, pc}
+_0222EB16:
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [r4, #0x10]
+ bl FUN_02019548
+ ldr r0, [r4, #0x28]
+ add r0, r0, #1
+ str r0, [r4, #0x28]
+ pop {r3, r4, r5, pc}
+_0222EB2C:
+ ldr r1, [r4, #0x2c]
+ ldr r0, [r4, #0xc]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ bl MOD69_0222E204
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0222EB48:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD69_0222EB4C
+MOD69_0222EB4C: ; 0x0222EB4C
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r2, _0222EC50 ; =0x00001B5C
+ add r4, r0, #0
+ ldr r0, [r4, r2]
+ sub r2, #8
+ ldr r2, [r4, r2]
+ mov r1, #0xc
+ bl FUN_0200A8E0
+ ldr r1, _0222EC54 ; =0x00001B54
+ mov r0, #0
+ ldr r1, [r4, r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #1
+ lsl r1, r1, #8
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0222EC58 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ ldr r2, _0222EC54 ; =0x00001B54
+ str r1, [sp, #0xc]
+ ldr r2, [r4, r2]
+ add r0, #0x14
+ bl FUN_0201BDE0
+ ldr r0, _0222EC5C ; =0x00001B50
+ ldr r2, [r4, #0xc]
+ ldr r0, [r4, r0]
+ ldr r2, [r2]
+ mov r1, #0
+ bl FUN_0200ABC0
+ ldr r0, [r4, #0xc]
+ ldr r0, [r0]
+ bl FUN_020239C0
+ add r2, r0, #0
+ mov r0, #2
+ str r0, [sp]
+ mov r1, #1
+ ldr r0, _0222EC5C ; =0x00001B50
+ str r1, [sp, #4]
+ ldr r0, [r4, r0]
+ mov r3, #5
+ bl FUN_0200AD38
+ ldr r0, [r4, #0xc]
+ ldr r0, [r0, #8]
+ bl FUN_02029EBC
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _0222EC5C ; =0x00001B50
+ mov r1, #2
+ ldr r0, [r4, r0]
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, [r4, #0xc]
+ ldr r0, [r0, #8]
+ bl FUN_02029EC0
+ mov r3, #2
+ add r2, r0, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _0222EC5C ; =0x00001B50
+ mov r1, #3
+ ldr r0, [r4, r0]
+ bl FUN_0200AD38
+ ldr r2, _0222EC50 ; =0x00001B5C
+ mov r1, #0xd
+ ldr r0, [r4, r2]
+ sub r2, r2, #4
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ ldr r2, _0222EC5C ; =0x00001B50
+ add r1, r2, #4
+ ldr r0, [r4, r2]
+ add r2, #8
+ ldr r1, [r4, r1]
+ ldr r2, [r4, r2]
+ bl FUN_0200B7B8
+ ldr r1, _0222EC54 ; =0x00001B54
+ mov r0, #0
+ ldr r1, [r4, r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #1
+ lsl r1, r1, #8
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #0xac
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0222EC58 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ ldr r2, _0222EC54 ; =0x00001B54
+ str r1, [sp, #0xc]
+ ldr r2, [r4, r2]
+ add r0, #0x14
+ bl FUN_0201BDE0
+ add r4, #0x14
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_0222EC50: .word 0x00001B5C
+_0222EC54: .word 0x00001B54
+_0222EC58: .word 0x00010200
+_0222EC5C: .word 0x00001B50
+
+ thumb_func_start MOD69_0222EC60
+MOD69_0222EC60: ; 0x0222EC60
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x3f
+ mov r1, #0xdc
+ bl FUN_02016998
+ mov r1, #0x6d
+ lsl r1, r1, #6
+ add r1, r5, r1
+ str r1, [sp, #0xc]
+ lsl r1, r6, #2
+ str r1, [sp, #0x10]
+ add r4, r0, #0
+ ldr r3, [sp, #0xc]
+ ldr r2, [sp, #0x10]
+ add r1, r4, #0
+ add r2, r3, r2
+ bl MOD69_0222E1FC
+ mov r0, #0x15
+ lsl r0, r0, #4
+ str r5, [r4, #0xc]
+ add r0, r5, r0
+ str r0, [r4, #8]
+ mov r0, #0
+ str r0, [r4, #0x10]
+ str r0, [sp, #8]
+ str r0, [r4, #0x18]
+ ldr r0, [r5, #4]
+ str r0, [r4, #0x14]
+ cmp r0, #0
+ ble _0222ECE8
+ ldr r0, _0222ED24 ; =0x0222F8F4
+ ldr r5, [sp, #8]
+ str r0, [sp, #4]
+ add r7, r4, #0
+ add r6, r0, #0
+_0222ECAE:
+ ldr r3, [sp, #4]
+ add r2, r7, #0
+ ldmia r3!, {r0, r1}
+ add r2, #0x94
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r1, r6, #0
+ str r0, [r2]
+ ldr r0, [r4, #8]
+ ldr r0, [r0, r5]
+ bl FUN_02020044
+ ldr r0, [r4, #8]
+ mov r1, #1
+ ldr r0, [r0, r5]
+ bl FUN_020200A0
+ ldr r0, [sp, #4]
+ ldr r1, [r4, #0x14]
+ add r0, #0xc
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ add r7, #0xc
+ add r0, r0, #1
+ add r6, #0xc
+ add r5, r5, #4
+ str r0, [sp, #8]
+ cmp r0, r1
+ blt _0222ECAE
+_0222ECE8:
+ mov r0, #0
+ add r7, r4, #0
+ ldr r6, _0222ED28 ; =0x0222F7E8
+ ldr r5, _0222ED24 ; =0x0222F8F4
+ str r0, [sp]
+ add r7, #0x1c
+_0222ECF4:
+ ldr r1, [r5]
+ ldr r2, [r6]
+ add r0, r7, #0
+ mov r3, #8
+ bl MOD69_0222F680
+ ldr r0, [sp]
+ add r6, r6, #4
+ add r0, r0, #1
+ add r5, #0xc
+ add r7, #0x14
+ str r0, [sp]
+ cmp r0, #6
+ blt _0222ECF4
+ ldr r0, _0222ED2C ; =MOD69_0222ED30
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA44
+ ldr r2, [sp, #0xc]
+ ldr r1, [sp, #0x10]
+ str r0, [r2, r1]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222ED24: .word 0x0222F8F4
+_0222ED28: .word 0x0222F7E8
+_0222ED2C: .word MOD69_0222ED30
+
+ thumb_func_start MOD69_0222ED30
+MOD69_0222ED30: ; 0x0222ED30
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r1, [r5, #0x10]
+ mov r4, #0
+ str r0, [sp]
+ cmp r1, #0
+ ble _0222ED84
+ add r0, r5, #0
+ str r0, [sp, #8]
+ add r0, #0x1c
+ add r7, r5, #0
+ str r0, [sp, #8]
+ str r5, [sp, #4]
+ add r7, #0x94
+ add r6, r4, #0
+_0222ED50:
+ ldr r0, [sp, #8]
+ bl MOD69_0222F6A0
+ ldr r1, [sp, #4]
+ add r1, #0x94
+ str r0, [r1]
+ ldr r0, [r5, #0x14]
+ cmp r4, r0
+ bge _0222ED6C
+ ldr r0, [r5, #8]
+ add r1, r7, #0
+ ldr r0, [r0, r6]
+ bl FUN_02020044
+_0222ED6C:
+ ldr r0, [sp, #8]
+ ldr r1, [r5, #0x10]
+ add r0, #0x14
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ add r4, r4, #1
+ add r0, #0xc
+ str r0, [sp, #4]
+ add r7, #0xc
+ add r6, r6, #4
+ cmp r4, r1
+ blt _0222ED50
+_0222ED84:
+ ldr r0, [r5, #0x18]
+ cmp r0, #0
+ beq _0222ED92
+ sub r0, r0, #1
+ add sp, #0xc
+ str r0, [r5, #0x18]
+ pop {r4, r5, r6, r7, pc}
+_0222ED92:
+ cmp r1, #6
+ bge _0222EDA4
+ mov r0, #4
+ str r0, [r5, #0x18]
+ ldr r0, [r5, #0x10]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r5, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_0222EDA4:
+ ldr r0, [r5, #0x14]
+ add r2, r5, #0
+ sub r1, r0, #1
+ mov r0, #0x14
+ add r2, #0x1c
+ mul r0, r1
+ add r0, r2, r0
+ bl MOD69_0222F6C0
+ cmp r0, #0
+ beq _0222EDC6
+ add r0, r5, #0
+ bl MOD69_0222E204
+ ldr r0, [sp]
+ bl FUN_0200CAB4
+_0222EDC6:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD69_0222EDCC
+MOD69_0222EDCC: ; 0x0222EDCC
+ push {r3, r4, r5, lr}
+ ldr r1, _0222EE10 ; =0x00000844
+ add r5, r0, #0
+ mov r0, #0x3f
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _0222EE0C
+ ldr r0, _0222EE14 ; =0x0222F940
+ mov r1, #1
+ str r1, [r0]
+ ldr r0, _0222EE18 ; =0x0222F960
+ mov r1, #2
+ str r1, [r0, #4]
+ ldr r0, _0222EE1C ; =0x0000083C
+ mov r1, #0
+ str r1, [r4, r0]
+ ldr r0, _0222EE20 ; =MOD69_0222EE80
+ add r1, r4, #0
+ mov r2, #5
+ bl MOD69_0222DBA4
+ ldr r1, _0222EE24 ; =0x00000838
+ mov r2, #3
+ str r0, [r4, r1]
+ add r1, #8
+ str r5, [r4, r1]
+ ldr r0, _0222EE28 ; =MOD69_0222EE2C
+ add r1, r4, #0
+ bl MOD69_0222DBA4
+ pop {r3, r4, r5, pc}
+_0222EE0C:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0222EE10: .word 0x00000844
+_0222EE14: .word 0x0222F940
+_0222EE18: .word 0x0222F960
+_0222EE1C: .word 0x0000083C
+_0222EE20: .word MOD69_0222EE80
+_0222EE24: .word 0x00000838
+_0222EE28: .word MOD69_0222EE2C
+
+ thumb_func_start MOD69_0222EE2C
+MOD69_0222EE2C: ; 0x0222EE2C
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, _0222EE70 ; =0x0222F940
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _0222EE60
+ add r1, r4, #0
+ mov r2, #2
+ add r0, r4, #0
+ add r1, #0x14
+ lsl r2, r2, #0xa
+ blx G3_BeginMakeDL
+ ldr r1, _0222EE74 ; =0x00007FFF
+ ldr r2, _0222EE78 ; =0x00004210
+ add r0, r4, #0
+ mov r3, #0
+ blx G3B_MaterialColorDiffAmb
+ mov r2, #0
+ ldr r1, _0222EE78 ; =0x00004210
+ add r0, r4, #0
+ add r3, r2, #0
+ blx G3B_MaterialColorSpecEmi
+ pop {r4, pc}
+_0222EE60:
+ ldr r1, _0222EE7C ; =0x0222F960
+ ldr r2, [r1, #4]
+ sub r2, r2, #1
+ str r2, [r1, #4]
+ bl FUN_0200CAB4
+ pop {r4, pc}
+ nop
+_0222EE70: .word 0x0222F940
+_0222EE74: .word 0x00007FFF
+_0222EE78: .word 0x00004210
+_0222EE7C: .word 0x0222F960
+
+ thumb_func_start MOD69_0222EE80
+MOD69_0222EE80: ; 0x0222EE80
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, _0222EEB0 ; =0x0222F940
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _0222EEA2
+ add r0, r4, #0
+ blx G3_EndMakeDL
+ ldr r1, _0222EEB4 ; =0x00000814
+ str r0, [r4, r1]
+ add r0, r4, #0
+ ldr r1, [r4, r1]
+ add r0, #0x14
+ blx DC_FlushRange
+ pop {r4, pc}
+_0222EEA2:
+ ldr r1, _0222EEB8 ; =0x0222F960
+ ldr r2, [r1, #4]
+ sub r2, r2, #1
+ str r2, [r1, #4]
+ bl FUN_0200CAB4
+ pop {r4, pc}
+ .align 2, 0
+_0222EEB0: .word 0x0222F940
+_0222EEB4: .word 0x00000814
+_0222EEB8: .word 0x0222F960
+
+ thumb_func_start MOD69_0222EEBC
+MOD69_0222EEBC: ; 0x0222EEBC
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r2, #0
+ bl FUN_0201B6C8
+ ldr r1, _0222EEF8 ; =0x0000083C
+ add r4, r0, #0
+ ldr r3, [r4, r1]
+ cmp r3, #8
+ bge _0222EEF4
+ add r1, r5, #0
+ add r2, r6, #0
+ bl MOD69_0222EF00
+ ldr r2, _0222EEF8 ; =0x0000083C
+ ldr r1, [r4, r2]
+ lsl r1, r1, #2
+ add r3, r4, r1
+ add r1, r2, #0
+ sub r1, #0x24
+ str r0, [r3, r1]
+ ldr r0, _0222EEFC ; =0x0222F960
+ ldr r1, [r0, #4]
+ add r1, r1, #1
+ str r1, [r0, #4]
+ ldr r0, [r4, r2]
+ add r0, r0, #1
+ str r0, [r4, r2]
+_0222EEF4:
+ pop {r4, r5, r6, pc}
+ nop
+_0222EEF8: .word 0x0000083C
+_0222EEFC: .word 0x0222F960
+
+ thumb_func_start MOD69_0222EF00
+MOD69_0222EF00: ; 0x0222EF00
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r1, _0222EF78 ; =0x00000838
+ mov r0, #0x3f
+ add r7, r2, #0
+ add r4, r3, #0
+ bl FUN_02016998
+ add r1, r0, #0
+ beq _0222EF74
+ ldr r0, _0222EF7C ; =0x00000818
+ ldr r2, _0222EF80 ; =0x0222F88C
+ str r6, [r1]
+ lsl r3, r4, #2
+ ldr r3, [r2, r3]
+ add r2, r0, #0
+ strh r5, [r1, r0]
+ sub r2, #8
+ str r3, [r1, r2]
+ add r2, r0, #0
+ mov r3, #0
+ sub r2, #0x14
+ str r3, [r1, r2]
+ add r2, r0, #0
+ sub r2, #0x10
+ str r7, [r1, r2]
+ ldr r2, _0222EF84 ; =0x0222F798
+ lsl r6, r4, #1
+ ldrsh r6, [r2, r6]
+ add r2, r0, #0
+ sub r2, #0xc
+ str r6, [r1, r2]
+ sub r2, r0, #4
+ str r4, [r1, r2]
+ add r4, r5, #0
+ sub r4, #0x50
+ add r2, r0, #2
+ strh r4, [r1, r2]
+ ldr r2, _0222EF88 ; =0xFFFFF000
+ add r4, r0, #4
+ strh r2, [r1, r4]
+ add r4, r0, #6
+ strh r3, [r1, r4]
+ add r4, r0, #0
+ add r5, #0x50
+ add r4, #8
+ strh r5, [r1, r4]
+ add r4, r0, #0
+ add r4, #0xa
+ strh r2, [r1, r4]
+ add r0, #0xc
+ strh r3, [r1, r0]
+ ldr r0, _0222EF8C ; =MOD69_0222EF90
+ mov r2, #4
+ bl MOD69_0222DBA4
+ pop {r3, r4, r5, r6, r7, pc}
+_0222EF74:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222EF78: .word 0x00000838
+_0222EF7C: .word 0x00000818
+_0222EF80: .word 0x0222F88C
+_0222EF84: .word 0x0222F798
+_0222EF88: .word 0xFFFFF000
+_0222EF8C: .word MOD69_0222EF90
+
+ thumb_func_start MOD69_0222EF90
+MOD69_0222EF90: ; 0x0222EF90
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r1, _0222F0FC ; =0x0222F940
+ ldr r1, [r1]
+ cmp r1, #0
+ bne _0222EFA0
+ b _0222F0EC
+_0222EFA0:
+ ldr r0, _0222F100 ; =0x00000808
+ add r1, r0, #4
+ ldr r2, [r5, r0]
+ ldr r1, [r5, r1]
+ add r1, r2, r1
+ str r1, [r5, r0]
+ add r1, r0, #4
+ ldr r1, [r5, r1]
+ ldr r2, [r5, r0]
+ cmp r1, #0
+ ble _0222EFCE
+ mov r1, #0xaa
+ lsl r1, r1, #0xc
+ cmp r2, r1
+ blt _0222EFE4
+ add r1, r0, #4
+ ldr r2, [r5, r1]
+ mov r1, #0
+ mvn r1, r1
+ mul r1, r2
+ add r0, r0, #4
+ str r1, [r5, r0]
+ b _0222EFE4
+_0222EFCE:
+ mov r1, #0xa
+ lsl r1, r1, #0xc
+ cmp r2, r1
+ bgt _0222EFE4
+ add r1, r0, #4
+ ldr r2, [r5, r1]
+ mov r1, #0
+ mvn r1, r1
+ mul r1, r2
+ add r0, r0, #4
+ str r1, [r5, r0]
+_0222EFE4:
+ ldr r0, _0222F100 ; =0x00000808
+ mov r2, #0xa
+ ldr r0, [r5, r0]
+ lsl r2, r2, #0xa
+ asr r6, r0, #0xc
+ add r0, r6, #0
+ add r0, #0x5a
+ lsl r1, r0, #2
+ ldr r0, _0222F104 ; =0x020EDF50
+ mov r3, #0
+ ldr r0, [r0, r1]
+ asr r1, r0, #0x1f
+ blx _ll_mul
+ ldr r4, _0222F108 ; =0x00000818
+ mov r3, #0
+ ldrsh r2, [r5, r4]
+ sub r4, #0x18
+ add r4, r0, r4
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r4, #0xc
+ orr r1, r0
+ add r4, r2, r1
+ mov r2, #0xa
+ ldr r0, _0222F104 ; =0x020EDF50
+ lsl r1, r6, #2
+ ldr r0, [r0, r1]
+ lsl r2, r2, #0xa
+ asr r1, r0, #0x1f
+ blx _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r6, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r6, #0xc
+ orr r1, r0
+ lsl r0, r2, #1
+ mov r7, #9
+ sub r6, r1, r0
+ lsl r7, r7, #6
+ add r0, r2, #0
+ sub r1, r4, r7
+ add r0, #0x26
+ strh r1, [r5, r0]
+ lsl r0, r6, #0x10
+ add r1, r2, #0
+ asr r0, r0, #0x10
+ add r1, #0x28
+ strh r0, [r5, r1]
+ add r1, r2, #0
+ add r1, #0x2a
+ strh r3, [r5, r1]
+ add r1, r2, #0
+ add r4, r4, r7
+ add r1, #0x2c
+ strh r4, [r5, r1]
+ add r1, r2, #0
+ add r1, #0x2e
+ strh r0, [r5, r1]
+ add r0, r2, #0
+ add r0, #0x30
+ add r2, #0x14
+ strh r3, [r5, r0]
+ ldr r0, [r5, r2]
+ add r1, r3, #0
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ add r2, r3, #0
+ ldr r0, [r5]
+ mov r3, #2
+ blx G3B_PolygonAttr
+ ldr r0, [r5]
+ mov r1, #1
+ blx G3B_Begin
+ mov r1, #0x81
+ lsl r1, r1, #4
+ ldr r1, [r5, r1]
+ ldr r0, [r5]
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ blx G3B_Color
+ ldr r3, _0222F10C ; =0x0000081A
+ ldr r0, [r5]
+ add r2, r3, #2
+ ldrsh r1, [r5, r3]
+ add r3, r3, #4
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r5, r3]
+ blx G3B_Vtx
+ mov r3, #0x82
+ lsl r3, r3, #4
+ add r2, r3, #2
+ ldrsh r1, [r5, r3]
+ add r3, r3, #4
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r5, r3]
+ ldr r0, [r5]
+ blx G3B_Vtx
+ ldr r3, _0222F110 ; =0x0000082C
+ ldr r0, [r5]
+ add r2, r3, #2
+ ldrsh r1, [r5, r3]
+ add r3, r3, #4
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r5, r3]
+ blx G3B_Vtx
+ ldr r3, _0222F114 ; =0x00000826
+ ldr r0, [r5]
+ add r2, r3, #2
+ ldrsh r1, [r5, r3]
+ add r3, r3, #4
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r5, r3]
+ blx G3B_Vtx
+ ldr r0, [r5]
+ blx G3B_End
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0222F0EC:
+ ldr r1, _0222F118 ; =0x0222F960
+ ldr r2, [r1, #4]
+ sub r2, r2, #1
+ str r2, [r1, #4]
+ bl FUN_0200CAB4
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222F0FC: .word 0x0222F940
+_0222F100: .word 0x00000808
+_0222F104: .word 0x020EDF50
+_0222F108: .word 0x00000818
+_0222F10C: .word 0x0000081A
+_0222F110: .word 0x0000082C
+_0222F114: .word 0x00000826
+_0222F118: .word 0x0222F960
+
+ thumb_func_start MOD69_0222F11C
+MOD69_0222F11C: ; 0x0222F11C
+ push {r3, lr}
+ cmp r0, #0
+ beq _0222F142
+ bl FUN_0201B6C8
+ add r3, r0, #0
+ ldr r0, _0222F144 ; =0x04000444
+ mov r1, #0
+ str r1, [r0]
+ ldr r2, _0222F148 ; =0x00000814
+ add r1, r3, #0
+ ldr r2, [r3, r2]
+ mov r0, #3
+ add r1, #0x14
+ bl MI_SendGXCommand
+ ldr r0, _0222F14C ; =0x04000448
+ mov r1, #1
+ str r1, [r0]
+_0222F142:
+ pop {r3, pc}
+ .align 2, 0
+_0222F144: .word 0x04000444
+_0222F148: .word 0x00000814
+_0222F14C: .word 0x04000448
+
+ thumb_func_start MOD69_0222F150
+MOD69_0222F150: ; 0x0222F150
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r1, _0222F190 ; =0x0222F940
+ mov r2, #0
+ str r2, [r1]
+ cmp r0, #0
+ beq _0222F18C
+ bl FUN_0201B6C8
+ add r6, r0, #0
+ ldr r0, _0222F194 ; =0x0000083C
+ mov r4, #0
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ ble _0222F186
+ ldr r7, _0222F194 ; =0x0000083C
+ add r5, r6, #0
+_0222F170:
+ ldr r0, _0222F198 ; =0x00000818
+ ldr r0, [r5, r0]
+ bl FUN_0201B6C8
+ bl FUN_02016A18
+ ldr r0, [r6, r7]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blt _0222F170
+_0222F186:
+ add r0, r6, #0
+ bl FUN_02016A18
+_0222F18C:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222F190: .word 0x0222F940
+_0222F194: .word 0x0000083C
+_0222F198: .word 0x00000818
+
+ thumb_func_start MOD69_0222F19C
+MOD69_0222F19C: ; 0x0222F19C
+ ldr r0, _0222F1AC ; =0x0222F960
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ bne _0222F1A8
+ mov r0, #1
+ bx lr
+_0222F1A8:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_0222F1AC: .word 0x0222F960
+
+ thumb_func_start MOD69_0222F1B0
+MOD69_0222F1B0: ; 0x0222F1B0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ ldr r1, _0222F344 ; =0x00008D64
+ mov r0, #0x3f
+ bl FUN_02016998
+ str r0, [sp, #0x28]
+ bl FUN_0201B9EC
+ str r0, [sp, #0x20]
+ ldr r0, _0222F348 ; =0x00003594
+ bl FUN_0201B9E0
+ mov r0, #0
+ ldr r4, [sp, #0x28]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x1c]
+ add r0, r4, #0
+ str r0, [sp, #0x18]
+ add r0, #0x34
+ str r0, [sp, #0x18]
+ add r0, r4, #0
+ str r0, [sp, #0x14]
+ add r0, #0x28
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ str r0, [sp, #0x10]
+ add r0, #0x2e
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ str r0, [sp, #0xc]
+_0222F1EE:
+ ldr r0, [sp, #0x1c]
+ lsl r1, r0, #2
+ ldr r0, _0222F34C ; =0x0222F8AC
+ ldr r0, [r0, r1]
+ str r0, [r4, #8]
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #1
+ str r0, [sp, #0x1c]
+ cmp r0, #8
+ blo _0222F206
+ mov r0, #0
+ str r0, [sp, #0x1c]
+_0222F206:
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x13
+ sub r1, r1, r2
+ mov r0, #0x13
+ ror r1, r0
+ mov r0, #1
+ add r1, r2, r1
+ lsl r0, r0, #0xc
+ sub r0, r1, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #8]
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x13
+ sub r1, r1, r2
+ mov r0, #0x13
+ ror r1, r0
+ mov r0, #1
+ add r1, r2, r1
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #4]
+ bl FUN_0201B9EC
+ mov r1, #0x29
+ lsl r1, r1, #4
+ blx _s32_div_f
+ mov r0, #0x52
+ lsl r0, r0, #2
+ sub r0, r1, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ ldr r5, _0222F350 ; =0x0222F800
+ str r0, [sp]
+ mov r7, #0
+ add r6, r4, #0
+_0222F25C:
+ mov r0, #0
+ ldrsh r1, [r5, r0]
+ ldr r0, [sp, #8]
+ add r0, r0, r1
+ strh r0, [r6, #0x10]
+ mov r0, #2
+ ldrsh r1, [r5, r0]
+ ldr r0, [sp, #4]
+ add r0, r0, r1
+ strh r0, [r6, #0x12]
+ mov r0, #4
+ ldrsh r1, [r5, r0]
+ ldr r0, [sp]
+ add r0, r0, r1
+ strh r0, [r6, #0x14]
+ mov r0, #0
+ strh r0, [r4, #0x28]
+ strh r0, [r4, #0x2a]
+ strh r0, [r4, #0x2c]
+ bl FUN_0201B9EC
+ lsr r1, r0, #0x1f
+ lsl r2, r0, #0x17
+ sub r2, r2, r1
+ mov r0, #0x17
+ ror r2, r0
+ mov r0, #2
+ add r1, r1, r2
+ lsl r0, r0, #8
+ add r0, r1, r0
+ strh r0, [r4, #0x2e]
+ bl FUN_0201B9EC
+ lsr r1, r0, #0x1f
+ lsl r2, r0, #0x17
+ sub r2, r2, r1
+ mov r0, #0x17
+ ror r2, r0
+ mov r0, #2
+ add r1, r1, r2
+ lsl r0, r0, #8
+ add r0, r1, r0
+ strh r0, [r4, #0x30]
+ bl FUN_0201B9EC
+ lsr r1, r0, #0x1f
+ lsl r2, r0, #0x17
+ sub r2, r2, r1
+ mov r0, #0x17
+ ror r2, r0
+ mov r0, #2
+ add r1, r1, r2
+ lsl r0, r0, #8
+ add r0, r1, r0
+ strh r0, [r4, #0x32]
+ ldr r0, [sp, #0x18]
+ blx MTX_Identity44_
+ add r7, r7, #1
+ add r5, r5, #6
+ add r6, r6, #6
+ cmp r7, #4
+ blt _0222F25C
+ bl FUN_0201B9EC
+ mov r1, #7
+ and r0, r1
+ sub r5, r0, #1
+ cmp r0, #0
+ beq _0222F2FA
+_0222F2E8:
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0x14]
+ blx VEC_Fx16Add
+ add r0, r5, #0
+ sub r5, r5, #1
+ cmp r0, #0
+ bne _0222F2E8
+_0222F2FA:
+ ldr r0, [sp, #0x18]
+ add r4, #0x70
+ add r0, #0x70
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x14]
+ add r0, #0x70
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ add r0, #0x70
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0xc]
+ add r0, #0x70
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x24]
+ add r0, r0, #1
+ str r0, [sp, #0x24]
+ cmp r0, #0x30
+ bge _0222F320
+ b _0222F1EE
+_0222F320:
+ ldr r0, [sp, #0x20]
+ bl FUN_0201B9E0
+ ldr r0, [sp, #0x28]
+ mov r2, #0
+ str r2, [r0]
+ ldr r1, _0222F354 ; =0x00008D20
+ str r2, [r0, #4]
+ str r2, [r0, r1]
+ ldr r0, _0222F358 ; =0x04000440
+ mov r2, #2
+ str r2, [r0]
+ ldr r0, _0222F35C ; =MOD69_0222F388
+ ldr r1, [sp, #0x28]
+ bl FUN_0200CA44
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222F344: .word 0x00008D64
+_0222F348: .word 0x00003594
+_0222F34C: .word 0x0222F8AC
+_0222F350: .word 0x0222F800
+_0222F354: .word 0x00008D20
+_0222F358: .word 0x04000440
+_0222F35C: .word MOD69_0222F388
+
+ thumb_func_start MOD69_0222F360
+MOD69_0222F360: ; 0x0222F360
+ push {r4, lr}
+ add r4, r0, #0
+ beq _0222F374
+ bl FUN_0201B6C8
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+_0222F374:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD69_0222F378
+MOD69_0222F378: ; 0x0222F378
+ push {r3, lr}
+ cmp r0, #0
+ beq _0222F386
+ bl FUN_0201B6C8
+ mov r1, #1
+ str r1, [r0]
+_0222F386:
+ pop {r3, pc}
+
+ thumb_func_start MOD69_0222F388
+MOD69_0222F388: ; 0x0222F388
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x68
+ add r7, r1, #0
+ ldr r0, [r7]
+ cmp r0, #0
+ bne _0222F396
+ b _0222F60C
+_0222F396:
+ ldr r1, _0222F610 ; =0x00001508
+ mov r2, #0x1e
+ add r0, r7, r1
+ add r1, #0x14
+ add r1, r7, r1
+ lsl r2, r2, #0xa
+ blx G3_BeginMakeDL
+ mov r0, #0x3f
+ str r0, [sp]
+ mov r0, #0x1f
+ str r0, [sp, #4]
+ ldr r0, _0222F610 ; =0x00001508
+ mov r1, #3
+ mov r2, #0
+ add r0, r7, r0
+ add r3, r1, #0
+ str r2, [sp, #8]
+ blx G3B_PolygonAttr
+ ldr r0, _0222F610 ; =0x00001508
+ mov r2, #0
+ ldr r1, _0222F614 ; =0x00005294
+ add r0, r7, r0
+ add r3, r2, #0
+ blx G3B_MaterialColorDiffAmb
+ mov r0, #0
+ str r0, [sp, #0x1c]
+ add r0, r7, #0
+ str r0, [sp, #0x18]
+ add r0, #0x28
+ str r0, [sp, #0x18]
+ add r0, r7, #0
+ str r0, [sp, #0x14]
+ add r0, #0x2e
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r5, r7, #0
+ str r5, [sp, #0xc]
+ add r5, #0x34
+ add r4, r7, #0
+ str r0, [sp, #0x10]
+ str r5, [sp, #0xc]
+_0222F3EE:
+ mov r0, #0x24
+ ldrsh r0, [r4, r0]
+ sub r0, #0x55
+ strh r0, [r4, #0x24]
+ mov r0, #0x24
+ ldrsh r1, [r4, r0]
+ ldr r0, _0222F618 ; =0xFFFFF000
+ cmp r1, r0
+ bgt _0222F408
+ mov r0, #2
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ strh r0, [r4, #0x24]
+_0222F408:
+ mov r0, #0x24
+ ldrsh r1, [r4, r0]
+ ldr r0, _0222F61C ; =0x0000019A
+ ldr r2, [sp, #0x18]
+ sub r0, r1, r0
+ strh r0, [r4, #0x12]
+ mov r0, #0x12
+ ldrsh r0, [r4, r0]
+ ldr r1, [sp, #0x14]
+ strh r0, [r4, #0x18]
+ mov r0, #0x24
+ ldrsh r0, [r4, r0]
+ strh r0, [r4, #0x1e]
+ ldr r0, [sp, #0x10]
+ blx VEC_Fx16Add
+ ldr r0, [sp, #0xc]
+ blx MTX_Identity44_
+ mov r0, #0x14
+ ldrsh r0, [r4, r0]
+ mov r2, #0x10
+ mov r3, #0x12
+ str r0, [sp]
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ ldr r1, [sp, #0xc]
+ add r0, r5, #0
+ blx MTX_TransApply44
+ ldr r0, _0222F610 ; =0x00001508
+ ldr r2, _0222F620 ; =0x00002D6B
+ add r0, r7, r0
+ mov r1, #0
+ blx G3B_LightColor
+ ldr r2, [r4, #8]
+ ldr r0, _0222F610 ; =0x00001508
+ lsl r2, r2, #0x10
+ add r0, r7, r0
+ mov r1, #1
+ lsr r2, r2, #0x10
+ blx G3B_LightColor
+ mov r1, #0
+ add r0, sp, #0x20
+ strh r1, [r0]
+ ldr r1, _0222F624 ; =0x00000FFF
+ strh r1, [r0, #2]
+ ldr r1, _0222F628 ; =0xFFFFF001
+ strh r1, [r0, #4]
+ add r0, sp, #0x20
+ add r1, r0, #0
+ blx VEC_Fx16Normalize
+ add r3, sp, #0x20
+ add r1, sp, #0x20
+ mov r0, #4
+ ldrsh r0, [r1, r0]
+ mov r1, #0
+ add r2, r1, #0
+ str r0, [sp]
+ ldr r0, _0222F610 ; =0x00001508
+ ldrsh r2, [r3, r2]
+ add r6, r3, #0
+ mov r3, #2
+ ldrsh r3, [r6, r3]
+ add r0, r7, r0
+ blx G3B_LightVector
+ mov r1, #0
+ add r0, r6, #0
+ strh r1, [r0]
+ ldr r1, _0222F628 ; =0xFFFFF001
+ strh r1, [r0, #2]
+ lsr r1, r1, #0x14
+ strh r1, [r0, #4]
+ add r0, sp, #0x20
+ add r1, r0, #0
+ blx VEC_Fx16Normalize
+ add r1, r6, #0
+ mov r0, #4
+ ldrsh r0, [r1, r0]
+ add r3, r6, #0
+ mov r2, #0
+ str r0, [sp]
+ ldrsh r2, [r3, r2]
+ mov r3, #2
+ ldr r0, _0222F610 ; =0x00001508
+ ldrsh r3, [r6, r3]
+ add r0, r7, r0
+ mov r1, #1
+ blx G3B_LightVector
+ ldrh r0, [r4, #0x28]
+ ldr r3, _0222F62C ; =0x020FFA38
+ asr r0, r0, #4
+ lsl r1, r0, #2
+ ldr r0, _0222F62C ; =0x020FFA38
+ add r2, r0, r1
+ ldrsh r1, [r3, r1]
+ mov r3, #2
+ ldrsh r2, [r2, r3]
+ add r0, sp, #0x28
+ bl MTX_RotX44_
+ ldr r2, [sp, #0xc]
+ add r0, sp, #0x28
+ add r1, r5, #0
+ blx MTX_Concat44
+ ldrh r0, [r4, #0x2a]
+ ldr r3, _0222F62C ; =0x020FFA38
+ asr r0, r0, #4
+ lsl r1, r0, #2
+ ldr r0, _0222F62C ; =0x020FFA38
+ add r2, r0, r1
+ ldrsh r1, [r3, r1]
+ mov r3, #2
+ ldrsh r2, [r2, r3]
+ add r0, sp, #0x28
+ bl MTX_RotY44_
+ ldr r2, [sp, #0xc]
+ add r0, sp, #0x28
+ add r1, r5, #0
+ blx MTX_Concat44
+ ldrh r0, [r4, #0x2c]
+ ldr r3, _0222F62C ; =0x020FFA38
+ asr r0, r0, #4
+ lsl r1, r0, #2
+ ldr r0, _0222F62C ; =0x020FFA38
+ add r2, r0, r1
+ ldrsh r1, [r3, r1]
+ mov r3, #2
+ ldrsh r2, [r2, r3]
+ add r0, sp, #0x28
+ bl MTX_RotZ44_
+ ldr r2, [sp, #0xc]
+ add r0, sp, #0x28
+ add r1, r5, #0
+ blx MTX_Concat44
+ ldr r2, [r4, #8]
+ ldr r0, _0222F610 ; =0x00001508
+ lsl r2, r2, #0x10
+ ldr r1, _0222F630 ; =0x00007FFF
+ add r0, r7, r0
+ lsr r2, r2, #0x10
+ mov r3, #0
+ blx G3B_MaterialColorSpecEmi
+ ldr r0, _0222F610 ; =0x00001508
+ add r0, r7, r0
+ blx G3B_PushMtx
+ ldr r0, _0222F610 ; =0x00001508
+ add r1, r5, #0
+ add r0, r7, r0
+ blx G3B_LoadMtx44
+ ldr r0, _0222F610 ; =0x00001508
+ mov r1, #1
+ add r0, r7, r0
+ blx G3B_Begin
+ ldr r0, _0222F610 ; =0x00001508
+ mov r1, #0
+ ldr r3, _0222F628 ; =0xFFFFF001
+ add r0, r7, r0
+ add r2, r1, #0
+ blx G3B_Normal
+ mov r1, #0x9b
+ ldr r0, _0222F610 ; =0x00001508
+ mvn r1, r1
+ add r2, r1, #0
+ add r0, r7, r0
+ sub r2, #0x31
+ mov r3, #0
+ blx G3B_Vtx
+ ldr r0, _0222F610 ; =0x00001508
+ mov r2, #0xcc
+ add r0, r7, r0
+ mov r1, #0x9c
+ mvn r2, r2
+ mov r3, #0
+ blx G3B_Vtx
+ ldr r0, _0222F610 ; =0x00001508
+ mov r1, #0x9c
+ add r0, r7, r0
+ mov r2, #0xcd
+ mov r3, #0
+ blx G3B_Vtx
+ ldr r0, _0222F610 ; =0x00001508
+ mov r1, #0x9b
+ add r0, r7, r0
+ mvn r1, r1
+ mov r2, #0xcd
+ mov r3, #0
+ blx G3B_Vtx
+ ldr r0, _0222F610 ; =0x00001508
+ add r0, r7, r0
+ blx G3B_End
+ ldr r0, _0222F610 ; =0x00001508
+ mov r1, #1
+ add r0, r7, r0
+ blx G3B_PopMtx
+ ldr r0, [sp, #0x18]
+ add r4, #0x70
+ add r0, #0x70
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x14]
+ add r5, #0x70
+ add r0, #0x70
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ add r0, #0x70
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0xc]
+ add r0, #0x70
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #1
+ str r0, [sp, #0x1c]
+ cmp r0, #0x30
+ bge _0222F5E2
+ b _0222F3EE
+_0222F5E2:
+ ldr r0, _0222F610 ; =0x00001508
+ add r0, r7, r0
+ blx G3_EndMakeDL
+ ldr r1, _0222F634 ; =0x00008D1C
+ str r0, [r7, r1]
+ ldr r0, _0222F638 ; =0x0000151C
+ ldr r1, [r7, r1]
+ add r0, r7, r0
+ blx DC_FlushRange
+ ldr r0, _0222F634 ; =0x00008D1C
+ ldr r1, [r7, r0]
+ mov r0, #0x1e
+ lsl r0, r0, #0xa
+ cmp r1, r0
+ blo _0222F608
+ bl ErrorHandling
+_0222F608:
+ mov r0, #1
+ str r0, [r7, #4]
+_0222F60C:
+ add sp, #0x68
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222F610: .word 0x00001508
+_0222F614: .word 0x00005294
+_0222F618: .word 0xFFFFF000
+_0222F61C: .word 0x0000019A
+_0222F620: .word 0x00002D6B
+_0222F624: .word 0x00000FFF
+_0222F628: .word 0xFFFFF001
+_0222F62C: .word 0x020FFA38
+_0222F630: .word 0x00007FFF
+_0222F634: .word 0x00008D1C
+_0222F638: .word 0x0000151C
+
+ thumb_func_start MOD69_0222F63C
+MOD69_0222F63C: ; 0x0222F63C
+ push {r4, lr}
+ cmp r0, #0
+ beq _0222F66C
+ bl FUN_0201B6C8
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _0222F66C
+ ldr r0, _0222F670 ; =0x04000444
+ mov r1, #0
+ str r1, [r0]
+ ldr r2, _0222F674 ; =0x00008D1C
+ ldr r1, _0222F678 ; =0x0000151C
+ ldr r2, [r4, r2]
+ mov r0, #3
+ add r1, r4, r1
+ bl MI_SendGXCommand
+ ldr r0, _0222F67C ; =0x04000448
+ mov r1, #1
+ str r1, [r0]
+ mov r0, #0
+ str r0, [r4, #4]
+_0222F66C:
+ pop {r4, pc}
+ nop
+_0222F670: .word 0x04000444
+_0222F674: .word 0x00008D1C
+_0222F678: .word 0x0000151C
+_0222F67C: .word 0x04000448
+
+ thumb_func_start MOD69_0222F680
+MOD69_0222F680: ; 0x0222F680
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ str r1, [r4]
+ add r5, r3, #0
+ sub r0, r2, r1
+ add r1, r5, #0
+ str r2, [r4, #8]
+ blx _s32_div_f
+ str r0, [r4, #4]
+ sub r0, r5, #1
+ str r0, [r4, #0xc]
+ mov r0, #0
+ str r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD69_0222F6A0
+MOD69_0222F6A0: ; 0x0222F6A0
+ ldr r1, [r0, #0xc]
+ cmp r1, #0
+ beq _0222F6B6
+ sub r1, r1, #1
+ str r1, [r0, #0xc]
+ ldr r2, [r0]
+ ldr r1, [r0, #4]
+ add r1, r2, r1
+ str r1, [r0]
+ add r0, r1, #0
+ bx lr
+_0222F6B6:
+ mov r1, #1
+ str r1, [r0, #0x10]
+ ldr r0, [r0, #8]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD69_0222F6C0
+MOD69_0222F6C0: ; 0x0222F6C0
+ ldr r0, [r0, #0x10]
+ bx lr
+
+ thumb_func_start MOD69_0222F6C4
+MOD69_0222F6C4: ; 0x0222F6C4
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r6, r2, #0
+ bl FUN_020669D4
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0x79
+ mov r2, #0
+ bl FUN_020671BC
+ sub r1, r0, #1
+ cmp r1, #2
+ bhi _0222F6E8
+ mov r5, #4
+ b _0222F77A
+_0222F6E8:
+ sub r1, r0, #4
+ cmp r1, #1
+ bhi _0222F6F2
+ mov r5, #3
+ b _0222F77A
+_0222F6F2:
+ cmp r0, #0xf
+ bne _0222F6FA
+ mov r5, #5
+ b _0222F77A
+_0222F6FA:
+ add r0, r4, #0
+ mov r1, #0x6e
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _0222F70C
+ mov r5, #6
+ b _0222F77A
+_0222F70C:
+ add r0, r6, #0
+ bl FUN_020239BC
+ add r7, r0, #0
+ add r0, r4, #0
+ mov r1, #7
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r7, r0
+ beq _0222F726
+ mov r5, #2
+ b _0222F77A
+_0222F726:
+ ldr r1, _0222F788 ; =0x00001B54
+ add r0, r6, #0
+ ldr r1, [r5, r1]
+ bl FUN_02023990
+ ldr r2, _0222F78C ; =0x00001B58
+ add r0, r4, #0
+ ldr r2, [r5, r2]
+ mov r1, #0x90
+ bl FUN_020671BC
+ ldr r1, _0222F788 ; =0x00001B54
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ bl FUN_02021CE0
+ cmp r0, #0
+ beq _0222F750
+ mov r5, #2
+ b _0222F77A
+_0222F750:
+ add r0, r4, #0
+ mov r1, #0x98
+ mov r2, #0
+ bl FUN_020671BC
+ mov r1, #0x7d
+ lsl r1, r1, #4
+ cmp r0, r1
+ blo _0222F766
+ mov r5, #6
+ b _0222F77A
+_0222F766:
+ add r0, r4, #0
+ mov r1, #0x92
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ bne _0222F778
+ mov r5, #0
+ b _0222F77A
+_0222F778:
+ mov r5, #1
+_0222F77A:
+ ldr r1, [sp]
+ add r0, r4, #0
+ bl FUN_02066A20
+ add r0, r5, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222F788: .word 0x00001B54
+_0222F78C: .word 0x00001B58
+
+ .section .data
+ .incbin "baserom.nds", 0x2c49d0, 0x1d0
+
+ .section .bss
+ .space 0x20 \ No newline at end of file
diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt
index ddfc29ef..4cca1421 100644
--- a/arm9/undefined_syms.txt
+++ b/arm9/undefined_syms.txt
@@ -8,6 +8,7 @@ FUN_0222E360 = 0x0222E360;
FUN_0222E3A0 = 0x0222E3A0;
FUN_0222E7E8 = 0x0222E7E8;
FUN_0222E874 = 0x0222E874;
+FUN_0222EC60 = 0x0222EC60;
FUN_0222ED34 = 0x0222ED34;
FUN_0222EDBC = 0x0222EDBC;
FUN_0222F440 = 0x0222F440;