diff options
| -rw-r--r-- | arm9/arm9.lcf | 27 | ||||
| -rw-r--r-- | arm9/asm/arm9_itcm.s | 4 | ||||
| -rw-r--r-- | arm9/global.inc | 36 | ||||
| -rw-r--r-- | arm9/modules/69/asm/module_69.s | 4143 | ||||
| -rw-r--r-- | arm9/undefined_syms.txt | 1 | 
5 files changed, 4205 insertions, 6 deletions
| diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 43d650a3..851d2493 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -324,7 +324,7 @@ SECTIONS {  	{  		. = ALIGN(32);  		SDK_AUTOLOAD.ITCM.START = .; -		arm9_itcm.o (.itcm) +		arm9_itcm.o (.text)  		. = ALIGN(32);  		SDK_AUTOLOAD.ITCM.END = .;  		SDK_AUTOLOAD.ITCM.SIZE = SDK_AUTOLOAD.ITCM.END - SDK_AUTOLOAD.ITCM.START; @@ -2716,7 +2716,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; @@ -2726,7 +2736,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; @@ -3835,7 +3846,15 @@ SECTIONS {  		WRITEW 68;  		WRITEW 0; -		OVERLAY_TABLE(MODULE_69, 69) +		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) diff --git a/arm9/asm/arm9_itcm.s b/arm9/asm/arm9_itcm.s index 79c0de28..7db3d194 100644 --- a/arm9/asm/arm9_itcm.s +++ b/arm9/asm/arm9_itcm.s @@ -1,6 +1,6 @@  	.include "asm/macros.inc"  	.include "global.inc" -	.section .itcm +	.section .text  	; OS  	arm_func_start OS_IrqHandler @@ -125,7 +125,7 @@ _01FF81A8: .word OSi_ThreadInfo  _01FF81AC: .word CP_SaveContext  _01FF81B0: .word CP_RestoreContext -	.section .itcm +	.section .text  	arm_func_start OSi_DoBoot  OSi_DoBoot: ; 0x01FF81B4  	mov ip, #0x04000000 diff --git a/arm9/global.inc b/arm9/global.inc index bc1908eb..117dbdb2 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
 @@ -3010,6 +3024,7 @@  .extern FUN_0222E3A0
  .extern FUN_0222E7E8
  .extern FUN_0222E874
 +.extern FUN_0222EC60
  .extern FUN_0222ED34
  .extern FUN_0222EDBC
  .extern FUN_0222F440
 @@ -3275,6 +3290,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
 @@ -3283,6 +3311,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
 @@ -3418,6 +3448,7 @@  .extern MI_HBlankDmaCopy16
  .extern MI_HBlankDmaCopy32
  .extern MI_Init
 +.extern MI_SendGXCommand
  .extern MI_SendGXCommandAsync
  .extern MI_SendGXCommandAsyncFast
  .extern MI_SetWramBank
 @@ -3454,12 +3485,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
 @@ -3754,6 +3789,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..8d8b5870 --- /dev/null +++ b/arm9/modules/69/asm/module_69.s @@ -0,0 +1,4143 @@ +	.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 +	bl G3X_ResetMtxStack +	mov r1, #0 +	mov r0, #0x11 +	add r2, r1, #0 +	bl 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] +	bl FUN_020BB1C0 +	mov r1, #0 +	mov r0, #0x11 +	add r2, r1, #0 +	bl 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] +	bl 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 +	bl FUN_020BB7F4 +	bl 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] +	bl 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 +	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 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] +	bl 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 +	bl FUN_020B0FC0 +	mov r0, #0 +	str r0, [sp] +	mov r1, #0x80 +	str r1, [sp, #4] +	str r0, [sp, #8] +	mov r3, #0x20 +	str r3, [sp, #0xc] +	mov r2, #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 +	bl FUN_020B1A24 +	add r0, sp, #0x48 +	bl FUN_020B19DC +	ldr r0, [sp, #0x44] +	add r1, r7, #0 +	mov r2, #1 +	add r3, sp, #0x5c +	bl FUN_020B1768 +	ldr r0, [sp, #0x40] +	add r1, r6, #0 +	mov r2, #1 +	add r3, sp, #0x48 +	bl 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 +	bl DC_FlushRange +	ldr r2, [sp, #0x34] +	add r0, r4, #0 +	add r1, r7, #0 +	bl 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 +	bl DC_FlushRange +	ldr r1, [sp, #0x1c] +	ldr r2, [sp, #0x3c] +	add r0, r4, #0 +	bl 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 +	bl FUN_020B1A24 +	add r0, sp, #0x48 +	bl FUN_020B19DC +	mov r1, #0x96 +	ldr r0, [sp, #0x44] +	lsl r1, r1, #8 +	mov r2, #1 +	add r3, sp, #0x5c +	bl FUN_020B1768 +	ldr r0, [sp, #0x40] +	mov r1, #0xc0 +	mov r2, #1 +	add r3, sp, #0x48 +	bl 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 +	bl 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 +	bl 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 +	bl 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 +	bl 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 +	bl G3_BeginMakeDL +	ldr r1, _0222EE74 ; =0x00007FFF +	ldr r2, _0222EE78 ; =0x00004210 +	add r0, r4, #0 +	mov r3, #0 +	bl G3B_MaterialColorDiffAmb +	mov r2, #0 +	ldr r1, _0222EE78 ; =0x00004210 +	add r0, r4, #0 +	add r3, r2, #0 +	bl 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 +	bl G3_EndMakeDL +	ldr r1, _0222EEB4 ; =0x00000814 +	str r0, [r4, r1] +	add r0, r4, #0 +	ldr r1, [r4, r1] +	add r0, #0x14 +	bl 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 +	bl _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 +	bl _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 +	bl G3B_PolygonAttr +	ldr r0, [r5] +	mov r1, #1 +	bl G3B_Begin +	mov r1, #0x81 +	lsl r1, r1, #4 +	ldr r1, [r5, r1] +	ldr r0, [r5] +	lsl r1, r1, #0x10 +	lsr r1, r1, #0x10 +	bl 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] +	bl 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] +	bl 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] +	bl 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] +	bl G3B_Vtx +	ldr r0, [r5] +	bl 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 +	bl _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] +	bl 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] +	bl 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 +	bl 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] +	bl G3B_PolygonAttr +	ldr r0, _0222F610 ; =0x00001508 +	mov r2, #0 +	ldr r1, _0222F614 ; =0x00005294 +	add r0, r7, r0 +	add r3, r2, #0 +	bl 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] +	bl VEC_Fx16Add +	ldr r0, [sp, #0xc] +	bl 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 +	bl MTX_TransApply44 +	ldr r0, _0222F610 ; =0x00001508 +	ldr r2, _0222F620 ; =0x00002D6B +	add r0, r7, r0 +	mov r1, #0 +	bl 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 +	bl 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 +	bl 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 +	bl 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 +	bl 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 +	bl 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 +	bl 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 +	bl 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 +	bl 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 +	bl G3B_MaterialColorSpecEmi +	ldr r0, _0222F610 ; =0x00001508 +	add r0, r7, r0 +	bl G3B_PushMtx +	ldr r0, _0222F610 ; =0x00001508 +	add r1, r5, #0 +	add r0, r7, r0 +	bl G3B_LoadMtx44 +	ldr r0, _0222F610 ; =0x00001508 +	mov r1, #1 +	add r0, r7, r0 +	bl G3B_Begin +	ldr r0, _0222F610 ; =0x00001508 +	mov r1, #0 +	ldr r3, _0222F628 ; =0xFFFFF001 +	add r0, r7, r0 +	add r2, r1, #0 +	bl 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 +	bl G3B_Vtx +	ldr r0, _0222F610 ; =0x00001508 +	mov r2, #0xcc +	add r0, r7, r0 +	mov r1, #0x9c +	mvn r2, r2 +	mov r3, #0 +	bl G3B_Vtx +	ldr r0, _0222F610 ; =0x00001508 +	mov r1, #0x9c +	add r0, r7, r0 +	mov r2, #0xcd +	mov r3, #0 +	bl G3B_Vtx +	ldr r0, _0222F610 ; =0x00001508 +	mov r1, #0x9b +	add r0, r7, r0 +	mvn r1, r1 +	mov r2, #0xcd +	mov r3, #0 +	bl G3B_Vtx +	ldr r0, _0222F610 ; =0x00001508 +	add r0, r7, r0 +	bl G3B_End +	ldr r0, _0222F610 ; =0x00001508 +	mov r1, #1 +	add r0, r7, r0 +	bl 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 +	bl G3_EndMakeDL +	ldr r1, _0222F634 ; =0x00008D1C +	str r0, [r7, r1] +	ldr r0, _0222F638 ; =0x0000151C +	ldr r1, [r7, r1] +	add r0, r7, r0 +	bl 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] +	bl _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 .rodata +    ; 0x0222F790 +    .incbin "baserom.nds", 0x2c49d0, 0x1ac + +    .section .data +    ; 0x0222F940 +    .word 0x00000001 + +    .section .bss +    .space 0x20 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; | 
