pokeheartgold/asm/overlay_96.s
2023-12-28 11:56:03 -05:00

110398 lines
1.9 MiB

.include "asm/macros.inc"
.include "overlay_96.inc"
.include "global.inc"
.text
thumb_func_start PokeathlonCourseApplication_OvyInit
PokeathlonCourseApplication_OvyInit: ; 0x021E5900
push {r3, r4, r5, r6, lr}
sub sp, #0x14
mov r2, #0x72
add r5, r0, #0
mov r0, #3
mov r1, #0x5c
lsl r2, r2, #0xc
bl CreateHeap
mov r1, #0xd7
add r0, r5, #0
lsl r1, r1, #4
mov r2, #0x5c
bl OverlayManager_CreateAndGetData
mov r2, #0xd7
mov r1, #0
lsl r2, r2, #4
add r4, r0, #0
bl MI_CpuFill8
mov r0, #0xa1
mov r1, #0x5c
lsl r0, r0, #2
str r1, [r4, r0]
add r0, r5, #0
bl OverlayManager_GetArgs
mov r2, #0x7e
lsl r2, r2, #2
add r5, sp, #4
ldr r6, _021E5A28 ; =ov96_0221A7E4
str r0, [r4, r2]
add r3, r5, #0
ldmia r6!, {r0, r1}
stmia r5!, {r0, r1}
ldmia r6!, {r0, r1}
stmia r5!, {r0, r1}
add r1, r4, r2
add r0, r3, #0
mov r2, #0x5c
bl OverlayManager_New
mov r1, #0xa
lsl r1, r1, #6
str r0, [r4, r1]
add r0, r1, #0
mov r5, #0
sub r0, #0xa0
str r5, [r4, r0]
add r0, r1, #0
sub r0, #0x88
ldr r0, [r4, r0]
ldr r0, [r0, #4]
cmp r0, #1
bne _021E597E
mov r5, #1
bl sub_02037454
ldr r1, _021E5A2C ; =0x000001EE
strb r0, [r4, r1]
mov r1, #4
b _021E5986
_021E597E:
mov r0, #1
sub r1, #0x92
strb r0, [r4, r1]
mov r1, #3
_021E5986:
ldr r0, _021E5A30 ; =0x0000072A
strb r1, [r4, r0]
bl ov96_021E8A24
add r6, r0, #0
bl ov96_021E8A2C
add r1, r0, #0
mov r0, #0xa1
lsl r0, r0, #2
ldr r0, [r4, r0]
add r2, r4, #0
str r0, [sp]
add r0, r6, #0
add r3, r5, #0
bl ov96_021E8770
mov r1, #0xa2
lsl r1, r1, #2
str r0, [r4, r1]
mov r1, #0xf1
lsl r1, r1, #2
ldr r0, _021E5A34 ; =ov96_0221A984
add r1, r4, r1
bl ov96_021E5C80
ldr r1, _021E5A38 ; =0x000003CA
mov r3, #0
sub r0, r1, #6
add r2, r4, r0
add r0, r1, #0
strb r3, [r4, r1]
sub r0, #0x16
str r2, [r4, r0]
sub r1, #0xa
add r0, r4, #0
str r3, [r4, r1]
bl ov96_021E5C90
mov r0, #0x5c
bl ov96_021E92E0
ldr r1, _021E5A3C ; =0x00000614
str r0, [r4, r1]
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r4, r0]
ldr r0, [r0, #4]
cmp r0, #1
beq _021E59FE
mov r0, #1
bl TextFlags_SetCanABSpeedUpPrint
mov r0, #0
bl sub_02002B50
mov r0, #1
bl sub_02002B8C
b _021E5A10
_021E59FE:
mov r0, #0
bl TextFlags_SetCanABSpeedUpPrint
mov r0, #1
bl sub_02002B50
mov r0, #0
bl sub_02002B8C
_021E5A10:
add r0, r4, #0
mov r1, #0
bl ov96_021E5DFC
add r0, r4, #0
mov r1, #0
bl ov96_021E5DE0
mov r0, #1
add sp, #0x14
pop {r3, r4, r5, r6, pc}
nop
_021E5A28: .word ov96_0221A7E4
_021E5A2C: .word 0x000001EE
_021E5A30: .word 0x0000072A
_021E5A34: .word ov96_0221A984
_021E5A38: .word 0x000003CA
_021E5A3C: .word 0x00000614
thumb_func_end PokeathlonCourseApplication_OvyInit
thumb_func_start PokeathlonCourseApplication_OvyExec
PokeathlonCourseApplication_OvyExec: ; 0x021E5A40
push {r3, r4, r5, lr}
bl OverlayManager_GetData
add r5, r0, #0
mov r0, #0xed
lsl r0, r0, #2
add r4, r5, r0
ldr r0, _021E5B78 ; =0x00000D2C
ldr r1, [r5, r0]
cmp r1, #0
beq _021E5A86
sub r1, r0, #4
ldrh r1, [r5, r1]
add r2, r1, #1
sub r1, r0, #4
strh r2, [r5, r1]
ldrh r2, [r5, r1]
ldr r1, _021E5B7C ; =0x00000708
cmp r2, r1
blo _021E5A86
add r1, r0, #0
sub r1, #8
ldr r2, [r5, r1]
ldr r1, _021E5B80 ; =0x0000EA5F
cmp r2, r1
bge _021E5A80
add r1, r0, #0
sub r1, #8
ldr r1, [r5, r1]
sub r0, #8
add r1, r1, #1
str r1, [r5, r0]
_021E5A80:
ldr r0, _021E5B84 ; =0x00000D28
mov r1, #0
strh r1, [r5, r0]
_021E5A86:
ldr r0, [r4, #8]
cmp r0, #4
bhi _021E5B6E
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021E5A98: ; jump table
.short _021E5AA2 - _021E5A98 - 2 ; case 0
.short _021E5AD8 - _021E5A98 - 2 ; case 1
.short _021E5AE6 - _021E5A98 - 2 ; case 2
.short _021E5AFC - _021E5A98 - 2 ; case 3
.short _021E5B14 - _021E5A98 - 2 ; case 4
_021E5AA2:
add r0, r5, #0
bl ov96_021E5C2C
cmp r0, #0
beq _021E5AB0
mov r0, #1
pop {r3, r4, r5, pc}
_021E5AB0:
ldr r0, [r4, #0xc]
cmp r0, #0
beq _021E5AC2
ldr r1, [r4]
ldrb r0, [r1, #7]
strb r0, [r1, #6]
mov r0, #0
strb r0, [r1, #5]
str r0, [r4, #0xc]
_021E5AC2:
ldr r0, [r4, #4]
cmp r0, #0
beq _021E5B6E
cmp r0, #0x10
bne _021E5AD2
mov r0, #3
str r0, [r4, #8]
b _021E5B6E
_021E5AD2:
mov r0, #1
str r0, [r4, #8]
b _021E5B6E
_021E5AD8:
ldr r0, [r4, #4]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl sub_02037AC0
mov r0, #2
str r0, [r4, #8]
_021E5AE6:
ldr r0, [r4, #4]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl sub_02037B38
cmp r0, #0
beq _021E5B6E
mov r0, #0
str r0, [r4, #8]
str r0, [r4, #4]
b _021E5B6E
_021E5AFC:
ldr r0, [r4, #4]
cmp r0, #0x10
beq _021E5B06
bl GF_AssertFail
_021E5B06:
ldr r0, [r4, #4]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl sub_02037AC0
mov r0, #4
str r0, [r4, #8]
_021E5B14:
ldr r0, [r4, #4]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl sub_02037B38
cmp r0, #0
bne _021E5B68
add r0, r5, #0
bl ov96_021E5F24
cmp r0, #0
bne _021E5B6E
bl ov96_021E9A14
mov r3, #0xad
lsl r3, r3, #2
add r1, r5, r3
sub r3, #0x2c
add r2, r0, #0
ldr r3, [r5, r3]
mov r0, #0x1b
bl ov96_021E87B4
mov r0, #0xb7
lsl r0, r0, #2
add r0, r5, r0
bl ov96_021E8A20
add r4, r0, #0
mov r0, #0xa3
lsl r0, r0, #2
add r0, r5, r0
bl ov96_021E8A20
mov r2, #0x28
_021E5B5A:
ldrb r1, [r0]
add r0, r0, #1
strb r1, [r4]
add r4, r4, #1
sub r2, r2, #1
bne _021E5B5A
b _021E5B6E
_021E5B68:
mov r0, #0
str r0, [r4, #8]
str r0, [r4, #4]
_021E5B6E:
add r0, r5, #0
bl ov96_021E67AC
mov r0, #0
pop {r3, r4, r5, pc}
.balign 4, 0
_021E5B78: .word 0x00000D2C
_021E5B7C: .word 0x00000708
_021E5B80: .word 0x0000EA5F
_021E5B84: .word 0x00000D28
thumb_func_end PokeathlonCourseApplication_OvyExec
thumb_func_start PokeathlonCourseApplication_OvyExit
PokeathlonCourseApplication_OvyExit: ; 0x021E5B88
push {r3, r4, r5, lr}
add r5, r0, #0
bl OverlayManager_GetData
add r4, r0, #0
mov r0, #0x5c
bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _021E5BA0
bl GF_AssertFail
_021E5BA0:
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r4, r0]
ldrb r0, [r0, #0xe]
cmp r0, #0
bne _021E5BBC
ldr r0, _021E5C14 ; =0x00000D64
ldr r0, [r4, r0]
bl FreeToHeap
ldr r0, _021E5C18 ; =0x00000D68
ldr r0, [r4, r0]
bl FreeToHeap
_021E5BBC:
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r4, r0]
ldr r0, [r0]
bl Save_Pokeathlon_Get
bl sub_020319F0
add r2, r0, #0
ldr r0, _021E5C1C ; =0x00000D24
ldr r1, _021E5C20 ; =0x0000EA5F
ldr r0, [r4, r0]
bl ov96_021E7F98
mov r0, #0
bl TextFlags_SetCanABSpeedUpPrint
mov r0, #0
bl sub_02002B50
mov r0, #0
bl sub_02002B8C
ldr r0, _021E5C24 ; =0x00000614
ldr r0, [r4, r0]
bl ov96_021E9320
ldr r0, _021E5C28 ; =0x000005DC
ldr r0, [r4, r0]
bl FreeToHeap
mov r0, #0xa2
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021E8810
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x5c
bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.balign 4, 0
_021E5C14: .word 0x00000D64
_021E5C18: .word 0x00000D68
_021E5C1C: .word 0x00000D24
_021E5C20: .word 0x0000EA5F
_021E5C24: .word 0x00000614
_021E5C28: .word 0x000005DC
thumb_func_end PokeathlonCourseApplication_OvyExit
thumb_func_start ov96_021E5C2C
ov96_021E5C2C: ; 0x021E5C2C
push {r3, lr}
ldr r2, _021E5C4C ; =0x000003C9
sub r3, r2, #5
add r1, r0, r2
add r2, r2, #1
ldrb r2, [r0, r2]
ldr r3, [r0, r3]
lsl r2, r2, #2
ldr r2, [r3, r2]
blx r2
cmp r0, #0
beq _021E5C48
mov r0, #1
pop {r3, pc}
_021E5C48:
mov r0, #0
pop {r3, pc}
.balign 4, 0
_021E5C4C: .word 0x000003C9
thumb_func_end ov96_021E5C2C
thumb_func_start ov96_021E5C50
ov96_021E5C50: ; 0x021E5C50
push {r3, r4, r5, r6, r7, lr}
mov r6, #0x7e
lsl r6, r6, #2
add r4, r6, #0
add r5, r0, #0
mov r7, #0
sub r4, #0x18
_021E5C5E:
ldr r2, [r5, r4]
add r0, r5, #0
ldr r2, [r2]
add r1, r7, #0
blx r2
cmp r0, #1
bne _021E5C70
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021E5C70:
cmp r0, #0
beq _021E5C7C
ldr r0, [r5, r6]
ldr r0, [r0, #4]
cmp r0, #0
beq _021E5C5E
_021E5C7C:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021E5C50
thumb_func_start ov96_021E5C80
ov96_021E5C80: ; 0x021E5C80
str r0, [r1]
mov r0, #1
strb r0, [r1, #4]
mov r0, #0
strb r0, [r1, #5]
strb r0, [r1, #6]
strb r0, [r1, #7]
bx lr
thumb_func_end ov96_021E5C80
thumb_func_start ov96_021E5C90
ov96_021E5C90: ; 0x021E5C90
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
bl PlayerProfile_sizeof
add r1, r0, #0
mov r0, #0xa1
lsl r0, r0, #2
ldr r0, [r5, r0]
lsl r1, r1, #2
bl AllocFromHeap
ldr r1, _021E5D1C ; =0x000005DC
mov r4, #0
str r0, [r5, r1]
add r6, r1, #0
_021E5CAE:
ldr r0, [r5, r6]
add r1, r4, #0
bl ov96_021E5D24
bl PlayerProfile_Init
add r4, r4, #1
cmp r4, #4
blt _021E5CAE
mov r0, #0x7e
lsl r0, r0, #2
ldr r1, [r5, r0]
ldr r1, [r1, #4]
cmp r1, #0
bne _021E5CEC
ldr r0, _021E5D1C ; =0x000005DC
mov r1, #0
ldr r0, [r5, r0]
bl ov96_021E5D24
add r4, r0, #0
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r0, [r0]
bl Save_PlayerData_GetProfileAddr
add r1, r4, #0
bl PlayerProfile_Copy
pop {r3, r4, r5, r6, r7, pc}
_021E5CEC:
sub r0, #0xa
ldrb r0, [r5, r0]
mov r6, #0
cmp r0, #0
ble _021E5D18
ldr r7, _021E5D20 ; =0x000001EE
_021E5CF8:
ldr r0, _021E5D1C ; =0x000005DC
add r1, r6, #0
ldr r0, [r5, r0]
bl ov96_021E5D24
add r4, r0, #0
add r0, r6, #0
bl sub_02034818
add r1, r4, #0
bl PlayerProfile_Copy
ldrb r0, [r5, r7]
add r6, r6, #1
cmp r6, r0
blt _021E5CF8
_021E5D18:
pop {r3, r4, r5, r6, r7, pc}
nop
_021E5D1C: .word 0x000005DC
_021E5D20: .word 0x000001EE
thumb_func_end ov96_021E5C90
thumb_func_start ov96_021E5D24
ov96_021E5D24: ; 0x021E5D24
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
bl PlayerProfile_sizeof
mul r0, r4
add r0, r5, r0
pop {r3, r4, r5, pc}
thumb_func_end ov96_021E5D24
thumb_func_start ov96_021E5D34
ov96_021E5D34: ; 0x021E5D34
ldr r1, _021E5D3C ; =0x000001EE
ldrb r0, [r0, r1]
bx lr
nop
_021E5D3C: .word 0x000001EE
thumb_func_end ov96_021E5D34
thumb_func_start ov96_021E5D40
ov96_021E5D40: ; 0x021E5D40
mov r2, #0xfb
lsl r2, r2, #2
add r2, r0, r2
mov r0, #0x7c
mul r0, r1
add r0, r2, r0
bx lr
.balign 4, 0
thumb_func_end ov96_021E5D40
thumb_func_start ov96_021E5D50
ov96_021E5D50: ; 0x021E5D50
mov r2, #0x3f
lsl r2, r2, #4
add r2, r0, r2
mov r0, #0x7c
mul r0, r1
add r0, r2, r0
bx lr
.balign 4, 0
thumb_func_end ov96_021E5D50
thumb_func_start ov96_021E5D60
ov96_021E5D60: ; 0x021E5D60
mov r1, #0x7e
lsl r1, r1, #2
ldr r0, [r0, r1]
ldr r0, [r0]
bx lr
.balign 4, 0
thumb_func_end ov96_021E5D60
thumb_func_start ov96_021E5D6C
ov96_021E5D6C: ; 0x021E5D6C
ldr r1, _021E5D74 ; =0x0000072C
add r0, r0, r1
bx lr
nop
_021E5D74: .word 0x0000072C
thumb_func_end ov96_021E5D6C
thumb_func_start ov96_021E5D78
ov96_021E5D78: ; 0x021E5D78
ldr r2, _021E5D84 ; =0x0000072C
add r2, r0, r2
mov r0, #0x60
mul r0, r1
add r0, r2, r0
bx lr
.balign 4, 0
_021E5D84: .word 0x0000072C
thumb_func_end ov96_021E5D78
thumb_func_start ov96_021E5D88
ov96_021E5D88: ; 0x021E5D88
ldr r1, _021E5D90 ; =0x00000BA4
add r0, r0, r1
bx lr
nop
_021E5D90: .word 0x00000BA4
thumb_func_end ov96_021E5D88
thumb_func_start ov96_021E5D94
ov96_021E5D94: ; 0x021E5D94
push {r4, lr}
add r4, r0, #0
mov r0, #0xa1
lsl r0, r0, #2
ldr r0, [r4, r0]
bl AllocFromHeap
mov r1, #0x79
lsl r1, r1, #2
str r0, [r4, r1]
ldr r0, [r4, r1]
pop {r4, pc}
thumb_func_end ov96_021E5D94
thumb_func_start ov96_021E5DAC
ov96_021E5DAC: ; 0x021E5DAC
push {r4, lr}
add r4, r0, #0
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
bl FreeToHeap
mov r0, #0x79
mov r1, #0
lsl r0, r0, #2
str r1, [r4, r0]
pop {r4, pc}
thumb_func_end ov96_021E5DAC
thumb_func_start ov96_021E5DC4
ov96_021E5DC4: ; 0x021E5DC4
mov r1, #0x79
lsl r1, r1, #2
ldr r0, [r0, r1]
bx lr
thumb_func_end ov96_021E5DC4
thumb_func_start PokeathlonOvy_GetHeapID
PokeathlonOvy_GetHeapID: ; 0x021E5DCC
mov r1, #0xa1
lsl r1, r1, #2
ldr r0, [r0, r1]
bx lr
thumb_func_end PokeathlonOvy_GetHeapID
thumb_func_start ov96_021E5DD4
ov96_021E5DD4: ; 0x021E5DD4
ldr r1, _021E5DDC ; =0x000001ED
ldrb r0, [r0, r1]
bx lr
nop
_021E5DDC: .word 0x000001ED
thumb_func_end ov96_021E5DD4
thumb_func_start ov96_021E5DE0
ov96_021E5DE0: ; 0x021E5DE0
ldr r2, _021E5DE8 ; =0x000001ED
strb r1, [r0, r2]
bx lr
nop
_021E5DE8: .word 0x000001ED
thumb_func_end ov96_021E5DE0
thumb_func_start ov96_021E5DEC
ov96_021E5DEC: ; 0x021E5DEC
ldr r1, _021E5DF8 ; =0x000001ED
ldrb r2, [r0, r1]
add r2, r2, #1
strb r2, [r0, r1]
bx lr
nop
_021E5DF8: .word 0x000001ED
thumb_func_end ov96_021E5DEC
thumb_func_start ov96_021E5DFC
ov96_021E5DFC: ; 0x021E5DFC
mov r2, #0x7d
lsl r2, r2, #2
str r1, [r0, r2]
bx lr
thumb_func_end ov96_021E5DFC
thumb_func_start ov96_021E5E04
ov96_021E5E04: ; 0x021E5E04
push {r4, r5, r6, lr}
ldr r2, _021E5E40 ; =0x0000072A
add r4, r0, #0
ldrb r2, [r4, r2]
mov r0, #0
cmp r2, #0
ble _021E5E28
mov r3, #0xf6
ldr r5, _021E5E40 ; =0x0000072A
add r2, r4, #0
lsl r3, r3, #2
_021E5E1A:
ldrb r6, [r1, r0]
add r0, r0, #1
str r6, [r2, r3]
ldrb r6, [r4, r5]
add r2, r2, #4
cmp r0, r6
blt _021E5E1A
_021E5E28:
add r0, r4, #0
bl ov96_021E5E7C
mov r1, #0xfa
lsl r1, r1, #2
str r0, [r4, r1]
mov r0, #0x9f
ldr r1, [r4, r1]
lsl r0, r0, #2
str r1, [r4, r0]
pop {r4, r5, r6, pc}
nop
_021E5E40: .word 0x0000072A
thumb_func_end ov96_021E5E04
thumb_func_start ov96_021E5E44
ov96_021E5E44: ; 0x021E5E44
mov r1, #0x1f
lsl r1, r1, #4
ldr r1, [r0, r1]
lsl r1, r1, #2
add r1, r0, r1
mov r0, #0xf6
lsl r0, r0, #2
ldr r0, [r1, r0]
bx lr
.balign 4, 0
thumb_func_end ov96_021E5E44
thumb_func_start ov96_021E5E58
ov96_021E5E58: ; 0x021E5E58
push {r3, lr}
ldr r2, _021E5E78 ; =0x0000072A
ldrb r2, [r0, r2]
cmp r1, r2
blo _021E5E6A
bl GF_AssertFail
mov r0, #0
pop {r3, pc}
_021E5E6A:
lsl r1, r1, #2
add r1, r0, r1
mov r0, #0xf6
lsl r0, r0, #2
ldr r0, [r1, r0]
pop {r3, pc}
nop
_021E5E78: .word 0x0000072A
thumb_func_end ov96_021E5E58
thumb_func_start ov96_021E5E7C
ov96_021E5E7C: ; 0x021E5E7C
push {r3, r4, r5, r6, r7, lr}
add r4, r0, #0
bl ov96_021E5EE8
cmp r0, #1
bne _021E5E8C
mov r1, #1
b _021E5E8E
_021E5E8C:
mov r1, #0
_021E5E8E:
mov r0, #0xf6
lsl r0, r0, #2
add r3, r4, r0
cmp r1, #0
beq _021E5E9C
mov r0, #4
b _021E5E9E
_021E5E9C:
mov r0, #3
_021E5E9E:
lsl r0, r0, #0x18
lsr r2, r0, #0x18
mov r0, #0
_021E5EA4:
mov r4, #1
mov r1, #0
cmp r2, #0
bls _021E5ECA
ldr r5, _021E5EDC ; =ov96_0221A934
lsl r6, r0, #2
add r5, r5, r6
_021E5EB2:
lsl r6, r1, #2
ldr r7, [r3, r6]
ldrb r6, [r5, r1]
cmp r7, r6
beq _021E5EC0
mov r4, #0
b _021E5ECA
_021E5EC0:
add r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
cmp r1, r2
blo _021E5EB2
_021E5ECA:
cmp r4, #0
bne _021E5EDA
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #0xa
blo _021E5EA4
mov r0, #0xa
_021E5EDA:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E5EDC: .word ov96_0221A934
thumb_func_end ov96_021E5E7C
thumb_func_start ov96_021E5EE0
ov96_021E5EE0: ; 0x021E5EE0
mov r1, #0x1f
lsl r1, r1, #4
ldr r0, [r0, r1]
bx lr
thumb_func_end ov96_021E5EE0
thumb_func_start ov96_021E5EE8
ov96_021E5EE8: ; 0x021E5EE8
mov r1, #0x7e
lsl r1, r1, #2
ldr r0, [r0, r1]
ldr r0, [r0, #4]
bx lr
.balign 4, 0
thumb_func_end ov96_021E5EE8
thumb_func_start ov96_021E5EF4
ov96_021E5EF4: ; 0x021E5EF4
ldr r1, _021E5EFC ; =0x000001EF
ldrb r0, [r0, r1]
bx lr
nop
_021E5EFC: .word 0x000001EF
thumb_func_end ov96_021E5EF4
thumb_func_start ov96_021E5F00
ov96_021E5F00: ; 0x021E5F00
ldr r1, _021E5F0C ; =0x000001EF
ldrb r2, [r0, r1]
add r2, r2, #1
strb r2, [r0, r1]
bx lr
nop
_021E5F0C: .word 0x000001EF
thumb_func_end ov96_021E5F00
thumb_func_start ov96_021E5F10
ov96_021E5F10: ; 0x021E5F10
ldr r1, _021E5F18 ; =0x000001EF
mov r2, #0
strb r2, [r0, r1]
bx lr
.balign 4, 0
_021E5F18: .word 0x000001EF
thumb_func_end ov96_021E5F10
thumb_func_start ov96_021E5F1C
ov96_021E5F1C: ; 0x021E5F1C
mov r1, #0xa2
lsl r1, r1, #2
ldr r0, [r0, r1]
bx lr
thumb_func_end ov96_021E5F1C
thumb_func_start ov96_021E5F24
ov96_021E5F24: ; 0x021E5F24
mov r1, #0xa2
lsl r1, r1, #2
ldr r3, _021E5F30 ; =ov96_021E8828
ldr r0, [r0, r1]
bx r3
nop
_021E5F30: .word ov96_021E8828
thumb_func_end ov96_021E5F24
thumb_func_start ov96_021E5F34
ov96_021E5F34: ; 0x021E5F34
ldr r2, _021E5F3C ; =0x000005DC
ldr r3, _021E5F40 ; =ov96_021E5D24
ldr r0, [r0, r2]
bx r3
.balign 4, 0
_021E5F3C: .word 0x000005DC
_021E5F40: .word ov96_021E5D24
thumb_func_end ov96_021E5F34
thumb_func_start ov96_021E5F44
ov96_021E5F44: ; 0x021E5F44
ldr r2, _021E5F50 ; =0x00000974
add r2, r0, r2
mov r0, #0x74
mul r0, r1
add r0, r2, r0
bx lr
.balign 4, 0
_021E5F50: .word 0x00000974
thumb_func_end ov96_021E5F44
thumb_func_start ov96_021E5F54
ov96_021E5F54: ; 0x021E5F54
mov r1, #0xa3
lsl r1, r1, #2
add r0, r0, r1
bx lr
thumb_func_end ov96_021E5F54
thumb_func_start ov96_021E5F5C
ov96_021E5F5C: ; 0x021E5F5C
mov r1, #0xa3
lsl r1, r1, #2
mov r2, #0x4a
add r0, r0, r1
ldr r3, _021E5F6C ; =MI_CpuFill8
mov r1, #0
lsl r2, r2, #2
bx r3
.balign 4, 0
_021E5F6C: .word MI_CpuFill8
thumb_func_end ov96_021E5F5C
thumb_func_start ov96_021E5F70
ov96_021E5F70: ; 0x021E5F70
push {r3, r4}
mov r4, #0xe9
lsl r4, r4, #2
str r1, [r0, r4]
add r1, r4, #4
str r2, [r0, r1]
add r1, r4, #0
add r1, #8
str r3, [r0, r1]
mov r1, #1
add r4, #0xc
str r1, [r0, r4]
pop {r3, r4}
bx lr
thumb_func_end ov96_021E5F70
thumb_func_start ov96_021E5F8C
ov96_021E5F8C: ; 0x021E5F8C
mov r2, #0xe9
lsl r2, r2, #2
mov r3, #0
str r3, [r0, r2]
add r1, r2, #4
str r3, [r0, r1]
add r1, r2, #0
add r1, #8
str r3, [r0, r1]
add r2, #0xc
str r3, [r0, r2]
bx lr
thumb_func_end ov96_021E5F8C
thumb_func_start ov96_021E5FA4
ov96_021E5FA4: ; 0x021E5FA4
mov r1, #0xea
lsl r1, r1, #2
ldr r0, [r0, r1]
bx lr
thumb_func_end ov96_021E5FA4
thumb_func_start ov96_021E5FAC
ov96_021E5FAC: ; 0x021E5FAC
mov r0, #4
bx lr
thumb_func_end ov96_021E5FAC
thumb_func_start ov96_021E5FB0
ov96_021E5FB0: ; 0x021E5FB0
lsl r1, r1, #2
add r1, r0, r1
mov r0, #0x5e
lsl r0, r0, #4
strh r2, [r1, r0]
bx lr
thumb_func_end ov96_021E5FB0
thumb_func_start ov96_021E5FBC
ov96_021E5FBC: ; 0x021E5FBC
lsl r1, r1, #2
add r1, r0, r1
mov r0, #0x5f
lsl r0, r0, #4
ldrh r0, [r1, r0]
bx lr
thumb_func_end ov96_021E5FBC
thumb_func_start ov96_021E5FC8
ov96_021E5FC8: ; 0x021E5FC8
push {r3, r4, r5, lr}
add r5, r0, #0
mov r0, #0xf
lsl r0, r0, #6
ldr r0, [r5, r0]
add r4, r1, #0
cmp r0, #1
bne _021E5FDC
bl GF_AssertFail
_021E5FDC:
mov r0, #0xf
mov r1, #1
lsl r0, r0, #6
str r1, [r5, r0]
sub r0, #0xc
ldr r0, [r5, r0]
strb r4, [r0, #7]
pop {r3, r4, r5, pc}
thumb_func_end ov96_021E5FC8
thumb_func_start ov96_021E5FEC
ov96_021E5FEC: ; 0x021E5FEC
push {r3, r4, r5, lr}
add r5, r0, #0
mov r0, #0xed
lsl r0, r0, #2
add r4, r1, #0
ldr r1, [r5, r0]
ldrb r1, [r1, #7]
cmp r1, r2
beq _021E6018
add r0, #0xc
ldr r0, [r5, r0]
cmp r0, #1
bne _021E600A
bl GF_AssertFail
_021E600A:
mov r0, #0xf
mov r1, #1
lsl r0, r0, #6
str r1, [r5, r0]
sub r0, #0xc
ldr r0, [r5, r0]
strb r4, [r0, #7]
_021E6018:
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021E5FEC
thumb_func_start ov96_021E601C
ov96_021E601C: ; 0x021E601C
mov r2, #0x7e
lsl r2, r2, #2
ldr r2, [r0, r2]
ldr r2, [r2, #4]
cmp r2, #1
bne _021E602E
mov r2, #0xee
lsl r2, r2, #2
str r1, [r0, r2]
_021E602E:
bx lr
thumb_func_end ov96_021E601C
thumb_func_start ov96_021E6030
ov96_021E6030: ; 0x021E6030
ldr r3, _021E6038 ; =Main_SetVBlankIntrCB
add r1, r0, #0
ldr r0, _021E603C ; =ov96_021E75BC
bx r3
.balign 4, 0
_021E6038: .word Main_SetVBlankIntrCB
_021E603C: .word ov96_021E75BC
thumb_func_end ov96_021E6030
thumb_func_start ov96_021E6040
ov96_021E6040: ; 0x021E6040
ldr r1, _021E6048 ; =0x00000614
ldr r0, [r0, r1]
bx lr
nop
_021E6048: .word 0x00000614
thumb_func_end ov96_021E6040
thumb_func_start ov96_021E604C
ov96_021E604C: ; 0x021E604C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
str r0, [sp]
mov r2, #0xa1
ldr r1, [sp]
lsl r2, r2, #2
ldr r1, [r1, r2]
mov r0, #0xa9
bl NARC_New
add r7, r0, #0
mov r0, #0
str r0, [sp, #8]
ldr r1, _021E60B8 ; =0x00000618
ldr r0, [sp]
add r0, r0, r1
str r0, [sp, #4]
_021E606E:
ldr r4, [sp]
ldr r5, [sp, #4]
mov r6, #0
_021E6074:
mov r0, #0x3f
ldr r1, _021E60BC ; =0x000003F2
lsl r0, r0, #4
ldrh r0, [r4, r0]
ldrh r1, [r4, r1]
bl ov96_021E679C
add r1, r0, #0
add r0, r7, #0
add r2, r5, #0
bl NARC_ReadWholeMember
add r6, r6, #1
add r4, #0x28
add r5, #0x14
cmp r6, #3
blt _021E6074
ldr r0, [sp]
add r0, #0x7c
str r0, [sp]
ldr r0, [sp, #4]
add r0, #0x3c
str r0, [sp, #4]
ldr r0, [sp, #8]
add r0, r0, #1
str r0, [sp, #8]
cmp r0, #4
blt _021E606E
add r0, r7, #0
bl NARC_Delete
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
_021E60B8: .word 0x00000618
_021E60BC: .word 0x000003F2
thumb_func_end ov96_021E604C
thumb_func_start ov96_021E60C0
ov96_021E60C0: ; 0x021E60C0
ldr r3, _021E60D4 ; =0x00000618
add r3, r0, r3
mov r0, #0x3c
mul r0, r1
add r1, r3, r0
mov r0, #0x14
mul r0, r2
add r0, r1, r0
bx lr
nop
_021E60D4: .word 0x00000618
thumb_func_end ov96_021E60C0
thumb_func_start ov96_021E60D8
ov96_021E60D8: ; 0x021E60D8
push {r4, r5, r6, lr}
add r5, r1, #0
add r6, r0, #0
add r4, r2, #0
cmp r5, #4
blt _021E60E8
bl GF_AssertFail
_021E60E8:
cmp r4, #3
blt _021E60F0
bl GF_AssertFail
_021E60F0:
mov r0, #0xfe
lsl r0, r0, #2
add r1, r6, r0
mov r0, #0x7c
mul r0, r5
add r1, r1, r0
mov r0, #0x28
mul r0, r4
add r0, r1, r0
pop {r4, r5, r6, pc}
thumb_func_end ov96_021E60D8
thumb_func_start ov96_021E6104
ov96_021E6104: ; 0x021E6104
mov r0, #0x50
bx lr
thumb_func_end ov96_021E6104
thumb_func_start ov96_021E6108
ov96_021E6108: ; 0x021E6108
push {r3, lr}
cmp r0, #0
bne _021E6112
mov r0, #0
pop {r3, pc}
_021E6112:
ldrb r0, [r0, #8]
cmp r0, #1
beq _021E6122
cmp r0, #2
beq _021E6126
cmp r0, #3
beq _021E612A
b _021E612E
_021E6122:
mov r0, #1
pop {r3, pc}
_021E6126:
mov r0, #2
pop {r3, pc}
_021E612A:
mov r0, #3
pop {r3, pc}
_021E612E:
bl GF_AssertFail
mov r0, #0
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_021E6108
thumb_func_start ov96_021E6138
ov96_021E6138: ; 0x021E6138
push {r3, lr}
cmp r0, #0
bne _021E6142
mov r0, #0
pop {r3, pc}
_021E6142:
ldrb r0, [r0, #6]
cmp r0, #1
beq _021E6152
cmp r0, #2
beq _021E6156
cmp r0, #3
beq _021E615A
b _021E615E
_021E6152:
mov r0, #1
pop {r3, pc}
_021E6156:
mov r0, #2
pop {r3, pc}
_021E615A:
mov r0, #3
pop {r3, pc}
_021E615E:
bl GF_AssertFail
mov r0, #0
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_021E6138
thumb_func_start ov96_021E6168
ov96_021E6168: ; 0x021E6168
push {r3, r4, r5, r6, r7, lr}
add r5, r2, #0
add r7, r0, #0
add r6, r1, #0
add r4, r3, #0
cmp r5, #3
blt _021E617A
bl GF_AssertFail
_021E617A:
add r0, r7, #0
add r1, r6, #0
bl ov96_021E5D50
mov r1, #0x28
add r3, r5, #0
mul r3, r1
add r1, r0, r3
ldrb r2, [r1, #0x10]
strb r2, [r4, #6]
ldrh r0, [r0, r3]
strh r0, [r4]
ldrh r0, [r1, #2]
strh r0, [r4, #2]
ldrb r0, [r1, #0x11]
strb r0, [r4, #7]
str r6, [r4, #8]
ldr r0, [r1, #4]
str r0, [r4, #0xc]
ldrh r0, [r4]
cmp r0, #0
bne _021E61AA
bl GF_AssertFail
_021E61AA:
ldrh r0, [r4]
cmp r0, #0
bne _021E61B4
mov r0, #1
strh r0, [r4]
_021E61B4:
ldrh r0, [r4]
bl SpeciesToOverworldModelIndexOffset
add r2, r0, #0
add r0, sp, #0
mov r1, #0x8d
bl ReadWholeNarcMemberByIdPair
add r0, sp, #0
ldrb r0, [r0, #1]
cmp r0, #0
beq _021E61D2
mov r0, #1
strh r0, [r4, #4]
pop {r3, r4, r5, r6, r7, pc}
_021E61D2:
mov r0, #0
strh r0, [r4, #4]
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021E6168
thumb_func_start ov96_021E61D8
ov96_021E61D8: ; 0x021E61D8
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r5, r0, #0
mov r0, #0xa1
lsl r0, r0, #2
ldr r0, [r5, r0]
add r6, r2, #0
add r7, r3, #0
add r4, r1, #0
str r0, [sp]
add r0, r6, #0
add r1, r7, #0
mov r2, #0
mov r3, #1
bl ov96_021EA214
ldr r1, _021E6280 ; =0x00000708
mov r3, #0xa1
str r0, [r5, r1]
lsl r3, r3, #2
ldr r3, [r5, r3]
add r0, r6, #0
add r1, r7, #0
mov r2, #0
bl ov96_021EA4D4
mov r1, #0x71
lsl r1, r1, #4
str r0, [r5, r1]
mov r3, #0xa1
lsl r3, r3, #2
ldr r3, [r5, r3]
add r0, r6, #0
add r1, r7, #0
mov r2, #0
bl ov96_021EA584
ldr r1, _021E6284 ; =0x00000714
str r0, [r5, r1]
mov r0, #0
str r0, [sp, #0x18]
mov r0, #2
lsl r0, r0, #0x12
str r0, [sp, #0x10]
add r0, r4, #0
add r0, #0x60
lsl r0, r0, #0xc
sub r1, #0xc
str r0, [sp, #0x14]
ldr r0, [r5, r1]
add r1, sp, #0x10
bl Sprite_SetMatrix
ldr r0, _021E6288 ; =0x0000070E
mov r1, #0
strh r4, [r5, r0]
str r1, [sp, #0xc]
mov r1, #2
lsl r1, r1, #0x12
str r1, [sp, #4]
ldrh r1, [r5, r0]
add r0, r0, #6
add r1, #0x48
lsl r1, r1, #0xc
str r1, [sp, #8]
ldr r0, [r5, r0]
add r1, sp, #4
bl Sprite_SetMatrix
ldr r0, _021E628C ; =0x0000070D
mov r1, #0
strb r1, [r5, r0]
add r4, #0x82
lsl r1, r4, #0xc
str r1, [sp, #0x14]
add r0, r0, #3
ldr r0, [r5, r0]
add r1, sp, #0x10
bl Sprite_SetMatrix
ldr r0, _021E6280 ; =0x00000708
add r0, r5, r0
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021E6280: .word 0x00000708
_021E6284: .word 0x00000714
_021E6288: .word 0x0000070E
_021E628C: .word 0x0000070D
thumb_func_end ov96_021E61D8
thumb_func_start ov96_021E6290
ov96_021E6290: ; 0x021E6290
push {r4, r5, r6, lr}
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
add r0, r3, #0
bl ov96_021EB5E8
add r3, r0, #0
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
bl ov96_021E61D8
pop {r4, r5, r6, pc}
thumb_func_end ov96_021E6290
thumb_func_start ov96_021E62AC
ov96_021E62AC: ; 0x021E62AC
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r7, r0, #0
ldr r0, [sp, #0x30]
str r1, [sp, #4]
str r0, [sp, #0x30]
ldr r0, [sp, #0x34]
ldr r1, _021E6340 ; =0x00000728
str r0, [sp, #0x34]
ldr r0, [sp, #0x38]
str r2, [sp, #8]
str r0, [sp, #0x38]
ldr r0, [sp, #0x34]
str r3, [sp, #0xc]
strb r0, [r7, r1]
ldr r0, [sp, #0x34]
mov r4, #0
cmp r0, #0
bls _021E631E
_021E62D2:
mov r0, #0xa1
lsl r0, r0, #2
ldr r0, [r7, r0]
lsl r6, r4, #2
str r0, [sp]
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
ldr r2, [sp, #0x30]
mov r3, #0
add r5, r7, r6
bl ov96_021EA6E4
ldr r1, _021E6344 ; =0x0000071C
str r0, [r5, r1]
mov r0, #0
str r0, [sp, #0x18]
ldr r1, [sp, #0x38]
ldr r0, [sp, #0x38]
ldrh r1, [r1, r6]
add r0, r0, r6
lsl r1, r1, #0xc
str r1, [sp, #0x10]
ldrh r1, [r0, #2]
ldr r0, [sp, #4]
add r0, r0, r1
lsl r0, r0, #0xc
str r0, [sp, #0x14]
ldr r0, _021E6344 ; =0x0000071C
add r1, sp, #0x10
ldr r0, [r5, r0]
bl Sprite_SetMatrix
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
ldr r0, [sp, #0x34]
cmp r4, r0
blo _021E62D2
_021E631E:
cmp r4, #3
bhs _021E6336
ldr r0, _021E6344 ; =0x0000071C
mov r2, #0
_021E6326:
lsl r1, r4, #2
add r1, r7, r1
str r2, [r1, r0]
add r1, r4, #1
lsl r1, r1, #0x18
lsr r4, r1, #0x18
cmp r4, #3
blo _021E6326
_021E6336:
ldr r0, _021E6348 ; =0x00000729
mov r1, #0
strb r1, [r7, r0]
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021E6340: .word 0x00000728
_021E6344: .word 0x0000071C
_021E6348: .word 0x00000729
thumb_func_end ov96_021E62AC
thumb_func_start ov96_021E634C
ov96_021E634C: ; 0x021E634C
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r5, r0, #0
add r0, r3, #0
add r4, r1, #0
add r6, r2, #0
bl ov96_021EB5E8
add r3, r0, #0
ldr r0, [sp, #0x20]
add r1, r4, #0
str r0, [sp]
add r0, sp, #0x10
ldrb r0, [r0, #0x14]
add r2, r6, #0
str r0, [sp, #4]
ldr r0, [sp, #0x28]
str r0, [sp, #8]
add r0, r5, #0
bl ov96_021E62AC
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021E634C
thumb_func_start ov96_021E637C
ov96_021E637C: ; 0x021E637C
push {r3, r4, r5, lr}
ldr r1, _021E643C ; =0x00000729
add r5, r0, #0
ldrb r2, [r5, r1]
mov r4, #0
cmp r2, #0
beq _021E6394
cmp r2, #1
beq _021E63AA
cmp r2, #2
beq _021E63C4
b _021E6438
_021E6394:
ldr r0, _021E6440 ; =0x0000089A
bl PlaySE
add r0, r5, #0
bl ov96_021E65D8
ldr r0, _021E643C ; =0x00000729
ldrb r1, [r5, r0]
add r1, r1, #1
strb r1, [r5, r0]
b _021E6438
_021E63AA:
bl ov96_021E661C
cmp r0, #0
beq _021E6438
ldr r0, _021E643C ; =0x00000729
ldrb r1, [r5, r0]
add r1, r1, #1
strb r1, [r5, r0]
mov r0, #7
add r1, r4, #0
bl sub_020053A8
b _021E6438
_021E63C4:
sub r1, #0x1d
ldrb r0, [r5, r1]
cmp r0, #0
bne _021E63E8
ldr r0, _021E6444 ; =0x0000089D
bl PlaySE
ldr r0, _021E6448 ; =0x00000708
mov r1, #1
ldr r0, [r5, r0]
bl Set2dSpriteVisibleFlag
ldr r0, _021E6448 ; =0x00000708
add r1, r4, #0
ldr r0, [r5, r0]
bl Set2dSpriteAnimSeqNo
b _021E6412
_021E63E8:
cmp r0, #0x15
bne _021E63FE
ldr r0, _021E6444 ; =0x0000089D
bl PlaySE
ldr r0, _021E6448 ; =0x00000708
mov r1, #1
ldr r0, [r5, r0]
bl Set2dSpriteAnimSeqNo
b _021E6412
_021E63FE:
cmp r0, #0x2a
bne _021E6412
ldr r0, _021E6444 ; =0x0000089D
bl PlaySE
ldr r0, _021E6448 ; =0x00000708
mov r1, #2
ldr r0, [r5, r0]
bl Set2dSpriteAnimSeqNo
_021E6412:
ldr r0, _021E644C ; =0x0000070C
ldrb r1, [r5, r0]
add r1, r1, #1
strb r1, [r5, r0]
ldrb r0, [r5, r0]
cmp r0, #0x3f
bls _021E6438
ldr r0, _021E6450 ; =0x00000892
bl PlaySE
ldr r0, _021E6448 ; =0x00000708
mov r1, #0
ldr r0, [r5, r0]
bl Set2dSpriteVisibleFlag
ldr r0, _021E644C ; =0x0000070C
mov r1, #0
strb r1, [r5, r0]
mov r4, #1
_021E6438:
add r0, r4, #0
pop {r3, r4, r5, pc}
.balign 4, 0
_021E643C: .word 0x00000729
_021E6440: .word 0x0000089A
_021E6444: .word 0x0000089D
_021E6448: .word 0x00000708
_021E644C: .word 0x0000070C
_021E6450: .word 0x00000892
thumb_func_end ov96_021E637C
thumb_func_start ov96_021E6454
ov96_021E6454: ; 0x021E6454
push {r3, r4, r5, lr}
add r1, #0x1d
add r5, r0, #0
add r0, r1, #0
mov r1, #0x1e
bl _s32_div_f
add r4, r0, #0
cmp r4, #0
bgt _021E6474
ldr r0, _021E64AC ; =0x00000714
mov r1, #0
ldr r0, [r5, r0]
bl Set2dSpriteVisibleFlag
pop {r3, r4, r5, pc}
_021E6474:
cmp r4, #3
bgt _021E64A0
ldr r0, _021E64B0 ; =0x0000072B
ldrb r0, [r5, r0]
cmp r0, r4
beq _021E648A
ldr r0, _021E64B4 ; =0x00000897
bl PlaySE
ldr r0, _021E64B0 ; =0x0000072B
strb r4, [r5, r0]
_021E648A:
ldr r0, _021E64AC ; =0x00000714
mov r1, #1
ldr r0, [r5, r0]
bl Set2dSpriteVisibleFlag
ldr r0, _021E64AC ; =0x00000714
add r1, r4, #1
ldr r0, [r5, r0]
bl Set2dSpriteAnimSeqNo
pop {r3, r4, r5, pc}
_021E64A0:
ldr r0, _021E64AC ; =0x00000714
mov r1, #0
ldr r0, [r5, r0]
bl Set2dSpriteVisibleFlag
pop {r3, r4, r5, pc}
.balign 4, 0
_021E64AC: .word 0x00000714
_021E64B0: .word 0x0000072B
_021E64B4: .word 0x00000897
thumb_func_end ov96_021E6454
thumb_func_start ov96_021E64B8
ov96_021E64B8: ; 0x021E64B8
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
mov r0, #0xd3
mov r4, #0
lsl r0, r0, #4
str r4, [r7, r0]
add r6, r4, #0
_021E64C6:
lsl r0, r4, #4
add r5, r7, r0
ldr r0, _021E64F0 ; =0x00000D34
ldr r0, [r5, r0]
cmp r0, #0
beq _021E64D6
bl GF_AssertFail
_021E64D6:
ldr r0, _021E64F4 ; =0x00000D38
str r6, [r5, r0]
add r0, r0, #4
str r6, [r5, r0]
mov r0, #0x35
lsl r0, r0, #6
str r6, [r5, r0]
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _021E64C6
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E64F0: .word 0x00000D34
_021E64F4: .word 0x00000D38
thumb_func_end ov96_021E64B8
thumb_func_start ov96_021E64F8
ov96_021E64F8: ; 0x021E64F8
push {r3, r4, r5, r6, r7, lr}
add r7, r3, #0
mov r3, #0xd3
add r4, r0, #0
lsl r3, r3, #4
add r0, r2, #0
ldr r2, [r4, r3]
cmp r2, #3
blo _021E6512
bl GF_AssertFail
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021E6512:
add r3, r3, #4
lsl r2, r2, #0x18
add r6, r4, r3
lsr r3, r2, #0x14
mov r2, #1
str r2, [r6, r3]
add r5, r6, r3
mov r3, #0xa1
str r1, [r5, #4]
lsl r3, r3, #2
ldr r2, [sp, #0x18]
ldr r3, [r4, r3]
add r1, r7, #0
bl ov96_021EA7A4
str r0, [r5, #8]
ldr r0, _021E654C ; =ov96_021E81D8
add r1, r5, #0
mov r2, #1
bl CreateSysTask
str r0, [r5, #0xc]
mov r0, #0xd3
lsl r0, r0, #4
ldr r1, [r4, r0]
add r1, r1, #1
str r1, [r4, r0]
ldr r0, [r5, #8]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E654C: .word ov96_021E81D8
thumb_func_end ov96_021E64F8
thumb_func_start ov96_021E6550
ov96_021E6550: ; 0x021E6550
push {r3, r4, r5, r6, r7, lr}
mov r4, #0
add r7, r0, #0
add r6, r4, #0
_021E6558:
lsl r0, r4, #4
add r5, r7, r0
ldr r0, _021E6584 ; =0x00000D34
str r6, [r5, r0]
add r0, r0, #4
str r6, [r5, r0]
ldr r0, _021E6588 ; =0x00000D3C
str r6, [r5, r0]
add r0, r0, #4
ldr r0, [r5, r0]
bl DestroySysTask
mov r0, #0x35
mov r1, #0
lsl r0, r0, #6
str r1, [r5, r0]
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _021E6558
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E6584: .word 0x00000D34
_021E6588: .word 0x00000D3C
thumb_func_end ov96_021E6550
thumb_func_start ov96_021E658C
ov96_021E658C: ; 0x021E658C
lsl r1, r1, #4
add r1, r0, r1
ldr r0, _021E659C ; =0x00000D3C
ldr r3, _021E65A0 ; =TryChange2dSpriteAnimSeqNo
ldr r0, [r1, r0]
add r1, r2, #0
bx r3
nop
_021E659C: .word 0x00000D3C
_021E65A0: .word TryChange2dSpriteAnimSeqNo
thumb_func_end ov96_021E658C
thumb_func_start ov96_021E65A4
ov96_021E65A4: ; 0x021E65A4
push {r3, r4, r5, r6, r7, lr}
ldr r7, _021E65D0 ; =0x00000D34
add r6, r0, #0
mov r4, #0
_021E65AC:
lsl r0, r4, #4
add r5, r6, r0
ldr r0, [r5, r7]
cmp r0, #0
bne _021E65BA
bl GF_AssertFail
_021E65BA:
ldr r0, _021E65D4 ; =0x00000D3C
mov r1, #0
ldr r0, [r5, r0]
bl Set2dSpriteAnimActiveFlag
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _021E65AC
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E65D0: .word 0x00000D34
_021E65D4: .word 0x00000D3C
thumb_func_end ov96_021E65A4
thumb_func_start ov96_021E65D8
ov96_021E65D8: ; 0x021E65D8
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, _021E6614 ; =0x00000728
ldrb r0, [r5, r0]
cmp r0, #0
beq _021E6610
mov r4, #0
cmp r0, #0
bls _021E6610
ldr r7, _021E6614 ; =0x00000728
_021E65EC:
lsl r0, r4, #2
add r6, r5, r0
ldr r0, _021E6618 ; =0x0000071C
mov r1, #1
ldr r0, [r6, r0]
bl Set2dSpriteVisibleFlag
ldr r0, _021E6618 ; =0x0000071C
mov r1, #0
ldr r0, [r6, r0]
bl Set2dSpriteAnimSeqNo
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
ldrb r0, [r5, r7]
cmp r4, r0
blo _021E65EC
_021E6610:
pop {r3, r4, r5, r6, r7, pc}
nop
_021E6614: .word 0x00000728
_021E6618: .word 0x0000071C
thumb_func_end ov96_021E65D8
thumb_func_start ov96_021E661C
ov96_021E661C: ; 0x021E661C
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, _021E6668 ; =0x00000728
ldrb r1, [r5, r0]
cmp r1, #0
bne _021E662C
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021E662C:
sub r0, #0xc
ldr r0, [r5, r0]
bl Sprite_IsCellAnimationFinished
cmp r0, #0
bne _021E6664
ldr r0, _021E6668 ; =0x00000728
mov r4, #0
ldrb r0, [r5, r0]
cmp r0, #0
bls _021E6660
ldr r7, _021E666C ; =0x0000071C
add r6, r7, #0
add r6, #0xc
_021E6648:
lsl r0, r4, #2
add r0, r5, r0
ldr r0, [r0, r7]
mov r1, #0
bl Set2dSpriteVisibleFlag
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
ldrb r0, [r5, r6]
cmp r4, r0
blo _021E6648
_021E6660:
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021E6664:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E6668: .word 0x00000728
_021E666C: .word 0x0000071C
thumb_func_end ov96_021E661C
thumb_func_start ov96_021E6670
ov96_021E6670: ; 0x021E6670
ldr r2, _021E6678 ; =0x00000718
str r1, [r0, r2]
bx lr
nop
_021E6678: .word 0x00000718
thumb_func_end ov96_021E6670
thumb_func_start ov96_021E667C
ov96_021E667C: ; 0x021E667C
push {r3, r4, lr}
sub sp, #0xc
ldr r1, _021E6780 ; =0x0000070D
add r4, r0, #0
ldrb r2, [r4, r1]
cmp r2, #4
bhi _021E677A
add r2, r2, r2
add r2, pc
ldrh r2, [r2, #6]
lsl r2, r2, #0x10
asr r2, r2, #0x10
add pc, r2
_021E6696: ; jump table
.short _021E66A0 - _021E6696 - 2 ; case 0
.short _021E66EA - _021E6696 - 2 ; case 1
.short _021E6706 - _021E6696 - 2 ; case 2
.short _021E6754 - _021E6696 - 2 ; case 3
.short _021E6774 - _021E6696 - 2 ; case 4
_021E66A0:
add r0, r1, #7
ldr r0, [r4, r0]
mov r1, #0
bl Set2dSpriteVisibleFlag
ldr r0, _021E6784 ; =0x00000899
bl PlaySE
mov r0, #0
str r0, [sp, #8]
mov r0, #2
lsl r0, r0, #0x12
str r0, [sp]
ldr r0, _021E6788 ; =0x0000070E
ldrh r1, [r4, r0]
sub r0, r0, #6
add r1, #0x48
lsl r1, r1, #0xc
str r1, [sp, #4]
ldr r0, [r4, r0]
add r1, sp, #0
bl Sprite_SetMatrix
ldr r0, _021E678C ; =0x00000708
mov r1, #3
ldr r0, [r4, r0]
bl Set2dSpriteAnimSeqNo
ldr r0, _021E678C ; =0x00000708
mov r1, #1
ldr r0, [r4, r0]
bl Set2dSpriteVisibleFlag
ldr r0, _021E6780 ; =0x0000070D
mov r1, #1
strb r1, [r4, r0]
b _021E677A
_021E66EA:
sub r0, r1, #1
ldrb r0, [r4, r0]
add r2, r0, #1
sub r0, r1, #1
strb r2, [r4, r0]
ldrb r0, [r4, r0]
cmp r0, #0x3c
bls _021E677A
mov r2, #0
sub r0, r1, #1
strb r2, [r4, r0]
mov r0, #2
strb r0, [r4, r1]
b _021E677A
_021E6706:
ldr r1, _021E6790 ; =0x00000D6C
ldr r1, [r4, r1]
cmp r1, #0
beq _021E6710
blx r1
_021E6710:
add r0, r4, #0
bl ov96_021E839C
cmp r0, #0
beq _021E6738
ldr r0, _021E6794 ; =0x00000898
bl PlaySE
mov r0, #0x71
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #0
bl Set2dSpriteAnimSeqNo
mov r0, #0x71
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #1
bl Set2dSpriteVisibleFlag
_021E6738:
ldr r0, _021E6798 ; =0x00000718
mov r1, #1
ldr r0, [r4, r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl GfGfx_EngineATogglePlanes
ldr r0, _021E6790 ; =0x00000D6C
mov r1, #0
str r1, [r4, r0]
ldr r0, _021E6780 ; =0x0000070D
mov r1, #3
strb r1, [r4, r0]
b _021E677A
_021E6754:
sub r0, r1, #1
ldrb r0, [r4, r0]
add r2, r0, #1
sub r0, r1, #1
strb r2, [r4, r0]
ldrb r0, [r4, r0]
cmp r0, #0x78
bls _021E677A
mov r2, #0
sub r0, r1, #1
strb r2, [r4, r0]
mov r0, #4
strb r0, [r4, r1]
add sp, #0xc
mov r0, #1
pop {r3, r4, pc}
_021E6774:
add sp, #0xc
mov r0, #1
pop {r3, r4, pc}
_021E677A:
mov r0, #0
add sp, #0xc
pop {r3, r4, pc}
.balign 4, 0
_021E6780: .word 0x0000070D
_021E6784: .word 0x00000899
_021E6788: .word 0x0000070E
_021E678C: .word 0x00000708
_021E6790: .word 0x00000D6C
_021E6794: .word 0x00000898
_021E6798: .word 0x00000718
thumb_func_end ov96_021E667C
thumb_func_start ov96_021E679C
ov96_021E679C: ; 0x021E679C
lsl r2, r0, #1
ldr r0, _021E67A8 ; =ov96_0221AAE8
ldrh r0, [r0, r2]
add r0, r1, r0
bx lr
nop
_021E67A8: .word ov96_0221AAE8
thumb_func_end ov96_021E679C
thumb_func_start ov96_021E67AC
ov96_021E67AC: ; 0x021E67AC
push {r3, lr}
mov r2, #0x7d
lsl r2, r2, #2
ldr r1, [r0, r2]
cmp r1, #0
beq _021E67C2
sub r2, #0x14
ldr r2, [r0, r2]
mov r1, #0
ldr r2, [r2, #4]
blx r2
_021E67C2:
pop {r3, pc}
thumb_func_end ov96_021E67AC
thumb_func_start ov96_021E67C4
ov96_021E67C4: ; 0x021E67C4
push {r3, r4, r5, lr}
add r4, r0, #0
mov r5, #1
bl ov96_021E5F24
cmp r0, #0
bne _021E67FC
ldr r1, _021E6810 ; =0x0000072A
mov r2, #0x7e
lsl r2, r2, #2
ldr r0, [r4, r2]
sub r2, #0x10
ldrb r1, [r4, r1]
add r2, r4, r2
bl ov96_021E811C
bl ov96_021E99F4
mov r3, #0x7a
lsl r3, r3, #2
add r1, r4, r3
add r3, #0xa0
add r2, r0, #0
ldr r3, [r4, r3]
mov r0, #0x16
bl ov96_021E87B4
add r5, r0, #0
_021E67FC:
cmp r5, #0
beq _021E680A
add r0, r4, #0
mov r1, #0x26
mov r2, #1
bl ov96_021E5FEC
_021E680A:
mov r0, #0
pop {r3, r4, r5, pc}
nop
_021E6810: .word 0x0000072A
thumb_func_end ov96_021E67C4
thumb_func_start ov96_021E6814
ov96_021E6814: ; 0x021E6814
push {r4, lr}
add r4, r0, #0
mov r0, #0xa
lsl r0, r0, #6
ldr r0, [r4, r0]
bl OverlayManager_Run
cmp r0, #0
beq _021E686C
mov r0, #0xa
lsl r0, r0, #6
ldr r0, [r4, r0]
bl OverlayManager_Delete
mov r1, #0x7e
lsl r1, r1, #2
ldr r0, [r4, r1]
ldr r2, [r0, #4]
cmp r2, #0
bne _021E6860
add r1, r1, #4
ldr r1, [r4, r1]
cmp r1, #0
beq _021E6852
mov r1, #1
strb r1, [r0, #0xe]
add r0, r4, #0
mov r1, #0x25
bl ov96_021E5FC8
b _021E686C
_021E6852:
mov r1, #0
strb r1, [r0, #0xe]
add r0, r4, #0
mov r1, #3
bl ov96_021E5FC8
b _021E686C
_021E6860:
mov r1, #0
strb r1, [r0, #0xe]
add r0, r4, #0
mov r1, #2
bl ov96_021E5FC8
_021E686C:
mov r0, #0
pop {r4, pc}
thumb_func_end ov96_021E6814
thumb_func_start ov96_021E6870
ov96_021E6870: ; 0x021E6870
push {r3, r4, r5, lr}
add r5, r1, #0
ldrb r2, [r5]
add r4, r0, #0
cmp r2, #3
bhi _021E694C
add r1, r2, r2
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021E6888: ; jump table
.short _021E6890 - _021E6888 - 2 ; case 0
.short _021E68B2 - _021E6888 - 2 ; case 1
.short _021E68C2 - _021E6888 - 2 ; case 2
.short _021E692A - _021E6888 - 2 ; case 3
_021E6890:
mov r0, #0x1e
ldr r1, _021E6950 ; =ov96_0221A8BC
lsl r0, r0, #4
str r1, [r4, r0]
mov r1, #0
add r0, #0xd
strb r1, [r4, r0]
mov r1, #0xf3
lsl r1, r1, #2
ldr r0, _021E6954 ; =ov96_0221DA68
add r1, r4, r1
bl ov96_021E5C80
ldrb r0, [r5]
add r0, r0, #1
strb r0, [r5]
b _021E694C
_021E68B2:
bl ov96_021E5C50
cmp r0, #0
beq _021E694C
ldrb r0, [r5]
add r0, r0, #1
strb r0, [r5]
b _021E694C
_021E68C2:
mov r0, #0xf3
lsl r0, r0, #2
add r1, r4, r0
ldr r3, [r1]
cmp r3, #0
bne _021E68D4
add r0, r2, #1
strb r0, [r5]
b _021E694C
_021E68D4:
add r2, r0, #0
sub r2, #0x18
ldr r3, [r4, r2]
add r2, r0, #0
sub r2, #8
add r2, r4, r2
cmp r3, r2
bne _021E68F0
add r2, r0, #0
sub r2, #0x18
str r1, [r4, r2]
mov r1, #0
sub r0, #0xc
str r1, [r4, r0]
_021E68F0:
ldr r3, _021E6958 ; =0x000003D1
add r0, r4, #0
sub r2, r3, #5
add r1, r4, r3
add r3, r3, #1
ldrb r3, [r4, r3]
ldr r2, [r4, r2]
lsl r3, r3, #2
ldr r2, [r2, r3]
blx r2
cmp r0, #0
beq _021E694C
add r0, r4, #0
mov r1, #0
bl ov96_021E5DFC
mov r0, #0xf1
lsl r0, r0, #2
add r1, r0, #0
add r2, r4, r0
sub r1, #0x10
str r2, [r4, r1]
mov r1, #0
sub r0, r0, #4
str r1, [r4, r0]
ldrb r0, [r5]
add r0, r0, #1
strb r0, [r5]
b _021E694C
_021E692A:
mov r2, #0x1e
lsl r2, r2, #4
ldr r2, [r4, r2]
mov r1, #0
ldr r2, [r2, #0xc]
blx r2
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
cmp r0, #0
beq _021E6944
bl GF_AssertFail
_021E6944:
add r0, r4, #0
mov r1, #3
bl ov96_021E5FC8
_021E694C:
mov r0, #0
pop {r3, r4, r5, pc}
.balign 4, 0
_021E6950: .word ov96_0221A8BC
_021E6954: .word ov96_0221DA68
_021E6958: .word 0x000003D1
thumb_func_end ov96_021E6870
thumb_func_start ov96_021E695C
ov96_021E695C: ; 0x021E695C
push {r4, lr}
add r4, r0, #0
mov r0, #2
mov r1, #0
lsl r0, r0, #8
str r1, [r4, r0]
bl ov96_021E99F8
mov r3, #2
lsl r3, r3, #8
add r1, r4, r3
add r3, #0x88
add r2, r0, #0
ldr r3, [r4, r3]
mov r0, #0x17
bl ov96_021E87EC
cmp r0, #0
beq _021E698A
add r0, r4, #0
mov r1, #0x26
bl ov96_021E5FC8
_021E698A:
mov r0, #0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021E695C
thumb_func_start ov96_021E6990
ov96_021E6990: ; 0x021E6990
push {r4, r5, r6, lr}
add r5, r0, #0
mov r1, #0
bl ov96_021E5D40
add r4, r0, #0
bl ov96_021E99FC
add r6, r0, #0
add r0, r5, #0
bl ov96_021E5F1C
add r3, r0, #0
mov r0, #0x18
add r1, r4, #0
add r2, r6, #0
bl ov96_021E87EC
cmp r0, #0
beq _021E69C0
add r0, r5, #0
mov r1, #0x26
bl ov96_021E5FC8
_021E69C0:
mov r0, #0
pop {r4, r5, r6, pc}
thumb_func_end ov96_021E6990
thumb_func_start ov96_021E69C4
ov96_021E69C4: ; 0x021E69C4
push {r3, r4, r5, lr}
add r4, r0, #0
mov r5, #1
bl ov96_021E5F24
cmp r0, #0
bne _021E69EA
bl ov96_021E9A04
ldr r1, _021E69FC ; =0x000005DC
mov r3, #0xa2
lsl r3, r3, #2
add r2, r0, #0
ldr r1, [r4, r1]
ldr r3, [r4, r3]
mov r0, #0x19
bl ov96_021E87EC
add r5, r0, #0
_021E69EA:
cmp r5, #0
beq _021E69F8
add r0, r4, #0
mov r1, #0x26
mov r2, #6
bl ov96_021E5FEC
_021E69F8:
mov r0, #0
pop {r3, r4, r5, pc}
.balign 4, 0
_021E69FC: .word 0x000005DC
thumb_func_end ov96_021E69C4
thumb_func_start ov96_021E6A00
ov96_021E6A00: ; 0x021E6A00
push {r3, r4, r5, lr}
add r4, r0, #0
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r4, r0]
ldr r0, [r0]
bl Save_Pokeathlon_Get
bl sub_020319F0
add r5, r0, #0
mov r0, #9
lsl r0, r0, #8
add r3, r4, r0
mov r2, #0xe
_021E6A1E:
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _021E6A1E
ldr r0, [r5]
str r0, [r3]
bl ov96_021E9A10
mov r3, #0xa2
mov r1, #9
lsl r3, r3, #2
lsl r1, r1, #8
add r2, r0, #0
ldr r3, [r4, r3]
mov r0, #0x1a
add r1, r4, r1
bl ov96_021E87EC
cmp r0, #0
beq _021E6A4E
add r0, r4, #0
mov r1, #0x26
bl ov96_021E5FC8
_021E6A4E:
mov r0, #0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021E6A00
thumb_func_start ov96_021E6A54
ov96_021E6A54: ; 0x021E6A54
push {r4, lr}
ldr r1, _021E6A88 ; =0x00000D2C
add r4, r0, #0
mov r2, #1
str r2, [r4, r1]
bl ov96_021E5F5C
mov r0, #0x1e
ldr r1, _021E6A8C ; =ov96_0221A808
lsl r0, r0, #4
str r1, [r4, r0]
mov r1, #0
add r0, #0xd
strb r1, [r4, r0]
mov r1, #0xf3
lsl r1, r1, #2
ldr r0, _021E6A90 ; =ov96_0221DA50
add r1, r4, r1
bl ov96_021E5C80
add r0, r4, #0
mov r1, #8
bl ov96_021E5FC8
mov r0, #0
pop {r4, pc}
.balign 4, 0
_021E6A88: .word 0x00000D2C
_021E6A8C: .word ov96_0221A808
_021E6A90: .word ov96_0221DA50
thumb_func_end ov96_021E6A54
thumb_func_start ov96_021E6A94
ov96_021E6A94: ; 0x021E6A94
push {r4, lr}
add r4, r0, #0
bl ov96_021E5C50
cmp r0, #0
beq _021E6AE0
add r0, r4, #0
bl ov96_021E5F54
add r1, r0, #0
mov r2, #0
add r1, #0x24
strb r2, [r1]
mov r1, #1
add r0, #0x4c
strb r1, [r0]
add r0, r4, #0
bl ov96_021E5F1C
mov r1, #1
bl ov96_021E87B0
add r0, r4, #0
mov r1, #6
bl ov96_021E601C
add r0, r4, #0
mov r1, #9
bl ov96_021E5FC8
mov r0, #0
bl sub_02004AD8
ldr r1, _021E6AE4 ; =0x0000046F
mov r0, #0x19
mov r2, #0
bl sub_02004EC4
_021E6AE0:
mov r0, #0
pop {r4, pc}
.balign 4, 0
_021E6AE4: .word 0x0000046F
thumb_func_end ov96_021E6A94
thumb_func_start ov96_021E6AE8
ov96_021E6AE8: ; 0x021E6AE8
push {r3, r4, r5, lr}
mov r1, #0xf3
add r4, r0, #0
lsl r1, r1, #2
add r2, r4, r1
ldr r3, [r2]
cmp r3, #0
bne _021E6B02
mov r1, #0xa
bl ov96_021E5FC8
mov r0, #0
pop {r3, r4, r5, pc}
_021E6B02:
add r0, r1, #0
sub r0, #0x18
ldr r3, [r4, r0]
add r0, r1, #0
sub r0, #8
add r0, r4, r0
cmp r3, r0
bne _021E6B1E
add r0, r1, #0
sub r0, #0x18
str r2, [r4, r0]
mov r0, #0
sub r1, #0xc
str r0, [r4, r1]
_021E6B1E:
ldr r3, _021E6BBC ; =0x000003D1
add r0, r4, #0
sub r2, r3, #5
add r1, r4, r3
add r3, r3, #1
ldrb r3, [r4, r3]
ldr r2, [r4, r2]
lsl r3, r3, #2
ldr r2, [r2, r3]
blx r2
cmp r0, #0
beq _021E6B5A
add r0, r4, #0
mov r1, #0
bl ov96_021E5DFC
mov r0, #0xf1
lsl r0, r0, #2
add r1, r0, #0
add r2, r4, r0
sub r1, #0x10
str r2, [r4, r1]
mov r1, #0
sub r0, r0, #4
str r1, [r4, r0]
add r0, r4, #0
mov r1, #0xa
bl ov96_021E5FC8
b _021E6BB6
_021E6B5A:
add r0, r4, #0
bl ov96_021E5F24
cmp r0, #0
bne _021E6BA0
bl ov96_021E9A14
mov r3, #0xad
lsl r3, r3, #2
add r1, r4, r3
sub r3, #0x2c
add r2, r0, #0
ldr r3, [r4, r3]
mov r0, #0x1b
bl ov96_021E87B4
mov r0, #0xb7
lsl r0, r0, #2
add r0, r4, r0
bl ov96_021E8A20
add r5, r0, #0
mov r0, #0xa3
lsl r0, r0, #2
add r0, r4, r0
bl ov96_021E8A20
mov r2, #0x28
_021E6B92:
ldrb r1, [r0]
add r0, r0, #1
strb r1, [r5]
add r5, r5, #1
sub r2, r2, #1
bne _021E6B92
b _021E6BB6
_021E6BA0:
bl ov96_021E9A14
mov r3, #0xa3
lsl r3, r3, #2
add r1, r4, r3
sub r3, r3, #4
add r2, r0, #0
ldr r3, [r4, r3]
mov r0, #0x1b
bl ov96_021E87B4
_021E6BB6:
mov r0, #0
pop {r3, r4, r5, pc}
nop
_021E6BBC: .word 0x000003D1
thumb_func_end ov96_021E6AE8
thumb_func_start ov96_021E6BC0
ov96_021E6BC0: ; 0x021E6BC0
push {r4, lr}
mov r2, #0x1e
add r4, r0, #0
lsl r2, r2, #4
ldr r2, [r4, r2]
mov r1, #0
ldr r2, [r2, #0xc]
blx r2
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
cmp r0, #0
beq _021E6BDE
bl GF_AssertFail
_021E6BDE:
add r0, r4, #0
mov r1, #0xb
bl ov96_021E5FC8
mov r0, #0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021E6BC0
thumb_func_start ov96_021E6BEC
ov96_021E6BEC: ; 0x021E6BEC
push {r4, lr}
add r4, r0, #0
mov r0, #0x1e
ldr r1, _021E6C18 ; =ov96_0221A8E4
lsl r0, r0, #4
str r1, [r4, r0]
mov r1, #0
add r0, #0xd
strb r1, [r4, r0]
mov r1, #0xf3
lsl r1, r1, #2
ldr r0, _021E6C1C ; =ov96_0221DA6C
add r1, r4, r1
bl ov96_021E5C80
add r0, r4, #0
mov r1, #0xc
bl ov96_021E5FC8
mov r0, #0
pop {r4, pc}
nop
_021E6C18: .word ov96_0221A8E4
_021E6C1C: .word ov96_0221DA6C
thumb_func_end ov96_021E6BEC
thumb_func_start ov96_021E6C20
ov96_021E6C20: ; 0x021E6C20
push {r4, lr}
add r4, r0, #0
bl ov96_021E5C50
cmp r0, #0
beq _021E6C3C
add r0, r4, #0
mov r1, #7
bl ov96_021E601C
add r0, r4, #0
mov r1, #0xd
bl ov96_021E5FC8
_021E6C3C:
mov r0, #0
pop {r4, pc}
thumb_func_end ov96_021E6C20
thumb_func_start ov96_021E6C40
ov96_021E6C40: ; 0x021E6C40
push {r4, lr}
mov r1, #0xf3
add r4, r0, #0
lsl r1, r1, #2
add r2, r4, r1
ldr r3, [r2]
cmp r3, #0
bne _021E6C5A
mov r1, #0xe
bl ov96_021E5FC8
mov r0, #0
pop {r4, pc}
_021E6C5A:
add r0, r1, #0
sub r0, #0x18
ldr r3, [r4, r0]
add r0, r1, #0
sub r0, #8
add r0, r4, r0
cmp r3, r0
bne _021E6C76
add r0, r1, #0
sub r0, #0x18
str r2, [r4, r0]
mov r0, #0
sub r1, #0xc
str r0, [r4, r1]
_021E6C76:
ldr r3, _021E6CB4 ; =0x000003D1
add r0, r4, #0
sub r2, r3, #5
add r1, r4, r3
add r3, r3, #1
ldrb r3, [r4, r3]
ldr r2, [r4, r2]
lsl r3, r3, #2
ldr r2, [r2, r3]
blx r2
cmp r0, #0
beq _021E6CB0
add r0, r4, #0
mov r1, #0
bl ov96_021E5DFC
mov r0, #0xf1
lsl r0, r0, #2
add r1, r0, #0
add r2, r4, r0
sub r1, #0x10
str r2, [r4, r1]
mov r1, #0
sub r0, r0, #4
str r1, [r4, r0]
add r0, r4, #0
mov r1, #0xe
bl ov96_021E5FC8
_021E6CB0:
mov r0, #0
pop {r4, pc}
.balign 4, 0
_021E6CB4: .word 0x000003D1
thumb_func_end ov96_021E6C40
thumb_func_start ov96_021E6CB8
ov96_021E6CB8: ; 0x021E6CB8
push {r4, lr}
mov r2, #0x1e
add r4, r0, #0
lsl r2, r2, #4
ldr r2, [r4, r2]
mov r1, #0
ldr r2, [r2, #0xc]
blx r2
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
cmp r0, #0
beq _021E6CD6
bl GF_AssertFail
_021E6CD6:
add r0, r4, #0
mov r1, #0xf
bl ov96_021E5FC8
mov r0, #0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021E6CB8
thumb_func_start ov96_021E6CE4
ov96_021E6CE4: ; 0x021E6CE4
push {r4, r5, r6, lr}
mov r1, #0x1f
add r4, r0, #0
lsl r1, r1, #4
ldr r1, [r4, r1]
ldr r6, _021E6D40 ; =0x0000FFFF
lsl r1, r1, #2
add r2, r4, r1
mov r1, #0xf6
lsl r1, r1, #2
ldr r1, [r2, r1]
ldr r2, _021E6D44 ; =0x00000728
lsl r5, r1, #0x18
mov r1, #0
strb r1, [r4, r2]
ldr r3, _021E6D48 ; =0x00000D2A
add r2, r2, #3
strh r6, [r4, r3]
strb r1, [r4, r2]
add r3, #0x42
str r1, [r4, r3]
bl ov96_021E5F5C
ldr r0, _021E6D4C ; =ov96_0221DA28
lsr r2, r5, #0x16
ldr r1, [r0, r2]
mov r0, #0x1e
lsl r0, r0, #4
str r1, [r4, r0]
mov r1, #0
add r0, #0xd
strb r1, [r4, r0]
ldr r0, _021E6D50 ; =_0221DA00
mov r1, #0xf3
lsl r1, r1, #2
ldr r0, [r0, r2]
add r1, r4, r1
bl ov96_021E5C80
add r0, r4, #0
mov r1, #0x10
bl ov96_021E5FC8
mov r0, #0
pop {r4, r5, r6, pc}
nop
_021E6D40: .word 0x0000FFFF
_021E6D44: .word 0x00000728
_021E6D48: .word 0x00000D2A
_021E6D4C: .word ov96_0221DA28
_021E6D50: .word _0221DA00
thumb_func_end ov96_021E6CE4
thumb_func_start ov96_021E6D54
ov96_021E6D54: ; 0x021E6D54
push {r4, lr}
add r4, r0, #0
bl ov96_021E5C50
cmp r0, #0
beq _021E6DD8
add r0, r4, #0
bl ov96_021E5F54
add r1, r0, #0
mov r2, #0
add r1, #0x24
strb r2, [r1]
mov r1, #1
add r0, #0x4c
strb r1, [r0]
add r0, r4, #0
bl ov96_021E5F1C
mov r1, #1
bl ov96_021E87B0
add r0, r4, #0
mov r1, #8
bl ov96_021E601C
mov r0, #0x1f
lsl r0, r0, #4
ldr r1, [r4, r0]
ldr r0, _021E6DDC ; =0x0000072A
ldrb r0, [r4, r0]
sub r0, r0, #1
cmp r1, r0
bne _021E6DAA
mov r0, #0
bl sub_02004AD8
ldr r1, _021E6DE0 ; =0x00000472
mov r0, #0x18
mov r2, #0
bl sub_02004EC4
b _021E6DBA
_021E6DAA:
mov r0, #0
bl sub_02004AD8
ldr r1, _021E6DE4 ; =0x00000471
mov r0, #0x18
mov r2, #0
bl sub_02004EC4
_021E6DBA:
mov r0, #7
mov r1, #1
bl sub_020053A8
add r0, r4, #0
mov r1, #0x11
bl ov96_021E5FC8
mov r0, #0x5c
bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _021E6DD8
bl GF_AssertFail
_021E6DD8:
mov r0, #0
pop {r4, pc}
.balign 4, 0
_021E6DDC: .word 0x0000072A
_021E6DE0: .word 0x00000472
_021E6DE4: .word 0x00000471
thumb_func_end ov96_021E6D54
thumb_func_start ov96_021E6DE8
ov96_021E6DE8: ; 0x021E6DE8
push {r4, lr}
mov r1, #0x3b
add r4, r0, #0
lsl r1, r1, #4
ldr r1, [r4, r1]
cmp r1, #0
beq _021E6E2C
bl ov96_021E5F24
cmp r0, #0
bne _021E6E22
mov r2, #0xe9
lsl r2, r2, #2
mov r3, #0xa2
ldr r1, [r4, r2]
add r2, #8
lsl r3, r3, #2
ldr r2, [r4, r2]
ldr r3, [r4, r3]
mov r0, #0x1c
bl ov96_021E87EC
cmp r0, #0
beq _021E6E32
add r0, r4, #0
mov r1, #0x26
bl ov96_021E5FC8
b _021E6E32
_021E6E22:
add r0, r4, #0
mov r1, #0x26
bl ov96_021E5FC8
b _021E6E32
_021E6E2C:
mov r1, #0x12
bl ov96_021E5FC8
_021E6E32:
mov r0, #0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021E6DE8
thumb_func_start ov96_021E6E38
ov96_021E6E38: ; 0x021E6E38
push {r3, r4, r5, lr}
mov r1, #0xf3
add r4, r0, #0
lsl r1, r1, #2
add r2, r4, r1
ldr r3, [r2]
cmp r3, #0
bne _021E6E52
mov r1, #0x18
bl ov96_021E5FC8
mov r0, #0
pop {r3, r4, r5, pc}
_021E6E52:
add r0, r1, #0
sub r0, #0x18
ldr r3, [r4, r0]
add r0, r1, #0
sub r0, #8
add r0, r4, r0
cmp r3, r0
bne _021E6E6E
add r0, r1, #0
sub r0, #0x18
str r2, [r4, r0]
mov r0, #0
sub r1, #0xc
str r0, [r4, r1]
_021E6E6E:
ldr r3, _021E6F14 ; =0x000003D1
add r0, r4, #0
sub r2, r3, #5
add r1, r4, r3
add r3, r3, #1
ldrb r3, [r4, r3]
ldr r2, [r4, r2]
lsl r3, r3, #2
ldr r2, [r2, r3]
blx r2
cmp r0, #0
beq _021E6EB2
add r0, r4, #0
mov r1, #0
bl ov96_021E5DFC
mov r0, #0xf1
lsl r0, r0, #2
add r1, r0, #0
add r2, r4, r0
sub r1, #0x10
str r2, [r4, r1]
mov r1, #0
sub r0, r0, #4
str r1, [r4, r0]
add r0, r4, #0
mov r1, #0x10
bl ov96_021E601C
add r0, r4, #0
mov r1, #0x13
bl ov96_021E5FC8
b _021E6F0E
_021E6EB2:
add r0, r4, #0
bl ov96_021E5F24
cmp r0, #0
bne _021E6EF8
bl ov96_021E9A14
mov r3, #0xad
lsl r3, r3, #2
add r1, r4, r3
sub r3, #0x2c
add r2, r0, #0
ldr r3, [r4, r3]
mov r0, #0x1b
bl ov96_021E87B4
mov r0, #0xb7
lsl r0, r0, #2
add r0, r4, r0
bl ov96_021E8A20
add r5, r0, #0
mov r0, #0xa3
lsl r0, r0, #2
add r0, r4, r0
bl ov96_021E8A20
mov r2, #0x28
_021E6EEA:
ldrb r1, [r0]
add r0, r0, #1
strb r1, [r5]
add r5, r5, #1
sub r2, r2, #1
bne _021E6EEA
b _021E6F0E
_021E6EF8:
bl ov96_021E9A14
mov r3, #0xa3
lsl r3, r3, #2
add r1, r4, r3
sub r3, r3, #4
add r2, r0, #0
ldr r3, [r4, r3]
mov r0, #0x1b
bl ov96_021E87B4
_021E6F0E:
mov r0, #0
pop {r3, r4, r5, pc}
nop
_021E6F14: .word 0x000003D1
thumb_func_end ov96_021E6E38
thumb_func_start ov96_021E6F18
ov96_021E6F18: ; 0x021E6F18
push {r4, lr}
add r4, r0, #0
bl ov96_021E5F5C
add r0, r4, #0
mov r1, #0x14
bl ov96_021E5FC8
mov r0, #0
pop {r4, pc}
thumb_func_end ov96_021E6F18
thumb_func_start ov96_021E6F2C
ov96_021E6F2C: ; 0x021E6F2C
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
mov r1, #0x1e
add r7, r0, #0
lsl r1, r1, #4
ldr r2, [r7, r1]
ldr r2, [r2, #0x10]
cmp r2, #0
beq _021E6FD0
add r1, #0xac
add r0, r7, r1
bl ov96_021E8A20
add r4, r0, #0
add r0, r7, #0
bl ov96_021E5F24
lsl r0, r0, #2
add r2, r7, r0
mov r0, #0x5e
lsl r0, r0, #4
ldrh r1, [r2, r0]
add r0, r0, #2
strh r1, [r4]
ldrh r0, [r2, r0]
strh r0, [r4, #2]
bl ov96_021E9A14
mov r3, #0xa3
lsl r3, r3, #2
add r1, r7, r3
sub r3, r3, #4
add r2, r0, #0
ldr r3, [r7, r3]
mov r0, #0x1d
bl ov96_021E87B4
str r0, [sp, #4]
cmp r0, #0
beq _021E6FE6
add r0, r7, #0
bl ov96_021E5F24
cmp r0, #0
bne _021E6FE6
add r0, r7, #0
bl ov96_021E5FAC
add r6, r0, #0
add r0, r7, #0
bl ov96_021E5D34
str r0, [sp]
cmp r0, #4
bge _021E6FE6
mov r0, #0x5e
lsl r0, r0, #4
add r1, r7, r0
ldr r0, [sp]
lsl r0, r0, #2
add r4, r1, r0
ldr r0, [sp]
add r5, r0, #0
mul r5, r6
_021E6FAC:
mov r0, #0xad
lsl r0, r0, #2
add r0, r7, r0
bl ov96_021E8A20
add r0, r0, r5
add r1, r4, #0
add r2, r6, #0
bl memcpy
ldr r0, [sp]
add r4, r4, #4
add r0, r0, #1
add r5, r5, r6
str r0, [sp]
cmp r0, #4
blt _021E6FAC
b _021E6FE6
_021E6FD0:
bl ov96_021E5F24
cmp r0, #0
bne _021E6FE2
add r0, r7, #0
bl ov96_021E75E4
str r0, [sp, #4]
b _021E6FE6
_021E6FE2:
mov r0, #1
str r0, [sp, #4]
_021E6FE6:
ldr r0, [sp, #4]
cmp r0, #0
beq _021E6FF4
add r0, r7, #0
mov r1, #0x26
bl ov96_021E5FC8
_021E6FF4:
mov r0, #0
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021E6F2C
thumb_func_start ov96_021E6FFC
ov96_021E6FFC: ; 0x021E6FFC
push {r4, r5, r6, lr}
add r5, r0, #0
bl ov96_021E5F54
add r4, r0, #0
bl ov96_021E9A14
add r6, r0, #0
add r0, r5, #0
bl ov96_021E5F1C
add r4, #0x28
add r3, r0, #0
mov r0, #0x1e
add r1, r4, #0
add r2, r6, #0
bl ov96_021E87B4
cmp r0, #0
beq _021E702C
add r0, r5, #0
mov r1, #0x26
bl ov96_021E5FC8
_021E702C:
mov r0, #0
pop {r4, r5, r6, pc}
thumb_func_end ov96_021E6FFC
thumb_func_start ov96_021E7030
ov96_021E7030: ; 0x021E7030
push {r4, lr}
add r4, r0, #0
mov r0, #0xdf
lsl r0, r0, #2
add r0, r4, r0
bl ov96_021E8A20
mov r1, #0x5f
lsl r1, r1, #4
add r3, r4, r1
mov r2, #0x12
_021E7046:
ldrh r1, [r0]
add r0, r0, #2
strh r1, [r3]
add r3, r3, #2
sub r2, r2, #1
bne _021E7046
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r4, r0]
ldr r2, [r0, #8]
cmp r2, #0
beq _021E7064
add r0, r4, #0
mov r1, #0
blx r2
_021E7064:
mov r1, #0x1f
lsl r1, r1, #4
ldr r1, [r4, r1]
add r0, r4, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_021E7658
add r0, r4, #0
mov r1, #0x17
bl ov96_021E5FC8
mov r0, #0
pop {r4, pc}
thumb_func_end ov96_021E7030
thumb_func_start ov96_021E7080
ov96_021E7080: ; 0x021E7080
push {r4, lr}
add r4, r0, #0
mov r0, #0x5c
bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _021E7092
bl GF_AssertFail
_021E7092:
mov r2, #0x1e
lsl r2, r2, #4
ldr r2, [r4, r2]
add r0, r4, #0
ldr r2, [r2, #0xc]
mov r1, #0
blx r2
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
cmp r0, #0
beq _021E70AE
bl GF_AssertFail
_021E70AE:
ldr r1, _021E70EC ; =0x0000072A
mov r0, #0x1f
lsl r0, r0, #4
ldrb r1, [r4, r1]
ldr r2, [r4, r0]
cmp r2, r1
bge _021E70DA
sub r0, #0x10
ldr r0, [r4, r0]
ldr r0, [r0, #8]
cmp r0, #0
beq _021E70D0
add r0, r4, #0
mov r1, #0x19
bl ov96_021E5FC8
b _021E70E6
_021E70D0:
add r0, r4, #0
mov r1, #0x18
bl ov96_021E5FC8
b _021E70E6
_021E70DA:
add r1, r2, #1
str r1, [r4, r0]
add r0, r4, #0
mov r1, #0x1d
bl ov96_021E5FC8
_021E70E6:
mov r0, #0
pop {r4, pc}
nop
_021E70EC: .word 0x0000072A
thumb_func_end ov96_021E7080
thumb_func_start ov96_021E70F0
ov96_021E70F0: ; 0x021E70F0
push {r3, lr}
mov r1, #0x1f
lsl r1, r1, #4
ldr r2, [r0, r1]
add r2, r2, #1
str r2, [r0, r1]
ldr r2, [r0, r1]
ldr r1, _021E7118 ; =0x0000072A
ldrb r1, [r0, r1]
cmp r2, r1
blt _021E710E
mov r1, #0x1d
bl ov96_021E5FC8
b _021E7114
_021E710E:
mov r1, #0xb
bl ov96_021E5FC8
_021E7114:
mov r0, #0
pop {r3, pc}
.balign 4, 0
_021E7118: .word 0x0000072A
thumb_func_end ov96_021E70F0
thumb_func_start ov96_021E711C
ov96_021E711C: ; 0x021E711C
push {r4, lr}
add r4, r0, #0
mov r0, #0x1e
ldr r1, _021E7148 ; =ov96_0221A86C
lsl r0, r0, #4
str r1, [r4, r0]
mov r1, #0
add r0, #0xd
strb r1, [r4, r0]
mov r1, #0xf3
lsl r1, r1, #2
ldr r0, _021E714C ; =ov96_0221DC24
add r1, r4, r1
bl ov96_021E5C80
add r0, r4, #0
mov r1, #0x1a
bl ov96_021E5FC8
mov r0, #0
pop {r4, pc}
nop
_021E7148: .word ov96_0221A86C
_021E714C: .word ov96_0221DC24
thumb_func_end ov96_021E711C
thumb_func_start ov96_021E7150
ov96_021E7150: ; 0x021E7150
push {r4, lr}
add r4, r0, #0
bl ov96_021E5C50
cmp r0, #0
beq _021E718C
add r0, r4, #0
bl ov96_021E5F54
add r1, r0, #0
mov r2, #0
add r1, #0x24
strb r2, [r1]
mov r1, #1
add r0, #0x4c
strb r1, [r0]
add r0, r4, #0
bl ov96_021E5F1C
mov r1, #1
bl ov96_021E87B0
add r0, r4, #0
mov r1, #0xb
bl ov96_021E601C
add r0, r4, #0
mov r1, #0x1b
bl ov96_021E5FC8
_021E718C:
mov r0, #0
pop {r4, pc}
thumb_func_end ov96_021E7150
thumb_func_start ov96_021E7190
ov96_021E7190: ; 0x021E7190
push {r3, r4, r5, lr}
mov r1, #0xf3
add r4, r0, #0
lsl r1, r1, #2
add r2, r4, r1
ldr r3, [r2]
cmp r3, #0
bne _021E71AA
mov r1, #0x1c
bl ov96_021E5FC8
mov r0, #0
pop {r3, r4, r5, pc}
_021E71AA:
add r0, r1, #0
sub r0, #0x18
ldr r3, [r4, r0]
add r0, r1, #0
sub r0, #8
add r0, r4, r0
cmp r3, r0
bne _021E71C6
add r0, r1, #0
sub r0, #0x18
str r2, [r4, r0]
mov r0, #0
sub r1, #0xc
str r0, [r4, r1]
_021E71C6:
ldr r3, _021E7264 ; =0x000003D1
add r0, r4, #0
sub r2, r3, #5
add r1, r4, r3
add r3, r3, #1
ldrb r3, [r4, r3]
ldr r2, [r4, r2]
lsl r3, r3, #2
ldr r2, [r2, r3]
blx r2
cmp r0, #0
beq _021E7202
add r0, r4, #0
mov r1, #0
bl ov96_021E5DFC
mov r0, #0xf1
lsl r0, r0, #2
add r1, r0, #0
add r2, r4, r0
sub r1, #0x10
str r2, [r4, r1]
mov r1, #0
sub r0, r0, #4
str r1, [r4, r0]
add r0, r4, #0
mov r1, #0x1c
bl ov96_021E5FC8
b _021E725E
_021E7202:
add r0, r4, #0
bl ov96_021E5F24
cmp r0, #0
bne _021E7248
bl ov96_021E9A14
mov r3, #0xad
lsl r3, r3, #2
add r1, r4, r3
sub r3, #0x2c
add r2, r0, #0
ldr r3, [r4, r3]
mov r0, #0x1b
bl ov96_021E87B4
mov r0, #0xb7
lsl r0, r0, #2
add r0, r4, r0
bl ov96_021E8A20
add r5, r0, #0
mov r0, #0xa3
lsl r0, r0, #2
add r0, r4, r0
bl ov96_021E8A20
mov r2, #0x28
_021E723A:
ldrb r1, [r0]
add r0, r0, #1
strb r1, [r5]
add r5, r5, #1
sub r2, r2, #1
bne _021E723A
b _021E725E
_021E7248:
bl ov96_021E9A14
mov r3, #0xa3
lsl r3, r3, #2
add r1, r4, r3
sub r3, r3, #4
add r2, r0, #0
ldr r3, [r4, r3]
mov r0, #0x1b
bl ov96_021E87B4
_021E725E:
mov r0, #0
pop {r3, r4, r5, pc}
nop
_021E7264: .word 0x000003D1
thumb_func_end ov96_021E7190
thumb_func_start ov96_021E7268
ov96_021E7268: ; 0x021E7268
push {r4, lr}
mov r2, #0x1e
add r4, r0, #0
lsl r2, r2, #4
ldr r2, [r4, r2]
mov r1, #0
ldr r2, [r2, #0xc]
blx r2
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
cmp r0, #0
beq _021E7286
bl GF_AssertFail
_021E7286:
add r0, r4, #0
mov r1, #0x18
bl ov96_021E5FC8
mov r0, #0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021E7268
thumb_func_start ov96_021E7294
ov96_021E7294: ; 0x021E7294
push {r4, lr}
add r4, r0, #0
bl ov96_021E5F5C
mov r0, #0x1e
ldr r1, _021E72C4 ; =ov96_0221A844
lsl r0, r0, #4
str r1, [r4, r0]
mov r1, #0
add r0, #0xd
strb r1, [r4, r0]
mov r1, #0xf3
lsl r1, r1, #2
ldr r0, _021E72C8 ; =ov96_0221DA5C
add r1, r4, r1
bl ov96_021E5C80
add r0, r4, #0
mov r1, #0x20
bl ov96_021E5FC8
mov r0, #0
pop {r4, pc}
nop
_021E72C4: .word ov96_0221A844
_021E72C8: .word ov96_0221DA5C
thumb_func_end ov96_021E7294
thumb_func_start ov96_021E72CC
ov96_021E72CC: ; 0x021E72CC
push {r4, lr}
add r4, r0, #0
bl ov96_021E5C50
cmp r0, #0
beq _021E7318
add r0, r4, #0
bl ov96_021E5F54
add r1, r0, #0
mov r2, #0
add r1, #0x24
strb r2, [r1]
mov r1, #1
add r0, #0x4c
strb r1, [r0]
add r0, r4, #0
bl ov96_021E5F1C
mov r1, #1
bl ov96_021E87B0
add r0, r4, #0
mov r1, #0xc
bl ov96_021E601C
add r0, r4, #0
mov r1, #0x21
bl ov96_021E5FC8
mov r0, #0
bl sub_02004AD8
ldr r1, _021E731C ; =0x00000474
mov r0, #0x19
mov r2, #0
bl sub_02004EC4
_021E7318:
mov r0, #0
pop {r4, pc}
.balign 4, 0
_021E731C: .word 0x00000474
thumb_func_end ov96_021E72CC
thumb_func_start ov96_021E7320
ov96_021E7320: ; 0x021E7320
push {r3, r4, r5, lr}
mov r1, #0xf3
add r4, r0, #0
lsl r1, r1, #2
add r2, r4, r1
ldr r3, [r2]
cmp r3, #0
bne _021E733A
mov r1, #0x22
bl ov96_021E5FC8
mov r0, #0
pop {r3, r4, r5, pc}
_021E733A:
add r0, r1, #0
sub r0, #0x18
ldr r3, [r4, r0]
add r0, r1, #0
sub r0, #8
add r0, r4, r0
cmp r3, r0
bne _021E7356
add r0, r1, #0
sub r0, #0x18
str r2, [r4, r0]
mov r0, #0
sub r1, #0xc
str r0, [r4, r1]
_021E7356:
ldr r3, _021E73F4 ; =0x000003D1
add r0, r4, #0
sub r2, r3, #5
add r1, r4, r3
add r3, r3, #1
ldrb r3, [r4, r3]
ldr r2, [r4, r2]
lsl r3, r3, #2
ldr r2, [r2, r3]
blx r2
cmp r0, #0
beq _021E7392
add r0, r4, #0
mov r1, #0
bl ov96_021E5DFC
mov r0, #0xf1
lsl r0, r0, #2
add r1, r0, #0
add r2, r4, r0
sub r1, #0x10
str r2, [r4, r1]
mov r1, #0
sub r0, r0, #4
str r1, [r4, r0]
add r0, r4, #0
mov r1, #0x22
bl ov96_021E5FC8
b _021E73EE
_021E7392:
add r0, r4, #0
bl ov96_021E5F24
cmp r0, #0
bne _021E73D8
bl ov96_021E9A14
mov r3, #0xad
lsl r3, r3, #2
add r1, r4, r3
sub r3, #0x2c
add r2, r0, #0
ldr r3, [r4, r3]
mov r0, #0x1b
bl ov96_021E87B4
mov r0, #0xb7
lsl r0, r0, #2
add r0, r4, r0
bl ov96_021E8A20
add r5, r0, #0
mov r0, #0xa3
lsl r0, r0, #2
add r0, r4, r0
bl ov96_021E8A20
mov r2, #0x28
_021E73CA:
ldrb r1, [r0]
add r0, r0, #1
strb r1, [r5]
add r5, r5, #1
sub r2, r2, #1
bne _021E73CA
b _021E73EE
_021E73D8:
bl ov96_021E9A14
mov r3, #0xa3
lsl r3, r3, #2
add r1, r4, r3
sub r3, r3, #4
add r2, r0, #0
ldr r3, [r4, r3]
mov r0, #0x1b
bl ov96_021E87B4
_021E73EE:
mov r0, #0
pop {r3, r4, r5, pc}
nop
_021E73F4: .word 0x000003D1
thumb_func_end ov96_021E7320
thumb_func_start ov96_021E73F8
ov96_021E73F8: ; 0x021E73F8
push {r3, r4, r5, r6, r7, lr}
mov r2, #0x1e
add r5, r0, #0
lsl r2, r2, #4
ldr r2, [r5, r2]
mov r1, #0
ldr r2, [r2, #0xc]
blx r2
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r5, r0]
cmp r0, #0
beq _021E7416
bl GF_AssertFail
_021E7416:
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r0, [r0]
bl Save_ApricornBox_Get
add r7, r0, #0
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r0, [r0]
bl Save_PlayerData_GetProfileAddr
str r0, [sp]
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r0, [r0]
bl Save_Pokeathlon_Get
bl sub_0203199C
add r6, r0, #0
bl sub_02031B10
lsl r4, r0, #2
mov r0, #0xa1
lsl r0, r0, #2
ldr r0, [r5, r0]
add r1, r4, #0
bl AllocFromHeapAtEnd
ldr r1, _021E74A4 ; =0x00000D68
add r2, r4, #0
str r0, [r5, r1]
ldr r0, [r5, r1]
mov r1, #0
bl memset
mov r3, #0xa1
lsl r3, r3, #2
ldr r1, [sp]
ldr r2, [r6, #0x70]
ldr r3, [r5, r3]
add r0, r7, #0
bl sub_020320E0
ldr r1, _021E74A8 ; =0x00000D64
str r0, [r5, r1]
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r0, [r0, #4]
cmp r0, #1
bne _021E7496
add r0, r5, #0
mov r1, #0xe
bl ov96_021E601C
add r0, r5, #0
mov r1, #0x23
bl ov96_021E5FC8
b _021E749E
_021E7496:
add r0, r5, #0
mov r1, #0x25
bl ov96_021E5FC8
_021E749E:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_021E74A4: .word 0x00000D68
_021E74A8: .word 0x00000D64
thumb_func_end ov96_021E73F8
thumb_func_start ov96_021E74AC
ov96_021E74AC: ; 0x021E74AC
push {r4, lr}
add r4, r0, #0
bl ov96_021E5F24
bl ov96_021E9A18
mov r3, #0xa2
ldr r1, _021E74DC ; =0x00000B44
lsl r3, r3, #2
add r2, r0, #0
ldr r3, [r4, r3]
mov r0, #0x1f
add r1, r4, r1
bl ov96_021E87EC
cmp r0, #0
beq _021E74D6
add r0, r4, #0
mov r1, #0x26
bl ov96_021E5FC8
_021E74D6:
mov r0, #0
pop {r4, pc}
nop
_021E74DC: .word 0x00000B44
thumb_func_end ov96_021E74AC
thumb_func_start ov96_021E74E0
ov96_021E74E0: ; 0x021E74E0
push {r4, r5, r6, lr}
add r5, r0, #0
mov r1, #0
bl ov96_021E5D78
add r4, r0, #0
bl ov96_021E9A1C
add r6, r0, #0
add r0, r5, #0
bl ov96_021E5F1C
add r3, r0, #0
mov r0, #0x20
add r1, r4, #0
add r2, r6, #0
bl ov96_021E87EC
cmp r0, #0
beq _021E7510
add r0, r5, #0
mov r1, #0x26
bl ov96_021E5FC8
_021E7510:
mov r0, #0
pop {r4, r5, r6, pc}
thumb_func_end ov96_021E74E0
thumb_func_start ov96_021E7514
ov96_021E7514: ; 0x021E7514
push {r4, lr}
add r4, r0, #0
bl sub_02031B10
ldr r1, _021E7540 ; =0x00000D64
mov r3, #0xa2
lsl r3, r3, #2
add r2, r0, #0
ldr r1, [r4, r1]
ldr r3, [r4, r3]
mov r0, #0x21
bl ov96_021E87EC
cmp r0, #0
beq _021E753A
add r0, r4, #0
mov r1, #0x26
bl ov96_021E5FC8
_021E753A:
mov r0, #0
pop {r4, pc}
nop
_021E7540: .word 0x00000D64
thumb_func_end ov96_021E7514
thumb_func_start ov96_021E7544
ov96_021E7544: ; 0x021E7544
push {r4, r5, r6, lr}
add r5, r0, #0
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r0, [r0]
bl Save_ApricornBox_Get
add r4, r0, #0
add r0, r5, #0
bl ov96_021E5D34
add r6, r0, #0
bl sub_0203769C
ldr r1, _021E758C ; =0x00000D68
add r3, r0, #0
ldr r1, [r5, r1]
add r0, r4, #0
add r2, r6, #0
bl sub_020321A0
mov r0, #0x5c
bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _021E757E
bl GF_AssertFail
_021E757E:
add r0, r5, #0
mov r1, #0x25
bl ov96_021E5FC8
mov r0, #0
pop {r4, r5, r6, pc}
nop
_021E758C: .word 0x00000D68
thumb_func_end ov96_021E7544
thumb_func_start ov96_021E7590
ov96_021E7590: ; 0x021E7590
push {r4, lr}
add r4, r0, #0
mov r0, #0x5c
bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _021E75A2
bl GF_AssertFail
_021E75A2:
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r4, r0]
ldrb r0, [r0, #0xe]
cmp r0, #0
bne _021E75B4
add r0, r4, #0
bl ov96_021E7718
_021E75B4:
mov r0, #1
pop {r4, pc}
thumb_func_end ov96_021E7590
thumb_func_start ov96_021E75B8
ov96_021E75B8: ; 0x021E75B8
mov r0, #0
bx lr
thumb_func_end ov96_021E75B8
thumb_func_start ov96_021E75BC
ov96_021E75BC: ; 0x021E75BC
push {r4, lr}
add r4, r0, #0
bl OamManager_ApplyAndResetBuffers
add r0, r4, #0
bl DoScheduledBgGpuUpdates
bl GF_RunVramTransferTasks
ldr r3, _021E75DC ; =0x027E0000
ldr r1, _021E75E0 ; =0x00003FF8
mov r0, #1
ldr r2, [r3, r1]
orr r0, r2
str r0, [r3, r1]
pop {r4, pc}
.balign 4, 0
_021E75DC: .word 0x027E0000
_021E75E0: .word 0x00003FF8
thumb_func_end ov96_021E75BC
thumb_func_start ov96_021E75E4
ov96_021E75E4: ; 0x021E75E4
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r7, r0, #0
bl ov96_021E5F54
str r0, [sp]
add r0, r7, #0
bl ov96_021E5F24
cmp r0, #0
beq _021E7604
bl GF_AssertFail
add sp, #8
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021E7604:
mov r0, #0x5e
lsl r0, r0, #4
add r5, r7, r0
ldr r0, [sp]
mov r4, #0
str r0, [sp, #4]
add r0, #0x28
str r0, [sp, #4]
_021E7614:
add r0, r7, #0
bl ov96_021E5FAC
add r6, r0, #0
ldr r0, [sp, #4]
bl ov96_021E8A20
add r1, r4, #0
mul r1, r6
add r0, r0, r1
add r1, r5, #0
add r2, r6, #0
bl memcpy
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
blt _021E7614
bl ov96_021E9A14
add r4, r0, #0
add r0, r7, #0
bl ov96_021E5F1C
ldr r1, [sp]
add r3, r0, #0
add r1, #0x28
mov r0, #0x1e
add r2, r4, #0
str r1, [sp]
bl ov96_021E87B4
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021E75E4
thumb_func_start ov96_021E7658
ov96_021E7658: ; 0x021E7658
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
str r1, [sp]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r7, r0, #0x18
ldr r0, [sp]
mov r4, #0
lsl r0, r0, #1
add r6, r5, r0
_021E766E:
ldr r0, _021E7708 ; =0x00000614
add r1, r4, #0
ldr r0, [r5, r0]
bl ov96_021E9370
add r3, r0, #0
lsl r0, r4, #3
add r2, r6, r0
ldrh r1, [r3, #0xa]
ldr r0, _021E770C ; =0x000008B4
strh r1, [r2, r0]
ldr r1, [r3, #0xc]
add r0, #0x20
strh r1, [r2, r0]
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #4
blo _021E766E
mov r4, #0
_021E7696:
ldr r0, _021E7708 ; =0x00000614
add r1, r4, #0
ldr r0, [r5, r0]
bl ov96_021E94EC
add r6, r0, #0
ldr r0, [r6]
cmp r0, r7
beq _021E76B2
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #4
blo _021E7696
_021E76B2:
cmp r4, #4
bne _021E76BC
bl GF_AssertFail
pop {r3, r4, r5, r6, r7, pc}
_021E76BC:
ldrb r0, [r6, #9]
cmp r0, #0
bne _021E76D4
ldr r0, [sp]
mov r1, #1
add r2, r5, r0
ldr r0, _021E7710 ; =0x000008F4
strb r1, [r2, r0]
mov r1, #0
add r0, r0, #4
strb r1, [r2, r0]
pop {r3, r4, r5, r6, r7, pc}
_021E76D4:
ldr r0, [sp]
mov r2, #0
add r1, r5, r0
ldr r0, _021E7710 ; =0x000008F4
strb r2, [r1, r0]
ldr r0, _021E7708 ; =0x00000614
mov r1, #3
ldr r0, [r5, r0]
bl ov96_021E94EC
ldrb r1, [r0, #9]
ldrb r0, [r6, #9]
cmp r1, r0
bne _021E76FC
ldr r0, [sp]
mov r2, #1
add r1, r5, r0
ldr r0, _021E7714 ; =0x000008F8
strb r2, [r1, r0]
pop {r3, r4, r5, r6, r7, pc}
_021E76FC:
ldr r0, [sp]
mov r2, #0
add r1, r5, r0
ldr r0, _021E7714 ; =0x000008F8
strb r2, [r1, r0]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E7708: .word 0x00000614
_021E770C: .word 0x000008B4
_021E7710: .word 0x000008F4
_021E7714: .word 0x000008F8
thumb_func_end ov96_021E7658
thumb_func_start ov96_021E7718
ov96_021E7718: ; 0x021E7718
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r0, [r0]
bl Save_Pokeathlon_Get
add r6, r0, #0
add r0, r5, #0
bl ov96_021E5D6C
add r4, r0, #0
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r0, [r0]
bl Save_VarsFlags_Get
str r0, [sp]
mov r0, #0x1d
lsl r0, r0, #4
ldrh r0, [r4, r0]
lsl r0, r0, #0x1f
lsr r0, r0, #0x1f
beq _021E7772
add r0, r5, #0
bl ov96_021E7FA8
ldr r0, [sp]
mov r1, #0xf0
bl Save_VarsFlags_CheckFlagInArray
cmp r0, #0
bne _021E7772
add r0, r5, #0
bl ov96_021E8084
cmp r0, #0
beq _021E7772
ldr r0, [sp]
mov r1, #0xf0
bl Save_VarsFlags_SetFlagInArray
_021E7772:
ldr r0, _021E7868 ; =0x000001D2
ldrh r7, [r4, r0]
add r0, #0x26
ldr r0, [r5, r0]
ldrb r0, [r0, #0xc]
cmp r0, #0xa
bne _021E7784
lsl r0, r7, #0x11
lsr r7, r0, #0x10
_021E7784:
add r0, r6, #0
add r1, r7, #0
bl SavePokeathlon_AddAthletePoints
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r0, [r0, #4]
cmp r0, #1
bne _021E77A8
add r0, r6, #0
bl sub_020319E4
add r1, r0, #0
add r0, r5, #0
bl ov96_021E7A2C
b _021E780A
_021E77A8:
add r0, r6, #0
bl sub_0203197C
str r0, [sp, #4]
add r0, r6, #0
bl sub_02031990
add r2, r0, #0
ldr r1, [sp, #4]
add r0, r5, #0
bl ov96_021E7BA8
mov r0, #0x1d
lsl r0, r0, #4
ldrh r0, [r4, r0]
lsl r0, r0, #0x1f
lsr r0, r0, #0x1f
beq _021E77FC
add r0, r6, #0
bl sub_020319A4
add r1, r0, #0
add r0, r5, #0
bl ov96_021E786C
ldr r0, [sp]
mov r1, #0xef
bl Save_VarsFlags_CheckFlagInArray
cmp r0, #0
bne _021E77FC
add r0, r6, #0
bl sub_020319A4
bl ov96_021E8060
cmp r0, #0
beq _021E77FC
ldr r0, [sp]
mov r1, #0xef
bl Save_VarsFlags_SetFlagInArray
_021E77FC:
add r0, r6, #0
bl sub_020319DC
add r1, r0, #0
add r0, r5, #0
bl ov96_021E7938
_021E780A:
add r0, r6, #0
bl sub_020319F0
add r1, r0, #0
add r0, r5, #0
bl ov96_021E7D6C
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r0, [r0, #4]
cmp r0, #0
bne _021E7842
ldr r0, [sp]
mov r1, #0xf1
bl Save_VarsFlags_CheckFlagInArray
cmp r0, #0
bne _021E7842
add r0, r5, #0
bl ov96_021E80C4
cmp r0, #0
beq _021E7842
ldr r0, [sp]
mov r1, #0xf1
bl Save_VarsFlags_SetFlagInArray
_021E7842:
ldr r1, _021E7868 ; =0x000001D2
add r0, r1, #0
add r0, #0x26
ldrh r2, [r4, r1]
ldr r0, [r5, r0]
strh r2, [r0, #0xa]
add r0, r1, #0
add r0, #0x26
ldr r0, [r5, r0]
strh r7, [r0, #8]
sub r0, r1, #2
ldrh r0, [r4, r0]
add r1, #0x26
lsl r0, r0, #0x1c
lsr r2, r0, #0x1e
ldr r0, [r5, r1]
strb r2, [r0, #0xd]
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E7868: .word 0x000001D2
thumb_func_end ov96_021E7718
thumb_func_start ov96_021E786C
ov96_021E786C: ; 0x021E786C
push {r3, r4, r5, r6, r7, lr}
mov r2, #0x7e
lsl r2, r2, #2
str r0, [sp]
ldr r0, [r0, r2]
ldrb r2, [r0, #0xc]
mov r0, #0x2c
mul r0, r2
add r4, r1, r0
ldr r1, _021E7918 ; =0x000008FE
ldr r0, [sp]
ldrh r1, [r0, r1]
ldrh r0, [r4, #6]
cmp r1, r0
bls _021E7914
strh r1, [r4, #6]
ldrh r1, [r4, #6]
ldr r0, _021E791C ; =0x000003E7
cmp r1, r0
bls _021E7896
strh r0, [r4, #6]
_021E7896:
ldr r1, _021E791C ; =0x000003E7
ldr r5, [sp]
ldr r7, _021E7920 ; =0x000008B4
mov r3, #0
add r6, r4, #0
add r0, r1, #0
_021E78A2:
ldrh r2, [r5, r7]
strh r2, [r6]
cmp r2, r0
bls _021E78AC
strh r1, [r6]
_021E78AC:
add r3, r3, #1
add r5, r5, #2
add r6, r6, #2
cmp r3, #3
blt _021E78A2
ldr r0, [sp]
bl ov96_021E5F24
add r1, r0, #0
ldr r0, [sp]
bl ov96_021E5D50
add r1, r4, #0
ldr r3, _021E7924 ; =0xFFFEFFFF
mov r2, #0
add r1, #8
_021E78CC:
ldr r6, [r1]
ldr r5, _021E7928 ; =0xFFFFFE00
ldrh r7, [r0]
and r5, r6
ldr r6, _021E792C ; =0x000001FF
add r2, r2, #1
and r6, r7
orr r6, r5
ldr r5, _021E7930 ; =0xFFFFC1FF
str r6, [r1]
and r5, r6
ldrh r6, [r0, #2]
lsl r6, r6, #0x1b
lsr r6, r6, #0x12
orr r6, r5
ldr r5, _021E7934 ; =0xFFFF3FFF
str r6, [r1]
and r5, r6
ldrb r6, [r0, #0x11]
lsl r6, r6, #0x1e
lsr r6, r6, #0x10
orr r5, r6
str r5, [r1]
ldrb r6, [r0, #0x10]
and r5, r3
lsl r6, r6, #0x1f
lsr r6, r6, #0xf
orr r5, r6
str r5, [r1]
ldr r5, [r0, #4]
add r0, #0x28
str r5, [r4, #0xc]
add r1, #0xc
add r4, #0xc
cmp r2, #3
blt _021E78CC
_021E7914:
pop {r3, r4, r5, r6, r7, pc}
nop
_021E7918: .word 0x000008FE
_021E791C: .word 0x000003E7
_021E7920: .word 0x000008B4
_021E7924: .word 0xFFFEFFFF
_021E7928: .word 0xFFFFFE00
_021E792C: .word 0x000001FF
_021E7930: .word 0xFFFFC1FF
_021E7934: .word 0xFFFF3FFF
thumb_func_end ov96_021E786C
thumb_func_start ov96_021E7938
ov96_021E7938: ; 0x021E7938
push {r3, r4, r5, r6, r7, lr}
sub sp, #0xd0
str r0, [sp]
mov r0, #0
str r1, [sp, #4]
str r0, [sp, #8]
_021E7944:
ldr r0, [sp, #8]
lsl r1, r0, #2
ldr r0, [sp]
add r1, r0, r1
mov r0, #0xf6
lsl r0, r0, #2
ldr r0, [r1, r0]
mov r1, #0x2c
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r2, r0, #0
mul r2, r1
ldr r1, [sp, #4]
add r7, r1, r2
ldr r2, [r7, #0x28]
ldr r1, _021E7A20 ; =0x0098967F
cmp r2, r1
bhs _021E796C
add r1, r2, #1
str r1, [r7, #0x28]
_021E796C:
ldr r1, _021E7A24 ; =_0221A7D8
mov r3, #0
ldrb r0, [r1, r0]
add r2, sp, #0x30
str r0, [sp, #0xc]
_021E7976:
lsl r0, r3, #3
add r5, r7, r0
ldrh r0, [r7, r0]
lsl r1, r3, #5
add r6, r2, r1
strh r0, [r2, r1]
mov r4, #0
_021E7984:
lsl r1, r4, #1
add r0, r5, r1
ldrh r0, [r0, #2]
add r1, r6, r1
strh r0, [r1, #2]
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _021E7984
add r0, r3, #1
lsl r0, r0, #0x18
lsr r3, r0, #0x18
cmp r3, #5
blo _021E7976
ldr r0, [sp]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r2, r0, #0x15
ldr r0, [sp, #8]
lsl r1, r0, #1
ldr r0, [sp]
add r0, r0, r2
add r1, r1, r0
ldr r0, _021E7A28 ; =0x000008D4
ldrh r1, [r1, r0]
add r0, sp, #0x10
strh r1, [r0]
ldr r0, [sp]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r2, r0, #0x18
mov r1, #0x3f
ldr r0, [sp]
lsl r1, r1, #4
add r1, r0, r1
mov r0, #0x7c
mul r0, r2
add r0, r1, r0
mov r1, #0
add r3, sp, #0x10
mov r2, #0x28
_021E79DC:
add r5, r1, #0
mul r5, r2
add r4, r0, r5
ldrh r4, [r4, #2]
ldrh r5, [r0, r5]
lsl r4, r4, #0xa
add r4, r4, r5
lsl r5, r1, #1
add r1, r1, #1
lsl r1, r1, #0x18
add r5, r3, r5
lsr r1, r1, #0x18
strh r4, [r5, #2]
cmp r1, #3
blo _021E79DC
ldr r0, [sp, #0xc]
add r1, r3, #0
add r2, sp, #0x30
bl ov96_021E7C04
ldr r0, [sp]
add r1, r7, #0
add r2, sp, #0x30
bl ov96_021E7C94
ldr r0, [sp, #8]
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #8]
cmp r0, #3
blo _021E7944
add sp, #0xd0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E7A20: .word 0x0098967F
_021E7A24: .word _0221A7D8
_021E7A28: .word 0x000008D4
thumb_func_end ov96_021E7938
thumb_func_start ov96_021E7A2C
ov96_021E7A2C: ; 0x021E7A2C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0xe0
str r0, [sp]
str r1, [sp, #4]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x10]
mov r0, #0
str r0, [sp, #8]
_021E7A42:
ldr r0, [sp, #8]
lsl r1, r0, #2
ldr r0, [sp]
add r1, r0, r1
mov r0, #0xf6
lsl r0, r0, #2
ldr r0, [r1, r0]
mov r1, #0xa4
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r2, r0, #0
mul r2, r1
ldr r1, [sp, #4]
add r1, r1, r2
str r1, [sp, #0x14]
ldr r2, [r1, #0x28]
ldr r1, _021E7B9C ; =0x0098967F
cmp r2, r1
bhs _021E7A6E
ldr r1, [sp, #0x14]
add r2, r2, #1
str r2, [r1, #0x28]
_021E7A6E:
ldr r1, _021E7BA0 ; =_0221A7D8
add r4, sp, #0x40
ldrb r0, [r1, r0]
mov r1, #0
mov r7, #0x18
str r0, [sp, #0x18]
_021E7A7A:
ldr r2, [sp, #0x14]
lsl r3, r1, #3
add r6, r2, r3
ldrh r2, [r2, r3]
lsl r5, r1, #5
add r0, r4, r5
strh r2, [r4, r5]
mov r5, #0
_021E7A8A:
lsl r3, r5, #1
add r2, r6, r3
ldrh r2, [r2, #2]
add r3, r0, r3
strh r2, [r3, #2]
add r2, r5, #1
lsl r2, r2, #0x18
lsr r5, r2, #0x18
cmp r5, #3
blo _021E7A8A
add r3, r1, #0
ldr r2, [sp, #0x14]
mul r3, r7
add r6, r2, r3
ldr r2, [r6, #0x2c]
mov r5, #0
str r2, [r0, #8]
_021E7AAC:
lsl r3, r5, #1
add r2, r6, r3
ldrh r2, [r2, #0x30]
add r3, r0, r3
strh r2, [r3, #0xc]
add r2, r5, #1
lsl r2, r2, #0x18
lsr r5, r2, #0x18
cmp r5, #8
blo _021E7AAC
add r6, #0x40
ldrb r2, [r6]
strb r2, [r0, #0x1c]
add r0, r1, #1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
cmp r1, #5
blo _021E7A7A
ldr r0, [sp, #8]
mov r7, #0
lsl r1, r0, #1
ldr r0, [sp]
add r5, sp, #0x20
add r0, r0, r1
str r0, [sp, #0xc]
mov r1, #0x3f
ldr r0, [sp]
lsl r1, r1, #4
add r0, r0, r1
str r0, [sp, #0x1c]
mov r4, #0x28
_021E7AEA:
ldr r0, [sp, #0x10]
add r0, r0, r7
lsr r2, r0, #0x1f
lsl r1, r0, #0x1e
sub r1, r1, r2
mov r0, #0x1e
ror r1, r0
add r0, r2, r1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
ldr r0, [sp, #0xc]
lsl r2, r1, #3
add r2, r0, r2
ldr r0, _021E7BA4 ; =0x000008D4
ldrh r2, [r2, r0]
add r0, sp, #0x20
strh r2, [r0]
mov r0, #0x7c
add r2, r1, #0
mul r2, r0
ldr r0, [sp, #0x1c]
add r0, r0, r2
mov r2, #0
_021E7B18:
add r6, r2, #0
mul r6, r4
add r3, r0, r6
ldrh r3, [r3, #2]
ldrh r6, [r0, r6]
lsl r3, r3, #0xa
add r3, r3, r6
lsl r6, r2, #1
add r2, r2, #1
lsl r2, r2, #0x18
add r6, r5, r6
lsr r2, r2, #0x18
strh r3, [r6, #2]
cmp r2, #3
blo _021E7B18
ldr r0, [sp]
bl ov96_021E5F34
add r6, r0, #0
bl PlayerProfile_GetTrainerID
str r0, [sp, #0x28]
add r0, r6, #0
bl PlayerProfile_GetNamePtr
mov r1, #0
_021E7B4C:
lsl r2, r1, #1
ldrh r3, [r0, r2]
add r1, r1, #1
lsl r1, r1, #0x18
add r2, r5, r2
lsr r1, r1, #0x18
strh r3, [r2, #0xc]
cmp r1, #8
blo _021E7B4C
add r0, r6, #0
bl PlayerProfile_GetLanguage
add r1, sp, #0x20
strb r0, [r1, #0x1c]
ldr r0, [sp, #0x18]
add r1, r5, #0
add r2, sp, #0x40
bl ov96_021E7C04
add r0, r7, #1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
cmp r7, #4
blo _021E7AEA
ldr r0, [sp]
ldr r1, [sp, #0x14]
add r2, sp, #0x40
bl ov96_021E7CC8
ldr r0, [sp, #8]
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #8]
cmp r0, #4
bhs _021E7B96
b _021E7A42
_021E7B96:
add sp, #0xe0
pop {r3, r4, r5, r6, r7, pc}
nop
_021E7B9C: .word 0x0098967F
_021E7BA0: .word _0221A7D8
_021E7BA4: .word 0x000008D4
thumb_func_end ov96_021E7A2C
thumb_func_start ov96_021E7BA8
ov96_021E7BA8: ; 0x021E7BA8
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r7, r0, #0
str r1, [sp]
str r2, [sp, #4]
mov r4, #0
_021E7BB4:
lsl r0, r4, #2
add r1, r7, r0
mov r0, #0xf6
lsl r0, r0, #2
ldr r0, [r1, r0]
ldr r2, _021E7BF8 ; =_0221A7D8
lsl r0, r0, #0x18
lsr r5, r0, #0x18
lsl r0, r4, #1
add r6, r7, r0
mov r0, #0x2c
add r1, r5, #0
mul r1, r0
ldr r0, [sp]
ldrb r2, [r2, r5]
ldrh r0, [r0, r1]
ldr r1, _021E7BFC ; =0x000008D4
ldrh r1, [r6, r1]
bl ov96_021E7D18
cmp r0, #0
beq _021E7BEA
ldr r0, _021E7C00 ; =0x000008B4
lsl r1, r5, #1
ldrh r2, [r6, r0]
ldr r0, [sp, #4]
strh r2, [r0, r1]
_021E7BEA:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _021E7BB4
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E7BF8: .word _0221A7D8
_021E7BFC: .word 0x000008D4
_021E7C00: .word 0x000008B4
thumb_func_end ov96_021E7BA8
thumb_func_start ov96_021E7C04
ov96_021E7C04: ; 0x021E7C04
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
add r6, r2, #0
add r7, r0, #0
add r0, r6, #0
add r4, r1, #0
add r0, #0x80
ldrh r0, [r0]
ldrh r1, [r4]
add r2, r7, #0
bl ov96_021E7D18
cmp r0, #0
beq _021E7C90
add r6, #0x80
ldmia r4!, {r0, r1}
add r5, r6, #0
stmia r6!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r6!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r6!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r6!, {r0, r1}
mov r4, #4
_021E7C36:
add r0, r5, #0
sub r0, #0x20
ldrh r0, [r0]
ldrh r1, [r5]
add r2, r7, #0
bl ov96_021E7D18
cmp r0, #0
beq _021E7C90
add r3, r5, #0
sub r3, #0x20
add r2, sp, #0
add r6, r2, #0
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
add r2, r5, #0
add r3, r5, #0
sub r2, #0x20
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
add r2, r5, #0
ldmia r6!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r6!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r6!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r6!, {r0, r1}
sub r4, r4, #1
sub r5, #0x20
stmia r2!, {r0, r1}
cmp r4, #0
bgt _021E7C36
_021E7C90:
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021E7C04
thumb_func_start ov96_021E7C94
ov96_021E7C94: ; 0x021E7C94
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
add r4, r2, #0
bl ov96_021E5F24
mov r2, #0
add r1, r2, #0
_021E7CA2:
ldrh r0, [r4]
add r3, r1, #0
add r6, r4, #0
strh r0, [r5]
add r7, r5, #0
_021E7CAC:
ldrh r0, [r6, #2]
add r3, r3, #1
add r6, r6, #2
strh r0, [r7, #2]
add r7, r7, #2
cmp r3, #3
blt _021E7CAC
add r2, r2, #1
add r4, #0x20
add r5, #8
cmp r2, #5
blt _021E7CA2
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021E7C94
thumb_func_start ov96_021E7CC8
ov96_021E7CC8: ; 0x021E7CC8
push {r4, r5, r6, r7}
mov r0, #0
add r3, r1, #0
_021E7CCE:
ldrh r4, [r2]
mov r5, #0
add r6, r2, #0
strh r4, [r1]
add r7, r1, #0
_021E7CD8:
ldrh r4, [r6, #2]
add r5, r5, #1
add r6, r6, #2
strh r4, [r7, #2]
add r7, r7, #2
cmp r5, #3
blt _021E7CD8
ldr r4, [r2, #8]
mov r5, #0
str r4, [r3, #0x2c]
add r6, r2, #0
add r7, r3, #0
_021E7CF0:
ldrh r4, [r6, #0xc]
add r5, r5, #1
add r6, r6, #2
strh r4, [r7, #0x30]
add r7, r7, #2
cmp r5, #8
blt _021E7CF0
ldrb r5, [r2, #0x1c]
add r4, r3, #0
add r4, #0x40
add r0, r0, #1
strb r5, [r4]
add r2, #0x20
add r1, #8
add r3, #0x18
cmp r0, #5
blt _021E7CCE
pop {r4, r5, r6, r7}
bx lr
.balign 4, 0
thumb_func_end ov96_021E7CC8
thumb_func_start ov96_021E7D18
ov96_021E7D18: ; 0x021E7D18
push {r3, lr}
ldr r3, _021E7D2C ; =0x0000FFFF
cmp r0, r3
bne _021E7D24
mov r0, #1
pop {r3, pc}
_021E7D24:
bl ov96_021E7D30
pop {r3, pc}
nop
_021E7D2C: .word 0x0000FFFF
thumb_func_end ov96_021E7D18
thumb_func_start ov96_021E7D30
ov96_021E7D30: ; 0x021E7D30
push {r4, lr}
mov r4, #0
cmp r2, #0
bne _021E7D4A
ldr r2, _021E7D68 ; =0x0000FFFF
cmp r0, r2
bne _021E7D42
mov r4, #1
b _021E7D64
_021E7D42:
cmp r0, r1
bge _021E7D64
mov r4, #1
b _021E7D64
_021E7D4A:
cmp r2, #1
bne _021E7D60
ldr r2, _021E7D68 ; =0x0000FFFF
cmp r0, r2
bne _021E7D58
mov r4, #1
b _021E7D64
_021E7D58:
cmp r0, r1
ble _021E7D64
mov r4, #1
b _021E7D64
_021E7D60:
bl GF_AssertFail
_021E7D64:
add r0, r4, #0
pop {r4, pc}
.balign 4, 0
_021E7D68: .word 0x0000FFFF
thumb_func_end ov96_021E7D30
thumb_func_start ov96_021E7D6C
ov96_021E7D6C: ; 0x021E7D6C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x30
str r1, [sp]
ldr r1, _021E7F3C ; =0x0000072C
add r5, r0, #0
add r7, r5, r1
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #8]
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r1, _021E7F40 ; =0x0098967F
ldr r0, [r0, #4]
cmp r0, #1
bne _021E7DCE
ldr r2, [sp]
mov r0, #1
add r2, #0x38
bl ov96_021E7F98
mov r0, #0x1d
lsl r0, r0, #4
ldrh r0, [r7, r0]
lsl r1, r0, #0x1f
lsr r1, r1, #0x1f
beq _021E7DBA
ldr r2, [sp]
ldr r1, _021E7F40 ; =0x0098967F
mov r0, #1
add r2, #0x3c
bl ov96_021E7F98
add r0, r5, #0
bl ov96_021E7F48
b _021E7E0A
_021E7DBA:
lsl r0, r0, #0x1e
lsr r0, r0, #0x1f
beq _021E7E0A
ldr r2, [sp]
ldr r1, _021E7F40 ; =0x0098967F
mov r0, #1
add r2, #0x40
bl ov96_021E7F98
b _021E7E0A
_021E7DCE:
ldr r2, [sp]
mov r0, #1
add r2, r2, #4
bl ov96_021E7F98
mov r0, #0x1d
lsl r0, r0, #4
ldrh r0, [r7, r0]
lsl r1, r0, #0x1f
lsr r1, r1, #0x1f
beq _021E7DF8
ldr r2, [sp]
ldr r1, _021E7F40 ; =0x0098967F
mov r0, #1
add r2, #8
bl ov96_021E7F98
add r0, r5, #0
bl ov96_021E7F48
b _021E7E0A
_021E7DF8:
lsl r0, r0, #0x1e
lsr r0, r0, #0x1f
beq _021E7E0A
ldr r2, [sp]
ldr r1, _021E7F40 ; =0x0098967F
mov r0, #1
add r2, #0xc
bl ov96_021E7F98
_021E7E0A:
ldr r0, _021E7F44 ; =0x0000072A
mov r4, #0
ldrb r0, [r5, r0]
cmp r0, #0
bls _021E7E68
ldr r0, [sp]
ldr r6, [sp]
str r0, [sp, #0xc]
add r0, #0x6c
str r0, [sp, #0xc]
add r6, #0x44
_021E7E20:
mov r1, #0x72
add r0, r7, r4
lsl r1, r1, #2
ldrb r1, [r0, r1]
cmp r1, #0
beq _021E7E46
lsl r2, r4, #2
add r3, r5, r2
mov r2, #0xf6
lsl r2, r2, #2
ldr r2, [r3, r2]
ldr r1, _021E7F40 ; =0x0098967F
lsl r2, r2, #0x18
lsr r2, r2, #0x16
mov r0, #1
add r2, r6, r2
bl ov96_021E7F98
b _021E7E5A
_021E7E46:
mov r1, #0x73
lsl r1, r1, #2
ldrb r0, [r0, r1]
cmp r0, #0
beq _021E7E5A
ldr r1, _021E7F40 ; =0x0098967F
ldr r2, [sp, #0xc]
mov r0, #1
bl ov96_021E7F98
_021E7E5A:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
ldr r0, _021E7F44 ; =0x0000072A
ldrb r0, [r5, r0]
cmp r4, r0
blo _021E7E20
_021E7E68:
ldr r0, [sp, #8]
mov r1, #0x60
mul r1, r0
add r0, r7, r1
str r0, [sp, #4]
ldr r0, [sp]
ldr r4, _021E7F40 ; =0x0098967F
str r0, [sp, #0x10]
add r0, #0x18
str r0, [sp, #0x10]
ldr r0, [sp]
mov r6, #0
str r0, [sp, #0x14]
add r0, #0x1c
str r0, [sp, #0x14]
ldr r0, [sp]
str r0, [sp, #0x18]
add r0, #0x20
str r0, [sp, #0x18]
ldr r0, [sp]
str r0, [sp, #0x1c]
add r0, #0x24
str r0, [sp, #0x1c]
ldr r0, [sp]
str r0, [sp, #0x20]
add r0, #0x28
str r0, [sp, #0x20]
ldr r0, [sp]
str r0, [sp, #0x24]
add r0, #0x2c
str r0, [sp, #0x24]
ldr r0, [sp]
str r0, [sp, #0x28]
add r0, #0x30
str r0, [sp, #0x28]
ldr r0, [sp]
str r0, [sp, #0x2c]
add r0, #0x34
str r0, [sp, #0x2c]
_021E7EB6:
ldr r0, [sp, #4]
lsl r1, r6, #5
add r5, r0, r1
ldr r0, [r0, r1]
ldr r2, [sp, #0x10]
add r1, r4, #0
bl ov96_021E7F98
ldr r0, [r5, #4]
ldr r2, [sp, #0x14]
add r1, r4, #0
bl ov96_021E7F98
ldr r0, [r5, #8]
ldr r2, [sp, #0x18]
add r1, r4, #0
bl ov96_021E7F98
ldr r0, [r5, #0xc]
ldr r2, [sp, #0x1c]
add r1, r4, #0
bl ov96_021E7F98
ldr r0, [r5, #0x10]
ldr r2, [sp, #0x20]
add r1, r4, #0
bl ov96_021E7F98
ldr r0, [r5, #0x14]
ldr r2, [sp, #0x24]
add r1, r4, #0
bl ov96_021E7F98
ldr r0, [r5, #0x18]
ldr r2, [sp, #0x28]
add r1, r4, #0
bl ov96_021E7F98
ldr r0, [r5, #0x1c]
ldr r2, [sp, #0x2c]
add r1, r4, #0
bl ov96_021E7F98
add r0, r6, #1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
cmp r6, #3
blo _021E7EB6
mov r0, #6
lsl r0, r0, #6
ldr r2, [sp]
ldr r0, [r7, r0]
ldr r1, _021E7F40 ; =0x0098967F
add r2, #0x10
bl ov96_021E7F98
mov r0, #0x61
lsl r0, r0, #2
ldr r2, [sp]
ldr r0, [r7, r0]
add r2, #0x14
ldr r1, _021E7F40 ; =0x0098967F
str r2, [sp]
bl ov96_021E7F98
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E7F3C: .word 0x0000072C
_021E7F40: .word 0x0098967F
_021E7F44: .word 0x0000072A
thumb_func_end ov96_021E7D6C
thumb_func_start ov96_021E7F48
ov96_021E7F48: ; 0x021E7F48
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r0, [r0]
bl sub_02031B00
add r4, r0, #0
add r0, r5, #0
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r2, r0, #0x18
mov r0, #0x3f
lsl r0, r0, #4
add r1, r5, r0
mov r0, #0x7c
mul r0, r2
add r3, r1, r0
mov r2, #0
mov r5, #0x28
_021E7F74:
add r6, r2, #0
mul r6, r5
add r1, r3, r6
ldrh r6, [r3, r6]
lsl r7, r2, #2
add r0, r4, r7
strh r6, [r4, r7]
ldrh r6, [r1, #2]
strb r6, [r0, #3]
ldrb r1, [r1, #0x11]
strb r1, [r0, #2]
add r0, r2, #1
lsl r0, r0, #0x18
lsr r2, r0, #0x18
cmp r2, #3
blo _021E7F74
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021E7F48
thumb_func_start ov96_021E7F98
ov96_021E7F98: ; 0x021E7F98
ldr r3, [r2]
add r0, r3, r0
cmp r0, r1
bls _021E7FA4
str r1, [r2]
bx lr
_021E7FA4:
str r0, [r2]
bx lr
thumb_func_end ov96_021E7F98
thumb_func_start ov96_021E7FA8
ov96_021E7FA8: ; 0x021E7FA8
push {r3, lr}
mov r1, #0x7e
lsl r1, r1, #2
ldr r1, [r0, r1]
ldrb r1, [r1, #0xc]
cmp r1, #9
bhi _021E8024
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021E7FC2: ; jump table
.short _021E7FD6 - _021E7FC2 - 2 ; case 0
.short _021E7FDE - _021E7FC2 - 2 ; case 1
.short _021E7FE6 - _021E7FC2 - 2 ; case 2
.short _021E7FEE - _021E7FC2 - 2 ; case 3
.short _021E7FF6 - _021E7FC2 - 2 ; case 4
.short _021E7FFE - _021E7FC2 - 2 ; case 5
.short _021E8006 - _021E7FC2 - 2 ; case 6
.short _021E800E - _021E7FC2 - 2 ; case 7
.short _021E8016 - _021E7FC2 - 2 ; case 8
.short _021E801E - _021E7FC2 - 2 ; case 9
_021E7FD6:
mov r1, #1
bl ov96_021E8028
pop {r3, pc}
_021E7FDE:
mov r1, #2
bl ov96_021E8028
pop {r3, pc}
_021E7FE6:
mov r1, #4
bl ov96_021E8028
pop {r3, pc}
_021E7FEE:
mov r1, #8
bl ov96_021E8028
pop {r3, pc}
_021E7FF6:
mov r1, #0x10
bl ov96_021E8028
pop {r3, pc}
_021E7FFE:
mov r1, #0x11
bl ov96_021E8028
pop {r3, pc}
_021E8006:
mov r1, #0x14
bl ov96_021E8028
pop {r3, pc}
_021E800E:
mov r1, #6
bl ov96_021E8028
pop {r3, pc}
_021E8016:
mov r1, #0xa
bl ov96_021E8028
pop {r3, pc}
_021E801E:
mov r1, #9
bl ov96_021E8028
_021E8024:
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_021E7FA8
thumb_func_start ov96_021E8028
ov96_021E8028: ; 0x021E8028
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r5, r0]
add r6, r1, #0
ldr r0, [r0]
bl Save_Pokeathlon_Get
add r7, r0, #0
mov r4, #0
_021E803E:
mov r2, #0x28
mul r2, r4
add r3, r5, r2
mov r2, #0x81
lsl r2, r2, #2
ldrh r2, [r3, r2]
add r0, r7, #0
add r1, r6, #0
bl sub_020319F8
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _021E803E
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021E8028
thumb_func_start ov96_021E8060
ov96_021E8060: ; 0x021E8060
mov r3, #0
mov r2, #0x2c
_021E8064:
add r1, r3, #0
mul r1, r2
add r1, r0, r1
ldrh r1, [r1, #6]
cmp r1, #0
bne _021E8074
mov r0, #0
bx lr
_021E8074:
add r1, r3, #1
lsl r1, r1, #0x18
lsr r3, r1, #0x18
cmp r3, #5
blo _021E8064
mov r0, #1
bx lr
.balign 4, 0
thumb_func_end ov96_021E8060
thumb_func_start ov96_021E8084
ov96_021E8084: ; 0x021E8084
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r6, r0]
ldr r0, [r0]
bl Save_Pokeathlon_Get
add r7, r0, #0
mov r4, #0
_021E8098:
mov r0, #0x28
mul r0, r4
add r1, r6, r0
mov r0, #0x81
lsl r0, r0, #2
ldrh r0, [r1, r0]
sub r5, r0, #1
add r0, r7, #0
bl sub_02031978
ldrb r0, [r0, r5]
cmp r0, #0x1f
bne _021E80B6
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021E80B6:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _021E8098
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021E8084
thumb_func_start ov96_021E80C4
ov96_021E80C4: ; 0x021E80C4
push {r3, r4, r5, r6, r7, lr}
mov r1, #0x7e
lsl r1, r1, #2
ldr r0, [r0, r1]
ldr r0, [r0]
bl Save_Pokeathlon_Get
bl sub_020319DC
ldr r6, _021E8110 ; =ov96_0221A894
ldr r7, _021E8114 ; =_0221A7D8
add r5, r0, #0
mov r4, #0
_021E80DE:
mov r0, #0x2c
mul r0, r4
ldrh r1, [r5, r0]
ldr r0, _021E8118 ; =0x0000FFFF
cmp r1, r0
bne _021E80EE
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021E80EE:
lsl r0, r4, #1
ldrh r0, [r6, r0]
ldrb r2, [r7, r4]
bl ov96_021E7D30
cmp r0, #0
bne _021E8100
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021E8100:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #0xa
blo _021E80DE
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
nop
_021E8110: .word ov96_0221A894
_021E8114: .word _0221A7D8
_021E8118: .word 0x0000FFFF
thumb_func_end ov96_021E80C4
thumb_func_start ov96_021E811C
ov96_021E811C: ; 0x021E811C
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r5, r2, #0
mov r1, #0xa
strb r1, [r5]
ldrb r6, [r0, #0xc]
ldr r0, [r0, #4]
mov r7, #0
cmp r0, #1
bne _021E8160
cmp r6, #0xa
bhi _021E815A
add r0, r6, r6
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021E8140: ; jump table
.short _021E815A - _021E8140 - 2 ; case 0
.short _021E815A - _021E8140 - 2 ; case 1
.short _021E815A - _021E8140 - 2 ; case 2
.short _021E815A - _021E8140 - 2 ; case 3
.short _021E815A - _021E8140 - 2 ; case 4
.short _021E8156 - _021E8140 - 2 ; case 5
.short _021E8156 - _021E8140 - 2 ; case 6
.short _021E8156 - _021E8140 - 2 ; case 7
.short _021E8156 - _021E8140 - 2 ; case 8
.short _021E8156 - _021E8140 - 2 ; case 9
.short _021E8156 - _021E8140 - 2 ; case 10
_021E8156:
mov r7, #1
b _021E8182
_021E815A:
bl GF_AssertFail
b _021E8182
_021E8160:
cmp r6, #4
bhi _021E817E
add r0, r6, r6
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021E8170: ; jump table
.short _021E817A - _021E8170 - 2 ; case 0
.short _021E817A - _021E8170 - 2 ; case 1
.short _021E817A - _021E8170 - 2 ; case 2
.short _021E817A - _021E8170 - 2 ; case 3
.short _021E817A - _021E8170 - 2 ; case 4
_021E817A:
mov r7, #1
b _021E8182
_021E817E:
bl GF_AssertFail
_021E8182:
cmp r7, #0
beq _021E81CE
cmp r6, #0xa
bne _021E81B4
bl LCRandom
mov r1, #0xa
bl _s32_div_f
lsl r0, r1, #0x18
lsr r0, r0, #0x18
mov r2, #0
cmp r4, #0
bls _021E81CE
ldr r1, _021E81D0 ; =ov96_0221A95C
lsl r0, r0, #2
add r1, r1, r0
_021E81A4:
ldrb r0, [r1, r2]
strb r0, [r5, r2]
add r0, r2, #1
lsl r0, r0, #0x18
lsr r2, r0, #0x18
cmp r2, r4
blo _021E81A4
pop {r3, r4, r5, r6, r7, pc}
_021E81B4:
mov r2, #0
cmp r4, #0
bls _021E81CE
ldr r1, _021E81D4 ; =ov96_0221A934
lsl r0, r6, #2
add r1, r1, r0
_021E81C0:
ldrb r0, [r1, r2]
strb r0, [r5, r2]
add r0, r2, #1
lsl r0, r0, #0x18
lsr r2, r0, #0x18
cmp r2, r4
blo _021E81C0
_021E81CE:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E81D0: .word ov96_0221A95C
_021E81D4: .word ov96_0221A934
thumb_func_end ov96_021E811C
thumb_func_start ov96_021E81D8
ov96_021E81D8: ; 0x021E81D8
push {r3, r4, lr}
sub sp, #0x14
add r4, r1, #0
ldr r0, [r4, #4]
add r1, sp, #4
add r2, sp, #0
bl ov96_021EAEC8
ldr r0, [r4, #8]
mov r1, #1
bl Set2dSpriteVisibleFlag
mov r0, #0
str r0, [sp, #0x10]
ldr r0, [sp, #4]
add r1, sp, #8
lsl r0, r0, #0xc
str r0, [sp, #8]
ldr r0, [sp]
lsl r0, r0, #0xc
str r0, [sp, #0xc]
ldr r0, [r4, #8]
bl Sprite_SetMatrix
ldr r0, [r4, #4]
bl ov96_021EB120
cmp r0, #0
ldr r0, [r4, #8]
beq _021E821E
mov r1, #1
bl Set2dSpriteVisibleFlag
add sp, #0x14
pop {r3, r4, pc}
_021E821E:
mov r1, #0
bl Set2dSpriteVisibleFlag
add sp, #0x14
pop {r3, r4, pc}
thumb_func_end ov96_021E81D8
thumb_func_start ov96_021E8228
ov96_021E8228: ; 0x021E8228
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r4, r1, #0
add r7, r2, #0
str r3, [sp]
ldr r6, [sp, #0x18]
add r1, r3, #0
bne _021E825E
bl ov96_021E5F24
cmp r4, r0
beq _021E8244
bl GF_AssertFail
_021E8244:
cmp r6, #1
beq _021E824C
bl GF_AssertFail
_021E824C:
mov r0, #0x8b
lsl r0, r0, #4
ldr r2, [r5, r0]
ldr r1, _021E830C ; =0x0000270F
cmp r2, r1
bhs _021E830A
add r1, r2, #1
str r1, [r5, r0]
pop {r3, r4, r5, r6, r7, pc}
_021E825E:
cmp r7, #3
blo _021E8266
bl GF_AssertFail
_021E8266:
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r5, r0]
ldr r0, [r0, #0x10]
cmp r0, #0
bne _021E829A
add r0, r5, #0
bl ov96_021E5F24
cmp r0, #0
beq _021E8280
bl GF_AssertFail
_021E8280:
ldr r2, _021E8310 ; =0x0000072C
lsl r1, r6, #0x18
add r3, r5, r2
mov r2, #0x60
mul r2, r4
add r3, r3, r2
lsl r2, r7, #5
ldr r0, [sp]
lsr r1, r1, #0x18
add r2, r3, r2
bl ov96_021E8340
pop {r3, r4, r5, r6, r7, pc}
_021E829A:
add r0, r5, #0
bl ov96_021E5F24
cmp r0, #0
bne _021E82EA
add r0, r5, #0
bl ov96_021E5D34
cmp r4, r0
blo _021E82C8
ldr r2, _021E8310 ; =0x0000072C
lsl r1, r6, #0x18
add r3, r5, r2
mov r2, #0x60
mul r2, r4
add r3, r3, r2
lsl r2, r7, #5
ldr r0, [sp]
lsr r1, r1, #0x18
add r2, r3, r2
bl ov96_021E8340
pop {r3, r4, r5, r6, r7, pc}
_021E82C8:
add r0, r5, #0
bl ov96_021E5F24
cmp r4, r0
beq _021E82D6
bl GF_AssertFail
_021E82D6:
ldr r2, _021E8314 ; =0x00000B44
lsl r1, r6, #0x18
add r3, r5, r2
lsl r2, r7, #5
ldr r0, [sp]
lsr r1, r1, #0x18
add r2, r3, r2
bl ov96_021E8340
pop {r3, r4, r5, r6, r7, pc}
_021E82EA:
add r0, r5, #0
bl ov96_021E5F24
cmp r4, r0
beq _021E82F8
bl GF_AssertFail
_021E82F8:
ldr r2, _021E8314 ; =0x00000B44
lsl r1, r6, #0x18
add r3, r5, r2
lsl r2, r7, #5
ldr r0, [sp]
lsr r1, r1, #0x18
add r2, r3, r2
bl ov96_021E8340
_021E830A:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E830C: .word 0x0000270F
_021E8310: .word 0x0000072C
_021E8314: .word 0x00000B44
thumb_func_end ov96_021E8228
thumb_func_start ov96_021E8318
ov96_021E8318: ; 0x021E8318
ldr r2, _021E8320 ; =0x00000D2A
strh r1, [r0, r2]
bx lr
nop
_021E8320: .word 0x00000D2A
thumb_func_end ov96_021E8318
thumb_func_start ov96_021E8324
ov96_021E8324: ; 0x021E8324
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, _021E833C ; =0x00000D6C
add r4, r1, #0
ldr r0, [r5, r0]
cmp r0, #0
beq _021E8336
bl GF_AssertFail
_021E8336:
ldr r0, _021E833C ; =0x00000D6C
str r4, [r5, r0]
pop {r3, r4, r5, pc}
.balign 4, 0
_021E833C: .word 0x00000D6C
thumb_func_end ov96_021E8324
thumb_func_start ov96_021E8340
ov96_021E8340: ; 0x021E8340
push {r3, lr}
cmp r0, #8
bhi _021E8382
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021E8352: ; jump table
.short _021E8382 - _021E8352 - 2 ; case 0
.short _021E8364 - _021E8352 - 2 ; case 1
.short _021E8366 - _021E8352 - 2 ; case 2
.short _021E836A - _021E8352 - 2 ; case 3
.short _021E836E - _021E8352 - 2 ; case 4
.short _021E8372 - _021E8352 - 2 ; case 5
.short _021E8376 - _021E8352 - 2 ; case 6
.short _021E837A - _021E8352 - 2 ; case 7
.short _021E837E - _021E8352 - 2 ; case 8
_021E8364:
b _021E8388
_021E8366:
add r2, r2, #4
b _021E8388
_021E836A:
add r2, #8
b _021E8388
_021E836E:
add r2, #0xc
b _021E8388
_021E8372:
add r2, #0x10
b _021E8388
_021E8376:
add r2, #0x14
b _021E8388
_021E837A:
add r2, #0x18
b _021E8388
_021E837E:
add r2, #0x1c
b _021E8388
_021E8382:
bl GF_AssertFail
pop {r3, pc}
_021E8388:
ldr r0, [r2]
add r1, r0, r1
ldr r0, _021E8398 ; =0x0000270F
str r1, [r2]
cmp r1, r0
bls _021E8396
str r0, [r2]
_021E8396:
pop {r3, pc}
.balign 4, 0
_021E8398: .word 0x0000270F
thumb_func_end ov96_021E8340
thumb_func_start ov96_021E839C
ov96_021E839C: ; 0x021E839C
push {r4, r5, r6, lr}
add r5, r0, #0
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r0, [r0]
bl Save_Pokeathlon_Get
add r6, r0, #0
ldr r0, _021E8418 ; =0x00000D2A
ldrh r1, [r5, r0]
ldr r0, _021E841C ; =0x0000FFFF
cmp r1, r0
bne _021E83C0
bl GF_AssertFail
mov r0, #0
pop {r4, r5, r6, pc}
_021E83C0:
add r0, r5, #0
bl ov96_021E5E44
add r4, r0, #0
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r0, [r0, #4]
cmp r0, #1
bne _021E83DE
add r0, r6, #0
bl sub_020319E4
mov r1, #0xa4
b _021E83E6
_021E83DE:
add r0, r6, #0
bl sub_020319DC
mov r1, #0x2c
_021E83E6:
mul r1, r4
add r0, r0, r1
ldrh r0, [r0]
ldr r1, _021E841C ; =0x0000FFFF
cmp r0, r1
bne _021E83F6
mov r0, #1
pop {r4, r5, r6, pc}
_021E83F6:
ldr r1, _021E8420 ; =_0221A7D8
ldrb r1, [r1, r4]
cmp r1, #0
ldr r1, _021E8418 ; =0x00000D2A
bne _021E840A
ldrh r1, [r5, r1]
cmp r0, r1
bhs _021E8414
mov r0, #1
pop {r4, r5, r6, pc}
_021E840A:
ldrh r1, [r5, r1]
cmp r0, r1
bls _021E8414
mov r0, #1
pop {r4, r5, r6, pc}
_021E8414:
mov r0, #0
pop {r4, r5, r6, pc}
.balign 4, 0
_021E8418: .word 0x00000D2A
_021E841C: .word 0x0000FFFF
_021E8420: .word _0221A7D8
thumb_func_end ov96_021E839C
thumb_func_start ov96_021E8424
ov96_021E8424: ; 0x021E8424
push {r3, lr}
cmp r0, #0
beq _021E843A
cmp r0, #0x64
bhi _021E843A
sub r0, r0, #1
lsl r0, r0, #0x18
lsr r1, r0, #0x17
ldr r0, _021E8444 ; =ov96_0221AA20
ldrh r0, [r0, r1]
pop {r3, pc}
_021E843A:
bl GF_AssertFail
mov r0, #0
pop {r3, pc}
nop
_021E8444: .word ov96_0221AA20
thumb_func_end ov96_021E8424
thumb_func_start ov96_021E8448
ov96_021E8448: ; 0x021E8448
push {r3, r4, r5, lr}
sub sp, #8
add r5, r1, #0
beq _021E847A
cmp r5, #0x64
bhi _021E847A
bl PokeathlonOvy_GetHeapID
add r1, r0, #0
mov r0, #0x41
lsl r0, r0, #2
bl NARC_New
add r4, r0, #0
sub r1, r5, #1
add r2, sp, #0
bl NARC_ReadWholeMember
add r0, r4, #0
bl NARC_Delete
add r0, sp, #0
add sp, #8
ldrb r0, [r0, #7]
pop {r3, r4, r5, pc}
_021E847A:
bl GF_AssertFail
mov r0, #0
add sp, #8
pop {r3, r4, r5, pc}
thumb_func_end ov96_021E8448
thumb_func_start ov96_021E8484
ov96_021E8484: ; 0x021E8484
push {r4, r5, r6, r7, lr}
sub sp, #0x44
str r0, [sp]
add r4, r1, #0
bl PokeathlonOvy_GetHeapID
add r3, r0, #0
ldr r2, _021E8608 ; =0x00000136
mov r0, #1
mov r1, #0x1b
bl NewMsgDataFromNarc
str r0, [sp, #0x14]
mov r0, #4
sub r0, r0, r4
str r0, [sp, #4]
mov r1, #0x7e
ldr r0, [sp]
lsl r1, r1, #2
ldr r2, [r0, r1]
add r0, r4, #0
ldrb r1, [r2, #0xc]
ldrb r2, [r2, #0xf]
add r3, sp, #0x2c
bl ov96_021E860C
ldr r0, [sp]
bl PokeathlonOvy_GetHeapID
add r1, r0, #0
mov r0, #0xa9
bl NARC_New
str r0, [sp, #0x10]
ldr r0, [sp]
bl PokeathlonOvy_GetHeapID
add r1, r0, #0
mov r0, #0x41
lsl r0, r0, #2
bl NARC_New
str r0, [sp, #0xc]
mov r0, #0
str r0, [sp, #0x1c]
ldr r0, [sp, #4]
cmp r0, #4
bge _021E84E6
blt _021E84E8
_021E84E6:
b _021E85F0
_021E84E8:
add r0, sp, #0x2c
str r0, [sp, #8]
_021E84EC:
ldr r0, [sp]
ldr r1, [sp, #4]
bl ov96_021E5D40
add r5, r0, #0
ldr r0, [sp, #8]
ldrb r0, [r0]
str r0, [r5]
cmp r0, #0
bne _021E8504
bl GF_AssertFail
_021E8504:
ldr r1, [r5]
ldr r0, [sp, #0xc]
sub r1, r1, #1
add r2, sp, #0x24
bl NARC_ReadWholeMember
add r1, sp, #0x24
ldrb r1, [r1, #6]
ldr r0, [sp, #0x14]
bl NewString_ReadMsgData
add r4, r0, #0
ldr r0, [sp]
ldr r1, [sp, #4]
bl ov96_021E5F34
add r6, r0, #0
add r0, r4, #0
bl String_cstr
add r1, r0, #0
add r0, r6, #0
bl Save_Profile_PlayerName_Set
add r0, r4, #0
bl String_Delete
mov r0, #0
add r6, r5, #0
str r0, [sp, #0x18]
add r4, sp, #0x24
add r6, #0x16
add r7, sp, #0x24
_021E8546:
ldrh r0, [r4]
mov r1, #0x12
strh r0, [r5, #4]
mov r0, #0
strh r0, [r5, #6]
strb r0, [r5, #0x14]
str r0, [r5, #8]
ldrh r0, [r5, #4]
bl GetMonBaseStat
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _021E856A
cmp r0, #0xfe
beq _021E856E
cmp r0, #0xff
beq _021E8572
b _021E8576
_021E856A:
mov r0, #0
b _021E8578
_021E856E:
mov r0, #1
b _021E8578
_021E8572:
mov r0, #2
b _021E8578
_021E8576:
mov r0, #0
_021E8578:
strb r0, [r5, #0x15]
ldrh r0, [r5, #4]
mov r1, #0
bl ov96_021E679C
add r1, r0, #0
add r2, sp, #0x2c
ldr r0, [sp, #0x10]
add r2, #3
bl NARC_ReadWholeMember
ldrb r0, [r7, #0xb]
strb r0, [r5, #0xc]
ldrb r0, [r7, #0xc]
strb r0, [r5, #0xd]
ldrb r0, [r7, #0xd]
strb r0, [r5, #0xe]
ldrb r0, [r7, #0xe]
strb r0, [r5, #0xf]
ldrb r0, [r7, #0xf]
strb r0, [r5, #0x10]
ldr r0, [sp]
bl PokeathlonOvy_GetHeapID
add r1, r0, #0
ldrh r0, [r4]
bl GetSpeciesName
str r0, [sp, #0x20]
bl String_cstr
add r1, r0, #0
add r0, r6, #0
mov r2, #0xb
bl CopyU16StringArrayN
ldr r0, [sp, #0x20]
bl String_Delete
ldr r0, [sp, #0x18]
add r4, r4, #2
add r0, r0, #1
add r5, #0x28
add r6, #0x28
str r0, [sp, #0x18]
cmp r0, #3
blt _021E8546
ldr r0, [sp, #4]
add r0, r0, #1
str r0, [sp, #4]
ldr r0, [sp, #8]
add r0, r0, #1
str r0, [sp, #8]
ldr r0, [sp, #0x1c]
add r0, r0, #1
str r0, [sp, #0x1c]
ldr r0, [sp, #4]
cmp r0, #4
bge _021E85F0
b _021E84EC
_021E85F0:
ldr r0, [sp, #0xc]
bl NARC_Delete
ldr r0, [sp, #0x10]
bl NARC_Delete
ldr r0, [sp, #0x14]
bl DestroyMsgData
add sp, #0x44
pop {r4, r5, r6, r7, pc}
nop
_021E8608: .word 0x00000136
thumb_func_end ov96_021E8484
thumb_func_start ov96_021E860C
ov96_021E860C: ; 0x021E860C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
add r5, r0, #0
add r0, r1, #0
mov r1, #0
str r2, [sp]
add r4, r3, #0
add r2, r1, #0
_021E861C:
strb r2, [r4, r1]
add r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
cmp r1, #3
blo _021E861C
cmp r0, #0xa
bne _021E8678
add r1, sp, #0xc
mov r7, #0x19
add r1, #1
_021E8632:
add r0, r2, #1
lsl r0, r0, #0x18
strb r2, [r1, r2]
lsr r2, r0, #0x18
cmp r2, #0x19
blo _021E8632
mov r6, #0
cmp r5, #0
bls _021E86C4
_021E8644:
bl LCRandom
add r1, r7, #0
bl _s32_div_f
lsl r0, r1, #0x18
add r1, sp, #0xc
lsr r0, r0, #0x18
add r1, #1
ldrb r1, [r1, r0]
strb r1, [r4, r6]
add r1, #0x19
strb r1, [r4, r6]
sub r1, r7, #1
lsl r1, r1, #0x18
lsr r7, r1, #0x18
add r1, sp, #0xc
add r1, #1
ldrb r2, [r1, r7]
strb r2, [r1, r0]
add r0, r6, #1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
cmp r6, r5
blo _021E8644
b _021E86C4
_021E8678:
mov r7, #5
add r1, sp, #8
_021E867C:
strb r2, [r1, r2]
add r2, r2, #1
lsl r2, r2, #0x18
lsr r2, r2, #0x18
cmp r2, #5
blo _021E867C
mov r6, #0
cmp r5, #0
bls _021E86C4
lsl r1, r0, #2
add r0, r0, r1
str r0, [sp, #4]
_021E8694:
bl LCRandom
add r1, r7, #0
bl _s32_div_f
lsl r0, r1, #0x18
lsr r0, r0, #0x18
add r1, sp, #8
ldrb r2, [r1, r0]
ldr r1, [sp, #4]
strb r2, [r4, r6]
add r1, r2, r1
strb r1, [r4, r6]
sub r1, r7, #1
lsl r1, r1, #0x18
lsr r7, r1, #0x18
add r1, sp, #8
ldrb r2, [r1, r7]
strb r2, [r1, r0]
add r0, r6, #1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
cmp r6, r5
blo _021E8694
_021E86C4:
ldr r0, [sp]
cmp r0, #0
beq _021E86E0
mov r1, #0
cmp r5, #0
bls _021E86E0
_021E86D0:
ldrb r0, [r4, r1]
add r0, #0x32
strb r0, [r4, r1]
add r0, r1, #1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
cmp r1, r5
blo _021E86D0
_021E86E0:
mov r1, #0
cmp r5, #0
bls _021E86F6
_021E86E6:
ldrb r0, [r4, r1]
add r0, r0, #1
strb r0, [r4, r1]
add r0, r1, #1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
cmp r1, r5
blo _021E86E6
_021E86F6:
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021E860C
thumb_func_start ov96_021E86FC
ov96_021E86FC: ; 0x021E86FC
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
cmp r4, #4
blo _021E870A
bl GF_AssertFail
_021E870A:
ldr r0, _021E8728 ; =0x00000D68
ldr r0, [r5, r0]
cmp r0, #0
bne _021E8716
bl GF_AssertFail
_021E8716:
bl sub_02031B10
ldr r1, _021E8728 ; =0x00000D68
ldr r2, [r5, r1]
add r1, r0, #0
mul r1, r4
add r0, r2, r1
pop {r3, r4, r5, pc}
nop
_021E8728: .word 0x00000D68
thumb_func_end ov96_021E86FC
thumb_func_start ov96_021E872C
ov96_021E872C: ; 0x021E872C
push {lr}
sub sp, #0x24
lsl r0, r0, #0xc
str r0, [sp, #0x18]
lsl r0, r1, #0xc
mov r1, #0
str r0, [sp, #0x1c]
lsl r0, r2, #0xc
str r0, [sp, #0xc]
lsl r0, r3, #0xc
str r0, [sp, #0x10]
str r1, [sp, #0x20]
str r1, [sp, #0x14]
add r0, sp, #0x18
add r1, sp, #0xc
add r2, sp, #0
bl VEC_Subtract
add r0, sp, #0
bl VEC_Mag
ldr r1, [sp, #0x2c]
str r0, [r1]
ldr r1, [sp, #0x28]
lsl r1, r1, #0xc
cmp r0, r1
bge _021E8768
add sp, #0x24
mov r0, #1
pop {pc}
_021E8768:
mov r0, #0
add sp, #0x24
pop {pc}
.balign 4, 0
thumb_func_end ov96_021E872C
thumb_func_start ov96_021E8770
ov96_021E8770: ; 0x021E8770
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
add r7, r1, #0
ldr r0, [sp, #0x18]
mov r1, #8
str r2, [sp]
add r5, r3, #0
bl AllocFromHeap
add r4, r0, #0
mov r0, #0
strh r5, [r4]
strh r0, [r4, #2]
str r0, [r4, #4]
cmp r5, #1
bne _021E879C
ldr r2, [sp]
add r0, r6, #0
add r1, r7, #0
bl sub_0203410C
b _021E87AA
_021E879C:
ldr r2, [sp]
ldr r3, [sp, #0x18]
add r0, r6, #0
add r1, r7, #0
bl ov96_021E883C
str r0, [r4, #4]
_021E87AA:
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021E8770
thumb_func_start ov96_021E87B0
ov96_021E87B0: ; 0x021E87B0
strh r1, [r0, #2]
bx lr
thumb_func_end ov96_021E87B0
thumb_func_start ov96_021E87B4
ov96_021E87B4: ; 0x021E87B4
push {r3, r4, r5, r6, r7, lr}
add r4, r3, #0
add r6, r0, #0
ldrh r0, [r4, #2]
add r7, r1, #0
add r5, r2, #0
cmp r0, #0
beq _021E87CC
cmp r5, #0x26
ble _021E87CC
bl GF_AssertFail
_021E87CC:
ldrh r0, [r4]
cmp r0, #1
bne _021E87DE
add r0, r6, #0
add r1, r7, #0
add r2, r5, #0
bl sub_02037030
pop {r3, r4, r5, r6, r7, pc}
_021E87DE:
ldr r0, [r4, #4]
add r1, r6, #0
add r2, r7, #0
add r3, r5, #0
bl ov96_021E8914
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021E87B4
thumb_func_start ov96_021E87EC
ov96_021E87EC: ; 0x021E87EC
push {r3, r4, r5, r6, r7, lr}
add r6, r3, #0
ldrh r3, [r6]
add r5, r0, #0
add r4, r1, #0
add r7, r2, #0
cmp r3, #1
bne _021E8802
bl sub_02036FD8
pop {r3, r4, r5, r6, r7, pc}
_021E8802:
ldr r0, [r6, #4]
add r1, r5, #0
add r2, r4, #0
add r3, r7, #0
bl ov96_021E8988
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021E87EC
thumb_func_start ov96_021E8810
ov96_021E8810: ; 0x021E8810
push {r4, lr}
add r4, r0, #0
ldrh r0, [r4]
cmp r0, #0
bne _021E8820
ldr r0, [r4, #4]
bl ov96_021E88FC
_021E8820:
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
thumb_func_end ov96_021E8810
thumb_func_start ov96_021E8828
ov96_021E8828: ; 0x021E8828
push {r3, lr}
ldrh r0, [r0]
cmp r0, #1
bne _021E8836
bl sub_0203769C
pop {r3, pc}
_021E8836:
mov r0, #0
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_021E8828
thumb_func_start ov96_021E883C
ov96_021E883C: ; 0x021E883C
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
mov r1, #0x1d
add r5, r0, #0
add r0, r3, #0
lsl r1, r1, #4
add r7, r2, #0
bl AllocFromHeap
mov r2, #0x1d
mov r1, #0
lsl r2, r2, #4
add r4, r0, #0
bl memset
mov r1, #7
lsl r1, r1, #6
str r5, [r4, r1]
add r0, r1, #4
str r6, [r4, r0]
add r1, #8
str r7, [r4, r1]
ldr r0, _021E887C ; =ov96_021E8884
ldr r2, _021E8880 ; =0x00001388
add r1, r4, #0
bl sub_0200E374
mov r1, #0x73
lsl r1, r1, #2
str r0, [r4, r1]
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E887C: .word ov96_021E8884
_021E8880: .word 0x00001388
thumb_func_end ov96_021E883C
thumb_func_start ov96_021E8884
ov96_021E8884: ; 0x021E8884
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r7, r1, #0
mov r0, #0
str r0, [sp]
add r6, r7, #0
_021E8890:
ldr r0, [r6]
cmp r0, #1
bne _021E88EA
ldr r1, [r6, #0x30]
cmp r1, #0x26
bgt _021E88BE
mov r4, #7
lsl r4, r4, #6
ldr r4, [r7, r4]
mov r3, #0x72
str r4, [sp, #4]
ldr r4, [r6, #4]
mov r5, #0xc
mul r5, r4
ldr r4, [sp, #4]
lsl r3, r3, #2
add r2, r6, #0
ldr r3, [r7, r3]
ldr r4, [r4, r5]
mov r0, #0
add r2, #8
blx r4
b _021E88E0
_021E88BE:
mov r4, #7
lsl r4, r4, #6
ldr r4, [r7, r4]
mov r3, #0x72
mov ip, r4
ldr r4, [r6, #4]
mov r5, #0xc
mul r5, r4
str r5, [sp, #8]
lsl r3, r3, #2
ldr r4, [sp, #8]
mov r5, ip
ldr r2, [r6, #0x34]
ldr r3, [r7, r3]
ldr r4, [r5, r4]
mov r0, #0
blx r4
_021E88E0:
add r0, r6, #0
mov r1, #0
mov r2, #0x38
bl memset
_021E88EA:
ldr r0, [sp]
add r6, #0x38
add r0, r0, #1
str r0, [sp]
cmp r0, #8
blt _021E8890
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021E8884
thumb_func_start ov96_021E88FC
ov96_021E88FC: ; 0x021E88FC
push {r4, lr}
add r4, r0, #0
mov r0, #0x73
lsl r0, r0, #2
ldr r0, [r4, r0]
bl DestroySysTask
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021E88FC
thumb_func_start ov96_021E8914
ov96_021E8914: ; 0x021E8914
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
mov r4, #0
str r2, [sp]
add r7, r1, #0
add r5, r3, #0
add r0, r4, #0
add r2, r6, #0
_021E8924:
ldr r1, [r2]
cmp r1, #0
bne _021E8932
mov r1, #0x38
mul r1, r0
add r4, r6, r1
b _021E893A
_021E8932:
add r0, r0, #1
add r2, #0x38
cmp r0, #8
blt _021E8924
_021E893A:
cmp r4, #0
bne _021E8942
bl GF_AssertFail
_021E8942:
mov r0, #7
lsl r0, r0, #6
add r1, r7, #0
ldr r2, [r6, r0]
sub r1, #0x16
mov r0, #0xc
mul r0, r1
add r0, r2, r0
ldr r0, [r0, #4]
cmp r0, #0
beq _021E8962
blx r0
cmp r0, r5
beq _021E8962
bl GF_AssertFail
_021E8962:
cmp r5, #0x26
ble _021E896A
bl GF_AssertFail
_021E896A:
sub r7, #0x16
str r7, [r4, #4]
cmp r5, #0
ble _021E897E
add r0, r4, #0
ldr r1, [sp]
add r0, #8
add r2, r5, #0
bl memcpy
_021E897E:
str r5, [r4, #0x30]
mov r0, #1
str r0, [r4]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021E8914
thumb_func_start ov96_021E8988
ov96_021E8988: ; 0x021E8988
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
str r2, [sp, #4]
mov r4, #0
str r1, [sp]
add r6, r3, #0
add r1, r4, #0
add r2, r5, #0
_021E899A:
ldr r0, [r2]
cmp r0, #0
bne _021E89A8
mov r0, #0x38
mul r0, r1
add r4, r5, r0
b _021E89B0
_021E89A8:
add r1, r1, #1
add r2, #0x38
cmp r1, #8
blt _021E899A
_021E89B0:
cmp r4, #0
bne _021E89B8
bl GF_AssertFail
_021E89B8:
ldr r1, [sp]
mov r0, #0xc
sub r1, #0x16
add r7, r1, #0
mul r7, r0
mov r0, #7
lsl r0, r0, #6
ldr r0, [r5, r0]
add r0, r0, r7
ldr r0, [r0, #4]
blx r0
ldr r1, _021E8A1C ; =0x0000FFFF
cmp r0, r1
beq _021E89DC
cmp r0, r6
beq _021E89DC
bl GF_AssertFail
_021E89DC:
mov r1, #7
lsl r1, r1, #6
ldr r0, [r5, r1]
add r0, r0, r7
ldr r3, [r0, #8]
cmp r3, #0
beq _021E8A06
add r1, #8
ldr r1, [r5, r1]
mov r0, #0
add r2, r6, #0
blx r3
add r5, r0, #0
cmp r6, #0
ble _021E8A02
ldr r1, [sp, #4]
add r2, r6, #0
bl memcpy
_021E8A02:
str r5, [r4, #0x34]
b _021E8A0A
_021E8A06:
ldr r0, [sp, #4]
str r0, [r4, #0x34]
_021E8A0A:
ldr r0, [sp]
sub r0, #0x16
str r0, [r4, #4]
str r0, [sp]
str r6, [r4, #0x30]
mov r0, #1
str r0, [r4]
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E8A1C: .word 0x0000FFFF
thumb_func_end ov96_021E8988
thumb_func_start ov96_021E8A20
ov96_021E8A20: ; 0x021E8A20
bx lr
.balign 4, 0
thumb_func_end ov96_021E8A20
thumb_func_start ov96_021E8A24
ov96_021E8A24: ; 0x021E8A24
ldr r0, _021E8A28 ; =ov96_0221AEC4
bx lr
.balign 4, 0
_021E8A28: .word ov96_0221AEC4
thumb_func_end ov96_021E8A24
thumb_func_start ov96_021E8A2C
ov96_021E8A2C: ; 0x021E8A2C
mov r0, #0xc
bx lr
thumb_func_end ov96_021E8A2C
thumb_func_start ov96_021E8A30
ov96_021E8A30: ; 0x021E8A30
push {r4, lr}
ldr r1, _021E8A40 ; =0x00000958
add r4, r0, #0
bl AllocFromHeap
str r4, [r0]
pop {r4, pc}
nop
_021E8A40: .word 0x00000958
thumb_func_end ov96_021E8A30
thumb_func_start ov96_021E8A44
ov96_021E8A44: ; 0x021E8A44
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r6, r0, #0
add r5, r2, #0
cmp r4, #0x10
bls _021E8A54
bl GF_AssertFail
_021E8A54:
strh r4, [r6, #4]
mov r0, #0
strh r0, [r6, #6]
str r0, [r6, #0xc]
str r0, [r6, #8]
mov r1, #0x2c
ldr r0, [r6]
mul r1, r4
bl AllocFromHeap
mov r1, #0x55
lsl r1, r1, #2
str r0, [r6, r1]
cmp r5, #0
bne _021E8A86
ldrh r0, [r6, #4]
add r1, r6, #0
ldr r2, [r6]
add r1, #0x1c
bl G2dRenderer_Init
str r0, [r6, #0x14]
str r0, [r6, #0x18]
mov r0, #1
b _021E8A8A
_021E8A86:
str r5, [r6, #0x18]
mov r0, #0
_021E8A8A:
mov r7, #0x51
str r0, [r6, #0x10]
mov r4, #0
add r5, r6, #0
lsl r7, r7, #2
_021E8A94:
ldrh r0, [r6, #4]
ldr r2, [r6]
add r1, r4, #0
bl Create2DGfxResObjMan
str r0, [r5, r7]
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
blt _021E8A94
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021E8A44
thumb_func_start ov96_021E8AAC
ov96_021E8AAC: ; 0x021E8AAC
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldrh r0, [r5, #4]
mov r4, #0
cmp r0, #0
ble _021E8AE4
mov r7, #0x55
lsl r7, r7, #2
_021E8ABC:
mov r0, #0x2c
add r6, r4, #0
mul r6, r0
mov r0, #0x55
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r0, [r0, r6]
bl sub_0200AEB0
ldr r0, [r5, r7]
add r0, r0, r6
ldr r0, [r0, #4]
bl sub_0200B0A8
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
ldrh r0, [r5, #4]
cmp r4, r0
blt _021E8ABC
_021E8AE4:
mov r6, #0x51
mov r4, #0
lsl r6, r6, #2
_021E8AEA:
lsl r0, r4, #2
add r0, r5, r0
ldr r0, [r0, r6]
bl Destroy2DGfxResObjMan
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #4
blo _021E8AEA
mov r0, #0x55
lsl r0, r0, #2
ldr r0, [r5, r0]
bl FreeToHeap
ldr r0, [r5, #0x10]
cmp r0, #0
beq _021E8B14
ldr r0, [r5, #0x14]
bl SpriteList_Delete
_021E8B14:
add r0, r5, #0
bl FreeToHeap
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021E8AAC
thumb_func_start ov96_021E8B1C
ov96_021E8B1C: ; 0x021E8B1C
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r7, r1, #0
mov r1, #0x55
ldr r0, [r5]
lsl r1, r1, #2
add r6, r2, #0
add r4, r3, #0
bl AllocFromHeapAtEnd
strh r7, [r0]
add r2, r0, #0
mov ip, r0
str r5, [r0, #0xc]
add r2, #0x10
mov r3, #8
_021E8B3C:
ldmia r4!, {r0, r1}
stmia r2!, {r0, r1}
sub r3, r3, #1
bne _021E8B3C
ldr r0, [r4]
mov r4, #0
str r0, [r2]
mov r0, ip
str r4, [r0, #8]
ldr r1, [sp, #0x1c]
mov r0, ip
str r1, [r0, #4]
mov r0, ip
strh r4, [r0, #2]
str r4, [r5, #0xc]
cmp r7, #0
ble _021E8B78
mov r5, ip
_021E8B60:
add r2, r5, #0
add r3, r6, #0
add r2, #0x54
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
add r4, r4, #1
stmia r2!, {r0, r1}
add r6, #0x10
add r5, #0x10
cmp r4, r7
blt _021E8B60
_021E8B78:
ldr r0, _021E8B84 ; =ov96_021E8FB4
ldr r2, [sp, #0x18]
mov r1, ip
bl CreateSysTask
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E8B84: .word ov96_021E8FB4
thumb_func_end ov96_021E8B1C
thumb_func_start ov96_021E8B88
ov96_021E8B88: ; 0x021E8B88
ldr r0, [r0, #0xc]
bx lr
thumb_func_end ov96_021E8B88
thumb_func_start ov96_021E8B8C
ov96_021E8B8C: ; 0x021E8B8C
push {r3, r4, r5, lr}
add r5, r0, #0
ldrh r0, [r5, #4]
add r4, r1, #0
cmp r4, r0
blt _021E8B9C
bl GF_AssertFail
_021E8B9C:
mov r0, #0x55
lsl r0, r0, #2
ldr r1, [r5, r0]
mov r0, #0x2c
mul r0, r4
add r0, r1, r0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021E8B8C
thumb_func_start ov96_021E8BAC
ov96_021E8BAC: ; 0x021E8BAC
ldr r0, [r0, #0x10]
bx lr
thumb_func_end ov96_021E8BAC
thumb_func_start ov96_021E8BB0
ov96_021E8BB0: ; 0x021E8BB0
add r0, #0x14
bx lr
thumb_func_end ov96_021E8BB0
thumb_func_start ov96_021E8BB4
ov96_021E8BB4: ; 0x021E8BB4
push {r4, r5, r6, lr}
add r4, r0, #0
add r5, r1, #0
add r6, r2, #0
ldrh r0, [r4]
ldrh r1, [r4, #2]
ldrb r2, [r4, #7]
bl ov96_021E91B8
add r1, r0, #0
mov r0, #0x51
add r2, r5, #0
bl AllocAndReadWholeNarcMemberByIdPair
add r5, r0, #0
bl NNS_G3dGetTex
ldr r1, [r0, #0x38]
add r0, r0, r1
ldrb r1, [r4, #6]
cmp r1, #0
beq _021E8BE2
add r0, #0x20
_021E8BE2:
add r1, r6, #0
mov r2, #0x20
bl MI_CpuCopy8
add r0, r5, #0
bl FreeToHeap
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021E8BB4
thumb_func_start ov96_021E8BF4
ov96_021E8BF4: ; 0x021E8BF4
push {r3, r4, r5, r6, r7, lr}
mov r4, #0
add r6, r0, #0
add r7, r3, #0
str r4, [sp]
cmp r2, #3
bne _021E8C08
mov r4, #1
str r4, [sp]
b _021E8C14
_021E8C08:
cmp r2, #1
bne _021E8C12
mov r0, #1
str r0, [sp]
b _021E8C14
_021E8C12:
mov r4, #1
_021E8C14:
mov r0, #0x2c
add r5, r1, #0
mul r5, r0
mov r0, #0x55
lsl r0, r0, #2
ldr r0, [r6, r0]
ldr r0, [r0, r5]
bl sub_0200AF00
add r1, r0, #0
mov r0, #0x55
lsl r0, r0, #2
ldr r0, [r6, r0]
add r0, r0, r5
ldr r0, [r0, #4]
bl sub_0200B0F8
add r5, r0, #0
add r0, r7, #0
mov r1, #0x20
bl DC_FlushRange
ldr r0, [sp]
cmp r0, #0
beq _021E8C58
add r0, r5, #0
mov r1, #1
bl NNS_G2dGetImagePaletteLocation
add r1, r0, #0
add r0, r7, #0
mov r2, #0x20
bl GX_LoadOBJPltt
_021E8C58:
cmp r4, #0
beq _021E8C6E
add r0, r5, #0
mov r1, #2
bl NNS_G2dGetImagePaletteLocation
add r1, r0, #0
add r0, r7, #0
mov r2, #0x20
bl GXS_LoadOBJPltt
_021E8C6E:
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021E8BF4
thumb_func_start ov96_021E8C70
ov96_021E8C70: ; 0x021E8C70
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x48
add r5, r0, #0
ldr r0, [sp, #0x64]
add r4, r1, #0
add r6, r3, #0
str r2, [sp, #0x10]
str r0, [sp, #0x64]
cmp r0, #0
beq _021E8CA4
add r0, r2, #0
ldrh r0, [r0, #4]
cmp r0, #0
beq _021E8C98
mov r0, #0xa
str r0, [sp, #0x44]
mov r0, #9
mov r2, #0xb
str r0, [sp, #0x40]
b _021E8CC2
_021E8C98:
mov r0, #7
str r0, [sp, #0x44]
mov r0, #6
mov r2, #8
str r0, [sp, #0x40]
b _021E8CC2
_021E8CA4:
add r0, r2, #0
ldrh r0, [r0, #4]
cmp r0, #0
beq _021E8CB8
mov r0, #4
str r0, [sp, #0x44]
mov r0, #3
mov r2, #5
str r0, [sp, #0x40]
b _021E8CC2
_021E8CB8:
mov r0, #1
str r0, [sp, #0x44]
mov r0, #0
mov r2, #2
str r0, [sp, #0x40]
_021E8CC2:
add r0, sp, #0x50
ldrb r7, [r0, #0x10]
mov r1, #0x95
mov r3, #0
str r7, [sp]
str r6, [sp, #4]
ldr r0, [r5]
str r0, [sp, #8]
mov r0, #0x51
lsl r0, r0, #2
ldr r0, [r5, r0]
bl AddCharResObjFromNarc
str r0, [r4]
str r7, [sp]
str r6, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r5]
mov r1, #0x31
str r0, [sp, #0xc]
mov r0, #0x52
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r2, #0x1e
mov r3, #0
bl AddPlttResObjFromNarc
str r0, [r4, #4]
str r7, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r5]
ldr r2, [sp, #0x44]
str r0, [sp, #8]
mov r0, #0x53
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #0x95
mov r3, #0
bl AddCellOrAnimResObjFromNarc
str r0, [r4, #8]
str r7, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r5]
ldr r2, [sp, #0x40]
str r0, [sp, #8]
mov r0, #0x15
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0x95
mov r3, #0
bl AddCellOrAnimResObjFromNarc
str r0, [r4, #0xc]
ldr r0, [r4]
bl sub_0200ADA4
ldr r0, [r4, #4]
bl sub_0200AF94
mov r0, #0
str r0, [sp, #0x1c]
str r0, [sp, #0x18]
ldr r0, [r4]
bl sub_0200AF00
str r0, [sp, #0x24]
ldr r0, [r4, #4]
ldr r1, [sp, #0x24]
bl sub_0200B0F8
str r0, [sp, #0x28]
ldr r0, [r4]
bl sub_0200A810
str r0, [sp, #0x20]
cmp r6, #3
bne _021E8D6C
mov r0, #1
str r0, [sp, #0x1c]
str r0, [sp, #0x18]
b _021E8D7A
_021E8D6C:
cmp r6, #1
bne _021E8D76
mov r0, #1
str r0, [sp, #0x1c]
b _021E8D7A
_021E8D76:
mov r0, #1
str r0, [sp, #0x18]
_021E8D7A:
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x10]
ldr r2, [sp, #0x10]
ldrh r0, [r0]
ldrh r1, [r1, #2]
ldrb r2, [r2, #7]
bl ov96_021E91B8
add r1, r0, #0
ldr r2, [r5]
mov r0, #0x51
bl AllocAndReadWholeNarcMemberByIdPair
str r0, [sp, #0x34]
ldr r0, [sp, #0x10]
ldrh r0, [r0, #4]
cmp r0, #0
beq _021E8DAA
mov r0, #2
lsl r0, r0, #0xa
str r0, [sp, #0x14]
mov r0, #8
str r0, [sp, #0x3c]
b _021E8DB4
_021E8DAA:
mov r0, #2
lsl r0, r0, #8
str r0, [sp, #0x14]
mov r0, #4
str r0, [sp, #0x3c]
_021E8DB4:
ldr r0, [sp, #0x34]
bl NNS_G3dGetTex
ldr r1, [r0, #0x14]
str r0, [sp, #0x2c]
add r0, r0, r1
str r0, [sp, #0x30]
ldr r0, [sp, #0x3c]
mov r4, #0
lsl r1, r0, #5
mov r0, #2
lsl r0, r0, #0xa
str r4, [sp, #0x38]
sub r7, r0, r1
add r6, r5, r1
_021E8DD2:
ldr r0, [sp, #0x3c]
mov r2, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #0x56
lsl r0, r0, #2
add r0, r5, r0
str r0, [sp, #8]
ldr r0, [sp, #0x30]
ldr r1, [sp, #0x3c]
add r0, r0, r4
add r3, r2, #0
bl sub_020145B4
ldr r0, [sp, #0x64]
cmp r0, #0
bne _021E8E72
ldr r0, [r5, #8]
cmp r0, #0
beq _021E8E2A
ldr r0, [sp, #0x10]
ldrh r0, [r0, #4]
cmp r0, #0
beq _021E8E2A
mov r0, #0
_021E8E04:
cmp r0, r7
bge _021E8E16
mov r1, #0x56
add r2, r6, r0
lsl r1, r1, #2
ldrb r3, [r2, r1]
add r2, r5, r0
strb r3, [r2, r1]
b _021E8E20
_021E8E16:
mov r2, #0x56
add r3, r5, r0
lsl r2, r2, #2
mov r1, #0
strb r1, [r3, r2]
_021E8E20:
mov r1, #2
add r0, r0, #1
lsl r1, r1, #0xa
cmp r0, r1
blt _021E8E04
_021E8E2A:
mov r0, #0x56
lsl r0, r0, #2
ldr r1, [sp, #0x14]
add r0, r5, r0
bl DC_FlushRange
ldr r0, [sp, #0x1c]
cmp r0, #0
beq _021E8E54
ldr r0, [sp, #0x24]
mov r1, #1
bl NNS_G2dGetImageLocation
add r1, r0, #0
mov r0, #0x56
lsl r0, r0, #2
ldr r2, [sp, #0x14]
add r0, r5, r0
add r1, r1, r4
bl GX_LoadOBJ
_021E8E54:
ldr r0, [sp, #0x18]
cmp r0, #0
beq _021E8E72
ldr r0, [sp, #0x24]
mov r1, #2
bl NNS_G2dGetImageLocation
add r1, r0, #0
mov r0, #0x56
lsl r0, r0, #2
ldr r2, [sp, #0x14]
add r0, r5, r0
add r1, r1, r4
bl GXS_LoadOBJ
_021E8E72:
ldr r1, [sp, #0x20]
mov r0, #0x56
ldr r1, [r1, #0x14]
lsl r0, r0, #2
ldr r2, [sp, #0x14]
add r0, r5, r0
add r1, r1, r4
bl MIi_CpuCopyFast
ldr r0, [sp, #0x14]
add r4, r4, r0
ldr r0, [sp, #0x38]
add r0, r0, #1
str r0, [sp, #0x38]
cmp r0, #8
blt _021E8DD2
ldr r0, [sp, #0x2c]
ldr r1, [r0, #0x38]
add r4, r0, r1
ldr r0, [sp, #0x10]
ldrb r0, [r0, #6]
cmp r0, #0
beq _021E8EA2
add r4, #0x20
_021E8EA2:
add r0, r4, #0
mov r1, #0x20
bl DC_FlushRange
ldr r0, [sp, #0x1c]
cmp r0, #0
beq _021E8EC2
ldr r0, [sp, #0x28]
mov r1, #1
bl NNS_G2dGetImagePaletteLocation
add r1, r0, #0
add r0, r4, #0
mov r2, #0x20
bl GX_LoadOBJPltt
_021E8EC2:
ldr r0, [sp, #0x18]
cmp r0, #0
beq _021E8EDA
ldr r0, [sp, #0x28]
mov r1, #2
bl NNS_G2dGetImagePaletteLocation
add r1, r0, #0
add r0, r4, #0
mov r2, #0x20
bl GXS_LoadOBJPltt
_021E8EDA:
ldr r0, [sp, #0x34]
bl FreeToHeap
add sp, #0x48
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021E8C70
thumb_func_start ov96_021E8EE4
ov96_021E8EE4: ; 0x021E8EE4
push {r3, r4, r5, lr}
sub sp, #0x80
add r4, r0, #0
add r0, sp, #0x80
add r5, r3, #0
ldrb r3, [r0, #0x10]
mov r0, #0
mvn r0, r0
str r3, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
str r2, [sp, #0xc]
str r1, [sp, #0x10]
mov r1, #0x51
lsl r1, r1, #2
ldr r0, [r4, r1]
add r2, r3, #0
str r0, [sp, #0x14]
add r0, r1, #4
ldr r0, [r4, r0]
str r0, [sp, #0x18]
add r0, r1, #0
add r0, #8
ldr r0, [r4, r0]
add r1, #0xc
str r0, [sp, #0x1c]
ldr r0, [r4, r1]
add r1, r3, #0
str r0, [sp, #0x20]
mov r0, #0
str r0, [sp, #0x24]
str r0, [sp, #0x28]
add r0, sp, #0x5c
bl CreateSpriteResourcesHeader
cmp r5, #3
bne _021E8F30
mov r5, #1
_021E8F30:
ldr r0, [r4, #0x18]
mov r1, #0
str r0, [sp, #0x2c]
add r0, sp, #0x5c
str r0, [sp, #0x30]
ldr r0, [r4]
str r0, [sp, #0x58]
mov r0, #1
lsl r0, r0, #0xc
str r1, [sp, #0x34]
str r1, [sp, #0x38]
str r1, [sp, #0x3c]
str r0, [sp, #0x40]
str r0, [sp, #0x44]
str r0, [sp, #0x48]
add r0, sp, #0x2c
strh r1, [r0, #0x20]
str r5, [sp, #0x54]
add r0, sp, #0x80
str r1, [sp, #0x50]
ldrb r1, [r0, #0x14]
mov r0, #0x2c
add r5, r1, #0
mul r5, r0
add r0, sp, #0x2c
bl CreateSprite
mov r1, #0x55
lsl r1, r1, #2
ldr r2, [r4, r1]
add r2, r2, r5
str r0, [r2, #0x10]
ldr r0, [r4, r1]
add r0, r0, r5
ldr r0, [r0, #0x10]
cmp r0, #0
bne _021E8F7E
bl GF_AssertFail
_021E8F7E:
mov r0, #0x55
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #1
add r0, r0, r5
ldr r0, [r0, #0x10]
bl Set2dSpriteAnimActiveFlag
mov r0, #0x55
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0
add r0, r0, r5
ldr r0, [r0, #0x10]
bl Set2dSpriteAnimSeqNo
mov r0, #0x55
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0
add r0, r0, r5
ldr r0, [r0, #0x10]
bl Set2dSpriteVisibleFlag
add sp, #0x80
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021E8EE4
thumb_func_start ov96_021E8FB4
ov96_021E8FB4: ; 0x021E8FB4
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
_021E8FBA:
add r0, r4, #0
bl ov96_021E8FE0
cmp r0, #0
beq _021E8FD8
ldr r0, [r4, #0xc]
mov r1, #1
str r1, [r0, #0xc]
add r0, r4, #0
bl FreeToHeap
add r0, r5, #0
bl DestroySysTask
pop {r3, r4, r5, pc}
_021E8FD8:
ldr r0, [r4, #0x10]
cmp r0, #0
bne _021E8FBA
pop {r3, r4, r5, pc}
thumb_func_end ov96_021E8FB4
thumb_func_start ov96_021E8FE0
ov96_021E8FE0: ; 0x021E8FE0
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
ldr r0, [r5, #8]
cmp r0, #0
beq _021E8FF2
cmp r0, #1
beq _021E90BE
b _021E90F4
_021E8FF2:
ldrh r0, [r5, #2]
ldr r1, [r5, #4]
add r2, r5, #0
add r0, r1, r0
lsl r0, r0, #0x18
lsr r7, r0, #0x18
mov r0, #0x2c
add r4, r7, #0
mul r4, r0
ldr r0, [r5, #0xc]
lsl r6, r7, #4
str r7, [sp]
ldr r1, [r5, #0x18]
add r2, #0x54
str r1, [sp, #4]
mov r1, #0x55
lsl r1, r1, #2
ldr r1, [r0, r1]
ldr r3, [r5, #0x1c]
add r1, r1, r4
add r2, r2, r6
bl ov96_021E8C70
mov r0, #0x55
add r3, r5, r6
ldr r1, [r5, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
add r3, #0x54
add r2, r0, r4
add r2, #0x14
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
mov r0, #0x55
ldr r1, [r5, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
add r0, r0, r4
bl ov96_021E9104
mov r1, #0x55
ldr r2, [r5, #0xc]
lsl r1, r1, #2
ldr r1, [r2, r1]
add r1, r1, r4
str r0, [r1, #0x24]
ldr r2, [r5, #0xc]
mov r1, #0
ldr r0, [r2, #8]
cmp r0, #0
beq _021E9068
add r0, r5, r6
add r0, #0x58
ldrh r0, [r0]
cmp r0, #0
beq _021E9068
mov r1, #1
_021E9068:
mov r3, #0x55
lsl r3, r3, #2
mov r0, #0x2c
ldr r2, [r2, r3]
mul r0, r7
add r2, r2, r0
str r1, [r2, #0x28]
ldr r1, [r5, #0xc]
ldr r1, [r1, r3]
add r0, r1, r0
ldr r0, [r0, #0x28]
cmp r0, #0
beq _021E908A
add r1, #0x24
ldr r0, [r1, r4]
add r0, #8
str r0, [r1, r4]
_021E908A:
ldr r0, [r5, #0x18]
cmp r0, #0
bne _021E90A6
mov r0, #0x55
ldr r1, [r5, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
add r6, r0, r4
ldr r0, [r0, r4]
bl sub_0200A740
ldr r0, [r6, #4]
bl sub_0200A740
_021E90A6:
ldrh r0, [r5, #2]
add r0, r0, #1
strh r0, [r5, #2]
ldrh r1, [r5, #2]
ldrh r0, [r5]
cmp r1, r0
blo _021E90F4
mov r0, #0
strh r0, [r5, #2]
mov r0, #1
str r0, [r5, #8]
b _021E90F4
_021E90BE:
ldrh r0, [r5, #2]
ldr r1, [r5, #4]
add r0, r1, r0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
str r0, [sp, #4]
ldr r0, [r5, #0xc]
ldr r1, [r5, #0x14]
ldr r2, [r5, #0x18]
ldr r3, [r5, #0x20]
bl ov96_021E8EE4
ldrh r0, [r5, #2]
add r0, r0, #1
strh r0, [r5, #2]
ldr r1, [r5, #0xc]
ldrh r0, [r1, #6]
add r0, r0, #1
strh r0, [r1, #6]
ldrh r1, [r5, #2]
ldrh r0, [r5]
cmp r1, r0
blo _021E90F4
add sp, #8
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021E90F4:
mov r0, #0
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021E8FE0
thumb_func_start ov96_021E90FC
ov96_021E90FC: ; 0x021E90FC
ldr r0, [r0, #0x24]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
thumb_func_end ov96_021E90FC
thumb_func_start ov96_021E9104
ov96_021E9104: ; 0x021E9104
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r4, r0, #0
ldr r0, [r4]
bl sub_0200A810
ldrh r1, [r4, #0x18]
cmp r1, #0
beq _021E911A
mov r6, #8
b _021E911C
_021E911A:
mov r6, #4
_021E911C:
mov r1, #0xff
str r1, [sp, #8]
ldr r0, [r0, #0x14]
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
cmp r6, #0
ble _021E916E
add r7, r0, #0
_021E912E:
mov r4, #0xff
mov r5, #0
cmp r6, #0
ble _021E9150
_021E9136:
add r1, r5, r7
ldr r0, [sp]
lsl r1, r1, #5
bl ov96_021E9180
cmp r0, #0xff
beq _021E914A
cmp r4, r0
bls _021E914A
add r4, r0, #0
_021E914A:
add r5, r5, #1
cmp r5, r6
blt _021E9136
_021E9150:
cmp r4, #0xff
beq _021E9162
ldr r0, [sp, #4]
lsl r0, r0, #3
add r0, r4, r0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #8]
b _021E916E
_021E9162:
ldr r0, [sp, #4]
add r7, r7, r6
add r0, r0, #1
str r0, [sp, #4]
cmp r0, r6
blt _021E912E
_021E916E:
ldr r0, [sp, #8]
cmp r0, #0xff
bne _021E9178
bl GF_AssertFail
_021E9178:
ldr r0, [sp, #8]
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021E9104
thumb_func_start ov96_021E9180
ov96_021E9180: ; 0x021E9180
push {r4, r5}
mov r4, #0
mov r2, #0xff
add r0, r0, r1
add r3, r4, #0
_021E918A:
add r5, r3, #0
_021E918C:
ldrb r1, [r0]
cmp r1, #0
beq _021E9196
add r2, r4, #0
b _021E91A2
_021E9196:
add r1, r5, #1
lsl r1, r1, #0x18
lsr r5, r1, #0x18
add r0, r0, #1
cmp r5, #4
blo _021E918C
_021E91A2:
cmp r5, #4
bne _021E91B0
add r1, r4, #1
lsl r1, r1, #0x18
lsr r4, r1, #0x18
cmp r4, #8
blo _021E918A
_021E91B0:
add r0, r2, #0
pop {r4, r5}
bx lr
.balign 4, 0
thumb_func_end ov96_021E9180
thumb_func_start ov96_021E91B8
ov96_021E91B8: ; 0x021E91B8
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
add r7, r2, #0
cmp r5, #0
ble _021E91CA
ldr r1, _021E91FC ; =0x000001ED
cmp r5, r1
ble _021E91CE
_021E91CA:
mov r4, #1
b _021E91F6
_021E91CE:
bl SpeciesToOverworldModelIndexOffset
ldr r1, _021E9200 ; =0x00000129
add r4, r0, r1
add r0, r5, #0
bl OverworldModelLookupHasFemaleForm
cmp r0, #0
beq _021E91E8
cmp r7, #1
bne _021E91F6
add r4, r4, #1
b _021E91F6
_021E91E8:
add r0, r5, #0
bl OverworldModelLookupFormCount
cmp r6, r0
ble _021E91F4
mov r6, #0
_021E91F4:
add r4, r4, r6
_021E91F6:
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_021E91FC: .word 0x000001ED
_021E9200: .word 0x00000129
thumb_func_end ov96_021E91B8
thumb_func_start ov96_021E9204
ov96_021E9204: ; 0x021E9204
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r5, r1, #0
add r4, r2, #0
add r2, sp, #0
mov r1, #0
str r1, [r2]
str r1, [r2, #4]
str r1, [r2, #8]
bl ov96_021E8BAC
add r6, r0, #0
add r0, r5, #0
mov r1, #0
bl _fgr
ldr r0, _021E928C ; =0x45800000
bls _021E923A
add r1, r5, #0
bl _fmul
add r1, r0, #0
mov r0, #0x3f
lsl r0, r0, #0x18
bl _fadd
b _021E9248
_021E923A:
add r1, r5, #0
bl _fmul
mov r1, #0x3f
lsl r1, r1, #0x18
bl _fsub
_021E9248:
bl _ffix
str r0, [sp]
add r0, r4, #0
mov r1, #0
bl _fgr
ldr r0, _021E928C ; =0x45800000
bls _021E926C
add r1, r4, #0
bl _fmul
add r1, r0, #0
mov r0, #0x3f
lsl r0, r0, #0x18
bl _fadd
b _021E927A
_021E926C:
add r1, r4, #0
bl _fmul
mov r1, #0x3f
lsl r1, r1, #0x18
bl _fsub
_021E927A:
bl _ffix
str r0, [sp, #4]
add r0, r6, #0
add r1, sp, #0
bl sub_020247F4
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
_021E928C: .word 0x45800000
thumb_func_end ov96_021E9204
thumb_func_start ov96_021E9290
ov96_021E9290: ; 0x021E9290
push {r4, lr}
add r4, r0, #0
bne _021E929A
bl GF_AssertFail
_021E929A:
ldr r0, [r4, #0xc]
cmp r0, #0
beq _021E92A4
bl GF_AssertFail
_021E92A4:
mov r0, #1
str r0, [r4, #8]
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021E9290
thumb_func_start ov96_021E92AC
ov96_021E92AC: ; 0x021E92AC
ldr r0, [r0, #0x28]
bx lr
thumb_func_end ov96_021E92AC
thumb_func_start ov96_021E92B0
ov96_021E92B0: ; 0x021E92B0
push {r3, r4, r5, lr}
add r4, r2, #0
add r5, r1, #0
ldr r2, [sp, #0x10]
add r1, r3, #0
bl sub_020215C0
add r0, r5, #0
add r1, r4, #0
bl sub_02022588
bl sub_020216C8
bl sub_02022638
pop {r3, r4, r5, pc}
thumb_func_end ov96_021E92B0
thumb_func_start ov96_021E92D0
ov96_021E92D0: ; 0x021E92D0
push {r3, lr}
bl OamManager_Free
bl sub_0202168C
bl sub_02022608
pop {r3, pc}
thumb_func_end ov96_021E92D0
thumb_func_start ov96_021E92E0
ov96_021E92E0: ; 0x021E92E0
push {r3, r4, r5, r6, r7, lr}
mov r1, #0x85
lsl r1, r1, #2
add r5, r0, #0
bl AllocFromHeap
mov r2, #0x85
mov r1, #0
lsl r2, r2, #2
str r0, [sp]
bl MI_CpuFill8
ldr r4, [sp]
mov r6, #0
mov r7, #0x25
_021E92FE:
add r0, r7, #0
add r1, r5, #0
bl String_New
str r0, [r4, #0x34]
mov r0, #0xb
add r1, r5, #0
bl String_New
str r0, [r4, #0x38]
add r6, r6, #1
add r4, #0x18
cmp r6, #0xc
blt _021E92FE
ldr r0, [sp]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021E92E0
thumb_func_start ov96_021E9320
ov96_021E9320: ; 0x021E9320
push {r4, r5, r6, lr}
add r6, r0, #0
mov r4, #0
add r5, r6, #0
_021E9328:
ldr r0, [r5, #0x34]
bl String_Delete
ldr r0, [r5, #0x38]
bl String_Delete
add r4, r4, #1
add r5, #0x18
cmp r4, #0xc
blt _021E9328
add r0, r6, #0
bl FreeToHeap
pop {r4, r5, r6, pc}
thumb_func_end ov96_021E9320
thumb_func_start ov96_021E9344
ov96_021E9344: ; 0x021E9344
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #8]
cmp r0, #4
blt _021E9352
bl GF_AssertFail
_021E9352:
ldr r1, [r4, #8]
ldr r0, [r4]
cmp r1, r0
blt _021E935E
bl GF_AssertFail
_021E935E:
ldr r1, [r4, #8]
add r0, r1, #1
str r0, [r4, #8]
mov r0, #0x18
add r4, #0x24
mul r0, r1
add r0, r4, r0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021E9344
thumb_func_start ov96_021E9370
ov96_021E9370: ; 0x021E9370
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
cmp r4, #4
blo _021E937E
bl GF_AssertFail
_021E937E:
ldr r0, [r5]
cmp r4, r0
blt _021E9388
bl GF_AssertFail
_021E9388:
mov r0, #0x18
add r5, #0x24
mul r0, r4
add r0, r5, r0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021E9370
thumb_func_start ov96_021E9394
ov96_021E9394: ; 0x021E9394
mov r3, #0
str r3, [r0]
str r3, [r0, #4]
str r3, [r0, #8]
str r3, [r0, #0xc]
mov r1, #0x51
str r3, [r0, #0x10]
add r2, r3, #0
lsl r1, r1, #2
_021E93A6:
add r3, r3, #1
str r2, [r0, r1]
add r0, r0, #4
cmp r3, #0xc
blt _021E93A6
bx lr
.balign 4, 0
thumb_func_end ov96_021E9394
thumb_func_start ov96_021E93B4
ov96_021E93B4: ; 0x021E93B4
push {r4, r5, r6, r7, lr}
sub sp, #0xa4
str r0, [sp]
add r0, sp, #0x14
str r0, [sp, #8]
str r0, [sp, #0xc]
mov r0, #0
str r0, [sp, #0x10]
cmp r1, #0
beq _021E93D2
cmp r1, #1
beq _021E93D8
cmp r1, #2
beq _021E93DE
b _021E93E4
_021E93D2:
mov r0, #1
str r0, [sp, #4]
b _021E93E8
_021E93D8:
mov r0, #1
str r0, [sp, #4]
b _021E93E8
_021E93DE:
mov r0, #2
str r0, [sp, #4]
b _021E93E8
_021E93E4:
bl GF_AssertFail
_021E93E8:
ldr r1, [sp, #4]
ldr r0, [sp]
mov r6, #0
str r1, [r0, #0xc]
ldr r4, [r0]
cmp r4, #0
ble _021E949E
add r0, #0x24
mov ip, r0
_021E93FA:
add r3, r6, #1
add r2, r3, #0
mov r0, #0xc
add r1, sp, #8
mul r2, r0
add r0, r1, r2
mov r3, ip
mov r7, #0
str r3, [r0, #8]
str r7, [r0, #4]
str r7, [r1, r2]
cmp r6, #0
ble _021E9486
_021E9414:
ldr r2, [sp, #4]
ldr r1, [r1, #4]
cmp r2, #1
ldr r5, [r0, #8]
bne _021E9450
ldr r3, [r1, #8]
ldr r4, [r5, #0xc]
ldr r2, [r3, #0xc]
cmp r2, r4
bge _021E9436
ldr r2, [r1]
str r0, [r2, #4]
ldr r2, [r1]
str r2, [r0]
str r1, [r0, #4]
str r0, [r1]
b _021E9486
_021E9436:
cmp r2, r4
bne _021E9480
ldr r2, [r3]
ldr r3, [r5]
cmp r2, r3
ble _021E9480
ldr r2, [r1]
str r0, [r2, #4]
ldr r2, [r1]
str r2, [r0]
str r1, [r0, #4]
str r0, [r1]
b _021E9480
_021E9450:
ldr r3, [r1, #8]
ldr r4, [r5, #0xc]
ldr r2, [r3, #0xc]
cmp r2, r4
ble _021E9468
ldr r2, [r1]
str r0, [r2, #4]
ldr r2, [r1]
str r2, [r0]
str r1, [r0, #4]
str r0, [r1]
b _021E9486
_021E9468:
cmp r2, r4
bne _021E9480
ldr r2, [r3]
ldr r3, [r5]
cmp r2, r3
ble _021E9480
ldr r2, [r1]
str r0, [r2, #4]
ldr r2, [r1]
str r2, [r0]
str r1, [r0, #4]
str r0, [r1]
_021E9480:
add r7, r7, #1
cmp r7, r6
blt _021E9414
_021E9486:
cmp r7, r6
bne _021E948E
str r0, [r1, #4]
str r1, [r0]
_021E948E:
mov r0, ip
add r0, #0x18
mov ip, r0
ldr r0, [sp]
add r6, r6, #1
ldr r4, [r0]
cmp r6, r4
blt _021E93FA
_021E949E:
mov r1, #0
mvn r1, r1
mov r3, #0
add r0, sp, #8
add r2, r1, #0
add r5, r3, #0
cmp r4, #0
ble _021E94E8
mov r7, #0x51
ldr r4, [sp]
lsl r7, r7, #2
_021E94B4:
ldr r0, [r0, #4]
ldr r6, [r0, #8]
str r6, [r4, r7]
ldr r6, [r0, #8]
ldr r6, [r6, #0xc]
cmp r1, r6
beq _021E94D2
add r1, r6, #0
cmp r3, #0
beq _021E94CE
add r2, r5, #0
mov r3, #0
b _021E94D4
_021E94CE:
add r2, r2, #1
b _021E94D4
_021E94D2:
mov r3, #1
_021E94D4:
mov r6, #0x51
lsl r6, r6, #2
ldr r6, [r4, r6]
add r5, r5, #1
strb r2, [r6, #9]
ldr r6, [sp]
add r4, r4, #4
ldr r6, [r6]
cmp r5, r6
blt _021E94B4
_021E94E8:
add sp, #0xa4
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021E93B4
thumb_func_start ov96_021E94EC
ov96_021E94EC: ; 0x021E94EC
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
cmp r4, #4
blo _021E94FA
bl GF_AssertFail
_021E94FA:
ldr r0, [r5]
cmp r4, r0
blt _021E9504
bl GF_AssertFail
_021E9504:
lsl r0, r4, #2
add r1, r5, r0
mov r0, #0x51
lsl r0, r0, #2
ldr r0, [r1, r0]
pop {r3, r4, r5, pc}
thumb_func_end ov96_021E94EC
thumb_func_start ov96_021E9510
ov96_021E9510: ; 0x021E9510
push {r4, lr}
add r4, r0, #0
bl ov96_021E9394
mov r0, #4
str r0, [r4]
mov r0, #0
str r0, [r4, #4]
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021E9510
thumb_func_start ov96_021E9524
ov96_021E9524: ; 0x021E9524
ldr r0, [r0]
bx lr
thumb_func_end ov96_021E9524
thumb_func_start ov96_021E9528
ov96_021E9528: ; 0x021E9528
ldr r0, [r0, #4]
bx lr
thumb_func_end ov96_021E9528
thumb_func_start ov96_021E952C
ov96_021E952C: ; 0x021E952C
push {r4, r5, r6, lr}
add r4, r0, #0
ldr r0, [r4, #0x10]
cmp r0, #0
beq _021E953A
bl GF_AssertFail
_021E953A:
ldr r0, [r4, #0x10]
cmp r0, #0
bne _021E956C
ldr r0, [r4]
mov r2, #0
cmp r0, #0
ble _021E9568
mov r5, #0x51
add r3, r4, #0
lsl r5, r5, #2
_021E954E:
ldr r1, [r3, r5]
add r2, r2, #1
ldr r0, [r1]
ldrh r1, [r1, #0xa]
lsl r0, r0, #2
add r0, r4, r0
ldr r6, [r0, #0x14]
add r3, r3, #4
add r1, r6, r1
str r1, [r0, #0x14]
ldr r0, [r4]
cmp r2, r0
blt _021E954E
_021E9568:
mov r0, #1
str r0, [r4, #0x10]
_021E956C:
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021E952C
thumb_func_start ov96_021E9570
ov96_021E9570: ; 0x021E9570
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r4, r0, #0
str r1, [sp]
add r1, sp, #4
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
str r0, [r1, #0xc]
ldr r0, [sp]
cmp r0, #0xa
blt _021E958E
bl GF_AssertFail
_021E958E:
ldr r1, [r4]
mov r0, #0
cmp r1, #0
ble _021E95B6
mov r7, #0x51
add r1, r4, #0
add r6, sp, #4
lsl r7, r7, #2
_021E959E:
ldr r2, [r1, r7]
add r0, r0, #1
ldr r3, [r2]
ldrh r2, [r2, #0xa]
lsl r5, r3, #2
ldr r3, [r6, r5]
add r1, r1, #4
add r2, r3, r2
str r2, [r6, r5]
ldr r2, [r4]
cmp r0, r2
blt _021E959E
_021E95B6:
ldr r1, [sp]
mov r0, #0
lsl r1, r1, #4
add r4, r4, r1
mov r1, #0x5d
add r3, sp, #4
lsl r1, r1, #2
_021E95C4:
ldr r2, [r3]
add r0, r0, #1
str r2, [r4, r1]
add r3, r3, #4
add r4, r4, #4
cmp r0, #4
blt _021E95C4
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021E9570
thumb_func_start ov96_021E95D8
ov96_021E95D8: ; 0x021E95D8
push {r4, r5, r6, lr}
add r4, r1, #0
add r5, r0, #0
add r6, r2, #0
cmp r4, #0xa
blt _021E95E8
bl GF_AssertFail
_021E95E8:
lsl r0, r4, #4
add r1, r5, r0
lsl r0, r6, #2
add r1, r1, r0
mov r0, #0x5d
lsl r0, r0, #2
ldr r0, [r1, r0]
pop {r4, r5, r6, pc}
thumb_func_end ov96_021E95D8
thumb_func_start ov96_021E95F8
ov96_021E95F8: ; 0x021E95F8
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r4, r1, #0
add r6, r2, #0
add r5, r3, #0
bl PokeathlonOvy_GetHeapID
str r0, [sp, #8]
ldr r2, _021E9668 ; =0x00000135
ldr r3, [sp, #8]
mov r0, #1
mov r1, #0x1b
bl NewMsgDataFromNarc
add r7, r0, #0
add r0, r4, #0
bl ov96_021E9344
add r4, r0, #0
str r6, [r4]
ldr r0, [sp, #8]
str r5, [r4, #0xc]
bl MessageFormat_New
mov r1, #1
str r1, [sp]
str r1, [sp, #4]
add r3, sp, #0x10
ldrb r1, [r3, #0x10]
ldrb r3, [r3, #0x14]
add r2, r5, #0
add r6, r0, #0
bl BufferIntegerAsString
ldr r2, [sp, #0x28]
ldr r3, [sp, #8]
add r0, r6, #0
add r1, r7, #0
bl ReadMsgData_ExpandPlaceholders
add r5, r0, #0
add r0, r6, #0
bl MessageFormat_Delete
ldr r0, [r4, #0x10]
add r1, r5, #0
bl String_Copy
add r0, r5, #0
bl String_Delete
add r0, r7, #0
bl DestroyMsgData
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021E9668: .word 0x00000135
thumb_func_end ov96_021E95F8
thumb_func_start ov96_021E966C
ov96_021E966C: ; 0x021E966C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r4, r1, #0
add r5, r2, #0
add r6, r3, #0
bl PokeathlonOvy_GetHeapID
str r0, [sp, #8]
ldr r2, _021E96F4 ; =0x00000135
ldr r3, [sp, #8]
mov r0, #1
mov r1, #0x1b
bl NewMsgDataFromNarc
add r7, r0, #0
add r0, r4, #0
bl ov96_021E9344
add r4, r0, #0
str r5, [r4]
ldr r0, [sp, #8]
str r6, [r4, #0xc]
bl MessageFormat_New
mov r1, #1
str r1, [sp]
str r1, [sp, #4]
add r1, sp, #0x10
add r3, sp, #0x30
ldrb r1, [r1, #0x18]
ldrb r3, [r3]
ldr r2, [sp, #0x20]
add r5, r0, #0
bl BufferIntegerAsString
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
add r1, sp, #0x10
add r3, sp, #0x34
ldrb r1, [r1, #0x1c]
ldrb r3, [r3]
ldr r2, [sp, #0x24]
add r0, r5, #0
bl BufferIntegerAsString
ldr r2, [sp, #0x38]
ldr r3, [sp, #8]
add r0, r5, #0
add r1, r7, #0
bl ReadMsgData_ExpandPlaceholders
add r6, r0, #0
add r0, r5, #0
bl MessageFormat_Delete
ldr r0, [r4, #0x10]
add r1, r6, #0
bl String_Copy
add r0, r6, #0
bl String_Delete
add r0, r7, #0
bl DestroyMsgData
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021E96F4: .word 0x00000135
thumb_func_end ov96_021E966C
thumb_func_start ov96_021E96F8
ov96_021E96F8: ; 0x021E96F8
push {r4, lr}
add r4, r3, #0
add r0, r4, #0
add r1, r2, #0
bl ov96_021E5E04
add r0, r4, #0
mov r1, #1
bl ov96_021E601C
add r0, r4, #0
mov r1, #1
bl ov96_021E5FC8
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021E96F8
thumb_func_start ov96_021E9718
ov96_021E9718: ; 0x021E9718
push {r3, r4, r5, r6, r7, lr}
add r4, r3, #0
add r5, r0, #0
add r0, r4, #0
add r6, r1, #0
add r7, r2, #0
bl ov96_021E5F24
cmp r0, #0
bne _021E9780
add r0, r4, #0
add r1, r5, #0
bl ov96_021E5D40
add r1, r7, #0
add r2, r6, #0
bl memcpy
add r0, r4, #0
bl ov96_021E5F00
add r0, r4, #0
bl ov96_021E5D34
add r5, r0, #0
add r0, r4, #0
bl ov96_021E5EF4
cmp r5, r0
bne _021E9780
add r0, r4, #0
bl ov96_021E5EF4
cmp r0, #4
bhs _021E9772
add r0, r4, #0
bl ov96_021E5EF4
mov r1, #4
sub r1, r1, r0
lsl r1, r1, #0x18
add r0, r4, #0
lsr r1, r1, #0x18
bl ov96_021E8484
_021E9772:
add r0, r4, #0
bl ov96_021E5F10
add r0, r4, #0
mov r1, #4
bl ov96_021E5FC8
_021E9780:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021E9718
thumb_func_start ov96_021E9784
ov96_021E9784: ; 0x021E9784
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
add r4, r3, #0
add r5, r1, #0
add r7, r2, #0
add r0, r4, #0
add r1, r6, #0
bl ov96_021E5D40
add r1, r7, #0
add r2, r5, #0
bl memcpy
add r0, r4, #0
bl ov96_021E604C
add r0, r4, #0
mov r1, #3
bl ov96_021E601C
add r0, r4, #0
mov r1, #5
bl ov96_021E5FC8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021E9784
thumb_func_start ov96_021E97B8
ov96_021E97B8: ; 0x021E97B8
push {r4, r5, r6, lr}
add r4, r3, #0
add r0, r4, #0
add r5, r1, #0
add r6, r2, #0
bl ov96_021E5F24
cmp r0, #0
beq _021E97DA
add r0, r4, #0
mov r1, #0
bl ov96_021E5F34
add r1, r6, #0
add r2, r5, #0
bl memcpy
_021E97DA:
add r0, r4, #0
mov r1, #4
bl ov96_021E601C
add r0, r4, #0
mov r1, #6
bl ov96_021E5FC8
pop {r4, r5, r6, pc}
thumb_func_end ov96_021E97B8
thumb_func_start ov96_021E97EC
ov96_021E97EC: ; 0x021E97EC
push {r3, r4, r5, lr}
add r5, r3, #0
add r0, r5, #0
bl ov96_021E5F00
add r0, r5, #0
bl ov96_021E5D34
add r4, r0, #0
add r0, r5, #0
bl ov96_021E5EF4
cmp r4, r0
bne _021E981E
add r0, r5, #0
bl ov96_021E5F10
add r0, r5, #0
mov r1, #5
bl ov96_021E601C
add r0, r5, #0
mov r1, #7
bl ov96_021E5FC8
_021E981E:
pop {r3, r4, r5, pc}
thumb_func_end ov96_021E97EC
thumb_func_start ov96_021E9820
ov96_021E9820: ; 0x021E9820
push {r4, r5, r6, lr}
add r5, r0, #0
add r4, r2, #0
add r0, r3, #0
add r6, r1, #0
bl ov96_021E5F54
add r1, r4, #0
add r1, #0x24
ldrb r1, [r1]
cmp r1, #0
beq _021E9844
add r0, #0xf0
add r1, r4, #0
add r2, r6, #0
bl memcpy
pop {r4, r5, r6, pc}
_021E9844:
mov r1, #0x28
add r0, #0x50
mul r1, r5
add r0, r0, r1
add r1, r4, #0
add r2, r6, #0
bl memcpy
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021E9820
thumb_func_start ov96_021E9858
ov96_021E9858: ; 0x021E9858
push {r4, lr}
add r4, r3, #0
add r0, r4, #0
mov r1, #0xa
bl ov96_021E601C
add r0, r4, #0
mov r1, #0x12
bl ov96_021E5FC8
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021E9858
thumb_func_start ov96_021E9870
ov96_021E9870: ; 0x021E9870
push {r3, r4, r5, r6, r7, lr}
add r5, r3, #0
add r6, r0, #0
add r0, r5, #0
str r2, [sp]
bl ov96_021E5F54
add r7, r0, #0
add r0, r5, #0
bl ov96_021E5F24
cmp r0, #0
bne _021E98CE
add r0, r5, #0
bl ov96_021E5FAC
add r7, #0x28
add r4, r0, #0
add r0, r7, #0
bl ov96_021E8A20
add r1, r6, #0
mul r1, r4
add r0, r0, r1
ldr r1, [sp]
add r2, r4, #0
bl memcpy
add r0, r5, #0
bl ov96_021E5F00
add r0, r5, #0
bl ov96_021E5D34
add r4, r0, #0
add r0, r5, #0
bl ov96_021E5EF4
cmp r4, r0
bne _021E98CE
add r0, r5, #0
bl ov96_021E5F10
add r0, r5, #0
mov r1, #0x15
bl ov96_021E5FC8
_021E98CE:
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021E9870
thumb_func_start ov96_021E98D0
ov96_021E98D0: ; 0x021E98D0
push {r4, r5, r6, lr}
add r6, r3, #0
add r5, r1, #0
add r4, r2, #0
add r0, r6, #0
bl ov96_021E5F54
add r0, #0xf0
add r1, r4, #0
add r2, r5, #0
bl memcpy
add r0, r6, #0
mov r1, #0x16
bl ov96_021E5FC8
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021E98D0
thumb_func_start ov96_021E98F4
ov96_021E98F4: ; 0x021E98F4
push {r3, r4, r5, r6, r7, lr}
add r4, r0, #0
str r3, [sp]
add r0, r3, #0
add r7, r2, #0
bl ov96_021E5F54
ldr r0, [sp]
bl ov96_021E5F24
cmp r0, #0
bne _021E9990
lsl r1, r4, #0x18
ldr r0, [sp]
lsr r1, r1, #0x18
bl ov96_021E5D78
add r5, r0, #0
mov r6, #0
_021E991A:
lsl r4, r6, #5
ldr r1, [r5, r4]
ldr r0, [r7, r4]
add r3, r7, r4
add r0, r1, r0
str r0, [r5, r4]
add r2, r5, r4
ldr r1, [r2, #4]
ldr r0, [r3, #4]
add r0, r1, r0
str r0, [r2, #4]
ldr r1, [r2, #8]
ldr r0, [r3, #8]
add r0, r1, r0
str r0, [r2, #8]
ldr r1, [r2, #0xc]
ldr r0, [r3, #0xc]
add r0, r1, r0
str r0, [r2, #0xc]
ldr r1, [r2, #0x10]
ldr r0, [r3, #0x10]
add r0, r1, r0
str r0, [r2, #0x10]
ldr r1, [r2, #0x14]
ldr r0, [r3, #0x14]
add r0, r1, r0
str r0, [r2, #0x14]
ldr r1, [r2, #0x18]
ldr r0, [r3, #0x18]
add r0, r1, r0
str r0, [r2, #0x18]
ldr r1, [r2, #0x1c]
ldr r0, [r3, #0x1c]
add r0, r1, r0
str r0, [r2, #0x1c]
add r0, r6, #1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
cmp r6, #3
blo _021E991A
ldr r0, [sp]
bl ov96_021E5F00
ldr r0, [sp]
bl ov96_021E5D34
add r4, r0, #0
ldr r0, [sp]
bl ov96_021E5EF4
cmp r4, r0
bne _021E9990
ldr r0, [sp]
bl ov96_021E5F10
ldr r0, [sp]
mov r1, #0x1e
bl ov96_021E5FC8
_021E9990:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021E98F4
thumb_func_start ov96_021E9994
ov96_021E9994: ; 0x021E9994
push {r4, lr}
add r4, r3, #0
add r0, r4, #0
bl ov96_021E5F54
add r0, r4, #0
bl ov96_021E5F24
add r0, r4, #0
mov r1, #0xd
bl ov96_021E601C
add r0, r4, #0
mov r1, #0x1f
bl ov96_021E5FC8
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021E9994
thumb_func_start ov96_021E99B8
ov96_021E99B8: ; 0x021E99B8
push {r3, r4, r5, lr}
add r5, r3, #0
add r0, r5, #0
bl ov96_021E5F54
add r0, r5, #0
bl ov96_021E5F00
add r0, r5, #0
bl ov96_021E5D34
add r4, r0, #0
add r0, r5, #0
bl ov96_021E5EF4
cmp r4, r0
bne _021E99F0
add r0, r5, #0
bl ov96_021E5F10
add r0, r5, #0
mov r1, #0xf
bl ov96_021E601C
add r0, r5, #0
mov r1, #0x24
bl ov96_021E5FC8
_021E99F0:
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021E99B8
thumb_func_start ov96_021E99F4
ov96_021E99F4: ; 0x021E99F4
mov r0, #4
bx lr
thumb_func_end ov96_021E99F4
thumb_func_start ov96_021E99F8
ov96_021E99F8: ; 0x021E99F8
mov r0, #0x7c
bx lr
thumb_func_end ov96_021E99F8
thumb_func_start ov96_021E99FC
ov96_021E99FC: ; 0x021E99FC
mov r0, #0x1f
lsl r0, r0, #4
bx lr
.balign 4, 0
thumb_func_end ov96_021E99FC
thumb_func_start ov96_021E9A04
ov96_021E9A04: ; 0x021E9A04
push {r3, lr}
bl PlayerProfile_sizeof
lsl r0, r0, #2
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_021E9A04
thumb_func_start ov96_021E9A10
ov96_021E9A10: ; 0x021E9A10
mov r0, #0x74
bx lr
thumb_func_end ov96_021E9A10
thumb_func_start ov96_021E9A14
ov96_021E9A14: ; 0x021E9A14
mov r0, #0x26
bx lr
thumb_func_end ov96_021E9A14
thumb_func_start ov96_021E9A18
ov96_021E9A18: ; 0x021E9A18
mov r0, #0x60
bx lr
thumb_func_end ov96_021E9A18
thumb_func_start ov96_021E9A1C
ov96_021E9A1C: ; 0x021E9A1C
mov r0, #6
lsl r0, r0, #6
bx lr
.balign 4, 0
thumb_func_end ov96_021E9A1C
thumb_func_start ov96_021E9A24
ov96_021E9A24: ; 0x021E9A24
ldr r3, _021E9A28 ; =sub_02031B10
bx r3
.balign 4, 0
_021E9A28: .word sub_02031B10
thumb_func_end ov96_021E9A24
thumb_func_start ov96_021E9A2C
ov96_021E9A2C: ; 0x021E9A2C
ldr r3, _021E9A34 ; =ov96_021E5FA4
add r0, r1, #0
bx r3
nop
_021E9A34: .word ov96_021E5FA4
thumb_func_end ov96_021E9A2C
thumb_func_start ov96_021E9A38
ov96_021E9A38: ; 0x021E9A38
ldr r3, _021E9A44 ; =ov96_021E5F44
add r2, r0, #0
add r0, r1, #0
add r1, r2, #0
bx r3
nop
_021E9A44: .word ov96_021E5F44
thumb_func_end ov96_021E9A38
thumb_func_start ov96_021E9A48
ov96_021E9A48: ; 0x021E9A48
ldr r3, _021E9A50 ; =ov96_021E5D78
add r0, r1, #0
mov r1, #0
bx r3
.balign 4, 0
_021E9A50: .word ov96_021E5D78
thumb_func_end ov96_021E9A48
thumb_func_start ov96_021E9A54
ov96_021E9A54: ; 0x021E9A54
push {r3, r4, r5, lr}
add r4, r0, #0
add r0, r1, #0
add r5, r2, #0
bl ov96_021E5D88
add r1, r4, #0
mul r1, r5
add r0, r0, r1
pop {r3, r4, r5, pc}
thumb_func_end ov96_021E9A54
thumb_func_start ov96_021E9A68
ov96_021E9A68: ; 0x021E9A68
add r2, r0, #0
add r0, r1, #0
lsl r1, r2, #0x18
ldr r3, _021E9A74 ; =ov96_021E86FC
lsr r1, r1, #0x18
bx r3
.balign 4, 0
_021E9A74: .word ov96_021E86FC
thumb_func_end ov96_021E9A68
thumb_func_start ov96_021E9A78
ov96_021E9A78: ; 0x021E9A78
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r6, r2, #0
mov r1, #0
add r5, r0, #0
add r2, sp, #0
add r0, r1, #0
_021E9A86:
add r1, r1, #1
strb r0, [r2]
add r2, r2, #1
cmp r1, #4
blt _021E9A86
mov r0, #1
tst r0, r4
beq _021E9AAA
add r0, sp, #0
ldrb r1, [r0]
add r1, r1, #1
strb r1, [r0]
ldrb r1, [r0, #2]
add r1, r1, #1
strb r1, [r0, #2]
ldrb r1, [r0, #3]
add r1, r1, #1
strb r1, [r0, #3]
_021E9AAA:
mov r0, #4
tst r0, r4
beq _021E9AC4
add r0, sp, #0
ldrb r1, [r0]
add r1, r1, #1
strb r1, [r0]
ldrb r1, [r0, #2]
add r1, r1, #1
strb r1, [r0, #2]
ldrb r1, [r0, #3]
add r1, r1, #1
strb r1, [r0, #3]
_021E9AC4:
mov r0, #2
tst r0, r4
beq _021E9ADE
add r0, sp, #0
ldrb r1, [r0]
add r1, r1, #1
strb r1, [r0]
ldrb r1, [r0, #2]
add r1, r1, #1
strb r1, [r0, #2]
ldrb r1, [r0, #3]
add r1, r1, #1
strb r1, [r0, #3]
_021E9ADE:
mov r0, #8
tst r0, r4
beq _021E9AF8
add r0, sp, #0
ldrb r1, [r0]
add r1, r1, #1
strb r1, [r0]
ldrb r1, [r0, #2]
add r1, r1, #1
strb r1, [r0, #2]
ldrb r1, [r0, #3]
add r1, r1, #1
strb r1, [r0, #3]
_021E9AF8:
mov r0, #0x10
tst r0, r4
beq _021E9B12
add r0, sp, #0
ldrb r1, [r0]
add r1, r1, #1
strb r1, [r0]
ldrb r1, [r0, #2]
add r1, r1, #1
strb r1, [r0, #2]
ldrb r1, [r0, #3]
add r1, r1, #1
strb r1, [r0, #3]
_021E9B12:
mov r0, #0x20
tst r0, r4
beq _021E9B2C
add r0, sp, #0
ldrb r1, [r0]
add r1, r1, #1
strb r1, [r0]
ldrb r1, [r0, #2]
add r1, r1, #1
strb r1, [r0, #2]
ldrb r1, [r0, #3]
add r1, r1, #1
strb r1, [r0, #3]
_021E9B2C:
mov r0, #0x40
tst r0, r4
beq _021E9B46
add r0, sp, #0
ldrb r1, [r0]
add r1, r1, #1
strb r1, [r0]
ldrb r1, [r0, #2]
add r1, r1, #1
strb r1, [r0, #2]
ldrb r1, [r0, #3]
add r1, r1, #1
strb r1, [r0, #3]
_021E9B46:
mov r0, #0x80
tst r0, r4
beq _021E9B60
add r0, sp, #0
ldrb r1, [r0]
add r1, r1, #1
strb r1, [r0]
ldrb r1, [r0, #2]
add r1, r1, #1
strb r1, [r0, #2]
ldrb r1, [r0, #3]
add r1, r1, #1
strb r1, [r0, #3]
_021E9B60:
mov r0, #1
lsl r0, r0, #8
tst r0, r4
beq _021E9B7C
add r0, sp, #0
ldrb r1, [r0]
add r1, r1, #1
strb r1, [r0]
ldrb r1, [r0, #2]
add r1, r1, #1
strb r1, [r0, #2]
ldrb r1, [r0, #3]
add r1, r1, #1
strb r1, [r0, #3]
_021E9B7C:
mov r0, #2
lsl r0, r0, #8
tst r0, r4
beq _021E9B98
add r0, sp, #0
ldrb r1, [r0]
add r1, r1, #1
strb r1, [r0]
ldrb r1, [r0, #2]
add r1, r1, #1
strb r1, [r0, #2]
ldrb r1, [r0, #3]
add r1, r1, #1
strb r1, [r0, #3]
_021E9B98:
mov r0, #1
lsl r0, r0, #0xa
tst r0, r4
beq _021E9BB4
add r0, sp, #0
ldrb r1, [r0]
add r1, r1, #1
strb r1, [r0]
ldrb r1, [r0, #2]
add r1, r1, #1
strb r1, [r0, #2]
ldrb r1, [r0, #3]
add r1, r1, #1
strb r1, [r0, #3]
_021E9BB4:
mov r0, #2
lsl r0, r0, #0xa
tst r0, r4
beq _021E9BD0
add r0, sp, #0
ldrb r1, [r0]
add r1, r1, #1
strb r1, [r0]
ldrb r1, [r0, #2]
add r1, r1, #1
strb r1, [r0, #2]
ldrb r1, [r0, #3]
add r1, r1, #1
strb r1, [r0, #3]
_021E9BD0:
mov r1, #2
add r0, sp, #0
strb r1, [r0, #1]
add r0, r5, #0
mov r1, #0xb4
bl AllocFromHeap
add r7, r0, #0
str r5, [r7]
str r4, [r7, #4]
str r6, [r7, #8]
mov r5, #0
add r4, sp, #0
add r6, r7, #0
_021E9BEC:
ldrb r0, [r4]
ldr r2, [r7]
add r1, r5, #0
bl Create2DGfxResObjMan
str r0, [r6, #0xc]
add r5, r5, #1
add r4, r4, #1
add r6, r6, #4
cmp r5, #4
blt _021E9BEC
add r0, r7, #0
bl ov96_021E9D10
add r0, r7, #0
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021E9A78
thumb_func_start ov96_021E9C0C
ov96_021E9C0C: ; 0x021E9C0C
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r1, [r5, #4]
mov r0, #1
tst r0, r1
beq _021E9C1E
ldr r0, [r5, #0x1c]
bl sub_0200AEB0
_021E9C1E:
ldr r1, [r5, #4]
mov r0, #4
tst r0, r1
beq _021E9C2C
ldr r0, [r5, #0x20]
bl sub_0200AEB0
_021E9C2C:
ldr r1, [r5, #4]
mov r0, #2
tst r0, r1
beq _021E9C3A
ldr r0, [r5, #0x24]
bl sub_0200AEB0
_021E9C3A:
ldr r1, [r5, #4]
mov r0, #8
tst r0, r1
beq _021E9C48
ldr r0, [r5, #0x28]
bl sub_0200AEB0
_021E9C48:
ldr r1, [r5, #4]
mov r0, #0x10
tst r0, r1
beq _021E9C56
ldr r0, [r5, #0x2c]
bl sub_0200AEB0
_021E9C56:
ldr r1, [r5, #4]
mov r0, #0x20
tst r0, r1
beq _021E9C64
ldr r0, [r5, #0x30]
bl sub_0200AEB0
_021E9C64:
ldr r1, [r5, #4]
mov r0, #0x40
tst r0, r1
beq _021E9C72
ldr r0, [r5, #0x34]
bl sub_0200AEB0
_021E9C72:
ldr r1, [r5, #4]
mov r0, #0x80
tst r0, r1
beq _021E9C80
ldr r0, [r5, #0x38]
bl sub_0200AEB0
_021E9C80:
mov r0, #1
ldr r1, [r5, #4]
lsl r0, r0, #8
tst r0, r1
beq _021E9C90
ldr r0, [r5, #0x3c]
bl sub_0200AEB0
_021E9C90:
mov r0, #2
ldr r1, [r5, #4]
lsl r0, r0, #8
tst r0, r1
beq _021E9CA0
ldr r0, [r5, #0x40]
bl sub_0200AEB0
_021E9CA0:
mov r0, #1
ldr r1, [r5, #4]
lsl r0, r0, #0xa
tst r0, r1
beq _021E9CB0
ldr r0, [r5, #0x44]
bl sub_0200AEB0
_021E9CB0:
mov r0, #2
ldr r1, [r5, #4]
lsl r0, r0, #0xa
tst r0, r1
beq _021E9CC0
ldr r0, [r5, #0x48]
bl sub_0200AEB0
_021E9CC0:
add r0, r5, #0
add r0, #0xac
ldr r0, [r0]
bl sub_0200B0A8
add r0, r5, #0
add r0, #0xb0
ldr r0, [r0]
cmp r0, #0
beq _021E9CD8
bl sub_0200B0A8
_021E9CD8:
mov r6, #0
add r4, r5, #0
_021E9CDC:
ldr r0, [r4, #0xc]
bl Destroy2DGfxResObjMan
add r6, r6, #1
add r4, r4, #4
cmp r6, #4
blt _021E9CDC
add r0, r5, #0
bl FreeToHeap
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021E9C0C
thumb_func_start ov96_021E9CF4
ov96_021E9CF4: ; 0x021E9CF4
cmp r0, #0
bne _021E9CFC
mov r0, #0
bx lr
_021E9CFC:
ldr r0, [r0, #4]
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
.balign 4, 0
thumb_func_end ov96_021E9CF4
thumb_func_start ov96_021E9D08
ov96_021E9D08: ; 0x021E9D08
lsl r1, r1, #2
add r0, r0, r1
ldr r0, [r0, #0xc]
bx lr
thumb_func_end ov96_021E9D08
thumb_func_start ov96_021E9D10
ov96_021E9D10: ; 0x021E9D10
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
ldr r1, [r4, #4]
mov r0, #1
tst r1, r0
beq _021E9D6E
mov r1, #0x14
str r1, [sp]
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r2, #3
mov r3, #0
bl AddCharResObjFromNarc
str r0, [r4, #0x1c]
mov r0, #0x14
str r0, [sp]
mov r2, #2
str r2, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x14]
mov r3, #0
bl AddCellOrAnimResObjFromNarc
str r0, [r4, #0x4c]
mov r0, #0x14
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x18]
mov r2, #1
mov r3, #0
bl AddCellOrAnimResObjFromNarc
str r0, [r4, #0x7c]
ldr r0, [r4, #0x1c]
bl sub_0200ADA4
_021E9D6E:
ldr r1, [r4, #4]
mov r0, #4
tst r0, r1
beq _021E9DCE
mov r0, #0x15
str r0, [sp]
ldr r0, [r4, #8]
mov r1, #0x99
str r0, [sp, #4]
ldr r0, [r4]
mov r2, #6
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r3, #0
bl AddCharResObjFromNarc
str r0, [r4, #0x20]
mov r0, #0x15
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x14]
mov r2, #5
mov r3, #0
bl AddCellOrAnimResObjFromNarc
str r0, [r4, #0x50]
mov r0, #0x15
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x18]
mov r2, #4
mov r3, #0
bl AddCellOrAnimResObjFromNarc
add r1, r4, #0
add r1, #0x80
str r0, [r1]
ldr r0, [r4, #0x20]
bl sub_0200ADA4
_021E9DCE:
ldr r1, [r4, #4]
mov r0, #2
tst r0, r1
beq _021E9E2E
mov r0, #0x16
str r0, [sp]
ldr r0, [r4, #8]
mov r1, #0x99
str r0, [sp, #4]
ldr r0, [r4]
mov r2, #9
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r3, #0
bl AddCharResObjFromNarc
str r0, [r4, #0x24]
mov r0, #0x16
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x14]
mov r2, #8
mov r3, #0
bl AddCellOrAnimResObjFromNarc
str r0, [r4, #0x54]
mov r0, #0x16
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x18]
mov r2, #7
mov r3, #0
bl AddCellOrAnimResObjFromNarc
add r1, r4, #0
add r1, #0x84
str r0, [r1]
ldr r0, [r4, #0x24]
bl sub_0200ADA4
_021E9E2E:
ldr r0, [r4, #4]
mov r2, #0x10
tst r0, r2
beq _021E9E8C
mov r0, #0x1a
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r3, #0
bl AddCharResObjFromNarc
str r0, [r4, #0x2c]
mov r0, #0x1a
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x14]
mov r2, #0xf
mov r3, #0
bl AddCellOrAnimResObjFromNarc
str r0, [r4, #0x5c]
mov r0, #0x1a
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x18]
mov r2, #0xe
mov r3, #0
bl AddCellOrAnimResObjFromNarc
add r1, r4, #0
add r1, #0x8c
str r0, [r1]
ldr r0, [r4, #0x2c]
bl sub_0200ADA4
_021E9E8C:
ldr r1, [r4, #4]
mov r0, #0x20
tst r0, r1
beq _021E9EEC
mov r0, #0x1b
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r2, #0x13
mov r3, #0
bl AddCharResObjFromNarc
str r0, [r4, #0x30]
mov r0, #0x1b
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x14]
mov r2, #0x12
mov r3, #0
bl AddCellOrAnimResObjFromNarc
str r0, [r4, #0x60]
mov r0, #0x1b
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x18]
mov r2, #0x11
mov r3, #0
bl AddCellOrAnimResObjFromNarc
add r1, r4, #0
add r1, #0x90
str r0, [r1]
ldr r0, [r4, #0x30]
bl sub_0200ADA4
_021E9EEC:
ldr r1, [r4, #4]
mov r0, #8
tst r0, r1
beq _021E9F4C
mov r0, #0x19
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r2, #0xd
mov r3, #0
bl AddCharResObjFromNarc
str r0, [r4, #0x28]
mov r0, #0x19
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x14]
mov r2, #0xc
mov r3, #0
bl AddCellOrAnimResObjFromNarc
str r0, [r4, #0x58]
mov r0, #0x19
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x18]
mov r2, #0xb
mov r3, #0
bl AddCellOrAnimResObjFromNarc
add r1, r4, #0
add r1, #0x88
str r0, [r1]
ldr r0, [r4, #0x28]
bl sub_0200ADA4
_021E9F4C:
ldr r1, [r4, #4]
mov r0, #0x40
tst r0, r1
beq _021E9FAC
mov r0, #0x1c
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r2, #0x16
mov r3, #0
bl AddCharResObjFromNarc
str r0, [r4, #0x34]
mov r0, #0x1c
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x14]
mov r2, #0x15
mov r3, #0
bl AddCellOrAnimResObjFromNarc
str r0, [r4, #0x64]
mov r0, #0x1c
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x18]
mov r2, #0x14
mov r3, #0
bl AddCellOrAnimResObjFromNarc
add r1, r4, #0
add r1, #0x94
str r0, [r1]
ldr r0, [r4, #0x34]
bl sub_0200ADA4
_021E9FAC:
ldr r1, [r4, #4]
mov r0, #0x80
tst r0, r1
beq _021EA00C
mov r0, #0x1d
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r2, #0x19
mov r3, #0
bl AddCharResObjFromNarc
str r0, [r4, #0x38]
mov r0, #0x1d
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x14]
mov r2, #0x18
mov r3, #0
bl AddCellOrAnimResObjFromNarc
str r0, [r4, #0x68]
mov r0, #0x1d
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x18]
mov r2, #0x17
mov r3, #0
bl AddCellOrAnimResObjFromNarc
add r1, r4, #0
add r1, #0x98
str r0, [r1]
ldr r0, [r4, #0x38]
bl sub_0200ADA4
_021EA00C:
mov r0, #1
ldr r1, [r4, #4]
lsl r0, r0, #8
tst r0, r1
beq _021EA06E
mov r0, #0x1e
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r2, #0x1c
mov r3, #0
bl AddCharResObjFromNarc
str r0, [r4, #0x3c]
mov r0, #0x1e
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x14]
mov r2, #0x1b
mov r3, #0
bl AddCellOrAnimResObjFromNarc
str r0, [r4, #0x6c]
mov r0, #0x1e
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x18]
mov r2, #0x1a
mov r3, #0
bl AddCellOrAnimResObjFromNarc
add r1, r4, #0
add r1, #0x9c
str r0, [r1]
ldr r0, [r4, #0x3c]
bl sub_0200ADA4
_021EA06E:
mov r0, #2
ldr r1, [r4, #4]
lsl r0, r0, #8
tst r0, r1
beq _021EA0CE
mov r2, #0x1f
str r2, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r3, #0
bl AddCharResObjFromNarc
str r0, [r4, #0x40]
mov r0, #0x1f
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x14]
mov r2, #0x1e
mov r3, #0
bl AddCellOrAnimResObjFromNarc
str r0, [r4, #0x70]
mov r0, #0x1f
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x18]
mov r2, #0x1d
mov r3, #0
bl AddCellOrAnimResObjFromNarc
add r1, r4, #0
add r1, #0xa0
str r0, [r1]
ldr r0, [r4, #0x40]
bl sub_0200ADA4
_021EA0CE:
mov r0, #1
ldr r1, [r4, #4]
lsl r0, r0, #0xa
tst r0, r1
beq _021EA130
mov r0, #0x1f
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r2, #0x22
mov r3, #0
bl AddCharResObjFromNarc
str r0, [r4, #0x44]
mov r0, #0x1f
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x14]
mov r2, #0x21
mov r3, #0
bl AddCellOrAnimResObjFromNarc
str r0, [r4, #0x74]
mov r0, #0x1f
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x18]
mov r2, #0x20
mov r3, #0
bl AddCellOrAnimResObjFromNarc
add r1, r4, #0
add r1, #0xa4
str r0, [r1]
ldr r0, [r4, #0x44]
bl sub_0200ADA4
_021EA130:
mov r0, #2
ldr r1, [r4, #4]
lsl r0, r0, #0xa
tst r0, r1
beq _021EA192
mov r0, #0x20
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r2, #0x25
mov r3, #0
bl AddCharResObjFromNarc
str r0, [r4, #0x48]
mov r0, #0x20
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x14]
mov r2, #0x24
mov r3, #0
bl AddCellOrAnimResObjFromNarc
str r0, [r4, #0x78]
mov r0, #0x20
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #8]
ldr r0, [r4, #0x18]
mov r2, #0x23
mov r3, #0
bl AddCellOrAnimResObjFromNarc
add r1, r4, #0
add r1, #0xa8
str r0, [r1]
ldr r0, [r4, #0x48]
bl sub_0200ADA4
_021EA192:
ldr r1, [r4, #8]
cmp r1, #2
bne _021EA19A
mov r1, #3
_021EA19A:
mov r0, #0x17
str r0, [sp]
str r1, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r2, #0
str r0, [sp, #0xc]
ldr r0, [r4, #0x10]
mov r1, #0x99
add r3, r2, #0
bl AddPlttResObjFromNarc
add r1, r4, #0
add r1, #0xac
str r0, [r1]
add r0, r4, #0
add r0, #0xac
ldr r0, [r0]
bl sub_0200AF94
add r0, r4, #0
mov r1, #0
add r0, #0xb0
str r1, [r0]
ldr r2, [r4, #4]
mov r1, #8
add r0, r2, #0
tst r0, r1
bne _021EA1E4
add r0, r1, #0
add r0, #0xf8
tst r0, r2
bne _021EA1E4
lsl r0, r1, #7
tst r0, r2
beq _021EA20E
_021EA1E4:
mov r0, #0x18
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #0x99
str r0, [sp, #0xc]
ldr r0, [r4, #0x10]
mov r2, #0xa
mov r3, #0
bl AddPlttResObjFromNarc
add r1, r4, #0
add r1, #0xb0
add r4, #0xb0
str r0, [r1]
ldr r0, [r4]
bl sub_0200AF94
_021EA20E:
add sp, #0x10
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021E9D10
thumb_func_start ov96_021EA214
ov96_021EA214: ; 0x021EA214
push {r4, r5, r6, r7, lr}
sub sp, #0x8c
add r4, r1, #0
add r5, r0, #0
mov r1, #0
add r6, r2, #0
add r7, r3, #0
bl ov96_021E9D08
str r0, [sp, #0x2c]
add r0, r5, #0
mov r1, #1
bl ov96_021E9D08
str r0, [sp, #0x30]
add r0, r5, #0
mov r1, #2
bl ov96_021E9D08
str r0, [sp, #0x34]
add r0, r5, #0
mov r1, #3
bl ov96_021E9D08
mov r1, #0x14
add r2, r1, #0
str r1, [sp]
sub r2, #0x15
str r2, [sp, #4]
str r2, [sp, #8]
mov r2, #0
str r2, [sp, #0xc]
ldr r3, [sp, #0x2c]
str r6, [sp, #0x10]
str r3, [sp, #0x14]
ldr r3, [sp, #0x30]
str r3, [sp, #0x18]
ldr r3, [sp, #0x34]
str r3, [sp, #0x1c]
str r0, [sp, #0x20]
str r2, [sp, #0x24]
str r2, [sp, #0x28]
add r0, sp, #0x68
mov r2, #0x17
add r3, r1, #0
bl CreateSpriteResourcesHeader
mov r1, #0
add r0, sp, #0x68
str r0, [sp, #0x3c]
ldr r0, [sp, #0xa0]
str r4, [sp, #0x38]
str r0, [sp, #0x64]
mov r0, #1
lsl r0, r0, #0xc
str r1, [sp, #0x40]
str r1, [sp, #0x44]
str r1, [sp, #0x48]
str r0, [sp, #0x4c]
str r0, [sp, #0x50]
str r0, [sp, #0x54]
add r0, sp, #0x38
strh r1, [r0, #0x20]
add r0, sp, #0x38
str r1, [sp, #0x5c]
str r7, [sp, #0x60]
bl CreateSprite
add r4, r0, #0
bne _021EA2A4
bl GF_AssertFail
_021EA2A4:
add r0, r4, #0
mov r1, #1
bl Set2dSpriteAnimActiveFlag
add r0, r4, #0
mov r1, #0
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0
bl Set2dSpriteVisibleFlag
add r0, r4, #0
add sp, #0x8c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EA214
thumb_func_start ov96_021EA2C4
ov96_021EA2C4: ; 0x021EA2C4
push {r4, r5, r6, r7, lr}
sub sp, #0x8c
add r4, r1, #0
add r5, r0, #0
mov r1, #0
add r6, r2, #0
add r7, r3, #0
bl ov96_021E9D08
str r0, [sp, #0x2c]
add r0, r5, #0
mov r1, #1
bl ov96_021E9D08
str r0, [sp, #0x30]
add r0, r5, #0
mov r1, #2
bl ov96_021E9D08
str r0, [sp, #0x34]
add r0, r5, #0
mov r1, #3
bl ov96_021E9D08
mov r1, #0x19
add r2, r1, #0
str r1, [sp]
sub r2, #0x1a
str r2, [sp, #4]
str r2, [sp, #8]
mov r2, #0
str r2, [sp, #0xc]
ldr r3, [sp, #0x2c]
str r6, [sp, #0x10]
str r3, [sp, #0x14]
ldr r3, [sp, #0x30]
str r3, [sp, #0x18]
ldr r3, [sp, #0x34]
str r3, [sp, #0x1c]
str r0, [sp, #0x20]
str r2, [sp, #0x24]
str r2, [sp, #0x28]
add r0, sp, #0x68
mov r2, #0x18
add r3, r1, #0
bl CreateSpriteResourcesHeader
mov r1, #0
add r0, sp, #0x68
str r0, [sp, #0x3c]
mov r0, #1
lsl r0, r0, #0xc
str r4, [sp, #0x38]
str r7, [sp, #0x64]
str r1, [sp, #0x40]
str r1, [sp, #0x44]
str r1, [sp, #0x48]
str r0, [sp, #0x4c]
str r0, [sp, #0x50]
str r0, [sp, #0x54]
add r0, sp, #0x38
strh r1, [r0, #0x20]
mov r0, #2
str r0, [sp, #0x60]
add r0, sp, #0x38
str r1, [sp, #0x5c]
bl CreateSprite
add r4, r0, #0
bne _021EA354
bl GF_AssertFail
_021EA354:
add r0, r4, #0
mov r1, #1
bl Set2dSpriteAnimActiveFlag
add r0, r4, #0
mov r1, #0
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0
bl Set2dSpriteVisibleFlag
add r0, r4, #0
add sp, #0x8c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EA2C4
thumb_func_start ov96_021EA374
ov96_021EA374: ; 0x021EA374
push {r4, r5, r6, r7, lr}
sub sp, #0x8c
add r4, r1, #0
add r5, r0, #0
mov r1, #0
add r6, r2, #0
add r7, r3, #0
bl ov96_021E9D08
str r0, [sp, #0x2c]
add r0, r5, #0
mov r1, #1
bl ov96_021E9D08
str r0, [sp, #0x30]
add r0, r5, #0
mov r1, #2
bl ov96_021E9D08
str r0, [sp, #0x34]
add r0, r5, #0
mov r1, #3
bl ov96_021E9D08
mov r1, #0x1c
add r2, r1, #0
str r1, [sp]
sub r2, #0x1d
str r2, [sp, #4]
str r2, [sp, #8]
mov r2, #0
str r2, [sp, #0xc]
ldr r3, [sp, #0x2c]
str r6, [sp, #0x10]
str r3, [sp, #0x14]
ldr r3, [sp, #0x30]
str r3, [sp, #0x18]
ldr r3, [sp, #0x34]
str r3, [sp, #0x1c]
str r0, [sp, #0x20]
str r2, [sp, #0x24]
str r2, [sp, #0x28]
add r0, sp, #0x68
mov r2, #0x17
add r3, r1, #0
bl CreateSpriteResourcesHeader
mov r1, #0
add r0, sp, #0x68
str r0, [sp, #0x3c]
mov r0, #1
lsl r0, r0, #0xc
str r4, [sp, #0x38]
str r7, [sp, #0x64]
str r1, [sp, #0x40]
str r1, [sp, #0x44]
str r1, [sp, #0x48]
str r0, [sp, #0x4c]
str r0, [sp, #0x50]
str r0, [sp, #0x54]
add r0, sp, #0x38
strh r1, [r0, #0x20]
mov r0, #1
str r0, [sp, #0x60]
add r0, sp, #0x38
str r1, [sp, #0x5c]
bl CreateSprite
add r4, r0, #0
bne _021EA404
bl GF_AssertFail
_021EA404:
add r0, r4, #0
mov r1, #1
bl Set2dSpriteAnimActiveFlag
add r0, r4, #0
mov r1, #0
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0
bl Set2dSpriteVisibleFlag
add r0, r4, #0
add sp, #0x8c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EA374
thumb_func_start ov96_021EA424
ov96_021EA424: ; 0x021EA424
push {r4, r5, r6, r7, lr}
sub sp, #0x8c
add r4, r1, #0
add r5, r0, #0
mov r1, #0
add r6, r2, #0
add r7, r3, #0
bl ov96_021E9D08
str r0, [sp, #0x2c]
add r0, r5, #0
mov r1, #1
bl ov96_021E9D08
str r0, [sp, #0x30]
add r0, r5, #0
mov r1, #2
bl ov96_021E9D08
str r0, [sp, #0x34]
add r0, r5, #0
mov r1, #3
bl ov96_021E9D08
mov r1, #0x1a
add r2, r1, #0
str r1, [sp]
sub r2, #0x1b
str r2, [sp, #4]
str r2, [sp, #8]
mov r2, #0
str r2, [sp, #0xc]
ldr r3, [sp, #0x2c]
str r6, [sp, #0x10]
str r3, [sp, #0x14]
ldr r3, [sp, #0x30]
str r3, [sp, #0x18]
ldr r3, [sp, #0x34]
str r3, [sp, #0x1c]
str r0, [sp, #0x20]
str r2, [sp, #0x24]
str r2, [sp, #0x28]
add r0, sp, #0x68
mov r2, #0x17
add r3, r1, #0
bl CreateSpriteResourcesHeader
mov r1, #0
add r0, sp, #0x68
str r0, [sp, #0x3c]
mov r0, #1
lsl r0, r0, #0xc
str r4, [sp, #0x38]
str r7, [sp, #0x64]
str r1, [sp, #0x40]
str r1, [sp, #0x44]
str r1, [sp, #0x48]
str r0, [sp, #0x4c]
str r0, [sp, #0x50]
str r0, [sp, #0x54]
add r0, sp, #0x38
strh r1, [r0, #0x20]
mov r0, #1
str r0, [sp, #0x60]
add r0, sp, #0x38
str r1, [sp, #0x5c]
bl CreateSprite
add r4, r0, #0
bne _021EA4B4
bl GF_AssertFail
_021EA4B4:
add r0, r4, #0
mov r1, #1
bl Set2dSpriteAnimActiveFlag
add r0, r4, #0
mov r1, #0
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0
bl Set2dSpriteVisibleFlag
add r0, r4, #0
add sp, #0x8c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EA424
thumb_func_start ov96_021EA4D4
ov96_021EA4D4: ; 0x021EA4D4
push {r4, r5, r6, r7, lr}
sub sp, #0x8c
add r4, r1, #0
add r5, r0, #0
mov r1, #0
add r6, r2, #0
add r7, r3, #0
bl ov96_021E9D08
str r0, [sp, #0x2c]
add r0, r5, #0
mov r1, #1
bl ov96_021E9D08
str r0, [sp, #0x30]
add r0, r5, #0
mov r1, #2
bl ov96_021E9D08
str r0, [sp, #0x34]
add r0, r5, #0
mov r1, #3
bl ov96_021E9D08
mov r1, #0x1b
add r2, r1, #0
str r1, [sp]
sub r2, #0x1c
str r2, [sp, #4]
str r2, [sp, #8]
mov r2, #0
str r2, [sp, #0xc]
ldr r3, [sp, #0x2c]
str r6, [sp, #0x10]
str r3, [sp, #0x14]
ldr r3, [sp, #0x30]
str r3, [sp, #0x18]
ldr r3, [sp, #0x34]
str r3, [sp, #0x1c]
str r0, [sp, #0x20]
str r2, [sp, #0x24]
str r2, [sp, #0x28]
add r0, sp, #0x68
mov r2, #0x17
add r3, r1, #0
bl CreateSpriteResourcesHeader
mov r1, #0
add r0, sp, #0x68
str r0, [sp, #0x3c]
mov r0, #1
lsl r0, r0, #0xc
str r4, [sp, #0x38]
str r7, [sp, #0x64]
str r1, [sp, #0x40]
str r1, [sp, #0x44]
str r1, [sp, #0x48]
str r0, [sp, #0x4c]
str r0, [sp, #0x50]
str r0, [sp, #0x54]
add r0, sp, #0x38
strh r1, [r0, #0x20]
mov r0, #1
str r0, [sp, #0x60]
add r0, sp, #0x38
str r1, [sp, #0x5c]
bl CreateSprite
add r4, r0, #0
bne _021EA564
bl GF_AssertFail
_021EA564:
add r0, r4, #0
mov r1, #1
bl Set2dSpriteAnimActiveFlag
add r0, r4, #0
mov r1, #0
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0
bl Set2dSpriteVisibleFlag
add r0, r4, #0
add sp, #0x8c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EA4D4
thumb_func_start ov96_021EA584
ov96_021EA584: ; 0x021EA584
push {r4, r5, r6, r7, lr}
sub sp, #0x8c
add r4, r1, #0
add r5, r0, #0
mov r1, #0
add r6, r2, #0
add r7, r3, #0
bl ov96_021E9D08
str r0, [sp, #0x2c]
add r0, r5, #0
mov r1, #1
bl ov96_021E9D08
str r0, [sp, #0x30]
add r0, r5, #0
mov r1, #2
bl ov96_021E9D08
str r0, [sp, #0x34]
add r0, r5, #0
mov r1, #3
bl ov96_021E9D08
mov r1, #0x1d
add r2, r1, #0
str r1, [sp]
sub r2, #0x1e
str r2, [sp, #4]
str r2, [sp, #8]
mov r2, #0
str r2, [sp, #0xc]
ldr r3, [sp, #0x2c]
str r6, [sp, #0x10]
str r3, [sp, #0x14]
ldr r3, [sp, #0x30]
str r3, [sp, #0x18]
ldr r3, [sp, #0x34]
str r3, [sp, #0x1c]
str r0, [sp, #0x20]
str r2, [sp, #0x24]
str r2, [sp, #0x28]
add r0, sp, #0x68
mov r2, #0x17
add r3, r1, #0
bl CreateSpriteResourcesHeader
mov r1, #0
add r0, sp, #0x68
str r0, [sp, #0x3c]
mov r0, #1
lsl r0, r0, #0xc
str r4, [sp, #0x38]
str r7, [sp, #0x64]
str r1, [sp, #0x40]
str r1, [sp, #0x44]
str r1, [sp, #0x48]
str r0, [sp, #0x4c]
str r0, [sp, #0x50]
str r0, [sp, #0x54]
add r0, sp, #0x38
strh r1, [r0, #0x20]
mov r0, #1
str r0, [sp, #0x60]
add r0, sp, #0x38
str r1, [sp, #0x5c]
bl CreateSprite
add r4, r0, #0
bne _021EA614
bl GF_AssertFail
_021EA614:
add r0, r4, #0
mov r1, #1
bl Set2dSpriteAnimActiveFlag
add r0, r4, #0
mov r1, #0
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0
bl Set2dSpriteVisibleFlag
add r0, r4, #0
add sp, #0x8c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EA584
thumb_func_start ov96_021EA634
ov96_021EA634: ; 0x021EA634
push {r4, r5, r6, r7, lr}
sub sp, #0x8c
add r4, r1, #0
add r5, r0, #0
mov r1, #0
add r6, r2, #0
add r7, r3, #0
bl ov96_021E9D08
str r0, [sp, #0x2c]
add r0, r5, #0
mov r1, #1
bl ov96_021E9D08
str r0, [sp, #0x30]
add r0, r5, #0
mov r1, #2
bl ov96_021E9D08
str r0, [sp, #0x34]
add r0, r5, #0
mov r1, #3
bl ov96_021E9D08
mov r1, #0x1e
add r2, r1, #0
str r1, [sp]
sub r2, #0x1f
str r2, [sp, #4]
str r2, [sp, #8]
mov r2, #0
str r2, [sp, #0xc]
ldr r3, [sp, #0x2c]
str r6, [sp, #0x10]
str r3, [sp, #0x14]
ldr r3, [sp, #0x30]
str r3, [sp, #0x18]
ldr r3, [sp, #0x34]
str r3, [sp, #0x1c]
str r0, [sp, #0x20]
str r2, [sp, #0x24]
str r2, [sp, #0x28]
add r0, sp, #0x68
mov r2, #0x18
add r3, r1, #0
bl CreateSpriteResourcesHeader
mov r1, #0
add r0, sp, #0x68
str r0, [sp, #0x3c]
mov r0, #1
lsl r0, r0, #0xc
str r4, [sp, #0x38]
str r7, [sp, #0x64]
str r1, [sp, #0x40]
str r1, [sp, #0x44]
str r1, [sp, #0x48]
str r0, [sp, #0x4c]
str r0, [sp, #0x50]
str r0, [sp, #0x54]
add r0, sp, #0x38
strh r1, [r0, #0x20]
mov r0, #2
str r0, [sp, #0x60]
add r0, sp, #0x38
str r1, [sp, #0x5c]
bl CreateSprite
add r4, r0, #0
bne _021EA6C4
bl GF_AssertFail
_021EA6C4:
add r0, r4, #0
mov r1, #1
bl Set2dSpriteAnimActiveFlag
add r0, r4, #0
mov r1, #0
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0
bl Set2dSpriteVisibleFlag
add r0, r4, #0
add sp, #0x8c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EA634
thumb_func_start ov96_021EA6E4
ov96_021EA6E4: ; 0x021EA6E4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x90
add r4, r2, #0
add r5, r0, #0
add r7, r1, #0
str r3, [sp, #0x2c]
cmp r4, #1
bne _021EA6F8
mov r6, #0x17
b _021EA6FA
_021EA6F8:
mov r6, #0x18
_021EA6FA:
add r0, r5, #0
mov r1, #0
bl ov96_021E9D08
str r0, [sp, #0x30]
add r0, r5, #0
mov r1, #1
bl ov96_021E9D08
str r0, [sp, #0x34]
add r0, r5, #0
mov r1, #2
bl ov96_021E9D08
str r0, [sp, #0x38]
add r0, r5, #0
mov r1, #3
bl ov96_021E9D08
mov r1, #0x1f
add r2, r1, #0
str r1, [sp]
sub r2, #0x20
str r2, [sp, #4]
str r2, [sp, #8]
mov r2, #0
ldr r3, [sp, #0x2c]
str r2, [sp, #0xc]
str r3, [sp, #0x10]
ldr r3, [sp, #0x30]
str r3, [sp, #0x14]
ldr r3, [sp, #0x34]
str r3, [sp, #0x18]
ldr r3, [sp, #0x38]
str r3, [sp, #0x1c]
str r0, [sp, #0x20]
str r2, [sp, #0x24]
str r2, [sp, #0x28]
add r0, sp, #0x6c
add r2, r6, #0
add r3, r1, #0
bl CreateSpriteResourcesHeader
mov r1, #0
add r0, sp, #0x6c
str r0, [sp, #0x40]
ldr r0, [sp, #0xa8]
str r7, [sp, #0x3c]
str r0, [sp, #0x68]
mov r0, #1
lsl r0, r0, #0xc
str r1, [sp, #0x44]
str r1, [sp, #0x48]
str r1, [sp, #0x4c]
str r0, [sp, #0x50]
str r0, [sp, #0x54]
str r0, [sp, #0x58]
add r0, sp, #0x3c
strh r1, [r0, #0x20]
mov r0, #1
str r0, [sp, #0x60]
add r0, sp, #0x3c
str r4, [sp, #0x64]
bl CreateSprite
add r4, r0, #0
bne _021EA784
bl GF_AssertFail
_021EA784:
add r0, r4, #0
mov r1, #1
bl Set2dSpriteAnimActiveFlag
add r0, r4, #0
mov r1, #0
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0
bl Set2dSpriteVisibleFlag
add r0, r4, #0
add sp, #0x90
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EA6E4
thumb_func_start ov96_021EA7A4
ov96_021EA7A4: ; 0x021EA7A4
push {r4, r5, r6, r7, lr}
sub sp, #0x8c
add r4, r1, #0
add r5, r0, #0
mov r1, #0
add r6, r2, #0
add r7, r3, #0
bl ov96_021E9D08
str r0, [sp, #0x2c]
add r0, r5, #0
mov r1, #1
bl ov96_021E9D08
str r0, [sp, #0x30]
add r0, r5, #0
mov r1, #2
bl ov96_021E9D08
str r0, [sp, #0x34]
add r0, r5, #0
mov r1, #3
bl ov96_021E9D08
mov r1, #0x20
add r2, r1, #0
str r1, [sp]
sub r2, #0x21
str r2, [sp, #4]
str r2, [sp, #8]
mov r2, #0
str r2, [sp, #0xc]
ldr r3, [sp, #0x2c]
str r6, [sp, #0x10]
str r3, [sp, #0x14]
ldr r3, [sp, #0x30]
str r3, [sp, #0x18]
ldr r3, [sp, #0x34]
str r3, [sp, #0x1c]
str r0, [sp, #0x20]
str r2, [sp, #0x24]
str r2, [sp, #0x28]
add r0, sp, #0x68
mov r2, #0x17
add r3, r1, #0
bl CreateSpriteResourcesHeader
mov r1, #0
add r0, sp, #0x68
str r0, [sp, #0x3c]
mov r0, #1
lsl r0, r0, #0xc
str r4, [sp, #0x38]
str r7, [sp, #0x64]
str r1, [sp, #0x40]
str r1, [sp, #0x44]
str r1, [sp, #0x48]
str r0, [sp, #0x4c]
str r0, [sp, #0x50]
str r0, [sp, #0x54]
add r0, sp, #0x38
strh r1, [r0, #0x20]
mov r0, #2
str r0, [sp, #0x5c]
mov r0, #1
str r0, [sp, #0x60]
add r0, sp, #0x38
bl CreateSprite
add r4, r0, #0
bne _021EA836
bl GF_AssertFail
_021EA836:
add r0, r4, #0
mov r1, #1
bl Set2dSpriteAnimActiveFlag
add r0, r4, #0
mov r1, #0
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0
bl Set2dSpriteVisibleFlag
add r0, r4, #0
add sp, #0x8c
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021EA7A4
thumb_func_start ov96_021EA854
ov96_021EA854: ; 0x021EA854
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
mov r1, #0xd3
lsl r1, r1, #2
add r5, r0, #0
add r7, r2, #0
str r3, [sp]
bl AllocFromHeap
mov r2, #0xd3
add r4, r0, #0
mov r1, #0
lsl r2, r2, #2
bl MI_CpuFill8
str r5, [r4]
ldr r0, [sp]
str r6, [r4, #4]
str r0, [r4, #0x18]
ldr r0, [sp, #0x18]
str r0, [r4, #0x10]
add r0, r5, #0
str r7, [r4, #8]
bl ov96_021E8A30
ldr r2, [sp, #0x18]
add r1, r6, #0
str r0, [r4, #0x14]
bl ov96_021E8A44
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021EA854
thumb_func_start ov96_021EA894
ov96_021EA894: ; 0x021EA894
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x14]
bl ov96_021E8AAC
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021EA894
thumb_func_start ov96_021EA8A8
ov96_021EA8A8: ; 0x021EA8A8
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r6, r0, #0
ldr r0, [sp, #0x30]
str r1, [sp, #8]
str r0, [sp, #0x14]
mov r0, #0
str r0, [sp, #0x18]
ldr r0, [r6, #4]
add r7, r3, #0
str r2, [sp, #0xc]
cmp r0, #0
bgt _021EA8C4
b _021EA9C8
_021EA8C4:
add r4, r2, #0
add r5, r6, #0
str r7, [sp, #0x10]
_021EA8CA:
ldrh r0, [r4, #4]
cmp r0, #0
beq _021EA8D4
mov r0, #0x20
b _021EA8D6
_021EA8D4:
mov r0, #0x10
_021EA8D6:
str r0, [r5, #0x30]
str r0, [r5, #0x34]
ldr r0, [sp, #0x10]
ldr r0, [r0, #0x14]
cmp r0, #1
beq _021EA8EC
cmp r0, #2
beq _021EA8F2
cmp r0, #3
beq _021EA8F8
b _021EA8FE
_021EA8EC:
mov r0, #3
str r0, [r5, #0x2c]
b _021EA906
_021EA8F2:
mov r0, #4
str r0, [r5, #0x2c]
b _021EA906
_021EA8F8:
mov r0, #5
str r0, [r5, #0x2c]
b _021EA906
_021EA8FE:
bl GF_AssertFail
mov r0, #3
str r0, [r5, #0x2c]
_021EA906:
ldr r0, [r6, #0x18]
mov r1, #2
bl ov96_021E9CF4
cmp r0, #0
beq _021EA956
ldr r1, [r7, #4]
ldr r2, [r7, #0x10]
add r0, r6, #0
mov r3, #0x16
bl ov96_021EAA88
str r0, [r5, #0x20]
ldrh r0, [r4, #4]
cmp r0, #0
ldr r0, [r5, #0x20]
beq _021EA930
mov r1, #1
bl Set2dSpriteAnimSeqNo
b _021EA936
_021EA930:
mov r1, #0
bl Set2dSpriteAnimSeqNo
_021EA936:
ldrh r1, [r4]
ldr r0, _021EA9F8 ; =0x0000FFCE
add r0, r1, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
cmp r0, #1
bhi _021EA952
mov r0, #1
str r0, [r5, #0x5c]
ldr r0, [r5, #0x20]
mov r1, #0
bl Set2dSpriteVisibleFlag
b _021EA956
_021EA952:
mov r0, #0
str r0, [r5, #0x5c]
_021EA956:
ldr r0, [r6, #0x18]
mov r1, #4
bl ov96_021E9CF4
cmp r0, #0
beq _021EA9AE
ldr r1, [r7, #4]
ldr r2, [r7, #0x10]
add r0, r6, #0
mov r3, #0x15
bl ov96_021EAA88
str r0, [r5, #0x24]
ldr r0, [r4, #8]
cmp r0, #4
blt _021EA97A
bl GF_AssertFail
_021EA97A:
ldr r0, [r5, #0x24]
ldr r1, [r4, #8]
bl Set2dSpriteAnimSeqNo
ldr r0, [sp, #0x10]
ldr r0, [r0, #0x14]
cmp r0, #1
beq _021EA994
cmp r0, #2
beq _021EA99A
cmp r0, #3
beq _021EA9A0
b _021EA9A6
_021EA994:
mov r0, #3
str r0, [r5, #0x28]
b _021EA9AE
_021EA99A:
mov r0, #4
str r0, [r5, #0x28]
b _021EA9AE
_021EA9A0:
mov r0, #5
str r0, [r5, #0x28]
b _021EA9AE
_021EA9A6:
bl GF_AssertFail
mov r0, #3
str r0, [r5, #0x28]
_021EA9AE:
mov r0, #0xc
str r0, [r5, #0x58]
ldr r0, [sp, #0x10]
ldr r1, [r6, #4]
add r0, r0, #4
str r0, [sp, #0x10]
ldr r0, [sp, #0x18]
add r4, #0x10
add r0, r0, #1
add r5, #0x44
str r0, [sp, #0x18]
cmp r0, r1
blt _021EA8CA
_021EA9C8:
ldr r0, [sp, #0x14]
cmp r0, #0
bgt _021EA9D2
mov r0, #1
str r0, [sp, #0x14]
_021EA9D2:
ldr r0, [sp, #0x14]
ldr r1, [sp, #8]
sub r0, r0, #1
str r0, [sp]
ldr r0, [sp, #0x34]
ldr r2, [sp, #0xc]
str r0, [sp, #4]
ldr r0, [r6, #0x14]
add r3, r7, #0
bl ov96_021E8B1C
ldr r0, _021EA9FC ; =ov96_021EAA24
ldr r2, [sp, #0x14]
add r1, r6, #0
bl CreateSysTask
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
nop
_021EA9F8: .word 0x0000FFCE
_021EA9FC: .word ov96_021EAA24
thumb_func_end ov96_021EA8A8
thumb_func_start ov96_021EAA00
ov96_021EAA00: ; 0x021EAA00
ldr r0, [r0, #0xc]
bx lr
thumb_func_end ov96_021EAA00
thumb_func_start ov96_021EAA04
ov96_021EAA04: ; 0x021EAA04
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #4]
add r4, r1, #0
cmp r4, r0
blt _021EAA14
bl GF_AssertFail
_021EAA14:
mov r0, #0x44
add r5, #0x1c
mul r0, r4
add r0, r5, r0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021EAA04
thumb_func_start ov96_021EAA20
ov96_021EAA20: ; 0x021EAA20
ldr r0, [r0]
bx lr
thumb_func_end ov96_021EAA20
thumb_func_start ov96_021EAA24
ov96_021EAA24: ; 0x021EAA24
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
str r0, [sp]
ldr r0, [r1, #0x14]
str r1, [sp, #4]
bl ov96_021E8B88
cmp r0, #0
beq _021EAA82
ldr r0, [sp, #4]
mov r4, #0
ldr r7, [r0, #8]
ldr r0, [r0, #4]
cmp r0, #0
ble _021EAA76
ldr r5, [sp, #4]
add r6, r5, #0
add r6, #0x1c
_021EAA48:
ldr r0, [sp, #4]
lsl r1, r4, #0x18
ldr r0, [r0, #0x14]
lsr r1, r1, #0x18
bl ov96_021E8B8C
str r0, [r5, #0x1c]
add r0, r6, #0
add r1, r7, #0
bl ov96_021EABA8
ldr r0, [r5, #0x1c]
add r7, r7, #1
bl ov96_021E90FC
str r0, [r5, #0x44]
ldr r0, [sp, #4]
add r4, r4, #1
ldr r0, [r0, #4]
add r5, #0x44
add r6, #0x44
cmp r4, r0
blt _021EAA48
_021EAA76:
ldr r0, [sp, #4]
mov r1, #1
str r1, [r0, #0xc]
ldr r0, [sp]
bl DestroySysTask
_021EAA82:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EAA24
thumb_func_start ov96_021EAA88
ov96_021EAA88: ; 0x021EAA88
push {r4, r5, r6, r7, lr}
sub sp, #0x8c
add r5, r0, #0
ldr r0, [r5, #0x18]
add r6, r1, #0
mov r1, #0
add r4, r2, #0
add r7, r3, #0
bl ov96_021E9D08
str r0, [sp, #0x2c]
ldr r0, [r5, #0x18]
mov r1, #1
bl ov96_021E9D08
str r0, [sp, #0x30]
ldr r0, [r5, #0x18]
mov r1, #2
bl ov96_021E9D08
str r0, [sp, #0x34]
ldr r0, [r5, #0x18]
mov r1, #3
bl ov96_021E9D08
mov r1, #0
str r7, [sp]
mvn r1, r1
str r1, [sp, #4]
str r1, [sp, #8]
mov r1, #0
str r1, [sp, #0xc]
ldr r2, [sp, #0x2c]
str r6, [sp, #0x10]
str r2, [sp, #0x14]
ldr r2, [sp, #0x30]
add r3, r7, #0
str r2, [sp, #0x18]
ldr r2, [sp, #0x34]
str r2, [sp, #0x1c]
str r0, [sp, #0x20]
str r1, [sp, #0x24]
str r1, [sp, #0x28]
add r0, sp, #0x68
add r1, r7, #0
mov r2, #0x17
bl CreateSpriteResourcesHeader
cmp r4, #3
bne _021EAAEE
mov r4, #1
_021EAAEE:
ldr r0, [r5, #0x10]
mov r1, #0
str r0, [sp, #0x38]
add r0, sp, #0x68
str r0, [sp, #0x3c]
ldr r0, [r5]
str r0, [sp, #0x64]
mov r0, #1
lsl r0, r0, #0xc
str r1, [sp, #0x40]
str r1, [sp, #0x44]
str r1, [sp, #0x48]
str r0, [sp, #0x4c]
str r0, [sp, #0x50]
str r0, [sp, #0x54]
add r0, sp, #0x38
strh r1, [r0, #0x20]
add r0, sp, #0x38
str r1, [sp, #0x5c]
str r4, [sp, #0x60]
bl CreateSprite
add r4, r0, #0
mov r1, #1
bl Set2dSpriteAnimActiveFlag
add r0, r4, #0
mov r1, #0
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0
bl Set2dSpriteVisibleFlag
add r0, r4, #0
add sp, #0x8c
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021EAA88
thumb_func_start ov96_021EAB38
ov96_021EAB38: ; 0x021EAB38
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5]
add r4, r1, #0
bl ov96_021E8BAC
add r1, r4, #0
bl Set2dSpriteVisibleFlag
ldr r0, [r5, #4]
cmp r0, #0
beq _021EAB64
ldr r1, [r5, #0x40]
cmp r1, #0
beq _021EAB5E
mov r1, #0
bl Set2dSpriteVisibleFlag
b _021EAB64
_021EAB5E:
add r1, r4, #0
bl Set2dSpriteVisibleFlag
_021EAB64:
ldr r0, [r5, #8]
cmp r0, #0
beq _021EAB70
add r1, r4, #0
bl Set2dSpriteVisibleFlag
_021EAB70:
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021EAB38
thumb_func_start ov96_021EAB74
ov96_021EAB74: ; 0x021EAB74
push {r3, lr}
ldr r2, [r0, #4]
cmp r2, #0
beq _021EAB92
ldr r0, [r0, #0x40]
cmp r0, #0
beq _021EAB8C
add r0, r2, #0
mov r1, #0
bl Set2dSpriteVisibleFlag
pop {r3, pc}
_021EAB8C:
add r0, r2, #0
bl Set2dSpriteVisibleFlag
_021EAB92:
pop {r3, pc}
thumb_func_end ov96_021EAB74
thumb_func_start ov96_021EAB94
ov96_021EAB94: ; 0x021EAB94
push {r4, lr}
ldr r0, [r0]
add r4, r1, #0
bl ov96_021E8BAC
add r1, r4, #0
bl Set2dSpriteVisibleFlag
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021EAB94
thumb_func_start ov96_021EABA8
ov96_021EABA8: ; 0x021EABA8
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5]
add r4, r1, #0
bl ov96_021E8BAC
add r1, r4, #0
bl Sprite_SetDrawPriority
ldr r0, [r5, #4]
cmp r0, #0
beq _021EABCA
ldr r1, [r5, #0x3c]
lsl r1, r1, #1
add r1, r4, r1
bl Sprite_SetDrawPriority
_021EABCA:
ldr r0, [r5, #8]
cmp r0, #0
beq _021EABD8
ldr r1, [r5, #0x3c]
add r1, r4, r1
bl Sprite_SetDrawPriority
_021EABD8:
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021EABA8
thumb_func_start ov96_021EABDC
ov96_021EABDC: ; 0x021EABDC
str r1, [r0, #0x3c]
bx lr
thumb_func_end ov96_021EABDC
thumb_func_start ov96_021EABE0
ov96_021EABE0: ; 0x021EABE0
push {r4, lr}
ldr r0, [r0]
add r4, r1, #0
bl ov96_021E8BAC
add r1, r4, #0
bl sub_0202487C
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021EABE0
thumb_func_start ov96_021EABF4
ov96_021EABF4: ; 0x021EABF4
push {r4, lr}
ldr r0, [r0]
add r4, r1, #0
bl ov96_021E8BAC
add r1, r4, #0
bl sub_020247E4
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021EABF4
thumb_func_start ov96_021EAC08
ov96_021EAC08: ; 0x021EAC08
str r1, [r0, #0x34]
bx lr
thumb_func_end ov96_021EAC08
thumb_func_start ov96_021EAC0C
ov96_021EAC0C: ; 0x021EAC0C
push {r4, lr}
add r4, r1, #0
str r4, [r0, #0x34]
beq _021EAC5A
ldr r0, [r0]
bl ov96_021E8BAC
cmp r4, #6
bhi _021EAC50
add r1, r4, r4
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021EAC2A: ; jump table
.short _021EAC50 - _021EAC2A - 2 ; case 0
.short _021EAC38 - _021EAC2A - 2 ; case 1
.short _021EAC3C - _021EAC2A - 2 ; case 2
.short _021EAC40 - _021EAC2A - 2 ; case 3
.short _021EAC44 - _021EAC2A - 2 ; case 4
.short _021EAC48 - _021EAC2A - 2 ; case 5
.short _021EAC4C - _021EAC2A - 2 ; case 6
_021EAC38:
mov r1, #0
b _021EAC56
_021EAC3C:
mov r1, #1
b _021EAC56
_021EAC40:
mov r1, #2
b _021EAC56
_021EAC44:
mov r1, #3
b _021EAC56
_021EAC48:
mov r1, #4
b _021EAC56
_021EAC4C:
mov r1, #8
b _021EAC56
_021EAC50:
bl GF_AssertFail
pop {r4, pc}
_021EAC56:
bl TryChange2dSpriteAnimSeqNo
_021EAC5A:
pop {r4, pc}
thumb_func_end ov96_021EAC0C
thumb_func_start ov96_021EAC5C
ov96_021EAC5C: ; 0x021EAC5C
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5]
add r4, r1, #0
bl ov96_021E8BAC
cmp r4, #8
bgt _021EAC7E
bge _021EACAE
cmp r4, #4
bgt _021EAD04
cmp r4, #0
blt _021EAD04
beq _021EACAE
cmp r4, #4
beq _021EACAE
pop {r3, r4, r5, pc}
_021EAC7E:
cmp r4, #0x16
bgt _021EACAA
add r1, r4, #0
sub r1, #0xc
bmi _021EAD04
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021EAC94: ; jump table
.short _021EACAE - _021EAC94 - 2 ; case 0
.short _021EACB2 - _021EAC94 - 2 ; case 1
.short _021EACB2 - _021EAC94 - 2 ; case 2
.short _021EACB2 - _021EAC94 - 2 ; case 3
.short _021EACAE - _021EAC94 - 2 ; case 4
.short _021EACB2 - _021EAC94 - 2 ; case 5
.short _021EACB2 - _021EAC94 - 2 ; case 6
.short _021EACB2 - _021EAC94 - 2 ; case 7
.short _021EACAE - _021EAC94 - 2 ; case 8
.short _021EACAE - _021EAC94 - 2 ; case 9
.short _021EACAE - _021EAC94 - 2 ; case 10
_021EACAA:
cmp r4, #0x1a
bne _021EAD04
_021EACAE:
str r4, [r5, #0x38]
b _021EACB4
_021EACB2:
pop {r3, r4, r5, pc}
_021EACB4:
cmp r4, #0x14
beq _021EACFC
cmp r4, #0x15
beq _021EACFC
ldr r1, [r5, #0x34]
cmp r1, #4
bhi _021EACF6
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021EACCE: ; jump table
.short _021EACF6 - _021EACCE - 2 ; case 0
.short _021EACD8 - _021EACCE - 2 ; case 1
.short _021EACDE - _021EACCE - 2 ; case 2
.short _021EACE6 - _021EACCE - 2 ; case 3
.short _021EACEE - _021EACCE - 2 ; case 4
_021EACD8:
lsl r1, r4, #0x18
lsr r1, r1, #0x18
b _021EAD00
_021EACDE:
add r1, r4, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
b _021EAD00
_021EACE6:
add r1, r4, #2
lsl r1, r1, #0x18
lsr r1, r1, #0x18
b _021EAD00
_021EACEE:
add r1, r4, #3
lsl r1, r1, #0x18
lsr r1, r1, #0x18
b _021EAD00
_021EACF6:
bl GF_AssertFail
pop {r3, r4, r5, pc}
_021EACFC:
lsl r1, r4, #0x18
lsr r1, r1, #0x18
_021EAD00:
bl TryChange2dSpriteAnimSeqNo
_021EAD04:
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021EAC5C
thumb_func_start ov96_021EAD08
ov96_021EAD08: ; 0x021EAD08
push {r3, r4, r5, lr}
add r4, r0, #0
ldr r0, [r4]
add r5, r1, #0
bl ov96_021E8BAC
cmp r5, #0
beq _021EAD22
cmp r5, #0x14
beq _021EAD28
cmp r5, #0x15
beq _021EAD2E
pop {r3, r4, r5, pc}
_021EAD22:
mov r1, #0
str r1, [r4, #0x38]
b _021EAD32
_021EAD28:
mov r1, #4
str r1, [r4, #0x38]
b _021EAD32
_021EAD2E:
mov r1, #5
str r1, [r4, #0x38]
_021EAD32:
cmp r5, #0x14
beq _021EAD6C
cmp r5, #0x15
beq _021EAD6C
ldr r1, [r4, #0x34]
cmp r1, #4
bhi _021EAD66
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021EAD4C: ; jump table
.short _021EAD66 - _021EAD4C - 2 ; case 0
.short _021EAD56 - _021EAD4C - 2 ; case 1
.short _021EAD5A - _021EAD4C - 2 ; case 2
.short _021EAD5E - _021EAD4C - 2 ; case 3
.short _021EAD62 - _021EAD4C - 2 ; case 4
_021EAD56:
mov r1, #0
b _021EAD72
_021EAD5A:
mov r1, #1
b _021EAD72
_021EAD5E:
mov r1, #2
b _021EAD72
_021EAD62:
mov r1, #3
b _021EAD72
_021EAD66:
bl GF_AssertFail
pop {r3, r4, r5, pc}
_021EAD6C:
ldr r1, [r4, #0x38]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
_021EAD72:
bl TryChange2dSpriteAnimSeqNo
pop {r3, r4, r5, pc}
thumb_func_end ov96_021EAD08
thumb_func_start ov96_021EAD78
ov96_021EAD78: ; 0x021EAD78
push {r3, lr}
ldr r0, [r0]
bl ov96_021E8BAC
bl Sprite_IsCellAnimationFinished
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_021EAD78
thumb_func_start ov96_021EAD88
ov96_021EAD88: ; 0x021EAD88
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r5, r0, #0
add r4, r1, #0
add r1, sp, #4
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
ldr r0, [r5]
add r6, r2, #0
add r7, r3, #0
bl ov96_021E8BAC
str r0, [sp]
lsl r0, r4, #0xc
str r0, [sp, #4]
lsl r0, r6, #0xc
str r0, [sp, #8]
ldr r0, [r5, #0x14]
add r0, r4, r0
str r0, [r5, #0x20]
ldr r0, [r5, #0x18]
add r0, r6, r0
str r0, [r5, #0x24]
ldr r0, [r5, #8]
cmp r0, #0
beq _021EADF0
add r4, sp, #4
ldmia r4!, {r0, r1}
add r3, sp, #0x10
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r4]
str r0, [r3]
ldr r0, [r5, #0x14]
ldr r1, [sp, #0x10]
lsl r0, r0, #0xc
add r0, r1, r0
str r0, [sp, #0x10]
ldr r1, [r5, #0x18]
ldr r0, [sp, #0x14]
lsl r3, r1, #1
ldr r1, [r5, #0xc]
sub r1, r3, r1
lsl r1, r1, #0xc
add r0, r0, r1
str r0, [sp, #0x14]
ldr r0, [r5, #8]
add r1, r2, #0
bl Sprite_SetMatrix
_021EADF0:
cmp r7, #0
beq _021EAE2A
ldr r0, [r5, #4]
cmp r0, #0
beq _021EAE2A
add r4, sp, #4
ldmia r4!, {r0, r1}
add r3, sp, #0x10
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r4]
str r0, [r3]
ldr r0, [r5, #0x14]
ldr r1, [sp, #0x10]
lsl r0, r0, #0xc
add r0, r1, r0
str r0, [sp, #0x10]
ldr r1, [r5, #0x18]
ldr r0, [sp, #0x14]
lsl r3, r1, #1
ldr r1, [r5, #0x10]
sub r1, r3, r1
lsl r1, r1, #0xc
add r0, r0, r1
str r0, [sp, #0x14]
ldr r0, [r5, #4]
add r1, r2, #0
bl Sprite_SetMatrix
_021EAE2A:
ldr r0, [r5]
bl ov96_021E92AC
cmp r0, #0
beq _021EAE3E
mov r0, #2
ldr r1, [sp, #8]
lsl r0, r0, #0xe
add r0, r1, r0
str r0, [sp, #8]
_021EAE3E:
ldr r0, [sp]
add r1, sp, #4
bl Sprite_SetMatrix
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EAD88
thumb_func_start ov96_021EAE4C
ov96_021EAE4C: ; 0x021EAE4C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
add r4, r1, #0
add r1, sp, #0
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
ldr r0, [r5]
add r6, r2, #0
bl ov96_021E8BAC
add r7, r0, #0
lsl r0, r4, #0xc
str r0, [sp]
lsl r0, r6, #0xc
str r0, [sp, #4]
ldr r0, [r5, #0x14]
add r0, r4, r0
str r0, [r5, #0x20]
ldr r0, [r5, #0x18]
add r0, r6, r0
str r0, [r5, #0x24]
ldr r0, [r5]
bl ov96_021E92AC
cmp r0, #0
beq _021EAE90
mov r0, #2
ldr r1, [sp, #4]
lsl r0, r0, #0xe
add r0, r1, r0
str r0, [sp, #4]
_021EAE90:
add r0, r7, #0
add r1, sp, #0
bl Sprite_SetMatrix
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021EAE4C
thumb_func_start ov96_021EAE9C
ov96_021EAE9C: ; 0x021EAE9C
push {r3, r4, r5, lr}
add r5, r1, #0
add r4, r2, #0
bl ov96_021EAA20
bl ov96_021E8BAC
bl Sprite_GetMatrixPtr
ldr r2, [r0]
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
asr r1, r1, #0xc
str r1, [r5]
ldr r1, [r0, #4]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [r4]
pop {r3, r4, r5, pc}
thumb_func_end ov96_021EAE9C
thumb_func_start ov96_021EAEC8
ov96_021EAEC8: ; 0x021EAEC8
ldr r3, [r0, #0x20]
str r3, [r1]
ldr r0, [r0, #0x24]
str r0, [r2]
bx lr
.balign 4, 0
thumb_func_end ov96_021EAEC8
thumb_func_start ov96_021EAED4
ov96_021EAED4: ; 0x021EAED4
push {r4, r5, r6, lr}
sub sp, #0x18
add r5, r0, #0
ldr r0, [r5, #0x20]
add r6, r3, #0
add r0, r0, r1
str r0, [r5, #0x20]
ldr r0, [r5, #0x24]
add r0, r0, r2
str r0, [r5, #0x24]
lsl r0, r1, #0xc
str r0, [sp, #0xc]
lsl r0, r2, #0xc
str r0, [sp, #0x10]
mov r0, #0
str r0, [sp, #0x14]
ldr r0, [r5]
bl ov96_021E8BAC
add r4, r0, #0
add r0, r5, #0
add r1, r6, #0
bl ov96_021EAC0C
add r0, r4, #0
bl Sprite_GetMatrixPtr
add r1, r0, #0
add r0, sp, #0xc
add r2, sp, #0
bl VEC_Add
add r0, r4, #0
add r1, sp, #0
bl Sprite_SetMatrix
ldr r0, [r5, #8]
cmp r0, #0
beq _021EAF38
bl Sprite_GetMatrixPtr
add r1, r0, #0
add r0, sp, #0xc
add r2, sp, #0
bl VEC_Add
ldr r0, [r5, #8]
add r1, sp, #0
bl Sprite_SetMatrix
_021EAF38:
ldr r0, [sp, #0x28]
cmp r0, #0
beq _021EAF5A
ldr r0, [r5, #4]
cmp r0, #0
beq _021EAF5A
bl Sprite_GetMatrixPtr
add r1, r0, #0
add r0, sp, #0xc
add r2, sp, #0
bl VEC_Add
ldr r0, [r5, #4]
add r1, sp, #0
bl Sprite_SetMatrix
_021EAF5A:
add sp, #0x18
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021EAED4
thumb_func_start ov96_021EAF60
ov96_021EAF60: ; 0x021EAF60
push {r3, lr}
ldr r0, [r0, #0x14]
bl ov96_021E8BF4
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_021EAF60
thumb_func_start ov96_021EAF6C
ov96_021EAF6C: ; 0x021EAF6C
str r1, [r0, #0x1c]
bx lr
thumb_func_end ov96_021EAF6C
thumb_func_start ov96_021EAF70
ov96_021EAF70: ; 0x021EAF70
str r1, [r0, #0x2c]
str r2, [r0, #0x30]
bx lr
.balign 4, 0
thumb_func_end ov96_021EAF70
thumb_func_start ov96_021EAF78
ov96_021EAF78: ; 0x021EAF78
push {r3, r4, r5, lr}
ldr r4, [sp, #0x10]
add r5, r0, #0
str r4, [sp]
bl ov96_021EB03C
ldr r1, [r5, #0x30]
ldr r0, [sp, #0x14]
str r1, [r0]
pop {r3, r4, r5, pc}
thumb_func_end ov96_021EAF78
thumb_func_start ov96_021EAF8C
ov96_021EAF8C: ; 0x021EAF8C
ldr r0, [r0, #0x30]
bx lr
thumb_func_end ov96_021EAF8C
thumb_func_start ov96_021EAF90
ov96_021EAF90: ; 0x021EAF90
ldr r0, [r0, #0x2c]
bx lr
thumb_func_end ov96_021EAF90
thumb_func_start ov96_021EAF94
ov96_021EAF94: ; 0x021EAF94
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r5, r0, #0
add r4, r1, #0
add r1, sp, #4
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
ldr r0, [r5]
add r6, r2, #0
bl ov96_021E8BAC
add r2, sp, #0x10
add r3, sp, #4
str r0, [sp]
ldmia r3!, {r0, r1}
add r7, r2, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
lsl r0, r4, #0xc
str r0, [sp, #0x10]
lsl r0, r6, #0xc
str r0, [sp, #0x14]
ldr r0, [r5, #4]
cmp r0, #0
beq _021EAFD2
add r1, r7, #0
bl Sprite_SetMatrix
_021EAFD2:
ldr r0, [r5, #8]
cmp r0, #0
beq _021EAFDE
add r1, sp, #0x10
bl Sprite_SetMatrix
_021EAFDE:
ldr r0, [r5, #0x10]
add r1, r6, r0
ldr r0, [r5, #0x18]
lsl r0, r0, #1
sub r0, r1, r0
ldr r1, [r5, #0x14]
str r4, [r5, #0x20]
sub r2, r4, r1
ldr r1, [r5, #0x18]
add r1, r0, r1
str r1, [r5, #0x24]
lsl r1, r2, #0xc
lsl r0, r0, #0xc
str r1, [sp, #4]
str r0, [sp, #8]
ldr r0, [r5]
bl ov96_021E92AC
cmp r0, #0
beq _021EB010
mov r0, #2
ldr r1, [sp, #8]
lsl r0, r0, #0xe
add r0, r1, r0
str r0, [sp, #8]
_021EB010:
ldr r0, [sp]
add r1, sp, #4
bl Sprite_SetMatrix
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021EAF94
thumb_func_start ov96_021EB01C
ov96_021EB01C: ; 0x021EB01C
push {r4, r5, r6, lr}
ldr r5, [r0, #0x14]
ldr r4, [r0, #0x28]
sub r1, r1, r5
ldr r5, [r0, #0x18]
lsl r5, r5, #1
sub r6, r5, r4
lsr r5, r6, #0x1f
add r5, r6, r5
asr r5, r5, #1
add r4, r4, r5
sub r2, r2, r4
bl ov96_021EAD88
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021EB01C
thumb_func_start ov96_021EB03C
ov96_021EB03C: ; 0x021EB03C
push {r4, r5, r6, r7}
add r4, r0, #0
add r7, r1, #0
ldr r1, [r4, #0x18]
add r6, r3, #0
ldr r3, [r4, #0x28]
lsl r5, r1, #1
add r0, r2, #0
sub r2, r5, r3
lsr r1, r2, #0x1f
add r1, r2, r1
asr r1, r1, #1
add r1, r3, r1
lsl r1, r1, #0xc
sub r0, r0, r1
ldr r1, [r4, #0x2c]
sub r1, r5, r1
lsl r1, r1, #0xc
add r1, r0, r1
ldr r0, [sp, #0x10]
str r7, [r6]
str r1, [r0]
pop {r4, r5, r6, r7}
bx lr
thumb_func_end ov96_021EB03C
thumb_func_start ov96_021EB06C
ov96_021EB06C: ; 0x021EB06C
push {r3, r4, r5, r6, r7, lr}
add r4, r0, #0
add r7, r1, #0
ldr r1, [r4, #4]
add r0, r2, #0
add r6, r3, #0
cmp r1, #0
bne _021EB082
bl GF_AssertFail
pop {r3, r4, r5, r6, r7, pc}
_021EB082:
ldr r1, [r4, #0x18]
ldr r3, [r4, #0x28]
lsl r5, r1, #1
sub r2, r5, r3
lsr r1, r2, #0x1f
add r1, r2, r1
asr r1, r1, #1
add r1, r3, r1
sub r0, r0, r1
add r1, r0, r5
ldr r0, [r4, #0x10]
sub r1, r1, r0
ldr r0, [sp, #0x18]
str r7, [r6]
str r1, [r0]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EB06C
thumb_func_start ov96_021EB0A4
ov96_021EB0A4: ; 0x021EB0A4
push {r3, r4}
ldr r4, [r0, #0x10]
add r4, r2, r4
ldr r2, [r0, #0x18]
str r1, [r3]
ldr r1, [r0, #0x28]
ldr r0, [r0, #0x18]
lsl r2, r2, #1
lsl r0, r0, #1
sub r3, r0, r1
lsr r0, r3, #0x1f
add r0, r3, r0
sub r2, r4, r2
asr r0, r0, #1
add r0, r2, r0
add r1, r1, r0
ldr r0, [sp, #8]
str r1, [r0]
pop {r3, r4}
bx lr
thumb_func_end ov96_021EB0A4
thumb_func_start ov96_021EB0CC
ov96_021EB0CC: ; 0x021EB0CC
push {r3, r4, lr}
sub sp, #0x24
add r4, r0, #0
lsl r0, r3, #0xc
str r0, [sp]
ldr r0, [sp, #0x30]
str r1, [sp, #0xc]
lsl r0, r0, #0xc
str r0, [sp, #4]
mov r0, #0
str r2, [sp, #0x10]
str r0, [sp, #8]
str r0, [sp, #0x14]
add r0, sp, #0
add r1, sp, #0xc
add r2, sp, #0x18
bl VEC_Subtract
add r0, sp, #0x18
bl VEC_Mag
ldr r1, [r4, #0x1c]
lsl r1, r1, #0xc
cmp r0, r1
bge _021EB104
add sp, #0x24
mov r0, #1
pop {r3, r4, pc}
_021EB104:
mov r0, #0
add sp, #0x24
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov96_021EB0CC
thumb_func_start ov96_021EB10C
ov96_021EB10C: ; 0x021EB10C
push {r3, r4, r5, lr}
add r5, r1, #0
add r4, r2, #0
bl ov96_021EAA20
add r1, r5, #0
add r2, r4, #0
bl ov96_021E9204
pop {r3, r4, r5, pc}
thumb_func_end ov96_021EB10C
thumb_func_start ov96_021EB120
ov96_021EB120: ; 0x021EB120
push {r3, lr}
ldr r0, [r0]
bl ov96_021E8BAC
bl Get2dSpriteVisibleFlag
cmp r0, #0
beq _021EB134
mov r0, #1
pop {r3, pc}
_021EB134:
mov r0, #0
pop {r3, pc}
thumb_func_end ov96_021EB120
thumb_func_start ov96_021EB138
ov96_021EB138: ; 0x021EB138
ldr r3, _021EB140 ; =ov96_021E9290
ldr r0, [r0, #0x14]
bx r3
nop
_021EB140: .word ov96_021E9290
thumb_func_end ov96_021EB138
thumb_func_start ov96_021EB144
ov96_021EB144: ; 0x021EB144
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5, #4]
mov r4, #0
cmp r0, #0
ble _021EB17C
cmp r1, #0
bne _021EB158
mov r6, #1
b _021EB15A
_021EB158:
add r6, r4, #0
_021EB15A:
add r0, r5, #0
add r1, r4, #0
bl ov96_021EAA04
bl ov96_021EAA20
bl ov96_021E8BAC
add r1, r6, #0
bl Set2dSpriteAnimActiveFlag
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
ldr r0, [r5, #4]
cmp r4, r0
blt _021EB15A
_021EB17C:
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021EB144
thumb_func_start ov96_021EB180
ov96_021EB180: ; 0x021EB180
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
mov r1, #0x56
lsl r1, r1, #2
add r6, r0, #0
bl AllocFromHeap
add r4, r0, #0
mov r2, #0x56
mov r0, #0
add r1, r4, #0
lsl r2, r2, #2
bl MIi_CpuClearFast
str r6, [r4]
add r2, r4, #0
ldmia r5!, {r0, r1}
add r2, #8
stmia r2!, {r0, r1}
ldr r0, [r5]
mov r1, #0x14
str r0, [r2]
ldr r2, [r4, #0xc]
add r0, r6, #0
mul r1, r2
bl AllocFromHeap
mov r1, #0x15
lsl r1, r1, #4
str r0, [r4, r1]
ldr r3, [r4, #0xc]
mov r2, #0x14
ldr r1, [r4, r1]
mov r0, #0
mul r2, r3
bl MIi_CpuClear32
ldr r2, [r4, #8]
mov r1, #0xc
ldr r0, [r4]
mul r1, r2
bl AllocFromHeap
mov r1, #0x55
lsl r1, r1, #2
str r0, [r4, r1]
ldr r3, [r4, #8]
mov r2, #0xc
ldr r1, [r4, r1]
mov r0, #0
mul r2, r3
bl MIi_CpuClear32
add r1, r4, #0
ldr r0, [r4, #8]
ldr r2, [r4]
add r1, #0x18
bl G2dRenderer_Init
mov r7, #5
str r0, [r4, #0x14]
mov r5, #0
add r6, r4, #0
lsl r7, r7, #6
_021EB200:
add r0, r4, r5
ldrb r0, [r0, #0x10]
ldr r2, [r4]
add r1, r5, #0
bl Create2DGfxResObjMan
str r0, [r6, r7]
add r5, r5, #1
add r6, r6, #4
cmp r5, #4
blt _021EB200
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EB180
thumb_func_start ov96_021EB21C
ov96_021EB21C: ; 0x021EB21C
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, [r5, #0xc]
mov r4, #0
cmp r0, #0
ble _021EB25E
mov r7, #0x15
lsl r7, r7, #4
_021EB22C:
mov r0, #0x14
add r6, r4, #0
mul r6, r0
ldr r0, [r5, r7]
add r0, r0, r6
ldr r0, [r0, #4]
cmp r0, #0
beq _021EB240
bl sub_0200AEB0
_021EB240:
mov r0, #0x15
lsl r0, r0, #4
ldr r0, [r5, r0]
add r0, r0, r6
ldr r0, [r0, #8]
cmp r0, #0
beq _021EB252
bl sub_0200B0A8
_021EB252:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
ldr r0, [r5, #0xc]
cmp r4, r0
blt _021EB22C
_021EB25E:
mov r6, #5
mov r4, #0
lsl r6, r6, #6
_021EB264:
lsl r0, r4, #2
add r0, r5, r0
ldr r0, [r0, r6]
bl Destroy2DGfxResObjMan
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #4
blo _021EB264
ldr r0, [r5, #0x14]
bl SpriteList_Delete
mov r0, #0x55
lsl r0, r0, #2
ldr r0, [r5, r0]
bl FreeToHeap
mov r0, #0x15
lsl r0, r0, #4
ldr r0, [r5, r0]
bl FreeToHeap
add r0, r5, #0
bl FreeToHeap
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EB21C
thumb_func_start ov96_021EB29C
ov96_021EB29C: ; 0x021EB29C
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5, #0xc]
add r4, r1, #0
add r6, r2, #0
cmp r4, r0
blt _021EB2AE
bl GF_AssertFail
_021EB2AE:
mov r0, #0x15
lsl r0, r0, #4
ldr r1, [r5, r0]
mov r0, #0x14
mul r0, r4
str r6, [r1, r0]
pop {r4, r5, r6, pc}
thumb_func_end ov96_021EB29C
thumb_func_start ov96_021EB2BC
ov96_021EB2BC: ; 0x021EB2BC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r6, r1, #0
add r7, r2, #0
str r3, [sp, #0xc]
add r1, r3, #0
mov r2, #0
add r5, r0, #0
bl ov96_021EB5EC
add r4, r0, #0
ldr r0, [sp, #0xc]
add r1, r6, #0
str r0, [sp]
ldr r0, [sp, #0x28]
add r2, r7, #0
str r0, [sp, #4]
ldr r0, [r5]
mov r3, #0
str r0, [sp, #8]
mov r0, #5
lsl r0, r0, #6
ldr r0, [r5, r0]
bl AddCharResObjFromNarc
str r0, [r4]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021EB2BC
thumb_func_start ov96_021EB2F4
ov96_021EB2F4: ; 0x021EB2F4
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r6, r1, #0
add r7, r2, #0
str r3, [sp, #0x10]
add r1, r3, #0
mov r2, #1
add r5, r0, #0
bl ov96_021EB5EC
add r4, r0, #0
ldr r0, [sp, #0x10]
add r1, r6, #0
str r0, [sp]
ldr r0, [sp, #0x28]
add r2, r7, #0
str r0, [sp, #4]
add r0, sp, #0x18
ldrb r0, [r0, #0x14]
mov r3, #0
str r0, [sp, #8]
ldr r0, [r5]
str r0, [sp, #0xc]
mov r0, #0x51
lsl r0, r0, #2
ldr r0, [r5, r0]
bl AddPlttResObjFromNarc
str r0, [r4]
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EB2F4
thumb_func_start ov96_021EB334
ov96_021EB334: ; 0x021EB334
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r6, r1, #0
add r7, r2, #0
str r3, [sp, #0xc]
add r1, r3, #0
mov r2, #2
add r5, r0, #0
bl ov96_021EB5EC
add r4, r0, #0
ldr r0, [sp, #0xc]
add r1, r6, #0
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r5]
add r2, r7, #0
str r0, [sp, #8]
mov r0, #0x52
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r3, #0
bl AddCellOrAnimResObjFromNarc
str r0, [r4]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021EB334
thumb_func_start ov96_021EB36C
ov96_021EB36C: ; 0x021EB36C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r6, r1, #0
add r7, r2, #0
str r3, [sp, #0xc]
add r1, r3, #0
mov r2, #3
add r5, r0, #0
bl ov96_021EB5EC
add r4, r0, #0
ldr r0, [sp, #0xc]
add r1, r6, #0
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r5]
add r2, r7, #0
str r0, [sp, #8]
mov r0, #0x53
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r3, #0
bl AddCellOrAnimResObjFromNarc
str r0, [r4]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021EB36C
thumb_func_start ov96_021EB3A4
ov96_021EB3A4: ; 0x021EB3A4
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, [r5, #0xc]
mov r6, #0
cmp r0, #0
ble _021EB3E0
mov r7, #0x15
add r4, r6, #0
lsl r7, r7, #4
_021EB3B6:
ldr r0, [r5, r7]
add r0, r0, r4
ldr r0, [r0, #4]
cmp r0, #0
beq _021EB3C4
bl sub_0200ADA4
_021EB3C4:
mov r0, #0x15
lsl r0, r0, #4
ldr r0, [r5, r0]
add r0, r0, r4
ldr r0, [r0, #8]
cmp r0, #0
beq _021EB3D6
bl sub_0200AF94
_021EB3D6:
ldr r0, [r5, #0xc]
add r6, r6, #1
add r4, #0x14
cmp r6, r0
blt _021EB3B6
_021EB3E0:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EB3A4
thumb_func_start ov96_021EB3E4
ov96_021EB3E4: ; 0x021EB3E4
push {r3, r4, r5, r6, lr}
sub sp, #4
add r6, sp, #8
ldrb r6, [r6, #0x10]
add r5, r0, #0
add r4, r3, #0
str r6, [sp]
bl ov96_021EB408
add r2, sp, #8
ldrb r2, [r2, #0x10]
add r0, r5, #0
add r1, r4, #0
bl ov96_021EB4F4
add sp, #4
pop {r3, r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021EB3E4
thumb_func_start ov96_021EB408
ov96_021EB408: ; 0x021EB408
push {r4, r5, r6, r7, lr}
sub sp, #0x84
add r5, r0, #0
str r3, [sp, #0x2c]
add r4, r1, #0
ldr r1, [r5, #4]
ldr r0, [r5, #8]
add r6, r2, #0
cmp r1, r0
blt _021EB420
bl GF_AssertFail
_021EB420:
ldr r0, [sp, #0x2c]
mov r2, #5
str r0, [sp]
mov r0, #0
mvn r0, r0
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
str r4, [sp, #0x10]
lsl r2, r2, #6
ldr r1, [r5, r2]
str r1, [sp, #0x14]
add r1, r2, #4
ldr r1, [r5, r1]
str r1, [sp, #0x18]
add r1, r2, #0
add r1, #8
ldr r1, [r5, r1]
add r2, #0xc
str r1, [sp, #0x1c]
ldr r1, [r5, r2]
str r1, [sp, #0x20]
str r0, [sp, #0x24]
str r0, [sp, #0x28]
ldr r1, [sp, #0x2c]
add r0, sp, #0x60
add r2, r1, #0
add r3, r1, #0
bl CreateSpriteResourcesHeader
ldr r0, [r5, #0x14]
mov r1, #0
str r0, [sp, #0x30]
add r0, sp, #0x60
str r0, [sp, #0x34]
ldr r0, [r5]
str r0, [sp, #0x5c]
mov r0, #1
lsl r0, r0, #0xc
str r1, [sp, #0x38]
str r1, [sp, #0x3c]
str r1, [sp, #0x40]
str r0, [sp, #0x44]
str r0, [sp, #0x48]
str r0, [sp, #0x4c]
add r0, sp, #0x30
strh r1, [r0, #0x20]
add r0, sp, #0x30
str r1, [sp, #0x54]
str r6, [sp, #0x58]
bl CreateSprite
add r4, r0, #0
mov r1, #1
bl Set2dSpriteAnimActiveFlag
add r0, r4, #0
mov r1, #0
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0
bl Set2dSpriteVisibleFlag
mov r7, #0x55
ldr r1, [r5, #4]
lsl r7, r7, #2
ldr r3, [r5, r7]
mov r0, #0xc
add r2, r1, #0
mov r6, #0
mul r2, r0
strh r6, [r3, r2]
ldr r1, [r5, #4]
ldr r3, [r5, r7]
add r2, r1, #0
mul r2, r0
add r1, r3, r2
strh r6, [r1, #2]
ldr r1, [r5, #4]
ldr r3, [r5, r7]
add r2, r1, #0
mul r2, r0
add r1, r3, r2
str r4, [r1, #4]
add r1, sp, #0x88
ldrb r6, [r1, #0x10]
ldr r1, [r5, #4]
ldr r3, [r5, r7]
add r2, r1, #0
mul r2, r0
add r1, r3, r2
strh r6, [r1, #8]
ldr r1, [r5, #4]
ldr r2, [r5, r7]
mul r0, r1
add r1, r2, r0
ldr r0, [sp, #0x2c]
strh r0, [r1, #0xa]
ldr r0, [r5, #4]
add r0, r0, #1
str r0, [r5, #4]
add r0, r4, #0
add sp, #0x84
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021EB408
thumb_func_start ov96_021EB4F4
ov96_021EB4F4: ; 0x021EB4F4
push {r3, r4, r5, lr}
ldr r4, [r0, #8]
mov r3, #0
cmp r4, #0
ble _021EB524
mov r5, #0x55
lsl r5, r5, #2
ldr r0, [r0, r5]
_021EB504:
ldrh r5, [r0]
cmp r5, #0
bne _021EB51C
ldrh r5, [r0, #0xa]
cmp r5, r1
bne _021EB51C
ldrh r5, [r0, #8]
cmp r5, r2
bne _021EB51C
mov r1, #1
strh r1, [r0]
pop {r3, r4, r5, pc}
_021EB51C:
add r3, r3, #1
add r0, #0xc
cmp r3, r4
blt _021EB504
_021EB524:
bl GF_AssertFail
mov r0, #0
pop {r3, r4, r5, pc}
thumb_func_end ov96_021EB4F4
thumb_func_start ov96_021EB52C
ov96_021EB52C: ; 0x021EB52C
push {r3, lr}
ldrh r3, [r0]
cmp r3, #0
beq _021EB55C
cmp r1, #0
beq _021EB550
mov r1, #1
strh r1, [r0, #2]
cmp r2, #0
ldr r0, [r0, #4]
beq _021EB548
bl Set2dSpriteVisibleFlag
pop {r3, pc}
_021EB548:
mov r1, #0
bl Set2dSpriteVisibleFlag
pop {r3, pc}
_021EB550:
mov r1, #0
strh r1, [r0, #2]
ldr r0, [r0, #4]
bl Set2dSpriteVisibleFlag
pop {r3, pc}
_021EB55C:
bl GF_AssertFail
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_021EB52C
thumb_func_start ov96_021EB564
ov96_021EB564: ; 0x021EB564
ldr r3, _021EB56C ; =sub_020248F0
ldr r0, [r0, #4]
bx r3
nop
_021EB56C: .word Set2dSpriteAnimSeqNo
thumb_func_end ov96_021EB564
thumb_func_start ov96_021EB570
ov96_021EB570: ; 0x021EB570
ldr r3, _021EB578 ; =TryChange2dSpriteAnimSeqNo
ldr r0, [r0, #4]
bx r3
nop
_021EB578: .word TryChange2dSpriteAnimSeqNo
thumb_func_end ov96_021EB570
thumb_func_start ov96_021EB57C
ov96_021EB57C: ; 0x021EB57C
ldr r3, _021EB584 ; =Sprite_IsCellAnimationFinished
ldr r0, [r0, #4]
bx r3
nop
_021EB584: .word Sprite_IsCellAnimationFinished
thumb_func_end ov96_021EB57C
thumb_func_start ov96_021EB588
ov96_021EB588: ; 0x021EB588
ldr r3, _021EB590 ; =Sprite_SetMatrix
ldr r0, [r0, #4]
bx r3
nop
_021EB590: .word Sprite_SetMatrix
thumb_func_end ov96_021EB588
thumb_func_start ov96_021EB594
ov96_021EB594: ; 0x021EB594
ldr r3, _021EB59C ; =Sprite_GetMatrixPtr
ldr r0, [r0, #4]
bx r3
nop
_021EB59C: .word Sprite_GetMatrixPtr
thumb_func_end ov96_021EB594
thumb_func_start ov96_021EB5A0
ov96_021EB5A0: ; 0x021EB5A0
ldr r3, _021EB5A8 ; =sub_02024804
ldr r0, [r0, #4]
bx r3
nop
_021EB5A8: .word sub_02024804
thumb_func_end ov96_021EB5A0
thumb_func_start ov96_021EB5AC
ov96_021EB5AC: ; 0x021EB5AC
ldr r3, _021EB5B4 ; =sub_0202481C
ldr r0, [r0, #4]
bx r3
nop
_021EB5B4: .word sub_0202481C
thumb_func_end ov96_021EB5AC
thumb_func_start ov96_021EB5B8
ov96_021EB5B8: ; 0x021EB5B8
ldr r0, [r0, #4]
bx lr
thumb_func_end ov96_021EB5B8
thumb_func_start ov96_021EB5BC
ov96_021EB5BC: ; 0x021EB5BC
ldr r3, _021EB5C4 ; =sub_0202457C
ldr r0, [r0, #0x14]
bx r3
nop
_021EB5C4: .word sub_0202457C
thumb_func_end ov96_021EB5BC
thumb_func_start ov96_021EB5C8
ov96_021EB5C8: ; 0x021EB5C8
push {r4, r5, r6, lr}
add r6, r2, #0
add r5, r0, #0
add r4, r1, #0
ldr r2, [sp, #0x10]
add r0, #0x18
add r1, r3, #0
bl G2dRenderer_SetSubSurfaceCoords
add r5, #0x18
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
bl G2dRenderer_SetMainSurfaceCoords
pop {r4, r5, r6, pc}
thumb_func_end ov96_021EB5C8
thumb_func_start ov96_021EB5E8
ov96_021EB5E8: ; 0x021EB5E8
ldr r0, [r0, #0x14]
bx lr
thumb_func_end ov96_021EB5E8
thumb_func_start ov96_021EB5EC
ov96_021EB5EC: ; 0x021EB5EC
push {r4, r5, r6, lr}
add r6, r2, #0
add r5, r0, #0
add r4, r1, #0
cmp r6, #4
blo _021EB5FC
bl GF_AssertFail
_021EB5FC:
ldr r2, [r5, #0xc]
mov r0, #0
cmp r2, #0
ble _021EB628
mov r1, #0x15
lsl r1, r1, #4
ldr r1, [r5, r1]
add r5, r1, #0
_021EB60C:
ldr r3, [r5]
cmp r4, r3
bne _021EB620
mov r2, #0x14
mul r2, r0
add r0, r1, r2
add r1, r0, #4
lsl r0, r6, #2
add r0, r1, r0
pop {r4, r5, r6, pc}
_021EB620:
add r0, r0, #1
add r5, #0x14
cmp r0, r2
blt _021EB60C
_021EB628:
bl GF_AssertFail
mov r0, #0
pop {r4, r5, r6, pc}
thumb_func_end ov96_021EB5EC
thumb_func_start ov96_021EB630
ov96_021EB630: ; 0x021EB630
ldr r3, _021EB638 ; =Sprite_SetDrawPriority
ldr r0, [r0, #4]
bx r3
nop
_021EB638: .word Sprite_SetDrawPriority
thumb_func_end ov96_021EB630
thumb_func_start ov96_021EB63C
ov96_021EB63C: ; 0x021EB63C
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, [r5, #8]
mov r6, #0
cmp r0, #0
ble _021EB676
add r4, r6, #0
cmp r1, #0
bne _021EB652
mov r7, #1
b _021EB654
_021EB652:
add r7, r6, #0
_021EB654:
mov r0, #0x55
lsl r0, r0, #2
ldr r1, [r5, r0]
ldrh r0, [r1, r4]
cmp r0, #0
beq _021EB66C
add r0, r1, r4
bl ov96_021EB5B8
add r1, r7, #0
bl Set2dSpriteAnimActiveFlag
_021EB66C:
ldr r0, [r5, #8]
add r6, r6, #1
add r4, #0xc
cmp r6, r0
blt _021EB654
_021EB676:
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021EB63C
thumb_func_start ov96_021EB678
ov96_021EB678: ; 0x021EB678
ldr r3, _021EB67C ; =ov96_021ED1D0
bx r3
.balign 4, 0
_021EB67C: .word ov96_021ED1D0
thumb_func_end ov96_021EB678
thumb_func_start ov96_021EB680
ov96_021EB680: ; 0x021EB680
ldr r3, _021EB684 ; =ov96_021ED47C
bx r3
.balign 4, 0
_021EB684: .word ov96_021ED47C
thumb_func_end ov96_021EB680
thumb_func_start ov96_021EB688
ov96_021EB688: ; 0x021EB688
ldr r3, _021EB68C ; =ov96_021ED48C
bx r3
.balign 4, 0
_021EB68C: .word ov96_021ED48C
thumb_func_end ov96_021EB688
thumb_func_start ov96_021EB690
ov96_021EB690: ; 0x021EB690
ldr r3, _021EB694 ; =ov96_021ED1D0
bx r3
.balign 4, 0
_021EB694: .word ov96_021ED1D0
thumb_func_end ov96_021EB690
thumb_func_start ov96_021EB698
ov96_021EB698: ; 0x021EB698
ldr r3, _021EB69C ; =ov96_021ED47C
bx r3
.balign 4, 0
_021EB69C: .word ov96_021ED47C
thumb_func_end ov96_021EB698
thumb_func_start ov96_021EB6A0
ov96_021EB6A0: ; 0x021EB6A0
ldr r3, _021EB6A4 ; =ov96_021ED48C
bx r3
.balign 4, 0
_021EB6A4: .word ov96_021ED48C
thumb_func_end ov96_021EB6A0
thumb_func_start ov96_021EB6A8
ov96_021EB6A8: ; 0x021EB6A8
push {r4, lr}
sub sp, #0x28
ldr r4, _021EB6C4 ; =ov96_0221B030
add r3, sp, #0
mov r2, #5
_021EB6B2:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _021EB6B2
add r0, sp, #0
bl GfGfx_SetBanks
add sp, #0x28
pop {r4, pc}
.balign 4, 0
_021EB6C4: .word ov96_0221B030
thumb_func_end ov96_021EB6A8
thumb_func_start ov96_021EB6C8
ov96_021EB6C8: ; 0x021EB6C8
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r4, r1, #0
add r5, r0, #0
bl ov96_021E5DC4
add r6, r0, #0
ldrb r0, [r4]
cmp r0, #0
beq _021EB6E2
cmp r0, #1
beq _021EB712
b _021EB724
_021EB6E2:
add r0, r5, #0
bl ov96_021E5F24
cmp r0, #0
bne _021EB6F2
add r0, r5, #0
bl ov96_021ED8DC
_021EB6F2:
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r6]
mov r1, #3
str r0, [sp, #8]
mov r0, #4
add r2, r1, #0
mov r3, #0
bl BeginNormalPaletteFade
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021EB728
_021EB712:
bl IsPaletteFadeFinished
cmp r0, #0
beq _021EB728
add r0, r5, #0
mov r1, #1
bl ov96_021E5FC8
b _021EB728
_021EB724:
bl GF_AssertFail
_021EB728:
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021EB6C8
thumb_func_start ov96_021EB730
ov96_021EB730: ; 0x021EB730
push {r4, r5, r6, r7, lr}
sub sp, #0x14
str r0, [sp, #0xc]
bl ov96_021E5DC4
add r4, r0, #0
ldr r0, [sp, #0xc]
mov r5, #0
bl ov96_021E5EE8
cmp r0, #1
bne _021EB750
ldr r0, [sp, #0xc]
bl ov96_021EE324
add r5, r0, #0
_021EB750:
ldr r0, [r4, #0xc]
bl ov96_021EE830
ldr r0, [r4, #0xc]
bl ov96_021EEA80
cmp r0, #0
bne _021EB764
cmp r5, #0
beq _021EB766
_021EB764:
b _021EB9AE
_021EB766:
ldr r0, [r4, #0xc]
bl ov96_021EE97C
add r1, r4, #0
add r1, #0xb5
mov r5, #0
ldrb r1, [r1]
add r6, r0, #0
mvn r5, r5
cmp r1, #8
bls _021EB77E
b _021EB98C
_021EB77E:
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021EB78A: ; jump table
.short _021EB79C - _021EB78A - 2 ; case 0
.short _021EB7B4 - _021EB78A - 2 ; case 1
.short _021EB7CA - _021EB78A - 2 ; case 2
.short _021EB7F6 - _021EB78A - 2 ; case 3
.short _021EB816 - _021EB78A - 2 ; case 4
.short _021EB82A - _021EB78A - 2 ; case 5
.short _021EB882 - _021EB78A - 2 ; case 6
.short _021EB918 - _021EB78A - 2 ; case 7
.short _021EB94A - _021EB78A - 2 ; case 8
_021EB79C:
add r2, r4, #0
add r2, #0xb1
ldrb r2, [r2]
mov r5, #0
add r1, r5, #0
bl BufferPokeathlonCourseName
add r0, r4, #0
mov r1, #1
add r0, #0xb5
strb r1, [r0]
b _021EB990
_021EB7B4:
lsr r0, r5, #0x11
bl sub_0200FC20
ldr r0, _021EBA8C ; =0x000008DC
bl PlaySE
add r0, r4, #0
mov r1, #2
add r0, #0xb5
strb r1, [r0]
b _021EB990
_021EB7CA:
add r0, r4, #0
add r0, #0xb4
ldrb r0, [r0]
cmp r0, #4
bhs _021EB7E4
add r0, r4, #0
add r0, #0xb4
ldrb r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0xb4
strb r1, [r0]
b _021EB990
_021EB7E4:
add r0, r4, #0
mov r1, #0
add r0, #0xb4
strb r1, [r0]
add r0, r4, #0
mov r1, #3
add r0, #0xb5
strb r1, [r0]
b _021EB990
_021EB7F6:
mov r0, #0x18
mov r1, #1
str r0, [sp]
str r1, [sp, #4]
ldr r0, [r4]
add r2, r1, #0
str r0, [sp, #8]
mov r0, #0
lsr r3, r5, #0x11
bl BeginNormalPaletteFade
add r0, r4, #0
mov r1, #4
add r0, #0xb5
strb r1, [r0]
b _021EB990
_021EB816:
bl IsPaletteFadeFinished
cmp r0, #0
bne _021EB820
b _021EB990
_021EB820:
add r0, r4, #0
mov r1, #5
add r0, #0xb5
strb r1, [r0]
b _021EB990
_021EB82A:
add r1, r4, #0
add r1, #0xb2
ldrb r1, [r1]
ldr r0, [sp, #0xc]
bl ov96_021E5D40
ldr r0, [r0]
cmp r0, #0
ble _021EB852
add r1, r4, #0
add r1, #0xb2
ldrb r1, [r1]
ldr r0, [sp, #0xc]
bl ov96_021ED838
add r1, r0, #0
ldr r0, [r4, #0xc]
bl ov96_021EE908
b _021EB878
_021EB852:
add r1, r4, #0
add r1, #0xb2
ldrb r1, [r1]
ldr r0, [sp, #0xc]
bl ov96_021ED838
add r1, r4, #0
add r1, #0xb2
add r5, r0, #0
ldrb r1, [r1]
ldr r0, [sp, #0xc]
bl ov96_021ED86C
add r1, r0, #0
add r0, r6, #0
mov r2, #7
mov r3, #1
bl ov96_021EDF3C
_021EB878:
add r0, r4, #0
mov r1, #6
add r0, #0xb5
strb r1, [r0]
b _021EB990
_021EB882:
add r1, r4, #0
add r1, #0xb2
ldrb r1, [r1]
ldr r0, [sp, #0xc]
bl ov96_021E5F34
add r2, r0, #0
add r0, r6, #0
mov r1, #0
bl BufferPlayersName
mov r5, #0
_021EB89A:
add r1, r4, #0
add r1, #0xb2
ldrb r1, [r1]
lsl r2, r5, #0x18
ldr r0, [sp, #0xc]
lsr r2, r2, #0x18
add r3, r5, #1
bl ov96_021ED524
add r5, r5, #1
cmp r5, #3
blt _021EB89A
ldr r0, [r4]
add r2, r4, #0
str r0, [sp]
add r2, #0xb2
add r0, r4, #0
ldrb r2, [r2]
ldr r1, [sp, #0xc]
add r0, #0x20
mov r3, #2
bl ov96_021ECB38
add r0, r4, #0
add r0, #0xb2
ldrb r0, [r0]
mov r1, #1
lsl r0, r0, #2
add r0, r4, r0
ldr r0, [r0, #0x20]
bl UnkImageStruct_SetSpriteAnimSeqNo
add r1, r4, #0
add r1, #0xb2
ldrb r1, [r1]
ldr r0, [sp, #0xc]
bl ov96_021ED8A4
lsl r0, r0, #0x18
lsr r1, r0, #0x18
cmp r1, #5
bhs _021EB8F2
ldr r0, _021EBA8C ; =0x000008DC
b _021EB8F4
_021EB8F2:
ldr r0, _021EBA90 ; =0x000008DD
_021EB8F4:
lsl r2, r1, #2
ldr r1, _021EBA94 ; =ov96_0221B088
lsl r0, r0, #0x10
ldr r1, [r1, r2]
lsr r0, r0, #0x10
lsl r1, r1, #0x10
asr r1, r1, #0x10
bl PlaySE_SetPitch
add r0, r4, #0
mov r5, #1
add r0, #0xb0
strb r5, [r0]
add r0, r4, #0
mov r1, #7
add r0, #0xb5
strb r1, [r0]
b _021EB990
_021EB918:
add r0, r4, #0
add r0, #0xb0
ldrb r0, [r0]
cmp r0, #0
bne _021EB990
add r0, r4, #0
add r0, #0xb2
ldrb r0, [r0]
cmp r0, #4
blo _021EB940
add r0, r4, #0
mov r1, #1
add r0, #0xb8
str r1, [r0]
add r0, r4, #0
mov r1, #8
add r0, #0xb5
mov r5, #2
strb r1, [r0]
b _021EB990
_021EB940:
add r0, r4, #0
mov r1, #5
add r0, #0xb5
strb r1, [r0]
b _021EB990
_021EB94A:
ldr r0, [sp, #0xc]
bl ov96_021E5EE8
cmp r0, #0
beq _021EB95E
ldr r0, [sp, #0xc]
bl ov96_021EE54C
cmp r0, #0
beq _021EB990
_021EB95E:
add r0, r4, #0
bl ov96_021EC2E0
cmp r0, #0
beq _021EB978
add r0, r4, #0
add r0, #0x88
ldr r0, [r0]
bl FreeToHeap
ldr r0, [r4, #8]
bl DestroySysTask
_021EB978:
ldr r0, [r4, #0xc]
bl ov96_021EE944
ldr r0, [sp, #0xc]
mov r1, #2
bl ov96_021E5FC8
add sp, #0x14
mov r0, #0
pop {r4, r5, r6, r7, pc}
_021EB98C:
bl GF_AssertFail
_021EB990:
mov r0, #0
mvn r0, r0
cmp r5, r0
beq _021EB9AE
ldr r0, [r4, #0xc]
add r1, r5, #0
bl ov96_021EE8CC
add r0, r4, #0
add r0, #0xb7
ldrb r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0xb7
strb r1, [r0]
_021EB9AE:
add r0, r4, #0
add r0, #0xb0
ldrb r0, [r0]
cmp r0, #0
beq _021EBA86
add r0, r4, #0
add r0, #0xb2
ldrb r1, [r0]
add r2, r4, #0
add r2, #0x94
lsl r0, r1, #1
add r0, r1, r0
lsl r0, r0, #0x18
lsr r6, r0, #0x18
add r0, r4, #0
ldr r2, [r2]
add r0, #0x94
ldr r1, [r0]
add r3, r2, #1
add r2, r4, #0
add r0, r4, #0
add r2, #0x94
add r0, #0x94
str r3, [r2]
cmp r1, #0
bne _021EBA08
mov r5, #0
_021EB9E4:
lsl r1, r6, #0x18
ldr r0, [r4, #0x14]
lsr r1, r1, #0x18
bl ov96_021EAA04
add r7, r0, #0
mov r1, #2
bl ov96_021EAC0C
add r0, r7, #0
mov r1, #0x10
bl ov96_021EAC5C
add r5, r5, #1
add r6, r6, #1
cmp r5, #3
blt _021EB9E4
b _021EBA86
_021EBA08:
add r1, r4, #0
add r1, #0x94
ldr r2, [r1]
ldr r1, [r0]
add r1, r1, #1
str r1, [r0]
cmp r2, #0x3c
blt _021EBA86
mov r5, #0
str r5, [sp, #0x10]
_021EBA1C:
lsl r1, r6, #0x18
ldr r0, [r4, #0x14]
lsr r1, r1, #0x18
bl ov96_021EAA04
add r7, r0, #0
mov r1, #1
bl ov96_021EAC0C
add r0, r7, #0
mov r1, #0
bl ov96_021EAC5C
add r0, r7, #0
bl ov96_021EAA20
bl ov96_021E8BAC
bl sub_02024CB8
lsl r1, r5, #0xc
str r1, [r0, #0x10]
ldr r0, [sp, #0x10]
add r6, r6, #1
add r0, r0, #1
add r5, r5, #3
str r0, [sp, #0x10]
cmp r0, #3
blt _021EBA1C
ldr r0, [r4]
add r2, r4, #0
str r0, [sp]
add r2, #0xb2
add r0, r4, #0
ldrb r2, [r2]
ldr r1, [sp, #0xc]
add r0, #0x20
mov r3, #1
bl ov96_021ECB38
add r0, r4, #0
mov r2, #0
add r0, #0xb0
strb r2, [r0]
add r0, r4, #0
add r0, #0xb2
ldrb r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0xb2
strb r1, [r0]
add r4, #0x94
str r2, [r4]
_021EBA86:
mov r0, #0
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021EBA8C: .word 0x000008DC
_021EBA90: .word 0x000008DD
_021EBA94: .word ov96_0221B088
thumb_func_end ov96_021EB730
thumb_func_start ov96_021EBA98
ov96_021EBA98: ; 0x021EBA98
push {r3, r4, lr}
sub sp, #0xc
add r4, r1, #0
ldrb r1, [r4]
cmp r1, #0
beq _021EBAAA
cmp r1, #1
beq _021EBADA
b _021EBAE8
_021EBAAA:
bl PokeathlonOvy_GetHeapID
mov r1, #0x5a
str r1, [sp]
mov r1, #1
str r1, [sp, #4]
str r0, [sp, #8]
mov r0, #0
ldr r3, _021EBAF4 ; =0x00007FFF
add r1, r0, #0
add r2, r0, #0
bl BeginNormalPaletteFade
mov r0, #0
mov r1, #0x5a
bl GF_SndStartFadeOutBGM
ldr r0, _021EBAF8 ; =0x000008DD
bl PlaySE
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021EBAEC
_021EBADA:
bl IsPaletteFadeFinished
cmp r0, #0
beq _021EBAEC
add sp, #0xc
mov r0, #1
pop {r3, r4, pc}
_021EBAE8:
bl GF_AssertFail
_021EBAEC:
mov r0, #0
add sp, #0xc
pop {r3, r4, pc}
nop
_021EBAF4: .word 0x00007FFF
_021EBAF8: .word 0x000008DD
thumb_func_end ov96_021EBA98
thumb_func_start ov96_021EBAFC
ov96_021EBAFC: ; 0x021EBAFC
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r4, r1, #0
add r5, r0, #0
bl ov96_021E5DC4
add r6, r0, #0
ldrb r0, [r4]
cmp r0, #0
beq _021EBB16
cmp r0, #1
beq _021EBB46
b _021EBB58
_021EBB16:
add r0, r5, #0
bl ov96_021E5F24
cmp r0, #0
bne _021EBB26
add r0, r5, #0
bl ov96_021EDA58
_021EBB26:
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r6]
mov r1, #3
str r0, [sp, #8]
mov r0, #0
add r2, r1, #0
add r3, r0, #0
bl BeginNormalPaletteFade
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021EBB5C
_021EBB46:
bl IsPaletteFadeFinished
cmp r0, #0
beq _021EBB5C
add r0, r5, #0
mov r1, #1
bl ov96_021E5FC8
b _021EBB5C
_021EBB58:
bl GF_AssertFail
_021EBB5C:
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021EBAFC
thumb_func_start ov96_021EBB64
ov96_021EBB64: ; 0x021EBB64
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r6, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
add r0, #0x8c
ldr r0, [r0]
mov r5, #0
bl ov96_021ECBFC
add r0, r4, #0
add r0, #0x90
ldr r0, [r0]
bl ov96_021ED0C8
add r0, r6, #0
bl ov96_021E5EE8
cmp r0, #1
bne _021EBB96
add r0, r6, #0
bl ov96_021EE440
add r5, r0, #0
_021EBB96:
ldr r0, [r4, #0xc]
bl ov96_021EE830
ldr r0, [r4, #0xc]
bl ov96_021EEA80
cmp r0, #0
bne _021EBBAA
cmp r5, #0
beq _021EBBAC
_021EBBAA:
b _021EC1A4
_021EBBAC:
ldr r0, [r4, #0xc]
bl ov96_021EE97C
add r1, r4, #0
add r1, #0xb5
mov r7, #0
ldrb r1, [r1]
add r5, r0, #0
mvn r7, r7
cmp r1, #0x16
bls _021EBBC4
b _021EC184
_021EBBC4:
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021EBBD0: ; jump table
.short _021EBBFE - _021EBBD0 - 2 ; case 0
.short _021EBC0A - _021EBBD0 - 2 ; case 1
.short _021EBC16 - _021EBBD0 - 2 ; case 2
.short _021EBC40 - _021EBBD0 - 2 ; case 3
.short _021EBC84 - _021EBBD0 - 2 ; case 4
.short _021EBCA6 - _021EBBD0 - 2 ; case 5
.short _021EBCF8 - _021EBBD0 - 2 ; case 6
.short _021EBD04 - _021EBBD0 - 2 ; case 7
.short _021EBD58 - _021EBBD0 - 2 ; case 8
.short _021EBD78 - _021EBBD0 - 2 ; case 9
.short _021EBD8C - _021EBBD0 - 2 ; case 10
.short _021EBDDE - _021EBBD0 - 2 ; case 11
.short _021EBDFA - _021EBBD0 - 2 ; case 12
.short _021EBEA0 - _021EBBD0 - 2 ; case 13
.short _021EBEE4 - _021EBBD0 - 2 ; case 14
.short _021EBEF8 - _021EBBD0 - 2 ; case 15
.short _021EBF34 - _021EBBD0 - 2 ; case 16
.short _021EBF44 - _021EBBD0 - 2 ; case 17
.short _021EC008 - _021EBBD0 - 2 ; case 18
.short _021EC07E - _021EBBD0 - 2 ; case 19
.short _021EC126 - _021EBBD0 - 2 ; case 20
.short _021EC142 - _021EBBD0 - 2 ; case 21
.short _021EBFD6 - _021EBBD0 - 2 ; case 22
_021EBBFE:
add r0, r4, #0
mov r1, #1
add r0, #0xb5
mov r7, #3
strb r1, [r0]
b _021EC188
_021EBC0A:
add r0, r4, #0
mov r1, #2
add r0, #0xb5
mov r7, #4
strb r1, [r0]
b _021EC188
_021EBC16:
mov r5, #0
_021EBC18:
lsl r1, r5, #0x18
add r0, r6, #0
lsr r1, r1, #0x18
bl ov96_021ED6F8
add r2, r0, #0
add r0, r4, #0
add r0, #0x8c
lsl r1, r5, #0x18
ldr r0, [r0]
lsr r1, r1, #0x18
bl ov96_021ECC38
add r5, r5, #1
cmp r5, #4
blt _021EBC18
add r0, r4, #0
mov r1, #3
add r0, #0xb5
strb r1, [r0]
_021EBC40:
add r0, r4, #0
add r0, #0xb2
ldrb r1, [r0]
cmp r1, #4
blo _021EBC5E
add r0, r4, #0
mov r1, #0
add r0, #0xb2
strb r1, [r0]
add r0, r4, #0
mov r1, #4
add r0, #0xb5
mov r7, #6
strb r1, [r0]
b _021EC188
_021EBC5E:
add r0, r6, #0
mov r7, #5
bl ov96_021ED6F8
add r1, r4, #0
add r1, #0xb2
add r2, r0, #0
ldrb r1, [r1]
add r0, r6, #0
bl ov96_021ED578
add r0, r4, #0
add r0, #0xb2
ldrb r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0xb2
strb r1, [r0]
b _021EC188
_021EBC84:
add r0, r6, #0
bl ov96_021ED5E0
cmp r0, #0
beq _021EBC9A
add r0, r4, #0
mov r1, #5
add r0, #0xb5
mov r7, #7
strb r1, [r0]
b _021EC188
_021EBC9A:
add r0, r4, #0
mov r1, #6
add r0, #0xb5
mov r7, #9
strb r1, [r0]
b _021EC188
_021EBCA6:
add r0, r4, #0
bl ov96_021EC2E0
cmp r0, #0
bne _021EBD0E
add r0, r6, #0
bl ov96_021ED754
add r1, r4, #0
add r1, #0xb4
ldrb r1, [r1]
cmp r1, r0
blo _021EBCE0
add r0, r4, #0
mov r1, #0
add r0, #0xb2
strb r1, [r0]
add r0, r4, #0
add r0, #0xb3
strb r1, [r0]
add r0, r4, #0
add r0, #0xb4
strb r1, [r0]
add r0, r4, #0
mov r1, #6
add r0, #0xb5
mov r7, #0xa
strb r1, [r0]
b _021EC188
_021EBCE0:
add r0, r4, #0
bl ov96_021ED748
add r2, r0, #0
ldr r1, _021EBFF0 ; =ov96_021ED618
add r0, r6, #0
bl ov96_021EDDA4
cmp r0, #0
beq _021EBD0E
mov r7, #8
b _021EC188
_021EBCF8:
add r0, r4, #0
mov r1, #7
add r0, #0xb5
mov r7, #0xb
strb r1, [r0]
b _021EC188
_021EBD04:
add r0, r4, #0
bl ov96_021EC2E0
cmp r0, #0
beq _021EBD10
_021EBD0E:
b _021EC188
_021EBD10:
add r0, r6, #0
bl ov96_021ED78C
add r1, r4, #0
add r1, #0xb4
ldrb r1, [r1]
cmp r1, r0
blo _021EBD40
add r0, r4, #0
mov r1, #0
add r0, #0xb2
strb r1, [r0]
add r0, r4, #0
add r0, #0xb3
strb r1, [r0]
add r0, r4, #0
add r0, #0xb4
strb r1, [r0]
add r0, r4, #0
mov r1, #8
add r0, #0xb5
mov r7, #0xa
strb r1, [r0]
b _021EC188
_021EBD40:
add r0, r4, #0
bl ov96_021ED74C
add r2, r0, #0
ldr r1, _021EBFF4 ; =ov96_021ED660
add r0, r6, #0
bl ov96_021EDDA4
cmp r0, #0
beq _021EBE20
mov r7, #0xc
b _021EC188
_021EBD58:
add r0, r6, #0
bl ov96_021EDCB4
cmp r0, #4
beq _021EBD6E
add r0, r4, #0
mov r1, #9
add r0, #0xb5
mov r7, #0xe
strb r1, [r0]
b _021EC188
_021EBD6E:
add r0, r4, #0
mov r1, #0xb
add r0, #0xb5
strb r1, [r0]
b _021EC188
_021EBD78:
add r0, r6, #0
bl ov96_021EDCB4
add r7, r0, #0
add r0, r4, #0
mov r1, #0xa
add r0, #0xb5
add r7, #0xf
strb r1, [r0]
b _021EC188
_021EBD8C:
add r0, r4, #0
bl ov96_021EC2E0
cmp r0, #0
bne _021EBE20
add r0, r6, #0
bl ov96_021ED7C4
add r1, r4, #0
add r1, #0xb4
ldrb r1, [r1]
cmp r1, r0
blo _021EBDC6
add r0, r4, #0
mov r1, #0
add r0, #0xb2
strb r1, [r0]
add r0, r4, #0
add r0, #0xb3
strb r1, [r0]
add r0, r4, #0
add r0, #0xb4
strb r1, [r0]
add r0, r4, #0
mov r1, #0xb
add r0, #0xb5
mov r7, #0x15
strb r1, [r0]
b _021EC188
_021EBDC6:
add r0, r4, #0
bl ov96_021ED750
add r2, r0, #0
ldr r1, _021EBFF8 ; =ov96_021ED6A8
add r0, r6, #0
bl ov96_021EDDA4
cmp r0, #0
beq _021EBE20
mov r7, #0x14
b _021EC188
_021EBDDE:
add r0, r4, #0
mov r1, #0xc
add r0, #0xb5
mov r7, #0x16
strb r1, [r0]
bl GF_GetCurrentPlayingBGM
mov r1, #0x10
bl StopBGM
ldr r0, _021EBFFC ; =0x000006EE
bl PlaySE
b _021EC188
_021EBDFA:
add r0, r4, #0
add r0, #0x8c
ldr r0, [r0]
bl ov96_021ECC14
cmp r0, #0
beq _021EBE20
add r1, r4, #0
add r1, #0x94
add r0, r4, #0
ldr r1, [r1]
add r0, #0x94
add r2, r1, #1
add r1, r4, #0
ldr r0, [r0]
add r1, #0x94
str r2, [r1]
cmp r0, #0x1e
bgt _021EBE22
_021EBE20:
b _021EC188
_021EBE22:
add r0, r6, #0
bl ov96_021E5EE8
cmp r0, #0
bne _021EBE30
mov r0, #3
b _021EBE32
_021EBE30:
mov r0, #4
_021EBE32:
add r1, r4, #0
mov r3, #0
add r1, #0x94
str r3, [r1]
add r1, r4, #0
add r1, #0xb4
lsl r0, r0, #0x18
ldrb r1, [r1]
lsr r0, r0, #0x18
cmp r1, r0
blo _021EBE58
add r0, r4, #0
add r0, #0xb4
strb r3, [r0]
add r0, r4, #0
mov r1, #0xd
add r0, #0xb5
strb r1, [r0]
b _021EC188
_021EBE58:
add r0, r5, #0
add r1, r1, #1
mov r2, #1
mov r7, #0x17
bl ov96_021EDF3C
mov r5, #0
_021EBE66:
add r2, r4, #0
add r2, #0xb4
ldrb r2, [r2]
lsl r1, r5, #0x18
add r0, r6, #0
lsr r1, r1, #0x18
bl ov96_021ED728
add r2, r0, #0
add r0, r4, #0
add r0, #0x8c
lsl r1, r5, #0x18
lsl r2, r2, #0x10
ldr r0, [r0]
lsr r1, r1, #0x18
lsr r2, r2, #0x10
bl ov96_021ECC38
add r5, r5, #1
cmp r5, #4
blt _021EBE66
add r0, r4, #0
add r0, #0xb4
ldrb r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0xb4
strb r1, [r0]
b _021EC188
_021EBEA0:
add r0, r6, #0
add r1, sp, #0x14
bl ov96_021ED7FC
add r0, r4, #0
add r0, #0x8c
add r1, r4, #0
ldr r0, [r0]
add r1, #0x9c
add r2, sp, #0x14
bl ov96_021ECC7C
add r0, r4, #0
add r0, #0x9c
ldr r0, [r0]
lsl r0, r0, #8
lsr r1, r0, #0x18
add r0, r4, #0
add r0, #0xa0
ldr r0, [r0]
lsl r0, r0, #8
lsr r0, r0, #0x18
cmp r1, r0
bne _021EBEDA
add r0, r4, #0
mov r1, #0xe
add r0, #0xb5
strb r1, [r0]
b _021EC188
_021EBEDA:
add r0, r4, #0
mov r1, #0xf
add r0, #0xb5
strb r1, [r0]
b _021EC188
_021EBEE4:
add r0, r4, #0
add r0, #0x9c
mov r7, #0x18
bl ov96_021EE290
add r0, r4, #0
mov r1, #0xf
add r0, #0xb5
strb r1, [r0]
b _021EC188
_021EBEF8:
add r1, r4, #0
add r1, #0x9c
ldr r1, [r1]
add r0, r4, #0
lsl r1, r1, #4
add r0, #0x8c
lsr r1, r1, #0x1c
lsl r1, r1, #0x18
ldr r0, [r0]
lsr r1, r1, #0x18
mov r7, #0x19
bl ov96_021ECC4C
add r1, r0, #0
add r0, r5, #0
mov r2, #3
mov r3, #0
bl ov96_021EDF3C
add r1, r4, #0
add r1, #0x8c
ldr r1, [r1]
add r0, r6, #0
bl ov96_021EDE64
add r0, r4, #0
mov r1, #0x10
add r0, #0xb5
strb r1, [r0]
b _021EC188
_021EBF34:
ldr r0, [r4, #4]
ldr r1, [r4]
bl ov96_021EC458
add r0, r4, #0
mov r1, #0x11
add r0, #0xb5
strb r1, [r0]
_021EBF44:
add r0, r4, #0
add r0, #0x9c
ldr r0, [r0]
mov r7, #0x1a
lsl r0, r0, #4
lsr r0, r0, #0x1c
str r0, [sp, #0xc]
ldr r1, [sp, #0xc]
add r0, r6, #0
bl ov96_021E5F34
add r2, r0, #0
add r0, r5, #0
mov r1, #0
bl BufferPlayersName
ldr r1, [sp, #0xc]
add r0, r6, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_021ECA70
add r0, r4, #0
add r0, #0x90
ldr r0, [r0]
mov r1, #1
bl ov96_021ED158
ldr r0, [r4]
ldr r2, [sp, #0xc]
str r0, [sp]
add r0, r4, #0
add r0, #0x20
add r1, r6, #0
mov r3, #2
bl ov96_021ECB38
ldr r0, [sp, #0xc]
mov r1, #1
lsl r0, r0, #2
add r0, r4, r0
ldr r0, [r0, #0x20]
bl UnkImageStruct_SetSpriteAnimSeqNo
ldr r0, _021EBFFC ; =0x000006EE
mov r1, #0
bl StopSE
ldr r0, _021EC000 ; =0x000008E2
bl PlaySE
mov r0, #0x8e
lsl r0, r0, #4
bl PlaySE
ldr r0, _021EC004 ; =0x00000476
bl PlayBGM
add r0, r4, #0
add r0, #0xb1
ldrb r0, [r0]
cmp r0, #0xa
bne _021EBFCC
add r0, r4, #0
mov r1, #0x16
add r0, #0xb5
strb r1, [r0]
b _021EC188
_021EBFCC:
add r0, r4, #0
mov r1, #0x12
add r0, #0xb5
strb r1, [r0]
b _021EC188
_021EBFD6:
add r2, r4, #0
add r2, #0xb1
ldrb r2, [r2]
mov r1, #0
mov r7, #0x1e
bl BufferPokeathlonCourseName
add r0, r4, #0
mov r1, #0x14
add r0, #0xb5
strb r1, [r0]
b _021EC188
nop
_021EBFF0: .word ov96_021ED618
_021EBFF4: .word ov96_021ED660
_021EBFF8: .word ov96_021ED6A8
_021EBFFC: .word 0x000006EE
_021EC000: .word 0x000008E2
_021EC004: .word 0x00000476
_021EC008:
add r1, r4, #0
add r1, #0x9c
ldr r1, [r1]
add r0, r6, #0
lsl r1, r1, #4
lsr r1, r1, #0x1c
mov r7, #0x1b
bl ov96_021E5F34
add r2, r0, #0
add r0, r5, #0
mov r1, #0
bl BufferPlayersName
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
add r0, r4, #0
add r0, #0xb1
ldrb r0, [r0]
mov r1, #0
bl ov96_021EDC38
add r2, r0, #0
add r0, r5, #0
mov r1, #1
bl BufferPokeathlonMedalName
add r0, r4, #0
add r0, #0xb1
ldrb r0, [r0]
cmp r0, #5
blo _021EC074
add r0, r4, #0
add r0, #0x84
ldr r0, [r0]
mov r1, #1
mov r7, #0x1c
bl UnkImageStruct_SetSpriteVisibleFlag
add r0, r4, #0
add r0, #0xb1
ldrb r0, [r0]
mov r1, #1
bl ov96_021EDC38
add r2, r0, #0
add r0, r5, #0
mov r1, #2
bl BufferPokeathlonMedalName
_021EC074:
add r0, r4, #0
mov r1, #0x13
add r0, #0xb5
strb r1, [r0]
b _021EC188
_021EC07E:
add r0, r4, #0
add r0, #0xb1
ldrb r0, [r0]
str r0, [sp, #8]
add r0, r6, #0
bl ov96_021E5EE8
cmp r0, #0
bne _021EC110
add r0, r4, #0
add r0, #0x9c
ldr r0, [r0]
lsl r0, r0, #4
lsr r0, r0, #0x1c
str r0, [sp, #4]
add r0, r6, #0
bl ov96_021E5F24
ldr r1, [sp, #4]
cmp r1, r0
bne _021EC110
add r0, r1, #0
beq _021EC0B0
bl GF_AssertFail
_021EC0B0:
add r0, r6, #0
bl ov96_021E5D60
bl Save_Pokeathlon_Get
bl sub_020319A4
add r1, r4, #0
add r1, #0x9c
ldr r1, [r1]
str r0, [sp, #0x10]
add r0, r4, #0
lsl r1, r1, #4
add r0, #0x8c
lsr r1, r1, #0x1c
lsl r1, r1, #0x18
ldr r0, [r0]
lsr r1, r1, #0x18
bl ov96_021ECC4C
ldr r2, [sp, #8]
mov r1, #0x2c
mul r1, r2
ldr r2, [sp, #0x10]
add r1, r2, r1
ldrh r1, [r1, #6]
cmp r1, r0
bhs _021EC11C
add r1, r4, #0
add r1, #0x9c
ldr r1, [r1]
add r0, r6, #0
lsl r1, r1, #4
lsr r1, r1, #0x1c
mov r7, #0x1d
bl ov96_021E5F34
add r2, r0, #0
add r0, r5, #0
mov r1, #0
bl BufferPlayersName
ldr r2, [sp, #8]
add r0, r5, #0
mov r1, #1
bl BufferPokeathlonCourseName
b _021EC11C
_021EC110:
ldr r2, [sp, #8]
add r0, r5, #0
mov r1, #0
mov r7, #0x1e
bl BufferPokeathlonCourseName
_021EC11C:
add r0, r4, #0
mov r1, #0x14
add r0, #0xb5
strb r1, [r0]
b _021EC188
_021EC126:
ldr r0, _021EC1AC ; =0x000008E2
mov r1, #0x78
mov r7, #0x1f
bl StopSE
add r0, r4, #0
mov r1, #1
add r0, #0xb8
str r1, [r0]
add r0, r4, #0
mov r1, #0x15
add r0, #0xb5
strb r1, [r0]
b _021EC188
_021EC142:
add r0, r6, #0
bl ov96_021E5EE8
cmp r0, #0
beq _021EC156
add r0, r6, #0
bl ov96_021EE580
cmp r0, #0
beq _021EC188
_021EC156:
add r0, r4, #0
bl ov96_021EC2E0
cmp r0, #0
beq _021EC170
add r0, r4, #0
add r0, #0x88
ldr r0, [r0]
bl FreeToHeap
ldr r0, [r4, #8]
bl DestroySysTask
_021EC170:
ldr r0, [r4, #0xc]
bl ov96_021EE944
add r0, r6, #0
mov r1, #2
bl ov96_021E5FC8
add sp, #0x18
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021EC184:
bl GF_AssertFail
_021EC188:
mov r0, #0
mvn r0, r0
cmp r7, r0
beq _021EC1A4
ldr r0, [r4, #0xc]
add r1, r7, #0
bl ov96_021EE8CC
add r0, r4, #0
add r0, #0xb7
ldrb r0, [r0]
add r4, #0xb7
add r0, r0, #1
strb r0, [r4]
_021EC1A4:
mov r0, #0
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_021EC1AC: .word 0x000008E2
thumb_func_end ov96_021EBB64
thumb_func_start ov96_021EC1B0
ov96_021EC1B0: ; 0x021EC1B0
push {r4, r5, lr}
sub sp, #0xc
add r5, r0, #0
add r4, r1, #0
bl ov96_021E5DC4
add r0, #0x90
ldr r0, [r0]
bl ov96_021ED0C8
ldrb r0, [r4]
cmp r0, #0
beq _021EC1D0
cmp r0, #1
beq _021EC1FC
b _021EC20A
_021EC1D0:
add r0, r5, #0
bl PokeathlonOvy_GetHeapID
mov r1, #0x1e
str r1, [sp]
mov r1, #1
str r1, [sp, #4]
str r0, [sp, #8]
mov r0, #0
ldr r3, _021EC214 ; =0x00007FFF
add r1, r0, #0
add r2, r0, #0
bl BeginNormalPaletteFade
mov r0, #0
mov r1, #0x1e
bl GF_SndStartFadeOutBGM
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021EC20E
_021EC1FC:
bl IsPaletteFadeFinished
cmp r0, #0
beq _021EC20E
add sp, #0xc
mov r0, #1
pop {r4, r5, pc}
_021EC20A:
bl GF_AssertFail
_021EC20E:
mov r0, #0
add sp, #0xc
pop {r4, r5, pc}
.balign 4, 0
_021EC214: .word 0x00007FFF
thumb_func_end ov96_021EC1B0
thumb_func_start ov96_021EC218
ov96_021EC218: ; 0x021EC218
push {r4, r5, r6, lr}
add r5, r1, #0
add r6, r0, #0
ldrh r0, [r5]
ldr r4, [r5, #8]
cmp r0, #0
beq _021EC230
cmp r0, #1
beq _021EC248
cmp r0, #2
beq _021EC25A
b _021EC290
_021EC230:
add r0, r4, #0
mov r1, #2
bl ov96_021EAC0C
add r0, r4, #0
mov r1, #0x10
bl ov96_021EAC5C
ldrh r0, [r5]
add r0, r0, #1
strh r0, [r5]
pop {r4, r5, r6, pc}
_021EC248:
ldr r1, [r5, #4]
add r0, r1, #1
str r0, [r5, #4]
cmp r1, #0x3c
ble _021EC294
ldrh r0, [r5]
add r0, r0, #1
strh r0, [r5]
pop {r4, r5, r6, pc}
_021EC25A:
add r0, r4, #0
bl ov96_021EAD78
cmp r0, #0
bne _021EC294
bl IsCryFinished
cmp r0, #0
bne _021EC294
add r0, r4, #0
mov r1, #1
bl ov96_021EAC0C
add r0, r4, #0
mov r1, #0
bl ov96_021EAC5C
ldr r0, [r5, #0xc]
mov r1, #0
str r1, [r0]
add r0, r5, #0
bl FreeToHeap
add r0, r6, #0
bl DestroySysTask
pop {r4, r5, r6, pc}
_021EC290:
bl GF_AssertFail
_021EC294:
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021EC218
thumb_func_start ov96_021EC298
ov96_021EC298: ; 0x021EC298
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5]
add r6, r1, #0
mov r1, #0x10
bl AllocFromHeapAtEnd
mov r1, #0
mov r2, #0x10
add r4, r0, #0
bl MI_CpuFill8
add r0, r5, #0
add r0, #0x88
str r4, [r0]
ldr r0, [r5, #0x14]
add r1, r6, #0
bl ov96_021EAA04
str r0, [r4, #8]
add r0, r5, #0
mov r2, #1
add r0, #0x98
str r2, [r0]
add r0, r5, #0
add r0, #0x98
str r0, [r4, #0xc]
ldr r0, _021EC2DC ; =ov96_021EC218
add r1, r4, #0
bl CreateSysTask
str r0, [r5, #8]
pop {r4, r5, r6, pc}
nop
_021EC2DC: .word ov96_021EC218
thumb_func_end ov96_021EC298
thumb_func_start ov96_021EC2E0
ov96_021EC2E0: ; 0x021EC2E0
add r0, #0x98
ldr r0, [r0]
bx lr
.balign 4, 0
thumb_func_end ov96_021EC2E0
thumb_func_start ov96_021EC2E8
ov96_021EC2E8: ; 0x021EC2E8
push {r4, r5, lr}
sub sp, #0x84
ldr r5, _021EC3C4 ; =ov96_0221AF64
add r3, sp, #0x74
add r4, r0, #0
add r2, r3, #0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl SetBothScreensModesAndDisable
ldr r5, _021EC3C8 ; =ov96_0221AFA0
add r3, sp, #0x58
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #0
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
bl BgClearTilemapBufferAndCommit
mov r1, #1
mov r2, #0
add r0, r4, #0
add r3, r1, #0
str r2, [sp]
bl BG_FillCharDataRange
ldr r5, _021EC3CC ; =ov96_0221AFF4
add r3, sp, #0x3c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #1
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
bl BgClearTilemapBufferAndCommit
mov r1, #1
mov r2, #0
add r0, r4, #0
add r3, r1, #0
str r2, [sp]
bl BG_FillCharDataRange
ldr r5, _021EC3D0 ; =ov96_0221AFBC
add r3, sp, #0x20
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #4
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
bl BgClearTilemapBufferAndCommit
ldr r5, _021EC3D4 ; =ov96_0221AFD8
add r3, sp, #4
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #5
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #5
bl BgClearTilemapBufferAndCommit
add sp, #0x84
pop {r4, r5, pc}
nop
_021EC3C4: .word ov96_0221AF64
_021EC3C8: .word ov96_0221AFA0
_021EC3CC: .word ov96_0221AFF4
_021EC3D0: .word ov96_0221AFBC
_021EC3D4: .word ov96_0221AFD8
thumb_func_end ov96_021EC2E8
thumb_func_start ov96_021EC3D8
ov96_021EC3D8: ; 0x021EC3D8
push {r3, r4, r5, lr}
sub sp, #0x10
mov r3, #0
str r3, [sp]
add r5, r0, #0
str r3, [sp, #4]
add r4, r1, #0
str r3, [sp, #8]
mov r0, #0x9a
mov r1, #3
add r2, r5, #0
str r4, [sp, #0xc]
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x9a
mov r1, #1
add r2, r5, #0
mov r3, #5
str r4, [sp, #0xc]
bl GfGfxLoader_LoadCharData
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
str r3, [sp, #8]
mov r0, #0x9a
mov r1, #6
add r2, r5, #0
str r4, [sp, #0xc]
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x9a
mov r1, #4
add r2, r5, #0
mov r3, #5
str r4, [sp, #0xc]
bl GfGfxLoader_LoadScrnData
mov r1, #0
str r1, [sp]
mov r0, #0x9a
add r2, r1, #0
add r3, r1, #0
str r4, [sp, #4]
bl GfGfxLoader_GXLoadPal
mov r1, #0
str r1, [sp]
mov r0, #0x9a
mov r2, #4
add r3, r1, #0
str r4, [sp, #4]
bl GfGfxLoader_GXLoadPal
add sp, #0x10
pop {r3, r4, r5, pc}
thumb_func_end ov96_021EC3D8
thumb_func_start ov96_021EC458
ov96_021EC458: ; 0x021EC458
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
add r4, r1, #0
str r0, [sp, #8]
mov r0, #0x9a
mov r1, #3
add r2, r5, #0
mov r3, #1
str r4, [sp, #0xc]
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x9a
mov r1, #7
add r2, r5, #0
mov r3, #1
str r4, [sp, #0xc]
bl GfGfxLoader_LoadScrnData
add sp, #0x10
pop {r3, r4, r5, pc}
thumb_func_end ov96_021EC458
thumb_func_start ov96_021EC490
ov96_021EC490: ; 0x021EC490
push {r3, r4, lr}
sub sp, #0x4c
ldr r3, _021EC510 ; =ov96_0221AF88
add r4, r0, #0
ldmia r3!, {r0, r1}
add r2, sp, #0x34
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r3, _021EC514 ; =ov96_0221B010
add r2, sp, #0x14
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r3, _021EC518 ; =ov96_0221AF74
add r2, sp, #0
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
mov r0, #0x80
str r0, [sp]
ldr r0, [r4]
bl SpriteRenderer_Create
str r0, [r4, #0x18]
bl SpriteRenderer_CreateGfxHandler
str r0, [r4, #0x1c]
ldr r0, [r4, #0x18]
add r1, sp, #0x14
add r2, sp, #0
mov r3, #0x20
bl sub_0200CF70
ldr r0, [r4, #0x18]
ldr r1, [r4, #0x1c]
mov r2, #0x80
bl sub_0200CFF4
ldr r0, [r4, #0x18]
ldr r1, [r4, #0x1c]
add r2, sp, #0x34
bl SpriteRenderer_Init2DGfxResManagersFromCountsArray
ldr r0, [r4, #0x18]
bl SpriteRenderer_GetG2dRendererPtr
mov r2, #0x83
mov r1, #0
lsl r2, r2, #0xe
bl G2dRenderer_SetSubSurfaceCoords
add sp, #0x4c
pop {r3, r4, pc}
.balign 4, 0
_021EC510: .word ov96_0221AF88
_021EC514: .word ov96_0221B010
_021EC518: .word ov96_0221AF74
thumb_func_end ov96_021EC490
thumb_func_start ov96_021EC51C
ov96_021EC51C: ; 0x021EC51C
push {r3, r4, r5, r6, r7, lr}
mov r4, #0
add r6, r0, #0
add r7, r4, #0
_021EC524:
lsl r0, r4, #2
add r5, r6, r0
ldr r0, [r5, #0x20]
cmp r0, #0
beq _021EC534
bl sub_0200D9DC
str r7, [r5, #0x20]
_021EC534:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #0x1a
blo _021EC524
ldr r0, [r6, #0x18]
ldr r1, [r6, #0x1c]
bl SpriteRenderer_UnloadResourcesAndRemoveGfxHandler
ldr r0, [r6, #0x18]
bl SpriteRenderer_Delete
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EC51C
thumb_func_start ov96_021EC550
ov96_021EC550: ; 0x021EC550
push {r4, r5, r6, r7, lr}
sub sp, #0x34
mov r4, #0
add r7, r0, #0
add r2, sp, #0
add r0, r4, #0
add r1, r4, #0
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
str r0, [r2]
mov r5, #0x20
add r6, r7, #0
_021EC570:
add r0, r4, #0
add r0, #0x64
str r0, [sp, #0x14]
str r0, [sp, #0x18]
mov r0, #0x64
str r0, [sp, #0x1c]
str r0, [sp, #0x20]
mov r0, #2
str r0, [sp, #0x10]
mov r0, #1
mov r1, #0x88
str r0, [sp, #0x2c]
str r0, [sp, #8]
add r0, sp, #0
strh r5, [r0]
strh r1, [r0, #2]
cmp r4, #4
bne _021EC59C
mov r1, #0x80
strh r1, [r0]
mov r1, #0x70
strh r1, [r0, #2]
_021EC59C:
mov r3, #0x83
ldr r0, [r7, #0x18]
ldr r1, [r7, #0x1c]
add r2, sp, #0
lsl r3, r3, #0xe
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
mov r1, #1
str r0, [r6, #0x20]
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r4, r4, #1
add r5, #0x40
add r6, r6, #4
cmp r4, #5
blt _021EC570
add sp, #0x34
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021EC550
thumb_func_start ov96_021EC5C0
ov96_021EC5C0: ; 0x021EC5C0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x40
add r5, r0, #0
mov r0, #0
add r2, sp, #0xc
add r1, r0, #0
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
str r0, [sp, #8]
str r0, [r2]
mov r0, #5
str r0, [sp, #4]
mov r0, #0x20
str r0, [sp]
_021EC5E4:
mov r0, #0x69
str r0, [sp, #0x20]
str r0, [sp, #0x24]
mov r0, #0x65
mov r1, #2
str r0, [sp, #0x28]
str r0, [sp, #0x2c]
mov r0, #1
str r0, [sp, #0x38]
ldr r0, [sp]
str r1, [sp, #0x1c]
str r1, [sp, #0x14]
add r1, sp, #0xc
strh r0, [r1]
mov r0, #0x48
strh r0, [r1, #2]
mov r0, #0
strh r0, [r1, #6]
ldr r0, [sp, #8]
mov r3, #0x83
add r0, r0, #1
str r0, [sp, #0x18]
ldr r0, [sp, #4]
ldr r1, [r5, #0x1c]
lsl r0, r0, #2
add r4, r5, r0
ldr r0, [r5, #0x18]
add r2, sp, #0xc
lsl r3, r3, #0xe
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
mov r1, #1
str r0, [r4, #0x20]
bl UnkImageStruct_SetSpriteAnimActiveFlag
mov r2, #1
mov r4, #0
str r4, [sp, #0x18]
str r2, [sp, #0x38]
str r2, [sp, #0x14]
add r0, sp, #0xc
ldrsh r1, [r0, r4]
sub r1, #0x10
strh r1, [r0]
strh r2, [r0, #6]
ldr r0, [sp, #4]
add r7, r0, #1
_021EC642:
add r0, r7, r4
lsl r0, r0, #2
add r6, r5, r0
mov r3, #0x83
ldr r0, [r5, #0x18]
ldr r1, [r5, #0x1c]
add r2, sp, #0xc
lsl r3, r3, #0xe
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
mov r1, #1
str r0, [r6, #0x20]
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r1, sp, #0xc
mov r0, #0
ldrsh r1, [r1, r0]
add r0, sp, #0xc
add r4, r4, #1
add r1, #0x10
strh r1, [r0]
cmp r4, #3
blt _021EC642
ldr r0, [sp, #4]
add r0, r0, #4
str r0, [sp, #4]
ldr r0, [sp]
add r0, #0x40
str r0, [sp]
ldr r0, [sp, #8]
add r0, r0, #1
str r0, [sp, #8]
cmp r0, #4
blt _021EC5E4
add sp, #0x40
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EC5C0
thumb_func_start ov96_021EC68C
ov96_021EC68C: ; 0x021EC68C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
mov r4, #0
add r7, r0, #0
add r2, sp, #4
add r0, r4, #0
add r1, r4, #0
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
str r0, [r2]
mov r0, #2
mov r5, #0x30
str r0, [sp]
_021EC6AE:
add r0, r4, #0
add r0, #0x6d
str r0, [sp, #0x18]
mov r0, #0x6a
str r0, [sp, #0x1c]
mov r0, #0x68
str r0, [sp, #0x20]
str r0, [sp, #0x24]
mov r0, #1
str r0, [sp, #0x14]
add r0, sp, #4
strh r5, [r0]
mov r1, #0x70
strh r1, [r0, #2]
mov r0, #0
str r0, [sp, #0x30]
mov r0, #1
str r0, [sp, #0xc]
add r0, r4, #0
add r0, #0x15
lsl r0, r0, #2
add r6, r7, r0
mov r3, #0x83
ldr r0, [r7, #0x18]
ldr r1, [r7, #0x1c]
add r2, sp, #4
lsl r3, r3, #0xe
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
ldr r1, [sp]
str r0, [r6, #0x20]
bl UnkImageStruct_SetSpritePalIndex
ldr r0, [r6, #0x20]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [sp]
add r4, r4, #1
add r0, r0, #3
add r5, #0x50
str r0, [sp]
cmp r4, #3
blt _021EC6AE
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EC68C
thumb_func_start ov96_021EC70C
ov96_021EC70C: ; 0x021EC70C
push {r4, r5, r6, r7, lr}
sub sp, #0x34
mov r7, #0
add r5, r0, #0
add r2, sp, #0
add r0, r7, #0
add r1, r7, #0
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
str r0, [r2]
mov r4, #0x60
_021EC72A:
add r1, r7, #0
add r1, #0x6b
str r1, [sp, #0x14]
str r1, [sp, #0x18]
mov r1, #0x67
str r1, [sp, #0x1c]
str r1, [sp, #0x20]
mov r1, #1
str r1, [sp, #0x10]
mov r1, #0
str r1, [sp, #0x2c]
mov r1, #2
str r1, [sp, #8]
add r1, sp, #0
add r0, r7, #0
strh r4, [r1]
mov r2, #0x38
strh r2, [r1, #2]
add r1, r5, #0
add r1, #0xb1
ldrb r1, [r1]
add r0, #0x18
cmp r1, #5
bhs _021EC760
mov r2, #0x80
add r1, sp, #0
strh r2, [r1]
_021EC760:
lsl r0, r0, #2
add r6, r5, r0
mov r3, #0x83
ldr r0, [r5, #0x18]
ldr r1, [r5, #0x1c]
add r2, sp, #0
lsl r3, r3, #0xe
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
str r0, [r6, #0x20]
mov r1, #1
bl UnkImageStruct_SetSpriteAnimActiveFlag
ldr r0, [r6, #0x20]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
add r7, r7, #1
add r4, #0x40
cmp r7, #2
blt _021EC72A
add sp, #0x34
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EC70C
thumb_func_start ov96_021EC790
ov96_021EC790: ; 0x021EC790
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x40
str r0, [sp, #0xc]
str r1, [sp, #0x10]
bl ov96_021E5DC4
add r4, r0, #0
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x10]
bl ov96_021E5D50
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x10]
bl ov96_021E5D40
mov r0, #0
str r0, [sp, #0x14]
add r6, r4, #0
mov r5, #1
add r7, sp, #0x1c
_021EC7B8:
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x10]
ldr r2, [sp, #0x14]
add r3, sp, #0x30
bl ov96_021E6168
ldr r0, [r4]
add r1, sp, #0x30
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
ldr r0, [r6, #0x74]
mov r2, #1
mov r3, #0
bl ov96_021EEBF8
ldrb r0, [r7, #0x1a]
mov r3, #2
str r0, [sp]
ldrh r0, [r7, #0x16]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
ldr r0, [sp, #0x3c]
str r0, [sp, #8]
ldrh r1, [r7, #0x14]
ldrb r2, [r7, #0x1b]
add r0, sp, #0x20
bl GetMonSpriteCharAndPlttNarcIdsEx
ldrh r0, [r7, #4]
ldrh r1, [r7, #8]
ldr r3, [r4]
add r2, sp, #0x1c
bl GfGfxLoader_GetPlttData
ldr r3, [sp, #0x1c]
str r0, [sp, #0x18]
lsl r1, r5, #0x18
ldr r0, [r4, #0x14]
ldr r3, [r3, #0xc]
lsr r1, r1, #0x18
mov r2, #1
bl ov96_021EAF60
ldr r0, [sp, #0x18]
bl FreeToHeap
ldr r0, [sp, #0x14]
add r6, r6, #4
add r0, r0, #1
add r5, r5, #3
str r0, [sp, #0x14]
cmp r0, #3
blt _021EC7B8
add sp, #0x40
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EC790
thumb_func_start ov96_021EC82C
ov96_021EC82C: ; 0x021EC82C
push {r4, r5, r6, r7, lr}
sub sp, #0x14
bl ov96_021E5DC4
ldr r6, [r0, #0x18]
ldr r4, [r0, #0x1c]
str r0, [sp, #0x10]
mov r7, #0
_021EC83C:
mov r0, #1
add r5, r7, #0
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
add r5, #0x64
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
mov r3, #9
str r5, [sp, #8]
bl SpriteRenderer_LoadCharResObjFromNarcId
mov r0, #0
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
mov r3, #8
str r5, [sp, #0xc]
bl SpriteRenderer_LoadPlttResObjFromNarcId
add r0, r7, #1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
cmp r7, #5
blo _021EC83C
mov r0, #1
str r0, [sp]
mov r0, #0x64
str r0, [sp, #4]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
mov r3, #0xa
bl SpriteRenderer_LoadCellResObjFromNarcId
mov r0, #1
str r0, [sp]
mov r0, #0x64
str r0, [sp, #4]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
mov r3, #0xb
bl SpriteRenderer_LoadAnimResObjFromNarcId
mov r0, #1
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
mov r0, #0x69
str r0, [sp, #8]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
mov r3, #0xd
bl SpriteRenderer_LoadCharResObjFromNarcId
mov r0, #0
str r0, [sp]
mov r0, #5
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0x69
str r0, [sp, #0xc]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
mov r3, #0xc
bl SpriteRenderer_LoadPlttResObjFromNarcId
mov r0, #1
str r0, [sp]
mov r0, #0x65
str r0, [sp, #4]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
mov r3, #0xe
bl SpriteRenderer_LoadCellResObjFromNarcId
mov r0, #1
str r0, [sp]
mov r0, #0x65
str r0, [sp, #4]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
mov r3, #0xf
bl SpriteRenderer_LoadAnimResObjFromNarcId
ldr r0, [sp, #0x10]
bl ov96_021ECA18
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
mov r0, #0x6a
str r0, [sp, #8]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
mov r3, #0x10
bl SpriteRenderer_LoadCharResObjFromNarcId
mov r0, #0
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x6a
str r0, [sp, #0xc]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
mov r3, #0xc
bl SpriteRenderer_LoadPlttResObjFromNarcId
mov r0, #1
str r0, [sp]
mov r0, #0x66
str r0, [sp, #4]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
mov r3, #0x11
bl SpriteRenderer_LoadCellResObjFromNarcId
mov r0, #1
str r0, [sp]
mov r0, #0x66
str r0, [sp, #4]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
mov r3, #0x12
bl SpriteRenderer_LoadAnimResObjFromNarcId
ldr r0, [sp, #0x10]
mov r1, #0
add r0, #0xb1
ldrb r5, [r0]
str r0, [sp, #0x10]
add r0, r5, #0
bl ov96_021EDC38
add r3, r0, #0
mov r0, #0
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x6b
str r0, [sp, #0xc]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
add r3, #0x17
bl SpriteRenderer_LoadPlttResObjFromNarcId
add r0, r5, #0
mov r1, #1
bl ov96_021EDC38
add r3, r0, #0
mov r0, #0
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x6c
str r0, [sp, #0xc]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
add r3, #0x17
bl SpriteRenderer_LoadPlttResObjFromNarcId
add r0, r5, #0
mov r1, #0
bl ov96_021EDC38
add r3, r0, #0
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
mov r0, #0x6b
str r0, [sp, #8]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
add r3, #0x1c
bl SpriteRenderer_LoadCharResObjFromNarcId
add r0, r5, #0
mov r1, #1
bl ov96_021EDC38
add r3, r0, #0
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
mov r0, #0x6c
str r0, [sp, #8]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
add r3, #0x1c
bl SpriteRenderer_LoadCharResObjFromNarcId
mov r0, #1
str r0, [sp]
mov r0, #0x67
str r0, [sp, #4]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
mov r3, #0x21
bl SpriteRenderer_LoadCellResObjFromNarcId
mov r0, #1
str r0, [sp]
mov r0, #0x67
str r0, [sp, #4]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9a
mov r3, #0x22
bl SpriteRenderer_LoadAnimResObjFromNarcId
add sp, #0x14
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021EC82C
thumb_func_start ov96_021ECA18
ov96_021ECA18: ; 0x021ECA18
push {r4, r5, r6, r7, lr}
sub sp, #0xc
ldr r6, [r0, #0x18]
ldr r5, [r0, #0x1c]
mov r7, #1
mov r4, #0
_021ECA24:
mov r0, #1
str r0, [sp]
add r0, r4, #0
str r7, [sp, #4]
add r0, #0x6d
str r0, [sp, #8]
add r0, r6, #0
add r1, r5, #0
mov r2, #0x9a
mov r3, #0x14
bl SpriteRenderer_LoadCharResObjFromNarcId
add r4, r4, #1
cmp r4, #3
blt _021ECA24
mov r0, #1
str r0, [sp]
mov r0, #0x68
str r0, [sp, #4]
add r0, r6, #0
add r1, r5, #0
mov r2, #0x9a
mov r3, #0x15
bl SpriteRenderer_LoadCellResObjFromNarcId
mov r0, #1
str r0, [sp]
mov r0, #0x68
str r0, [sp, #4]
add r0, r6, #0
add r1, r5, #0
mov r2, #0x9a
mov r3, #0x16
bl SpriteRenderer_LoadAnimResObjFromNarcId
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021ECA18
thumb_func_start ov96_021ECA70
ov96_021ECA70: ; 0x021ECA70
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
str r0, [sp]
str r1, [sp, #4]
bl ov96_021E5DC4
add r6, r0, #0
mov r7, #0
mov r4, #1
mov r5, #2
_021ECA84:
lsl r1, r4, #0x18
ldr r0, [r6, #0x14]
lsr r1, r1, #0x18
bl ov96_021EAA04
str r0, [sp, #8]
lsl r1, r5, #0x18
ldr r0, [r6, #0x14]
lsr r1, r1, #0x18
bl ov96_021EAA04
str r0, [sp, #0xc]
ldr r0, [sp, #8]
mov r1, #0
bl ov96_021EAB38
ldr r0, [sp, #0xc]
mov r1, #0
bl ov96_021EAB38
add r7, r7, #1
add r4, r4, #3
add r5, r5, #3
cmp r7, #4
blt _021ECA84
ldr r0, [sp]
ldr r1, [sp, #4]
bl ov96_021EC790
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021ECA70
thumb_func_start ov96_021ECAC4
ov96_021ECAC4: ; 0x021ECAC4
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
bl ov96_021E5DC4
add r7, r0, #0
str r0, [sp]
add r0, #0x20
mov r4, #0
add r5, r7, #0
str r0, [sp]
_021ECAD8:
add r0, r6, #0
bl ov96_021E5D34
cmp r4, #4
bne _021ECAF6
mov r0, #2
bl ov96_021EEBC8
add r1, r0, #0
ldr r0, [r5, #0x20]
ldr r3, [r7]
mov r2, #0xb
bl ov96_021EEA88
b _021ECB2C
_021ECAF6:
cmp r4, r0
bge _021ECB0A
lsl r2, r4, #0x18
ldr r0, [sp]
add r1, r6, #0
lsr r2, r2, #0x18
mov r3, #0
bl ov96_021EEB74
b _021ECB2C
_021ECB0A:
add r0, r6, #0
add r1, r4, #0
bl ov96_021E5D40
ldr r0, [r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl ov96_021E8424
bl ov96_021EEDCC
add r1, r0, #0
ldr r0, [r5, #0x20]
ldr r3, [r7]
mov r2, #0
bl ov96_021EEA88
_021ECB2C:
add r4, r4, #1
add r5, r5, #4
cmp r4, #5
blt _021ECAD8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021ECAC4
thumb_func_start ov96_021ECB38
ov96_021ECB38: ; 0x021ECB38
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r2, #0
str r0, [sp]
str r1, [sp, #4]
add r0, r1, #0
add r1, r5, #0
add r7, r3, #0
bl ov96_021E5D40
ldr r0, [r0]
cmp r0, #0
ble _021ECB56
mov r6, #1
b _021ECB58
_021ECB56:
mov r6, #0
_021ECB58:
cmp r7, #1
beq _021ECB62
cmp r7, #2
beq _021ECB66
b _021ECB72
_021ECB62:
mov r4, #0
b _021ECB76
_021ECB66:
cmp r6, #0
beq _021ECB6E
mov r4, #0xb
b _021ECB76
_021ECB6E:
mov r4, #0x1b
b _021ECB76
_021ECB72:
bl GF_AssertFail
_021ECB76:
cmp r6, #0
beq _021ECBA6
ldr r0, [sp, #4]
add r1, r5, #0
bl ov96_021E5D40
ldr r0, [r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl ov96_021E8424
bl ov96_021EEDCC
add r1, r0, #0
ldr r0, [sp]
lsl r2, r5, #2
ldr r0, [r0, r2]
lsl r2, r4, #0x18
ldr r3, [sp, #0x20]
lsr r2, r2, #0x18
bl ov96_021EEA88
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
_021ECBA6:
lsl r2, r5, #0x18
ldr r0, [sp]
ldr r1, [sp, #4]
lsr r2, r2, #0x18
add r3, r4, #0
bl ov96_021EEB74
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021ECB38
thumb_func_start ov96_021ECBB8
ov96_021ECBB8: ; 0x021ECBB8
push {r3, r4, r5, r6, r7, lr}
add r7, r1, #0
mov r1, #0x70
bl AllocFromHeap
mov r1, #0
mov r2, #0x70
str r0, [sp]
bl MI_CpuFill8
ldr r3, [sp]
mov r1, #0
mov r4, #5
_021ECBD2:
lsl r0, r4, #2
mov r2, #0
add r5, r7, r0
add r6, r3, #0
_021ECBDA:
ldr r0, [r5]
add r2, r2, #1
add r5, r5, #4
stmia r6!, {r0}
cmp r2, #4
blt _021ECBDA
add r1, r1, #1
add r3, #0x1c
add r4, r4, #4
cmp r1, #4
blt _021ECBD2
ldr r0, [sp]
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021ECBB8
thumb_func_start ov96_021ECBF4
ov96_021ECBF4: ; 0x021ECBF4
ldr r3, _021ECBF8 ; =FreeToHeap
bx r3
.balign 4, 0
_021ECBF8: .word FreeToHeap
thumb_func_end ov96_021ECBF4
thumb_func_start ov96_021ECBFC
ov96_021ECBFC: ; 0x021ECBFC
push {r3, r4, r5, lr}
add r5, r0, #0
mov r4, #0
_021ECC02:
add r0, r5, #0
bl ov96_021ECD24
add r4, r4, #1
add r5, #0x1c
cmp r4, #4
blt _021ECC02
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021ECBFC
thumb_func_start ov96_021ECC14
ov96_021ECC14: ; 0x021ECC14
push {r3, r4, r5, r6, r7, lr}
mov r4, #0
add r5, r0, #0
mov r6, #1
add r7, r4, #0
_021ECC1E:
add r0, r5, #0
bl ov96_021ECDC4
cmp r0, #0
bne _021ECC2A
add r6, r7, #0
_021ECC2A:
add r4, r4, #1
add r5, #0x1c
cmp r4, #4
blt _021ECC1E
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021ECC14
thumb_func_start ov96_021ECC38
ov96_021ECC38: ; 0x021ECC38
push {r3, lr}
cmp r2, #0
beq _021ECC4A
mov r3, #0x1c
mul r3, r1
add r0, r0, r3
add r1, r2, #0
bl ov96_021ECDD4
_021ECC4A:
pop {r3, pc}
thumb_func_end ov96_021ECC38
thumb_func_start ov96_021ECC4C
ov96_021ECC4C: ; 0x021ECC4C
mov r2, #0x1c
mul r2, r1
add r0, r0, r2
ldr r0, [r0, #0x10]
bx lr
.balign 4, 0
thumb_func_end ov96_021ECC4C
thumb_func_start ov96_021ECC58
ov96_021ECC58: ; 0x021ECC58
ldr r1, [r1]
ldr r0, [r0]
lsl r1, r1, #0x10
lsl r0, r0, #0x10
lsr r1, r1, #0x10
lsr r0, r0, #0x10
cmp r0, r1
bne _021ECC6C
mov r0, #0
bx lr
_021ECC6C:
cmp r0, r1
bhs _021ECC74
mov r0, #1
bx lr
_021ECC74:
mov r0, #0
mvn r0, r0
bx lr
.balign 4, 0
thumb_func_end ov96_021ECC58
thumb_func_start ov96_021ECC7C
ov96_021ECC7C: ; 0x021ECC7C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r7, r1, #0
mov r6, #0
str r0, [sp, #4]
str r2, [sp, #8]
add r4, r6, #0
add r5, r7, #0
_021ECC8C:
ldr r1, [r5]
ldr r0, _021ECD10 ; =0xF0FFFFFF
and r1, r0
lsl r0, r4, #0x1c
lsr r0, r0, #4
orr r0, r1
str r0, [r5]
lsl r1, r4, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
bl ov96_021ECC4C
lsl r0, r0, #0x10
ldr r2, [r5]
ldr r1, _021ECD14 ; =0xFFFF0000
lsr r0, r0, #0x10
and r1, r2
orr r1, r0
ldr r0, _021ECD18 ; =0x0FFFFFFF
str r1, [r5]
and r0, r1
ldr r1, [sp, #8]
ldrb r1, [r1, r4]
add r4, r4, #1
lsl r1, r1, #0x1c
orr r0, r1
stmia r5!, {r0}
cmp r4, #4
blt _021ECC8C
mov r0, #0
mov r1, #4
str r0, [sp]
ldr r3, _021ECD1C ; =ov96_021ECC58
add r0, r7, #0
add r2, r1, #0
bl MATH_QSort
ldr r3, _021ECD20 ; =0xFF00FFFF
mov r2, #0
add r1, r7, #0
_021ECCDC:
ldr r0, [r1]
add r4, r0, #0
lsl r0, r6, #0x18
and r4, r3
lsr r0, r0, #8
orr r0, r4
str r0, [r1]
cmp r2, #3
beq _021ECD04
add r5, r2, #1
lsl r4, r5, #2
ldr r0, [r1]
ldr r4, [r7, r4]
lsl r0, r0, #0x10
lsl r4, r4, #0x10
lsr r0, r0, #0x10
lsr r4, r4, #0x10
cmp r0, r4
beq _021ECD04
add r6, r5, #0
_021ECD04:
add r2, r2, #1
add r1, r1, #4
cmp r2, #4
blt _021ECCDC
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021ECD10: .word 0xF0FFFFFF
_021ECD14: .word 0xFFFF0000
_021ECD18: .word 0x0FFFFFFF
_021ECD1C: .word ov96_021ECC58
_021ECD20: .word 0xFF00FFFF
thumb_func_end ov96_021ECC7C
thumb_func_start ov96_021ECD24
ov96_021ECD24: ; 0x021ECD24
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
ldr r0, [r6, #0x18]
cmp r0, #0
beq _021ECDBA
ldr r0, [r6, #0x14]
add r1, r0, #1
ldr r0, _021ECDBC ; =0x000003E7
cmp r1, r0
bls _021ECD3A
add r1, r0, #0
_021ECD3A:
ldr r0, _021ECDC0 ; =0x000008E3
str r1, [r6, #0x14]
bl IsSEPlaying
cmp r0, #0
bne _021ECD4C
ldr r0, _021ECDC0 ; =0x000008E3
bl PlaySE
_021ECD4C:
ldr r0, [r6, #0x14]
mov r1, #3
bl ov98_0221F120
lsl r0, r0, #0x10
lsr r7, r0, #0x10
ldr r0, [r6, #0x14]
mov r1, #2
bl ov98_0221F120
lsl r0, r0, #0x10
lsr r5, r0, #0x10
ldr r0, [r6, #0x14]
mov r1, #1
bl ov98_0221F120
lsl r0, r0, #0x10
lsr r4, r0, #0x10
ldr r0, [r6, #4]
add r1, r7, #1
bl UnkImageStruct_SetSpriteAnimSeqNo
ldr r0, [r6, #8]
add r1, r5, #1
bl UnkImageStruct_SetSpriteAnimSeqNo
ldr r0, [r6, #0xc]
add r1, r4, #1
bl UnkImageStruct_SetSpriteAnimSeqNo
ldr r0, [r6, #0x14]
mov r1, #0x14
bl _u32_div_f
cmp r1, #0
bne _021ECDAE
mov r4, #0
add r5, r6, #0
add r7, r4, #0
_021ECD9A:
mov r2, #0
ldr r0, [r5]
add r1, r7, #0
mvn r2, r2
bl UnkImageStruct_AddSpritePositionXY
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
blt _021ECD9A
_021ECDAE:
ldr r1, [r6, #0x14]
ldr r0, [r6, #0x10]
cmp r1, r0
blo _021ECDBA
mov r0, #0
str r0, [r6, #0x18]
_021ECDBA:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021ECDBC: .word 0x000003E7
_021ECDC0: .word 0x000008E3
thumb_func_end ov96_021ECD24
thumb_func_start ov96_021ECDC4
ov96_021ECDC4: ; 0x021ECDC4
ldr r0, [r0, #0x18]
cmp r0, #0
bne _021ECDCE
mov r0, #1
bx lr
_021ECDCE:
mov r0, #0
bx lr
.balign 4, 0
thumb_func_end ov96_021ECDC4
thumb_func_start ov96_021ECDD4
ov96_021ECDD4: ; 0x021ECDD4
ldr r2, [r0, #0x10]
add r2, r2, r1
ldr r1, _021ECDE8 ; =0x000003E7
cmp r2, r1
bls _021ECDE0
add r2, r1, #0
_021ECDE0:
str r2, [r0, #0x10]
mov r1, #1
str r1, [r0, #0x18]
bx lr
.balign 4, 0
_021ECDE8: .word 0x000003E7
thumb_func_end ov96_021ECDD4
thumb_func_start ov96_021ECDEC
ov96_021ECDEC: ; 0x021ECDEC
push {r4, r5, r6, r7, lr}
sub sp, #0x34
add r5, r0, #0
add r4, r1, #0
add r7, r2, #0
cmp r5, #0
bne _021ECDFE
bl GF_AssertFail
_021ECDFE:
add r0, r5, #0
mov r1, #0
mov r2, #0x18
bl MI_CpuFill8
bl MTRandom
mov r1, #5
bl _u32_div_f
cmp r1, #0
beq _021ECE32
bl MTRandom
mov r1, #5
bl _u32_div_f
lsl r0, r1, #0xc
bl _ffltu
add r1, r0, #0
mov r0, #0x3f
lsl r0, r0, #0x18
bl _fadd
b _021ECE4A
_021ECE32:
bl MTRandom
mov r1, #5
bl _u32_div_f
lsl r0, r1, #0xc
bl _ffltu
mov r1, #0x3f
lsl r1, r1, #0x18
bl _fsub
_021ECE4A:
bl _ffix
asr r1, r0, #1
mov r0, #6
lsl r0, r0, #0xa
add r0, r1, r0
str r0, [r5, #8]
bl MTRandom
mov r1, #1
tst r0, r1
beq _021ECE7A
bl MTRandom
lsl r0, r0, #0x1f
lsr r0, r0, #0x13
bl _ffltu
add r1, r0, #0
mov r0, #0x3f
lsl r0, r0, #0x18
bl _fadd
b _021ECE8E
_021ECE7A:
bl MTRandom
lsl r0, r0, #0x1f
lsr r0, r0, #0x13
bl _ffltu
mov r1, #0x3f
lsl r1, r1, #0x18
bl _fsub
_021ECE8E:
bl _ffix
ldr r1, _021ECF3C ; =0x0000019A
add r0, r0, r1
asr r0, r0, #1
str r0, [r5, #4]
bl MTRandom
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _021ECEBC
bl MTRandom
lsl r0, r0, #0x18
lsr r0, r0, #0xc
bl _ffltu
add r1, r0, #0
mov r0, #0x3f
lsl r0, r0, #0x18
bl _fadd
b _021ECED0
_021ECEBC:
bl MTRandom
lsl r0, r0, #0x18
lsr r0, r0, #0xc
bl _ffltu
mov r1, #0x3f
lsl r1, r1, #0x18
bl _fsub
_021ECED0:
bl _ffix
str r0, [r5, #0xc]
bl MTRandom
mov r1, #5
bl _u32_div_f
add r1, r1, #1
lsl r1, r1, #0x1c
ldr r2, [r5, #0x14]
ldr r0, _021ECF40 ; =0xFFF0FFFF
lsr r1, r1, #0xc
and r0, r2
orr r1, r0
mov r0, #1
lsl r0, r0, #0x14
orr r0, r1
ldr r6, _021ECF44 ; =ov96_0221B0BC
str r0, [r5, #0x14]
add r3, sp, #0
mov r2, #6
_021ECEFC:
ldmia r6!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _021ECEFC
ldr r0, [r6]
str r0, [r3]
ldr r0, [r5, #0xc]
asr r1, r0, #0xc
add r0, sp, #0
strh r1, [r0]
bl MTRandom
mov r1, #1
tst r0, r1
bne _021ECF20
mov r1, #0xc
add r0, sp, #0
strh r1, [r0, #6]
_021ECF20:
mov r3, #0x83
add r0, r4, #0
add r1, r7, #0
add r2, sp, #0
lsl r3, r3, #0xe
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
mov r1, #1
str r0, [r5]
bl UnkImageStruct_SetSpriteAnimActiveFlag
add sp, #0x34
pop {r4, r5, r6, r7, pc}
nop
_021ECF3C: .word 0x0000019A
_021ECF40: .word 0xFFF0FFFF
_021ECF44: .word ov96_0221B0BC
thumb_func_end ov96_021ECDEC
thumb_func_start ov96_021ECF48
ov96_021ECF48: ; 0x021ECF48
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r4, _021ECFEC ; =0x00000000
bne _021ECF54
bl GF_AssertFail
_021ECF54:
ldr r0, [r5, #0x14]
ldr r6, [r5, #4]
lsl r1, r0, #0x10
lsl r0, r0, #0xc
lsr r1, r1, #0x10
lsr r0, r0, #0x1c
mul r0, r1
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl GF_SinDeg
asr r1, r0, #0x1f
asr r3, r6, #0x1f
add r2, r6, #0
bl _ll_mul
mov r3, #2
mov r6, #0
lsl r3, r3, #0xa
add r3, r0, r3
adc r1, r6
lsl r0, r1, #0x14
lsr r1, r3, #0xc
mov r3, #0x83
ldr r2, [r5, #0xc]
orr r1, r0
add r0, r2, r1
str r0, [r5, #0xc]
ldr r1, [r5, #0x10]
ldr r0, [r5, #8]
lsl r3, r3, #0xe
add r2, r1, r0
str r2, [r5, #0x10]
ldr r0, [r5]
ldr r1, [r5, #0xc]
bl UnkImageStruct_SetSpritePrecisePositionXY
ldr r0, [r5, #0x10]
asr r0, r0, #0xc
cmp r0, #0xe0
ble _021ECFCA
ldr r1, [r5, #0x14]
lsl r0, r1, #0xa
lsr r0, r0, #0x1f
beq _021ECFC0
ldr r0, _021ECFF0 ; =0xFFEFFFFF
and r0, r1
str r0, [r5, #0x14]
ldr r0, [r5]
bl sub_0200D9DC
add r0, r6, #0
str r0, [r5]
b _021ECFCA
_021ECFC0:
mov r0, #2
lsl r0, r0, #0x14
orr r0, r1
str r0, [r5, #0x14]
mov r4, #1
_021ECFCA:
bl MTRandom
ldr r2, [r5, #0x14]
ldr r1, _021ECFF4 ; =0xFFFF0000
and r1, r2
lsl r2, r2, #0x10
lsr r3, r2, #0x10
mov r2, #1
and r0, r2
add r0, r3, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
orr r0, r1
str r0, [r5, #0x14]
add r0, r4, #0
pop {r4, r5, r6, pc}
nop
_021ECFEC: .word 0x00000000
_021ECFF0: .word 0xFFEFFFFF
_021ECFF4: .word 0xFFFF0000
thumb_func_end ov96_021ECF48
thumb_func_start ov96_021ECFF8
ov96_021ECFF8: ; 0x021ECFF8
push {r4, r5, r6, r7, lr}
sub sp, #0x34
ldr r6, _021ED050 ; =ov96_0221B0F0
add r7, r2, #0
add r5, r0, #0
add r4, r1, #0
add r3, sp, #0
mov r2, #6
_021ED008:
ldmia r6!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _021ED008
ldr r0, [r6]
str r0, [r3]
mov r0, #0
str r0, [r5, #0x10]
ldr r0, [r5]
bl UnkImageStruct_GetSpriteCurrentAnimSeqNo
sub r0, #0xb
add r1, sp, #0
strh r0, [r1, #6]
ldr r0, [r5, #0xc]
asr r0, r0, #0xc
strh r0, [r1]
ldr r0, [r5, #0x10]
asr r0, r0, #0xc
strh r0, [r1, #2]
ldr r0, [r5]
bl sub_0200D9DC
mov r3, #0x83
add r0, r4, #0
add r1, r7, #0
add r2, sp, #0
lsl r3, r3, #0xe
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
mov r1, #1
str r0, [r5]
bl UnkImageStruct_SetSpriteAnimActiveFlag
add sp, #0x34
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021ED050: .word ov96_0221B0F0
thumb_func_end ov96_021ECFF8
thumb_func_start ov96_021ED054
ov96_021ED054: ; 0x021ED054
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
add r7, r0, #0
add r6, r2, #0
cmp r5, #0
bne _021ED064
bl GF_AssertFail
_021ED064:
cmp r6, #0
bne _021ED06C
bl GF_AssertFail
_021ED06C:
mov r1, #6
add r0, r7, #0
lsl r1, r1, #6
bl AllocFromHeap
mov r2, #6
mov r1, #0
lsl r2, r2, #6
add r4, r0, #0
bl MI_CpuFill8
mov r0, #0x5b
str r7, [r4]
lsl r0, r0, #2
str r5, [r4, r0]
add r0, r0, #4
str r6, [r4, r0]
bl ov96_021ED6E8
mov r1, #0x5e
lsl r1, r1, #2
str r0, [r4, r1]
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021ED054
thumb_func_start ov96_021ED09C
ov96_021ED09C: ; 0x021ED09C
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
bne _021ED0A6
bl GF_AssertFail
_021ED0A6:
mov r4, #0
add r5, r7, #0
add r6, r4, #0
_021ED0AC:
ldr r0, [r5, #4]
cmp r0, #0
beq _021ED0B8
bl sub_0200D9DC
str r6, [r5, #4]
_021ED0B8:
add r4, r4, #1
add r5, #0x18
cmp r4, #0xf
blt _021ED0AC
add r0, r7, #0
bl FreeToHeap
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021ED09C
thumb_func_start ov96_021ED0C8
ov96_021ED0C8: ; 0x021ED0C8
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
bne _021ED0D2
bl GF_AssertFail
_021ED0D2:
mov r2, #0x5f
lsl r2, r2, #2
ldr r0, [r5, r2]
cmp r0, #0
beq _021ED11E
add r1, r2, #0
sub r1, #8
add r0, r2, #0
ldr r1, [r5, r1]
sub r0, #8
add r3, r1, #1
add r1, r2, #0
ldr r0, [r5, r0]
sub r1, #8
str r3, [r5, r1]
sub r1, r2, #4
ldr r1, [r5, r1]
cmp r0, r1
bls _021ED11E
bl MTRandom
add r2, r0, #0
mov r1, #1
and r1, r2
add r1, r1, #2
lsl r1, r1, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
bl ov96_021ED17C
bl ov96_021ED6E8
mov r1, #0x5e
lsl r1, r1, #2
str r0, [r5, r1]
mov r2, #0
sub r0, r1, #4
str r2, [r5, r0]
_021ED11E:
add r6, r5, #0
mov r7, #0
add r6, #0x18
add r4, r5, #4
_021ED126:
ldr r0, [r6]
lsl r0, r0, #0xb
lsr r0, r0, #0x1f
cmp r0, #1
bne _021ED14C
add r0, r4, #0
bl ov96_021ECF48
cmp r0, #0
beq _021ED14C
mov r1, #0x5b
mov r2, #0x17
lsl r1, r1, #2
lsl r2, r2, #4
ldr r1, [r5, r1]
ldr r2, [r5, r2]
add r0, r4, #0
bl ov96_021ECFF8
_021ED14C:
add r7, r7, #1
add r6, #0x18
add r4, #0x18
cmp r7, #0xf
blt _021ED126
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021ED0C8
thumb_func_start ov96_021ED158
ov96_021ED158: ; 0x021ED158
push {r3, lr}
sub sp, #8
mov r2, #0x5f
lsl r2, r2, #2
str r1, [r0, r2]
mov r1, #0x20
str r1, [sp]
ldr r0, [r0]
mov r1, #0xc
str r0, [sp, #4]
mov r0, #0x9a
add r3, r0, #0
mov r2, #1
add r3, #0xc6
bl GfGfxLoader_GXLoadPal
add sp, #8
pop {r3, pc}
thumb_func_end ov96_021ED158
thumb_func_start ov96_021ED17C
ov96_021ED17C: ; 0x021ED17C
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r6, r0, #0
str r1, [sp]
ldr r7, _021ED1CC ; =0x00000000
bne _021ED18C
bl GF_AssertFail
_021ED18C:
mov r0, #0
add r4, r6, #0
str r0, [sp, #4]
add r4, #0x18
add r5, r6, #4
_021ED196:
ldr r0, [r4]
lsl r0, r0, #0xb
lsr r0, r0, #0x1f
bne _021ED1B8
mov r1, #0x5b
mov r2, #0x17
lsl r1, r1, #2
lsl r2, r2, #4
ldr r1, [r6, r1]
ldr r2, [r6, r2]
add r0, r5, #0
bl ov96_021ECDEC
ldr r0, [sp]
add r7, r7, #1
cmp r7, r0
bge _021ED1C6
_021ED1B8:
ldr r0, [sp, #4]
add r4, #0x18
add r0, r0, #1
add r5, #0x18
str r0, [sp, #4]
cmp r0, #0xf
blt _021ED196
_021ED1C6:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
nop
_021ED1CC: .word 0x00000000
thumb_func_end ov96_021ED17C
thumb_func_start ov96_021ED1D0
ov96_021ED1D0: ; 0x021ED1D0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x118
str r0, [sp, #8]
bl ov96_021E5DC4
str r0, [sp, #0xc]
ldr r0, [sp, #8]
bl ov96_021E5DD4
cmp r0, #3
bls _021ED1E8
b _021ED462
_021ED1E8:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021ED1F4: ; jump table
.short _021ED1FC - _021ED1F4 - 2 ; case 0
.short _021ED296 - _021ED1F4 - 2 ; case 1
.short _021ED336 - _021ED1F4 - 2 ; case 2
.short _021ED39A - _021ED1F4 - 2 ; case 3
_021ED1FC:
mov r2, #6
mov r0, #0x5c
mov r1, #0x87
lsl r2, r2, #0x10
bl CreateHeap
ldr r0, _021ED46C ; =FS_OVERLAY_ID(OVY_98)
mov r1, #2
bl HandleLoadOverlay
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
bl GfGfx_DisableEngineAPlanes
bl GfGfx_DisableEngineBPlanes
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _021ED470 ; =0xFFFFE0FF
and r1, r0
str r1, [r2]
ldr r2, _021ED474 ; =0x04001000
ldr r1, [r2]
and r0, r1
str r0, [r2]
bl ov96_021EB6A8
ldr r0, [sp, #8]
mov r1, #0xbc
bl ov96_021E5D94
mov r1, #0
mov r2, #0xbc
add r4, r0, #0
bl MI_CpuFill8
mov r0, #0x87
str r0, [r4]
ldr r0, [sp, #8]
bl ov96_021E5E7C
add r1, r4, #0
add r1, #0xb1
strb r0, [r1]
ldr r0, [r4]
bl BgConfig_Alloc
str r0, [r4, #4]
ldr r0, [r4]
bl ov96_021EE740
str r0, [r4, #0xc]
add r0, r4, #0
bl ov96_021EC490
ldr r0, [r4]
mov r1, #6
mov r2, #1
bl ov96_021E9A78
str r0, [r4, #0x10]
ldr r0, _021ED478 ; =gSystem + 0x60
mov r1, #1
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
ldr r0, [sp, #8]
bl ov96_021E5DEC
b _021ED466
_021ED296:
mov r0, #0
add r2, sp, #0x14
add r1, r0, #0
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
str r0, [r2]
ldr r0, [sp, #0xc]
ldr r0, [r0, #0x1c]
bl sub_0200E2B0
str r0, [sp]
ldr r0, [sp, #0xc]
ldr r3, [sp, #0xc]
ldr r0, [r0]
ldr r3, [r3, #0x10]
mov r1, #0xc
mov r2, #3
bl ov96_021EA854
ldr r1, [sp, #0xc]
mov r4, #0
str r0, [r1, #0x14]
add r6, sp, #0x58
add r5, sp, #0x14
_021ED2D2:
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r7, r1, #0
add r0, r4, #0
mov r1, #3
bl _s32_div_f
str r0, [sp, #0x10]
ldr r0, [sp, #8]
ldr r1, [sp, #0x10]
add r2, r7, #0
add r3, r6, #0
bl ov96_021E6168
ldr r0, [sp, #8]
ldr r1, [sp, #0x10]
add r2, r7, #0
bl ov96_021E60C0
bl ov96_021E6108
str r0, [r5, #0x14]
add r4, r4, #1
add r6, #0x10
add r5, r5, #4
cmp r4, #0xc
blt _021ED2D2
mov r0, #3
mov r1, #0
str r0, [sp, #0x18]
mov r0, #1
str r1, [sp, #0x14]
str r1, [sp, #0x1c]
str r0, [sp, #0x20]
str r0, [sp, #0x24]
str r0, [sp]
str r1, [sp, #4]
ldr r0, [sp, #0xc]
mov r1, #0xc
ldr r0, [r0, #0x14]
add r2, sp, #0x58
add r3, sp, #0x14
bl ov96_021EA8A8
ldr r0, [sp, #8]
bl ov96_021E5DEC
b _021ED466
_021ED336:
ldr r0, [sp, #0xc]
ldr r0, [r0, #0x14]
bl ov96_021EAA00
cmp r0, #0
bne _021ED344
b _021ED466
_021ED344:
ldr r0, [sp, #8]
bl ov96_021EC82C
ldr r0, [sp, #0xc]
bl ov96_021EC550
ldr r0, [sp, #0xc]
bl ov96_021EC5C0
ldr r0, [sp, #0xc]
bl ov96_021EC68C
ldr r0, [sp, #0xc]
bl ov96_021EC70C
ldr r0, [sp, #0xc]
ldr r1, [sp, #0xc]
ldr r0, [r0]
add r1, #0x20
bl ov96_021ECBB8
ldr r1, [sp, #0xc]
ldr r2, [sp, #0xc]
add r1, #0x8c
str r0, [r1]
ldr r0, [sp, #0xc]
ldr r1, [sp, #0xc]
ldr r0, [r0]
ldr r1, [r1, #0x18]
ldr r2, [r2, #0x1c]
bl ov96_021ED054
ldr r1, [sp, #0xc]
add r1, #0x90
str r0, [r1]
ldr r0, [sp, #8]
str r1, [sp, #0xc]
bl ov96_021ECAC4
ldr r0, [sp, #8]
bl ov96_021E5DEC
b _021ED466
_021ED39A:
ldr r0, [sp, #0xc]
ldr r0, [r0, #4]
bl ov96_021E6030
ldr r0, [sp, #8]
mov r1, #1
bl ov96_021E5DFC
mov r5, #0
add r6, r5, #0
_021ED3AE:
ldr r0, [sp, #0xc]
lsl r1, r5, #0x18
ldr r0, [r0, #0x14]
lsr r1, r1, #0x18
bl ov96_021EAA04
add r4, r0, #0
mov r1, #1
bl ov96_021EAB38
add r0, r4, #0
bl ov96_021EAA20
bl ov96_021E8BAC
bl sub_02024CB8
lsl r1, r6, #0xc
str r1, [r0, #0x10]
add r0, r4, #0
mov r1, #1
bl ov96_021EAC0C
add r0, r5, #0
mov r1, #3
bl _s32_div_f
add r7, r0, #0
add r0, r5, #0
mov r1, #3
bl _s32_div_f
add r2, r1, #0
lsl r1, r7, #6
add r3, r2, #1
mov r2, #0x30
add r0, r4, #0
add r1, #0x20
mul r2, r3
bl ov96_021EAF94
add r5, r5, #1
add r6, r6, #3
cmp r5, #0xc
blt _021ED3AE
ldr r0, [sp, #0xc]
ldr r0, [r0, #4]
bl ov96_021EC2E8
ldr r0, [sp, #0xc]
ldr r1, [sp, #0xc]
ldr r0, [r0, #4]
ldr r1, [r1]
bl ov96_021EC3D8
ldr r0, [sp, #8]
bl ov96_021E5EE8
add r4, r0, #0
ldr r0, [sp, #8]
bl ov96_021E5D60
str r0, [sp]
ldr r0, [sp, #0xc]
ldr r1, [sp, #0xc]
ldr r0, [r0, #0xc]
ldr r1, [r1, #4]
mov r2, #4
add r3, r4, #0
bl ov96_021EE75C
mov r0, #2
bl sub_0203A994
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineBTogglePlanes
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineATogglePlanes
ldr r0, [sp, #0xc]
mov r1, #0
add r0, #0xb5
str r0, [sp, #0xc]
strb r1, [r0]
add sp, #0x118
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021ED462:
bl GF_AssertFail
_021ED466:
mov r0, #0
add sp, #0x118
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021ED46C: .word FS_OVERLAY_ID(OVY_98)
_021ED470: .word 0xFFFFE0FF
_021ED474: .word 0x04001000
_021ED478: .word gSystem + 0x60
thumb_func_end ov96_021ED1D0
thumb_func_start ov96_021ED47C
ov96_021ED47C: ; 0x021ED47C
push {r3, lr}
bl ov96_021E5DC4
ldr r0, [r0, #0x1c]
bl sub_0200D020
mov r0, #1
pop {r3, pc}
thumb_func_end ov96_021ED47C
thumb_func_start ov96_021ED48C
ov96_021ED48C: ; 0x021ED48C
push {r3, r4, r5, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
add r0, r4, #0
add r0, #0x90
ldr r0, [r0]
bl ov96_021ED09C
add r0, r4, #0
add r0, #0x8c
ldr r0, [r0]
bl ov96_021ECBF4
ldr r0, [r4, #0xc]
bl ov96_021EE808
ldr r0, [r4, #4]
mov r1, #0
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #1
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #4
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #5
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
bl FreeToHeap
ldr r0, [r4, #0x14]
bl ov96_021EA894
ldr r0, [r4, #0x10]
bl ov96_021E9C0C
bl sub_0203A914
add r0, r4, #0
bl ov96_021EC51C
add r0, r5, #0
bl ov96_021E5DAC
ldr r0, _021ED51C ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
ldr r0, _021ED520 ; =FS_OVERLAY_ID(OVY_98)
bl UnloadOverlayByID
mov r0, #0x87
bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.balign 4, 0
_021ED51C: .word gSystem + 0x60
_021ED520: .word FS_OVERLAY_ID(OVY_98)
thumb_func_end ov96_021ED48C
thumb_func_start ov96_021ED524
ov96_021ED524: ; 0x021ED524
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r6, r0, #0
add r7, r1, #0
add r5, r2, #0
str r3, [sp, #8]
bl ov96_021E5DC4
add r4, r0, #0
add r0, r6, #0
add r1, r7, #0
bl ov96_021E5D50
add r6, r0, #0
ldr r1, [r4]
mov r0, #0xb
bl String_New
mov r1, #0x28
mul r1, r5
add r1, r6, r1
add r1, #0x12
add r7, r0, #0
bl CopyU16ArrayToString
ldr r0, [r4, #0xc]
bl ov96_021EE97C
mov r1, #1
str r1, [sp]
mov r1, #0
str r1, [sp, #4]
ldr r1, [sp, #8]
add r2, r7, #0
mov r3, #2
bl BufferString
add r0, r7, #0
bl String_Delete
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021ED524
thumb_func_start ov96_021ED578
ov96_021ED578: ; 0x021ED578
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
add r7, r2, #0
bl ov96_021E5DC4
ldr r0, [r0, #0xc]
bl ov96_021EE97C
add r4, r0, #0
add r0, r5, #0
add r1, r6, #0
bl ov96_021E5F34
add r2, r0, #0
add r0, r4, #0
mov r1, #0
bl BufferPlayersName
add r0, r4, #0
add r1, r7, #0
mov r2, #3
mov r3, #1
bl ov96_021EDF3C
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021ED578
thumb_func_start ov96_021ED5AC
ov96_021ED5AC: ; 0x021ED5AC
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
bl ov96_021E5DC4
ldr r0, [r0, #0xc]
bl ov96_021EE97C
add r7, r0, #0
add r0, r5, #0
add r1, r4, #0
bl ov96_021E5F34
add r2, r0, #0
add r0, r7, #0
mov r1, #0
bl BufferPlayersName
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
mov r3, #1
bl ov96_021ED524
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021ED5AC
thumb_func_start ov96_021ED5E0
ov96_021ED5E0: ; 0x021ED5E0
push {r4, r5, r6, lr}
add r5, r0, #0
bl ov96_021E5F54
add r6, r0, #0
add r0, #0xf0
bl ov96_021E8A20
add r4, r0, #0
cmp r5, #0
bne _021ED5FA
bl GF_AssertFail
_021ED5FA:
cmp r6, #0
bne _021ED602
bl GF_AssertFail
_021ED602:
cmp r4, #0
bne _021ED60A
bl GF_AssertFail
_021ED60A:
ldr r0, [r4, #4]
lsl r0, r0, #5
lsr r0, r0, #0x14
bl MATH_CountPopulation
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021ED5E0
thumb_func_start ov96_021ED618
ov96_021ED618: ; 0x021ED618
push {r3, r4, r5, r6, r7, lr}
lsl r3, r1, #1
add r1, r1, r3
add r6, r0, #0
add r4, r2, r1
bl ov96_021E5F54
add r7, r0, #0
add r0, #0xf0
bl ov96_021E8A20
add r5, r0, #0
cmp r6, #0
bne _021ED638
bl GF_AssertFail
_021ED638:
cmp r7, #0
bne _021ED640
bl GF_AssertFail
_021ED640:
cmp r5, #0
bne _021ED648
bl GF_AssertFail
_021ED648:
cmp r4, #0xc
blt _021ED650
bl GF_AssertFail
_021ED650:
ldr r0, [r5, #4]
lsl r0, r0, #5
lsr r1, r0, #0x14
mov r0, #1
lsl r0, r4
and r0, r1
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021ED618
thumb_func_start ov96_021ED660
ov96_021ED660: ; 0x021ED660
push {r3, r4, r5, r6, r7, lr}
lsl r3, r1, #1
add r1, r1, r3
add r6, r0, #0
add r4, r2, r1
bl ov96_021E5F54
add r7, r0, #0
add r0, #0xf0
bl ov96_021E8A20
add r5, r0, #0
cmp r6, #0
bne _021ED680
bl GF_AssertFail
_021ED680:
cmp r7, #0
bne _021ED688
bl GF_AssertFail
_021ED688:
cmp r5, #0
bne _021ED690
bl GF_AssertFail
_021ED690:
cmp r4, #0xc
blt _021ED698
bl GF_AssertFail
_021ED698:
ldr r0, [r5, #8]
lsl r0, r0, #4
lsr r1, r0, #0x14
mov r0, #1
lsl r0, r4
and r0, r1
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021ED660
thumb_func_start ov96_021ED6A8
ov96_021ED6A8: ; 0x021ED6A8
push {r3, r4, r5, r6, r7, lr}
lsl r3, r1, #1
add r1, r1, r3
add r6, r0, #0
add r4, r2, r1
bl ov96_021E5F54
add r7, r0, #0
add r0, #0xf0
bl ov96_021E8A20
add r5, r0, #0
cmp r6, #0
bne _021ED6C8
bl GF_AssertFail
_021ED6C8:
cmp r7, #0
bne _021ED6D0
bl GF_AssertFail
_021ED6D0:
cmp r5, #0
bne _021ED6D8
bl GF_AssertFail
_021ED6D8:
ldr r0, [r5, #4]
lsl r0, r0, #0x11
lsr r1, r0, #0x14
mov r0, #1
lsl r0, r4
and r0, r1
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021ED6A8
thumb_func_start ov96_021ED6E8
ov96_021ED6E8: ; 0x021ED6E8
push {r3, lr}
bl MTRandom
mov r1, #7
and r0, r1
add r0, r0, #4
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_021ED6E8
thumb_func_start ov96_021ED6F8
ov96_021ED6F8: ; 0x021ED6F8
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
bl ov96_021E5F54
add r7, r0, #0
add r0, #0xf0
bl ov96_021E8A20
add r4, r0, #0
cmp r5, #0
bne _021ED714
bl GF_AssertFail
_021ED714:
cmp r7, #0
bne _021ED71C
bl GF_AssertFail
_021ED71C:
cmp r4, #0
bne _021ED724
bl GF_AssertFail
_021ED724:
ldrb r0, [r4, r6]
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021ED6F8
thumb_func_start ov96_021ED728
ov96_021ED728: ; 0x021ED728
push {r4, r5, r6, lr}
add r6, r1, #0
add r1, r2, #0
add r5, r0, #0
bl ov96_021E5E58
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r5, #0
bl ov96_021E6040
add r1, r4, #0
add r2, r6, #0
bl ov96_021E95D8
pop {r4, r5, r6, pc}
thumb_func_end ov96_021ED728
thumb_func_start ov96_021ED748
ov96_021ED748: ; 0x021ED748
mov r0, #0xa
bx lr
thumb_func_end ov96_021ED748
thumb_func_start ov96_021ED74C
ov96_021ED74C: ; 0x021ED74C
mov r0, #0x14
bx lr
thumb_func_end ov96_021ED74C
thumb_func_start ov96_021ED750
ov96_021ED750: ; 0x021ED750
mov r0, #0xa
bx lr
thumb_func_end ov96_021ED750
thumb_func_start ov96_021ED754
ov96_021ED754: ; 0x021ED754
push {r4, r5, r6, lr}
add r5, r0, #0
bl ov96_021E5F54
add r6, r0, #0
add r0, #0xf0
bl ov96_021E8A20
add r4, r0, #0
cmp r5, #0
bne _021ED76E
bl GF_AssertFail
_021ED76E:
cmp r6, #0
bne _021ED776
bl GF_AssertFail
_021ED776:
cmp r4, #0
bne _021ED77E
bl GF_AssertFail
_021ED77E:
ldr r0, [r4, #4]
lsl r0, r0, #5
lsr r0, r0, #0x14
bl MATH_CountPopulation
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021ED754
thumb_func_start ov96_021ED78C
ov96_021ED78C: ; 0x021ED78C
push {r4, r5, r6, lr}
add r5, r0, #0
bl ov96_021E5F54
add r6, r0, #0
add r0, #0xf0
bl ov96_021E8A20
add r4, r0, #0
cmp r5, #0
bne _021ED7A6
bl GF_AssertFail
_021ED7A6:
cmp r6, #0
bne _021ED7AE
bl GF_AssertFail
_021ED7AE:
cmp r4, #0
bne _021ED7B6
bl GF_AssertFail
_021ED7B6:
ldr r0, [r4, #8]
lsl r0, r0, #4
lsr r0, r0, #0x14
bl MATH_CountPopulation
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021ED78C
thumb_func_start ov96_021ED7C4
ov96_021ED7C4: ; 0x021ED7C4
push {r4, r5, r6, lr}
add r5, r0, #0
bl ov96_021E5F54
add r6, r0, #0
add r0, #0xf0
bl ov96_021E8A20
add r4, r0, #0
cmp r5, #0
bne _021ED7DE
bl GF_AssertFail
_021ED7DE:
cmp r6, #0
bne _021ED7E6
bl GF_AssertFail
_021ED7E6:
cmp r4, #0
bne _021ED7EE
bl GF_AssertFail
_021ED7EE:
ldr r0, [r4, #4]
lsl r0, r0, #0x11
lsr r0, r0, #0x14
bl MATH_CountPopulation
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021ED7C4
thumb_func_start ov96_021ED7FC
ov96_021ED7FC: ; 0x021ED7FC
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
add r5, r1, #0
bl ov96_021E5F54
add r7, r0, #0
add r0, #0xf0
bl ov96_021E8A20
add r4, r0, #0
cmp r6, #0
bne _021ED818
bl GF_AssertFail
_021ED818:
cmp r7, #0
bne _021ED820
bl GF_AssertFail
_021ED820:
cmp r4, #0
bne _021ED828
bl GF_AssertFail
_021ED828:
mov r1, #0
_021ED82A:
add r0, r4, r1
ldrb r0, [r0, #0xd]
strb r0, [r5, r1]
add r1, r1, #1
cmp r1, #4
blt _021ED82A
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021ED7FC
thumb_func_start ov96_021ED838
ov96_021ED838: ; 0x021ED838
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
bl ov96_021E5F54
add r7, r0, #0
add r0, #0xf0
bl ov96_021E8A20
add r4, r0, #0
cmp r5, #0
bne _021ED854
bl GF_AssertFail
_021ED854:
cmp r7, #0
bne _021ED85C
bl GF_AssertFail
_021ED85C:
cmp r4, #0
bne _021ED864
bl GF_AssertFail
_021ED864:
lsl r0, r6, #3
ldr r0, [r4, r0]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021ED838
thumb_func_start ov96_021ED86C
ov96_021ED86C: ; 0x021ED86C
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
bl ov96_021E5F54
add r7, r0, #0
add r0, #0xf0
bl ov96_021E8A20
add r4, r0, #0
cmp r5, #0
bne _021ED888
bl GF_AssertFail
_021ED888:
cmp r7, #0
bne _021ED890
bl GF_AssertFail
_021ED890:
cmp r4, #0
bne _021ED898
bl GF_AssertFail
_021ED898:
lsl r0, r6, #3
add r0, r4, r0
ldr r0, [r0, #4]
lsl r0, r0, #8
lsr r0, r0, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021ED86C
thumb_func_start ov96_021ED8A4
ov96_021ED8A4: ; 0x021ED8A4
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
bl ov96_021E5F54
add r7, r0, #0
add r0, #0xf0
bl ov96_021E8A20
add r4, r0, #0
cmp r5, #0
bne _021ED8C0
bl GF_AssertFail
_021ED8C0:
cmp r7, #0
bne _021ED8C8
bl GF_AssertFail
_021ED8C8:
cmp r4, #0
bne _021ED8D0
bl GF_AssertFail
_021ED8D0:
lsl r0, r6, #3
add r0, r4, r0
ldr r0, [r0, #4]
lsr r0, r0, #0x18
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021ED8A4
thumb_func_start ov96_021ED8DC
ov96_021ED8DC: ; 0x021ED8DC
push {r4, r5, r6, lr}
add r5, r0, #0
bl ov96_021E5F54
add r0, #0x28
bl ov96_021E8A20
add r4, r0, #0
add r0, r5, #0
bl ov96_021E5EE8
cmp r0, #0
bne _021ED922
mov r6, #0
_021ED8F8:
add r0, r5, #0
bl ov96_021E5F24
cmp r6, r0
bne _021ED90C
add r0, r4, #0
add r1, r5, #0
bl ov96_021EE0AC
b _021ED918
_021ED90C:
lsl r2, r6, #0x18
add r0, r4, #0
add r1, r5, #0
lsr r2, r2, #0x18
bl ov96_021EE1D8
_021ED918:
add r6, r6, #1
add r4, #8
cmp r6, #4
blt _021ED8F8
pop {r4, r5, r6, pc}
_021ED922:
mov r6, #0
_021ED924:
add r0, r5, #0
bl ov96_021E5D34
cmp r0, r6
ble _021ED93C
lsl r2, r6, #0x18
add r0, r4, #0
add r1, r5, #0
lsr r2, r2, #0x18
bl ov96_021EE144
b _021ED948
_021ED93C:
lsl r2, r6, #0x18
add r0, r4, #0
add r1, r5, #0
lsr r2, r2, #0x18
bl ov96_021EE1D8
_021ED948:
add r6, r6, #1
add r4, #8
cmp r6, #4
blt _021ED924
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021ED8DC
thumb_func_start ov96_021ED954
ov96_021ED954: ; 0x021ED954
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r4, r0, #0
add r5, r1, #0
mov r6, #0x4b
bl PokeathlonOvy_GetHeapID
add r1, r0, #0
mov r0, #0xa9
bl NARC_New
str r0, [sp]
add r0, r4, #0
add r1, r5, #0
bl ov96_021E5D50
add r5, r0, #0
mov r7, #0
add r4, sp, #4
_021ED97A:
ldrh r0, [r5]
ldrh r1, [r5, #2]
bl ov96_021E679C
add r1, r0, #0
ldr r0, [sp]
add r2, sp, #4
bl NARC_ReadWholeMember
ldrb r0, [r4]
add r7, r7, #1
add r5, #0x28
add r0, r0, #1
sub r1, r6, r0
ldrb r0, [r4, #1]
add r0, r0, #1
sub r1, r1, r0
ldrb r0, [r4, #2]
add r0, r0, #1
sub r1, r1, r0
ldrb r0, [r4, #3]
add r0, r0, #1
sub r1, r1, r0
ldrb r0, [r4, #4]
add r0, r0, #1
sub r6, r1, r0
cmp r7, #3
blt _021ED97A
cmp r6, #0x4b
ble _021ED9BA
mov r6, #0x4b
b _021ED9C0
_021ED9BA:
cmp r6, #0
bge _021ED9C0
mov r6, #0
_021ED9C0:
ldr r0, [sp]
bl NARC_Delete
add r0, r6, #0
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021ED954
thumb_func_start ov96_021ED9CC
ov96_021ED9CC: ; 0x021ED9CC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r7, r0, #0
mov r0, #0
str r0, [sp, #4]
bl MTRandom
mov r1, #3
and r0, r1
str r0, [sp]
mov r0, #0
str r0, [sp, #0xc]
_021ED9E4:
mov r0, #0
str r0, [sp, #8]
ldr r0, [sp]
lsl r0, r0, #0x18
lsr r6, r0, #0x18
_021ED9EE:
ldr r0, [sp, #8]
mov r5, #0
lsl r0, r0, #0x18
lsr r4, r0, #0x18
_021ED9F6:
lsl r3, r5, #0x18
add r0, r7, #0
add r1, r6, #0
add r2, r4, #0
lsr r3, r3, #0x18
bl ov96_021EDCEC
cmp r0, #0
beq _021EDA0E
mov r0, #1
str r0, [sp, #4]
b _021EDA14
_021EDA0E:
add r5, r5, #1
cmp r5, #3
blt _021ED9F6
_021EDA14:
ldr r0, [sp, #4]
cmp r0, #0
bne _021EDA24
ldr r0, [sp, #8]
add r0, r0, #1
str r0, [sp, #8]
cmp r0, #4
blt _021ED9EE
_021EDA24:
ldr r0, [sp, #4]
cmp r0, #0
bne _021EDA46
ldr r0, [sp]
add r0, r0, #1
lsr r2, r0, #0x1f
lsl r1, r0, #0x1e
sub r1, r1, r2
mov r0, #0x1e
ror r1, r0
add r0, r2, r1
str r0, [sp]
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, #4
blt _021ED9E4
_021EDA46:
ldr r0, [sp, #4]
cmp r0, #0
bne _021EDA50
mov r0, #4
str r0, [sp]
_021EDA50:
ldr r0, [sp]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021ED9CC
thumb_func_start ov96_021EDA58
ov96_021EDA58: ; 0x021EDA58
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
str r0, [sp]
bl ov96_021E5D6C
str r0, [sp, #0x10]
ldr r0, [sp]
bl ov96_021E5F54
add r0, #0x28
bl ov96_021E8A20
add r4, r0, #0
ldr r1, [r4, #4]
ldr r0, _021EDC28 ; =0xF8007FFF
mov r5, #0
and r1, r0
asr r0, r0, #0xc
and r0, r1
str r0, [r4, #4]
ldr r1, [r4, #8]
ldr r0, _021EDC2C ; =0xF000FFFF
and r0, r1
str r0, [r4, #8]
_021EDA88:
lsl r1, r5, #0x18
ldr r0, [sp]
lsr r1, r1, #0x18
bl ov96_021ED954
strb r0, [r4, r5]
add r5, r5, #1
cmp r5, #4
blt _021EDA88
ldr r0, [sp]
bl ov96_021ED9CC
ldr r2, [r4, #4]
mov r1, #7
bic r2, r1
mov r1, #7
and r0, r1
add r1, r2, #0
orr r1, r0
mov r0, #0
str r0, [sp, #0x20]
str r0, [sp, #0xc]
lsl r0, r1, #0x1d
lsr r0, r0, #0x1d
str r0, [sp, #0x1c]
ldr r0, [sp, #0x20]
str r1, [r4, #4]
str r0, [sp, #0x24]
ldr r0, [sp, #0x10]
str r0, [sp, #8]
ldr r0, [sp, #0x1c]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x28]
_021EDACC:
ldr r0, [sp, #0x24]
ldr r5, [sp, #8]
lsl r0, r0, #0x18
mov r6, #0
lsr r7, r0, #0x18
_021EDAD6:
ldr r0, [sp, #0x1c]
cmp r0, #4
beq _021EDAF2
lsl r3, r6, #0x18
ldr r0, [sp]
ldr r1, [sp, #0x28]
add r2, r7, #0
lsr r3, r3, #0x18
bl ov96_021EDCEC
ldr r1, [sp, #0x20]
cmp r1, r0
bge _021EDAF2
str r0, [sp, #0x20]
_021EDAF2:
ldr r1, [r5, #8]
ldr r0, [sp, #0xc]
cmp r0, r1
bhs _021EDAFC
str r1, [sp, #0xc]
_021EDAFC:
add r6, r6, #1
add r5, #0x20
cmp r6, #3
blt _021EDAD6
ldr r0, [sp, #8]
add r0, #0x60
str r0, [sp, #8]
ldr r0, [sp, #0x24]
add r0, r0, #1
str r0, [sp, #0x24]
cmp r0, #4
blt _021EDACC
mov r0, #0
str r0, [sp, #4]
str r0, [sp, #0x14]
_021EDB1A:
add r0, r4, #0
str r0, [sp, #0x2c]
add r0, #8
str r0, [sp, #0x2c]
ldr r0, [sp, #0x1c]
ldr r5, [sp, #0x10]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x30]
ldr r0, [sp, #4]
mov r6, #0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x34]
_021EDB36:
ldr r0, [sp, #0x14]
add r0, r6, r0
lsl r0, r0, #0x18
lsr r7, r0, #0x18
ldr r0, [r5]
cmp r0, #0
bne _021EDB6A
ldr r0, [r5, #0x10]
cmp r0, #0
bne _021EDB6A
ldr r0, [r5, #0x1c]
cmp r0, #0
bne _021EDB6A
ldr r2, [r4, #4]
ldr r0, _021EDC28 ; =0xF8007FFF
add r1, r2, #0
and r1, r0
lsl r0, r2, #5
mov r2, #1
lsl r2, r7
lsr r0, r0, #0x14
add r0, r0, r2
lsl r0, r0, #0x14
lsr r0, r0, #5
orr r0, r1
str r0, [r4, #4]
_021EDB6A:
ldr r1, [r5, #8]
ldr r0, [sp, #0xc]
cmp r0, r1
bne _021EDB90
ldr r0, [sp, #0x2c]
ldr r2, [r0]
ldr r0, _021EDC2C ; =0xF000FFFF
add r1, r2, #0
and r1, r0
lsl r0, r2, #4
mov r2, #1
lsl r2, r7
lsr r0, r0, #0x14
add r0, r0, r2
lsl r0, r0, #0x14
lsr r0, r0, #4
orr r1, r0
ldr r0, [sp, #0x2c]
str r1, [r0]
_021EDB90:
ldr r0, [sp, #0x1c]
cmp r0, #4
beq _021EDBD2
lsl r3, r6, #0x18
ldr r0, [sp]
ldr r1, [sp, #0x30]
ldr r2, [sp, #0x34]
lsr r3, r3, #0x18
bl ov96_021EDCEC
ldr r1, [sp, #0x20]
str r0, [sp, #0x18]
cmp r0, r1
ble _021EDBB0
bl GF_AssertFail
_021EDBB0:
ldr r1, [sp, #0x20]
ldr r0, [sp, #0x18]
cmp r1, r0
bne _021EDBD2
ldr r2, [r4, #4]
ldr r0, _021EDC30 ; =0xFFFF8007
add r1, r2, #0
and r1, r0
lsl r0, r2, #0x11
mov r2, #1
lsl r2, r7
lsr r0, r0, #0x14
add r0, r0, r2
lsl r0, r0, #0x14
lsr r0, r0, #0x11
orr r0, r1
str r0, [r4, #4]
_021EDBD2:
add r6, r6, #1
add r5, #0x20
cmp r6, #3
blt _021EDB36
ldr r0, [sp, #0x14]
add r0, r0, #3
str r0, [sp, #0x14]
ldr r0, [sp, #0x10]
add r0, #0x60
str r0, [sp, #0x10]
ldr r0, [sp, #4]
add r0, r0, #1
str r0, [sp, #4]
cmp r0, #4
blt _021EDB1A
ldr r1, [r4, #8]
ldr r0, _021EDC34 ; =0xFFFF0000
and r1, r0
ldr r0, [sp, #0x20]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
orr r0, r1
str r0, [r4, #8]
bl MTRandom
add r2, r0, #0
mov r1, #3
and r2, r1
mov r3, #0
mov r0, #0x1e
_021EDC0E:
add r1, r4, r2
strb r3, [r1, #0xd]
add r1, r2, #1
lsr r2, r1, #0x1f
lsl r1, r1, #0x1e
sub r1, r1, r2
ror r1, r0
add r3, r3, #1
add r2, r2, r1
cmp r3, #4
blt _021EDC0E
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021EDC28: .word 0xF8007FFF
_021EDC2C: .word 0xF000FFFF
_021EDC30: .word 0xFFFF8007
_021EDC34: .word 0xFFFF0000
thumb_func_end ov96_021EDA58
thumb_func_start ov96_021EDC38
ov96_021EDC38: ; 0x021EDC38
cmp r0, #0xa
bhi _021EDCB0
add r2, r0, r0
add r2, pc
ldrh r2, [r2, #6]
lsl r2, r2, #0x10
asr r2, r2, #0x10
add pc, r2
_021EDC48: ; jump table
.short _021EDCB0 - _021EDC48 - 2 ; case 0
.short _021EDCB0 - _021EDC48 - 2 ; case 1
.short _021EDCB0 - _021EDC48 - 2 ; case 2
.short _021EDCB0 - _021EDC48 - 2 ; case 3
.short _021EDCB0 - _021EDC48 - 2 ; case 4
.short _021EDC62 - _021EDC48 - 2 ; case 5
.short _021EDC72 - _021EDC48 - 2 ; case 6
.short _021EDC82 - _021EDC48 - 2 ; case 7
.short _021EDC92 - _021EDC48 - 2 ; case 8
.short _021EDCA2 - _021EDC48 - 2 ; case 9
.short _021EDC5E - _021EDC48 - 2 ; case 10
_021EDC5E:
mov r0, #0
bx lr
_021EDC62:
cmp r1, #0
beq _021EDC6A
mov r0, #4
b _021EDC6C
_021EDC6A:
mov r0, #0
_021EDC6C:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_021EDC72:
cmp r1, #0
beq _021EDC7A
mov r0, #2
b _021EDC7C
_021EDC7A:
mov r0, #4
_021EDC7C:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_021EDC82:
cmp r1, #0
beq _021EDC8A
mov r0, #1
b _021EDC8C
_021EDC8A:
mov r0, #2
_021EDC8C:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_021EDC92:
cmp r1, #0
beq _021EDC9A
mov r0, #3
b _021EDC9C
_021EDC9A:
mov r0, #1
_021EDC9C:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
_021EDCA2:
cmp r1, #0
beq _021EDCAA
mov r0, #0
b _021EDCAC
_021EDCAA:
mov r0, #3
_021EDCAC:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
_021EDCB0:
bx lr
.balign 4, 0
thumb_func_end ov96_021EDC38
thumb_func_start ov96_021EDCB4
ov96_021EDCB4: ; 0x021EDCB4
push {r4, r5, r6, lr}
add r5, r0, #0
bl ov96_021E5F54
add r6, r0, #0
add r0, #0xf0
bl ov96_021E8A20
add r4, r0, #0
cmp r5, #0
bne _021EDCCE
bl GF_AssertFail
_021EDCCE:
cmp r6, #0
bne _021EDCD6
bl GF_AssertFail
_021EDCD6:
cmp r4, #0
bne _021EDCDE
bl GF_AssertFail
_021EDCDE:
ldr r0, [r4, #4]
lsl r0, r0, #0x1d
lsr r0, r0, #0x1d
lsl r0, r0, #0x18
lsr r0, r0, #0x18
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021EDCB4
thumb_func_start ov96_021EDCEC
ov96_021EDCEC: ; 0x021EDCEC
push {r3, r4, r5, r6, r7, lr}
add r7, r1, #0
add r4, r2, #0
add r5, r3, #0
bl ov96_021E5D6C
add r6, r0, #0
cmp r4, #4
blo _021EDD02
bl GF_AssertFail
_021EDD02:
cmp r5, #3
blo _021EDD0A
bl GF_AssertFail
_021EDD0A:
cmp r7, #3
bhi _021EDD58
add r0, r7, r7
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021EDD1A: ; jump table
.short _021EDD22 - _021EDD1A - 2 ; case 0
.short _021EDD30 - _021EDD1A - 2 ; case 1
.short _021EDD3E - _021EDD1A - 2 ; case 2
.short _021EDD4A - _021EDD1A - 2 ; case 3
_021EDD22:
mov r0, #0x60
mul r0, r4
add r1, r6, r0
lsl r0, r5, #5
add r0, r1, r0
ldr r0, [r0, #4]
pop {r3, r4, r5, r6, r7, pc}
_021EDD30:
mov r0, #0x60
mul r0, r4
add r1, r6, r0
lsl r0, r5, #5
add r0, r1, r0
ldr r0, [r0, #0xc]
pop {r3, r4, r5, r6, r7, pc}
_021EDD3E:
mov r0, #0x60
mul r0, r4
lsl r1, r5, #5
add r0, r6, r0
ldr r0, [r1, r0]
pop {r3, r4, r5, r6, r7, pc}
_021EDD4A:
mov r0, #0x60
mul r0, r4
add r1, r6, r0
lsl r0, r5, #5
add r0, r1, r0
ldr r0, [r0, #0x14]
pop {r3, r4, r5, r6, r7, pc}
_021EDD58:
bl GF_AssertFail
bl GF_AssertFail
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021EDCEC
thumb_func_start ov96_021EDD64
ov96_021EDD64: ; 0x021EDD64
add r1, r0, #0
add r1, #0xb3
ldrb r1, [r1]
add r2, r1, #1
add r1, r0, #0
add r1, #0xb3
strb r2, [r1]
add r1, r0, #0
add r1, #0xb3
ldrb r1, [r1]
cmp r1, #3
blo _021EDD92
add r1, r0, #0
mov r2, #0
add r1, #0xb3
strb r2, [r1]
add r1, r0, #0
add r1, #0xb2
ldrb r1, [r1]
add r2, r1, #1
add r1, r0, #0
add r1, #0xb2
strb r2, [r1]
_021EDD92:
add r0, #0xb2
ldrb r0, [r0]
cmp r0, #4
bne _021EDD9E
mov r0, #1
bx lr
_021EDD9E:
mov r0, #0
bx lr
.balign 4, 0
thumb_func_end ov96_021EDD64
thumb_func_start ov96_021EDDA4
ov96_021EDDA4: ; 0x021EDDA4
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
add r7, r2, #0
bl ov96_021E5DC4
add r4, r0, #0
_021EDDB2:
add r1, r4, #0
add r2, r4, #0
add r1, #0xb2
add r2, #0xb3
ldrb r1, [r1]
ldrb r2, [r2]
add r0, r5, #0
blx r6
cmp r0, #0
bne _021EDDD0
add r0, r4, #0
bl ov96_021EDD64
cmp r0, #0
beq _021EDDB2
_021EDDD0:
add r0, r4, #0
add r0, #0xb2
ldrb r1, [r0]
cmp r1, #4
bhs _021EDE5E
add r0, r4, #0
add r0, #0xb3
ldrb r2, [r0]
lsl r0, r1, #1
add r0, r1, r0
add r6, r2, r0
add r0, r4, #0
add r0, #0xac
ldrb r2, [r0, r1]
add r2, r2, #1
strb r2, [r0, r1]
add r0, r4, #0
add r0, #0xb4
ldrb r0, [r0]
add r2, r4, #0
add r2, #0xb3
add r1, r0, #1
add r0, r4, #0
add r0, #0xb4
strb r1, [r0]
add r1, r4, #0
add r1, #0xb2
ldrb r1, [r1]
ldrb r2, [r2]
add r0, r5, #0
bl ov96_021ED5AC
add r1, r4, #0
add r0, r4, #0
add r1, #0xb2
add r0, #0x8c
lsl r2, r7, #0x10
ldrb r1, [r1]
ldr r0, [r0]
lsr r2, r2, #0x10
bl ov96_021ECC38
lsl r1, r6, #0x18
add r0, r4, #0
lsr r1, r1, #0x18
bl ov96_021EC298
lsl r1, r6, #0x18
ldr r0, [r4, #0x14]
lsr r1, r1, #0x18
bl ov96_021EAA04
bl ov96_021EAA20
bl ov96_021E8BB0
add r5, r0, #0
mov r0, #1
bl sub_02006E3C
ldrh r1, [r5, #2]
ldrh r0, [r5]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl PlayCry
add r0, r4, #0
bl ov96_021EDD64
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021EDE5E:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EDDA4
thumb_func_start ov96_021EDE64
ov96_021EDE64: ; 0x021EDE64
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r4, r0, #0
add r6, r1, #0
bl ov96_021E5F24
str r0, [sp, #4]
add r0, r4, #0
bl ov96_021E5DC4
str r0, [sp]
add r0, r4, #0
bl ov96_021E5D6C
add r7, r0, #0
ldr r0, [sp]
add r0, #0x9c
ldr r0, [r0]
lsl r0, r0, #4
lsr r1, r0, #0x1c
ldr r0, [sp, #4]
cmp r1, r0
bne _021EDEA2
mov r1, #0x1d
lsl r1, r1, #4
ldrh r2, [r7, r1]
mov r0, #1
bic r2, r0
mov r0, #1
orr r0, r2
strh r0, [r7, r1]
_021EDEA2:
ldr r5, _021EDF34 ; =0x000003E7
mov r4, #0
_021EDEA6:
lsl r1, r4, #0x18
add r0, r6, #0
lsr r1, r1, #0x18
bl ov96_021ECC4C
cmp r5, r0
blt _021EDEB6
add r5, r0, #0
_021EDEB6:
add r4, r4, #1
cmp r4, #4
blt _021EDEA6
ldr r1, [sp, #4]
add r0, r6, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_021ECC4C
cmp r0, r5
bne _021EDED8
mov r1, #0x1d
lsl r1, r1, #4
ldrh r2, [r7, r1]
mov r0, #2
orr r0, r2
strh r0, [r7, r1]
_021EDED8:
ldr r1, [sp]
ldr r0, [sp, #4]
add r0, r1, r0
add r0, #0xac
ldrb r1, [r0]
mov r0, #6
lsl r0, r0, #6
str r1, [r7, r0]
ldr r0, [sp]
ldr r1, [sp, #4]
add r0, #0x8c
lsl r1, r1, #0x18
ldr r0, [r0]
lsr r1, r1, #0x18
bl ov96_021ECC4C
ldr r1, _021EDF38 ; =0x000001D2
strh r0, [r7, r1]
ldr r1, [sp, #4]
ldr r0, [sp]
lsl r1, r1, #0x18
add r0, #0x9c
lsr r1, r1, #0x18
str r0, [sp]
bl ov96_021EE264
add r4, r0, #0
mov r0, #0
mvn r0, r0
cmp r4, r0
bne _021EDF1A
bl GF_AssertFail
_021EDF1A:
mov r2, #0x1d
lsl r2, r2, #4
ldrh r0, [r7, r2]
mov r1, #0xc
bic r0, r1
lsl r1, r4, #0x10
lsr r1, r1, #0x10
lsl r1, r1, #0x1e
lsr r1, r1, #0x1c
orr r0, r1
strh r0, [r7, r2]
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021EDF34: .word 0x000003E7
_021EDF38: .word 0x000001D2
thumb_func_end ov96_021EDE64
thumb_func_start ov96_021EDF3C
ov96_021EDF3C: ; 0x021EDF3C
push {r3, r4, r5, lr}
sub sp, #8
add r5, r1, #0
mov r1, #0
add r4, r2, #0
str r1, [sp]
mov r1, #1
str r1, [sp, #4]
add r1, r3, #0
add r2, r5, #0
add r3, r4, #0
bl BufferIntegerAsString
add sp, #8
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021EDF3C
thumb_func_start ov96_021EDF5C
ov96_021EDF5C: ; 0x021EDF5C
ldr r3, _021EDF78 ; =ov96_0221B058
mov r2, #0
_021EDF60:
ldr r1, [r3]
cmp r1, r0
ble _021EDF6A
add r0, r2, #0
bx lr
_021EDF6A:
add r2, r2, #1
add r3, r3, #4
cmp r2, #0xc
blt _021EDF60
add r0, r2, #0
bx lr
nop
_021EDF78: .word ov96_0221B058
thumb_func_end ov96_021EDF5C
thumb_func_start ov96_021EDF7C
ov96_021EDF7C: ; 0x021EDF7C
lsl r0, r0, #2
add r0, #0x20
bx lr
.balign 4, 0
thumb_func_end ov96_021EDF7C
thumb_func_start ov96_021EDF84
ov96_021EDF84: ; 0x021EDF84
push {r4, r5}
mov r4, #0
add r3, r4, #0
add r5, r1, #0
_021EDF8C:
ldr r2, [r5, #0x44]
add r3, r3, #1
add r4, r4, r2
add r5, r5, #4
cmp r3, #0xa
blt _021EDF8C
ldr r2, [r1, #4]
mov r5, #0
str r2, [r0]
ldr r2, [r1, #8]
add r3, r1, #0
str r2, [r0, #4]
ldr r2, [r1, #0xc]
str r2, [r0, #8]
str r4, [r0, #0xc]
ldr r2, [r1, #0x6c]
add r4, r0, #0
str r2, [r0, #0x10]
ldr r2, [r1, #0x10]
str r2, [r0, #0x14]
ldr r2, [r1, #0x14]
str r2, [r0, #0x18]
ldr r2, [r1, #0x18]
str r2, [r0, #0x1c]
ldr r2, [r1, #0x1c]
str r2, [r0, #0x20]
ldr r2, [r1, #0x20]
str r2, [r0, #0x24]
ldr r2, [r1, #0x24]
str r2, [r0, #0x28]
ldr r2, [r1, #0x28]
str r2, [r0, #0x2c]
ldr r2, [r1, #0x2c]
str r2, [r0, #0x30]
ldr r2, [r1, #0x30]
str r2, [r0, #0x34]
ldr r2, [r1, #0x38]
str r2, [r0, #0x38]
ldr r2, [r1, #0x3c]
str r2, [r0, #0x3c]
ldr r2, [r1, #0x40]
str r2, [r0, #0x40]
_021EDFE0:
ldr r2, [r3, #0x44]
add r5, r5, #1
str r2, [r4, #0x44]
add r3, r3, #4
add r4, r4, #4
cmp r5, #0xa
blt _021EDFE0
ldr r2, [r1, #0x34]
str r2, [r0, #0x6c]
ldr r1, [r1, #0x70]
str r1, [r0, #0x70]
pop {r4, r5}
bx lr
.balign 4, 0
thumb_func_end ov96_021EDF84
thumb_func_start ov96_021EDFFC
ov96_021EDFFC: ; 0x021EDFFC
push {r3, r4, r5, r6, r7, lr}
ldr r5, _021EE03C ; =ov96_0221B124
add r6, r0, #0
add r7, r1, #0
mov r4, #0
_021EE006:
ldr r0, [r5]
cmp r0, #0
bne _021EE010
bl GF_AssertFail
_021EE010:
bl MTRandom
mov r1, #3
bl _u32_div_f
strb r1, [r6, r4]
ldr r0, [r7]
cmp r0, #0
beq _021EE02E
ldr r1, [r5]
bl _u32_div_f
ldrb r1, [r6, r4]
add r0, r1, r0
strb r0, [r6, r4]
_021EE02E:
add r4, r4, #1
add r5, r5, #4
add r7, r7, #4
cmp r4, #0x1d
blt _021EE006
pop {r3, r4, r5, r6, r7, pc}
nop
_021EE03C: .word ov96_0221B124
thumb_func_end ov96_021EDFFC
thumb_func_start ov96_021EE040
ov96_021EE040: ; 0x021EE040
push {r4, r5, r6, lr}
sub sp, #0x20
add r4, sp, #0
mov r3, #0x1d
mov r2, #0
_021EE04A:
strb r2, [r4]
add r4, r4, #1
sub r3, r3, #1
bne _021EE04A
mov r2, #0
add r4, r2, #0
add r5, r2, #0
_021EE058:
ldrb r3, [r0, r5]
cmp r2, r3
bhs _021EE060
add r2, r3, #0
_021EE060:
add r5, r5, #1
cmp r5, #0x1d
blt _021EE058
mov r6, #0
add r5, sp, #0
_021EE06A:
ldrb r3, [r0, r6]
cmp r2, r3
bne _021EE076
strb r6, [r5]
add r5, r5, #1
add r4, r4, #1
_021EE076:
add r6, r6, #1
cmp r6, #0x1d
blt _021EE06A
ldr r3, _021EE0A8 ; =ov96_0221AF54
mov r5, #0
_021EE080:
ldr r0, [r3]
cmp r2, r0
blo _021EE08E
mov r0, #3
sub r0, r0, r5
strb r0, [r1]
b _021EE096
_021EE08E:
add r5, r5, #1
add r3, r3, #4
cmp r5, #4
blt _021EE080
_021EE096:
bl MTRandom
add r1, r4, #0
bl _u32_div_f
add r0, sp, #0
ldrb r0, [r0, r1]
add sp, #0x20
pop {r4, r5, r6, pc}
.balign 4, 0
_021EE0A8: .word ov96_0221AF54
thumb_func_end ov96_021EE040
thumb_func_start ov96_021EE0AC
ov96_021EE0AC: ; 0x021EE0AC
push {r3, r4, r5, r6, lr}
sub sp, #0x94
add r5, r0, #0
mov r0, #0
add r2, r1, #0
add r4, sp, #0x20
add r1, r0, #0
mov r3, #7
_021EE0BC:
stmia r4!, {r0, r1}
stmia r4!, {r0, r1}
sub r3, r3, #1
bne _021EE0BC
add r3, sp, #0
str r0, [r4]
add r3, #1
mov r1, #0x1d
mov r0, #0
_021EE0CE:
strb r0, [r3]
add r3, r3, #1
sub r1, r1, #1
bne _021EE0CE
add r0, r2, #0
bl ov96_021E5D60
bl Save_Pokeathlon_Get
bl sub_020319F0
add r6, r0, #0
add r0, sp, #0x20
add r1, r6, #0
bl ov96_021EDF84
add r0, sp, #0
add r0, #1
add r1, sp, #0x20
bl ov96_021EDFFC
add r0, sp, #0
add r0, #1
add r1, sp, #0
bl ov96_021EE040
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
bl ov96_021EDF7C
add r1, sp, #0
ldrb r1, [r1]
lsl r2, r4, #2
add r0, r1, r0
str r0, [r5]
mov r0, #0xff
ldr r1, [r5, #4]
lsl r0, r0, #0x18
and r0, r1
add r1, sp, #0x20
ldr r2, [r1, r2]
ldr r1, _021EE140 ; =0x00FFFFFF
and r1, r2
orr r0, r1
str r0, [r5, #4]
ldr r0, [r6, #0x70]
bl ov96_021EDF5C
ldr r2, [r5, #4]
ldr r1, _021EE140 ; =0x00FFFFFF
lsl r0, r0, #0x18
and r1, r2
orr r0, r1
str r0, [r5, #4]
add sp, #0x94
pop {r3, r4, r5, r6, pc}
.balign 4, 0
_021EE140: .word 0x00FFFFFF
thumb_func_end ov96_021EE0AC
thumb_func_start ov96_021EE144
ov96_021EE144: ; 0x021EE144
push {r3, r4, r5, r6, lr}
sub sp, #0x94
add r5, r0, #0
mov r0, #0
add r3, r1, #0
add r6, sp, #0x20
add r1, r0, #0
mov r4, #7
_021EE154:
stmia r6!, {r0, r1}
stmia r6!, {r0, r1}
sub r4, r4, #1
bne _021EE154
add r4, sp, #0
str r0, [r6]
add r4, #1
mov r1, #0x1d
mov r0, #0
_021EE166:
strb r0, [r4]
add r4, r4, #1
sub r1, r1, #1
bne _021EE166
add r0, r3, #0
add r1, r2, #0
bl ov96_021E5F44
add r6, r0, #0
add r0, sp, #0x20
add r1, r6, #0
bl ov96_021EDF84
add r0, sp, #0
add r0, #1
add r1, sp, #0x20
bl ov96_021EDFFC
add r0, sp, #0
add r0, #1
add r1, sp, #0
bl ov96_021EE040
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
bl ov96_021EDF7C
add r1, sp, #0
ldrb r1, [r1]
lsl r2, r4, #2
add r0, r1, r0
str r0, [r5]
mov r0, #0xff
ldr r1, [r5, #4]
lsl r0, r0, #0x18
and r0, r1
add r1, sp, #0x20
ldr r2, [r1, r2]
ldr r1, _021EE1D4 ; =0x00FFFFFF
and r1, r2
orr r0, r1
str r0, [r5, #4]
ldr r0, [r6, #0x70]
bl ov96_021EDF5C
ldr r2, [r5, #4]
ldr r1, _021EE1D4 ; =0x00FFFFFF
lsl r0, r0, #0x18
and r1, r2
orr r0, r1
str r0, [r5, #4]
add sp, #0x94
pop {r3, r4, r5, r6, pc}
nop
_021EE1D4: .word 0x00FFFFFF
thumb_func_end ov96_021EE144
thumb_func_start ov96_021EE1D8
ov96_021EE1D8: ; 0x021EE1D8
push {r4, r5, r6, r7, lr}
sub sp, #0xc
str r2, [sp, #4]
add r7, r1, #0
str r0, [sp]
ldr r1, [sp, #4]
add r0, r7, #0
mov r5, #0
bl ov96_021E5D40
str r0, [sp, #8]
add r4, r5, #0
_021EE1F0:
ldr r1, [sp, #4]
add r0, r7, #0
add r2, r4, #0
bl ov96_021E60D8
ldrb r6, [r0, #4]
ldrb r3, [r0, #3]
ldrb r2, [r0, #1]
ldrb r1, [r0, #2]
ldrb r0, [r0]
add r4, r4, #1
add r0, r1, r0
add r0, r2, r0
add r0, r3, r0
add r0, r6, r0
add r0, r0, #5
add r5, r5, r0
cmp r4, #3
blt _021EE1F0
add r0, r5, #0
mov r1, #3
bl _s32_div_f
add r4, r0, #0
sub r4, #8
cmp r4, #0xc
ble _021EE22A
mov r4, #0xc
b _021EE230
_021EE22A:
cmp r4, #0
bge _021EE230
mov r4, #0
_021EE230:
ldr r1, [sp, #8]
add r0, r7, #0
ldr r1, [r1]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_021E8448
ldr r1, [sp]
str r0, [r1]
add r0, r1, #0
ldr r1, [r0, #4]
mov r0, #0xff
lsl r0, r0, #0x18
and r1, r0
ldr r0, [sp]
str r1, [r0, #4]
ldr r0, _021EE260 ; =0x00FFFFFF
and r1, r0
lsl r0, r4, #0x18
orr r1, r0
ldr r0, [sp]
str r1, [r0, #4]
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021EE260: .word 0x00FFFFFF
thumb_func_end ov96_021EE1D8
thumb_func_start ov96_021EE264
ov96_021EE264: ; 0x021EE264
push {r3, r4}
mov r3, #0
add r4, r0, #0
_021EE26A:
ldr r2, [r4]
lsl r2, r2, #4
lsr r2, r2, #0x1c
cmp r1, r2
bne _021EE280
lsl r1, r3, #2
ldr r0, [r0, r1]
lsl r0, r0, #8
lsr r0, r0, #0x18
pop {r3, r4}
bx lr
_021EE280:
add r3, r3, #1
add r4, r4, #4
cmp r3, #4
blt _021EE26A
mov r0, #0
mvn r0, r0
pop {r3, r4}
bx lr
thumb_func_end ov96_021EE264
thumb_func_start ov96_021EE290
ov96_021EE290: ; 0x021EE290
push {r3, r4, r5, r6, r7, lr}
add r4, r0, #0
mov r3, #0
ldr r7, _021EE318 ; =0xFF00FFFF
add r2, r3, #0
add r6, r4, #0
_021EE29C:
ldr r0, [r6]
lsl r1, r0, #8
lsr r1, r1, #0x18
bne _021EE2BA
add r1, r1, #1
lsl r1, r1, #0x18
and r0, r7
lsr r1, r1, #8
orr r0, r1
str r0, [r6]
lsr r0, r0, #0x1c
cmp r0, r3
bls _021EE2BA
add r3, r0, #0
add r5, r2, #0
_021EE2BA:
add r2, r2, #1
add r6, r6, #4
cmp r2, #4
blt _021EE29C
lsl r1, r5, #2
ldr r3, [r4, r1]
ldr r2, _021EE318 ; =0xFF00FFFF
add r0, r3, #0
lsl r3, r3, #8
lsr r3, r3, #0x18
sub r3, r3, #1
lsl r3, r3, #0x18
and r0, r2
lsr r3, r3, #8
orr r0, r3
str r0, [r4, r1]
ldr r3, [r4, r1]
lsl r0, r2, #0x10
lsl r2, r3, #0x10
lsr r2, r2, #0x10
add r2, r2, #1
lsl r2, r2, #0x10
and r0, r3
lsr r2, r2, #0x10
orr r0, r2
str r0, [r4, r1]
mov r0, #0
mov r1, #4
str r0, [sp]
ldr r3, _021EE31C ; =ov96_021ECC58
add r0, r4, #0
add r2, r1, #0
bl MATH_QSort
ldr r1, [r4]
ldr r0, _021EE320 ; =0xFFFF0000
add r2, r1, #0
and r2, r0
lsl r0, r1, #0x10
lsr r0, r0, #0x10
sub r0, r0, #1
lsl r0, r0, #0x10
lsr r0, r0, #0x10
orr r0, r2
str r0, [r4]
pop {r3, r4, r5, r6, r7, pc}
nop
_021EE318: .word 0xFF00FFFF
_021EE31C: .word ov96_021ECC58
_021EE320: .word 0xFFFF0000
thumb_func_end ov96_021EE290
thumb_func_start ov96_021EE324
ov96_021EE324: ; 0x021EE324
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r7, r0, #0
bl ov96_021E5DC4
str r0, [sp, #0x14]
add r0, r7, #0
bl ov96_021E5F54
str r0, [sp, #0x10]
add r0, #0x28
bl ov96_021E8A20
str r0, [sp, #0xc]
ldr r0, [sp, #0x10]
add r0, #0xf0
bl ov96_021E8A20
str r0, [sp, #8]
add r0, r7, #0
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r1, r0, #0x18
ldr r0, [sp, #0x14]
add r0, #0xb7
ldrb r6, [r0]
mov r0, #0
str r0, [sp, #4]
cmp r1, #0
bne _021EE3FC
mov r0, #1
str r0, [sp]
ldr r0, [sp, #0xc]
add r0, #0x20
strb r6, [r0]
ldr r0, [sp, #0x10]
add r0, #0x50
bl ov96_021E8A20
add r4, r0, #0
ldr r0, [sp, #0x10]
bl ov96_021E8A20
mov r2, #0x24
_021EE37E:
ldrb r1, [r0]
add r0, r0, #1
strb r1, [r4]
add r4, r4, #1
sub r2, r2, #1
bne _021EE37E
add r0, r7, #0
mov r4, #0
bl ov96_021E5D34
cmp r0, #0
ble _021EE3C8
ldr r5, [sp, #0x10]
add r5, #0x50
_021EE39A:
add r0, r5, #0
bl ov96_021E8A20
ldrb r1, [r0]
cmp r1, r6
blo _021EE3AC
ldrb r1, [r0, #1]
cmp r1, #1
bne _021EE3B0
_021EE3AC:
mov r1, #1
str r1, [sp, #4]
_021EE3B0:
ldrb r0, [r0, #2]
cmp r0, #0
bne _021EE3BA
mov r0, #0
str r0, [sp]
_021EE3BA:
add r0, r7, #0
add r5, #0x28
add r4, r4, #1
bl ov96_021E5D34
cmp r4, r0
blt _021EE39A
_021EE3C8:
ldr r0, [sp]
cmp r0, #0
beq _021EE3DE
ldr r0, [sp, #0xc]
add r0, #0x21
ldrb r1, [r0]
mov r0, #2
orr r1, r0
ldr r0, [sp, #0xc]
add r0, #0x21
strb r1, [r0]
_021EE3DE:
ldr r0, [sp, #0xc]
mov r1, #1
add r0, #0x21
ldrb r0, [r0]
bic r0, r1
ldr r1, [sp, #4]
lsl r1, r1, #0x18
lsr r2, r1, #0x18
mov r1, #1
and r1, r2
orr r1, r0
ldr r0, [sp, #0xc]
add r0, #0x21
str r0, [sp, #0xc]
strb r1, [r0]
_021EE3FC:
ldr r0, [sp, #0x10]
bl ov96_021E8A20
add r4, r0, #0
ldr r0, [sp, #0x14]
strb r6, [r4]
ldr r0, [r0, #0xc]
bl ov96_021EEA80
strb r0, [r4, #1]
ldr r0, [sp, #0x14]
add r0, #0xb8
str r0, [sp, #0x14]
ldr r0, [r0]
strb r0, [r4, #2]
ldr r0, [sp, #8]
add r0, #0x21
ldrb r0, [r0]
lsl r0, r0, #0x1f
lsr r0, r0, #0x1f
beq _021EE438
ldr r0, [sp, #8]
add r0, #0x20
str r0, [sp, #8]
ldrb r0, [r0]
cmp r6, r0
blo _021EE438
add sp, #0x18
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021EE438:
mov r0, #0
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EE324
thumb_func_start ov96_021EE440
ov96_021EE440: ; 0x021EE440
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r7, r0, #0
bl ov96_021E5DC4
str r0, [sp, #0x14]
add r0, r7, #0
bl ov96_021E5F54
str r0, [sp, #0x10]
add r0, #0x28
bl ov96_021E8A20
str r0, [sp, #0xc]
ldr r0, [sp, #0x10]
add r0, #0xf0
bl ov96_021E8A20
str r0, [sp, #8]
add r0, r7, #0
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r1, r0, #0x18
ldr r0, [sp, #0x14]
add r0, #0xb7
ldrb r6, [r0]
mov r0, #0
str r0, [sp, #4]
cmp r1, #0
bne _021EE50A
mov r0, #1
str r0, [sp]
ldr r0, [sp, #0xc]
strb r6, [r0, #0xc]
ldr r0, [sp, #0x10]
add r0, #0x50
bl ov96_021E8A20
add r4, r0, #0
ldr r0, [sp, #0x10]
bl ov96_021E8A20
mov r2, #0x24
_021EE498:
ldrb r1, [r0]
add r0, r0, #1
strb r1, [r4]
add r4, r4, #1
sub r2, r2, #1
bne _021EE498
add r0, r7, #0
mov r4, #0
bl ov96_021E5D34
cmp r0, #0
ble _021EE4E2
ldr r5, [sp, #0x10]
add r5, #0x50
_021EE4B4:
add r0, r5, #0
bl ov96_021E8A20
ldrb r1, [r0]
cmp r1, r6
blo _021EE4C6
ldrb r1, [r0, #1]
cmp r1, #1
bne _021EE4CA
_021EE4C6:
mov r1, #1
str r1, [sp, #4]
_021EE4CA:
ldrb r0, [r0, #2]
cmp r0, #0
bne _021EE4D4
mov r0, #0
str r0, [sp]
_021EE4D4:
add r0, r7, #0
add r5, #0x28
add r4, r4, #1
bl ov96_021E5D34
cmp r4, r0
blt _021EE4B4
_021EE4E2:
ldr r0, [sp]
cmp r0, #0
beq _021EE4F6
ldr r0, [sp, #0xc]
ldr r1, [r0, #8]
mov r0, #2
lsl r0, r0, #0x1c
orr r1, r0
ldr r0, [sp, #0xc]
str r1, [r0, #8]
_021EE4F6:
ldr r0, [sp, #0xc]
ldr r1, [r0, #8]
ldr r0, _021EE548 ; =0xEFFFFFFF
and r1, r0
ldr r0, [sp, #4]
lsl r0, r0, #0x1f
lsr r0, r0, #3
orr r1, r0
ldr r0, [sp, #0xc]
str r1, [r0, #8]
_021EE50A:
ldr r0, [sp, #0x10]
bl ov96_021E8A20
add r4, r0, #0
ldr r0, [sp, #0x14]
strb r6, [r4]
ldr r0, [r0, #0xc]
bl ov96_021EEA80
strb r0, [r4, #1]
ldr r0, [sp, #0x14]
add r0, #0xb8
str r0, [sp, #0x14]
ldr r0, [r0]
strb r0, [r4, #2]
ldr r0, [sp, #8]
ldr r0, [r0, #8]
lsl r0, r0, #3
lsr r0, r0, #0x1f
beq _021EE540
ldr r0, [sp, #8]
ldrb r0, [r0, #0xc]
cmp r6, r0
blo _021EE540
add sp, #0x18
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021EE540:
mov r0, #0
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_021EE548: .word 0xEFFFFFFF
thumb_func_end ov96_021EE440
thumb_func_start ov96_021EE54C
ov96_021EE54C: ; 0x021EE54C
push {r4, r5, r6, lr}
add r5, r0, #0
bl ov96_021E5F54
add r6, r0, #0
add r0, #0xf0
bl ov96_021E8A20
add r4, r0, #0
cmp r5, #0
bne _021EE566
bl GF_AssertFail
_021EE566:
cmp r6, #0
bne _021EE56E
bl GF_AssertFail
_021EE56E:
cmp r4, #0
bne _021EE576
bl GF_AssertFail
_021EE576:
add r4, #0x21
ldrb r0, [r4]
lsl r0, r0, #0x1e
lsr r0, r0, #0x1f
pop {r4, r5, r6, pc}
thumb_func_end ov96_021EE54C
thumb_func_start ov96_021EE580
ov96_021EE580: ; 0x021EE580
push {r4, r5, r6, lr}
add r5, r0, #0
bl ov96_021E5F54
add r6, r0, #0
add r0, #0xf0
bl ov96_021E8A20
add r4, r0, #0
cmp r5, #0
bne _021EE59A
bl GF_AssertFail
_021EE59A:
cmp r6, #0
bne _021EE5A2
bl GF_AssertFail
_021EE5A2:
cmp r4, #0
bne _021EE5AA
bl GF_AssertFail
_021EE5AA:
ldr r0, [r4, #8]
lsl r0, r0, #2
lsr r0, r0, #0x1f
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021EE580
thumb_func_start ov96_021EE5B4
ov96_021EE5B4: ; 0x021EE5B4
push {r4, r5, r6, lr}
add r6, r1, #0
add r5, r0, #0
add r0, r6, #0
mov r1, #0x30
bl AllocFromHeap
add r4, r0, #0
mov r1, #0
mov r2, #0x30
bl MI_CpuFill8
str r6, [r4]
mov r0, #0xdd
add r1, r6, #0
str r5, [r4, #8]
bl NARC_New
str r0, [r4, #0xc]
add r0, r4, #0
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021EE5B4
thumb_func_start ov96_021EE5E0
ov96_021EE5E0: ; 0x021EE5E0
push {r4, r5, r6, lr}
add r6, r0, #0
add r5, r6, #0
mov r4, #0
add r5, #0x10
_021EE5EA:
add r0, r5, #0
bl ClearWindowTilemapAndCopyToVram
add r0, r5, #0
bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #2
blt _021EE5EA
ldr r0, [r6, #0xc]
bl NARC_Delete
add r0, r6, #0
bl FreeToHeap
pop {r4, r5, r6, pc}
thumb_func_end ov96_021EE5E0
thumb_func_start ov96_021EE60C
ov96_021EE60C: ; 0x021EE60C
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
add r5, r7, #0
ldr r4, _021EE640 ; =ov96_0221B19A
str r1, [r7, #4]
mov r6, #0
add r5, #0x10
_021EE61A:
ldr r0, [r7, #4]
add r1, r5, #0
add r2, r4, #0
bl AddWindow
add r0, r5, #0
mov r1, #0
bl FillWindowPixelBuffer
add r0, r5, #0
bl ClearWindowTilemap
add r6, r6, #1
add r4, #8
add r5, #0x10
cmp r6, #2
blt _021EE61A
pop {r3, r4, r5, r6, r7, pc}
nop
_021EE640: .word ov96_0221B19A
thumb_func_end ov96_021EE60C
thumb_func_start ov96_021EE644
ov96_021EE644: ; 0x021EE644
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
ldr r0, [r5, #8]
mov r2, #6
lsl r0, r0, #0x18
lsr r4, r0, #0x18
mov r0, #0
str r0, [sp]
ldr r0, [r5]
mov r1, #0xb
str r0, [sp, #4]
ldr r0, [r5, #0xc]
lsl r3, r2, #0xc
bl GfGfxLoader_GXLoadPalFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r5]
add r1, r4, #0
str r0, [sp, #0xc]
ldr r0, [r5, #0xc]
ldr r2, [r5, #4]
add r1, #0xc
mov r3, #7
bl GfGfxLoader_LoadCharDataFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r5]
add r4, #0x16
str r0, [sp, #0xc]
ldr r0, [r5, #0xc]
ldr r2, [r5, #4]
add r1, r4, #0
mov r3, #7
bl GfGfxLoader_LoadScrnDataFromOpenNarc
add sp, #0x10
pop {r3, r4, r5, pc}
thumb_func_end ov96_021EE644
thumb_func_start ov96_021EE6A0
ov96_021EE6A0: ; 0x021EE6A0
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, [r5, #8]
ldr r2, _021EE6FC ; =0x00000135
lsl r0, r0, #0x18
lsr r4, r0, #0x18
ldr r3, [r5]
mov r0, #1
mov r1, #0x1b
bl NewMsgDataFromNarc
add r6, r0, #0
mov r0, #1
ldr r1, [r5]
lsl r0, r0, #8
bl String_New
add r7, r0, #0
mov r0, #4
str r0, [sp]
add r0, r5, #0
add r3, r4, #0
add r0, #0x10
add r1, r6, #0
add r2, r7, #0
add r3, #0xa6
bl ov96_021EE700
mov r0, #0
add r4, #0xbb
add r5, #0x20
str r0, [sp]
add r0, r5, #0
add r1, r6, #0
add r2, r7, #0
add r3, r4, #0
bl ov96_021EE700
add r0, r7, #0
bl String_Delete
add r0, r6, #0
bl DestroyMsgData
pop {r3, r4, r5, r6, r7, pc}
nop
_021EE6FC: .word 0x00000135
thumb_func_end ov96_021EE6A0
thumb_func_start ov96_021EE700
ov96_021EE700: ; 0x021EE700
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
add r0, r1, #0
add r1, r3, #0
add r4, r2, #0
bl ReadMsgDataIntoString
add r0, r5, #0
mov r1, #0
bl FillWindowPixelBuffer
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021EE73C ; =0x00010200
ldr r1, [sp, #0x20]
str r0, [sp, #8]
add r0, r5, #0
add r2, r4, #0
str r3, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r5, #0
bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, pc}
nop
_021EE73C: .word 0x00010200
thumb_func_end ov96_021EE700
thumb_func_start ov96_021EE740
ov96_021EE740: ; 0x021EE740
push {r3, r4, r5, lr}
mov r1, #0x38
add r5, r0, #0
bl AllocFromHeap
mov r1, #0
mov r2, #0x38
add r4, r0, #0
bl MI_CpuFill8
str r5, [r4, #0x14]
add r0, r4, #0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021EE740
thumb_func_start ov96_021EE75C
ov96_021EE75C: ; 0x021EE75C
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
ldr r0, _021EE7F4 ; =0x00000004
bne _021EE774
ldr r0, [sp, #0x18]
bl Save_PlayerData_GetOptionsAddr
bl Options_GetTextFrameDelay
_021EE774:
mov r1, #0
str r4, [r5]
mvn r1, r1
str r1, [r5, #0x2c]
ldr r2, [r5, #0x34]
ldr r1, _021EE7F8 ; =0xF8FFFFFF
lsl r0, r0, #0x18
and r2, r1
lsl r1, r6, #0x1d
lsr r1, r1, #5
orr r1, r2
str r1, [r5, #0x34]
str r7, [r5, #0x28]
ldr r2, [r5, #0x34]
ldr r1, _021EE7FC ; =0xFF00FFFF
lsr r0, r0, #8
and r1, r2
orr r0, r1
str r0, [r5, #0x34]
ldr r2, _021EE800 ; =0x00000135
ldr r3, [r5, #0x14]
mov r0, #1
mov r1, #0x1b
bl NewMsgDataFromNarc
str r0, [r5, #8]
ldr r2, _021EE804 ; =0x00000137
ldr r3, [r5, #0x14]
mov r0, #1
mov r1, #0x1b
bl NewMsgDataFromNarc
str r0, [r5, #0xc]
ldr r0, [r5, #0x14]
bl MessageFormat_New
str r0, [r5, #4]
bl ResetAllTextPrinters
ldr r1, [r5, #0x34]
ldr r0, [r5]
lsl r1, r1, #5
lsr r1, r1, #0x1d
lsl r1, r1, #0x18
ldr r2, [r5, #0x14]
lsr r1, r1, #0x18
bl ov96_021EE9D8
mov r1, #0x1e
ldr r2, [r5, #0x14]
mov r0, #4
lsl r1, r1, #4
bl LoadFontPal0
mov r2, #0
str r2, [sp]
ldr r1, [r5, #0x34]
ldr r0, [r5]
lsl r1, r1, #5
lsr r1, r1, #0x1d
mov r3, #1
bl BG_FillCharDataRange
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021EE7F4: .word 0x00000004
_021EE7F8: .word 0xF8FFFFFF
_021EE7FC: .word 0xFF00FFFF
_021EE800: .word 0x00000135
_021EE804: .word 0x00000137
thumb_func_end ov96_021EE75C
thumb_func_start ov96_021EE808
ov96_021EE808: ; 0x021EE808
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #8]
bl DestroyMsgData
ldr r0, [r4, #0xc]
bl DestroyMsgData
ldr r0, [r4, #4]
bl MessageFormat_Delete
ldr r0, [r4, #0x10]
cmp r0, #0
beq _021EE828
bl String_Delete
_021EE828:
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
thumb_func_end ov96_021EE808
thumb_func_start ov96_021EE830
ov96_021EE830: ; 0x021EE830
push {r4, lr}
add r4, r0, #0
mov r0, #0
ldr r1, [r4, #0x2c]
mvn r0, r0
cmp r1, r0
beq _021EE870
lsl r0, r1, #0x18
lsr r0, r0, #0x18
bl TextPrinterCheckActive
cmp r0, #0
bne _021EE864
ldr r1, [r4, #0x34]
ldr r0, _021EE8C4 ; =0xFFFF0000
and r1, r0
mov r0, #0x14
orr r0, r1
str r0, [r4, #0x34]
ldr r0, [r4, #0x10]
bl String_Delete
mov r0, #0
str r0, [r4, #0x10]
sub r0, r0, #1
str r0, [r4, #0x2c]
_021EE864:
mov r0, #1
ldr r1, [r4, #0x34]
lsl r0, r0, #0x1c
orr r0, r1
str r0, [r4, #0x34]
b _021EE8BC
_021EE870:
beq _021EE876
bl GF_AssertFail
_021EE876:
ldr r1, [r4, #0x34]
lsl r0, r1, #0x10
lsr r2, r0, #0x10
beq _021EE8B6
ldr r0, [r4, #0x28]
cmp r0, #0
bne _021EE88C
ldr r0, _021EE8C8 ; =0xEFFFFFFF
and r0, r1
str r0, [r4, #0x34]
b _021EE8BC
_021EE88C:
ldr r0, _021EE8C4 ; =0xFFFF0000
and r1, r0
sub r0, r2, #1
lsl r0, r0, #0x10
lsr r0, r0, #0x10
orr r0, r1
str r0, [r4, #0x34]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
beq _021EE8A4
mov r2, #1
b _021EE8A6
_021EE8A4:
mov r2, #0
_021EE8A6:
ldr r1, [r4, #0x34]
ldr r0, _021EE8C8 ; =0xEFFFFFFF
and r1, r0
lsl r0, r2, #0x1f
lsr r0, r0, #3
orr r0, r1
str r0, [r4, #0x34]
b _021EE8BC
_021EE8B6:
ldr r0, _021EE8C8 ; =0xEFFFFFFF
and r0, r1
str r0, [r4, #0x34]
_021EE8BC:
ldr r0, [r4, #0x34]
lsl r0, r0, #3
lsr r0, r0, #0x1f
pop {r4, pc}
.balign 4, 0
_021EE8C4: .word 0xFFFF0000
_021EE8C8: .word 0xEFFFFFFF
thumb_func_end ov96_021EE830
thumb_func_start ov96_021EE8CC
ov96_021EE8CC: ; 0x021EE8CC
push {r3, r4, lr}
sub sp, #0x14
add r4, r0, #0
ldr r0, [r4, #4]
add r2, r4, #0
str r0, [sp]
ldr r0, [r4, #8]
add r2, #0x10
str r0, [sp, #4]
str r1, [sp, #8]
ldr r0, [r4, #0x34]
add r1, r4, #0
lsl r0, r0, #5
lsr r0, r0, #0x1d
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xc]
ldr r0, [r4, #0x14]
add r1, #0x18
str r0, [sp, #0x10]
ldr r3, [r4, #0x34]
ldr r0, [r4]
lsl r3, r3, #8
lsr r3, r3, #0x18
bl ov96_021EEA08
str r0, [r4, #0x2c]
add sp, #0x14
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov96_021EE8CC
thumb_func_start ov96_021EE908
ov96_021EE908: ; 0x021EE908
push {r3, r4, lr}
sub sp, #0x14
add r4, r0, #0
ldr r0, [r4, #4]
add r2, r4, #0
str r0, [sp]
ldr r0, [r4, #0xc]
add r2, #0x10
str r0, [sp, #4]
str r1, [sp, #8]
ldr r0, [r4, #0x34]
add r1, r4, #0
lsl r0, r0, #5
lsr r0, r0, #0x1d
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xc]
ldr r0, [r4, #0x14]
add r1, #0x18
str r0, [sp, #0x10]
ldr r3, [r4, #0x34]
ldr r0, [r4]
lsl r3, r3, #8
lsr r3, r3, #0x18
bl ov96_021EEA08
str r0, [r4, #0x2c]
add sp, #0x14
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov96_021EE908
thumb_func_start ov96_021EE944
ov96_021EE944: ; 0x021EE944
push {r4, lr}
add r4, r0, #0
mov r0, #0
ldr r1, [r4, #0x2c]
mvn r0, r0
cmp r1, r0
beq _021EE95A
lsl r0, r1, #0x18
lsr r0, r0, #0x18
bl RemoveTextPrinter
_021EE95A:
ldr r0, [r4, #0x18]
cmp r0, #0
beq _021EE97A
add r0, r4, #0
add r0, #0x18
mov r1, #0
bl ClearFrameAndWindow2
add r0, r4, #0
add r0, #0x18
bl ClearWindowTilemapAndCopyToVram
add r4, #0x18
add r0, r4, #0
bl RemoveWindow
_021EE97A:
pop {r4, pc}
thumb_func_end ov96_021EE944
thumb_func_start ov96_021EE97C
ov96_021EE97C: ; 0x021EE97C
push {r4, lr}
add r4, r0, #0
bne _021EE986
bl GF_AssertFail
_021EE986:
ldr r0, [r4, #4]
cmp r0, #0
bne _021EE990
bl GF_AssertFail
_021EE990:
ldr r0, [r4, #4]
pop {r4, pc}
thumb_func_end ov96_021EE97C
thumb_func_start ov96_021EE994
ov96_021EE994: ; 0x021EE994
push {r4, lr}
add r4, r0, #0
bne _021EE99E
bl GF_AssertFail
_021EE99E:
ldr r0, [r4, #0x30]
cmp r0, #0
beq _021EE9A8
bl GF_AssertFail
_021EE9A8:
add r0, r4, #0
ldr r1, _021EE9B8 ; =0x000003D2
add r0, #0x18
bl WaitingIcon_New
str r0, [r4, #0x30]
pop {r4, pc}
nop
_021EE9B8: .word 0x000003D2
thumb_func_end ov96_021EE994
thumb_func_start ov96_021EE9BC
ov96_021EE9BC: ; 0x021EE9BC
push {r4, lr}
add r4, r0, #0
bne _021EE9C6
bl GF_AssertFail
_021EE9C6:
ldr r0, [r4, #0x30]
cmp r0, #0
bne _021EE9D0
bl GF_AssertFail
_021EE9D0:
ldr r0, [r4, #0x30]
bl sub_0200F450
pop {r4, pc}
thumb_func_end ov96_021EE9BC
thumb_func_start ov96_021EE9D8
ov96_021EE9D8: ; 0x021EE9D8
push {r4, r5, r6, lr}
sub sp, #8
add r6, r1, #0
mov r1, #7
add r5, r0, #0
mov r0, #4
lsl r1, r1, #6
add r4, r2, #0
bl LoadFontPal0
mov r0, #0
str r0, [sp]
ldr r2, _021EEA04 ; =0x000003D2
add r0, r5, #0
add r1, r6, #0
mov r3, #0xd
str r4, [sp, #4]
bl LoadUserFrameGfx2
add sp, #8
pop {r4, r5, r6, pc}
nop
_021EEA04: .word 0x000003D2
thumb_func_end ov96_021EE9D8
thumb_func_start ov96_021EEA08
ov96_021EEA08: ; 0x021EEA08
push {r3, r4, r5, r6, lr}
sub sp, #0x14
add r5, r1, #0
add r4, r2, #0
ldr r2, [r5]
add r6, r3, #0
cmp r2, #0
bne _021EEA36
mov r2, #0x13
str r2, [sp]
mov r2, #0x1b
str r2, [sp, #4]
mov r2, #4
str r2, [sp, #8]
mov r2, #0xf
str r2, [sp, #0xc]
mov r2, #1
str r2, [sp, #0x10]
add r2, sp, #0x18
ldrb r2, [r2, #0x1c]
mov r3, #2
bl AddWindowParameterized
_021EEA36:
add r0, r5, #0
mov r1, #0xf
bl FillWindowPixelBuffer
ldr r0, [sp, #0x28]
ldr r1, [sp, #0x2c]
ldr r2, [sp, #0x30]
ldr r3, [sp, #0x38]
bl ReadMsgData_ExpandPlaceholders
str r0, [r4]
mov r3, #0
str r3, [sp]
ldr r0, _021EEA78 ; =0x0001020F
str r6, [sp, #4]
str r0, [sp, #8]
str r3, [sp, #0xc]
ldr r2, [r4]
add r0, r5, #0
mov r1, #1
bl AddTextPrinterParameterizedWithColor
add r4, r0, #0
ldr r2, _021EEA7C ; =0x000003D2
add r0, r5, #0
mov r1, #0
mov r3, #0xd
bl DrawFrameAndWindow2
add r0, r4, #0
add sp, #0x14
pop {r3, r4, r5, r6, pc}
nop
_021EEA78: .word 0x0001020F
_021EEA7C: .word 0x000003D2
thumb_func_end ov96_021EEA08
thumb_func_start ov96_021EEA80
ov96_021EEA80: ; 0x021EEA80
ldr r0, [r0, #0x34]
lsl r0, r0, #3
lsr r0, r0, #0x1f
bx lr
thumb_func_end ov96_021EEA80
thumb_func_start ov96_021EEA88
ov96_021EEA88: ; 0x021EEA88
push {r3, lr}
ldr r0, [r0]
bl ov96_021EEA94
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_021EEA88
thumb_func_start ov96_021EEA94
ov96_021EEA94: ; 0x021EEA94
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r5, r1, #0
str r3, [sp, #0xc]
mov r1, #0
add r6, r0, #0
add r4, r2, #0
bl thunk_Set2dSpriteVisibleFlag
ldr r1, [sp, #0xc]
mov r0, #0x51
bl NARC_New
ldr r2, [sp, #0xc]
add r1, r5, #0
str r0, [sp, #0x14]
bl NARC_AllocAndReadWholeMember
str r0, [sp, #0x10]
bl NNS_G3dGetTex
add r5, r0, #0
beq _021EEAE8
add r0, #0x3c
beq _021EEAE4
add r1, r5, #0
add r1, #0x3d
ldrb r1, [r1]
cmp r4, r1
bhs _021EEAE4
add r1, r5, #0
add r1, #0x42
ldrh r1, [r1]
add r2, r0, r1
ldrh r0, [r0, r1]
add r2, r2, #4
add r1, r0, #0
mul r1, r4
add r0, r2, r1
b _021EEAEA
_021EEAE4:
mov r0, #0
b _021EEAEA
_021EEAE8:
mov r0, #0
_021EEAEA:
ldr r0, [r0]
mov r1, #2
lsl r0, r0, #0x10
lsr r4, r0, #0xd
ldr r0, [r5, #0x14]
lsl r1, r1, #8
add r7, r5, r0
ldr r0, [sp, #0xc]
bl AllocFromHeapAtEnd
mov r1, #4
str r1, [sp]
str r1, [sp, #4]
mov r2, #0
str r0, [sp, #0x18]
str r0, [sp, #8]
add r0, r7, r4
add r3, r2, #0
bl sub_020145B4
mov r2, #2
ldr r1, [sp, #0x18]
add r0, r6, #0
lsl r2, r2, #8
bl ov96_021EED64
ldr r0, [sp, #0x18]
bl FreeToHeap
add r0, r6, #0
bl Sprite_GetVramType
ldr r4, [r5, #0x38]
add r7, r0, #0
add r0, r5, r4
mov r1, #0x20
bl DC_FlushRange
add r0, r6, #0
bl sub_02024B34
add r1, r7, #0
bl NNS_G2dGetImagePaletteLocation
add r1, r0, #0
cmp r7, #1
bne _021EEB52
add r0, r5, r4
mov r2, #0x20
bl GX_LoadOBJPltt
b _021EEB5A
_021EEB52:
add r0, r5, r4
mov r2, #0x20
bl GXS_LoadOBJPltt
_021EEB5A:
ldr r0, [sp, #0x10]
bl FreeToHeap
ldr r0, [sp, #0x14]
bl NARC_Delete
add r0, r6, #0
mov r1, #1
bl thunk_Set2dSpriteVisibleFlag
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EEA94
thumb_func_start ov96_021EEB74
ov96_021EEB74: ; 0x021EEB74
push {r4, lr}
lsl r4, r2, #2
ldr r0, [r0, r4]
ldr r0, [r0]
bl ov96_021EEB84
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021EEB74
thumb_func_start ov96_021EEB84
ov96_021EEB84: ; 0x021EEB84
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r6, r0, #0
add r0, r4, #0
add r1, r2, #0
add r5, r3, #0
bl ov96_021E5F34
add r7, r0, #0
add r0, r4, #0
bl PokeathlonOvy_GetHeapID
add r4, r0, #0
add r0, r7, #0
bl PlayerProfile_GetTrainerGender
cmp r0, #0
bne _021EEBB0
mov r0, #0
bl ov96_021EEBC8
b _021EEBB6
_021EEBB0:
mov r0, #1
bl ov96_021EEBC8
_021EEBB6:
lsl r2, r5, #0x18
add r1, r0, #0
add r0, r6, #0
lsr r2, r2, #0x18
add r3, r4, #0
bl ov96_021EEA94
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EEB84
thumb_func_start ov96_021EEBC8
ov96_021EEBC8: ; 0x021EEBC8
push {r4, lr}
add r4, r0, #0
cmp r4, #6
blo _021EEBD4
bl GF_AssertFail
_021EEBD4:
ldr r0, _021EEBE0 ; =ov96_0221B1BC
lsl r1, r4, #2
ldr r0, [r0, r1]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
pop {r4, pc}
.balign 4, 0
_021EEBE0: .word ov96_0221B1BC
thumb_func_end ov96_021EEBC8
thumb_func_start ov96_021EEBE4
ov96_021EEBE4: ; 0x021EEBE4
push {r4, lr}
sub sp, #8
ldr r4, [sp, #0x10]
str r4, [sp]
mov r4, #1
str r4, [sp, #4]
bl ov96_021EEC0C
add sp, #8
pop {r4, pc}
thumb_func_end ov96_021EEBE4
thumb_func_start ov96_021EEBF8
ov96_021EEBF8: ; 0x021EEBF8
push {r4, lr}
sub sp, #8
ldr r4, [sp, #0x10]
str r4, [sp]
ldr r4, [sp, #0x14]
str r4, [sp, #4]
bl ov96_021EEC0C
add sp, #8
pop {r4, pc}
thumb_func_end ov96_021EEBF8
thumb_func_start ov96_021EEC0C
ov96_021EEC0C: ; 0x021EEC0C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
add r4, r1, #0
ldrh r1, [r4]
add r5, r0, #0
add r6, r3, #0
str r2, [sp, #0x14]
cmp r1, #0
bne _021EEC28
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
_021EEC28:
ldrb r0, [r4, #6]
mov r3, #2
str r0, [sp]
ldrh r0, [r4, #2]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
ldr r0, [r4, #0xc]
str r0, [sp, #8]
ldrb r2, [r4, #7]
add r0, sp, #0x28
bl GetMonSpriteCharAndPlttNarcIdsEx
ldr r3, _021EECB4 ; =ov96_0221B1AC
add r2, sp, #0x18
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
mov r1, #0x32
ldr r0, [sp, #0x50]
lsl r1, r1, #6
bl AllocFromHeapAtEnd
add r7, r0, #0
str r7, [sp]
ldr r0, [r4, #0xc]
add r1, sp, #0x18
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
mov r0, #2
str r0, [sp, #0xc]
ldrh r0, [r4]
ldr r2, [sp, #0x50]
add r3, sp, #0x18
str r0, [sp, #0x10]
ldrh r0, [r1, #0x10]
ldrh r1, [r1, #0x12]
bl sub_02014510
mov r2, #0x32
ldr r0, [r5]
add r1, r7, #0
lsl r2, r2, #6
bl ov96_021EED64
ldr r0, [sp, #0x54]
cmp r0, #0
beq _021EECA0
ldr r0, [sp, #0x50]
str r6, [sp]
str r0, [sp, #4]
add r2, sp, #0x18
ldrh r1, [r2, #0x10]
ldrh r2, [r2, #0x14]
ldr r3, [sp, #0x14]
add r0, r5, #0
bl ov96_021EED70
_021EECA0:
add r0, r5, #0
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
add r0, r7, #0
bl FreeToHeap
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
nop
_021EECB4: .word ov96_0221B1AC
thumb_func_end ov96_021EEC0C
thumb_func_start ov96_021EECB8
ov96_021EECB8: ; 0x021EECB8
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r4, r1, #0
add r5, r0, #0
add r6, r2, #0
ldrh r0, [r4]
ldrh r2, [r4, #2]
mov r1, #0
add r7, r3, #0
bl GetMonIconNaixEx
add r1, r0, #0
ldr r0, [sp, #0x24]
mov r2, #0
str r0, [sp]
add r0, r7, #0
add r3, sp, #4
bl GfGfxLoader_GetCharDataFromOpenNarc
add r7, r0, #0
bne _021EECE6
bl GF_AssertFail
_021EECE6:
ldr r1, [sp, #4]
mov r2, #2
ldr r0, [r5]
ldr r1, [r1, #0x14]
ldr r3, [sp, #0x20]
lsl r2, r2, #8
bl ov96_021EED14
add r0, r7, #0
bl FreeToHeap
ldrh r0, [r4]
ldrh r1, [r4, #2]
mov r2, #0
bl GetMonIconPaletteEx
add r1, r0, #0
add r0, r5, #0
add r1, r6, r1
bl UnkImageStruct_SetSpritePalIndex
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021EECB8
thumb_func_start ov96_021EED14
ov96_021EED14: ; 0x021EED14
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
add r7, r1, #0
str r2, [sp]
add r5, r3, #0
bl Sprite_GetVramType
add r4, r0, #0
add r0, r6, #0
bl sub_02024B1C
add r1, r4, #0
bl NNS_G2dGetImageLocation
add r6, r0, #0
ldr r1, [sp]
add r0, r7, #0
bl DC_FlushRange
cmp r4, #1
beq _021EED44
cmp r4, #2
beq _021EED50
b _021EED5C
_021EED44:
ldr r2, [sp]
add r0, r7, #0
add r1, r6, r5
bl GX_LoadOBJ
pop {r3, r4, r5, r6, r7, pc}
_021EED50:
ldr r2, [sp]
add r0, r7, #0
add r1, r6, r5
bl GXS_LoadOBJ
pop {r3, r4, r5, r6, r7, pc}
_021EED5C:
bl GF_AssertFail
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021EED14
thumb_func_start ov96_021EED64
ov96_021EED64: ; 0x021EED64
push {r3, lr}
mov r3, #0
bl ov96_021EED14
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_021EED64
thumb_func_start ov96_021EED70
ov96_021EED70: ; 0x021EED70
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r7, r1, #0
str r2, [sp, #8]
add r4, r3, #0
beq _021EED82
mov r5, #1
add r6, r5, #0
b _021EED86
_021EED82:
mov r5, #2
mov r6, #5
_021EED86:
ldr r0, [r0]
bl sub_02024B34
add r1, r5, #0
bl NNS_G2dGetImagePaletteLocation
add r5, r0, #0
mov r0, #0x20
str r0, [sp]
ldr r0, [sp, #0x24]
ldr r1, [sp, #8]
str r0, [sp, #4]
add r0, r7, #0
add r2, r6, #0
add r3, r5, #0
bl GfGfxLoader_GXLoadPal
ldr r0, [sp, #0x20]
cmp r0, #0
beq _021EEDC0
cmp r4, #0
beq _021EEDB6
ldr r0, _021EEDC4 ; =0x05000200
b _021EEDB8
_021EEDB6:
ldr r0, _021EEDC8 ; =0x05000600
_021EEDB8:
add r0, r5, r0
mov r1, #0x20
bl sub_02003F04
_021EEDC0:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021EEDC4: .word 0x05000200
_021EEDC8: .word 0x05000600
thumb_func_end ov96_021EED70
thumb_func_start ov96_021EEDCC
ov96_021EEDCC: ; 0x021EEDCC
push {r3, r4, r5, lr}
ldr r5, _021EEDFC ; =ov96_0221B1D4
ldr r1, _021EEE00 ; =0x0000270F
ldr r2, _021EEE04 ; =0x0000FFFF
mov r4, #0
_021EEDD6:
cmp r4, r2
bne _021EEDDE
mov r0, #0
pop {r3, r4, r5, pc}
_021EEDDE:
ldr r3, [r5]
cmp r0, r3
bne _021EEDEC
ldr r0, _021EEE08 ; =ov96_0221B1D8
lsl r1, r4, #3
ldr r0, [r0, r1]
pop {r3, r4, r5, pc}
_021EEDEC:
add r4, r4, #1
add r5, #8
cmp r4, r1
blt _021EEDD6
bl GF_AssertFail
mov r0, #0
pop {r3, r4, r5, pc}
.balign 4, 0
_021EEDFC: .word ov96_0221B1D4
_021EEE00: .word 0x0000270F
_021EEE04: .word 0x0000FFFF
_021EEE08: .word ov96_0221B1D8
thumb_func_end ov96_021EEDCC
thumb_func_start ov96_021EEE0C
ov96_021EEE0C: ; 0x021EEE0C
push {r4, r5, lr}
sub sp, #0xc
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
add r0, r5, #0
bl ov96_021E5DD4
cmp r0, #3
bhi _021EEEAE
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021EEE2E: ; jump table
.short _021EEE36 - _021EEE2E - 2 ; case 0
.short _021EEE44 - _021EEE2E - 2 ; case 1
.short _021EEE78 - _021EEE2E - 2 ; case 2
.short _021EEE90 - _021EEE2E - 2 ; case 3
_021EEE36:
add r0, r5, #0
bl ov96_021EEFAC
add r0, r5, #0
bl ov96_021E5DEC
b _021EEEB2
_021EEE44:
mov r0, #1
bl sub_0203A994
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineATogglePlanes
mov r0, #0x10
mov r1, #0
bl GfGfx_EngineBTogglePlanes
mov r0, #4
mov r1, #1
str r0, [sp]
str r1, [sp, #4]
ldr r0, [r4]
add r2, r1, #0
str r0, [sp, #8]
mov r0, #0
add r3, r0, #0
bl BeginNormalPaletteFade
add r0, r5, #0
bl ov96_021E5DEC
b _021EEEB2
_021EEE78:
bl IsPaletteFadeFinished
cmp r0, #0
beq _021EEEB2
ldr r0, [r4, #8]
ldr r1, _021EEEB8 ; =0x00000136
bl ov96_021EE8CC
add r0, r5, #0
bl ov96_021E5DEC
b _021EEEB2
_021EEE90:
ldr r0, [r4, #8]
bl ov96_021EE830
cmp r0, #0
bne _021EEEB2
ldr r0, [r4, #8]
bl ov96_021EE994
add r0, r5, #0
mov r1, #0x11
bl ov96_021E601C
add sp, #0xc
mov r0, #1
pop {r4, r5, pc}
_021EEEAE:
bl GF_AssertFail
_021EEEB2:
mov r0, #0
add sp, #0xc
pop {r4, r5, pc}
.balign 4, 0
_021EEEB8: .word 0x00000136
thumb_func_end ov96_021EEE0C
thumb_func_start ov96_021EEEBC
ov96_021EEEBC: ; 0x021EEEBC
mov r0, #1
bx lr
thumb_func_end ov96_021EEEBC
thumb_func_start ov96_021EEEC0
ov96_021EEEC0: ; 0x021EEEC0
push {r3, lr}
bl ov96_021EF05C
mov r0, #1
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_021EEEC0
thumb_func_start ov96_021EEECC
ov96_021EEECC: ; 0x021EEECC
push {r4, lr}
sub sp, #0x28
ldr r4, _021EEEE8 ; =ov96_0221B9E8
add r3, sp, #0
mov r2, #5
_021EEED6:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _021EEED6
add r0, sp, #0
bl GfGfx_SetBanks
add sp, #0x28
pop {r4, pc}
.balign 4, 0
_021EEEE8: .word ov96_0221B9E8
thumb_func_end ov96_021EEECC
thumb_func_start ov96_021EEEEC
ov96_021EEEEC: ; 0x021EEEEC
push {r3, lr}
ldr r0, [r0, #4]
bl DoScheduledBgGpuUpdates
ldr r3, _021EEF04 ; =0x027E0000
ldr r1, _021EEF08 ; =0x00003FF8
mov r0, #1
ldr r2, [r3, r1]
orr r0, r2
str r0, [r3, r1]
pop {r3, pc}
nop
_021EEF04: .word 0x027E0000
_021EEF08: .word 0x00003FF8
thumb_func_end ov96_021EEEEC
thumb_func_start ov96_021EEF0C
ov96_021EEF0C: ; 0x021EEF0C
push {r3, r4, r5, r6, lr}
sub sp, #0x2c
ldr r6, _021EEF90 ; =ov96_0221B9BC
add r3, sp, #0x1c
add r5, r0, #0
add r4, r1, #0
add r2, r3, #0
ldmia r6!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r6!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl SetBothScreensModesAndDisable
ldr r6, _021EEF94 ; =ov96_0221B9CC
add r3, sp, #0
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r6!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r6!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r6]
mov r1, #0
str r0, [r3]
add r0, r5, #0
add r3, r1, #0
bl InitBgFromTemplate
add r0, r5, #0
mov r1, #0
bl BgClearTilemapBufferAndCommit
mov r0, #0
mov r1, #0x40
add r2, r0, #0
add r3, r4, #0
bl BG_ClearCharDataRange
mov r0, #8
mov r1, #0
bl GfGfx_EngineATogglePlanes
mov r0, #4
mov r1, #0
bl GfGfx_EngineATogglePlanes
mov r0, #2
mov r1, #0
bl GfGfx_EngineATogglePlanes
mov r0, #1
add r1, r0, #0
bl GfGfx_EngineATogglePlanes
mov r0, #0
add r1, r0, #0
bl BG_SetMaskColor
mov r0, #4
mov r1, #0
bl BG_SetMaskColor
add sp, #0x2c
pop {r3, r4, r5, r6, pc}
.balign 4, 0
_021EEF90: .word ov96_0221B9BC
_021EEF94: .word ov96_0221B9CC
thumb_func_end ov96_021EEF0C
thumb_func_start ov96_021EEF98
ov96_021EEF98: ; 0x021EEF98
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #4]
mov r1, #0
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
bl FreeToHeap
pop {r4, pc}
thumb_func_end ov96_021EEF98
thumb_func_start ov96_021EEFAC
ov96_021EEFAC: ; 0x021EEFAC
push {r3, r4, r5, r6, lr}
sub sp, #4
mov r2, #1
add r5, r0, #0
mov r1, #0x9f
mov r0, #0x5c
lsl r2, r2, #0x12
bl CreateHeap
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
bl GfGfx_DisableEngineAPlanes
bl GfGfx_DisableEngineBPlanes
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _021EF04C ; =0xFFFFE0FF
and r1, r0
str r1, [r2]
ldr r2, _021EF050 ; =0x04001000
ldr r1, [r2]
and r0, r1
str r0, [r2]
bl ov96_021EEECC
add r0, r5, #0
mov r1, #0x10
bl ov96_021E5D94
mov r1, #0
mov r2, #0x10
add r4, r0, #0
bl MI_CpuFill8
mov r0, #0x9f
str r0, [r4]
bl BgConfig_Alloc
str r0, [r4, #4]
ldr r1, [r4]
bl ov96_021EEF0C
ldr r0, [r4]
bl ov96_021EE740
str r0, [r4, #8]
add r0, r5, #0
bl ov96_021E5EE8
add r6, r0, #0
add r0, r5, #0
bl ov96_021E5D60
str r0, [sp]
ldr r0, [r4, #8]
ldr r1, [r4, #4]
mov r2, #0
add r3, r6, #0
bl ov96_021EE75C
ldr r0, _021EF054 ; =ov96_021EEEEC
add r1, r4, #0
bl Main_SetVBlankIntrCB
ldr r0, _021EF058 ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
add sp, #4
pop {r3, r4, r5, r6, pc}
nop
_021EF04C: .word 0xFFFFE0FF
_021EF050: .word 0x04001000
_021EF054: .word ov96_021EEEEC
_021EF058: .word gSystem + 0x60
thumb_func_end ov96_021EEFAC
thumb_func_start ov96_021EF05C
ov96_021EF05C: ; 0x021EF05C
push {r3, r4, r5, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
bl sub_0203A914
ldr r0, [r4, #8]
bl ov96_021EE808
add r0, r4, #0
bl ov96_021EEF98
add r0, r5, #0
bl ov96_021E5DAC
mov r0, #0x9f
bl DestroyHeap
pop {r3, r4, r5, pc}
thumb_func_end ov96_021EF05C
thumb_func_start ov96_021EF094
ov96_021EF094: ; 0x021EF094
push {r4, r5, lr}
sub sp, #0xc
add r5, r1, #0
bl ov96_021E5DC4
add r4, r0, #0
ldrb r0, [r5]
cmp r0, #0
beq _021EF0AC
cmp r0, #1
beq _021EF0DC
b _021EF0F0
_021EF0AC:
ldr r0, [r4, #0xc]
add r0, r0, #1
str r0, [r4, #0xc]
cmp r0, #0xf
ble _021EF0F4
ldr r0, [r4, #8]
bl ov96_021EE9BC
mov r0, #4
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4]
str r0, [sp, #8]
mov r0, #0
add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
bl BeginNormalPaletteFade
ldrb r0, [r5]
add r0, r0, #1
strb r0, [r5]
b _021EF0F4
_021EF0DC:
bl IsPaletteFadeFinished
cmp r0, #0
beq _021EF0F4
ldr r0, [r4, #8]
bl ov96_021EE944
add sp, #0xc
mov r0, #1
pop {r4, r5, pc}
_021EF0F0:
bl GF_AssertFail
_021EF0F4:
mov r0, #0
add sp, #0xc
pop {r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021EF094
thumb_func_start ov96_021EF0FC
ov96_021EF0FC: ; 0x021EF0FC
push {r3, r4, r5, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
add r0, r5, #0
bl ov96_021E5DD4
cmp r0, #0
beq _021EF116
cmp r0, #1
beq _021EF124
b _021EF182
_021EF116:
add r0, r5, #0
bl ov96_021EF2C0
add r0, r5, #0
bl ov96_021E5DEC
b _021EF186
_021EF124:
add r0, r4, #0
bl ov96_021EF818
ldr r0, [r4, #4]
ldr r1, [r4, #0xc]
bl ov96_021EF4D0
add r0, r4, #0
add r0, #0x20
ldrb r0, [r0]
ldr r1, [r4, #0xc]
bl ov96_021EE5B4
str r0, [r4, #0x34]
ldr r1, [r4, #4]
bl ov96_021EE60C
add r0, r4, #0
bl ov96_021EF54C
ldr r0, [r4, #0x34]
bl ov96_021EE644
add r0, r4, #0
bl ov96_021EFA28
mov r0, #2
bl sub_0203A994
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineATogglePlanes
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineBTogglePlanes
add r0, r5, #0
mov r1, #1
bl ov96_021E5DFC
add r0, r5, #0
mov r1, #0
bl ov96_021E5DE0
mov r0, #1
pop {r3, r4, r5, pc}
_021EF182:
bl GF_AssertFail
_021EF186:
mov r0, #0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021EF0FC
thumb_func_start ov96_021EF18C
ov96_021EF18C: ; 0x021EF18C
push {r3, lr}
bl ov96_021E5DC4
ldr r0, [r0, #0x14]
bl sub_0200D020
mov r0, #1
pop {r3, pc}
thumb_func_end ov96_021EF18C
thumb_func_start ov96_021EF19C
ov96_021EF19C: ; 0x021EF19C
push {r3, r4, r5, r6, r7, lr}
str r0, [sp]
bl ov96_021E5DC4
add r6, r0, #0
ldr r0, [r6, #8]
bl NARC_Delete
bl sub_0203A914
ldr r0, [r6, #0x34]
bl ov96_021EE5E0
ldr r0, [r6, #0x30]
mov r1, #0xc
bl ov98_0221EB84
ldr r5, _021EF230 ; =ov96_0221BA18
mov r4, #0
_021EF1C2:
ldrb r1, [r5]
ldr r0, [r6, #4]
bl FreeBgTilemapBuffer
add r4, r4, #1
add r5, r5, #1
cmp r4, #7
blt _021EF1C2
ldr r0, [r6, #4]
bl FreeToHeap
mov r5, #0
add r4, r6, #0
add r7, r5, #0
_021EF1DE:
ldr r0, [r4, #0x38]
cmp r0, #0
beq _021EF1EA
bl sub_0200D9DC
str r7, [r4, #0x38]
_021EF1EA:
add r5, r5, #1
add r4, r4, #4
cmp r5, #4
blt _021EF1DE
ldr r0, [r6, #0x10]
ldr r1, [r6, #0x14]
bl SpriteRenderer_UnloadResourcesAndRemoveGfxHandler
ldr r0, [r6, #0x10]
bl SpriteRenderer_Delete
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
ldr r0, [sp]
bl ov96_021E5DAC
ldr r0, _021EF234 ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
ldr r0, _021EF238 ; =FS_OVERLAY_ID(OVY_98)
bl UnloadOverlayByID
mov r0, #0x88
bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021EF230: .word ov96_0221BA18
_021EF234: .word gSystem + 0x60
_021EF238: .word FS_OVERLAY_ID(OVY_98)
thumb_func_end ov96_021EF19C
thumb_func_start ov96_021EF23C
ov96_021EF23C: ; 0x021EF23C
push {r4, lr}
add r4, r0, #0
bl thunk_OamManager_ApplyAndResetBuffers
ldr r0, [r4, #4]
bl DoScheduledBgGpuUpdates
ldr r3, _021EF258 ; =0x027E0000
ldr r1, _021EF25C ; =0x00003FF8
mov r0, #1
ldr r2, [r3, r1]
orr r0, r2
str r0, [r3, r1]
pop {r4, pc}
.balign 4, 0
_021EF258: .word 0x027E0000
_021EF25C: .word 0x00003FF8
thumb_func_end ov96_021EF23C
thumb_func_start ov96_021EF260
ov96_021EF260: ; 0x021EF260
push {r4, lr}
sub sp, #0x28
ldr r4, _021EF27C ; =ov96_0221BAC0
add r3, sp, #0
mov r2, #5
_021EF26A:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _021EF26A
add r0, sp, #0
bl GfGfx_SetBanks
add sp, #0x28
pop {r4, pc}
.balign 4, 0
_021EF27C: .word ov96_0221BAC0
thumb_func_end ov96_021EF260
thumb_func_start ov96_021EF280
ov96_021EF280: ; 0x021EF280
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
bl GF_GetCurrentPlayingBGM
add r1, r5, #0
add r2, sp, #0
bl sub_02005B78
add r1, sp, #0
mov r0, #0
ldrsh r1, [r1, r0]
cmp r1, r4
blt _021EF29E
mov r0, #1
_021EF29E:
pop {r3, r4, r5, pc}
thumb_func_end ov96_021EF280
thumb_func_start ov96_021EF2A0
ov96_021EF2A0: ; 0x021EF2A0
push {r3, lr}
bl ov96_021E5E44
lsl r0, r0, #0x18
lsr r0, r0, #0x18
pop {r3, pc}
thumb_func_end ov96_021EF2A0
thumb_func_start ov96_021EF2AC
ov96_021EF2AC: ; 0x021EF2AC
push {r3, lr}
bl ov96_021E5D60
bl Save_VarsFlags_Get
mov r1, #0xef
bl Save_VarsFlags_CheckFlagInArray
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_021EF2AC
thumb_func_start ov96_021EF2C0
ov96_021EF2C0: ; 0x021EF2C0
push {r4, r5, r6, lr}
add r5, r0, #0
bl ov96_021E5DC4
mov r2, #1
mov r0, #0x5c
mov r1, #0x88
lsl r2, r2, #0x12
bl CreateHeap
ldr r0, _021EF390 ; =FS_OVERLAY_ID(OVY_98)
mov r1, #2
mov r6, #0x88
bl HandleLoadOverlay
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
bl GfGfx_DisableEngineAPlanes
bl GfGfx_DisableEngineBPlanes
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _021EF394 ; =0xFFFFE0FF
and r1, r0
str r1, [r2]
ldr r2, _021EF398 ; =0x04001000
ldr r1, [r2]
and r0, r1
str r0, [r2]
bl ov96_021EF260
add r0, r5, #0
mov r1, #0x48
bl ov96_021E5D94
mov r1, #0
mov r2, #0x48
add r4, r0, #0
bl MI_CpuFill8
mov r0, #0xdd
add r1, r6, #0
bl NARC_New
str r0, [r4, #8]
add r0, r6, #0
bl BgConfig_Alloc
str r0, [r4, #4]
add r0, r5, #0
bl ov96_021EF2A0
add r1, r4, #0
add r1, #0x20
strb r0, [r1]
add r0, r5, #0
bl ov96_021E5EE0
add r1, r4, #0
add r1, #0x22
strb r0, [r1]
add r0, r5, #0
bl ov96_021E5EE8
cmp r0, #1
bne _021EF358
mov r0, #1
b _021EF35A
_021EF358:
mov r0, #0
_021EF35A:
str r0, [r4, #0x24]
str r5, [r4]
mov r0, #0x88
str r0, [r4, #0xc]
ldr r0, _021EF39C ; =ov96_021EF23C
add r1, r4, #0
bl Main_SetVBlankIntrCB
ldr r0, _021EF3A0 ; =gSystem + 0x60
mov r1, #1
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
ldr r0, _021EF3A4 ; =0x00007FFF
bl sub_0200FC20
ldr r0, [r4, #0x24]
cmp r0, #0
beq _021EF386
mov r0, #0
str r0, [r4, #0x28]
pop {r4, r5, r6, pc}
_021EF386:
add r0, r5, #0
bl ov96_021EF2AC
str r0, [r4, #0x28]
pop {r4, r5, r6, pc}
.balign 4, 0
_021EF390: .word FS_OVERLAY_ID(OVY_98)
_021EF394: .word 0xFFFFE0FF
_021EF398: .word 0x04001000
_021EF39C: .word ov96_021EF23C
_021EF3A0: .word gSystem + 0x60
_021EF3A4: .word 0x00007FFF
thumb_func_end ov96_021EF2C0
thumb_func_start ov96_021EF3A8
ov96_021EF3A8: ; 0x021EF3A8
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
mov r1, #1
ldr r2, [r4, #0xc]
mov r0, #6
lsl r1, r1, #0xe
bl LoadFontPal0
ldr r0, [r4, #0x34]
bl ov96_021EE644
mov r3, #0
str r3, [sp]
ldr r0, [r4, #0xc]
mov r1, #4
str r0, [sp, #4]
ldr r0, [r4, #8]
add r2, r1, #0
bl GfGfxLoader_GXLoadPalFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r1, #5
str r0, [sp, #0xc]
ldr r0, [r4, #8]
ldr r2, [r4, #4]
mov r3, #4
bl GfGfxLoader_LoadCharDataFromOpenNarc
ldr r0, [r4, #0x28]
cmp r0, #0
beq _021EF410
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r1, #0xa
str r0, [sp, #0xc]
ldr r0, [r4, #8]
ldr r2, [r4, #4]
mov r3, #4
bl GfGfxLoader_LoadScrnDataFromOpenNarc
add sp, #0x10
pop {r4, pc}
_021EF410:
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r1, #9
str r0, [sp, #0xc]
ldr r0, [r4, #8]
ldr r2, [r4, #4]
mov r3, #4
bl GfGfxLoader_LoadScrnDataFromOpenNarc
add sp, #0x10
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021EF3A8
thumb_func_start ov96_021EF430
ov96_021EF430: ; 0x021EF430
push {r3, r4, r5, lr}
sub sp, #0x20
add r4, r1, #0
add r5, r0, #0
cmp r4, #0xa
blt _021EF440
bl GF_AssertFail
_021EF440:
mov r0, #0
str r0, [sp]
ldr r0, [r5, #0xc]
add r1, r4, #0
str r0, [sp, #4]
mov r2, #6
ldr r0, [r5, #8]
add r1, #0x20
lsl r3, r2, #0xc
bl GfGfxLoader_GXLoadPalFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r5, #0xc]
add r1, r4, #0
str r0, [sp, #0xc]
ldr r0, [r5, #8]
ldr r2, [r5, #4]
add r1, #0x2a
mov r3, #7
bl GfGfxLoader_LoadCharDataFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r5, #0xc]
add r4, #0x34
str r0, [sp, #0xc]
ldr r0, [r5, #8]
ldr r2, [r5, #4]
add r1, r4, #0
mov r3, #7
bl GfGfxLoader_LoadScrnDataFromOpenNarc
mov r0, #4
mov r1, #0
bl BG_SetMaskColor
mov r0, #0
mov r1, #1
lsl r1, r1, #0xc
str r1, [sp, #0x10]
str r0, [sp, #0x14]
str r0, [sp, #0x18]
str r1, [sp, #0x1c]
bl OS_WaitVBlankIntr
mov r3, #0
str r3, [sp]
ldr r0, [r5, #4]
mov r1, #7
add r2, sp, #0x10
bl SetBgAffine
add r0, sp, #0x10
str r0, [sp]
mov r3, #0
str r3, [sp, #4]
str r3, [sp, #8]
ldr r0, [r5, #4]
mov r1, #7
mov r2, #3
bl Bg_SetTextDimAndAffineParams
add sp, #0x20
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021EF430
thumb_func_start ov96_021EF4D0
ov96_021EF4D0: ; 0x021EF4D0
push {r4, r5, r6, r7, lr}
sub sp, #0xdc
ldr r4, _021EF53C ; =ov96_0221BA44
add r3, sp, #8
add r7, r0, #0
str r1, [sp]
add r2, r3, #0
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl SetBothScreensModesAndDisable
ldr r4, _021EF540 ; =ov96_0221BB98
add r3, sp, #0x18
mov r2, #0x18
_021EF4F2:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _021EF4F2
ldr r0, [r4]
ldr r4, _021EF544 ; =ov96_0221BA10
str r0, [r3]
mov r0, #0
ldr r5, _021EF548 ; =ov96_0221BA18
str r0, [sp, #4]
add r6, sp, #0x18
_021EF508:
ldrb r1, [r5]
ldrb r3, [r4]
add r0, r7, #0
add r2, r6, #0
bl InitBgFromTemplate
ldrb r1, [r5]
add r0, r7, #0
bl BgClearTilemapBufferAndCommit
ldrb r0, [r5]
ldr r3, [sp]
mov r1, #0x40
mov r2, #0
bl BG_ClearCharDataRange
ldr r0, [sp, #4]
add r4, r4, #1
add r0, r0, #1
add r6, #0x1c
add r5, r5, #1
str r0, [sp, #4]
cmp r0, #7
blt _021EF508
add sp, #0xdc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021EF53C: .word ov96_0221BA44
_021EF540: .word ov96_0221BB98
_021EF544: .word ov96_0221BA10
_021EF548: .word ov96_0221BA18
thumb_func_end ov96_021EF4D0
thumb_func_start ov96_021EF54C
ov96_021EF54C: ; 0x021EF54C
push {r4, lr}
sub sp, #0x10
mov r2, #0
add r4, r0, #0
str r2, [sp]
ldr r0, [r4, #0xc]
mov r1, #4
str r0, [sp, #4]
ldr r0, [r4, #8]
add r3, r2, #0
bl GfGfxLoader_GXLoadPalFromOpenNarc
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r1, #5
str r0, [sp, #0xc]
ldr r0, [r4, #8]
ldr r2, [r4, #4]
bl GfGfxLoader_LoadCharDataFromOpenNarc
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r1, #6
str r0, [sp, #0xc]
ldr r0, [r4, #8]
ldr r2, [r4, #4]
bl GfGfxLoader_LoadScrnDataFromOpenNarc
ldr r0, [r4, #0x24]
cmp r0, #0
bne _021EF5CA
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r3, #1
str r3, [sp, #8]
ldr r0, [r4, #0xc]
mov r1, #5
str r0, [sp, #0xc]
ldr r0, [r4, #8]
ldr r2, [r4, #4]
bl GfGfxLoader_LoadCharDataFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r3, #1
str r3, [sp, #8]
ldr r0, [r4, #0xc]
mov r1, #8
str r0, [sp, #0xc]
ldr r0, [r4, #8]
ldr r2, [r4, #4]
bl GfGfxLoader_LoadScrnDataFromOpenNarc
_021EF5CA:
add r0, r4, #0
bl ov96_021EF3A8
ldr r0, _021EF5EC ; =0x00000135
ldr r3, _021EF5F0 ; =ov96_0221BB38
str r0, [sp]
ldr r0, [r4, #0xc]
ldr r1, [r4, #4]
mov r2, #0xc
bl ov98_0221EABC
str r0, [r4, #0x30]
add r0, r4, #0
bl ov96_021EF610
add sp, #0x10
pop {r4, pc}
.balign 4, 0
_021EF5EC: .word 0x00000135
_021EF5F0: .word ov96_0221BB38
thumb_func_end ov96_021EF54C
thumb_func_start ov96_021EF5F4
ov96_021EF5F4: ; 0x021EF5F4
push {r4, lr}
ldr r0, [r0]
add r4, r1, #0
bl ov96_021E5D60
bl Save_Pokeathlon_Get
bl sub_020319DC
mov r1, #0x2c
mul r1, r4
ldrh r0, [r0, r1]
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021EF5F4
thumb_func_start ov96_021EF610
ov96_021EF610: ; 0x021EF610
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
add r0, #0x20
ldrb r6, [r0]
add r0, r5, #0
add r0, #0x22
ldrb r0, [r0]
add r0, r0, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
ldr r0, [r5, #0x28]
cmp r0, #0
bne _021EF636
mov r1, #5
ldr r0, [r5, #0x30]
add r2, r1, #0
bl ov98_0221EEEC
_021EF636:
mov r1, #0
ldr r0, [r5, #0x30]
mov r2, #0xc5
add r3, r1, #0
bl ov98_0221EBD8
ldr r0, [r5, #0x30]
mov r1, #2
mov r2, #0xd0
mov r3, #0
bl ov98_0221EBD8
mov r3, #0
str r3, [sp]
add r2, r6, #0
ldr r0, [r5, #0x30]
mov r1, #1
add r2, #0xc6
bl ov98_0221EC08
mov r3, #0
str r3, [sp]
lsl r2, r6, #1
add r2, r6, r2
ldr r0, [r5, #0x30]
mov r1, #3
add r2, #0xd1
bl ov98_0221EC08
mov r0, #1
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
ldr r0, [r5, #0x30]
mov r1, #5
mov r2, #0xef
add r3, r4, #0
bl ov98_0221ECD0
ldr r0, [r5, #0x24]
cmp r0, #0
bne _021EF69A
mov r3, #0
str r3, [sp]
mov r1, #4
str r1, [sp, #4]
ldr r0, [r5, #0x30]
mov r2, #0xf0
bl ov98_0221EBEC
_021EF69A:
ldr r0, [r5, #0x34]
bl ov96_021EE6A0
ldr r0, [r5, #0x28]
cmp r0, #0
beq _021EF766
add r1, r5, #0
add r1, #0x20
ldrb r1, [r1]
add r0, r5, #0
bl ov96_021EF5F4
add r4, r0, #0
ldr r0, _021EF76C ; =0x0000FFFF
cmp r4, r0
bne _021EF6BC
mov r4, #0
_021EF6BC:
add r0, r5, #0
add r0, #0x20
ldrb r0, [r0]
cmp r0, #0
bne _021EF70E
ldr r0, [r5, #0x30]
bl ov98_0221EEFC
add r7, r0, #0
add r0, r4, #0
mov r1, #0x1e
bl _s32_div_f
mov r1, #0
add r2, r0, #0
str r1, [sp]
mov r0, #1
str r0, [sp, #4]
add r0, r7, #0
mov r3, #3
bl BufferIntegerAsString
add r0, r4, #0
mov r1, #0x1e
bl _s32_div_f
mov r0, #0xa
mul r0, r1
mov r1, #0x1e
bl _s32_div_f
add r2, r0, #0
mov r0, #0
mov r1, #1
str r0, [sp]
add r0, r7, #0
add r3, r1, #0
str r1, [sp, #4]
bl BufferIntegerAsString
b _021EF74E
_021EF70E:
cmp r0, #6
ldr r0, [r5, #0x30]
bne _021EF744
lsr r1, r4, #0xa
mov r2, #2
mov r3, #0
bl ov98_0221EDA4
lsr r3, r4, #0x1f
lsl r2, r4, #0x16
sub r2, r2, r3
mov r1, #0x16
ror r2, r1
add r2, r3, r2
add r3, r2, #0
mov r1, #0xa
mul r3, r1
asr r1, r3, #9
lsr r1, r1, #0x16
add r1, r3, r1
mov r2, #1
ldr r0, [r5, #0x30]
asr r1, r1, #0xa
add r3, r2, #0
bl ov98_0221EDA4
b _021EF74E
_021EF744:
add r1, r4, #0
mov r2, #3
mov r3, #0
bl ov98_0221EDA4
_021EF74E:
ldr r0, [r5, #0x30]
mov r1, #6
mov r2, #0xb0
mov r3, #0
bl ov98_0221EBD8
add r6, #0xb1
ldr r0, [r5, #0x30]
mov r1, #7
add r2, r6, #0
bl ov98_0221ED3C
_021EF766:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
nop
_021EF76C: .word 0x0000FFFF
thumb_func_end ov96_021EF610
thumb_func_start ov96_021EF770
ov96_021EF770: ; 0x021EF770
push {r3, r4, r5, lr}
sub sp, #8
add r5, r0, #0
add r0, #0x20
ldrb r1, [r0]
mov r2, #0xf4
mov r3, #0
lsl r0, r1, #1
add r4, r1, r0
ldr r0, [r5, #0x30]
mov r1, #8
add r4, #0xd2
bl ov98_0221EBD8
mov r3, #0
str r3, [sp]
mov r0, #4
str r0, [sp, #4]
ldr r0, [r5, #0x30]
mov r1, #9
mov r2, #0xf2
bl ov98_0221EBEC
mov r3, #0
str r3, [sp]
mov r0, #4
str r0, [sp, #4]
ldr r0, [r5, #0x30]
mov r1, #0xa
mov r2, #0xf3
bl ov98_0221EBEC
mov r3, #0
str r3, [sp]
ldr r0, [r5, #0x30]
mov r1, #0xb
add r2, r4, #0
bl ov98_0221EC08
add sp, #8
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021EF770
thumb_func_start ov96_021EF7C4
ov96_021EF7C4: ; 0x021EF7C4
push {r3, r4, r5, lr}
sub sp, #8
add r5, r0, #0
add r0, #0x20
ldrb r1, [r0]
mov r2, #0xf5
mov r3, #0
lsl r0, r1, #1
add r4, r1, r0
ldr r0, [r5, #0x30]
mov r1, #8
add r4, #0xd3
bl ov98_0221EBD8
mov r3, #0
str r3, [sp]
mov r0, #4
str r0, [sp, #4]
ldr r0, [r5, #0x30]
mov r1, #9
mov r2, #0xf1
bl ov98_0221EBEC
mov r3, #0
str r3, [sp]
mov r0, #4
str r0, [sp, #4]
ldr r0, [r5, #0x30]
mov r1, #0xa
mov r2, #0xf3
bl ov98_0221EBEC
mov r3, #0
str r3, [sp]
ldr r0, [r5, #0x30]
mov r1, #0xb
add r2, r4, #0
bl ov98_0221EC08
add sp, #8
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021EF7C4
thumb_func_start ov96_021EF818
ov96_021EF818: ; 0x021EF818
push {r3, r4, lr}
sub sp, #0x4c
ldr r3, _021EF8B4 ; =ov96_0221BA68
add r4, r0, #0
ldmia r3!, {r0, r1}
add r2, sp, #0x34
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r3, _021EF8B8 ; =ov96_0221BAA0
add r2, sp, #0x14
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r3, _021EF8BC ; =ov96_0221BA54
add r2, sp, #0
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
mov r0, #4
str r0, [sp]
ldr r0, [r4, #0xc]
bl SpriteRenderer_Create
str r0, [r4, #0x10]
bl SpriteRenderer_CreateGfxHandler
str r0, [r4, #0x14]
ldr r0, [r4, #0x10]
add r1, sp, #0x14
add r2, sp, #0
mov r3, #0x20
bl sub_0200CF70
ldr r0, [r4, #0x10]
ldr r1, [r4, #0x14]
mov r2, #4
bl sub_0200CFF4
ldr r0, [r4, #0x10]
ldr r1, [r4, #0x14]
add r2, sp, #0x34
bl SpriteRenderer_Init2DGfxResManagersFromCountsArray
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineATogglePlanes
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineBTogglePlanes
ldr r0, [r4, #0x10]
bl SpriteRenderer_GetG2dRendererPtr
mov r2, #2
mov r1, #0
lsl r2, r2, #0x14
bl G2dRenderer_SetSubSurfaceCoords
add r0, r4, #0
bl ov96_021EF8C0
add r0, r4, #0
bl ov96_021EF99C
add sp, #0x4c
pop {r3, r4, pc}
.balign 4, 0
_021EF8B4: .word ov96_0221BA68
_021EF8B8: .word ov96_0221BAA0
_021EF8BC: .word ov96_0221BA54
thumb_func_end ov96_021EF818
thumb_func_start ov96_021EF8C0
ov96_021EF8C0: ; 0x021EF8C0
push {r4, r5, r6, lr}
sub sp, #0x10
add r5, r0, #0
ldr r4, [r5, #0x14]
ldr r6, [r5, #0x10]
mov r3, #0
str r3, [sp]
mov r0, #0x10
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
str r3, [sp, #0xc]
ldr r2, [r5, #8]
add r0, r6, #0
add r1, r4, #0
bl SpriteRenderer_LoadPlttResObjFromOpenNarc
mov r3, #1
str r3, [sp]
str r3, [sp, #4]
mov r0, #0
str r0, [sp, #8]
ldr r2, [r5, #8]
add r0, r6, #0
add r1, r4, #0
bl SpriteRenderer_LoadCharResObjFromOpenNarc
mov r0, #1
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
ldr r2, [r5, #8]
add r0, r6, #0
add r1, r4, #0
mov r3, #2
bl SpriteRenderer_LoadCellResObjFromOpenNarc
mov r0, #1
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
ldr r2, [r5, #8]
add r0, r6, #0
add r1, r4, #0
mov r3, #3
bl SpriteRenderer_LoadAnimResObjFromOpenNarc
add sp, #0x10
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021EF8C0
thumb_func_start ov96_021EF924
ov96_021EF924: ; 0x021EF924
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x40]
bl sub_0200DCA0
cmp r0, #0
bne _021EF958
add r0, r4, #0
add r0, #0x21
ldrb r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0x21
strb r1, [r0]
add r0, r4, #0
add r0, #0x21
ldrb r0, [r0]
cmp r0, #2
blo _021EF952
add r0, r4, #0
mov r1, #0
add r0, #0x21
strb r1, [r0]
_021EF952:
add r0, r4, #0
bl ov96_021EFA04
_021EF958:
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021EF924
thumb_func_start ov96_021EF95C
ov96_021EF95C: ; 0x021EF95C
push {r3, r4, r5, r6, r7, lr}
ldr r2, _021EF988 ; =ov96_0221BA80
add r5, r0, #0
lsl r0, r1, #4
mov r6, #0
add r4, r2, r0
mov r7, #2
_021EF96A:
mov r1, #0
ldrsh r1, [r4, r1]
mov r3, #2
ldrsh r2, [r4, r7]
ldr r0, [r5, #0x38]
lsl r3, r3, #0x14
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
add r6, r6, #1
add r4, r4, #4
add r5, r5, #4
cmp r6, #4
blt _021EF96A
pop {r3, r4, r5, r6, r7, pc}
nop
_021EF988: .word ov96_0221BA80
thumb_func_end ov96_021EF95C
thumb_func_start ov96_021EF98C
ov96_021EF98C: ; 0x021EF98C
add r1, r0, #0
ldr r3, _021EF998 ; =ov96_021EFA04
mov r2, #0
add r1, #0x21
strb r2, [r1]
bx r3
.balign 4, 0
_021EF998: .word ov96_021EFA04
thumb_func_end ov96_021EF98C
thumb_func_start ov96_021EF99C
ov96_021EF99C: ; 0x021EF99C
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
str r0, [sp]
ldr r5, _021EF9FC ; =ov96_0221DA80
mov r0, #0
ldr r4, _021EFA00 ; =ov96_0221BA80
ldr r6, [sp]
str r0, [sp, #4]
add r7, r5, #0
_021EF9AE:
ldr r0, [sp]
ldr r1, [sp]
mov r2, #0
ldrsh r2, [r4, r2]
ldr r0, [r0, #0x10]
ldr r1, [r1, #0x14]
mov r3, #2
strh r2, [r5]
mov r2, #2
ldrsh r2, [r4, r2]
lsl r3, r3, #0x14
strh r2, [r5, #2]
add r2, r7, #0
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
mov r1, #1
str r0, [r6, #0x38]
bl UnkImageStruct_SetSpriteAnimActiveFlag
ldr r0, [sp, #4]
add r4, r4, #4
add r0, r0, #1
add r5, #0x34
add r7, #0x34
add r6, r6, #4
str r0, [sp, #4]
cmp r0, #4
blt _021EF9AE
ldr r0, [sp]
mov r1, #0
ldr r0, [r0, #0x40]
bl UnkImageStruct_SetSpriteAnimActiveFlag
ldr r0, [sp]
bl ov96_021EFA04
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
nop
_021EF9FC: .word ov96_0221DA80
_021EFA00: .word ov96_0221BA80
thumb_func_end ov96_021EF99C
thumb_func_start ov96_021EFA04
ov96_021EFA04: ; 0x021EFA04
push {r4, lr}
add r2, r0, #0
add r1, r2, #0
add r1, #0x20
ldrb r1, [r1]
ldr r0, [r2, #0x40]
add r2, #0x21
lsl r4, r1, #3
ldrb r1, [r2]
ldr r3, _021EFA24 ; =ov96_0221BAE8
lsl r2, r1, #2
add r1, r3, r4
ldr r1, [r2, r1]
bl UnkImageStruct_SetSpriteAnimSeqNo
pop {r4, pc}
.balign 4, 0
_021EFA24: .word ov96_0221BAE8
thumb_func_end ov96_021EFA04
thumb_func_start ov96_021EFA28
ov96_021EFA28: ; 0x021EFA28
push {r3, lr}
mov r0, #4
mov r1, #0
bl GfGfx_EngineBTogglePlanes
mov r0, #8
mov r1, #0
bl GfGfx_EngineBTogglePlanes
pop {r3, pc}
thumb_func_end ov96_021EFA28
thumb_func_start ov96_021EFA3C
ov96_021EFA3C: ; 0x021EFA3C
push {r4, r5, lr}
sub sp, #0x1c
add r5, r0, #0
ldr r0, [r5, #0x28]
mov r4, #0
cmp r0, #0
bne _021EFA4C
mov r4, #0x20
_021EFA4C:
ldr r1, _021EFAC8 ; =0x00000125
mov r0, #0
str r1, [sp, #0xc]
str r0, [sp, #0x10]
str r0, [sp, #0x14]
str r1, [sp, #0x18]
bl OS_WaitVBlankIntr
mov r0, #0x60
str r0, [sp]
ldr r0, [r5, #4]
mov r1, #7
add r2, sp, #0xc
mov r3, #0x80
bl SetBgAffine
mov r0, #0x60
str r0, [sp]
ldr r0, [r5, #4]
mov r1, #6
add r2, sp, #0xc
mov r3, #0x80
bl SetBgAffine
add r0, sp, #0xc
str r0, [sp]
mov r0, #0x80
str r0, [sp, #4]
mov r0, #0x60
str r0, [sp, #8]
ldr r0, [r5, #4]
mov r1, #7
mov r2, #5
add r3, r4, #0
bl Bg_SetTextDimAndAffineParams
add r0, sp, #0xc
str r0, [sp]
mov r0, #0x80
str r0, [sp, #4]
mov r0, #0x60
str r0, [sp, #8]
ldr r0, [r5, #4]
mov r1, #6
mov r2, #5
add r3, r4, #0
bl Bg_SetTextDimAndAffineParams
mov r0, #4
mov r1, #1
bl GfGfx_EngineBTogglePlanes
mov r0, #8
mov r1, #1
bl GfGfx_EngineBTogglePlanes
mov r0, #0
str r0, [r5, #0x1c]
mov r0, #1
str r0, [r5, #0x2c]
add sp, #0x1c
pop {r4, r5, pc}
.balign 4, 0
_021EFAC8: .word 0x00000125
thumb_func_end ov96_021EFA3C
thumb_func_start ov96_021EFACC
ov96_021EFACC: ; 0x021EFACC
push {r3, r4, lr}
sub sp, #0x14
add r4, r0, #0
ldr r0, [r4, #0x1c]
mov r1, #0xe
add r0, r0, #1
str r0, [r4, #0x1c]
lsl r0, r0, #0xc
bl _s32_div_f
mov r1, #0
str r0, [sp, #4]
str r1, [sp, #8]
str r1, [sp, #0xc]
str r0, [sp, #0x10]
bl OS_WaitVBlankIntr
mov r0, #0x60
str r0, [sp]
ldr r0, [r4, #4]
mov r1, #7
add r2, sp, #4
mov r3, #0x80
bl SetBgAffine
mov r0, #0x60
str r0, [sp]
ldr r0, [r4, #4]
mov r1, #6
add r2, sp, #4
mov r3, #0x80
bl SetBgAffine
ldr r0, [r4, #0x1c]
cmp r0, #0xe
blt _021EFB1A
mov r0, #0
str r0, [r4, #0x1c]
str r0, [r4, #0x2c]
_021EFB1A:
add sp, #0x14
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov96_021EFACC
thumb_func_start ov96_021EFB20
ov96_021EFB20: ; 0x021EFB20
push {r4, r5, lr}
sub sp, #0xc
add r5, r1, #0
bl ov96_021E5DC4
add r4, r0, #0
mov r0, #4
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4, #0xc]
ldr r3, _021EFB4C ; =0x00007FFF
str r0, [sp, #8]
mov r0, #0
add r1, r0, #0
add r2, r0, #0
bl BeginNormalPaletteFade
str r5, [r4, #0x18]
add sp, #0xc
pop {r4, r5, pc}
nop
_021EFB4C: .word 0x00007FFF
thumb_func_end ov96_021EFB20
thumb_func_start ov96_021EFB50
ov96_021EFB50: ; 0x021EFB50
ldr r3, _021EFB54 ; =IsPaletteFadeFinished
bx r3
.balign 4, 0
_021EFB54: .word IsPaletteFadeFinished
thumb_func_end ov96_021EFB50
thumb_func_start ov96_021EFB58
ov96_021EFB58: ; 0x021EFB58
push {r3, r4, r5, lr}
sub sp, #0x20
mov r3, #0
str r3, [sp]
add r5, r0, #0
str r3, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r5, #0xc]
mov r1, #6
str r0, [sp, #0xc]
ldr r0, [r5, #8]
ldr r2, [r5, #4]
bl GfGfxLoader_LoadScrnDataFromOpenNarc
add r0, r5, #0
bl ov96_021EF3A8
add r0, r5, #0
mov r1, #0
bl ov96_021EF95C
ldr r0, [r5, #0x38]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r5, #0x3c]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r5, #0x40]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r5, #0x44]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #5
mov r1, #1
bl ToggleBgLayer
mov r0, #6
mov r1, #1
bl ToggleBgLayer
mov r0, #4
mov r1, #1
bl ToggleBgLayer
mov r0, #1
add r1, r0, #0
bl ToggleBgLayer
add r0, r5, #0
bl ov96_021EF610
ldr r0, [r5, #0x28]
mov r4, #0
cmp r0, #0
bne _021EFBD4
sub r4, #0x20
_021EFBD4:
mov r1, #1
lsl r1, r1, #0xc
mov r0, #0
str r1, [sp, #0x10]
str r0, [sp, #0x14]
str r0, [sp, #0x18]
str r1, [sp, #0x1c]
bl OS_WaitVBlankIntr
mov r3, #0
str r3, [sp]
ldr r0, [r5, #4]
mov r1, #7
add r2, sp, #0x10
bl SetBgAffine
add r0, sp, #0x10
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r5, #4]
mov r1, #7
mov r2, #3
add r3, r4, #0
bl Bg_SetTextDimAndAffineParams
add sp, #0x20
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021EFB58
thumb_func_start ov96_021EFC10
ov96_021EFC10: ; 0x021EFC10
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
add r1, r4, #0
add r1, #0x20
ldrb r1, [r1]
bl ov96_021EF430
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r1, #7
str r0, [sp, #0xc]
ldr r0, [r4, #8]
ldr r2, [r4, #4]
bl GfGfxLoader_LoadScrnDataFromOpenNarc
add r0, r4, #0
mov r1, #1
bl ov96_021EF95C
ldr r0, [r4, #0x38]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4, #0x3c]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4, #0x40]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4, #0x44]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #5
mov r1, #0
bl ToggleBgLayer
mov r0, #6
mov r1, #0
bl ToggleBgLayer
mov r0, #4
mov r1, #0
bl ToggleBgLayer
mov r0, #1
mov r1, #0
bl ToggleBgLayer
add r0, r4, #0
bl ov96_021EF770
add sp, #0x10
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021EFC10
thumb_func_start ov96_021EFC8C
ov96_021EFC8C: ; 0x021EFC8C
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
add r1, r4, #0
add r1, #0x20
ldrb r1, [r1]
bl ov96_021EF430
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r1, #7
str r0, [sp, #0xc]
ldr r0, [r4, #8]
ldr r2, [r4, #4]
bl GfGfxLoader_LoadScrnDataFromOpenNarc
add r0, r4, #0
mov r1, #1
bl ov96_021EF95C
ldr r0, [r4, #0x38]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4, #0x3c]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4, #0x40]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4, #0x44]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #5
mov r1, #0
bl ToggleBgLayer
mov r0, #6
mov r1, #0
bl ToggleBgLayer
mov r0, #4
mov r1, #0
bl ToggleBgLayer
mov r0, #1
mov r1, #0
bl ToggleBgLayer
add r0, r4, #0
bl ov96_021EF7C4
add sp, #0x10
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021EFC8C
thumb_func_start ov96_021EFD08
ov96_021EFD08: ; 0x021EFD08
push {r4, r5, lr}
sub sp, #0xc
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
ldr r0, [r4, #4]
mov r1, #0
bl BgClearTilemapBufferAndCommit
ldr r0, [r4, #4]
mov r1, #2
bl BgClearTilemapBufferAndCommit
ldr r0, [r4, #4]
mov r1, #4
bl BgClearTilemapBufferAndCommit
ldr r0, [r4, #4]
mov r1, #5
bl BgClearTilemapBufferAndCommit
ldr r0, [r4, #4]
mov r1, #6
bl BgClearTilemapBufferAndCommit
ldr r0, [r4, #4]
mov r1, #7
bl BgClearTilemapBufferAndCommit
add r0, r4, #0
bl ov96_021EF98C
ldr r0, [r4, #0x18]
cmp r0, #1
beq _021EFD5A
cmp r0, #2
beq _021EFD78
cmp r0, #3
beq _021EFD80
b _021EFD88
_021EFD5A:
add r0, r4, #0
bl ov96_021EFB58
mov r0, #4
mov r1, #1
str r0, [sp]
str r1, [sp, #4]
ldr r0, [r4, #0xc]
ldr r3, _021EFD98 ; =0x00007FFF
str r0, [sp, #8]
mov r0, #0
add r2, r1, #0
bl BeginNormalPaletteFade
b _021EFD8C
_021EFD78:
add r0, r4, #0
bl ov96_021EFC10
b _021EFD8C
_021EFD80:
add r0, r4, #0
bl ov96_021EFC8C
b _021EFD8C
_021EFD88:
bl GF_AssertFail
_021EFD8C:
ldr r1, [r4, #0x18]
add r0, r5, #0
bl ov96_021E5FC8
add sp, #0xc
pop {r4, r5, pc}
.balign 4, 0
_021EFD98: .word 0x00007FFF
thumb_func_end ov96_021EFD08
thumb_func_start ov96_021EFD9C
ov96_021EFD9C: ; 0x021EFD9C
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r4, r1, #0
add r6, r0, #0
bl ov96_021E5DC4
add r5, r0, #0
bl ov96_021EF924
ldrb r0, [r4]
cmp r0, #5
bhi _021EFEA8
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021EFDC0: ; jump table
.short _021EFDCC - _021EFDC0 - 2 ; case 0
.short _021EFDDC - _021EFDC0 - 2 ; case 1
.short _021EFE04 - _021EFDC0 - 2 ; case 2
.short _021EFE1E - _021EFDC0 - 2 ; case 3
.short _021EFE70 - _021EFDC0 - 2 ; case 4
.short _021EFE94 - _021EFDC0 - 2 ; case 5
_021EFDCC:
mov r0, #0x47
lsl r0, r0, #4
bl PlayBGM
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021EFEAC
_021EFDDC:
mov r0, #0
add r1, r0, #0
bl ov96_021EF280
cmp r0, #0
beq _021EFEAC
mov r1, #1
str r1, [sp]
str r1, [sp, #4]
ldr r0, [r5, #0xc]
ldr r3, _021EFEB4 ; =0x00007FFF
str r0, [sp, #8]
mov r0, #4
add r2, r1, #0
bl BeginNormalPaletteFade
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021EFEAC
_021EFE04:
mov r0, #0
mov r1, #1
bl ov96_021EF280
cmp r0, #0
beq _021EFEAC
add r0, r5, #0
bl ov96_021EFA3C
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021EFEAC
_021EFE1E:
ldr r0, [r5, #0x2c]
cmp r0, #0
beq _021EFE2C
add r0, r5, #0
bl ov96_021EFACC
b _021EFEAC
_021EFE2C:
mov r0, #0
mov r1, #3
bl ov96_021EF280
cmp r0, #0
beq _021EFEAC
mov r0, #0xc
mov r1, #1
str r0, [sp]
str r1, [sp, #4]
ldr r0, [r5, #0xc]
ldr r3, _021EFEB4 ; =0x00007FFF
str r0, [sp, #8]
mov r0, #3
add r2, r1, #0
bl BeginNormalPaletteFade
ldr r0, [r5, #0x40]
mov r1, #1
bl UnkImageStruct_SetSpriteAnimActiveFlag
ldr r0, [r5, #0x24]
cmp r0, #0
bne _021EFE60
mov r1, #1
b _021EFE62
_021EFE60:
mov r1, #0
_021EFE62:
ldr r0, [r5, #0x44]
bl UnkImageStruct_SetSpriteVisibleFlag
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021EFEAC
_021EFE70:
bl IsPaletteFadeFinished
cmp r0, #0
beq _021EFEAC
ldr r0, [r5, #0x24]
cmp r0, #0
beq _021EFE8A
mov r0, #0
str r0, [r5, #0x1c]
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021EFEAC
_021EFE8A:
add r0, r6, #0
mov r1, #1
bl ov96_021E5FC8
b _021EFEAC
_021EFE94:
ldr r0, [r5, #0x1c]
add r0, r0, #1
str r0, [r5, #0x1c]
cmp r0, #0xb4
blt _021EFEAC
add r0, r6, #0
mov r1, #4
bl ov96_021E5FC8
b _021EFEAC
_021EFEA8:
bl GF_AssertFail
_021EFEAC:
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
nop
_021EFEB4: .word 0x00007FFF
thumb_func_end ov96_021EFD9C
thumb_func_start ov96_021EFEB8
ov96_021EFEB8: ; 0x021EFEB8
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
bl ov96_021E5DC4
bl ov96_021EF924
ldrb r0, [r4]
cmp r0, #0
beq _021EFED2
cmp r0, #1
beq _021EFF18
b _021EFF2A
_021EFED2:
bl IsPaletteFadeFinished
cmp r0, #0
beq _021EFF2E
ldr r0, _021EFF34 ; =ov96_0221BA20
bl TouchscreenHitbox_FindRectAtTouchNew
mov r1, #0
mvn r1, r1
cmp r0, r1
beq _021EFF2E
cmp r0, #0
beq _021EFEF2
cmp r0, #1
beq _021EFF02
b _021EFF0C
_021EFEF2:
ldr r0, _021EFF38 ; =0x000005DC
bl PlaySE
add r0, r5, #0
mov r1, #2
bl ov96_021EFB20
b _021EFF10
_021EFF02:
add r0, r5, #0
mov r1, #4
bl ov96_021E5FC8
b _021EFF10
_021EFF0C:
bl GF_AssertFail
_021EFF10:
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021EFF2E
_021EFF18:
add r0, r5, #0
bl ov96_021EFB50
cmp r0, #0
beq _021EFF2E
add r0, r5, #0
bl ov96_021EFD08
b _021EFF2E
_021EFF2A:
bl GF_AssertFail
_021EFF2E:
mov r0, #0
pop {r3, r4, r5, pc}
nop
_021EFF34: .word ov96_0221BA20
_021EFF38: .word 0x000005DC
thumb_func_end ov96_021EFEB8
thumb_func_start ov96_021EFF3C
ov96_021EFF3C: ; 0x021EFF3C
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r4, r1, #0
add r5, r0, #0
bl ov96_021E5DC4
add r6, r0, #0
bl ov96_021EF924
ldrb r0, [r4]
cmp r0, #0
beq _021EFF5E
cmp r0, #1
beq _021EFF7A
cmp r0, #2
beq _021EFFBC
b _021EFFCE
_021EFF5E:
mov r0, #4
mov r1, #1
str r0, [sp]
str r1, [sp, #4]
ldr r0, [r6, #0xc]
ldr r3, _021EFFD8 ; =0x00007FFF
str r0, [sp, #8]
mov r0, #0
add r2, r1, #0
bl BeginNormalPaletteFade
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
_021EFF7A:
bl IsPaletteFadeFinished
cmp r0, #0
beq _021EFFD2
ldr r0, _021EFFDC ; =ov96_0221BA2C
bl TouchscreenHitbox_FindRectAtTouchNew
cmp r0, #0
bne _021EFFA2
ldr r0, _021EFFE0 ; =0x000005DC
bl PlaySE
add r0, r5, #0
mov r1, #3
bl ov96_021EFB20
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021EFFD2
_021EFFA2:
cmp r0, #1
bne _021EFFD2
ldr r0, _021EFFE0 ; =0x000005DC
bl PlaySE
add r0, r5, #0
mov r1, #1
bl ov96_021EFB20
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021EFFD2
_021EFFBC:
add r0, r5, #0
bl ov96_021EFB50
cmp r0, #0
beq _021EFFD2
add r0, r5, #0
bl ov96_021EFD08
b _021EFFD2
_021EFFCE:
bl GF_AssertFail
_021EFFD2:
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
_021EFFD8: .word 0x00007FFF
_021EFFDC: .word ov96_0221BA2C
_021EFFE0: .word 0x000005DC
thumb_func_end ov96_021EFF3C
thumb_func_start ov96_021EFFE4
ov96_021EFFE4: ; 0x021EFFE4
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r4, r1, #0
add r5, r0, #0
bl ov96_021E5DC4
add r6, r0, #0
bl ov96_021EF924
ldrb r0, [r4]
cmp r0, #0
beq _021F0006
cmp r0, #1
beq _021F0022
cmp r0, #2
beq _021F0064
b _021F0076
_021F0006:
mov r0, #4
mov r1, #1
str r0, [sp]
str r1, [sp, #4]
ldr r0, [r6, #0xc]
ldr r3, _021F0080 ; =0x00007FFF
str r0, [sp, #8]
mov r0, #0
add r2, r1, #0
bl BeginNormalPaletteFade
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
_021F0022:
bl IsPaletteFadeFinished
cmp r0, #0
beq _021F007A
ldr r0, _021F0084 ; =ov96_0221BA38
bl TouchscreenHitbox_FindRectAtTouchNew
cmp r0, #0
bne _021F004A
ldr r0, _021F0088 ; =0x000005DC
bl PlaySE
add r0, r5, #0
mov r1, #2
bl ov96_021EFB20
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021F007A
_021F004A:
cmp r0, #1
bne _021F007A
ldr r0, _021F0088 ; =0x000005DC
bl PlaySE
add r0, r5, #0
mov r1, #1
bl ov96_021EFB20
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021F007A
_021F0064:
add r0, r5, #0
bl ov96_021EFB50
cmp r0, #0
beq _021F007A
add r0, r5, #0
bl ov96_021EFD08
b _021F007A
_021F0076:
bl GF_AssertFail
_021F007A:
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
_021F0080: .word 0x00007FFF
_021F0084: .word ov96_0221BA38
_021F0088: .word 0x000005DC
thumb_func_end ov96_021EFFE4
thumb_func_start ov96_021F008C
ov96_021F008C: ; 0x021F008C
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r5, r1, #0
add r6, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
bl ov96_021EF924
ldrb r0, [r5]
cmp r0, #0
beq _021F00AA
cmp r0, #1
beq _021F00EA
b _021F00F8
_021F00AA:
add r0, r6, #0
bl ov96_021E5EE0
cmp r0, #0
bne _021F00BC
ldr r0, _021F0100 ; =0x000008E4
bl PlaySE
b _021F00C2
_021F00BC:
ldr r0, _021F0104 ; =0x000008D6
bl PlaySE
_021F00C2:
mov r0, #0
mov r1, #0x18
bl GF_SndStartFadeOutBGM
mov r0, #0x18
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4, #0xc]
ldr r3, _021F0108 ; =0x00007FFF
str r0, [sp, #8]
mov r0, #0
add r1, r0, #0
add r2, r0, #0
bl BeginNormalPaletteFade
ldrb r0, [r5]
add r0, r0, #1
strb r0, [r5]
b _021F00F8
_021F00EA:
bl IsPaletteFadeFinished
cmp r0, #0
beq _021F00F8
add sp, #0xc
mov r0, #1
pop {r3, r4, r5, r6, pc}
_021F00F8:
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
nop
_021F0100: .word 0x000008E4
_021F0104: .word 0x000008D6
_021F0108: .word 0x00007FFF
thumb_func_end ov96_021F008C
thumb_func_start ov96_021F010C
ov96_021F010C: ; 0x021F010C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x1f8
add r7, r0, #0
bl ov96_021E5DC4
add r6, r0, #0
add r0, r7, #0
bl ov96_021E5DD4
cmp r0, #5
bls _021F0124
b _021F08C4
_021F0124:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021F0130: ; jump table
.short _021F013C - _021F0130 - 2 ; case 0
.short _021F0216 - _021F0130 - 2 ; case 1
.short _021F027A - _021F0130 - 2 ; case 2
.short _021F04B0 - _021F0130 - 2 ; case 3
.short _021F0588 - _021F0130 - 2 ; case 4
.short _021F08BE - _021F0130 - 2 ; case 5
_021F013C:
mov r2, #5
mov r0, #0x5c
mov r1, #0x8c
lsl r2, r2, #0x10
bl CreateHeap
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
bl GfGfx_DisableEngineAPlanes
bl GfGfx_DisableEngineBPlanes
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _021F0484 ; =0xFFFFE0FF
and r1, r0
str r1, [r2]
ldr r2, _021F0488 ; =0x04001000
ldr r1, [r2]
and r0, r1
str r0, [r2]
bl ov96_021F0A5C
ldr r1, _021F048C ; =0x000007F4
add r0, r7, #0
bl ov96_021E5D94
ldr r2, _021F048C ; =0x000007F4
mov r1, #0
add r4, r0, #0
bl MI_CpuFill8
mov r0, #0x8c
mov r1, #0x28
bl AllocFromHeap
mov r1, #0x7f
lsl r1, r1, #4
str r0, [r4, r1]
ldr r0, [r4, r1]
mov r1, #0
mov r2, #0x28
bl MI_CpuFill8
mov r0, #0x8c
bl BgConfig_Alloc
str r0, [r4]
add r0, r7, #0
mov r1, #8
bl ov96_021E6670
mov r0, #0x68
str r0, [sp, #0xe4]
mov r0, #1
lsl r0, r0, #0x12
str r0, [sp, #0xe8]
lsr r0, r0, #4
mov r2, #0x8c
str r0, [sp, #0xec]
str r2, [sp, #0xf0]
mov r0, #0x10
str r0, [sp]
ldr r3, _021F0490 ; =0x00300010
add r0, sp, #0xe4
mov r1, #0x16
bl ov96_021E92B0
bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7e
str r1, [sp, #4]
str r0, [sp, #8]
mov r3, #0x20
str r3, [sp, #0xc]
mov r2, #0x8c
str r2, [sp, #0x10]
add r2, r0, #0
bl OamManager_Create
mov r1, #0x8c
str r1, [r4, #0x14]
mov r0, #4
bl FontID_Alloc
ldr r0, [r4]
bl ov96_021F0BD4
add r0, r4, #0
bl ov96_021F2EC8
ldr r0, _021F0494 ; =gSystem + 0x60
mov r1, #1
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
add r0, r7, #0
bl ov96_021E5DEC
b _021F08C4
_021F0216:
ldr r0, [r6, #0x14]
ldr r1, [r6]
add r2, r7, #0
bl ov96_021F3BF0
ldr r1, _021F0498 ; =0x00000774
str r0, [r6, r1]
add r0, r7, #0
bl ov96_021E5D34
add r4, r0, #0
add r0, r7, #0
bl ov96_021E5EE8
add r2, r0, #0
mov r1, #4
ldr r0, [r6, #0x14]
sub r1, r1, r4
bl ov96_021F3390
mov r1, #0x77
lsl r1, r1, #4
str r0, [r6, r1]
ldr r0, [r6, #0x14]
ldr r1, _021F049C ; =0x00000AA7
mov r2, #1
bl ov96_021E9A78
ldr r1, _021F04A0 ; =0x00000768
str r0, [r6, r1]
ldr r0, [r6, #0x14]
bl ov96_021F30A4
ldr r1, _021F04A4 ; =0x0000072C
str r0, [r6, r1]
add r0, r1, #0
ldr r2, [r6, r1]
add r0, #0xa0
add r1, #0x48
str r2, [r6, r0]
ldr r0, [r6, r1]
bl ov96_021F3E58
add r0, r7, #0
bl ov96_021E64B8
add r0, r7, #0
bl ov96_021E5DEC
b _021F08C4
_021F027A:
ldr r4, _021F04A8 ; =ov96_0221BC70
add r3, sp, #0xd8
ldmia r4!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r4]
add r1, r2, #0
str r0, [r3]
ldr r0, [r6, #0x14]
bl ov96_021EB180
mov r1, #0
str r0, [r6, #0x18]
mov r0, #2
lsl r0, r0, #0x14
str r0, [sp]
ldr r0, [r6, #0x18]
add r2, r1, #0
add r3, r1, #0
bl ov96_021EB5C8
ldr r0, [r6, #0x18]
bl ov96_021EB5E8
str r0, [sp]
ldr r3, _021F04A0 ; =0x00000768
ldr r0, [r6, #0x14]
ldr r3, [r6, r3]
mov r1, #0xc
mov r2, #5
bl ov96_021EA854
ldr r1, _021F04AC ; =0x0000076C
mov r2, #0x65
str r0, [r6, r1]
ldr r0, [r6, #0x18]
mov r1, #0
bl ov96_021EB29C
ldr r0, [r6, #0x18]
mov r1, #1
mov r2, #0x68
bl ov96_021EB29C
ldr r0, [r6, #0x18]
mov r1, #2
mov r2, #0x66
bl ov96_021EB29C
ldr r0, [r6, #0x18]
mov r1, #3
mov r2, #0x67
bl ov96_021EB29C
ldr r0, [r6, #0x18]
mov r1, #4
mov r2, #0x69
bl ov96_021EB29C
mov r0, #1
str r0, [sp]
ldr r0, [r6, #0x18]
mov r1, #0xa7
mov r2, #3
mov r3, #0x65
bl ov96_021EB2BC
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
ldr r0, [r6, #0x18]
mov r1, #0xa7
mov r2, #0
mov r3, #0x65
bl ov96_021EB2F4
ldr r0, [r6, #0x18]
mov r1, #0xa7
mov r2, #2
mov r3, #0x65
bl ov96_021EB334
ldr r0, [r6, #0x18]
mov r1, #0xa7
mov r2, #1
mov r3, #0x65
bl ov96_021EB36C
mov r0, #1
str r0, [sp]
ldr r0, [r6, #0x18]
mov r1, #0xa7
mov r2, #0x1c
mov r3, #0x68
bl ov96_021EB2BC
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
ldr r0, [r6, #0x18]
mov r1, #0xa7
mov r2, #0x19
mov r3, #0x68
bl ov96_021EB2F4
ldr r0, [r6, #0x18]
mov r1, #0xa7
mov r2, #0x1b
mov r3, #0x68
bl ov96_021EB334
ldr r0, [r6, #0x18]
mov r1, #0xa7
mov r2, #0x1a
mov r3, #0x68
bl ov96_021EB36C
mov r0, #2
str r0, [sp]
ldr r0, [r6, #0x18]
mov r1, #0xa7
mov r2, #0x20
mov r3, #0x69
bl ov96_021EB2BC
mov r0, #2
str r0, [sp]
mov r0, #5
str r0, [sp, #4]
ldr r0, [r6, #0x18]
mov r1, #0xa7
mov r2, #0x1d
mov r3, #0x69
bl ov96_021EB2F4
ldr r0, [r6, #0x18]
mov r1, #0xa7
mov r2, #0x1f
mov r3, #0x69
bl ov96_021EB334
ldr r0, [r6, #0x18]
mov r1, #0xa7
mov r2, #0x1e
mov r3, #0x69
bl ov96_021EB36C
ldr r1, _021F0498 ; =0x00000774
ldr r0, [r6, #0x18]
ldr r1, [r6, r1]
bl ov96_021F3E60
ldr r0, [r6, #0x18]
bl ov96_021EB3A4
mov r4, #0
mov r5, #2
_021F03B4:
str r5, [sp]
ldr r0, [r6, #0x18]
add r1, r5, #0
mov r2, #1
mov r3, #0x65
bl ov96_021EB408
add r4, r4, #1
cmp r4, #8
blt _021F03B4
mov r4, #0
mov r5, #4
_021F03CC:
str r5, [sp]
mov r1, #1
ldr r0, [r6, #0x18]
add r2, r1, #0
mov r3, #0x68
bl ov96_021EB408
mov r0, #7
str r0, [sp]
mov r1, #1
ldr r0, [r6, #0x18]
add r2, r1, #0
mov r3, #0x68
bl ov96_021EB408
add r4, r4, #1
cmp r4, #0xc
blt _021F03CC
ldr r0, _021F04A4 ; =0x0000072C
ldr r1, [r6, #0x18]
ldr r0, [r6, r0]
bl ov96_021F30C4
mov r4, #0
_021F03FC:
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r5, r0, #0
add r0, r4, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x1b
lsl r0, r0, #4
mul r0, r5
add r2, r6, r0
mov r0, #0x90
mul r0, r1
add r5, r2, r0
ldr r0, [r6, #0x18]
mov r1, #0x68
mov r2, #4
bl ov96_021EB4F4
str r0, [r5, #0x24]
bl ov96_021EB5B8
mov r1, #2
bl Sprite_SetDrawPriority
ldr r0, [r6, #0x18]
mov r1, #0x68
mov r2, #7
bl ov96_021EB4F4
str r0, [r5, #0x28]
bl ov96_021EB5B8
mov r1, #4
bl Sprite_SetDrawPriority
add r4, r4, #1
cmp r4, #0xc
blt _021F03FC
ldr r2, _021F04A0 ; =0x00000768
ldr r3, [r6, #0x18]
ldr r2, [r6, r2]
add r0, r7, #0
mov r1, #0
bl ov96_021E6290
ldr r0, [r0]
mov r1, #1
str r0, [r6, #0x1c]
bl Sprite_SetDrawPriority
ldr r1, _021F0498 ; =0x00000774
ldr r0, [r6, #0x18]
ldr r1, [r6, r1]
bl ov96_021F3EC0
ldr r1, _021F0498 ; =0x00000774
ldr r0, [r6, #0x18]
ldr r1, [r6, r1]
bl ov96_021F3F80
add r0, r7, #0
bl ov96_021E5DEC
b _021F08C4
nop
_021F0484: .word 0xFFFFE0FF
_021F0488: .word 0x04001000
_021F048C: .word 0x000007F4
_021F0490: .word 0x00300010
_021F0494: .word gSystem + 0x60
_021F0498: .word 0x00000774
_021F049C: .word 0x00000AA7
_021F04A0: .word 0x00000768
_021F04A4: .word 0x0000072C
_021F04A8: .word ov96_0221BC70
_021F04AC: .word 0x0000076C
_021F04B0:
add r0, sp, #0x138
str r0, [sp, #0x28]
add r0, sp, #0xf4
str r0, [sp, #0x24]
ldr r0, [sp, #0x28]
mov r4, #0
str r0, [sp, #0x20]
add r0, r6, #0
str r0, [sp, #0x4c]
add r0, #0x20
str r0, [sp, #0x4c]
_021F04C6:
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r5, r1, #0
add r0, r4, #0
mov r1, #3
bl _s32_div_f
str r0, [sp, #0x48]
ldr r1, [sp, #0x48]
ldr r3, [sp, #0x28]
add r0, r7, #0
add r2, r5, #0
bl ov96_021E6168
ldr r1, [sp, #0x48]
add r0, r7, #0
add r2, r5, #0
bl ov96_021E60C0
bl ov96_021E6108
ldr r1, [sp, #0x24]
str r0, [r1, #0x14]
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r5, r0, #0
add r0, r4, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x1b
lsl r0, r0, #4
add r2, r5, #0
mul r2, r0
ldr r0, [sp, #0x4c]
add r5, r0, r2
mov r0, #0x90
mul r0, r1
str r0, [sp, #0x50]
ldr r2, [sp, #0x50]
ldr r0, [sp, #0x20]
add r2, r5, r2
ldr r1, [r6, #0x14]
add r2, #0x48
bl ov96_021E8BB4
ldr r0, [sp, #0x50]
ldr r1, [sp, #0x50]
add r0, r5, r0
add r1, r5, r1
add r0, #0x48
add r1, #0x68
mov r2, #0x20
bl MI_CpuCopy8
ldr r0, [sp, #0x50]
mov r1, #0x10
add r0, r5, r0
add r0, #0x68
bl sub_02003F04
ldr r0, [sp, #0x28]
add r4, r4, #1
add r0, #0x10
str r0, [sp, #0x28]
ldr r0, [sp, #0x24]
add r0, r0, #4
str r0, [sp, #0x24]
ldr r0, [sp, #0x20]
add r0, #0x10
str r0, [sp, #0x20]
cmp r4, #0xc
blt _021F04C6
mov r0, #1
mov r1, #0
str r1, [sp, #0xf4]
str r0, [sp, #0xf8]
str r1, [sp, #0xfc]
str r0, [sp, #0x100]
str r0, [sp, #0x104]
str r1, [sp]
str r1, [sp, #4]
ldr r0, _021F08CC ; =0x0000076C
mov r1, #0xc
ldr r0, [r6, r0]
add r2, sp, #0x138
add r3, sp, #0xf4
bl ov96_021EA8A8
add r0, r7, #0
bl ov96_021E5DEC
b _021F08C4
_021F0588:
ldr r0, _021F08CC ; =0x0000076C
ldr r0, [r6, r0]
bl ov96_021EAA00
cmp r0, #0
bne _021F0596
b _021F08C4
_021F0596:
add r0, r7, #0
bl ov96_021E5F24
str r0, [sp, #0x40]
ldr r0, [r6]
bl ov96_021E6030
add r0, r7, #0
mov r1, #1
bl ov96_021E5DFC
add r0, sp, #0xb4
mov r1, #0xaa
mov r2, #0xb
bl ReadWholeNarcMemberByIdPair
mov r0, #0
str r0, [sp, #0x44]
add r0, r6, #0
str r0, [sp, #0x58]
add r0, #0x20
str r0, [sp, #0x58]
_021F05C2:
ldr r0, _021F08CC ; =0x0000076C
ldr r1, [sp, #0x44]
ldr r0, [r6, r0]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_021EAA04
mov r1, #1
add r4, r0, #0
bl ov96_021EAB38
ldr r0, [sp, #0x44]
mov r1, #3
bl _s32_div_f
add r5, r0, #0
ldr r0, [sp, #0x44]
mov r1, #3
bl _s32_div_f
add r2, r1, #0
add r0, r7, #0
add r1, r5, #0
bl ov96_021E60C0
bl ov96_021E6138
lsl r1, r0, #3
add r0, sp, #0xb4
add r2, r0, r1
add r1, r2, #0
sub r1, #8
sub r2, r2, #4
ldr r1, [r1]
ldr r2, [r2]
add r0, r4, #0
bl ov96_021EAF70
ldr r0, _021F08CC ; =0x0000076C
ldr r1, [sp, #0x44]
ldr r0, [r6, r0]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_021EAA04
add r4, r0, #0
bl ov96_021EAA20
str r0, [sp, #0x54]
mov r1, #0
add r0, sp, #0xa8
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
ldr r0, [sp, #0x44]
mov r1, #3
bl _s32_div_f
str r0, [sp, #0x1c]
ldr r0, [sp, #0x44]
mov r1, #3
bl _s32_div_f
str r1, [sp, #0x14]
ldr r1, [sp, #0x1c]
mov r0, #0x1b
add r2, r1, #0
lsl r0, r0, #4
mul r2, r0
ldr r0, [sp, #0x58]
mov r1, #0x90
add r0, r0, r2
ldr r2, [sp, #0x14]
mul r1, r2
add r5, r0, r1
str r4, [r0, r1]
mov r0, #1
str r0, [r5, #0x18]
ldr r0, [sp, #0x54]
bl ov96_021E90FC
str r0, [sp, #0x5c]
ldr r0, [sp, #0x54]
bl ov96_021E8BB0
ldrh r0, [r0, #4]
cmp r0, #0
beq _021F068E
mov r0, #2
lsl r0, r0, #0x10
str r0, [sp, #0xa8]
ldr r0, [sp, #0x5c]
mov r1, #0x40
sub r1, r1, r0
lsr r0, r1, #0x1f
add r0, r1, r0
asr r1, r0, #1
ldr r0, [sp, #0x5c]
add r0, r0, r1
lsl r0, r0, #0xc
str r0, [sp, #0xac]
b _021F06A8
_021F068E:
mov r0, #1
lsl r0, r0, #0x10
str r0, [sp, #0xa8]
ldr r0, [sp, #0x5c]
mov r1, #0x20
sub r1, r1, r0
lsr r0, r1, #0x1f
add r0, r1, r0
asr r1, r0, #1
ldr r0, [sp, #0x5c]
add r0, r0, r1
lsl r0, r0, #0xc
str r0, [sp, #0xac]
_021F06A8:
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x1c]
lsl r0, r0, #2
str r0, [sp, #0x18]
add r2, r1, #0
mov r0, #0xc
mul r2, r0
ldr r0, _021F08D0 ; =ov96_0221BDD4
ldr r1, [sp, #0x18]
add r0, r0, r2
ldr r2, [sp, #0x18]
add r1, r0, r1
ldrh r0, [r0, r2]
str r0, [sp, #0x3c]
ldrh r0, [r1, #2]
add r1, r5, #0
add r1, #0x40
str r0, [sp, #0x38]
mov r0, #2
strb r0, [r1]
add r0, r4, #0
mov r1, #2
bl ov96_021EAC0C
ldr r1, [sp, #0x3c]
ldr r2, [sp, #0x38]
add r0, r4, #0
bl ov96_021EAF94
bl ov96_021E6104
add r1, r0, #0
add r0, r4, #0
bl ov96_021EAF6C
add r0, sp, #0x64
str r0, [sp]
ldr r1, [sp, #0x3c]
ldr r2, [sp, #0x38]
add r0, r4, #0
add r3, sp, #0x68
bl ov96_021EB0A4
ldr r0, [sp, #0x68]
lsl r0, r0, #0xc
str r0, [r5, #0xc]
ldr r0, [sp, #0x64]
lsl r0, r0, #0xc
str r0, [r5, #0x10]
ldr r0, [sp, #0x68]
lsl r0, r0, #0xc
str r0, [r5, #0x28]
ldr r0, [sp, #0x64]
lsl r0, r0, #0xc
str r0, [r5, #0x2c]
ldr r0, [sp, #0x68]
lsl r0, r0, #0xc
str r0, [r5, #0x1c]
ldr r0, [sp, #0x64]
lsl r0, r0, #0xc
str r0, [r5, #0x20]
add r0, r7, #0
bl ov96_021E5F24
ldr r1, [sp, #0x1c]
cmp r1, r0
bne _021F0738
add r0, r4, #0
mov r1, #5
bl ov96_021EABA8
b _021F0740
_021F0738:
add r0, r4, #0
mov r1, #6
bl ov96_021EABA8
_021F0740:
add r0, r4, #0
add r1, sp, #0xa8
bl ov96_021EABF4
add r0, r7, #0
bl ov96_021E5F24
cmp r0, #0
bne _021F0766
add r0, r7, #0
bl ov96_021E5F54
add r0, #0x28
bl ov96_021E8A20
add r1, r0, #0
add r0, r6, #0
bl ov96_021F0F04
_021F0766:
ldr r1, [sp, #0x1c]
ldr r0, [sp, #0x40]
cmp r1, r0
bne _021F079E
ldr r0, [sp, #0x18]
add r1, sp, #0xcc
add r0, r1, r0
add r2, r1, #0
ldr r3, [sp, #0x68]
ldr r1, [sp, #0x18]
strh r3, [r2, r1]
ldr r1, [sp, #0x64]
strh r1, [r0, #2]
ldr r0, [r6, #0x18]
bl ov96_021EB5E8
add r3, r0, #0
mov r0, #1
str r0, [sp]
ldr r2, _021F08D4 ; =0x00000768
add r0, r7, #0
ldr r2, [r6, r2]
add r1, r4, #0
bl ov96_021E64F8
mov r1, #3
bl Sprite_SetDrawPriority
_021F079E:
ldr r0, [sp, #0x44]
add r0, r0, #1
str r0, [sp, #0x44]
cmp r0, #0xc
bge _021F07AA
b _021F05C2
_021F07AA:
mov r0, #1
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
add r0, sp, #0xcc
str r0, [sp, #8]
ldr r2, _021F08D4 ; =0x00000768
ldr r3, [r6, #0x18]
ldr r2, [r6, r2]
add r0, r7, #0
mov r1, #0
bl ov96_021E634C
add r0, sp, #0x6c
mov r1, #0xaa
mov r2, #1
bl ReadWholeNarcMemberByIdPair
mov r0, #0
str r0, [sp, #0x34]
add r0, r6, #0
str r0, [sp, #0x30]
add r0, #0x20
str r0, [sp, #0x30]
ldr r0, [sp, #0x34]
str r0, [sp, #0x2c]
_021F07DE:
ldr r0, [sp, #0x34]
mov r1, #0x72
add r2, r6, r0
lsl r1, r1, #4
mov r0, #0xc
strb r0, [r2, r1]
ldr r0, [sp, #0x34]
ldr r5, [sp, #0x30]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r4, #0
str r0, [sp, #0x60]
_021F07F6:
lsl r3, r4, #0x18
ldr r2, [sp, #0x60]
add r0, r7, #0
add r1, sp, #0x6c
lsr r3, r3, #0x18
str r5, [sp]
bl ov96_021F2B24
add r0, r5, #0
add r0, #0x28
str r0, [sp]
add r0, r5, #0
add r0, #0x18
str r0, [sp, #4]
add r0, r5, #0
add r0, #0x1c
str r0, [sp, #8]
ldr r0, [r5]
ldr r1, [sp, #0x2c]
add r2, r5, #0
str r0, [sp, #0xc]
mov r0, #0x77
add r2, #0x8a
lsl r0, r0, #4
add r1, r4, r1
lsl r1, r1, #0x18
add r3, r5, #0
ldrh r2, [r2]
ldr r0, [r6, r0]
lsr r1, r1, #0x18
add r3, #0x8e
bl ov96_021F33E0
add r4, r4, #1
add r5, #0x90
cmp r4, #3
blt _021F07F6
mov r1, #0x1b
ldr r0, [sp, #0x30]
lsl r1, r1, #4
add r0, r0, r1
str r0, [sp, #0x30]
ldr r0, [sp, #0x2c]
add r0, r0, #3
str r0, [sp, #0x2c]
ldr r0, [sp, #0x34]
add r0, r0, #1
str r0, [sp, #0x34]
cmp r0, #4
blt _021F07DE
mov r1, #0x73
lsl r1, r1, #4
mov r2, #0
strh r2, [r6, r1]
add r0, r1, #2
strh r2, [r6, r0]
add r0, r1, #0
mov r2, #0xc
add r0, #0xa4
str r2, [r6, r0]
sub r0, r1, #4
ldrh r1, [r6, r1]
ldr r0, [r6, r0]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_021F31F0
mov r0, #4
str r0, [sp]
ldr r0, _021F08D8 ; =0x04000050
mov r1, #0
mov r2, #1
mov r3, #0xc
bl G2x_SetBlendAlpha_
ldr r0, _021F08DC ; =0x0000074B
mov r1, #0xc
strb r1, [r6, r0]
add r0, r6, #0
bl ov96_021F0D60
ldr r0, _021F08E0 ; =0x00000774
ldr r0, [r6, r0]
bl ov96_021F424C
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineATogglePlanes
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineBTogglePlanes
mov r0, #1
bl sub_0203A994
add r0, r7, #0
bl ov96_021E5DEC
b _021F08C4
_021F08BE:
add sp, #0x1f8
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021F08C4:
mov r0, #0
add sp, #0x1f8
pop {r3, r4, r5, r6, r7, pc}
nop
_021F08CC: .word 0x0000076C
_021F08D0: .word ov96_0221BDD4
_021F08D4: .word 0x00000768
_021F08D8: .word 0x04000050
_021F08DC: .word 0x0000074B
_021F08E0: .word 0x00000774
thumb_func_end ov96_021F010C
thumb_func_start ov96_021F08E4
ov96_021F08E4: ; 0x021F08E4
push {r3, lr}
bl ov96_021E5DC4
ldr r0, [r0, #0x18]
bl ov96_021EB5BC
mov r0, #1
pop {r3, pc}
thumb_func_end ov96_021F08E4
thumb_func_start ov96_021F08F4
ov96_021F08F4: ; 0x021F08F4
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
bl ov96_021E5DC4
add r0, r5, #0
bl ov96_021E6040
add r6, r0, #0
bl ov96_021E9510
mov r4, #0
add r7, r4, #0
_021F090E:
lsl r1, r4, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
bl ov96_021E5FBC
add r3, r0, #0
str r7, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, _021F0958 ; =0x00000125
add r1, r6, #0
str r0, [sp, #8]
add r0, r5, #0
add r2, r4, #0
bl ov96_021E95F8
add r4, r4, #1
cmp r4, #4
blt _021F090E
add r0, r6, #0
mov r1, #1
bl ov96_021E93B4
add r0, r6, #0
mov r1, #2
bl ov96_0221A56C
add r0, r6, #0
bl ov96_021E952C
add r0, r6, #0
mov r1, #2
bl ov96_021E9570
mov r0, #1
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021F0958: .word 0x00000125
thumb_func_end ov96_021F08F4
thumb_func_start ov96_021F095C
ov96_021F095C: ; 0x021F095C
push {r3, r4, r5, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
bl sub_0203A914
add r0, r5, #0
bl ov96_021E6550
ldr r0, _021F0A40 ; =0x0000072C
ldr r0, [r4, r0]
bl ov96_021F30BC
ldr r0, _021F0A44 ; =0x00000734
ldr r0, [r4, r0]
bl FreeToHeap
ldr r0, [r4]
mov r1, #0
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #1
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #2
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #3
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #4
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #5
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #6
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #7
bl FreeBgTilemapBuffer
add r0, r4, #4
bl RemoveWindow
ldr r0, [r4]
bl FreeToHeap
ldr r0, [r4, #0x18]
bl ov96_021EB21C
ldr r0, _021F0A48 ; =0x0000076C
ldr r0, [r4, r0]
bl ov96_021EA894
ldr r0, _021F0A4C ; =0x00000768
ldr r0, [r4, r0]
bl ov96_021E9C0C
bl OamManager_Free
bl sub_0202168C
bl sub_02022608
mov r0, #0x77
lsl r0, r0, #4
ldr r0, [r4, r0]
bl ov96_021F3424
ldr r0, _021F0A50 ; =0x00000774
ldr r0, [r4, r0]
bl ov96_021F3C38
mov r0, #4
bl FontID_Release
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
mov r0, #0x7f
lsl r0, r0, #4
ldr r0, [r4, r0]
bl FreeToHeap
add r0, r5, #0
bl ov96_021E5DAC
ldr r0, _021F0A54 ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
ldr r0, _021F0A58 ; =0x04000050
mov r1, #0
strh r1, [r0]
mov r0, #0x8c
bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.balign 4, 0
_021F0A40: .word 0x0000072C
_021F0A44: .word 0x00000734
_021F0A48: .word 0x0000076C
_021F0A4C: .word 0x00000768
_021F0A50: .word 0x00000774
_021F0A54: .word gSystem + 0x60
_021F0A58: .word 0x04000050
thumb_func_end ov96_021F095C
thumb_func_start ov96_021F0A5C
ov96_021F0A5C: ; 0x021F0A5C
push {r4, lr}
sub sp, #0x28
ldr r4, _021F0A78 ; =ov96_0221BDAC
add r3, sp, #0
mov r2, #5
_021F0A66:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _021F0A66
add r0, sp, #0
bl GfGfx_SetBanks
add sp, #0x28
pop {r4, pc}
.balign 4, 0
_021F0A78: .word ov96_0221BDAC
thumb_func_end ov96_021F0A5C
thumb_func_start ov96_021F0A7C
ov96_021F0A7C: ; 0x021F0A7C
push {r4, r5, lr}
sub sp, #0xc
add r4, r1, #0
add r5, r0, #0
bl ov96_021E5DC4
ldrb r1, [r4]
cmp r1, #0
beq _021F0A98
cmp r1, #1
beq _021F0AA8
cmp r1, #2
beq _021F0AC8
b _021F0AD8
_021F0A98:
add r0, r5, #0
mov r1, #0x15
bl ov96_021E601C
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021F0AD8
_021F0AA8:
mov r1, #6
str r1, [sp]
mov r1, #1
str r1, [sp, #4]
ldr r0, [r0, #0x14]
mov r1, #3
str r0, [sp, #8]
mov r0, #2
add r2, r1, #0
mov r3, #0
bl BeginNormalPaletteFade
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021F0AD8
_021F0AC8:
bl IsPaletteFadeFinished
cmp r0, #0
beq _021F0AD8
add r0, r5, #0
mov r1, #1
bl ov96_021E5FC8
_021F0AD8:
mov r0, #0
add sp, #0xc
pop {r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021F0A7C
thumb_func_start ov96_021F0AE0
ov96_021F0AE0: ; 0x021F0AE0
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r4, r1, #0
add r5, r0, #0
bl ov96_021E5DC4
add r6, r0, #0
ldrb r0, [r4]
cmp r0, #0
beq _021F0AFE
cmp r0, #1
beq _021F0B10
cmp r0, #2
beq _021F0B28
b _021F0B52
_021F0AFE:
add r0, r5, #0
bl ov96_021E637C
cmp r0, #0
beq _021F0B52
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021F0B52
_021F0B10:
add r0, r5, #0
bl ov96_021F1170
add r0, r5, #0
bl ov96_021F107C
cmp r0, #0
beq _021F0B52
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021F0B52
_021F0B28:
add r0, r5, #0
bl ov96_021E667C
cmp r0, #0
beq _021F0B52
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r6, #0x14]
str r0, [sp, #8]
mov r0, #0
add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
bl BeginNormalPaletteFade
add r0, r5, #0
mov r1, #2
bl ov96_021E5FC8
_021F0B52:
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
thumb_func_end ov96_021F0AE0
thumb_func_start ov96_021F0B58
ov96_021F0B58: ; 0x021F0B58
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r4, r1, #0
str r0, [sp]
bl ov96_021E5DC4
str r0, [sp, #4]
ldrb r0, [r4]
cmp r0, #0
bne _021F0B7E
bl IsPaletteFadeFinished
cmp r0, #0
beq _021F0B78
mov r0, #1
strb r0, [r4]
_021F0B78:
add sp, #0xc
mov r0, #0
pop {r4, r5, r6, r7, pc}
_021F0B7E:
ldr r0, [sp]
bl ov96_021E5F24
cmp r0, #0
beq _021F0B8E
add sp, #0xc
mov r0, #1
pop {r4, r5, r6, r7, pc}
_021F0B8E:
mov r0, #0
str r0, [sp, #8]
_021F0B92:
ldr r0, [sp, #8]
mov r6, #0
lsl r0, r0, #0x18
ldr r5, [sp, #4]
add r4, r6, #0
lsr r7, r0, #0x18
_021F0B9E:
add r0, r5, #0
add r0, #0x62
ldrh r0, [r0]
add r1, r7, #0
add r6, r6, r0
lsl r2, r6, #0x10
ldr r0, [sp]
lsr r2, r2, #0x10
bl ov96_021E5FB0
add r4, r4, #1
add r5, #0x90
cmp r4, #3
blt _021F0B9E
mov r0, #0x1b
ldr r1, [sp, #4]
lsl r0, r0, #4
add r0, r1, r0
str r0, [sp, #4]
ldr r0, [sp, #8]
add r0, r0, #1
str r0, [sp, #8]
cmp r0, #4
blt _021F0B92
mov r0, #1
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021F0B58
thumb_func_start ov96_021F0BD4
ov96_021F0BD4: ; 0x021F0BD4
push {r3, r4, r5, lr}
sub sp, #0xf0
ldr r5, _021F0D3C ; =ov96_0221BC7C
add r3, sp, #0xe0
add r4, r0, #0
add r2, r3, #0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl SetBothScreensModesAndDisable
ldr r5, _021F0D40 ; =ov96_0221BCE8
add r3, sp, #0xc4
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #0
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
bl BgClearTilemapBufferAndCommit
ldr r5, _021F0D44 ; =ov96_0221BD04
add r3, sp, #0xa8
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #1
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
bl BgClearTilemapBufferAndCommit
ldr r5, _021F0D48 ; =ov96_0221BD3C
add r3, sp, #0x8c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #2
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
bl BgClearTilemapBufferAndCommit
ldr r5, _021F0D4C ; =ov96_0221BD58
add r3, sp, #0x70
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #3
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #3
bl BgClearTilemapBufferAndCommit
ldr r5, _021F0D50 ; =ov96_0221BD74
add r3, sp, #0x54
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #4
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
bl BgClearTilemapBufferAndCommit
ldr r5, _021F0D54 ; =ov96_0221BD90
add r3, sp, #0x38
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #5
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #5
bl BgClearTilemapBufferAndCommit
ldr r5, _021F0D58 ; =ov96_0221BCCC
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #7
str r0, [r3]
add r0, r4, #0
mov r3, #1
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #7
bl BgClearTilemapBufferAndCommit
ldr r5, _021F0D5C ; =ov96_0221BD20
add r3, sp, #0
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #6
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #6
bl BgClearTilemapBufferAndCommit
mov r0, #8
mov r1, #0
bl GfGfx_EngineATogglePlanes
add sp, #0xf0
pop {r3, r4, r5, pc}
nop
_021F0D3C: .word ov96_0221BC7C
_021F0D40: .word ov96_0221BCE8
_021F0D44: .word ov96_0221BD04
_021F0D48: .word ov96_0221BD3C
_021F0D4C: .word ov96_0221BD58
_021F0D50: .word ov96_0221BD74
_021F0D54: .word ov96_0221BD90
_021F0D58: .word ov96_0221BCCC
_021F0D5C: .word ov96_0221BD20
thumb_func_end ov96_021F0BD4
thumb_func_start ov96_021F0D60
ov96_021F0D60: ; 0x021F0D60
push {r4, r5, lr}
sub sp, #0x14
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
add r5, r0, #0
str r3, [sp, #8]
ldr r0, [r5, #0x14]
mov r1, #5
str r0, [sp, #0xc]
ldr r2, [r5]
mov r0, #0xa7
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r5, #0x14]
mov r1, #9
str r0, [sp, #0xc]
ldr r2, [r5]
mov r0, #0xa7
mov r3, #2
bl GfGfxLoader_LoadCharData
mov r1, #0
mov r0, #1
str r1, [sp]
lsl r0, r0, #0xc
str r0, [sp, #4]
str r1, [sp, #8]
ldr r0, [r5, #0x14]
mov r1, #0xc
str r0, [sp, #0xc]
ldr r2, [r5]
mov r0, #0xa7
mov r3, #5
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r5, #0x14]
mov r1, #0x16
str r0, [sp, #0xc]
ldr r2, [r5]
mov r0, #0xa7
mov r3, #7
bl GfGfxLoader_LoadCharData
mov r0, #0x80
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r5, #0x14]
mov r1, #0xf
str r0, [sp, #0xc]
ldr r2, [r5]
mov r0, #0xa7
mov r3, #6
bl GfGfxLoader_LoadCharData
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
str r3, [sp, #8]
ldr r0, [r5, #0x14]
mov r1, #6
str r0, [sp, #0xc]
ldr r2, [r5]
mov r0, #0xa7
bl GfGfxLoader_LoadScrnData
ldr r0, [r5, #0x14]
mov r1, #0xa
str r0, [sp]
mov r0, #0xa7
mov r2, #0
add r3, sp, #0x10
bl GfGfxLoader_GetScrnData
ldr r3, [sp, #0x10]
add r4, r0, #0
add r2, r3, #0
ldr r0, [r5]
ldr r3, [r3, #8]
mov r1, #2
add r2, #0xc
bl BG_LoadScreenTilemapData
mov r0, #0x20
str r0, [sp]
mov r0, #0x18
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
mov r2, #0
ldr r0, [r5]
mov r1, #2
add r3, r2, #0
bl BgTilemapRectChangePalette
ldr r0, [r5]
mov r1, #2
bl ScheduleBgTilemapBufferTransfer
add r0, r4, #0
bl FreeToHeap
ldr r0, [r5, #0x14]
ldr r3, _021F0EF4 ; =0x00000738
str r0, [sp]
mov r0, #0xa7
mov r1, #7
mov r2, #0
add r3, r5, r3
bl GfGfxLoader_GetScrnData
ldr r1, _021F0EF8 ; =0x00000734
str r0, [r5, r1]
add r0, r1, #4
ldr r3, [r5, r0]
ldr r0, [r5]
add r2, r3, #0
ldr r3, [r3, #8]
mov r1, #1
add r2, #0xc
bl BG_LoadScreenTilemapData
ldr r0, _021F0EF4 ; =0x00000738
mov r1, #1
ldr r3, [r5, r0]
mov r0, #0
str r0, [sp]
add r2, r3, #0
ldr r0, [r5]
ldr r3, [r3, #8]
add r2, #0xc
bl BgCopyOrUncompressTilemapBufferRangeToVram
ldr r0, _021F0EFC ; =0x00000774
ldr r0, [r5, r0]
bl ov96_021F3CBC
mov r0, #0x20
str r0, [sp]
ldr r0, [r5, #0x14]
mov r2, #0
str r0, [sp, #4]
mov r0, #0xa7
mov r1, #4
add r3, r2, #0
bl GfGfxLoader_GXLoadPal
mov r3, #0x20
str r3, [sp]
ldr r0, [r5, #0x14]
mov r1, #8
str r0, [sp, #4]
mov r0, #0xa7
mov r2, #0
bl GfGfxLoader_GXLoadPal
mov r0, #0x40
str r0, [sp]
ldr r0, [r5, #0x14]
mov r1, #0x15
str r0, [sp, #4]
mov r0, #0xa7
mov r2, #4
mov r3, #0
bl GfGfxLoader_GXLoadPal
mov r0, #0x20
str r0, [sp]
ldr r0, [r5, #0x14]
mov r1, #0xb
str r0, [sp, #4]
mov r0, #0xa7
mov r2, #4
mov r3, #0x40
bl GfGfxLoader_GXLoadPal
mov r0, #0x20
str r0, [sp]
ldr r0, [r5, #0x14]
mov r1, #0xe
str r0, [sp, #4]
mov r0, #0xa7
mov r2, #4
mov r3, #0x60
bl GfGfxLoader_GXLoadPal
mov r1, #2
ldr r0, _021F0F00 ; =0x04000018
lsl r1, r1, #0x16
str r1, [r0]
add sp, #0x14
pop {r4, r5, pc}
.balign 4, 0
_021F0EF4: .word 0x00000738
_021F0EF8: .word 0x00000734
_021F0EFC: .word 0x00000774
_021F0F00: .word 0x04000018
thumb_func_end ov96_021F0D60
thumb_func_start ov96_021F0F04
ov96_021F0F04: ; 0x021F0F04
push {r4, r5, r6, r7, lr}
sub sp, #0x14
str r0, [sp]
mov r0, #0
str r0, [sp, #0xc]
str r0, [sp, #8]
str r0, [sp, #4]
add r4, r0, #0
ldr r0, [sp]
add r5, r1, #0
str r0, [sp, #0x10]
add r0, #0x20
str r0, [sp, #0x10]
_021F0F1E:
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r6, r0, #0
add r0, r4, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x1b
lsl r0, r0, #4
add r2, r6, #0
mul r2, r0
ldr r0, [sp, #0x10]
add r2, r0, r2
mov r0, #0x90
mul r0, r1
add r6, r2, r0
ldr r1, [r6, #0x28]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
ldr r1, [r6, #0x2c]
asr r2, r0, #0xc
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r3, r0, #0xc
cmp r2, #0
bge _021F0F5E
mov r2, #0
b _021F0F64
_021F0F5E:
cmp r2, #0xff
ble _021F0F64
mov r2, #0xff
_021F0F64:
cmp r3, #0
bge _021F0F6C
mov r3, #0
b _021F0F72
_021F0F6C:
cmp r3, #0xff
ble _021F0F72
mov r3, #0xff
_021F0F72:
ldr r0, [r6, #0x18]
add r7, r5, r4
lsl r0, r0, #0x18
lsr r1, r0, #0x18
add r0, r6, #0
add r0, #0x40
ldrb r0, [r0]
add r6, #0x44
strb r2, [r5, r4]
lsl r2, r4, #1
sub r0, r0, #1
strb r3, [r7, #0xc]
add r3, r0, #0
lsl r3, r2
ldr r0, [sp, #0xc]
lsl r1, r2
add r0, r0, r3
str r0, [sp, #0xc]
ldr r0, [sp, #8]
add r0, r0, r1
str r0, [sp, #8]
ldrb r0, [r6]
add r1, r0, #0
lsl r1, r4
ldr r0, [sp, #4]
add r0, r0, r1
str r0, [sp, #4]
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #0xc
blo _021F0F1E
ldr r0, [sp, #0xc]
ldr r1, [sp]
str r0, [r5, #0x18]
ldr r0, _021F1078 ; =0x00000726
mov r7, #0
ldrb r1, [r1, r0]
add r3, r0, #0
add r3, #0xc
lsl r2, r1, #0x18
ldr r1, [sp, #0xc]
add r1, r1, r2
str r1, [r5, #0x18]
ldr r1, [sp, #8]
ldr r2, [sp]
add r1, r7, r1
str r1, [r5, #0x1c]
ldrh r2, [r2, r3]
add r3, r0, #0
add r3, #0x25
lsl r2, r2, #0x18
add r1, r1, r2
ldr r2, [sp]
str r1, [r5, #0x1c]
ldrb r2, [r2, r3]
lsl r2, r2, #0x1c
add r1, r1, r2
str r1, [r5, #0x1c]
ldr r1, [sp]
sub r2, r0, #2
ldrb r2, [r1, r2]
lsl r3, r2, #2
add r3, r1, r3
add r1, r0, #0
sub r1, #0x46
ldr r1, [r3, r1]
add r3, r2, #1
lsr r6, r3, #0x1f
lsl r4, r3, #0x1e
sub r4, r4, r6
mov r3, #0x1e
ror r4, r3
add r6, r6, r4
ldr r3, [sp]
sub r4, r0, #2
strb r6, [r3, r4]
ldr r3, [sp, #4]
add r4, r0, #3
add r6, r7, r3
ldr r3, [sp]
str r6, [r5, #0x20]
ldrb r3, [r3, r4]
add r4, r0, #0
add r4, #0x22
lsl r3, r3, #0xc
add r6, r6, r3
ldr r3, [sp]
str r6, [r5, #0x20]
ldrb r3, [r3, r4]
add r4, r0, #0
lsl r1, r1, #0x18
lsl r3, r3, #0xd
add r6, r6, r3
lsr r1, r1, #0x18
ldr r3, [sp]
str r6, [r5, #0x20]
add r4, #0x24
ldrb r3, [r3, r4]
add r4, r0, #0
add r4, #0x26
lsl r3, r3, #0xe
add r6, r6, r3
ldr r3, [sp]
str r6, [r5, #0x20]
ldrb r3, [r3, r4]
lsl r1, r1, #0x12
lsl r3, r3, #0xf
add r3, r6, r3
add r3, r3, r1
lsl r1, r2, #0x1a
add r1, r3, r1
ldr r2, [sp]
str r1, [r5, #0x20]
add r3, r0, #1
ldrb r2, [r2, r3]
mov r3, #0xc
lsl r2, r2, #0x1c
add r1, r1, r2
str r1, [r5, #0x20]
add r2, r0, #0
ldr r1, [sp]
add r2, #0x22
strb r7, [r1, r2]
add r2, r0, #0
add r2, #0x25
strb r3, [r1, r2]
add r0, #0x26
strb r7, [r1, r0]
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021F1078: .word 0x00000726
thumb_func_end ov96_021F0F04
thumb_func_start ov96_021F107C
ov96_021F107C: ; 0x021F107C
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
add r0, r5, #0
bl ov96_021E5F54
add r7, r0, #0
bl ov96_021E8A20
add r6, r0, #0
mov r0, #0
add r7, #0xf0
str r0, [r6]
add r0, r7, #0
bl ov96_021E8A20
ldr r0, [r0, #0x20]
mov r1, #1
asr r0, r0, #0xc
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _021F10E2
ldr r0, [r4, #0x18]
bl ov96_021EB63C
ldr r0, _021F115C ; =0x0000076C
mov r1, #1
ldr r0, [r4, r0]
bl ov96_021EB144
add r0, r5, #0
bl ov96_021E65A4
ldr r0, _021F1160 ; =0x00000774
ldr r0, [r4, r0]
bl ov96_021F46B4
add r6, r0, #0
add r0, r5, #0
add r1, r6, #0
bl ov96_021E8318
add r0, r4, #0
add r1, r6, #0
bl ov96_021F2EFC
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021F10E2:
ldr r0, _021F1164 ; =0x0000072A
ldrb r2, [r4, r0]
cmp r2, #0
beq _021F111A
sub r0, r0, #3
ldrb r0, [r4, r0]
cmp r0, #1
bhs _021F10F6
mov r1, #0
b _021F1104
_021F10F6:
cmp r0, #3
blo _021F1104
cmp r0, #4
bhs _021F1102
mov r1, #2
b _021F1104
_021F1102:
mov r1, #3
_021F1104:
ldr r0, _021F1168 ; =0x00000732
ldrh r0, [r4, r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl ov96_021F30F8
ldr r1, _021F1168 ; =0x00000732
strh r0, [r4, r1]
mov r0, #0
sub r1, #8
strb r0, [r4, r1]
_021F111A:
bl System_GetTouchNew
cmp r0, #0
beq _021F113C
add r0, r5, #0
bl ov96_021E5F24
add r1, r0, #0
mov r0, #1
lsl r1, r1, #0x18
str r0, [sp]
add r0, r5, #0
lsr r1, r1, #0x18
mov r2, #3
mov r3, #0
bl ov96_021E8228
_021F113C:
bl System_GetTouchHeld
cmp r0, #0
beq _021F1152
ldr r0, _021F116C ; =gSystem + 0x40
ldrh r1, [r0, #0x20]
strb r1, [r6, #4]
ldrh r0, [r0, #0x22]
strb r0, [r6, #5]
mov r0, #1
str r0, [r6]
_021F1152:
add r0, r5, #0
bl ov96_021F1614
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F115C: .word 0x0000076C
_021F1160: .word 0x00000774
_021F1164: .word 0x0000072A
_021F1168: .word 0x00000732
_021F116C: .word gSystem + 0x40
thumb_func_end ov96_021F107C
thumb_func_start ov96_021F1170
ov96_021F1170: ; 0x021F1170
push {r4, r5, r6, r7, lr}
sub sp, #0x2c
str r0, [sp, #4]
bl ov96_021E5F54
str r0, [sp, #0x14]
ldr r0, [sp, #4]
bl ov96_021E5DC4
add r4, r0, #0
ldr r0, [sp, #4]
bl ov96_021E5F24
cmp r0, #0
beq _021F1190
b _021F160A
_021F1190:
ldr r0, [sp, #0x14]
add r0, #0x28
bl ov96_021E8A20
str r0, [sp, #0x1c]
ldr r0, _021F146C ; =0x000007EC
ldr r1, [r4, r0]
cmp r1, #1
bne _021F11EA
ldr r0, [sp, #4]
mov r6, #0
bl ov96_021E5D34
add r7, r6, #0
str r0, [sp, #0x10]
cmp r0, #0
ble _021F11D2
ldr r5, [sp, #0x14]
add r5, #0x50
_021F11B6:
add r0, r5, #0
bl ov96_021E8A20
ldrb r0, [r0, #8]
cmp r0, #0
beq _021F11C8
add r0, r6, #1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
_021F11C8:
ldr r0, [sp, #0x10]
add r7, r7, #1
add r5, #0x28
cmp r7, r0
blt _021F11B6
_021F11D2:
ldr r0, [sp, #0x10]
cmp r6, r0
bne _021F1216
ldr r1, _021F1470 ; =0x00000726
mov r2, #0
add r0, r1, #0
strb r2, [r4, r1]
add r0, #0x24
strb r2, [r4, r0]
add r1, #0xc6
str r2, [r4, r1]
b _021F13DC
_021F11EA:
add r1, r0, #0
sub r1, #0xc4
ldrb r1, [r4, r1]
cmp r1, #0
beq _021F122E
add r1, r0, #0
sub r1, #0xc4
ldrb r1, [r4, r1]
sub r2, r1, #1
add r1, r0, #0
sub r1, #0xc4
strb r2, [r4, r1]
add r1, r0, #0
sub r1, #0xc4
ldrb r1, [r4, r1]
cmp r1, #0
bne _021F1212
mov r1, #1
str r1, [r4, r0]
b _021F13DC
_021F1212:
cmp r1, #0x3c
beq _021F1218
_021F1216:
b _021F13DC
_021F1218:
add r1, r0, #0
mov r2, #1
sub r1, #0xc2
strb r2, [r4, r1]
add r1, r0, #0
sub r1, #0xc5
ldrb r1, [r4, r1]
sub r0, #0xc5
add r1, r1, #1
strb r1, [r4, r0]
b _021F13DC
_021F122E:
add r1, r0, #0
sub r1, #0xa2
ldrb r1, [r4, r1]
cmp r1, #0
beq _021F1310
add r1, r0, #0
mov r2, #0x2c
sub r1, #0xc6
strb r2, [r4, r1]
add r1, r0, #0
sub r1, #0xa3
ldrb r1, [r4, r1]
cmp r1, #0
bne _021F1302
add r1, r0, #0
sub r1, #0x9f
ldrb r1, [r4, r1]
cmp r1, #0
bne _021F12F4
add r1, r0, #0
sub r1, #0x9d
ldrb r2, [r4, r1]
add r1, r0, #0
sub r1, #0x9e
ldrb r1, [r4, r1]
cmp r2, r1
blo _021F1272
add r0, r4, #0
bl ov96_021F2A00
ldr r0, _021F1474 ; =0x00000728
mov r1, #0x5a
strb r1, [r4, r0]
b _021F13DC
_021F1272:
add r1, r0, #0
add r2, r4, r2
sub r1, #0x9c
ldrb r2, [r2, r1]
add r1, r0, #0
sub r1, #0xa1
strb r2, [r4, r1]
add r1, r0, #0
sub r1, #0x9d
ldrb r1, [r4, r1]
sub r0, #0x90
add r1, r4, r1
ldrb r0, [r1, r0]
bl ov96_021F32C4
ldr r1, _021F1478 ; =0x0000074C
strb r0, [r4, r1]
sub r0, r1, #1
ldrb r0, [r4, r0]
mov r1, #3
bl _s32_div_f
mov r1, #0x6e
lsl r0, r0, #0x18
lsl r1, r1, #4
lsr r7, r0, #0x18
add r0, r1, #0
add r0, #0x6f
ldrb r0, [r4, r0]
add r6, r4, r1
lsl r5, r7, #2
add r2, r4, r0
add r0, r1, #0
add r0, #0x7c
ldrb r0, [r2, r0]
ldr r3, [r6, r5]
add r0, r3, r0
str r0, [r6, r5]
add r0, r1, #0
add r0, #0x6f
ldrb r0, [r4, r0]
add r2, r0, #1
add r0, r1, #0
add r0, #0x6f
strb r2, [r4, r0]
add r0, r1, #0
mov r2, #6
add r0, #0x6d
add r1, #0x6b
strb r2, [r4, r0]
ldrb r0, [r4, r1]
mov r1, #3
bl _s32_div_f
add r2, r1, #0
mov r0, #1
str r0, [sp]
lsl r2, r2, #0x18
ldr r0, [sp, #4]
add r1, r7, #0
lsr r2, r2, #0x18
mov r3, #3
bl ov96_021E8228
b _021F13DC
_021F12F4:
add r1, r0, #0
sub r1, #0x9f
ldrb r1, [r4, r1]
sub r0, #0x9f
sub r1, r1, #1
strb r1, [r4, r0]
b _021F13DC
_021F1302:
add r1, r0, #0
sub r1, #0xa3
ldrb r1, [r4, r1]
sub r0, #0xa3
sub r1, r1, #1
strb r1, [r4, r0]
b _021F13DC
_021F1310:
sub r0, #0xc5
ldrb r0, [r4, r0]
cmp r0, #1
bhs _021F131C
mov r2, #8
b _021F1326
_021F131C:
cmp r0, #3
bhs _021F1324
mov r2, #6
b _021F1326
_021F1324:
mov r2, #4
_021F1326:
ldr r0, _021F147C ; =0x00000725
ldrb r1, [r4, r0]
add r1, r1, #1
strb r1, [r4, r0]
ldrb r1, [r4, r0]
cmp r1, r2
blt _021F13DC
mov r1, #0
strb r1, [r4, r0]
add r2, r0, #1
ldrb r2, [r4, r2]
add r3, r2, #1
add r2, r0, #1
strb r3, [r4, r2]
ldrb r2, [r4, r2]
cmp r2, #0x2b
blo _021F13DC
mov r3, #1
add r2, r0, #6
strb r3, [r4, r2]
add r2, r0, #0
add r2, #0x23
strb r3, [r4, r2]
add r2, r0, #0
add r2, #0x25
strb r3, [r4, r2]
mov r2, #0x14
add r0, #0x24
strb r2, [r4, r0]
mov r0, #0x72
mov r3, #0xc
lsl r0, r0, #4
_021F1366:
add r2, r4, r1
add r1, r1, #1
strb r3, [r2, r0]
cmp r1, #4
blt _021F1366
add r0, r4, #0
mov r5, #0
str r0, [sp, #0x20]
add r0, #0x20
str r0, [sp, #0x20]
add r7, r5, #0
_021F137C:
add r0, r5, #0
mov r1, #3
bl _s32_div_f
add r6, r0, #0
add r0, r5, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x1b
lsl r0, r0, #4
add r2, r6, #0
mul r2, r0
ldr r0, [sp, #0x20]
add r5, r5, #1
add r2, r0, r2
mov r0, #0x90
mul r0, r1
add r6, r2, r0
add r3, r6, #0
add r3, #0x28
add r2, r6, #0
ldmia r3!, {r0, r1}
add r2, #0x1c
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
str r7, [r6, #0x34]
add r0, r6, #0
str r7, [r6, #0x38]
add r0, #0x8c
ldrh r1, [r0]
add r0, r6, #0
add r0, #0x8e
strh r1, [r0]
add r0, r6, #0
add r0, #0x44
strb r7, [r0]
add r0, r6, #0
add r0, #0x45
strb r7, [r0]
add r0, r6, #0
add r0, #0x46
add r6, #0x47
strb r7, [r0]
strb r7, [r6]
cmp r5, #0xc
blt _021F137C
_021F13DC:
ldr r0, _021F1480 ; =0x00000727
ldrb r1, [r4, r0]
cmp r1, #6
blo _021F13E8
mov r1, #1
b _021F13EA
_021F13E8:
mov r1, #0
_021F13EA:
add r0, r0, #2
strb r1, [r4, r0]
ldr r0, [sp, #0x14]
add r0, #0x50
bl ov96_021E8A20
add r5, r0, #0
ldr r0, [sp, #0x14]
bl ov96_021E8A20
add r3, r0, #0
mov r2, #4
_021F1402:
ldmia r3!, {r0, r1}
stmia r5!, {r0, r1}
sub r2, r2, #1
bne _021F1402
ldr r0, [r3]
str r0, [r5]
ldr r0, _021F1484 ; =0x0000074A
ldrb r0, [r4, r0]
cmp r0, #0
beq _021F1418
b _021F15F0
_021F1418:
ldr r0, [sp, #0x14]
add r7, r4, #0
add r0, #0x50
mov r6, #0
str r0, [sp, #0x14]
add r5, r4, #0
add r7, #0x20
_021F1426:
ldr r0, [sp, #0x14]
bl ov96_021E8A20
str r0, [sp, #0x18]
ldr r0, [r0]
cmp r0, #0
beq _021F148C
mov r0, #0x6f
lsl r0, r0, #4
ldr r1, [r5, r0]
cmp r1, #0
beq _021F1450
add r0, r0, #4
ldr r0, [r5, r0]
cmp r0, #0
beq _021F1450
mov r0, #0x6f
mov r1, #0
lsl r0, r0, #4
str r1, [r5, r0]
b _021F1498
_021F1450:
cmp r1, #0
bne _021F1498
ldr r0, _021F1488 ; =0x000006F4
ldr r0, [r5, r0]
cmp r0, #0
bne _021F1498
mov r0, #0x6f
mov r1, #1
lsl r0, r0, #4
str r1, [r5, r0]
add r0, r0, #4
str r1, [r5, r0]
b _021F1498
nop
_021F146C: .word 0x000007EC
_021F1470: .word 0x00000726
_021F1474: .word 0x00000728
_021F1478: .word 0x0000074C
_021F147C: .word 0x00000725
_021F1480: .word 0x00000727
_021F1484: .word 0x0000074A
_021F1488: .word 0x000006F4
_021F148C:
mov r0, #0x6f
mov r1, #0
lsl r0, r0, #4
str r1, [r5, r0]
add r0, r0, #4
str r1, [r5, r0]
_021F1498:
mov r0, #0x6f
lsl r0, r0, #4
ldr r0, [r5, r0]
cmp r0, #0
beq _021F14EE
add r0, r4, #0
add r1, r6, #0
bl ov96_021F2A84
cmp r0, #0
bne _021F157E
ldr r2, [sp, #0x18]
ldr r3, [sp, #0x18]
ldrb r2, [r2, #4]
lsl r1, r6, #0x18
ldrb r3, [r3, #5]
add r0, r4, #0
lsr r1, r1, #0x18
bl ov96_021F20C4
str r0, [sp, #0x24]
cmp r0, #0xc
beq _021F157E
mov r1, #3
bl _s32_div_f
add r3, r1, #0
mov r0, #0x90
mul r3, r0
mov r0, #0x72
ldr r1, [sp, #0x24]
add r2, r4, r6
lsl r0, r0, #4
strb r1, [r2, r0]
add r1, r7, r3
add r1, #0x46
mov r0, #2
strb r0, [r1]
add r1, r7, r3
add r1, #0x47
mov r0, #3
strb r0, [r1]
b _021F157E
_021F14EE:
ldr r0, _021F1610 ; =0x000006F4
ldr r0, [r5, r0]
cmp r0, #0
beq _021F156A
mov r0, #0x72
add r1, r4, r6
lsl r0, r0, #4
ldrb r0, [r1, r0]
str r1, [sp, #0xc]
cmp r0, #0xc
beq _021F157E
mov r1, #3
bl _s32_div_f
lsl r0, r1, #0x18
lsr r1, r0, #0x18
mov r0, #0x90
mul r0, r1
str r0, [sp, #0x28]
add r0, r7, r0
str r0, [sp, #8]
add r0, #0x1c
str r0, [sp]
ldr r0, [sp, #0x18]
ldr r1, [sp, #0x18]
ldr r2, [sp, #8]
ldrb r0, [r0, #4]
ldrb r1, [r1, #5]
add r2, #0x28
mov r3, #0
bl ov96_021F208C
ldr r0, [sp, #0x28]
ldr r1, [sp, #8]
ldr r2, [sp, #8]
ldr r0, [r7, r0]
ldr r1, [r1, #0x1c]
ldr r2, [r2, #0x20]
bl ov96_021F2F7C
cmp r0, #0
beq _021F1556
mov r0, #0x72
ldr r1, [sp, #0xc]
lsl r0, r0, #4
ldrb r0, [r1, r0]
mov r1, #1
add r2, r4, r0
mov r0, #0x7e
lsl r0, r0, #4
strb r1, [r2, r0]
b _021F157E
_021F1556:
mov r0, #0x72
ldr r1, [sp, #0xc]
lsl r0, r0, #4
ldrb r0, [r1, r0]
mov r1, #0
add r2, r4, r0
mov r0, #0x7e
lsl r0, r0, #4
strb r1, [r2, r0]
b _021F157E
_021F156A:
mov r1, #0x72
add r0, r4, r6
lsl r1, r1, #4
ldrb r1, [r0, r1]
cmp r1, #0xc
beq _021F157E
mov r1, #0x72
mov r2, #0xc
lsl r1, r1, #4
strb r2, [r0, r1]
_021F157E:
ldr r0, [sp, #0x14]
add r6, r6, #1
add r0, #0x28
str r0, [sp, #0x14]
mov r0, #0x1b
lsl r0, r0, #4
add r5, #0xc
add r7, r7, r0
cmp r6, #4
bge _021F1594
b _021F1426
_021F1594:
mov r1, #0x77
lsl r1, r1, #4
ldr r0, [r4, r1]
sub r1, #0x3e
ldrh r1, [r4, r1]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_021F342C
add r6, r0, #0
cmp r6, #0xc
beq _021F15F0
mov r1, #3
bl _s32_div_f
lsl r0, r0, #0x18
lsr r5, r0, #0x18
ldr r0, [sp, #4]
bl ov96_021E5D34
cmp r5, r0
blo _021F15EC
add r0, r6, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x1b
add r2, r4, #0
lsl r0, r0, #4
add r2, #0x20
mul r0, r5
add r0, r2, r0
mov r2, #0x90
add r3, r1, #0
mul r3, r2
add r1, r0, r3
add r0, r0, r3
mov r2, #2
add r1, #0x46
strb r2, [r1]
mov r1, #3
add r0, #0x47
strb r1, [r0]
b _021F15F0
_021F15EC:
bl GF_AssertFail
_021F15F0:
ldr r0, [sp, #4]
bl ov96_021F1CC0
add r0, r4, #0
bl ov96_021F21EC
add r0, r4, #0
bl ov96_021F2834
ldr r1, [sp, #0x1c]
add r0, r4, #0
bl ov96_021F0F04
_021F160A:
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
nop
_021F1610: .word 0x000006F4
thumb_func_end ov96_021F1170
thumb_func_start ov96_021F1614
ov96_021F1614: ; 0x021F1614
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x138
str r0, [sp, #0xc]
bl ov96_021E5DC4
add r6, r0, #0
ldr r0, [sp, #0xc]
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
str r0, [sp, #0x4c]
ldr r0, [sp, #0xc]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x2c]
ldr r0, [sp, #0x4c]
mov r1, #0xf
ldr r2, [r0, #0x1c]
asr r0, r2, #0x1c
and r0, r1
str r0, [sp, #0x64]
asr r0, r2, #0x18
add r5, r0, #0
ldr r0, [sp, #0x4c]
and r5, r1
ldr r0, [r0, #0x18]
asr r0, r0, #0x18
lsl r0, r0, #0x18
lsr r4, r0, #0x18
ldr r0, [sp, #0x4c]
ldr r2, [r0, #0x20]
mov r0, #1
asr r3, r2, #0xd
and r3, r0
lsl r3, r3, #0x18
lsr r3, r3, #0x18
str r3, [sp, #0x60]
asr r3, r2, #0xe
and r0, r3
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x5c]
asr r3, r2, #0xf
mov r0, #7
and r0, r3
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x28]
asr r3, r2, #0x1a
mov r0, #3
and r0, r3
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x58]
asr r0, r2, #0x12
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x54]
asr r0, r2, #0x1c
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x50]
ldr r0, [sp, #0x5c]
cmp r0, #0
bne _021F16B4
ldr r0, [sp, #0xc]
bl ov96_021E5F54
bl ov96_021E8A20
mov r1, #0
strb r1, [r0, #8]
_021F16B4:
mov r0, #0x73
lsl r0, r0, #4
ldrh r1, [r6, r0]
lsl r2, r5, #0x18
lsr r7, r2, #0x18
lsl r1, r1, #0x18
lsr r1, r1, #0x18
cmp r1, r7
beq _021F16E4
mov r5, #0
strh r7, [r6, r0]
add r3, r5, #0
add r0, #0xc
_021F16CE:
add r2, r6, r5
add r5, r5, #1
strb r3, [r2, r0]
cmp r5, #0xc
blt _021F16CE
ldr r0, _021F19E8 ; =0x000007AC
ldr r3, [sp, #0xc]
add r0, r6, r0
add r2, r7, #0
bl ov96_021F2B68
_021F16E4:
cmp r4, #0
bne _021F170A
ldr r0, _021F19EC ; =0x00000738
mov r1, #1
ldr r3, [r6, r0]
ldr r0, [r6]
add r2, r3, #0
ldr r3, [r3, #8]
add r2, #0xc
bl BG_LoadScreenTilemapData
ldr r0, [r6]
mov r1, #1
bl ScheduleBgTilemapBufferTransfer
ldr r0, _021F19F0 ; =0x000007A8
mov r1, #0
str r1, [r6, r0]
b _021F1796
_021F170A:
cmp r4, #0x2b
bhs _021F1766
ldr r0, _021F19F0 ; =0x000007A8
ldr r1, [r6, r0]
cmp r1, #0
bne _021F175C
ldr r1, [sp, #0x50]
cmp r1, #1
bhi _021F172E
cmp r4, #0x20
blo _021F172E
sub r0, #0xd1
bl PlaySE
ldr r0, _021F19F0 ; =0x000007A8
mov r1, #1
str r1, [r6, r0]
b _021F175C
_021F172E:
ldr r0, [sp, #0x50]
cmp r0, #1
bls _021F1746
cmp r4, #0x1c
blo _021F1746
ldr r0, _021F19F4 ; =0x000006D7
bl PlaySE
ldr r0, _021F19F0 ; =0x000007A8
mov r1, #1
str r1, [r6, r0]
b _021F175C
_021F1746:
ldr r0, [sp, #0x50]
cmp r0, #3
bls _021F175C
cmp r4, #0x15
blo _021F175C
ldr r0, _021F19F4 ; =0x000006D7
bl PlaySE
ldr r0, _021F19F0 ; =0x000007A8
mov r1, #1
str r1, [r6, r0]
_021F175C:
ldr r1, [r6]
add r0, r4, #0
bl ov96_021F295C
b _021F1796
_021F1766:
ldr r3, _021F19F8 ; =ov96_0221BC8C
add r2, sp, #0x11c
mov r1, #8
_021F176C:
ldrh r0, [r3]
add r3, r3, #2
strh r0, [r2]
add r2, r2, #2
sub r1, r1, #1
bne _021F176C
mov r1, #2
str r1, [sp]
mov r0, #4
str r0, [sp, #4]
str r1, [sp, #8]
ldr r0, [r6]
mov r1, #1
add r2, sp, #0x11c
mov r3, #0xe
bl LoadRectToBgTilemapRect
ldr r1, [r6]
mov r0, #0x2a
bl ov96_021F295C
_021F1796:
ldr r0, [sp, #0x60]
cmp r0, #0
beq _021F17A2
ldr r0, _021F19FC ; =0x000008CF
bl PlaySE
_021F17A2:
ldr r0, _021F1A00 ; =0x00000774
ldr r1, [sp, #0x50]
ldr r0, [r6, r0]
bl ov96_021F4364
add r0, sp, #0x12c
ldr r3, _021F1A04 ; =ov96_0221BC9C
str r0, [sp, #0x30]
add r2, sp, #0xa4
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r3, _021F1A08 ; =ov96_0221BCB4
mov r5, #0
add r2, sp, #0x8c
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
add r0, r6, #0
str r0, [sp, #0x68]
add r0, #0x20
str r5, [sp, #0x34]
add r7, r6, #0
str r0, [sp, #0x68]
_021F17DE:
add r0, r5, #0
mov r1, #3
bl _s32_div_f
str r1, [sp, #0x14]
add r0, r5, #0
mov r1, #3
bl _s32_div_f
mov r1, #0x1b
lsl r1, r1, #4
str r0, [sp, #0x24]
mul r1, r0
ldr r0, [sp, #0x68]
ldr r2, [sp, #0x14]
add r0, r0, r1
mov r1, #0x90
mul r1, r2
add r4, r0, r1
ldr r0, [r0, r1]
bl ov96_021EAA20
bl ov96_021E8BAC
str r0, [sp, #0x3c]
ldr r0, [sp, #0x4c]
ldr r1, [r0, #0x1c]
ldr r0, [sp, #0x34]
asr r1, r0
mov r0, #3
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x44]
ldr r0, [sp, #0x4c]
ldr r0, [r0, #0x20]
add r1, r0, #0
asr r1, r5
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x40]
ldr r0, [sp, #0x44]
cmp r0, #0
beq _021F183C
b _021F194A
_021F183C:
mov r0, #0
str r0, [sp, #0x38]
ldr r0, _021F1A0C ; =0x00000778
ldrh r0, [r7, r0]
cmp r0, #0
bne _021F1850
ldr r0, _021F1A0C ; =0x00000778
mov r1, #1
strh r1, [r7, r0]
b _021F191A
_021F1850:
cmp r0, #1
bne _021F1912
add r2, sp, #0xa4
add r3, sp, #0xf8
mov ip, r3
ldmia r2!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r2!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r2!, {r0, r1}
stmia r3!, {r0, r1}
add r2, sp, #0x8c
add r3, sp, #0xe0
ldmia r2!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r2!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r2!, {r0, r1}
stmia r3!, {r0, r1}
ldr r1, _021F1A10 ; =0x0000077A
mov r2, ip
ldrh r1, [r7, r1]
ldr r0, _021F1A14 ; =0x45800000
lsr r1, r1, #1
lsl r1, r1, #2
ldr r1, [r2, r1]
bl _fmul
bl _ffix
str r0, [sp, #0x110]
ldr r1, _021F1A10 ; =0x0000077A
ldr r0, _021F1A14 ; =0x45800000
ldrh r1, [r7, r1]
lsr r1, r1, #1
lsl r2, r1, #2
add r1, sp, #0xf8
ldr r1, [r1, r2]
bl _fmul
bl _ffix
str r0, [sp, #0x114]
ldr r1, _021F1A10 ; =0x0000077A
ldr r0, _021F1A14 ; =0x45800000
ldrh r1, [r7, r1]
lsr r1, r1, #1
lsl r2, r1, #2
add r1, sp, #0xf8
ldr r1, [r1, r2]
bl _fmul
bl _ffix
str r0, [sp, #0x118]
ldr r0, [sp, #0x4c]
ldr r1, [sp, #0x4c]
add r2, r0, r5
add r0, sp, #0x84
str r0, [sp]
ldrb r1, [r1, r5]
ldrb r2, [r2, #0xc]
ldr r0, [r4]
add r3, sp, #0x88
bl ov96_021EB06C
ldr r0, [sp, #0x84]
cmp r0, #0xb0
blt _021F18E8
ldr r0, _021F1A10 ; =0x0000077A
ldrh r0, [r7, r0]
lsr r0, r0, #1
lsl r1, r0, #2
add r0, sp, #0xe0
ldr r0, [r0, r1]
str r0, [sp, #0x38]
_021F18E8:
ldr r0, _021F1A10 ; =0x0000077A
ldrh r0, [r7, r0]
add r1, r0, #1
ldr r0, _021F1A10 ; =0x0000077A
strh r1, [r7, r0]
ldr r0, [r4]
mov r1, #1
bl ov96_021EABE0
ldr r0, [sp, #0x3c]
add r1, sp, #0x110
bl sub_020247F4
ldr r0, _021F1A10 ; =0x0000077A
ldrh r0, [r7, r0]
cmp r0, #0xc
blo _021F191A
ldr r0, _021F1A0C ; =0x00000778
mov r1, #2
strh r1, [r7, r0]
b _021F191A
_021F1912:
ldr r0, [r4]
mov r1, #0
bl ov96_021EAB38
_021F191A:
ldr r0, [r4, #8]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
ldr r0, [r4]
mov r1, #0
bl ov96_021EAB74
ldr r0, [sp, #0x4c]
ldr r1, [sp, #0x4c]
add r2, r0, r5
ldrb r3, [r2, #0xc]
ldr r2, [sp, #0x38]
ldrb r1, [r1, r5]
add r2, r2, r3
ldr r0, [r4]
mov r3, #1
bl ov96_021EB01C
ldr r0, [sp, #0x30]
mov r1, #1
strb r1, [r0]
b _021F1C52
_021F194A:
ldr r0, _021F1A0C ; =0x00000778
mov r1, #0
strh r1, [r7, r0]
add r0, r0, #2
strh r1, [r7, r0]
mov r0, #1
lsl r0, r0, #0xc
str r0, [sp, #0xd4]
str r0, [sp, #0xd8]
str r0, [sp, #0xdc]
ldr r0, [r4]
bl ov96_021EABE0
ldr r0, [sp, #0x40]
cmp r0, #0
ldr r0, [r4, #8]
beq _021F1992
mov r1, #1
add r2, r1, #0
bl ov96_021EB52C
ldr r1, [sp, #0x24]
ldr r0, [sp, #0x2c]
cmp r1, r0
bne _021F199A
mov r0, #0x89
lsl r0, r0, #4
bl IsSEPlaying
cmp r0, #0
bne _021F199A
mov r0, #0x89
lsl r0, r0, #4
bl PlaySE
b _021F199A
_021F1992:
mov r1, #1
mov r2, #0
bl ov96_021EB52C
_021F199A:
ldr r0, [sp, #0x3c]
add r1, sp, #0xd4
bl sub_020247F4
ldr r0, [r4]
mov r1, #1
bl ov96_021EAB38
ldr r0, [sp, #0x44]
cmp r0, #2
bne _021F19D4
ldr r1, _021F1A18 ; =0x0000073C
add r0, r6, r5
ldrb r1, [r0, r1]
cmp r1, #0
bne _021F19D4
ldr r1, _021F1A18 ; =0x0000073C
mov r2, #1
strb r2, [r0, r1]
add r0, r1, #0
add r0, #0x30
lsl r1, r5, #0x18
add r3, r4, #0
ldr r0, [r6, r0]
lsr r1, r1, #0x18
add r3, #0x68
bl ov96_021EAF60
b _021F1A34
_021F19D4:
ldr r0, [sp, #0x44]
cmp r0, #1
bne _021F1A34
ldr r1, _021F1A18 ; =0x0000073C
add r0, r6, r5
ldrb r1, [r0, r1]
cmp r1, #1
bne _021F1A34
ldr r1, _021F1A18 ; =0x0000073C
b _021F1A1C
.balign 4, 0
_021F19E8: .word 0x000007AC
_021F19EC: .word 0x00000738
_021F19F0: .word 0x000007A8
_021F19F4: .word 0x000006D7
_021F19F8: .word ov96_0221BC8C
_021F19FC: .word 0x000008CF
_021F1A00: .word 0x00000774
_021F1A04: .word ov96_0221BC9C
_021F1A08: .word ov96_0221BCB4
_021F1A0C: .word 0x00000778
_021F1A10: .word 0x0000077A
_021F1A14: .word 0x45800000
_021F1A18: .word 0x0000073C
_021F1A1C:
mov r2, #0
strb r2, [r0, r1]
add r0, r1, #0
add r0, #0x30
lsl r1, r5, #0x18
add r3, r4, #0
ldr r0, [r6, r0]
lsr r1, r1, #0x18
mov r2, #1
add r3, #0x48
bl ov96_021EAF60
_021F1A34:
ldr r0, [sp, #0x30]
mov r1, #0
strb r1, [r0]
ldr r0, [sp, #0x4c]
add r1, r0, r5
ldrb r0, [r0, r5]
str r0, [sp, #0x18]
ldrb r0, [r1, #0xc]
str r0, [sp, #0x1c]
ldr r0, [sp, #0x4c]
ldr r1, [r0, #0x18]
ldr r0, [sp, #0x34]
asr r1, r0
mov r0, #3
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x48]
ldr r0, [sp, #0x18]
mov r1, #0
lsl r0, r0, #0xc
str r0, [r4, #0xc]
ldr r0, [sp, #0x1c]
lsl r0, r0, #0xc
str r0, [r4, #0x10]
add r0, sp, #0xc8
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
ldr r0, [r4, #0xc]
str r0, [sp, #0xc8]
ldr r0, [r4, #0x10]
str r0, [sp, #0xcc]
ldr r0, [r4, #4]
bl ov96_021EB5B8
add r1, sp, #0xc8
bl Sprite_SetMatrix
mov r1, #0
add r0, sp, #0xbc
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
ldr r0, [r4, #0xc]
mov r1, #3
str r0, [sp, #0xbc]
ldr r0, [r4, #0x10]
str r0, [sp, #0xc0]
add r0, r5, #0
bl _s32_div_f
str r1, [sp, #0x10]
add r0, r5, #0
mov r1, #3
bl _s32_div_f
add r1, r0, #0
ldr r0, [sp, #0xc]
ldr r2, [sp, #0x10]
bl ov96_021E60C0
ldrb r0, [r0, #7]
cmp r0, #1
beq _021F1AC0
cmp r0, #2
beq _021F1ACC
cmp r0, #3
beq _021F1AD8
b _021F1AE4
_021F1AC0:
mov r0, #2
ldr r1, [sp, #0xc0]
lsl r0, r0, #0xe
sub r0, r1, r0
str r0, [sp, #0xc0]
b _021F1AE8
_021F1ACC:
mov r0, #2
ldr r1, [sp, #0xc0]
lsl r0, r0, #0xe
sub r0, r1, r0
str r0, [sp, #0xc0]
b _021F1AE8
_021F1AD8:
mov r0, #1
ldr r1, [sp, #0xc0]
lsl r0, r0, #0x10
sub r0, r1, r0
str r0, [sp, #0xc0]
b _021F1AE8
_021F1AE4:
bl GF_AssertFail
_021F1AE8:
ldr r0, [r4, #8]
bl ov96_021EB5B8
add r1, sp, #0xbc
bl Sprite_SetMatrix
ldr r0, _021F1CA4 ; =0x0000076C
lsl r1, r5, #0x18
ldr r0, [r6, r0]
lsr r1, r1, #0x18
bl ov96_021EAA04
ldr r1, [sp, #0x48]
str r0, [sp, #0x6c]
add r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
str r1, [sp, #0x20]
bl ov96_021EAC0C
ldr r0, [sp, #0x6c]
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x1c]
mov r3, #1
bl ov96_021EB01C
ldr r1, [sp, #0x24]
ldr r0, [sp, #0x2c]
cmp r1, r0
bne _021F1B48
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x2c]
ldr r2, [sp, #0x10]
bl ov96_021E60D8
ldrb r0, [r0, #2]
cmp r0, #0
beq _021F1B48
mov r0, #0
mov r2, #0x7d
str r0, [sp]
lsl r2, r2, #4
ldrsh r2, [r6, r2]
ldr r0, [sp, #0x6c]
ldr r3, [sp, #0x20]
mov r1, #0
bl ov96_021EAED4
_021F1B48:
ldr r0, [sp, #0x5c]
cmp r0, #0
beq _021F1B80
ldr r0, _021F1CA4 ; =0x0000076C
lsl r1, r5, #0x18
ldr r0, [r6, r0]
lsr r1, r1, #0x18
bl ov96_021EAA04
str r0, [sp, #0x70]
ldr r0, [sp, #0x3c]
mov r1, #0
bl Set2dSpriteAnimActiveFlag
lsl r3, r5, #0x18
ldr r0, _021F1CA8 ; =0x000007AF
mov r1, #1
strb r1, [r6, r0]
ldr r0, [sp, #0x20]
ldr r1, _021F1CAC ; =0x000007AC
str r0, [sp]
ldr r0, [sp, #0xc]
ldr r2, [sp, #0x70]
add r1, r6, r1
lsr r3, r3, #0x18
bl ov96_021F2E80
b _021F1B88
_021F1B80:
ldr r0, [sp, #0x3c]
mov r1, #1
bl Set2dSpriteAnimActiveFlag
_021F1B88:
ldr r0, [sp, #0x64]
cmp r0, r5
bne _021F1BF6
ldr r0, [sp, #0x28]
cmp r0, #1
blo _021F1BF2
cmp r0, #4
bhi _021F1BF2
ldr r0, [r4, #4]
bl ov96_021EB5B8
str r0, [sp, #0x74]
mov r1, #1
ldr r0, [r4, #4]
add r2, r1, #0
bl ov96_021EB52C
ldr r1, [sp, #0x28]
ldr r0, [sp, #0x74]
add r1, r1, #2
bl Set2dSpriteAnimSeqNo
ldr r0, [sp, #0x28]
cmp r0, #2
bhi _021F1BC2
ldr r0, _021F1CB0 ; =0x0000088D
bl PlaySE
b _021F1BD4
_021F1BC2:
cmp r0, #3
bne _021F1BCE
ldr r0, _021F1CB4 ; =0x0000088E
bl PlaySE
b _021F1BD4
_021F1BCE:
ldr r0, _021F1CB8 ; =0x0000088F
bl PlaySE
_021F1BD4:
ldr r0, _021F1CBC ; =0x00000774
ldr r1, [sp, #0x24]
ldr r0, [r6, r0]
lsl r1, r1, #0x18
ldr r2, [sp, #0x28]
lsr r1, r1, #0x18
bl ov96_021F4390
ldr r0, _021F1CAC ; =0x000007AC
lsl r1, r5, #0x18
add r0, r6, r0
lsr r1, r1, #0x18
bl ov96_021F2E2C
b _021F1BF6
_021F1BF2:
bl GF_AssertFail
_021F1BF6:
ldr r1, [sp, #0x24]
ldr r0, [sp, #0x2c]
cmp r1, r0
bne _021F1C52
add r0, sp, #0x7c
str r0, [sp]
ldr r0, [r4]
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x1c]
add r3, sp, #0x80
bl ov96_021EB06C
ldr r0, [sp, #0x44]
cmp r0, #1
bne _021F1C44
mov r0, #0x73
lsl r0, r0, #4
ldrh r0, [r6, r0]
ldr r1, [sp, #0x80]
ldr r2, [sp, #0x7c]
lsl r0, r0, #0x18
lsl r1, r1, #0x10
lsl r2, r2, #0x10
lsr r0, r0, #0x18
lsr r1, r1, #0x10
lsr r2, r2, #0x10
add r3, sp, #0x78
bl ov96_021F3180
cmp r0, #0
beq _021F1C44
ldr r1, [sp, #0x14]
ldr r0, [sp, #0xc]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
mov r2, #1
bl ov96_021E658C
b _021F1C52
_021F1C44:
ldr r1, [sp, #0x14]
ldr r0, [sp, #0xc]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
mov r2, #0
bl ov96_021E658C
_021F1C52:
ldr r0, [sp, #0x34]
add r5, r5, #1
add r0, r0, #2
str r0, [sp, #0x34]
ldr r0, [sp, #0x30]
add r7, r7, #4
add r0, r0, #1
str r0, [sp, #0x30]
cmp r5, #0xc
bge _021F1C68
b _021F17DE
_021F1C68:
ldr r1, [sp, #0x4c]
add r0, r6, #0
bl ov96_021F2FEC
ldr r1, _021F1CA8 ; =0x000007AF
ldrb r0, [r6, r1]
cmp r0, #0
beq _021F1C86
ldr r0, [sp, #0x5c]
cmp r0, #0
bne _021F1C86
sub r0, r1, #3
add r0, r6, r0
bl ov96_021F2D98
_021F1C86:
ldr r0, _021F1CBC ; =0x00000774
ldr r1, [sp, #0x54]
ldr r0, [r6, r0]
ldr r2, [sp, #0x58]
bl ov96_021F4688
ldr r0, _021F1CBC ; =0x00000774
ldr r1, [sp, #0x5c]
ldr r0, [r6, r0]
add r2, sp, #0x12c
bl ov96_021F45F4
add sp, #0x138
pop {r3, r4, r5, r6, r7, pc}
nop
_021F1CA4: .word 0x0000076C
_021F1CA8: .word 0x000007AF
_021F1CAC: .word 0x000007AC
_021F1CB0: .word 0x0000088D
_021F1CB4: .word 0x0000088E
_021F1CB8: .word 0x0000088F
_021F1CBC: .word 0x00000774
thumb_func_end ov96_021F1614
thumb_func_start ov96_021F1CC0
ov96_021F1CC0: ; 0x021F1CC0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x80
str r0, [sp, #4]
bl ov96_021E5DC4
str r0, [sp, #0xc]
str r0, [sp, #0x10]
add r0, #0x20
mov r6, #0
str r0, [sp, #0x10]
_021F1CD4:
add r0, r6, #0
mov r1, #3
bl _s32_div_f
add r5, r1, #0
add r0, r6, #0
mov r1, #3
bl _s32_div_f
add r7, r0, #0
mov r0, #0x1b
lsl r0, r0, #4
add r1, r7, #0
mul r1, r0
ldr r0, [sp, #0x10]
add r1, r0, r1
mov r0, #0x90
mul r0, r5
add r4, r1, r0
add r0, r4, #0
add r0, #0x46
ldrb r0, [r0]
cmp r0, #0
beq _021F1D20
mov r0, #0x47
ldrsb r0, [r4, r0]
sub r1, r0, #1
add r0, r4, #0
add r0, #0x47
strb r1, [r0]
mov r0, #0x47
ldrsb r0, [r4, r0]
cmp r0, #0
bgt _021F1D20
add r1, r4, #0
add r1, #0x46
mov r0, #0
strb r0, [r1]
_021F1D20:
ldr r0, [r4, #0x18]
cmp r0, #0
beq _021F1D94
ldr r0, [r4]
ldr r1, [r4, #0x28]
ldr r2, [r4, #0x2c]
bl ov96_021F2F7C
cmp r0, #0
beq _021F1D94
mov r0, #0
add r1, r4, #0
str r0, [r4, #0x18]
add r1, #0x45
strb r0, [r1]
add r4, #0x44
strb r0, [r4]
mov r0, #1
str r0, [sp]
lsl r1, r7, #0x18
lsl r2, r5, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #5
bl ov96_021E8228
mov r0, #1
str r0, [sp]
lsl r1, r7, #0x18
lsl r2, r5, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #1
bl ov96_021E8228
ldr r0, [sp, #0xc]
add r4, r0, r6
mov r0, #0x7e
lsl r0, r0, #4
ldrb r0, [r4, r0]
cmp r0, #0
beq _021F1D8C
mov r0, #1
str r0, [sp]
lsl r1, r7, #0x18
lsl r2, r5, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #8
bl ov96_021E8228
_021F1D8C:
mov r0, #0x7e
mov r1, #0
lsl r0, r0, #4
strb r1, [r4, r0]
_021F1D94:
add r6, r6, #1
cmp r6, #0xc
blt _021F1CD4
ldr r0, [sp, #0xc]
mov r6, #0
str r0, [sp, #0x14]
add r0, #0x20
str r0, [sp, #0x14]
_021F1DA4:
add r0, r6, #0
mov r1, #3
bl _s32_div_f
add r4, r0, #0
add r0, r6, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x1b
lsl r0, r0, #4
add r2, r4, #0
mul r2, r0
ldr r0, [sp, #0x14]
add r2, r0, r2
mov r0, #0x90
mul r0, r1
add r7, r2, r0
ldr r0, [r7, #0x18]
cmp r0, #2
bne _021F1E22
mov r0, #1
str r0, [sp, #8]
mov r5, #0
_021F1DD4:
cmp r6, r5
beq _021F1E12
add r0, r5, #0
mov r1, #3
bl _s32_div_f
add r4, r0, #0
add r0, r5, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x1b
lsl r0, r0, #4
add r2, r4, #0
mul r2, r0
ldr r0, [sp, #0x14]
add r2, r0, r2
mov r0, #0x90
mul r0, r1
add r1, r2, r0
ldr r0, [r1, #0x18]
cmp r0, #0
beq _021F1E12
add r0, r7, #0
bl ov96_021F218C
cmp r0, #0
beq _021F1E12
mov r0, #0
str r0, [sp, #8]
b _021F1E18
_021F1E12:
add r5, r5, #1
cmp r5, #0xc
blt _021F1DD4
_021F1E18:
ldr r0, [sp, #8]
cmp r0, #0
beq _021F1E22
mov r0, #1
str r0, [r7, #0x18]
_021F1E22:
add r6, r6, #1
cmp r6, #0xc
blt _021F1DA4
ldr r3, _021F2080 ; =ov96_0221BC64
add r2, sp, #0x20
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
mov r5, #0
str r0, [r2]
ldr r0, [sp, #0xc]
str r0, [sp, #0x18]
add r0, #0x20
str r0, [sp, #0x18]
_021F1E3E:
add r0, r5, #0
mov r1, #3
bl _s32_div_f
add r4, r0, #0
add r0, r5, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x1b
lsl r0, r0, #4
add r2, r4, #0
mul r2, r0
ldr r0, [sp, #0x18]
add r2, r0, r2
mov r0, #0x90
mul r0, r1
add r4, r2, r0
ldr r0, [r4, #0x18]
cmp r0, #0
bne _021F1E6A
b _021F206C
_021F1E6A:
add r1, r4, #0
add r1, #0x41
mov r0, #0
strb r0, [r1]
str r0, [r4, #0x34]
add r6, r4, #0
str r0, [r4, #0x38]
add r3, sp, #0x5c
add r6, #0x28
str r0, [r4, #0x3c]
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
add r1, r2, #0
str r0, [r3]
add r0, r4, #0
add r0, #0x1c
add r2, sp, #0x74
bl VEC_Subtract
add r0, sp, #0x74
bl VEC_Mag
add r7, r0, #0
cmp r7, #0
bgt _021F1EA8
add r0, r4, #0
bl ov96_021F2AA4
b _021F206C
_021F1EA8:
add r0, sp, #0x74
add r1, sp, #0x68
bl VEC_Normalize
add r0, r4, #0
add r0, #0x44
ldrb r0, [r0]
cmp r0, #0
beq _021F1EC0
mov r6, #0x3f
lsl r6, r6, #0x18
b _021F1EDC
_021F1EC0:
add r0, r4, #0
add r0, #0x89
ldrb r0, [r0]
bl _ffltu
bl _f2d
ldr r3, _021F2084 ; =0x40240000
mov r2, #0
bl _ddiv
bl _d2f
add r6, r0, #0
_021F1EDC:
add r0, r7, #0
bl _fflt
str r0, [sp, #0x1c]
ldr r0, _021F2088 ; =0x45800000
add r1, r6, #0
bl _fmul
add r1, r0, #0
ldr r0, [sp, #0x1c]
bl _fleq
bhi _021F1F06
add r3, r4, #0
add r3, #0x1c
ldmia r3!, {r0, r1}
add r2, sp, #0x5c
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
b _021F1F30
_021F1F06:
mov r1, #0
add r0, sp, #0x50
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
ldr r0, _021F2088 ; =0x45800000
add r1, r6, #0
bl _fmul
bl _ffix
add r1, sp, #0x68
add r2, sp, #0x50
add r3, sp, #0x74
bl VEC_MultAdd
add r1, sp, #0x5c
add r0, sp, #0x74
add r2, r1, #0
bl VEC_Add
_021F1F30:
cmp r7, #0
beq _021F1FAC
add r6, sp, #0x20
ldmia r6!, {r0, r1}
add r3, sp, #0x44
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
add r1, sp, #0x38
str r0, [r3]
ldr r0, [sp, #0x6c]
str r0, [sp, #0x38]
ldr r0, [sp, #0x68]
str r0, [sp, #0x40]
mov r0, #0
str r0, [sp, #0x3c]
add r0, r2, #0
bl CalcAngleBetweenVecs
mov r1, #2
lsl r1, r1, #0xc
cmp r0, r1
bls _021F1F66
mov r1, #0xe
lsl r1, r1, #0xc
cmp r0, r1
blo _021F1F70
_021F1F66:
add r1, r4, #0
add r1, #0x40
mov r0, #4
strb r0, [r1]
b _021F1FAC
_021F1F70:
mov r1, #2
lsl r1, r1, #0xc
cmp r0, r1
bls _021F1F8A
mov r1, #6
lsl r1, r1, #0xc
cmp r0, r1
bhs _021F1F8A
add r1, r4, #0
add r1, #0x40
mov r0, #2
strb r0, [r1]
b _021F1FAC
_021F1F8A:
mov r1, #6
lsl r1, r1, #0xc
cmp r0, r1
blo _021F1FA4
mov r1, #0xa
lsl r1, r1, #0xc
cmp r0, r1
bhi _021F1FA4
add r1, r4, #0
add r1, #0x40
mov r0, #3
strb r0, [r1]
b _021F1FAC
_021F1FA4:
add r1, r4, #0
add r1, #0x40
mov r0, #1
strb r0, [r1]
_021F1FAC:
ldr r0, [r4, #0x18]
cmp r0, #1
bne _021F2058
lsl r2, r5, #0x18
ldr r0, [sp, #0xc]
add r1, r4, #0
lsr r2, r2, #0x18
add r3, sp, #0x74
bl ov96_021F22FC
cmp r0, #0
bne _021F2044
mov r1, #0
add r0, sp, #0x2c
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
add r0, r4, #0
add r0, #0x44
ldrb r0, [r0]
cmp r0, #0
bne _021F206C
add r1, r4, #0
add r1, #0x41
mov r0, #1
strb r0, [r1]
add r0, r4, #0
add r0, #0x8a
ldrh r0, [r0]
bl _ffltu
bl _f2d
ldr r3, _021F2084 ; =0x40240000
mov r2, #0
bl _ddiv
bl _d2f
add r6, r0, #0
add r0, r4, #0
add r0, #0x46
ldrb r0, [r0]
bl _ffltu
add r1, r0, #0
add r0, r6, #0
bl _fadd
add r1, r0, #0
ldr r0, _021F2088 ; =0x45800000
bl _fmul
bl _ffix
add r3, r4, #0
add r1, sp, #0x68
add r2, sp, #0x2c
add r3, #0x34
bl VEC_MultAdd
add r0, r4, #0
add r0, #0x8e
ldrh r0, [r0]
cmp r0, #0
beq _021F203E
add r0, r4, #0
add r0, #0x8e
ldrh r0, [r0]
add r4, #0x8e
sub r0, r0, #1
strh r0, [r4]
b _021F206C
_021F203E:
bl GF_AssertFail
b _021F206C
_021F2044:
add r0, r4, #0
bl ov96_021F2AA4
add r2, sp, #0x5c
ldmia r2!, {r0, r1}
add r4, #0x28
stmia r4!, {r0, r1}
ldr r0, [r2]
str r0, [r4]
b _021F206C
_021F2058:
add r1, r4, #0
add r1, #0x8e
mov r0, #0
add r2, sp, #0x5c
strh r0, [r1]
ldmia r2!, {r0, r1}
add r4, #0x28
stmia r4!, {r0, r1}
ldr r0, [r2]
str r0, [r4]
_021F206C:
add r5, r5, #1
cmp r5, #0xc
bge _021F2074
b _021F1E3E
_021F2074:
ldr r0, [sp, #0xc]
bl ov96_021F234C
add sp, #0x80
pop {r3, r4, r5, r6, r7, pc}
nop
_021F2080: .word ov96_0221BC64
_021F2084: .word 0x40240000
_021F2088: .word 0x45800000
thumb_func_end ov96_021F1CC0
thumb_func_start ov96_021F208C
ov96_021F208C: ; 0x021F208C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r4, r0, #0
add r0, r1, #0
lsl r6, r4, #0xc
lsl r4, r0, #0xc
mov r0, #0
str r0, [sp, #8]
add r0, sp, #0
add r1, r2, #0
add r2, r0, #0
add r7, r3, #0
ldr r5, [sp, #0x20]
str r6, [sp]
str r4, [sp, #4]
bl VEC_Subtract
add r0, sp, #0
bl VEC_Mag
cmp r0, r7
ble _021F20C0
str r6, [r5]
str r4, [r5, #4]
mov r0, #0
str r0, [r5, #8]
_021F20C0:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021F208C
thumb_func_start ov96_021F20C4
ov96_021F20C4: ; 0x021F20C4
push {r4, r5, r6, r7, lr}
sub sp, #0x2c
str r1, [sp, #8]
str r2, [sp, #0xc]
str r3, [sp, #0x10]
add r7, r0, #0
bl ov96_021E6104
mov r1, #0x1b
mov r5, #0
str r0, [sp, #0x14]
lsl r6, r0, #0xc
ldr r0, [sp, #8]
lsl r1, r1, #4
add r7, #0x20
mul r1, r0
add r4, r5, #0
add r7, r7, r1
_021F20E8:
mov r0, #0x90
mul r0, r4
add r1, r7, r0
ldr r0, [sp, #0x14]
str r0, [sp]
add r0, sp, #0x18
str r0, [sp, #4]
ldr r0, [r1, #0x28]
ldr r1, [r1, #0x2c]
asr r2, r0, #0xb
lsr r2, r2, #0x14
add r2, r0, r2
asr r0, r2, #0xc
asr r2, r1, #0xb
lsr r2, r2, #0x14
add r2, r1, r2
asr r1, r2, #0xc
ldr r2, [sp, #0xc]
ldr r3, [sp, #0x10]
bl ov96_021E872C
cmp r0, #0
add r0, sp, #0x20
beq _021F212C
ldr r2, [sp, #0x18]
lsl r1, r4, #2
str r2, [r0, r1]
mov r1, #1
add r0, sp, #0x1c
strb r1, [r0, r4]
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
b _021F2136
_021F212C:
lsl r2, r4, #2
mov r1, #0
str r1, [r0, r2]
add r0, sp, #0x1c
strb r1, [r0, r4]
_021F2136:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _021F20E8
cmp r5, #0
bne _021F214A
add sp, #0x2c
mov r0, #0xc
pop {r4, r5, r6, r7, pc}
_021F214A:
mov r2, #3
mov r3, #0
add r0, sp, #0x20
add r1, sp, #0x1c
_021F2152:
ldrb r4, [r1, r3]
cmp r4, #0
beq _021F2164
lsl r4, r3, #2
ldr r4, [r0, r4]
cmp r4, r6
bge _021F2164
add r2, r3, #0
add r6, r4, #0
_021F2164:
add r3, r3, #1
lsl r3, r3, #0x18
lsr r3, r3, #0x18
cmp r3, #3
blo _021F2152
cmp r2, #3
bne _021F217C
bl GF_AssertFail
add sp, #0x2c
mov r0, #0xc
pop {r4, r5, r6, r7, pc}
_021F217C:
ldr r0, [sp, #8]
lsl r1, r0, #1
add r0, r0, r1
add r0, r2, r0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021F20C4
thumb_func_start ov96_021F218C
ov96_021F218C: ; 0x021F218C
push {r3, r4, lr}
sub sp, #0x34
add r2, r0, #0
add r0, sp, #0x20
str r0, [sp]
add r0, sp, #0xc
str r0, [sp, #4]
add r4, r1, #0
ldr r0, [r2]
ldr r1, [r2, #0x28]
ldr r2, [r2, #0x2c]
add r3, sp, #0x1c
bl ov96_021EAF78
add r0, sp, #0x14
str r0, [sp]
add r0, sp, #8
str r0, [sp, #4]
ldr r0, [r4]
ldr r1, [r4, #0x28]
ldr r2, [r4, #0x2c]
add r3, sp, #0x10
bl ov96_021EAF78
ldr r1, [sp, #0xc]
ldr r0, [sp, #8]
add r2, sp, #0x28
add r0, r1, r0
lsl r4, r0, #0xc
mov r0, #0
str r0, [sp, #0x24]
str r0, [sp, #0x18]
add r0, sp, #0x1c
add r1, sp, #0x10
bl VEC_Subtract
add r0, sp, #0x28
bl VEC_Mag
cmp r0, r4
bgt _021F21E4
add sp, #0x34
mov r0, #1
pop {r3, r4, pc}
_021F21E4:
mov r0, #0
add sp, #0x34
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov96_021F218C
thumb_func_start ov96_021F21EC
ov96_021F21EC: ; 0x021F21EC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
str r0, [sp]
mov r0, #0
str r0, [sp, #8]
_021F21F6:
ldr r0, [sp, #8]
mov r1, #0xc0
ldr r2, _021F22F8 ; =_0221DCA0
mul r1, r0
add r5, r2, r1
mov r1, #3
mov r4, #0
bl _s32_div_f
add r6, r0, #0
ldr r0, [sp, #8]
mov r1, #3
bl _s32_div_f
ldr r0, [sp]
add r2, r6, #0
str r0, [sp, #0xc]
add r0, #0x20
str r0, [sp, #0xc]
mov r0, #0x1b
lsl r0, r0, #4
mul r2, r0
ldr r0, [sp, #0xc]
add r2, r0, r2
mov r0, #0x90
mul r0, r1
add r0, r2, r0
str r0, [sp, #4]
ldr r0, [sp, #8]
ldr r1, _021F22F8 ; =_0221DCA0
lsl r0, r0, #4
add r7, r1, r0
_021F2236:
ldr r0, [sp, #8]
cmp r0, r4
bne _021F2248
lsl r1, r4, #4
mov r0, #0
add r2, r5, r1
str r0, [r5, r1]
str r0, [r2, #8]
b _021F22DC
_021F2248:
cmp r4, r0
blo _021F22DC
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r6, r0, #0
add r0, r4, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x1b
lsl r0, r0, #4
add r2, r6, #0
mul r2, r0
ldr r0, [sp, #0xc]
add r2, r0, r2
mov r0, #0x90
mul r0, r1
add r6, r2, r0
ldr r0, [sp, #4]
ldr r0, [r0, #0x18]
cmp r0, #1
bne _021F227E
ldr r0, [r6, #0x18]
cmp r0, #1
beq _021F229A
_021F227E:
lsl r2, r4, #4
mov r0, #0
str r0, [r5, r2]
add r1, r5, r2
mov r0, #0xc0
add r3, r4, #0
mul r3, r0
mov r2, #0
str r2, [r7, r3]
str r2, [r1, #8]
add r0, r7, r3
add r1, r2, #0
str r1, [r0, #8]
b _021F22DC
_021F229A:
ldr r0, [sp, #4]
add r1, r6, #0
bl ov96_021F218C
cmp r0, #0
beq _021F22C2
lsl r1, r4, #4
mov r0, #1
str r0, [r5, r1]
add r2, r5, r1
mov r0, #0xc0
add r1, r4, #0
mul r1, r0
mov r0, #1
str r0, [r7, r1]
ldr r0, [sp, #4]
add r3, r7, r1
str r6, [r2, #8]
str r0, [r3, #8]
b _021F22DC
_021F22C2:
lsl r2, r4, #4
mov r0, #0
str r0, [r5, r2]
add r1, r5, r2
mov r0, #0xc0
add r3, r4, #0
mul r3, r0
mov r2, #0
str r2, [r7, r3]
str r2, [r1, #8]
add r0, r7, r3
add r1, r2, #0
str r1, [r0, #8]
_021F22DC:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #0xc
blo _021F2236
ldr r0, [sp, #8]
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #8]
cmp r0, #0xc
blo _021F21F6
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F22F8: .word _0221DCA0
thumb_func_end ov96_021F21EC
thumb_func_start ov96_021F22FC
ov96_021F22FC: ; 0x021F22FC
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r7, r3, #0
mov r0, #0xc0
add r6, r1, #0
ldr r3, _021F2348 ; =_0221DCA0
mul r0, r2
mov r4, #0
add r5, r3, r0
add r6, #0x28
_021F2310:
lsl r0, r4, #4
add r1, r5, r0
ldr r0, [r5, r0]
cmp r0, #0
beq _021F2338
ldr r0, [r1, #8]
add r1, r6, #0
add r0, #0x28
add r2, sp, #0
bl VEC_Subtract
add r0, r7, #0
add r1, sp, #0
bl VEC_DotProduct
cmp r0, #0
ble _021F2338
add sp, #0xc
mov r0, #0
pop {r4, r5, r6, r7, pc}
_021F2338:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #0xc
blo _021F2310
mov r0, #1
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021F2348: .word _0221DCA0
thumb_func_end ov96_021F22FC
thumb_func_start ov96_021F234C
ov96_021F234C: ; 0x021F234C
push {r4, r5, r6, r7, lr}
sub sp, #0x1fc
sub sp, #0x1fc
sub sp, #0x1fc
sub sp, #0x1fc
sub sp, #0x1fc
sub sp, #0x1fc
sub sp, #0x1fc
sub sp, #0x198
mov r5, #0
add r6, r0, #0
str r0, [sp]
str r5, [sp, #0x14]
add r7, sp, #0x70
add r6, #0x20
_021F236A:
add r0, r5, #0
mov r1, #3
bl _s32_div_f
add r4, r0, #0
add r0, r5, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x1b
lsl r0, r0, #4
mul r0, r4
add r2, r6, r0
mov r0, #0x90
mul r0, r1
add r1, r2, r0
add r0, r1, #0
add r0, #0x41
ldrb r0, [r0]
cmp r0, #0
beq _021F23A8
ldr r0, [r1, #0x18]
cmp r0, #1
bne _021F23A8
ldr r0, [sp, #0x14]
add r2, r0, #0
add r2, r2, #1
lsl r2, r2, #0x18
lsr r2, r2, #0x18
str r2, [sp, #0x14]
strb r5, [r7, r0]
_021F23A8:
mov r2, #0xc
add r0, r1, #0
add r3, r5, #0
mul r3, r2
add r2, sp, #0x7c
add r0, #0x1c
add r1, #0x28
add r2, r2, r3
bl VEC_Subtract
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #0xc
blo _021F236A
ldr r0, [sp, #0x14]
cmp r0, #0
bne _021F23CE
b _021F276E
_021F23CE:
mov r2, #0x1b
mov r0, #0
add r1, sp, #0x10c
lsl r2, r2, #6
bl MIi_CpuClear32
mov r0, #0
str r0, [sp, #0x10]
ldr r0, [sp, #0x14]
cmp r0, #0
bhi _021F23E6
b _021F25D4
_021F23E6:
ldr r1, _021F26AC ; =FX_SinCosTable_ + 0x800
mov r0, #2
ldrsh r0, [r1, r0]
str r0, [sp, #0xc]
_021F23EE:
ldr r0, [sp, #0x10]
add r1, sp, #0x70
ldrb r7, [r1, r0]
ldr r0, _021F26B0 ; =0x000007CC
mov r1, #0
mov r2, #0x7b
str r1, [sp, #0x60]
add r0, sp
lsl r2, r2, #4
bl MI_CpuFill8
ldr r0, [sp, #0x10]
mov r1, #0x90
mul r1, r0
add r2, sp, #0x10c
add r4, r2, r1
ldr r1, _021F26B0 ; =0x000007CC
mov r5, #0
add r1, sp
mov r6, #0xc
mov r0, #0xa4
_021F2418:
add r2, r5, #0
mul r2, r6
add r3, r4, r2
add r2, r5, #0
mul r2, r0
str r3, [r1, r2]
add r2, r5, #1
lsl r2, r2, #0x18
lsr r5, r2, #0x18
cmp r5, #0xc
blo _021F2418
add r0, sp, #0x64
mov r1, #0
mov r2, #0xc
bl MI_CpuFill8
add r0, r7, #0
mov r1, #3
bl _s32_div_f
add r4, r0, #0
add r0, r7, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x1b
lsl r0, r0, #4
add r3, r4, #0
mul r3, r0
mov r0, #0x90
add r2, r1, #0
mul r2, r0
ldr r0, [sp]
mov r5, #1
add r0, r0, r3
add r3, r2, r0
add r3, #0x54
add r2, sp, #0x48
ldmia r3!, {r0, r1}
str r2, [sp, #0x18]
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r0, [sp]
str r0, [sp, #0x20]
add r0, #0x48
str r0, [sp, #0x20]
_021F2476:
add r0, r7, #0
mov r1, #3
bl _s32_div_f
add r4, r0, #0
add r0, r7, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x1b
lsl r0, r0, #4
add r2, r4, #0
mul r2, r0
ldr r0, [sp, #0x20]
add r0, r0, r2
str r0, [sp, #0x1c]
mov r0, #0x90
mul r0, r1
str r0, [sp, #0x24]
mov r1, #1
add r0, sp, #0x64
strb r1, [r0, r7]
cmp r5, #0
beq _021F2532
mov r0, #0xa4
add r1, r7, #0
mul r1, r0
ldr r0, _021F26B0 ; =0x000007CC
add r0, sp
add r4, r0, r1
mov r0, #0
strh r0, [r4, #0x10]
add r6, r4, #0
strh r0, [r4, #0x12]
add r5, r0, #0
mov r0, #0xc0
add r1, r7, #0
mul r1, r0
ldr r0, _021F26B4 ; =_0221DCA0
add r6, #0x10
add r0, r0, r1
str r0, [sp, #8]
_021F24CA:
ldr r1, [sp, #8]
lsl r0, r5, #4
ldr r2, [sp, #8]
add r1, r1, r0
ldr r0, [r2, r0]
cmp r0, #0
beq _021F2514
ldr r0, [r1, #8]
ldr r2, [sp, #0x1c]
ldr r1, [sp, #0x24]
add r0, #0x28
add r1, r2, r1
add r2, sp, #0x3c
bl VEC_Subtract
ldr r0, [sp, #0x18]
add r1, sp, #0x3c
bl VEC_DotProduct
cmp r0, #0
ble _021F2514
ldrh r0, [r4, #0x10]
add r3, sp, #0x3c
add r0, r4, r0
strb r5, [r0, #4]
ldrh r1, [r4, #0x10]
mov r0, #0xc
mul r0, r1
add r2, r4, r0
ldmia r3!, {r0, r1}
add r2, #0x14
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldrh r0, [r6]
add r0, r0, #1
strh r0, [r6]
_021F2514:
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #0xc
blo _021F24CA
mov r0, #0xa4
add r1, r7, #0
mul r1, r0
ldr r0, _021F26B0 ; =0x000007CC
add r0, sp
ldr r0, [r0, r1]
ldr r1, [sp, #0x18]
add r2, r0, #0
bl VEC_Add
_021F2532:
mov r0, #0xa4
add r1, r7, #0
mul r1, r0
ldr r0, _021F26B0 ; =0x000007CC
mov r5, #0
add r0, sp
add r4, r0, r1
ldrh r0, [r4, #0x12]
ldrh r1, [r4, #0x10]
cmp r0, r1
blo _021F2558
add r1, r5, #0
add r0, sp, #0x64
strb r1, [r0, r7]
add r0, sp, #0x54
bl ov96_021F27A8
add r7, r0, #0
b _021F25BC
_021F2558:
add r1, r4, r0
ldrb r2, [r1, #4]
add r1, sp, #0x64
ldrb r1, [r1, r2]
cmp r1, #0
beq _021F256A
add r0, r0, #1
strh r0, [r4, #0x12]
b _021F25BC
_021F256A:
add r0, sp, #0x54
add r1, r7, #0
bl ov96_021F2780
cmp r0, #0xff
beq _021F25C2
ldrh r2, [r4, #0x12]
add r3, r4, #0
mov r1, #0xc
ldr r0, [r4]
add r3, #0x14
mul r1, r2
add r1, r3, r1
bl ov96_021F2814
ldr r1, [sp, #0xc]
cmp r0, r1
blt _021F259C
ldr r3, [r4]
add r2, sp, #0x48
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
b _021F25B0
_021F259C:
ldrh r2, [r4, #0x12]
add r3, r4, #0
mov r1, #0xc
mul r1, r2
add r3, #0x14
ldr r0, [r4]
ldr r2, [sp, #0x18]
add r1, r3, r1
bl ov96_021F27B8
_021F25B0:
ldrh r1, [r4, #0x12]
mov r5, #1
add r0, r1, #1
strh r0, [r4, #0x12]
add r0, r4, r1
ldrb r7, [r0, #4]
_021F25BC:
cmp r7, #0xff
beq _021F25C2
b _021F2476
_021F25C2:
ldr r0, [sp, #0x10]
add r0, r0, #1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
str r1, [sp, #0x10]
ldr r0, [sp, #0x14]
cmp r1, r0
bhs _021F25D4
b _021F23EE
_021F25D4:
mov r0, #0
str r0, [sp, #4]
ldr r0, [sp, #0x14]
cmp r0, #0
bhi _021F25E0
b _021F2704
_021F25E0:
ldr r0, [sp, #4]
mov r1, #0x90
mul r1, r0
ldr r0, [sp]
add r2, sp, #0x10c
str r0, [sp, #0x28]
add r0, #0x20
mov r5, #0
add r7, r2, r1
str r0, [sp, #0x28]
_021F25F4:
add r0, r5, #0
mov r1, #3
bl _s32_div_f
add r4, r0, #0
add r0, r5, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x1b
lsl r0, r0, #4
add r2, r4, #0
mul r2, r0
ldr r0, [sp, #0x28]
add r6, r1, #0
add r4, r0, r2
mov r0, #0x90
mul r6, r0
mov r0, #0xc
mul r0, r5
str r0, [sp, #0x2c]
add r0, r4, r6
ldr r1, [sp, #0x2c]
add r0, #0x28
add r1, r7, r1
add r2, r0, #0
bl VEC_Add
ldr r0, [sp, #0x2c]
add r0, r7, r0
bl VEC_Mag
cmp r0, #0
beq _021F2652
add r0, r4, r6
add r0, #0x41
ldrb r0, [r0]
cmp r0, #0
bne _021F2652
add r2, r4, r6
add r2, #0x28
add r3, r4, r6
ldmia r2!, {r0, r1}
add r3, #0x1c
stmia r3!, {r0, r1}
ldr r0, [r2]
str r0, [r3]
_021F2652:
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #0xc
blo _021F25F4
ldr r0, [sp, #4]
add r1, sp, #0x70
ldrb r4, [r1, r0]
mov r1, #3
add r0, r4, #0
bl _s32_div_f
add r5, r0, #0
add r0, r4, #0
mov r1, #3
bl _s32_div_f
ldr r2, [sp]
mov r0, #0x1b
lsl r0, r0, #4
add r2, #0x20
mul r0, r5
add r2, r2, r0
mov r0, #0x90
mul r0, r1
add r5, r2, r0
add r0, r5, #0
add r0, #0x8e
ldrh r0, [r0]
cmp r0, #0
bne _021F26F2
mov r1, #0x72
mov r3, #0
lsl r1, r1, #4
_021F2696:
ldr r0, [sp]
add r2, r0, r3
ldrb r0, [r2, r1]
cmp r4, r0
bne _021F26B8
mov r0, #0x72
mov r1, #0xc
lsl r0, r0, #4
strb r1, [r2, r0]
b _021F26BE
nop
_021F26AC: .word FX_SinCosTable_ + 0x800
_021F26B0: .word 0x000007CC
_021F26B4: .word _0221DCA0
_021F26B8:
add r3, r3, #1
cmp r3, #4
blt _021F2696
_021F26BE:
ldr r0, [r5, #0x18]
cmp r0, #1
beq _021F26C8
bl GF_AssertFail
_021F26C8:
add r0, r5, #0
mov r1, #1
add r0, #0x44
strb r1, [r0]
add r0, r5, #0
add r3, r5, #0
add r2, r5, #0
mov r1, #0x3c
add r0, #0x45
add r3, #0x28
strb r1, [r0]
ldmia r3!, {r0, r1}
add r2, #0x1c
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
mov r0, #0
str r0, [r5, #0x34]
str r0, [r5, #0x38]
add r5, #0x41
strb r0, [r5]
_021F26F2:
ldr r0, [sp, #4]
add r0, r0, #1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
str r1, [sp, #4]
ldr r0, [sp, #0x14]
cmp r1, r0
bhs _021F2704
b _021F25E0
_021F2704:
ldr r0, [sp]
mov r5, #0
add r0, #0x20
str r0, [sp]
add r7, sp, #0x30
_021F270E:
add r0, r5, #0
mov r1, #3
bl _s32_div_f
add r4, r0, #0
add r0, r5, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x1b
lsl r0, r0, #4
add r2, r4, #0
mul r2, r0
ldr r0, [sp]
add r6, r1, #0
add r4, r0, r2
mov r0, #0x90
mul r6, r0
add r0, r4, r6
add r1, r4, r6
add r0, #0x1c
add r1, #0x28
add r2, r7, #0
bl VEC_Subtract
mov r0, #0xc
add r1, r5, #0
mul r1, r0
add r0, sp, #0x7c
add r0, r0, r1
add r1, r7, #0
bl VEC_DotProduct
cmp r0, #0
bge _021F2764
add r2, r4, r6
add r2, #0x28
add r3, r4, r6
ldmia r2!, {r0, r1}
add r3, #0x1c
stmia r3!, {r0, r1}
ldr r0, [r2]
str r0, [r3]
_021F2764:
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #0xc
blo _021F270E
_021F276E:
add sp, #0x1fc
add sp, #0x1fc
add sp, #0x1fc
add sp, #0x1fc
add sp, #0x1fc
add sp, #0x1fc
add sp, #0x1fc
add sp, #0x198
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021F234C
thumb_func_start ov96_021F2780
ov96_021F2780: ; 0x021F2780
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #0xc]
add r4, r1, #0
cmp r0, #0xc
blt _021F2790
bl GF_AssertFail
_021F2790:
ldr r1, [r5, #0xc]
cmp r1, #0xc
blt _021F279A
mov r0, #0xff
pop {r3, r4, r5, pc}
_021F279A:
add r0, r1, #1
str r0, [r5, #0xc]
lsl r0, r1, #0x18
lsr r0, r0, #0x18
strb r4, [r5, r0]
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021F2780
thumb_func_start ov96_021F27A8
ov96_021F27A8: ; 0x021F27A8
ldr r1, [r0, #0xc]
sub r1, r1, #1
bpl _021F27B2
mov r0, #0xff
bx lr
_021F27B2:
str r1, [r0, #0xc]
ldrb r0, [r0, r1]
bx lr
thumb_func_end ov96_021F27A8
thumb_func_start ov96_021F27B8
ov96_021F27B8: ; 0x021F27B8
push {r3, r4, r5, r6, lr}
sub sp, #0x24
add r5, r1, #0
add r1, sp, #0x18
add r4, r0, #0
add r6, r2, #0
bl VEC_Normalize
add r0, r5, #0
add r1, sp, #0xc
bl VEC_Normalize
add r0, sp, #0x18
add r1, sp, #0xc
bl VEC_DotProduct
add r5, r0, #0
add r0, r4, #0
bl VEC_Mag
add r2, r0, #0
add r1, sp, #0
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
asr r1, r5, #0x1f
add r0, r5, #0
asr r3, r2, #0x1f
bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
add r0, r0, r2
adc r1, r3
lsl r1, r1, #0x14
lsr r0, r0, #0xc
orr r0, r1
add r1, sp, #0xc
add r2, sp, #0
add r3, r6, #0
bl VEC_MultAdd
add sp, #0x24
pop {r3, r4, r5, r6, pc}
thumb_func_end ov96_021F27B8
thumb_func_start ov96_021F2814
ov96_021F2814: ; 0x021F2814
push {r4, lr}
sub sp, #0x18
add r4, r1, #0
add r1, sp, #0xc
bl VEC_Normalize
add r0, r4, #0
add r1, sp, #0
bl VEC_Normalize
add r0, sp, #0xc
add r1, sp, #0
bl VEC_DotProduct
add sp, #0x18
pop {r4, pc}
thumb_func_end ov96_021F2814
thumb_func_start ov96_021F2834
ov96_021F2834: ; 0x021F2834
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x48
add r4, r0, #0
ldr r0, _021F2950 ; =0x0000072B
ldrb r0, [r4, r0]
cmp r0, #0
bne _021F2844
b _021F294A
_021F2844:
mov r0, #0
add r1, sp, #0x10
add r5, r0, #0
_021F284A:
add r0, r0, #1
strb r5, [r1]
add r1, r1, #1
cmp r0, #4
blt _021F284A
ldr r1, _021F2950 ; =0x0000072B
add r7, r4, #0
add r0, r1, #0
strb r5, [r4, r1]
add r0, #0x23
strb r5, [r4, r0]
add r1, #0x24
strb r5, [r4, r1]
add r7, #0x20
_021F2866:
add r0, r5, #0
mov r1, #3
bl _s32_div_f
add r6, r0, #0
add r0, r5, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x1b
lsl r0, r0, #4
mul r0, r6
add r2, r7, r0
mov r0, #0x90
mul r0, r1
add r6, r2, r0
ldr r0, [r6, #0x18]
cmp r0, #1
bne _021F28F6
add r0, sp, #8
str r0, [sp]
ldr r1, [r6, #0x28]
ldr r0, [r6]
asr r2, r1, #0xb
lsr r2, r2, #0x14
add r2, r1, r2
asr r1, r2, #0xc
ldr r2, [r6, #0x2c]
asr r3, r2, #0xb
lsr r3, r3, #0x14
add r3, r2, r3
asr r2, r3, #0xc
add r3, sp, #0xc
bl ov96_021EB06C
mov r0, #0x73
lsl r0, r0, #4
ldrh r0, [r4, r0]
ldr r1, [sp, #0xc]
ldr r2, [sp, #8]
lsl r0, r0, #0x18
lsl r1, r1, #0x10
lsl r2, r2, #0x10
lsr r0, r0, #0x18
lsr r1, r1, #0x10
lsr r2, r2, #0x10
add r3, sp, #4
bl ov96_021F3180
add r2, r0, #0
beq _021F28F6
add r0, r6, #0
add r0, #0x42
ldrh r0, [r0]
add r6, #0x42
add r3, sp, #0x10
add r0, r0, r2
strh r0, [r6]
add r0, sp, #4
ldrb r1, [r0]
add r0, sp, #0x10
ldrb r0, [r0, r1]
add r6, r0, #1
strb r6, [r3, r1]
mov r3, #0xc
add r6, r1, #0
mul r6, r3
add r3, sp, #0x18
add r3, r3, r6
strb r5, [r0, r3]
add r0, sp, #0x14
strb r2, [r0, r1]
_021F28F6:
add r5, r5, #1
cmp r5, #0xc
blt _021F2866
mov r0, #0
mov ip, r0
add r7, sp, #0x18
add r1, sp, #0x14
add r2, sp, #0x10
_021F2906:
ldrb r3, [r2]
mov r0, #0
cmp r3, #0
ble _021F293A
_021F290E:
ldr r3, _021F2954 ; =0x0000074E
ldrb r6, [r7, r0]
ldrb r3, [r4, r3]
add r0, r0, #1
add r5, r4, r3
mov r3, #0x75
lsl r3, r3, #4
strb r6, [r5, r3]
sub r3, r3, #2
ldrb r3, [r4, r3]
ldrb r6, [r1]
add r5, r4, r3
ldr r3, _021F2958 ; =0x0000075C
strb r6, [r5, r3]
sub r3, #0xe
ldrb r3, [r4, r3]
add r5, r3, #1
ldr r3, _021F2954 ; =0x0000074E
strb r5, [r4, r3]
ldrb r3, [r2]
cmp r0, r3
blt _021F290E
_021F293A:
mov r0, ip
add r0, r0, #1
add r7, #0xc
add r1, r1, #1
add r2, r2, #1
mov ip, r0
cmp r0, #4
blt _021F2906
_021F294A:
add sp, #0x48
pop {r3, r4, r5, r6, r7, pc}
nop
_021F2950: .word 0x0000072B
_021F2954: .word 0x0000074E
_021F2958: .word 0x0000075C
thumb_func_end ov96_021F2834
thumb_func_start ov96_021F295C
ov96_021F295C: ; 0x021F295C
push {r4, r5, r6, lr}
add r5, r0, #0
add r6, r1, #0
mov r4, #1
cmp r5, #1
blt _021F2978
_021F2968:
lsl r0, r4, #0x18
lsr r0, r0, #0x18
add r1, r6, #0
bl ov96_021F2984
add r4, r4, #1
cmp r4, r5
ble _021F2968
_021F2978:
add r0, r6, #0
mov r1, #1
bl ScheduleBgTilemapBufferTransfer
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021F295C
thumb_func_start ov96_021F2984
ov96_021F2984: ; 0x021F2984
push {r3, lr}
sub sp, #0x10
cmp r0, #1
blo _021F299A
cmp r0, #6
bhi _021F299A
sub r0, r0, #1
lsl r3, r0, #1
add r3, #0x12
mov r0, #2
b _021F29DC
_021F299A:
cmp r0, #0x10
blo _021F29AE
cmp r0, #0x1c
bhi _021F29AE
sub r0, #0x10
lsl r2, r0, #1
mov r0, #0x1a
sub r3, r0, r2
mov r0, #0x14
b _021F29DC
_021F29AE:
cmp r0, #0x26
blo _021F29C0
cmp r0, #0x2b
bhs _021F29C0
sub r0, #0x26
lsl r0, r0, #1
add r3, r0, #4
mov r0, #2
b _021F29DC
_021F29C0:
cmp r0, #7
blo _021F29D2
cmp r0, #0xf
bhi _021F29D2
sub r0, r0, #7
lsl r0, r0, #1
mov r3, #0x1c
add r0, r0, #4
b _021F29DC
_021F29D2:
sub r0, #0x1d
lsl r2, r0, #1
mov r0, #0x12
mov r3, #2
sub r0, r0, r2
_021F29DC:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x10
lsl r3, r3, #0x18
str r0, [sp, #0xc]
add r0, r1, #0
mov r1, #1
mov r2, #0
lsr r3, r3, #0x18
bl FillBgTilemapRect
add sp, #0x10
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_021F2984
thumb_func_start ov96_021F2A00
ov96_021F2A00: ; 0x021F2A00
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r0, [sp, #8]
add r0, #0x20
str r0, [sp, #8]
ldr r0, _021F2A80 ; =ov96_0221BDD4
mov r1, #0
str r1, [sp, #0xc]
str r0, [sp, #4]
mov r7, #2
_021F2A14:
ldr r4, [sp, #8]
ldr r5, [sp, #4]
mov r6, #0
_021F2A1A:
ldr r0, [r4, #0x18]
cmp r0, #0
bne _021F2A56
str r7, [r4, #0x18]
add r0, sp, #0x10
str r0, [sp]
ldrh r1, [r5]
ldrh r2, [r5, #2]
ldr r0, [r4]
add r3, sp, #0x14
bl ov96_021EB0A4
ldr r0, [sp, #0x14]
add r3, r4, #0
lsl r0, r0, #0xc
str r0, [r4, #0x28]
ldr r0, [sp, #0x10]
add r2, r4, #0
lsl r0, r0, #0xc
add r3, #0x28
str r0, [r4, #0x2c]
ldmia r3!, {r0, r1}
add r2, #0x1c
stmia r2!, {r0, r1}
ldr r0, [r3]
add r1, r4, #0
str r0, [r2]
add r1, #0x40
mov r0, #2
strb r0, [r1]
_021F2A56:
add r6, r6, #1
add r4, #0x90
add r5, r5, #4
cmp r6, #3
blt _021F2A1A
mov r1, #0x1b
ldr r0, [sp, #8]
lsl r1, r1, #4
add r0, r0, r1
str r0, [sp, #8]
ldr r0, [sp, #4]
add r0, #0xc
str r0, [sp, #4]
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, #4
blt _021F2A14
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_021F2A80: .word ov96_0221BDD4
thumb_func_end ov96_021F2A00
thumb_func_start ov96_021F2A84
ov96_021F2A84: ; 0x021F2A84
mov r2, #0x1b
lsl r2, r2, #4
mul r2, r1
mov r3, #0
add r1, r0, r2
_021F2A8E:
ldr r0, [r1, #0x38]
cmp r0, #0
beq _021F2A98
mov r0, #0
bx lr
_021F2A98:
add r3, r3, #1
add r1, #0x90
cmp r3, #3
blt _021F2A8E
mov r0, #1
bx lr
thumb_func_end ov96_021F2A84
thumb_func_start ov96_021F2AA4
ov96_021F2AA4: ; 0x021F2AA4
add r1, r0, #0
add r1, #0x44
ldrb r1, [r1]
cmp r1, #0
beq _021F2AE0
add r1, r0, #0
add r1, #0x45
ldrb r1, [r1]
sub r2, r1, #1
add r1, r0, #0
add r1, #0x45
strb r2, [r1]
add r1, r0, #0
add r1, #0x45
ldrb r1, [r1]
cmp r1, #0
bne _021F2B20
add r1, r0, #0
mov r2, #0
add r1, #0x45
strb r2, [r1]
add r1, r0, #0
add r1, #0x44
strb r2, [r1]
add r1, r0, #0
add r1, #0x8c
ldrh r1, [r1]
add r0, #0x8e
strh r1, [r0]
bx lr
_021F2AE0:
add r1, r0, #0
add r1, #0x8e
ldrh r1, [r1]
add r2, r1, #2
add r1, r0, #0
add r1, #0x8e
strh r2, [r1]
add r1, r0, #0
add r1, #0x8c
ldrh r2, [r1]
add r1, r0, #0
add r1, #0x8e
ldrh r1, [r1]
cmp r1, r2
bls _021F2B04
add r1, r0, #0
add r1, #0x8e
strh r2, [r1]
_021F2B04:
add r1, r0, #0
add r1, #0x8e
ldrh r2, [r1]
add r1, r0, #0
add r1, #0x8c
ldrh r1, [r1]
cmp r2, r1
bne _021F2B20
add r1, r0, #0
mov r2, #0
add r1, #0x45
strb r2, [r1]
add r0, #0x44
strb r2, [r0]
_021F2B20:
bx lr
.balign 4, 0
thumb_func_end ov96_021F2AA4
thumb_func_start ov96_021F2B24
ov96_021F2B24: ; 0x021F2B24
push {r3, r4, r5, lr}
add r5, r1, #0
add r1, r2, #0
add r2, r3, #0
ldr r4, [sp, #0x10]
bl ov96_021E60D8
ldrb r1, [r0]
lsl r1, r1, #2
ldr r2, [r5, r1]
add r1, r4, #0
add r1, #0x8a
strh r2, [r1]
ldrb r1, [r0, #3]
lsl r1, r1, #2
add r1, r5, r1
ldr r2, [r1, #0x14]
add r1, r4, #0
add r1, #0x8c
strh r2, [r1]
ldrb r1, [r0, #3]
lsl r1, r1, #2
add r1, r5, r1
ldr r2, [r1, #0x14]
add r1, r4, #0
add r1, #0x8e
strh r2, [r1]
ldrb r0, [r0, #1]
add r4, #0x89
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x28]
strb r0, [r4]
pop {r3, r4, r5, pc}
thumb_func_end ov96_021F2B24
thumb_func_start ov96_021F2B68
ov96_021F2B68: ; 0x021F2B68
push {r3, r4, r5, lr}
add r4, r0, #0
strh r1, [r4, #0x1c]
strh r2, [r4, #0x1e]
mov r2, #0
ldr r0, _021F2BA4 ; =ov96_021F2BB4
strb r2, [r4]
add r1, r4, #0
add r5, r3, #0
bl CreateSysTask
str r0, [r4, #4]
ldr r0, _021F2BA8 ; =ov96_021F2C04
add r1, r4, #0
mov r2, #1
bl CreateSysTask
str r0, [r4, #0xc]
mov r1, #2
ldr r0, _021F2BAC ; =0x04000018
str r5, [r4, #0x30]
lsl r1, r1, #0x16
str r1, [r0]
ldr r0, _021F2BB0 ; =ov96_021F2CD0
add r1, r4, #0
mov r2, #2
bl CreateSysTask
str r0, [r4, #8]
pop {r3, r4, r5, pc}
.balign 4, 0
_021F2BA4: .word ov96_021F2BB4
_021F2BA8: .word ov96_021F2C04
_021F2BAC: .word 0x04000018
_021F2BB0: .word ov96_021F2CD0
thumb_func_end ov96_021F2B68
thumb_func_start ov96_021F2BB4
ov96_021F2BB4: ; 0x021F2BB4
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
ldrb r0, [r4]
cmp r0, #0
beq _021F2BC6
cmp r0, #1
beq _021F2BDE
pop {r3, r4, r5, pc}
_021F2BC6:
ldr r0, [r4, #8]
cmp r0, #0
bne _021F2BFE
ldr r0, _021F2C00 ; =ov96_021F2D68
mov r2, #3
bl CreateSysTask
str r0, [r4, #0x10]
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
pop {r3, r4, r5, pc}
_021F2BDE:
ldr r0, [r4, #0x10]
cmp r0, #0
bne _021F2BFE
mov r0, #0
str r0, [r4, #4]
strb r0, [r4]
ldr r0, [r4, #0x30]
bl ov96_021E5F54
bl ov96_021E8A20
mov r1, #1
strb r1, [r0, #8]
add r0, r5, #0
bl DestroySysTask
_021F2BFE:
pop {r3, r4, r5, pc}
.balign 4, 0
_021F2C00: .word ov96_021F2D68
thumb_func_end ov96_021F2BB4
thumb_func_start ov96_021F2C04
ov96_021F2C04: ; 0x021F2C04
push {r3, r4, lr}
sub sp, #4
add r4, r1, #0
ldrb r1, [r4, #1]
cmp r1, #0
beq _021F2C1C
cmp r1, #1
beq _021F2C5A
cmp r1, #2
beq _021F2C86
add sp, #4
pop {r3, r4, pc}
_021F2C1C:
ldrh r0, [r4, #0x18]
add r0, r0, #1
strh r0, [r4, #0x18]
ldrh r0, [r4, #0x18]
cmp r0, #5
bhi _021F2C50
lsl r0, r0, #0x18
lsr r1, r0, #0x18
mov r0, #0xc
mul r0, r1
mov r1, #5
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r4, #4
str r0, [sp]
mov r3, #0xc
ldr r0, _021F2CC8 ; =0x04000050
mov r1, #0
mov r2, #1
sub r3, r3, r4
bl G2x_SetBlendAlpha_
add sp, #4
pop {r3, r4, pc}
_021F2C50:
ldrb r0, [r4, #1]
add sp, #4
add r0, r0, #1
strb r0, [r4, #1]
pop {r3, r4, pc}
_021F2C5A:
ldrh r1, [r4, #0x1e]
ldr r0, [r4, #0x20]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_021F31F0
ldrh r1, [r4, #0x1c]
ldr r0, [r4, #0x20]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_021F3298
mov r0, #0
strh r0, [r4, #0x18]
ldrb r0, [r4, #1]
add r0, r0, #1
strb r0, [r4, #1]
ldr r0, _021F2CCC ; =0x0000089F
bl PlaySE
add sp, #4
pop {r3, r4, pc}
_021F2C86:
ldrh r1, [r4, #0x18]
add r1, r1, #1
strh r1, [r4, #0x18]
ldrh r1, [r4, #0x18]
cmp r1, #5
bhi _021F2CB8
lsl r0, r1, #0x18
lsr r1, r0, #0x18
mov r0, #0xc
mul r0, r1
mov r1, #5
bl _s32_div_f
lsl r0, r0, #0x10
lsr r3, r0, #0x10
mov r0, #0x10
sub r0, r0, r3
str r0, [sp]
ldr r0, _021F2CC8 ; =0x04000050
mov r1, #0
mov r2, #1
bl G2x_SetBlendAlpha_
add sp, #4
pop {r3, r4, pc}
_021F2CB8:
mov r1, #0
str r1, [r4, #0xc]
strh r1, [r4, #0x18]
strb r1, [r4, #1]
bl DestroySysTask
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
_021F2CC8: .word 0x04000050
_021F2CCC: .word 0x0000089F
thumb_func_end ov96_021F2C04
thumb_func_start ov96_021F2CD0
ov96_021F2CD0: ; 0x021F2CD0
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
ldrb r0, [r4, #2]
cmp r0, #0
beq _021F2CE6
cmp r0, #1
beq _021F2D16
cmp r0, #2
beq _021F2D2E
pop {r3, r4, r5, pc}
_021F2CE6:
ldrh r0, [r4, #0x1a]
mov r1, #5
add r0, r0, #1
strh r0, [r4, #0x1a]
ldrh r0, [r4, #0x1a]
lsl r0, r0, #7
bl _s32_div_f
mov r1, #0x80
sub r0, r1, r0
lsl r1, r0, #0x10
ldr r0, _021F2D60 ; =0x01FF0000
and r1, r0
ldr r0, _021F2D64 ; =0x04000018
str r1, [r0]
ldrh r0, [r4, #0x1a]
cmp r0, #5
blo _021F2D5E
mov r0, #0
strh r0, [r4, #0x1a]
ldrb r0, [r4, #2]
add r0, r0, #1
strb r0, [r4, #2]
pop {r3, r4, r5, pc}
_021F2D16:
ldrh r0, [r4, #0x1a]
add r0, r0, #1
strh r0, [r4, #0x1a]
ldrh r0, [r4, #0x1a]
cmp r0, #0x14
blo _021F2D5E
mov r0, #0
strh r0, [r4, #0x1a]
ldrb r0, [r4, #2]
add r0, r0, #1
strb r0, [r4, #2]
pop {r3, r4, r5, pc}
_021F2D2E:
ldrh r0, [r4, #0x1a]
mov r1, #5
add r0, r0, #1
strh r0, [r4, #0x1a]
ldrh r0, [r4, #0x1a]
lsl r0, r0, #7
neg r0, r0
bl _s32_div_f
lsl r1, r0, #0x10
ldr r0, _021F2D60 ; =0x01FF0000
and r1, r0
ldr r0, _021F2D64 ; =0x04000018
str r1, [r0]
ldrh r0, [r4, #0x1a]
cmp r0, #5
blo _021F2D5E
mov r0, #0
strh r0, [r4, #0x1a]
str r0, [r4, #8]
strb r0, [r4, #2]
add r0, r5, #0
bl DestroySysTask
_021F2D5E:
pop {r3, r4, r5, pc}
.balign 4, 0
_021F2D60: .word 0x01FF0000
_021F2D64: .word 0x04000018
thumb_func_end ov96_021F2CD0
thumb_func_start ov96_021F2D68
ov96_021F2D68: ; 0x021F2D68
push {r4, lr}
mov r2, #0x24
ldrsh r4, [r1, r2]
ldrh r2, [r1, #0x26]
lsl r3, r2, #2
ldr r2, _021F2D94 ; =ov96_0221DB70
ldr r2, [r2, r3]
add r2, r4, r2
strh r2, [r1, #0x24]
ldrh r2, [r1, #0x26]
add r2, r2, #1
strh r2, [r1, #0x26]
ldrh r2, [r1, #0x26]
cmp r2, #0x12
blo _021F2D92
mov r2, #0
strh r2, [r1, #0x24]
str r2, [r1, #0x10]
strh r2, [r1, #0x26]
bl DestroySysTask
_021F2D92:
pop {r4, pc}
.balign 4, 0
_021F2D94: .word ov96_0221DB70
thumb_func_end ov96_021F2D68
thumb_func_start ov96_021F2D98
ov96_021F2D98: ; 0x021F2D98
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
mov r0, #0
strb r0, [r4, #3]
ldr r0, [r4, #4]
cmp r0, #0
beq _021F2DC0
ldr r0, [r4, #0x30]
bl ov96_021E5F54
bl ov96_021E8A20
mov r1, #1
strb r1, [r0, #8]
ldr r0, [r4, #4]
bl DestroySysTask
mov r0, #0
str r0, [r4, #4]
_021F2DC0:
ldr r0, [r4, #8]
cmp r0, #0
beq _021F2DCE
bl DestroySysTask
mov r0, #0
str r0, [r4, #8]
_021F2DCE:
ldr r0, [r4, #0xc]
cmp r0, #0
beq _021F2DDC
bl DestroySysTask
mov r0, #0
str r0, [r4, #0xc]
_021F2DDC:
ldr r0, [r4, #0x10]
cmp r0, #0
beq _021F2DEA
bl DestroySysTask
mov r0, #0
str r0, [r4, #0x10]
_021F2DEA:
ldr r0, [r4, #0x14]
cmp r0, #0
beq _021F2DF8
bl DestroySysTask
mov r0, #0
str r0, [r4, #0x14]
_021F2DF8:
mov r1, #2
ldr r0, _021F2E28 ; =0x04000018
lsl r1, r1, #0x16
str r1, [r0]
mov r1, #0
strb r1, [r4]
strb r1, [r4, #1]
strb r1, [r4, #2]
strh r1, [r4, #0x18]
strh r1, [r4, #0x1a]
strh r1, [r4, #0x26]
strh r1, [r4, #0x2e]
strh r1, [r4, #0x24]
strh r1, [r4, #0x2c]
mov r3, #0xc
str r3, [r4, #0x28]
mov r2, #4
str r2, [sp]
add r0, #0x38
mov r2, #1
bl G2x_SetBlendAlpha_
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
_021F2E28: .word 0x04000018
thumb_func_end ov96_021F2D98
thumb_func_start ov96_021F2E2C
ov96_021F2E2C: ; 0x021F2E2C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x14]
cmp r0, #0
bne _021F2E44
ldr r0, _021F2E48 ; =ov96_021F2E4C
str r1, [r4, #0x28]
add r1, r4, #0
mov r2, #0
bl CreateSysTask
str r0, [r4, #0x14]
_021F2E44:
pop {r4, pc}
nop
_021F2E48: .word ov96_021F2E4C
thumb_func_end ov96_021F2E2C
thumb_func_start ov96_021F2E4C
ov96_021F2E4C: ; 0x021F2E4C
push {r4, lr}
mov r2, #0x2c
ldrsh r4, [r1, r2]
ldrh r2, [r1, #0x2e]
lsl r3, r2, #2
ldr r2, _021F2E7C ; =ov96_0221DB5C
ldr r2, [r2, r3]
add r2, r4, r2
strh r2, [r1, #0x2c]
ldrh r2, [r1, #0x2e]
add r2, r2, #1
strh r2, [r1, #0x2e]
ldrh r2, [r1, #0x2e]
cmp r2, #5
blo _021F2E7A
mov r2, #0
strh r2, [r1, #0x2c]
str r2, [r1, #0x14]
strh r2, [r1, #0x2e]
mov r2, #0xc
str r2, [r1, #0x28]
bl DestroySysTask
_021F2E7A:
pop {r4, pc}
.balign 4, 0
_021F2E7C: .word ov96_0221DB5C
thumb_func_end ov96_021F2E4C
thumb_func_start ov96_021F2E80
ov96_021F2E80: ; 0x021F2E80
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r1, #0
add r6, r0, #0
ldr r0, [r5, #0x28]
add r4, r3, #0
add r7, r2, #0
cmp r0, r4
bne _021F2EC4
add r0, r4, #0
mov r1, #3
bl _s32_div_f
str r0, [sp, #4]
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r2, r1, #0
ldr r1, [sp, #4]
add r0, r6, #0
bl ov96_021E60D8
ldrb r0, [r0, #2]
cmp r0, #0
beq _021F2EC4
mov r1, #0
str r1, [sp]
mov r2, #0x2c
ldrsh r2, [r5, r2]
ldr r3, [sp, #0x20]
add r0, r7, #0
bl ov96_021EAED4
_021F2EC4:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021F2E80
thumb_func_start ov96_021F2EC8
ov96_021F2EC8: ; 0x021F2EC8
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
ldr r0, [r4]
ldr r2, _021F2EF8 ; =ov96_0221BC5C
add r1, r4, #4
bl AddWindow
mov r2, #0
str r2, [sp]
ldr r0, [r4]
mov r1, #3
mov r3, #1
bl BG_FillCharDataRange
mov r1, #0x1e
ldr r2, [r4, #0x14]
mov r0, #0
lsl r1, r1, #4
bl LoadFontPal0
add sp, #4
pop {r3, r4, pc}
nop
_021F2EF8: .word ov96_0221BC5C
thumb_func_end ov96_021F2EC8
thumb_func_start ov96_021F2EFC
ov96_021F2EFC: ; 0x021F2EFC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
add r7, r1, #0
add r0, r5, #4
mov r1, #0
bl FillWindowPixelBuffer
ldr r2, _021F2F74 ; =0x00000135
ldr r3, [r5, #0x14]
mov r0, #1
mov r1, #0x1b
bl NewMsgDataFromNarc
add r4, r0, #0
ldr r0, [r5, #0x14]
bl MessageFormat_New
mov r1, #0
str r1, [sp]
mov r2, #1
str r2, [sp, #4]
add r2, r7, #0
mov r3, #3
add r6, r0, #0
bl BufferIntegerAsString
ldr r3, [r5, #0x14]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9e
bl ReadMsgData_ExpandPlaceholders
add r7, r0, #0
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021F2F78 ; =0x000F0E00
mov r1, #4
str r0, [sp, #8]
add r0, r5, #4
add r2, r7, #0
str r3, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r7, #0
bl String_Delete
add r0, r6, #0
bl MessageFormat_Delete
add r0, r4, #0
bl DestroyMsgData
add r0, r5, #4
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F2F74: .word 0x00000135
_021F2F78: .word 0x000F0E00
thumb_func_end ov96_021F2EFC
thumb_func_start ov96_021F2F7C
ov96_021F2F7C: ; 0x021F2F7C
push {lr}
sub sp, #0xc
add r3, sp, #4
str r3, [sp]
asr r3, r1, #0xb
lsr r3, r3, #0x14
add r3, r1, r3
asr r1, r3, #0xc
asr r3, r2, #0xb
lsr r3, r3, #0x14
add r3, r2, r3
asr r2, r3, #0xc
add r3, sp, #8
bl ov96_021EB06C
ldr r0, [sp, #8]
cmp r0, #0x10
blt _021F2FAE
cmp r0, #0xf0
bge _021F2FAE
ldr r0, [sp, #4]
cmp r0, #0x10
blt _021F2FAE
cmp r0, #0xb0
blt _021F2FB4
_021F2FAE:
add sp, #0xc
mov r0, #1
pop {pc}
_021F2FB4:
mov r0, #0
add sp, #0xc
pop {pc}
.balign 4, 0
thumb_func_end ov96_021F2F7C
thumb_func_start ov96_021F2FBC
ov96_021F2FBC: ; 0x021F2FBC
ldrh r3, [r1, #2]
ldrh r2, [r0, #2]
cmp r2, r3
bls _021F2FCA
mov r0, #0
mvn r0, r0
bx lr
_021F2FCA:
cmp r2, r3
bhs _021F2FD2
mov r0, #1
bx lr
_021F2FD2:
ldrh r1, [r1]
ldrh r0, [r0]
cmp r0, r1
bhs _021F2FE0
mov r0, #0
mvn r0, r0
bx lr
_021F2FE0:
cmp r0, r1
bls _021F2FE8
mov r0, #1
bx lr
_021F2FE8:
mov r0, #0
bx lr
thumb_func_end ov96_021F2FBC
thumb_func_start ov96_021F2FEC
ov96_021F2FEC: ; 0x021F2FEC
push {r4, r5, r6, r7, lr}
sub sp, #0x44
add r5, r0, #0
add r6, r1, #0
mov r4, #0
_021F2FF6:
lsl r1, r4, #2
add r0, sp, #0x14
add r7, r0, r1
strh r4, [r0, r1]
add r0, r6, r4
str r0, [sp, #4]
add r0, r4, #0
mov r1, #3
bl _s32_div_f
str r0, [sp, #8]
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r0, sp, #0xc
str r0, [sp]
mov r0, #0x1b
ldr r2, [sp, #8]
lsl r0, r0, #4
mul r0, r2
mov r2, #0x90
mul r2, r1
add r0, r5, r0
add r0, r2, r0
ldr r2, [sp, #4]
ldrb r1, [r6, r4]
ldrb r2, [r2, #0xc]
ldr r0, [r0, #0x20]
add r3, sp, #0x10
bl ov96_021EB06C
ldr r0, [sp, #0xc]
strh r0, [r7, #2]
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #0xc
blo _021F2FF6
mov r0, #0x7f
lsl r0, r0, #4
ldr r0, [r5, r0]
ldr r3, _021F30A0 ; =ov96_021F2FBC
str r0, [sp]
add r0, sp, #0x14
mov r1, #0xc
mov r2, #4
bl MATH_QSort
mov r4, #0
_021F305A:
lsl r1, r4, #2
add r0, sp, #0x14
ldrh r0, [r0, r1]
mov r1, #3
lsl r0, r0, #0x18
lsr r7, r0, #0x18
add r0, r7, #0
bl _s32_div_f
add r6, r0, #0
add r0, r7, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x1b
add r2, r1, #0
lsl r0, r0, #4
add r3, r6, #0
mul r3, r0
mov r0, #0x90
mul r2, r0
add r0, r5, r3
add r0, r2, r0
ldr r0, [r0, #0x20]
add r1, r4, #6
bl ov96_021EABA8
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #0xc
blo _021F305A
add sp, #0x44
pop {r4, r5, r6, r7, pc}
nop
_021F30A0: .word ov96_021F2FBC
thumb_func_end ov96_021F2FEC
thumb_func_start ov96_021F30A4
ov96_021F30A4: ; 0x021F30A4
push {r4, lr}
mov r1, #0x84
bl AllocFromHeap
mov r1, #0
mov r2, #0x84
add r4, r0, #0
bl MI_CpuFill8
add r0, r4, #0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021F30A4
thumb_func_start ov96_021F30BC
ov96_021F30BC: ; 0x021F30BC
ldr r3, _021F30C0 ; =FreeToHeap
bx r3
.balign 4, 0
_021F30C0: .word FreeToHeap
thumb_func_end ov96_021F30BC
thumb_func_start ov96_021F30C4
ov96_021F30C4: ; 0x021F30C4
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r7, r1, #0
mov r4, #0
_021F30CC:
add r0, r7, #0
mov r1, #0x65
mov r2, #2
bl ov96_021EB4F4
str r0, [r5, #0xc]
bl ov96_021EB5B8
add r6, r0, #0
mov r1, #1
bl sub_02024B78
add r0, r6, #0
mov r1, #0x64
bl Sprite_SetDrawPriority
add r4, r4, #1
add r5, #0x10
cmp r4, #8
blt _021F30CC
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F30C4
thumb_func_start ov96_021F30F8
ov96_021F30F8: ; 0x021F30F8
push {r4, r5, r6, lr}
add r5, r0, #0
cmp r5, #0xf
bne _021F3104
mov r0, #0
pop {r4, r5, r6, pc}
_021F3104:
cmp r5, #1
bhs _021F310C
mov r0, #0
b _021F311E
_021F310C:
cmp r5, #6
bhs _021F3114
mov r0, #1
b _021F311E
_021F3114:
cmp r5, #0xa
bhs _021F311C
mov r0, #2
b _021F311E
_021F311C:
mov r0, #3
_021F311E:
cmp r1, #1
bne _021F3128
mov r4, #1
mov r6, #5
b _021F3136
_021F3128:
cmp r1, #2
bne _021F3132
mov r4, #6
mov r6, #4
b _021F3136
_021F3132:
mov r4, #0xa
mov r6, #5
_021F3136:
cmp r1, r0
bne _021F316C
cmp r5, r4
bhs _021F3142
bl GF_AssertFail
_021F3142:
bl LCRandom
sub r1, r6, #1
bl _s32_div_f
sub r0, r5, r4
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r0, r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r1, r6, #0
bl _u32_div_f
lsl r0, r1, #0x18
lsr r0, r0, #0x18
add r0, r0, r4
lsl r0, r0, #0x18
lsr r0, r0, #0x18
pop {r4, r5, r6, pc}
_021F316C:
bl LCRandom
add r1, r6, #0
bl _s32_div_f
add r0, r4, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021F30F8
thumb_func_start ov96_021F3180
ov96_021F3180: ; 0x021F3180
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r6, r1, #0
add r7, r2, #0
str r3, [sp, #4]
cmp r0, #0xf
bne _021F3194
add sp, #0x10
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021F3194:
mov r5, #0
str r5, [sp, #0xc]
lsl r4, r0, #2
_021F319A:
ldr r0, _021F31E8 ; =ov96_0221DBC8
ldr r1, [r0, r4]
lsl r0, r5, #3
add r3, r1, r0
ldr r0, [r1, r0]
cmp r0, #0
beq _021F31E2
lsl r1, r0, #2
ldr r0, _021F31EC ; =ov96_0221DBB8
add r0, r0, r1
sub r0, r0, #4
ldr r0, [r0]
add r1, r7, #0
str r0, [sp, #8]
ldrh r0, [r0]
str r0, [sp]
ldrh r2, [r3, #4]
ldrh r3, [r3, #6]
add r0, r6, #0
bl ov96_021F32FC
cmp r0, #0
beq _021F31D8
ldr r0, [sp, #8]
ldrh r0, [r0, #2]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xc]
ldr r0, [sp, #4]
strb r5, [r0]
b _021F31E2
_021F31D8:
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #4
blo _021F319A
_021F31E2:
ldr r0, [sp, #0xc]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F31E8: .word ov96_0221DBC8
_021F31EC: .word ov96_0221DBB8
thumb_func_end ov96_021F3180
thumb_func_start ov96_021F31F0
ov96_021F31F0: ; 0x021F31F0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
str r1, [sp]
add r5, r0, #0
ldr r0, [sp]
mov r7, #0
lsl r1, r0, #2
ldr r0, _021F3294 ; =ov96_0221DBC8
ldr r4, [r0, r1]
_021F3202:
ldr r0, [r4]
cmp r0, #0
beq _021F3288
add r0, r5, #0
add r0, #0x80
ldr r0, [r0]
lsl r0, r0, #4
add r6, r5, r0
ldr r0, [r5, r0]
cmp r0, #1
bne _021F321C
bl GF_AssertFail
_021F321C:
mov r0, #1
str r0, [r6]
ldr r0, [sp]
str r0, [r6, #8]
add r0, r5, #0
str r4, [r6, #4]
add r0, #0x80
ldr r0, [r0]
lsl r0, r0, #4
add r0, r5, r0
ldr r0, [r0, #0xc]
bl ov96_021EB5B8
add r6, r0, #0
add r0, r5, #0
add r0, #0x80
ldr r0, [r0]
mov r1, #1
lsl r0, r0, #4
add r0, r5, r0
ldr r0, [r0, #0xc]
add r2, r1, #0
bl ov96_021EB52C
ldr r1, [r4]
add r0, r6, #0
sub r1, r1, #1
bl Set2dSpriteAnimSeqNo
mov r0, #0
str r0, [sp, #0xc]
ldrh r0, [r4, #4]
add r1, sp, #4
lsl r0, r0, #0xc
str r0, [sp, #4]
ldrh r0, [r4, #6]
lsl r0, r0, #0xc
str r0, [sp, #8]
add r0, r6, #0
bl Sprite_SetMatrix
add r0, r5, #0
add r0, #0x80
ldr r0, [r0]
add r0, r0, #1
lsr r2, r0, #0x1f
lsl r1, r0, #0x1d
sub r1, r1, r2
mov r0, #0x1d
ror r1, r0
add r0, r5, #0
add r1, r2, r1
add r0, #0x80
str r1, [r0]
_021F3288:
add r7, r7, #1
add r4, #8
cmp r7, #4
blt _021F3202
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F3294: .word ov96_0221DBC8
thumb_func_end ov96_021F31F0
thumb_func_start ov96_021F3298
ov96_021F3298: ; 0x021F3298
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
mov r4, #0
mov r7, #0xf
_021F32A2:
ldr r0, [r5, #8]
cmp r6, r0
bne _021F32BA
str r7, [r5, #8]
mov r0, #0
str r0, [r5, #4]
str r0, [r5]
mov r1, #0
ldr r0, [r5, #0xc]
add r2, r1, #0
bl ov96_021EB52C
_021F32BA:
add r4, r4, #1
add r5, #0x10
cmp r4, #8
blt _021F32A2
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021F3298
thumb_func_start ov96_021F32C4
ov96_021F32C4: ; 0x021F32C4
push {r4, lr}
mov r4, #0
cmp r0, #5
bhi _021F32F4
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021F32D8: ; jump table
.short _021F32F4 - _021F32D8 - 2 ; case 0
.short _021F32E4 - _021F32D8 - 2 ; case 1
.short _021F32E8 - _021F32D8 - 2 ; case 2
.short _021F32EC - _021F32D8 - 2 ; case 3
.short _021F32F4 - _021F32D8 - 2 ; case 4
.short _021F32F0 - _021F32D8 - 2 ; case 5
_021F32E4:
mov r4, #1
b _021F32F8
_021F32E8:
mov r4, #2
b _021F32F8
_021F32EC:
mov r4, #3
b _021F32F8
_021F32F0:
mov r4, #4
b _021F32F8
_021F32F4:
bl GF_AssertFail
_021F32F8:
add r0, r4, #0
pop {r4, pc}
thumb_func_end ov96_021F32C4
thumb_func_start ov96_021F32FC
ov96_021F32FC: ; 0x021F32FC
push {r3, lr}
sub sp, #0x18
lsl r0, r0, #0xc
str r0, [sp, #0xc]
lsl r0, r1, #0xc
str r0, [sp, #0x10]
mov r1, #0
lsl r0, r2, #0xc
str r0, [sp]
lsl r0, r3, #0xc
str r0, [sp, #4]
add r0, sp, #0xc
str r1, [sp, #0x14]
str r1, [sp, #8]
add r1, sp, #0
add r2, r0, #0
bl VEC_Subtract
add r0, sp, #0xc
bl VEC_Mag
add r1, sp, #0x10
ldrh r1, [r1, #0x10]
lsl r1, r1, #0xc
cmp r1, r0
ble _021F3336
add sp, #0x18
mov r0, #1
pop {r3, pc}
_021F3336:
mov r0, #0
add sp, #0x18
pop {r3, pc}
thumb_func_end ov96_021F32FC
thumb_func_start ov96_021F333C
ov96_021F333C: ; 0x021F333C
push {r4, r5, r6, r7}
mov r4, #0
add r3, r4, #0
add r5, r4, #0
lsl r2, r0, #2
_021F3346:
ldr r0, _021F3388 ; =ov96_0221DBC8
ldr r6, [r0, r2]
add r0, r6, r5
ldr r6, [r6, r5]
cmp r6, #0
bne _021F335C
mov r0, #0
str r0, [r1]
strh r0, [r1, #4]
strh r0, [r1, #6]
b _021F3378
_021F335C:
lsl r7, r6, #2
ldr r6, _021F338C ; =ov96_0221DBB8
add r6, r6, r7
sub r6, r6, #4
ldr r6, [r6]
ldrh r6, [r6]
str r6, [r1]
ldrh r6, [r0, #4]
strh r6, [r1, #4]
ldrh r0, [r0, #6]
strh r0, [r1, #6]
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
_021F3378:
add r3, r3, #1
add r5, #8
add r1, #8
cmp r3, #4
blt _021F3346
add r0, r4, #0
pop {r4, r5, r6, r7}
bx lr
.balign 4, 0
_021F3388: .word ov96_0221DBC8
_021F338C: .word ov96_0221DBB8
thumb_func_end ov96_021F333C
thumb_func_start ov96_021F3390
ov96_021F3390: ; 0x021F3390
push {r4, r5, r6, lr}
add r5, r1, #0
ldr r1, _021F33D4 ; =0x000004EC
add r6, r2, #0
bl AllocFromHeap
ldr r2, _021F33D4 ; =0x000004EC
mov r1, #0
add r4, r0, #0
bl MI_CpuFill8
ldr r0, _021F33D8 ; =0x000004E4
mov r1, #4
sub r2, r1, r5
strb r5, [r4, r0]
add r1, r0, #6
strb r2, [r4, r1]
ldrb r2, [r4, r1]
add r1, r0, #5
cmp r6, #0
strb r2, [r4, r1]
bne _021F33C0
mov r1, #0x14
b _021F33C2
_021F33C0:
mov r1, #0xa
_021F33C2:
add r0, r0, #3
strb r1, [r4, r0]
ldr r0, _021F33DC ; =0x000004E7
ldrb r1, [r4, r0]
sub r0, r0, #1
strb r1, [r4, r0]
add r0, r4, #0
pop {r4, r5, r6, pc}
nop
_021F33D4: .word 0x000004EC
_021F33D8: .word 0x000004E4
_021F33DC: .word 0x000004E7
thumb_func_end ov96_021F3390
thumb_func_start ov96_021F33E0
ov96_021F33E0: ; 0x021F33E0
push {r3, r4, r5, lr}
add r5, r0, #0
lsl r4, r1, #5
add r0, r5, r4
str r2, [r0, #4]
ldr r2, [sp, #0x10]
str r3, [r0, #8]
str r2, [r0, #0xc]
ldr r2, [sp, #0x14]
str r2, [r0, #0x10]
mov r2, #0
mvn r2, r2
str r2, [r5, r4]
ldr r2, [sp, #0x1c]
str r1, [r0, #0x14]
str r2, [r0, #0x1c]
add r0, r1, #0
mov r1, #3
bl _s32_div_f
ldr r1, _021F3420 ; =0x000004E9
ldrb r1, [r5, r1]
cmp r0, r1
blt _021F3418
ldr r1, [sp, #0x18]
add r0, r5, r4
str r1, [r0, #0x18]
pop {r3, r4, r5, pc}
_021F3418:
mov r1, #0
add r0, r5, r4
str r1, [r0, #0x18]
pop {r3, r4, r5, pc}
.balign 4, 0
_021F3420: .word 0x000004E9
thumb_func_end ov96_021F33E0
thumb_func_start ov96_021F3424
ov96_021F3424: ; 0x021F3424
ldr r3, _021F3428 ; =FreeToHeap
bx r3
.balign 4, 0
_021F3428: .word FreeToHeap
thumb_func_end ov96_021F3424
thumb_func_start ov96_021F342C
ov96_021F342C: ; 0x021F342C
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, _021F34FC ; =0x000004EA
add r7, r1, #0
ldrb r1, [r5, r0]
mov r4, #0xc
cmp r1, #4
bne _021F3440
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
_021F3440:
sub r1, r0, #4
ldrb r1, [r5, r1]
add r2, r1, #1
sub r1, r0, #4
strb r2, [r5, r1]
ldrb r2, [r5, r1]
sub r1, r0, #3
ldrb r1, [r5, r1]
cmp r2, r1
blo _021F3484
add r1, r0, #0
mov r2, #1
sub r1, #0x3a
str r2, [r5, r1]
sub r2, r0, #4
mov r1, #0
strb r1, [r5, r2]
sub r0, r0, #6
ldrb r0, [r5, r0]
cmp r0, #0
bls _021F3484
ldr r2, _021F3500 ; =0x000004B4
add r0, r1, #0
add r3, r2, #0
add r3, #0x30
_021F3472:
lsl r6, r1, #2
add r6, r5, r6
str r0, [r6, r2]
add r1, r1, #1
lsl r1, r1, #0x18
ldrb r6, [r5, r3]
lsr r1, r1, #0x18
cmp r1, r6
blo _021F3472
_021F3484:
mov r0, #0x4b
lsl r0, r0, #4
ldr r1, [r5, r0]
cmp r1, #0
beq _021F34F6
add r1, r0, #0
add r1, #0x39
ldrb r4, [r5, r1]
add r1, r0, #0
add r1, #0x38
add r0, #0x35
ldrb r2, [r5, r1]
mov r1, #2
ldrb r0, [r5, r0]
sub r1, r1, r2
add r2, r4, r0
lsl r0, r2, #1
add r0, r2, r0
add r6, r1, r0
add r0, r6, #0
mov r1, #3
bl _s32_div_f
cmp r0, r4
bge _021F34BA
bl GF_AssertFail
_021F34BA:
lsl r1, r6, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
add r2, r7, #0
bl ov96_021F350C
lsl r0, r6, #0x18
lsr r4, r0, #0x18
ldr r0, _021F3504 ; =0x000004E5
ldrb r1, [r5, r0]
add r1, r1, #1
strb r1, [r5, r0]
sub r1, r0, #1
ldrb r2, [r5, r0]
ldrb r1, [r5, r1]
cmp r2, r1
blo _021F34F6
mov r1, #0
strb r1, [r5, r0]
add r0, r0, #3
ldrb r0, [r5, r0]
mov r1, #3
add r0, r0, #1
bl _s32_div_f
ldr r0, _021F3508 ; =0x000004E8
strb r1, [r5, r0]
mov r1, #0
sub r0, #0x38
str r1, [r5, r0]
_021F34F6:
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_021F34FC: .word 0x000004EA
_021F3500: .word 0x000004B4
_021F3504: .word 0x000004E5
_021F3508: .word 0x000004E8
thumb_func_end ov96_021F342C
thumb_func_start ov96_021F350C
ov96_021F350C: ; 0x021F350C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x198
lsl r1, r1, #5
str r0, [sp, #8]
add r0, r0, r1
str r2, [sp, #0xc]
str r0, [sp, #0x20]
ldr r0, [r0, #0x10]
ldr r0, [r0]
cmp r0, #0
bne _021F3524
b _021F3800
_021F3524:
ldr r0, [sp, #0x20]
ldr r0, [r0, #0x18]
cmp r0, #0
bne _021F3534
bl GF_AssertFail
add sp, #0x198
pop {r3, r4, r5, r6, r7, pc}
_021F3534:
ldr r1, _021F3804 ; =0x000004E8
ldr r0, [sp, #8]
ldrb r0, [r0, r1]
sub r1, #0x34
lsl r2, r0, #2
ldr r0, [sp, #8]
add r0, r0, r2
ldr r0, [r0, r1]
cmp r0, #3
bge _021F356C
bl LCRandom
mov r1, #0x64
bl _s32_div_f
cmp r1, #0x1e
bge _021F356C
ldr r0, [sp, #8]
ldr r1, _021F3808 ; =0x000004B4
add sp, #0x198
add r2, r0, r1
add r1, #0x34
ldrb r0, [r0, r1]
lsl r1, r0, #2
ldr r0, [r2, r1]
add r0, r0, #1
str r0, [r2, r1]
pop {r3, r4, r5, r6, r7, pc}
_021F356C:
ldr r5, [sp, #8]
mov r4, #0
add r6, sp, #0x3c
add r7, sp, #0x38
_021F3574:
ldr r0, [r5, #0x10]
ldr r0, [r0]
cmp r0, #0
beq _021F35A6
ldr r2, [r5, #0xc]
add r3, sp, #0x40
str r6, [sp]
str r7, [sp, #4]
ldr r0, [r5, #0x1c]
ldmia r2!, {r1, r2}
bl ov96_021EAF78
ldr r1, [sp, #0x40]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
ldr r1, [sp, #0x3c]
asr r0, r0, #0xc
asr r2, r1, #0xb
lsr r2, r2, #0x14
add r2, r1, r2
asr r1, r2, #0xc
bl ov96_021F38FC
b _021F35AA
_021F35A6:
mov r0, #0
mvn r0, r0
_021F35AA:
add r4, r4, #1
str r0, [r5]
add r5, #0x20
cmp r4, #0xc
blt _021F3574
ldr r0, [sp, #0x20]
ldr r2, [r0, #0xc]
add r0, sp, #0x44
str r0, [sp]
ldr r3, [r2]
ldr r0, [sp, #0x20]
asr r1, r3, #0xb
lsr r1, r1, #0x14
add r1, r3, r1
ldr r3, [r2, #4]
ldr r0, [r0, #0x1c]
asr r2, r3, #0xb
lsr r2, r2, #0x14
add r2, r3, r2
asr r1, r1, #0xc
asr r2, r2, #0xc
add r3, sp, #0x48
bl ov96_021EB06C
ldr r0, [sp, #0x48]
ldr r1, [sp, #0x44]
bl ov96_021F38FC
ldr r1, [sp, #0x20]
str r0, [r1]
ldr r0, [sp, #0xc]
add r1, sp, #0xb0
bl ov96_021F333C
mov r6, #0
ldr r5, [sp, #8]
add r4, sp, #0xb0
sub r7, r6, #1
_021F35F6:
ldr r0, [r4]
cmp r0, #0
ble _021F360C
ldrh r0, [r4, #4]
ldrh r1, [r4, #6]
bl ov96_021F38FC
mov r1, #0x4a
lsl r1, r1, #4
str r0, [r5, r1]
b _021F3612
_021F360C:
mov r0, #0x4a
lsl r0, r0, #4
str r7, [r5, r0]
_021F3612:
add r6, r6, #1
add r4, #8
add r5, r5, #4
cmp r6, #4
blt _021F35F6
ldr r0, [sp, #0x48]
ldr r1, [sp, #0x44]
lsl r0, r0, #0x10
lsl r1, r1, #0x10
add r2, sp, #0x24
lsr r0, r0, #0x10
lsr r1, r1, #0x10
add r2, #2
add r3, sp, #0x24
bl ov96_021F3B04
cmp r0, #0
bne _021F363A
bl GF_AssertFail
_021F363A:
ldr r4, [sp, #8]
mov r0, #0
mov r1, #6
str r0, [sp, #0x1c]
str r0, [sp, #0x18]
add r6, r0, #0
lsl r1, r1, #6
add r0, r4, #0
add r5, r0, r1
add r0, sp, #0x24
mov r1, #2
ldrsh r1, [r0, r1]
add r7, sp, #0x134
str r1, [sp, #0x14]
ldr r1, [sp, #0x1c]
ldrsh r0, [r0, r1]
str r0, [sp, #0x10]
_021F365C:
mov r0, #0x67
lsl r0, r0, #2
str r6, [r4, r0]
add r0, r6, #0
mov r1, #5
bl _s32_div_f
ldr r0, [sp, #0x14]
sub r1, r1, #2
add r1, r1, r0
mov r0, #6
lsl r0, r0, #6
str r1, [r4, r0]
add r0, r6, #0
mov r1, #5
bl _s32_div_f
sub r1, r0, #2
ldr r0, [sp, #0x10]
add r1, r1, r0
mov r0, #0x61
lsl r0, r0, #2
str r1, [r4, r0]
sub r0, r0, #4
ldr r1, [r4, r0]
cmp r1, #0
blt _021F36A4
mov r0, #0x61
lsl r0, r0, #2
ldr r0, [r4, r0]
cmp r0, #0
blt _021F36A4
cmp r1, #7
bge _021F36A4
cmp r0, #5
blt _021F36AE
_021F36A4:
mov r0, #0x19
mov r1, #0
lsl r0, r0, #4
str r1, [r4, r0]
b _021F36B6
_021F36AE:
mov r0, #0x19
mov r1, #1
lsl r0, r0, #4
str r1, [r4, r0]
_021F36B6:
mov r0, #6
lsl r0, r0, #6
ldr r1, [r4, r0]
ldr r0, [sp, #0x14]
sub r1, r1, r0
mov r0, #0x61
lsl r0, r0, #2
ldr r2, [r4, r0]
ldr r0, [sp, #0x10]
str r5, [r7]
sub r0, r2, r0
mov r2, #0
mvn r2, r2
cmp r1, r2
blt _021F36F2
cmp r1, #1
bgt _021F36F2
add r1, r2, #0
cmp r0, r1
blt _021F36F2
cmp r0, #1
bgt _021F36F2
ldr r1, [sp, #0x1c]
ldr r0, [sp, #0x1c]
add r1, r1, #1
str r1, [sp, #0x1c]
lsl r0, r0, #2
add r1, sp, #0x8c
str r5, [r1, r0]
b _021F3700
_021F36F2:
ldr r1, [sp, #0x18]
ldr r0, [sp, #0x18]
add r1, r1, #1
str r1, [sp, #0x18]
lsl r0, r0, #2
add r1, sp, #0x4c
str r5, [r1, r0]
_021F3700:
add r6, r6, #1
add r4, #0x20
add r5, #0x20
add r7, r7, #4
cmp r6, #0x19
blt _021F365C
ldr r0, [sp, #0x1c]
cmp r0, #9
beq _021F3716
bl GF_AssertFail
_021F3716:
ldr r0, [sp, #0x18]
cmp r0, #0x10
beq _021F3720
bl GF_AssertFail
_021F3720:
mov r0, #9
add r1, sp, #0x8c
bl ov96_021F380C
ldr r1, [sp, #0x48]
ldr r0, [sp, #0x9c]
ldr r3, [sp, #0x20]
str r1, [r0, #8]
ldr r1, [sp, #0x44]
ldr r0, [sp, #0x9c]
add r2, sp, #0xb0
str r1, [r0, #0xc]
add r0, sp, #0x8c
str r0, [sp]
ldr r0, [sp, #8]
mov r1, #9
bl ov96_021F3888
mov r0, #9
add r1, sp, #0x8c
add r2, sp, #0xd0
bl ov96_021F3B38
add r4, r0, #0
ldr r0, [sp, #0xd0]
ldr r0, [r0, #0x18]
cmp r0, #3
blt _021F379C
bl LCRandom
add r1, r4, #0
bl _s32_div_f
lsl r0, r1, #0x18
lsr r1, r0, #0x16
add r0, sp, #0xd0
ldr r2, [r0, r1]
add r0, sp, #0x30
str r0, [sp]
ldr r0, [sp, #0x20]
ldr r1, [r2, #8]
ldr r0, [r0, #0x1c]
ldr r2, [r2, #0xc]
add r3, sp, #0x34
bl ov96_021EB0A4
ldr r0, [sp, #0x34]
lsl r1, r0, #0xc
ldr r0, [sp, #0x20]
ldr r0, [r0, #0x18]
str r1, [r0]
ldr r0, [sp, #0x30]
lsl r1, r0, #0xc
ldr r0, [sp, #0x20]
ldr r0, [r0, #0x18]
str r1, [r0, #4]
ldr r0, [sp, #0x20]
mov r1, #0
ldr r0, [r0, #0x18]
add sp, #0x198
str r1, [r0, #8]
pop {r3, r4, r5, r6, r7, pc}
_021F379C:
mov r0, #0x10
add r1, sp, #0x4c
bl ov96_021F380C
add r0, sp, #0x134
str r0, [sp]
ldr r0, [sp, #8]
ldr r3, [sp, #0x20]
mov r1, #0x19
add r2, sp, #0xb0
bl ov96_021F3888
mov r0, #0x19
add r1, sp, #0x134
add r2, sp, #0xd0
bl ov96_021F3B38
add r4, r0, #0
bl LCRandom
add r1, r4, #0
bl _s32_div_f
lsl r0, r1, #0x18
lsr r1, r0, #0x16
add r0, sp, #0xd0
ldr r2, [r0, r1]
add r0, sp, #0x28
str r0, [sp]
ldr r0, [sp, #0x20]
ldr r1, [r2, #8]
ldr r0, [r0, #0x1c]
ldr r2, [r2, #0xc]
add r3, sp, #0x2c
bl ov96_021EB0A4
ldr r0, [sp, #0x2c]
lsl r1, r0, #0xc
ldr r0, [sp, #0x20]
ldr r0, [r0, #0x18]
str r1, [r0]
ldr r0, [sp, #0x28]
lsl r1, r0, #0xc
ldr r0, [sp, #0x20]
ldr r0, [r0, #0x18]
str r1, [r0, #4]
ldr r0, [sp, #0x20]
mov r1, #0
ldr r0, [r0, #0x18]
str r1, [r0, #8]
_021F3800:
add sp, #0x198
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F3804: .word 0x000004E8
_021F3808: .word 0x000004B4
thumb_func_end ov96_021F350C
thumb_func_start ov96_021F380C
ov96_021F380C: ; 0x021F380C
push {r3, r4, r5, r6, r7, lr}
str r0, [sp]
ldr r0, [sp]
add r5, r1, #0
mov r7, #0
cmp r0, #0
bls _021F3884
_021F381A:
lsl r4, r7, #2
ldr r6, [r5, r4]
ldr r0, [r6, #0x10]
cmp r0, #0
beq _021F386A
bl LCRandom
ldr r1, [r6]
lsl r3, r0, #0x1b
lsl r2, r1, #5
lsr r1, r0, #0x1f
sub r3, r3, r1
mov r0, #0x1b
ror r3, r0
add r2, #0x10
add r0, r1, r3
add r0, r2, r0
str r0, [r6, #8]
ldr r6, [r5, r4]
bl LCRandom
ldr r1, [r6, #4]
lsl r3, r0, #0x1b
lsl r2, r1, #5
lsr r1, r0, #0x1f
sub r3, r3, r1
mov r0, #0x1b
ror r3, r0
add r0, r1, r3
add r2, #0x10
add r0, r2, r0
str r0, [r6, #0xc]
ldr r0, [r5, r4]
mov r1, #7
ldr r2, [r0, #4]
ldr r3, [r0]
mul r1, r2
add r1, r3, r1
str r1, [r0, #0x14]
b _021F3878
_021F386A:
mov r0, #0
mvn r0, r0
str r0, [r6, #8]
ldr r1, [r5, r4]
str r0, [r1, #0xc]
ldr r1, [r5, r4]
str r0, [r1, #0x14]
_021F3878:
add r0, r7, #1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
ldr r0, [sp]
cmp r7, r0
blo _021F381A
_021F3884:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F380C
thumb_func_start ov96_021F3888
ov96_021F3888: ; 0x021F3888
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
str r1, [sp, #0xc]
add r7, r0, #0
ldr r0, [sp, #0xc]
mov r4, #0
str r2, [sp, #0x10]
str r3, [sp, #0x14]
ldr r5, [sp, #0x30]
cmp r0, #0
bls _021F38F6
_021F389E:
lsl r6, r4, #2
ldr r2, [r5, r6]
ldr r0, [r2, #0x10]
cmp r0, #0
bne _021F38B0
mov r0, #0x63
mvn r0, r0
str r0, [r2, #0x18]
b _021F38EA
_021F38B0:
ldr r0, [r2, #8]
ldr r1, [sp, #0x10]
str r0, [sp]
ldr r0, [r2, #0xc]
ldr r3, [sp, #0x14]
str r0, [sp, #4]
add r0, sp, #0x18
str r0, [sp, #8]
ldr r2, [r2, #0x14]
add r0, r7, #0
bl ov96_021F3930
ldr r1, [r5, r6]
str r0, [r1, #0x18]
ldr r0, [sp, #0x18]
cmp r0, #0
beq _021F38EA
ldr r3, [r5, r6]
ldr r1, [sp, #0x10]
add r0, r3, #0
add r0, #0xc
str r0, [sp]
ldr r2, [r3, #0x14]
add r0, r7, #0
lsl r2, r2, #0x18
lsr r2, r2, #0x18
add r3, #8
bl ov96_021F3AD8
_021F38EA:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
ldr r0, [sp, #0xc]
cmp r4, r0
blo _021F389E
_021F38F6:
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F3888
thumb_func_start ov96_021F38FC
ov96_021F38FC: ; 0x021F38FC
sub r0, #0x10
asr r2, r0, #4
lsr r2, r2, #0x1b
add r2, r0, r2
sub r1, #0x10
asr r0, r1, #4
lsr r0, r0, #0x1b
asr r3, r2, #5
add r0, r1, r0
asr r2, r0, #5
cmp r3, #0
blt _021F3918
cmp r2, #0
bge _021F391E
_021F3918:
mov r0, #0
mvn r0, r0
bx lr
_021F391E:
mov r1, #7
add r0, r2, #0
mul r0, r1
add r0, r3, r0
cmp r0, #0x22
ble _021F392E
add r0, r1, #0
sub r0, #8
_021F392E:
bx lr
thumb_func_end ov96_021F38FC
thumb_func_start ov96_021F3930
ov96_021F3930: ; 0x021F3930
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r2, #0
str r0, [sp]
str r1, [sp, #4]
add r6, r3, #0
mov r4, #0
ldr r7, [sp, #0x28]
cmp r5, #0
bge _021F394A
add sp, #8
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
_021F394A:
str r4, [r7]
ldr r0, [r6, #8]
ldrh r0, [r0]
cmp r0, #0
beq _021F3992
ldr r0, [r6, #0x10]
ldr r0, [r0]
cmp r0, #1
bne _021F3992
add r0, r1, #0
ldr r1, [sp, #0x20]
ldr r2, [sp, #0x24]
lsl r1, r1, #0xc
lsl r2, r2, #0xc
bl ov96_021F3A5C
cmp r0, #0
beq _021F3970
add r4, r4, #5
_021F3970:
lsl r1, r5, #0x18
ldr r0, [sp]
lsr r1, r1, #0x18
bl ov96_021F3AB0
cmp r0, #0
beq _021F3984
mov r0, #1
add r4, r4, #4
str r0, [r7]
_021F3984:
ldr r0, [sp]
add r1, r6, #0
add r2, r5, #0
bl ov96_021F39F0
add r4, r4, r0
b _021F39E8
_021F3992:
ldr r1, [sp, #0x20]
ldr r2, [sp, #0x24]
ldr r0, [sp, #4]
lsl r1, r1, #0xc
lsl r2, r2, #0xc
bl ov96_021F3A5C
cmp r0, #0
beq _021F39A6
add r4, r4, #5
_021F39A6:
lsl r1, r5, #0x18
ldr r0, [sp]
lsr r1, r1, #0x18
bl ov96_021F3AB0
cmp r0, #0
beq _021F39BA
mov r0, #1
add r4, r4, #4
str r0, [r7]
_021F39BA:
ldr r0, [sp]
add r1, r6, #0
add r2, r5, #0
bl ov96_021F39F0
cmp r0, #0
bne _021F39CA
add r4, r4, #2
_021F39CA:
ldr r1, [r6]
cmp r1, r5
bne _021F39D2
add r4, r4, #2
_021F39D2:
cmp r0, #0
beq _021F39D8
mov r4, #0
_021F39D8:
ldr r2, [r6, #0xc]
ldr r0, [sp, #4]
ldmia r2!, {r1, r2}
bl ov96_021F3A5C
cmp r0, #0
beq _021F39E8
add r4, r4, #4
_021F39E8:
add r0, r4, #0
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F3930
thumb_func_start ov96_021F39F0
ov96_021F39F0: ; 0x021F39F0
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
add r0, r1, #0
str r1, [sp]
ldr r1, [r0]
mov r0, #0
mvn r0, r0
str r2, [sp, #4]
cmp r1, r0
bne _021F3A0C
add sp, #0xc
mov r0, #0
pop {r4, r5, r6, r7, pc}
_021F3A0C:
ldr r0, [sp]
mov r4, #0
ldr r7, [r0, #0x14]
add r6, r4, #0
_021F3A14:
cmp r6, r7
beq _021F3A4C
ldr r1, [r5]
ldr r0, [sp, #4]
cmp r0, r1
bne _021F3A4C
ldr r0, [sp]
ldr r1, [r0, #4]
ldr r0, [r5, #4]
cmp r1, r0
bge _021F3A4A
add r0, r7, #0
mov r1, #3
bl _s32_div_f
str r0, [sp, #8]
ldr r0, [r5, #0x14]
mov r1, #3
bl _s32_div_f
ldr r1, [sp, #8]
cmp r1, r0
bne _021F3A46
sub r4, r4, #1
b _021F3A4C
_021F3A46:
sub r4, r4, #2
b _021F3A4C
_021F3A4A:
sub r4, r4, #1
_021F3A4C:
add r6, r6, #1
add r5, #0x20
cmp r6, #0xc
blt _021F3A14
add r0, r4, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F39F0
thumb_func_start ov96_021F3A5C
ov96_021F3A5C: ; 0x021F3A5C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
mov r4, #0
add r5, r0, #0
str r1, [sp, #0xc]
str r2, [sp, #0x10]
str r4, [sp, #0x14]
add r7, r4, #0
add r6, sp, #0
_021F3A6E:
ldr r0, [r5]
cmp r0, #0
ble _021F3AA8
ldrh r0, [r5, #4]
add r1, r6, #0
add r2, r6, #0
lsl r0, r0, #0xc
str r0, [sp]
ldrh r0, [r5, #6]
lsl r0, r0, #0xc
str r0, [sp, #4]
add r0, sp, #0xc
str r7, [sp, #8]
bl VEC_Subtract
add r0, r6, #0
bl VEC_Mag
ldr r1, [r5]
lsl r1, r1, #0xc
cmp r0, r1
bge _021F3AA0
add sp, #0x18
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021F3AA0:
add r4, r4, #1
add r5, #8
cmp r4, #4
blt _021F3A6E
_021F3AA8:
mov r0, #0
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F3A5C
thumb_func_start ov96_021F3AB0
ov96_021F3AB0: ; 0x021F3AB0
push {r4, r5}
mov r5, #0
mov r2, #0x4a
lsl r2, r2, #4
sub r3, r5, #1
_021F3ABA:
ldr r4, [r0, r2]
cmp r4, r3
beq _021F3AD2
cmp r1, r4
bne _021F3ACA
mov r0, #1
pop {r4, r5}
bx lr
_021F3ACA:
add r5, r5, #1
add r0, r0, #4
cmp r5, #4
blt _021F3ABA
_021F3AD2:
mov r0, #0
pop {r4, r5}
bx lr
thumb_func_end ov96_021F3AB0
thumb_func_start ov96_021F3AD8
ov96_021F3AD8: ; 0x021F3AD8
push {r3, r4, r5, r6}
mov r4, #0x4a
mov r6, #0
lsl r4, r4, #4
_021F3AE0:
ldr r5, [r0, r4]
cmp r2, r5
bne _021F3AF8
lsl r0, r6, #3
add r1, r1, r0
ldrh r0, [r1, #4]
str r0, [r3]
ldrh r1, [r1, #6]
ldr r0, [sp, #0x10]
str r1, [r0]
pop {r3, r4, r5, r6}
bx lr
_021F3AF8:
add r6, r6, #1
add r0, r0, #4
cmp r6, #4
blt _021F3AE0
pop {r3, r4, r5, r6}
bx lr
thumb_func_end ov96_021F3AD8
thumb_func_start ov96_021F3B04
ov96_021F3B04: ; 0x021F3B04
push {r3, r4}
sub r0, #0x10
asr r4, r0, #4
lsr r4, r4, #0x1b
add r4, r0, r4
asr r0, r4, #5
sub r1, #0x10
strh r0, [r2]
asr r0, r1, #4
lsr r0, r0, #0x1b
add r0, r1, r0
asr r0, r0, #5
strh r0, [r3]
mov r0, #0
ldrsh r1, [r2, r0]
cmp r1, #0
blt _021F3B2C
ldrsh r0, [r3, r0]
cmp r0, #0
bge _021F3B32
_021F3B2C:
mov r0, #0
pop {r3, r4}
bx lr
_021F3B32:
mov r0, #1
pop {r3, r4}
bx lr
thumb_func_end ov96_021F3B04
thumb_func_start ov96_021F3B38
ov96_021F3B38: ; 0x021F3B38
push {r4, r5, r6, r7, lr}
sub sp, #0x13c
add r6, r0, #0
add r0, sp, #0x10
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0
str r0, [sp]
add r7, r2, #0
str r0, [sp, #0xc]
mov ip, r1
ldr r0, [sp]
cmp r6, #0
bls _021F3BAE
_021F3B54:
add r2, r0, #1
mov r1, #0xc
mul r1, r2
add r2, sp, #4
lsl r4, r0, #2
mov r3, ip
ldr r3, [r3, r4]
add r2, r2, r1
str r3, [r2, #8]
mov r3, #0
str r3, [r2, #4]
add r4, r3, #0
add r3, sp, #4
str r4, [r3, r1]
add r1, r4, #0
cmp r0, #0
bls _021F3B9C
ldr r4, [r2, #8]
ldr r4, [r4, #0x18]
_021F3B7A:
ldr r3, [r3, #4]
ldr r5, [r3, #8]
ldr r5, [r5, #0x18]
cmp r5, r4
bge _021F3B92
ldr r4, [r3]
str r2, [r4, #4]
ldr r4, [r3]
str r4, [r2]
str r3, [r2, #4]
str r2, [r3]
b _021F3B9C
_021F3B92:
add r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
cmp r1, r0
blo _021F3B7A
_021F3B9C:
cmp r1, r0
bne _021F3BA4
str r2, [r3, #4]
str r3, [r2]
_021F3BA4:
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, r6
blo _021F3B54
_021F3BAE:
ldr r0, [sp, #8]
mov r2, #0
ldr r0, [r0, #8]
cmp r6, #0
ldr r1, [r0, #0x18]
add r0, sp, #4
bls _021F3BE0
_021F3BBC:
ldr r0, [r0, #4]
lsl r4, r2, #2
ldr r3, [r0, #8]
str r3, [r7, r4]
ldr r3, [r7, r4]
ldr r3, [r3, #0x18]
cmp r1, r3
bne _021F3BD6
ldr r3, [sp]
add r3, r3, #1
lsl r3, r3, #0x18
lsr r3, r3, #0x18
str r3, [sp]
_021F3BD6:
add r2, r2, #1
lsl r2, r2, #0x18
lsr r2, r2, #0x18
cmp r2, r6
blo _021F3BBC
_021F3BE0:
ldr r0, [sp]
cmp r0, #0
bne _021F3BEA
bl GF_AssertFail
_021F3BEA:
ldr r0, [sp]
add sp, #0x13c
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021F3B38
thumb_func_start ov96_021F3BF0
ov96_021F3BF0: ; 0x021F3BF0
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
mov r1, #0x5d
lsl r1, r1, #2
add r5, r0, #0
add r7, r2, #0
bl AllocFromHeap
mov r2, #0x5d
add r4, r0, #0
mov r1, #0
lsl r2, r2, #2
bl MI_CpuFill8
str r5, [r4]
str r6, [r4, #8]
add r0, r4, #0
str r7, [r4, #4]
bl ov96_021F4558
ldr r2, _021F3C34 ; =0x00000135
mov r0, #1
mov r1, #0x1b
add r3, r5, #0
bl NewMsgDataFromNarc
str r0, [r4, #0x5c]
add r0, r5, #0
bl MessageFormat_New
str r0, [r4, #0x60]
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_021F3C34: .word 0x00000135
thumb_func_end ov96_021F3BF0
thumb_func_start ov96_021F3C38
ov96_021F3C38: ; 0x021F3C38
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
mov r4, #0
add r5, r7, #0
_021F3C40:
add r0, r5, #0
add r0, #0x98
ldr r0, [r0]
bl FreeToHeap
add r0, r5, #0
add r0, #0x9c
ldr r0, [r0]
bl FreeToHeap
add r4, r4, #1
add r5, #8
cmp r4, #0xc
blt _021F3C40
mov r6, #0x55
mov r5, #0
add r4, r7, #0
lsl r6, r6, #2
_021F3C64:
ldr r0, [r4, r6]
bl FreeToHeap
add r5, r5, #1
add r4, r4, #4
cmp r5, #4
blt _021F3C64
mov r0, #0x59
lsl r0, r0, #2
ldr r0, [r7, r0]
bl FreeToHeap
mov r6, #0x5a
mov r5, #0
add r4, r7, #0
lsl r6, r6, #2
_021F3C84:
ldr r0, [r4, r6]
bl FreeToHeap
add r5, r5, #1
add r4, r4, #4
cmp r5, #2
blt _021F3C84
ldr r0, [r7, #0x60]
bl MessageFormat_Delete
ldr r0, [r7, #0x5c]
bl DestroyMsgData
add r4, r7, #0
mov r5, #0
add r4, #0xc
_021F3CA4:
add r0, r4, #0
bl RemoveWindow
add r5, r5, #1
add r4, #0x10
cmp r5, #5
blt _021F3CA4
add r0, r7, #0
bl FreeToHeap
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F3C38
thumb_func_start ov96_021F3CBC
ov96_021F3CBC: ; 0x021F3CBC
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
ldr r0, [r5]
mov r1, #0xd
str r0, [sp]
mov r0, #0xa7
mov r2, #0
add r3, sp, #0xc
bl GfGfxLoader_GetScrnData
ldr r3, [sp, #0xc]
add r4, r0, #0
add r2, r3, #0
ldr r0, [r5, #8]
ldr r3, [r3, #8]
mov r1, #5
add r2, #0xc
bl BG_LoadScreenTilemapData
mov r0, #0x20
str r0, [sp]
mov r0, #0x18
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r2, #0
ldr r0, [r5, #8]
mov r1, #5
add r3, r2, #0
bl BgTilemapRectChangePalette
ldr r0, [r5, #8]
mov r1, #5
bl ScheduleBgTilemapBufferTransfer
add r0, r4, #0
bl FreeToHeap
mov r1, #0x17
ldr r0, [r5]
add r3, r1, #0
add r3, #0xe9
str r0, [sp]
mov r0, #0xa7
mov r2, #0
add r3, r5, r3
bl GfGfxLoader_GetScrnData
mov r1, #0x5a
lsl r1, r1, #2
str r0, [r5, r1]
mov r1, #0x18
ldr r0, [r5]
add r3, r1, #0
add r3, #0xec
str r0, [sp]
mov r0, #0xa7
mov r2, #0
add r3, r5, r3
bl GfGfxLoader_GetScrnData
mov r1, #0x5b
lsl r1, r1, #2
str r0, [r5, r1]
sub r1, #0x6c
ldr r3, [r5, r1]
ldr r0, [r5, #8]
add r2, r3, #0
ldr r3, [r3, #8]
mov r1, #7
add r2, #0xc
bl BG_LoadScreenTilemapData
mov r0, #8
mov r1, #0
bl GfGfx_EngineBTogglePlanes
mov r1, #0x12
ldr r0, [r5]
add r3, r1, #0
add r3, #0xfa
str r0, [sp]
mov r0, #0xa7
mov r2, #0
add r3, r5, r3
bl GfGfxLoader_GetScrnData
mov r1, #0x55
lsl r1, r1, #2
str r0, [r5, r1]
mov r1, #0x13
ldr r0, [r5]
add r3, r1, #0
add r3, #0xfd
str r0, [sp]
mov r0, #0xa7
mov r2, #0
add r3, r5, r3
bl GfGfxLoader_GetScrnData
mov r1, #0x56
lsl r1, r1, #2
str r0, [r5, r1]
mov r1, #0x11
ldr r0, [r5]
add r3, r1, #0
add r3, #0xf7
str r0, [sp]
mov r0, #0xa7
mov r2, #0
add r3, r5, r3
bl GfGfxLoader_GetScrnData
mov r1, #0x57
lsl r1, r1, #2
str r0, [r5, r1]
ldr r0, [r5]
mov r1, #0x14
str r0, [sp]
mov r0, #0xa7
add r3, r0, #0
add r3, #0x6d
mov r2, #0
add r3, r5, r3
bl GfGfxLoader_GetScrnData
mov r1, #0x16
lsl r1, r1, #4
str r0, [r5, r1]
ldr r0, [r5]
mov r1, #0x10
str r0, [sp]
mov r0, #0xa7
add r3, r0, #0
add r3, #0x71
mov r2, #0
add r3, r5, r3
bl GfGfxLoader_GetScrnData
mov r1, #0x59
lsl r1, r1, #2
str r0, [r5, r1]
mov r0, #0x80
add r1, r0, #0
add r1, #0x8c
ldr r1, [r5, r1]
bl ov96_021F4FD8
mov r0, #0x80
add r1, r0, #0
add r1, #0x90
ldr r1, [r5, r1]
bl ov96_021F4FD8
mov r0, #0x80
add r1, r0, #0
add r1, #0x94
ldr r1, [r5, r1]
bl ov96_021F4FD8
mov r0, #0x80
add r1, r0, #0
add r1, #0x88
ldr r1, [r5, r1]
bl ov96_021F4FD8
mov r0, #0x80
add r1, r0, #0
add r1, #0x98
ldr r1, [r5, r1]
bl ov96_021F4FD8
mov r0, #0x43
lsl r0, r0, #2
ldr r3, [r5, r0]
ldr r0, [r5, #8]
add r2, r3, #0
ldr r3, [r3, #8]
mov r1, #6
add r2, #0xc
bl BG_LoadScreenTilemapData
add r0, r5, #0
ldr r1, [r5, #8]
add r0, #0x68
bl ov96_021F4EF8
mov r0, #0x20
str r0, [sp]
mov r0, #0x18
str r0, [sp, #4]
mov r0, #3
str r0, [sp, #8]
mov r2, #0
ldr r0, [r5, #8]
mov r1, #6
add r3, r2, #0
bl BgTilemapRectChangePalette
ldr r0, [r5, #8]
mov r1, #6
bl ScheduleBgTilemapBufferTransfer
add sp, #0x10
pop {r3, r4, r5, pc}
thumb_func_end ov96_021F3CBC
thumb_func_start ov96_021F3E58
ov96_021F3E58: ; 0x021F3E58
ldr r3, _021F3E5C ; =ov96_021F4484
bx r3
.balign 4, 0
_021F3E5C: .word ov96_021F4484
thumb_func_end ov96_021F3E58
thumb_func_start ov96_021F3E60
ov96_021F3E60: ; 0x021F3E60
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
ldr r0, _021F3EBC ; =ov96_0221BFF4
add r4, sp, #8
ldr r1, [r0, #8]
ldr r0, [r0, #0xc]
str r1, [sp, #8]
str r0, [sp, #0xc]
mov r6, #0
mov r7, #2
_021F3E76:
str r7, [sp]
ldr r3, [r4]
add r0, r5, #0
mov r1, #0x5d
mov r2, #9
bl ov96_021EB2BC
mov r0, #2
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r3, [r4]
add r0, r5, #0
mov r1, #0x5d
mov r2, #6
bl ov96_021EB2F4
ldr r3, [r4]
add r0, r5, #0
mov r1, #0x5d
mov r2, #0xa
bl ov96_021EB334
ldr r3, [r4]
add r0, r5, #0
mov r1, #0x5d
mov r2, #0xa
bl ov96_021EB36C
add r6, r6, #1
add r4, r4, #4
cmp r6, #2
blt _021F3E76
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F3EBC: .word ov96_0221BFF4
thumb_func_end ov96_021F3E60
thumb_func_start ov96_021F3EC0
ov96_021F3EC0: ; 0x021F3EC0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x30
str r0, [sp, #4]
ldr r0, _021F3F7C ; =ov96_0221BFF4
str r1, [sp, #8]
ldr r2, [r0, #0x10]
ldr r1, [r0, #0x14]
str r2, [sp, #0x1c]
str r1, [sp, #0x20]
ldr r1, [r0, #0x18]
ldr r0, [r0, #0x1c]
add r5, sp, #0x1c
add r4, sp, #0x14
str r1, [sp, #0x14]
str r0, [sp, #0x18]
mov r6, #0
mov r7, #3
_021F3EE2:
ldr r0, [r4]
add r1, r7, #0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
ldr r3, [r5]
ldr r0, [sp, #4]
lsl r3, r3, #0x18
mov r2, #2
lsr r3, r3, #0x18
bl ov96_021EB408
add r6, r6, #1
add r4, r4, #4
add r5, r5, #4
cmp r6, #2
blt _021F3EE2
mov r0, #0
ldr r4, [sp, #8]
str r0, [sp, #0xc]
add r7, sp, #0x14
add r6, sp, #0x1c
mov r5, #0x40
_021F3F10:
ldr r1, [r6]
ldr r2, [r7]
lsl r1, r1, #0x18
lsl r2, r2, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_021EB4F4
add r1, r4, #0
add r1, #0xf8
str r0, [r1]
add r0, r4, #0
add r0, #0xf8
ldr r0, [r0]
bl ov96_021EB5B8
mov r1, #2
str r0, [sp, #0x10]
bl Sprite_SetDrawPriority
mov r0, #0
str r0, [sp, #0x2c]
lsl r0, r5, #0xc
str r0, [sp, #0x24]
mov r0, #0x26
lsl r0, r0, #0x10
str r0, [sp, #0x28]
ldr r0, [sp, #0x10]
add r1, sp, #0x24
bl Sprite_SetMatrix
add r0, r4, #0
add r0, #0xf8
ldr r0, [r0]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
ldr r0, [sp, #0xc]
add r7, r7, #4
add r0, r0, #1
add r6, r6, #4
add r4, r4, #4
add r5, #0x80
str r0, [sp, #0xc]
cmp r0, #2
blt _021F3F10
ldr r0, [sp, #4]
ldr r1, [sp, #8]
bl ov96_021F440C
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F3F7C: .word ov96_0221BFF4
thumb_func_end ov96_021F3EC0
thumb_func_start ov96_021F3F80
ov96_021F3F80: ; 0x021F3F80
push {r4, r5, r6, r7, lr}
sub sp, #0x24
ldr r3, _021F4248 ; =ov96_0221BFF4
add r4, r1, #0
add r2, sp, #0x18
mov r1, #0
str r1, [r2]
str r1, [r2, #4]
str r1, [r2, #8]
ldrb r6, [r3, #4]
add r2, sp, #0x10
add r5, r0, #0
strb r6, [r2, #4]
ldrb r6, [r3, #5]
add r4, #0x68
strb r6, [r2, #5]
ldrb r6, [r3, #6]
strb r6, [r2, #6]
ldrb r6, [r3, #7]
strb r6, [r2, #7]
ldrb r6, [r3]
strb r6, [r2]
ldrb r6, [r3, #1]
strb r6, [r2, #1]
ldrb r6, [r3, #2]
strb r6, [r2, #2]
ldrb r3, [r3, #3]
strb r3, [r2, #3]
mov r2, #8
str r2, [sp]
mov r2, #2
mov r3, #0x69
bl ov96_021EB408
mov r0, #9
str r0, [sp]
add r0, r5, #0
mov r1, #0
mov r2, #2
mov r3, #0x69
bl ov96_021EB408
mov r0, #0xa
str r0, [sp]
add r0, r5, #0
mov r1, #1
mov r2, #2
mov r3, #0x69
bl ov96_021EB408
mov r6, #0
mov r7, #0xb
_021F3FE8:
add r0, r5, #0
mov r1, #0
mov r2, #2
mov r3, #0x69
str r7, [sp]
bl ov96_021EB408
add r0, r6, #1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
cmp r6, #2
blo _021F3FE8
mov r6, #0
mov r7, #0xc
_021F4004:
add r0, r5, #0
mov r1, #1
mov r2, #2
mov r3, #0x69
str r7, [sp]
bl ov96_021EB408
add r0, r6, #1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
cmp r6, #4
blo _021F4004
mov r6, #0
mov r7, #0xd
_021F4020:
add r0, r5, #0
mov r1, #1
mov r2, #2
mov r3, #0x69
str r7, [sp]
bl ov96_021EB408
add r0, r6, #1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
cmp r6, #4
blo _021F4020
add r0, r5, #0
mov r1, #0x69
mov r2, #8
bl ov96_021EB4F4
add r1, r4, #0
add r1, #0xb4
str r0, [r1]
add r0, r4, #0
add r0, #0xb4
ldr r0, [r0]
bl ov96_021EB5B8
add r6, r0, #0
mov r1, #4
bl Sprite_SetDrawPriority
add r0, r6, #0
mov r1, #0
bl Set2dSpriteAnimSeqNo
mov r0, #2
lsl r0, r0, #0x12
str r0, [sp, #0x18]
mov r0, #0x22
lsl r0, r0, #0x10
str r0, [sp, #0x1c]
add r0, r6, #0
add r1, sp, #0x18
bl Sprite_SetMatrix
add r0, r4, #0
add r0, #0xb4
mov r1, #1
ldr r0, [r0]
add r2, r1, #0
bl ov96_021EB52C
add r0, r5, #0
mov r1, #0x69
mov r2, #9
bl ov96_021EB4F4
add r1, r4, #0
add r1, #0xb8
str r0, [r1]
add r0, r4, #0
add r0, #0xb8
ldr r0, [r0]
bl ov96_021EB5B8
add r6, r0, #0
mov r1, #3
bl Sprite_SetDrawPriority
add r0, r6, #0
mov r1, #1
bl Set2dSpriteAnimSeqNo
mov r0, #0x26
lsl r0, r0, #0xe
str r0, [sp, #0x18]
mov r0, #0x22
lsl r0, r0, #0x10
str r0, [sp, #0x1c]
add r0, r6, #0
add r1, sp, #0x18
bl Sprite_SetMatrix
add r0, r4, #0
add r0, #0xb8
mov r1, #1
ldr r0, [r0]
add r2, r1, #0
bl ov96_021EB52C
add r0, r5, #0
mov r1, #0x69
mov r2, #0xa
bl ov96_021EB4F4
add r1, r4, #0
add r1, #0xc4
str r0, [r1]
add r0, r4, #0
add r0, #0xc4
ldr r0, [r0]
bl ov96_021EB5B8
add r6, r0, #0
mov r1, #5
bl Sprite_SetDrawPriority
add r0, r6, #0
mov r1, #0xd
bl Set2dSpriteAnimSeqNo
mov r0, #0
str r0, [sp, #0x18]
mov r0, #2
lsl r0, r0, #0x14
str r0, [sp, #0x1c]
add r0, r6, #0
add r1, sp, #0x18
bl Sprite_SetMatrix
add r0, r4, #0
add r0, #0xc4
ldr r0, [r0]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
mov r6, #0
_021F411C:
lsl r7, r6, #2
add r0, r5, #0
mov r1, #0x69
mov r2, #0xb
bl ov96_021EB4F4
add r1, r4, r7
add r1, #0xbc
str r0, [r1]
add r0, r4, r7
add r0, #0xbc
ldr r0, [r0]
bl ov96_021EB5B8
str r0, [sp, #4]
mov r1, #6
bl Sprite_SetDrawPriority
add r1, r6, #0
ldr r0, [sp, #4]
add r1, #0xb
bl Set2dSpriteAnimSeqNo
mov r0, #0xa0
mul r0, r6
add r0, #0x30
lsl r0, r0, #0xc
str r0, [sp, #0x18]
mov r0, #0x86
lsl r0, r0, #0xe
str r0, [sp, #0x1c]
ldr r0, [sp, #4]
add r1, sp, #0x18
bl Sprite_SetMatrix
add r0, r4, r7
add r0, #0xbc
mov r1, #1
ldr r0, [r0]
add r2, r1, #0
bl ov96_021EB52C
add r0, r6, #1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
cmp r6, #2
blo _021F411C
mov r6, #0
_021F417C:
lsl r7, r6, #2
add r0, r5, #0
mov r1, #0x69
mov r2, #0xc
bl ov96_021EB4F4
add r1, r4, r7
add r1, #0xc8
str r0, [r1]
add r0, r4, r7
add r0, #0xc8
ldr r0, [r0]
bl ov96_021EB5B8
str r0, [sp, #8]
mov r1, #8
bl Sprite_SetDrawPriority
ldr r0, [sp, #8]
mov r1, #0xe
bl Set2dSpriteAnimSeqNo
add r0, sp, #0x14
ldrb r0, [r0, r6]
lsl r0, r0, #0xc
str r0, [sp, #0x18]
add r0, sp, #0x10
ldrb r0, [r0, r6]
lsl r1, r0, #0xc
mov r0, #2
lsl r0, r0, #0x14
add r0, r1, r0
str r0, [sp, #0x1c]
ldr r0, [sp, #8]
add r1, sp, #0x18
bl Sprite_SetMatrix
add r0, r4, r7
add r0, #0xc8
mov r1, #1
ldr r0, [r0]
add r2, r1, #0
bl ov96_021EB52C
add r0, r6, #1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
cmp r6, #4
blo _021F417C
mov r6, #0
_021F41E0:
lsl r7, r6, #2
add r0, r5, #0
mov r1, #0x69
mov r2, #0xd
bl ov96_021EB4F4
add r1, r4, r7
add r1, #0xd8
str r0, [r1]
add r0, r4, r7
add r0, #0xd8
ldr r0, [r0]
bl ov96_021EB5B8
str r0, [sp, #0xc]
mov r1, #7
bl Sprite_SetDrawPriority
ldr r0, [sp, #0xc]
mov r1, #0x12
bl Set2dSpriteAnimSeqNo
add r0, sp, #0x14
ldrb r0, [r0, r6]
lsl r0, r0, #0xc
str r0, [sp, #0x18]
add r0, sp, #0x10
ldrb r0, [r0, r6]
lsl r1, r0, #0xc
mov r0, #2
lsl r0, r0, #0x14
add r0, r1, r0
str r0, [sp, #0x1c]
ldr r0, [sp, #0xc]
add r1, sp, #0x18
bl Sprite_SetMatrix
add r0, r4, r7
add r0, #0xd8
ldr r0, [r0]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
add r0, r6, #1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
cmp r6, #4
blo _021F41E0
add sp, #0x24
pop {r4, r5, r6, r7, pc}
nop
_021F4248: .word ov96_0221BFF4
thumb_func_end ov96_021F3F80
thumb_func_start ov96_021F424C
ov96_021F424C: ; 0x021F424C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r5, r0, #0
mov r4, #0
add r6, r5, #0
add r6, #0xc
add r7, r4, #0
_021F425A:
lsl r0, r4, #4
add r0, r6, r0
add r1, r7, #0
bl FillWindowPixelBuffer
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #5
blo _021F425A
ldr r0, [r5, #4]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x10]
ldr r0, [r5, #4]
ldr r1, [sp, #0x10]
bl ov96_021E5F34
ldr r1, [r5]
bl PlayerProfile_GetPlayerName_NewString
mov r1, #0
add r4, r0, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021F4360 ; =0x000F0E00
add r2, r4, #0
str r0, [sp, #8]
add r0, r5, #0
add r0, #0xc
add r3, r1, #0
str r1, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r4, #0
bl String_Delete
mov r0, #0x13
lsl r0, r0, #4
ldr r0, [r5, r0]
bl ov96_021EB5B8
ldr r1, [sp, #0x10]
add r1, #0xe
bl Set2dSpriteAnimSeqNo
ldr r0, [sp, #0x10]
mov r4, #0
add r1, r5, r0
mov r0, #0x17
lsl r0, r0, #4
strb r4, [r1, r0]
add r0, r5, #0
str r0, [sp, #0x14]
add r0, #0xc
mov r6, #1
str r0, [sp, #0x14]
_021F42D2:
ldr r0, [sp, #0x10]
cmp r4, r0
beq _021F4332
ldr r0, [r5, #4]
add r1, r4, #0
bl ov96_021E5F34
ldr r1, [r5]
bl PlayerProfile_GetPlayerName_NewString
add r7, r0, #0
mov r0, #0
str r0, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021F4360 ; =0x000F0E00
lsl r1, r6, #4
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
ldr r0, [sp, #0x14]
add r2, r7, #0
add r0, r0, r1
mov r1, #0
add r3, r1, #0
bl AddTextPrinterParameterizedWithColor
add r0, r7, #0
bl String_Delete
lsl r0, r6, #2
add r1, r5, r0
mov r0, #0x13
lsl r0, r0, #4
ldr r0, [r1, r0]
bl ov96_021EB5B8
add r1, r4, #0
add r1, #0xe
bl Set2dSpriteAnimSeqNo
mov r0, #0x17
add r1, r5, r4
lsl r0, r0, #4
strb r6, [r1, r0]
add r0, r6, #1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
_021F4332:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #4
blo _021F42D2
add r0, r5, #0
mov r1, #1
bl ov96_021F459C
mov r4, #0
add r5, #0xc
_021F4348:
lsl r0, r4, #4
add r0, r5, r0
bl CopyWindowToVram
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #5
blo _021F4348
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_021F4360: .word 0x000F0E00
thumb_func_end ov96_021F424C
thumb_func_start ov96_021F4364
ov96_021F4364: ; 0x021F4364
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r2, [r5, #0x64]
add r4, r1, #0
cmp r2, r4
beq _021F438E
str r4, [r5, #0x64]
bl ov96_021F459C
mov r0, #0x12
lsl r0, r0, #4
ldr r0, [r5, r0]
bl ov96_021EB5B8
add r1, r4, #0
bl Set2dSpriteAnimSeqNo
add r5, #0x4c
add r0, r5, #0
bl CopyWindowToVram
_021F438E:
pop {r3, r4, r5, pc}
thumb_func_end ov96_021F4364
thumb_func_start ov96_021F4390
ov96_021F4390: ; 0x021F4390
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
add r7, r1, #0
cmp r2, #4
bhi _021F43C0
add r0, r2, r2
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021F43A6: ; jump table
.short _021F43C0 - _021F43A6 - 2 ; case 0
.short _021F43B0 - _021F43A6 - 2 ; case 1
.short _021F43B4 - _021F43A6 - 2 ; case 2
.short _021F43B8 - _021F43A6 - 2 ; case 3
.short _021F43BC - _021F43A6 - 2 ; case 4
_021F43B0:
mov r5, #0x12
b _021F43C6
_021F43B4:
mov r5, #0x13
b _021F43C6
_021F43B8:
mov r5, #0x14
b _021F43C6
_021F43BC:
mov r5, #0x15
b _021F43C6
_021F43C0:
bl GF_AssertFail
mov r5, #0x12
_021F43C6:
mov r0, #5
lsl r0, r0, #6
add r4, r6, r0
add r1, r6, r7
add r0, #0x30
ldrb r0, [r1, r0]
mov r1, #1
add r2, r1, #0
lsl r6, r0, #2
ldr r0, [r4, r6]
bl ov96_021EB52C
ldr r0, [r4, r6]
bl ov96_021EB5B8
add r1, r5, #0
bl Set2dSpriteAnimSeqNo
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021F4390
thumb_func_start ov96_021F43EC
ov96_021F43EC: ; 0x021F43EC
mov r3, #0
add r2, r3, #0
_021F43F0:
add r1, r0, r3
add r1, #0x70
strb r2, [r1]
add r1, r3, #1
lsl r1, r1, #0x18
lsr r3, r1, #0x18
cmp r3, #0xc
blo _021F43F0
ldr r3, _021F4408 ; =ov96_021F4724
str r2, [r0, #0x6c]
add r0, #0x68
bx r3
.balign 4, 0
_021F4408: .word ov96_021F4724
thumb_func_end ov96_021F43EC
thumb_func_start ov96_021F440C
ov96_021F440C: ; 0x021F440C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r0, [sp]
ldr r0, _021F4480 ; =ov96_0221BFF4
add r6, r1, #0
ldr r1, [r0, #0x20]
ldr r0, [r0, #0x24]
str r1, [sp, #0x10]
str r0, [sp, #0x14]
mov r4, #0
_021F4420:
lsl r5, r4, #2
add r0, sp, #0x10
ldr r7, [r0, r5]
ldr r0, [sp]
add r1, r7, #0
mov r2, #0
bl ov96_021EB5EC
ldr r0, [r0]
add r1, r7, #0
str r0, [sp, #8]
ldr r0, [sp]
mov r2, #1
bl ov96_021EB5EC
ldr r0, [r0]
str r0, [sp, #4]
ldr r0, [sp, #8]
bl sub_0200AF00
add r7, r0, #0
ldr r0, [sp, #4]
add r1, r7, #0
bl sub_0200B0F8
str r0, [sp, #0xc]
add r0, r7, #0
mov r1, #2
bl NNS_G2dGetImageLocation
add r1, r6, r5
add r1, #0x88
str r0, [r1]
ldr r0, [sp, #0xc]
mov r1, #2
bl NNS_G2dGetImagePaletteLocation
add r1, r6, r5
add r1, #0x90
str r0, [r1]
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #2
blo _021F4420
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_021F4480: .word ov96_0221BFF4
thumb_func_end ov96_021F440C
thumb_func_start ov96_021F4484
ov96_021F4484: ; 0x021F4484
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x30
add r6, r0, #0
mov r4, #0
add r5, r6, #0
add r7, sp, #0x10
_021F4490:
add r0, r4, #0
mov r1, #3
bl _s32_div_f
str r0, [sp, #0xc]
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r2, r1, #0
ldr r0, [r6, #4]
ldr r1, [sp, #0xc]
add r3, sp, #0x10
bl ov96_021E6168
ldrb r0, [r7, #6]
mov r3, #2
str r0, [sp]
ldrh r0, [r7, #2]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
ldr r0, [sp, #0x1c]
str r0, [sp, #8]
ldrh r1, [r7]
ldrb r2, [r7, #7]
add r0, sp, #0x20
bl GetMonSpriteCharAndPlttNarcIdsEx
mov r0, #0
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldrh r0, [r7]
str r0, [sp, #8]
ldrh r0, [r7, #0x10]
ldrh r1, [r7, #0x12]
ldr r2, [r6]
ldr r3, [sp, #0x1c]
bl sub_0201457C
add r1, r5, #0
add r1, #0x98
str r0, [r1]
ldrh r0, [r7, #0x10]
ldrh r1, [r7, #0x14]
ldr r2, [r6]
bl sub_02014450
add r1, r5, #0
add r1, #0x9c
add r4, r4, #1
add r5, #8
str r0, [r1]
cmp r4, #0xc
blt _021F4490
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021F4484
thumb_func_start ov96_021F4504
ov96_021F4504: ; 0x021F4504
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
add r5, r0, #0
add r4, r2, #0
cmp r6, #2
blo _021F4514
bl GF_AssertFail
_021F4514:
cmp r4, #0xc
blo _021F451C
bl GF_AssertFail
_021F451C:
add r7, r5, #0
lsl r4, r4, #3
add r7, #0x30
mov r1, #0x32
ldr r0, [r7, r4]
lsl r1, r1, #6
bl DC_FlushRange
lsl r6, r6, #2
add r1, r5, r6
mov r2, #0x32
ldr r0, [r7, r4]
ldr r1, [r1, #0x20]
lsl r2, r2, #6
bl GXS_LoadOBJ
add r7, r5, #0
add r7, #0x34
ldr r0, [r7, r4]
mov r1, #0x20
bl DC_FlushRange
add r1, r5, r6
ldr r0, [r7, r4]
ldr r1, [r1, #0x28]
mov r2, #0x20
bl GXS_LoadOBJPltt
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F4504
thumb_func_start ov96_021F4558
ov96_021F4558: ; 0x021F4558
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r5, #0
ldr r7, _021F4598 ; =ov96_0221C028
mov r4, #0
add r6, #0xc
_021F4564:
lsl r1, r4, #4
lsl r2, r4, #3
ldr r0, [r5, #8]
add r1, r6, r1
add r2, r7, r2
bl AddWindow
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #5
blo _021F4564
mov r2, #0
str r2, [sp]
ldr r0, [r5, #8]
mov r1, #4
mov r3, #1
bl BG_FillCharDataRange
mov r1, #0x1e
ldr r2, [r5]
mov r0, #4
lsl r1, r1, #4
bl LoadFontPal0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F4598: .word ov96_0221C028
thumb_func_end ov96_021F4558
thumb_func_start ov96_021F459C
ov96_021F459C: ; 0x021F459C
push {r3, r4, r5, lr}
sub sp, #0x10
add r4, r0, #0
add r5, r1, #0
add r0, #0x4c
mov r1, #0
bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4, #0x60]
add r2, r5, #0
mov r3, #2
bl BufferIntegerAsString
ldr r0, [r4, #0x60]
ldr r1, [r4, #0x5c]
ldr r3, [r4]
mov r2, #0x98
bl ReadMsgData_ExpandPlaceholders
mov r1, #0
add r5, r0, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021F45F0 ; =0x000F0E00
add r4, #0x4c
str r0, [sp, #8]
add r0, r4, #0
add r2, r5, #0
add r3, r1, #0
str r1, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r5, #0
bl String_Delete
add sp, #0x10
pop {r3, r4, r5, pc}
.balign 4, 0
_021F45F0: .word 0x000F0E00
thumb_func_end ov96_021F459C
thumb_func_start ov96_021F45F4
ov96_021F45F4: ; 0x021F45F4
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r4, r5, #0
add r4, #0x68
add r6, r1, #0
add r0, r4, #0
add r1, r2, #0
bl ov96_021F46BC
lsl r0, r0, #0x18
lsr r7, r0, #0x18
cmp r6, #0
bne _021F461A
ldr r0, [r4, #4]
cmp r0, #0
beq _021F461A
add r0, r5, #0
bl ov96_021F43EC
_021F461A:
ldr r0, [r4]
cmp r0, #0
beq _021F4668
cmp r6, #0
beq _021F4646
ldr r0, [r4, #4]
cmp r0, #0
bne _021F4670
mov r1, #1
add r0, r4, #0
str r1, [r4, #4]
bl ov96_021F47F0
cmp r0, #1
beq _021F463C
bl GF_AssertFail
_021F463C:
ldr r1, [r5, #8]
add r0, r4, #0
bl ov96_021F480C
b _021F4670
_021F4646:
cmp r7, #0xc
beq _021F4670
add r0, r4, #0
mov r1, #2
bl ov96_021F47F0
cmp r0, #0
beq _021F4670
ldr r0, _021F4684 ; =0x0000089E
bl PlaySE
ldr r1, [r5, #8]
add r0, r4, #0
add r2, r7, #0
bl ov96_021F48A8
b _021F4670
_021F4668:
ldr r1, [r5, #8]
add r0, r4, #0
bl ov96_021F4A60
_021F4670:
ldr r1, [r4, #0x14]
cmp r1, #0
beq _021F467C
add r0, r5, #0
blx r1
pop {r3, r4, r5, r6, r7, pc}
_021F467C:
bl GF_AssertFail
pop {r3, r4, r5, r6, r7, pc}
nop
_021F4684: .word 0x0000089E
thumb_func_end ov96_021F45F4
thumb_func_start ov96_021F4688
ov96_021F4688: ; 0x021F4688
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5, #4]
add r6, r1, #0
add r4, r2, #0
bl ov96_021E5F24
cmp r4, r0
bne _021F46B2
mov r0, #0x15
lsl r0, r0, #4
ldrb r0, [r5, r0]
cmp r0, r6
beq _021F46B2
cmp r0, r6
blo _021F46AC
bl GF_AssertFail
_021F46AC:
mov r0, #0x15
lsl r0, r0, #4
strb r6, [r5, r0]
_021F46B2:
pop {r4, r5, r6, pc}
thumb_func_end ov96_021F4688
thumb_func_start ov96_021F46B4
ov96_021F46B4: ; 0x021F46B4
mov r1, #0x15
lsl r1, r1, #4
ldrb r0, [r0, r1]
bx lr
thumb_func_end ov96_021F46B4
thumb_func_start ov96_021F46BC
ov96_021F46BC: ; 0x021F46BC
push {r3, r4, r5, r6, r7}
sub sp, #0xc
mov r2, #0
add r3, sp, #0
add r4, r2, #0
mov r5, #1
_021F46C8:
ldrb r6, [r1, r2]
cmp r6, #0
beq _021F46DC
add r7, r0, r2
ldrb r6, [r7, #8]
cmp r6, #0
bne _021F46DC
strb r5, [r7, #8]
strb r5, [r3]
b _021F46DE
_021F46DC:
strb r4, [r3]
_021F46DE:
add r2, r2, #1
add r3, r3, #1
cmp r2, #0xc
blt _021F46C8
mov r0, #0
add r2, sp, #0
_021F46EA:
ldrb r1, [r2]
cmp r1, #0
bne _021F46FA
add r0, r0, #1
add r2, r2, #1
cmp r0, #0xc
blt _021F46EA
mov r0, #0xc
_021F46FA:
add sp, #0xc
pop {r3, r4, r5, r6, r7}
bx lr
thumb_func_end ov96_021F46BC
thumb_func_start ov96_021F4700
ov96_021F4700: ; 0x021F4700
ldr r0, [r0, #0x1c]
cmp r0, r1
bne _021F470A
mov r0, #0
bx lr
_021F470A:
cmp r1, #1
bne _021F4712
mov r0, #1
bx lr
_021F4712:
cmp r1, #2
bne _021F471E
cmp r0, #1
beq _021F471E
mov r0, #1
bx lr
_021F471E:
mov r0, #0
bx lr
.balign 4, 0
thumb_func_end ov96_021F4700
thumb_func_start ov96_021F4724
ov96_021F4724: ; 0x021F4724
push {r3, r4, r5, r6, r7, lr}
mov r4, #0
str r4, [r0]
str r0, [sp]
strh r4, [r0, #0x1a]
add r5, r0, #0
mov r6, #1
add r7, r4, #0
_021F4734:
add r0, r5, #0
add r0, #0x90
ldr r0, [r0]
add r1, r6, #0
add r2, r7, #0
bl ov96_021EB52C
add r4, r4, #1
add r5, r5, #4
cmp r4, #2
blt _021F4734
ldr r0, _021F4784 ; =0x04001050
mov r1, #0
strh r1, [r0]
ldr r0, [sp]
bl ov96_021F4790
mov r0, #8
mov r1, #0
bl GfGfx_EngineBTogglePlanes
mov r0, #1
mov r1, #0
bl GfGfx_EngineBTogglePlanes
ldr r0, [sp]
mov r1, #0
str r1, [r0, #0x14]
add r0, #0xea
strb r1, [r0]
ldr r0, [sp]
add r0, #0xea
str r0, [sp]
ldrb r0, [r0]
lsl r1, r0, #0x10
ldr r0, _021F4788 ; =0x01FF0000
and r1, r0
ldr r0, _021F478C ; =0x04001018
str r1, [r0]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F4784: .word 0x04001050
_021F4788: .word 0x01FF0000
_021F478C: .word 0x04001018
thumb_func_end ov96_021F4724
thumb_func_start ov96_021F4790
ov96_021F4790: ; 0x021F4790
push {r3, r4, r5, r6, r7, lr}
mov r4, #0
add r5, r0, #0
mov r6, #1
add r7, r4, #0
_021F479A:
lsl r0, r4, #2
add r0, r5, r0
add r0, #0xbc
ldr r0, [r0]
add r1, r6, #0
add r2, r7, #0
bl ov96_021EB52C
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #2
blo _021F479A
mov r4, #0
mov r7, #1
_021F47B8:
lsl r6, r4, #2
add r0, r5, r6
add r0, #0xc8
ldr r0, [r0]
add r1, r7, #0
mov r2, #0
bl ov96_021EB52C
add r0, r5, r6
add r0, #0xd8
ldr r0, [r0]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #4
blo _021F47B8
add r5, #0xc4
ldr r0, [r5]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F4790
thumb_func_start ov96_021F47F0
ov96_021F47F0: ; 0x021F47F0
push {r4, lr}
add r4, r0, #0
bl ov96_021F4700
cmp r0, #0
beq _021F4806
add r0, r4, #0
bl ov96_021F4724
mov r0, #1
pop {r4, pc}
_021F4806:
mov r0, #0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021F47F0
thumb_func_start ov96_021F480C
ov96_021F480C: ; 0x021F480C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
mov r0, #1
add r7, r1, #0
add r1, r0, #0
bl GfGfx_EngineBTogglePlanes
mov r4, #0
mov r6, #1
_021F4820:
lsl r0, r4, #2
add r0, r5, r0
add r0, #0xbc
ldr r0, [r0]
add r1, r6, #0
add r2, r6, #0
bl ov96_021EB52C
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #2
blo _021F4820
mov r4, #0
mov r6, #1
_021F483E:
lsl r0, r4, #2
add r0, r5, r0
add r0, #0xc8
ldr r0, [r0]
add r1, r6, #0
add r2, r6, #0
bl ov96_021EB52C
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #4
blo _021F483E
add r0, r5, #0
add r0, #0xa4
ldr r3, [r0]
add r0, r7, #0
add r2, r3, #0
ldr r3, [r3, #8]
mov r1, #6
add r2, #0xc
bl BG_LoadScreenTilemapData
add r0, r5, #0
add r1, r7, #0
bl ov96_021F4EF8
mov r0, #0x20
str r0, [sp]
mov r0, #0x18
str r0, [sp, #4]
mov r0, #3
mov r2, #0
str r0, [sp, #8]
add r0, r7, #0
mov r1, #6
add r3, r2, #0
bl BgTilemapRectChangePalette
add r0, r7, #0
mov r1, #6
bl ScheduleBgTilemapBufferTransfer
ldr r0, _021F48A4 ; =ov96_021F4A9C
str r0, [r5, #0x14]
mov r0, #1
str r0, [r5, #0x1c]
str r0, [r5]
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
_021F48A4: .word ov96_021F4A9C
thumb_func_end ov96_021F480C
thumb_func_start ov96_021F48A8
ov96_021F48A8: ; 0x021F48A8
push {r4, r5, lr}
sub sp, #0xc
add r4, r1, #0
add r5, r0, #0
add r1, r2, #0
bl ov96_021F4E5C
add r0, r5, #0
add r0, #0xac
ldr r3, [r0]
add r0, r4, #0
add r2, r3, #0
ldr r3, [r3, #8]
mov r1, #6
add r2, #0xc
bl BG_LoadScreenTilemapData
mov r0, #0x20
str r0, [sp]
str r0, [sp, #4]
mov r0, #3
mov r2, #0
str r0, [sp, #8]
add r0, r4, #0
mov r1, #6
add r3, r2, #0
bl BgTilemapRectChangePalette
add r0, r4, #0
mov r1, #6
bl ScheduleBgTilemapBufferTransfer
ldr r0, _021F48F8 ; =ov96_021F4AE0
str r0, [r5, #0x14]
mov r0, #2
str r0, [r5, #0x1c]
mov r0, #1
str r0, [r5]
add sp, #0xc
pop {r4, r5, pc}
.balign 4, 0
_021F48F8: .word ov96_021F4AE0
thumb_func_end ov96_021F48A8
thumb_func_start ov96_021F48FC
ov96_021F48FC: ; 0x021F48FC
push {r4, r5, lr}
sub sp, #0x1c
add r5, r0, #0
add r4, r1, #0
bl ov96_021F4CAC
mov r0, #0
mov r1, #1
lsl r1, r1, #0xc
str r1, [sp, #0xc]
str r0, [sp, #0x10]
str r0, [sp, #0x14]
str r1, [sp, #0x18]
bl OS_WaitVBlankIntr
mov r0, #0x60
str r0, [sp]
add r0, r4, #0
mov r1, #7
add r2, sp, #0xc
mov r3, #0x80
bl SetBgAffine
add r0, r5, #0
add r0, #0xa8
ldr r3, [r0]
add r0, r4, #0
add r2, r3, #0
ldr r3, [r3, #8]
mov r1, #6
add r2, #0xc
bl BG_LoadScreenTilemapData
mov r0, #0x20
str r0, [sp]
mov r0, #0x18
str r0, [sp, #4]
mov r0, #3
mov r2, #0
str r0, [sp, #8]
add r0, r4, #0
mov r1, #6
add r3, r2, #0
bl BgTilemapRectChangePalette
add r0, r4, #0
mov r1, #6
bl ScheduleBgTilemapBufferTransfer
add r0, r5, #0
add r0, #0x9c
ldr r3, [r0]
add r0, r4, #0
add r2, r3, #0
ldr r3, [r3, #8]
mov r1, #7
add r2, #0xc
bl BG_LoadScreenTilemapData
add r0, r4, #0
mov r1, #7
bl ScheduleBgTilemapBufferTransfer
ldr r0, _021F498C ; =ov96_021F4B34
str r0, [r5, #0x14]
mov r0, #3
str r0, [r5, #0x1c]
mov r0, #1
str r0, [r5]
add sp, #0x1c
pop {r4, r5, pc}
nop
_021F498C: .word ov96_021F4B34
thumb_func_end ov96_021F48FC
thumb_func_start ov96_021F4990
ov96_021F4990: ; 0x021F4990
push {r3, r4, r5, lr}
sub sp, #0x28
add r5, r0, #0
add r4, r1, #0
add r1, sp, #0x1c
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
mov r0, #0xe
lsl r0, r0, #0xe
str r0, [sp, #0x1c]
mov r0, #0x29
lsl r0, r0, #0x10
str r0, [sp, #0x20]
add r0, r5, #0
add r0, #0xc4
ldr r0, [r0]
bl ov96_021EB5B8
add r1, sp, #0x1c
bl Sprite_SetMatrix
add r3, r5, #0
add r2, r5, #0
add r3, #0xa8
add r2, #0xa0
ldr r3, [r3]
ldr r2, [r2]
ldr r3, [r3, #8]
add r0, r4, #0
mov r1, #6
add r2, #0xc
bl BG_LoadScreenTilemapData
mov r0, #0x20
str r0, [sp]
mov r0, #0x18
str r0, [sp, #4]
mov r0, #3
mov r2, #0
str r0, [sp, #8]
add r0, r4, #0
mov r1, #6
add r3, r2, #0
bl BgTilemapRectChangePalette
add r0, r4, #0
mov r1, #6
bl ScheduleBgTilemapBufferTransfer
add r0, r5, #0
add r0, #0x98
ldr r3, [r0]
add r0, r4, #0
add r2, r3, #0
ldr r3, [r3, #8]
mov r1, #7
add r2, #0xc
bl BG_LoadScreenTilemapData
add r0, r4, #0
mov r1, #7
bl ScheduleBgTilemapBufferTransfer
ldr r1, _021F4A54 ; =0x3CCCCCCD
ldr r0, _021F4A58 ; =0x45800000
bl _fmul
bl _ffix
mov r1, #0
str r0, [sp, #0xc]
str r1, [sp, #0x10]
str r1, [sp, #0x14]
str r0, [sp, #0x18]
bl OS_WaitVBlankIntr
mov r0, #0x60
str r0, [sp]
add r0, r4, #0
mov r1, #7
add r2, sp, #0xc
mov r3, #0x80
bl SetBgAffine
mov r0, #8
mov r1, #1
bl GfGfx_EngineBTogglePlanes
ldr r0, _021F4A5C ; =ov96_021F4BB4
str r0, [r5, #0x14]
mov r0, #4
str r0, [r5, #0x1c]
mov r0, #1
str r0, [r5]
add sp, #0x28
pop {r3, r4, r5, pc}
.balign 4, 0
_021F4A54: .word 0x3CCCCCCD
_021F4A58: .word 0x45800000
_021F4A5C: .word ov96_021F4BB4
thumb_func_end ov96_021F4990
thumb_func_start ov96_021F4A60
ov96_021F4A60: ; 0x021F4A60
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
bl ov96_021F4724
ldrh r0, [r5, #0x18]
lsl r1, r0, #2
ldr r0, _021F4A98 ; =ov96_0221DC04
ldr r0, [r0, r1]
cmp r0, #3
bne _021F4A80
add r0, r5, #0
add r1, r4, #0
bl ov96_021F48FC
b _021F4A88
_021F4A80:
add r0, r5, #0
add r1, r4, #0
bl ov96_021F4990
_021F4A88:
ldrh r0, [r5, #0x18]
mov r1, #3
add r0, r0, #1
bl _s32_div_f
strh r1, [r5, #0x18]
pop {r3, r4, r5, pc}
nop
_021F4A98: .word ov96_0221DC04
thumb_func_end ov96_021F4A60
thumb_func_start ov96_021F4A9C
ov96_021F4A9C: ; 0x021F4A9C
push {r3, r4, lr}
sub sp, #0xc
add r4, r0, #0
ldr r0, _021F4ADC ; =0x00000151
ldrb r1, [r4, r0]
sub r0, r0, #1
ldrb r0, [r4, r0]
cmp r1, r0
beq _021F4AD6
add r0, r4, #0
ldr r1, [r4, #8]
add r0, #0x68
bl ov96_021F4EF8
mov r0, #0xc
str r0, [sp]
mov r0, #8
str r0, [sp, #4]
mov r2, #3
str r2, [sp, #8]
ldr r0, [r4, #8]
mov r1, #6
mov r3, #7
bl BgTilemapRectChangePalette
ldr r0, [r4, #8]
mov r1, #6
bl ScheduleBgTilemapBufferTransfer
_021F4AD6:
add sp, #0xc
pop {r3, r4, pc}
nop
_021F4ADC: .word 0x00000151
thumb_func_end ov96_021F4A9C
thumb_func_start ov96_021F4AE0
ov96_021F4AE0: ; 0x021F4AE0
push {r4, lr}
add r4, r0, #0
add r4, #0x68
ldrh r0, [r4, #0x1a]
add r0, r0, #1
strh r0, [r4, #0x1a]
ldrh r0, [r4, #0x1a]
cmp r0, #0x46
bls _021F4AFA
add r0, r4, #0
bl ov96_021F4724
pop {r4, pc}
_021F4AFA:
add r2, r4, #0
add r2, #0x90
lsl r0, r0, #0x18
ldr r1, _021F4B28 ; =ov96_0221C01C
ldr r2, [r2]
lsr r0, r0, #0x18
bl ov96_021F4E9C
add r0, r4, #0
add r0, #0xea
ldrb r1, [r0]
add r0, r4, #0
add r0, #0xea
add r1, #0x20
add r4, #0xea
strb r1, [r0]
ldrb r0, [r4]
lsl r1, r0, #0x10
ldr r0, _021F4B2C ; =0x01FF0000
and r1, r0
ldr r0, _021F4B30 ; =0x04001018
str r1, [r0]
pop {r4, pc}
.balign 4, 0
_021F4B28: .word ov96_0221C01C
_021F4B2C: .word 0x01FF0000
_021F4B30: .word 0x04001018
thumb_func_end ov96_021F4AE0
thumb_func_start ov96_021F4B34
ov96_021F4B34: ; 0x021F4B34
push {r3, r4, r5, lr}
add r4, r0, #0
add r4, #0x68
ldrh r0, [r4, #0x1a]
add r0, r0, #1
strh r0, [r4, #0x1a]
ldrh r0, [r4, #0x1a]
cmp r0, #0x32
bls _021F4B4E
add r0, r4, #0
bl ov96_021F4724
pop {r3, r4, r5, pc}
_021F4B4E:
cmp r0, #5
bne _021F4B5C
mov r0, #8
mov r1, #1
bl GfGfx_EngineBTogglePlanes
b _021F4B82
_021F4B5C:
cmp r0, #0xf
bls _021F4B82
sub r0, #0xf
cmp r0, #4
bgt _021F4B82
lsl r1, r0, #4
asr r0, r1, #1
lsr r0, r0, #0x1e
add r0, r1, r0
lsl r0, r0, #0xe
lsr r5, r0, #0x10
mov r3, #0x10
ldr r0, _021F4BA8 ; =0x04001050
mov r1, #8
mov r2, #0x34
sub r3, r3, r5
str r5, [sp]
bl G2x_SetBlendAlpha_
_021F4B82:
ldrh r0, [r4, #0x1a]
add r2, r4, #0
add r2, #0x90
lsl r0, r0, #0x18
ldr r1, _021F4BAC ; =ov96_0221C050
ldr r2, [r2]
lsr r0, r0, #0x18
bl ov96_021F4DAC
ldrh r0, [r4, #0x1a]
add r4, #0x94
ldr r1, _021F4BB0 ; =ov96_0221C080
lsl r0, r0, #0x18
ldr r2, [r4]
lsr r0, r0, #0x18
bl ov96_021F4DAC
pop {r3, r4, r5, pc}
nop
_021F4BA8: .word 0x04001050
_021F4BAC: .word ov96_0221C050
_021F4BB0: .word ov96_0221C080
thumb_func_end ov96_021F4B34
thumb_func_start ov96_021F4BB4
ov96_021F4BB4: ; 0x021F4BB4
push {r3, r4, r5, lr}
sub sp, #0x20
add r5, r0, #0
add r4, r5, #0
add r4, #0x68
ldrh r0, [r4, #0x1a]
add r0, r0, #1
strh r0, [r4, #0x1a]
ldrh r0, [r4, #0x1a]
cmp r0, #0x50
bls _021F4BD4
add r0, r4, #0
bl ov96_021F4724
add sp, #0x20
pop {r3, r4, r5, pc}
_021F4BD4:
cmp r0, #0x29
bne _021F4BE8
add r0, r4, #0
add r0, #0xc4
mov r1, #1
ldr r0, [r0]
add r2, r1, #0
bl ov96_021EB52C
b _021F4BFA
_021F4BE8:
cmp r0, #0x3d
bne _021F4BFA
add r0, r4, #0
add r0, #0xc4
ldr r0, [r0]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
_021F4BFA:
ldrh r0, [r4, #0x1a]
cmp r0, #0x28
bhi _021F4C38
bl _ffltu
ldr r1, _021F4CA0 ; =0x42200000
bl _fdiv
add r1, r0, #0
ldr r0, _021F4CA4 ; =0x45800000
bl _fmul
bl _ffix
mov r1, #0
str r0, [sp, #0x10]
str r1, [sp, #0x14]
str r1, [sp, #0x18]
str r0, [sp, #0x1c]
bl OS_WaitVBlankIntr
mov r0, #0x60
str r0, [sp]
ldr r0, [r5, #8]
mov r1, #7
add r2, sp, #0x10
mov r3, #0x80
bl SetBgAffine
add sp, #0x20
pop {r3, r4, r5, pc}
_021F4C38:
bls _021F4C6E
cmp r0, #0x3c
bhi _021F4C6E
mov r1, #0
str r1, [sp, #0xc]
sub r0, #0x28
mov r1, #0x90
mul r1, r0
add r0, r1, #0
mov r1, #0x14
bl _s32_div_f
add r0, #0x38
lsl r0, r0, #0xc
str r0, [sp, #4]
mov r0, #0x29
lsl r0, r0, #0x10
add r4, #0xc4
str r0, [sp, #8]
ldr r0, [r4]
bl ov96_021EB5B8
add r1, sp, #4
bl Sprite_SetMatrix
add sp, #0x20
pop {r3, r4, r5, pc}
_021F4C6E:
add r0, r4, #0
add r0, #0xc4
ldr r0, [r0]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
ldrh r0, [r4, #0x1a]
mov r1, #0x14
sub r0, #0x3c
lsl r0, r0, #4
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
mov r3, #0x10
ldr r0, _021F4CA8 ; =0x04001050
mov r1, #8
mov r2, #0x24
sub r3, r3, r4
str r4, [sp]
bl G2x_SetBlendAlpha_
add sp, #0x20
pop {r3, r4, r5, pc}
.balign 4, 0
_021F4CA0: .word 0x42200000
_021F4CA4: .word 0x45800000
_021F4CA8: .word 0x04001050
thumb_func_end ov96_021F4BB4
thumb_func_start ov96_021F4CAC
ov96_021F4CAC: ; 0x021F4CAC
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r7, r0, #0
bl LCRandom
lsr r2, r0, #0x1f
lsl r1, r0, #0x1e
sub r1, r1, r2
mov r0, #0x1e
ror r1, r0
add r5, r2, r1
mov r4, #0
_021F4CC4:
bl LCRandom
lsr r2, r0, #0x1f
lsl r1, r0, #0x1e
sub r1, r1, r2
mov r0, #0x1e
ror r1, r0
add r6, r2, r1
cmp r5, r6
bne _021F4CE2
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #0xa
blo _021F4CC4
_021F4CE2:
cmp r4, #0xa
bne _021F4CF4
add r0, r5, #1
lsr r2, r0, #0x1f
lsl r1, r0, #0x1e
sub r1, r1, r2
mov r0, #0x1e
ror r1, r0
add r6, r2, r1
_021F4CF4:
bl LCRandom
mov r1, #3
bl _s32_div_f
lsl r0, r5, #1
add r0, r5, r0
add r5, r0, r1
bl LCRandom
mov r1, #3
bl _s32_div_f
lsl r0, r6, #1
add r0, r6, r0
add r4, r0, r1
lsl r2, r5, #0x18
add r0, r7, #0
mov r1, #0
lsr r2, r2, #0x18
bl ov96_021F4504
lsl r2, r4, #0x18
add r0, r7, #0
mov r1, #1
lsr r2, r2, #0x18
bl ov96_021F4504
add r0, r7, #0
add r0, #0x90
ldr r0, [r0]
bl ov96_021EB5B8
add r4, sp, #0
ldr r5, _021F4DA4 ; =ov96_0221C050
add r3, r0, #0
ldmia r5!, {r0, r1}
add r2, r4, #0
stmia r4!, {r0, r1}
ldr r0, [r5]
str r0, [r4]
mov r0, #2
ldr r1, [sp, #4]
lsl r0, r0, #0x14
add r0, r1, r0
str r0, [sp, #4]
add r0, r3, #0
add r1, r2, #0
bl Sprite_SetMatrix
add r0, r7, #0
add r0, #0x94
ldr r0, [r0]
bl ov96_021EB5B8
add r4, sp, #0
ldr r5, _021F4DA8 ; =ov96_0221C080
add r3, r0, #0
ldmia r5!, {r0, r1}
add r2, r4, #0
stmia r4!, {r0, r1}
ldr r0, [r5]
str r0, [r4]
mov r0, #2
ldr r1, [sp, #4]
lsl r0, r0, #0x14
add r0, r1, r0
str r0, [sp, #4]
add r0, r3, #0
add r1, r2, #0
bl Sprite_SetMatrix
add r0, r7, #0
add r0, #0x90
mov r1, #1
ldr r0, [r0]
add r2, r1, #0
bl ov96_021EB52C
add r7, #0x94
mov r1, #1
ldr r0, [r7]
add r2, r1, #0
bl ov96_021EB52C
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
_021F4DA4: .word ov96_0221C050
_021F4DA8: .word ov96_0221C080
thumb_func_end ov96_021F4CAC
thumb_func_start ov96_021F4DAC
ov96_021F4DAC: ; 0x021F4DAC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
add r4, r1, #0
str r2, [sp]
cmp r5, #5
bhi _021F4DE0
ldr r7, [r4]
ldr r0, [r4, #0xc]
ldr r6, [r4, #4]
sub r1, r0, r7
add r0, r1, #0
mul r0, r5
mov r1, #5
bl _s32_div_f
add r7, r7, r0
ldr r0, [r4, #0x10]
sub r1, r0, r6
add r0, r1, #0
mul r0, r5
mov r1, #5
bl _s32_div_f
add r4, r6, r0
b _021F4E3C
_021F4DE0:
bls _021F4E12
cmp r5, #0x2d
bhi _021F4E12
sub r0, r5, #5
lsl r0, r0, #0x18
lsr r5, r0, #0x18
ldr r7, [r4, #0xc]
ldr r0, [r4, #0x18]
ldr r6, [r4, #0x10]
sub r1, r0, r7
add r0, r1, #0
mul r0, r5
mov r1, #0x28
bl _s32_div_f
add r7, r7, r0
ldr r0, [r4, #0x1c]
sub r1, r0, r6
add r0, r1, #0
mul r0, r5
mov r1, #0x28
bl _s32_div_f
add r4, r6, r0
b _021F4E3C
_021F4E12:
sub r5, #0x2d
lsl r0, r5, #0x18
lsr r5, r0, #0x18
ldr r7, [r4, #0x18]
ldr r0, [r4, #0x24]
ldr r6, [r4, #0x1c]
sub r1, r0, r7
add r0, r1, #0
mul r0, r5
mov r1, #5
bl _s32_div_f
add r7, r7, r0
ldr r0, [r4, #0x28]
sub r1, r0, r6
add r0, r1, #0
mul r0, r5
mov r1, #5
bl _s32_div_f
add r4, r6, r0
_021F4E3C:
ldr r0, [sp]
bl ov96_021EB5B8
mov r1, #2
lsl r1, r1, #0x14
add r1, r4, r1
str r1, [sp, #8]
mov r1, #0
str r1, [sp, #0xc]
add r1, sp, #4
str r7, [sp, #4]
bl Sprite_SetMatrix
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F4DAC
thumb_func_start ov96_021F4E5C
ov96_021F4E5C: ; 0x021F4E5C
push {r3, r4, lr}
sub sp, #0xc
add r2, r1, #0
add r4, r0, #0
mov r1, #0
bl ov96_021F4504
add r0, r4, #0
add r0, #0x90
ldr r0, [r0]
bl ov96_021EB5B8
mov r1, #2
lsl r1, r1, #0x12
str r1, [sp]
mov r1, #0x76
lsl r1, r1, #0xe
str r1, [sp, #4]
mov r1, #0
str r1, [sp, #8]
add r1, sp, #0
bl Sprite_SetMatrix
add r4, #0x90
mov r1, #1
ldr r0, [r4]
add r2, r1, #0
bl ov96_021EB52C
add sp, #0xc
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov96_021F4E5C
thumb_func_start ov96_021F4E9C
ov96_021F4E9C: ; 0x021F4E9C
push {r4, r5, lr}
sub sp, #0xc
add r4, r2, #0
cmp r0, #0xf
bhi _021F4EB8
ldr r5, [r1]
ldr r1, [r1, #4]
sub r1, r1, r5
mul r0, r1
mov r1, #0xf
bl _s32_div_f
add r5, r5, r0
b _021F4ED8
_021F4EB8:
bls _021F4EC2
cmp r0, #0x3c
bhi _021F4EC2
ldr r5, [r1, #4]
b _021F4ED8
_021F4EC2:
ldr r5, [r1, #4]
ldr r1, [r1, #8]
sub r0, #0x3c
lsl r0, r0, #0x18
sub r1, r1, r5
lsr r0, r0, #0x18
mul r0, r1
mov r1, #0xa
bl _s32_div_f
add r5, r5, r0
_021F4ED8:
add r0, r4, #0
bl ov96_021EB5B8
mov r1, #2
lsl r1, r1, #0x12
str r1, [sp]
lsl r1, r1, #2
add r1, r5, r1
str r1, [sp, #4]
mov r1, #0
str r1, [sp, #8]
add r1, sp, #0
bl Sprite_SetMatrix
add sp, #0xc
pop {r4, r5, pc}
thumb_func_end ov96_021F4E9C
thumb_func_start ov96_021F4EF8
ov96_021F4EF8: ; 0x021F4EF8
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r5, r0, #0
add r0, #0xe8
ldrb r7, [r0]
add r6, r1, #0
mov r1, #0x64
add r0, r7, #0
bl _s32_div_f
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #3]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0]
add r0, r7, #0
mov r1, #0xa
bl _s32_div_f
mov r1, #0xa
mul r1, r4
sub r0, r0, r1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #4]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0, #1]
add r0, r7, #0
mov r1, #0xa
bl _s32_div_f
lsl r0, r1, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #5]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0, #2]
mov r4, #0
mov r7, #4
_021F4F86:
str r7, [sp]
mov r0, #8
str r0, [sp, #4]
add r0, r5, #0
add r0, #0xb0
ldr r0, [r0]
lsl r2, r4, #2
add r0, #0xc
str r0, [sp, #8]
add r0, sp, #0x1c
add r0, #3
ldrb r0, [r0, r4]
add r2, r2, #3
lsl r2, r2, #0x18
str r0, [sp, #0xc]
add r0, sp, #0x1c
ldrb r0, [r0, r4]
mov r1, #6
lsr r2, r2, #0x18
str r0, [sp, #0x10]
mov r0, #0x14
str r0, [sp, #0x14]
mov r0, #0x10
str r0, [sp, #0x18]
add r0, r6, #0
mov r3, #7
bl CopyRectToBgTilemapRect
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _021F4F86
add r0, r5, #0
add r0, #0xe8
ldrb r0, [r0]
add r5, #0xe9
strb r0, [r5]
add sp, #0x24
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F4EF8
thumb_func_start ov96_021F4FD8
ov96_021F4FD8: ; 0x021F4FD8
push {r3, r4, r5, r6}
add r5, r0, #0
ldr r0, [r1, #8]
add r3, r1, #0
lsl r0, r0, #0xf
lsr r4, r0, #0x10
add r3, #0xc
mov r2, #0
cmp r4, #0
ble _021F5010
ldr r6, _021F5014 ; =0x00000FFF
_021F4FEE:
ldrh r0, [r3]
add r2, r2, #1
add r1, r0, #0
and r1, r6
lsl r1, r1, #0x10
lsr r1, r1, #0x10
sub r0, r0, r1
add r1, r1, r5
lsl r0, r0, #0x18
lsl r1, r1, #0x10
lsr r0, r0, #0x18
lsr r1, r1, #0x10
add r0, r0, r1
strh r0, [r3]
add r3, r3, #2
cmp r2, r4
blt _021F4FEE
_021F5010:
pop {r3, r4, r5, r6}
bx lr
.balign 4, 0
_021F5014: .word 0x00000FFF
thumb_func_end ov96_021F4FD8
thumb_func_start ov96_021F5018
ov96_021F5018: ; 0x021F5018
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x120
str r0, [sp, #0x14]
bl ov96_021E5DC4
add r4, r0, #0
ldr r0, [sp, #0x14]
bl ov96_021E5DD4
cmp r0, #6
bls _021F5030
b _021F54AE
_021F5030:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021F503C: ; jump table
.short _021F504A - _021F503C - 2 ; case 0
.short _021F5128 - _021F503C - 2 ; case 1
.short _021F516A - _021F503C - 2 ; case 2
.short _021F51CA - _021F503C - 2 ; case 3
.short _021F522C - _021F503C - 2 ; case 4
.short _021F5374 - _021F503C - 2 ; case 5
.short _021F54A2 - _021F503C - 2 ; case 6
_021F504A:
mov r2, #5
mov r0, #0x5c
mov r1, #0x8f
lsl r2, r2, #0x10
bl CreateHeap
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
bl GfGfx_DisableEngineAPlanes
bl GfGfx_DisableEngineBPlanes
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _021F53C0 ; =0xFFFFE0FF
and r1, r0
str r1, [r2]
ldr r2, _021F53C4 ; =0x04001000
ldr r1, [r2]
and r0, r1
str r0, [r2]
bl ov96_021F5630
ldr r0, [sp, #0x14]
ldr r1, _021F53C8 ; =0x00001004
bl ov96_021E5D94
ldr r2, _021F53C8 ; =0x00001004
mov r1, #0
add r4, r0, #0
bl MI_CpuFill8
mov r0, #0x8f
bl BgConfig_Alloc
str r0, [r4]
ldr r0, [sp, #0x14]
mov r1, #8
bl ov96_021E6670
mov r0, #0xd5
str r0, [sp, #0xcc]
mov r0, #1
lsl r0, r0, #0x12
str r0, [sp, #0xd0]
lsr r0, r0, #4
str r0, [sp, #0xd4]
ldr r0, [sp, #0x14]
bl PokeathlonOvy_GetHeapID
str r0, [sp, #0xd8]
ldr r3, _021F53CC ; =0x00300010
add r0, sp, #0xcc
mov r1, #0xf
mov r2, #0x8f
str r3, [sp]
bl ov96_021E92B0
bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7e
str r1, [sp, #4]
str r0, [sp, #8]
mov r3, #0x20
str r3, [sp, #0xc]
mov r2, #0x8f
str r2, [sp, #0x10]
add r2, r0, #0
bl OamManager_Create
mov r0, #0x8f
str r0, [r4, #0x54]
ldr r1, [r4, #0x54]
mov r0, #4
bl FontID_Alloc
ldr r0, [r4]
bl ov96_021F584C
add r0, r4, #0
bl ov96_021F6138
ldr r0, _021F53D0 ; =gSystem + 0x60
mov r1, #1
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
ldr r1, [r4, #0x54]
mov r0, #0xc
bl GF_CreateVramTransferManager
ldr r1, [r4, #0x54]
mov r0, #0xc
bl sub_02020654
mov r1, #1
lsl r1, r1, #0xc
str r0, [r4, r1]
ldr r0, [sp, #0x14]
bl ov96_021E5DEC
b _021F54AE
_021F5128:
ldr r0, [r4, #0x54]
bl ov96_021F74A4
add r1, r4, #0
add r1, #0x8c
str r0, [r1]
ldr r0, [sp, #0x14]
bl ov96_021E5D34
add r5, r0, #0
ldr r0, [sp, #0x14]
bl ov96_021E5EE8
add r6, r0, #0
ldr r0, [sp, #0x14]
bl ov96_021E5F54
add r3, r0, #0
ldr r0, [sp, #0x14]
mov r1, #4
str r0, [sp]
ldr r0, [r4, #0x54]
sub r1, r1, r5
add r2, r6, #0
bl ov96_021F7684
mov r1, #0x4e
lsl r1, r1, #2
str r0, [r4, r1]
ldr r0, [sp, #0x14]
bl ov96_021E5DEC
b _021F54AE
_021F516A:
ldr r5, _021F53D4 ; =ov96_0221C0B8
add r3, sp, #0xc0
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r5]
add r1, r2, #0
str r0, [r3]
ldr r0, [r4, #0x54]
bl ov96_021EB180
mov r1, #0
str r0, [r4, #0x60]
str r1, [sp]
mov r2, #3
ldr r0, [r4, #0x60]
lsl r2, r2, #0x12
add r3, r1, #0
bl ov96_021EB5C8
ldr r0, [r4, #0x60]
bl ov96_021EB5E8
str r0, [sp]
ldr r0, [r4, #0x54]
mov r1, #3
mov r2, #0xa
mov r3, #0
bl ov96_021EA854
mov r1, #0x63
lsl r1, r1, #2
str r0, [r4, r1]
ldr r0, [r4, #0x60]
mov r1, #0
mov r2, #0x65
bl ov96_021EB29C
ldr r0, [r4, #0x60]
bl ov96_021F6C18
ldr r0, [r4, #0x60]
bl ov96_021EB3A4
ldr r0, [sp, #0x14]
bl ov96_021E5DEC
b _021F54AE
_021F51CA:
ldr r0, [sp, #0x14]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x18]
mov r5, #0
add r7, sp, #0x90
add r6, sp, #0xdc
_021F51DC:
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x18]
add r2, r5, #0
add r3, r7, #0
bl ov96_021E6168
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x18]
add r2, r5, #0
bl ov96_021E60C0
bl ov96_021E6108
str r0, [r6, #0x14]
add r5, r5, #1
add r7, #0x10
add r6, r6, #4
cmp r5, #3
blt _021F51DC
mov r0, #1
mov r1, #3
mov r2, #0
str r2, [sp, #0xdc]
str r0, [sp, #0xe0]
str r0, [sp, #0xe4]
mov r0, #0x63
str r1, [sp, #0xe8]
str r1, [sp, #0xec]
str r2, [sp]
str r2, [sp, #4]
lsl r0, r0, #2
ldr r0, [r4, r0]
add r2, sp, #0x90
add r3, sp, #0xdc
bl ov96_021EA8A8
ldr r0, [sp, #0x14]
bl ov96_021E5DEC
b _021F54AE
_021F522C:
mov r0, #0x63
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021EAA00
cmp r0, #0
bne _021F523C
b _021F54AE
_021F523C:
ldr r0, [r4, #0x54]
ldr r1, _021F53D8 ; =0x000003A1
mov r2, #1
bl ov96_021E9A78
mov r2, #0x62
lsl r2, r2, #2
str r0, [r4, r2]
ldr r0, [sp, #0x14]
ldr r2, [r4, r2]
ldr r3, [r4, #0x60]
mov r1, #0xc0
bl ov96_021E6290
ldr r0, [r0]
mov r1, #1
bl Sprite_SetDrawPriority
ldr r0, [r4]
bl ov96_021E6030
ldr r0, [sp, #0x14]
mov r1, #1
bl ov96_021E5DFC
add r0, sp, #0x78
mov r1, #0xaa
mov r2, #0x10
bl ReadWholeNarcMemberByIdPair
mov r0, #0
str r0, [sp, #0x24]
add r0, r4, #0
str r0, [sp, #0x1c]
add r0, #0x90
str r0, [sp, #0x1c]
mov r6, #0x40
add r7, sp, #0x6c
_021F5288:
mov r0, #0x63
ldr r1, [sp, #0x24]
lsl r0, r0, #2
lsl r1, r1, #0x18
ldr r0, [r4, r0]
lsr r1, r1, #0x18
bl ov96_021EAA04
mov r1, #1
add r5, r0, #0
bl ov96_021EAB38
ldr r0, [sp, #0x1c]
ldr r2, [sp, #0x24]
str r5, [r0]
ldr r0, [sp, #0x14]
mov r1, #0
bl ov96_021E60C0
bl ov96_021E6138
lsl r1, r0, #3
add r0, sp, #0x78
add r2, r0, r1
add r1, r2, #0
sub r1, #8
sub r2, r2, #4
ldr r1, [r1]
ldr r2, [r2]
add r0, r5, #0
bl ov96_021EAF70
add r0, r5, #0
mov r1, #2
bl ov96_021EAC0C
mov r2, #0x12
add r0, r5, #0
add r1, r6, #0
lsl r2, r2, #4
bl ov96_021EAF94
bl ov96_021E6104
add r1, r0, #0
add r0, r5, #0
bl ov96_021EAF6C
mov r2, #0x12
ldr r1, [sp, #0x1c]
lsl r0, r6, #0xc
str r0, [r1, #8]
lsl r2, r2, #0x10
str r2, [r1, #0xc]
str r0, [r1, #0x1c]
add r0, sp, #0x28
str r0, [sp]
add r0, r5, #0
add r1, r6, #0
lsr r2, r2, #0xc
add r3, sp, #0x2c
bl ov96_021EB0A4
ldr r0, [sp, #0x2c]
add r6, #0x40
strh r0, [r7]
ldr r0, [sp, #0x28]
strh r0, [r7, #2]
ldr r0, [sp, #0x1c]
add r7, r7, #4
add r0, #0x38
str r0, [sp, #0x1c]
ldr r0, [sp, #0x24]
add r0, r0, #1
str r0, [sp, #0x24]
cmp r0, #3
blt _021F5288
mov r0, #1
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
add r0, sp, #0x6c
str r0, [sp, #8]
mov r2, #0x62
lsl r2, r2, #2
ldr r0, [sp, #0x14]
ldr r2, [r4, r2]
ldr r3, [r4, #0x60]
mov r1, #0
bl ov96_021E634C
mov r0, #5
mov r1, #3
lsl r0, r0, #6
strb r1, [r4, r0]
add r0, r4, #0
bl ov96_021F5980
ldr r1, [r4, #0x60]
add r0, r4, #0
bl ov96_021F6C5C
add r0, r4, #0
bl ov96_021F7050
ldr r0, [sp, #0x14]
bl ov96_021E5F24
add r1, r0, #0
lsl r1, r1, #0x18
add r0, r4, #0
lsr r1, r1, #0x18
bl ov96_021F6DA4
ldr r0, [sp, #0x14]
bl ov96_021E5DEC
b _021F54AE
_021F5374:
mov r0, #1
add r1, r0, #0
bl GfGfx_EngineATogglePlanes
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineATogglePlanes
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineBTogglePlanes
add r0, sp, #0x30
mov r1, #0xaa
mov r2, #6
bl ReadWholeNarcMemberByIdPair
add r6, r4, #0
mov r5, #0
add r6, #0x90
add r7, sp, #0x30
_021F539E:
lsl r2, r5, #0x18
ldr r0, [sp, #0x14]
add r1, r7, #0
lsr r2, r2, #0x18
add r3, r6, #0
bl ov96_021F715C
add r5, r5, #1
add r6, #0x38
cmp r5, #3
blt _021F539E
ldr r0, [sp, #0x14]
bl ov96_021E5F24
mov r1, #0x4f
ldr r0, _021F53DC ; =0x00000708
b _021F53E0
.balign 4, 0
_021F53C0: .word 0xFFFFE0FF
_021F53C4: .word 0x04001000
_021F53C8: .word 0x00001004
_021F53CC: .word 0x00300010
_021F53D0: .word gSystem + 0x60
_021F53D4: .word ov96_0221C0B8
_021F53D8: .word 0x000003A1
_021F53DC: .word 0x00000708
_021F53E0:
lsl r1, r1, #2
str r0, [r4, r1]
ldr r1, [r4, r1]
add r0, r4, #0
lsl r1, r1, #0x10
lsr r1, r1, #0x10
bl ov96_021F6F3C
ldr r0, [sp, #0x14]
add r1, r4, #0
bl ov96_021F6F80
mov r2, #0
mov r7, #0x9a
mov r0, #0xba
mov r1, #0xda
add r3, r4, #0
add r5, r2, #0
lsl r7, r7, #4
lsl r0, r0, #4
lsl r1, r1, #4
_021F540A:
mov r6, #0x1a
lsl r6, r6, #4
str r5, [r3, r6]
mov r6, #0x3a
lsl r6, r6, #4
str r5, [r3, r6]
mov r6, #0x5a
lsl r6, r6, #4
str r5, [r3, r6]
mov r6, #0x7a
lsl r6, r6, #4
str r5, [r3, r6]
str r5, [r3, r7]
str r5, [r3, r0]
str r5, [r3, r1]
add r2, r2, #1
add r3, r3, #4
cmp r2, #0x80
blt _021F540A
mov r6, #0x40
add r7, r4, #0
str r4, [sp, #0x20]
_021F5436:
ldr r0, _021F54B4 ; =0x00000FB4
mov r1, #0
str r1, [r4, r0]
lsr r0, r6, #0x1f
add r0, r6, r0
asr r1, r0, #1
mov r0, #0xfa
lsl r0, r0, #4
str r1, [r7, r0]
add r0, r6, #0
bl _fflt
bl _f2d
ldr r3, _021F54B8 ; =0x40500000
mov r2, #0
bl _ddiv
mov r3, #1
mov r2, #0
lsl r3, r3, #0x1e
bl _dsub
add r3, r1, #0
add r2, r0, #0
ldr r1, _021F54BC ; =0x40B00000
mov r0, #0
bl _dmul
bl _dfix
mov r1, #0xfb
lsl r1, r1, #4
str r0, [r4, r1]
ldr r1, [sp, #0x20]
mov r0, #1
add r1, #0xb8
strb r0, [r1]
ldr r0, [sp, #0x20]
add r5, r5, #1
add r0, #0x38
add r4, #0x1c
add r6, #0x40
add r7, r7, #4
str r0, [sp, #0x20]
cmp r5, #3
blt _021F5436
mov r0, #1
bl sub_0203A994
ldr r0, [sp, #0x14]
bl ov96_021E5DEC
b _021F54AE
_021F54A2:
add r0, r4, #0
bl ov96_021F6E38
add sp, #0x120
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021F54AE:
mov r0, #0
add sp, #0x120
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F54B4: .word 0x00000FB4
_021F54B8: .word 0x40500000
_021F54BC: .word 0x40B00000
thumb_func_end ov96_021F5018
thumb_func_start ov96_021F54C0
ov96_021F54C0: ; 0x021F54C0
push {r3, lr}
bl ov96_021E5DC4
ldr r0, [r0, #0x60]
bl ov96_021EB5BC
bl sub_02020674
mov r0, #1
pop {r3, pc}
thumb_func_end ov96_021F54C0
thumb_func_start ov96_021F54D4
ov96_021F54D4: ; 0x021F54D4
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
bl ov96_021E5DC4
add r0, r5, #0
bl ov96_021E6040
add r6, r0, #0
bl ov96_021E9510
mov r4, #0
add r7, r4, #0
_021F54EE:
lsl r1, r4, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
bl ov96_021E5FBC
add r3, r0, #0
str r7, [sp]
mov r0, #3
str r0, [sp, #4]
mov r0, #0x4a
lsl r0, r0, #2
str r0, [sp, #8]
add r0, r5, #0
add r1, r6, #0
add r2, r4, #0
bl ov96_021E95F8
add r4, r4, #1
cmp r4, #4
blt _021F54EE
add r0, r6, #0
mov r1, #1
bl ov96_021E93B4
add r0, r6, #0
mov r1, #5
bl ov96_0221A56C
add r0, r6, #0
bl ov96_021E952C
add r0, r6, #0
mov r1, #5
bl ov96_021E9570
mov r0, #1
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F54D4
thumb_func_start ov96_021F553C
ov96_021F553C: ; 0x021F553C
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
bl sub_0203A914
mov r0, #0x19
lsl r0, r0, #4
ldr r0, [r4, r0]
bl Camera_Delete
add r0, r4, #0
add r0, #0x8c
ldr r0, [r0]
bl ov96_021F74C8
ldr r0, [r4, #0x58]
bl FreeToHeap
ldr r0, [r4]
mov r1, #2
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #1
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #3
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #4
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #5
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #6
bl FreeBgTilemapBuffer
mov r6, #0
add r5, r4, #4
_021F5598:
add r0, r5, #0
bl RemoveWindow
add r6, r6, #1
add r5, #0x10
cmp r6, #5
blt _021F5598
ldr r0, [r4]
bl FreeToHeap
add r0, r7, #0
bl ov96_021E5F8C
ldr r0, [r4, #0x60]
bl ov96_021EB21C
mov r0, #0x63
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021EA894
mov r0, #0x62
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021E9C0C
mov r0, #0x4e
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021F7738
mov r0, #4
bl FontID_Release
bl OamManager_Free
bl sub_0202168C
bl sub_02022608
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
ldr r0, _021F5628 ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
mov r0, #1
lsl r0, r0, #0xc
ldr r0, [r4, r0]
bl sub_0202067C
bl GF_DestroyVramTransferManager
add r0, r7, #0
bl ov96_021E5DAC
ldr r0, _021F562C ; =0x04000050
mov r1, #0
strh r1, [r0]
mov r0, #0x8f
bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
nop
_021F5628: .word gSystem + 0x60
_021F562C: .word 0x04000050
thumb_func_end ov96_021F553C
thumb_func_start ov96_021F5630
ov96_021F5630: ; 0x021F5630
push {r4, lr}
sub sp, #0x28
ldr r4, _021F564C ; =ov96_0221C1F4
add r3, sp, #0
mov r2, #5
_021F563A:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _021F563A
add r0, sp, #0
bl GfGfx_SetBanks
add sp, #0x28
pop {r4, pc}
.balign 4, 0
_021F564C: .word ov96_0221C1F4
thumb_func_end ov96_021F5630
thumb_func_start ov96_021F5650
ov96_021F5650: ; 0x021F5650
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r4, r1, #0
add r5, r0, #0
bl ov96_021E5DC4
add r6, r0, #0
ldrb r0, [r4]
cmp r0, #5
bhi _021F5728
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021F5670: ; jump table
.short _021F567C - _021F5670 - 2 ; case 0
.short _021F5692 - _021F5670 - 2 ; case 1
.short _021F56B8 - _021F5670 - 2 ; case 2
.short _021F56CE - _021F5670 - 2 ; case 3
.short _021F56E6 - _021F5670 - 2 ; case 4
.short _021F56FE - _021F5670 - 2 ; case 5
_021F567C:
add r0, r5, #0
bl ov96_021F5B60
add r0, r5, #0
mov r1, #0x14
bl ov96_021E601C
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021F5728
_021F5692:
add r0, r5, #0
bl ov96_021F5B60
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r6, #0x54]
mov r1, #3
str r0, [sp, #8]
mov r0, #2
add r2, r1, #0
mov r3, #0
bl BeginNormalPaletteFade
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021F5728
_021F56B8:
bl IsPaletteFadeFinished
cmp r0, #0
beq _021F56C6
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
_021F56C6:
add r0, r5, #0
bl ov96_021F5B60
b _021F5728
_021F56CE:
add r0, r5, #0
bl ov96_021F5B60
add r0, r5, #0
bl ov96_021E637C
cmp r0, #0
beq _021F5728
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021F5728
_021F56E6:
add r0, r5, #0
bl ov96_021F5BA0
add r0, r5, #0
bl ov96_021F5A88
cmp r0, #0
beq _021F5728
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021F5728
_021F56FE:
add r0, r5, #0
bl ov96_021E667C
cmp r0, #0
beq _021F5728
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r6, #0x54]
str r0, [sp, #8]
mov r0, #0
add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
bl BeginNormalPaletteFade
add r0, r5, #0
mov r1, #1
bl ov96_021E5FC8
_021F5728:
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021F5650
thumb_func_start ov96_021F5730
ov96_021F5730: ; 0x021F5730
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r6, r1, #0
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
ldrb r0, [r6]
cmp r0, #0
bne _021F5756
bl IsPaletteFadeFinished
cmp r0, #0
beq _021F5750
mov r0, #1
strb r0, [r6]
_021F5750:
add sp, #0xc
mov r0, #0
pop {r4, r5, r6, r7, pc}
_021F5756:
add r0, r5, #0
bl ov96_021E5F24
mov r2, #0
add r6, r0, #0
add r1, r2, #0
_021F5762:
add r0, r4, #0
add r0, #0xb0
ldrh r0, [r0]
add r1, r1, #1
add r4, #0x38
add r2, r2, r0
cmp r1, #3
blt _021F5762
ldr r0, _021F5848 ; =0x000003E7
cmp r2, r0
ble _021F577A
add r2, r0, #0
_021F577A:
lsl r1, r6, #0x18
lsl r2, r2, #0x10
add r0, r5, #0
lsr r1, r1, #0x18
lsr r2, r2, #0x10
bl ov96_021E5FB0
cmp r6, #0
bne _021F5842
add r0, r5, #0
bl ov96_021E5D34
str r0, [sp, #8]
cmp r0, #4
bge _021F5842
_021F5798:
ldr r0, [sp, #8]
mov r4, #0
lsl r0, r0, #0x18
str r4, [sp, #4]
lsr r7, r0, #0x18
_021F57A2:
ldr r1, [sp, #8]
add r0, r5, #0
add r2, r4, #0
bl ov96_021E60D8
add r6, r0, #0
ldrb r0, [r6, #2]
cmp r0, #0
beq _021F57E0
bl LCRandom
mov r1, #0x15
bl _s32_div_f
add r3, r1, #0
ldrb r0, [r6, #3]
ldrb r2, [r6, #2]
mov r1, #6
lsl r0, r0, #1
mul r1, r2
ldrb r2, [r6, #4]
add r1, #0x50
lsl r2, r2, #1
add r1, r1, r2
add r0, r0, r1
add r1, r0, r3
ldr r0, [sp, #4]
add r0, r0, r1
str r0, [sp, #4]
bl LCRandom
_021F57E0:
mov r0, #0
lsl r2, r4, #0x18
str r0, [sp]
add r0, r5, #0
add r1, r7, #0
lsr r2, r2, #0x18
mov r3, #2
bl ov96_021E8228
bl LCRandom
mov r1, #0x15
bl _s32_div_f
lsl r0, r1, #0x18
lsr r6, r0, #0x18
lsl r2, r4, #0x18
add r0, r5, #0
add r1, r7, #0
lsr r2, r2, #0x18
mov r3, #4
str r6, [sp]
bl ov96_021E8228
lsl r2, r4, #0x18
add r0, r5, #0
add r1, r7, #0
lsr r2, r2, #0x18
mov r3, #1
str r6, [sp]
bl ov96_021E8228
add r4, r4, #1
cmp r4, #3
blt _021F57A2
ldr r1, [sp, #8]
ldr r2, [sp, #4]
lsl r1, r1, #0x18
lsl r2, r2, #0x10
add r0, r5, #0
lsr r1, r1, #0x18
lsr r2, r2, #0x10
bl ov96_021E5FB0
ldr r0, [sp, #8]
add r0, r0, #1
str r0, [sp, #8]
cmp r0, #4
blt _021F5798
_021F5842:
mov r0, #1
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021F5848: .word 0x000003E7
thumb_func_end ov96_021F5730
thumb_func_start ov96_021F584C
ov96_021F584C: ; 0x021F584C
push {r3, r4, r5, lr}
sub sp, #0xb8
ldr r5, _021F5964 ; =ov96_0221C100
add r3, sp, #0xa8
add r4, r0, #0
add r2, r3, #0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl SetBothScreensModesAndDisable
ldr r5, _021F5968 ; =ov96_0221C124
add r3, sp, #0x8c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #2
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
bl BgClearTilemapBufferAndCommit
ldr r5, _021F596C ; =ov96_0221C140
add r3, sp, #0x70
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #1
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
bl BgClearTilemapBufferAndCommit
ldr r5, _021F5970 ; =ov96_0221C15C
add r3, sp, #0x54
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #3
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #3
bl BgClearTilemapBufferAndCommit
ldr r5, _021F5974 ; =ov96_0221C178
add r3, sp, #0x38
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #4
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
bl BgClearTilemapBufferAndCommit
ldr r5, _021F5978 ; =ov96_0221C194
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #5
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #5
bl BgClearTilemapBufferAndCommit
ldr r5, _021F597C ; =ov96_0221C1B0
add r3, sp, #0
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #6
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #6
bl BgClearTilemapBufferAndCommit
mov r0, #8
mov r1, #0
bl GfGfx_EngineATogglePlanes
add sp, #0xb8
pop {r3, r4, r5, pc}
nop
_021F5964: .word ov96_0221C100
_021F5968: .word ov96_0221C124
_021F596C: .word ov96_0221C140
_021F5970: .word ov96_0221C15C
_021F5974: .word ov96_0221C178
_021F5978: .word ov96_0221C194
_021F597C: .word ov96_0221C1B0
thumb_func_end ov96_021F584C
thumb_func_start ov96_021F5980
ov96_021F5980: ; 0x021F5980
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4, #0x54]
mov r1, #7
str r0, [sp, #0xc]
ldr r2, [r4]
mov r0, #0xa8
mov r3, #2
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4, #0x54]
mov r1, #5
str r0, [sp, #0xc]
ldr r2, [r4]
mov r0, #0xa8
mov r3, #1
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4, #0x54]
mov r1, #0xa
str r0, [sp, #0xc]
ldr r2, [r4]
mov r0, #0xa8
mov r3, #4
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4, #0x54]
mov r1, #0xc
str r0, [sp, #0xc]
ldr r2, [r4]
mov r0, #0xa8
mov r3, #5
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4, #0x54]
mov r1, #8
str r0, [sp, #0xc]
ldr r2, [r4]
mov r0, #0xa8
mov r3, #2
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4, #0x54]
mov r1, #6
str r0, [sp, #0xc]
ldr r2, [r4]
mov r0, #0xa8
mov r3, #1
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4, #0x54]
mov r1, #0xb
str r0, [sp, #0xc]
ldr r2, [r4]
mov r0, #0xa8
mov r3, #4
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4, #0x54]
mov r1, #0xd
str r0, [sp, #0xc]
ldr r2, [r4]
mov r0, #0xa8
mov r3, #5
bl GfGfxLoader_LoadScrnData
mov r0, #0x20
str r0, [sp]
ldr r0, [r4, #0x54]
mov r2, #0
str r0, [sp, #4]
mov r0, #0xa8
mov r1, #4
add r3, r2, #0
bl GfGfxLoader_GXLoadPal
mov r0, #0x40
str r0, [sp]
ldr r0, [r4, #0x54]
mov r1, #9
str r0, [sp, #4]
mov r0, #0xa8
mov r2, #4
mov r3, #0
bl GfGfxLoader_GXLoadPal
ldr r0, [r4, #0x54]
add r3, r4, #0
str r0, [sp]
mov r0, #0xa8
mov r1, #0xe
mov r2, #0
add r3, #0x5c
bl GfGfxLoader_GetScrnData
str r0, [r4, #0x58]
add sp, #0x10
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021F5980
thumb_func_start ov96_021F5A88
ov96_021F5A88: ; 0x021F5A88
push {r4, r5, r6, lr}
add r6, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
add r0, r6, #0
bl ov96_021E5F54
bl ov96_021E8A20
add r5, r0, #0
ldr r1, _021F5B58 ; =0x00000142
mov r0, #0
strb r0, [r4, r1]
sub r0, r1, #6
ldr r0, [r4, r0]
cmp r0, #0
beq _021F5AB6
sub r0, r1, #6
ldr r0, [r4, r0]
sub r2, r0, #1
sub r0, r1, #6
str r2, [r4, r0]
_021F5AB6:
mov r0, #0x4f
lsl r0, r0, #2
ldr r0, [r4, r0]
cmp r0, #0
bgt _021F5AC4
mov r0, #1
b _021F5AC6
_021F5AC4:
mov r0, #0
_021F5AC6:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _021F5B1C
ldr r0, [r4, #0x60]
mov r1, #1
mov r5, #0
bl ov96_021EB63C
mov r0, #0x63
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #1
bl ov96_021EB144
add r1, r5, #0
add r2, r4, #0
_021F5AE6:
add r0, r2, #0
add r0, #0xb0
ldrh r0, [r0]
add r1, r1, #1
add r2, #0x38
add r5, r5, r0
cmp r1, #3
blt _021F5AE6
ldr r0, _021F5B5C ; =0x000003E7
cmp r5, r0
ble _021F5AFE
add r5, r0, #0
_021F5AFE:
lsl r1, r5, #0x10
add r0, r6, #0
lsr r1, r1, #0x10
bl ov96_021E8318
lsl r1, r5, #0x10
add r0, r4, #0
lsr r1, r1, #0x10
bl ov96_021F70AC
add r0, r6, #0
bl ov96_021F5B60
mov r0, #1
pop {r4, r5, r6, pc}
_021F5B1C:
add r0, r6, #0
add r1, r4, #0
bl ov96_021F6600
mov r0, #0x1a
lsl r0, r0, #4
add r0, r4, r0
bl ov96_021F6424
add r0, r4, #0
bl ov96_021F6BB0
add r0, r6, #0
add r1, r4, #0
bl ov96_021F7194
add r0, r4, #0
add r0, #0x8c
ldr r0, [r0]
bl ov96_021F7598
add r0, r6, #0
bl ov96_021F5B60
ldr r0, _021F5B58 ; =0x00000142
ldrb r0, [r4, r0]
str r0, [r5]
mov r0, #0
pop {r4, r5, r6, pc}
nop
_021F5B58: .word 0x00000142
_021F5B5C: .word 0x000003E7
thumb_func_end ov96_021F5A88
thumb_func_start ov96_021F5B60
ov96_021F5B60: ; 0x021F5B60
push {r3, r4, r5, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
add r0, r5, #0
bl ov96_021F5D3C
mov r1, #0x4f
lsl r1, r1, #2
ldr r1, [r4, r1]
add r0, r4, #0
lsl r1, r1, #0x10
lsr r1, r1, #0x10
bl ov96_021F6F3C
add r0, r4, #0
bl ov96_021F6E38
add r0, r5, #0
bl ov96_021F5EC4
mov r1, #0x4f
lsl r1, r1, #2
ldr r1, [r4, r1]
add r0, r5, #0
bl ov96_021E6454
add r0, r4, #0
bl ov96_021F637C
pop {r3, r4, r5, pc}
thumb_func_end ov96_021F5B60
thumb_func_start ov96_021F5BA0
ov96_021F5BA0: ; 0x021F5BA0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
str r0, [sp, #8]
bl ov96_021E5F54
add r4, r0, #0
ldr r0, [sp, #8]
bl ov96_021E5DC4
add r5, r0, #0
bl System_GetTouchNew
cmp r0, #0
beq _021F5C10
ldr r0, [sp, #8]
bl ov96_021E5F24
add r1, r0, #0
mov r0, #1
str r0, [sp]
lsl r1, r1, #0x18
ldr r0, [sp, #8]
lsr r1, r1, #0x18
mov r2, #3
mov r3, #0
bl ov96_021E8228
ldr r2, _021F5D38 ; =gSystem + 0x40
add r0, r5, #0
ldrh r1, [r2, #0x20]
ldrh r2, [r2, #0x22]
bl ov96_021F5F68
cmp r0, #3
bhs _021F5CC2
mov r1, #5
lsl r1, r1, #6
ldr r2, _021F5D38 ; =gSystem + 0x40
strb r0, [r5, r1]
ldrh r0, [r2, #0x20]
lsl r3, r0, #0xc
add r0, r1, #0
add r0, #0x2c
str r3, [r5, r0]
ldrh r0, [r2, #0x22]
lsl r2, r0, #0xc
mov r0, #3
lsl r0, r0, #0x12
add r2, r2, r0
add r0, r1, #0
add r0, #0x30
str r2, [r5, r0]
mov r0, #0
add r1, #0x34
str r0, [r5, r1]
b _021F5CC2
_021F5C10:
bl System_GetTouchHeld
cmp r0, #0
beq _021F5C74
mov r2, #5
lsl r2, r2, #6
ldrb r0, [r5, r2]
cmp r0, #3
bhs _021F5CC2
add r0, r2, #1
ldrb r0, [r5, r0]
cmp r0, #7
bhs _021F5C36
add r0, r2, #1
ldrb r0, [r5, r0]
add r1, r0, #1
add r0, r2, #1
strb r1, [r5, r0]
b _021F5CC2
_021F5C36:
add r3, sp, #0x1c
mov r0, #0
str r0, [r3]
str r0, [r3, #4]
ldr r1, _021F5D38 ; =gSystem + 0x40
str r0, [r3, #8]
ldrh r0, [r1, #0x20]
ldrh r1, [r1, #0x22]
add r2, #0x2c
lsl r0, r0, #0x18
lsl r1, r1, #0x18
lsr r0, r0, #0x18
lsr r1, r1, #0x18
add r2, r5, r2
bl ov96_021F5F34
mov r1, #5
lsl r1, r1, #6
ldrb r1, [r5, r1]
add r0, r5, #0
add r2, sp, #0x1c
bl ov96_021F6088
mov r0, #5
mov r1, #3
lsl r0, r0, #6
strb r1, [r5, r0]
mov r1, #0
add r0, r0, #1
strb r1, [r5, r0]
b _021F5CC2
_021F5C74:
mov r2, #5
lsl r2, r2, #6
ldrb r0, [r5, r2]
cmp r0, #3
bhs _021F5CB4
add r0, r2, #1
ldrb r0, [r5, r0]
cmp r0, #7
bhs _021F5CB4
add r3, sp, #0x10
mov r0, #0
str r0, [r3]
str r0, [r3, #4]
ldr r1, _021F5D38 ; =gSystem + 0x40
str r0, [r3, #8]
ldrh r0, [r1, #0x20]
ldrh r1, [r1, #0x22]
add r2, #0x2c
lsl r0, r0, #0x18
lsl r1, r1, #0x18
lsr r0, r0, #0x18
lsr r1, r1, #0x18
add r2, r5, r2
bl ov96_021F5F34
mov r1, #5
lsl r1, r1, #6
ldrb r1, [r5, r1]
add r0, r5, #0
add r2, sp, #0x10
bl ov96_021F6088
_021F5CB4:
mov r0, #5
mov r1, #3
lsl r0, r0, #6
strb r1, [r5, r0]
mov r1, #0
add r0, r0, #1
strb r1, [r5, r0]
_021F5CC2:
ldr r0, [sp, #8]
bl ov96_021E5F24
cmp r0, #0
bne _021F5D32
add r0, r4, #0
add r0, #0x28
bl ov96_021E8A20
add r7, r0, #0
add r0, r4, #0
add r0, #0x50
bl ov96_021E8A20
str r0, [sp, #4]
add r0, r4, #0
bl ov96_021E8A20
add r3, r0, #0
mov r6, #4
_021F5CEA:
ldr r2, [sp, #4]
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
str r2, [sp, #4]
sub r6, r6, #1
bne _021F5CEA
ldr r1, [r3]
add r0, r2, #0
str r1, [r0]
mov r1, #0x4e
lsl r1, r1, #2
ldr r0, [sp, #8]
ldr r1, [r5, r1]
bl ov96_021F7740
mov r6, #0
add r4, #0x50
add r5, sp, #0xc
_021F5D0E:
add r0, r4, #0
bl ov96_021E8A20
ldr r0, [r0]
add r6, r6, #1
strb r0, [r5]
add r4, #0x28
add r5, r5, #1
cmp r6, #4
blt _021F5D0E
mov r2, #0
add r1, sp, #0xc
_021F5D26:
ldrb r0, [r1]
add r1, r1, #1
strb r0, [r7, r2]
add r2, r2, #1
cmp r2, #4
blt _021F5D26
_021F5D32:
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
nop
_021F5D38: .word gSystem + 0x40
thumb_func_end ov96_021F5BA0
thumb_func_start ov96_021F5D3C
ov96_021F5D3C: ; 0x021F5D3C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
str r0, [sp]
bl ov96_021E5DC4
str r0, [sp, #4]
ldr r4, [sp, #4]
ldr r6, [sp, #4]
mov r0, #0
ldr r5, _021F5EBC ; =ov96_0221DC18
str r0, [sp, #0x10]
add r4, #0x90
add r7, r6, #0
_021F5D56:
ldr r0, _021F5EC0 ; =0x00000FB4
ldr r0, [r6, r0]
lsl r1, r0, #6
mov r0, #0x12
lsl r0, r0, #0x10
sub r0, r0, r1
str r0, [r4, #0xc]
ldr r1, [r4, #0x1c]
mov r0, #2
lsl r0, r0, #0x10
str r1, [r4, #8]
cmp r1, r0
bge _021F5D74
str r0, [r4, #8]
b _021F5D7E
_021F5D74:
mov r0, #0xdf
lsl r0, r0, #0xc
cmp r1, r0
ble _021F5D7E
str r0, [r4, #8]
_021F5D7E:
ldr r1, [r4, #8]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r1, r0, #0xc
lsr r0, r1, #0x1f
add r0, r1, r0
lsl r0, r0, #0x17
lsr r1, r0, #0x18
mov r0, #0xfa
lsl r0, r0, #4
str r1, [r7, r0]
ldr r1, [r4, #8]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
ldr r1, [r4, #0xc]
str r0, [sp, #0xc]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #8]
ldr r0, [r4]
ldr r1, [sp, #0xc]
ldr r2, [sp, #8]
bl ov96_021EAF94
mov r1, #0
add r0, sp, #0x14
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
ldr r0, [sp, #0xc]
lsl r0, r0, #0xc
str r0, [sp, #0x14]
ldr r0, [sp, #8]
lsl r0, r0, #0xc
str r0, [sp, #0x18]
ldr r0, [sp]
bl ov96_021E5F24
add r1, r0, #0
ldr r0, [sp]
ldr r2, [sp, #0x10]
bl ov96_021E60C0
ldrb r0, [r0, #5]
cmp r0, #0
beq _021F5DF0
mov r0, #6
ldr r1, [sp, #0x18]
lsl r0, r0, #0xe
sub r0, r1, r0
str r0, [sp, #0x18]
b _021F5DFA
_021F5DF0:
mov r0, #1
ldr r1, [sp, #0x18]
lsl r0, r0, #0x10
sub r0, r1, r0
str r0, [sp, #0x18]
_021F5DFA:
ldr r0, [r4, #4]
add r1, sp, #0x14
bl ov96_021EB588
add r0, r4, #0
add r0, #0x26
ldrb r0, [r0]
cmp r0, #0
ldr r0, [r4, #4]
beq _021F5E34
mov r1, #1
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r4]
mov r1, #0x14
bl ov96_021EAD08
ldrb r0, [r5]
bl sub_02006190
cmp r0, #0
bne _021F5E5E
ldrb r1, [r5]
mov r0, #0x89
lsl r0, r0, #4
bl sub_0200606C
b _021F5E5E
_021F5E34:
mov r1, #1
mov r2, #0
bl ov96_021EB52C
ldr r0, [r4]
mov r1, #0
bl ov96_021EAD08
mov r0, #0x3f
lsl r0, r0, #6
ldr r0, [r6, r0]
cmp r0, #0
ldr r0, [r4]
beq _021F5E58
mov r1, #1
bl ov96_021EAC0C
b _021F5E5E
_021F5E58:
mov r1, #2
bl ov96_021EAC0C
_021F5E5E:
ldr r0, [sp, #0x10]
add r4, #0x38
add r0, r0, #1
add r6, #0x1c
add r7, r7, #4
add r5, r5, #1
str r0, [sp, #0x10]
cmp r0, #3
bge _021F5E72
b _021F5D56
_021F5E72:
ldr r4, [sp, #4]
mov r1, #0x51
mov r5, #0
lsl r1, r1, #2
add r0, r4, #0
add r6, r0, r1
add r7, r5, #0
_021F5E80:
ldr r0, [sp, #4]
mov r1, #0x5a
add r0, r0, r5
lsl r1, r1, #2
ldrb r1, [r0, r1]
cmp r1, #0
beq _021F5EAE
mov r1, #0x5a
lsl r1, r1, #2
strb r7, [r0, r1]
mov r1, #1
ldr r0, [r4, #0x78]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r4, #0x78]
add r1, r6, #0
bl ov96_021EB588
ldr r0, [r4, #0x78]
mov r1, #9
bl ov96_021EB564
_021F5EAE:
add r5, r5, #1
add r4, r4, #4
add r6, #0xc
cmp r5, #3
blt _021F5E80
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F5EBC: .word ov96_0221DC18
_021F5EC0: .word 0x00000FB4
thumb_func_end ov96_021F5D3C
thumb_func_start ov96_021F5EC4
ov96_021F5EC4: ; 0x021F5EC4
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
add r7, r0, #0
add r0, r6, #0
bl ov96_021E5DC4
str r0, [sp]
mov r4, #0
add r5, r0, #0
_021F5EE0:
add r0, r6, #0
bl ov96_021E5F24
cmp r4, r0
bne _021F5F0A
ldr r1, [sp]
ldr r0, _021F5F30 ; =0x00000142
ldrb r0, [r1, r0]
cmp r0, #0
beq _021F5F24
ldr r0, [r5, #0x68]
bl ov96_021EB57C
cmp r0, #0
bne _021F5F24
add r1, r4, #0
ldr r0, [r5, #0x68]
add r1, #0xd
bl ov96_021EB564
b _021F5F24
_021F5F0A:
ldrb r0, [r7, r4]
cmp r0, #0
beq _021F5F24
ldr r0, [r5, #0x68]
bl ov96_021EB57C
cmp r0, #0
bne _021F5F24
add r1, r4, #0
ldr r0, [r5, #0x68]
add r1, #0xd
bl ov96_021EB564
_021F5F24:
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
blt _021F5EE0
pop {r3, r4, r5, r6, r7, pc}
nop
_021F5F30: .word 0x00000142
thumb_func_end ov96_021F5EC4
thumb_func_start ov96_021F5F34
ov96_021F5F34: ; 0x021F5F34
push {r3, r4, lr}
sub sp, #0xc
lsl r0, r0, #0xc
str r0, [sp]
mov r0, #3
lsl r1, r1, #0xc
lsl r0, r0, #0x12
add r0, r1, r0
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
add r4, r3, #0
add r1, r2, #0
add r0, sp, #0
add r2, r4, #0
bl VEC_Subtract
mov r0, #7
ldr r1, [r4, #4]
lsl r0, r0, #0x10
cmp r1, r0
ble _021F5F62
str r0, [r4, #4]
_021F5F62:
add sp, #0xc
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov96_021F5F34
thumb_func_start ov96_021F5F68
ov96_021F5F68: ; 0x021F5F68
push {r4, r5, r6, r7, lr}
sub sp, #0x34
str r1, [sp, #0xc]
str r0, [sp, #8]
str r2, [sp, #0x10]
bl ov96_021E6104
lsl r6, r0, #0xc
ldr r0, [sp, #8]
mov r5, #0
str r0, [sp, #0x14]
add r0, #0x90
add r4, r5, #0
add r7, sp, #0x24
str r0, [sp, #0x14]
_021F5F86:
mov r0, #0x38
add r1, r4, #0
mul r1, r0
ldr r0, [sp, #0x14]
add r1, r0, r1
add r0, r1, #0
add r0, #0x26
ldrb r0, [r0]
cmp r0, #0
beq _021F5FA8
mov r0, #0
strb r0, [r7, r4]
add r1, r0, #0
lsl r2, r4, #2
add r0, sp, #0x28
str r1, [r0, r2]
b _021F6014
_021F5FA8:
add r0, sp, #0x18
str r0, [sp]
ldr r0, [r1]
ldr r1, [r1, #0x1c]
add r3, r4, #0
asr r2, r1, #0xb
lsr r2, r2, #0x14
add r2, r1, r2
asr r1, r2, #0xc
mov r2, #0x1c
mul r3, r2
ldr r2, [sp, #8]
add r3, r2, r3
ldr r2, _021F605C ; =0x00000FB4
ldr r2, [r3, r2]
lsl r3, r2, #6
mov r2, #6
lsl r2, r2, #0x10
sub r2, r2, r3
asr r3, r2, #0xb
lsr r3, r3, #0x14
add r3, r2, r3
asr r2, r3, #0xc
add r3, sp, #0x1c
bl ov96_021EB0A4
bl ov96_021E6104
str r0, [sp]
add r0, sp, #0x20
str r0, [sp, #4]
ldr r0, [sp, #0x1c]
ldr r1, [sp, #0x18]
ldr r2, [sp, #0xc]
ldr r3, [sp, #0x10]
bl ov96_021E872C
cmp r0, #0
add r0, sp, #0x28
beq _021F600A
ldr r2, [sp, #0x20]
lsl r1, r4, #2
str r2, [r0, r1]
mov r0, #1
strb r0, [r7, r4]
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
b _021F6014
_021F600A:
lsl r2, r4, #2
mov r1, #0
str r1, [r0, r2]
add r0, r1, #0
strb r0, [r7, r4]
_021F6014:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _021F5F86
cmp r5, #0
bne _021F6028
add sp, #0x34
mov r0, #3
pop {r4, r5, r6, r7, pc}
_021F6028:
mov r0, #3
mov r3, #0
add r1, sp, #0x28
add r2, sp, #0x24
_021F6030:
ldrb r4, [r2, r3]
cmp r4, #0
beq _021F6042
lsl r4, r3, #2
ldr r4, [r1, r4]
cmp r4, r6
bge _021F6042
add r0, r3, #0
add r6, r4, #0
_021F6042:
add r3, r3, #1
lsl r3, r3, #0x18
lsr r3, r3, #0x18
cmp r3, #3
blo _021F6030
cmp r0, #3
bne _021F6056
bl GF_AssertFail
mov r0, #3
_021F6056:
add sp, #0x34
pop {r4, r5, r6, r7, pc}
nop
_021F605C: .word 0x00000FB4
thumb_func_end ov96_021F5F68
thumb_func_start ov96_021F6060
ov96_021F6060: ; 0x021F6060
push {r4, r5, lr}
sub sp, #0xc
add r5, r1, #0
add r1, r2, #0
add r2, sp, #0
add r4, r3, #0
bl VEC_Subtract
add r0, sp, #0
bl VEC_Mag
add r1, r5, r4
cmp r0, r1
bgt _021F6082
add sp, #0xc
mov r0, #1
pop {r4, r5, pc}
_021F6082:
mov r0, #0
add sp, #0xc
pop {r4, r5, pc}
thumb_func_end ov96_021F6060
thumb_func_start ov96_021F6088
ov96_021F6088: ; 0x021F6088
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r4, r2, #0
add r6, r0, #0
ldr r0, [r4, #4]
add r5, r1, #0
cmp r0, #0
ble _021F6120
ldr r1, _021F6124 ; =0x00000FAC
add r2, r6, r1
mov r1, #0x1c
mul r1, r5
add r7, r2, r1
ldr r1, [r7, #0x14]
cmp r1, #0
bne _021F6120
asr r1, r0, #5
lsr r1, r1, #0x1a
add r1, r0, r1
asr r0, r1, #6
bl _dflt
ldr r3, _021F6128 ; =0x40040000
mov r2, #0
bl _ddiv
bl _dfix
str r0, [sp]
ldr r0, [r4]
neg r1, r0
asr r0, r1, #1
lsr r0, r0, #0x1e
add r0, r1, r0
asr r0, r0, #2
bmi _021F60DC
mov r1, #0xa
lsl r1, r1, #0xc
cmp r0, r1
ble _021F60E4
add r0, r1, #0
b _021F60E4
_021F60DC:
ldr r1, _021F612C ; =0xFFFF6000
cmp r0, r1
bge _021F60E4
add r0, r1, #0
_021F60E4:
mov r1, #0x38
add r4, r5, #0
mul r4, r1
add r1, r6, #0
str r1, [sp, #4]
add r1, #0xa8
str r0, [r1, r4]
add r0, r1, #0
str r1, [sp, #4]
ldr r1, [r0, r4]
add r0, r6, r4
add r0, #0xc4
ldr r0, [r0]
mul r0, r1
mov r1, #0xc
bl _s32_div_f
ldr r1, [sp, #4]
str r0, [r1, r4]
ldr r0, [sp]
ldr r1, _021F6130 ; =ov96_0221DC18
neg r0, r0
str r0, [r7]
str r0, [r7, #0x18]
mov r0, #1
str r0, [r7, #0x14]
ldrb r1, [r1, r5]
ldr r0, _021F6134 ; =0x000008C2
bl sub_0200606C
_021F6120:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F6124: .word 0x00000FAC
_021F6128: .word 0x40040000
_021F612C: .word 0xFFFF6000
_021F6130: .word ov96_0221DC18
_021F6134: .word 0x000008C2
thumb_func_end ov96_021F6088
thumb_func_start ov96_021F6138
ov96_021F6138: ; 0x021F6138
push {r3, r4, r5, lr}
add r4, r0, #0
bl NNS_G3dInit
bl G3X_InitMtxStack
ldr r0, _021F61B0 ; =0x04000540
mov r3, #2
str r3, [r0]
ldr r0, _021F61B4 ; =0x04000008
mov r1, #3
ldrh r2, [r0]
bic r2, r1
add r1, r2, #0
orr r1, r3
strh r1, [r0]
add r0, #0x58
ldrh r1, [r0]
ldr r2, _021F61B8 ; =0xFFFFCFFD
ldr r3, _021F61BC ; =0x0000CFEF
and r1, r2
strh r1, [r0]
ldrh r1, [r0]
lsr r2, r2, #0x11
and r1, r3
strh r1, [r0]
add r1, r3, #0
ldrh r5, [r0]
add r1, #0xc
and r1, r5
strh r1, [r0]
add r1, r3, #0
ldrh r5, [r0]
add r1, #8
sub r3, #0x10
and r1, r5
strh r1, [r0]
ldrh r1, [r0]
and r1, r3
strh r1, [r0]
mov r0, #0
add r1, r0, #0
mov r3, #0x3f
str r0, [sp]
bl G3X_SetClearColor
ldr r1, _021F61C0 ; =0xBFFF0000
ldr r0, _021F61C4 ; =0x04000580
str r1, [r0]
ldr r0, [r4, #0x54]
bl Camera_New
mov r1, #0x19
lsl r1, r1, #4
str r0, [r4, r1]
add r0, r4, #0
bl ov96_021F6398
pop {r3, r4, r5, pc}
nop
_021F61B0: .word 0x04000540
_021F61B4: .word 0x04000008
_021F61B8: .word 0xFFFFCFFD
_021F61BC: .word 0x0000CFEF
_021F61C0: .word 0xBFFF0000
_021F61C4: .word 0x04000580
thumb_func_end ov96_021F6138
thumb_func_start ov96_021F61C8
ov96_021F61C8: ; 0x021F61C8
push {r4, r5, r6, r7, lr}
sub sp, #0x4c
ldr r5, _021F6358 ; =ov96_0221C0E8
add r4, r0, #0
ldmia r5!, {r0, r1}
add r3, sp, #0x40
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r5]
add r1, r2, #0
str r0, [r3]
mov r0, #0x1b
mov r2, #3
bl NNS_G3dGeBufferOP_N
ldr r0, _021F635C ; =0x00310081
add r1, sp, #0x3c
str r0, [sp, #0x3c]
mov r0, #0x29
mov r2, #1
bl NNS_G3dGeBufferOP_N
mov r0, #0xbf
str r0, [sp, #0x38]
mov r0, #0x20
add r1, sp, #0x38
mov r2, #1
bl NNS_G3dGeBufferOP_N
bl NNS_G3dGlbFlushP
mov r0, #3
str r0, [sp, #0x34]
mov r0, #0x40
add r1, sp, #0x34
mov r2, #1
bl NNS_G3dGeBufferOP_N
ldr r0, _021F6360 ; =ov96_0221E5A0
mov r2, #0
str r2, [r0]
ldr r0, _021F6364 ; =ov96_0221DC10
mov r1, #0xa
str r1, [r0, #4]
mov r1, #0x14
str r1, [r0]
mov r0, #0xe
lsl r0, r0, #0xc
str r0, [sp, #0x2c]
str r2, [sp, #0x30]
mov r0, #0x23
add r1, sp, #0x2c
mov r2, #2
bl NNS_G3dGeBufferOP_N
ldr r0, _021F6368 ; =0xE800E000
add r1, sp, #0x24
str r0, [sp, #0x24]
mov r0, #0
str r0, [sp, #0x28]
mov r0, #0x23
mov r2, #2
bl NNS_G3dGeBufferOP_N
add r5, r4, #4
ldr r4, _021F6364 ; =ov96_0221DC10
mov r6, #1
_021F624E:
add r0, r6, #0
bl _fflt
bl _f2d
ldr r3, _021F636C ; =0x40500000
mov r2, #0
bl _dsub
add r3, r1, #0
add r2, r0, #0
ldr r1, _021F6370 ; =0x40100000
mov r0, #0
bl _dmul
ldr r3, _021F6374 ; =0x40600000
mov r2, #0
bl _ddiv
bl _d2f
add r7, r0, #0
ldr r0, _021F6378 ; =0x45800000
add r1, r7, #0
bl _fmul
bl _ffix
mov r1, #0x67
lsl r1, r1, #2
ldr r1, [r5, r1]
lsl r0, r0, #0x10
lsl r1, r1, #0x10
asr r1, r1, #0x10
lsl r1, r1, #0x10
lsr r1, r1, #0x10
lsr r0, r0, #0x10
lsl r1, r1, #0x10
orr r0, r1
str r0, [sp, #0x1c]
mov r0, #0
str r0, [sp, #0x20]
mov r0, #0x23
add r1, sp, #0x1c
mov r2, #2
bl NNS_G3dGeBufferOP_N
ldr r0, _021F6378 ; =0x45800000
add r1, r7, #0
bl _fmul
bl _ffix
lsl r0, r0, #0x10
lsr r1, r0, #0x10
mov r0, #0x3a
lsl r0, r0, #0x1a
orr r0, r1
str r0, [sp, #0x14]
mov r0, #0
str r0, [sp, #0x18]
mov r0, #0x23
add r1, sp, #0x14
mov r2, #2
bl NNS_G3dGeBufferOP_N
ldr r1, _021F6360 ; =ov96_0221E5A0
ldr r0, [r4]
ldr r2, [r1]
ldr r1, [r4, #4]
lsl r0, r0, #0xa
lsl r1, r1, #5
orr r1, r2
orr r0, r1
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
mov r0, #0x20
add r1, sp, #0x10
mov r2, #1
bl NNS_G3dGeBufferOP_N
ldr r0, _021F6360 ; =ov96_0221E5A0
mov r1, #0x1f
ldr r0, [r0]
add r0, r0, #1
bl _s32_div_f
ldr r0, _021F6360 ; =ov96_0221E5A0
str r1, [r0]
ldr r0, [r4, #4]
mov r1, #0x1f
add r0, r0, #1
bl _s32_div_f
str r1, [r4, #4]
ldr r0, [r4]
mov r1, #0x1f
add r0, r0, #1
bl _s32_div_f
add r6, r6, #1
add r5, r5, #4
str r1, [r4]
cmp r6, #0x80
ble _021F624E
mov r0, #0xe
lsl r0, r0, #0xc
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
mov r0, #0x23
add r1, sp, #8
mov r2, #2
bl NNS_G3dGeBufferOP_N
ldr r0, _021F6368 ; =0xE800E000
add r1, sp, #0
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
mov r0, #0x23
mov r2, #2
bl NNS_G3dGeBufferOP_N
mov r1, #0
mov r0, #0x41
add r2, r1, #0
bl NNS_G3dGeBufferOP_N
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
nop
_021F6358: .word ov96_0221C0E8
_021F635C: .word 0x00310081
_021F6360: .word ov96_0221E5A0
_021F6364: .word ov96_0221DC10
_021F6368: .word 0xE800E000
_021F636C: .word 0x40500000
_021F6370: .word 0x40100000
_021F6374: .word 0x40600000
_021F6378: .word 0x45800000
thumb_func_end ov96_021F61C8
thumb_func_start ov96_021F637C
ov96_021F637C: ; 0x021F637C
push {r4, lr}
add r4, r0, #0
bl Thunk_G3X_Reset
bl Camera_PushLookAtToNNSGlb
add r0, r4, #0
bl ov96_021F61C8
mov r0, #0
add r1, r0, #0
bl sub_02026E50
pop {r4, pc}
thumb_func_end ov96_021F637C
thumb_func_start ov96_021F6398
ov96_021F6398: ; 0x021F6398
push {r3, r4, lr}
sub sp, #0x2c
ldr r3, _021F6420 ; =ov96_0221C0F4
add r4, r0, #0
ldmia r3!, {r0, r1}
add r2, sp, #0x14
stmia r2!, {r0, r1}
ldr r0, [r3]
mov r1, #0x65
str r0, [r2]
lsl r1, r1, #2
mov r2, #0
str r2, [r4, r1]
add r0, r1, #4
str r2, [r4, r0]
add r0, r1, #0
add r0, #8
str r2, [r4, r0]
add r0, sp, #0xc
strh r2, [r0]
strh r2, [r0, #2]
strh r2, [r0, #4]
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
sub r0, r1, #4
ldr r0, [r4, r0]
add r2, sp, #0xc
str r0, [sp, #8]
add r0, r4, r1
mov r1, #0x19
lsl r1, r1, #0xe
mov r3, #0xa4
bl Camera_Init_FromTargetDistanceAndAngle
mov r1, #0x19
lsl r1, r1, #4
ldr r1, [r4, r1]
add r0, sp, #0x14
bl Camera_OffsetLookAtPosAndTarget
mov r2, #0x19
mov r0, #1
lsl r2, r2, #4
lsl r0, r0, #0xe
ldr r2, [r4, r2]
lsl r1, r0, #6
bl Camera_SetPerspectiveClippingPlane
mov r1, #0
mov r0, #1
lsl r0, r0, #0xc
str r0, [sp, #0x24]
str r1, [sp, #0x20]
str r1, [sp, #0x28]
mov r1, #0x19
lsl r1, r1, #4
ldr r1, [r4, r1]
add r0, sp, #0x20
bl Camera_SetLookAtCamUp
mov r0, #0x19
lsl r0, r0, #4
ldr r0, [r4, r0]
bl Camera_SetStaticPtr
add sp, #0x2c
pop {r3, r4, pc}
.balign 4, 0
_021F6420: .word ov96_0221C0F4
thumb_func_end ov96_021F6398
thumb_func_start ov96_021F6424
ov96_021F6424: ; 0x021F6424
push {r3, r4, r5, r6, r7, lr}
mov r1, #0
add r2, r1, #0
mov r3, #1
add r4, r0, #0
bl ov96_021F6524
mov r1, #1
add r0, r4, #0
add r2, r1, #0
mov r3, #2
bl ov96_021F6524
mov r1, #2
add r0, r4, #0
add r2, r1, #0
mov r3, #0
bl ov96_021F6524
mov r2, #2
lsl r2, r2, #0xa
mov r3, #6
mov r0, #0
lsl r3, r3, #8
lsr r5, r2, #2
lsr r6, r2, #1
_021F6458:
ldr r7, [r4, r5]
str r7, [r4]
ldr r1, [r4, r6]
cmp r7, r1
ble _021F6464
str r1, [r4]
_021F6464:
ldr r7, [r4, r3]
ldr r1, [r4]
cmp r1, r7
ble _021F646E
str r7, [r4]
_021F646E:
ldr r7, [r4, r2]
ldr r1, [r4]
cmp r1, r7
ble _021F6478
str r7, [r4]
_021F6478:
mov r1, #0xa
lsl r1, r1, #8
ldr r7, [r4, r1]
ldr r1, [r4]
cmp r1, r7
ble _021F6486
str r7, [r4]
_021F6486:
mov r1, #3
lsl r1, r1, #0xa
ldr r7, [r4, r1]
ldr r1, [r4]
cmp r1, r7
ble _021F6494
str r7, [r4]
_021F6494:
add r0, r0, #1
add r4, r4, #4
cmp r0, #0x80
blt _021F6458
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F6424
thumb_func_start ov96_021F64A0
ov96_021F64A0: ; 0x021F64A0
push {r4, r5, r6, r7}
mov r4, #1
mov r5, #2
mov r6, #4
mov r3, #0
and r4, r1
and r5, r1
and r1, r6
_021F64B0:
mov r6, #0
str r6, [r2]
cmp r4, #0
beq _021F64D4
mov r6, #2
lsl r6, r6, #8
ldr r7, [r0, r6]
ldr r6, [r2]
cmp r6, r7
ble _021F64C6
str r7, [r2]
_021F64C6:
mov r6, #2
lsl r6, r6, #0xa
ldr r7, [r0, r6]
ldr r6, [r2]
cmp r6, r7
ble _021F64D4
str r7, [r2]
_021F64D4:
cmp r5, #0
beq _021F64F4
mov r6, #1
lsl r6, r6, #0xa
ldr r7, [r0, r6]
ldr r6, [r2]
cmp r6, r7
ble _021F64E6
str r7, [r2]
_021F64E6:
mov r6, #0xa
lsl r6, r6, #8
ldr r7, [r0, r6]
ldr r6, [r2]
cmp r6, r7
ble _021F64F4
str r7, [r2]
_021F64F4:
cmp r1, #0
beq _021F6514
mov r6, #6
lsl r6, r6, #8
ldr r7, [r0, r6]
ldr r6, [r2]
cmp r6, r7
ble _021F6506
str r7, [r2]
_021F6506:
mov r6, #3
lsl r6, r6, #0xa
ldr r7, [r0, r6]
ldr r6, [r2]
cmp r6, r7
ble _021F6514
str r7, [r2]
_021F6514:
add r3, r3, #1
add r2, r2, #4
add r0, r0, #4
cmp r3, #0x80
blt _021F64B0
pop {r4, r5, r6, r7}
bx lr
.balign 4, 0
thumb_func_end ov96_021F64A0
thumb_func_start ov96_021F6524
ov96_021F6524: ; 0x021F6524
push {r0, r1, r2, r3}
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r3, sp, #0x20
ldrb r4, [r3, #0xc]
add r2, r0, #0
add r0, r1, #0
mov r1, #0xe
lsl r1, r1, #8
ldrb r3, [r3, #8]
lsl r5, r4, #2
add r1, r2, r1
lsl r4, r3, #2
add r7, r1, r5
ldr r3, [r1, r4]
ldr r5, [r1, r5]
cmp r3, r5
bgt _021F6550
add r6, r1, r4
add r5, sp, #0x28
add r1, sp, #0x2c
b _021F6558
_021F6550:
add r6, r7, #0
add r7, r1, r4
add r5, sp, #0x2c
add r1, sp, #0x28
_021F6558:
lsl r0, r0, #9
add r3, r2, r0
mov ip, r1
mov r1, #0
mov r0, #2
str r3, [sp]
add r4, r1, #0
lsl r0, r0, #0xa
_021F6568:
add r1, r1, #1
str r4, [r3, r0]
add r3, r3, #4
cmp r1, #0x80
blt _021F6568
ldrb r1, [r5]
ldr r0, [r6]
lsl r1, r1, #9
add r3, r2, r1
lsl r1, r0, #2
add r3, r3, r1
mov r1, #2
lsl r1, r1, #8
ldr r5, [r3, r1]
mov r3, ip
ldrb r3, [r3]
ldr r1, [r7]
lsl r3, r3, #9
add r3, r2, r3
lsl r2, r1, #2
add r3, r3, r2
mov r2, #2
lsl r2, r2, #8
ldr r2, [r3, r2]
sub r0, r1, r0
str r0, [sp, #4]
sub r0, r0, #1
sub r7, r2, r5
str r0, [sp, #8]
cmp r0, #0
ble _021F65C8
_021F65A6:
add r0, r4, #1
ldr r1, [sp, #4]
mul r0, r7
bl _s32_div_f
ldr r1, [r6]
add r0, r5, r0
add r1, r1, r4
lsl r2, r1, #2
ldr r1, [sp]
add r4, r4, #1
add r2, r1, r2
ldr r1, _021F65D4 ; =0x00000804
str r0, [r2, r1]
ldr r0, [sp, #8]
cmp r4, r0
blt _021F65A6
_021F65C8:
add sp, #0xc
pop {r4, r5, r6, r7}
pop {r3}
add sp, #0x10
bx r3
nop
_021F65D4: .word 0x00000804
thumb_func_end ov96_021F6524
thumb_func_start ov96_021F65D8
ov96_021F65D8: ; 0x021F65D8
ldrh r1, [r0, #0x24]
cmp r1, #5
bhs _021F65E2
add r1, r1, #1
strh r1, [r0, #0x24]
_021F65E2:
ldrh r2, [r0, #0x20]
ldrh r1, [r0, #0x24]
add r1, r2, r1
strh r1, [r0, #0x20]
ldrh r2, [r0, #0x20]
ldr r1, _021F65FC ; =0x000003E7
cmp r2, r1
bls _021F65F4
strh r1, [r0, #0x20]
_021F65F4:
ldrh r0, [r0, #0x24]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
.balign 4, 0
_021F65FC: .word 0x000003E7
thumb_func_end ov96_021F65D8
thumb_func_start ov96_021F6600
ov96_021F6600: ; 0x021F6600
push {r4, r5, r6, r7, lr}
sub sp, #0x3c
str r0, [sp, #8]
add r5, r1, #0
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x10]
mov r4, #0
_021F6614:
lsl r2, r4, #0x18
ldr r0, [sp, #8]
add r1, r5, #0
lsr r2, r2, #0x18
bl ov96_021F6798
add r4, r4, #1
cmp r4, #3
blt _021F6614
mov r0, #0
str r0, [sp, #0xc]
add r0, r5, #0
str r0, [sp, #0x14]
add r0, #0x90
ldr r7, _021F6780 ; =ov96_0221DC18
str r5, [sp, #0x1c]
str r5, [sp, #0x18]
str r0, [sp, #0x14]
_021F6638:
ldr r0, [sp, #0x1c]
ldr r1, [sp, #0x1c]
add r0, #0x90
ldr r4, [r0]
add r0, sp, #0x24
str r0, [sp]
add r1, #0xac
ldr r2, [r1]
ldr r3, _021F6784 ; =0x00000FB4
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
ldr r2, [sp, #0x18]
add r0, r4, #0
ldr r2, [r2, r3]
asr r1, r1, #0xc
lsl r3, r2, #6
mov r2, #0x12
lsl r2, r2, #0x10
sub r2, r2, r3
asr r3, r2, #0xb
lsr r3, r3, #0x14
add r3, r2, r3
asr r2, r3, #0xc
add r3, sp, #0x28
bl ov96_021EB0A4
add r0, sp, #0x34
str r0, [sp]
add r0, sp, #0x2c
str r0, [sp, #4]
ldr r1, [sp, #0x28]
ldr r2, [sp, #0x24]
add r0, r4, #0
lsl r1, r1, #0xc
lsl r2, r2, #0xc
add r3, sp, #0x30
bl ov96_021EAF78
ldr r0, [sp, #0xc]
mov r4, #0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r4, [sp, #0x38]
str r0, [sp, #0x20]
_021F6692:
add r0, r5, #0
add r0, #0x8c
lsl r1, r4, #0x18
ldr r0, [r0]
lsr r1, r1, #0x18
bl ov96_021F75E0
cmp r0, #0
beq _021F671C
add r0, r5, #0
add r0, #0x8c
lsl r1, r4, #0x18
ldr r0, [r0]
lsr r1, r1, #0x18
bl ov96_021F75D4
ldr r1, [sp, #0x2c]
mov r3, #2
add r2, r0, #0
add r0, sp, #0x30
lsl r1, r1, #0xc
lsl r3, r3, #0xe
bl ov96_021F6060
cmp r0, #0
beq _021F671C
add r0, r5, #0
add r0, #0x8c
lsl r1, r4, #0x18
ldr r0, [r0]
lsr r1, r1, #0x18
bl ov96_021F75BC
ldr r0, [sp, #0x14]
bl ov96_021F65D8
add r6, r0, #0
add r0, r5, #0
add r0, #0x8c
lsl r1, r4, #0x18
ldr r0, [r0]
lsr r1, r1, #0x18
add r2, r6, #0
bl ov96_021F75E8
ldr r0, _021F6788 ; =0x00000142
mov r1, #1
strb r1, [r5, r0]
ldrb r1, [r7]
ldr r0, _021F678C ; =0x0000088D
bl sub_0200606C
ldr r2, _021F6790 ; =ov96_0221C110
lsl r3, r6, #2
add r2, r2, r3
sub r2, r2, #4
ldrb r0, [r7]
ldr r1, _021F6794 ; =0x0000FFFF
ldr r2, [r2]
bl sub_02005944
mov r0, #1
str r0, [sp]
ldr r0, [sp, #8]
ldr r1, [sp, #0x10]
ldr r2, [sp, #0x20]
mov r3, #3
bl ov96_021E8228
_021F671C:
add r4, r4, #1
cmp r4, #0x1d
blt _021F6692
ldr r0, [sp, #0x1c]
add r7, r7, #1
add r0, #0x38
str r0, [sp, #0x1c]
ldr r0, [sp, #0x18]
add r0, #0x1c
str r0, [sp, #0x18]
ldr r0, [sp, #0x14]
add r0, #0x38
str r0, [sp, #0x14]
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, #3
bge _021F6742
b _021F6638
_021F6742:
mov r1, #0
add r0, r1, #0
_021F6746:
add r2, r5, #0
add r2, #0xb6
ldrb r2, [r2]
cmp r2, #0
beq _021F6774
add r2, r5, #0
add r2, #0xb7
ldrb r2, [r2]
sub r3, r2, #1
add r2, r5, #0
add r2, #0xb7
strb r3, [r2]
add r2, r5, #0
add r2, #0xb7
ldrb r2, [r2]
cmp r2, #0
bne _021F6774
add r2, r5, #0
add r2, #0xb7
strb r0, [r2]
add r2, r5, #0
add r2, #0xb6
strb r0, [r2]
_021F6774:
add r1, r1, #1
add r5, #0x38
cmp r1, #3
blt _021F6746
add sp, #0x3c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021F6780: .word ov96_0221DC18
_021F6784: .word 0x00000FB4
_021F6788: .word 0x00000142
_021F678C: .word 0x0000088D
_021F6790: .word ov96_0221C110
_021F6794: .word 0x0000FFFF
thumb_func_end ov96_021F6600
thumb_func_start ov96_021F6798
ov96_021F6798: ; 0x021F6798
push {r4, r5, r6, r7, lr}
sub sp, #0x1fc
sub sp, #0x20
add r6, r1, #0
ldr r1, _021F6A5C ; =0x00000FAC
add r5, r2, #0
add r2, r6, r1
mov r1, #0x1c
mul r1, r5
add r4, r2, r1
ldr r1, [r4, #0x14]
str r0, [sp, #4]
cmp r1, #0
bne _021F67B6
b _021F6B20
_021F67B6:
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xc]
lsl r0, r5, #2
add r1, r6, r0
mov r0, #0xfa
lsl r0, r0, #4
ldr r7, [r1, r0]
cmp r5, #0
beq _021F67D8
cmp r5, #1
beq _021F67DC
cmp r5, #2
beq _021F67E0
b _021F67E4
_021F67D8:
mov r1, #6
b _021F67EE
_021F67DC:
mov r1, #5
b _021F67EE
_021F67E0:
mov r1, #3
b _021F67EE
_021F67E4:
bl GF_AssertFail
add sp, #0x1fc
add sp, #0x20
pop {r4, r5, r6, r7, pc}
_021F67EE:
mov r0, #0x1a
lsl r0, r0, #4
add r0, r6, r0
add r2, sp, #0x1c
bl ov96_021F64A0
ldr r0, [r4, #0x10]
cmp r0, #0
ldr r0, [r4, #0x18]
bne _021F6804
b _021F6908
_021F6804:
cmp r0, #0
bgt _021F683C
bl GF_AssertFail
mov r3, #0
str r3, [r4, #0x10]
lsl r1, r7, #2
add r0, sp, #0x1c
ldr r0, [r0, r1]
mov r1, #0x38
str r0, [r4, #8]
str r3, [r4, #0x18]
mul r1, r5
str r3, [r4, #0x14]
add r1, r6, r1
lsl r2, r7, #0x18
str r3, [r4]
mov r0, #1
add r1, #0xb8
strb r0, [r1]
add r0, r6, #0
add r1, r5, #0
lsr r2, r2, #0x18
bl ov96_021F6BE4
add sp, #0x1fc
add sp, #0x20
pop {r4, r5, r6, r7, pc}
_021F683C:
ldr r1, [r4, #8]
ldr r0, [r4]
add r0, r1, r0
str r0, [r4, #8]
mov r0, #0x38
mul r0, r5
str r0, [sp, #8]
add r0, r6, r0
add r0, #0xa8
ldr r0, [r0]
cmp r0, #0
beq _021F6862
add r1, r6, #0
ldr r0, [sp, #8]
add r1, #0x90
add r0, r1, r0
add r1, r4, #0
bl ov96_021F6B28
_021F6862:
add r3, sp, #0x1c
lsl r2, r7, #2
ldr r1, [r3, r2]
ldr r0, [r4, #8]
cmp r0, r1
ble _021F6890
ldr r0, [r4]
bl _dflt
ldr r3, _021F6A60 ; =0x40600000
mov r2, #0
bl _dsub
bl _dfix
str r0, [r4]
ldr r1, [r4, #0x18]
neg r0, r0
cmp r0, r1
ble _021F6894
neg r0, r1
str r0, [r4]
b _021F6AD6
_021F6890:
cmp r0, r1
ble _021F6896
_021F6894:
b _021F6AD6
_021F6896:
ldr r0, [r4]
cmp r0, #0
bne _021F68BA
mov r0, #0
str r0, [r4, #0x10]
ldr r0, [r3, r2]
lsl r2, r7, #0x18
str r0, [r4, #8]
mov r0, #0
str r0, [r4, #0x18]
str r0, [r4, #0x14]
add r0, r6, #0
add r1, r5, #0
lsr r2, r2, #0x18
mov r3, #0
bl ov96_021F6BE4
b _021F6AD6
_021F68BA:
bge _021F68E8
mov r0, #0
str r0, [r4, #0x10]
add r1, r6, #0
ldr r0, [sp, #8]
add r1, #0x90
add r0, r1, r0
bl ov96_021F7130
ldr r0, [r4]
bl _dflt
ldr r3, _021F6A64 ; =0xC0600000
mov r2, #0
bl _dgr
bls _021F68E2
mov r0, #0x7f
mvn r0, r0
str r0, [r4]
_021F68E2:
ldr r0, [r4]
str r0, [r4, #0x18]
b _021F6AD6
_021F68E8:
mov r0, #0
str r0, [r4, #0x10]
ldr r0, [r3, r2]
lsl r2, r7, #0x18
str r0, [r4, #8]
mov r0, #0
str r0, [r4, #0x18]
str r0, [r4, #0x14]
str r0, [r4]
add r0, r6, #0
add r1, r5, #0
lsr r2, r2, #0x18
mov r3, #0
bl ov96_021F6BE4
b _021F6AD6
_021F6908:
cmp r0, #0
ble _021F6910
bl GF_AssertFail
_021F6910:
ldr r1, [r4, #8]
ldr r0, [r4]
add r0, r1, r0
str r0, [r4, #8]
bl _dflt
ldr r3, _021F6A68 ; =0xC0B80000
mov r2, #0
bl _dls
bhs _021F692E
ldr r0, _021F6A6C ; =0xFFFFE800
str r0, [r4, #8]
mov r0, #0
str r0, [r4]
_021F692E:
lsl r0, r7, #2
add r1, sp, #0x1c
str r0, [sp, #0x10]
ldr r1, [r1, r0]
ldr r0, [r4, #8]
cmp r0, r1
blt _021F6A28
lsl r2, r7, #0x18
add r0, r6, #0
add r1, r5, #0
lsr r2, r2, #0x18
mov r3, #0
bl ov96_021F6BE4
mov r0, #0x38
add r1, r6, #0
mul r0, r5
str r1, [sp, #0x18]
add r1, #0xb8
str r0, [sp, #0x14]
ldrb r0, [r1, r0]
str r1, [sp, #0x18]
cmp r0, #0
beq _021F6972
ldr r0, [sp, #0x14]
ldr r1, [r4]
add r0, r6, r0
add r0, #0xbc
ldr r0, [r0]
mul r0, r1
mov r1, #0xc
bl _s32_div_f
str r0, [r4]
_021F6972:
ldr r1, [r4]
ldr r0, _021F6A70 ; =0x00000898
cmp r1, r0
ble _021F697C
str r0, [r4]
_021F697C:
ldr r1, [r4]
lsl r0, r1, #3
add r0, r1, r0
mov r1, #0xa
bl _s32_div_f
str r0, [r4]
cmp r0, #0
bne _021F69C0
ldr r1, [sp, #0x18]
ldr r0, [sp, #0x14]
ldrb r0, [r1, r0]
cmp r0, #0
beq _021F69A2
ldr r1, _021F6A74 ; =ov96_0221DC18
ldr r0, _021F6A78 ; =0x000005F3
ldrb r1, [r1, #3]
bl sub_0200606C
_021F69A2:
mov r3, #0
ldr r0, [sp, #0x10]
str r3, [r4, #0x10]
add r1, sp, #0x1c
ldr r0, [r1, r0]
lsl r2, r7, #0x18
str r0, [r4, #8]
str r3, [r4, #0x18]
add r0, r6, #0
add r1, r5, #0
lsr r2, r2, #0x18
str r3, [r4, #0x14]
bl ov96_021F6BE4
b _021F6AD6
_021F69C0:
bgt _021F69C4
b _021F6AD6
_021F69C4:
bl _dflt
ldr r3, _021F6A7C ; =0x40960000
mov r2, #0
bl _dleq
bhi _021F69FC
ldr r1, [sp, #0x18]
ldr r0, [sp, #0x14]
ldrb r0, [r1, r0]
cmp r0, #0
bne _021F69FC
mov r3, #0
ldr r0, [sp, #0x10]
str r3, [r4, #0x10]
add r1, sp, #0x1c
ldr r0, [r1, r0]
lsl r2, r7, #0x18
str r0, [r4, #8]
str r3, [r4, #0x18]
str r3, [r4]
add r0, r6, #0
add r1, r5, #0
lsr r2, r2, #0x18
str r3, [r4, #0x14]
bl ov96_021F6BE4
b _021F6AD6
_021F69FC:
mov r0, #1
str r0, [r4, #0x10]
ldr r0, [r4]
ldr r1, [sp, #0x18]
str r0, [r4, #0x18]
ldr r0, [sp, #0x14]
mov r2, #0
strb r2, [r1, r0]
ldr r1, _021F6A74 ; =ov96_0221DC18
ldr r0, _021F6A80 ; =0x00000656
ldrb r1, [r1, #3]
bl sub_0200606C
mov r0, #1
str r0, [sp]
ldr r0, [sp, #4]
ldr r1, [sp, #0xc]
add r2, r5, #0
mov r3, #2
bl ov96_021E8228
b _021F6AD6
_021F6A28:
cmp r0, r1
bge _021F6AD6
ldr r0, [r4]
cmp r0, #0
bge _021F6A4E
bl _dflt
ldr r2, _021F6A84 ; =0x9999999A
ldr r3, _021F6A88 ; =0x40899999
bl _dadd
bl _dfix
str r0, [r4]
cmp r0, #0
blt _021F6AD6
mov r0, #0
str r0, [r4]
b _021F6AD6
_021F6A4E:
blt _021F6AD6
bl _dflt
ldr r2, _021F6A8C ; =0x55555555
ldr r3, _021F6A90 ; =0x40755555
b _021F6A94
nop
_021F6A5C: .word 0x00000FAC
_021F6A60: .word 0x40600000
_021F6A64: .word 0xC0600000
_021F6A68: .word 0xC0B80000
_021F6A6C: .word 0xFFFFE800
_021F6A70: .word 0x00000898
_021F6A74: .word ov96_0221DC18
_021F6A78: .word 0x000005F3
_021F6A7C: .word 0x40960000
_021F6A80: .word 0x00000656
_021F6A84: .word 0x9999999A
_021F6A88: .word 0x40899999
_021F6A8C: .word 0x55555555
_021F6A90: .word 0x40755555
_021F6A94:
bl _dadd
bl _dfix
str r0, [r4]
ldr r0, [r4, #0x18]
cmp r0, #0
blt _021F6ACC
bl GF_AssertFail
mov r3, #0
lsl r2, r7, #0x18
ldr r0, [sp, #0x10]
str r3, [r4, #0x10]
add r1, sp, #0x1c
ldr r0, [r1, r0]
add r1, r5, #0
str r0, [r4, #8]
str r3, [r4, #0x18]
str r3, [r4, #0x14]
add r0, r6, #0
lsr r2, r2, #0x18
str r3, [r4]
bl ov96_021F6BE4
add sp, #0x1fc
add sp, #0x20
pop {r4, r5, r6, r7, pc}
_021F6ACC:
neg r1, r0
ldr r0, [r4]
cmp r0, r1
ble _021F6AD6
str r1, [r4]
_021F6AD6:
ldr r0, [r4, #0x10]
cmp r0, #0
beq _021F6AE8
ldr r0, [r4, #0x14]
cmp r0, #0
beq _021F6AE8
ldr r0, [r4]
cmp r0, #0
bne _021F6AF4
_021F6AE8:
mov r1, #0x38
mul r1, r5
add r1, r6, r1
mov r0, #0
add r1, #0xb4
strh r0, [r1]
_021F6AF4:
ldr r0, [r4, #0x10]
cmp r0, #0
bne _021F6B0E
ldr r0, [r4, #0x14]
cmp r0, #0
beq _021F6B0E
lsl r2, r7, #0x18
ldr r3, [r4, #8]
add r0, r6, #0
add r1, r5, #0
lsr r2, r2, #0x18
bl ov96_021F6BE4
_021F6B0E:
ldr r0, [r4, #0x14]
cmp r0, #0
bne _021F6B20
mov r0, #0x38
mul r0, r5
add r0, r6, r0
mov r1, #1
add r0, #0xb8
strb r1, [r0]
_021F6B20:
add sp, #0x1fc
add sp, #0x20
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F6798
thumb_func_start ov96_021F6B28
ov96_021F6B28: ; 0x021F6B28
ldr r1, [r1, #8]
cmp r1, #0
ble _021F6B4C
ldr r2, [r0, #8]
ldr r1, [r0, #0x18]
add r2, r2, r1
mov r1, #2
lsl r1, r1, #0x10
str r2, [r0, #0x1c]
cmp r2, r1
bge _021F6B42
str r1, [r0, #0x1c]
bx lr
_021F6B42:
mov r1, #0xdf
lsl r1, r1, #0xc
cmp r2, r1
ble _021F6B4C
str r1, [r0, #0x1c]
_021F6B4C:
bx lr
.balign 4, 0
thumb_func_end ov96_021F6B28
thumb_func_start ov96_021F6B50
ov96_021F6B50: ; 0x021F6B50
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r7, r0, #0
neg r0, r1
str r0, [sp, #4]
mov r0, #0x7f
str r2, [sp]
sub r4, r0, r7
mov r6, #0
cmp r7, #0
ble _021F6B82
add r5, r2, #0
_021F6B68:
add r0, r6, #1
lsl r0, r0, #0x18
ldr r1, [sp, #4]
lsr r0, r0, #0x18
mul r0, r1
add r1, r7, #1
bl _s32_div_f
neg r0, r0
add r6, r6, #1
stmia r5!, {r0}
cmp r6, r7
blt _021F6B68
_021F6B82:
mov r5, #0
cmp r4, #0
ble _021F6BAC
add r6, r7, #1
_021F6B8A:
sub r0, r4, r5
lsl r0, r0, #0x18
ldr r1, [sp, #4]
lsr r0, r0, #0x18
mul r0, r1
add r1, r4, #1
bl _s32_div_f
add r1, r6, r5
lsl r1, r1, #0x18
lsr r2, r1, #0x16
ldr r1, [sp]
neg r0, r0
add r5, r5, #1
str r0, [r1, r2]
cmp r5, r4
blt _021F6B8A
_021F6BAC:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021F6B50
thumb_func_start ov96_021F6BB0
ov96_021F6BB0: ; 0x021F6BB0
push {r4, r5}
mov r1, #0x1a
lsl r1, r1, #4
add r2, r0, r1
ldr r3, _021F6BE0 ; =0x00000FAC
mov r4, #0xe
add r0, r0, r3
mov r1, #0
add r3, r2, #0
lsl r4, r4, #8
_021F6BC4:
ldr r5, [r0, #0x14]
cmp r5, #0
bne _021F6BD2
ldr r5, [r3, r4]
lsl r5, r5, #2
ldr r5, [r2, r5]
str r5, [r0, #8]
_021F6BD2:
add r1, r1, #1
add r0, #0x1c
add r3, r3, #4
cmp r1, #3
blt _021F6BC4
pop {r4, r5}
bx lr
.balign 4, 0
_021F6BE0: .word 0x00000FAC
thumb_func_end ov96_021F6BB0
thumb_func_start ov96_021F6BE4
ov96_021F6BE4: ; 0x021F6BE4
push {r3, r4, r5, r6, r7, lr}
add r4, r0, #0
lsl r6, r1, #9
add r7, r3, #0
mov r1, #0x3a
mov r3, #0
add r0, r2, #0
add r5, r4, r6
add r2, r3, #0
lsl r1, r1, #4
_021F6BF8:
add r3, r3, #1
str r2, [r5, r1]
add r5, r5, #4
cmp r3, #0x80
blt _021F6BF8
mov r1, #0x3a
lsl r1, r1, #4
add r1, r4, r1
add r2, r1, r6
lsl r1, r0, #2
str r7, [r2, r1]
ldr r1, [r2, r1]
bl ov96_021F6B50
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F6BE4
thumb_func_start ov96_021F6C18
ov96_021F6C18: ; 0x021F6C18
push {r4, lr}
sub sp, #8
mov r2, #3
mov r1, #0xa8
mov r3, #0x65
add r4, r0, #0
str r2, [sp]
bl ov96_021EB2BC
mov r0, #3
str r0, [sp]
mov r0, #4
str r0, [sp, #4]
add r0, r4, #0
mov r1, #0xa8
mov r2, #0
mov r3, #0x65
bl ov96_021EB2F4
add r0, r4, #0
mov r1, #0xa8
mov r2, #2
mov r3, #0x65
bl ov96_021EB334
add r0, r4, #0
mov r1, #0xa8
mov r2, #1
mov r3, #0x65
bl ov96_021EB36C
add sp, #8
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021F6C18
thumb_func_start ov96_021F6C5C
ov96_021F6C5C: ; 0x021F6C5C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r0, [sp, #4]
add r0, #0x8c
ldr r0, [r0]
add r5, r1, #0
mov r2, #2
bl ov96_021F74D0
mov r2, #3
add r0, r5, #0
mov r1, #1
mov r3, #0x65
str r2, [sp]
bl ov96_021EB3E4
ldr r1, [sp, #4]
str r0, [r1, #0x64]
mov r1, #0xc
bl ov96_021EB564
ldr r0, [sp, #4]
mov r1, #1
ldr r0, [r0, #0x64]
add r2, r1, #0
bl ov96_021EB52C
ldr r4, [sp, #4]
mov r6, #0
mov r7, #4
_021F6C98:
add r0, r5, #0
mov r1, #1
mov r2, #3
mov r3, #0x65
str r7, [sp]
bl ov96_021EB3E4
add r1, r6, #0
str r0, [r4, #0x68]
add r1, #0xd
bl ov96_021EB564
mov r1, #1
ldr r0, [r4, #0x68]
add r2, r1, #0
bl ov96_021EB52C
add r6, r6, #1
add r4, r4, #4
cmp r6, #4
blt _021F6C98
ldr r4, [sp, #4]
mov r6, #0
mov r7, #7
_021F6CC8:
add r0, r5, #0
mov r1, #1
mov r2, #3
mov r3, #0x65
str r7, [sp]
bl ov96_021EB3E4
add r1, r4, #0
add r1, #0x94
str r0, [r1]
add r0, r4, #0
add r0, #0x94
ldr r0, [r0]
mov r1, #0xb
bl ov96_021EB564
add r0, r4, #0
add r0, #0x94
ldr r0, [r0]
mov r1, #9
bl ov96_021EB630
add r6, r6, #1
add r4, #0x38
cmp r6, #4
blt _021F6CC8
ldr r4, [sp, #4]
mov r6, #0
mov r7, #8
_021F6D02:
str r7, [sp]
add r0, r5, #0
mov r1, #1
mov r2, #3
mov r3, #0x65
bl ov96_021EB3E4
str r0, [r4, #0x78]
mov r1, #9
bl ov96_021EB564
ldr r0, [r4, #0x78]
mov r1, #6
bl ov96_021EB630
add r6, r6, #1
add r4, r4, #4
cmp r6, #4
blt _021F6D02
mov r0, #0
ldr r4, [sp, #4]
ldr r7, _021F6D9C ; =ov96_0221C0B0
ldr r6, _021F6DA0 ; =ov96_0221C0B4
str r0, [sp, #8]
_021F6D32:
add r0, r5, #0
bl ov96_021EB5E8
add r1, r0, #0
mov r0, #0x62
ldr r3, [sp, #4]
ldr r2, [sp, #4]
lsl r0, r0, #2
ldr r0, [r2, r0]
ldr r3, [r3, #0x54]
mov r2, #1
bl ov96_021EA634
add r1, r4, #0
add r1, #0x84
str r0, [r1]
add r0, r4, #0
add r0, #0x84
ldr r0, [r0]
mov r1, #1
bl Set2dSpriteVisibleFlag
ldrb r0, [r7]
add r1, sp, #0xc
lsl r0, r0, #0xc
str r0, [sp, #0xc]
mov r0, #2
lsl r0, r0, #0xe
str r0, [sp, #0x10]
mov r0, #0
str r0, [sp, #0x14]
add r0, r4, #0
add r0, #0x84
ldr r0, [r0]
bl Sprite_SetMatrix
add r0, r4, #0
add r0, #0x84
ldrb r1, [r6]
ldr r0, [r0]
bl Set2dSpriteAnimSeqNo
ldr r0, [sp, #8]
add r4, r4, #4
add r0, r0, #1
add r7, r7, #1
add r6, r6, #1
str r0, [sp, #8]
cmp r0, #2
blt _021F6D32
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_021F6D9C: .word ov96_0221C0B0
_021F6DA0: .word ov96_0221C0B4
thumb_func_end ov96_021F6C5C
thumb_func_start ov96_021F6DA4
ov96_021F6DA4: ; 0x021F6DA4
push {r4, r5, r6, r7, lr}
sub sp, #0x34
add r5, r0, #0
str r1, [sp]
add r0, #0x8c
ldr r0, [r0]
bl ov96_021F7544
ldr r4, _021F6E2C ; =ov96_0221C0C4
add r3, sp, #0x28
ldmia r4!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r4]
add r1, r2, #0
str r0, [r3]
ldr r0, [r5, #0x64]
bl ov96_021EB588
ldr r4, _021F6E30 ; =ov96_0221C0DC
add r3, sp, #0x1c
ldmia r4!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r4]
add r1, r2, #0
str r0, [r3]
ldr r0, [sp]
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x68]
bl ov96_021EB588
ldr r3, _021F6E34 ; =ov96_0221C0D0
mov r4, #0
ldmia r3!, {r0, r1}
add r2, sp, #4
stmia r2!, {r0, r1}
ldr r0, [r3]
add r6, r4, #0
str r0, [r2]
_021F6DF6:
add r3, sp, #4
ldmia r3!, {r0, r1}
add r2, sp, #0x10
add r7, r2, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r0, [sp]
cmp r6, r0
beq _021F6E20
ldr r1, [sp, #0x14]
lsl r0, r4, #0x10
add r0, r1, r0
str r0, [sp, #0x14]
ldr r0, [r5, #0x68]
add r1, r7, #0
bl ov96_021EB588
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
_021F6E20:
add r6, r6, #1
add r5, r5, #4
cmp r6, #4
blt _021F6DF6
add sp, #0x34
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021F6E2C: .word ov96_0221C0C4
_021F6E30: .word ov96_0221C0DC
_021F6E34: .word ov96_0221C0D0
thumb_func_end ov96_021F6DA4
thumb_func_start ov96_021F6E38
ov96_021F6E38: ; 0x021F6E38
push {r4, lr}
mov r1, #0
add r2, r1, #0
add r3, r0, #0
_021F6E40:
add r4, r3, #0
add r4, #0xb0
ldrh r4, [r4]
add r2, r2, #1
add r3, #0x38
add r1, r1, r4
lsl r1, r1, #0x10
lsr r1, r1, #0x10
cmp r2, #3
blt _021F6E40
ldr r2, _021F6E64 ; =0x000003E7
cmp r1, r2
bls _021F6E5C
add r1, r2, #0
_021F6E5C:
bl ov96_021F6E68
pop {r4, pc}
nop
_021F6E64: .word 0x000003E7
thumb_func_end ov96_021F6E38
thumb_func_start ov96_021F6E68
ov96_021F6E68: ; 0x021F6E68
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r6, r1, #0
add r5, r0, #0
add r0, r6, #0
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #3]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0]
mov r0, #0x64
mul r0, r4
sub r0, r6, r0
mov r1, #0xa
bl _s32_div_f
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #4]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0, #1]
add r0, r6, #0
mov r1, #0xa
bl _s32_div_f
lsl r0, r1, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #5]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0, #2]
mov r4, #0
mov r6, #4
mov r7, #8
_021F6EF2:
str r6, [sp]
str r7, [sp, #4]
ldr r0, [r5, #0x5c]
lsl r2, r4, #2
add r0, #0xc
str r0, [sp, #8]
add r0, sp, #0x1c
add r0, #3
ldrb r0, [r0, r4]
add r2, r2, #1
lsl r2, r2, #0x18
str r0, [sp, #0xc]
add r0, sp, #0x1c
ldrb r0, [r0, r4]
add r1, r6, #0
lsr r2, r2, #0x18
str r0, [sp, #0x10]
mov r0, #0x14
str r0, [sp, #0x14]
mov r0, #0x10
str r0, [sp, #0x18]
ldr r0, [r5]
mov r3, #0
bl CopyRectToBgTilemapRect
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _021F6EF2
ldr r0, [r5]
mov r1, #4
bl ScheduleBgTilemapBufferTransfer
add sp, #0x24
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F6E68
thumb_func_start ov96_021F6F3C
ov96_021F6F3C: ; 0x021F6F3C
push {r3, r4, r5, lr}
add r5, r0, #0
add r0, r1, #0
mov r1, #0x1e
bl _s32_div_f
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
add r1, r0, #0
add r0, r5, #0
add r0, #0x84
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r0]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
add r5, #0x88
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r5]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021F6F3C
thumb_func_start ov96_021F6F80
ov96_021F6F80: ; 0x021F6F80
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r7, r1, #0
mov r4, #0
str r0, [sp, #0x10]
add r5, r7, #4
add r6, r4, #0
_021F6F8E:
lsl r0, r4, #4
add r0, r5, r0
add r1, r6, #0
bl FillWindowPixelBuffer
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #5
blo _021F6F8E
ldr r0, [sp, #0x10]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x14]
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x14]
bl ov96_021E5F34
ldr r1, [r7, #0x54]
bl PlayerProfile_GetPlayerName_NewString
mov r1, #0
add r4, r0, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021F704C ; =0x000F0E00
add r2, r4, #0
str r0, [sp, #8]
add r0, r7, #4
add r3, r1, #0
str r1, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r4, #0
bl String_Delete
add r0, r7, #4
mov r4, #1
mov r5, #0
str r0, [sp, #0x18]
_021F6FE4:
ldr r0, [sp, #0x14]
cmp r5, r0
beq _021F7026
ldr r0, [sp, #0x10]
add r1, r5, #0
bl ov96_021E5F34
ldr r1, [r7, #0x54]
bl PlayerProfile_GetPlayerName_NewString
add r6, r0, #0
mov r0, #0
str r0, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021F704C ; =0x000F0E00
lsl r1, r4, #4
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
ldr r0, [sp, #0x18]
add r2, r6, #0
add r0, r0, r1
mov r1, #0
add r3, r1, #0
bl AddTextPrinterParameterizedWithColor
add r0, r6, #0
bl String_Delete
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
_021F7026:
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #4
blo _021F6FE4
mov r4, #0
add r5, r7, #4
_021F7034:
lsl r0, r4, #4
add r0, r5, r0
bl CopyWindowToVram
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #5
blo _021F7034
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
nop
_021F704C: .word 0x000F0E00
thumb_func_end ov96_021F6F80
thumb_func_start ov96_021F7050
ov96_021F7050: ; 0x021F7050
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r7, _021F70A8 ; =ov96_0221C1CC
mov r4, #0
add r6, r5, #4
_021F705A:
lsl r1, r4, #4
lsl r2, r4, #3
ldr r0, [r5]
add r1, r6, r1
add r2, r7, r2
bl AddWindow
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #5
blo _021F705A
mov r2, #0
str r2, [sp]
ldr r0, [r5]
mov r1, #6
mov r3, #1
bl BG_FillCharDataRange
mov r1, #0x1e
ldr r2, [r5, #0x54]
mov r0, #4
lsl r1, r1, #4
bl LoadFontPal0
mov r2, #0
str r2, [sp]
ldr r0, [r5]
mov r1, #3
mov r3, #1
bl BG_FillCharDataRange
mov r1, #0x1e
ldr r2, [r5, #0x54]
mov r0, #0
lsl r1, r1, #4
bl LoadFontPal0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F70A8: .word ov96_0221C1CC
thumb_func_end ov96_021F7050
thumb_func_start ov96_021F70AC
ov96_021F70AC: ; 0x021F70AC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
add r7, r1, #0
add r0, #0x44
mov r1, #0
bl FillWindowPixelBuffer
ldr r2, _021F7128 ; =0x00000135
ldr r3, [r5, #0x54]
mov r0, #1
mov r1, #0x1b
bl NewMsgDataFromNarc
add r4, r0, #0
ldr r0, [r5, #0x54]
bl MessageFormat_New
mov r1, #1
str r1, [sp]
str r1, [sp, #4]
mov r1, #0
add r2, r7, #0
mov r3, #3
add r6, r0, #0
bl BufferIntegerAsString
ldr r3, [r5, #0x54]
add r0, r6, #0
add r1, r4, #0
mov r2, #0xa1
bl ReadMsgData_ExpandPlaceholders
add r7, r0, #0
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021F712C ; =0x000F0E00
mov r1, #4
str r0, [sp, #8]
add r0, r5, #0
add r0, #0x44
add r2, r7, #0
str r3, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r7, #0
bl String_Delete
add r0, r6, #0
bl MessageFormat_Delete
add r0, r4, #0
bl DestroyMsgData
add r5, #0x44
add r0, r5, #0
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F7128: .word 0x00000135
_021F712C: .word 0x000F0E00
thumb_func_end ov96_021F70AC
thumb_func_start ov96_021F7130
ov96_021F7130: ; 0x021F7130
ldr r2, [r0, #0x18]
cmp r2, #0
beq _021F715A
ble _021F7148
mov r1, #2
lsl r1, r1, #0xc
sub r1, r2, r1
str r1, [r0, #0x18]
bpl _021F715A
mov r1, #0
str r1, [r0, #0x18]
bx lr
_021F7148:
bge _021F715A
mov r1, #2
lsl r1, r1, #0xc
add r1, r2, r1
str r1, [r0, #0x18]
cmp r1, #0
ble _021F715A
mov r1, #0
str r1, [r0, #0x18]
_021F715A:
bx lr
thumb_func_end ov96_021F7130
thumb_func_start ov96_021F715C
ov96_021F715C: ; 0x021F715C
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
add r5, r1, #0
add r7, r2, #0
add r4, r3, #0
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r1, r0, #0x18
add r0, r6, #0
add r2, r7, #0
bl ov96_021E60D8
ldrb r1, [r0, #2]
lsl r1, r1, #2
ldr r1, [r5, r1]
str r1, [r4, #0x2c]
ldrb r1, [r0, #3]
lsl r1, r1, #2
add r1, r5, r1
ldr r1, [r1, #0x14]
str r1, [r4, #0x30]
ldrb r0, [r0, #4]
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x28]
str r0, [r4, #0x34]
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021F715C
thumb_func_start ov96_021F7194
ov96_021F7194: ; 0x021F7194
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x60
str r0, [sp, #8]
mov r0, #0
add r4, r1, #0
str r1, [sp, #0xc]
str r0, [sp, #0x10]
ldr r1, _021F7494 ; =0x00000FAC
ldr r0, [sp, #0xc]
add r4, #0x90
add r0, r0, r1
str r0, [sp, #0x14]
_021F71AC:
ldr r1, _021F7494 ; =0x00000FAC
ldr r0, [sp, #0xc]
ldr r5, [sp, #0xc]
add r6, r0, r1
ldr r0, [sp, #0x10]
mov r7, #0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x24]
add r0, r4, #0
str r0, [sp, #0x28]
add r0, #0x1c
add r5, #0x90
str r0, [sp, #0x28]
_021F71C8:
ldr r0, [sp, #0x10]
cmp r0, r7
beq _021F72A0
ldr r0, [sp, #8]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x18]
ldr r0, [r4]
str r0, [sp, #0x20]
ldr r0, [r5]
str r0, [sp, #0x1c]
add r0, sp, #0x2c
str r0, [sp]
ldr r1, [r4, #0x1c]
ldr r0, [sp, #0x20]
asr r2, r1, #0xb
lsr r2, r2, #0x14
add r2, r1, r2
asr r1, r2, #0xc
ldr r2, [sp, #0x14]
ldr r2, [r2, #8]
lsl r3, r2, #6
mov r2, #0x12
lsl r2, r2, #0x10
sub r3, r2, r3
asr r2, r3, #0xb
lsr r2, r2, #0x14
add r2, r3, r2
asr r2, r2, #0xc
add r3, sp, #0x30
bl ov96_021EB0A4
add r0, sp, #0x58
str r0, [sp]
add r0, sp, #0x38
str r0, [sp, #4]
ldr r1, [sp, #0x30]
ldr r2, [sp, #0x2c]
ldr r0, [sp, #0x20]
lsl r1, r1, #0xc
lsl r2, r2, #0xc
add r3, sp, #0x54
bl ov96_021EAF78
mov r0, #0
str r0, [sp, #0x5c]
add r0, sp, #0x2c
str r0, [sp]
ldr r1, [r5, #0x1c]
ldr r0, [sp, #0x1c]
asr r2, r1, #0xb
lsr r2, r2, #0x14
add r2, r1, r2
asr r1, r2, #0xc
ldr r2, [r6, #8]
lsl r3, r2, #6
mov r2, #0x12
lsl r2, r2, #0x10
sub r3, r2, r3
asr r2, r3, #0xb
lsr r2, r2, #0x14
add r2, r3, r2
asr r2, r2, #0xc
add r3, sp, #0x30
bl ov96_021EB0A4
add r0, sp, #0x4c
str r0, [sp]
add r0, sp, #0x34
str r0, [sp, #4]
ldr r1, [sp, #0x30]
ldr r2, [sp, #0x2c]
ldr r0, [sp, #0x1c]
lsl r1, r1, #0xc
lsl r2, r2, #0xc
add r3, sp, #0x48
bl ov96_021EAF78
ldr r1, [sp, #0x38]
ldr r3, [sp, #0x34]
mov r0, #0
str r0, [sp, #0x50]
add r0, sp, #0x54
lsl r1, r1, #0xc
add r2, sp, #0x48
lsl r3, r3, #0xc
bl ov96_021F6060
cmp r0, #0
bne _021F7294
add r1, r4, r7
add r1, #0x29
mov r0, #0
strb r0, [r1]
ldr r0, [sp, #0x10]
add r1, r0, r5
add r1, #0x29
mov r0, #0
strb r0, [r1]
b _021F746C
_021F7294:
ldr r0, [sp, #0x10]
add r0, r0, r5
add r0, #0x29
ldrb r0, [r0]
cmp r0, #0
beq _021F72A2
_021F72A0:
b _021F746C
_021F72A2:
add r1, r4, #0
add r1, #0x26
mov r0, #1
strb r0, [r1]
add r1, r5, #0
add r1, #0x26
strb r0, [r1]
ldr r1, [r4, #0x30]
mov r0, #0x1e
mul r0, r1
mov r1, #0x1e
bl _s32_div_f
add r1, r4, #0
add r1, #0x27
strb r0, [r1]
ldr r1, [r5, #0x30]
mov r0, #0x1e
mul r0, r1
mov r1, #0x1e
bl _s32_div_f
add r1, r5, #0
add r1, #0x27
strb r0, [r1]
mov r1, #0
add r0, sp, #0x3c
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
add r0, sp, #0x48
add r1, sp, #0x54
add r2, sp, #0x3c
bl VEC_Subtract
add r0, sp, #0x3c
add r1, r0, #0
bl VEC_Normalize
ldr r0, [sp, #0x38]
add r1, sp, #0x3c
lsl r0, r0, #0xc
add r2, sp, #0x54
add r3, r1, #0
bl VEC_MultAdd
ldr r1, [sp, #0xc]
ldr r0, _021F7498 ; =0x00000143
ldrb r1, [r1, r0]
mov r0, #0xc
add r2, r1, #0
mul r2, r0
ldr r0, [sp, #0xc]
add r1, r0, r2
mov r0, #0x51
lsl r0, r0, #2
add r2, sp, #0x3c
add r3, r1, r0
ldmia r2!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r2]
ldr r1, [sp, #0xc]
str r0, [r3]
ldr r0, _021F7498 ; =0x00000143
ldrb r1, [r1, r0]
ldr r0, [sp, #0xc]
add r2, r0, r1
mov r0, #0x5a
mov r1, #1
lsl r0, r0, #2
strb r1, [r2, r0]
ldr r1, [sp, #0xc]
sub r0, #0x25
ldrb r0, [r1, r0]
mov r1, #3
add r0, r0, #1
bl _s32_div_f
ldr r2, [sp, #0xc]
ldr r0, _021F7498 ; =0x00000143
strb r1, [r2, r0]
ldr r1, _021F749C ; =ov96_0221DC18
ldr r0, _021F74A0 ; =0x000008A3
ldrb r1, [r1, #3]
bl sub_0200606C
mov r0, #1
str r0, [sp]
ldr r0, [sp, #8]
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x24]
mov r3, #4
bl ov96_021E8228
mov r0, #1
str r0, [sp]
lsl r2, r7, #0x18
ldr r0, [sp, #8]
ldr r1, [sp, #0x18]
lsr r2, r2, #0x18
mov r3, #4
bl ov96_021E8228
mov r0, #1
str r0, [sp]
ldr r0, [sp, #8]
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x24]
mov r3, #1
bl ov96_021E8228
mov r0, #1
str r0, [sp]
lsl r2, r7, #0x18
ldr r0, [sp, #8]
ldr r1, [sp, #0x18]
lsr r2, r2, #0x18
mov r3, #1
bl ov96_021E8228
ldr r0, [sp, #0x14]
ldr r0, [r0, #0x10]
cmp r0, #0
beq _021F7404
ldr r0, [r6, #0x10]
cmp r0, #0
beq _021F7404
ldr r0, [sp, #0x14]
ldr r0, [r0, #8]
cmp r0, #0
ble _021F7404
ldr r0, [r6, #8]
cmp r0, #0
ble _021F7404
add r0, r4, r7
add r0, #0x29
ldrb r0, [r0]
cmp r0, #0
bne _021F746C
ldr r0, [sp, #0x10]
add r0, r0, r5
add r0, #0x29
ldrb r0, [r0]
cmp r0, #0
bne _021F746C
add r1, r4, r7
add r1, #0x29
mov r0, #1
strb r0, [r1]
ldr r0, [sp, #0x10]
add r1, r0, r5
add r1, #0x29
mov r0, #1
strb r0, [r1]
ldr r1, [sp, #0x14]
ldr r0, [r6]
ldr r1, [r1]
str r1, [r6]
ldr r1, [sp, #0x14]
str r0, [r1]
ldr r1, [r5, #0x18]
ldr r0, [r4, #0x18]
str r0, [r5, #0x18]
ldr r0, [sp, #0x14]
str r1, [r4, #0x18]
ldr r0, [r0]
cmp r0, #0
bge _021F73F8
ldr r0, [sp, #0x14]
mov r1, #0
str r1, [r0]
_021F73F8:
ldr r0, [r6]
cmp r0, #0
bge _021F746C
mov r0, #0
str r0, [r6]
b _021F746C
_021F7404:
ldr r1, [r4, #0x1c]
ldr r0, [r5, #0x1c]
cmp r1, r0
bgt _021F7424
ldr r0, [sp, #0x28]
ldr r1, [r0]
mov r0, #1
lsl r0, r0, #0x10
sub r1, r1, r0
ldr r0, [sp, #0x28]
str r1, [r0]
mov r0, #1
ldr r1, [r5, #0x1c]
lsl r0, r0, #0x10
add r0, r1, r0
b _021F743A
_021F7424:
ldr r0, [sp, #0x28]
ldr r1, [r0]
mov r0, #1
lsl r0, r0, #0x10
add r1, r1, r0
ldr r0, [sp, #0x28]
str r1, [r0]
mov r0, #1
ldr r1, [r5, #0x1c]
lsl r0, r0, #0x10
sub r0, r1, r0
_021F743A:
str r0, [r5, #0x1c]
mov r0, #2
ldr r1, [r4, #0x1c]
lsl r0, r0, #0x10
cmp r1, r0
bge _021F744A
str r0, [r4, #0x1c]
b _021F7454
_021F744A:
mov r0, #0xdf
lsl r0, r0, #0xc
cmp r1, r0
ble _021F7454
str r0, [r4, #0x1c]
_021F7454:
mov r0, #2
ldr r1, [r5, #0x1c]
lsl r0, r0, #0x10
cmp r1, r0
bge _021F7462
str r0, [r5, #0x1c]
b _021F746C
_021F7462:
mov r0, #0xdf
lsl r0, r0, #0xc
cmp r1, r0
ble _021F746C
str r0, [r5, #0x1c]
_021F746C:
add r7, r7, #1
add r5, #0x38
add r6, #0x1c
cmp r7, #3
bge _021F7478
b _021F71C8
_021F7478:
ldr r0, [sp, #0x14]
add r4, #0x38
add r0, #0x1c
str r0, [sp, #0x14]
ldr r0, [sp, #0x10]
add r0, r0, #1
str r0, [sp, #0x10]
cmp r0, #3
bge _021F748C
b _021F71AC
_021F748C:
mov r0, #0
add sp, #0x60
pop {r3, r4, r5, r6, r7, pc}
nop
_021F7494: .word 0x00000FAC
_021F7498: .word 0x00000143
_021F749C: .word ov96_0221DC18
_021F74A0: .word 0x000008A3
thumb_func_end ov96_021F7194
thumb_func_start ov96_021F74A4
ov96_021F74A4: ; 0x021F74A4
push {r4, lr}
mov r1, #0x33
lsl r1, r1, #4
bl AllocFromHeap
mov r2, #0x33
mov r1, #0
lsl r2, r2, #4
add r4, r0, #0
bl MI_CpuFill8
mov r0, #0xcb
mov r1, #0
lsl r0, r0, #2
str r1, [r4, r0]
add r0, r4, #0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021F74A4
thumb_func_start ov96_021F74C8
ov96_021F74C8: ; 0x021F74C8
ldr r3, _021F74CC ; =FreeToHeap
bx r3
.balign 4, 0
_021F74CC: .word FreeToHeap
thumb_func_end ov96_021F74C8
thumb_func_start ov96_021F74D0
ov96_021F74D0: ; 0x021F74D0
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
mov r7, #0
_021F74DA:
mov r0, #2
str r0, [sp]
add r0, r4, #0
add r1, r6, #0
mov r2, #3
mov r3, #0x65
bl ov96_021EB3E4
mov r1, #1
str r0, [r5, #0x10]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r5, #0x10]
mov r1, #8
bl ov96_021EB564
mov r0, #5
str r0, [sp]
add r0, r4, #0
add r1, r6, #0
mov r2, #3
mov r3, #0x65
bl ov96_021EB3E4
str r0, [r5, #0x14]
mov r0, #6
str r0, [sp]
add r0, r4, #0
add r1, r6, #0
mov r2, #3
mov r3, #0x65
bl ov96_021EB3E4
str r0, [r5, #0x18]
ldr r0, [r5, #0x10]
mov r1, #0x14
bl ov96_021EB630
ldr r0, [r5, #0x14]
mov r1, #7
bl ov96_021EB630
ldr r0, [r5, #0x18]
mov r1, #8
bl ov96_021EB630
add r7, r7, #1
add r5, #0x1c
cmp r7, #0x1d
blt _021F74DA
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F74D0
thumb_func_start ov96_021F7544
ov96_021F7544: ; 0x021F7544
push {r4, r5, r6, r7, lr}
sub sp, #0xc
ldr r4, _021F7594 ; =ov96_0221C21C
add r5, r0, #0
mov r6, #0
add r7, sp, #0
_021F7550:
ldrh r0, [r4]
add r1, r7, #0
lsl r0, r0, #0xf
str r0, [sp]
ldrh r0, [r4, #2]
lsl r0, r0, #0xf
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
ldr r0, [r5, #0x10]
bl ov96_021EB588
ldr r0, [r5, #0x14]
add r1, r7, #0
bl ov96_021EB588
ldr r0, [r5, #0x18]
add r1, r7, #0
bl ov96_021EB588
add r3, sp, #0
add r2, r5, #4
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
add r6, r6, #1
str r0, [r2]
add r4, r4, #4
add r5, #0x1c
cmp r6, #0x1d
blt _021F7550
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
_021F7594: .word ov96_0221C21C
thumb_func_end ov96_021F7544
thumb_func_start ov96_021F7598
ov96_021F7598: ; 0x021F7598
push {r4, lr}
mov r1, #0xcb
add r4, r0, #0
lsl r1, r1, #2
ldr r2, [r4, r1]
cmp r2, #0
bne _021F75B4
bl ov96_021F7620
mov r0, #0xcb
mov r1, #0xf0
lsl r0, r0, #2
str r1, [r4, r0]
pop {r4, pc}
_021F75B4:
sub r0, r2, #1
str r0, [r4, r1]
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021F7598
thumb_func_start ov96_021F75BC
ov96_021F75BC: ; 0x021F75BC
mov r2, #0x1c
mul r2, r1
mov r1, #0
str r1, [r0, r2]
add r0, r0, r2
ldr r3, _021F75D0 ; =ov96_021EB564
ldr r0, [r0, #0x10]
mov r1, #8
bx r3
nop
_021F75D0: .word ov96_021EB564
thumb_func_end ov96_021F75BC
thumb_func_start ov96_021F75D4
ov96_021F75D4: ; 0x021F75D4
mov r2, #0x1c
mul r2, r1
add r0, r0, r2
add r0, r0, #4
bx lr
.balign 4, 0
thumb_func_end ov96_021F75D4
thumb_func_start ov96_021F75E0
ov96_021F75E0: ; 0x021F75E0
mov r2, #0x1c
mul r2, r1
ldr r0, [r0, r2]
bx lr
thumb_func_end ov96_021F75E0
thumb_func_start ov96_021F75E8
ov96_021F75E8: ; 0x021F75E8
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r4, r1, #0
mov r0, #0x1c
add r6, r5, #0
mul r4, r0
add r6, #0x18
ldr r0, [r6, r4]
mov r1, #0xa
add r7, r2, #0
bl ov96_021EB564
mov r1, #1
ldr r0, [r6, r4]
add r2, r1, #0
bl ov96_021EB52C
add r5, #0x14
ldr r0, [r5, r4]
add r1, r7, #0
bl ov96_021EB564
mov r1, #1
ldr r0, [r5, r4]
add r2, r1, #0
bl ov96_021EB52C
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021F75E8
thumb_func_start ov96_021F7620
ov96_021F7620: ; 0x021F7620
push {r4, r5, r6, r7, lr}
sub sp, #0x74
mov r4, #0
add r3, r4, #0
add r1, sp, #0
_021F762A:
ldr r2, [r0]
cmp r2, #0
bne _021F7636
lsl r2, r4, #2
add r4, r4, #1
str r0, [r1, r2]
_021F7636:
add r3, r3, #1
add r0, #0x1c
cmp r3, #0x1d
blt _021F762A
lsl r1, r4, #2
add r0, sp, #0
mov r7, #0
add r5, r0, r1
_021F7646:
cmp r4, #0
ble _021F767E
bl LCRandom
add r1, r4, #0
bl _s32_div_f
lsl r0, r1, #0x18
lsr r6, r0, #0x16
add r0, sp, #0
ldr r1, [r0, r6]
mov r0, #1
str r0, [r1]
add r0, sp, #0
ldr r0, [r0, r6]
mov r1, #7
ldr r0, [r0, #0x10]
bl ov96_021EB564
sub r0, r5, #4
ldr r1, [r0]
add r0, sp, #0
add r7, r7, #1
str r1, [r0, r6]
sub r5, r5, #4
sub r4, r4, #1
cmp r7, #0x19
blt _021F7646
_021F767E:
add sp, #0x74
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F7620
thumb_func_start ov96_021F7684
ov96_021F7684: ; 0x021F7684
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r1, #0
ldr r1, [sp, #0x28]
add r4, r3, #0
str r1, [sp, #0x28]
mov r1, #0x24
bl AllocFromHeap
str r0, [sp, #8]
mov r1, #0
mov r2, #0x24
bl MI_CpuFill8
ldr r0, [sp, #8]
strb r5, [r0, #0x1c]
mov r0, #4
sub r1, r0, r5
ldr r0, [sp, #8]
add r0, #0x21
strb r1, [r0]
ldr r0, [sp, #8]
add r0, #0x21
ldrb r1, [r0]
ldr r0, [sp, #8]
add r0, #0x20
strb r1, [r0]
ldr r0, [sp, #8]
mov r1, #3
strb r1, [r0, #0x1f]
str r4, [r0, #4]
mov r0, #0
str r0, [sp, #0xc]
ldr r0, [sp, #8]
ldrb r0, [r0, #0x1c]
cmp r0, #0
ble _021F7730
_021F76CE:
ldr r0, [sp, #8]
mov r4, #0
add r0, #0x20
ldrb r1, [r0]
ldr r0, [sp, #0xc]
add r0, r1, r0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
lsl r1, r0, #1
str r0, [sp, #4]
add r1, r0, r1
ldr r0, [sp, #8]
add r5, r0, r1
add r1, r0, #0
ldr r0, [sp, #4]
add r0, r1, r0
add r6, r0, #0
add r7, r0, #0
str r0, [sp]
add r6, #8
add r7, #0xc
_021F76F8:
ldr r0, [sp, #0x28]
ldr r1, [sp, #4]
add r2, r4, #0
bl ov96_021E60D8
ldrb r2, [r6]
ldrb r1, [r0, #2]
add r4, r4, #1
add r1, r2, r1
strb r1, [r6]
ldrb r1, [r7]
ldrb r0, [r0, #4]
add r0, r1, r0
strb r0, [r7]
ldr r0, [sp]
ldrb r0, [r0, #8]
strb r0, [r5, #0x10]
add r5, r5, #1
cmp r4, #3
blt _021F76F8
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
ldr r0, [sp, #8]
ldrb r1, [r0, #0x1c]
ldr r0, [sp, #0xc]
cmp r0, r1
blt _021F76CE
_021F7730:
ldr r0, [sp, #8]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F7684
thumb_func_start ov96_021F7738
ov96_021F7738: ; 0x021F7738
ldr r3, _021F773C ; =FreeToHeap
bx r3
.balign 4, 0
_021F773C: .word FreeToHeap
thumb_func_end ov96_021F7738
thumb_func_start ov96_021F7740
ov96_021F7740: ; 0x021F7740
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
str r0, [sp]
mov r0, #4
add r5, r1, #0
str r0, [sp, #4]
add r0, r5, #0
add r0, #0x21
ldrb r0, [r0]
cmp r0, #4
bne _021F775C
add sp, #8
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021F775C:
ldrb r0, [r5, #0x1e]
add r0, r0, #1
strb r0, [r5, #0x1e]
add r0, r5, #0
add r0, #0x20
ldrb r6, [r0]
cmp r6, #4
bge _021F7788
mov r0, #0x28
add r4, r6, #0
mul r4, r0
mov r7, #0
_021F7774:
ldr r0, [r5, #4]
add r0, #0x50
add r0, r0, r4
bl ov96_021E8A20
add r6, r6, #1
add r4, #0x28
str r7, [r0]
cmp r6, #4
blt _021F7774
_021F7788:
ldrb r1, [r5, #0x1e]
ldrb r0, [r5, #0x1f]
cmp r1, r0
blo _021F7798
mov r0, #1
str r0, [r5]
mov r0, #0
strb r0, [r5, #0x1e]
_021F7798:
ldr r0, [r5]
cmp r0, #0
beq _021F77E6
add r0, r5, #0
add r0, #0x20
ldrb r1, [r0]
ldrb r0, [r5, #0x1d]
add r4, r1, r0
cmp r4, r1
bge _021F77B0
bl GF_AssertFail
_021F77B0:
add r0, r5, #0
add r0, #0x20
ldrb r0, [r0]
cmp r4, r0
bge _021F77C0
add sp, #8
mov r0, #4
pop {r3, r4, r5, r6, r7, pc}
_021F77C0:
lsl r2, r4, #0x18
ldr r0, [sp]
add r1, r5, #0
lsr r2, r2, #0x18
bl ov96_021F77EC
lsl r0, r4, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
ldrb r0, [r5, #0x1d]
add r0, r0, #1
strb r0, [r5, #0x1d]
ldrb r1, [r5, #0x1d]
ldrb r0, [r5, #0x1c]
cmp r1, r0
blo _021F77E6
mov r0, #0
strb r0, [r5, #0x1d]
str r0, [r5]
_021F77E6:
ldr r0, [sp, #4]
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021F7740
thumb_func_start ov96_021F77EC
ov96_021F77EC: ; 0x021F77EC
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r6, r1, #0
ldr r1, [r6, #4]
str r0, [sp, #4]
add r5, r2, #0
mov r0, #0x28
add r1, #0x50
mul r0, r5
add r0, r1, r0
bl ov96_021E8A20
add r4, r6, #0
add r4, #8
add r7, r0, #0
ldrb r0, [r4, r5]
cmp r0, #0
bne _021F7814
mov r0, #0
b _021F782A
_021F7814:
bl LCRandom
mov r1, #0x65
bl _s32_div_f
add r0, r6, r5
ldrb r2, [r4, r5]
ldrb r0, [r0, #0xc]
lsl r2, r2, #1
add r0, r0, r2
add r0, r0, r1
_021F782A:
cmp r0, #0x64
blt _021F7874
mov r0, #1
str r0, [r7]
bl LCRandom
ldrb r1, [r4, r5]
bl _s32_div_f
lsl r0, r1, #0x18
lsl r1, r5, #1
add r1, r5, r1
lsr r0, r0, #0x18
mov r4, #0
add r1, r6, r1
_021F7848:
add r2, r1, r4
ldrb r2, [r2, #0x10]
cmp r0, r2
bhs _021F7862
mov r0, #1
str r0, [sp]
ldr r0, [sp, #4]
add r1, r5, #0
add r2, r4, #0
mov r3, #3
bl ov96_021E8228
b _021F786C
_021F7862:
add r2, r4, #1
lsl r2, r2, #0x18
lsr r4, r2, #0x18
cmp r4, #3
blo _021F7848
_021F786C:
cmp r4, #3
blo _021F7874
bl GF_AssertFail
_021F7874:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021F77EC
thumb_func_start ov96_021F7878
ov96_021F7878: ; 0x021F7878
push {r3, r4, r5, r6, lr}
sub sp, #4
add r5, r1, #0
add r6, r0, #0
add r4, r2, #0
cmp r5, #0
bne _021F788A
bl GF_AssertFail
_021F788A:
ldr r2, _021F78C0 ; =ov96_0221C2A0
add r0, r5, #0
add r1, r6, #0
bl AddWindow
mov r1, #1
mov r2, #0
add r0, r5, #0
add r3, r1, #0
str r2, [sp]
bl BG_FillCharDataRange
mov r1, #0x1e
mov r0, #0
lsl r1, r1, #4
add r2, r4, #0
bl LoadFontPal0
mov r1, #1
mov r0, #6
lsl r1, r1, #0xe
add r2, r4, #0
bl LoadFontPal0
add sp, #4
pop {r3, r4, r5, r6, pc}
nop
_021F78C0: .word ov96_0221C2A0
thumb_func_end ov96_021F7878
thumb_func_start ov96_021F78C4
ov96_021F78C4: ; 0x021F78C4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r1, #0
mov r1, #0
add r4, r0, #0
bl FillWindowPixelBuffer
ldr r2, _021F7928 ; =0x00000135
mov r0, #1
mov r1, #0x1b
add r3, r5, #0
bl NewMsgDataFromNarc
add r7, r0, #0
add r0, r5, #0
bl MessageFormat_New
ldr r2, _021F792C ; =0x0000012F
add r1, r7, #0
add r3, r5, #0
add r6, r0, #0
bl ReadMsgData_ExpandPlaceholders
mov r1, #0
add r5, r0, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021F7930 ; =0x00010200
add r2, r5, #0
str r0, [sp, #8]
add r0, r4, #0
add r3, r1, #0
str r1, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r5, #0
bl String_Delete
add r0, r6, #0
bl MessageFormat_Delete
add r0, r7, #0
bl DestroyMsgData
add r0, r4, #0
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F7928: .word 0x00000135
_021F792C: .word 0x0000012F
_021F7930: .word 0x00010200
thumb_func_end ov96_021F78C4
thumb_func_start ov96_021F7934
ov96_021F7934: ; 0x021F7934
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
add r0, r5, #0
bl ov96_021E5DD4
cmp r0, #5
bls _021F794C
b _021F7C2E
_021F794C:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021F7958: ; jump table
.short _021F7964 - _021F7958 - 2 ; case 0
.short _021F7A04 - _021F7958 - 2 ; case 1
.short _021F7AA0 - _021F7958 - 2 ; case 2
.short _021F7B90 - _021F7958 - 2 ; case 3
.short _021F7BFC - _021F7958 - 2 ; case 4
.short _021F7C20 - _021F7958 - 2 ; case 5
_021F7964:
mov r2, #1
mov r0, #0x5c
mov r1, #0x89
lsl r2, r2, #0x12
bl CreateHeap
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
bl GfGfx_DisableEngineAPlanes
bl GfGfx_DisableEngineBPlanes
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _021F7C38 ; =0xFFFFE0FF
and r1, r0
str r1, [r2]
ldr r2, _021F7C3C ; =0x04001000
ldr r1, [r2]
and r0, r1
str r0, [r2]
bl ov96_021F7D10
add r0, r5, #0
mov r1, #0xac
bl ov96_021E5D94
mov r1, #0
mov r2, #0xac
add r4, r0, #0
bl MI_CpuFill8
mov r1, #0x89
mov r0, #4
str r1, [r4]
bl FontID_Alloc
mov r0, #0x89
bl BgConfig_Alloc
str r0, [r4, #0xc]
ldr r0, [r4]
bl ov96_021EE740
str r0, [r4, #0x18]
add r0, r4, #0
ldr r2, [r4, #0xc]
add r0, #0x1c
mov r1, #0x89
add r3, r5, #0
bl ov96_021F8094
add r0, r5, #0
bl ov96_021E5E44
ldr r1, [r4]
bl ov96_021EE5B4
add r1, r4, #0
add r1, #0x80
str r0, [r1]
add r0, r4, #0
bl ov96_021F8448
ldr r0, _021F7C40 ; =gSystem + 0x60
mov r1, #1
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
add r0, r5, #0
bl ov96_021E5DEC
b _021F7C32
_021F7A04:
ldr r6, _021F7C44 ; =ov96_0221C2A8
add r3, sp, #0x1c
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
add r1, r2, #0
str r0, [r3]
ldr r0, [r4]
bl ov96_021EB180
mov r1, #0
str r0, [r4, #0x10]
mov r0, #0x4b
lsl r0, r0, #0xe
str r0, [sp]
ldr r0, [r4, #0x10]
add r2, r1, #0
add r3, r1, #0
bl ov96_021EB5C8
add r0, r5, #0
bl ov96_021E6040
add r7, r0, #0
bl ov96_021E9524
add r6, r0, #0
add r0, r7, #0
bl ov96_021E9528
add r3, r0, #0
add r0, r4, #0
lsl r2, r6, #0x18
add r0, #0x1c
add r1, r5, #0
lsr r2, r2, #0x18
bl ov96_021F80A8
ldr r0, [r4]
ldr r1, [r4, #0xc]
ldr r2, [r4, #0x10]
bl ov96_021F8EB0
str r0, [r4, #0x14]
mov r1, #2
bl ov96_021F8F44
ldr r0, [r4, #0x10]
bl ov96_021EB3A4
mov r2, #0x4b
ldr r0, [r4, #0x14]
add r1, r5, #0
lsl r2, r2, #2
bl ov96_021F8F94
add r0, r4, #0
bl ov96_021F8528
add r0, r4, #0
bl ov96_021F85A0
mov r0, #2
bl ov96_021EEBC8
add r1, r0, #0
add r0, r4, #0
add r0, #0x9c
ldr r0, [r0]
ldr r3, [r4]
mov r2, #0xb
bl ov96_021EEA88
add r0, r5, #0
bl ov96_021E5DEC
b _021F7C32
_021F7AA0:
ldr r0, [r4, #0xc]
bl ov96_021E6030
ldr r0, [r4, #0xc]
ldr r1, [r4]
bl ov96_021F7D30
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
ldr r1, [r4, #0xc]
bl ov96_021EE60C
add r0, r4, #0
bl ov96_021F7DA8
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
bl ov96_021EE644
mov r0, #4
mov r1, #0
bl GfGfx_EngineBTogglePlanes
mov r0, #8
mov r1, #0
bl GfGfx_EngineBTogglePlanes
add r0, r5, #0
bl ov96_021E5EE8
add r6, r0, #0
add r0, r5, #0
bl ov96_021E5D60
str r0, [sp]
ldr r0, [r4, #0x18]
ldr r1, [r4, #0xc]
mov r2, #5
add r3, r6, #0
bl ov96_021EE75C
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
bl ov96_021EE6A0
mov r0, #0
mov r1, #1
lsl r1, r1, #0xc
str r1, [sp, #0xc]
str r0, [sp, #0x10]
str r0, [sp, #0x14]
str r1, [sp, #0x18]
bl OS_WaitVBlankIntr
add r0, sp, #0xc
str r0, [sp]
mov r0, #0x80
str r0, [sp, #4]
mov r0, #0x60
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r1, #7
mov r2, #1
mov r3, #0
bl Bg_SetTextDimAndAffineParams
add r0, sp, #0xc
str r0, [sp]
mov r0, #0x80
str r0, [sp, #4]
mov r0, #0x60
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r1, #7
mov r2, #5
mov r3, #0x10
bl Bg_SetTextDimAndAffineParams
add r0, sp, #0xc
str r0, [sp]
mov r0, #0x80
str r0, [sp, #4]
mov r0, #0x60
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r1, #6
mov r2, #1
mov r3, #0
bl Bg_SetTextDimAndAffineParams
add r0, sp, #0xc
str r0, [sp]
mov r0, #0x80
str r0, [sp, #4]
mov r0, #0x60
str r0, [sp, #8]
ldr r0, [r4, #0xc]
mov r1, #6
mov r2, #5
mov r3, #0x10
bl Bg_SetTextDimAndAffineParams
add r0, r4, #0
ldr r1, [r4, #0xc]
ldr r2, [r4]
add r0, #0x84
bl ov96_021F7878
add r0, r4, #0
ldr r1, [r4]
add r0, #0x84
bl ov96_021F78C4
add r0, r5, #0
bl ov96_021E5DEC
b _021F7C32
_021F7B90:
add r0, r5, #0
bl ov96_021E5F24
cmp r0, #0
bne _021F7BB4
add r0, r5, #0
bl ov96_021E5F54
add r0, #0x28
bl ov96_021E8A20
add r4, r0, #0
bl MTRandom
mov r1, #5
bl _u32_div_f
strb r1, [r4]
_021F7BB4:
add r0, r5, #0
bl ov96_021E5EE8
cmp r0, #1
bne _021F7BCC
mov r0, #1
bl sub_0203A994
bl sub_0203A9C8
bl sub_0203A86C
_021F7BCC:
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineATogglePlanes
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineBTogglePlanes
mov r0, #4
mov r1, #1
bl GfGfx_EngineBTogglePlanes
mov r0, #8
mov r1, #1
bl GfGfx_EngineBTogglePlanes
add r0, r5, #0
mov r1, #1
bl ov96_021E5DFC
add r0, r5, #0
bl ov96_021E5DEC
b _021F7C32
_021F7BFC:
ldr r0, _021F7C48 ; =0x00000473
bl PlayBGM
mov r0, #6
mov r1, #1
str r0, [sp]
str r1, [sp, #4]
ldr r0, [r4]
add r2, r1, #0
str r0, [sp, #8]
mov r0, #0
add r3, r0, #0
bl BeginNormalPaletteFade
add r0, r5, #0
bl ov96_021E5DEC
b _021F7C32
_021F7C20:
bl IsPaletteFadeFinished
cmp r0, #0
beq _021F7C32
add sp, #0x28
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021F7C2E:
bl GF_AssertFail
_021F7C32:
mov r0, #0
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F7C38: .word 0xFFFFE0FF
_021F7C3C: .word 0x04001000
_021F7C40: .word gSystem + 0x60
_021F7C44: .word ov96_0221C2A8
_021F7C48: .word 0x00000473
thumb_func_end ov96_021F7934
thumb_func_start ov96_021F7C4C
ov96_021F7C4C: ; 0x021F7C4C
push {r4, lr}
bl ov96_021E5DC4
add r4, r0, #0
ldr r0, [r4, #0x10]
bl ov96_021EB5BC
add r0, r4, #0
add r0, #0x98
ldr r0, [r0]
bl sub_0200D020
ldr r0, [r4, #0x1c]
bl ov96_021F87D0
mov r0, #1
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021F7C4C
thumb_func_start ov96_021F7C70
ov96_021F7C70: ; 0x021F7C70
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
mov r0, #4
bl FontID_Release
ldr r0, _021F7D04 ; =0x04000050
mov r1, #0x3f
mov r2, #0
bl G2x_SetBlendBrightness_
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
bl ov96_021EE5E0
add r0, r4, #0
add r0, #0x84
bl RemoveWindow
ldr r0, [r4, #0x18]
bl ov96_021EE808
ldr r5, _021F7D08 ; =ov96_0221C290
mov r6, #0
_021F7CB6:
ldrb r1, [r5]
ldr r0, [r4, #0xc]
bl FreeBgTilemapBuffer
add r6, r6, #1
add r5, r5, #1
cmp r6, #6
blt _021F7CB6
ldr r0, [r4, #0x14]
bl ov96_021F8F0C
ldr r0, [r4, #0x1c]
bl ov96_021F8728
ldr r0, [r4, #0x10]
bl ov96_021EB21C
add r0, r4, #0
bl ov96_021F84E4
ldr r0, [r4, #0xc]
bl FreeToHeap
add r0, r7, #0
bl ov96_021E5DAC
ldr r0, _021F7D0C ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
mov r0, #0x89
bl DestroyHeap
bl sub_0203A914
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
nop
_021F7D04: .word 0x04000050
_021F7D08: .word ov96_0221C290
_021F7D0C: .word gSystem + 0x60
thumb_func_end ov96_021F7C70
thumb_func_start ov96_021F7D10
ov96_021F7D10: ; 0x021F7D10
push {r4, lr}
sub sp, #0x28
ldr r4, _021F7D2C ; =ov96_0221C310
add r3, sp, #0
mov r2, #5
_021F7D1A:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _021F7D1A
add r0, sp, #0
bl GfGfx_SetBanks
add sp, #0x28
pop {r4, pc}
.balign 4, 0
_021F7D2C: .word ov96_0221C310
thumb_func_end ov96_021F7D10
thumb_func_start ov96_021F7D30
ov96_021F7D30: ; 0x021F7D30
push {r3, r4, r5, r6, r7, lr}
sub sp, #0xc0
ldr r4, _021F7D98 ; =ov96_0221C2B4
add r3, sp, #8
add r7, r0, #0
str r1, [sp]
add r2, r3, #0
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl SetBothScreensModesAndDisable
ldr r4, _021F7D9C ; =ov96_0221C338
add r3, sp, #0x18
mov r2, #0x15
_021F7D52:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _021F7D52
mov r0, #0
ldr r4, _021F7DA0 ; =ov96_0221C298
ldr r5, _021F7DA4 ; =ov96_0221C290
str r0, [sp, #4]
add r6, sp, #0x18
_021F7D64:
ldrb r1, [r5]
ldrb r3, [r4]
add r0, r7, #0
add r2, r6, #0
bl InitBgFromTemplate
ldrb r1, [r5]
add r0, r7, #0
bl BgClearTilemapBufferAndCommit
ldrb r0, [r5]
ldr r3, [sp]
mov r1, #0x40
mov r2, #0
bl BG_ClearCharDataRange
ldr r0, [sp, #4]
add r4, r4, #1
add r0, r0, #1
add r6, #0x1c
add r5, r5, #1
str r0, [sp, #4]
cmp r0, #6
blt _021F7D64
add sp, #0xc0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F7D98: .word ov96_0221C2B4
_021F7D9C: .word ov96_0221C338
_021F7DA0: .word ov96_0221C298
_021F7DA4: .word ov96_0221C290
thumb_func_end ov96_021F7D30
thumb_func_start ov96_021F7DA8
ov96_021F7DA8: ; 0x021F7DA8
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #3
str r0, [sp, #0xc]
ldr r2, [r4, #0xc]
mov r0, #0xa0
mov r3, #4
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #5
str r0, [sp, #0xc]
ldr r2, [r4, #0xc]
mov r0, #0xa0
mov r3, #4
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #3
str r0, [sp, #0xc]
ldr r2, [r4, #0xc]
mov r0, #0xa0
mov r3, #5
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #4
str r0, [sp, #0xc]
ldr r2, [r4, #0xc]
mov r0, #0xa0
mov r3, #5
bl GfGfxLoader_LoadScrnData
mov r1, #0
str r1, [sp]
ldr r0, [r4]
mov r2, #4
str r0, [sp, #4]
mov r0, #0xa0
add r3, r1, #0
bl GfGfxLoader_GXLoadPal
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
str r3, [sp, #8]
ldr r0, [r4]
mov r1, #2
str r0, [sp, #0xc]
ldr r2, [r4, #0xc]
mov r0, #0xa0
bl GfGfxLoader_LoadCharData
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
str r3, [sp, #8]
ldr r0, [r4]
mov r1, #1
str r0, [sp, #0xc]
ldr r2, [r4, #0xc]
mov r0, #0xa0
bl GfGfxLoader_LoadScrnData
mov r1, #0
str r1, [sp]
ldr r0, [r4]
add r2, r1, #0
str r0, [sp, #4]
mov r0, #0xa0
add r3, r1, #0
bl GfGfxLoader_GXLoadPal
add sp, #0x10
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021F7DA8
thumb_func_start ov96_021F7E64
ov96_021F7E64: ; 0x021F7E64
push {r3, lr}
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
ldrb r0, [r0, #2]
pop {r3, pc}
thumb_func_end ov96_021F7E64
thumb_func_start ov96_021F7E74
ov96_021F7E74: ; 0x021F7E74
push {r4, r5, r6, r7, lr}
sub sp, #0x2c
mov r4, #0
add r6, r0, #0
add r7, r1, #0
bl ov96_021E5DC4
str r0, [sp, #0x14]
add r0, r4, #0
str r0, [sp, #0x18]
bl IsFanfarePlaying
add r0, r6, #0
bl ov96_021E5EE8
cmp r0, #1
bne _021F7E9E
add r0, r6, #0
bl ov96_021F85F4
add r4, r0, #0
_021F7E9E:
ldr r0, [sp, #0x14]
ldr r0, [r0, #0x18]
bl ov96_021EE830
ldr r0, [sp, #0x14]
ldr r0, [r0, #0x18]
bl ov96_021EEA80
cmp r0, #0
bne _021F7EB6
cmp r4, #0
beq _021F7EB8
_021F7EB6:
b _021F8080
_021F7EB8:
ldr r0, [sp, #0x14]
ldr r0, [r0, #0x18]
bl ov96_021EE97C
str r0, [sp, #0x10]
mov r0, #0
mvn r0, r0
str r0, [sp, #0xc]
ldrb r0, [r7]
cmp r0, #8
bhi _021F7F0A
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021F7EDA: ; jump table
.short _021F7EEC - _021F7EDA - 2 ; case 0
.short _021F7EFC - _021F7EDA - 2 ; case 1
.short _021F7F56 - _021F7EDA - 2 ; case 2
.short _021F7F7E - _021F7EDA - 2 ; case 3
.short _021F7F94 - _021F7EDA - 2 ; case 4
.short _021F7FE0 - _021F7EDA - 2 ; case 5
.short _021F7FF2 - _021F7EDA - 2 ; case 6
.short _021F800A - _021F7EDA - 2 ; case 7
.short _021F8048 - _021F7EDA - 2 ; case 8
_021F7EEC:
add r0, r6, #0
bl ov96_021F83DC
str r0, [sp, #0xc]
ldrb r0, [r7]
add r0, r0, #1
strb r0, [r7]
b _021F805C
_021F7EFC:
ldr r0, [sp, #0x14]
add r1, r6, #0
add r0, #0x1c
bl ov96_021F81CC
cmp r0, #0
bne _021F7F0C
_021F7F0A:
b _021F805C
_021F7F0C:
mov r4, #0
add r5, sp, #0x1c
_021F7F10:
add r0, r6, #0
bl ov96_021E6040
lsl r1, r4, #0x18
lsr r1, r1, #0x18
bl ov96_021E94EC
add r4, r4, #1
stmia r5!, {r0}
cmp r4, #4
blt _021F7F10
ldr r2, [sp, #0x1c]
ldr r0, [sp, #0x20]
ldrb r1, [r2, #9]
ldrb r0, [r0, #9]
cmp r1, r0
bne _021F7F38
mov r0, #0xfe
str r0, [sp, #0xc]
b _021F7F4E
_021F7F38:
ldr r1, [r2]
add r0, r6, #0
bl ov96_021E5F34
add r2, r0, #0
ldr r0, [sp, #0x10]
mov r1, #0
bl BufferPlayersName
mov r0, #0xfd
str r0, [sp, #0xc]
_021F7F4E:
ldrb r0, [r7]
add r0, r0, #1
strb r0, [r7]
b _021F805C
_021F7F56:
mov r0, #1
str r0, [sp]
mov r0, #0x10
add r1, r0, #0
sub r1, #0x18
mov r2, #0
mov r3, #0x3f
bl StartBrightnessTransition
mov r0, #0x3f
add r1, r0, #0
bl UpdateMainScreenBrightnessSurface
ldr r0, _021F8088 ; =0x04000052
mov r1, #0x10
strh r1, [r0]
ldrb r0, [r7]
add r0, r0, #1
strb r0, [r7]
b _021F805C
_021F7F7E:
mov r0, #1
bl IsBrightnessTransitionActive
cmp r0, #0
beq _021F805C
mov r0, #0xff
str r0, [sp, #0xc]
ldrb r0, [r7]
add r0, r0, #1
strb r0, [r7]
b _021F805C
_021F7F94:
mov r5, #0
_021F7F96:
add r0, r6, #0
bl ov96_021E5E44
add r4, r0, #0
add r0, r6, #0
bl ov96_021E6040
add r1, r4, #0
add r2, r5, #0
bl ov96_021E95D8
add r1, r0, #0
ldr r0, _021F808C ; =0x000003E7
cmp r1, r0
ble _021F7FB6
add r1, r0, #0
_021F7FB6:
ldr r0, [sp, #0x14]
lsl r2, r5, #0x18
ldr r0, [r0, #0x14]
lsr r2, r2, #0x18
bl ov96_021F910C
add r5, r5, #1
cmp r5, #4
blt _021F7F96
mov r0, #2
str r0, [sp]
mov r0, #0x10
mov r1, #0
add r2, r0, #0
mov r3, #0x3f
bl StartBrightnessTransition
ldrb r0, [r7]
add r0, r0, #1
strb r0, [r7]
b _021F805C
_021F7FE0:
mov r0, #2
bl IsBrightnessTransitionActive
cmp r0, #0
beq _021F805C
ldrb r0, [r7]
add r0, r0, #1
strb r0, [r7]
b _021F805C
_021F7FF2:
add r0, r6, #0
bl ov96_021F83FC
str r0, [sp, #0xc]
ldr r0, [sp, #0x14]
mov r1, #1
add r0, #0xa8
str r1, [r0]
ldrb r0, [r7]
add r0, r0, #1
strb r0, [r7]
b _021F805C
_021F800A:
add r0, r6, #0
bl ov96_021E5EE8
cmp r0, #0
beq _021F801E
add r0, r6, #0
bl ov96_021F7E64
cmp r0, #0
beq _021F805C
_021F801E:
mov r0, #0xc
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [sp, #0x14]
ldr r3, _021F8090 ; =0x00007FFF
ldr r0, [r0]
str r0, [sp, #8]
mov r0, #0
add r1, r0, #0
add r2, r0, #0
bl BeginNormalPaletteFade
mov r0, #0
mov r1, #0xc
bl GF_SndStartFadeOutBGM
ldrb r0, [r7]
add r0, r0, #1
strb r0, [r7]
b _021F805C
_021F8048:
bl IsPaletteFadeFinished
cmp r0, #0
beq _021F805C
ldr r0, [sp, #0x14]
ldr r0, [r0, #0x18]
bl ov96_021EE944
mov r0, #1
str r0, [sp, #0x18]
_021F805C:
mov r1, #0
ldr r0, [sp, #0xc]
mvn r1, r1
cmp r0, r1
beq _021F8080
ldr r0, [sp, #0x14]
ldr r1, [sp, #0xc]
ldr r0, [r0, #0x18]
bl ov96_021EE8CC
ldr r0, [sp, #0x14]
add r0, #0xa4
ldr r0, [r0]
add r1, r0, #1
ldr r0, [sp, #0x14]
add r0, #0xa4
str r0, [sp, #0x14]
str r1, [r0]
_021F8080:
ldr r0, [sp, #0x18]
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
nop
_021F8088: .word 0x04000052
_021F808C: .word 0x000003E7
_021F8090: .word 0x00007FFF
thumb_func_end ov96_021F7E74
thumb_func_start ov96_021F8094
ov96_021F8094: ; 0x021F8094
push {r4, lr}
add r4, r0, #0
add r0, r1, #0
add r1, r2, #0
add r2, r3, #0
bl ov96_021F86E8
str r0, [r4]
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021F8094
thumb_func_start ov96_021F80A8
ov96_021F80A8: ; 0x021F80A8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r7, r0, #0
str r2, [sp, #4]
str r1, [sp]
add r1, r7, #0
ldr r0, [sp, #4]
add r1, #0x59
strb r0, [r1]
ldr r0, [r7]
add r1, r3, #0
bl ov96_021F87E0
mov r5, #0
str r5, [sp, #0xc]
add r6, r5, #0
_021F80C8:
mov r2, #1
mov r3, #0x9c
add r4, r5, #0
ldr r1, [sp]
add r0, r7, #0
lsl r2, r2, #8
sub r3, r3, r6
add r4, #0xa
bl ov96_021F8378
str r0, [sp, #8]
bl ov96_021F8978
cmp r0, #0
bne _021F80E8
add r4, #0xa
_021F80E8:
ldr r1, [sp, #8]
add r0, r7, #0
add r2, r4, #0
bl ov96_021F82E4
ldr r0, [sp, #0xc]
add r5, #0xa
add r0, r0, #1
add r6, #0x28
str r0, [sp, #0xc]
cmp r0, #4
blt _021F80C8
ldr r0, [sp, #4]
cmp r0, #4
bls _021F811E
mov r2, #1
ldr r1, [sp]
add r0, r7, #0
lsl r2, r2, #8
mov r3, #0x28
bl ov96_021F8378
add r1, r0, #0
add r0, r7, #0
mov r2, #0
bl ov96_021F8334
_021F811E:
mov r0, #1
add r7, #0x58
strb r0, [r7]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021F80A8
thumb_func_start ov96_021F8128
ov96_021F8128: ; 0x021F8128
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
cmp r0, #0
beq _021F815A
ldr r0, [r4, #8]
cmp r0, #0
bne _021F8156
ldr r0, [r4, #4]
bl ov96_021F895C
ldr r0, [r4, #0xc]
cmp r0, #0
bne _021F815A
ldr r0, [r4, #4]
bl ov96_021F8978
ldr r0, _021F815C ; =0x000008D7
bl PlaySE
mov r0, #1
str r0, [r4, #0xc]
pop {r4, pc}
_021F8156:
sub r0, r0, #1
str r0, [r4, #8]
_021F815A:
pop {r4, pc}
.balign 4, 0
_021F815C: .word 0x000008D7
thumb_func_end ov96_021F8128
thumb_func_start ov96_021F8160
ov96_021F8160: ; 0x021F8160
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
add r7, r2, #0
mov r4, #0
add r5, r0, #4
_021F816A:
add r0, r5, #0
add r1, r6, #0
add r2, r7, #0
bl ov96_021F8128
add r4, r4, #1
add r5, #0x10
cmp r4, #4
blt _021F816A
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F8160
thumb_func_start ov96_021F8180
ov96_021F8180: ; 0x021F8180
push {r4, r5, r6, lr}
sub sp, #8
add r5, r0, #0
ldr r0, [r5, #4]
add r4, r1, #0
add r1, sp, #4
add r2, sp, #0
mov r6, #0
bl ov96_021F893C
cmp r4, #0
bne _021F81AC
ldr r0, [sp, #4]
cmp r0, #0
bgt _021F81B8
ldr r0, [r5, #4]
ldr r2, [sp]
add r1, r6, #0
bl ov96_021F8948
mov r6, #1
b _021F81B8
_021F81AC:
cmp r4, #1
bne _021F81B8
ldr r0, [sp]
cmp r0, #0xc0
blt _021F81B8
mov r6, #1
_021F81B8:
add r0, r6, #0
add sp, #8
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021F8180
thumb_func_start ov96_021F81C0
ov96_021F81C0: ; 0x021F81C0
add r2, r0, #0
mov r3, #3
add r2, #0x58
strb r3, [r2]
str r1, [r0, #0x54]
bx lr
thumb_func_end ov96_021F81C0
thumb_func_start ov96_021F81CC
ov96_021F81CC: ; 0x021F81CC
push {r3, r4, r5, r6, r7, lr}
add r4, r0, #0
add r6, r1, #0
add r1, r4, #0
add r1, #0x58
ldrb r1, [r1]
add r5, r4, #0
add r5, #0x58
cmp r1, #3
bhi _021F82DA
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021F81EC: ; jump table
.short _021F81F4 - _021F81EC - 2 ; case 0
.short _021F824C - _021F81EC - 2 ; case 1
.short _021F8296 - _021F81EC - 2 ; case 2
.short _021F82BE - _021F81EC - 2 ; case 3
_021F81F4:
mov r1, #0x4f
add r0, #0x44
mvn r1, r1
mov r2, #0
bl ov96_021F8128
add r0, r4, #0
add r0, #0x44
mov r1, #0
bl ov96_021F8180
cmp r0, #0
beq _021F82DA
ldr r1, [r4, #0x48]
add r0, r4, #0
mov r2, #0
bl ov96_021F82E4
add r0, r4, #0
add r0, #0x44
bl ov96_021F8354
add r0, r4, #0
bl ov96_021F8360
cmp r0, #0
beq _021F8242
mov r2, #1
add r0, r4, #0
add r1, r6, #0
lsl r2, r2, #8
mov r3, #0x28
bl ov96_021F8378
add r1, r0, #0
add r0, r4, #0
mov r2, #0
bl ov96_021F8334
_021F8242:
add r0, r4, #0
mov r1, #0xa
bl ov96_021F81C0
b _021F82DA
_021F824C:
mov r1, #0x4f
mvn r1, r1
mov r2, #0
bl ov96_021F8160
mov r6, #0
add r5, r4, #4
mov r7, #1
_021F825C:
add r0, r5, #0
mov r1, #0
bl ov96_021F8180
cmp r0, #0
beq _021F8288
ldr r0, [r4, #0x60]
cmp r0, #0
bne _021F8280
ldr r0, [r5, #4]
bl ov96_021F8978
cmp r0, #0
bne _021F8280
ldr r0, _021F82E0 ; =0x000004B9
bl PlayFanfare
str r7, [r4, #0x60]
_021F8280:
add r6, r6, #1
add r5, #0x10
cmp r6, #4
blt _021F825C
_021F8288:
cmp r6, #4
bne _021F82DA
add r0, r4, #0
mov r1, #0xa
bl ov96_021F81C0
b _021F82DA
_021F8296:
mov r1, #0
mov r2, #8
bl ov96_021F8160
add r0, r4, #0
bl ov96_021F83D0
mov r1, #1
add r6, r0, #0
bl ov96_021F8180
cmp r0, #0
beq _021F82DA
add r0, r4, #0
add r1, r6, #0
bl ov96_021F83BC
mov r0, #0
strb r0, [r5]
b _021F82DA
_021F82BE:
ldr r2, [r4, #0x54]
sub r1, r2, #1
str r1, [r4, #0x54]
cmp r2, #0
bgt _021F82DA
bl ov96_021F8360
cmp r0, #0
beq _021F82D6
mov r0, #2
strb r0, [r5]
b _021F82DA
_021F82D6:
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021F82DA:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_021F82E0: .word 0x000004B9
thumb_func_end ov96_021F81CC
thumb_func_start ov96_021F82E4
ov96_021F82E4: ; 0x021F82E4
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
add r1, r5, #0
add r1, #0x5b
ldrb r1, [r1]
add r0, r5, #4
add r7, r2, #0
lsl r1, r1, #4
add r4, r0, r1
ldr r0, [r0, r1]
cmp r0, #0
beq _021F8302
bl GF_AssertFail
_021F8302:
mov r0, #1
str r0, [r4]
str r6, [r4, #4]
add r0, r5, #0
str r7, [r4, #8]
add r0, #0x5b
ldrb r0, [r0]
add r0, r0, #1
lsr r2, r0, #0x1f
lsl r1, r0, #0x1e
sub r1, r1, r2
mov r0, #0x1e
ror r1, r0
add r0, r5, #0
add r1, r2, r1
add r0, #0x5b
strb r1, [r0]
add r0, r5, #0
add r0, #0x5a
ldrb r0, [r0]
add r5, #0x5a
add r0, r0, #1
strb r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F82E4
thumb_func_start ov96_021F8334
ov96_021F8334: ; 0x021F8334
push {r4, r5, r6, lr}
add r4, r0, #0
ldr r0, [r0, #0x44]
add r5, r1, #0
add r6, r2, #0
add r4, #0x44
cmp r0, #0
beq _021F8348
bl GF_AssertFail
_021F8348:
mov r0, #1
str r0, [r4]
str r5, [r4, #4]
str r6, [r4, #8]
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021F8334
thumb_func_start ov96_021F8354
ov96_021F8354: ; 0x021F8354
mov r1, #0
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
bx lr
.balign 4, 0
thumb_func_end ov96_021F8354
thumb_func_start ov96_021F8360
ov96_021F8360: ; 0x021F8360
add r1, r0, #0
add r1, #0x59
add r0, #0x5a
ldrb r1, [r1]
ldrb r0, [r0]
mov r2, #0
cmp r1, r0
bls _021F8372
mov r2, #1
_021F8372:
add r0, r2, #0
bx lr
.balign 4, 0
thumb_func_end ov96_021F8360
thumb_func_start ov96_021F8378
ov96_021F8378: ; 0x021F8378
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r0, r1, #0
add r4, r2, #0
add r6, r3, #0
bl ov96_021E6040
add r7, r0, #0
bl ov96_021E9524
add r2, r5, #0
add r2, #0x5c
sub r1, r0, #1
ldrb r2, [r2]
add r0, r7, #0
sub r1, r1, r2
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_021E94EC
add r3, r0, #0
add r0, r5, #0
add r0, #0x5c
ldrb r0, [r0]
add r2, r6, #0
add r1, r0, #1
add r0, r5, #0
add r0, #0x5c
strb r1, [r0]
ldr r0, [r5]
add r1, r4, #0
bl ov96_021F8830
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021F8378
thumb_func_start ov96_021F83BC
ov96_021F83BC: ; 0x021F83BC
push {r4, lr}
add r4, r1, #0
ldr r0, [r4, #4]
bl ov96_021F8918
add r0, r4, #0
bl ov96_021F8354
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021F83BC
thumb_func_start ov96_021F83D0
ov96_021F83D0: ; 0x021F83D0
add r1, r0, #4
add r0, #0x5b
ldrb r0, [r0]
lsl r0, r0, #4
add r0, r1, r0
bx lr
thumb_func_end ov96_021F83D0
thumb_func_start ov96_021F83DC
ov96_021F83DC: ; 0x021F83DC
push {r3, r4, r5, lr}
add r5, r0, #0
bl ov96_021E5EE0
add r4, r0, #0
add r0, r5, #0
bl ov96_021E5EE8
cmp r0, #0
bne _021F83F4
add r4, #0xf6
b _021F83F6
_021F83F4:
add r4, #0xf9
_021F83F6:
add r0, r4, #0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021F83DC
thumb_func_start ov96_021F83FC
ov96_021F83FC: ; 0x021F83FC
push {r4, r5, r6, lr}
add r6, r0, #0
bl ov96_021E5EE0
add r4, r0, #0
add r0, r6, #0
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
add r5, r0, #0
ldrb r0, [r5]
cmp r0, #5
blo _021F841E
bl GF_AssertFail
_021F841E:
add r0, r6, #0
bl ov96_021E5EE8
cmp r0, #0
ldrb r2, [r5]
bne _021F8438
lsl r0, r4, #2
add r1, r4, r0
mov r0, #1
lsl r0, r0, #8
add r0, r1, r0
add r0, r2, r0
pop {r4, r5, r6, pc}
_021F8438:
lsl r0, r4, #2
add r1, r4, r0
ldr r0, _021F8444 ; =0x0000010F
add r0, r1, r0
add r0, r2, r0
pop {r4, r5, r6, pc}
.balign 4, 0
_021F8444: .word 0x0000010F
thumb_func_end ov96_021F83FC
thumb_func_start ov96_021F8448
ov96_021F8448: ; 0x021F8448
push {r3, r4, lr}
sub sp, #0x4c
ldr r3, _021F84D8 ; =ov96_0221C2D8
add r4, r0, #0
ldmia r3!, {r0, r1}
add r2, sp, #0x34
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r3, _021F84DC ; =ov96_0221C2F0
add r2, sp, #0x14
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r3, _021F84E0 ; =ov96_0221C2C4
add r2, sp, #0
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
mov r0, #0x1a
str r0, [sp]
ldr r0, [r4]
bl SpriteRenderer_Create
add r1, r4, #0
add r1, #0x94
str r0, [r1]
add r0, r4, #0
add r0, #0x94
ldr r0, [r0]
bl SpriteRenderer_CreateGfxHandler
add r1, r4, #0
add r1, #0x98
str r0, [r1]
add r0, r4, #0
add r0, #0x94
ldr r0, [r0]
add r1, sp, #0x14
add r2, sp, #0
mov r3, #0x20
bl sub_0200CF70
add r0, r4, #0
add r1, r4, #0
add r0, #0x94
add r1, #0x98
ldr r0, [r0]
ldr r1, [r1]
mov r2, #2
bl sub_0200CFF4
add r0, r4, #0
add r0, #0x94
add r4, #0x98
ldr r0, [r0]
ldr r1, [r4]
add r2, sp, #0x34
bl SpriteRenderer_Init2DGfxResManagersFromCountsArray
add sp, #0x4c
pop {r3, r4, pc}
.balign 4, 0
_021F84D8: .word ov96_0221C2D8
_021F84DC: .word ov96_0221C2F0
_021F84E0: .word ov96_0221C2C4
thumb_func_end ov96_021F8448
thumb_func_start ov96_021F84E4
ov96_021F84E4: ; 0x021F84E4
push {r3, r4, r5, r6, r7, lr}
mov r4, #0
add r5, r0, #0
add r7, r4, #0
_021F84EC:
lsl r6, r4, #2
add r0, r5, r6
add r0, #0x9c
ldr r0, [r0]
cmp r0, #0
beq _021F8502
bl sub_0200D9DC
add r0, r5, r6
add r0, #0x9c
str r7, [r0]
_021F8502:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #2
blo _021F84EC
add r0, r5, #0
add r1, r5, #0
add r0, #0x94
add r1, #0x98
ldr r0, [r0]
ldr r1, [r1]
bl SpriteRenderer_UnloadResourcesAndRemoveGfxHandler
add r5, #0x94
ldr r0, [r5]
bl SpriteRenderer_Delete
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F84E4
thumb_func_start ov96_021F8528
ov96_021F8528: ; 0x021F8528
push {r3, r4, r5, lr}
sub sp, #0x10
add r1, r0, #0
add r1, #0x94
add r0, #0x98
ldr r5, [r0]
ldr r4, [r1]
mov r0, #1
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
mov r0, #0xfa
lsl r0, r0, #2
str r0, [sp, #8]
add r0, r4, #0
add r1, r5, #0
mov r2, #0x9a
mov r3, #9
bl SpriteRenderer_LoadCharResObjFromNarcId
mov r0, #0
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0xfa
lsl r0, r0, #2
str r0, [sp, #0xc]
add r0, r4, #0
add r1, r5, #0
mov r2, #0x9a
mov r3, #8
bl SpriteRenderer_LoadPlttResObjFromNarcId
mov r0, #1
str r0, [sp]
mov r0, #0xfa
lsl r0, r0, #2
str r0, [sp, #4]
add r0, r4, #0
add r1, r5, #0
mov r2, #0x9a
mov r3, #0xa
bl SpriteRenderer_LoadCellResObjFromNarcId
mov r0, #1
str r0, [sp]
mov r0, #0xfa
lsl r0, r0, #2
str r0, [sp, #4]
add r0, r4, #0
add r1, r5, #0
mov r2, #0x9a
mov r3, #0xb
bl SpriteRenderer_LoadAnimResObjFromNarcId
add sp, #0x10
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021F8528
thumb_func_start ov96_021F85A0
ov96_021F85A0: ; 0x021F85A0
push {r3, r4, lr}
sub sp, #0x34
add r4, r0, #0
add r2, sp, #0
mov r0, #0
add r3, r2, #0
add r1, r0, #0
stmia r3!, {r0, r1}
stmia r3!, {r0, r1}
stmia r3!, {r0, r1}
stmia r3!, {r0, r1}
stmia r3!, {r0, r1}
stmia r3!, {r0, r1}
str r0, [r3]
mov r0, #0xfa
lsl r0, r0, #2
str r0, [sp, #0x14]
str r0, [sp, #0x18]
str r0, [sp, #0x1c]
str r0, [sp, #0x20]
mov r0, #2
str r0, [sp, #0x10]
mov r0, #1
str r0, [sp, #0x2c]
mov r1, #0xe0
add r0, sp, #0
strh r1, [r0]
mov r1, #0x70
strh r1, [r0, #2]
add r0, r4, #0
add r1, r4, #0
add r0, #0x94
add r1, #0x98
ldr r0, [r0]
ldr r1, [r1]
bl SpriteRenderer_LoadResourcesAndCreateSprite
add r4, #0x9c
str r0, [r4]
add sp, #0x34
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov96_021F85A0
thumb_func_start ov96_021F85F4
ov96_021F85F4: ; 0x021F85F4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r7, r0, #0
bl ov96_021E5DC4
str r0, [sp, #0x14]
add r0, r7, #0
bl ov96_021E5F54
str r0, [sp, #0x10]
add r0, #0x28
bl ov96_021E8A20
str r0, [sp, #0xc]
ldr r0, [sp, #0x10]
add r0, #0xf0
bl ov96_021E8A20
str r0, [sp, #8]
add r0, r7, #0
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r1, r0, #0x18
ldr r0, [sp, #0x14]
add r0, #0xa4
ldr r0, [r0]
lsl r0, r0, #0x18
lsr r6, r0, #0x18
mov r0, #0
str r0, [sp, #4]
cmp r1, #0
bne _021F86AC
mov r0, #1
str r0, [sp]
ldr r0, [sp, #0xc]
strb r6, [r0, #1]
ldr r0, [sp, #0x10]
add r0, #0x50
bl ov96_021E8A20
add r4, r0, #0
ldr r0, [sp, #0x10]
bl ov96_021E8A20
mov r2, #0x24
_021F8650:
ldrb r1, [r0]
add r0, r0, #1
strb r1, [r4]
add r4, r4, #1
sub r2, r2, #1
bne _021F8650
add r0, r7, #0
mov r4, #0
bl ov96_021E5D34
cmp r0, #0
ble _021F869A
ldr r5, [sp, #0x10]
add r5, #0x50
_021F866C:
add r0, r5, #0
bl ov96_021E8A20
ldrb r1, [r0]
cmp r1, r6
blo _021F867E
ldrb r1, [r0, #1]
cmp r1, #1
bne _021F8682
_021F867E:
mov r1, #1
str r1, [sp, #4]
_021F8682:
ldrb r0, [r0, #2]
cmp r0, #0
bne _021F868C
mov r0, #0
str r0, [sp]
_021F868C:
add r0, r7, #0
add r5, #0x28
add r4, r4, #1
bl ov96_021E5D34
cmp r4, r0
blt _021F866C
_021F869A:
ldr r0, [sp]
cmp r0, #0
beq _021F86A6
ldr r0, [sp, #0xc]
mov r1, #1
strb r1, [r0, #2]
_021F86A6:
ldr r1, [sp, #4]
ldr r0, [sp, #0xc]
strb r1, [r0, #3]
_021F86AC:
ldr r0, [sp, #0x10]
bl ov96_021E8A20
add r4, r0, #0
ldr r0, [sp, #0x14]
strb r6, [r4]
ldr r0, [r0, #0x18]
bl ov96_021EEA80
strb r0, [r4, #1]
ldr r0, [sp, #0x14]
add r0, #0xa8
str r0, [sp, #0x14]
ldr r0, [r0]
strb r0, [r4, #2]
ldr r0, [sp, #8]
ldrb r0, [r0, #3]
cmp r0, #0
beq _021F86E0
ldr r0, [sp, #8]
ldrb r0, [r0, #1]
cmp r6, r0
blo _021F86E0
add sp, #0x18
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021F86E0:
mov r0, #0
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F85F4
thumb_func_start ov96_021F86E8
ov96_021F86E8: ; 0x021F86E8
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
mov r1, #0xcd
lsl r1, r1, #2
add r7, r0, #0
add r6, r2, #0
bl AllocFromHeap
mov r2, #0xcd
mov r1, #0
lsl r2, r2, #2
add r4, r0, #0
bl MI_CpuFill8
mov r0, #0xa
add r1, r7, #0
str r7, [r4]
bl sub_02013534
str r0, [r4, #0x10]
str r5, [r4, #8]
str r6, [r4, #4]
mov r0, #0
add r1, r4, #0
_021F8718:
str r0, [r1, #0x48]
add r0, r0, #1
add r1, #0x48
cmp r0, #5
blt _021F8718
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F86E8
thumb_func_start ov96_021F8728
ov96_021F8728: ; 0x021F8728
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
add r4, r0, #0
str r0, [sp]
mov r7, #0
add r6, #0x24
add r4, #0x34
add r5, r0, #0
_021F8738:
add r0, r6, #0
bl ov96_021F8E94
add r0, r4, #0
bl ov96_021F8E94
ldr r0, [r5, #0x14]
bl Sprite_Delete
ldr r0, [r5, #0x18]
bl Sprite_Delete
ldr r0, [r5, #0x1c]
bl Sprite_Delete
ldr r0, [r5, #0x20]
bl Sprite_Delete
add r7, r7, #1
add r6, #0x48
add r4, #0x48
add r5, #0x48
cmp r7, #5
blt _021F8738
mov r1, #0xbf
ldr r0, [sp]
lsl r1, r1, #2
mov r4, #0
add r5, r0, r1
_021F8772:
ldr r0, [r5, #0x10]
bl sub_02013938
add r0, r5, #0
bl RemoveWindow
add r4, r4, #1
add r5, #0x18
cmp r4, #2
blt _021F8772
ldr r0, [sp]
ldr r0, [r0, #0x10]
bl sub_020135AC
mov r1, #0xb
ldr r0, [sp]
lsl r1, r1, #6
ldr r0, [r0, r1]
bl sub_0200AEB0
mov r1, #0xb1
ldr r0, [sp]
lsl r1, r1, #2
ldr r0, [r0, r1]
bl sub_0200B0A8
mov r6, #0xaa
ldr r4, [sp]
mov r5, #0
lsl r6, r6, #2
_021F87AE:
ldr r0, [r4, r6]
bl Destroy2DGfxResObjMan
add r5, r5, #1
add r4, r4, #4
cmp r5, #6
blt _021F87AE
mov r1, #0x5f
ldr r0, [sp]
lsl r1, r1, #2
ldr r0, [r0, r1]
bl SpriteList_Delete
ldr r0, [sp]
bl FreeToHeap
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021F8728
thumb_func_start ov96_021F87D0
ov96_021F87D0: ; 0x021F87D0
mov r1, #0x5f
lsl r1, r1, #2
ldr r3, _021F87DC ; =sub_0202457C
ldr r0, [r0, r1]
bx r3
nop
_021F87DC: .word sub_0202457C
thumb_func_end ov96_021F87D0
thumb_func_start ov96_021F87E0
ov96_021F87E0: ; 0x021F87E0
push {r4, r5, r6, lr}
add r6, r0, #0
bl ov96_021F8980
add r0, r6, #0
bl ov96_021F8A50
add r5, r6, #0
mov r4, #0
add r5, #0x14
_021F87F4:
lsl r1, r4, #0x18
add r0, r6, #0
lsr r1, r1, #0x18
add r2, r5, #0
bl ov96_021F8AFC
add r4, r4, #1
add r5, #0x48
cmp r4, #5
blt _021F87F4
add r0, r6, #0
bl ov96_021F8DD4
mov r0, #6
lsl r0, r0, #6
mov r2, #0x4b
add r0, r6, r0
mov r1, #0
lsl r2, r2, #0xe
bl G2dRenderer_SetSubSurfaceCoords
mov r0, #6
lsl r0, r0, #6
mov r1, #0
add r0, r6, r0
add r2, r1, #0
bl G2dRenderer_SetMainSurfaceCoords
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021F87E0
thumb_func_start ov96_021F8830
ov96_021F8830: ; 0x021F8830
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
mov r0, #0x33
lsl r0, r0, #4
str r1, [sp]
ldr r1, [r5, r0]
str r2, [sp, #4]
add r2, r5, #0
mov r0, #0x48
add r2, #0x14
mul r0, r1
add r4, r2, r0
ldr r0, [r4, #0x30]
add r6, r3, #0
cmp r0, #0
beq _021F8856
bl GF_AssertFail
_021F8856:
ldr r0, [r5, #4]
ldr r1, [r6]
bl ov96_021E5D40
str r0, [sp, #8]
ldr r0, [r0]
cmp r0, #0
ble _021F886A
mov r7, #1
b _021F886C
_021F886A:
mov r7, #0
_021F886C:
ldr r0, [sp]
add r2, r4, #0
str r0, [r4, #0x38]
ldr r0, [sp, #4]
str r0, [r4, #0x3c]
ldr r0, [r6]
str r0, [r4, #0x40]
add r0, r4, #0
ldrb r1, [r6, #9]
add r0, #0x44
strh r1, [r0]
ldr r1, [r6, #0x10]
add r0, r5, #0
bl ov96_021F8C04
ldr r1, [r6]
add r0, r5, #0
add r2, r4, #0
bl ov96_021F8BC0
add r0, r4, #0
add r0, #0x44
ldrh r0, [r0]
cmp r0, #0
bne _021F88A2
mov r1, #1
b _021F88A4
_021F88A2:
mov r1, #0
_021F88A4:
mov r0, #0xcb
lsl r0, r0, #2
str r1, [r5, r0]
ldr r0, [r4, #0x40]
cmp r0, #4
blt _021F88B4
bl GF_AssertFail
_021F88B4:
cmp r7, #0
beq _021F88D6
ldr r0, [sp, #8]
ldr r0, [r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl ov96_021E8424
bl ov96_021EEDCC
add r1, r0, #0
ldr r0, [r4, #0xc]
ldr r3, [r5]
mov r2, #0xb
bl ov96_021EEA94
b _021F88E6
_021F88D6:
ldr r2, [r4, #0x40]
ldr r0, [r4, #0xc]
lsl r2, r2, #0x18
ldr r1, [r5, #4]
lsr r2, r2, #0x18
mov r3, #0x1b
bl ov96_021EEB84
_021F88E6:
add r0, r4, #0
bl ov96_021F8C2C
mov r0, #0xcb
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #1
add r2, r4, #0
bl ov96_021F8C54
mov r0, #1
str r0, [r4, #0x30]
mov r0, #0x33
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #5
add r0, r0, #1
bl _s32_div_f
mov r0, #0x33
lsl r0, r0, #4
str r1, [r5, r0]
add r0, r4, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021F8830
thumb_func_start ov96_021F8918
ov96_021F8918: ; 0x021F8918
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x30]
cmp r0, #0
bne _021F8926
bl GF_AssertFail
_021F8926:
mov r0, #0
str r0, [r4, #0x30]
add r0, r4, #0
add r0, #0x10
bl ov96_021F8E94
add r4, #0x20
add r0, r4, #0
bl ov96_021F8E94
pop {r4, pc}
thumb_func_end ov96_021F8918
thumb_func_start ov96_021F893C
ov96_021F893C: ; 0x021F893C
ldr r3, [r0, #0x38]
str r3, [r1]
ldr r0, [r0, #0x3c]
str r0, [r2]
bx lr
.balign 4, 0
thumb_func_end ov96_021F893C
thumb_func_start ov96_021F8948
ov96_021F8948: ; 0x021F8948
add r3, r0, #0
str r1, [r3, #0x38]
add r0, r1, #0
str r2, [r3, #0x3c]
add r1, r2, #0
add r2, r3, #0
ldr r3, _021F8958 ; =ov96_021F8C88
bx r3
.balign 4, 0
_021F8958: .word ov96_021F8C88
thumb_func_end ov96_021F8948
thumb_func_start ov96_021F895C
ov96_021F895C: ; 0x021F895C
add r3, r0, #0
ldr r0, [r3, #0x38]
add r0, r0, r1
str r0, [r3, #0x38]
ldr r0, [r3, #0x3c]
add r0, r0, r2
str r0, [r3, #0x3c]
add r0, r1, #0
add r1, r2, #0
add r2, r3, #0
ldr r3, _021F8974 ; =ov96_021F8CFC
bx r3
.balign 4, 0
_021F8974: .word ov96_021F8CFC
thumb_func_end ov96_021F895C
thumb_func_start ov96_021F8978
ov96_021F8978: ; 0x021F8978
add r0, #0x44
ldrh r0, [r0]
bx lr
.balign 4, 0
thumb_func_end ov96_021F8978
thumb_func_start ov96_021F8980
ov96_021F8980: ; 0x021F8980
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
mov r1, #6
lsl r1, r1, #6
ldr r2, [r5]
mov r0, #0x37
add r1, r5, r1
bl G2dRenderer_Init
mov r1, #0x5f
lsl r1, r1, #2
mov r7, #0xaa
str r0, [r5, r1]
mov r6, #0
add r4, r5, #0
lsl r7, r7, #2
_021F89A2:
ldr r2, [r5]
mov r0, #1
add r1, r6, #0
bl Create2DGfxResObjMan
str r0, [r4, r7]
add r6, r6, #1
add r4, r4, #4
cmp r6, #6
blt _021F89A2
mov r0, #0x67
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r5]
mov r1, #0xa0
str r0, [sp, #8]
mov r0, #0xaa
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r2, #9
mov r3, #0
bl AddCharResObjFromNarc
mov r1, #0xb
lsl r1, r1, #6
str r0, [r5, r1]
mov r0, #0x67
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r2, #6
str r2, [sp, #8]
ldr r0, [r5]
sub r1, #0x14
str r0, [sp, #0xc]
ldr r0, [r5, r1]
mov r1, #0xa0
mov r3, #0
bl AddPlttResObjFromNarc
mov r1, #0xb1
lsl r1, r1, #2
str r0, [r5, r1]
mov r0, #0x67
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r5]
sub r1, #0x14
str r0, [sp, #8]
ldr r0, [r5, r1]
mov r1, #0xa0
mov r2, #8
mov r3, #0
bl AddCellOrAnimResObjFromNarc
mov r1, #0xb2
lsl r1, r1, #2
str r0, [r5, r1]
mov r0, #0x67
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r5]
sub r1, #0x14
str r0, [sp, #8]
ldr r0, [r5, r1]
mov r1, #0xa0
mov r2, #7
mov r3, #0
bl AddCellOrAnimResObjFromNarc
mov r1, #0xb3
lsl r1, r1, #2
str r0, [r5, r1]
sub r1, #0xc
ldr r0, [r5, r1]
bl sub_0200ADA4
mov r0, #0xb1
lsl r0, r0, #2
ldr r0, [r5, r0]
bl sub_0200AF94
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021F8980
thumb_func_start ov96_021F8A50
ov96_021F8A50: ; 0x021F8A50
push {r3, r4, lr}
sub sp, #0x2c
mov r1, #0x67
add r2, r1, #0
str r1, [sp]
sub r2, #0x68
str r2, [sp, #4]
str r2, [sp, #8]
mov r2, #0
str r2, [sp, #0xc]
mov r4, #0xaa
str r2, [sp, #0x10]
lsl r4, r4, #2
ldr r3, [r0, r4]
str r3, [sp, #0x14]
add r3, r4, #4
ldr r3, [r0, r3]
str r3, [sp, #0x18]
add r3, r4, #0
add r3, #8
ldr r3, [r0, r3]
str r3, [sp, #0x1c]
add r3, r4, #0
add r3, #0xc
ldr r3, [r0, r3]
add r4, #0x30
str r3, [sp, #0x20]
str r2, [sp, #0x24]
str r2, [sp, #0x28]
add r0, r0, r4
add r2, r1, #0
add r3, r1, #0
bl CreateSpriteResourcesHeader
add sp, #0x2c
pop {r3, r4, pc}
thumb_func_end ov96_021F8A50
thumb_func_start ov96_021F8A98
ov96_021F8A98: ; 0x021F8A98
push {r3, r4}
mov r2, #0x5f
lsl r2, r2, #2
ldr r2, [r1, r2]
mov r4, #0
str r2, [r0]
mov r2, #0xb6
lsl r2, r2, #2
add r2, r1, r2
str r2, [r0, #4]
str r4, [r0, #8]
str r4, [r0, #0xc]
mov r2, #1
str r4, [r0, #0x10]
lsl r2, r2, #0xc
str r2, [r0, #0x14]
str r2, [r0, #0x18]
str r2, [r0, #0x1c]
strh r4, [r0, #0x20]
mov r2, #2
str r2, [r0, #0x24]
str r3, [r0, #0x28]
ldr r1, [r1]
str r1, [r0, #0x2c]
pop {r3, r4}
bx lr
thumb_func_end ov96_021F8A98
thumb_func_start ov96_021F8ACC
ov96_021F8ACC: ; 0x021F8ACC
push {r4, r5, r6, lr}
add r5, r1, #0
add r6, r2, #0
bl CreateSprite
add r4, r0, #0
mov r1, #1
bl Set2dSpriteAnimActiveFlag
add r0, r4, #0
add r1, r5, #0
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0
bl Set2dSpriteVisibleFlag
add r0, r4, #0
add r1, r6, #0
bl Sprite_SetDrawPriority
add r0, r4, #0
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021F8ACC
thumb_func_start ov96_021F8AFC
ov96_021F8AFC: ; 0x021F8AFC
push {r4, r5, r6, r7, lr}
sub sp, #0x44
add r4, r2, #0
mov r2, #0xb6
add r3, r0, #0
lsl r2, r2, #2
add r5, r1, #0
add r0, sp, #0x14
add r1, r3, #0
add r2, r3, r2
mov r3, #1
bl ov96_021F8A98
add r0, sp, #0x14
mov r1, #0x11
mov r2, #4
bl ov96_021F8ACC
str r0, [r4]
add r0, sp, #0x14
mov r1, #5
mov r2, #0
bl ov96_021F8ACC
str r0, [r4, #4]
add r0, sp, #0x14
mov r1, #0x12
mov r2, #1
bl ov96_021F8ACC
str r0, [r4, #8]
add r0, sp, #0x14
mov r1, #0
mov r2, #2
bl ov96_021F8ACC
str r0, [r4, #0xc]
add r4, r0, #0
bl Sprite_GetVramType
add r6, r0, #0
add r0, r4, #0
bl sub_02024B1C
add r7, r0, #0
add r0, r4, #0
bl sub_02024B34
str r0, [sp]
add r0, r7, #0
add r1, r6, #0
bl NNS_G2dGetImageLocation
str r0, [sp, #4]
lsl r0, r5, #9
str r0, [sp, #8]
add r0, r7, #0
bl NNS_G2dInitImageProxy
ldr r3, [sp, #4]
ldr r2, [sp, #8]
add r0, r7, #0
add r1, r6, #0
add r2, r3, r2
bl NNS_G2dSetImageLocation
ldr r0, [sp]
add r1, r6, #0
bl NNS_G2dGetImagePaletteLocation
str r0, [sp, #0xc]
add r0, r5, #6
lsl r0, r0, #5
str r0, [sp, #0x10]
ldr r0, [sp]
bl NNS_G2dInitImagePaletteProxy
ldr r3, [sp, #0xc]
ldr r2, [sp, #0x10]
ldr r0, [sp]
add r1, r6, #0
add r2, r3, r2
bl NNS_G2dSetImagePaletteLocation
add r0, r4, #0
add r1, r7, #0
bl sub_02024B00
ldr r1, [sp]
add r0, r4, #0
bl sub_02024B20
add r0, r4, #0
add r1, r5, #0
bl Sprite_SetPalOffset
add sp, #0x44
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021F8AFC
thumb_func_start ov96_021F8BC0
ov96_021F8BC0: ; 0x021F8BC0
push {r4, r5, r6, lr}
sub sp, #0x10
add r5, r0, #0
ldr r0, [r5, #4]
add r4, r2, #0
bl ov96_021E5F34
ldr r1, [r5]
bl PlayerProfile_GetPlayerName_NewString
add r6, r0, #0
mov r0, #0x37
mvn r0, r0
str r0, [sp]
add r0, #0x28
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0xbf
lsl r1, r1, #2
str r0, [sp, #8]
add r4, #0x10
add r0, r5, #0
add r1, r5, r1
add r2, r6, #0
mov r3, #0
str r4, [sp, #0xc]
bl ov96_021F8DF4
add r0, r6, #0
bl String_Delete
add sp, #0x10
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021F8BC0
thumb_func_start ov96_021F8C04
ov96_021F8C04: ; 0x021F8C04
push {r4, lr}
sub sp, #0x10
add r4, r1, #0
mov r1, #0x37
mvn r1, r1
str r1, [sp]
mov r3, #0
str r3, [sp, #4]
ldr r1, [r2]
add r2, #0x20
str r1, [sp, #8]
mov r1, #0xc5
lsl r1, r1, #2
str r2, [sp, #0xc]
add r1, r0, r1
add r2, r4, #0
bl ov96_021F8DF4
add sp, #0x10
pop {r4, pc}
thumb_func_end ov96_021F8C04
thumb_func_start ov96_021F8C2C
ov96_021F8C2C: ; 0x021F8C2C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x38]
ldr r1, [r4, #0x3c]
add r2, r4, #0
bl ov96_021F8C88
ldr r1, [r4, #0x40]
ldr r0, [r4]
add r1, r1, #2
bl Sprite_SetPalIndex
ldr r0, [r4, #4]
add r4, #0x44
ldrh r1, [r4]
add r1, r1, #5
bl Set2dSpriteAnimSeqNo
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021F8C2C
thumb_func_start ov96_021F8C54
ov96_021F8C54: ; 0x021F8C54
push {r4, r5, r6, lr}
add r4, r2, #0
add r6, r0, #0
ldr r0, [r4]
add r5, r1, #0
bl Set2dSpriteVisibleFlag
ldr r0, [r4, #4]
add r1, r5, #0
bl Set2dSpriteVisibleFlag
cmp r6, #0
beq _021F8C76
ldr r0, [r4, #8]
add r1, r5, #0
bl Set2dSpriteVisibleFlag
_021F8C76:
ldr r0, [r4, #0x10]
add r1, r5, #0
bl sub_020137C0
ldr r0, [r4, #0x20]
add r1, r5, #0
bl sub_020137C0
pop {r4, r5, r6, pc}
thumb_func_end ov96_021F8C54
thumb_func_start ov96_021F8C88
ov96_021F8C88: ; 0x021F8C88
push {r4, r5, r6, r7, lr}
sub sp, #0xc
ldr r6, _021F8CF8 ; =ov96_0221C3E0
add r5, r2, #0
add r4, r0, #0
add r3, r1, #0
add r2, sp, #0
ldmia r6!, {r0, r1}
add r7, r2, #0
stmia r2!, {r0, r1}
ldr r0, [r6]
str r0, [r2]
ldr r1, [sp, #4]
lsl r0, r3, #0xc
add r0, r1, r0
str r0, [sp, #4]
add r0, r4, #0
add r0, #0x80
lsl r0, r0, #0xc
str r0, [sp]
ldr r0, [r5]
add r1, r7, #0
bl Sprite_SetMatrix
add r0, r4, #0
add r0, #0x10
lsl r0, r0, #0xc
str r0, [sp]
ldr r0, [r5, #4]
add r1, r7, #0
bl Sprite_SetMatrix
add r4, #0x30
lsl r0, r4, #0xc
str r0, [sp]
ldr r0, [r5, #8]
add r1, r7, #0
bl Sprite_SetMatrix
mov r0, #1
ldr r1, [sp, #4]
lsl r0, r0, #0xe
sub r0, r1, r0
str r0, [sp, #4]
ldr r0, [r5, #0xc]
add r1, r7, #0
bl Sprite_SetMatrix
ldr r0, [r5, #0x10]
bl sub_02013728
ldr r0, [r5, #0x20]
bl sub_02013728
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021F8CF8: .word ov96_0221C3E0
thumb_func_end ov96_021F8C88
thumb_func_start ov96_021F8CFC
ov96_021F8CFC: ; 0x021F8CFC
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r4, r2, #0
add r5, r0, #0
ldr r0, [r4]
add r7, r1, #0
bl Sprite_GetMatrixPtr
add r3, r0, #0
add r2, sp, #0
lsl r6, r5, #0xc
ldmia r3!, {r0, r1}
mov ip, r2
stmia r2!, {r0, r1}
ldr r0, [r3]
lsl r5, r7, #0xc
str r0, [r2]
ldr r0, [sp]
mov r1, ip
add r0, r0, r6
str r0, [sp]
ldr r0, [sp, #4]
add r0, r0, r5
str r0, [sp, #4]
ldr r0, [r4]
bl Sprite_SetMatrix
ldr r0, [r4, #4]
bl Sprite_GetMatrixPtr
add r3, r0, #0
add r2, sp, #0
ldmia r3!, {r0, r1}
add r7, r2, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
add r1, r7, #0
str r0, [r2]
ldr r0, [sp]
add r0, r0, r6
str r0, [sp]
ldr r0, [sp, #4]
add r0, r0, r5
str r0, [sp, #4]
ldr r0, [r4, #4]
bl Sprite_SetMatrix
ldr r0, [r4, #0xc]
bl Sprite_GetMatrixPtr
add r3, r0, #0
ldmia r3!, {r0, r1}
add r2, r7, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
add r1, r7, #0
str r0, [r2]
ldr r0, [sp]
add r0, r0, r6
str r0, [sp]
ldr r0, [sp, #4]
add r0, r0, r5
str r0, [sp, #4]
ldr r0, [r4, #0xc]
bl Sprite_SetMatrix
ldr r0, [r4, #8]
add r1, r7, #0
bl Sprite_SetMatrix
ldr r0, [r4, #0x10]
bl sub_02013728
ldr r0, [r4, #0x20]
bl sub_02013728
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021F8CFC
thumb_func_start ov96_021F8D98
ov96_021F8D98: ; 0x021F8D98
push {r4, r5, r6, lr}
sub sp, #8
add r4, r1, #0
add r5, r0, #0
add r0, r4, #0
add r6, r2, #0
bl InitWindow
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
lsl r2, r6, #0x18
ldr r0, [r5, #8]
add r1, r4, #0
lsr r2, r2, #0x18
mov r3, #2
bl AddTextWindowTopLeftCorner
ldr r1, [r5]
add r0, r4, #0
bl sub_02013910
mov r1, #1
str r0, [r4, #0x10]
bl sub_02013948
str r0, [r4, #0x14]
add sp, #8
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021F8D98
thumb_func_start ov96_021F8DD4
ov96_021F8DD4: ; 0x021F8DD4
push {r4, lr}
mov r1, #0xbf
add r4, r0, #0
lsl r1, r1, #2
add r1, r4, r1
mov r2, #8
bl ov96_021F8D98
mov r1, #0xc5
lsl r1, r1, #2
add r0, r4, #0
add r1, r4, r1
mov r2, #0x18
bl ov96_021F8D98
pop {r4, pc}
thumb_func_end ov96_021F8DD4
thumb_func_start ov96_021F8DF4
ov96_021F8DF4: ; 0x021F8DF4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x58
add r4, r1, #0
add r5, r0, #0
add r0, r4, #0
mov r1, #0
add r7, r2, #0
str r3, [sp, #0x18]
ldr r6, [sp, #0x7c]
bl FillWindowPixelBufferText_AssumeTileSize32
mov r1, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021F8E90 ; =0x00010200
ldr r3, [sp, #0x18]
str r0, [sp, #8]
str r1, [sp, #0xc]
str r1, [sp, #0x10]
str r1, [sp, #0x14]
add r0, r4, #0
add r2, r7, #0
bl AddTextPrinterParameterizedWithColorAndSpacing
mov r1, #1
ldr r0, [r4, #0x14]
add r2, r1, #0
add r3, sp, #0x1c
bl sub_02021AC8
ldr r0, [r5, #0x10]
mov r1, #0
str r0, [sp, #0x28]
mov r0, #0x5f
str r4, [sp, #0x2c]
lsl r0, r0, #2
ldr r0, [r5, r0]
str r0, [sp, #0x30]
mov r0, #0xb1
lsl r0, r0, #2
ldr r0, [r5, r0]
bl sub_0200B0F8
str r0, [sp, #0x34]
ldr r0, [sp, #0x78]
str r0, [sp, #0x38]
ldr r0, [sp, #0x20]
str r0, [sp, #0x3c]
ldr r0, [sp, #0x70]
str r0, [sp, #0x40]
ldr r0, [sp, #0x74]
str r0, [sp, #0x44]
mov r0, #0
str r0, [sp, #0x48]
mov r0, #3
str r0, [sp, #0x4c]
mov r0, #1
str r0, [sp, #0x50]
ldr r0, [r5]
str r0, [sp, #0x54]
add r0, sp, #0x28
bl sub_020135D8
add r4, r0, #0
mov r1, #0
bl sub_02013850
str r4, [r6]
add r3, sp, #0x1c
ldmia r3!, {r0, r1}
add r2, r6, #4
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
add sp, #0x58
pop {r3, r4, r5, r6, r7, pc}
nop
_021F8E90: .word 0x00010200
thumb_func_end ov96_021F8DF4
thumb_func_start ov96_021F8E94
ov96_021F8E94: ; 0x021F8E94
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
cmp r0, #0
beq _021F8EAC
bl sub_020139C8
add r0, r4, #4
bl sub_02021B5C
mov r0, #0
str r0, [r4]
_021F8EAC:
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021F8E94
thumb_func_start ov96_021F8EB0
ov96_021F8EB0: ; 0x021F8EB0
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r7, r1, #0
mov r1, #0xc4
add r6, r0, #0
add r5, r2, #0
bl AllocFromHeap
add r4, r0, #0
mov r1, #0
mov r2, #0xc4
bl MI_CpuFill8
str r6, [r4]
mov r0, #4
add r1, r6, #0
bl sub_02013534
str r0, [r4, #8]
str r5, [r4, #4]
add r5, r4, #0
add r5, #0xc
add r0, r5, #0
bl InitWindow
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
add r0, r7, #0
add r1, r5, #0
mov r2, #8
mov r3, #2
bl AddTextWindowTopLeftCorner
ldr r1, [r4]
add r0, r5, #0
bl sub_02013910
mov r1, #2
str r0, [r5, #0x10]
bl sub_02013948
str r0, [r5, #0x14]
add r0, r4, #0
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021F8EB0
thumb_func_start ov96_021F8F0C
ov96_021F8F0C: ; 0x021F8F0C
push {r4, r5, r6, lr}
add r6, r0, #0
add r5, r6, #0
mov r4, #0
add r5, #0x34
_021F8F16:
add r0, r5, #0
bl ov96_021F91CC
add r4, r4, #1
add r5, #0x28
cmp r4, #4
blt _021F8F16
add r4, r6, #0
add r4, #0xc
ldr r0, [r4, #0x10]
bl sub_02013938
add r0, r4, #0
bl RemoveWindow
ldr r0, [r6, #8]
bl sub_020135AC
add r0, r6, #0
bl FreeToHeap
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021F8F0C
thumb_func_start ov96_021F8F44
ov96_021F8F44: ; 0x021F8F44
push {r4, lr}
sub sp, #8
add r4, r0, #0
ldr r0, [r4, #4]
mov r2, #0x68
bl ov96_021EB29C
mov r0, #2
str r0, [sp]
ldr r0, [r4, #4]
mov r1, #0xa1
mov r2, #3
mov r3, #0x68
bl ov96_021EB2BC
mov r0, #2
str r0, [sp]
mov r0, #5
str r0, [sp, #4]
ldr r0, [r4, #4]
mov r1, #0xa1
mov r2, #0
mov r3, #0x68
bl ov96_021EB2F4
ldr r0, [r4, #4]
mov r1, #0xa1
mov r2, #2
mov r3, #0x68
bl ov96_021EB334
ldr r0, [r4, #4]
mov r1, #0xa1
mov r2, #1
mov r3, #0x68
bl ov96_021EB36C
add sp, #8
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021F8F44
thumb_func_start ov96_021F8F94
ov96_021F8F94: ; 0x021F8F94
push {r4, r5, r6, r7, lr}
sub sp, #0x44
add r6, r0, #0
mov r0, #0
str r0, [sp, #0x34]
str r0, [sp, #0x28]
mov r0, #8
str r0, [sp, #0x24]
add r0, r2, #0
add r0, #0x10
lsl r0, r0, #0xc
str r0, [sp, #0x20]
add r0, r2, #0
add r0, #0x18
lsl r0, r0, #0xc
str r1, [sp, #0x10]
str r2, [sp, #0x14]
str r0, [sp, #0x1c]
_021F8FB8:
mov r0, #3
str r0, [sp]
ldr r0, [r6, #4]
mov r1, #0
mov r2, #2
mov r3, #0x68
bl ov96_021EB408
mov r1, #0
str r1, [sp, #0x40]
ldr r1, [sp, #0x28]
add r4, r0, #0
lsl r1, r1, #0xc
str r1, [sp, #0x38]
ldr r1, [sp, #0x20]
str r1, [sp, #0x3c]
add r1, sp, #0x38
bl Sprite_SetMatrix
add r0, r4, #0
mov r1, #1
bl Set2dSpriteAnimActiveFlag
add r0, r4, #0
mov r1, #0
bl Set2dSpriteAnimSeqNo
ldr r1, [sp, #0x34]
add r0, r4, #0
bl sub_02024A48
add r0, r4, #0
mov r1, #2
bl Sprite_SetDrawPriority
ldr r5, [sp, #0x24]
mov r7, #0
_021F9002:
mov r0, #4
str r0, [sp]
ldr r0, [r6, #4]
mov r1, #0
mov r2, #2
mov r3, #0x68
bl ov96_021EB408
mov r1, #0
str r1, [sp, #0x40]
lsl r1, r5, #0xc
str r1, [sp, #0x38]
ldr r1, [sp, #0x1c]
add r4, r0, #0
str r1, [sp, #0x3c]
add r1, sp, #0x38
bl Sprite_SetMatrix
add r0, r4, #0
mov r1, #1
bl Set2dSpriteAnimActiveFlag
add r0, r4, #0
mov r1, #1
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #1
bl Sprite_SetDrawPriority
add r7, r7, #1
add r5, #0x10
cmp r7, #3
blt _021F9002
ldr r0, [sp, #0x28]
add r0, #0x40
str r0, [sp, #0x28]
ldr r0, [sp, #0x24]
add r0, #0x40
str r0, [sp, #0x24]
ldr r0, [sp, #0x34]
add r0, r0, #1
str r0, [sp, #0x34]
cmp r0, #4
blt _021F8FB8
mov r0, #0
str r0, [sp, #0x18]
add r0, r6, #0
str r0, [sp, #0x30]
add r0, #0x24
str r0, [sp, #0x30]
add r0, r6, #0
str r0, [sp, #0x2c]
add r0, #0x34
add r7, r6, #0
str r0, [sp, #0x2c]
_021F9072:
ldr r0, [r6, #4]
mov r1, #0x68
mov r2, #3
bl ov96_021EB4F4
ldr r1, [sp, #0x30]
str r0, [r1]
mov r1, #1
add r2, r1, #0
bl ov96_021EB52C
ldr r4, [sp, #0x30]
mov r5, #0
_021F908C:
ldr r0, [r6, #4]
mov r1, #0x68
mov r2, #4
bl ov96_021EB4F4
mov r1, #1
add r2, r1, #0
str r0, [r4, #4]
bl ov96_021EB52C
add r5, r5, #1
add r4, r4, #4
cmp r5, #3
blt _021F908C
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x18]
bl ov96_021E5F34
ldr r1, [r6]
bl PlayerProfile_GetPlayerName_NewString
add r4, r0, #0
ldr r0, [r7, #0x24]
bl ov96_021EB5B8
mov r1, #0
str r1, [sp]
sub r1, #0x10
str r1, [sp, #4]
str r0, [sp, #8]
ldr r0, [sp, #0x2c]
add r1, r6, #0
str r0, [sp, #0xc]
add r0, r6, #0
add r1, #0xc
add r2, r4, #0
mov r3, #2
bl ov96_021F9134
add r0, r4, #0
bl String_Delete
ldr r0, [r7, #0x34]
mov r1, #1
bl sub_020137C0
ldr r0, [sp, #0x14]
add r0, #0x10
str r0, [r7, #0x48]
ldr r0, [sp, #0x30]
add r7, #0x28
add r0, #0x28
str r0, [sp, #0x30]
ldr r0, [sp, #0x2c]
add r0, #0x28
str r0, [sp, #0x2c]
ldr r0, [sp, #0x18]
add r0, r0, #1
str r0, [sp, #0x18]
cmp r0, #4
blt _021F9072
add sp, #0x44
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F8F94
thumb_func_start ov96_021F910C
ov96_021F910C: ; 0x021F910C
push {r4, r5, r6, lr}
add r6, r2, #0
add r5, r0, #0
add r4, r1, #0
cmp r6, #4
blo _021F911C
bl GF_AssertFail
_021F911C:
mov r0, #0x28
add r1, r6, #0
mul r1, r0
add r0, r5, r1
add r5, #0x24
str r4, [r0, #0x44]
add r0, r5, r1
add r1, r4, #0
bl ov96_021F91E8
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021F910C
thumb_func_start ov96_021F9134
ov96_021F9134: ; 0x021F9134
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x58
add r4, r1, #0
add r5, r0, #0
add r0, r4, #0
mov r1, #0
add r7, r2, #0
str r3, [sp, #0x18]
ldr r6, [sp, #0x7c]
bl FillWindowPixelBufferText_AssumeTileSize32
mov r1, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021F91C8 ; =0x00010200
ldr r3, [sp, #0x18]
str r0, [sp, #8]
str r1, [sp, #0xc]
str r1, [sp, #0x10]
str r1, [sp, #0x14]
add r0, r4, #0
add r2, r7, #0
bl AddTextPrinterParameterizedWithColorAndSpacing
ldr r0, [r4, #0x14]
mov r1, #1
mov r2, #2
add r3, sp, #0x1c
bl sub_02021AC8
ldr r0, [r5, #8]
str r4, [sp, #0x2c]
str r0, [sp, #0x28]
ldr r0, [r5, #4]
bl ov96_021EB5E8
str r0, [sp, #0x30]
mov r0, #0x68
bl sub_020227AC
str r0, [sp, #0x34]
ldr r0, [sp, #0x78]
str r0, [sp, #0x38]
ldr r0, [sp, #0x20]
str r0, [sp, #0x3c]
ldr r0, [sp, #0x70]
str r0, [sp, #0x40]
ldr r0, [sp, #0x74]
str r0, [sp, #0x44]
mov r0, #0
str r0, [sp, #0x48]
str r0, [sp, #0x4c]
mov r0, #2
str r0, [sp, #0x50]
ldr r0, [r5]
str r0, [sp, #0x54]
add r0, sp, #0x28
bl sub_020135D8
add r4, r0, #0
mov r1, #4
bl sub_02013880
str r4, [r6]
add r3, sp, #0x1c
ldmia r3!, {r0, r1}
add r2, r6, #4
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
add sp, #0x58
pop {r3, r4, r5, r6, r7, pc}
nop
_021F91C8: .word 0x00010200
thumb_func_end ov96_021F9134
thumb_func_start ov96_021F91CC
ov96_021F91CC: ; 0x021F91CC
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
cmp r0, #0
beq _021F91E4
bl sub_020139C8
add r0, r4, #4
bl sub_02021B5C
mov r0, #0
str r0, [r4]
_021F91E4:
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021F91CC
thumb_func_start ov96_021F91E8
ov96_021F91E8: ; 0x021F91E8
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r5, r0, #0
add r0, r4, #0
mov r1, #0x64
bl _s32_div_f
add r7, r0, #0
mov r0, #0x64
mul r0, r7
sub r6, r4, r0
add r0, r6, #0
mov r1, #0xa
bl _s32_div_f
add r4, r0, #0
ldr r0, [r5, #4]
bl ov96_021EB5B8
add r1, r7, #1
bl Set2dSpriteAnimSeqNo
ldr r0, [r5, #8]
bl ov96_021EB5B8
add r1, r4, #1
bl Set2dSpriteAnimSeqNo
ldr r0, [r5, #0xc]
bl ov96_021EB5B8
mov r1, #0xa
mul r1, r4
sub r1, r6, r1
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021F91E8
thumb_func_start ov96_021F9234
ov96_021F9234: ; 0x021F9234
push {r3, lr}
mov r1, #1
bl ov96_021E5FC8
mov r0, #0
pop {r3, pc}
thumb_func_end ov96_021F9234
thumb_func_start ov96_021F9240
ov96_021F9240: ; 0x021F9240
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r6, r1, #0
add r7, r0, #0
bl ov96_021E5DC4
ldrb r1, [r6]
add r4, r0, #0
cmp r1, #4
bls _021F9256
b _021F9370
_021F9256:
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021F9262: ; jump table
.short _021F926C - _021F9262 - 2 ; case 0
.short _021F9284 - _021F9262 - 2 ; case 1
.short _021F92D2 - _021F9262 - 2 ; case 2
.short _021F9306 - _021F9262 - 2 ; case 3
.short _021F9340 - _021F9262 - 2 ; case 4
_021F926C:
add r0, r7, #0
bl ov96_021E637C
cmp r0, #0
beq _021F9370
ldr r0, _021F937C ; =0x000003C7
mov r1, #1
strb r1, [r4, r0]
ldrb r0, [r6]
add r0, r0, #1
strb r0, [r6]
b _021F9370
_021F9284:
bl ov96_021FBDBC
add r0, r7, #0
add r1, r4, #0
bl ov96_021FA6D0
add r5, r0, #0
add r0, r7, #0
bl ov96_021FB630
cmp r5, #0
beq _021F9370
mov r5, #0
add r0, r5, #0
mov r1, #0x6c
_021F92A2:
add r2, r0, #0
mul r2, r1
add r2, r4, r2
add r2, #0xe2
ldrh r2, [r2]
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r5, r5, r2
cmp r0, #3
blo _021F92A2
lsl r1, r5, #0x10
add r0, r7, #0
lsr r1, r1, #0x10
bl ov96_021E8318
add r0, r4, #0
add r1, r5, #0
bl ov96_021FB808
ldrb r0, [r6]
add r0, r0, #1
strb r0, [r6]
b _021F9370
_021F92D2:
add r0, r7, #0
bl ov96_021E667C
lsl r0, r0, #0x18
lsr r5, r0, #0x18
add r0, r4, #0
bl ov96_021FB60C
cmp r0, #0
beq _021F92F0
cmp r5, #0
beq _021F92F0
ldrb r0, [r6]
add r0, r0, #1
strb r0, [r6]
_021F92F0:
add r0, r4, #0
bl ov96_021FBDBC
add r0, r7, #0
add r1, r4, #0
bl ov96_021FA6D0
add r0, r7, #0
bl ov96_021FB630
b _021F9370
_021F9306:
bl ov96_021FBDBC
add r0, r7, #0
bl ov96_021FB630
add r0, r7, #0
bl ov96_021E5F54
bl ov96_021E8A20
mov r1, #1
strb r1, [r0, #9]
add r0, r7, #0
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
ldr r0, [r0]
cmp r0, #0
beq _021F9370
ldrb r0, [r6]
mov r1, #0
add r0, r0, #1
strb r0, [r6]
mov r0, #0x8d
lsl r0, r0, #2
str r1, [r4, r0]
b _021F9370
_021F9340:
mov r0, #0x8d
lsl r0, r0, #2
ldr r1, [r4, r0]
add r1, r1, #1
str r1, [r4, r0]
ldr r0, [r4, r0]
cmp r0, #0x5a
bls _021F9370
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4]
str r0, [sp, #8]
mov r0, #0
add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
bl BeginNormalPaletteFade
add r0, r7, #0
mov r1, #2
bl ov96_021E5FC8
_021F9370:
add r0, r7, #0
bl ov96_021FAF1C
mov r0, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021F937C: .word 0x000003C7
thumb_func_end ov96_021F9240
thumb_func_start ov96_021F9380
ov96_021F9380: ; 0x021F9380
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r4, r1, #0
str r0, [sp]
bl ov96_021E5DC4
add r7, r0, #0
ldrb r0, [r4]
cmp r0, #0
bne _021F93A6
bl IsPaletteFadeFinished
cmp r0, #0
beq _021F93A0
mov r0, #1
strb r0, [r4]
_021F93A0:
add sp, #0x18
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021F93A6:
ldr r0, [sp]
bl ov96_021E5F24
add r4, r0, #0
mov r0, #0
add r2, r0, #0
add r3, r7, #0
_021F93B4:
add r1, r3, #0
add r1, #0xe2
ldrh r1, [r1]
add r2, r2, #1
add r3, #0x6c
add r0, r0, r1
cmp r2, #3
blt _021F93B4
bl ov96_021FBDEC
add r2, r0, #0
lsl r1, r4, #0x18
lsl r2, r2, #0x10
ldr r0, [sp]
lsr r1, r1, #0x18
lsr r2, r2, #0x10
bl ov96_021E5FB0
cmp r4, #0
bne _021F94A0
ldr r0, [sp]
bl ov96_021E5D34
str r0, [sp, #8]
str r0, [sp, #0x10]
cmp r0, #4
bge _021F94A0
_021F93EA:
mov r0, #0
str r0, [sp, #4]
str r0, [sp, #0xc]
ldr r1, [sp, #0x10]
ldr r0, [sp, #8]
sub r1, r1, r0
lsl r0, r1, #1
add r6, r1, r0
_021F93FA:
mov r0, #0x28
mul r0, r6
add r5, r7, r0
mov r0, #0x25
lsl r0, r0, #4
ldr r0, [r5, r0]
cmp r0, #0
bne _021F9466
mov r0, #9
lsl r0, r0, #6
mov r1, #0x92
ldr r4, [r5, r0]
lsl r1, r1, #2
ldr r1, [r5, r1]
add r0, r4, #0
bl _fls
bhs _021F9424
mov r0, #0x92
lsl r0, r0, #2
ldr r4, [r5, r0]
_021F9424:
mov r0, #0x96
lsl r0, r0, #2
ldr r1, [r5, r0]
mov r0, #1
lsl r0, r0, #0xc
sub r0, r0, r1
bl _fflt
add r1, r4, #0
bl _fdiv
str r0, [sp, #0x14]
bl _ffix
add r4, r0, #0
bl _fflt
add r1, r0, #0
ldr r0, [sp, #0x14]
bl _fsub
mov r1, #0
bl _fgr
bls _021F9458
add r4, r4, #1
_021F9458:
mov r0, #0x23
lsl r0, r0, #4
ldr r0, [r7, r0]
add r1, r0, r4
mov r0, #0x95
lsl r0, r0, #2
str r1, [r5, r0]
_021F9466:
mov r0, #0x95
lsl r0, r0, #2
ldr r1, [r5, r0]
ldr r0, [sp, #4]
add r6, r6, #1
add r0, r0, r1
str r0, [sp, #4]
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, #3
blt _021F93FA
ldr r0, [sp, #4]
bl ov96_021FBDEC
add r2, r0, #0
ldr r1, [sp, #0x10]
lsl r2, r2, #0x10
lsl r1, r1, #0x18
ldr r0, [sp]
lsr r1, r1, #0x18
lsr r2, r2, #0x10
bl ov96_021E5FB0
ldr r0, [sp, #0x10]
add r0, r0, #1
str r0, [sp, #0x10]
cmp r0, #4
blt _021F93EA
_021F94A0:
mov r0, #1
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021F9380
thumb_func_start ov96_021F94A8
ov96_021F94A8: ; 0x021F94A8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x180
add r6, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
add r0, r6, #0
bl ov96_021E5DD4
cmp r0, #8
bls _021F94C0
b _021F9C8A
_021F94C0:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021F94CC: ; jump table
.short _021F94DE - _021F94CC - 2 ; case 0
.short _021F95E8 - _021F94CC - 2 ; case 1
.short _021F9884 - _021F94CC - 2 ; case 2
.short _021F9A94 - _021F94CC - 2 ; case 3
.short _021F9ABA - _021F94CC - 2 ; case 4
.short _021F9AE2 - _021F94CC - 2 ; case 5
.short _021F9B1E - _021F94CC - 2 ; case 6
.short _021F9B38 - _021F94CC - 2 ; case 7
.short _021F9C7C - _021F94CC - 2 ; case 8
_021F94DE:
mov r2, #0x12
mov r0, #0x5c
mov r1, #0x8a
lsl r2, r2, #0xe
bl CreateHeap
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
bl GfGfx_DisableEngineAPlanes
bl GfGfx_DisableEngineBPlanes
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _021F986C ; =0xFFFFE0FF
and r1, r0
str r1, [r2]
ldr r2, _021F9870 ; =0x04001000
ldr r1, [r2]
and r0, r1
str r0, [r2]
bl ov96_021F9E3C
mov r1, #0xf2
add r0, r6, #0
lsl r1, r1, #2
bl ov96_021E5D94
mov r2, #0xf2
mov r1, #0
lsl r2, r2, #2
add r4, r0, #0
bl MI_CpuFill8
mov r0, #0x8a
bl BgConfig_Alloc
str r0, [r4, #4]
ldr r0, [r4]
bl ov96_021FC028
add r1, r4, #0
add r1, #0xd8
str r0, [r1]
ldr r0, [r4]
bl ov96_021FC618
add r1, r4, #0
add r1, #0xdc
str r0, [r1]
add r0, r4, #0
add r0, #0xd8
ldr r0, [r0]
bl ov96_021FC0E4
add r5, r0, #0
add r0, r4, #0
add r0, #0xd8
ldr r0, [r0]
bl ov96_021FC0E8
add r7, r0, #0
add r0, r4, #0
add r0, #0xd8
ldr r0, [r0]
bl ov96_021FC0F4
add r3, r0, #0
add r0, r6, #0
add r1, r5, #0
add r2, r7, #0
bl ov96_021E5F70
add r0, r6, #0
mov r1, #8
bl ov96_021E6670
mov r0, #0x6b
str r0, [sp, #0xdc]
mov r0, #1
lsl r0, r0, #0x12
str r0, [sp, #0xe0]
lsr r0, r0, #4
mov r2, #0x8a
str r0, [sp, #0xe4]
ldr r3, _021F9874 ; =0x00300010
str r2, [sp, #0xe8]
add r0, sp, #0xdc
mov r1, #0x12
str r3, [sp]
bl ov96_021E92B0
bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7e
str r1, [sp, #4]
str r0, [sp, #8]
mov r3, #0x20
str r3, [sp, #0xc]
mov r2, #0x8a
str r2, [sp, #0x10]
add r2, r0, #0
bl OamManager_Create
mov r1, #0x8a
str r1, [r4]
mov r0, #4
bl FontID_Alloc
ldr r0, [r4, #4]
bl ov96_021F9E5C
add r0, r4, #0
bl ov96_021FB7C8
ldr r0, _021F9878 ; =gSystem + 0x60
mov r1, #1
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
add r0, r6, #0
bl ov96_021E5DEC
b _021F9C8A
_021F95E8:
ldr r5, _021F987C ; =ov96_0221C404
add r3, sp, #0xd0
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r5]
add r1, r2, #0
str r0, [r3]
ldr r0, [r4]
bl ov96_021EB180
mov r2, #0x89
lsl r2, r2, #2
mov r1, #0
str r0, [r4, r2]
str r1, [sp]
ldr r0, [r4, r2]
mov r2, #0x11
lsl r2, r2, #0x10
add r3, r1, #0
bl ov96_021EB5C8
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0
mov r2, #0x65
bl ov96_021EB29C
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #1
mov r2, #0x66
bl ov96_021EB29C
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #2
mov r2, #0x67
bl ov96_021EB29C
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #3
mov r2, #0x68
bl ov96_021EB29C
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #4
mov r2, #0x69
bl ov96_021EB29C
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #5
mov r2, #0x6a
bl ov96_021EB29C
mov r0, #3
str r0, [sp]
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #9
mov r3, #0x65
bl ov96_021EB2BC
mov r0, #3
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #6
mov r3, #0x65
bl ov96_021EB2F4
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #8
mov r3, #0x65
bl ov96_021EB334
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #7
mov r3, #0x65
bl ov96_021EB36C
mov r0, #1
str r0, [sp]
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0x10
mov r3, #0x66
bl ov96_021EB2BC
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0xd
mov r3, #0x66
bl ov96_021EB2F4
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0xf
mov r3, #0x66
bl ov96_021EB334
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0xe
mov r3, #0x66
bl ov96_021EB36C
mov r0, #1
str r0, [sp]
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0xc
mov r3, #0x67
bl ov96_021EB2BC
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #6
mov r3, #0x67
bl ov96_021EB2F4
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0xb
mov r3, #0x67
bl ov96_021EB334
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0xa
mov r3, #0x67
bl ov96_021EB36C
mov r0, #1
str r0, [sp]
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0x14
mov r3, #0x69
bl ov96_021EB2BC
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0x11
mov r3, #0x69
bl ov96_021EB2F4
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0x13
mov r3, #0x69
bl ov96_021EB334
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0x12
mov r3, #0x69
bl ov96_021EB36C
mov r0, #1
str r0, [sp]
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0x1c
mov r3, #0x68
bl ov96_021EB2BC
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0x19
mov r3, #0x68
bl ov96_021EB2F4
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0x1b
mov r3, #0x68
bl ov96_021EB334
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0x1a
mov r3, #0x68
bl ov96_021EB36C
mov r0, #1
str r0, [sp]
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0x20
mov r3, #0x6a
bl ov96_021EB2BC
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0x1d
mov r3, #0x6a
bl ov96_021EB2F4
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0x1f
mov r3, #0x6a
bl ov96_021EB334
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x9c
mov r2, #0x1e
mov r3, #0x6a
bl ov96_021EB36C
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021EB3A4
ldr r0, [r4]
ldr r1, _021F9880 ; =0x000002E7
mov r2, #1
bl ov96_021E9A78
mov r1, #0x3a
lsl r1, r1, #4
str r0, [r4, r1]
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021EB5E8
mov r3, #0x3a
str r0, [sp]
lsl r3, r3, #4
ldr r0, [r4]
ldr r3, [r4, r3]
mov r1, #3
mov r2, #4
bl ov96_021EA854
mov r1, #0xe9
lsl r1, r1, #2
str r0, [r4, r1]
add r0, r6, #0
bl ov96_021E5DEC
b _021F9C8A
nop
_021F986C: .word 0xFFFFE0FF
_021F9870: .word 0x04001000
_021F9874: .word 0x00300010
_021F9878: .word gSystem + 0x60
_021F987C: .word ov96_0221C404
_021F9880: .word 0x000002E7
_021F9884:
mov r5, #0
mov r7, #2
_021F9888:
mov r0, #0x89
str r7, [sp]
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #1
mov r2, #3
mov r3, #0x65
bl ov96_021EB408
mov r1, #0x1b
bl Sprite_SetDrawPriority
mov r0, #6
str r0, [sp]
mov r0, #0x89
lsl r0, r0, #2
mov r1, #1
ldr r0, [r4, r0]
add r2, r1, #0
mov r3, #0x67
bl ov96_021EB408
mov r1, #0x1b
bl Sprite_SetDrawPriority
add r5, r5, #1
cmp r5, #0xc
blt _021F9888
mov r5, #0
mov r7, #5
_021F98C4:
mov r0, #0x89
str r7, [sp]
lsl r0, r0, #2
mov r1, #1
ldr r0, [r4, r0]
add r2, r1, #0
mov r3, #0x66
bl ov96_021EB408
mov r0, #7
str r0, [sp]
mov r0, #0x89
lsl r0, r0, #2
mov r1, #1
ldr r0, [r4, r0]
add r2, r1, #0
mov r3, #0x68
bl ov96_021EB408
mov r0, #8
str r0, [sp]
mov r0, #0x89
lsl r0, r0, #2
mov r1, #1
ldr r0, [r4, r0]
add r2, r1, #0
mov r3, #0x69
bl ov96_021EB408
add r5, r5, #1
cmp r5, #3
blt _021F98C4
mov r0, #9
str r0, [sp]
mov r0, #0x89
lsl r0, r0, #2
mov r1, #1
ldr r0, [r4, r0]
add r2, r1, #0
mov r3, #0x6a
bl ov96_021EB3E4
mov r1, #0xea
lsl r1, r1, #2
str r0, [r4, r1]
ldr r0, [r4, r1]
mov r1, #0
bl ov96_021EB564
mov r0, #0
str r0, [sp, #0xcc]
mov r0, #0xa
lsl r0, r0, #0x10
str r0, [sp, #0xc4]
mov r0, #0x72
lsl r0, r0, #0xe
str r0, [sp, #0xc8]
mov r0, #0xea
lsl r0, r0, #2
ldr r0, [r4, r0]
add r1, sp, #0xc4
bl ov96_021EB588
mov r0, #0xea
lsl r0, r0, #2
mov r1, #1
ldr r0, [r4, r0]
add r2, r1, #0
bl ov96_021EB52C
mov r0, #0xea
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #1
bl ov96_021EB630
mov r0, #0
str r0, [sp, #0x14]
ldr r0, _021F9C90 ; =ov96_0221C3F4
ldr r7, _021F9C94 ; =ov96_0221C3EC
add r5, r4, #0
str r0, [sp, #0x18]
_021F9968:
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021EB5E8
add r1, r0, #0
mov r0, #0x3a
lsl r0, r0, #4
ldr r0, [r4, r0]
ldr r3, [r4]
mov r2, #0
bl ov96_021EA374
mov r1, #0xeb
lsl r1, r1, #2
str r0, [r5, r1]
add r0, r1, #0
ldr r0, [r5, r0]
mov r1, #1
bl Set2dSpriteVisibleFlag
ldr r0, [sp, #0x18]
add r1, sp, #0xb8
ldrb r0, [r0]
lsl r0, r0, #0xc
str r0, [sp, #0xb8]
mov r0, #0x72
lsl r0, r0, #0xe
str r0, [sp, #0xbc]
mov r0, #0
str r0, [sp, #0xc0]
mov r0, #0xeb
lsl r0, r0, #2
ldr r0, [r5, r0]
bl Sprite_SetMatrix
mov r0, #0xeb
lsl r0, r0, #2
ldrb r1, [r7]
ldr r0, [r5, r0]
bl Set2dSpriteAnimSeqNo
ldr r0, [sp, #0x18]
add r5, r5, #4
add r0, r0, #1
str r0, [sp, #0x18]
ldr r0, [sp, #0x14]
add r7, r7, #1
add r0, r0, #1
str r0, [sp, #0x14]
cmp r0, #6
blt _021F9968
add r0, r4, #0
mov r1, #0x89
add r0, #0xdc
lsl r1, r1, #2
ldr r0, [r0]
ldr r1, [r4, r1]
mov r2, #1
bl ov96_021FC630
ldr r0, [r4]
bl ov96_021FC188
mov r1, #0x8a
lsl r1, r1, #2
str r0, [r4, r1]
mov r7, #0
add r5, sp, #0x88
_021F99F2:
add r0, r6, #0
add r1, r7, #0
bl ov96_021E5D50
mov r1, #0
_021F99FC:
ldrh r2, [r0]
add r1, r1, #1
strh r2, [r5]
ldrh r2, [r0, #2]
add r0, #0x28
strh r2, [r5, #2]
add r5, r5, #4
cmp r1, #3
blt _021F99FC
add r7, r7, #1
cmp r7, #4
blt _021F99F2
mov r0, #0x8a
lsl r0, r0, #2
ldr r0, [r4, r0]
add r1, sp, #0x88
bl ov96_021FC214
mov r0, #0x8a
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0
bl ov96_021FC2B4
add r0, sp, #0x58
mov r5, #0
str r0, [sp, #0x1c]
add r7, sp, #0x13c
_021F9A34:
add r0, r6, #0
bl ov96_021E5F24
add r1, r0, #0
ldr r3, [sp, #0x1c]
add r0, r6, #0
add r2, r5, #0
bl ov96_021E6168
add r0, r6, #0
bl ov96_021E5F24
add r1, r0, #0
add r0, r6, #0
add r2, r5, #0
bl ov96_021E60C0
bl ov96_021E6108
str r0, [r7, #0x14]
ldr r0, [sp, #0x1c]
add r5, r5, #1
add r0, #0x10
add r7, r7, #4
str r0, [sp, #0x1c]
cmp r5, #3
blt _021F9A34
mov r0, #1
mov r1, #0
str r1, [sp, #0x13c]
str r0, [sp, #0x140]
str r1, [sp, #0x144]
str r0, [sp, #0x148]
str r0, [sp, #0x14c]
str r1, [sp]
mov r0, #0xe9
str r1, [sp, #4]
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #3
add r2, sp, #0x58
add r3, sp, #0x13c
bl ov96_021EA8A8
add r0, r6, #0
bl ov96_021E5DEC
b _021F9C8A
_021F9A94:
mov r0, #0xe9
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021EAA00
cmp r0, #0
bne _021F9AA4
b _021F9C8A
_021F9AA4:
ldr r0, [r4, #4]
bl ov96_021E6030
ldr r0, [r4, #4]
ldr r1, [r4]
bl ov96_021F9FE8
add r0, r6, #0
bl ov96_021E5DEC
b _021F9C8A
_021F9ABA:
ldr r0, [r4, #4]
ldr r1, [r4]
bl ov96_021FA020
mov r1, #5
ldr r0, _021F9C98 ; =0x04000010
lsl r1, r1, #0x16
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
mov r1, #3
ldr r0, _021F9C9C ; =0x04001010
lsl r1, r1, #0x14
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
add r0, r6, #0
bl ov96_021E5DEC
b _021F9C8A
_021F9AE2:
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineATogglePlanes
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineBTogglePlanes
add r0, r6, #0
mov r1, #1
bl ov96_021E5DFC
mov r7, #0xe9
mov r5, #0
lsl r7, r7, #2
_021F9B00:
lsl r1, r5, #0x18
ldr r0, [r4, r7]
lsr r1, r1, #0x18
bl ov96_021EAA04
mov r1, #1
bl ov96_021EAB38
add r5, r5, #1
cmp r5, #3
blt _021F9B00
add r0, r6, #0
bl ov96_021E5DEC
b _021F9C8A
_021F9B1E:
add r0, r6, #0
bl ov96_021E5F24
cmp r0, #0
bne _021F9B30
add r4, #0xd8
ldr r0, [r4]
bl ov96_021FC144
_021F9B30:
add r0, r6, #0
bl ov96_021E5DEC
b _021F9C8A
_021F9B38:
add r0, r4, #0
mov r1, #0x89
add r0, #0xd8
lsl r1, r1, #2
ldr r0, [r0]
ldr r1, [r4, r1]
bl ov96_021FC07C
mov r2, #0x3a
mov r3, #0x89
lsl r2, r2, #4
lsl r3, r3, #2
mov r1, #0x11
ldr r2, [r4, r2]
ldr r3, [r4, r3]
add r0, r6, #0
lsl r1, r1, #4
bl ov96_021E6290
ldr r0, [r0]
mov r1, #1
bl Sprite_SetDrawPriority
ldr r3, _021F9CA0 ; =ov96_0221C410
add r2, sp, #0x4c
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
mov r1, #0xaa
str r0, [r2]
add r0, sp, #0x28
mov r2, #0xa
bl ReadWholeNarcMemberByIdPair
add r0, sp, #0xec
mov r1, #0xaa
mov r2, #0
bl ReadWholeNarcMemberByIdPair
mov r0, #0
str r0, [sp, #0x24]
add r0, r4, #0
str r0, [sp, #0x20]
add r0, #0xe0
str r0, [sp, #0x20]
add r7, sp, #0x4c
add r5, sp, #0x40
_021F9B96:
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
add r3, r4, #0
str r0, [sp]
mov r0, #0xe9
lsl r0, r0, #2
ldr r0, [r4, r0]
add r3, #0xd8
str r0, [sp, #4]
ldr r0, [sp, #0x24]
add r1, sp, #0xec
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #8]
ldr r0, [sp, #0x20]
add r2, sp, #0x28
str r0, [sp, #0xc]
ldr r3, [r3]
add r0, r6, #0
bl ov96_021FA0E8
ldr r0, [r7]
add r7, r7, #4
strh r0, [r5]
mov r0, #0x62
lsl r0, r0, #2
strh r0, [r5, #2]
ldr r0, [sp, #0x20]
add r5, r5, #4
add r0, #0x6c
str r0, [sp, #0x20]
ldr r0, [sp, #0x24]
add r0, r0, #1
str r0, [sp, #0x24]
cmp r0, #3
blt _021F9B96
mov r0, #1
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
add r0, sp, #0x40
mov r2, #0x3a
mov r3, #0x89
str r0, [sp, #8]
lsl r2, r2, #4
lsl r3, r3, #2
ldr r2, [r4, r2]
ldr r3, [r4, r3]
add r0, r6, #0
mov r1, #0
bl ov96_021E634C
add r0, r6, #0
bl ov96_021E5F24
cmp r0, #0
bne _021F9C12
add r0, r6, #0
add r1, sp, #0xec
bl ov96_021FBBB4
_021F9C12:
add r0, r6, #0
bl ov96_021E5F54
add r5, r0, #0
add r0, #0xf0
bl ov96_021E8A20
mov r3, #0
mov r1, #0x11
_021F9C24:
add r2, r0, r3
strb r1, [r2, #0x1c]
add r2, r3, #1
lsl r2, r2, #0x18
lsr r3, r2, #0x18
cmp r3, #6
blo _021F9C24
add r0, r6, #0
bl ov96_021E5F24
cmp r0, #0
bne _021F9C56
add r5, #0x28
add r0, r5, #0
bl ov96_021E8A20
mov r3, #0
mov r2, #0x11
_021F9C48:
add r1, r0, r3
strb r2, [r1, #0x1c]
add r1, r3, #1
lsl r1, r1, #0x18
lsr r3, r1, #0x18
cmp r3, #6
blo _021F9C48
_021F9C56:
mov r0, #1
bl sub_0203A994
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #3
str r0, [sp, #8]
mov r0, #2
add r2, r1, #0
mov r3, #0
bl BeginNormalPaletteFade
add r0, r6, #0
bl ov96_021E5DEC
b _021F9C8A
_021F9C7C:
bl IsPaletteFadeFinished
cmp r0, #0
beq _021F9C8A
add sp, #0x180
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021F9C8A:
mov r0, #0
add sp, #0x180
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021F9C90: .word ov96_0221C3F4
_021F9C94: .word ov96_0221C3EC
_021F9C98: .word 0x04000010
_021F9C9C: .word 0x04001010
_021F9CA0: .word ov96_0221C410
thumb_func_end ov96_021F94A8
thumb_func_start ov96_021F9CA4
ov96_021F9CA4: ; 0x021F9CA4
push {r4, lr}
bl ov96_021E5DC4
add r4, r0, #0
mov r0, #0x8a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021FC314
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021EB5BC
mov r0, #1
pop {r4, pc}
thumb_func_end ov96_021F9CA4
thumb_func_start ov96_021F9CC4
ov96_021F9CC4: ; 0x021F9CC4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
add r6, r0, #0
bl ov96_021E5DC4
add r0, r6, #0
bl ov96_021E6040
str r0, [sp, #0x1c]
bl ov96_021E9510
mov r5, #0
_021F9CDC:
lsl r1, r5, #0x18
add r0, r6, #0
lsr r1, r1, #0x18
bl ov96_021E5FBC
add r4, r0, #0
mov r1, #0x1e
bl _s32_div_f
add r7, r0, #0
add r0, r4, #0
mov r1, #0x1e
bl _s32_div_f
mov r0, #0xa
mul r0, r1
mov r1, #0x1e
bl _s32_div_f
str r7, [sp]
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
mov r0, #1
str r0, [sp, #0xc]
mov r0, #3
str r0, [sp, #0x10]
mov r0, #1
str r0, [sp, #0x14]
ldr r0, _021F9D54 ; =0x00000123
lsl r3, r4, #0x10
str r0, [sp, #0x18]
ldr r1, [sp, #0x1c]
add r0, r6, #0
add r2, r5, #0
lsr r3, r3, #0x10
bl ov96_021E966C
add r5, r5, #1
cmp r5, #4
blt _021F9CDC
ldr r0, [sp, #0x1c]
mov r1, #2
bl ov96_021E93B4
ldr r0, [sp, #0x1c]
mov r1, #0
bl ov96_0221A56C
ldr r0, [sp, #0x1c]
bl ov96_021E952C
ldr r0, [sp, #0x1c]
mov r1, #0
bl ov96_021E9570
mov r0, #1
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
nop
_021F9D54: .word 0x00000123
thumb_func_end ov96_021F9CC4
thumb_func_start ov96_021F9D58
ov96_021F9D58: ; 0x021F9D58
push {r3, r4, r5, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
bl sub_0203A914
add r0, r5, #0
bl ov96_021E5F1C
mov r1, #0
bl ov96_021E87B0
mov r0, #0x8a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021FC1A8
add r0, r5, #0
bl ov96_021E5F8C
add r0, r4, #0
add r0, #0xdc
ldr r0, [r0]
bl ov96_021FC690
add r0, r4, #0
add r0, #0xd8
ldr r0, [r0]
bl ov96_021FC05C
ldr r0, [r4, #4]
mov r1, #0
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #1
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #2
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #3
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #4
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #5
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #6
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #7
bl FreeBgTilemapBuffer
add r0, r4, #0
add r0, #8
bl RemoveWindow
ldr r0, [r4, #4]
bl FreeToHeap
mov r0, #0xe9
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021EA894
mov r0, #0x3a
lsl r0, r0, #4
ldr r0, [r4, r0]
bl ov96_021E9C0C
mov r0, #0x89
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021EB21C
bl ov96_021E92D0
mov r0, #4
bl FontID_Release
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
add r0, r5, #0
bl ov96_021E5DAC
ldr r0, _021F9E38 ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
mov r0, #0x8a
bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
nop
_021F9E38: .word gSystem + 0x60
thumb_func_end ov96_021F9D58
thumb_func_start ov96_021F9E3C
ov96_021F9E3C: ; 0x021F9E3C
push {r4, lr}
sub sp, #0x28
ldr r4, _021F9E58 ; =ov96_0221C534
add r3, sp, #0
mov r2, #5
_021F9E46:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _021F9E46
add r0, sp, #0
bl GfGfx_SetBanks
add sp, #0x28
pop {r4, pc}
.balign 4, 0
_021F9E58: .word ov96_0221C534
thumb_func_end ov96_021F9E3C
thumb_func_start ov96_021F9E5C
ov96_021F9E5C: ; 0x021F9E5C
push {r3, r4, r5, lr}
sub sp, #0xf0
ldr r5, _021F9FC4 ; =ov96_0221C434
add r3, sp, #0xe0
add r4, r0, #0
add r2, r3, #0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl SetBothScreensModesAndDisable
ldr r5, _021F9FC8 ; =ov96_0221C48C
add r3, sp, #0xc4
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #0
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
bl BgClearTilemapBufferAndCommit
ldr r5, _021F9FCC ; =ov96_0221C4A8
add r3, sp, #0xa8
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #1
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
bl BgClearTilemapBufferAndCommit
ldr r5, _021F9FD0 ; =ov96_0221C4C4
add r3, sp, #0x8c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #2
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
bl BgClearTilemapBufferAndCommit
ldr r5, _021F9FD4 ; =ov96_0221C4E0
add r3, sp, #0x70
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #3
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #3
bl BgClearTilemapBufferAndCommit
ldr r5, _021F9FD8 ; =ov96_0221C454
add r3, sp, #0x54
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #4
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
bl BgClearTilemapBufferAndCommit
ldr r5, _021F9FDC ; =ov96_0221C470
add r3, sp, #0x38
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #5
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #5
bl BgClearTilemapBufferAndCommit
ldr r5, _021F9FE0 ; =ov96_0221C518
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #6
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #6
bl BgClearTilemapBufferAndCommit
ldr r5, _021F9FE4 ; =ov96_0221C4FC
add r3, sp, #0
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #7
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #7
bl BgClearTilemapBufferAndCommit
mov r0, #8
mov r1, #0
bl GfGfx_EngineATogglePlanes
add sp, #0xf0
pop {r3, r4, r5, pc}
nop
_021F9FC4: .word ov96_0221C434
_021F9FC8: .word ov96_0221C48C
_021F9FCC: .word ov96_0221C4A8
_021F9FD0: .word ov96_0221C4C4
_021F9FD4: .word ov96_0221C4E0
_021F9FD8: .word ov96_0221C454
_021F9FDC: .word ov96_0221C470
_021F9FE0: .word ov96_0221C518
_021F9FE4: .word ov96_0221C4FC
thumb_func_end ov96_021F9E5C
thumb_func_start ov96_021F9FE8
ov96_021F9FE8: ; 0x021F9FE8
push {r3, r4, r5, lr}
sub sp, #0x10
mov r3, #0
str r3, [sp]
add r5, r0, #0
str r3, [sp, #4]
add r4, r1, #0
str r3, [sp, #8]
mov r0, #0x9c
mov r1, #1
add r2, r5, #0
str r4, [sp, #0xc]
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x9c
mov r1, #1
add r2, r5, #0
mov r3, #4
str r4, [sp, #0xc]
bl GfGfxLoader_LoadCharData
add sp, #0x10
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021F9FE8
thumb_func_start ov96_021FA020
ov96_021FA020: ; 0x021FA020
push {r3, r4, r5, lr}
sub sp, #0x10
mov r3, #0
str r3, [sp]
add r5, r0, #0
str r3, [sp, #4]
add r4, r1, #0
str r3, [sp, #8]
mov r0, #0x9c
mov r1, #2
add r2, r5, #0
str r4, [sp, #0xc]
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x9c
mov r1, #3
add r2, r5, #0
mov r3, #1
str r4, [sp, #0xc]
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x9c
mov r1, #4
add r2, r5, #0
mov r3, #2
str r4, [sp, #0xc]
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x9c
mov r1, #2
add r2, r5, #0
mov r3, #4
str r4, [sp, #0xc]
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x9c
mov r1, #3
add r2, r5, #0
mov r3, #5
str r4, [sp, #0xc]
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x9c
mov r1, #4
add r2, r5, #0
mov r3, #6
str r4, [sp, #0xc]
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x9c
mov r1, #5
add r2, r5, #0
mov r3, #7
str r4, [sp, #0xc]
bl GfGfxLoader_LoadScrnData
mov r1, #0
mov r0, #0x20
str r0, [sp]
mov r0, #0x9c
add r2, r1, #0
add r3, r1, #0
str r4, [sp, #4]
bl GfGfxLoader_GXLoadPal
mov r0, #0x20
str r0, [sp]
mov r1, #0
mov r0, #0x9c
mov r2, #4
add r3, r1, #0
str r4, [sp, #4]
bl GfGfxLoader_GXLoadPal
add sp, #0x10
pop {r3, r4, r5, pc}
thumb_func_end ov96_021FA020
thumb_func_start ov96_021FA0E8
ov96_021FA0E8: ; 0x021FA0E8
push {r4, r5, r6, r7, lr}
sub sp, #0x44
ldr r5, [sp, #0x60]
str r0, [sp]
ldr r4, [sp, #0x64]
mov r0, #0
strh r0, [r4]
add r6, r1, #0
strh r0, [r4, #2]
mov r1, #0x30
strh r1, [r4, #4]
mov r1, #5
lsl r1, r1, #6
strh r1, [r4, #6]
add r1, r4, #0
str r2, [sp, #4]
strb r5, [r4, #0x18]
mov r2, #1
add r1, #0x68
strh r2, [r1]
mov r1, #0xfe
lsl r1, r1, #0x16
str r1, [r4, #0x64]
strb r0, [r4, #8]
add r0, r3, #0
add r1, r5, #0
bl ov96_021FC0D0
str r0, [r4, #0x20]
cmp r5, #0
beq _021FA130
cmp r5, #1
beq _021FA13A
cmp r5, #2
beq _021FA144
b _021FA14C
_021FA130:
mov r0, #0
strh r0, [r4, #0x14]
mov r0, #4
strh r0, [r4, #0x16]
b _021FA14C
_021FA13A:
mov r0, #1
strh r0, [r4, #0x14]
mov r0, #5
strh r0, [r4, #0x16]
b _021FA14C
_021FA144:
mov r0, #2
strh r0, [r4, #0x14]
mov r0, #6
strh r0, [r4, #0x16]
_021FA14C:
cmp r5, #0
beq _021FA15A
cmp r5, #1
beq _021FA162
cmp r5, #2
beq _021FA16A
b _021FA172
_021FA15A:
mov r0, #0x30
mov r1, #0
str r0, [sp, #8]
b _021FA17A
_021FA162:
mov r0, #0x80
mov r1, #1
str r0, [sp, #8]
b _021FA17A
_021FA16A:
mov r0, #0xd0
mov r1, #2
str r0, [sp, #8]
b _021FA17A
_021FA172:
bl GF_AssertFail
add sp, #0x44
pop {r4, r5, r6, r7, pc}
_021FA17A:
lsl r1, r1, #0x18
ldr r0, [sp, #0x5c]
lsr r1, r1, #0x18
bl ov96_021EAA04
str r0, [sp, #0xc]
bl ov96_021EAA20
ldr r1, [sp, #0xc]
str r1, [r4, #0x24]
bl ov96_021E8BB0
str r0, [sp, #0x10]
ldr r0, [sp]
bl ov96_021E5F24
add r1, r0, #0
ldr r0, [sp]
add r2, r5, #0
bl ov96_021E60D8
add r7, r0, #0
ldrb r0, [r7, #2]
lsl r0, r0, #2
ldr r1, [r6, r0]
add r0, r4, #0
add r0, #0x5c
strh r1, [r0]
ldrb r0, [r7, #2]
lsl r0, r0, #2
add r0, r6, r0
ldr r1, [r0, #0x14]
add r0, r4, #0
add r0, #0x5e
strh r1, [r0]
add r0, r4, #0
ldrb r1, [r7, #2]
add r0, #0x58
strb r1, [r0]
ldr r0, [sp]
bl ov96_021E5F24
add r1, r0, #0
ldr r0, [sp]
add r2, r5, #0
bl ov96_021E60C0
bl ov96_021E6138
sub r0, r0, #1
lsl r2, r0, #3
ldr r1, [sp, #4]
ldr r3, [sp, #4]
ldr r1, [r1, r2]
add r2, r3, r2
ldr r0, [sp, #0xc]
ldr r2, [r2, #4]
bl ov96_021EAF70
bl ov96_021E6104
add r1, r0, #0
ldr r0, [sp, #0xc]
bl ov96_021EAF6C
ldrb r0, [r7, #1]
lsl r0, r0, #2
add r0, r6, r0
ldr r0, [r0, #0x3c]
bl _fflt
ldr r1, _021FA338 ; =0x41200000
bl _fdiv
str r0, [r4, #0x50]
ldrb r0, [r7, #4]
lsl r0, r0, #2
add r0, r6, r0
ldr r0, [r0, #0x28]
bl _fflt
ldr r1, _021FA33C ; =0x42C80000
bl _fdiv
str r0, [r4, #0x54]
ldr r0, [sp, #0x10]
ldrh r0, [r0, #4]
cmp r0, #0
beq _021FA236
mov r0, #2
lsl r0, r0, #0x10
str r0, [sp, #0x38]
str r0, [sp, #0x3c]
b _021FA23E
_021FA236:
mov r0, #1
lsl r0, r0, #0x10
str r0, [sp, #0x38]
str r0, [sp, #0x3c]
_021FA23E:
mov r3, #0x78
str r3, [r4, #0x3c]
add r2, r3, #0
add r3, #0x98
ldr r0, [sp, #0xc]
ldr r1, [sp, #8]
add r2, r2, r3
bl ov96_021EAF94
ldr r0, [sp, #0xc]
mov r1, #1
bl ov96_021EAC0C
ldr r0, [sp, #0xc]
mov r1, #4
bl ov96_021EABA8
ldr r0, [sp, #0xc]
mov r1, #2
bl ov96_021EABE0
ldr r0, [sp, #0xc]
add r1, sp, #0x38
bl ov96_021EABF4
ldr r0, [sp, #0x58]
mov r1, #0x66
mov r2, #5
bl ov96_021EB4F4
str r0, [r4, #0x44]
bl ov96_021EB5B8
mov r1, #0x12
ldr r2, [r4, #0x3c]
lsl r1, r1, #4
add r1, r2, r1
str r1, [r4, #0x40]
mov r1, #0
str r1, [sp, #0x34]
ldr r1, [sp, #8]
add r6, r0, #0
lsl r5, r1, #0xc
str r5, [sp, #0x2c]
ldr r1, [r4, #0x40]
lsl r1, r1, #0xc
str r1, [sp, #0x30]
add r1, sp, #0x2c
bl Sprite_SetMatrix
ldr r0, [r4, #0x44]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
add r0, r6, #0
mov r1, #3
bl Sprite_SetDrawPriority
ldr r0, [sp, #0x58]
mov r1, #0x68
mov r2, #7
bl ov96_021EB4F4
str r0, [r4, #0x48]
bl ov96_021EB5B8
mov r1, #0
add r6, r0, #0
bl Set2dSpriteAnimSeqNo
mov r0, #0
str r0, [sp, #0x28]
mov r0, #0x6b
lsl r0, r0, #0xe
str r0, [sp, #0x24]
add r0, r6, #0
add r1, sp, #0x20
str r5, [sp, #0x20]
bl Sprite_SetMatrix
add r0, r6, #0
mov r1, #4
bl Sprite_SetDrawPriority
add r0, r6, #0
mov r1, #2
bl sub_0202487C
ldr r0, [sp, #0x58]
mov r1, #0x69
mov r2, #8
bl ov96_021EB4F4
str r0, [r4, #0x4c]
bl ov96_021EB5B8
mov r1, #0
add r6, r0, #0
bl Set2dSpriteAnimSeqNo
mov r0, #0
str r0, [sp, #0x1c]
mov r0, #0x62
lsl r0, r0, #0xe
str r0, [sp, #0x18]
str r5, [sp, #0x14]
add r0, r6, #0
add r1, sp, #0x14
bl Sprite_SetMatrix
mov r1, #1
ldr r0, [r4, #0x4c]
add r2, r1, #0
bl ov96_021EB52C
add r0, r6, #0
mov r1, #2
bl Sprite_SetDrawPriority
mov r0, #0xfe
lsl r0, r0, #0x16
str r0, [r4, #0xc]
add sp, #0x44
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021FA338: .word 0x41200000
_021FA33C: .word 0x42C80000
thumb_func_end ov96_021FA0E8
thumb_func_start ov96_021FA340
ov96_021FA340: ; 0x021FA340
ldr r3, _021FA348 ; =ov96_021FBE44
ldr r0, [r0, #0x20]
bx r3
nop
_021FA348: .word ov96_021FBE44
thumb_func_end ov96_021FA340
thumb_func_start ov96_021FA34C
ov96_021FA34C: ; 0x021FA34C
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r4, r2, #0
add r5, r0, #0
ldrb r0, [r4, #8]
add r6, r3, #0
str r1, [sp, #4]
cmp r0, #1
beq _021FA38A
ldr r0, [r4, #0x28]
cmp r0, #2
beq _021FA38A
ldrb r0, [r4, #9]
cmp r0, #0
bne _021FA38A
ldr r0, [r4, #0xc]
ldr r1, [r4, #0x50]
bl _fls
bhs _021FA38A
ldr r0, [r4, #0xc]
ldr r1, [r4, #0x54]
bl _fadd
str r0, [r4, #0xc]
ldr r1, [r4, #0x50]
bl _fgr
bls _021FA38A
ldr r0, [r4, #0x50]
str r0, [r4, #0xc]
_021FA38A:
cmp r6, #0
beq _021FA422
ldr r0, [r4, #0x28]
cmp r0, #0
bne _021FA422
ldrb r2, [r4, #0x18]
add r3, r4, #0
ldr r1, [r6, #4]
add r0, r5, #0
add r3, #0x24
bl ov96_021FA7BC
mov r0, #0
str r0, [sp, #8]
add r0, r4, #0
add r0, #0x58
ldrb r0, [r0]
cmp r0, #0
beq _021FA3FA
ldr r6, [sp, #8]
_021FA3B2:
add r0, r4, #0
add r1, r6, #0
bl ov96_021FA340
add r7, r0, #0
bl ov96_021FBEA0
cmp r0, #0
beq _021FA3F4
add r0, r7, #0
add r1, sp, #0x1c
bl ov96_021FBF5C
ldr r0, [r4, #0x24]
bl ov96_021EAF8C
mov r1, #0x11
ldr r2, [r4, #0x3c]
lsl r1, r1, #4
add r1, r2, r1
sub r0, r1, r0
add r1, sp, #0x1c
bl ov96_021FAB04
cmp r0, #0
beq _021FA3F4
mov r0, #1
str r0, [sp, #8]
add r0, r5, #0
add r1, r4, #0
bl ov96_021FBCB8
b _021FA3FA
_021FA3F4:
add r6, r6, #1
cmp r6, #4
blt _021FA3B2
_021FA3FA:
ldr r0, [r4, #0x44]
bl ov96_021EB5B8
mov r1, #1
add r6, r0, #0
bl Set2dSpriteVisibleFlag
ldr r0, [sp, #8]
cmp r0, #0
beq _021FA418
add r0, r6, #0
mov r1, #0
bl Set2dSpriteAnimSeqNo
b _021FA452
_021FA418:
add r0, r6, #0
mov r1, #1
bl Set2dSpriteAnimSeqNo
b _021FA452
_021FA422:
cmp r6, #0
beq _021FA452
ldr r0, [r4, #0x28]
cmp r0, #1
bne _021FA452
ldr r0, [r4, #0x2c]
cmp r0, #3
bne _021FA452
add r0, r4, #0
add r0, #0x58
ldrb r0, [r0]
cmp r0, #0
beq _021FA452
add r0, r4, #0
mov r1, #1
add r0, #0x60
strh r1, [r0]
add r0, r4, #0
add r0, #0x62
ldrh r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0x62
strh r1, [r0]
_021FA452:
ldr r0, [r4, #0xc]
ldr r1, [r4, #0x10]
bl _fadd
add r6, r0, #0
bl _ffix
add r7, r0, #0
bl _fflt
add r1, r0, #0
add r0, r6, #0
bl _fsub
str r0, [r4, #0x10]
ldrh r0, [r4]
add r0, r0, r7
strh r0, [r4]
ldrh r1, [r4]
ldrb r2, [r4, #0x18]
ldr r0, [sp, #4]
bl ov96_021FB6B4
ldr r0, [sp, #4]
add r1, r4, #0
bl ov96_021FB6C8
ldrh r0, [r4, #4]
sub r0, r0, r7
strh r0, [r4, #4]
mov r0, #2
ldrh r1, [r4, #4]
lsl r0, r0, #8
add r0, r1, r0
cmp r0, #0
bgt _021FA49C
strh r0, [r4, #4]
_021FA49C:
ldrh r1, [r4, #4]
mov r0, #0x11
lsl r0, r0, #4
add r1, r1, r0
strh r1, [r4, #6]
ldrh r1, [r4, #6]
add r0, #0xf0
add r0, r1, r0
cmp r0, #0
bgt _021FA4B2
strh r0, [r4, #6]
_021FA4B2:
mov r6, #0
_021FA4B4:
add r0, r4, #0
add r1, r6, #0
bl ov96_021FA340
add r1, r7, #0
bl ov96_021FBEFC
add r6, r6, #1
cmp r6, #4
blt _021FA4B4
ldr r0, [sp, #4]
ldrb r1, [r4, #0x18]
add r0, #0xdc
ldr r0, [r0]
add r2, r7, #0
bl ov96_021FC6EC
add r1, r4, #0
add r2, r4, #0
ldrb r0, [r4, #0x18]
add r1, #0x24
add r2, #0xc
bl ov96_021FA83C
ldrb r0, [r4, #8]
cmp r0, #1
bne _021FA54C
ldr r0, [r4, #0x28]
cmp r0, #0
bne _021FA4F6
mov r0, #3
str r0, [r4, #0x28]
b _021FA53E
_021FA4F6:
cmp r0, #3
beq _021FA4FE
cmp r0, #1
bne _021FA53E
_021FA4FE:
ldrh r1, [r4]
mov r0, #0x42
lsl r0, r0, #6
ldr r2, [r4, #0x3c]
cmp r1, r0
blo _021FA51A
cmp r2, #0x78
bne _021FA53E
mov r0, #4
str r0, [r4, #0x28]
mov r0, #0
str r0, [r4, #0xc]
str r0, [r4, #0x10]
b _021FA53E
_021FA51A:
sub r0, #0x80
cmp r1, r0
blo _021FA53E
mov r0, #0xfe
lsl r0, r0, #0x16
str r0, [r4, #0xc]
mov r0, #0
str r0, [r4, #0x10]
ldr r0, [r4, #0x24]
mov r1, #1
bl ov96_021EAC0C
ldr r0, [r4, #0x4c]
bl ov96_021EB5B8
mov r1, #0
bl Set2dSpriteAnimSeqNo
_021FA53E:
ldr r0, [sp, #4]
add r1, r4, #0
ldr r0, [r0, #4]
bl ov96_021FAB24
add sp, #0x24
pop {r4, r5, r6, r7, pc}
_021FA54C:
ldr r1, [r4, #0x28]
mov r0, #1
cmp r1, #1
bne _021FA556
mov r0, #0
_021FA556:
add r1, r4, #0
add r1, #0x60
ldrh r1, [r1]
cmp r1, #1
bne _021FA56C
add r1, r4, #0
add r1, #0x62
ldrh r1, [r1]
cmp r1, #1
bne _021FA56C
mov r0, #1
_021FA56C:
cmp r0, #0
bne _021FA572
b _021FA67C
_021FA572:
mov r6, #0
_021FA574:
add r0, r4, #0
add r1, r6, #0
bl ov96_021FA340
str r0, [sp, #0xc]
bl ov96_021FBEA0
cmp r0, #0
beq _021FA674
ldr r7, [r4, #0x24]
ldr r0, [sp, #0xc]
add r1, sp, #0x14
bl ov96_021FBF5C
add r0, r7, #0
bl ov96_021EAF90
str r0, [sp, #0x10]
add r0, r7, #0
bl ov96_021EAF8C
add r1, r0, #0
mov r0, #0x11
lsl r1, r1, #0x18
ldr r2, [r4, #0x3c]
lsl r0, r0, #4
add r2, r2, r0
ldr r0, [sp, #0x10]
lsr r1, r1, #0x18
sub r0, r2, r0
add r2, sp, #0x14
bl ov96_021FAAE0
cmp r0, #0
beq _021FA674
ldr r0, [sp, #0xc]
bl ov96_021FBEA4
ldrb r2, [r4, #0x18]
ldr r1, _021FA6C0 ; =ov96_0221DC2C
ldr r0, _021FA6C4 ; =0x000008A5
ldrb r1, [r1, r2]
bl sub_0200606C
ldrb r2, [r4, #0x18]
ldr r0, _021FA6C0 ; =ov96_0221DC2C
ldr r1, _021FA6C8 ; =ov96_0221DC28
ldrb r0, [r0, r2]
ldrsb r1, [r1, r2]
bl sub_020061D0
add r0, r4, #0
add r0, #0x60
ldrh r0, [r0]
cmp r0, #1
bne _021FA61E
add r0, r4, #0
add r0, #0x62
ldrh r0, [r0]
cmp r0, #1
bne _021FA61E
add r0, r5, #0
bl ov96_021E5F24
add r1, r0, #0
mov r0, #1
str r0, [sp]
lsl r1, r1, #0x18
ldrb r2, [r4, #0x18]
add r0, r5, #0
lsr r1, r1, #0x18
mov r3, #2
bl ov96_021E8228
add r1, r4, #0
add r1, #0x30
mov r0, #3
strb r0, [r1]
mov r0, #1
str r0, [r4, #0x2c]
add r0, r5, #0
add r1, r4, #0
bl ov96_021FBCB8
b _021FA666
_021FA61E:
mov r0, #0x3f
lsl r0, r0, #0x18
str r0, [r4, #0xc]
mov r0, #0
strb r0, [r4, #9]
mov r0, #2
add r1, r4, #0
str r0, [r4, #0x28]
add r1, #0x31
mov r0, #0
strb r0, [r1]
add r1, r4, #0
add r1, #0x32
mov r0, #1
strb r0, [r1]
mov r0, #4
str r0, [r4, #0x2c]
ldr r0, [r4, #0x4c]
bl ov96_021EB5B8
mov r1, #0
bl Set2dSpriteAnimSeqNo
add r0, r5, #0
bl ov96_021E5F24
add r1, r0, #0
mov r0, #1
str r0, [sp]
lsl r1, r1, #0x18
ldrb r2, [r4, #0x18]
add r0, r5, #0
lsr r1, r1, #0x18
mov r3, #1
bl ov96_021E8228
_021FA666:
add r1, r4, #0
add r1, #0x60
mov r0, #0
strh r0, [r1]
add r1, r4, #0
add r1, #0x62
strh r0, [r1]
_021FA674:
add r6, r6, #1
cmp r6, #4
bge _021FA67C
b _021FA574
_021FA67C:
ldrb r0, [r4, #8]
cmp r0, #1
beq _021FA6B0
ldrh r1, [r4]
mov r0, #1
lsl r0, r0, #0xc
cmp r1, r0
blo _021FA6B0
mov r0, #1
strb r0, [r4, #8]
mov r1, #0x23
ldr r0, [sp, #4]
lsl r1, r1, #4
ldr r0, [r0, r1]
ldr r1, _021FA6C0 ; =ov96_0221DC2C
strh r0, [r4, #2]
ldrb r2, [r4, #0x18]
ldr r0, _021FA6CC ; =0x000008AB
ldrb r1, [r1, r2]
bl sub_0200606C
mov r1, #0xf1
ldr r0, [sp, #4]
mov r2, #0x1e
lsl r1, r1, #2
strh r2, [r0, r1]
_021FA6B0:
ldr r0, [sp, #4]
add r1, r4, #0
ldr r0, [r0, #4]
bl ov96_021FAB24
add sp, #0x24
pop {r4, r5, r6, r7, pc}
nop
_021FA6C0: .word ov96_0221DC2C
_021FA6C4: .word 0x000008A5
_021FA6C8: .word ov96_0221DC28
_021FA6CC: .word 0x000008AB
thumb_func_end ov96_021FA34C
thumb_func_start ov96_021FA6D0
ov96_021FA6D0: ; 0x021FA6D0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #0xc]
sub r0, r0, #1
str r0, [sp, #8]
str r0, [sp, #0x10]
ldr r0, [sp, #0xc]
add r6, r1, #0
str r0, [sp, #0x14]
bl System_GetTouchNew
cmp r0, #0
beq _021FA71C
ldr r0, [sp, #4]
bl ov96_021E5F24
add r1, r0, #0
mov r0, #1
str r0, [sp]
lsl r1, r1, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
mov r2, #3
mov r3, #0
bl ov96_021E8228
ldr r2, _021FA7A8 ; =gSystem + 0x40
add r0, r6, #0
ldrh r1, [r2, #0x20]
ldrh r2, [r2, #0x22]
bl ov96_021FB784
str r0, [sp, #8]
cmp r0, #3
bge _021FA71C
str r0, [sp, #0x10]
_021FA71C:
mov r7, #0
add r5, r6, #0
add r4, r7, #0
add r5, #0xe0
_021FA724:
ldrb r0, [r5, #8]
mov r3, #0
cmp r0, #0
bne _021FA736
ldr r0, [sp, #8]
cmp r0, r4
bne _021FA73C
add r3, sp, #0x10
b _021FA73C
_021FA736:
add r0, r7, #1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
_021FA73C:
ldr r0, [sp, #4]
add r1, r6, #0
add r2, r5, #0
bl ov96_021FA34C
add r4, r4, #1
add r5, #0x6c
cmp r4, #3
blt _021FA724
add r0, r6, #0
add r0, #0xe6
ldrh r0, [r0]
ldr r1, _021FA7AC ; =0x01FF0000
ldr r2, _021FA7B0 ; =0x04000010
lsl r0, r0, #0x10
and r0, r1
str r0, [r2]
ldr r0, _021FA7B4 ; =0x00000152
ldrh r3, [r6, r0]
lsl r3, r3, #0x10
and r3, r1
str r3, [r2, #4]
add r3, r0, #0
add r3, #0x6c
ldrh r3, [r6, r3]
lsl r3, r3, #0x10
and r3, r1
str r3, [r2, #8]
add r2, r6, #0
add r2, #0xe4
ldrh r2, [r2]
lsl r2, r2, #0x10
add r3, r2, #0
ldr r2, _021FA7B8 ; =0x04001010
and r3, r1
str r3, [r2]
sub r3, r0, #2
ldrh r3, [r6, r3]
add r0, #0x6a
lsl r3, r3, #0x10
and r3, r1
str r3, [r2, #4]
ldrh r0, [r6, r0]
lsl r0, r0, #0x10
and r0, r1
str r0, [r2, #8]
cmp r7, #3
blo _021FA7A0
mov r0, #1
str r0, [sp, #0xc]
_021FA7A0:
ldr r0, [sp, #0xc]
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_021FA7A8: .word gSystem + 0x40
_021FA7AC: .word 0x01FF0000
_021FA7B0: .word 0x04000010
_021FA7B4: .word 0x00000152
_021FA7B8: .word 0x04001010
thumb_func_end ov96_021FA6D0
thumb_func_start ov96_021FA7BC
ov96_021FA7BC: ; 0x021FA7BC
push {r3, r4, r5, r6, r7, lr}
add r4, r3, #0
add r7, r0, #0
ldr r0, [r4, #4]
add r5, r2, #0
cmp r0, #0
bne _021FA82A
add r0, r4, #0
add r0, #0x34
ldrb r0, [r0]
cmp r0, #0
beq _021FA7FC
ldr r1, _021FA82C ; =ov96_0221DC2C
ldr r0, _021FA830 ; =0x0000060A
add r6, r1, r5
ldrb r1, [r1, r5]
bl sub_0200606C
add r0, r7, #0
bl ov96_021E5F24
add r1, r0, #0
mov r0, #1
lsl r1, r1, #0x18
str r0, [sp]
add r0, r7, #0
lsr r1, r1, #0x18
add r2, r5, #0
mov r3, #2
bl ov96_021E8228
b _021FA808
_021FA7FC:
ldr r1, _021FA82C ; =ov96_0221DC2C
ldr r0, _021FA834 ; =0x000008AA
add r6, r1, r5
ldrb r1, [r1, r5]
bl sub_0200606C
_021FA808:
ldr r1, _021FA838 ; =ov96_0221DC28
ldrb r0, [r6]
ldrsb r1, [r1, r5]
bl sub_020061D0
mov r1, #1
str r1, [r4, #4]
mov r0, #0
strb r0, [r4, #0xc]
str r1, [r4, #8]
add r1, r4, #0
ldr r0, [r4]
add r4, #0x14
add r1, #0x10
add r2, r4, #0
bl ov96_021EAE9C
_021FA82A:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021FA82C: .word ov96_0221DC2C
_021FA830: .word 0x0000060A
_021FA834: .word 0x000008AA
_021FA838: .word ov96_0221DC28
thumb_func_end ov96_021FA7BC
thumb_func_start ov96_021FA83C
ov96_021FA83C: ; 0x021FA83C
push {r3, r4, r5, r6, lr}
sub sp, #0x24
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4, #4]
cmp r0, #3
bhi _021FA8F2
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021FA856: ; jump table
.short _021FAA64 - _021FA856 - 2 ; case 0
.short _021FA85E - _021FA856 - 2 ; case 1
.short _021FA9AE - _021FA856 - 2 ; case 2
.short _021FAA1E - _021FA856 - 2 ; case 3
_021FA85E:
ldrb r0, [r4, #0xc]
add r0, r0, #1
strb r0, [r4, #0xc]
ldr r0, [r4, #8]
cmp r0, #1
beq _021FA874
cmp r0, #2
beq _021FA8D8
cmp r0, #3
beq _021FA912
b _021FA9A8
_021FA874:
add r0, r4, #0
add r0, #0x34
ldrb r0, [r0]
ldr r3, _021FAAC8 ; =ov96_0221C55C
lsl r1, r0, #3
add r5, r0, r1
ldrb r1, [r4, #0xc]
sub r2, r1, #1
add r1, r3, r5
ldrsb r1, [r2, r1]
ldr r2, [r4, #0x14]
sub r5, r2, r1
cmp r0, #0
bne _021FA8A4
add r0, r4, #0
mov r1, #0
bl ov96_021FB8FC
ldr r0, [r4]
ldr r1, [r4, #0x10]
add r2, r5, #0
bl ov96_021EAE4C
b _021FA8B6
_021FA8A4:
add r0, r4, #0
bl ov96_021FB8B4
ldr r0, [r4]
ldr r1, [r4, #0x10]
add r2, r5, #0
mov r3, #0
bl ov96_021EAD88
_021FA8B6:
ldrb r1, [r4, #0xc]
ldrh r0, [r4, #0x38]
cmp r1, r0
blt _021FA8F2
mov r0, #2
str r0, [r4, #8]
mov r1, #0
add r0, r4, #0
strb r1, [r4, #0xc]
add r0, #0x34
ldrb r0, [r0]
cmp r0, #0
bne _021FA8F2
ldr r0, [r4]
bl ov96_021EAB94
b _021FAA6A
_021FA8D8:
ldrb r1, [r4, #0xc]
ldrh r0, [r4, #0x3a]
cmp r1, r0
blt _021FA8F2
mov r0, #3
str r0, [r4, #8]
mov r0, #0
strb r0, [r4, #0xc]
add r0, r4, #0
add r0, #0x34
ldrb r0, [r0]
cmp r0, #0
beq _021FA8F4
_021FA8F2:
b _021FAA6A
_021FA8F4:
ldr r0, [r4]
mov r1, #1
bl ov96_021EAB94
ldr r6, _021FAACC ; =ov96_0221DC2C
ldr r0, _021FAAD0 ; =0x000008AA
ldrb r1, [r6, r5]
bl sub_0200606C
ldr r1, _021FAAD4 ; =ov96_0221DC28
ldrb r0, [r6, r5]
ldrsb r1, [r1, r5]
bl sub_020061D0
b _021FAA6A
_021FA912:
add r0, r4, #0
add r0, #0x34
ldrb r0, [r0]
ldr r3, _021FAAD8 ; =ov96_0221C589
lsl r1, r0, #3
add r6, r0, r1
ldrb r1, [r4, #0xc]
sub r2, r1, #1
add r1, r3, r6
ldrsb r1, [r2, r1]
ldr r2, [r4, #0x14]
sub r6, r2, r1
cmp r0, #0
bne _021FA942
add r0, r4, #0
mov r1, #1
bl ov96_021FB8FC
ldr r0, [r4]
ldr r1, [r4, #0x10]
add r2, r6, #0
bl ov96_021EAE4C
b _021FA954
_021FA942:
add r0, r4, #0
bl ov96_021FB8B4
ldr r0, [r4]
ldr r1, [r4, #0x10]
add r2, r6, #0
mov r3, #0
bl ov96_021EAD88
_021FA954:
ldrh r0, [r4, #0x38]
ldrb r1, [r4, #0xc]
cmp r1, r0
blt _021FA99C
mov r3, #0
str r3, [r4, #4]
str r3, [r4, #8]
strb r3, [r4, #0xc]
ldr r0, [r4]
ldr r1, [r4, #0x10]
ldr r2, [r4, #0x14]
bl ov96_021EAD88
add r0, r4, #0
add r0, #0x34
ldrb r0, [r0]
cmp r0, #0
beq _021FA98C
ldr r6, _021FAACC ; =ov96_0221DC2C
ldr r0, _021FAADC ; =0x000008A8
ldrb r1, [r6, r5]
bl sub_0200606C
ldr r1, _021FAAD4 ; =ov96_0221DC28
ldrb r0, [r6, r5]
ldrsb r1, [r1, r5]
bl sub_020061D0
_021FA98C:
add r0, r4, #0
mov r1, #0
bl ov96_021FB8B4
mov r0, #0
strh r0, [r4, #0x3c]
strh r0, [r4, #0x3e]
b _021FAA6A
_021FA99C:
sub r0, r0, #5
cmp r1, r0
bge _021FAA6A
mov r0, #0
strh r0, [r4, #0x3c]
b _021FAA6A
_021FA9A8:
bl GF_AssertFail
b _021FAA6A
_021FA9AE:
ldrb r0, [r4, #0xc]
add r0, r0, #1
strb r0, [r4, #0xc]
ldrb r0, [r4, #0xd]
cmp r0, #0
bne _021FA9F4
ldrb r0, [r4, #0xe]
cmp r0, #4
bhi _021FA9EC
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021FA9CC: ; jump table
.short _021FA9EC - _021FA9CC - 2 ; case 0
.short _021FA9D6 - _021FA9CC - 2 ; case 1
.short _021FA9E2 - _021FA9CC - 2 ; case 2
.short _021FA9DC - _021FA9CC - 2 ; case 3
.short _021FA9E8 - _021FA9CC - 2 ; case 4
_021FA9D6:
mov r0, #3
strb r0, [r4, #0xe]
b _021FA9EC
_021FA9DC:
mov r0, #2
strb r0, [r4, #0xe]
b _021FA9EC
_021FA9E2:
mov r0, #4
strb r0, [r4, #0xe]
b _021FA9EC
_021FA9E8:
mov r0, #1
strb r0, [r4, #0xe]
_021FA9EC:
ldrb r1, [r4, #0xe]
ldr r0, [r4]
bl ov96_021EAC0C
_021FA9F4:
ldrb r0, [r4, #0xd]
add r0, r0, #1
lsr r2, r0, #0x1f
lsl r1, r0, #0x1e
sub r1, r1, r2
mov r0, #0x1e
ror r1, r0
add r0, r2, r1
strb r0, [r4, #0xd]
ldrb r0, [r4, #0xc]
cmp r0, #0x1e
bls _021FAA6A
mov r0, #0
strb r0, [r4, #0xc]
str r0, [r4, #4]
str r0, [r4, #8]
ldr r0, [r4]
mov r1, #1
bl ov96_021EAC0C
b _021FAA6A
_021FAA1E:
ldr r1, [r4, #0x18]
mov r0, #0
cmp r1, #0x78
bge _021FAA36
add r0, r1, #1
mov r2, #1
cmp r0, #0x78
ble _021FAA32
add r2, r1, #0
sub r2, #0x78
_021FAA32:
mov r0, #1
b _021FAA46
_021FAA36:
ble _021FAA46
sub r2, r0, #1
sub r0, r1, #1
cmp r0, #0x78
bge _021FAA44
mov r0, #0x78
sub r2, r0, r1
_021FAA44:
mov r0, #1
_021FAA46:
cmp r0, #0
beq _021FAA6A
ldr r0, [r4, #0x18]
mov r3, #1
add r0, r0, r2
str r0, [r4, #0x18]
ldr r0, [r4, #0x1c]
mov r1, #0
add r0, r0, r2
str r0, [r4, #0x1c]
str r3, [sp]
ldr r0, [r4]
bl ov96_021EAED4
b _021FAA6A
_021FAA64:
mov r0, #0
strh r0, [r4, #0x3c]
strh r0, [r4, #0x3e]
_021FAA6A:
ldr r0, [r4, #0x20]
bl ov96_021EB5B8
add r5, r0, #0
bl Sprite_GetMatrixPtr
add r6, r0, #0
add r3, sp, #0x18
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
add r1, r2, #0
str r0, [r3]
ldr r0, [r4, #0x1c]
lsl r0, r0, #0xc
str r0, [sp, #0x1c]
add r0, r5, #0
bl Sprite_SetMatrix
ldr r0, [r4]
add r1, sp, #8
add r2, sp, #4
bl ov96_021EAE9C
ldr r0, [r4, #0x28]
bl ov96_021EB5B8
add r4, r0, #0
bl Sprite_GetMatrixPtr
add r5, r0, #0
add r3, sp, #0xc
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r5]
add r1, r2, #0
str r0, [r3]
ldr r0, [sp, #4]
lsl r0, r0, #0xc
str r0, [sp, #0x10]
add r0, r4, #0
bl Sprite_SetMatrix
add sp, #0x24
pop {r3, r4, r5, r6, pc}
.balign 4, 0
_021FAAC8: .word ov96_0221C55C
_021FAACC: .word ov96_0221DC2C
_021FAAD0: .word 0x000008AA
_021FAAD4: .word ov96_0221DC28
_021FAAD8: .word ov96_0221C589
_021FAADC: .word 0x000008A8
thumb_func_end ov96_021FA83C
thumb_func_start ov96_021FAAE0
ov96_021FAAE0: ; 0x021FAAE0
push {r4, r5}
add r4, r0, r1
mov r3, #2
sub r1, r0, r1
mov r0, #6
ldrsh r3, [r2, r3]
ldrsh r0, [r2, r0]
mov r5, #0
add r0, r3, r0
cmp r1, r0
bgt _021FAAFC
cmp r3, r4
bgt _021FAAFC
mov r5, #1
_021FAAFC:
add r0, r5, #0
pop {r4, r5}
bx lr
.balign 4, 0
thumb_func_end ov96_021FAAE0
thumb_func_start ov96_021FAB04
ov96_021FAB04: ; 0x021FAB04
push {r3, r4}
mov r2, #2
ldrsh r3, [r1, r2]
mov r2, #6
ldrsh r1, [r1, r2]
mov r4, #0
add r1, r3, r1
cmp r0, r1
blt _021FAB1E
sub r0, #0x18
cmp r0, r1
bge _021FAB1E
mov r4, #1
_021FAB1E:
add r0, r4, #0
pop {r3, r4}
bx lr
thumb_func_end ov96_021FAB04
thumb_func_start ov96_021FAB24
ov96_021FAB24: ; 0x021FAB24
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r4, r1, #0
ldr r1, [r4, #0x1c]
add r5, r0, #0
cmp r1, #0
beq _021FAB42
cmp r1, #1
bne _021FAB38
b _021FAC6C
_021FAB38:
cmp r1, #2
bne _021FAB3E
b _021FADBE
_021FAB3E:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
_021FAB42:
ldrh r1, [r4]
cmp r1, #0x70
bhs _021FAB4A
b _021FAF10
_021FAB4A:
mov r2, #2
lsl r1, r2, #9
add r1, r2, r1
lsl r1, r1, #0x10
lsr r7, r1, #0x10
mov r1, #0x32
str r1, [sp]
mov r1, #1
str r1, [sp, #4]
str r2, [sp, #8]
mov r1, #0x10
str r1, [sp, #0xc]
ldrh r1, [r4, #0x14]
ldrb r6, [r4, #0x18]
mov r3, #0xa
lsl r1, r1, #0x18
mul r3, r6
add r3, r3, #2
lsl r3, r3, #0x18
lsr r1, r1, #0x18
lsr r3, r3, #0x18
bl FillBgTilemapRect
mov r0, #0x32
str r0, [sp]
mov r0, #6
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
ldrh r1, [r4, #0x14]
ldrb r6, [r4, #0x18]
mov r3, #0xa
lsl r1, r1, #0x18
mul r3, r6
add r3, r3, #3
lsl r3, r3, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
mov r2, #3
lsr r3, r3, #0x18
bl FillBgTilemapRect
mov r0, #0x32
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
ldrh r1, [r4, #0x14]
ldrb r6, [r4, #0x18]
mov r3, #0xa
lsl r1, r1, #0x18
mul r3, r6
add r3, #9
lsl r3, r3, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
add r2, r7, #0
lsr r3, r3, #0x18
bl FillBgTilemapRect
mov r0, #0x32
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r2, #2
str r2, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
ldrh r1, [r4, #0x16]
ldrb r6, [r4, #0x18]
mov r3, #0xa
lsl r1, r1, #0x18
mul r3, r6
add r3, r3, #2
lsl r3, r3, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
lsr r3, r3, #0x18
bl FillBgTilemapRect
mov r0, #0x32
str r0, [sp]
mov r0, #6
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
ldrh r1, [r4, #0x16]
ldrb r6, [r4, #0x18]
mov r3, #0xa
lsl r1, r1, #0x18
mul r3, r6
add r3, r3, #3
lsl r3, r3, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
mov r2, #3
lsr r3, r3, #0x18
bl FillBgTilemapRect
mov r0, #0x32
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
ldrh r1, [r4, #0x16]
ldrb r6, [r4, #0x18]
mov r3, #0xa
lsl r1, r1, #0x18
mul r3, r6
add r3, #9
lsl r3, r3, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
add r2, r7, #0
lsr r3, r3, #0x18
bl FillBgTilemapRect
ldrh r1, [r4, #0x14]
add r0, r5, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ScheduleBgTilemapBufferTransfer
ldrh r1, [r4, #0x16]
add r0, r5, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ScheduleBgTilemapBufferTransfer
mov r0, #1
str r0, [r4, #0x1c]
mov r0, #0xff
add sp, #0x10
strb r0, [r4, #0x1a]
pop {r3, r4, r5, r6, r7, pc}
_021FAC6C:
ldrh r1, [r4]
ldr r0, _021FAF14 ; =0x00000E48
sub r1, #0x10
cmp r1, r0
bge _021FAC78
b _021FAF10
_021FAC78:
asr r0, r1, #2
lsr r0, r0, #0x1d
add r0, r1, r0
asr r0, r0, #3
lsr r1, r0, #0x1f
lsl r0, r0, #0x1a
sub r0, r0, r1
mov r2, #0x1a
ror r0, r2
add r1, r1, r0
mov r0, #0x40
sub r0, r0, r1
lsr r1, r0, #0x1f
lsl r0, r0, #0x1a
sub r0, r0, r1
ror r0, r2
add r0, r1, r0
sub r0, r0, #2
bpl _021FACA0
add r0, #0x40
_021FACA0:
strb r0, [r4, #0x1b]
ldrb r0, [r4, #0x1b]
mov r3, #0xa
mov r2, #0x60
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
ldrb r6, [r4, #0x18]
ldrh r1, [r4, #0x14]
add r0, r5, #0
mul r3, r6
add r3, r3, #2
lsl r1, r1, #0x18
lsl r3, r3, #0x18
lsr r1, r1, #0x18
lsr r3, r3, #0x18
bl FillBgTilemapRect
ldrb r0, [r4, #0x1b]
mov r3, #0xa
mov r2, #0x61
str r0, [sp]
mov r0, #6
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
ldrb r6, [r4, #0x18]
ldrh r1, [r4, #0x14]
add r0, r5, #0
mul r3, r6
add r3, r3, #3
lsl r1, r1, #0x18
lsl r3, r3, #0x18
lsr r1, r1, #0x18
lsr r3, r3, #0x18
bl FillBgTilemapRect
ldrb r0, [r4, #0x1b]
mov r3, #0xa
mov r2, #0x62
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
ldrb r6, [r4, #0x18]
ldrh r1, [r4, #0x14]
add r0, r5, #0
mul r3, r6
add r3, #9
lsl r1, r1, #0x18
lsl r3, r3, #0x18
lsr r1, r1, #0x18
lsr r3, r3, #0x18
bl FillBgTilemapRect
ldrb r0, [r4, #0x1b]
mov r3, #0xa
mov r2, #0x60
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
ldrb r6, [r4, #0x18]
ldrh r1, [r4, #0x16]
add r0, r5, #0
mul r3, r6
add r3, r3, #2
lsl r1, r1, #0x18
lsl r3, r3, #0x18
lsr r1, r1, #0x18
lsr r3, r3, #0x18
bl FillBgTilemapRect
ldrb r0, [r4, #0x1b]
mov r3, #0xa
mov r2, #0x61
str r0, [sp]
mov r0, #6
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
ldrb r6, [r4, #0x18]
ldrh r1, [r4, #0x16]
add r0, r5, #0
mul r3, r6
add r3, r3, #3
lsl r1, r1, #0x18
lsl r3, r3, #0x18
lsr r1, r1, #0x18
lsr r3, r3, #0x18
bl FillBgTilemapRect
ldrb r0, [r4, #0x1b]
mov r3, #0xa
mov r2, #0x62
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
ldrb r6, [r4, #0x18]
ldrh r1, [r4, #0x16]
add r0, r5, #0
mul r3, r6
add r3, #9
lsl r1, r1, #0x18
lsl r3, r3, #0x18
lsr r1, r1, #0x18
lsr r3, r3, #0x18
bl FillBgTilemapRect
ldrh r1, [r4, #0x14]
add r0, r5, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ScheduleBgTilemapBufferTransfer
ldrh r1, [r4, #0x16]
add r0, r5, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ScheduleBgTilemapBufferTransfer
mov r0, #2
add sp, #0x10
str r0, [r4, #0x1c]
pop {r3, r4, r5, r6, r7, pc}
_021FADBE:
ldrh r1, [r4]
ldr r0, _021FAF18 ; =0x00001048
sub r1, #0x10
cmp r1, r0
bge _021FADCA
b _021FAF10
_021FADCA:
asr r0, r1, #2
lsr r0, r0, #0x1d
add r0, r1, r0
asr r0, r0, #3
lsr r1, r0, #0x1f
lsl r0, r0, #0x1a
sub r0, r0, r1
mov r2, #0x1a
ror r0, r2
add r1, r1, r0
mov r0, #0x40
sub r0, r0, r1
lsr r1, r0, #0x1f
lsl r0, r0, #0x1a
sub r0, r0, r1
ror r0, r2
add r0, r1, r0
sub r0, r0, #2
bpl _021FADF2
add r0, #0x40
_021FADF2:
mov r2, #2
strb r0, [r4, #0x1b]
lsl r0, r2, #9
add r0, r2, r0
lsl r0, r0, #0x10
lsr r7, r0, #0x10
ldrb r0, [r4, #0x1b]
mov r3, #0xa
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
str r2, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
ldrb r6, [r4, #0x18]
ldrh r1, [r4, #0x14]
add r0, r5, #0
mul r3, r6
add r3, r3, #2
lsl r1, r1, #0x18
lsl r3, r3, #0x18
lsr r1, r1, #0x18
lsr r3, r3, #0x18
bl FillBgTilemapRect
ldrb r0, [r4, #0x1b]
mov r3, #0xa
mov r2, #3
str r0, [sp]
mov r0, #6
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
ldrb r6, [r4, #0x18]
ldrh r1, [r4, #0x14]
add r0, r5, #0
mul r3, r6
add r3, r3, #3
lsl r1, r1, #0x18
lsl r3, r3, #0x18
lsr r1, r1, #0x18
lsr r3, r3, #0x18
bl FillBgTilemapRect
ldrb r0, [r4, #0x1b]
mov r3, #0xa
add r2, r7, #0
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
ldrb r6, [r4, #0x18]
ldrh r1, [r4, #0x14]
add r0, r5, #0
mul r3, r6
add r3, #9
lsl r1, r1, #0x18
lsl r3, r3, #0x18
lsr r1, r1, #0x18
lsr r3, r3, #0x18
bl FillBgTilemapRect
ldrb r0, [r4, #0x1b]
mov r2, #2
mov r3, #0xa
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
str r2, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
ldrb r6, [r4, #0x18]
ldrh r1, [r4, #0x16]
add r0, r5, #0
mul r3, r6
add r3, r3, #2
lsl r1, r1, #0x18
lsl r3, r3, #0x18
lsr r1, r1, #0x18
lsr r3, r3, #0x18
bl FillBgTilemapRect
ldrb r0, [r4, #0x1b]
mov r3, #0xa
mov r2, #3
str r0, [sp]
mov r0, #6
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
ldrb r6, [r4, #0x18]
ldrh r1, [r4, #0x16]
add r0, r5, #0
mul r3, r6
add r3, r3, #3
lsl r1, r1, #0x18
lsl r3, r3, #0x18
lsr r1, r1, #0x18
lsr r3, r3, #0x18
bl FillBgTilemapRect
ldrb r0, [r4, #0x1b]
mov r3, #0xa
add r2, r7, #0
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
ldrb r6, [r4, #0x18]
ldrh r1, [r4, #0x16]
add r0, r5, #0
mul r3, r6
add r3, #9
lsl r1, r1, #0x18
lsl r3, r3, #0x18
lsr r1, r1, #0x18
lsr r3, r3, #0x18
bl FillBgTilemapRect
ldrh r1, [r4, #0x14]
add r0, r5, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ScheduleBgTilemapBufferTransfer
ldrh r1, [r4, #0x16]
add r0, r5, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ScheduleBgTilemapBufferTransfer
mov r0, #3
str r0, [r4, #0x1c]
_021FAF10:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021FAF14: .word 0x00000E48
_021FAF18: .word 0x00001048
thumb_func_end ov96_021FAB24
thumb_func_start ov96_021FAF1C
ov96_021FAF1C: ; 0x021FAF1C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
str r0, [sp]
bl ov96_021E5DC4
add r5, r0, #0
ldr r0, [sp]
bl ov96_021E5F54
add r4, r0, #0
bl ov96_021E8A20
mov r7, #0x23
add r3, r0, #0
mov r1, #0
add r2, r5, #0
mov r0, #1
lsl r7, r7, #4
_021FAF40:
add r6, r2, #0
add r6, #0xe0
ldrh r6, [r6]
strh r6, [r3]
add r6, r2, #0
add r6, #0xe8
ldrb r6, [r6]
cmp r6, #0
beq _021FAF5E
ldrh r6, [r3, #0x10]
cmp r6, #0
bne _021FAF5E
strh r0, [r3, #0x10]
ldr r6, [r5, r7]
strh r6, [r3, #0xa]
_021FAF5E:
add r1, r1, #1
add r2, #0x6c
add r3, r3, #2
cmp r1, #3
blt _021FAF40
ldr r0, [sp]
bl ov96_021E5F24
cmp r0, #0
bne _021FAFF0
add r0, r4, #0
add r0, #0x28
mov r7, #0
bl ov96_021E8A20
str r0, [sp, #8]
add r0, r4, #0
add r0, #0x50
bl ov96_021E8A20
add r5, r0, #0
add r0, r4, #0
bl ov96_021E8A20
mov r2, #0x12
_021FAF90:
ldrh r1, [r0]
add r0, r0, #2
strh r1, [r5]
add r5, r5, #2
sub r2, r2, #1
bne _021FAF90
mov r0, #0
ldr r5, [sp, #8]
str r0, [sp, #4]
add r4, #0x50
_021FAFA4:
add r0, r4, #0
bl ov96_021E8A20
add r6, r0, #0
mov r1, #0
add r2, r6, #0
add r3, r5, #0
_021FAFB2:
ldrh r0, [r2]
add r1, r1, #1
add r2, r2, #2
strh r0, [r3, #4]
add r3, r3, #2
cmp r1, #3
blt _021FAFB2
ldrb r0, [r6, #9]
cmp r0, #0
beq _021FAFCC
add r0, r7, #1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
_021FAFCC:
ldr r0, [sp, #4]
add r4, #0x28
add r0, r0, #1
add r5, r5, #6
str r0, [sp, #4]
cmp r0, #4
blt _021FAFA4
ldr r0, [sp]
bl ov96_021E5D34
cmp r7, r0
bne _021FAFEA
ldr r0, [sp, #8]
mov r1, #1
str r1, [r0]
_021FAFEA:
ldr r0, [sp]
bl ov96_021FB400
_021FAFF0:
ldr r0, [sp]
bl ov96_021FB0F4
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021FAF1C
thumb_func_start ov96_021FAFFC
ov96_021FAFFC: ; 0x021FAFFC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0xa0
str r0, [sp]
add r7, r1, #0
mov r0, #0
add r1, sp, #0x10
str r1, [sp, #8]
str r0, [sp, #4]
add r1, sp, #4
strh r0, [r1, #8]
strh r0, [r1, #0xa]
_021FB012:
add r2, r0, #1
mov r1, #0xc
add r3, sp, #4
mul r1, r2
add r2, r3, r1
lsr r1, r0, #0x1f
add r1, r0, r1
lsl r1, r1, #0x17
lsr r1, r1, #0x18
add r1, r7, r1
ldrb r6, [r1, #0x1c]
lsr r5, r0, #0x1f
lsl r4, r0, #0x1f
sub r4, r4, r5
mov r1, #0x1f
ror r4, r1
add r1, r5, r4
lsl r1, r1, #0x18
lsr r1, r1, #0x16
add r4, r6, #0
asr r4, r1
mov r1, #0xf
and r1, r4
lsl r1, r1, #0x18
lsr r1, r1, #0x18
strh r1, [r2, #8]
mov r1, #0
strh r0, [r2, #0xa]
str r1, [r2, #4]
cmp r0, #0
ble _021FB088
ldrh r4, [r2, #8]
ldrh r5, [r2, #0xa]
_021FB054:
ldr r3, [r3, #4]
ldrh r6, [r3, #8]
cmp r6, r4
bls _021FB06A
ldr r4, [r3]
str r2, [r4, #4]
ldr r4, [r3]
str r4, [r2]
str r3, [r2, #4]
str r2, [r3]
b _021FB088
_021FB06A:
cmp r6, r4
bne _021FB082
ldrh r6, [r3, #0xa]
cmp r6, r5
bls _021FB082
ldr r4, [r3]
str r2, [r4, #4]
ldr r4, [r3]
str r4, [r2]
str r3, [r2, #4]
str r2, [r3]
b _021FB088
_021FB082:
add r1, r1, #1
cmp r1, r0
blt _021FB054
_021FB088:
cmp r1, r0
bne _021FB090
str r2, [r3, #4]
str r3, [r2]
_021FB090:
add r0, r0, #1
cmp r0, #0xc
blt _021FB012
mov r1, #0x8a
ldr r0, [sp]
lsl r1, r1, #2
ldr r0, [r0, r1]
mov r1, #1
bl ov96_021FC2B4
add r4, sp, #4
mov r7, #0
mov r5, #0x10
_021FB0AA:
ldr r4, [r4, #4]
ldrh r0, [r4, #8]
lsl r0, r0, #0x18
lsr r6, r0, #0x18
cmp r6, #8
bls _021FB0B8
mov r6, #8
_021FB0B8:
mov r0, #0x8a
ldr r1, [sp]
lsl r0, r0, #2
ldr r0, [r1, r0]
ldrh r1, [r4, #0xa]
add r2, r5, #0
bl ov96_021FC248
mov r0, #0x8a
ldr r1, [sp]
lsl r0, r0, #2
ldr r0, [r1, r0]
ldrh r1, [r4, #0xa]
add r2, r6, #0
bl ov96_021FC28C
mov r0, #0x8a
ldr r1, [sp]
lsl r0, r0, #2
ldr r0, [r1, r0]
ldrh r1, [r4, #0xa]
mov r2, #1
bl ov96_021FC2E0
add r7, r7, #1
add r5, #0x20
cmp r7, #0xc
blt _021FB0AA
add sp, #0xa0
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021FAFFC
thumb_func_start ov96_021FB0F4
ov96_021FB0F4: ; 0x021FB0F4
push {r4, r5, r6, r7, lr}
sub sp, #0x3c
str r0, [sp]
bl ov96_021E5DC4
str r0, [sp, #4]
ldr r0, [sp]
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
str r0, [sp, #8]
ldr r2, _021FB3EC ; =0x000003C7
ldr r0, [sp, #4]
ldrb r0, [r0, r2]
cmp r0, #0
beq _021FB124
ldr r0, [sp, #4]
sub r1, r2, #3
ldrh r0, [r0, r1]
add r3, r0, #1
ldr r0, [sp, #4]
strh r3, [r0, r1]
_021FB124:
ldr r0, _021FB3F0 ; =0x000003C6
ldr r1, [sp, #4]
ldrb r1, [r1, r0]
cmp r1, #0
bne _021FB21E
ldr r1, [sp, #4]
sub r2, r0, #2
ldrh r1, [r1, r2]
cmp r1, #0x96
blo _021FB21C
ldr r1, [sp, #4]
mov r3, #0
strh r3, [r1, r2]
mov r2, #1
strb r2, [r1, r0]
add r0, r1, #0
ldr r1, [sp, #8]
bl ov96_021FAFFC
mov r4, #0
_021FB14C:
mov r0, #0x6c
add r1, r4, #0
mul r1, r0
ldr r0, [sp, #4]
add r5, r0, r1
mov r0, #0x4a
lsl r0, r0, #2
ldr r0, [r5, r0]
bl ov96_021EB5B8
add r7, r0, #0
mov r0, #0x4a
lsl r0, r0, #2
mov r1, #1
ldr r0, [r5, r0]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [sp]
bl ov96_021E5F24
lsl r1, r0, #1
add r0, r0, r1
add r1, r4, r0
lsr r0, r1, #0x1f
add r0, r1, r0
lsl r0, r0, #0x17
lsr r6, r0, #0x18
ldr r0, [sp]
bl ov96_021E5F24
lsl r1, r0, #1
add r0, r0, r1
add r0, r4, r0
lsr r2, r0, #0x1f
lsl r1, r0, #0x1f
sub r1, r1, r2
mov r0, #0x1f
ror r1, r0
add r0, r2, r1
lsl r1, r0, #0x18
ldr r0, [sp, #8]
add r0, r0, r6
ldrb r2, [r0, #0x1c]
lsr r0, r1, #0x16
add r1, r2, #0
asr r1, r0
mov r0, #0xf
and r0, r1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
beq _021FB1B8
cmp r6, #0xc
bls _021FB1BC
_021FB1B8:
bl GF_AssertFail
_021FB1BC:
mov r1, #0xff
mov r0, #0x51
lsl r1, r1, #0x16
lsl r0, r0, #2
str r1, [r5, r0]
mov r1, #0x51
lsl r1, r1, #2
ldr r0, _021FB3F4 ; =0x45800000
ldr r1, [r5, r1]
bl _fmul
bl _ffix
mov r1, #0x51
str r0, [sp, #0x30]
lsl r1, r1, #2
ldr r0, _021FB3F4 ; =0x45800000
ldr r1, [r5, r1]
bl _fmul
bl _ffix
mov r1, #0x51
str r0, [sp, #0x34]
lsl r1, r1, #2
ldr r0, _021FB3F4 ; =0x45800000
ldr r1, [r5, r1]
bl _fmul
bl _ffix
str r0, [sp, #0x38]
mov r0, #0x52
lsl r0, r0, #2
strh r6, [r5, r0]
add r0, r7, #0
add r1, sp, #0x30
bl sub_020247F4
add r0, r7, #0
sub r1, r6, #1
bl Set2dSpriteAnimSeqNo
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _021FB14C
_021FB21C:
b _021FB348
_021FB21E:
ldr r1, [sp, #4]
sub r2, r0, #2
ldrh r1, [r1, r2]
cmp r1, #0x1e
bhs _021FB22A
b _021FB348
_021FB22A:
sub r1, r0, #2
ldr r0, [sp, #4]
mov r2, #0
strh r2, [r0, r1]
ldr r1, [sp, #8]
bl ov96_021FAFFC
mov r7, #0
_021FB23A:
mov r0, #0x6c
add r1, r7, #0
mul r1, r0
ldr r0, [sp, #4]
add r4, r0, r1
mov r0, #0x4a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021EB5B8
add r6, r0, #0
ldr r0, [sp]
bl ov96_021E5F24
lsl r1, r0, #1
add r0, r0, r1
add r1, r7, r0
lsr r0, r1, #0x1f
add r0, r1, r0
lsl r0, r0, #0x17
lsr r5, r0, #0x18
ldr r0, [sp]
bl ov96_021E5F24
lsl r1, r0, #1
add r0, r0, r1
add r0, r7, r0
lsr r2, r0, #0x1f
lsl r1, r0, #0x1f
sub r1, r1, r2
mov r0, #0x1f
ror r1, r0
add r0, r2, r1
lsl r1, r0, #0x18
ldr r0, [sp, #8]
add r0, r0, r5
ldrb r2, [r0, #0x1c]
lsr r0, r1, #0x16
add r1, r2, #0
asr r1, r0
mov r0, #0xf
and r0, r1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
beq _021FB298
cmp r5, #0xc
bls _021FB29C
_021FB298:
bl GF_AssertFail
_021FB29C:
add r0, r4, #0
add r0, #0xe8
ldrb r0, [r0]
cmp r0, #0
beq _021FB2D2
add r0, r6, #0
bl Sprite_GetMatrixPtr
add r3, r0, #0
add r2, sp, #0x24
ldmia r3!, {r0, r1}
mov ip, r2
stmia r2!, {r0, r1}
ldr r0, [r3]
mov r1, ip
str r0, [r2]
mov r0, #0x4e
lsl r0, r0, #0xe
str r0, [sp, #0x28]
add r0, r6, #0
bl Sprite_SetMatrix
add r1, r5, #0
add r0, r6, #0
add r1, #0xb
bl Set2dSpriteAnimSeqNo
_021FB2D2:
mov r0, #0x52
lsl r0, r0, #2
ldrsh r0, [r4, r0]
cmp r5, r0
beq _021FB33C
mov r0, #0x52
lsl r0, r0, #2
strh r5, [r4, r0]
add r0, r4, #0
add r0, #0xe8
ldrb r0, [r0]
cmp r0, #0
bne _021FB33C
mov r1, #0xff
mov r0, #0x51
lsl r1, r1, #0x16
lsl r0, r0, #2
str r1, [r4, r0]
mov r1, #0x51
lsl r1, r1, #2
ldr r0, _021FB3F4 ; =0x45800000
ldr r1, [r4, r1]
bl _fmul
bl _ffix
mov r1, #0x51
str r0, [sp, #0x18]
lsl r1, r1, #2
ldr r0, _021FB3F4 ; =0x45800000
ldr r1, [r4, r1]
bl _fmul
bl _ffix
mov r1, #0x51
str r0, [sp, #0x1c]
lsl r1, r1, #2
ldr r0, _021FB3F4 ; =0x45800000
ldr r1, [r4, r1]
bl _fmul
bl _ffix
str r0, [sp, #0x20]
add r0, r6, #0
add r1, sp, #0x18
bl sub_020247F4
add r0, r6, #0
sub r1, r5, #1
bl Set2dSpriteAnimSeqNo
_021FB33C:
add r0, r7, #1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
cmp r7, #3
bhs _021FB348
b _021FB23A
_021FB348:
ldr r7, _021FB3F4 ; =0x45800000
mov r5, #0
_021FB34C:
mov r0, #0x6c
add r1, r5, #0
mul r1, r0
ldr r0, [sp, #4]
add r4, r0, r1
mov r0, #0x4a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021EB5B8
add r6, r0, #0
bl sub_020248B0
ldr r1, [r0]
mov r0, #1
lsl r0, r0, #0xc
cmp r1, r0
ble _021FB38E
mov r0, #0x51
lsl r0, r0, #2
ldr r0, [r4, r0]
bl _f2d
ldr r2, _021FB3F8 ; =0x9999999A
ldr r3, _021FB3FC ; =0x3FB99999
bl _dsub
bl _d2f
mov r1, #0x51
lsl r1, r1, #2
str r0, [r4, r1]
b _021FB398
_021FB38E:
mov r1, #0xfe
mov r0, #0x51
lsl r1, r1, #0x16
lsl r0, r0, #2
str r1, [r4, r0]
_021FB398:
mov r1, #0x51
lsl r1, r1, #2
ldr r1, [r4, r1]
add r0, r7, #0
bl _fmul
bl _ffix
mov r1, #0x51
str r0, [sp, #0xc]
lsl r1, r1, #2
ldr r1, [r4, r1]
add r0, r7, #0
bl _fmul
bl _ffix
mov r1, #0x51
str r0, [sp, #0x10]
lsl r1, r1, #2
ldr r1, [r4, r1]
add r0, r7, #0
bl _fmul
bl _ffix
str r0, [sp, #0x14]
add r0, r6, #0
add r1, sp, #0xc
bl sub_020247F4
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #3
blo _021FB34C
ldr r0, [sp, #4]
bl ov96_021FB994
add sp, #0x3c
pop {r4, r5, r6, r7, pc}
nop
_021FB3EC: .word 0x000003C7
_021FB3F0: .word 0x000003C6
_021FB3F4: .word 0x45800000
_021FB3F8: .word 0x9999999A
_021FB3FC: .word 0x3FB99999
thumb_func_end ov96_021FB0F4
thumb_func_start ov96_021FB400
ov96_021FB400: ; 0x021FB400
push {r4, r5, r6, r7, lr}
sub sp, #0x11c
bl ov96_021E5F54
str r0, [sp, #8]
add r0, #0x28
bl ov96_021E8A20
str r0, [sp, #0x14]
mov r0, #0
str r0, [sp, #0x10]
str r0, [sp, #0x18]
add r0, sp, #0x2c
str r0, [sp, #0x1c]
ldr r0, [sp, #0x10]
add r1, sp, #0x18
strh r0, [r1, #8]
strh r0, [r1, #0xa]
strh r0, [r1, #0xc]
strh r0, [r1, #0xe]
str r0, [sp, #0x28]
ldr r0, [sp, #8]
add r0, #0x50
str r0, [sp, #8]
ldr r0, [sp, #0x10]
str r0, [sp, #4]
_021FB434:
ldr r0, [sp, #8]
bl ov96_021E8A20
str r0, [sp]
mov r0, #0
str r0, [sp, #0xc]
_021FB440:
ldr r1, [sp, #0xc]
ldr r0, [sp, #4]
add r5, sp, #0x18
add r7, r1, r0
add r1, r7, #1
mov r0, #0x14
add r2, r1, #0
mul r2, r0
add r0, sp, #0x18
add r4, r0, r2
ldr r0, [sp]
ldrh r0, [r0]
strh r0, [r4, #8]
ldr r0, [sp]
ldrh r0, [r0, #0xa]
strh r0, [r4, #0xc]
ldr r0, [sp]
strh r7, [r4, #0xa]
ldrh r0, [r0, #0x10]
strh r0, [r4, #0xe]
mov r0, #0
str r0, [r4, #0x10]
add r6, r0, #0
str r0, [r4, #4]
cmp r7, #0
ble _021FB498
_021FB474:
ldrh r0, [r4, #0xe]
ldr r5, [r5, #4]
cmp r0, #0
beq _021FB486
add r0, r4, #0
add r1, r5, #0
bl ov96_021FB514
b _021FB48E
_021FB486:
add r0, r4, #0
add r1, r5, #0
bl ov96_021FB56C
_021FB48E:
cmp r0, #0
bne _021FB498
add r6, r6, #1
cmp r6, r7
blt _021FB474
_021FB498:
cmp r6, r7
bne _021FB4A0
str r4, [r5, #4]
str r5, [r4]
_021FB4A0:
ldr r0, [sp]
add r0, r0, #2
str r0, [sp]
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, #3
blt _021FB440
ldr r0, [sp, #8]
add r0, #0x28
str r0, [sp, #8]
ldr r0, [sp, #4]
add r0, r0, #3
str r0, [sp, #4]
ldr r0, [sp, #0x10]
add r0, r0, #1
str r0, [sp, #0x10]
cmp r0, #4
blt _021FB434
mov r7, #0
add r5, sp, #0x18
mov r4, #1
add r1, r7, #0
add r6, r7, #0
_021FB4D0:
ldr r0, [sp, #0x14]
add r0, r0, r1
add r1, r1, #1
strb r6, [r0, #0x1c]
cmp r1, #6
blt _021FB4D0
_021FB4DC:
ldr r5, [r5, #4]
cmp r5, #0
bne _021FB4E6
bl GF_AssertFail
_021FB4E6:
ldr r0, [r5, #0x10]
cmp r0, #0
bne _021FB4F6
add r0, r7, r4
lsl r0, r0, #0x18
lsr r7, r0, #0x18
mov r4, #1
b _021FB4FC
_021FB4F6:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
_021FB4FC:
ldrh r1, [r5, #0xa]
ldr r0, [sp, #0x14]
add r2, r7, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_021FB5C8
add r6, r6, #1
cmp r6, #0xc
blt _021FB4DC
add sp, #0x11c
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021FB400
thumb_func_start ov96_021FB514
ov96_021FB514: ; 0x021FB514
ldrh r2, [r1, #0xe]
cmp r2, #0
beq _021FB556
ldrh r3, [r0, #0xc]
ldrh r2, [r1, #0xc]
cmp r2, r3
bls _021FB532
ldr r2, [r1]
str r0, [r2, #4]
ldr r2, [r1]
str r2, [r0]
str r1, [r0, #4]
str r0, [r1]
mov r0, #1
bx lr
_021FB532:
cmp r2, r3
bne _021FB566
ldrh r3, [r1, #0xa]
ldrh r2, [r0, #0xa]
cmp r3, r2
bls _021FB550
ldr r2, [r1]
str r0, [r2, #4]
ldr r2, [r1]
str r2, [r0]
str r1, [r0, #4]
str r0, [r1]
mov r0, #1
str r0, [r1, #0x10]
bx lr
_021FB550:
mov r1, #1
str r1, [r0, #0x10]
b _021FB566
_021FB556:
ldr r2, [r1]
str r0, [r2, #4]
ldr r2, [r1]
str r2, [r0]
str r1, [r0, #4]
str r0, [r1]
mov r0, #1
bx lr
_021FB566:
mov r0, #0
bx lr
.balign 4, 0
thumb_func_end ov96_021FB514
thumb_func_start ov96_021FB56C
ov96_021FB56C: ; 0x021FB56C
ldrh r3, [r0, #8]
ldrh r2, [r1, #8]
cmp r2, r3
bhs _021FB584
ldr r2, [r1]
str r0, [r2, #4]
ldr r2, [r1]
str r2, [r0]
str r1, [r0, #4]
str r0, [r1]
mov r0, #1
bx lr
_021FB584:
cmp r2, r3
bne _021FB5C2
ldrh r3, [r0, #0xc]
ldrh r2, [r1, #0xc]
cmp r2, r3
bls _021FB5A0
ldr r2, [r1]
str r0, [r2, #4]
ldr r2, [r1]
str r2, [r0]
str r1, [r0, #4]
str r0, [r1]
mov r0, #1
bx lr
_021FB5A0:
cmp r2, r3
bne _021FB5C2
ldrh r3, [r1, #0xa]
ldrh r2, [r0, #0xa]
cmp r3, r2
bls _021FB5BE
ldr r2, [r1]
str r0, [r2, #4]
ldr r2, [r1]
str r2, [r0]
str r1, [r0, #4]
str r0, [r1]
mov r0, #1
str r0, [r1, #0x10]
bx lr
_021FB5BE:
mov r1, #1
str r1, [r0, #0x10]
_021FB5C2:
mov r0, #0
bx lr
.balign 4, 0
thumb_func_end ov96_021FB56C
thumb_func_start ov96_021FB5C8
ov96_021FB5C8: ; 0x021FB5C8
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r5, r0, #0
add r6, r2, #0
cmp r4, #0xc
blo _021FB5D8
bl GF_AssertFail
_021FB5D8:
cmp r6, #0
beq _021FB5E0
cmp r6, #0xc
bls _021FB5E4
_021FB5E0:
bl GF_AssertFail
_021FB5E4:
lsr r7, r4, #0x1f
lsl r3, r4, #0x1f
sub r3, r3, r7
mov r2, #0x1f
ror r3, r2
add r2, r7, r3
lsl r2, r2, #0x18
lsl r0, r4, #0x17
lsr r2, r2, #0x16
add r3, r6, #0
lsl r3, r2
lsl r2, r3, #0x18
add r5, #0x1c
lsr r1, r0, #0x18
ldrb r0, [r5, r1]
lsr r2, r2, #0x18
orr r0, r2
strb r0, [r5, r1]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021FB5C8
thumb_func_start ov96_021FB60C
ov96_021FB60C: ; 0x021FB60C
push {r3, r4}
mov r4, #0
mov r1, #0x42
add r3, r4, #0
lsl r1, r1, #2
_021FB616:
ldr r2, [r0, r1]
cmp r2, #4
bne _021FB624
add r3, r3, #1
add r0, #0x6c
cmp r3, #3
blt _021FB616
_021FB624:
cmp r3, #3
bne _021FB62A
mov r4, #1
_021FB62A:
add r0, r4, #0
pop {r3, r4}
bx lr
thumb_func_end ov96_021FB60C
thumb_func_start ov96_021FB630
ov96_021FB630: ; 0x021FB630
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
str r0, [sp, #8]
bl ov96_021E5F24
cmp r0, #0
bne _021FB6B0
ldr r0, [sp, #8]
bl ov96_021E5F54
add r4, r0, #0
ldr r0, [sp, #8]
bl ov96_021E5DC4
str r0, [sp, #0x18]
ldr r0, [sp, #8]
bl ov96_021E5D34
str r0, [sp, #0x14]
str r0, [sp, #0x10]
cmp r0, #4
bge _021FB6B0
mov r1, #0x28
add r4, #0x50
mul r1, r0
add r0, r4, r1
str r0, [sp, #0xc]
_021FB666:
ldr r0, [sp, #0xc]
bl ov96_021E8A20
add r7, r0, #0
ldr r1, [sp, #0x10]
ldr r0, [sp, #0x14]
mov r4, #0
sub r1, r1, r0
lsl r0, r1, #1
add r5, r1, r0
ldr r0, [sp, #0x10]
lsl r0, r0, #0x18
lsr r6, r0, #0x18
_021FB680:
lsl r0, r4, #0x18
lsr r0, r0, #0x18
str r0, [sp]
lsl r0, r5, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
ldr r0, [sp, #8]
ldr r1, [sp, #0x18]
add r2, r7, #0
add r3, r6, #0
bl ov96_021FBA3C
add r4, r4, #1
add r5, r5, #1
cmp r4, #3
blt _021FB680
ldr r0, [sp, #0xc]
add r0, #0x28
str r0, [sp, #0xc]
ldr r0, [sp, #0x10]
add r0, r0, #1
str r0, [sp, #0x10]
cmp r0, #4
blt _021FB666
_021FB6B0:
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021FB630
thumb_func_start ov96_021FB6B4
ov96_021FB6B4: ; 0x021FB6B4
mov r3, #0x15
lsl r3, r3, #4
add r1, r1, r3
add r0, #0xd8
ldr r3, _021FB6C4 ; =ov96_021FC0FC
ldr r0, [r0]
bx r3
nop
_021FB6C4: .word ov96_021FC0FC
thumb_func_end ov96_021FB6B4
thumb_func_start ov96_021FB6C8
ov96_021FB6C8: ; 0x021FB6C8
push {r3, r4, r5, lr}
sub sp, #0x18
ldr r3, _021FB780 ; =ov96_0221C428
add r5, r0, #0
add r4, r1, #0
ldmia r3!, {r0, r1}
add r2, sp, #0xc
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r1, [r4, #0x28]
cmp r1, #1
beq _021FB77A
ldrb r0, [r4, #8]
cmp r0, #0
bne _021FB77A
cmp r1, #2
bne _021FB6F0
mov r0, #0x18
b _021FB726
_021FB6F0:
ldrb r0, [r4, #9]
cmp r0, #4
bhi _021FB720
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021FB702: ; jump table
.short _021FB70C - _021FB702 - 2 ; case 0
.short _021FB710 - _021FB702 - 2 ; case 1
.short _021FB714 - _021FB702 - 2 ; case 2
.short _021FB718 - _021FB702 - 2 ; case 3
.short _021FB71C - _021FB702 - 2 ; case 4
_021FB70C:
mov r0, #8
b _021FB726
_021FB710:
mov r0, #6
b _021FB726
_021FB714:
mov r0, #6
b _021FB726
_021FB718:
mov r0, #6
b _021FB726
_021FB71C:
mov r0, #4
b _021FB726
_021FB720:
bl GF_AssertFail
mov r0, #8
_021FB726:
add r1, r4, #0
add r1, #0x6a
ldrh r1, [r1]
add r2, r1, #1
add r1, r4, #0
add r1, #0x6a
strh r2, [r1]
add r1, r4, #0
add r1, #0x6a
ldrh r1, [r1]
cmp r1, r0
blt _021FB77A
add r0, sp, #0
mov r1, #0
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
add r0, r4, #0
add r0, #0x6a
strh r1, [r0]
bl LCRandom
mov r1, #7
bl _s32_div_f
ldrb r0, [r4, #0x18]
add r5, #0xdc
lsl r2, r0, #2
add r0, sp, #0xc
ldr r2, [r0, r2]
sub r0, r1, #3
add r0, r2, r0
lsl r0, r0, #0xc
str r0, [sp]
mov r0, #0x62
lsl r0, r0, #0xe
str r0, [sp, #4]
ldrb r1, [r4, #0x18]
ldr r0, [r5]
add r2, sp, #0
bl ov96_021FC698
_021FB77A:
add sp, #0x18
pop {r3, r4, r5, pc}
nop
_021FB780: .word ov96_0221C428
thumb_func_end ov96_021FB6C8
thumb_func_start ov96_021FB784
ov96_021FB784: ; 0x021FB784
push {r4, r5, r6}
sub sp, #0xc
ldr r6, _021FB7C4 ; =ov96_0221C41C
add r4, r1, #0
ldmia r6!, {r0, r1}
add r5, sp, #0
add r3, r5, #0
stmia r5!, {r0, r1}
ldr r0, [r6]
str r0, [r5]
mov r0, #0
_021FB79A:
lsl r1, r0, #2
ldr r1, [r3, r1]
sub r1, #0x18
cmp r1, r4
bge _021FB7B2
add r1, #0x30
cmp r4, r1
bge _021FB7B2
cmp r2, #0x58
ble _021FB7B2
cmp r2, #0xa8
blt _021FB7BE
_021FB7B2:
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #3
blo _021FB79A
mov r0, #3
_021FB7BE:
add sp, #0xc
pop {r4, r5, r6}
bx lr
.balign 4, 0
_021FB7C4: .word ov96_0221C41C
thumb_func_end ov96_021FB784
thumb_func_start ov96_021FB7C8
ov96_021FB7C8: ; 0x021FB7C8
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
add r1, r4, #0
ldr r0, [r4, #4]
ldr r2, _021FB804 ; =ov96_0221C3FC
add r1, #8
bl AddWindow
mov r2, #0
str r2, [sp]
ldr r0, [r4, #4]
mov r1, #3
mov r3, #1
bl BG_FillCharDataRange
mov r1, #0x1e
ldr r2, [r4]
mov r0, #0
lsl r1, r1, #4
bl LoadFontPal0
add r4, #8
add r0, r4, #0
mov r1, #0
bl FillWindowPixelBuffer
add sp, #4
pop {r3, r4, pc}
nop
_021FB804: .word ov96_0221C3FC
thumb_func_end ov96_021FB7C8
thumb_func_start ov96_021FB808
ov96_021FB808: ; 0x021FB808
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
ldr r2, _021FB8AC ; =0x00000135
add r6, r1, #0
ldr r3, [r5]
mov r0, #1
mov r1, #0x1b
bl NewMsgDataFromNarc
add r7, r0, #0
ldr r0, [r5]
bl MessageFormat_New
add r4, r0, #0
add r0, r6, #0
mov r1, #0x1e
bl _s32_div_f
mov r1, #0
add r2, r0, #0
str r1, [sp]
mov r0, #1
str r0, [sp, #4]
add r0, r4, #0
mov r3, #3
bl BufferIntegerAsString
add r0, r6, #0
mov r1, #0x1e
bl _s32_div_f
mov r0, #0xa
mul r0, r1
mov r1, #0x1e
bl _s32_div_f
add r2, r0, #0
mov r0, #0
str r0, [sp]
mov r1, #1
str r1, [sp, #4]
add r0, r4, #0
add r3, r1, #0
bl BufferIntegerAsString
ldr r3, [r5]
add r0, r4, #0
add r1, r7, #0
mov r2, #0x9c
bl ReadMsgData_ExpandPlaceholders
add r6, r0, #0
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021FB8B0 ; =0x000F0E00
mov r1, #4
str r0, [sp, #8]
add r0, r5, #0
add r0, #8
add r2, r6, #0
str r3, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r6, #0
bl String_Delete
add r0, r4, #0
bl MessageFormat_Delete
add r0, r7, #0
bl DestroyMsgData
add r5, #8
add r0, r5, #0
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
_021FB8AC: .word 0x00000135
_021FB8B0: .word 0x000F0E00
thumb_func_end ov96_021FB808
thumb_func_start ov96_021FB8B4
ov96_021FB8B4: ; 0x021FB8B4
push {r4, lr}
add r4, r0, #0
cmp r1, #0
bge _021FB8BE
mov r1, #0
_021FB8BE:
add r0, r1, #0
bl _dflt
add r3, r1, #0
mov r1, #1
add r2, r0, #0
mov r0, #0
lsl r1, r1, #0x1e
bl _dmul
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FB8F8 ; =0x40590000
mov r0, #0
bl _dadd
ldr r3, _021FB8F8 ; =0x40590000
mov r2, #0
bl _ddiv
bl _d2f
add r1, r0, #0
ldr r0, [r4]
add r2, r1, #0
bl ov96_021EB10C
pop {r4, pc}
nop
_021FB8F8: .word 0x40590000
thumb_func_end ov96_021FB8B4
thumb_func_start ov96_021FB8FC
ov96_021FB8FC: ; 0x021FB8FC
push {r3, r4, r5, lr}
add r4, r0, #0
cmp r1, #0
beq _021FB934
ldrb r0, [r4, #0xc]
ldrh r1, [r4, #0x38]
sub r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
sub r0, r1, r0
bl _dflt
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FB988 ; =0x40240000
mov r0, #0
bl _dmul
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FB98C ; =0x40590000
mov r0, #0
bl _dsub
bl _d2f
add r5, r0, #0
b _021FB968
_021FB934:
ldrb r0, [r4, #0xc]
sub r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl _dfltu
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FB988 ; =0x40240000
mov r0, #0
bl _dmul
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FB98C ; =0x40590000
mov r0, #0
bl _dsub
bl _d2f
mov r1, #0
add r5, r0, #0
bl _fls
bhs _021FB968
ldr r5, _021FB990 ; =0x41200000
_021FB968:
add r0, r5, #0
bl _f2d
ldr r3, _021FB98C ; =0x40590000
mov r2, #0
bl _ddiv
bl _d2f
add r1, r0, #0
ldr r0, [r4]
add r2, r1, #0
bl ov96_021EB10C
pop {r3, r4, r5, pc}
nop
_021FB988: .word 0x40240000
_021FB98C: .word 0x40590000
_021FB990: .word 0x41200000
thumb_func_end ov96_021FB8FC
thumb_func_start ov96_021FB994
ov96_021FB994: ; 0x021FB994
push {r4, r5, r6, lr}
add r5, r0, #0
mov r0, #0x8b
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #0x1e
lsl r0, r0, #0x10
lsr r6, r0, #0x10
add r0, r6, #0
bl _s32_div_f
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r6, #0
mov r1, #0x1e
bl _s32_div_f
lsl r0, r1, #0x18
lsr r1, r0, #0x18
mov r0, #0x64
mul r0, r1
mov r1, #0x1e
bl _s32_div_f
lsl r0, r0, #0x18
lsr r6, r0, #0x18
add r0, r4, #0
mov r1, #0x3c
bl _s32_div_f
add r1, r0, #0
mov r0, #0xeb
lsl r0, r0, #2
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r5, r0]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0x3c
bl _s32_div_f
lsl r0, r1, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
add r1, r0, #0
mov r0, #0xed
lsl r0, r0, #2
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r5, r0]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
mov r0, #0xee
lsl r0, r0, #2
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r5, r0]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
add r0, r6, #0
mov r1, #0xa
bl _s32_div_f
add r1, r0, #0
mov r0, #0xf
lsl r0, r0, #6
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r5, r0]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
pop {r4, r5, r6, pc}
thumb_func_end ov96_021FB994
thumb_func_start ov96_021FBA3C
ov96_021FBA3C: ; 0x021FBA3C
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r6, r1, #0
str r3, [sp, #8]
add r7, r0, #0
mov r0, #0x8e
lsl r0, r0, #2
add r1, sp, #0x18
str r2, [sp, #4]
ldrb r2, [r1, #0x14]
mov r1, #0x28
add r0, r6, r0
mul r1, r2
add r4, r0, r1
ldr r0, [r4, #0x18]
ldr r5, [sp, #0x28]
cmp r0, #1
beq _021FBA8C
ldrb r0, [r4]
cmp r0, #2
beq _021FBA8C
ldrb r0, [r4, #2]
cmp r0, #0
bne _021FBA8C
ldr r0, [r4, #8]
ldr r1, [r4, #0x10]
bl _fls
bhs _021FBA8C
ldr r0, [r4, #8]
ldr r1, [r4, #0x14]
bl _fadd
str r0, [r4, #8]
ldr r1, [r4, #0x10]
bl _fgr
bls _021FBA8C
ldr r0, [r4, #0x10]
str r0, [r4, #8]
_021FBA8C:
ldrb r0, [r4]
cmp r0, #2
bne _021FBAA4
ldrb r0, [r4, #1]
sub r0, r0, #1
strb r0, [r4, #1]
ldrb r0, [r4, #1]
cmp r0, #0
bne _021FBB50
mov r0, #0
strb r0, [r4]
b _021FBB50
_021FBAA4:
add r0, r6, #0
add r0, #0xd8
ldr r0, [r0]
ldr r2, [r4, #0x20]
add r1, r5, #0
bl ov96_021FC164
mov r1, #0
mvn r1, r1
str r0, [sp, #0xc]
cmp r0, r1
beq _021FBB50
ldr r1, [r4, #0x24]
cmp r1, r0
beq _021FBB50
bl LCRandom
mov r1, #0x64
bl _s32_div_f
lsl r0, r1, #0x18
lsr r1, r0, #0x18
ldrb r0, [r4, #3]
cmp r1, r0
bhs _021FBB14
ldrb r0, [r4, #2]
cmp r0, #4
bhs _021FBAF2
add r0, r0, #1
strb r0, [r4, #2]
ldrb r1, [r4, #2]
ldr r0, [r4, #0x10]
sub r1, r1, #1
lsl r2, r1, #2
ldr r1, _021FBBAC ; =ov96_0221C444
ldr r1, [r1, r2]
bl _fadd
str r0, [r4, #8]
_021FBAF2:
mov r0, #1
str r0, [sp]
ldr r1, [sp, #8]
add r0, r7, #0
add r2, r5, #0
mov r3, #6
bl ov96_021E8228
mov r0, #1
str r0, [sp]
ldr r1, [sp, #8]
add r0, r7, #0
add r2, r5, #0
mov r3, #2
bl ov96_021E8228
b _021FBB4C
_021FBB14:
ldrb r0, [r4, #4]
cmp r1, r0
bhs _021FBB3C
mov r0, #2
strb r0, [r4]
mov r0, #0x1e
strb r0, [r4, #1]
mov r0, #0
strb r0, [r4, #2]
mov r0, #0x3f
lsl r0, r0, #0x18
str r0, [r4, #8]
mov r3, #1
str r3, [sp]
ldr r1, [sp, #8]
add r0, r7, #0
add r2, r5, #0
bl ov96_021E8228
b _021FBB4C
_021FBB3C:
mov r0, #1
str r0, [sp]
ldr r1, [sp, #8]
add r0, r7, #0
add r2, r5, #0
mov r3, #2
bl ov96_021E8228
_021FBB4C:
ldr r0, [sp, #0xc]
str r0, [r4, #0x24]
_021FBB50:
ldr r0, [r4, #8]
ldr r1, [r4, #0xc]
bl _fadd
str r0, [sp, #0x10]
bl _ffix
add r7, r0, #0
bl _fflt
add r1, r0, #0
ldr r0, [sp, #0x10]
bl _fsub
str r0, [r4, #0xc]
ldr r0, [r4, #0x20]
lsl r1, r5, #1
add r2, r0, r7
ldr r0, [sp, #4]
str r2, [r4, #0x20]
strh r2, [r0, r1]
ldr r0, [r4, #0x18]
cmp r0, #0
bne _021FBBA6
mov r0, #1
ldr r2, [r4, #0x20]
lsl r0, r0, #0xc
cmp r2, r0
blt _021FBBA6
ldr r2, [sp, #4]
mov r0, #1
add r3, r2, r1
mov r1, #0x23
strh r0, [r3, #0x10]
lsl r1, r1, #4
ldr r2, [r6, r1]
strh r2, [r3, #0xa]
ldr r1, [r6, r1]
str r1, [r4, #0x1c]
str r0, [r4, #0x18]
ldr r0, _021FBBB0 ; =0x000008A1
bl PlaySE
_021FBBA6:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
_021FBBAC: .word ov96_0221C444
_021FBBB0: .word 0x000008A1
thumb_func_end ov96_021FBA3C
thumb_func_start ov96_021FBBB4
ov96_021FBBB4: ; 0x021FBBB4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r0, [sp]
add r6, r1, #0
bl ov96_021E5DC4
str r0, [sp, #0x10]
ldr r0, [sp]
bl ov96_021E5D34
str r0, [sp, #4]
cmp r0, #4
bhs _021FBCAC
str r0, [sp, #0xc]
_021FBBD0:
ldr r1, [sp, #4]
ldr r0, [sp, #0xc]
mov r5, #0
sub r1, r1, r0
lsl r0, r1, #1
add r0, r1, r0
str r0, [sp, #8]
mov r1, #0x8e
ldr r0, [sp, #0x10]
lsl r1, r1, #2
add r0, r0, r1
str r0, [sp, #0x14]
_021FBBE8:
ldr r0, [sp, #8]
add r0, r5, r0
lsl r0, r0, #0x18
lsr r1, r0, #0x18
add r2, r1, #0
mov r0, #0x28
mul r2, r0
ldr r0, [sp, #0x14]
ldr r1, [sp, #4]
add r4, r0, r2
ldr r0, [sp]
add r2, r5, #0
bl ov96_021E60D8
add r7, r0, #0
ldrb r0, [r7, #1]
lsl r0, r0, #2
add r0, r6, r0
ldr r0, [r0, #0x3c]
bl _fflt
ldr r1, _021FBCB0 ; =0x41200000
bl _fdiv
str r0, [r4, #0x10]
ldrb r0, [r7, #4]
lsl r0, r0, #2
add r0, r6, r0
ldr r0, [r0, #0x28]
bl _fflt
ldr r1, _021FBCB4 ; =0x42C80000
bl _fdiv
str r0, [r4, #0x14]
bl LCRandom
mov r1, #6
bl _s32_div_f
cmp r1, #5
bhi _021FBC90
add r0, r1, r1
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021FBC48: ; jump table
.short _021FBC54 - _021FBC48 - 2 ; case 0
.short _021FBC5E - _021FBC48 - 2 ; case 1
.short _021FBC68 - _021FBC48 - 2 ; case 2
.short _021FBC72 - _021FBC48 - 2 ; case 3
.short _021FBC7C - _021FBC48 - 2 ; case 4
.short _021FBC86 - _021FBC48 - 2 ; case 5
_021FBC54:
mov r0, #0xa
strb r0, [r4, #3]
mov r0, #0x32
strb r0, [r4, #4]
b _021FBC94
_021FBC5E:
mov r0, #0x14
strb r0, [r4, #3]
mov r0, #0x32
strb r0, [r4, #4]
b _021FBC94
_021FBC68:
mov r0, #0x1e
strb r0, [r4, #3]
mov r0, #0x3c
strb r0, [r4, #4]
b _021FBC94
_021FBC72:
mov r0, #0x14
strb r0, [r4, #3]
mov r0, #0x46
strb r0, [r4, #4]
b _021FBC94
_021FBC7C:
mov r0, #0x1e
strb r0, [r4, #3]
mov r0, #0x46
strb r0, [r4, #4]
b _021FBC94
_021FBC86:
mov r0, #0x28
strb r0, [r4, #3]
mov r0, #0x50
strb r0, [r4, #4]
b _021FBC94
_021FBC90:
bl GF_AssertFail
_021FBC94:
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #3
blo _021FBBE8
ldr r0, [sp, #4]
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
cmp r0, #4
blo _021FBBD0
_021FBCAC:
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021FBCB0: .word 0x41200000
_021FBCB4: .word 0x42C80000
thumb_func_end ov96_021FBBB4
thumb_func_start ov96_021FBCB8
ov96_021FBCB8: ; 0x021FBCB8
push {r3, r4, r5, r6, lr}
sub sp, #4
add r4, r1, #0
add r5, r0, #0
ldrb r0, [r4, #9]
cmp r0, #4
bhs _021FBD82
ldr r0, [r4, #0x4c]
bl ov96_021EB5B8
add r6, r0, #0
ldrb r0, [r4, #9]
add r0, r0, #1
strb r0, [r4, #9]
ldrb r0, [r4, #9]
cmp r0, #1
bne _021FBD06
ldrb r2, [r4, #0x18]
ldr r1, _021FBDA0 ; =ov96_0221DC2C
ldr r0, _021FBDA4 ; =0x000008A6
ldrb r1, [r1, r2]
bl sub_0200606C
ldrb r2, [r4, #0x18]
ldr r0, _021FBDA0 ; =ov96_0221DC2C
ldr r1, _021FBDA8 ; =ov96_0221DC28
ldrb r0, [r0, r2]
ldrsb r1, [r1, r2]
bl sub_020061D0
ldr r0, [r4, #0x24]
mov r1, #5
bl ov96_021EAC0C
add r0, r6, #0
mov r1, #1
bl Set2dSpriteAnimSeqNo
b _021FBD5A
_021FBD06:
cmp r0, #4
bne _021FBD36
ldrb r2, [r4, #0x18]
ldr r1, _021FBDA0 ; =ov96_0221DC2C
ldr r0, _021FBDAC ; =0x000008A9
ldrb r1, [r1, r2]
bl sub_0200606C
ldrb r2, [r4, #0x18]
ldr r0, _021FBDA0 ; =ov96_0221DC2C
ldr r1, _021FBDA8 ; =ov96_0221DC28
ldrb r0, [r0, r2]
ldrsb r1, [r1, r2]
bl sub_020061D0
ldr r0, [r4, #0x24]
mov r1, #6
bl ov96_021EAC0C
add r0, r6, #0
mov r1, #2
bl Set2dSpriteAnimSeqNo
b _021FBD5A
_021FBD36:
add r0, #0xfe
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #1
bhi _021FBD5A
ldrb r2, [r4, #0x18]
ldr r1, _021FBDA0 ; =ov96_0221DC2C
ldr r0, _021FBDB0 ; =0x000008A7
ldrb r1, [r1, r2]
bl sub_0200606C
ldrb r2, [r4, #0x18]
ldr r0, _021FBDA0 ; =ov96_0221DC2C
ldr r1, _021FBDA8 ; =ov96_0221DC28
ldrb r0, [r0, r2]
ldrsb r1, [r1, r2]
bl sub_020061D0
_021FBD5A:
ldr r0, [r4, #0xc]
bl _f2d
ldr r3, _021FBDB4 ; =0x40240000
mov r2, #0
bl _dls
bhs _021FBD7E
ldrb r1, [r4, #9]
ldr r0, [r4, #0x50]
sub r1, r1, #1
lsl r2, r1, #2
ldr r1, _021FBDB8 ; =ov96_0221C444
ldr r1, [r1, r2]
bl _fadd
str r0, [r4, #0xc]
b _021FBD82
_021FBD7E:
bl GF_AssertFail
_021FBD82:
add r0, r5, #0
bl ov96_021E5F24
add r1, r0, #0
mov r0, #1
str r0, [sp]
lsl r1, r1, #0x18
ldrb r2, [r4, #0x18]
add r0, r5, #0
lsr r1, r1, #0x18
mov r3, #6
bl ov96_021E8228
add sp, #4
pop {r3, r4, r5, r6, pc}
.balign 4, 0
_021FBDA0: .word ov96_0221DC2C
_021FBDA4: .word 0x000008A6
_021FBDA8: .word ov96_0221DC28
_021FBDAC: .word 0x000008A9
_021FBDB0: .word 0x000008A7
_021FBDB4: .word 0x40240000
_021FBDB8: .word ov96_0221C444
thumb_func_end ov96_021FBCB8
thumb_func_start ov96_021FBDBC
ov96_021FBDBC: ; 0x021FBDBC
mov r1, #0x23
lsl r1, r1, #4
ldr r2, [r0, r1]
add r3, r0, #0
add r2, r2, #1
str r2, [r0, r1]
mov r2, #0
_021FBDCA:
add r1, r3, #0
add r1, #0xe8
ldrb r1, [r1]
cmp r1, #0
bne _021FBDE0
mov r1, #0x8b
lsl r1, r1, #2
ldr r2, [r0, r1]
add r2, r2, #1
str r2, [r0, r1]
bx lr
_021FBDE0:
add r2, r2, #1
add r3, #0x6c
cmp r2, #3
blt _021FBDCA
bx lr
.balign 4, 0
thumb_func_end ov96_021FBDBC
thumb_func_start ov96_021FBDEC
ov96_021FBDEC: ; 0x021FBDEC
push {r3, r4, r5, lr}
add r5, r0, #0
mov r1, #0x1e
bl _s32_div_f
add r4, r0, #0
add r0, r5, #0
mov r1, #0x1e
bl _s32_div_f
mov r0, #0xa
mul r0, r1
mov r1, #0x1e
bl _s32_div_f
mov r1, #0x1e
mul r1, r0
add r0, r1, #0
mov r1, #0xa
bl _s32_div_f
mov r1, #0x1e
mul r1, r4
add r0, r1, r0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021FBDEC
thumb_func_start ov96_021FBE20
ov96_021FBE20: ; 0x021FBE20
push {r3, r4, r5, lr}
lsl r5, r0, #4
add r0, r1, #0
add r1, r5, #0
bl AllocFromHeap
add r4, r0, #0
mov r0, #0
add r1, r4, #0
add r2, r5, #0
bl MIi_CpuClearFast
add r0, r4, #0
pop {r3, r4, r5, pc}
thumb_func_end ov96_021FBE20
thumb_func_start ov96_021FBE3C
ov96_021FBE3C: ; 0x021FBE3C
ldr r3, _021FBE40 ; =FreeToHeap
bx r3
.balign 4, 0
_021FBE40: .word FreeToHeap
thumb_func_end ov96_021FBE3C
thumb_func_start ov96_021FBE44
ov96_021FBE44: ; 0x021FBE44
lsl r1, r1, #4
add r0, r0, r1
bx lr
.balign 4, 0
thumb_func_end ov96_021FBE44
thumb_func_start ov96_021FBE4C
ov96_021FBE4C: ; 0x021FBE4C
str r1, [r0, #4]
str r2, [r0, #8]
bx lr
.balign 4, 0
thumb_func_end ov96_021FBE4C
thumb_func_start ov96_021FBE54
ov96_021FBE54: ; 0x021FBE54
push {r4, lr}
add r4, r0, #0
cmp r1, #0
beq _021FBE82
mov r1, #1
str r1, [r4]
str r1, [r4, #0xc]
ldr r0, [r4, #4]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r4, #8]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
ldr r0, [r4, #8]
bl ov96_021EB5B8
mov r1, #0
bl Set2dSpriteAnimActiveFlag
pop {r4, pc}
_021FBE82:
mov r1, #0
str r1, [r4]
str r1, [r4, #0xc]
ldr r0, [r4, #4]
add r2, r1, #0
bl ov96_021EB52C
mov r1, #0
ldr r0, [r4, #8]
add r2, r1, #0
bl ov96_021EB52C
pop {r4, pc}
thumb_func_end ov96_021FBE54
thumb_func_start ov96_021FBE9C
ov96_021FBE9C: ; 0x021FBE9C
ldr r0, [r0]
bx lr
thumb_func_end ov96_021FBE9C
thumb_func_start ov96_021FBEA0
ov96_021FBEA0: ; 0x021FBEA0
ldr r0, [r0, #0xc]
bx lr
thumb_func_end ov96_021FBEA0
thumb_func_start ov96_021FBEA4
ov96_021FBEA4: ; 0x021FBEA4
push {r3, r4, r5, lr}
add r4, r0, #0
mov r0, #0
str r0, [r4, #0xc]
ldr r0, [r4, #8]
bl ov96_021EB5B8
add r5, r0, #0
ldr r0, [r4, #4]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
mov r1, #1
ldr r0, [r4, #8]
add r2, r1, #0
bl ov96_021EB52C
add r0, r5, #0
mov r1, #1
bl Set2dSpriteAnimActiveFlag
add r0, r5, #0
mov r1, #1
bl Set2dSpriteAnimSeqNo
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_021FBEA4
thumb_func_start ov96_021FBEDC
ov96_021FBEDC: ; 0x021FBEDC
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #4]
add r4, r1, #0
bl ov96_021EB5B8
add r1, r4, #0
bl Sprite_SetMatrix
ldr r0, [r5, #8]
bl ov96_021EB5B8
add r1, r4, #0
bl Sprite_SetMatrix
pop {r3, r4, r5, pc}
thumb_func_end ov96_021FBEDC
thumb_func_start ov96_021FBEFC
ov96_021FBEFC: ; 0x021FBEFC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
ldr r0, [r5]
add r4, r1, #0
cmp r0, #0
beq _021FBF58
ldr r0, [r5, #4]
bl ov96_021EB5B8
add r6, r0, #0
ldr r0, [r5, #8]
bl ov96_021EB5B8
str r0, [sp]
add r0, r6, #0
bl Sprite_GetMatrixPtr
add r3, r0, #0
add r2, sp, #4
ldmia r3!, {r0, r1}
add r7, r2, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r1, [sp, #8]
lsl r0, r4, #0xc
add r0, r1, r0
str r0, [sp, #8]
add r0, r6, #0
add r1, r7, #0
bl Sprite_SetMatrix
ldr r0, [sp]
add r1, r7, #0
bl Sprite_SetMatrix
mov r0, #0x82
ldr r1, [sp, #8]
lsl r0, r0, #0xe
cmp r1, r0
blt _021FBF58
add r0, r5, #0
mov r1, #0
bl ov96_021FBE54
_021FBF58:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021FBEFC
thumb_func_start ov96_021FBF5C
ov96_021FBF5C: ; 0x021FBF5C
push {r4, lr}
ldr r0, [r0, #4]
add r4, r1, #0
bl ov96_021EB5B8
bl Sprite_GetMatrixPtr
mov r1, #0x40
strh r1, [r4, #4]
mov r1, #0x10
strh r1, [r4, #6]
ldr r2, [r0]
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
asr r1, r1, #0xc
sub r1, #0x20
strh r1, [r4]
ldr r1, [r0, #4]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
sub r0, #0x10
strh r0, [r4, #2]
pop {r4, pc}
thumb_func_end ov96_021FBF5C
thumb_func_start ov96_021FBF90
ov96_021FBF90: ; 0x021FBF90
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r1, #0
add r6, r0, #0
lsl r4, r5, #3
add r1, r6, r4
ldr r1, [r1, #4]
ldr r0, [r6, r4]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
str r2, [sp]
bl ov96_021FBE44
add r7, r0, #0
bl ov96_021FBE9C
cmp r0, #0
beq _021FBFBE
bl GF_AssertFail
add sp, #0x10
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021FBFBE:
add r0, r6, #4
ldr r1, [r0, r4]
add r1, r1, #1
lsr r3, r1, #0x1f
lsl r2, r1, #0x1e
sub r2, r2, r3
mov r1, #0x1e
ror r2, r1
add r1, r3, r2
ldr r3, _021FC024 ; =ov96_0221C5B8
str r1, [r0, r4]
ldmia r3!, {r0, r1}
add r2, sp, #4
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r0, [sp]
ldr r1, [sp, #8]
lsl r0, r0, #0xc
add r0, r1, r0
str r0, [sp, #8]
cmp r5, #0
beq _021FBFF6
cmp r5, #1
beq _021FBFFE
cmp r5, #2
beq _021FC006
b _021FC00C
_021FBFF6:
mov r0, #3
lsl r0, r0, #0x10
str r0, [sp, #4]
b _021FC00C
_021FBFFE:
mov r0, #2
lsl r0, r0, #0x12
str r0, [sp, #4]
b _021FC00C
_021FC006:
mov r0, #0xd
lsl r0, r0, #0x10
str r0, [sp, #4]
_021FC00C:
add r0, r7, #0
add r1, sp, #4
bl ov96_021FBEDC
add r0, r7, #0
mov r1, #1
bl ov96_021FBE54
add r0, r7, #0
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
_021FC024: .word ov96_0221C5B8
thumb_func_end ov96_021FBF90
thumb_func_start ov96_021FC028
ov96_021FC028: ; 0x021FC028
push {r3, r4, r5, r6, r7, lr}
ldr r1, _021FC058 ; =0x00000C24
add r6, r0, #0
bl AllocFromHeap
ldr r2, _021FC058 ; =0x00000C24
mov r1, #0
str r0, [sp]
bl MI_CpuFill8
ldr r5, [sp]
mov r4, #0
mov r7, #4
_021FC042:
add r0, r7, #0
add r1, r6, #0
bl ov96_021FBE20
str r0, [r5]
add r4, r4, #1
add r5, #8
cmp r4, #3
blt _021FC042
ldr r0, [sp]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021FC058: .word 0x00000C24
thumb_func_end ov96_021FC028
thumb_func_start ov96_021FC05C
ov96_021FC05C: ; 0x021FC05C
push {r4, r5, r6, lr}
add r6, r0, #0
mov r4, #0
add r5, r6, #0
_021FC064:
ldr r0, [r5]
bl ov96_021FBE3C
add r4, r4, #1
add r5, #8
cmp r4, #3
blt _021FC064
add r0, r6, #0
bl FreeToHeap
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021FC05C
thumb_func_start ov96_021FC07C
ov96_021FC07C: ; 0x021FC07C
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
str r0, [sp]
mov r0, #0
add r5, r1, #0
str r0, [sp, #4]
_021FC088:
mov r4, #0
_021FC08A:
ldr r0, [sp]
add r1, r4, #0
ldr r0, [r0]
bl ov96_021FBE44
add r6, r0, #0
add r0, r5, #0
mov r1, #0x65
mov r2, #2
bl ov96_021EB4F4
add r7, r0, #0
add r0, r5, #0
mov r1, #0x67
mov r2, #6
bl ov96_021EB4F4
add r2, r0, #0
add r0, r6, #0
add r1, r7, #0
bl ov96_021FBE4C
add r4, r4, #1
cmp r4, #4
blt _021FC08A
ldr r0, [sp]
add r0, #8
str r0, [sp]
ldr r0, [sp, #4]
add r0, r0, #1
str r0, [sp, #4]
cmp r0, #3
blt _021FC088
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_021FC07C
thumb_func_start ov96_021FC0D0
ov96_021FC0D0: ; 0x021FC0D0
push {r3, r4, r5, lr}
add r5, r1, #0
add r4, r0, #0
cmp r5, #3
blo _021FC0DE
bl GF_AssertFail
_021FC0DE:
lsl r0, r5, #3
ldr r0, [r4, r0]
pop {r3, r4, r5, pc}
thumb_func_end ov96_021FC0D0
thumb_func_start ov96_021FC0E4
ov96_021FC0E4: ; 0x021FC0E4
add r0, #0x18
bx lr
thumb_func_end ov96_021FC0E4
thumb_func_start ov96_021FC0E8
ov96_021FC0E8: ; 0x021FC0E8
ldr r1, _021FC0F0 ; =0x00000618
add r0, r0, r1
bx lr
nop
_021FC0F0: .word 0x00000618
thumb_func_end ov96_021FC0E8
thumb_func_start ov96_021FC0F4
ov96_021FC0F4: ; 0x021FC0F4
mov r0, #6
lsl r0, r0, #8
bx lr
.balign 4, 0
thumb_func_end ov96_021FC0F4
thumb_func_start ov96_021FC0FC
ov96_021FC0FC: ; 0x021FC0FC
push {r4, r5, r6, lr}
add r3, r2, #0
asr r2, r1, #2
lsr r2, r2, #0x1d
add r2, r1, r2
asr r4, r2, #3
beq _021FC13A
lsl r2, r4, #3
sub r2, r1, r2
sub r1, r4, #1
mov r4, #2
lsl r4, r4, #8
cmp r1, r4
bge _021FC13A
lsl r4, r3, #9
add r4, r0, r4
add r5, r4, r1
ldr r4, _021FC13C ; =0x00000618
ldrb r4, [r5, r4]
cmp r4, #0
beq _021FC13A
ldr r4, _021FC140 ; =0x00000C18
lsl r5, r3, #2
add r6, r0, r4
ldr r4, [r6, r5]
cmp r4, r1
bge _021FC13A
str r1, [r6, r5]
add r1, r3, #0
bl ov96_021FBF90
_021FC13A:
pop {r4, r5, r6, pc}
.balign 4, 0
_021FC13C: .word 0x00000618
_021FC140: .word 0x00000C18
thumb_func_end ov96_021FC0FC
thumb_func_start ov96_021FC144
ov96_021FC144: ; 0x021FC144
push {r4, lr}
add r4, r0, #0
bl LCRandom
mov r1, #3
bl _s32_div_f
lsl r0, r1, #0x18
add r4, #0x18
lsr r2, r0, #0x18
add r0, r4, #0
mov r1, #0xe4
bl ReadWholeNarcMemberByIdPair
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021FC144
thumb_func_start ov96_021FC164
ov96_021FC164: ; 0x021FC164
asr r3, r2, #2
lsr r3, r3, #0x1d
add r3, r2, r3
lsl r1, r1, #9
asr r2, r3, #3
add r0, r0, r1
add r1, r0, r2
ldr r0, _021FC184 ; =0x00000618
ldrb r0, [r1, r0]
cmp r0, #0
bne _021FC17E
mov r2, #0
mvn r2, r2
_021FC17E:
add r0, r2, #0
bx lr
nop
_021FC184: .word 0x00000618
thumb_func_end ov96_021FC164
thumb_func_start ov96_021FC188
ov96_021FC188: ; 0x021FC188
push {r3, r4, r5, lr}
mov r1, #0x91
lsl r1, r1, #2
add r5, r0, #0
bl AllocFromHeap
add r4, r0, #0
mov r2, #0x91
mov r0, #0
add r1, r4, #0
lsl r2, r2, #2
bl MIi_CpuClearFast
str r5, [r4]
add r0, r4, #0
pop {r3, r4, r5, pc}
thumb_func_end ov96_021FC188
thumb_func_start ov96_021FC1A8
ov96_021FC1A8: ; 0x021FC1A8
push {r3, r4, r5, r6, r7, lr}
mov r7, #0x62
lsl r7, r7, #2
str r0, [sp]
mov r4, #0
add r5, r0, #0
add r6, r7, #4
_021FC1B6:
mov r0, #0x61
lsl r0, r0, #2
ldr r0, [r5, r0]
bl Sprite_Delete
ldr r0, [r5, r7]
bl Sprite_Delete
ldr r0, [r5, r6]
bl Sprite_Delete
add r4, r4, #1
add r5, #0x10
cmp r4, #0xc
blt _021FC1B6
mov r1, #0x52
ldr r0, [sp]
lsl r1, r1, #2
ldr r0, [r0, r1]
bl sub_0200AEB0
mov r1, #0x53
ldr r0, [sp]
lsl r1, r1, #2
ldr r0, [r0, r1]
bl sub_0200B0A8
mov r6, #0x13
ldr r4, [sp]
mov r5, #0
lsl r6, r6, #4
_021FC1F4:
ldr r0, [r4, r6]
bl Destroy2DGfxResObjMan
add r5, r5, #1
add r4, r4, #4
cmp r5, #6
blt _021FC1F4
ldr r0, [sp]
ldr r0, [r0, #4]
bl SpriteList_Delete
ldr r0, [sp]
bl FreeToHeap
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021FC1A8
thumb_func_start ov96_021FC214
ov96_021FC214: ; 0x021FC214
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
bl ov96_021FC320
add r0, r5, #0
bl ov96_021FC404
add r0, r5, #0
add r1, r4, #0
bl ov96_021FC450
add r0, r5, #0
mov r1, #0
add r0, #8
add r2, r1, #0
bl G2dRenderer_SetSubSurfaceCoords
add r5, #8
mov r2, #3
add r0, r5, #0
mov r1, #0
lsl r2, r2, #0x12
bl G2dRenderer_SetMainSurfaceCoords
pop {r3, r4, r5, pc}
thumb_func_end ov96_021FC214
thumb_func_start ov96_021FC248
ov96_021FC248: ; 0x021FC248
push {r4, r5, lr}
sub sp, #0xc
add r5, r0, #0
mov r0, #0
str r0, [sp, #8]
lsl r0, r2, #0xc
str r0, [sp]
mov r0, #0xe
lsl r0, r0, #0xc
str r0, [sp, #4]
lsl r4, r1, #4
mov r0, #0x61
add r1, r5, r4
lsl r0, r0, #2
ldr r0, [r1, r0]
add r1, sp, #0
bl Sprite_SetMatrix
mov r0, #0x62
add r1, r5, r4
lsl r0, r0, #2
ldr r0, [r1, r0]
add r1, sp, #0
bl Sprite_SetMatrix
mov r0, #0x63
add r1, r5, r4
lsl r0, r0, #2
ldr r0, [r1, r0]
add r1, sp, #0
bl Sprite_SetMatrix
add sp, #0xc
pop {r4, r5, pc}
thumb_func_end ov96_021FC248
thumb_func_start ov96_021FC28C
ov96_021FC28C: ; 0x021FC28C
push {r4, r5, r6, lr}
add r5, r0, #0
add r6, r1, #0
add r4, r2, #0
beq _021FC29A
cmp r4, #8
bls _021FC29E
_021FC29A:
bl GF_AssertFail
_021FC29E:
lsl r0, r6, #4
add r1, r5, r0
mov r0, #0x63
lsl r0, r0, #2
ldr r0, [r1, r0]
add r4, #0xf
add r1, r4, #0
bl Set2dSpriteAnimSeqNo
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021FC28C
thumb_func_start ov96_021FC2B4
ov96_021FC2B4: ; 0x021FC2B4
push {r3, r4, r5, r6, r7, lr}
mov r7, #0x62
add r5, r0, #0
add r4, r1, #0
mov r6, #0
lsl r7, r7, #2
_021FC2C0:
mov r0, #0x61
lsl r0, r0, #2
ldr r0, [r5, r0]
add r1, r4, #0
bl Set2dSpriteVisibleFlag
ldr r0, [r5, r7]
add r1, r4, #0
bl Set2dSpriteVisibleFlag
add r6, r6, #1
add r5, #0x10
cmp r6, #0xc
blt _021FC2C0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021FC2B4
thumb_func_start ov96_021FC2E0
ov96_021FC2E0: ; 0x021FC2E0
push {r4, r5, r6, lr}
add r5, r0, #0
lsl r4, r1, #4
mov r0, #0x61
add r1, r5, r4
lsl r0, r0, #2
add r6, r2, #0
ldr r0, [r1, r0]
add r1, r6, #0
bl Set2dSpriteVisibleFlag
mov r0, #0x62
add r1, r5, r4
lsl r0, r0, #2
ldr r0, [r1, r0]
add r1, r6, #0
bl Set2dSpriteVisibleFlag
mov r0, #0x63
add r1, r5, r4
lsl r0, r0, #2
ldr r0, [r1, r0]
add r1, r6, #0
bl Set2dSpriteVisibleFlag
pop {r4, r5, r6, pc}
thumb_func_end ov96_021FC2E0
thumb_func_start ov96_021FC314
ov96_021FC314: ; 0x021FC314
ldr r3, _021FC31C ; =sub_0202457C
ldr r0, [r0, #4]
bx r3
nop
_021FC31C: .word sub_0202457C
thumb_func_end ov96_021FC314
thumb_func_start ov96_021FC320
ov96_021FC320: ; 0x021FC320
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
add r1, r5, #0
ldr r2, [r5]
mov r0, #0x24
add r1, #8
bl G2dRenderer_Init
mov r7, #0x13
str r0, [r5, #4]
mov r6, #0
add r4, r5, #0
lsl r7, r7, #4
_021FC33C:
ldr r2, [r5]
mov r0, #1
add r1, r6, #0
bl Create2DGfxResObjMan
str r0, [r4, r7]
add r6, r6, #1
add r4, r4, #4
cmp r6, #6
blt _021FC33C
mov r1, #0x80
str r1, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r5]
add r1, #0xb0
str r0, [sp, #8]
ldr r0, [r5, r1]
mov r1, #0x9c
mov r2, #0x18
mov r3, #0
bl AddCharResObjFromNarc
mov r1, #0x52
lsl r1, r1, #2
str r0, [r5, r1]
mov r1, #0x80
str r1, [sp]
mov r0, #2
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r5]
add r1, #0xb4
str r0, [sp, #0xc]
ldr r0, [r5, r1]
mov r1, #0x9c
mov r2, #0x15
mov r3, #0
bl AddPlttResObjFromNarc
mov r1, #0x53
lsl r1, r1, #2
str r0, [r5, r1]
mov r1, #0x80
str r1, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r5]
add r1, #0xb8
str r0, [sp, #8]
ldr r0, [r5, r1]
mov r1, #0x9c
mov r2, #0x17
mov r3, #0
bl AddCellOrAnimResObjFromNarc
mov r1, #0x15
lsl r1, r1, #4
str r0, [r5, r1]
mov r1, #0x80
str r1, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r5]
add r1, #0xbc
str r0, [sp, #8]
ldr r0, [r5, r1]
mov r1, #0x9c
mov r2, #0x16
mov r3, #0
bl AddCellOrAnimResObjFromNarc
mov r1, #0x55
lsl r1, r1, #2
str r0, [r5, r1]
sub r1, #0xc
ldr r0, [r5, r1]
bl sub_0200ADA4
mov r0, #0x53
lsl r0, r0, #2
ldr r0, [r5, r0]
bl sub_0200AF94
bl sub_02074490
add r1, r0, #0
mov r0, #0
str r0, [sp]
ldr r0, [r5]
mov r2, #5
str r0, [sp, #4]
mov r0, #0x14
mov r3, #0x60
bl GfGfxLoader_GXLoadPal
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021FC320
thumb_func_start ov96_021FC404
ov96_021FC404: ; 0x021FC404
push {lr}
sub sp, #0x2c
mov r1, #0x80
add r2, r1, #0
str r1, [sp]
sub r2, #0x81
str r2, [sp, #4]
str r2, [sp, #8]
mov r2, #0
str r2, [sp, #0xc]
add r3, r1, #0
str r2, [sp, #0x10]
add r3, #0xb0
ldr r3, [r0, r3]
str r3, [sp, #0x14]
add r3, r1, #0
add r3, #0xb4
ldr r3, [r0, r3]
str r3, [sp, #0x18]
add r3, r1, #0
add r3, #0xb8
ldr r3, [r0, r3]
str r3, [sp, #0x1c]
add r3, r1, #0
add r3, #0xbc
ldr r3, [r0, r3]
str r3, [sp, #0x20]
str r2, [sp, #0x24]
str r2, [sp, #0x28]
add r2, r1, #0
add r2, #0xe0
add r0, r0, r2
add r2, r1, #0
add r3, r1, #0
bl CreateSpriteResourcesHeader
add sp, #0x2c
pop {pc}
thumb_func_end ov96_021FC404
thumb_func_start ov96_021FC450
ov96_021FC450: ; 0x021FC450
push {r4, r5, r6, r7, lr}
sub sp, #0x54
str r0, [sp]
add r7, r1, #0
ldr r1, [sp]
mov r0, #0x14
ldr r1, [r1]
bl NARC_New
str r0, [sp, #0x14]
ldr r0, [sp]
mov r1, #1
ldr r0, [r0]
lsl r1, r1, #0xc
bl AllocFromHeapAtEnd
ldr r1, [sp]
mov r3, #0x16
str r0, [sp, #0x10]
lsl r3, r3, #4
add r2, r1, #0
add r2, r2, r3
add r0, sp, #0x24
mov r3, #2
bl ov96_021FC5E0
mov r0, #2
lsl r0, r0, #8
str r0, [sp, #8]
mov r0, #0x10
str r0, [sp, #4]
ldr r0, [sp, #8]
ldr r5, [sp]
mov r4, #0
str r0, [sp, #0x18]
str r0, [sp, #0x1c]
_021FC498:
add r0, sp, #0x24
bl CreateSprite
mov r1, #0x61
lsl r1, r1, #2
str r0, [r5, r1]
add r0, r1, #0
ldr r0, [r5, r0]
mov r1, #1
bl Set2dSpriteAnimActiveFlag
mov r0, #0x61
lsl r0, r0, #2
ldr r0, [r5, r0]
add r1, r4, #0
bl Set2dSpriteAnimSeqNo
add r0, sp, #0x24
bl CreateSprite
mov r1, #0x62
lsl r1, r1, #2
str r0, [r5, r1]
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r1, r0, #0
mov r0, #0x62
lsl r0, r0, #2
ldr r0, [r5, r0]
add r1, #0xc
bl Set2dSpriteAnimSeqNo
add r0, sp, #0x24
bl CreateSprite
mov r1, #0x63
lsl r1, r1, #2
str r0, [r5, r1]
cmp r4, #8
bge _021FC4F8
add r0, r1, #0
add r1, r4, #0
ldr r0, [r5, r0]
add r1, #0x10
bl Set2dSpriteAnimSeqNo
_021FC4F8:
ldrh r0, [r7, #2]
ldrh r6, [r7]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xc]
cmp r6, #0
bne _021FC52A
mov r0, #0x61
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #0
bl Set2dSpriteVisibleFlag
mov r0, #0x62
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #0
bl Set2dSpriteVisibleFlag
mov r0, #0x63
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #0
bl Set2dSpriteVisibleFlag
_021FC52A:
mov r0, #0x61
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #2
bl Sprite_SetDrawPriority
mov r0, #0x62
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #3
bl Sprite_SetDrawPriority
mov r0, #0x63
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #1
bl Sprite_SetDrawPriority
ldr r0, [sp]
ldr r2, [sp, #4]
add r1, r4, #0
bl ov96_021FC248
mov r0, #0x63
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #1
bl Set2dSpriteVisibleFlag
ldr r2, [sp, #0xc]
add r0, r6, #0
mov r1, #0
bl GetMonIconNaixEx
add r1, r0, #0
ldr r0, [sp, #0x14]
ldr r2, [sp, #0x10]
bl NARC_ReadWholeMember
ldr r0, [sp, #0x10]
add r1, sp, #0x20
bl NNS_G2dGetUnpackedBGCharacterData
ldr r1, [sp, #0xc]
add r0, r6, #0
mov r2, #0
bl GetMonIconPaletteEx
add r0, r0, #3
lsl r0, r0, #0x18
lsr r6, r0, #0x18
ldr r0, [sp, #0x20]
ldr r1, [sp, #0x18]
ldr r0, [r0, #0x14]
bl DC_FlushRange
ldr r0, [sp, #0x20]
ldr r1, [sp, #8]
ldr r0, [r0, #0x14]
ldr r2, [sp, #0x1c]
bl GXS_LoadOBJ
mov r0, #0x61
lsl r0, r0, #2
ldr r0, [r5, r0]
add r1, r6, #0
bl Sprite_SetPalIndex
mov r0, #2
ldr r1, [sp, #8]
lsl r0, r0, #8
add r0, r1, r0
str r0, [sp, #8]
ldr r0, [sp, #4]
add r4, r4, #1
add r0, #0x20
add r5, #0x10
add r7, r7, #4
str r0, [sp, #4]
cmp r4, #0xc
bge _021FC5CE
b _021FC498
_021FC5CE:
ldr r0, [sp, #0x10]
bl FreeToHeap
ldr r0, [sp, #0x14]
bl NARC_Delete
add sp, #0x54
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021FC450
thumb_func_start ov96_021FC5E0
ov96_021FC5E0: ; 0x021FC5E0
push {r3, r4}
ldr r2, [r1, #4]
mov r4, #0
str r2, [r0]
mov r2, #0x16
lsl r2, r2, #4
add r2, r1, r2
str r2, [r0, #4]
mov r2, #0xf
lsl r2, r2, #0x10
str r2, [r0, #8]
mov r2, #0xe
lsl r2, r2, #0xc
str r2, [r0, #0xc]
mov r2, #1
str r4, [r0, #0x10]
lsl r2, r2, #0xc
str r2, [r0, #0x14]
str r2, [r0, #0x18]
str r2, [r0, #0x1c]
strh r4, [r0, #0x20]
mov r2, #2
str r2, [r0, #0x24]
str r3, [r0, #0x28]
ldr r1, [r1]
str r1, [r0, #0x2c]
pop {r3, r4}
bx lr
thumb_func_end ov96_021FC5E0
thumb_func_start ov96_021FC618
ov96_021FC618: ; 0x021FC618
push {r4, lr}
mov r1, #0x84
bl AllocFromHeap
mov r1, #0
mov r2, #0x84
add r4, r0, #0
bl MI_CpuFill8
add r0, r4, #0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021FC618
thumb_func_start ov96_021FC630
ov96_021FC630: ; 0x021FC630
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
str r0, [sp, #4]
str r2, [sp, #8]
mov r0, #0
add r7, r1, #0
str r0, [sp, #0xc]
_021FC63E:
ldr r1, [sp, #0xc]
mov r0, #0x2c
add r2, r1, #0
mul r2, r0
ldr r0, [sp, #4]
mov r4, #0
add r6, r0, r2
_021FC64C:
lsl r0, r4, #3
add r5, r6, r0
mov r0, #0xa
str r0, [sp]
ldr r1, [sp, #8]
add r0, r7, #0
mov r2, #1
mov r3, #0x6a
bl ov96_021EB3E4
str r0, [r5, #4]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
ldr r0, [r5, #4]
mov r1, #5
bl ov96_021EB630
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #5
blo _021FC64C
ldr r0, [sp, #0xc]
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xc]
cmp r0, #3
blo _021FC63E
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021FC630
thumb_func_start ov96_021FC690
ov96_021FC690: ; 0x021FC690
ldr r3, _021FC694 ; =FreeToHeap
bx r3
.balign 4, 0
_021FC694: .word FreeToHeap
thumb_func_end ov96_021FC690
thumb_func_start ov96_021FC698
ov96_021FC698: ; 0x021FC698
push {r4, r5, r6, lr}
add r4, r1, #0
add r5, r0, #0
add r6, r2, #0
cmp r4, #3
blo _021FC6A8
bl GF_AssertFail
_021FC6A8:
mov r0, #0x2c
mul r0, r4
add r4, r5, r0
ldr r0, [r4, #0x28]
lsl r0, r0, #3
add r5, r4, r0
ldr r0, [r4, r0]
cmp r0, #0
bne _021FC6E6
mov r1, #1
ldr r0, [r5, #4]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r5, #4]
mov r1, #1
bl ov96_021EB564
ldr r0, [r5, #4]
add r1, r6, #0
bl ov96_021EB588
mov r0, #1
str r0, [r5]
ldr r0, [r4, #0x28]
mov r1, #5
add r0, r0, #1
bl _u32_div_f
str r1, [r4, #0x28]
pop {r4, r5, r6, pc}
_021FC6E6:
bl GF_AssertFail
pop {r4, r5, r6, pc}
thumb_func_end ov96_021FC698
thumb_func_start ov96_021FC6EC
ov96_021FC6EC: ; 0x021FC6EC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r4, r1, #0
add r5, r0, #0
add r6, r2, #0
cmp r4, #3
blo _021FC6FE
bl GF_AssertFail
_021FC6FE:
mov r0, #0x2c
mul r0, r4
add r0, r5, r0
str r0, [sp]
mov r4, #0
lsl r7, r6, #0xc
_021FC70A:
ldr r0, [sp]
lsl r1, r4, #3
add r5, r0, r1
ldr r0, [r0, r1]
cmp r0, #0
beq _021FC748
ldr r0, [r5, #4]
bl ov96_021EB594
add r6, r0, #0
add r3, sp, #4
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
add r1, r2, #0
str r0, [r3]
ldr r0, [sp, #8]
add r0, r0, r7
str r0, [sp, #8]
ldr r0, [r5, #4]
bl ov96_021EB588
ldr r0, [r5, #4]
bl ov96_021EB57C
cmp r0, #0
bne _021FC748
add r0, r5, #0
bl ov96_021FC758
_021FC748:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #5
blo _021FC70A
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021FC6EC
thumb_func_start ov96_021FC758
ov96_021FC758: ; 0x021FC758
ldr r3, _021FC764 ; =ov96_021EB52C
mov r2, #0
str r2, [r0]
ldr r0, [r0, #4]
mov r1, #1
bx r3
.balign 4, 0
_021FC764: .word ov96_021EB52C
thumb_func_end ov96_021FC758
thumb_func_start ov96_021FC768
ov96_021FC768: ; 0x021FC768
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x1fc
sub sp, #0x5c
add r4, r0, #0
bl ov96_021E5DC4
str r0, [sp, #0x34]
add r0, r4, #0
bl ov96_021E5DD4
cmp r0, #6
bls _021FC782
b _021FCD68
_021FC782:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021FC78E: ; jump table
.short _021FC79C - _021FC78E - 2 ; case 0
.short _021FC870 - _021FC78E - 2 ; case 1
.short _021FC8C6 - _021FC78E - 2 ; case 2
.short _021FC9AC - _021FC78E - 2 ; case 3
.short _021FCAAC - _021FC78E - 2 ; case 4
.short _021FCD14 - _021FC78E - 2 ; case 5
.short _021FCD52 - _021FC78E - 2 ; case 6
_021FC79C:
mov r2, #0x1a
mov r0, #0x5c
mov r1, #0x90
lsl r2, r2, #0xe
bl CreateHeap
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
bl GfGfx_DisableEngineAPlanes
bl GfGfx_DisableEngineBPlanes
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _021FCA90 ; =0xFFFFE0FF
and r1, r0
str r1, [r2]
ldr r2, _021FCA94 ; =0x04001000
ldr r1, [r2]
and r0, r1
str r0, [r2]
bl ov96_021FCEE0
ldr r1, _021FCA98 ; =0x00000648
add r0, r4, #0
bl ov96_021E5D94
ldr r2, _021FCA98 ; =0x00000648
mov r1, #0
add r5, r0, #0
bl MI_CpuFill8
mov r0, #0x90
bl BgConfig_Alloc
mov r2, #0xf9
lsl r2, r2, #2
add r1, r5, r2
add r2, #0x78
str r0, [r5]
add r0, r4, #0
add r2, r5, r2
mov r3, #0x78
bl ov96_021E5F70
add r0, r4, #0
mov r1, #8
bl ov96_021E6670
mov r0, #0x97
str r0, [sp, #0xa4]
mov r0, #1
lsl r0, r0, #0x12
str r0, [sp, #0xa8]
lsr r0, r0, #4
mov r2, #0x90
str r0, [sp, #0xac]
str r2, [sp, #0xb0]
mov r0, #0x10
str r0, [sp]
ldr r3, _021FCA9C ; =0x00300010
add r0, sp, #0xa4
mov r1, #0x16
bl ov96_021E92B0
bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7e
str r1, [sp, #4]
str r0, [sp, #8]
mov r3, #0x20
str r3, [sp, #0xc]
mov r2, #0x90
str r2, [sp, #0x10]
add r2, r0, #0
bl OamManager_Create
mov r1, #0x90
str r1, [r5, #0x14]
mov r0, #4
bl FontID_Alloc
ldr r0, [r5]
bl ov96_021FCF00
add r0, r5, #0
bl ov96_021FFD4C
ldr r0, _021FCAA0 ; =gSystem + 0x60
mov r1, #1
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
add r0, r4, #0
bl ov96_021E5DEC
b _021FCD68
_021FC870:
ldr r0, [sp, #0x34]
ldr r1, [sp, #0x34]
ldr r0, [r0, #0x14]
ldr r1, [r1]
add r2, r4, #0
bl ov96_021FFF3C
mov r2, #0x3e
ldr r1, [sp, #0x34]
lsl r2, r2, #4
str r0, [r1, r2]
add r0, r4, #0
bl ov96_021E5D34
add r5, r0, #0
add r0, r4, #0
bl ov96_021E5EE8
add r2, r0, #0
ldr r0, [sp, #0x34]
mov r1, #4
ldr r0, [r0, #0x14]
sub r1, r1, r5
bl ov96_02200E3C
mov r2, #0xf7
ldr r1, [sp, #0x34]
lsl r2, r2, #2
str r0, [r1, r2]
add r0, r1, #0
ldr r0, [r0, #0x14]
ldr r1, _021FCAA4 ; =0x000002BF
mov r2, #1
bl ov96_021E9A78
mov r2, #0xf1
ldr r1, [sp, #0x34]
lsl r2, r2, #2
str r0, [r1, r2]
add r0, r4, #0
bl ov96_021E5DEC
b _021FCD68
_021FC8C6:
ldr r5, _021FCAA8 ; =ov96_0221C5E4
add r3, sp, #0x98
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r5]
add r1, r2, #0
str r0, [r3]
ldr r0, [sp, #0x34]
ldr r0, [r0, #0x14]
bl ov96_021EB180
ldr r1, [sp, #0x34]
str r0, [r1, #0x18]
mov r0, #2
lsl r0, r0, #0x14
str r0, [sp]
add r0, r1, #0
mov r1, #0
ldr r0, [r0, #0x18]
add r2, r1, #0
add r3, r1, #0
bl ov96_021EB5C8
ldr r0, [sp, #0x34]
ldr r0, [r0, #0x18]
bl ov96_021EB5E8
str r0, [sp]
ldr r0, [sp, #0x34]
mov r5, #0xf1
ldr r3, [sp, #0x34]
lsl r5, r5, #2
ldr r0, [r0, #0x14]
ldr r3, [r3, r5]
mov r1, #0xc
mov r2, #4
bl ov96_021EA854
ldr r1, [sp, #0x34]
add r2, r5, #4
str r0, [r1, r2]
add r0, r1, #0
ldr r0, [r0, #0x18]
mov r1, #0
mov r2, #0x65
bl ov96_021EB29C
ldr r0, [sp, #0x34]
mov r1, #1
ldr r0, [r0, #0x18]
mov r2, #0x66
bl ov96_021EB29C
ldr r0, [sp, #0x34]
mov r1, #2
ldr r0, [r0, #0x18]
mov r2, #0x67
bl ov96_021EB29C
ldr r0, [sp, #0x34]
mov r1, #3
ldr r0, [r0, #0x18]
mov r2, #0x68
bl ov96_021EB29C
add r1, r5, #0
ldr r0, [sp, #0x34]
add r1, #0x1c
ldr r0, [r0, r1]
ldr r1, [sp, #0x34]
ldr r1, [r1, #0x18]
bl ov96_022000E4
ldr r0, [sp, #0x34]
ldr r0, [r0, #0x18]
bl ov96_021FD0E4
ldr r0, [sp, #0x34]
ldr r0, [r0, #0x18]
bl ov96_021EB3A4
ldr r2, [sp, #0x34]
add r3, r5, #0
ldr r2, [r2, r3]
ldr r3, [sp, #0x34]
add r0, r4, #0
ldr r3, [r3, #0x18]
mov r1, #0
bl ov96_021E6290
ldr r0, [r0]
mov r1, #1
bl Sprite_SetDrawPriority
ldr r0, [sp, #0x34]
add r1, r0, #0
ldr r1, [r1, #0x18]
bl ov96_021FD128
add r3, r5, #0
ldr r1, [sp, #0x34]
ldr r0, [sp, #0x34]
add r3, #0x1c
ldr r0, [r0, r3]
ldr r2, [sp, #0x34]
sub r3, #0x1c
ldr r1, [r1, #0x18]
ldr r2, [r2, r3]
bl ov96_02200180
add r0, r4, #0
bl ov96_021E5DEC
b _021FCD68
_021FC9AC:
add r0, sp, #0x154
mov r7, #0
add r5, sp, #0x198
str r0, [sp, #0x1c]
add r6, sp, #0x68
_021FC9B6:
add r0, r7, #0
mov r1, #3
bl _s32_div_f
str r1, [sp, #0x18]
add r0, r7, #0
mov r1, #3
bl _s32_div_f
str r0, [sp, #0x38]
ldr r1, [sp, #0x38]
ldr r2, [sp, #0x18]
add r0, r4, #0
add r3, r5, #0
bl ov96_021E6168
ldr r1, [sp, #0x38]
ldr r2, [sp, #0x18]
add r0, r4, #0
bl ov96_021E60C0
bl ov96_021E6108
ldr r1, [sp, #0x1c]
add r7, r7, #1
str r0, [r1, #0x14]
ldrh r0, [r5]
strh r0, [r6]
ldrh r0, [r5, #2]
add r5, #0x10
strh r0, [r6, #2]
add r0, r1, #0
add r0, r0, #4
add r6, r6, #4
str r0, [sp, #0x1c]
cmp r7, #0xc
blt _021FC9B6
mov r1, #0x3e
ldr r0, [sp, #0x34]
lsl r1, r1, #4
ldr r0, [r0, r1]
add r1, sp, #0x68
bl ov96_022002F8
add r0, r4, #0
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r3, r0, #0x18
mov r1, #0x3e
ldr r0, [sp, #0x34]
lsl r1, r1, #4
ldr r0, [r0, r1]
lsl r1, r3, #1
add r1, r3, r1
add r2, sp, #0x198
lsl r1, r1, #4
add r1, r2, r1
bl ov96_022003E8
mov r1, #0x3e
ldr r0, [sp, #0x34]
lsl r1, r1, #4
ldr r0, [r0, r1]
mov r1, #0
mov r2, #1
bl ov96_02200454
mov r1, #0x3e
ldr r0, [sp, #0x34]
lsl r1, r1, #4
ldr r0, [r0, r1]
mov r1, #1
mov r2, #2
bl ov96_02200454
mov r1, #0
mov r0, #2
str r0, [sp, #0x158]
mov r0, #1
str r1, [sp, #0x154]
str r1, [sp, #0x15c]
str r0, [sp, #0x160]
str r0, [sp, #0x164]
str r1, [sp]
str r1, [sp, #4]
mov r1, #0xf2
ldr r0, [sp, #0x34]
lsl r1, r1, #2
ldr r0, [r0, r1]
mov r1, #0xc
add r2, sp, #0x198
add r3, sp, #0x154
bl ov96_021EA8A8
add r0, r4, #0
bl ov96_021E5F24
add r1, r0, #0
mov r2, #0x3e
ldr r0, [sp, #0x34]
lsl r2, r2, #4
ldr r0, [r0, r2]
bl ov96_02200B04
add r0, r4, #0
bl ov96_021E5DEC
b _021FCD68
.balign 4, 0
_021FCA90: .word 0xFFFFE0FF
_021FCA94: .word 0x04001000
_021FCA98: .word 0x00000648
_021FCA9C: .word 0x00300010
_021FCAA0: .word gSystem + 0x60
_021FCAA4: .word 0x000002BF
_021FCAA8: .word ov96_0221C5E4
_021FCAAC:
mov r1, #0xf2
ldr r0, [sp, #0x34]
lsl r1, r1, #2
ldr r0, [r0, r1]
bl ov96_021EAA00
cmp r0, #0
bne _021FCABE
b _021FCD68
_021FCABE:
add r0, r4, #0
bl ov96_021E5F24
str r0, [sp, #0x30]
ldr r0, [sp, #0x34]
ldr r0, [r0]
bl ov96_021E6030
add r0, r4, #0
mov r1, #1
bl ov96_021E5DFC
add r0, sp, #0x50
mov r1, #0xaa
mov r2, #0xc
bl ReadWholeNarcMemberByIdPair
ldr r0, [sp, #0x34]
mov r5, #0
str r0, [sp, #0x40]
add r0, #0x30
str r0, [sp, #0x40]
_021FCAEA:
mov r0, #0xf2
ldr r1, [sp, #0x34]
lsl r0, r0, #2
ldr r0, [r1, r0]
lsl r1, r5, #0x18
lsr r1, r1, #0x18
bl ov96_021EAA04
add r6, r0, #0
add r0, r5, #0
mov r1, #3
bl _s32_div_f
str r1, [sp, #0x14]
cmp r1, #0
bne _021FCB12
add r0, r6, #0
mov r1, #1
bl ov96_021EAB38
_021FCB12:
add r0, r5, #0
mov r1, #3
bl _s32_div_f
add r7, r0, #0
add r0, r5, #0
mov r1, #3
bl _s32_div_f
add r2, r1, #0
add r0, r4, #0
add r1, r7, #0
bl ov96_021E60C0
bl ov96_021E6138
lsl r1, r0, #3
add r0, sp, #0x50
add r2, r0, r1
add r1, r2, #0
sub r1, #8
sub r2, r2, #4
ldr r1, [r1]
ldr r2, [r2]
add r0, r6, #0
bl ov96_021EAF70
mov r0, #0xf2
ldr r1, [sp, #0x34]
lsl r0, r0, #2
ldr r0, [r1, r0]
lsl r1, r5, #0x18
lsr r1, r1, #0x18
bl ov96_021EAA04
add r6, r0, #0
add r0, r5, #0
mov r1, #3
bl _s32_div_f
mov r1, #0xd4
str r0, [sp, #0x3c]
mul r1, r0
ldr r0, [sp, #0x40]
add r0, r0, r1
str r0, [sp, #0x2c]
ldr r0, [sp, #0x14]
lsl r1, r0, #2
ldr r0, [sp, #0x2c]
str r6, [r0, r1]
ldr r0, [sp, #0x3c]
add r1, r0, #1
add r7, r1, #0
ldr r1, [sp, #0x2c]
mov r0, #0x1b
mul r7, r0
add r1, #0x88
mov r0, #4
strb r0, [r1]
add r7, #0x28
add r0, r6, #0
mov r1, #4
bl ov96_021EAC0C
add r0, r6, #0
mov r1, #0x50
add r2, r7, #0
bl ov96_021EAF94
bl ov96_021E6104
add r1, r0, #0
add r0, r6, #0
bl ov96_021EAF6C
ldr r0, [sp, #0x2c]
mov r1, #0
str r1, [r0, #0x7c]
add r0, #0x80
lsl r1, r7, #0xc
str r1, [r0]
str r0, [sp, #0x2c]
ldr r1, [sp, #0x3c]
ldr r0, [sp, #0x30]
cmp r1, r0
bne _021FCBDE
ldr r0, [sp, #0x14]
cmp r0, #0
bne _021FCBDE
add r0, sp, #0x44
str r0, [sp]
add r0, r6, #0
mov r1, #0x50
add r2, r7, #0
add r3, sp, #0x48
bl ov96_021EB0A4
ldr r1, [sp, #0x48]
add r0, sp, #0x44
strh r1, [r0, #8]
ldr r1, [sp, #0x44]
strh r1, [r0, #0xa]
_021FCBDE:
add r5, r5, #1
cmp r5, #0xc
blt _021FCAEA
ldr r6, [sp, #0x34]
mov r5, #0
add r6, #0x30
mov r7, #1
_021FCBEC:
add r0, r4, #0
bl ov96_021E5F24
cmp r5, r0
bne _021FCBFA
add r2, r7, #0
b _021FCBFC
_021FCBFA:
mov r2, #0
_021FCBFC:
add r1, r6, #0
add r1, #0x80
ldr r1, [r1]
add r0, r6, #0
asr r3, r1, #0xb
lsr r3, r3, #0x14
add r3, r1, r3
asr r1, r3, #0xc
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_021FFB7C
add r5, r5, #1
add r6, #0xd4
cmp r5, #4
blt _021FCBEC
add r0, sp, #0xb4
mov r1, #0xaa
mov r2, #2
bl ReadWholeNarcMemberByIdPair
mov r2, #0x19
ldr r1, _021FCD70 ; =0x00000A8C
ldr r0, [sp, #0x34]
lsl r2, r2, #6
strh r1, [r0, r2]
mov r1, #0x3e
lsl r1, r1, #4
ldr r0, [r0, r1]
ldr r1, [sp, #0x34]
ldrh r1, [r1, r2]
bl ov96_02200A64
mov r0, #0
str r0, [sp, #0x28]
ldr r0, [sp, #0x34]
add r6, r0, #0
str r0, [sp, #0x24]
add r6, #0x30
str r0, [sp, #0x20]
_021FCC4C:
mov r0, #0x3b
mov r2, #0
ldr r1, [sp, #0x24]
lsl r0, r0, #4
str r2, [r1, r0]
ldr r0, [sp, #0x28]
add r5, r2, #0
lsl r0, r0, #0x18
lsr r7, r0, #0x18
_021FCC5E:
lsl r3, r5, #0x18
add r0, r4, #0
add r1, sp, #0xb4
add r2, r7, #0
lsr r3, r3, #0x18
str r6, [sp]
bl ov96_021FEFE8
add r5, r5, #1
cmp r5, #3
blt _021FCC5E
add r0, r4, #0
bl ov96_021E5F24
cmp r0, #0
bne _021FCC92
mov r0, #0xf7
ldr r1, [sp, #0x34]
lsl r0, r0, #2
ldr r0, [r1, r0]
ldr r1, [sp, #0x28]
add r2, r6, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_02200E78
_021FCC92:
mov r0, #1
ldr r2, [sp, #0x28]
ldr r1, [sp, #0x20]
lsl r0, r0, #8
strb r2, [r1, r0]
ldr r0, [sp, #0x24]
add r6, #0xd4
add r0, r0, #4
str r0, [sp, #0x24]
add r0, r1, #0
add r0, #0xd4
str r0, [sp, #0x20]
add r0, r2, #0
add r0, r0, #1
str r0, [sp, #0x28]
cmp r0, #4
blt _021FCC4C
add r0, r4, #0
bl ov96_021E5F24
cmp r0, #0
bne _021FCCD2
add r0, r4, #0
bl ov96_021E5F54
add r0, #0x28
bl ov96_021E8A20
add r1, r0, #0
ldr r0, [sp, #0x34]
bl ov96_021FDA30
_021FCCD2:
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
add r0, sp, #0x4c
mov r3, #0xf1
str r0, [sp, #8]
ldr r2, [sp, #0x34]
lsl r3, r3, #2
ldr r2, [r2, r3]
ldr r3, [sp, #0x34]
add r0, r4, #0
ldr r3, [r3, #0x18]
mov r1, #0
bl ov96_021E634C
ldr r0, [sp, #0x34]
bl ov96_021FD060
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineATogglePlanes
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineBTogglePlanes
mov r0, #1
bl sub_0203A994
add r0, r4, #0
bl ov96_021E5DEC
b _021FCD68
_021FCD14:
add r0, r4, #0
bl ov96_021E5F24
cmp r0, #0
bne _021FCD4A
mov r5, #0xf9
lsl r5, r5, #2
bl LCRandom
mov r1, #0xa
bl _s32_div_f
lsl r0, r1, #0x18
lsr r2, r0, #0x18
ldr r0, [sp, #0x34]
mov r1, #0xe5
add r0, r0, r5
bl ReadWholeNarcMemberByIdPair
add r1, r5, #0
ldr r0, [sp, #0x34]
sub r1, #8
ldr r0, [r0, r1]
ldr r1, [sp, #0x34]
add r1, r1, r5
bl ov96_02200E80
_021FCD4A:
add r0, r4, #0
bl ov96_021E5DEC
b _021FCD68
_021FCD52:
mov r0, #0x5c
bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _021FCD60
bl GF_AssertFail
_021FCD60:
add sp, #0x1fc
add sp, #0x5c
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021FCD68:
mov r0, #0
add sp, #0x1fc
add sp, #0x5c
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021FCD70: .word 0x00000A8C
thumb_func_end ov96_021FC768
thumb_func_start ov96_021FCD74
ov96_021FCD74: ; 0x021FCD74
push {r3, lr}
bl ov96_021E5DC4
ldr r0, [r0, #0x18]
bl ov96_021EB5BC
mov r0, #1
pop {r3, pc}
thumb_func_end ov96_021FCD74
thumb_func_start ov96_021FCD84
ov96_021FCD84: ; 0x021FCD84
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r5, r0, #0
bl ov96_021E6040
add r6, r0, #0
bl ov96_021E9510
mov r4, #0
add r7, r4, #0
_021FCD98:
lsl r1, r4, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
bl ov96_021E5FBC
lsl r0, r0, #0x10
lsr r3, r0, #0x10
lsr r0, r3, #0xa
str r0, [sp]
lsr r2, r3, #0x1f
lsl r1, r3, #0x16
sub r1, r1, r2
mov r0, #0x16
ror r1, r0
add r0, r2, r1
mov r1, #0xa
mul r1, r0
asr r0, r1, #9
lsr r0, r0, #0x16
add r0, r1, r0
asr r0, r0, #0xa
str r0, [sp, #4]
str r7, [sp, #8]
mov r0, #1
str r0, [sp, #0xc]
mov r0, #2
str r0, [sp, #0x10]
mov r0, #1
str r0, [sp, #0x14]
ldr r0, _021FCE0C ; =0x00000129
add r1, r6, #0
str r0, [sp, #0x18]
add r0, r5, #0
add r2, r4, #0
bl ov96_021E966C
add r4, r4, #1
cmp r4, #4
blt _021FCD98
add r0, r6, #0
mov r1, #1
bl ov96_021E93B4
add r0, r6, #0
mov r1, #6
bl ov96_0221A56C
add r0, r6, #0
bl ov96_021E952C
add r0, r6, #0
mov r1, #6
bl ov96_021E9570
mov r0, #1
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
nop
_021FCE0C: .word 0x00000129
thumb_func_end ov96_021FCD84
thumb_func_start ov96_021FCE10
ov96_021FCE10: ; 0x021FCE10
push {r3, r4, r5, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
bl sub_0203A914
add r0, r5, #0
bl ov96_021E5F8C
ldr r0, [r4]
mov r1, #0
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #1
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #2
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #3
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #4
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #5
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #6
bl FreeBgTilemapBuffer
add r0, r4, #4
bl RemoveWindow
ldr r0, [r4]
bl FreeToHeap
ldr r0, [r4, #0x18]
bl ov96_021EB21C
mov r0, #0xf2
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021EA894
mov r0, #0xf1
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021E9C0C
bl OamManager_Free
bl sub_0202168C
bl sub_02022608
mov r0, #0xf7
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_02200EEC
mov r0, #0x3e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl ov96_021FFFE8
mov r0, #4
bl FontID_Release
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
add r0, r5, #0
bl ov96_021E5DAC
ldr r0, _021FCED8 ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
ldr r0, _021FCEDC ; =0x04000050
mov r1, #0
strh r1, [r0]
mov r0, #0x90
bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.balign 4, 0
_021FCED8: .word gSystem + 0x60
_021FCEDC: .word 0x04000050
thumb_func_end ov96_021FCE10
thumb_func_start ov96_021FCEE0
ov96_021FCEE0: ; 0x021FCEE0
push {r4, lr}
sub sp, #0x28
ldr r4, _021FCEFC ; =ov96_0221C6F0
add r3, sp, #0
mov r2, #5
_021FCEEA:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _021FCEEA
add r0, sp, #0
bl GfGfx_SetBanks
add sp, #0x28
pop {r4, pc}
.balign 4, 0
_021FCEFC: .word ov96_0221C6F0
thumb_func_end ov96_021FCEE0
thumb_func_start ov96_021FCF00
ov96_021FCF00: ; 0x021FCF00
push {r4, r5, lr}
sub sp, #0xd4
ldr r5, _021FD040 ; =ov96_0221C61C
add r3, sp, #0xc4
add r4, r0, #0
add r2, r3, #0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl SetBothScreensModesAndDisable
ldr r5, _021FD044 ; =ov96_0221C648
add r3, sp, #0xa8
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #0
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
bl BgClearTilemapBufferAndCommit
ldr r5, _021FD048 ; =ov96_0221C664
add r3, sp, #0x8c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #1
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
bl BgClearTilemapBufferAndCommit
ldr r5, _021FD04C ; =ov96_0221C680
add r3, sp, #0x70
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #2
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
bl BgClearTilemapBufferAndCommit
ldr r5, _021FD050 ; =ov96_0221C69C
add r3, sp, #0x54
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #3
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #3
bl BgClearTilemapBufferAndCommit
ldr r5, _021FD054 ; =ov96_0221C6B8
add r3, sp, #0x38
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #4
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
bl BgClearTilemapBufferAndCommit
ldr r5, _021FD058 ; =ov96_0221C6D4
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #5
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #5
bl BgClearTilemapBufferAndCommit
ldr r5, _021FD05C ; =ov96_0221C62C
add r3, sp, #0
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #6
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #6
bl BgClearTilemapBufferAndCommit
mov r0, #8
mov r1, #0
bl GfGfx_EngineATogglePlanes
add sp, #0xd4
pop {r4, r5, pc}
nop
_021FD040: .word ov96_0221C61C
_021FD044: .word ov96_0221C648
_021FD048: .word ov96_0221C664
_021FD04C: .word ov96_0221C680
_021FD050: .word ov96_0221C69C
_021FD054: .word ov96_0221C6B8
_021FD058: .word ov96_0221C6D4
_021FD05C: .word ov96_0221C62C
thumb_func_end ov96_021FCF00
thumb_func_start ov96_021FD060
ov96_021FD060: ; 0x021FD060
push {r4, lr}
sub sp, #0x10
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
add r4, r0, #0
str r3, [sp, #8]
ldr r0, [r4, #0x14]
mov r1, #1
str r0, [sp, #0xc]
ldr r2, [r4]
mov r0, #0xb2
bl GfGfxLoader_LoadCharData
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
str r3, [sp, #8]
ldr r0, [r4, #0x14]
mov r1, #2
str r0, [sp, #0xc]
ldr r2, [r4]
mov r0, #0xb2
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4, #0x14]
mov r1, #3
str r0, [sp, #0xc]
ldr r2, [r4]
mov r0, #0xb2
mov r3, #1
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4, #0x14]
mov r1, #4
str r0, [sp, #0xc]
ldr r2, [r4]
mov r0, #0xb2
mov r3, #2
bl GfGfxLoader_LoadScrnData
mov r1, #0
mov r0, #0x40
str r0, [sp]
ldr r0, [r4, #0x14]
add r2, r1, #0
str r0, [sp, #4]
mov r0, #0xb2
add r3, r1, #0
bl GfGfxLoader_GXLoadPal
mov r0, #0x3e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl ov96_02200068
add sp, #0x10
pop {r4, pc}
thumb_func_end ov96_021FD060
thumb_func_start ov96_021FD0E4
ov96_021FD0E4: ; 0x021FD0E4
push {r4, lr}
sub sp, #8
mov r1, #1
str r1, [sp]
mov r1, #0xb2
mov r2, #0x11
mov r3, #0x68
add r4, r0, #0
bl ov96_021EB2BC
mov r0, #1
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
add r0, r4, #0
mov r1, #0xb2
mov r2, #0xe
mov r3, #0x68
bl ov96_021EB2F4
add r0, r4, #0
mov r1, #0xb2
mov r2, #0x10
mov r3, #0x68
bl ov96_021EB334
add r0, r4, #0
mov r1, #0xb2
mov r2, #0xf
mov r3, #0x68
bl ov96_021EB36C
add sp, #8
pop {r4, pc}
thumb_func_end ov96_021FD0E4
thumb_func_start ov96_021FD128
ov96_021FD128: ; 0x021FD128
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r7, r0, #0
add r5, r1, #0
mov r4, #0
mov r6, #6
_021FD134:
add r0, r5, #0
mov r1, #2
mov r2, #1
mov r3, #0x68
str r6, [sp]
bl ov96_021EB408
add r4, r4, #1
cmp r4, #0x1e
blt _021FD134
mov r4, #0
mov r6, #7
_021FD14C:
add r0, r5, #0
mov r1, #2
mov r2, #1
mov r3, #0x68
str r6, [sp]
bl ov96_021EB408
mov r0, #9
str r0, [sp]
add r0, r5, #0
mov r1, #2
mov r2, #1
mov r3, #0x68
bl ov96_021EB408
mov r0, #0xb
str r0, [sp]
add r0, r5, #0
mov r1, #2
mov r2, #1
mov r3, #0x68
bl ov96_021EB408
mov r0, #0xd
str r0, [sp]
add r0, r5, #0
mov r1, #2
mov r2, #1
mov r3, #0x68
bl ov96_021EB408
add r4, r4, #1
cmp r4, #4
blt _021FD14C
mov r4, #0
mov r6, #0xe
_021FD194:
add r0, r5, #0
mov r1, #2
mov r2, #1
mov r3, #0x68
str r6, [sp]
bl ov96_021EB408
add r4, r4, #1
cmp r4, #4
blt _021FD194
mov r0, #0xc
mov r1, #1
str r0, [sp]
add r0, r5, #0
add r2, r1, #0
mov r3, #0x68
bl ov96_021EB408
mov r0, #0xf
mov r1, #1
str r0, [sp]
add r0, r5, #0
add r2, r1, #0
mov r3, #0x68
bl ov96_021EB408
mov r6, #0
add r4, r7, #0
_021FD1CC:
add r0, r5, #0
mov r1, #0x68
mov r2, #6
bl ov96_021EB4F4
ldr r1, _021FD2DC ; =0x000004D8
add r6, r6, #1
str r0, [r4, r1]
add r4, #0xc
cmp r6, #0x1e
blt _021FD1CC
mov r6, #0
add r4, r7, #0
_021FD1E6:
add r0, r5, #0
mov r1, #0x68
mov r2, #7
bl ov96_021EB4F4
add r1, r4, #0
add r1, #0xa4
str r0, [r1]
add r0, r5, #0
mov r1, #0x68
mov r2, #9
bl ov96_021EB4F4
add r1, r4, #0
add r1, #0x9c
str r0, [r1]
add r0, r5, #0
mov r1, #0x68
mov r2, #0xb
bl ov96_021EB4F4
add r1, r4, #0
add r1, #0xa8
str r0, [r1]
add r0, r5, #0
mov r1, #0x68
mov r2, #0xd
bl ov96_021EB4F4
add r1, r4, #0
add r1, #0xa0
str r0, [r1]
add r0, r4, #0
add r0, #0xa4
ldr r0, [r0]
mov r1, #3
bl ov96_021EB564
add r0, r4, #0
add r0, #0xa0
ldr r0, [r0]
mov r1, #8
bl ov96_021EB564
add r6, r6, #1
add r4, #0xd4
cmp r6, #4
blt _021FD1E6
mov r6, #0
add r4, r7, #0
_021FD24A:
add r0, r5, #0
mov r1, #0x68
mov r2, #0xe
bl ov96_021EB4F4
mov r1, #0xf3
lsl r1, r1, #2
str r0, [r4, r1]
add r6, r6, #1
add r4, r4, #4
cmp r6, #4
blt _021FD24A
add r0, r5, #0
mov r1, #0x68
mov r2, #0xc
bl ov96_021EB4F4
str r0, [r7, #0x1c]
mov r1, #0xb
bl ov96_021EB564
mov r1, #1
ldr r0, [r7, #0x1c]
add r2, r1, #0
bl ov96_021EB52C
mov r0, #2
lsl r0, r0, #0x10
str r0, [sp, #4]
lsr r0, r0, #1
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
ldr r0, [r7, #0x1c]
add r1, sp, #4
bl ov96_021EB588
add r0, r5, #0
mov r1, #0x68
mov r2, #0xf
bl ov96_021EB4F4
str r0, [r7, #0x28]
mov r1, #0xa
bl ov96_021EB564
ldr r0, [r7, #0x18]
bl ov96_021EB5E8
add r1, r0, #0
mov r0, #0xf1
lsl r0, r0, #2
ldr r0, [r7, r0]
ldr r3, [r7, #0x14]
mov r2, #0
bl ov96_021EA424
str r0, [r7, #0x20]
ldr r0, [r7, #0x18]
bl ov96_021EB5E8
add r1, r0, #0
mov r0, #0xf1
lsl r0, r0, #2
ldr r0, [r7, r0]
ldr r3, [r7, #0x14]
mov r2, #0
bl ov96_021EA424
str r0, [r7, #0x24]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
_021FD2DC: .word 0x000004D8
thumb_func_end ov96_021FD128
thumb_func_start ov96_021FD2E0
ov96_021FD2E0: ; 0x021FD2E0
push {r4, r5, r6, r7, lr}
sub sp, #0x2c
str r1, [sp, #0x10]
str r0, [sp, #0xc]
bl ov96_021E5DC4
str r0, [sp, #0x18]
ldr r0, [sp, #0x10]
ldrb r0, [r0]
cmp r0, #0
beq _021FD300
cmp r0, #1
beq _021FD3A0
cmp r0, #2
beq _021FD3C6
b _021FD3D6
_021FD300:
mov r0, #0
str r0, [sp, #0x1c]
ldr r0, [sp, #0x18]
ldr r1, _021FD3DC ; =0x000004D4
str r0, [sp, #0x14]
add r5, r0, #0
add r7, r0, r1
_021FD30E:
ldr r1, [sp, #0x14]
ldr r0, _021FD3E0 ; =0x0000045C
ldr r0, [r1, r0]
lsl r1, r0, #0x18
asr r2, r0, #8
asr r0, r0, #0x10
lsl r2, r2, #0x18
lsl r0, r0, #0x10
lsr r1, r1, #0x18
lsr r6, r2, #0x18
lsr r4, r0, #0x10
cmp r1, #0
beq _021FD370
ldr r0, _021FD3DC ; =0x000004D4
mov r2, #1
str r2, [r5, r0]
add r0, #0xb
strb r1, [r5, r0]
ldr r0, _021FD3E4 ; =0x000004DC
sub r1, r1, #1
strh r4, [r5, r0]
add r0, r0, #2
strb r6, [r5, r0]
ldr r0, _021FD3E8 ; =0x000004D8
ldr r0, [r5, r0]
bl ov96_021EB564
ldr r0, _021FD3E8 ; =0x000004D8
mov r1, #1
ldr r0, [r5, r0]
add r2, r1, #0
bl ov96_021EB52C
mov r0, #0
add r4, #0x50
str r0, [sp, #0x28]
lsl r0, r4, #0xc
add r6, #0x20
str r0, [sp, #0x20]
lsl r0, r6, #0xc
str r0, [sp, #0x24]
ldr r0, _021FD3E8 ; =0x000004D8
add r1, sp, #0x20
ldr r0, [r5, r0]
bl ov96_021EB588
add r0, r7, #0
bl ov96_021FFB44
_021FD370:
ldr r0, [sp, #0x14]
add r5, #0xc
add r0, r0, #4
str r0, [sp, #0x14]
ldr r0, [sp, #0x1c]
add r7, #0xc
add r0, r0, #1
str r0, [sp, #0x1c]
cmp r0, #0x1e
blt _021FD30E
ldr r0, [sp, #0x18]
mov r1, #0
bl ov96_021FEAEC
ldr r0, [sp, #0x10]
ldrb r0, [r0]
add r1, r0, #1
ldr r0, [sp, #0x10]
strb r1, [r0]
ldr r0, [sp, #0xc]
mov r1, #0x12
bl ov96_021E601C
b _021FD3D6
_021FD3A0:
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [sp, #0x18]
mov r1, #3
ldr r0, [r0, #0x14]
add r2, r1, #0
str r0, [sp, #8]
mov r0, #2
mov r3, #0
bl BeginNormalPaletteFade
ldr r0, [sp, #0x10]
ldrb r0, [r0]
add r1, r0, #1
ldr r0, [sp, #0x10]
strb r1, [r0]
b _021FD3D6
_021FD3C6:
bl IsPaletteFadeFinished
cmp r0, #0
beq _021FD3D6
ldr r0, [sp, #0xc]
mov r1, #1
bl ov96_021E5FC8
_021FD3D6:
mov r0, #0
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021FD3DC: .word 0x000004D4
_021FD3E0: .word 0x0000045C
_021FD3E4: .word 0x000004DC
_021FD3E8: .word 0x000004D8
thumb_func_end ov96_021FD2E0
thumb_func_start ov96_021FD3EC
ov96_021FD3EC: ; 0x021FD3EC
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r4, r1, #0
add r5, r0, #0
bl ov96_021E5DC4
add r6, r0, #0
ldrb r0, [r4]
cmp r0, #0
beq _021FD40A
cmp r0, #1
beq _021FD41C
cmp r0, #2
beq _021FD434
b _021FD464
_021FD40A:
add r0, r5, #0
bl ov96_021E637C
cmp r0, #0
beq _021FD464
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021FD464
_021FD41C:
add r0, r5, #0
bl ov96_021FD4D0
add r0, r5, #0
bl ov96_021FDB64
cmp r0, #0
beq _021FD464
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _021FD464
_021FD434:
add r0, r5, #0
bl ov96_021FD4D0
add r0, r5, #0
bl ov96_021E667C
cmp r0, #0
beq _021FD464
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r6, #0x14]
str r0, [sp, #8]
mov r0, #0
add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
bl BeginNormalPaletteFade
add r0, r5, #0
mov r1, #2
bl ov96_021E5FC8
_021FD464:
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021FD3EC
thumb_func_start ov96_021FD46C
ov96_021FD46C: ; 0x021FD46C
push {r4, r5, r6, lr}
add r4, r1, #0
add r6, r0, #0
bl ov96_021E5DC4
add r5, r0, #0
ldrb r0, [r4]
cmp r0, #0
bne _021FD48E
bl IsPaletteFadeFinished
cmp r0, #0
beq _021FD48A
mov r0, #1
strb r0, [r4]
_021FD48A:
mov r0, #0
pop {r4, r5, r6, pc}
_021FD48E:
add r0, r6, #0
bl ov96_021E5F24
cmp r0, #0
beq _021FD49C
mov r0, #1
pop {r4, r5, r6, pc}
_021FD49C:
mov r4, #0
add r5, #0x30
_021FD4A0:
ldr r2, [r5, #0x7c]
lsl r1, r4, #0x18
asr r3, r2, #0xb
lsr r3, r3, #0x14
add r3, r2, r3
asr r2, r3, #0xc
add r3, r5, #0
add r3, #0x9c
ldrb r3, [r3]
add r0, r6, #0
lsr r1, r1, #0x18
lsl r3, r3, #0xa
add r2, r2, r3
lsl r2, r2, #0x10
lsr r2, r2, #0x10
bl ov96_021E5FB0
add r4, r4, #1
add r5, #0xd4
cmp r4, #4
blt _021FD4A0
mov r0, #1
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021FD46C
thumb_func_start ov96_021FD4D0
ov96_021FD4D0: ; 0x021FD4D0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x68
str r0, [sp, #4]
bl ov96_021E5F54
str r0, [sp, #0x2c]
ldr r0, [sp, #4]
bl ov96_021E5DC4
str r0, [sp, #0x30]
ldr r0, [sp, #4]
bl ov96_021E5F24
cmp r0, #0
beq _021FD4F0
b _021FDA18
_021FD4F0:
mov r1, #0xf
ldr r0, [sp, #0x30]
lsl r1, r1, #6
ldrb r0, [r0, r1]
cmp r0, #0
beq _021FD512
ldr r0, [sp, #0x2c]
add r0, #0x28
str r0, [sp, #0x2c]
bl ov96_021E8A20
add r1, r0, #0
ldr r0, [sp, #0x30]
bl ov96_021FDA30
add sp, #0x68
pop {r3, r4, r5, r6, r7, pc}
_021FD512:
ldr r0, [sp, #0x2c]
add r0, #0x50
bl ov96_021E8A20
add r4, r0, #0
ldr r0, [sp, #0x2c]
bl ov96_021E8A20
add r3, r0, #0
mov r2, #4
_021FD526:
ldmia r3!, {r0, r1}
stmia r4!, {r0, r1}
sub r2, r2, #1
bne _021FD526
ldr r0, [r3]
mov r1, #0x19
str r0, [r4]
ldr r0, [sp, #0x30]
lsl r1, r1, #6
ldrh r0, [r0, r1]
cmp r0, #0
beq _021FD544
sub r2, r0, #1
ldr r0, [sp, #0x30]
strh r2, [r0, r1]
_021FD544:
ldr r0, [sp, #0x2c]
add r0, #0x28
bl ov96_021E8A20
ldr r4, [sp, #0x30]
mov r0, #0
str r0, [sp, #0x34]
ldr r0, [sp, #0x2c]
add r5, r4, #0
str r0, [sp, #0x1c]
add r0, #0x50
str r0, [sp, #0x1c]
add r0, r4, #0
str r0, [sp, #0x18]
add r0, #0x30
str r0, [sp, #0x18]
add r0, r4, #0
str r0, [sp, #0x14]
add r0, #0xe0
str r0, [sp, #0x14]
add r0, r4, #0
str r0, [sp, #0x10]
add r0, #0xec
str r0, [sp, #0x10]
add r0, r4, #0
str r0, [sp, #0xc]
add r0, #0xbc
add r7, r4, #0
str r0, [sp, #0xc]
str r0, [sp, #8]
_021FD580:
ldr r0, [sp, #0x1c]
bl ov96_021E8A20
add r6, r0, #0
ldr r0, [r6]
cmp r0, #0
beq _021FD5C6
mov r0, #0xe
lsl r0, r0, #6
ldr r1, [r4, r0]
cmp r1, #0
beq _021FD5AA
add r0, r0, #4
ldr r0, [r4, r0]
cmp r0, #0
beq _021FD5AA
mov r0, #0xe
mov r1, #0
lsl r0, r0, #6
str r1, [r4, r0]
b _021FD5D2
_021FD5AA:
cmp r1, #0
bne _021FD5D2
mov r0, #0xe1
lsl r0, r0, #2
ldr r0, [r4, r0]
cmp r0, #0
bne _021FD5D2
mov r0, #0xe
mov r1, #1
lsl r0, r0, #6
str r1, [r4, r0]
add r0, r0, #4
str r1, [r4, r0]
b _021FD5D2
_021FD5C6:
mov r0, #0xe
mov r1, #0
lsl r0, r0, #6
str r1, [r4, r0]
add r0, r0, #4
str r1, [r4, r0]
_021FD5D2:
ldrb r1, [r6, #4]
ldrb r2, [r6, #5]
ldr r0, [sp, #0x30]
bl ov96_021FDE6C
ldr r1, [sp, #0x34]
add r2, r0, #0
lsl r1, r1, #0x18
ldr r0, [sp, #0x30]
lsr r1, r1, #0x18
bl ov96_021FFE5C
add r0, r5, #0
add r0, #0xcd
ldrb r0, [r0]
cmp r0, #0
beq _021FD674
add r0, r5, #0
add r0, #0xce
ldrb r1, [r0]
cmp r1, #1
bne _021FD622
ldrb r0, [r6, #8]
cmp r0, #1
bne _021FD622
add r0, r5, #0
add r0, #0xbb
ldrb r0, [r0]
mov r1, #3
add r0, r0, #1
bl _s32_div_f
add r0, r5, #0
add r0, #0xbb
strb r1, [r0]
add r1, r5, #0
add r1, #0xce
mov r0, #2
strb r0, [r1]
b _021FD640
_021FD622:
cmp r1, #2
bne _021FD640
ldrb r0, [r6, #8]
cmp r0, #2
bne _021FD640
add r1, r5, #0
add r1, #0xce
mov r0, #0
strb r0, [r1]
add r1, r5, #0
add r1, #0xcd
strb r0, [r1]
add r1, r5, #0
add r1, #0xd3
strb r0, [r1]
_021FD640:
mov r0, #0x3b
mov r1, #0
lsl r0, r0, #4
str r1, [r7, r0]
add r1, r5, #0
add r1, #0xdc
mov r0, #0
str r0, [r1]
add r1, r5, #0
add r1, #0xe0
str r0, [r1]
add r1, r5, #0
add r1, #0xe4
str r0, [r1]
add r1, r5, #0
add r3, r5, #0
add r1, #0xe8
add r2, r5, #0
add r3, #0xe0
str r0, [r1]
ldmia r3!, {r0, r1}
add r2, #0xec
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
b _021FD994
_021FD674:
add r0, r5, #0
add r0, #0xbb
ldrb r1, [r0]
mov r0, #0x1c
mul r0, r1
add r0, r5, r0
add r0, #0x60
ldrb r0, [r0]
cmp r0, #2
bne _021FD6BC
mov r0, #0x3b
mov r1, #0
lsl r0, r0, #4
str r1, [r7, r0]
add r1, r5, #0
add r1, #0xdc
mov r0, #0
str r0, [r1]
add r1, r5, #0
add r1, #0xe0
str r0, [r1]
add r1, r5, #0
add r1, #0xe4
str r0, [r1]
add r1, r5, #0
add r3, r5, #0
add r1, #0xe8
add r2, r5, #0
add r3, #0xe0
str r0, [r1]
ldmia r3!, {r0, r1}
add r2, #0xec
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
b _021FD994
_021FD6BC:
add r0, r5, #0
add r0, #0xd9
ldrb r0, [r0]
cmp r0, #0
beq _021FD6FA
mov r0, #0x3b
mov r1, #0
lsl r0, r0, #4
str r1, [r7, r0]
add r1, r5, #0
add r1, #0xdc
mov r0, #0
str r0, [r1]
add r1, r5, #0
add r1, #0xe0
str r0, [r1]
add r1, r5, #0
add r1, #0xe4
str r0, [r1]
add r1, r5, #0
add r3, r5, #0
add r1, #0xe8
add r2, r5, #0
add r3, #0xe0
str r0, [r1]
ldmia r3!, {r0, r1}
add r2, #0xec
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
b _021FD994
_021FD6FA:
mov r0, #0
str r0, [sp, #0x28]
mov r0, #0xe
lsl r0, r0, #6
ldr r0, [r4, r0]
cmp r0, #0
beq _021FD786
ldrb r1, [r6, #4]
ldrb r2, [r6, #5]
ldr r0, [sp, #0x30]
bl ov96_021FDE6C
cmp r0, #0
beq _021FD73C
add r1, r5, #0
add r1, #0xcd
mov r0, #1
strb r0, [r1]
add r1, r5, #0
add r1, #0xce
strb r0, [r1]
mov r1, #1
add r2, r5, #0
str r0, [sp]
lsl r1, r1, #8
add r2, #0xbb
ldrb r1, [r5, r1]
ldrb r2, [r2]
ldr r0, [sp, #4]
mov r3, #7
bl ov96_021E8228
b _021FD804
_021FD73C:
ldr r1, [sp, #0x34]
ldrb r2, [r6, #4]
lsl r1, r1, #0x18
ldrb r3, [r6, #5]
ldr r0, [sp, #0x30]
lsr r1, r1, #0x18
bl ov96_021FDE08
cmp r0, #0
beq _021FD804
mov r0, #0x3b
mov r1, #1
lsl r0, r0, #4
str r1, [r7, r0]
ldrb r0, [r6, #4]
add r3, r5, #0
add r2, r5, #0
lsl r1, r0, #0xc
add r0, r5, #0
add r0, #0xe0
str r1, [r0]
ldrb r0, [r6, #5]
add r3, #0xe0
add r2, #0xec
lsl r1, r0, #0xc
add r0, r5, #0
add r0, #0xe4
str r1, [r0]
add r1, r5, #0
add r1, #0xe8
mov r0, #0
str r0, [r1]
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
b _021FD804
_021FD786:
mov r0, #0xe1
lsl r0, r0, #2
ldr r0, [r4, r0]
cmp r0, #0
beq _021FD7D4
add r0, r5, #0
add r0, #0xdc
ldr r0, [r0]
cmp r0, #0xff
bge _021FD7AA
add r0, r5, #0
add r0, #0xdc
ldr r0, [r0]
add r1, r0, #1
add r0, r5, #0
add r0, #0xdc
str r1, [r0]
b _021FD7B2
_021FD7AA:
ldr r1, [sp, #0x30]
ldr r0, _021FDA1C ; =0x000003C2
mov r2, #1
strb r2, [r1, r0]
_021FD7B2:
mov r0, #0x3b
lsl r0, r0, #4
ldr r0, [r7, r0]
cmp r0, #0
bne _021FD7BE
b _021FD994
_021FD7BE:
ldrb r0, [r6, #4]
lsl r1, r0, #0xc
add r0, r5, #0
add r0, #0xec
str r1, [r0]
ldrb r0, [r6, #5]
lsl r1, r0, #0xc
add r0, r5, #0
add r0, #0xf0
str r1, [r0]
b _021FD804
_021FD7D4:
mov r0, #0x3b
lsl r0, r0, #4
ldr r0, [r7, r0]
cmp r0, #0
beq _021FD800
add r0, r5, #0
add r0, #0xdc
ldr r0, [r0]
cmp r0, #0x1e
bgt _021FD7F0
add r1, r5, #0
add r1, #0xda
mov r0, #1
strb r0, [r1]
_021FD7F0:
mov r0, #0x3b
mov r1, #0
lsl r0, r0, #4
str r1, [r7, r0]
add r2, r1, #0
ldr r1, [sp, #0x30]
add r0, #0x12
strb r2, [r1, r0]
_021FD800:
mov r0, #1
str r0, [sp, #0x28]
_021FD804:
add r0, r5, #0
add r0, #0xda
ldrb r0, [r0]
cmp r0, #0
bne _021FD810
b _021FD964
_021FD810:
mov r1, #0
add r0, sp, #0x44
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
add r0, r5, #0
add r0, #0xbb
ldrb r1, [r0]
mov r0, #0x1c
mul r0, r1
add r2, r5, r0
ldr r0, [r2, #0x48]
ldr r6, [r2, #0x4c]
str r0, [sp, #0x24]
ldr r0, [sp, #0x18]
bl ov96_021FF6DC
str r0, [sp, #0x20]
ldr r0, [sp, #0x24]
add r1, r6, #0
bl _fmul
bl _f2d
ldr r3, _021FDA20 ; =0x40200000
mov r2, #0
bl _ddiv
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FDA24 ; =0x40B00000
mov r0, #0
bl _dmul
bl _dfix
add r6, r0, #0
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x14]
add r2, sp, #0x50
bl VEC_Subtract
ldr r1, [sp, #0x50]
cmp r1, #0
bge _021FD89C
ldr r0, _021FDA28 ; =0xFFFF0000
cmp r1, r0
bge _021FD894
add r1, r5, #0
add r1, #0xcd
mov r0, #1
strb r0, [r1]
add r1, r5, #0
add r1, #0xce
strb r0, [r1]
mov r1, #1
add r2, r5, #0
str r0, [sp]
lsl r1, r1, #8
add r2, #0xbb
ldrb r1, [r5, r1]
ldrb r2, [r2]
ldr r0, [sp, #4]
mov r3, #7
bl ov96_021E8228
_021FD894:
mov r0, #0
str r0, [sp, #0x50]
str r0, [sp, #0x54]
str r0, [sp, #0x58]
_021FD89C:
add r1, sp, #0x50
add r0, r6, #0
add r2, sp, #0x44
add r3, r1, #0
bl VEC_MultAdd
add r0, sp, #0x50
bl VEC_Mag
asr r1, r0, #0xb
lsr r1, r1, #0x14
add r1, r0, r1
asr r0, r1, #0xc
bl _fflt
add r3, r5, #0
add r3, #0xbc
add r2, sp, #0x5c
ldmia r3!, {r0, r1}
add r6, r2, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
add r1, sp, #0x50
str r0, [r2]
add r0, r6, #0
add r2, r6, #0
bl ov96_021FF72C
add r0, r6, #0
bl VEC_Mag
bl _fflt
add r6, r0, #0
ldr r0, _021FDA2C ; =0x45800000
ldr r1, [sp, #0x20]
bl _fmul
add r1, r0, #0
add r0, r6, #0
bl _fgr
bls _021FD91C
mov r1, #0
add r0, sp, #0x38
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
add r0, sp, #0x5c
add r1, r0, #0
bl VEC_Normalize
ldr r0, _021FDA2C ; =0x45800000
ldr r1, [sp, #0x20]
bl _fmul
bl _ffix
ldr r3, [sp, #0xc]
add r1, sp, #0x5c
add r2, sp, #0x38
bl VEC_MultAdd
b _021FD926
_021FD91C:
ldr r0, [sp, #8]
ldr r2, [sp, #0xc]
add r1, sp, #0x50
bl ov96_021FF72C
_021FD926:
ldr r0, [sp, #0x18]
add r0, #0x8c
bl VEC_Mag
ldr r1, [sp, #0x18]
add r1, #0x8b
ldrb r2, [r1]
mov r1, #0x1c
add r3, r2, #0
mul r3, r1
ldr r1, [sp, #0x18]
add r1, r1, r3
add r1, #0x2e
ldrb r1, [r1]
sub r1, r1, #3
lsl r1, r1, #0xc
cmp r0, r1
blt _021FD95C
ldr r1, [sp, #0x18]
mov r0, #1
str r0, [sp]
add r1, #0xd0
ldrb r1, [r1]
ldr r0, [sp, #4]
mov r3, #6
bl ov96_021E8228
_021FD95C:
add r1, r5, #0
add r1, #0xda
mov r0, #0
strb r0, [r1]
_021FD964:
ldr r0, [sp, #0x28]
cmp r0, #0
beq _021FD994
add r1, r5, #0
add r1, #0xdc
mov r0, #0
str r0, [r1]
add r1, r5, #0
add r1, #0xe0
str r0, [r1]
add r1, r5, #0
add r1, #0xe4
str r0, [r1]
add r1, r5, #0
add r3, r5, #0
add r1, #0xe8
add r2, r5, #0
add r3, #0xe0
str r0, [r1]
ldmia r3!, {r0, r1}
add r2, #0xec
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
_021FD994:
ldr r0, [sp, #0x1c]
add r4, #0xc
add r0, #0x28
str r0, [sp, #0x1c]
ldr r0, [sp, #0x18]
add r5, #0xd4
add r0, #0xd4
str r0, [sp, #0x18]
ldr r0, [sp, #0x14]
add r7, r7, #4
add r0, #0xd4
str r0, [sp, #0x14]
ldr r0, [sp, #0x10]
add r0, #0xd4
str r0, [sp, #0x10]
ldr r0, [sp, #0xc]
add r0, #0xd4
str r0, [sp, #0xc]
ldr r0, [sp, #8]
add r0, #0xd4
str r0, [sp, #8]
ldr r0, [sp, #0x34]
add r0, r0, #1
str r0, [sp, #0x34]
cmp r0, #4
bge _021FD9CA
b _021FD580
_021FD9CA:
mov r2, #0xf7
ldr r1, [sp, #0x30]
lsl r2, r2, #2
ldr r1, [r1, r2]
mov r3, #0x19
ldr r2, [sp, #0x30]
lsl r3, r3, #6
ldrh r2, [r2, r3]
ldr r0, [sp, #4]
bl ov96_02200EF4
ldr r0, [sp, #4]
bl ov96_021FDE7C
mov r1, #0x19
ldr r0, [sp, #0x30]
lsl r1, r1, #6
ldrh r0, [r0, r1]
cmp r0, #0
bne _021FD9FC
mov r1, #0xf
mov r2, #1
lsl r1, r1, #6
ldr r0, [sp, #0x30]
b _021FDA04
_021FD9FC:
mov r1, #0xf
ldr r0, [sp, #0x30]
mov r2, #0
lsl r1, r1, #6
_021FDA04:
strb r2, [r0, r1]
ldr r0, [sp, #0x2c]
add r0, #0x28
str r0, [sp, #0x2c]
bl ov96_021E8A20
add r1, r0, #0
ldr r0, [sp, #0x30]
bl ov96_021FDA30
_021FDA18:
add sp, #0x68
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021FDA1C: .word 0x000003C2
_021FDA20: .word 0x40200000
_021FDA24: .word 0x40B00000
_021FDA28: .word 0xFFFF0000
_021FDA2C: .word 0x45800000
thumb_func_end ov96_021FD4D0
thumb_func_start ov96_021FDA30
ov96_021FDA30: ; 0x021FDA30
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
mov r2, #0
str r0, [sp]
mov lr, r2
add r0, r2, #0
str r0, [sp, #0x14]
ldr r3, [sp]
mov r0, lr
str r0, [sp, #0x10]
add r0, r1, #0
str r1, [sp, #4]
add r7, r2, #0
add r3, #0x30
str r0, [sp, #0xc]
mov r6, lr
_021FDA50:
add r0, r3, #0
add r0, #0x8b
add r4, r3, #0
add r4, #0xa2
ldrb r4, [r4]
ldrb r0, [r0]
mov r1, #0
lsl r4, r4, #2
add r0, r1, r0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r0, r0, r4
mov ip, r0
add r0, r3, #0
add r0, #0x9e
ldrb r4, [r0]
ldr r0, [sp, #0x10]
lsl r4, r0
mov r0, lr
add r0, r0, r4
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov lr, r0
add r0, r3, #0
add r0, #0x9d
ldrb r0, [r0]
lsl r4, r0, #7
add r0, r3, #0
add r0, #0x9c
ldrb r0, [r0]
add r5, r4, r0
ldr r0, [sp, #4]
add r0, r0, r7
str r0, [sp, #8]
add r0, r3, #0
add r0, #0x80
ldr r4, [r0]
asr r0, r4, #0xb
lsr r0, r0, #0x14
add r0, r4, r0
asr r4, r0, #0xc
ldr r0, [sp, #8]
strb r4, [r0, #8]
ldr r4, [r3, #0x7c]
asr r0, r4, #0xb
lsr r0, r0, #0x14
add r0, r4, r0
asr r4, r0, #0xc
ldr r0, [sp, #0xc]
strh r4, [r0]
ldr r0, [sp, #8]
mov r4, ip
strb r4, [r0, #0xc]
strb r5, [r0, #0x10]
add r4, r3, #0
_021FDABE:
add r0, r4, #0
add r0, #0x30
ldrb r0, [r0]
add r5, r1, r6
lsl r5, r5, #1
lsl r0, r5
add r1, r1, #1
add r2, r2, r0
add r4, #0x1c
cmp r1, #3
blt _021FDABE
ldr r0, [sp]
ldr r4, _021FDB60 ; =0x00000644
add r0, r0, r7
ldrb r1, [r0, r4]
ldr r0, [sp, #8]
add r6, r6, #3
strb r1, [r0, #0x1e]
add r0, r3, #0
add r0, #0xd1
ldrb r0, [r0]
add r3, #0xd4
add r1, r0, #0
lsl r1, r7
ldr r0, [sp, #0x14]
add r7, r7, #1
add r0, r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x14]
ldr r0, [sp, #0x10]
add r0, r0, #2
str r0, [sp, #0x10]
ldr r0, [sp, #0xc]
add r0, r0, #2
str r0, [sp, #0xc]
cmp r7, #4
blt _021FDA50
ldr r0, [sp, #4]
mov r1, lr
strb r1, [r0, #0x1d]
str r2, [r0, #0x14]
mov r1, #0xf
ldr r0, [sp]
lsl r1, r1, #6
ldrb r0, [r0, r1]
add r1, r4, #0
sub r1, #8
lsl r0, r0, #0x18
add r2, r2, r0
ldr r0, [sp, #4]
str r2, [r0, #0x14]
ldr r0, [sp]
ldrb r0, [r0, r1]
lsl r0, r0, #0x19
add r1, r2, r0
ldr r0, [sp, #4]
str r1, [r0, #0x14]
ldr r0, [sp, #0x14]
lsl r0, r0, #0x1a
add r1, r1, r0
ldr r0, [sp, #4]
str r1, [r0, #0x14]
ldr r0, [sp]
sub r1, r4, #6
ldrh r1, [r0, r1]
ldr r0, [sp, #4]
strh r1, [r0, #0x1a]
ldr r0, [sp]
sub r1, r4, #7
ldrb r1, [r0, r1]
ldr r0, [sp, #4]
strb r1, [r0, #0x1c]
ldr r0, [sp]
sub r1, r4, #4
ldrh r1, [r0, r1]
ldr r0, [sp, #4]
strh r1, [r0, #0x18]
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_021FDB60: .word 0x00000644
thumb_func_end ov96_021FDA30
thumb_func_start ov96_021FDB64
ov96_021FDB64: ; 0x021FDB64
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r7, r0, #0
bl ov96_021E5DC4
str r0, [sp, #4]
add r0, r7, #0
bl ov96_021E5F54
add r5, r0, #0
bl ov96_021E8A20
add r4, r0, #0
mov r0, #0
add r5, #0xf0
str r0, [r4]
add r0, r5, #0
bl ov96_021E8A20
ldr r0, [r0, #0x14]
mov r1, #1
asr r0, r0, #0x18
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _021FDC30
ldr r0, [sp, #4]
mov r2, #0
ldr r0, [r0, #0x28]
bl ov96_021EB52C
ldr r0, [sp, #4]
mov r1, #0
ldr r0, [r0, #0x20]
bl Set2dSpriteVisibleFlag
ldr r0, [sp, #4]
mov r1, #0
ldr r0, [r0, #0x24]
bl Set2dSpriteVisibleFlag
ldr r0, [sp, #4]
mov r1, #1
ldr r0, [r0, #0x18]
bl ov96_021EB63C
mov r1, #0xf2
ldr r0, [sp, #4]
lsl r1, r1, #2
ldr r0, [r0, r1]
mov r1, #1
bl ov96_021EB144
ldr r1, _021FDC74 ; =ov96_021FFEE8
add r0, r7, #0
bl ov96_021E8324
add r0, r7, #0
bl ov96_021E5F24
cmp r0, #0
bne _021FDC2A
mov r5, #0
_021FDBE2:
mov r0, #0xd4
add r1, r5, #0
mul r1, r0
ldr r0, [sp, #4]
mov r4, #0
add r6, r0, r1
_021FDBEE:
lsl r0, r4, #2
add r0, r6, r0
ldr r1, [r0, #0x3c]
add r2, r4, #0
asr r0, r1, #9
lsr r0, r0, #0x16
add r0, r1, r0
asr r1, r0, #0xa
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
add r0, r7, #0
add r1, r5, #0
mov r3, #3
bl ov96_021E8228
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _021FDBEE
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #4
blo _021FDBE2
_021FDC2A:
add sp, #8
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021FDC30:
bl System_GetTouchNew
cmp r0, #0
beq _021FDC52
add r0, r7, #0
bl ov96_021E5F24
add r1, r0, #0
mov r0, #1
lsl r1, r1, #0x18
str r0, [sp]
add r0, r7, #0
lsr r1, r1, #0x18
mov r2, #3
mov r3, #0
bl ov96_021E8228
_021FDC52:
bl System_GetTouchHeld
cmp r0, #0
beq _021FDC68
ldr r0, _021FDC78 ; =gSystem + 0x40
ldrh r1, [r0, #0x20]
strb r1, [r4, #4]
ldrh r0, [r0, #0x22]
strb r0, [r4, #5]
mov r0, #1
str r0, [r4]
_021FDC68:
add r0, r7, #0
bl ov96_021FDC7C
mov r0, #0
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021FDC74: .word ov96_021FFEE8
_021FDC78: .word gSystem + 0x40
thumb_func_end ov96_021FDB64
thumb_func_start ov96_021FDC7C
ov96_021FDC7C: ; 0x021FDC7C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
str r0, [sp]
bl ov96_021E5DC4
add r4, r0, #0
ldr r0, [sp]
bl ov96_021E5F54
str r0, [sp, #8]
add r0, #0xf0
bl ov96_021E8A20
add r7, r0, #0
ldr r0, [sp]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
mov r5, #0
add r6, r7, #0
_021FDCA8:
mov r0, #0x3e
lsl r0, r0, #4
lsl r1, r5, #0x18
ldrh r2, [r6]
ldr r0, [r4, r0]
lsr r1, r1, #0x18
bl ov96_0220050C
add r5, r5, #1
add r6, r6, #2
cmp r5, #4
blt _021FDCA8
ldr r0, [sp, #4]
mov r1, #0
lsl r5, r0, #1
ldrh r3, [r7, r5]
ldr r0, [r4]
add r2, r1, #0
bl ScheduleSetBgPosText
ldrh r3, [r7, r5]
ldr r0, [r4]
mov r1, #1
mov r2, #0
lsr r3, r3, #1
bl ScheduleSetBgPosText
ldrh r3, [r7, r5]
ldr r0, [r4]
mov r1, #2
mov r2, #0
lsl r3, r3, #1
bl ScheduleSetBgPosText
add r2, r4, #0
ldr r0, [sp]
ldr r1, [sp, #4]
ldr r3, [sp, #8]
add r2, #0x30
bl ov96_021FE550
ldrh r1, [r7, r5]
add r0, r4, #0
bl ov96_021FEAEC
ldr r0, [sp, #4]
add r0, r7, r0
ldrb r1, [r0, #0x10]
mov r0, #0x7f
and r0, r1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
ldr r0, [r7, #0x14]
asr r1, r0, #0x1a
mov r0, #0xf
and r0, r1
lsl r0, r0, #0x18
ldr r1, [sp, #4]
lsr r0, r0, #0x18
asr r0, r1
mov r1, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _021FDD2E
mov r2, #0
b _021FDD30
_021FDD2E:
ldrh r2, [r7, r5]
_021FDD30:
mov r0, #0x3e
lsl r0, r0, #4
ldr r0, [r4, r0]
add r1, r6, #0
bl ov96_022005B4
ldr r0, [r7, #0x14]
asr r1, r0, #0x18
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bne _021FDD54
add r0, r4, #0
add r0, #0x20
add r1, r6, #0
bl ov96_021FFC34
_021FDD54:
mov r0, #0x3e
lsl r0, r0, #4
ldrh r1, [r7, #0x18]
ldr r0, [r4, r0]
bl ov96_02200A64
ldr r0, [sp, #4]
add r0, r7, r0
ldrb r0, [r0, #0x1e]
cmp r0, #4
bhi _021FDDE6
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021FDD76: ; jump table
.short _021FDD80 - _021FDD76 - 2 ; case 0
.short _021FDDD8 - _021FDD76 - 2 ; case 1
.short _021FDDA0 - _021FDD76 - 2 ; case 2
.short _021FDD90 - _021FDD76 - 2 ; case 3
.short _021FDDBC - _021FDD76 - 2 ; case 4
_021FDD80:
ldr r0, _021FDDFC ; =0x00000642
mov r1, #0
strh r1, [r4, r0]
ldr r0, [r4, #0x1c]
mov r1, #0xb
bl ov96_021EB570
b _021FDDE6
_021FDD90:
ldr r0, _021FDDFC ; =0x00000642
mov r1, #0
strh r1, [r4, r0]
ldr r0, [r4, #0x1c]
mov r1, #0xd
bl ov96_021EB570
b _021FDDE6
_021FDDA0:
ldr r0, _021FDDFC ; =0x00000642
ldrh r1, [r4, r0]
cmp r1, #0
bne _021FDDB2
mov r1, #1
strh r1, [r4, r0]
ldr r0, _021FDE00 ; =0x0000089B
bl PlaySE
_021FDDB2:
ldr r0, [r4, #0x1c]
mov r1, #0xc
bl ov96_021EB570
b _021FDDE6
_021FDDBC:
ldr r0, _021FDDFC ; =0x00000642
ldrh r1, [r4, r0]
cmp r1, #0
bne _021FDDCE
mov r1, #1
strh r1, [r4, r0]
ldr r0, _021FDE04 ; =0x0000089C
bl PlaySE
_021FDDCE:
ldr r0, [r4, #0x1c]
mov r1, #0xe
bl ov96_021EB570
b _021FDDE6
_021FDDD8:
ldr r0, _021FDDFC ; =0x00000642
mov r1, #0
strh r1, [r4, r0]
ldr r0, [r4, #0x1c]
mov r1, #0xf
bl ov96_021EB570
_021FDDE6:
ldrh r1, [r7, r5]
ldr r0, [r4]
bl ov96_021FFBD8
ldrh r1, [r7, #0x18]
ldr r0, [sp]
bl ov96_021E6454
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
_021FDDFC: .word 0x00000642
_021FDE00: .word 0x0000089B
_021FDE04: .word 0x0000089C
thumb_func_end ov96_021FDC7C
thumb_func_start ov96_021FDE08
ov96_021FDE08: ; 0x021FDE08
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r7, r2, #0
mov r2, #0xd4
add r0, #0x30
mul r2, r1
add r4, r0, r2
add r0, r4, #0
add r0, #0x8b
ldrb r0, [r0]
add r6, r3, #0
cmp r0, #3
blo _021FDE26
bl GF_AssertFail
_021FDE26:
add r0, r4, #0
add r0, #0x8b
ldrb r0, [r0]
mov r1, #0x50
lsl r0, r0, #2
ldr r5, [r4, r0]
add r0, sp, #4
str r0, [sp]
add r4, #0x80
ldr r2, [r4]
add r0, r5, #0
asr r3, r2, #0xb
lsr r3, r3, #0x14
add r3, r2, r3
asr r2, r3, #0xc
add r3, sp, #8
bl ov96_021EB0A4
str r6, [sp]
ldr r1, [sp, #8]
ldr r2, [sp, #4]
add r0, r5, #0
lsl r1, r1, #0xc
lsl r2, r2, #0xc
add r3, r7, #0
bl ov96_021EB0CC
cmp r0, #0
beq _021FDE66
add sp, #0xc
mov r0, #1
pop {r4, r5, r6, r7, pc}
_021FDE66:
mov r0, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021FDE08
thumb_func_start ov96_021FDE6C
ov96_021FDE6C: ; 0x021FDE6C
cmp r1, #0x40
bhs _021FDE78
cmp r2, #0x20
bhs _021FDE78
mov r0, #1
bx lr
_021FDE78:
mov r0, #0
bx lr
thumb_func_end ov96_021FDE6C
thumb_func_start ov96_021FDE7C
ov96_021FDE7C: ; 0x021FDE7C
push {r4, r5, r6, r7, lr}
sub sp, #0x5c
str r0, [sp, #8]
bl ov96_021E5DC4
add r5, r0, #0
ldr r1, _021FE1B4 ; =0x0000063C
mov r7, #0
str r0, [sp, #0x14]
strb r7, [r0, r1]
add r4, sp, #0x1c
add r6, r0, #0
add r5, #0x30
_021FDE96:
mov r0, #0
strb r0, [r4]
add r0, r6, #0
add r0, #0xd9
ldrb r0, [r0]
cmp r0, #0
beq _021FDEB2
ldr r0, [sp, #8]
ldr r1, [sp, #0x14]
add r2, r5, #0
bl ov96_021FE538
mov r0, #1
strb r0, [r4]
_021FDEB2:
add r7, r7, #1
add r4, r4, #1
add r6, #0xd4
add r5, #0xd4
cmp r7, #4
blt _021FDE96
mov r0, #0
ldr r5, [sp, #0x14]
str r0, [sp, #0xc]
add r0, sp, #0x1c
str r0, [sp, #0x10]
add r5, #0x30
_021FDECA:
ldr r0, [sp, #0x10]
ldrb r0, [r0]
cmp r0, #0
beq _021FDED4
b _021FE51E
_021FDED4:
add r3, r5, #0
add r3, #0x7c
ldmia r3!, {r0, r1}
add r2, sp, #0x44
stmia r2!, {r0, r1}
ldr r0, [r3]
add r1, r5, #0
str r0, [r2]
add r0, r5, #0
add r0, #0x7c
add r1, #0x8c
add r2, r0, #0
bl VEC_Add
add r0, r5, #0
add r0, #0x8b
ldrb r0, [r0]
lsl r0, r0, #2
add r2, r5, r0
add r0, r5, #0
add r0, #0x8c
ldr r1, [r2, #0xc]
ldr r0, [r0]
add r0, r1, r0
str r0, [r2, #0xc]
add r0, r5, #0
add r0, #0x80
mov r1, #2
ldr r0, [r0]
lsl r1, r1, #0x10
cmp r0, r1
bge _021FDF1C
add r0, r5, #0
add r0, #0x80
str r1, [r0]
b _021FDF2A
_021FDF1C:
mov r1, #0x2a
lsl r1, r1, #0xe
cmp r0, r1
ble _021FDF2A
add r0, r5, #0
add r0, #0x80
str r1, [r0]
_021FDF2A:
add r0, r5, #0
add r0, #0x8b
ldrb r0, [r0]
lsl r0, r0, #2
ldr r0, [r5, r0]
bl ov96_021EAF8C
add r2, r0, #0
add r0, r5, #0
add r0, #0x7c
str r0, [sp]
add r1, r5, #0
str r0, [sp, #4]
add r1, #0xcc
ldr r0, [sp, #0x14]
ldr r1, [r1]
add r3, sp, #0x44
bl ov96_021FF5A8
asr r1, r0, #8
lsl r1, r1, #0x18
lsl r0, r0, #0x18
lsr r1, r1, #0x18
lsr r0, r0, #0x18
cmp r1, #1
bne _021FDF62
mov r2, #1
b _021FDF64
_021FDF62:
mov r2, #0
_021FDF64:
add r1, r5, #0
add r1, #0xa5
strb r2, [r1]
add r1, r5, #0
add r1, #0xcc
str r0, [r1]
cmp r0, #9
bhi _021FDFFE
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021FDF80: ; jump table
.short _021FE10C - _021FDF80 - 2 ; case 0
.short _021FE10C - _021FDF80 - 2 ; case 1
.short _021FDF94 - _021FDF80 - 2 ; case 2
.short _021FDFB4 - _021FDF80 - 2 ; case 3
.short _021FDFD4 - _021FDF80 - 2 ; case 4
.short _021FDFF4 - _021FDF80 - 2 ; case 5
.short _021FE016 - _021FDF80 - 2 ; case 6
.short _021FE054 - _021FDF80 - 2 ; case 7
.short _021FE092 - _021FDF80 - 2 ; case 8
.short _021FE0D0 - _021FDF80 - 2 ; case 9
_021FDF94:
add r0, r5, #0
add r0, #0x90
ldr r0, [r0]
cmp r0, #0
ble _021FDFFE
add r0, r5, #0
add r0, #0x90
ldr r1, [r0]
mov r0, #0
mvn r0, r0
add r2, r1, #0
mul r2, r0
add r0, r5, #0
add r0, #0x90
str r2, [r0]
b _021FE10C
_021FDFB4:
add r0, r5, #0
add r0, #0x8c
ldr r0, [r0]
cmp r0, #0
bge _021FDFFE
add r0, r5, #0
add r0, #0x8c
ldr r1, [r0]
mov r0, #0
mvn r0, r0
add r2, r1, #0
mul r2, r0
add r0, r5, #0
add r0, #0x8c
str r2, [r0]
b _021FE10C
_021FDFD4:
add r0, r5, #0
add r0, #0x90
ldr r0, [r0]
cmp r0, #0
bge _021FDFFE
add r0, r5, #0
add r0, #0x90
ldr r1, [r0]
mov r0, #0
mvn r0, r0
add r2, r1, #0
mul r2, r0
add r0, r5, #0
add r0, #0x90
str r2, [r0]
b _021FE10C
_021FDFF4:
add r0, r5, #0
add r0, #0x8c
ldr r0, [r0]
cmp r0, #0
bgt _021FE000
_021FDFFE:
b _021FE10C
_021FE000:
add r0, r5, #0
add r0, #0x8c
ldr r1, [r0]
mov r0, #0
mvn r0, r0
add r2, r1, #0
mul r2, r0
add r0, r5, #0
add r0, #0x8c
str r2, [r0]
b _021FE10C
_021FE016:
add r0, r5, #0
add r0, #0x8c
ldr r0, [r0]
cmp r0, #0
ble _021FE034
add r0, r5, #0
add r0, #0x8c
ldr r1, [r0]
mov r0, #0
mvn r0, r0
add r2, r1, #0
mul r2, r0
add r0, r5, #0
add r0, #0x8c
str r2, [r0]
_021FE034:
add r0, r5, #0
add r0, #0x90
ldr r0, [r0]
cmp r0, #0
ble _021FE10C
add r0, r5, #0
add r0, #0x90
ldr r1, [r0]
mov r0, #0
mvn r0, r0
add r2, r1, #0
mul r2, r0
add r0, r5, #0
add r0, #0x90
str r2, [r0]
b _021FE10C
_021FE054:
add r0, r5, #0
add r0, #0x8c
ldr r0, [r0]
cmp r0, #0
bge _021FE072
add r0, r5, #0
add r0, #0x8c
ldr r1, [r0]
mov r0, #0
mvn r0, r0
add r2, r1, #0
mul r2, r0
add r0, r5, #0
add r0, #0x8c
str r2, [r0]
_021FE072:
add r0, r5, #0
add r0, #0x90
ldr r0, [r0]
cmp r0, #0
ble _021FE10C
add r0, r5, #0
add r0, #0x90
ldr r1, [r0]
mov r0, #0
mvn r0, r0
add r2, r1, #0
mul r2, r0
add r0, r5, #0
add r0, #0x90
str r2, [r0]
b _021FE10C
_021FE092:
add r0, r5, #0
add r0, #0x8c
ldr r0, [r0]
cmp r0, #0
bge _021FE0B0
add r0, r5, #0
add r0, #0x8c
ldr r1, [r0]
mov r0, #0
mvn r0, r0
add r2, r1, #0
mul r2, r0
add r0, r5, #0
add r0, #0x8c
str r2, [r0]
_021FE0B0:
add r0, r5, #0
add r0, #0x90
ldr r0, [r0]
cmp r0, #0
bge _021FE10C
add r0, r5, #0
add r0, #0x90
ldr r1, [r0]
mov r0, #0
mvn r0, r0
add r2, r1, #0
mul r2, r0
add r0, r5, #0
add r0, #0x90
str r2, [r0]
b _021FE10C
_021FE0D0:
add r0, r5, #0
add r0, #0x8c
ldr r0, [r0]
cmp r0, #0
ble _021FE0EE
add r0, r5, #0
add r0, #0x8c
ldr r1, [r0]
mov r0, #0
mvn r0, r0
add r2, r1, #0
mul r2, r0
add r0, r5, #0
add r0, #0x8c
str r2, [r0]
_021FE0EE:
add r0, r5, #0
add r0, #0x90
ldr r0, [r0]
cmp r0, #0
bge _021FE10C
add r0, r5, #0
add r0, #0x90
ldr r1, [r0]
mov r0, #0
mvn r0, r0
add r2, r1, #0
mul r2, r0
add r0, r5, #0
add r0, #0x90
str r2, [r0]
_021FE10C:
ldr r1, [sp, #0x14]
ldr r0, [sp, #8]
add r1, #0x30
add r2, sp, #0x50
bl ov96_021FF764
ldr r1, _021FE1B4 ; =0x0000063C
ldr r2, [sp, #0x14]
ldrb r2, [r2, r1]
cmp r2, #0
bne _021FE14C
cmp r0, #0
beq _021FE14C
ldr r0, [sp, #0x14]
mov r2, #1
strb r2, [r0, r1]
ldr r2, [sp, #0x50]
asr r0, r2, #0xb
lsr r0, r0, #0x14
add r0, r2, r0
asr r3, r0, #0xc
add r2, r1, #2
ldr r0, [sp, #0x14]
add r1, r1, #1
strh r3, [r0, r2]
ldr r2, [sp, #0x54]
asr r0, r2, #0xb
lsr r0, r0, #0x14
add r0, r2, r0
asr r2, r0, #0xc
ldr r0, [sp, #0x14]
strb r2, [r0, r1]
_021FE14C:
ldr r4, [r5, #0x7c]
add r0, r4, #0
bl _dflt
ldr r3, _021FE1B8 ; =0x41500000
mov r2, #0
bl _dgeq
blo _021FE1BC
add r0, r4, #0
bl _dflt
ldr r3, _021FE1B8 ; =0x41500000
mov r2, #0
bl _dsub
bl _dfix
str r0, [r5, #0x7c]
add r0, r5, #0
add r0, #0xd1
ldrb r0, [r0]
cmp r0, #0
bne _021FE194
add r0, r5, #0
add r0, #0x9c
ldrb r0, [r0]
cmp r0, #0x3c
bhs _021FE194
add r0, r5, #0
add r0, #0x9c
ldrb r0, [r0]
add r1, r0, #1
add r0, r5, #0
add r0, #0x9c
strb r1, [r0]
_021FE194:
add r0, r5, #0
add r0, #0x9c
ldrb r1, [r0]
add r0, r5, #0
add r0, #0xa8
ldrb r0, [r0]
cmp r0, r1
bhs _021FE1AA
add r0, r5, #0
add r0, #0xa8
strb r1, [r0]
_021FE1AA:
add r0, r5, #0
mov r1, #0
add r0, #0xd1
strb r1, [r0]
b _021FE1FC
.balign 4, 0
_021FE1B4: .word 0x0000063C
_021FE1B8: .word 0x41500000
_021FE1BC:
cmp r4, #0
bge _021FE1FC
add r0, r4, #0
bl _dflt
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FE4EC ; =0x41500000
mov r0, #0
bl _dadd
bl _dfix
str r0, [r5, #0x7c]
add r0, r5, #0
add r0, #0x9c
ldrb r0, [r0]
cmp r0, #0
beq _021FE1F2
add r0, r5, #0
add r0, #0x9c
ldrb r0, [r0]
sub r1, r0, #1
add r0, r5, #0
add r0, #0x9c
strb r1, [r0]
b _021FE1FC
_021FE1F2:
bne _021FE1FC
add r0, r5, #0
mov r1, #1
add r0, #0xd1
strb r1, [r0]
_021FE1FC:
add r4, r5, #0
add r4, #0x8c
ldmia r4!, {r0, r1}
add r3, sp, #0x38
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r4]
str r0, [r3]
add r0, r2, #0
bl VEC_Mag
add r1, r5, #0
add r1, #0x9d
ldrb r1, [r1]
cmp r1, #0
bne _021FE28C
add r1, r5, #0
add r1, #0xa5
ldrb r1, [r1]
cmp r1, #0
beq _021FE28C
add r1, r5, #0
add r1, #0x8b
ldrb r2, [r1]
mov r1, #0x1c
mul r1, r2
add r1, r5, r1
add r1, #0x2c
ldrb r1, [r1]
lsl r6, r1, #0xc
cmp r0, r6
ble _021FE28C
add r1, sp, #0x2c
mov r0, #0
str r0, [r1]
add r4, r5, #0
str r0, [r1, #4]
add r3, sp, #0x20
add r4, #0x8c
str r0, [r1, #8]
ldmia r4!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r4]
add r1, r2, #0
str r0, [r3]
add r0, r2, #0
bl VEC_Normalize
add r1, sp, #0x20
add r0, r6, #0
add r2, sp, #0x2c
add r3, r1, #0
bl VEC_MultAdd
add r3, sp, #0x20
add r2, r5, #0
add r2, #0x8c
ldmia r3!, {r0, r1}
add r4, r2, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
add r3, sp, #0x38
str r0, [r2]
ldmia r4!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r4]
str r0, [r3]
add r0, r2, #0
bl VEC_Mag
_021FE28C:
cmp r0, #0
ble _021FE33E
mov r0, #0xfe
lsl r0, r0, #0x16
bl _f2d
add r2, r0, #0
add r3, r1, #0
ldr r0, _021FE4F0 ; =0x9999999A
ldr r1, _021FE4F4 ; =0x3FD99999
bl _dmul
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FE4F8 ; =0x40B00000
mov r0, #0
bl _dmul
bl _dfix
add r4, r0, #0
ldr r1, _021FE4FC ; =0x000003C2
ldr r0, [sp, #0x14]
ldrb r0, [r0, r1]
cmp r0, #0
beq _021FE2C6
mov r0, #3
lsl r0, r0, #0xc
add r4, r4, r0
_021FE2C6:
add r0, sp, #0x38
add r1, r0, #0
bl VEC_Normalize
ldr r0, [sp, #0x38]
asr r6, r4, #0x1f
asr r1, r0, #0x1f
add r2, r4, #0
add r3, r6, #0
bl _ll_mul
add r2, r0, #0
mov r0, #2
mov r3, #0
lsl r0, r0, #0xa
add r0, r2, r0
adc r1, r3
lsl r1, r1, #0x14
lsr r0, r0, #0xc
orr r0, r1
str r0, [sp, #0x38]
ldr r0, [sp, #0x3c]
add r2, r4, #0
asr r1, r0, #0x1f
add r3, r6, #0
bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
add r2, r0, r2
adc r1, r3
lsl r0, r1, #0x14
lsr r1, r2, #0xc
orr r1, r0
add r0, sp, #0x38
str r1, [sp, #0x3c]
bl VEC_Mag
add r4, r0, #0
add r0, r5, #0
add r0, #0x8c
bl VEC_Mag
cmp r0, r4
blt _021FE330
add r0, r5, #0
add r0, #0x8c
add r1, sp, #0x38
add r2, r0, #0
bl VEC_Subtract
b _021FE33E
_021FE330:
add r0, r5, #0
mov r1, #0
add r0, #0x8c
str r1, [r0]
add r0, r5, #0
add r0, #0x90
str r1, [r0]
_021FE33E:
add r0, r5, #0
add r0, #0x8c
bl VEC_Mag
add r1, r5, #0
add r1, #0x8b
ldrb r2, [r1]
mov r1, #0x1c
mul r1, r2
add r1, r5, r1
add r1, #0x2e
ldrb r2, [r1]
sub r1, r2, #1
lsl r1, r1, #0xc
cmp r0, r1
blt _021FE368
add r0, r5, #0
mov r1, #3
add r0, #0xa2
strb r1, [r0]
b _021FE390
_021FE368:
sub r1, r2, #3
lsl r1, r1, #0xc
cmp r0, r1
blt _021FE37A
add r0, r5, #0
mov r1, #2
add r0, #0xa2
strb r1, [r0]
b _021FE390
_021FE37A:
cmp r0, #0
bne _021FE388
add r0, r5, #0
mov r1, #0
add r0, #0xa2
strb r1, [r0]
b _021FE390
_021FE388:
add r0, r5, #0
mov r1, #1
add r0, #0xa2
strb r1, [r0]
_021FE390:
add r0, r5, #0
add r0, #0x9d
ldrb r0, [r0]
cmp r0, #0
beq _021FE39C
b _021FE51E
_021FE39C:
add r0, r5, #0
str r0, [sp, #0x18]
add r0, #0xa4
mov r7, #0
add r4, r5, #0
str r0, [sp, #0x18]
_021FE3A8:
add r0, r5, #0
add r0, #0x8b
ldrb r0, [r0]
ldr r6, [r4, #0x24]
cmp r7, r0
bne _021FE454
add r0, r4, #0
add r0, #0x30
ldrb r0, [r0]
cmp r0, #2
beq _021FE432
add r0, r5, #0
add r0, #0xa2
ldrb r0, [r0]
cmp r0, #3
bhi _021FE406
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021FE3D4: ; jump table
.short _021FE3DC - _021FE3D4 - 2 ; case 0
.short _021FE3F2 - _021FE3D4 - 2 ; case 1
.short _021FE3F2 - _021FE3D4 - 2 ; case 2
.short _021FE3F2 - _021FE3D4 - 2 ; case 3
_021FE3DC:
add r0, r6, #0
bl _f2d
ldr r3, _021FE500 ; =0x3FE00000
mov r2, #0
bl _dadd
bl _d2f
add r6, r0, #0
b _021FE406
_021FE3F2:
add r0, r6, #0
bl _f2d
ldr r3, _021FE500 ; =0x3FE00000
mov r2, #0
bl _dsub
bl _d2f
add r6, r0, #0
_021FE406:
add r0, r5, #0
add r0, #0xa3
ldrb r0, [r0]
cmp r0, #0
beq _021FE424
add r0, r6, #0
bl _f2d
ldr r3, _021FE504 ; =0x40440000
mov r2, #0
bl _dgr
bls _021FE472
ldr r6, _021FE508 ; =0x42200000
b _021FE472
_021FE424:
ldr r1, [r4, #0x28]
add r0, r6, #0
bl _fgr
bls _021FE472
ldr r6, [r4, #0x28]
b _021FE472
_021FE432:
bne _021FE472
ldr r0, [sp, #0x18]
ldrb r0, [r0]
sub r1, r0, #1
ldr r0, [sp, #0x18]
strb r1, [r0]
add r0, r5, #0
add r0, #0xa4
ldrb r0, [r0]
cmp r0, #0
bne _021FE472
add r1, r4, #0
add r1, #0x30
mov r0, #1
strb r0, [r1]
ldr r6, _021FE508 ; =0x42200000
b _021FE472
_021FE454:
add r0, r6, #0
bl _f2d
ldr r3, _021FE500 ; =0x3FE00000
mov r2, #0
bl _dadd
bl _d2f
ldr r1, [r4, #0x28]
add r6, r0, #0
bl _fgr
bls _021FE472
ldr r6, [r4, #0x28]
_021FE472:
add r0, r6, #0
mov r1, #0
bl _fleq
bhi _021FE4CE
add r0, r5, #0
add r0, #0x8b
ldrb r0, [r0]
cmp r7, r0
beq _021FE48A
bl GF_AssertFail
_021FE48A:
mov r0, #0
str r0, [r4, #0x24]
add r0, r4, #0
add r0, #0x30
ldrb r0, [r0]
cmp r0, #2
beq _021FE514
add r1, r4, #0
add r1, #0x30
mov r0, #2
strb r0, [r1]
add r1, r5, #0
add r1, #0xa3
mov r0, #1
strb r0, [r1]
add r0, r4, #0
add r0, #0x2f
ldrb r1, [r0]
add r0, r5, #0
add r0, #0xa4
strb r1, [r0]
mov r0, #1
add r1, r5, #0
add r2, r5, #0
str r0, [sp]
add r1, #0xd0
add r2, #0x8b
ldrb r1, [r1]
ldrb r2, [r2]
ldr r0, [sp, #8]
mov r3, #1
bl ov96_021E8228
b _021FE514
_021FE4CE:
add r0, r6, #0
bl _f2d
ldr r3, _021FE504 ; =0x40440000
mov r2, #0
bl _dleq
str r6, [r4, #0x24]
bhi _021FE50C
add r1, r4, #0
add r1, #0x30
mov r0, #1
strb r0, [r1]
b _021FE514
nop
_021FE4EC: .word 0x41500000
_021FE4F0: .word 0x9999999A
_021FE4F4: .word 0x3FD99999
_021FE4F8: .word 0x40B00000
_021FE4FC: .word 0x000003C2
_021FE500: .word 0x3FE00000
_021FE504: .word 0x40440000
_021FE508: .word 0x42200000
_021FE50C:
add r1, r4, #0
add r1, #0x30
mov r0, #0
strb r0, [r1]
_021FE514:
add r7, r7, #1
add r4, #0x1c
cmp r7, #3
bge _021FE51E
b _021FE3A8
_021FE51E:
ldr r0, [sp, #0x10]
add r5, #0xd4
add r0, r0, #1
str r0, [sp, #0x10]
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, #4
bge _021FE532
b _021FDECA
_021FE532:
add sp, #0x5c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021FDE7C
thumb_func_start ov96_021FE538
ov96_021FE538: ; 0x021FE538
add r0, r2, #0
add r0, #0xa9
ldrb r0, [r0]
cmp r0, #0
beq _021FE54E
add r0, r2, #0
add r0, #0xa9
ldrb r0, [r0]
add r2, #0xa9
sub r0, r0, #1
strb r0, [r2]
_021FE54E:
bx lr
thumb_func_end ov96_021FE538
thumb_func_start ov96_021FE550
ov96_021FE550: ; 0x021FE550
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x88
str r0, [sp, #0x18]
add r0, r3, #0
add r0, #0xf0
str r1, [sp, #0x1c]
add r5, r2, #0
str r3, [sp, #0x20]
bl ov96_021E8A20
str r0, [sp, #0x58]
ldr r0, [sp, #0x18]
bl ov96_021E5DC4
str r0, [sp, #0x5c]
ldr r0, [sp, #0x1c]
lsl r1, r0, #1
ldr r0, [sp, #0x58]
ldrh r0, [r0, r1]
add r1, sp, #0x7c
str r0, [sp, #0x60]
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
ldr r0, [sp, #0x58]
ldr r0, [r0, #0x14]
asr r1, r0, #0x19
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _021FE64E
ldr r0, [sp, #0x58]
ldrh r1, [r0, #0x1a]
ldr r0, [sp, #0x60]
sub r4, r0, r1
add r0, r4, #0
bl _dflt
ldr r3, _021FE8C4 ; =0x40880000
mov r2, #0
bl _dgeq
blo _021FE5D0
add r0, r4, #0
bl _dflt
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FE8C8 ; =0x40900000
mov r0, #0
bl _dsub
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FE8CC ; =0x40540000
mov r0, #0
bl _dadd
bl _dfix
add r4, r0, #0
b _021FE5D4
_021FE5D0:
mov r0, #0x50
sub r4, r0, r4
_021FE5D4:
lsl r0, r4, #0xc
str r0, [sp, #0x7c]
ldr r0, [sp, #0x58]
ldr r1, _021FE8D0 ; =0x000003C3
ldrb r0, [r0, #0x1c]
lsl r0, r0, #0xc
str r0, [sp, #0x80]
ldr r0, [sp, #0x5c]
ldrb r0, [r0, r1]
add r1, #9
lsl r2, r0, #2
ldr r0, [sp, #0x5c]
add r0, r0, r2
ldr r0, [r0, r1]
add r1, sp, #0x7c
bl ov96_021EB588
ldr r1, _021FE8D0 ; =0x000003C3
ldr r0, [sp, #0x5c]
ldrb r0, [r0, r1]
add r1, #9
lsl r2, r0, #2
ldr r0, [sp, #0x5c]
add r0, r0, r2
ldr r0, [r0, r1]
mov r1, #1
add r2, r1, #0
bl ov96_021EB52C
ldr r1, _021FE8D0 ; =0x000003C3
ldr r0, [sp, #0x5c]
ldrb r0, [r0, r1]
add r1, #9
lsl r2, r0, #2
ldr r0, [sp, #0x5c]
add r0, r0, r2
ldr r0, [r0, r1]
mov r1, #9
bl ov96_021EB564
ldr r0, _021FE8D0 ; =0x000003C3
ldr r1, [sp, #0x5c]
mov r2, #0x1e
ldrb r1, [r1, r0]
add r1, r1, #1
lsr r3, r1, #0x1f
lsl r1, r1, #0x1e
sub r1, r1, r3
ror r1, r2
add r3, r3, r1
ldr r1, [sp, #0x5c]
cmp r4, #0
strb r3, [r1, r0]
blt _021FE64E
add r2, #0xe2
cmp r4, r2
bge _021FE64E
ldr r0, _021FE8D4 ; =0x000008A3
mov r1, #5
bl sub_0200606C
_021FE64E:
ldr r0, [sp, #0x1c]
cmp r0, #0
bne _021FE65A
mov r0, #1
str r0, [sp, #0x28]
b _021FE65E
_021FE65A:
mov r0, #0
str r0, [sp, #0x28]
_021FE65E:
mov r0, #0
str r0, [sp, #0x30]
ldr r0, [sp, #0x58]
str r0, [sp, #0x44]
ldr r0, [sp, #0x30]
str r0, [sp, #0x40]
ldr r0, [sp, #0x20]
str r0, [sp, #0x3c]
add r0, #0x50
str r0, [sp, #0x3c]
_021FE672:
ldr r1, [sp, #0x1c]
ldr r0, [sp, #0x30]
cmp r1, r0
bne _021FE680
mov r0, #1
str r0, [sp, #0x24]
b _021FE684
_021FE680:
mov r0, #0
str r0, [sp, #0x24]
_021FE684:
ldr r1, [sp, #0x58]
ldr r0, [sp, #0x30]
add r0, r1, r0
str r0, [sp, #0x2c]
ldrb r0, [r0, #0xc]
mov r1, #3
str r0, [sp, #0x38]
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x34]
ldr r0, [sp, #0x44]
ldrh r4, [r0]
ldr r0, [sp, #0x60]
sub r6, r4, r0
bl _dflt
ldr r3, _021FE8D8 ; =0x4086A000
mov r2, #0
bl _dgr
bls _021FE6E8
mov r0, #0x4b
lsl r0, r0, #2
cmp r4, r0
bhs _021FE738
ldr r0, [sp, #0x60]
bl _dflt
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FE8C8 ; =0x40900000
mov r0, #0
bl _dsub
add r7, r0, #0
add r6, r1, #0
add r0, r4, #0
bl _dfltu
add r2, r0, #0
add r3, r1, #0
add r0, r7, #0
add r1, r6, #0
bl _dadd
bl _dfix
add r6, r0, #0
b _021FE738
_021FE6E8:
ldr r0, [sp, #0x60]
cmp r0, #0x64
bge _021FE738
add r0, r4, #0
bl _dfltu
ldr r3, _021FE8DC ; =0x408CE000
mov r2, #0
bl _dgr
bls _021FE738
ldr r0, [sp, #0x60]
bl _dflt
add r7, r0, #0
add r0, r4, #0
add r6, r1, #0
bl _dfltu
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FE8C8 ; =0x40900000
mov r0, #0
bl _dsub
add r2, r0, #0
add r3, r1, #0
add r0, r7, #0
add r1, r6, #0
bl _dadd
add r2, r0, #0
mov r0, #0
add r3, r1, #0
add r1, r0, #0
bl _dsub
bl _dfix
add r6, r0, #0
_021FE738:
ldr r1, [sp, #0x58]
ldr r0, [sp, #0x30]
add r6, #0x50
add r1, r1, r0
ldrb r0, [r1, #0x10]
asr r2, r0, #7
mov r0, #1
and r0, r2
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x50]
ldr r0, [sp, #0x58]
ldr r3, [sp, #0x34]
ldr r2, [sp, #0x40]
ldr r0, [r0, #0x14]
add r2, r3, r2
lsl r2, r2, #0x18
lsr r2, r2, #0x17
asr r0, r2
mov r2, #3
and r0, r2
str r0, [sp, #0x48]
ldr r0, [sp, #0x38]
asr r0, r0, #2
and r0, r2
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x4c]
ldr r0, [sp, #0x34]
lsl r0, r0, #2
ldr r0, [r5, r0]
str r0, [sp, #0x54]
lsl r0, r6, #0xc
str r0, [sp, #0x70]
ldrb r0, [r1, #8]
lsl r0, r0, #0xc
str r0, [sp, #0x74]
mov r0, #0
str r0, [sp, #0x78]
ldr r0, [sp, #0x18]
bl ov96_021E5D34
ldr r1, [sp, #0x30]
cmp r0, r1
bgt _021FE79C
ldr r0, [sp, #0x3c]
mov r4, #1
bl ov96_021E8A20
b _021FE7A4
_021FE79C:
ldr r0, [sp, #0x20]
mov r4, #0
bl ov96_021E8A20
_021FE7A4:
ldr r2, [sp, #0x1c]
ldr r1, [sp, #0x30]
cmp r2, r1
add r2, sp, #0x70
bne _021FE7D8
lsl r1, r1, #0x18
lsr r1, r1, #0x18
str r1, [sp]
ldr r1, [sp, #0x34]
ldr r3, [sp, #0x58]
str r1, [sp, #4]
str r0, [sp, #8]
ldr r0, [sp, #0x28]
mov r1, #0x3e
str r0, [sp, #0xc]
mov r0, #1
str r0, [sp, #0x10]
mov r0, #0
str r0, [sp, #0x14]
ldr r0, [sp, #0x5c]
lsl r1, r1, #4
ldr r0, [r0, r1]
add r1, r5, #0
bl ov96_021FEECC
b _021FE7FE
_021FE7D8:
lsl r1, r1, #0x18
lsr r1, r1, #0x18
str r1, [sp]
ldr r1, [sp, #0x34]
ldr r3, [sp, #0x58]
str r1, [sp, #4]
str r0, [sp, #8]
ldr r0, [sp, #0x28]
mov r1, #0x3e
str r0, [sp, #0xc]
mov r0, #0
str r0, [sp, #0x10]
ldr r0, [sp, #0x5c]
str r4, [sp, #0x14]
lsl r1, r1, #4
ldr r0, [r0, r1]
add r1, r5, #0
bl ov96_021FEECC
_021FE7FE:
ldr r0, [sp, #0x48]
mov r1, #0x3e
str r0, [sp]
ldr r0, [sp, #0x5c]
lsl r1, r1, #4
ldr r0, [r0, r1]
ldr r1, [sp, #0x30]
ldr r2, [sp, #0x34]
lsl r1, r1, #0x18
ldr r3, [sp, #0x50]
lsr r1, r1, #0x18
bl ov96_02200950
add r0, r5, #0
add r0, #0xc8
ldr r0, [r0]
cmp r0, #0
bne _021FE83C
mov r0, #0x1f
mvn r0, r0
cmp r6, r0
blt _021FE83C
mov r0, #0x12
lsl r0, r0, #4
cmp r6, r0
bgt _021FE83C
ldr r0, [sp, #0x54]
mov r1, #1
bl ov96_021EAB38
b _021FE844
_021FE83C:
ldr r0, [sp, #0x54]
mov r1, #0
bl ov96_021EAB38
_021FE844:
mov r7, #0
add r4, r5, #0
_021FE848:
ldr r2, [sp, #0x2c]
ldr r0, [r4]
ldrb r2, [r2, #8]
add r1, r6, #0
bl ov96_021EAF94
add r7, r7, #1
add r4, r4, #4
cmp r7, #3
blt _021FE848
ldr r0, [sp, #0x18]
bl ov96_021E5F24
ldr r1, [sp, #0x30]
cmp r1, r0
bne _021FE86C
mov r2, #1
b _021FE86E
_021FE86C:
mov r2, #0
_021FE86E:
ldr r1, [sp, #0x2c]
add r0, r5, #0
ldrb r1, [r1, #8]
bl ov96_021FFB7C
ldr r0, [sp, #0x18]
ldr r1, [sp, #0x30]
ldr r2, [sp, #0x34]
bl ov96_021E60C0
ldr r2, [r5, #0x6c]
add r1, sp, #0x70
bl ov96_021FFAEC
add r4, sp, #0x70
add r3, sp, #0x64
ldmia r4!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r4]
str r0, [r3]
mov r0, #6
ldr r1, [sp, #0x68]
lsl r0, r0, #0xe
sub r0, r1, r0
str r0, [sp, #0x68]
ldr r0, [r5, #0x78]
add r1, r2, #0
bl ov96_021EB588
ldr r0, [sp, #0x50]
cmp r0, #0
beq _021FE8B2
b _021FEA44
_021FE8B2:
ldr r0, [sp, #0x4c]
mov r4, #0
add r7, r4, #0
cmp r0, #2
beq _021FE8E0
cmp r0, #3
beq _021FE938
b _021FE990
nop
_021FE8C4: .word 0x40880000
_021FE8C8: .word 0x40900000
_021FE8CC: .word 0x40540000
_021FE8D0: .word 0x000003C3
_021FE8D4: .word 0x000008A3
_021FE8D8: .word 0x4086A000
_021FE8DC: .word 0x408CE000
_021FE8E0:
add r0, r5, #0
add r0, #0xa7
ldrb r1, [r0]
ldr r0, [sp, #0x4c]
cmp r0, r1
beq _021FE8FE
mov r1, #1
ldr r0, [r5, #0x78]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r5, #0x78]
mov r1, #4
bl ov96_021EB564
_021FE8FE:
ldr r0, [sp, #0x54]
mov r1, #8
bl ov96_021EAC5C
add r0, r5, #0
add r0, #0xd2
ldrb r0, [r0]
mov r4, #1
cmp r0, #1
bhi _021FE9AA
add r0, r5, #0
add r0, #0xd3
ldrb r0, [r0]
cmp r0, #0
bne _021FE9AA
ldr r1, _021FEAE8 ; =0x000008A7
ldr r2, [sp, #0x24]
add r0, r6, #0
bl ov96_021FFE38
add r0, r5, #0
mov r1, #2
add r0, #0xd2
strb r1, [r0]
add r0, r5, #0
add r1, r4, #0
add r0, #0xd3
strb r1, [r0]
b _021FE9AA
_021FE938:
add r0, r5, #0
add r0, #0xa7
ldrb r1, [r0]
ldr r0, [sp, #0x4c]
cmp r0, r1
beq _021FE956
mov r1, #1
ldr r0, [r5, #0x78]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r5, #0x78]
mov r1, #5
bl ov96_021EB564
_021FE956:
ldr r0, [sp, #0x54]
mov r1, #8
bl ov96_021EAC5C
add r0, r5, #0
add r0, #0xd2
ldrb r0, [r0]
mov r4, #1
cmp r0, #1
bhi _021FE9AA
add r0, r5, #0
add r0, #0xd3
ldrb r0, [r0]
cmp r0, #0
bne _021FE9AA
ldr r1, _021FEAE8 ; =0x000008A7
ldr r2, [sp, #0x24]
add r0, r6, #0
bl ov96_021FFE38
add r0, r5, #0
mov r1, #3
add r0, #0xd2
strb r1, [r0]
add r0, r5, #0
add r1, r4, #0
add r0, #0xd3
strb r1, [r0]
b _021FE9AA
_021FE990:
ldr r0, [r5, #0x78]
mov r1, #1
add r2, r4, #0
bl ov96_021EB52C
add r1, r5, #0
ldr r0, [sp, #0x4c]
add r1, #0xd2
strb r0, [r1]
add r0, r5, #0
add r1, r4, #0
add r0, #0xd3
strb r1, [r0]
_021FE9AA:
ldr r0, [sp, #0x48]
cmp r0, #1
beq _021FE9B6
cmp r0, #2
beq _021FE9CA
b _021FEA28
_021FE9B6:
mov r1, #1
ldr r0, [r5, #0x6c]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r5, #0x6c]
mov r1, #6
bl ov96_021EB570
b _021FEA32
_021FE9CA:
add r0, r5, #0
add r0, #0xa6
ldrb r1, [r0]
ldr r0, [sp, #0x48]
cmp r0, r1
beq _021FE9E8
mov r1, #1
ldr r0, [r5, #0x6c]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r5, #0x6c]
mov r1, #7
bl ov96_021EB564
_021FE9E8:
ldr r0, [sp, #0x54]
mov r1, #0x15
bl ov96_021EAC5C
ldr r0, [sp, #0x24]
mov r7, #1
cmp r0, #0
beq _021FEA10
mov r0, #3
bl sub_02006190
cmp r0, #0
bne _021FEA32
mov r1, #0x89
ldr r2, [sp, #0x24]
add r0, r6, #0
lsl r1, r1, #4
bl ov96_021FFE38
b _021FEA32
_021FEA10:
mov r0, #4
bl sub_02006190
cmp r0, #0
bne _021FEA32
mov r1, #0x89
ldr r2, [sp, #0x24]
add r0, r6, #0
lsl r1, r1, #4
bl ov96_021FFE38
b _021FEA32
_021FEA28:
ldr r0, [r5, #0x6c]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
_021FEA32:
cmp r4, #0
bne _021FEA58
cmp r7, #0
bne _021FEA58
ldr r0, [sp, #0x54]
mov r1, #0
bl ov96_021EAC5C
b _021FEA58
_021FEA44:
ldr r0, [r5, #0x78]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
ldr r0, [r5, #0x6c]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
_021FEA58:
add r1, r5, #0
ldr r0, [sp, #0x4c]
add r1, #0xa7
strb r0, [r1]
add r1, r5, #0
ldr r0, [sp, #0x48]
add r1, #0xa6
strb r0, [r1]
ldr r0, [sp, #0x44]
add r5, #0xd4
add r0, r0, #2
str r0, [sp, #0x44]
ldr r0, [sp, #0x40]
add r0, r0, #3
str r0, [sp, #0x40]
ldr r0, [sp, #0x3c]
add r0, #0x28
str r0, [sp, #0x3c]
ldr r0, [sp, #0x30]
add r0, r0, #1
str r0, [sp, #0x30]
cmp r0, #4
bge _021FEA88
b _021FE672
_021FEA88:
mov r1, #0x3e
ldr r0, [sp, #0x5c]
lsl r1, r1, #4
ldr r0, [r0, r1]
mov r1, #0
bl ov96_02200BC8
add r4, r0, #0
mov r1, #0x3e
ldr r0, [sp, #0x5c]
lsl r1, r1, #4
ldr r0, [r0, r1]
mov r1, #1
bl ov96_02200BC8
add r6, r0, #0
ldr r0, [sp, #0x58]
mov r2, #3
ldr r5, [r0, #0x14]
ldr r0, [sp, #0x1c]
lsl r1, r0, #1
add r3, r0, r1
mov r1, #0x3e
ldr r0, [sp, #0x5c]
lsl r1, r1, #4
ldr r0, [r0, r1]
add r1, r4, r3
lsl r1, r1, #0x18
add r3, r6, r3
lsl r3, r3, #0x18
lsr r1, r1, #0x17
add r4, r5, #0
asr r4, r1
add r1, r4, #0
and r1, r2
lsl r1, r1, #0x18
lsr r3, r3, #0x17
add r4, r5, #0
asr r4, r3
and r2, r4
lsl r2, r2, #0x18
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_02200A18
add sp, #0x88
pop {r3, r4, r5, r6, r7, pc}
nop
_021FEAE8: .word 0x000008A7
thumb_func_end ov96_021FE550
thumb_func_start ov96_021FEAEC
ov96_021FEAEC: ; 0x021FEAEC
push {r4, r5, r6, r7, lr}
sub sp, #0x14
str r0, [sp]
str r1, [sp, #4]
mov r6, #0
_021FEAF6:
mov r0, #0xc
add r1, r6, #0
mul r1, r0
ldr r0, [sp]
add r4, r0, r1
ldr r0, _021FEBD4 ; =0x000004D4
ldr r0, [r4, r0]
cmp r0, #0
beq _021FEBD0
ldr r0, _021FEBD8 ; =0x000004DE
ldrb r7, [r4, r0]
sub r0, r0, #2
ldrh r1, [r4, r0]
ldr r0, [sp, #4]
sub r5, r0, r1
add r0, r5, #0
bl _dflt
ldr r3, _021FEBDC ; =0x40880000
mov r2, #0
bl _dgeq
blo _021FEB4A
add r0, r5, #0
bl _dflt
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FEBE0 ; =0x40900000
mov r0, #0
bl _dsub
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FEBE4 ; =0x40540000
mov r0, #0
bl _dadd
bl _dfix
add r5, r0, #0
b _021FEB84
_021FEB4A:
add r0, r5, #0
bl _dflt
ldr r3, _021FEBE8 ; =0xC0880000
mov r2, #0
bl _dleq
bhi _021FEB80
add r0, r5, #0
bl _dflt
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FEBE0 ; =0x40900000
mov r0, #0
bl _dadd
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FEBE4 ; =0x40540000
mov r0, #0
bl _dsub
bl _dfix
add r5, r0, #0
b _021FEB84
_021FEB80:
mov r0, #0x50
sub r5, r0, r5
_021FEB84:
mov r0, #0
str r0, [sp, #0x10]
lsl r0, r5, #0xc
add r7, #0x20
str r0, [sp, #8]
lsl r0, r7, #0xc
str r0, [sp, #0xc]
ldr r0, _021FEBEC ; =0x000004D8
add r1, sp, #8
ldr r0, [r4, r0]
bl ov96_021EB588
mov r0, #0x1f
mvn r0, r0
cmp r5, r0
blt _021FEBBA
mov r0, #0x12
lsl r0, r0, #4
cmp r5, r0
bgt _021FEBBA
ldr r0, _021FEBEC ; =0x000004D8
mov r1, #1
ldr r0, [r4, r0]
add r2, r1, #0
bl ov96_021EB52C
b _021FEBC6
_021FEBBA:
ldr r0, _021FEBEC ; =0x000004D8
mov r1, #1
ldr r0, [r4, r0]
mov r2, #0
bl ov96_021EB52C
_021FEBC6:
add r0, r6, #1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
cmp r6, #0x1e
blo _021FEAF6
_021FEBD0:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021FEBD4: .word 0x000004D4
_021FEBD8: .word 0x000004DE
_021FEBDC: .word 0x40880000
_021FEBE0: .word 0x40900000
_021FEBE4: .word 0x40540000
_021FEBE8: .word 0xC0880000
_021FEBEC: .word 0x000004D8
thumb_func_end ov96_021FEAEC
thumb_func_start ov96_021FEBF0
ov96_021FEBF0: ; 0x021FEBF0
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r4, r1, #0
add r1, #0xa0
ldrb r1, [r1]
add r5, r2, #0
ldr r6, [sp, #0x24]
cmp r1, #3
bls _021FEC04
b _021FED34
_021FEC04:
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021FEC10: ; jump table
.short _021FEC18 - _021FEC10 - 2 ; case 0
.short _021FEC84 - _021FEC10 - 2 ; case 1
.short _021FECDE - _021FEC10 - 2 ; case 2
.short _021FED34 - _021FEC10 - 2 ; case 3
_021FEC18:
ldr r0, [r4, #0x74]
add r1, r5, #0
bl ov96_021EB588
ldr r0, [r4, #0x70]
add r1, r5, #0
bl ov96_021EB588
mov r1, #1
ldr r0, [r4, #0x70]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r4, #0x70]
mov r1, #8
bl ov96_021EB564
mov r1, #1
ldr r0, [r4, #0x74]
add r2, r1, #0
bl ov96_021EB52C
add r0, sp, #0x10
ldrb r0, [r0, #0x10]
mov r1, #0
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021EAB38
add r0, r4, #0
mov r1, #1
add r0, #0xc8
str r1, [r0]
add r0, r4, #0
mov r1, #0
add r0, #0xa1
strb r1, [r0]
ldr r1, [r5]
ldr r2, [sp, #0x2c]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
ldr r1, _021FED38 ; =0x000008B4
asr r0, r0, #0xc
bl ov96_021FFE38
add r0, r4, #0
add r0, #0xa0
ldrb r0, [r0]
add r4, #0xa0
add sp, #0xc
add r0, r0, #1
strb r0, [r4]
pop {r3, r4, r5, r6, pc}
_021FEC84:
ldr r0, [r4, #0x74]
bl ov96_021EB594
add r6, r0, #0
add r3, sp, #0
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
str r0, [r3]
mov r0, #5
ldr r1, [sp, #4]
lsl r0, r0, #0xe
sub r0, r1, r0
str r0, [sp, #4]
ldr r0, [r5]
add r1, r2, #0
str r0, [sp]
ldr r0, [r4, #0x74]
bl ov96_021EB588
ldr r0, [r4, #0x70]
add r1, r5, #0
bl ov96_021EB588
add r0, r4, #0
add r0, #0xa1
ldrb r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0xa1
strb r1, [r0]
add r0, r4, #0
add r0, #0xa1
ldrb r0, [r0]
cmp r0, #0x14
blo _021FED34
add r0, r4, #0
add r0, #0xa0
ldrb r0, [r0]
add r4, #0xa0
add sp, #0xc
add r0, r0, #1
strb r0, [r4]
pop {r3, r4, r5, r6, pc}
_021FECDE:
ldr r1, [sp, #0x2c]
cmp r1, #0
beq _021FED04
add r1, sp, #0x10
ldrb r1, [r1, #0x10]
bl ov96_022006BC
cmp r0, #0
beq _021FED34
mov r0, #1
strb r0, [r6, #8]
add r0, r4, #0
add r0, #0xa0
ldrb r0, [r0]
add r4, #0xa0
add sp, #0xc
add r0, r0, #1
strb r0, [r4]
pop {r3, r4, r5, r6, pc}
_021FED04:
ldr r1, [sp, #0x28]
cmp r1, #0
beq _021FED28
add r1, r3, #0
bl ov96_02200900
cmp r0, #0
beq _021FED34
mov r0, #1
strb r0, [r6, #8]
add r0, r4, #0
add r0, #0xa0
ldrb r0, [r0]
add r4, #0xa0
add sp, #0xc
add r0, r0, #1
strb r0, [r4]
pop {r3, r4, r5, r6, pc}
_021FED28:
add r0, r4, #0
add r0, #0xa0
ldrb r0, [r0]
add r4, #0xa0
add r0, r0, #1
strb r0, [r4]
_021FED34:
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
_021FED38: .word 0x000008B4
thumb_func_end ov96_021FEBF0
thumb_func_start ov96_021FED3C
ov96_021FED3C: ; 0x021FED3C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r4, r0, #0
add r0, #0xa0
ldrb r0, [r0]
add r5, r1, #0
add r6, r3, #0
cmp r0, #3
bls _021FED50
b _021FEE56
_021FED50:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021FED5C: ; jump table
.short _021FED64 - _021FED5C - 2 ; case 0
.short _021FEDC2 - _021FED5C - 2 ; case 1
.short _021FEE1C - _021FED5C - 2 ; case 2
.short _021FEE46 - _021FED5C - 2 ; case 3
_021FED64:
add r3, r5, #0
ldmia r3!, {r0, r1}
add r2, sp, #0xc
add r7, r2, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
mov r0, #0x19
ldr r1, [sp, #0x10]
lsl r0, r0, #0x10
sub r0, r1, r0
str r0, [sp, #0x10]
ldr r0, [r4, #0x74]
add r1, r7, #0
bl ov96_021EB588
mov r1, #1
ldr r0, [r4, #0x74]
add r2, r1, #0
bl ov96_021EB52C
lsl r0, r6, #2
ldr r0, [r4, r0]
mov r1, #0
bl ov96_021EAB38
add r0, r4, #0
mov r1, #0
add r0, #0xa1
strb r1, [r0]
ldr r1, [r5]
ldr r2, [sp, #0x38]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
ldr r1, _021FEE5C ; =0x000008B5
asr r0, r0, #0xc
bl ov96_021FFE38
add r0, r4, #0
add r0, #0xa0
ldrb r0, [r0]
add r4, #0xa0
add sp, #0x18
add r0, r0, #1
strb r0, [r4]
pop {r3, r4, r5, r6, r7, pc}
_021FEDC2:
ldr r0, [r4, #0x74]
bl ov96_021EB594
add r6, r0, #0
add r3, sp, #0
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
str r0, [r3]
mov r0, #5
ldr r1, [sp, #4]
lsl r0, r0, #0xe
add r0, r1, r0
str r0, [sp, #4]
ldr r0, [r5]
add r1, r2, #0
str r0, [sp]
ldr r0, [r4, #0x74]
bl ov96_021EB588
add r0, r4, #0
add r0, #0xa1
ldrb r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0xa1
strb r1, [r0]
add r0, r4, #0
add r0, #0xa1
ldrb r0, [r0]
cmp r0, #0x14
blo _021FEE56
ldr r0, [r4, #0x70]
add r1, r5, #0
bl ov96_021EB588
add r0, r4, #0
add r0, #0xa0
ldrb r0, [r0]
add r4, #0xa0
add sp, #0x18
add r0, r0, #1
strb r0, [r4]
pop {r3, r4, r5, r6, r7, pc}
_021FEE1C:
ldr r0, [sp, #0x34]
cmp r0, #0
beq _021FEE28
ldr r0, [sp, #0x30]
mov r1, #2
strb r1, [r0, #8]
_021FEE28:
ldr r0, [r4, #0x74]
add r1, r5, #0
bl ov96_021EB588
ldr r0, [r4, #0x70]
add r1, r5, #0
bl ov96_021EB588
add r0, r4, #0
add r0, #0xa0
ldrb r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0xa0
strb r1, [r0]
_021FEE46:
ldr r0, [r4, #0x74]
add r1, r5, #0
bl ov96_021EB588
ldr r0, [r4, #0x70]
add r1, r5, #0
bl ov96_021EB588
_021FEE56:
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_021FEE5C: .word 0x000008B5
thumb_func_end ov96_021FED3C
thumb_func_start ov96_021FEE60
ov96_021FEE60: ; 0x021FEE60
push {r4, r5, lr}
sub sp, #0xc
add r5, r0, #0
lsl r0, r2, #2
ldr r0, [r5, r0]
mov r1, #1
add r4, r3, #0
bl ov96_021EAB38
add r0, r5, #0
mov r1, #0
add r0, #0xc8
str r1, [r0]
mov r1, #1
ldr r0, [r5, #0x70]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r5, #0x70]
mov r1, #8
bl ov96_021EB564
ldr r0, [r5, #0x74]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
ldr r0, [sp, #0x18]
cmp r0, #0
beq _021FEEA0
mov r0, #0
strb r0, [r4, #8]
_021FEEA0:
ldr r0, [r5, #0x70]
bl ov96_021EB594
add r3, r0, #0
ldmia r3!, {r0, r1}
add r2, sp, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r1, [sp]
ldr r2, [sp, #0x1c]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
ldr r1, _021FEEC8 ; =0x000008B6
asr r0, r0, #0xc
bl ov96_021FFE38
add sp, #0xc
pop {r4, r5, pc}
.balign 4, 0
_021FEEC8: .word 0x000008B6
thumb_func_end ov96_021FEE60
thumb_func_start ov96_021FEECC
ov96_021FEECC: ; 0x021FEECC
push {r4, r5, r6, r7, lr}
sub sp, #0x2c
ldr r7, [sp, #0x40]
str r0, [sp, #0x10]
ldr r6, [sp, #0x44]
mov r0, #0
str r0, [sp, #0x14]
add r4, r1, #0
ldrb r0, [r3, #0x1d]
lsl r1, r7, #1
mov ip, r2
asr r0, r1
mov r1, #3
and r0, r1
add r1, r4, #0
add r1, #0x9f
lsl r0, r0, #0x18
ldrb r1, [r1]
lsr r0, r0, #0x18
ldr r5, [sp, #0x50]
cmp r1, r0
beq _021FEF0A
add r1, r4, #0
add r1, #0x9f
strb r0, [r1]
add r1, r4, #0
ldr r0, [sp, #0x14]
add r1, #0xa0
strb r0, [r1]
mov r0, #1
str r0, [sp, #0x14]
_021FEF0A:
add r0, sp, #0x18
str r0, [sp]
mov r1, ip
ldr r2, [r1]
lsl r0, r6, #2
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
mov r2, ip
ldr r3, [r2, #4]
ldr r0, [r4, r0]
asr r2, r3, #0xb
lsr r2, r2, #0x14
add r2, r3, r2
asr r1, r1, #0xc
asr r2, r2, #0xc
add r3, sp, #0x1c
bl ov96_021EB0A4
ldr r0, [sp, #0x1c]
lsl r0, r0, #0xc
str r0, [sp, #0x20]
ldr r0, [sp, #0x18]
lsl r0, r0, #0xc
str r0, [sp, #0x24]
mov r0, #0
str r0, [sp, #0x28]
add r0, r4, #0
add r0, #0x9f
ldrb r0, [r0]
cmp r0, #0
beq _021FEFB0
cmp r0, #1
beq _021FEF56
cmp r0, #2
beq _021FEF82
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
_021FEF56:
ldr r0, [sp, #0x4c]
cmp r0, #0
beq _021FEF66
ldr r0, [sp, #0x54]
cmp r0, #0
beq _021FEF66
mov r1, #1
b _021FEF68
_021FEF66:
mov r1, #0
_021FEF68:
ldr r0, [sp, #0x48]
str r6, [sp]
str r0, [sp, #4]
str r1, [sp, #8]
ldr r0, [sp, #0x10]
add r1, r4, #0
add r2, sp, #0x20
add r3, r7, #0
str r5, [sp, #0xc]
bl ov96_021FEBF0
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
_021FEF82:
ldr r0, [sp, #0x4c]
cmp r0, #0
beq _021FEF92
ldr r0, [sp, #0x54]
cmp r0, #0
beq _021FEF92
mov r1, #1
b _021FEF94
_021FEF92:
mov r1, #0
_021FEF94:
ldr r0, [sp, #0x48]
add r2, r7, #0
str r0, [sp]
add r0, r1, #0
orr r0, r5
str r0, [sp, #4]
add r0, r4, #0
add r1, sp, #0x20
add r3, r6, #0
str r5, [sp, #8]
bl ov96_021FED3C
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
_021FEFB0:
ldr r0, [sp, #0x14]
cmp r0, #0
beq _021FEFDA
ldr r0, [sp, #0x4c]
cmp r0, #0
beq _021FEFC6
ldr r0, [sp, #0x54]
cmp r0, #0
beq _021FEFC6
mov r0, #1
b _021FEFC8
_021FEFC6:
mov r0, #0
_021FEFC8:
orr r0, r5
str r0, [sp]
ldr r3, [sp, #0x48]
add r0, r4, #0
add r1, r7, #0
add r2, r6, #0
str r5, [sp, #4]
bl ov96_021FEE60
_021FEFDA:
ldr r0, [r4, #0x70]
add r1, sp, #0x20
bl ov96_021EB588
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021FEECC
thumb_func_start ov96_021FEFE8
ov96_021FEFE8: ; 0x021FEFE8
push {r3, r4, r5, r6, r7, lr}
str r3, [sp]
add r5, r1, #0
add r1, r2, #0
ldr r2, [sp]
ldr r6, [sp, #0x18]
bl ov96_021E60D8
add r4, r0, #0
ldr r0, [sp]
mov r1, #0x1c
add r7, r0, #0
ldrb r0, [r4]
mul r7, r1
lsl r0, r0, #2
ldr r0, [r5, r0]
bl _fflt
bl _f2d
ldr r3, _021FF0B8 ; =0x40240000
mov r2, #0
bl _ddiv
bl _d2f
add r1, r6, r7
str r0, [r1, #0x20]
ldrb r0, [r4, #3]
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x14]
bl _fflt
add r1, r6, r7
str r0, [r1, #0x28]
ldrb r0, [r4, #3]
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x14]
bl _fflt
add r1, r6, r7
str r0, [r1, #0x24]
ldrb r0, [r4, #1]
lsl r0, r0, #2
add r0, r5, r0
ldr r2, [r0, #0x64]
add r0, r1, #0
add r0, #0x2e
strb r2, [r0]
ldrb r0, [r4, #1]
lsl r0, r0, #2
add r0, r5, r0
add r0, #0x8c
ldr r2, [r0]
add r0, r1, #0
add r0, #0x2c
strb r2, [r0]
ldrb r0, [r4, #1]
add r1, #0x2d
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x78]
strb r0, [r1]
ldrb r0, [r4, #4]
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x28]
bl _fflt
bl _f2d
ldr r3, _021FF0B8 ; =0x40240000
mov r2, #0
bl _ddiv
bl _d2f
add r1, r6, r7
str r0, [r1, #0x18]
ldrb r0, [r4, #1]
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x3c]
bl _fflt
bl _f2d
ldr r3, _021FF0B8 ; =0x40240000
mov r2, #0
bl _ddiv
bl _d2f
add r1, r6, r7
str r0, [r1, #0x1c]
ldrb r0, [r4, #3]
add r1, #0x2f
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x50]
strb r0, [r1]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021FF0B8: .word 0x40240000
thumb_func_end ov96_021FEFE8
thumb_func_start ov96_021FF0BC
ov96_021FF0BC: ; 0x021FF0BC
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
ldr r0, [sp, #0x28]
str r2, [sp]
str r0, [sp, #0x28]
ldr r0, [sp, #0x2c]
str r3, [sp, #4]
str r0, [sp, #0x2c]
mov r0, #0
add r7, r0, #0
_021FF0D2:
stmia r2!, {r7}
add r0, r0, #1
stmia r3!, {r7}
cmp r0, #0x1e
blt _021FF0D2
ldr r0, [sp, #0x28]
str r5, [sp, #8]
strb r7, [r0]
ldr r0, [sp, #0x2c]
strb r7, [r0]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0x10]
ldr r0, _021FF1C4 ; =0x0000045C
add r6, r5, r0
_021FF0F4:
ldr r0, _021FF1C8 ; =0x000004D4
ldr r0, [r5, r0]
cmp r0, #0
beq _021FF1C0
ldr r1, [sp, #8]
ldr r0, _021FF1C4 ; =0x0000045C
ldr r0, [r1, r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xc]
ldr r0, _021FF1CC ; =0x000004DC
ldrh r1, [r5, r0]
ldr r0, [sp, #0x10]
sub r4, r0, r1
add r0, r4, #0
bl _dflt
ldr r3, _021FF1D0 ; =0x40880000
mov r2, #0
bl _dgeq
blo _021FF144
add r0, r4, #0
bl _dflt
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FF1D4 ; =0x40900000
mov r0, #0
bl _dsub
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FF1D8 ; =0x40540000
mov r0, #0
bl _dadd
bl _dfix
b _021FF17C
_021FF144:
add r0, r4, #0
bl _dflt
ldr r3, _021FF1DC ; =0xC0880000
mov r2, #0
bl _dleq
bhi _021FF178
add r0, r4, #0
bl _dflt
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FF1D4 ; =0x40900000
mov r0, #0
bl _dadd
add r3, r1, #0
add r2, r0, #0
ldr r1, _021FF1D8 ; =0x40540000
mov r0, #0
bl _dsub
bl _dfix
b _021FF17C
_021FF178:
mov r0, #0x50
sub r0, r0, r4
_021FF17C:
mov r1, #0x1f
mvn r1, r1
cmp r0, r1
blt _021FF1B0
mov r1, #0x12
lsl r1, r1, #4
cmp r0, r1
bgt _021FF1B0
ldr r0, [sp, #0xc]
cmp r0, #3
bne _021FF1A2
ldr r0, [sp, #0x2c]
ldrb r2, [r0]
add r1, r2, #1
strb r1, [r0]
ldr r0, [sp, #4]
lsl r1, r2, #2
str r6, [r0, r1]
b _021FF1B0
_021FF1A2:
ldr r0, [sp, #0x28]
ldrb r2, [r0]
add r1, r2, #1
strb r1, [r0]
ldr r0, [sp]
lsl r1, r2, #2
str r6, [r0, r1]
_021FF1B0:
ldr r0, [sp, #8]
add r7, r7, #1
add r0, r0, #4
add r5, #0xc
add r6, r6, #4
str r0, [sp, #8]
cmp r7, #0x1e
blt _021FF0F4
_021FF1C0:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021FF1C4: .word 0x0000045C
_021FF1C8: .word 0x000004D4
_021FF1CC: .word 0x000004DC
_021FF1D0: .word 0x40880000
_021FF1D4: .word 0x40900000
_021FF1D8: .word 0x40540000
_021FF1DC: .word 0xC0880000
thumb_func_end ov96_021FF0BC
thumb_func_start ov96_021FF1E0
ov96_021FF1E0: ; 0x021FF1E0
push {r4, r5}
ldr r3, [r1]
lsl r1, r3, #0x18
lsr r4, r1, #0x18
asr r1, r3, #8
lsl r1, r1, #0x18
asr r3, r3, #0x10
lsr r1, r1, #0x18
lsl r3, r3, #0x10
lsr r5, r3, #0x10
add r1, #0x20
str r4, [r2]
cmp r4, #3
bne _021FF208
sub r5, #0x20
str r5, [r2, #4]
sub r1, #0x20
str r1, [r2, #8]
pop {r4, r5}
bx lr
_021FF208:
cmp r4, #1
bne _021FF210
mov r3, #0x30
b _021FF212
_021FF210:
mov r3, #0x20
_021FF212:
lsr r4, r3, #1
sub r5, r5, r4
sub r4, r1, r4
str r5, [r2, #4]
str r4, [r2, #8]
add r1, r5, r3
str r1, [r2, #0xc]
str r4, [r2, #0x10]
str r1, [r2, #0x14]
add r1, r4, r3
str r1, [r2, #0x18]
str r5, [r2, #0x1c]
str r1, [r2, #0x20]
ldr r3, [r2, #4]
ldr r1, [r2, #8]
str r3, [r2, #0x24]
str r1, [r2, #0x28]
ldr r3, [r2, #0xc]
ldr r1, [r2, #0x10]
str r3, [r2, #0x2c]
str r1, [r2, #0x30]
ldr r3, [r2, #0xc]
ldr r1, [r2, #0x10]
str r3, [r2, #0x34]
str r1, [r2, #0x38]
ldr r3, [r2, #0x14]
ldr r1, [r2, #0x18]
str r3, [r2, #0x3c]
str r1, [r2, #0x40]
ldr r3, [r2, #0x14]
ldr r1, [r2, #0x18]
str r3, [r2, #0x44]
str r1, [r2, #0x48]
ldr r3, [r2, #0x1c]
ldr r1, [r2, #0x20]
str r3, [r2, #0x4c]
str r1, [r2, #0x50]
ldr r3, [r2, #0x1c]
ldr r1, [r2, #0x20]
str r3, [r2, #0x54]
str r1, [r2, #0x58]
ldr r3, [r2, #4]
ldr r1, [r2, #8]
str r3, [r2, #0x5c]
str r1, [r2, #0x60]
ldr r1, [r2, #0x28]
sub r1, r1, r0
str r1, [r2, #0x28]
ldr r1, [r2, #0x30]
sub r1, r1, r0
str r1, [r2, #0x30]
ldr r1, [r2, #0x34]
add r1, r1, r0
str r1, [r2, #0x34]
ldr r1, [r2, #0x3c]
add r1, r1, r0
str r1, [r2, #0x3c]
ldr r1, [r2, #0x48]
add r1, r1, r0
str r1, [r2, #0x48]
ldr r1, [r2, #0x50]
add r1, r1, r0
str r1, [r2, #0x50]
ldr r1, [r2, #0x54]
sub r1, r1, r0
str r1, [r2, #0x54]
ldr r1, [r2, #0x5c]
sub r0, r1, r0
str r0, [r2, #0x5c]
pop {r4, r5}
bx lr
thumb_func_end ov96_021FF1E0
thumb_func_start ov96_021FF2A0
ov96_021FF2A0: ; 0x021FF2A0
push {r4, r5, r6, r7, lr}
sub sp, #0xa4
str r0, [sp, #4]
ldr r0, [sp, #0xb8]
str r1, [sp, #8]
str r0, [sp, #0xb8]
add r0, r3, #0
ldr r0, [r0]
str r2, [sp, #0xc]
str r3, [sp, #0x10]
cmp r0, #3
bne _021FF2BE
add sp, #0xa4
mov r0, #0
pop {r4, r5, r6, r7, pc}
_021FF2BE:
ldr r0, [sp, #4]
add r7, r3, #0
ldr r1, [r0]
add r6, r3, #0
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0x24]
ldr r0, [sp, #4]
add r5, r3, #0
ldr r1, [r0, #4]
ldr r2, _021FF56C ; =ov96_0221C5FC
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0x28]
ldr r0, [sp, #8]
add r3, sp, #0x34
ldr r1, [r0]
mov r4, #0
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0x1c]
ldr r0, [sp, #8]
add r7, #0x2c
ldr r1, [r0, #4]
add r6, #0x24
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0x20]
ldmia r2!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r2!, {r0, r1}
stmia r3!, {r0, r1}
_021FF30E:
add r3, sp, #0x34
add r2, sp, #0x94
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
add r0, sp, #0x2c
str r0, [sp]
add r0, r6, #0
add r1, r7, #0
add r2, sp, #0x24
add r3, sp, #0x1c
bl sub_02020F4C
cmp r0, #0
beq _021FF34C
ldr r0, [sp, #0x2c]
lsl r1, r0, #0xc
ldr r0, [sp, #0xb8]
str r1, [r0]
ldr r0, [sp, #0x30]
lsl r1, r0, #0xc
ldr r0, [sp, #0xb8]
str r1, [r0, #4]
mov r1, #0
str r1, [r0, #8]
add r0, sp, #0x94
lsl r1, r4, #2
add sp, #0xa4
ldr r0, [r0, r1]
pop {r4, r5, r6, r7, pc}
_021FF34C:
mov r0, #0
cmp r4, #0
bne _021FF37C
cmp r4, #2
bne _021FF37C
ldr r2, [sp, #0x28]
ldr r1, [r5, #0x28]
cmp r2, r1
bne _021FF3A0
ldr r2, [r5, #0x2c]
ldr r3, [r5, #0x24]
cmp r3, r2
bge _021FF36A
add r1, r3, #0
b _021FF36E
_021FF36A:
add r1, r2, #0
add r2, r3, #0
_021FF36E:
ldr r3, [sp, #0x24]
cmp r1, r3
bgt _021FF3A0
cmp r3, r2
bgt _021FF3A0
mov r0, #1
b _021FF3A0
_021FF37C:
ldr r2, [sp, #0x24]
ldr r1, [r5, #0x24]
cmp r2, r1
bne _021FF3A0
ldr r2, [r5, #0x30]
ldr r3, [r5, #0x28]
cmp r3, r2
bge _021FF390
add r1, r3, #0
b _021FF394
_021FF390:
add r1, r2, #0
add r2, r3, #0
_021FF394:
ldr r3, [sp, #0x28]
cmp r1, r3
bgt _021FF3A0
cmp r3, r2
bgt _021FF3A0
mov r0, #1
_021FF3A0:
cmp r0, #0
beq _021FF3C2
ldr r2, [sp, #4]
ldmia r2!, {r0, r1}
str r2, [sp, #4]
ldr r2, [sp, #0xb8]
stmia r2!, {r0, r1}
ldr r0, [sp, #4]
str r2, [sp, #0xb8]
ldr r1, [r0]
add r0, r2, #0
str r1, [r0]
add r0, sp, #0x94
lsl r1, r4, #2
add sp, #0xa4
ldr r0, [r0, r1]
pop {r4, r5, r6, r7, pc}
_021FF3C2:
add r4, r4, #1
add r7, #0x10
add r6, #0x10
add r5, #0x10
cmp r4, #4
blt _021FF30E
ldr r3, _021FF570 ; =ov96_0221C60C
add r2, sp, #0x44
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [sp, #0xc]
ldr r4, [sp, #0x10]
mov r5, #0
lsl r6, r0, #0xc
add r7, sp, #0x6c
_021FF3E4:
add r3, sp, #0x44
add r2, sp, #0x84
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r4, #4]
add r1, sp, #0x78
lsl r0, r0, #0xc
str r0, [sp, #0x78]
ldr r0, [r4, #8]
add r2, r7, #0
lsl r0, r0, #0xc
str r0, [sp, #0x7c]
mov r0, #0
str r0, [sp, #0x80]
ldr r0, [sp, #8]
bl VEC_Subtract
add r0, r7, #0
bl VEC_Mag
cmp r0, r6
bgt _021FF452
ldr r3, [sp, #0xc]
ldr r0, [sp, #4]
ldr r1, [sp, #8]
add r2, sp, #0x78
lsl r3, r3, #0xc
bl ov96_021FF67C
add r4, r0, #0
ldr r0, [sp, #8]
ldr r1, [sp, #4]
add r2, sp, #0x60
bl VEC_Subtract
ldr r2, [sp, #4]
add r0, r4, #0
add r1, sp, #0x60
add r3, sp, #0x54
bl VEC_MultAdd
ldr r1, [sp, #0x54]
ldr r0, [sp, #0xb8]
str r1, [r0]
ldr r1, [sp, #0x58]
str r1, [r0, #4]
mov r1, #0
str r1, [r0, #8]
add r0, sp, #0x84
lsl r1, r5, #2
add sp, #0xa4
ldr r0, [r0, r1]
pop {r4, r5, r6, r7, pc}
_021FF452:
add r5, r5, #1
add r4, #8
cmp r5, #4
blt _021FF3E4
ldr r0, [sp, #8]
ldr r1, [r0]
ldr r0, [sp, #0x10]
ldr r0, [r0, #4]
lsl r0, r0, #0xc
cmp r0, r1
bgt _021FF564
ldr r0, [sp, #0x10]
ldr r0, [r0, #0x14]
lsl r0, r0, #0xc
cmp r1, r0
bgt _021FF564
ldr r0, [sp, #8]
ldr r1, [r0, #4]
ldr r0, [sp, #0x10]
ldr r0, [r0, #8]
lsl r0, r0, #0xc
cmp r0, r1
bgt _021FF564
ldr r0, [sp, #0x10]
ldr r0, [r0, #0x18]
lsl r0, r0, #0xc
cmp r1, r0
bgt _021FF564
ldr r3, [sp, #8]
ldr r2, [sp, #0xb8]
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
mov r1, #0
str r0, [r2]
ldr r0, [sp, #0x10]
ldr r3, [sp, #0x10]
ldr r0, [r0, #4]
ldr r3, [r3, #0x14]
str r0, [sp, #0x18]
ldr r0, [sp, #8]
str r3, [sp, #0x14]
ldr r2, [r0]
ldr r0, [sp, #0x18]
lsl r3, r3, #0xc
lsl r0, r0, #0xc
sub r0, r0, r2
sub r3, r3, r2
mov ip, r1
cmp r0, #0
bge _021FF4BC
sub r2, r1, #1
mul r0, r2
_021FF4BC:
cmp r3, #0
bge _021FF4C6
mov r2, #0
mvn r2, r2
mul r3, r2
_021FF4C6:
cmp r0, r3
bge _021FF4CE
mov r6, #0xd
b _021FF4D2
_021FF4CE:
add r0, r3, #0
mov r6, #0xb
_021FF4D2:
ldr r2, [sp, #0x10]
ldr r3, [sp, #8]
ldr r4, [sp, #0x10]
ldr r2, [r2, #8]
ldr r5, [r3, #4]
ldr r7, [r4, #0x18]
lsl r3, r2, #0xc
lsl r4, r7, #0xc
sub r3, r3, r5
sub r4, r4, r5
cmp r3, #0
bge _021FF4F0
mov r5, #0
mvn r5, r5
mul r3, r5
_021FF4F0:
cmp r4, #0
bge _021FF4FA
mov r5, #0
mvn r5, r5
mul r4, r5
_021FF4FA:
cmp r3, r4
bge _021FF502
mov r4, #0xa
b _021FF506
_021FF502:
add r3, r4, #0
mov r4, #0xc
_021FF506:
cmp r0, r3
bgt _021FF512
mov r0, #1
mov ip, r0
add r0, r6, #0
b _021FF516
_021FF512:
mov r1, #1
add r0, r4, #0
_021FF516:
mov r3, ip
cmp r3, #0
beq _021FF540
cmp r6, #0xd
bne _021FF530
ldr r2, [sp, #0x18]
ldr r1, [sp, #0xc]
sub r1, r2, r1
lsl r2, r1, #0xc
ldr r1, [sp, #0xb8]
add sp, #0xa4
str r2, [r1]
pop {r4, r5, r6, r7, pc}
_021FF530:
ldr r2, [sp, #0x14]
ldr r1, [sp, #0xc]
add r1, r2, r1
lsl r2, r1, #0xc
ldr r1, [sp, #0xb8]
add sp, #0xa4
str r2, [r1]
pop {r4, r5, r6, r7, pc}
_021FF540:
cmp r1, #0
beq _021FF566
cmp r4, #0xa
bne _021FF556
ldr r1, [sp, #0xc]
sub r1, r2, r1
lsl r2, r1, #0xc
ldr r1, [sp, #0xb8]
add sp, #0xa4
str r2, [r1, #4]
pop {r4, r5, r6, r7, pc}
_021FF556:
ldr r1, [sp, #0xc]
add r1, r7, r1
lsl r2, r1, #0xc
ldr r1, [sp, #0xb8]
add sp, #0xa4
str r2, [r1, #4]
pop {r4, r5, r6, r7, pc}
_021FF564:
mov r0, #0
_021FF566:
add sp, #0xa4
pop {r4, r5, r6, r7, pc}
nop
_021FF56C: .word ov96_0221C5FC
_021FF570: .word ov96_0221C60C
thumb_func_end ov96_021FF2A0
thumb_func_start ov96_021FF574
ov96_021FF574: ; 0x021FF574
push {r3, r4}
ldr r3, [r1, #4]
ldr r2, [r0]
ldr r1, [r1, #8]
lsl r3, r3, #0xc
ldr r0, [r0, #4]
lsl r4, r1, #0xc
cmp r3, r2
bge _021FF5A0
mov r1, #1
lsl r1, r1, #0x12
add r3, r3, r1
cmp r2, r3
bge _021FF5A0
cmp r4, r0
bge _021FF5A0
add r1, r4, r1
cmp r0, r1
bge _021FF5A0
mov r0, #1
pop {r3, r4}
bx lr
_021FF5A0:
mov r0, #0
pop {r3, r4}
bx lr
.balign 4, 0
thumb_func_end ov96_021FF574
thumb_func_start ov96_021FF5A8
ov96_021FF5A8: ; 0x021FF5A8
push {r4, r5, r6, r7, lr}
sub sp, #0x1dc
str r1, [sp, #8]
ldr r1, [sp, #0x1f0]
add r7, r3, #0
str r1, [sp, #0x1f0]
ldr r1, [sp, #0x1f4]
add r6, r2, #0
str r1, [sp, #0x1f4]
add r1, sp, #0x14
add r1, #1
str r1, [sp]
add r1, sp, #0x14
str r1, [sp, #4]
ldr r1, [r7]
add r2, sp, #0x164
add r3, sp, #0xec
bl ov96_021FF0BC
mov r4, #0
str r4, [sp, #0x10]
add r0, sp, #0x14
ldrb r0, [r0]
cmp r0, #0
ble _021FF604
add r5, sp, #0xec
_021FF5DC:
ldr r1, [r5]
add r0, r6, #0
add r2, sp, #0x88
bl ov96_021FF1E0
add r0, r7, #0
add r1, sp, #0x88
bl ov96_021FF574
cmp r0, #0
beq _021FF5F8
mov r0, #1
str r0, [sp, #0x10]
b _021FF604
_021FF5F8:
add r0, sp, #0x14
ldrb r0, [r0]
add r4, r4, #1
add r5, r5, #4
cmp r4, r0
blt _021FF5DC
_021FF604:
mov r5, #0
str r5, [sp, #0xc]
add r0, sp, #0x14
ldrb r0, [r0, #1]
cmp r0, #0
ble _021FF66C
add r4, sp, #0x164
_021FF612:
ldr r1, [r4]
add r0, r6, #0
add r2, sp, #0x24
bl ov96_021FF1E0
add r0, sp, #0x18
str r0, [sp]
ldr r1, [sp, #0x1f0]
add r0, r7, #0
add r2, r6, #0
add r3, sp, #0x24
bl ov96_021FF2A0
cmp r0, #0
beq _021FF660
cmp r0, #0xa
blt _021FF644
ldr r2, [sp, #0x18]
ldr r1, [sp, #0x1f4]
str r2, [r1]
ldr r2, [sp, #0x1c]
str r2, [r1, #4]
mov r2, #0
str r2, [r1, #8]
b _021FF658
_021FF644:
ldr r1, [sp, #8]
cmp r0, r1
beq _021FF658
ldr r2, [sp, #0x18]
ldr r1, [sp, #0x1f4]
str r2, [r1]
ldr r2, [sp, #0x1c]
str r2, [r1, #4]
mov r2, #0
str r2, [r1, #8]
_021FF658:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xc]
b _021FF66C
_021FF660:
add r0, sp, #0x14
ldrb r0, [r0, #1]
add r5, r5, #1
add r4, r4, #4
cmp r5, r0
blt _021FF612
_021FF66C:
ldr r0, [sp, #0x10]
lsl r1, r0, #8
ldr r0, [sp, #0xc]
add r0, r1, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
add sp, #0x1dc
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021FF5A8
thumb_func_start ov96_021FF67C
ov96_021FF67C: ; 0x021FF67C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r4, r0, #0
add r6, r2, #0
add r0, r1, #0
add r1, r4, #0
add r2, sp, #0
add r7, r3, #0
bl VEC_Subtract
add r0, sp, #0
bl VEC_Mag
add r5, r0, #0
mul r5, r0
add r0, sp, #0
add r1, r6, #0
bl VEC_DotProduct
add r4, r0, #0
add r0, r6, #0
bl VEC_Mag
add r1, r0, #0
mul r1, r0
add r0, r7, #0
mul r0, r7
sub r0, r1, r0
mul r0, r5
sub r0, r4, r0
bl FX_Sqrt
add r7, r0, #0
sub r0, r7, r4
add r1, r5, #0
bl FX_Div
add r6, r0, #0
add r0, r4, r7
neg r0, r0
add r1, r5, #0
bl FX_Div
cmp r6, r0
bgt _021FF6D8
add r0, r6, #0
_021FF6D8:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_021FF67C
thumb_func_start ov96_021FF6DC
ov96_021FF6DC: ; 0x021FF6DC
push {r3, r4, r5, lr}
add r5, r0, #0
add r0, #0xa5
ldrb r0, [r0]
cmp r0, #0
beq _021FF6F8
mov r0, #0x1c
mul r0, r1
add r0, r5, r0
add r0, #0x2c
ldrb r0, [r0]
bl _ffltu
pop {r3, r4, r5, pc}
_021FF6F8:
mov r0, #0x1c
add r4, r1, #0
mul r4, r0
add r0, r5, r4
ldr r0, [r0, #0x24]
bl _f2d
ldr r3, _021FF728 ; =0x40440000
mov r2, #0
bl _dleq
bhi _021FF71C
add r0, r5, r4
add r0, #0x2d
ldrb r0, [r0]
bl _ffltu
pop {r3, r4, r5, pc}
_021FF71C:
add r0, r5, r4
add r0, #0x2e
ldrb r0, [r0]
bl _ffltu
pop {r3, r4, r5, pc}
.balign 4, 0
_021FF728: .word 0x40440000
thumb_func_end ov96_021FF6DC
thumb_func_start ov96_021FF72C
ov96_021FF72C: ; 0x021FF72C
push {r4, r5, r6, lr}
add r5, r2, #0
ldr r3, [r0]
ldr r2, [r1]
add r2, r3, r2
str r2, [r5]
ldr r4, [r1, #4]
ldr r6, [r0, #4]
asr r3, r4, #0x1f
asr r1, r6, #0x1f
add r0, r6, #0
add r2, r4, #0
bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
add r2, r0, r2
adc r1, r3
lsl r0, r1, #0x14
lsr r1, r2, #0xc
orr r1, r0
bmi _021FF760
add r0, r6, r4
str r0, [r5, #4]
pop {r4, r5, r6, pc}
_021FF760:
str r4, [r5, #4]
pop {r4, r5, r6, pc}
thumb_func_end ov96_021FF72C
thumb_func_start ov96_021FF764
ov96_021FF764: ; 0x021FF764
push {r3, r4, r5, r6, r7, lr}
sub sp, #0xa0
str r0, [sp, #8]
mov r0, #0
str r1, [sp, #0xc]
str r2, [sp, #0x10]
str r0, [sp, #0x24]
str r0, [sp, #0x9c]
str r0, [sp, #0x90]
str r0, [sp, #0x18]
add r4, r1, #0
_021FF77A:
add r0, r4, #0
add r0, #0x8b
ldrb r0, [r0]
str r0, [sp, #0x14]
add r0, r4, #0
add r0, #0x9d
ldrb r0, [r0]
cmp r0, #0
bne _021FF796
add r0, r4, #0
add r0, #0xa9
ldrb r0, [r0]
cmp r0, #0
beq _021FF798
_021FF796:
b _021FFAC8
_021FF798:
ldr r0, [sp, #0x14]
lsl r0, r0, #2
ldr r0, [r4, r0]
str r0, [sp, #0x2c]
add r0, sp, #0x3c
str r0, [sp]
ldr r2, [r4, #0x7c]
ldr r0, [sp, #0x2c]
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
add r2, r4, #0
add r2, #0x80
ldr r3, [r2]
asr r1, r1, #0xc
asr r2, r3, #0xb
lsr r2, r2, #0x14
add r2, r3, r2
asr r2, r2, #0xc
add r3, sp, #0x40
bl ov96_021EB0A4
add r0, r4, #0
str r0, [sp, #0x30]
add r0, #0x8c
ldr r5, [sp, #0xc]
mov r6, #0
str r0, [sp, #0x30]
_021FF7D0:
ldr r0, [sp, #0x18]
cmp r0, r6
bne _021FF7D8
b _021FFABE
_021FF7D8:
add r0, r5, #0
add r0, #0x9d
ldrb r0, [r0]
cmp r0, #0
bne _021FF8E0
add r0, r5, #0
add r0, #0x8b
ldrb r0, [r0]
ldr r7, [sp, #0x40]
lsl r0, r0, #2
ldr r0, [r5, r0]
str r0, [sp, #0x28]
add r0, sp, #0x34
str r0, [sp]
ldr r1, [r5, #0x7c]
ldr r0, [sp, #0x28]
asr r2, r1, #0xb
lsr r2, r2, #0x14
add r2, r1, r2
asr r1, r2, #0xc
add r2, r5, #0
add r2, #0x80
ldr r3, [r2]
asr r2, r3, #0xb
lsr r2, r2, #0x14
add r2, r3, r2
asr r2, r2, #0xc
add r3, sp, #0x38
bl ov96_021EB0A4
ldr r0, [r4, #0x7c]
str r0, [sp, #0x1c]
bl _dflt
ldr r3, _021FFADC ; =0x41480000
mov r2, #0
bl _dgr
bls _021FF846
mov r0, #1
ldr r1, [r5, #0x7c]
lsl r0, r0, #0x14
cmp r1, r0
bge _021FF846
ldr r0, [sp, #0x38]
bl _dflt
ldr r3, _021FFAE0 ; =0x40900000
mov r2, #0
bl _dadd
bl _dfix
str r0, [sp, #0x38]
b _021FF874
_021FF846:
ldr r0, [r5, #0x7c]
bl _dflt
ldr r3, _021FFADC ; =0x41480000
mov r2, #0
bl _dgr
bls _021FF874
mov r0, #1
ldr r1, [sp, #0x1c]
lsl r0, r0, #0x14
cmp r1, r0
bge _021FF874
add r0, r7, #0
bl _dflt
ldr r3, _021FFAE0 ; =0x40900000
mov r2, #0
bl _dadd
bl _dfix
add r7, r0, #0
_021FF874:
add r0, sp, #0x8c
str r0, [sp]
add r0, sp, #0x44
str r0, [sp, #4]
ldr r1, [sp, #0x38]
ldr r2, [sp, #0x34]
ldr r0, [sp, #0x28]
lsl r1, r1, #0xc
lsl r2, r2, #0xc
add r3, sp, #0x88
bl ov96_021EAF78
add r0, sp, #0x98
str r0, [sp]
add r0, sp, #0x48
str r0, [sp, #4]
ldr r2, [sp, #0x3c]
ldr r0, [sp, #0x2c]
lsl r1, r7, #0xc
lsl r2, r2, #0xc
add r3, sp, #0x94
bl ov96_021EAF78
add r0, sp, #0x88
add r1, sp, #0x94
add r2, sp, #0x7c
bl VEC_Subtract
add r0, sp, #0x7c
bl VEC_Mag
ldr r2, [sp, #0x44]
ldr r1, [sp, #0x48]
add r1, r2, r1
lsl r1, r1, #0xc
cmp r0, r1
blt _021FF8C0
b _021FFAAC
_021FF8C0:
add r0, r4, r6
add r0, #0x98
ldrb r0, [r0]
cmp r0, #0
bne _021FF8E0
mov r1, #0
add r0, sp, #0x70
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
ldr r1, [sp, #0x30]
add r0, sp, #0x7c
bl VEC_DotProduct
cmp r0, #0
bgt _021FF8E2
_021FF8E0:
b _021FFABE
_021FF8E2:
add r0, r4, #0
add r0, #0x8c
bl VEC_Mag
cmp r0, #0
beq _021FF94C
add r0, r4, #0
add r0, #0x8b
ldrb r0, [r0]
mov r2, #0x1c
str r0, [sp, #0x20]
ldr r1, [sp, #0x20]
ldr r0, _021FFAE4 ; =0x45800000
mul r2, r1
add r1, r4, r2
ldr r1, [r1, #0x20]
bl _fmul
bl _ffix
add r1, r4, #0
add r3, r5, #0
add r1, #0x8c
add r2, sp, #0x70
add r3, #0x8c
bl VEC_MultAdd
add r0, r5, #0
add r0, #0x8c
bl VEC_Mag
mov r1, #0xb
lsl r1, r1, #0xc
cmp r0, r1
ble _021FF94C
add r1, sp, #0x64
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
add r0, r5, #0
add r0, #0x8c
add r1, r0, #0
bl VEC_Normalize
add r1, r5, #0
mov r0, #0xb
add r1, #0x8c
lsl r0, r0, #0xc
add r2, sp, #0x64
add r3, r1, #0
bl VEC_MultAdd
_021FF94C:
ldr r0, [sp, #0x14]
mov r1, #0x1c
mul r1, r0
add r0, r5, r1
add r1, r0, #0
add r1, #0x30
ldrb r1, [r1]
cmp r1, #1
bne _021FF98A
mov r1, #0
str r1, [r0, #0x24]
add r1, r0, #0
mov r2, #2
add r1, #0x30
strb r2, [r1]
add r0, #0x2f
ldrb r1, [r0]
add r0, r5, #0
add r0, #0xa4
strb r1, [r0]
mov r3, #1
add r1, r5, #0
add r2, r5, #0
str r3, [sp]
add r1, #0xd0
add r2, #0x8b
ldrb r1, [r1]
ldrb r2, [r2]
ldr r0, [sp, #8]
bl ov96_021E8228
_021FF98A:
add r3, sp, #0x58
mov r7, #0
str r7, [r3]
str r7, [r3, #4]
str r7, [r3, #8]
add r2, r4, #0
ldmia r3!, {r0, r1}
add r2, #0x8c
stmia r2!, {r0, r1}
ldr r0, [r3]
mov r1, #0x1c
str r0, [r2]
ldr r0, [sp, #0x20]
mul r1, r0
add r0, r4, r1
add r1, r0, #0
add r1, #0x30
ldrb r1, [r1]
cmp r1, #1
bne _021FF9DC
add r1, r0, #0
str r7, [r0, #0x24]
mov r2, #2
add r1, #0x30
strb r2, [r1]
add r0, #0x2f
ldrb r1, [r0]
add r0, r4, #0
add r0, #0xa4
strb r1, [r0]
mov r3, #1
add r1, r4, #0
add r2, r4, #0
str r3, [sp]
add r1, #0xd0
add r2, #0x8b
ldrb r1, [r1]
ldrb r2, [r2]
ldr r0, [sp, #8]
bl ov96_021E8228
_021FF9DC:
add r0, r4, r6
add r0, #0x98
ldrb r0, [r0]
cmp r0, #0
beq _021FF9EA
bl GF_AssertFail
_021FF9EA:
ldr r0, [sp, #0x18]
add r0, r5, r0
add r0, #0x98
ldrb r0, [r0]
cmp r0, #0
beq _021FF9FA
bl GF_AssertFail
_021FF9FA:
add r1, r5, r6
mov r0, #1
add r1, #0x98
strb r0, [r1]
ldr r1, [sp, #0x18]
add r1, r4, r1
add r1, #0x98
strb r0, [r1]
ldr r1, [sp, #0x24]
cmp r1, #0
bne _021FFA6C
add r2, sp, #0x4c
mov r1, #0
str r1, [r2]
str r1, [r2, #4]
str r1, [r2, #8]
str r0, [sp, #0x24]
add r0, sp, #0x88
add r1, sp, #0x94
bl VEC_Subtract
add r0, sp, #0x4c
add r1, r0, #0
bl VEC_Normalize
ldr r0, [sp, #0x48]
add r1, sp, #0x4c
lsl r0, r0, #0xc
add r2, sp, #0x94
add r3, r1, #0
bl VEC_MultAdd
ldr r6, [sp, #0x4c]
add r0, r6, #0
bl _dflt
ldr r3, _021FFAE8 ; =0x41500000
mov r2, #0
bl _dgeq
blo _021FFA60
add r0, r6, #0
bl _dflt
ldr r3, _021FFAE8 ; =0x41500000
mov r2, #0
bl _dsub
bl _dfix
str r0, [sp, #0x4c]
_021FFA60:
add r3, sp, #0x4c
ldr r2, [sp, #0x10]
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
_021FFA6C:
add r0, r5, #0
mov r1, #6
add r0, #0xa9
strb r1, [r0]
add r0, r4, #0
mov r1, #0x12
add r0, #0xa9
strb r1, [r0]
add r1, r5, #0
mov r0, #1
str r0, [sp]
add r1, #0xd0
add r5, #0x8b
ldrb r1, [r1]
ldrb r2, [r5]
ldr r0, [sp, #8]
mov r3, #4
bl ov96_021E8228
mov r0, #1
add r1, r4, #0
add r2, r4, #0
str r0, [sp]
add r1, #0xd0
add r2, #0x8b
ldrb r1, [r1]
ldrb r2, [r2]
ldr r0, [sp, #8]
mov r3, #4
bl ov96_021E8228
b _021FFAC8
_021FFAAC:
add r1, r4, r6
add r1, #0x98
mov r0, #0
strb r0, [r1]
ldr r0, [sp, #0x18]
add r1, r0, r5
add r1, #0x98
mov r0, #0
strb r0, [r1]
_021FFABE:
add r6, r6, #1
add r5, #0xd4
cmp r6, #4
bge _021FFAC8
b _021FF7D0
_021FFAC8:
ldr r0, [sp, #0x18]
add r4, #0xd4
add r0, r0, #1
str r0, [sp, #0x18]
cmp r0, #4
bge _021FFAD6
b _021FF77A
_021FFAD6:
ldr r0, [sp, #0x24]
add sp, #0xa0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021FFADC: .word 0x41480000
_021FFAE0: .word 0x40900000
_021FFAE4: .word 0x45800000
_021FFAE8: .word 0x41500000
thumb_func_end ov96_021FF764
thumb_func_start ov96_021FFAEC
ov96_021FFAEC: ; 0x021FFAEC
push {r4, r5, lr}
sub sp, #0xc
add r5, r1, #0
add r3, r0, #0
add r4, r2, #0
ldmia r5!, {r0, r1}
add r2, sp, #0
stmia r2!, {r0, r1}
ldr r0, [r5]
str r0, [r2]
ldrb r0, [r3, #8]
cmp r0, #1
beq _021FFB10
cmp r0, #2
beq _021FFB1C
cmp r0, #3
beq _021FFB28
b _021FFB34
_021FFB10:
mov r0, #5
ldr r1, [sp, #4]
lsl r0, r0, #0xe
sub r0, r1, r0
str r0, [sp, #4]
b _021FFB38
_021FFB1C:
mov r0, #2
ldr r1, [sp, #4]
lsl r0, r0, #0x10
sub r0, r1, r0
str r0, [sp, #4]
b _021FFB38
_021FFB28:
mov r0, #0xa
ldr r1, [sp, #4]
lsl r0, r0, #0xe
sub r0, r1, r0
str r0, [sp, #4]
b _021FFB38
_021FFB34:
bl GF_AssertFail
_021FFB38:
add r0, r4, #0
add r1, sp, #0
bl ov96_021EB588
add sp, #0xc
pop {r4, r5, pc}
thumb_func_end ov96_021FFAEC
thumb_func_start ov96_021FFB44
ov96_021FFB44: ; 0x021FFB44
push {r3, lr}
ldrb r1, [r0, #0xb]
cmp r1, #3
bne _021FFB58
mov r1, #0x96
ldr r0, [r0, #4]
lsl r1, r1, #2
bl ov96_021EB630
pop {r3, pc}
_021FFB58:
ldrb r2, [r0, #0xa]
mov r1, #0xa0
add r2, #0x20
sub r2, r1, r2
bpl _021FFB64
mov r2, #0
_021FFB64:
asr r1, r2, #2
lsr r1, r1, #0x1d
add r1, r2, r1
asr r1, r1, #3
add r2, r1, #1
mov r1, #0x1e
mul r1, r2
ldr r0, [r0, #4]
add r1, r1, #3
bl ov96_021EB630
pop {r3, pc}
thumb_func_end ov96_021FFB44
thumb_func_start ov96_021FFB7C
ov96_021FFB7C: ; 0x021FFB7C
push {r4, r5, r6, lr}
add r5, r0, #0
mov r0, #0xa8
sub r1, r0, r1
bpl _021FFB88
mov r1, #0
_021FFB88:
asr r0, r1, #2
lsr r0, r0, #0x1d
add r0, r1, r0
asr r1, r0, #3
cmp r2, #0
beq _021FFB9C
mov r0, #0x1e
mul r0, r1
add r4, r0, #4
b _021FFBA2
_021FFB9C:
mov r0, #0x1e
mul r0, r1
add r4, r0, #7
_021FFBA2:
ldr r0, [r5, #0x70]
add r1, r4, #0
bl ov96_021EB630
ldr r0, [r5, #0x78]
add r1, r4, #1
bl ov96_021EB630
ldr r0, [r5, #0x6c]
add r1, r4, #1
bl ov96_021EB630
ldr r0, [r5, #0x74]
add r1, r4, #2
bl ov96_021EB630
mov r6, #0
_021FFBC4:
ldr r0, [r5]
add r1, r4, #2
bl ov96_021EABA8
add r6, r6, #1
add r5, r5, #4
cmp r6, #3
blt _021FFBC4
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_021FFB7C
thumb_func_start ov96_021FFBD8
ov96_021FFBD8: ; 0x021FFBD8
push {r4, lr}
sub sp, #0x10
mov r2, #0x11
lsl r2, r2, #4
add r4, r0, #0
cmp r1, r2
ble _021FFC0A
mov r2, #3
lsl r2, r2, #8
cmp r1, r2
bge _021FFC0A
mov r1, #3
str r1, [sp]
mov r1, #2
str r1, [sp, #4]
mov r1, #0x15
str r1, [sp, #8]
mov r1, #0x10
str r1, [sp, #0xc]
mov r1, #0
mov r2, #1
mov r3, #0xa
bl FillBgTilemapRect
b _021FFC26
_021FFC0A:
mov r0, #3
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
mov r0, #0x15
str r0, [sp, #8]
mov r0, #0x10
str r0, [sp, #0xc]
add r0, r4, #0
mov r1, #0
mov r2, #0x20
mov r3, #0xa
bl FillBgTilemapRect
_021FFC26:
add r0, r4, #0
mov r1, #0
bl ScheduleBgTilemapBufferTransfer
add sp, #0x10
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_021FFBD8
thumb_func_start ov96_021FFC34
ov96_021FFC34: ; 0x021FFC34
push {r3, r4, r5, r6, lr}
sub sp, #0x24
ldr r3, _021FFD3C ; =ov96_0221C5CC
add r4, r0, #0
add r5, r1, #0
ldmia r3!, {r0, r1}
add r2, sp, #0x18
stmia r2!, {r0, r1}
ldr r0, [r3]
ldr r3, _021FFD40 ; =ov96_0221C5D8
str r0, [r2]
ldmia r3!, {r0, r1}
add r2, sp, #0xc
stmia r2!, {r0, r1}
ldr r0, [r3]
ldr r3, _021FFD44 ; =ov96_0221C5F0
str r0, [r2]
ldmia r3!, {r0, r1}
add r2, sp, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldrh r0, [r4, #0xe]
cmp r0, r5
bge _021FFC6C
strh r5, [r4, #0xe]
mov r0, #1
b _021FFC6E
_021FFC6C:
mov r0, #0
_021FFC6E:
cmp r0, #0
beq _021FFD0E
add r0, r5, #0
mov r1, #0xa
bl _s32_div_f
lsl r0, r0, #0x18
lsr r6, r0, #0x18
add r0, r5, #0
mov r1, #0xa
bl _s32_div_f
lsl r0, r1, #0x18
lsr r5, r0, #0x18
cmp r6, #0
beq _021FFCB2
mov r0, #6
lsl r0, r0, #0x10
str r0, [sp, #0x18]
mov r0, #9
lsl r0, r0, #0x10
str r0, [sp, #0xc]
mov r0, #0xb
lsl r0, r0, #0x10
str r0, [sp]
ldr r0, [r4]
add r1, r6, #1
bl Set2dSpriteAnimSeqNo
ldr r0, [r4, #4]
add r1, r5, #1
bl Set2dSpriteAnimSeqNo
b _021FFCCE
_021FFCB2:
mov r0, #7
lsl r0, r0, #0x10
str r0, [sp, #0x18]
mov r0, #0xa
lsl r0, r0, #0x10
str r0, [sp, #0xc]
ldr r0, [r4]
add r1, r5, #1
bl Set2dSpriteAnimSeqNo
ldr r0, [r4, #4]
mov r1, #0
bl Set2dSpriteAnimSeqNo
_021FFCCE:
ldr r0, [r4, #8]
add r1, sp, #0x18
bl ov96_021EB588
ldr r0, [r4]
add r1, sp, #0xc
bl Sprite_SetMatrix
ldr r0, [r4, #4]
add r1, sp, #0
bl Sprite_SetMatrix
mov r1, #1
ldr r0, [r4, #8]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r4]
mov r1, #1
bl Set2dSpriteVisibleFlag
ldr r0, [r4, #4]
mov r1, #1
bl Set2dSpriteVisibleFlag
mov r0, #0x3c
strh r0, [r4, #0xc]
ldr r0, _021FFD48 ; =0x0000088F
bl PlaySE
add sp, #0x24
pop {r3, r4, r5, r6, pc}
_021FFD0E:
ldrh r0, [r4, #0xc]
sub r0, r0, #1
strh r0, [r4, #0xc]
ldrh r0, [r4, #0xc]
cmp r0, #0
bne _021FFD36
mov r2, #0
strh r2, [r4, #0xc]
ldr r0, [r4, #8]
mov r1, #1
bl ov96_021EB52C
ldr r0, [r4]
mov r1, #0
bl Set2dSpriteVisibleFlag
ldr r0, [r4, #4]
mov r1, #0
bl Set2dSpriteVisibleFlag
_021FFD36:
add sp, #0x24
pop {r3, r4, r5, r6, pc}
nop
_021FFD3C: .word ov96_0221C5CC
_021FFD40: .word ov96_0221C5D8
_021FFD44: .word ov96_0221C5F0
_021FFD48: .word 0x0000088F
thumb_func_end ov96_021FFC34
thumb_func_start ov96_021FFD4C
ov96_021FFD4C: ; 0x021FFD4C
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
ldr r0, [r4]
ldr r2, _021FFD7C ; =ov96_0221C5C4
add r1, r4, #4
bl AddWindow
mov r2, #0
str r2, [sp]
ldr r0, [r4]
mov r1, #3
mov r3, #1
bl BG_FillCharDataRange
mov r1, #0x1e
ldr r2, [r4, #0x14]
mov r0, #0
lsl r1, r1, #4
bl LoadFontPal0
add sp, #4
pop {r3, r4, pc}
nop
_021FFD7C: .word ov96_0221C5C4
thumb_func_end ov96_021FFD4C
thumb_func_start ov96_021FFD80
ov96_021FFD80: ; 0x021FFD80
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
str r1, [sp, #0x10]
add r0, r5, #4
mov r1, #0
add r4, r2, #0
bl FillWindowPixelBuffer
mov r0, #0xa
mul r0, r4
bl _dflt
ldr r3, _021FFE2C ; =0x40900000
mov r2, #0
bl _ddiv
bl _dfix
add r7, r0, #0
cmp r7, #9
ble _021FFDB0
bl GF_AssertFail
_021FFDB0:
ldr r2, _021FFE30 ; =0x00000135
ldr r3, [r5, #0x14]
mov r0, #1
mov r1, #0x1b
bl NewMsgDataFromNarc
add r6, r0, #0
ldr r0, [r5, #0x14]
bl MessageFormat_New
mov r3, #2
str r3, [sp]
mov r1, #1
str r1, [sp, #4]
ldr r2, [sp, #0x10]
mov r1, #0
add r4, r0, #0
bl BufferIntegerAsString
mov r0, #2
str r0, [sp]
mov r1, #1
str r1, [sp, #4]
add r0, r4, #0
add r2, r7, #0
add r3, r1, #0
bl BufferIntegerAsString
ldr r3, [r5, #0x14]
add r0, r4, #0
add r1, r6, #0
mov r2, #0xa2
bl ReadMsgData_ExpandPlaceholders
add r7, r0, #0
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021FFE34 ; =0x000F0E00
mov r1, #4
str r0, [sp, #8]
add r0, r5, #4
add r2, r7, #0
str r3, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r7, #0
bl String_Delete
add r0, r4, #0
bl MessageFormat_Delete
add r0, r6, #0
bl DestroyMsgData
add r0, r5, #4
bl CopyWindowToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
_021FFE2C: .word 0x40900000
_021FFE30: .word 0x00000135
_021FFE34: .word 0x000F0E00
thumb_func_end ov96_021FFD80
thumb_func_start ov96_021FFE38
ov96_021FFE38: ; 0x021FFE38
push {r3, lr}
cmp r0, #0
blt _021FFE5A
mov r3, #1
lsl r3, r3, #8
cmp r0, r3
bge _021FFE5A
cmp r2, #0
beq _021FFE4E
mov r2, #3
b _021FFE50
_021FFE4E:
mov r2, #4
_021FFE50:
lsl r0, r1, #0x10
lsr r0, r0, #0x10
add r1, r2, #0
bl sub_0200606C
_021FFE5A:
pop {r3, pc}
thumb_func_end ov96_021FFE38
thumb_func_start ov96_021FFE5C
ov96_021FFE5C: ; 0x021FFE5C
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
ldr r1, _021FFEE4 ; =0x00000644
add r7, r2, #0
add r3, r0, r1
mov r1, #0xd4
mul r1, r5
add r2, r0, r1
add r1, r2, #0
add r1, #0xbb
ldrb r6, [r1]
mov r1, #0x1c
mov r4, #0
mul r1, r6
add r6, r2, #0
add r6, #0xcd
add r1, r2, r1
add r1, #0x60
ldrb r6, [r6]
ldrb r1, [r1]
cmp r6, #0
beq _021FFE8C
mov r4, #3
b _021FFEA6
_021FFE8C:
add r2, #0xd9
ldrb r2, [r2]
cmp r2, #0
beq _021FFE98
mov r4, #3
b _021FFEA6
_021FFE98:
cmp r1, #2
bne _021FFEA0
mov r4, #3
b _021FFEA6
_021FFEA0:
cmp r1, #1
bne _021FFEA6
mov r4, #1
_021FFEA6:
cmp r7, #0
bne _021FFEAE
strb r4, [r3, r5]
pop {r3, r4, r5, r6, r7, pc}
_021FFEAE:
mov r1, #0xc
mul r1, r5
add r2, r0, r1
mov r0, #0xe
lsl r0, r0, #6
ldr r1, [r2, r0]
cmp r1, #0
beq _021FFED8
cmp r4, #1
bhi _021FFEC8
mov r0, #2
strb r0, [r3, r5]
pop {r3, r4, r5, r6, r7, pc}
_021FFEC8:
cmp r4, #3
bne _021FFED2
mov r0, #4
strb r0, [r3, r5]
pop {r3, r4, r5, r6, r7, pc}
_021FFED2:
bl GF_AssertFail
pop {r3, r4, r5, r6, r7, pc}
_021FFED8:
add r0, r0, #4
ldr r0, [r2, r0]
cmp r0, #0
bne _021FFEE2
strb r4, [r3, r5]
_021FFEE2:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021FFEE4: .word 0x00000644
thumb_func_end ov96_021FFE5C
thumb_func_start ov96_021FFEE8
ov96_021FFEE8: ; 0x021FFEE8
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
add r4, r0, #0
add r0, r6, #0
bl ov96_021E5DC4
add r7, r0, #0
add r0, r6, #0
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r1, r4, r0
ldrb r2, [r1, #0x10]
mov r1, #0x7f
lsl r0, r0, #1
and r1, r2
lsl r1, r1, #0x18
lsr r5, r1, #0x18
ldrh r4, [r4, r0]
cmp r5, #0x3c
bls _021FFF20
mov r5, #0x3c
_021FFF20:
lsl r1, r5, #0xa
add r1, r4, r1
lsl r1, r1, #0x10
add r0, r6, #0
lsr r1, r1, #0x10
bl ov96_021E8318
add r0, r7, #0
add r1, r5, #0
add r2, r4, #0
bl ov96_021FFD80
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021FFEE8
thumb_func_start ov96_021FFF3C
ov96_021FFF3C: ; 0x021FFF3C
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
mov r1, #0x1a
lsl r1, r1, #4
add r6, r0, #0
str r2, [sp]
bl AllocFromHeap
mov r2, #0x1a
add r7, r0, #0
mov r1, #0
lsl r2, r2, #4
bl MI_CpuFill8
str r6, [r7]
ldr r0, [sp]
str r4, [r7, #8]
str r0, [r7, #4]
add r0, r7, #0
bl ov96_02200DF8
ldr r2, _021FFFE4 ; =0x00000135
mov r0, #1
mov r1, #0x1b
add r3, r6, #0
bl NewMsgDataFromNarc
str r0, [r7, #0x2c]
add r0, r6, #0
bl MessageFormat_New
str r0, [r7, #0x30]
mov r4, #0
add r5, r7, #0
_021FFF80:
mov r0, #0xb
add r1, r6, #0
bl String_New
mov r1, #0x17
lsl r1, r1, #4
str r0, [r5, r1]
add r4, r4, #1
add r5, r5, #4
cmp r4, #3
blt _021FFF80
ldr r0, [sp]
bl ov96_021E5F24
add r1, r0, #0
ldr r0, [sp]
bl ov96_021E5D50
add r4, r0, #0
mov r6, #0
add r5, r7, #0
_021FFFAA:
mov r0, #0x17
lsl r0, r0, #4
add r1, r4, #0
ldr r0, [r5, r0]
add r1, #0x12
bl CopyU16ArrayToString
add r6, r6, #1
add r4, #0x28
add r5, r5, #4
cmp r6, #3
blt _021FFFAA
add r0, r7, #0
mov r1, #1
bl ov96_02200BD8
add r0, r7, #0
bl ov96_02200C40
mov r0, #0x16
mov r1, #1
lsl r0, r0, #4
strh r1, [r7, r0]
mov r1, #2
add r0, r0, #2
strh r1, [r7, r0]
add r0, r7, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_021FFFE4: .word 0x00000135
thumb_func_end ov96_021FFF3C
thumb_func_start ov96_021FFFE8
ov96_021FFFE8: ; 0x021FFFE8
push {r3, r4, r5, r6, r7, lr}
mov r7, #0x4a
lsl r7, r7, #2
str r0, [sp]
mov r4, #0
add r5, r0, #0
add r6, r7, #4
_021FFFF6:
ldr r0, [r5, r7]
bl FreeToHeap
ldr r0, [r5, r6]
bl FreeToHeap
add r4, r4, #1
add r5, #8
cmp r4, #3
blt _021FFFF6
ldr r4, [sp]
mov r5, #0
_0220000E:
add r0, r4, #0
add r0, #0xbc
ldr r0, [r0]
bl FreeToHeap
add r5, r5, #1
add r4, r4, #4
cmp r5, #0xc
blt _0220000E
ldr r0, [sp]
ldr r0, [r0, #0x34]
bl FreeToHeap
mov r6, #0x17
ldr r4, [sp]
mov r5, #0
lsl r6, r6, #4
_02200030:
ldr r0, [r4, r6]
bl String_Delete
add r5, r5, #1
add r4, r4, #4
cmp r5, #3
blt _02200030
ldr r0, [sp]
ldr r0, [r0, #0x30]
bl MessageFormat_Delete
ldr r0, [sp]
ldr r0, [r0, #0x2c]
bl DestroyMsgData
ldr r0, [sp]
add r0, #0xc
bl RemoveWindow
ldr r0, [sp]
add r0, #0x1c
bl RemoveWindow
ldr r0, [sp]
bl FreeToHeap
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_021FFFE8
thumb_func_start ov96_02200068
ov96_02200068: ; 0x02200068
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #6
str r0, [sp, #0xc]
ldr r2, [r4, #8]
mov r0, #0xb2
add r3, r1, #0
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #7
str r0, [sp, #0xc]
ldr r2, [r4, #8]
mov r0, #0xb2
mov r3, #6
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #8
str r0, [sp, #0xc]
ldr r2, [r4, #8]
mov r0, #0xb2
mov r3, #5
bl GfGfxLoader_LoadScrnData
ldr r0, [r4]
add r3, r4, #0
str r0, [sp]
mov r0, #0xb2
mov r1, #9
mov r2, #0
add r3, #0x38
bl GfGfxLoader_GetScrnData
str r0, [r4, #0x34]
mov r0, #0x40
str r0, [sp]
ldr r0, [r4]
mov r1, #5
str r0, [sp, #4]
mov r0, #0xb2
mov r2, #4
mov r3, #0
bl GfGfxLoader_GXLoadPal
add sp, #0x10
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02200068
thumb_func_start ov96_022000E4
ov96_022000E4: ; 0x022000E4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
ldr r0, _0220017C ; =ov96_0221C728
add r5, r1, #0
ldr r1, [r0, #0x10]
ldr r0, [r0, #0x14]
add r4, sp, #8
str r1, [sp, #8]
str r0, [sp, #0xc]
mov r6, #0
mov r7, #2
_022000FA:
str r7, [sp]
ldr r3, [r4]
add r0, r5, #0
mov r1, #0x5d
mov r2, #9
bl ov96_021EB2BC
mov r0, #2
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r3, [r4]
add r0, r5, #0
mov r1, #0x5d
mov r2, #6
bl ov96_021EB2F4
ldr r3, [r4]
add r0, r5, #0
mov r1, #0x5d
mov r2, #0xa
bl ov96_021EB334
ldr r3, [r4]
add r0, r5, #0
mov r1, #0x5d
mov r2, #0xa
bl ov96_021EB36C
add r6, r6, #1
add r4, r4, #4
cmp r6, #2
blt _022000FA
mov r0, #2
str r0, [sp]
add r0, r5, #0
mov r1, #0xb2
mov r2, #0xd
mov r3, #0x65
bl ov96_021EB2BC
mov r0, #2
str r0, [sp]
mov r0, #5
str r0, [sp, #4]
add r0, r5, #0
mov r1, #0xb2
mov r2, #0xa
mov r3, #0x65
bl ov96_021EB2F4
add r0, r5, #0
mov r1, #0xb2
mov r2, #0xc
mov r3, #0x65
bl ov96_021EB334
add r0, r5, #0
mov r1, #0xb2
mov r2, #0xb
mov r3, #0x65
bl ov96_021EB36C
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0220017C: .word ov96_0221C728
thumb_func_end ov96_022000E4
thumb_func_start ov96_02200180
ov96_02200180: ; 0x02200180
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
str r0, [sp, #4]
add r5, r1, #0
str r2, [sp, #8]
mov r4, #0
mov r6, #8
mov r7, #0xa
_02200190:
mov r0, #2
str r0, [sp]
add r0, r5, #0
mov r1, #3
mov r2, #2
mov r3, #0x65
bl ov96_021EB408
mov r0, #3
str r0, [sp]
add r0, r5, #0
mov r1, #3
mov r2, #2
mov r3, #0x65
bl ov96_021EB408
add r0, r5, #0
mov r1, #3
mov r2, #2
mov r3, #0x65
str r6, [sp]
bl ov96_021EB408
add r0, r5, #0
mov r1, #3
mov r2, #2
mov r3, #0x65
str r7, [sp]
bl ov96_021EB408
add r4, r4, #1
cmp r4, #4
blt _02200190
mov r4, #0
mov r6, #0x10
mov r7, #3
_022001D8:
add r0, r5, #0
add r1, r7, #0
mov r2, #2
mov r3, #0x65
str r6, [sp]
bl ov96_021EB408
add r4, r4, #1
cmp r4, #2
blt _022001D8
ldr r4, [sp, #4]
mov r6, #0
mov r7, #0x65
_022001F2:
add r0, r5, #0
add r1, r7, #0
mov r2, #2
bl ov96_021EB4F4
str r0, [r4, #0x48]
add r0, r5, #0
mov r1, #0x65
mov r2, #3
bl ov96_021EB4F4
str r0, [r4, #0x54]
add r0, r5, #0
mov r1, #0x65
mov r2, #8
bl ov96_021EB4F4
str r0, [r4, #0x50]
add r0, r5, #0
mov r1, #0x65
mov r2, #0xa
bl ov96_021EB4F4
str r0, [r4, #0x4c]
ldr r0, [r4, #0x48]
add r1, r6, #0
bl ov96_021EB564
ldr r0, [r4, #0x54]
add r1, r6, #4
bl ov96_021EB564
ldr r0, [r4, #0x50]
mov r1, #0xa
bl ov96_021EB564
add r6, r6, #1
add r4, #0x20
cmp r6, #4
blt _022001F2
mov r0, #0x11
str r0, [sp]
add r0, r5, #0
mov r1, #3
mov r2, #2
mov r3, #0x65
bl ov96_021EB3E4
mov r1, #1
add r4, r0, #0
add r2, r1, #0
bl ov96_021EB52C
add r0, r4, #0
mov r1, #0xb
bl ov96_021EB564
mov r0, #0
str r0, [sp, #0x18]
mov r0, #2
lsl r0, r0, #0x12
str r0, [sp, #0x10]
mov r0, #0x8e
lsl r0, r0, #0xe
str r0, [sp, #0x14]
add r0, r4, #0
add r1, sp, #0x10
bl ov96_021EB588
ldr r1, [sp, #4]
add r0, r5, #0
bl ov96_02200C8C
mov r0, #0
ldr r4, [sp, #4]
ldr r7, _022002F0 ; =ov96_0221C718
ldr r6, _022002F4 ; =ov96_0221C720
str r0, [sp, #0xc]
_0220028E:
add r0, r5, #0
bl ov96_021EB5E8
ldr r3, [sp, #4]
add r1, r0, #0
ldr r0, [sp, #8]
ldr r3, [r3]
mov r2, #3
bl ov96_021EA2C4
mov r1, #0x5f
lsl r1, r1, #2
str r0, [r4, r1]
add r0, r1, #0
ldr r0, [r4, r0]
mov r1, #1
bl Set2dSpriteVisibleFlag
ldrb r0, [r7]
add r1, sp, #0x1c
lsl r0, r0, #0xc
str r0, [sp, #0x1c]
mov r0, #0x8e
lsl r0, r0, #0xe
str r0, [sp, #0x20]
mov r0, #0
str r0, [sp, #0x24]
mov r0, #0x5f
lsl r0, r0, #2
ldr r0, [r4, r0]
bl Sprite_SetMatrix
mov r0, #0x5f
lsl r0, r0, #2
ldrb r1, [r6]
ldr r0, [r4, r0]
bl Set2dSpriteAnimSeqNo
ldr r0, [sp, #0xc]
add r4, r4, #4
add r0, r0, #1
add r7, r7, #1
add r6, r6, #1
str r0, [sp, #0xc]
cmp r0, #6
blt _0220028E
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
nop
_022002F0: .word ov96_0221C718
_022002F4: .word ov96_0221C720
thumb_func_end ov96_02200180
thumb_func_start ov96_022002F8
ov96_022002F8: ; 0x022002F8
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r6, r0, #0
add r5, r1, #0
ldr r1, [r6]
mov r0, #0x14
bl NARC_New
str r0, [sp, #0x14]
bl sub_02074490
add r1, r0, #0
mov r0, #0x60
str r0, [sp]
ldr r0, [r6]
mov r2, #5
str r0, [sp, #4]
mov r0, #0x14
mov r3, #0x20
bl GfGfxLoader_GXLoadPal
add r0, r6, #0
str r0, [sp, #0x10]
add r0, #0xec
mov r7, #0
add r4, r6, #0
str r0, [sp, #0x10]
_0220032E:
mov r1, #1
ldr r0, [r6]
lsl r1, r1, #0xc
bl AllocFromHeapAtEnd
add r1, r4, #0
add r1, #0xbc
str r0, [r1]
ldrh r0, [r5, #2]
mov r1, #0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xc]
ldrh r0, [r5]
ldr r2, [sp, #0xc]
str r0, [sp, #8]
bl GetMonIconNaixEx
add r2, r4, #0
add r2, #0xbc
add r1, r0, #0
ldr r0, [sp, #0x14]
ldr r2, [r2]
bl NARC_ReadWholeMember
add r0, r4, #0
add r0, #0xbc
ldr r0, [r0]
ldr r1, [sp, #0x10]
bl NNS_G2dGetUnpackedBGCharacterData
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
mov r2, #0
bl GetMonIconPaletteEx
add r2, r0, #1
mov r0, #0x47
add r1, r6, r7
lsl r0, r0, #2
strb r2, [r1, r0]
ldr r0, [sp, #0x10]
add r7, r7, #1
add r0, r0, #4
add r4, r4, #4
add r5, r5, #4
str r0, [sp, #0x10]
cmp r7, #0xc
blt _0220032E
ldr r0, [sp, #0x14]
bl NARC_Delete
mov r5, #0
add r4, r6, #0
add r7, sp, #0x18
_0220039C:
lsl r1, r5, #0x18
add r0, r6, #0
lsr r1, r1, #0x18
mov r2, #0
bl ov96_022004B4
mov r1, #1
ldr r0, [r4, #0x48]
add r2, r1, #0
bl ov96_021EB52C
mov r1, #1
ldr r0, [r4, #0x54]
add r2, r1, #0
bl ov96_021EB52C
mov r0, #0
str r0, [sp, #0x20]
mov r0, #0xa
lsl r0, r0, #0x10
str r0, [sp, #0x18]
mov r0, #0x2b
lsl r0, r0, #0x10
str r0, [sp, #0x1c]
ldr r0, [r4, #0x48]
add r1, r7, #0
bl ov96_021EB588
ldr r0, [r4, #0x54]
add r1, r7, #0
bl ov96_021EB588
add r5, r5, #1
add r4, #0x20
cmp r5, #4
blt _0220039C
add sp, #0x24
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_022002F8
thumb_func_start ov96_022003E8
ov96_022003E8: ; 0x022003E8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
add r6, r0, #0
mov r0, #0
add r5, r1, #0
str r0, [sp, #0xc]
add r4, r6, #0
add r7, sp, #0x10
_022003F8:
ldrb r0, [r5, #6]
mov r3, #2
str r0, [sp]
ldrh r0, [r5, #2]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
ldr r0, [r5, #0xc]
str r0, [sp, #8]
ldrh r1, [r5]
ldrb r2, [r5, #7]
add r0, sp, #0x10
bl GetMonSpriteCharAndPlttNarcIdsEx
mov r0, #0
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldrh r0, [r5]
str r0, [sp, #8]
ldrh r0, [r7]
ldrh r1, [r7, #2]
ldr r2, [r6]
ldr r3, [r5, #0xc]
bl sub_0201457C
mov r1, #0x4a
lsl r1, r1, #2
str r0, [r4, r1]
ldrh r0, [r7]
ldrh r1, [r7, #4]
ldr r2, [r6]
bl sub_02014450
mov r1, #0x4b
lsl r1, r1, #2
str r0, [r4, r1]
ldr r0, [sp, #0xc]
add r5, #0x10
add r0, r0, #1
add r4, #8
str r0, [sp, #0xc]
cmp r0, #3
blt _022003F8
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_022003E8
thumb_func_start ov96_02200454
ov96_02200454: ; 0x02200454
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
add r5, r0, #0
add r4, r2, #0
cmp r6, #2
blo _02200464
bl GF_AssertFail
_02200464:
cmp r4, #3
blo _0220046C
bl GF_AssertFail
_0220046C:
mov r0, #0x4a
lsl r0, r0, #2
lsl r4, r4, #3
add r7, r5, r0
mov r1, #0x32
ldr r0, [r7, r4]
lsl r1, r1, #6
bl DC_FlushRange
lsl r6, r6, #2
mov r1, #5
add r2, r5, r6
lsl r1, r1, #6
ldr r1, [r2, r1]
mov r2, #0x32
ldr r0, [r7, r4]
lsl r2, r2, #6
bl GXS_LoadOBJ
mov r0, #0x4b
lsl r0, r0, #2
add r7, r5, r0
ldr r0, [r7, r4]
mov r1, #0x20
bl DC_FlushRange
mov r1, #0x52
add r2, r5, r6
lsl r1, r1, #2
ldr r1, [r2, r1]
ldr r0, [r7, r4]
mov r2, #0x20
bl GXS_LoadOBJPltt
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02200454
thumb_func_start ov96_022004B4
ov96_022004B4: ; 0x022004B4
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r4, r1, #0
add r5, r0, #0
lsl r0, r4, #5
add r0, r5, r0
ldr r0, [r0, #0x48]
add r6, r2, #0
bl ov96_021EB5B8
str r0, [sp]
lsl r0, r4, #1
add r0, r4, r0
add r6, r6, r0
add r7, r5, #0
lsl r0, r6, #2
mov r1, #2
add r7, #0xec
str r0, [sp, #4]
ldr r0, [r7, r0]
lsl r1, r1, #8
ldr r0, [r0, #0x14]
bl DC_FlushRange
ldr r0, [sp, #4]
mov r1, #6
ldr r0, [r7, r0]
lsl r2, r4, #9
lsl r1, r1, #8
add r1, r2, r1
mov r2, #2
ldr r0, [r0, #0x14]
lsl r2, r2, #8
bl GXS_LoadOBJ
mov r1, #0x47
add r2, r5, r6
lsl r1, r1, #2
ldrb r1, [r2, r1]
ldr r0, [sp]
bl Sprite_SetPalIndex
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_022004B4
thumb_func_start ov96_0220050C
ov96_0220050C: ; 0x0220050C
push {r4, r5, r6, lr}
sub sp, #0x48
add r4, r1, #0
add r5, r0, #0
lsr r3, r2, #0x1f
lsl r1, r2, #0x16
sub r1, r1, r3
mov r0, #0x16
ror r1, r0
add r0, r3, r1
lsl r1, r0, #0x10
asr r0, r1, #9
lsr r0, r0, #0x16
add r0, r1, r0
lsl r0, r0, #6
lsr r1, r0, #0x10
mov r0, #1
lsl r0, r0, #0x10
sub r0, r0, r1
lsl r0, r0, #0x10
ldr r6, _022005A8 ; =ov96_0221C748
lsr r2, r0, #0x10
ldmia r6!, {r0, r1}
add r3, sp, #0x30
stmia r3!, {r0, r1}
ldr r0, [r6]
ldr r6, _022005AC ; =ov96_0221C754
str r0, [r3]
ldmia r6!, {r0, r1}
add r3, sp, #0x24
stmia r3!, {r0, r1}
ldr r0, [r6]
str r0, [r3]
asr r0, r2, #4
lsl r2, r0, #1
lsl r1, r2, #1
ldr r3, _022005B0 ; =FX_SinCosTable_
add r2, r2, #1
lsl r2, r2, #1
ldrsh r1, [r3, r1]
ldrsh r2, [r3, r2]
add r0, sp, #0
bl MTX_RotZ33_
add r0, sp, #0x30
add r1, sp, #0
add r2, r0, #0
bl MTX_MultVec33
add r0, sp, #0x24
add r1, sp, #0x30
add r2, sp, #0x3c
bl VEC_Add
lsl r4, r4, #5
add r0, r5, r4
ldr r0, [r0, #0x48]
add r1, sp, #0x3c
bl ov96_021EB588
add r0, r5, r4
ldr r0, [r0, #0x54]
add r1, sp, #0x3c
bl ov96_021EB588
add r0, r5, r4
ldr r0, [r0, #0x4c]
add r1, sp, #0x3c
bl ov96_021EB588
add r0, r5, r4
ldr r0, [r0, #0x50]
add r1, sp, #0x3c
bl ov96_021EB588
add sp, #0x48
pop {r4, r5, r6, pc}
nop
_022005A8: .word ov96_0221C748
_022005AC: .word ov96_0221C754
_022005B0: .word FX_SinCosTable_
thumb_func_end ov96_0220050C
thumb_func_start ov96_022005B4
ov96_022005B4: ; 0x022005B4
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r5, r0, #0
add r0, r2, #0
add r4, r1, #0
bl _ffltu
bl _f2d
ldr r2, _022006B4 ; =0x9999999A
ldr r3, _022006B8 ; =0x40599999
bl _ddiv
bl _dfixu
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x1c]
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
lsl r0, r0, #0x18
lsr r6, r0, #0x18
add r0, r6, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x20
strb r1, [r0, #2]
add r0, r6, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x20
strb r1, [r0]
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
lsl r0, r1, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x20
strb r1, [r0, #3]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x20
strb r1, [r0, #1]
mov r4, #0
mov r7, #4
mov r6, #8
_0220062E:
str r7, [sp]
str r6, [sp, #4]
ldr r0, [r5, #0x38]
lsl r2, r4, #2
add r0, #0xc
str r0, [sp, #8]
add r0, sp, #0x20
add r0, #2
ldrb r0, [r0, r4]
add r2, #0xe
lsl r2, r2, #0x18
str r0, [sp, #0xc]
add r0, sp, #0x20
ldrb r0, [r0, r4]
mov r1, #5
lsr r2, r2, #0x18
str r0, [sp, #0x10]
mov r0, #0x14
str r0, [sp, #0x14]
mov r0, #0x10
str r0, [sp, #0x18]
ldr r0, [r5, #8]
add r3, r6, #0
bl CopyRectToBgTilemapRect
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #2
blo _0220062E
ldr r0, [sp, #0x1c]
mov r1, #5
bl _s32_div_f
add r4, r1, #0
ldr r0, [sp, #0x1c]
mov r1, #5
bl _s32_div_f
mov r1, #4
lsl r0, r0, #0x1b
str r1, [sp]
mov r3, #8
str r3, [sp, #4]
ldr r1, [r5, #0x38]
lsr r0, r0, #0x18
add r1, #0xc
str r1, [sp, #8]
lsl r1, r4, #0x1a
lsr r1, r1, #0x18
str r1, [sp, #0xc]
str r0, [sp, #0x10]
mov r0, #0x14
str r0, [sp, #0x14]
mov r0, #0x10
str r0, [sp, #0x18]
ldr r0, [r5, #8]
mov r1, #5
mov r2, #0x18
bl CopyRectToBgTilemapRect
ldr r0, [r5, #8]
mov r1, #5
bl ScheduleBgTilemapBufferTransfer
add sp, #0x24
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_022006B4: .word 0x9999999A
_022006B8: .word 0x40599999
thumb_func_end ov96_022005B4
thumb_func_start ov96_022006BC
ov96_022006BC: ; 0x022006BC
push {r4, r5, r6, r7, lr}
sub sp, #0x24
mov r5, #0x59
add r4, r0, #0
lsl r5, r5, #2
add r6, r1, #0
ldr r1, [r4, r5]
cmp r1, #3
bhi _0220073A
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_022006DA: ; jump table
.short _022006E2 - _022006DA - 2 ; case 0
.short _0220076E - _022006DA - 2 ; case 1
.short _022007B2 - _022006DA - 2 ; case 2
.short _0220084C - _022006DA - 2 ; case 3
_022006E2:
add r0, r5, #4
ldr r0, [r4, r0]
lsl r0, r0, #2
add r1, r4, r0
add r0, r5, #0
sub r0, #0x14
ldr r0, [r1, r0]
bl ov96_021EB594
add r6, r0, #0
add r3, sp, #0x18
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
str r0, [r3]
mov r0, #2
ldr r1, [sp, #0x1c]
lsl r0, r0, #0x10
add r0, r1, r0
str r0, [sp, #0x1c]
add r0, r5, #4
ldr r1, [r4, r0]
sub r0, #0x18
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r2, #0
bl ov96_021EB588
add r0, r5, #4
ldr r1, [r4, r0]
sub r0, #0x10
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, sp, #0x18
bl ov96_021EB588
mov r0, #0x2e
ldr r1, [sp, #0x1c]
lsl r0, r0, #0x10
cmp r1, r0
bge _0220073C
_0220073A:
b _022008FA
_0220073C:
mov r0, #0x76
lsl r0, r0, #0xe
str r0, [sp, #0x1c]
add r0, r5, #4
ldr r1, [r4, r0]
sub r0, #0x18
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, sp, #0x18
bl ov96_021EB588
add r0, r5, #4
ldr r1, [r4, r0]
sub r0, #0x10
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, sp, #0x18
bl ov96_021EB588
ldr r0, [r4, r5]
add r0, r0, #1
str r0, [r4, r5]
b _022008FA
_0220076E:
add r1, r5, #4
ldr r1, [r4, r1]
add r2, r6, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_02200454
sub r1, r5, #4
add r0, r4, r1
add r1, #8
ldr r1, [r4, r1]
lsl r2, r1, #1
ldrh r1, [r0, r2]
cmp r1, #0
bne _02200790
mov r1, #2
b _02200792
_02200790:
sub r1, r1, #1
_02200792:
mov r3, #0x5a
lsl r3, r3, #2
strh r1, [r0, r2]
ldr r0, [r4, r3]
add r0, r0, #1
lsr r2, r0, #0x1f
lsl r1, r0, #0x1f
sub r1, r1, r2
mov r0, #0x1f
ror r1, r0
add r0, r2, r1
str r0, [r4, r3]
ldr r0, [r4, r5]
add r0, r0, #1
str r0, [r4, r5]
b _022008FA
_022007B2:
add r0, r5, #4
ldr r0, [r4, r0]
lsl r0, r0, #2
add r1, r4, r0
add r0, r5, #0
sub r0, #0x14
ldr r0, [r1, r0]
bl ov96_021EB594
add r6, r0, #0
add r3, sp, #0xc
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
str r0, [r3]
mov r0, #2
ldr r1, [sp, #0x10]
lsl r0, r0, #0x10
add r0, r1, r0
str r0, [sp, #0x10]
add r0, r5, #4
ldr r1, [r4, r0]
sub r0, #0x18
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r2, #0
bl ov96_021EB588
add r0, r5, #4
ldr r1, [r4, r0]
sub r0, #0x10
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, sp, #0xc
bl ov96_021EB588
mov r0, #0xa2
ldr r1, [sp, #0x10]
lsl r0, r0, #0xe
cmp r1, r0
blt _022008FA
str r0, [sp, #0x10]
add r0, r5, #4
ldr r1, [r4, r0]
sub r0, #0x18
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, sp, #0xc
bl ov96_021EB588
add r0, r5, #4
ldr r1, [r4, r0]
sub r0, #0x10
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, sp, #0xc
bl ov96_021EB588
add r3, r5, #4
ldr r0, [r4, r3]
add r0, r0, #1
lsr r2, r0, #0x1f
lsl r1, r0, #0x1f
sub r1, r1, r2
mov r0, #0x1f
ror r1, r0
add r0, r2, r1
str r0, [r4, r3]
ldr r0, [r4, r5]
add r0, r0, #1
str r0, [r4, r5]
b _022008FA
_0220084C:
add r0, r5, #4
ldr r0, [r4, r0]
lsl r0, r0, #2
add r1, r4, r0
add r0, r5, #0
sub r0, #0x14
ldr r0, [r1, r0]
bl ov96_021EB594
add r3, r0, #0
add r2, sp, #0
ldmia r3!, {r0, r1}
add r7, r2, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
mov r0, #2
ldr r1, [sp, #4]
lsl r0, r0, #0x10
add r0, r1, r0
str r0, [sp, #4]
add r0, r5, #4
ldr r1, [r4, r0]
sub r0, #0x18
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
bl ov96_021EB588
add r0, r5, #4
ldr r1, [r4, r0]
sub r0, #0x10
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
bl ov96_021EB588
mov r0, #0x23
ldr r1, [sp, #4]
lsl r0, r0, #0x10
cmp r1, r0
blt _022008FA
str r0, [sp, #4]
add r0, r5, #4
ldr r1, [r4, r0]
sub r0, #0x18
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
bl ov96_021EB588
add r0, r5, #4
ldr r1, [r4, r0]
sub r0, #0x10
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
bl ov96_021EB588
add r3, r5, #4
ldr r0, [r4, r3]
add r0, r0, #1
lsr r2, r0, #0x1f
lsl r1, r0, #0x1f
sub r1, r1, r2
mov r0, #0x1f
ror r1, r0
add r0, r2, r1
str r0, [r4, r3]
add r0, r6, #2
mov r1, #3
bl _s32_div_f
lsl r1, r1, #0x18
add r0, r4, #0
lsr r1, r1, #0x18
bl ov96_02200BD8
mov r0, #0
str r0, [r4, r5]
add sp, #0x24
mov r0, #1
pop {r4, r5, r6, r7, pc}
_022008FA:
mov r0, #0
add sp, #0x24
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_022006BC
thumb_func_start ov96_02200900
ov96_02200900: ; 0x02200900
push {r3, r4, r5, lr}
add r4, r0, #0
add r5, r1, #0
beq _0220090C
cmp r5, #4
blo _02200910
_0220090C:
bl GF_AssertFail
_02200910:
mov r1, #0x65
sub r0, r5, #1
lsl r1, r1, #2
lsl r0, r0, #2
add r3, r4, r1
ldrh r2, [r3, r0]
add r2, #0x20
strh r2, [r3, r0]
ldrh r2, [r3, r0]
cmp r2, #0x58
blo _02200934
mov r2, #0
add r1, r1, #2
strh r2, [r3, r0]
add r2, r4, r1
ldrh r1, [r2, r0]
add r1, r1, #1
strh r1, [r2, r0]
_02200934:
ldr r1, _0220094C ; =0x00000196
add r2, r4, r1
ldrh r1, [r2, r0]
cmp r1, #3
blo _02200946
mov r1, #0
strh r1, [r2, r0]
mov r0, #1
pop {r3, r4, r5, pc}
_02200946:
mov r0, #0
pop {r3, r4, r5, pc}
nop
_0220094C: .word 0x00000196
thumb_func_end ov96_02200900
thumb_func_start ov96_02200950
ov96_02200950: ; 0x02200950
push {r3, r4, r5, r6, r7, lr}
str r3, [sp]
mov r3, #0x5b
add r5, r0, #0
lsl r3, r3, #2
add r4, r1, #0
add r7, r5, r3
ldrb r3, [r7, r4]
ldr r6, [sp, #0x18]
cmp r2, r3
beq _0220096C
strb r2, [r7, r4]
bl ov96_022004B4
_0220096C:
ldr r0, [sp]
cmp r0, #0
beq _0220099A
lsl r4, r4, #5
add r0, r5, r4
ldr r0, [r0, #0x48]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
add r0, r5, r4
mov r1, #1
ldr r0, [r0, #0x50]
add r2, r1, #0
bl ov96_021EB52C
add r0, r5, r4
ldr r0, [r0, #0x4c]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
b _02200A0E
_0220099A:
lsl r4, r4, #5
add r0, r5, r4
mov r1, #1
ldr r0, [r0, #0x48]
add r2, r1, #0
bl ov96_021EB52C
add r0, r5, r4
ldr r0, [r0, #0x50]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
cmp r6, #1
beq _022009BE
cmp r6, #2
beq _022009E0
b _02200A02
_022009BE:
add r0, r5, r4
add r0, #0x58
ldrb r0, [r0]
cmp r6, r0
beq _02200A0E
add r7, r5, #0
add r7, #0x4c
mov r1, #1
ldr r0, [r7, r4]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r7, r4]
mov r1, #8
bl ov96_021EB564
b _02200A0E
_022009E0:
add r0, r5, r4
add r0, #0x58
ldrb r0, [r0]
cmp r6, r0
beq _02200A0E
add r7, r5, #0
add r7, #0x4c
mov r1, #1
ldr r0, [r7, r4]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r7, r4]
mov r1, #9
bl ov96_021EB564
b _02200A0E
_02200A02:
add r0, r5, r4
ldr r0, [r0, #0x4c]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
_02200A0E:
add r0, r5, r4
add r0, #0x58
strb r6, [r0]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02200950
thumb_func_start ov96_02200A18
ov96_02200A18: ; 0x02200A18
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r2, #0
cmp r1, #1
bne _02200A32
mov r0, #0x56
lsl r0, r0, #2
mov r1, #1
ldr r0, [r5, r0]
add r2, r1, #0
bl ov96_021EB52C
b _02200A40
_02200A32:
mov r0, #0x56
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
_02200A40:
cmp r4, #1
bne _02200A54
mov r0, #0x57
lsl r0, r0, #2
mov r1, #1
ldr r0, [r5, r0]
add r2, r1, #0
bl ov96_021EB52C
pop {r3, r4, r5, pc}
_02200A54:
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
pop {r3, r4, r5, pc}
thumb_func_end ov96_02200A18
thumb_func_start ov96_02200A64
ov96_02200A64: ; 0x02200A64
push {r4, r5, r6, lr}
add r6, r1, #0
add r5, r0, #0
add r0, r6, #0
mov r1, #0x1e
bl _s32_div_f
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r6, #0
mov r1, #0x1e
bl _s32_div_f
lsl r0, r1, #0x18
lsr r1, r0, #0x18
mov r0, #0x64
mul r0, r1
mov r1, #0x1e
bl _s32_div_f
lsl r0, r0, #0x18
lsr r6, r0, #0x18
add r0, r4, #0
mov r1, #0x3c
bl _s32_div_f
add r1, r0, #0
mov r0, #0x5f
lsl r0, r0, #2
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r5, r0]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0x3c
bl _s32_div_f
lsl r0, r1, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
add r1, r0, #0
mov r0, #0x61
lsl r0, r0, #2
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r5, r0]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
mov r0, #0x62
lsl r0, r0, #2
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r5, r0]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
add r0, r6, #0
mov r1, #0xa
bl _s32_div_f
add r1, r0, #0
mov r0, #0x19
lsl r0, r0, #4
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r5, r0]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
pop {r4, r5, r6, pc}
thumb_func_end ov96_02200A64
thumb_func_start ov96_02200B04
ov96_02200B04: ; 0x02200B04
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
add r7, r1, #0
mov r6, #0
add r4, r5, #0
_02200B10:
mov r0, #0x5f
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #2
bl Sprite_SetDrawPriority
add r6, r6, #1
add r4, r4, #4
cmp r6, #6
blt _02200B10
mov r6, #0
add r4, r5, #0
_02200B28:
mov r0, #0x15
lsl r0, r0, #4
ldr r0, [r4, r0]
bl ov96_021EB5B8
mov r1, #2
bl Sprite_SetDrawPriority
add r6, r6, #1
add r4, r4, #4
cmp r6, #2
blt _02200B28
mov r0, #1
mov r2, #0
add r1, sp, #4
_02200B46:
cmp r2, r7
bne _02200B4C
strb r2, [r1]
_02200B4C:
add r2, r2, #1
cmp r2, #4
blt _02200B46
mov r2, #0
add r4, sp, #4
add r3, sp, #4
_02200B58:
ldrb r1, [r3]
cmp r1, r2
beq _02200B68
add r1, r0, #0
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
strb r2, [r4, r1]
_02200B68:
add r2, r2, #1
cmp r2, #4
blt _02200B58
mov r0, #4
mov r7, #0
mov r6, #3
add r4, sp, #4
str r0, [sp]
_02200B78:
ldrb r0, [r4]
add r1, r6, #0
lsl r0, r0, #5
add r0, r5, r0
ldr r0, [r0, #0x4c]
bl ov96_021EB630
ldrb r0, [r4]
add r1, r6, #0
lsl r0, r0, #5
add r0, r5, r0
ldr r0, [r0, #0x50]
bl ov96_021EB630
ldrb r0, [r4]
ldr r1, [sp]
lsl r0, r0, #5
add r0, r5, r0
ldr r0, [r0, #0x48]
bl ov96_021EB630
ldrb r0, [r4]
add r1, r7, #0
add r1, #0xb
lsl r0, r0, #5
add r0, r5, r0
ldr r0, [r0, #0x54]
bl ov96_021EB630
ldr r0, [sp]
add r7, r7, #1
add r0, r0, #2
add r6, r6, #2
add r4, r4, #1
str r0, [sp]
cmp r7, #4
blt _02200B78
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02200B04
thumb_func_start ov96_02200BC8
ov96_02200BC8: ; 0x02200BC8
lsl r1, r1, #1
add r1, r0, r1
mov r0, #0x16
lsl r0, r0, #4
ldrh r0, [r1, r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
thumb_func_end ov96_02200BC8
thumb_func_start ov96_02200BD8
ov96_02200BD8: ; 0x02200BD8
push {r3, r4, r5, lr}
sub sp, #0x10
add r4, r0, #0
add r5, r1, #0
add r0, #0xc
mov r1, #0
bl FillWindowPixelBuffer
mov r0, #1
lsl r2, r5, #2
add r5, r4, r2
mov r2, #0x17
str r0, [sp]
mov r3, #2
str r3, [sp, #4]
lsl r2, r2, #4
ldr r0, [r4, #0x30]
ldr r2, [r5, r2]
mov r1, #0
bl BufferString
ldr r0, [r4, #0x30]
ldr r1, [r4, #0x2c]
ldr r3, [r4]
mov r2, #0x9a
bl ReadMsgData_ExpandPlaceholders
mov r1, #0
add r5, r0, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _02200C3C ; =0x000F0E00
add r2, r5, #0
str r0, [sp, #8]
add r0, r4, #0
add r0, #0xc
add r3, r1, #0
str r1, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r5, #0
bl String_Delete
add r4, #0xc
add r0, r4, #0
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, pc}
.balign 4, 0
_02200C3C: .word 0x000F0E00
thumb_func_end ov96_02200BD8
thumb_func_start ov96_02200C40
ov96_02200C40: ; 0x02200C40
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
add r0, #0x1c
mov r1, #0
bl FillWindowPixelBuffer
ldr r0, [r5, #0x2c]
ldr r1, _02200C84 ; =0x00000131
bl NewString_ReadMsgData
mov r1, #0
add r4, r0, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _02200C88 ; =0x000F0E00
add r2, r4, #0
str r0, [sp, #8]
add r0, r5, #0
add r0, #0x1c
add r3, r1, #0
str r1, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r4, #0
bl String_Delete
add r5, #0x1c
add r0, r5, #0
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, pc}
.balign 4, 0
_02200C84: .word 0x00000131
_02200C88: .word 0x000F0E00
thumb_func_end ov96_02200C40
thumb_func_start ov96_02200C8C
ov96_02200C8C: ; 0x02200C8C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
str r0, [sp, #4]
ldr r0, _02200D78 ; =ov96_0221C728
str r1, [sp, #8]
ldr r2, [r0]
ldr r1, [r0, #4]
str r2, [sp, #0x14]
str r1, [sp, #0x18]
ldr r1, [r0, #8]
ldr r0, [r0, #0xc]
add r5, sp, #0x14
add r4, sp, #0xc
str r1, [sp, #0xc]
str r0, [sp, #0x10]
mov r6, #0
mov r7, #3
_02200CAE:
ldr r0, [r4]
add r1, r7, #0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
ldr r3, [r5]
ldr r0, [sp, #4]
lsl r3, r3, #0x18
mov r2, #2
lsr r3, r3, #0x18
bl ov96_021EB408
add r6, r6, #1
add r4, r4, #4
add r5, r5, #4
cmp r6, #2
blt _02200CAE
ldr r4, [sp, #8]
mov r5, #0
add r7, sp, #0xc
add r6, sp, #0x14
_02200CD8:
ldr r1, [r6]
ldr r2, [r7]
lsl r1, r1, #0x18
lsl r2, r2, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_021EB4F4
mov r1, #0x15
lsl r1, r1, #4
str r0, [r4, r1]
add r0, r1, #0
ldr r0, [r4, r0]
bl ov96_021EB5B8
mov r1, #0
str r1, [sp, #0x24]
mov r1, #0xa
lsl r1, r1, #0xe
str r1, [sp, #0x1c]
mov r1, #1
sub r2, r1, r5
mov r1, #0x58
mul r1, r2
add r1, #0x30
lsl r2, r1, #0xc
mov r1, #2
lsl r1, r1, #0x14
add r1, r2, r1
str r1, [sp, #0x20]
add r1, sp, #0x1c
bl Sprite_SetMatrix
mov r0, #0x15
lsl r0, r0, #4
mov r1, #1
ldr r0, [r4, r0]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [sp, #4]
mov r1, #0x65
mov r2, #0x10
bl ov96_021EB4F4
mov r1, #0x56
lsl r1, r1, #2
str r0, [r4, r1]
add r0, r1, #0
ldr r0, [r4, r0]
mov r1, #8
bl ov96_021EB564
mov r0, #0x56
lsl r0, r0, #2
ldr r0, [r4, r0]
add r1, sp, #0x1c
bl ov96_021EB588
mov r0, #0x56
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
add r5, r5, #1
add r7, r7, #4
add r6, r6, #4
add r4, r4, #4
cmp r5, #2
blt _02200CD8
ldr r0, [sp, #4]
ldr r1, [sp, #8]
bl ov96_02200D7C
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
nop
_02200D78: .word ov96_0221C728
thumb_func_end ov96_02200C8C
thumb_func_start ov96_02200D7C
ov96_02200D7C: ; 0x02200D7C
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r7, r0, #0
ldr r0, _02200DF4 ; =ov96_0221C728
str r1, [sp]
ldr r1, [r0, #0x18]
ldr r0, [r0, #0x1c]
str r1, [sp, #0xc]
str r0, [sp, #0x10]
mov r4, #0
_02200D90:
lsl r0, r4, #2
add r1, sp, #0xc
ldr r5, [r1, r0]
str r0, [sp, #4]
add r0, r7, #0
add r1, r5, #0
mov r2, #0
bl ov96_021EB5EC
ldr r6, [r0]
add r0, r7, #0
add r1, r5, #0
mov r2, #1
bl ov96_021EB5EC
ldr r5, [r0]
add r0, r6, #0
bl sub_0200AF00
add r6, r0, #0
add r0, r5, #0
add r1, r6, #0
bl sub_0200B0F8
str r0, [sp, #8]
ldr r1, [sp]
ldr r0, [sp, #4]
add r5, r1, r0
add r0, r6, #0
mov r1, #2
bl NNS_G2dGetImageLocation
mov r1, #5
lsl r1, r1, #6
str r0, [r5, r1]
ldr r0, [sp, #8]
mov r1, #2
bl NNS_G2dGetImagePaletteLocation
mov r1, #0x52
lsl r1, r1, #2
str r0, [r5, r1]
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #2
blo _02200D90
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
_02200DF4: .word ov96_0221C728
thumb_func_end ov96_02200D7C
thumb_func_start ov96_02200DF8
ov96_02200DF8: ; 0x02200DF8
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
add r1, r4, #0
ldr r0, [r4, #8]
ldr r2, _02200E34 ; =ov96_0221C760
add r1, #0xc
bl AddWindow
add r1, r4, #0
ldr r0, [r4, #8]
ldr r2, _02200E38 ; =ov96_0221C768
add r1, #0x1c
bl AddWindow
mov r2, #0
str r2, [sp]
ldr r0, [r4, #8]
mov r1, #4
mov r3, #1
bl BG_FillCharDataRange
mov r1, #0x1e
ldr r2, [r4]
mov r0, #4
lsl r1, r1, #4
bl LoadFontPal0
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
_02200E34: .word ov96_0221C760
_02200E38: .word ov96_0221C768
thumb_func_end ov96_02200DF8
thumb_func_start ov96_02200E3C
ov96_02200E3C: ; 0x02200E3C
push {r3, r4, r5, lr}
add r5, r1, #0
mov r1, #0xfa
lsl r1, r1, #2
bl AllocFromHeap
mov r2, #0xfa
mov r1, #0
lsl r2, r2, #2
add r4, r0, #0
bl MI_CpuFill8
mov r0, #0x3e
lsl r0, r0, #4
mov r1, #4
sub r2, r1, r5
strb r5, [r4, r0]
add r1, r0, #5
strb r2, [r4, r1]
ldrb r2, [r4, r1]
add r1, r0, #4
strb r2, [r4, r1]
add r1, r0, #3
mov r2, #0xa
strb r2, [r4, r1]
ldrb r1, [r4, r1]
add r0, r0, #2
strb r1, [r4, r0]
add r0, r4, #0
pop {r3, r4, r5, pc}
thumb_func_end ov96_02200E3C
thumb_func_start ov96_02200E78
ov96_02200E78: ; 0x02200E78
lsl r1, r1, #4
str r2, [r0, r1]
bx lr
.balign 4, 0
thumb_func_end ov96_02200E78
thumb_func_start ov96_02200E80
ov96_02200E80: ; 0x02200E80
push {r4, r5, r6, r7}
mov r5, #0
mov r2, #1
_02200E86:
ldr r3, [r1]
lsl r3, r3, #0x18
lsr r4, r3, #0x18
str r4, [r0, #0x4c]
ldr r3, [r1]
asr r6, r3, #8
asr r3, r3, #0x10
lsl r6, r6, #0x18
lsl r3, r3, #0x10
lsr r6, r6, #0x18
lsr r3, r3, #0x10
cmp r4, #0
beq _02200ED8
str r2, [r0, #0x40]
ldr r4, [r0, #0x4c]
cmp r4, #2
bne _02200EAE
mov r4, #0x20
str r4, [r0, #0x50]
b _02200EBC
_02200EAE:
cmp r4, #1
bne _02200EB8
mov r4, #0x30
str r4, [r0, #0x50]
b _02200EBC
_02200EB8:
mov r4, #0x40
str r4, [r0, #0x50]
_02200EBC:
ldr r7, [r0, #0x50]
add r6, #0x20
lsr r4, r7, #0x1f
add r4, r7, r4
asr r4, r4, #1
sub r3, r3, r4
str r3, [r0, #0x44]
ldr r4, [r0, #0x50]
lsr r3, r4, #0x1f
add r3, r4, r3
asr r3, r3, #1
sub r3, r6, r3
str r3, [r0, #0x48]
b _02200EDC
_02200ED8:
mov r3, #0
str r3, [r0, #0x40]
_02200EDC:
add r5, r5, #1
add r1, r1, #4
add r0, #0x14
cmp r5, #0x1e
blt _02200E86
pop {r4, r5, r6, r7}
bx lr
.balign 4, 0
thumb_func_end ov96_02200E80
thumb_func_start ov96_02200EEC
ov96_02200EEC: ; 0x02200EEC
ldr r3, _02200EF0 ; =FreeToHeap
bx r3
.balign 4, 0
_02200EF0: .word FreeToHeap
thumb_func_end ov96_02200EEC
thumb_func_start ov96_02200EF4
ov96_02200EF4: ; 0x02200EF4
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
ldr r0, _02200F7C ; =0x000003E5
add r5, r1, #0
ldrb r1, [r5, r0]
add r7, r2, #0
mov r2, #4
cmp r1, #4
bne _02200F0A
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_02200F0A:
sub r1, r0, #3
ldrb r1, [r5, r1]
add r3, r1, #1
sub r1, r0, #3
strb r3, [r5, r1]
sub r3, r0, #2
ldrb r1, [r5, r1]
ldrb r3, [r5, r3]
cmp r1, r3
blo _02200F2C
add r1, r0, #0
mov r3, #1
sub r1, #9
str r3, [r5, r1]
mov r1, #0
sub r0, r0, #3
strb r1, [r5, r0]
_02200F2C:
mov r1, #0xf7
lsl r1, r1, #2
ldr r0, [r5, r1]
cmp r0, #0
beq _02200F76
add r0, r1, #0
add r0, #8
add r1, r1, #5
ldrb r0, [r5, r0]
ldrb r1, [r5, r1]
add r4, r0, r1
cmp r4, r0
bge _02200F4A
bl GF_AssertFail
_02200F4A:
lsl r2, r4, #0x18
add r0, r6, #0
add r1, r5, #0
lsr r2, r2, #0x18
add r3, r7, #0
bl ov96_02200F84
lsl r0, r4, #0x18
lsr r2, r0, #0x18
ldr r0, _02200F80 ; =0x000003E1
ldrb r1, [r5, r0]
add r1, r1, #1
strb r1, [r5, r0]
sub r1, r0, #1
ldrb r3, [r5, r0]
ldrb r1, [r5, r1]
cmp r3, r1
blo _02200F76
mov r1, #0
strb r1, [r5, r0]
sub r0, r0, #5
str r1, [r5, r0]
_02200F76:
add r0, r2, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_02200F7C: .word 0x000003E5
_02200F80: .word 0x000003E1
thumb_func_end ov96_02200EF4
thumb_func_start ov96_02200F84
ov96_02200F84: ; 0x02200F84
push {r4, r5, r6, r7, lr}
sub sp, #0x1fc
sub sp, #0xf8
str r2, [sp, #0xc]
str r0, [sp, #4]
ldr r0, [sp, #0xc]
str r1, [sp, #8]
lsl r0, r0, #4
str r0, [sp, #0x14]
ldr r0, [r1, r0]
str r3, [sp, #0x10]
add r1, r0, #0
add r1, #0x9d
ldrb r1, [r1]
cmp r1, #0
bne _02200FC0
add r1, r0, #0
add r1, #0x8b
ldrb r2, [r1]
mov r1, #0x1c
mul r1, r2
add r1, r0, r1
add r1, #0x30
ldrb r1, [r1]
cmp r1, #2
beq _02200FC0
add r0, #0xa9
ldrb r0, [r0]
cmp r0, #0
beq _02200FC2
_02200FC0:
b _02201444
_02200FC2:
mov r1, #0
add r0, r1, #0
add r2, sp, #0x4c
str r0, [sp, #0x2c]
_02200FCA:
ldr r0, [sp, #0x2c]
add r1, r1, #1
stmia r2!, {r0}
cmp r1, #4
blt _02200FCA
ldr r7, [sp, #8]
add r6, r0, #0
add r5, sp, #0x5c
_02200FDA:
add r3, r7, #0
add r2, r5, #0
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r4, [r5]
add r0, sp, #0x44
str r0, [sp]
ldr r1, [r4, #0x7c]
add r0, r4, #0
asr r2, r1, #0xb
lsr r2, r2, #0x14
add r2, r1, r2
asr r1, r2, #0xc
add r2, r4, #0
add r0, #0x8b
add r2, #0x80
ldrb r0, [r0]
ldr r3, [r2]
asr r2, r3, #0xb
lsl r0, r0, #2
lsr r2, r2, #0x14
add r2, r3, r2
ldr r0, [r4, r0]
asr r2, r2, #0xc
add r3, sp, #0x48
bl ov96_021EB0A4
add r0, sp, #0x3c
str r0, [sp]
add r0, r4, #0
add r0, #0x8b
ldrb r0, [r0]
ldr r1, [sp, #0x48]
ldr r2, [sp, #0x44]
lsl r0, r0, #2
ldr r0, [r4, r0]
lsl r1, r1, #0xc
lsl r2, r2, #0xc
add r3, sp, #0x40
bl ov96_021EB03C
ldr r1, [sp, #0x40]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
ldr r1, [sp, #0x3c]
str r0, [r5, #8]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
ldr r1, [sp, #8]
asr r0, r0, #0xc
str r0, [r5, #0xc]
add r4, r1, r6
sub r0, #0x20
mov r1, #0x28
bl _s32_div_f
mov r1, #0xa6
lsl r1, r1, #2
strb r0, [r4, r1]
add r0, r1, #0
ldrb r0, [r4, r0]
cmp r0, #4
bls _02201066
bl GF_AssertFail
_02201066:
add r6, r6, #1
add r7, #0x10
add r5, #0x10
cmp r6, #4
blt _02200FDA
ldr r0, [sp, #0x14]
add r1, sp, #0x5c
add r0, r1, r0
ldr r2, [sp, #8]
str r0, [sp, #0x28]
mov r4, #0
add r3, sp, #0x9c
_0220107E:
add r6, r2, #0
add r6, #0x40
ldmia r6!, {r0, r1}
add r5, r3, #0
stmia r5!, {r0, r1}
ldmia r6!, {r0, r1}
stmia r5!, {r0, r1}
ldr r0, [r6]
add r4, r4, #1
str r0, [r5]
add r2, #0x14
add r3, #0x14
cmp r4, #0x1e
blt _0220107E
ldr r0, [sp, #0x28]
ldr r1, [r0, #8]
mov r0, #0x36
lsl r0, r0, #4
cmp r1, r0
blt _022010D6
mov r5, #0
add r6, r5, #0
add r4, sp, #0x5c
sub r6, #0xa0
_022010AE:
add r0, r4, #0
add r0, #8
add r1, r6, #0
bl ov96_0220144C
add r5, r5, #1
add r4, #0x10
cmp r5, #4
blt _022010AE
mov r5, #0
add r4, sp, #0x9c
mov r6, #0x50
_022010C6:
add r0, r4, #4
add r1, r6, #0
bl ov96_0220144C
add r5, r5, #1
add r4, #0x14
cmp r5, #0x1e
blt _022010C6
_022010D6:
ldr r4, [sp, #8]
mov r5, #0
_022010DA:
ldr r0, _02201308 ; =0x000002AE
lsr r2, r5, #0x1f
lsl r1, r5, #0x1e
strh r5, [r4, r0]
sub r1, r1, r2
mov r0, #0x1e
ror r1, r0
add r1, r2, r1
mov r0, #0x28
add r6, r1, #0
mul r6, r0
ldr r0, [sp, #0x28]
ldr r0, [r0, #8]
add r0, #0x14
add r1, r0, r6
mov r0, #0xa7
lsl r0, r0, #2
str r1, [r4, r0]
asr r0, r5, #1
lsr r0, r0, #0x1e
add r0, r5, r0
asr r1, r0, #2
mov r0, #0x28
add r7, r1, #0
mul r7, r0
add r1, r7, #0
mov r0, #0x2a
add r1, #0x34
lsl r0, r0, #4
str r1, [r4, r0]
bl LCRandom
mov r1, #0x28
bl _s32_div_f
ldr r0, [sp, #0x28]
ldr r0, [r0, #8]
add r0, r0, r6
add r1, r0, r1
mov r0, #0xa9
lsl r0, r0, #2
str r1, [r4, r0]
bl LCRandom
mov r1, #0x28
bl _s32_div_f
add r7, #0x20
mov r0, #0xaa
add r1, r7, r1
lsl r0, r0, #2
str r1, [r4, r0]
add r5, r5, #1
add r4, #0x14
cmp r5, #0x10
blt _022010DA
ldr r2, _0220130C ; =ov96_0221C770
ldr r3, [sp, #8]
mov r4, #0
add r0, r0, #4
_02201152:
ldr r1, [r2]
add r4, r4, #1
strh r1, [r3, r0]
add r2, r2, #4
add r3, #0x14
cmp r4, #0x10
blt _02201152
mov r0, #0x20
str r0, [sp, #0x20]
ldr r1, [sp, #8]
ldr r0, [sp, #0xc]
mov r6, #0
add r0, r1, r0
add r4, sp, #0x4c
str r6, [sp, #0x24]
str r0, [sp, #0x1c]
_02201172:
ldr r0, [sp, #0x24]
mov r1, #0x14
mul r1, r0
ldr r0, [sp, #8]
mov r5, #0
add r0, r0, r1
add r7, sp, #0x5c
str r0, [sp, #0x18]
_02201182:
ldr r0, [sp, #0xc]
cmp r5, r0
beq _0220121A
ldr r1, [sp, #0x28]
ldr r0, [r7, #8]
ldr r2, [r1, #8]
add r1, r2, #0
add r1, #0xa0
cmp r1, r0
blt _0220121A
sub r0, r0, r2
bmi _022011F2
cmp r0, #0xa0
bge _022011F2
ldr r1, [sp, #8]
add r2, r1, r5
mov r1, #0xa6
lsl r1, r1, #2
ldrb r1, [r2, r1]
cmp r6, r1
bne _022011C4
mov r1, #0xa6
ldr r2, [sp, #0x1c]
lsl r1, r1, #2
ldrb r1, [r2, r1]
cmp r6, r1
ldr r1, [r4]
bne _022011C0
sub r1, r1, #4
str r1, [r4]
b _022011C4
_022011C0:
sub r1, r1, #2
str r1, [r4]
_022011C4:
mov r1, #0x28
bl _s32_div_f
lsl r0, r0, #0x18
lsr r2, r0, #0x18
cmp r2, #4
blo _022011D8
bl GF_AssertFail
b _0220121A
_022011D8:
mov r0, #0x14
add r1, r2, #0
mul r1, r0
ldr r0, [sp, #0x18]
add r0, r0, r1
mov r1, #0xab
lsl r1, r1, #2
ldrsh r1, [r0, r1]
sub r2, r1, #3
mov r1, #0xab
lsl r1, r1, #2
strh r2, [r0, r1]
b _0220121A
_022011F2:
mov r1, #0x4f
mvn r1, r1
cmp r0, r1
blt _0220121A
ldr r0, [sp, #8]
add r1, r0, r5
mov r0, #0xa6
lsl r0, r0, #2
ldrb r0, [r1, r0]
cmp r6, r0
bne _0220121A
mov r0, #0xa6
ldr r1, [sp, #0x1c]
lsl r0, r0, #2
ldrb r0, [r1, r0]
cmp r6, r0
bne _0220121A
ldr r0, [r4]
add r0, r0, #2
str r0, [r4]
_0220121A:
add r5, r5, #1
add r7, #0x10
cmp r5, #4
blt _02201182
mov r0, #0
str r0, [sp, #0x30]
ldr r0, [sp, #0x20]
add r2, sp, #0x9c
add r0, #0x28
mov ip, r0
ldr r0, [sp, #0x28]
add r3, sp, #0x4c
ldr r5, [r0, #8]
_02201234:
ldr r0, [r2]
cmp r0, #0
beq _02201280
add r0, r5, #0
ldr r1, [r2, #4]
add r0, #0xa0
cmp r0, r1
blt _02201272
sub r0, r1, r5
cmp r0, #0
ble _02201272
cmp r0, #0xa0
bgt _02201272
ldr r7, [r2, #8]
ldr r0, [r2, #0x10]
add r1, r7, r0
ldr r0, [sp, #0x20]
cmp r0, r1
bge _02201272
mov r0, ip
cmp r7, r0
bge _02201272
ldr r0, [r2, #0xc]
cmp r0, #3
ldr r0, [r3]
bne _0220126E
sub r0, r0, #1
str r0, [r3]
b _02201272
_0220126E:
sub r0, r0, #6
str r0, [r3]
_02201272:
ldr r0, [sp, #0x30]
add r2, #0x14
add r0, r0, #1
add r3, r3, #4
str r0, [sp, #0x30]
cmp r0, #0x1e
blt _02201234
_02201280:
ldr r0, [sp, #0x24]
add r6, r6, #1
add r0, r0, #4
str r0, [sp, #0x24]
ldr r0, [sp, #0x20]
add r4, r4, #4
add r0, #0x28
str r0, [sp, #0x20]
cmp r6, #4
bge _02201296
b _02201172
_02201296:
mov r5, #0xab
lsl r5, r5, #2
ldr r3, [sp, #8]
mov r4, #0
add r1, sp, #0x4c
add r0, r5, #0
_022012A2:
asr r6, r4, #1
lsr r6, r6, #0x1e
add r6, r4, r6
asr r6, r6, #2
lsl r6, r6, #2
ldrsh r2, [r3, r5]
ldr r6, [r1, r6]
add r4, r4, #1
add r2, r2, r6
strh r2, [r3, r0]
add r3, #0x14
cmp r4, #0x10
blt _022012A2
ldr r1, _02201310 ; =0x00000A8C
ldr r0, [sp, #0x10]
cmp r0, r1
bge _022012F0
mov r2, #0
mov r3, #0xab
add r1, r2, #0
mov r7, #0x14
lsl r3, r3, #2
mov r4, #0x28
mov r5, #0x3c
_022012D2:
add r6, r1, #0
ldr r0, [sp, #8]
mul r6, r7
add r0, r0, r6
add r0, r0, r3
ldrsh r6, [r0, r4]
add r2, r2, #1
add r1, r1, #4
add r6, r6, #3
strh r6, [r0, #0x28]
ldrsh r6, [r0, r5]
add r6, r6, #3
strh r6, [r0, #0x3c]
cmp r2, #4
blt _022012D2
_022012F0:
ldr r0, [sp, #0x28]
ldr r2, [r0]
add r0, r2, #0
add r0, #0x8b
ldrb r1, [r0]
mov r0, #0x1c
mul r0, r1
add r0, r2, r0
ldr r0, [r0, #0x24]
ldr r1, _02201314 ; =0x41A00000
b _02201318
nop
_02201308: .word 0x000002AE
_0220130C: .word ov96_0221C770
_02201310: .word 0x00000A8C
_02201314: .word 0x41A00000
_02201318:
bl _fleq
bhi _02201350
mov r2, #0
mov r3, #0xab
add r1, r2, #0
mov r7, #0x14
lsl r3, r3, #2
mov r4, #0x28
mov r5, #0x3c
_0220132C:
add r6, r1, #0
ldr r0, [sp, #8]
mul r6, r7
add r0, r0, r6
add r0, r0, r3
ldrsh r6, [r0, r4]
add r2, r2, #1
add r1, r1, #4
sub r6, r6, #2
strh r6, [r0, #0x28]
ldrsh r6, [r0, r5]
sub r6, r6, #2
strh r6, [r0, #0x3c]
cmp r2, #4
blt _0220132C
ldr r0, [sp, #0x2c]
add r0, #8
str r0, [sp, #0x2c]
_02201350:
ldr r0, [sp, #0x28]
mov r1, #3
ldr r4, [r0]
add r0, r4, #0
add r0, #0x8b
ldrb r0, [r0]
add r0, r0, #1
bl _s32_div_f
lsl r0, r1, #0x18
lsr r1, r0, #0x18
mov r0, #0x1c
mul r0, r1
add r0, r4, r0
add r0, #0x30
ldrb r0, [r0]
cmp r0, #1
bne _0220137A
ldr r0, [sp, #0x2c]
sub r0, r0, #5
str r0, [sp, #0x2c]
_0220137A:
ldr r0, [sp, #8]
bl ov96_0220146C
add r4, r0, #0
mov r0, #0x10
ldrsh r1, [r4, r0]
ldr r0, [sp, #0x2c]
cmp r1, r0
blt _0220140C
mov r1, #0xf9
ldr r0, [sp, #8]
lsl r1, r1, #2
ldrb r1, [r0, r1]
ldr r0, [sp, #0xc]
cmp r0, r1
blo _02201444
ldr r0, [sp, #0x28]
ldr r2, [sp, #0x28]
ldr r1, [r0]
add r0, sp, #0x34
str r0, [sp]
add r0, r1, #0
add r0, #0x8b
ldrb r0, [r0]
ldr r2, [r2, #0xc]
add r3, sp, #0x38
lsl r0, r0, #2
ldr r0, [r1, r0]
ldr r1, [sp, #0x28]
ldr r1, [r1, #8]
bl ov96_021EB0A4
ldr r0, [sp, #0x38]
lsl r1, r0, #0xc
ldr r0, [sp, #0x28]
ldr r0, [r0]
add r0, #0xb0
str r1, [r0]
ldr r0, [sp, #0x34]
lsl r1, r0, #0xc
ldr r0, [sp, #0x28]
ldr r0, [r0]
add r0, #0xb4
str r1, [r0]
ldr r1, [sp, #0x28]
mov r0, #0
ldr r1, [r1]
add r1, #0xb8
str r0, [r1]
ldr r1, [r4, #8]
lsl r2, r1, #0xc
ldr r1, [sp, #0x28]
ldr r1, [r1]
add r1, #0xbc
str r2, [r1]
ldr r1, [r4, #0xc]
lsl r2, r1, #0xc
ldr r1, [sp, #0x28]
ldr r1, [r1]
add r1, #0xc0
str r2, [r1]
ldr r1, [sp, #0x28]
ldr r1, [r1]
add r1, #0xc4
str r0, [r1]
ldr r0, [sp, #0x28]
add sp, #0x1fc
ldr r0, [r0]
mov r1, #1
add r0, #0xaa
strb r1, [r0]
add sp, #0xf8
pop {r4, r5, r6, r7, pc}
_0220140C:
mov r1, #0xf9
ldr r0, [sp, #8]
lsl r1, r1, #2
ldrb r1, [r0, r1]
ldr r0, [sp, #0xc]
cmp r0, r1
blo _02201444
ldr r0, [sp, #0x28]
mov r1, #1
ldr r0, [r0]
mov r3, #7
add r0, #0x9d
strb r1, [r0]
ldr r0, [sp, #0x28]
ldr r0, [r0]
add r0, #0x9e
strb r1, [r0]
ldr r0, [sp, #0x28]
ldr r2, [r0]
ldr r0, [sp, #4]
str r1, [sp]
add r1, r2, #0
add r1, #0xd0
add r2, #0x8b
ldrb r1, [r1]
ldrb r2, [r2]
bl ov96_021E8228
_02201444:
add sp, #0x1fc
add sp, #0xf8
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02200F84
thumb_func_start ov96_0220144C
ov96_0220144C: ; 0x0220144C
ldr r2, [r0]
add r2, r2, r1
mov r1, #1
lsl r1, r1, #0xa
str r2, [r0]
cmp r2, r1
blt _02201460
sub r1, r2, r1
str r1, [r0]
bx lr
_02201460:
cmp r2, #0
bge _02201468
add r1, r2, r1
str r1, [r0]
_02201468:
bx lr
.balign 4, 0
thumb_func_end ov96_0220144C
thumb_func_start ov96_0220146C
ov96_0220146C: ; 0x0220146C
push {r4, lr}
sub sp, #0x80
mov r1, #0xa7
lsl r1, r1, #2
add r0, r0, r1
mov r2, #0
add r1, sp, #0
_0220147A:
add r2, r2, #1
stmia r1!, {r0}
add r0, #0x14
cmp r2, #0x10
blt _0220147A
add r0, sp, #0
add r1, sp, #0x40
bl ov96_022014A4
add r4, r0, #0
bl LCRandom
add r1, r4, #0
bl _s32_div_f
lsl r0, r1, #0x18
lsr r1, r0, #0x16
add r0, sp, #0x40
ldr r0, [r0, r1]
add sp, #0x80
pop {r4, pc}
thumb_func_end ov96_0220146C
thumb_func_start ov96_022014A4
ov96_022014A4: ; 0x022014A4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0xd0
mov ip, r0
add r0, sp, #0x10
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0
str r0, [sp]
str r0, [sp, #0xc]
ldr r0, [sp]
add r7, r1, #0
_022014BA:
add r2, r0, #1
mov r1, #0xc
mul r1, r2
add r2, sp, #4
lsl r4, r0, #2
mov r3, ip
ldr r3, [r3, r4]
add r2, r2, r1
str r3, [r2, #8]
mov r3, #0
str r3, [r2, #4]
add r4, r3, #0
add r3, sp, #4
str r4, [r3, r1]
add r1, r4, #0
cmp r0, #0
bls _02201506
ldr r5, [r2, #8]
mov r4, #0x10
ldrsh r4, [r5, r4]
mov r6, #0x10
_022014E4:
ldr r3, [r3, #4]
ldr r5, [r3, #8]
ldrsh r5, [r5, r6]
cmp r5, r4
bge _022014FC
ldr r4, [r3]
str r2, [r4, #4]
ldr r4, [r3]
str r4, [r2]
str r3, [r2, #4]
str r2, [r3]
b _02201506
_022014FC:
add r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
cmp r1, r0
blo _022014E4
_02201506:
cmp r1, r0
bne _0220150E
str r2, [r3, #4]
str r3, [r2]
_0220150E:
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #0x10
blo _022014BA
ldr r0, [sp, #8]
mov r3, #0
ldr r1, [r0, #8]
mov r0, #0x10
ldrsh r2, [r1, r0]
add r1, sp, #4
_02201524:
ldr r1, [r1, #4]
lsl r5, r3, #2
ldr r4, [r1, #8]
str r4, [r7, r5]
ldr r4, [r7, r5]
ldrsh r4, [r4, r0]
cmp r2, r4
bne _0220153E
ldr r4, [sp]
add r4, r4, #1
lsl r4, r4, #0x18
lsr r4, r4, #0x18
str r4, [sp]
_0220153E:
add r3, r3, #1
lsl r3, r3, #0x18
lsr r3, r3, #0x18
cmp r3, #0x10
blo _02201524
ldr r0, [sp]
cmp r0, #0
bne _02201552
bl GF_AssertFail
_02201552:
ldr r0, [sp]
add sp, #0xd0
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_022014A4
thumb_func_start ov96_02201558
ov96_02201558: ; 0x02201558
push {r4, r5, r6, r7, lr}
sub sp, #0x1fc
add r6, r0, #0
bl ov96_021E5DC4
add r7, r0, #0
add r0, r6, #0
bl ov96_021E5DD4
cmp r0, #5
bls _02201570
b _02201AFE
_02201570:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0220157C: ; jump table
.short _02201588 - _0220157C - 2 ; case 0
.short _0220166C - _0220157C - 2 ; case 1
.short _022016A2 - _0220157C - 2 ; case 2
.short _0220175C - _0220157C - 2 ; case 3
.short _02201874 - _0220157C - 2 ; case 4
.short _02201AE2 - _0220157C - 2 ; case 5
_02201588:
mov r2, #1
mov r0, #0x5c
mov r1, #0x92
lsl r2, r2, #0x12
bl CreateHeap
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
bl GfGfx_DisableEngineAPlanes
bl GfGfx_DisableEngineBPlanes
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _022018CC ; =0xFFFFE0FF
and r1, r0
str r1, [r2]
ldr r2, _022018D0 ; =0x04001000
ldr r1, [r2]
and r0, r1
str r0, [r2]
bl ov96_02201C90
ldr r1, _022018D4 ; =0x000005F4
add r0, r6, #0
bl ov96_021E5D94
ldr r2, _022018D4 ; =0x000005F4
mov r1, #0
add r4, r0, #0
bl MI_CpuFill8
mov r0, #0x92
mov r1, #0x28
bl AllocFromHeap
ldr r1, _022018D8 ; =0x00000598
mov r2, #0x28
str r0, [r4, r1]
ldr r0, [r4, r1]
mov r1, #0
bl MI_CpuFill8
mov r0, #0x92
bl BgConfig_Alloc
str r0, [r4]
add r0, r6, #0
mov r1, #8
bl ov96_021E6670
mov r0, #0x73
str r0, [sp, #0x98]
mov r0, #1
lsl r0, r0, #0x12
str r0, [sp, #0x9c]
lsr r0, r0, #4
str r0, [sp, #0xa0]
add r0, r6, #0
bl PokeathlonOvy_GetHeapID
str r0, [sp, #0xa4]
ldr r3, _022018DC ; =0x00300010
add r0, sp, #0x98
mov r1, #0x16
mov r2, #0x92
str r3, [sp]
bl ov96_021E92B0
bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7e
str r1, [sp, #4]
str r0, [sp, #8]
mov r3, #0x20
str r3, [sp, #0xc]
mov r2, #0x92
str r2, [sp, #0x10]
add r2, r0, #0
bl OamManager_Create
mov r1, #0x92
str r1, [r4, #0x44]
mov r0, #4
bl FontID_Alloc
ldr r0, [r4]
bl ov96_02201CB0
add r0, r4, #0
bl ov96_02203310
add r0, r4, #0
add r1, r6, #0
bl ov96_0220382C
ldr r0, _022018E0 ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
add r0, r6, #0
bl ov96_021E5DEC
b _02201AFE
_0220166C:
ldr r0, [r7, #0x44]
ldr r1, [r7]
add r2, r6, #0
bl ov96_02203A00
mov r1, #0x5e
lsl r1, r1, #4
str r0, [r7, r1]
add r0, r6, #0
bl ov96_021E5D34
add r4, r0, #0
add r0, r6, #0
bl ov96_021E5EE8
add r2, r0, #0
mov r1, #4
ldr r0, [r7, #0x44]
sub r1, r1, r4
bl ov96_02204364
ldr r1, _022018E4 ; =0x000005DC
str r0, [r7, r1]
add r0, r6, #0
bl ov96_021E5DEC
b _02201AFE
_022016A2:
ldr r4, _022018E8 ; =ov96_0221C7B8
add r3, sp, #0x8c
ldmia r4!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r4]
add r1, r2, #0
str r0, [r3]
ldr r0, [r7, #0x44]
bl ov96_021EB180
mov r1, #0
str r0, [r7, #0x48]
mov r0, #0x12
lsl r0, r0, #0x10
str r0, [sp]
ldr r0, [r7, #0x48]
add r2, r1, #0
add r3, r1, #0
bl ov96_021EB5C8
ldr r0, [r7, #0x48]
mov r1, #0
mov r2, #0x6a
bl ov96_021EB29C
ldr r0, [r7, #0x48]
mov r1, #1
mov r2, #0x65
bl ov96_021EB29C
ldr r0, [r7, #0x48]
mov r1, #2
mov r2, #0x69
bl ov96_021EB29C
ldr r0, [r7, #0x48]
bl ov96_02201E70
mov r0, #0x5e
lsl r0, r0, #4
ldr r0, [r7, r0]
ldr r1, [r7, #0x48]
bl ov96_02203B44
ldr r0, [r7, #0x48]
bl ov96_021EB3A4
ldr r0, [r7, #0x44]
ldr r1, _022018EC ; =0x000004E7
mov r2, #1
bl ov96_021E9A78
ldr r1, _022018F0 ; =0x000005D4
str r0, [r7, r1]
ldr r0, [r7, #0x48]
bl ov96_021EB5E8
str r0, [sp]
ldr r3, _022018F0 ; =0x000005D4
ldr r0, [r7, #0x44]
ldr r3, [r7, r3]
mov r1, #9
mov r2, #0x20
bl ov96_021EA854
ldr r2, _022018F4 ; =0x000005D8
mov r1, #0
str r0, [r7, r2]
sub r2, r2, #4
ldr r2, [r7, r2]
ldr r3, [r7, #0x48]
add r0, r6, #0
bl ov96_021E6290
ldr r0, [r0]
mov r1, #1
bl Sprite_SetDrawPriority
add r0, r6, #0
bl ov96_021E5F24
add r2, r0, #0
lsl r2, r2, #0x18
ldr r1, [r7, #0x48]
add r0, r7, #0
lsr r2, r2, #0x18
bl ov96_02201EF0
add r0, r6, #0
bl ov96_021E5DEC
b _02201AFE
_0220175C:
add r0, r6, #0
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x1c]
mov r0, #0
str r0, [sp, #0x54]
ldr r0, [sp, #0x1c]
add r1, r0, #1
lsl r0, r1, #1
add r0, r1, r0
mov r1, #0xc
bl _s32_div_f
lsl r0, r1, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x24]
add r5, sp, #0x13c
add r4, sp, #0xf8
_02201784:
ldr r0, [sp, #0x24]
mov r1, #0xc
bl _s32_div_f
lsl r0, r1, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x20]
mov r1, #3
bl _s32_div_f
str r1, [sp, #0x14]
ldr r0, [sp, #0x20]
mov r1, #3
bl _s32_div_f
str r0, [sp, #0x58]
ldr r1, [sp, #0x58]
ldr r2, [sp, #0x14]
add r0, r6, #0
add r3, r5, #0
bl ov96_021E6168
ldr r1, [sp, #0x58]
ldr r2, [sp, #0x14]
add r0, r6, #0
bl ov96_021E60C0
bl ov96_021E6108
str r0, [r4, #0x14]
ldr r0, [sp, #0x24]
add r5, #0x10
add r0, r0, #1
str r0, [sp, #0x24]
ldr r0, [sp, #0x54]
add r4, r4, #4
add r0, r0, #1
str r0, [sp, #0x54]
cmp r0, #0xc
blt _02201784
mov r0, #0x5e
lsl r0, r0, #4
ldr r0, [r7, r0]
ldr r1, [r7, #0x48]
add r2, sp, #0x1cc
bl ov96_02203B8C
mov r0, #0
str r0, [sp, #0x18]
ldr r0, [sp, #0x1c]
mov r5, #0x10
lsl r1, r0, #1
add r0, r0, r1
lsl r0, r0, #5
add r4, r7, r0
_022017F2:
mov r1, #0
add r0, sp, #0x80
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
ldr r0, [sp, #0x18]
add r1, sp, #0x13c
add r0, #9
lsl r0, r0, #4
add r3, r1, r0
ldr r1, [r3, #0xc]
mov r2, #0
str r1, [sp]
add r1, sp, #0x13c
ldrh r0, [r1, r0]
ldrb r1, [r3, #7]
ldrh r3, [r3, #2]
lsl r3, r3, #0x18
lsr r3, r3, #0x18
bl sub_020708D8
lsl r1, r5, #0xc
str r1, [sp, #0x80]
mov r1, #0x5e
lsl r1, r1, #2
add r0, r0, r1
lsl r1, r0, #0xc
mov r0, #1
lsl r0, r0, #0x10
str r1, [sp, #0x84]
sub r0, r1, r0
str r0, [sp, #0x84]
ldr r0, _022018F8 ; =0x00000418
add r1, sp, #0x80
ldr r0, [r4, r0]
bl ov96_021EB588
ldr r0, [sp, #0x18]
add r5, #0x32
add r0, r0, #1
add r4, #0x20
str r0, [sp, #0x18]
cmp r0, #3
blt _022017F2
mov r0, #3
mov r1, #0
str r0, [sp, #0xfc]
mov r0, #1
str r1, [sp, #0xf8]
str r1, [sp, #0x100]
str r0, [sp, #0x104]
str r0, [sp, #0x108]
str r1, [sp]
str r1, [sp, #4]
ldr r0, _022018F4 ; =0x000005D8
mov r1, #9
ldr r0, [r7, r0]
add r2, sp, #0x13c
add r3, sp, #0xf8
bl ov96_021EA8A8
add r0, r6, #0
bl ov96_021E5DEC
b _02201AFE
_02201874:
ldr r0, _022018F4 ; =0x000005D8
ldr r0, [r7, r0]
bl ov96_021EAA00
cmp r0, #0
bne _02201882
b _02201AFE
_02201882:
ldr r3, _022018FC ; =ov96_0221C7D0
add r2, sp, #0x74
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r0, [r7]
bl ov96_021E6030
add r0, r6, #0
mov r1, #1
bl ov96_021E5DFC
add r0, r6, #0
bl ov96_021E5F24
mov r1, #0
str r1, [sp, #0x50]
add r1, r0, #1
lsl r0, r1, #1
add r0, r1, r0
mov r1, #0xc
add r5, r7, #0
bl _s32_div_f
lsl r0, r1, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x34]
ldr r0, _02201900 ; =ov96_0221C8C8
str r0, [sp, #0x30]
ldr r0, _02201904 ; =ov96_0221C8EC
str r0, [sp, #0x2c]
ldr r0, _02201908 ; =ov96_0221CA1C
str r0, [sp, #0x28]
_022018C6:
ldr r0, _022018F4 ; =0x000005D8
b _0220190C
nop
_022018CC: .word 0xFFFFE0FF
_022018D0: .word 0x04001000
_022018D4: .word 0x000005F4
_022018D8: .word 0x00000598
_022018DC: .word 0x00300010
_022018E0: .word gSystem + 0x60
_022018E4: .word 0x000005DC
_022018E8: .word ov96_0221C7B8
_022018EC: .word 0x000004E7
_022018F0: .word 0x000005D4
_022018F4: .word 0x000005D8
_022018F8: .word 0x00000418
_022018FC: .word ov96_0221C7D0
_02201900: .word ov96_0221C8C8
_02201904: .word ov96_0221C8EC
_02201908: .word ov96_0221CA1C
_0220190C:
ldr r1, [sp, #0x50]
ldr r0, [r7, r0]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_021EAA04
add r1, r5, #0
add r1, #0x94
str r0, [r1]
add r0, r5, #0
add r0, #0x94
ldr r0, [r0]
mov r1, #1
str r0, [sp, #0x4c]
bl ov96_021EAB38
ldr r0, [sp, #0x34]
mov r1, #0xc
bl _s32_div_f
lsl r0, r1, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x48]
ldr r0, [sp, #0x30]
mov r1, #3
ldr r0, [r0]
str r0, [sp, #0x44]
ldr r0, [sp, #0x2c]
ldr r4, [r0]
ldr r0, [sp, #0x50]
bl _s32_div_f
add r1, r0, #0
lsl r2, r1, #2
add r1, sp, #0x74
ldr r0, [sp, #0x4c]
ldr r1, [r1, r2]
bl ov96_021EAC0C
ldr r0, [sp, #0x4c]
ldr r1, [sp, #0x44]
add r2, r4, #0
bl ov96_021EAF94
mov r1, #0
add r0, sp, #0x68
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
ldr r0, [sp, #0x4c]
bl ov96_021EAA20
bl ov96_021E8BB0
ldrh r0, [r0, #4]
cmp r0, #0
beq _0220198C
ldr r0, [sp, #0x44]
sub r4, #0x28
lsl r0, r0, #0xc
str r0, [sp, #0x68]
lsl r0, r4, #0xc
str r0, [sp, #0x6c]
b _02201998
_0220198C:
ldr r0, [sp, #0x44]
sub r4, #0x19
lsl r0, r0, #0xc
str r0, [sp, #0x68]
lsl r0, r4, #0xc
str r0, [sp, #0x6c]
_02201998:
ldr r0, [sp, #0x48]
lsl r0, r0, #5
add r1, r7, r0
ldr r0, _02201B04 ; =0x00000418
ldr r0, [r1, r0]
add r1, sp, #0x68
bl ov96_021EB588
ldr r0, [r5, #0x70]
add r1, sp, #0x68
bl ov96_021EB588
ldr r1, [sp, #0x28]
ldr r0, [sp, #0x4c]
ldrb r1, [r1]
add r1, #0x20
bl ov96_021EABA8
ldr r0, [sp, #0x34]
add r5, r5, #4
add r0, r0, #1
str r0, [sp, #0x34]
ldr r0, [sp, #0x30]
add r0, r0, #4
str r0, [sp, #0x30]
ldr r0, [sp, #0x2c]
add r0, r0, #4
str r0, [sp, #0x2c]
ldr r0, [sp, #0x28]
add r0, r0, #1
str r0, [sp, #0x28]
ldr r0, [sp, #0x50]
add r0, r0, #1
str r0, [sp, #0x50]
cmp r0, #9
bge _022019E2
b _022018C6
_022019E2:
add r0, sp, #0xa8
mov r1, #0xaa
mov r2, #3
bl ReadWholeNarcMemberByIdPair
ldr r1, _02201B08 ; =0x00000708
ldr r0, _02201B0C ; =0x000005E8
strh r1, [r7, r0]
mov r0, #0
str r0, [sp, #0x40]
str r0, [sp, #0x38]
add r0, r7, #0
str r0, [sp, #0x64]
add r0, #0xb8
str r0, [sp, #0x64]
ldr r0, _02201B04 ; =0x00000418
add r0, r7, r0
str r0, [sp, #0x5c]
_02201A06:
ldr r0, [sp, #0x40]
mov r1, #0xc
add r2, r7, r0
ldr r0, _02201B10 ; =0x000005CC
mov r4, #0
strb r1, [r2, r0]
ldr r0, [sp, #0x40]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x60]
_02201A1A:
ldr r0, [sp, #0x38]
lsl r3, r4, #0x18
add r5, r4, r0
ldr r0, [sp, #0x5c]
lsl r1, r5, #5
add r0, r0, r1
ldr r2, [sp, #0x60]
str r0, [sp, #0x3c]
str r0, [sp]
add r0, r6, #0
add r1, sp, #0xa8
lsr r3, r3, #0x18
bl ov96_0220329C
add r0, r6, #0
bl ov96_021E5F24
cmp r0, #0
bne _02201A56
ldr r0, _02201B14 ; =0x000005DC
mov r3, #0x48
lsl r1, r5, #0x18
mul r3, r5
ldr r5, [sp, #0x64]
ldr r0, [r7, r0]
ldr r2, [sp, #0x3c]
lsr r1, r1, #0x18
add r3, r5, r3
bl ov96_022043AC
_02201A56:
add r4, r4, #1
cmp r4, #3
blt _02201A1A
ldr r0, [sp, #0x38]
add r0, r0, #3
str r0, [sp, #0x38]
ldr r0, [sp, #0x40]
add r0, r0, #1
str r0, [sp, #0x40]
cmp r0, #4
blt _02201A06
add r0, r6, #0
bl ov96_021E5F24
cmp r0, #0
bne _02201A8A
add r0, r6, #0
bl ov96_021E5F54
add r0, #0x28
bl ov96_021E8A20
add r1, r0, #0
add r0, r7, #0
bl ov96_02202738
_02201A8A:
mov r2, #0x5e
lsl r2, r2, #4
ldr r0, [r7, r2]
sub r2, #0xc
ldr r1, [r7, #0x48]
ldr r2, [r7, r2]
bl ov96_02203D74
add r0, r6, #0
bl ov96_021E5F24
add r1, r0, #0
lsl r1, r1, #0x18
add r0, r7, #0
lsr r1, r1, #0x18
bl ov96_02201E10
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineATogglePlanes
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineBTogglePlanes
mov r0, #1
bl sub_0203A994
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r7, #0x44]
mov r1, #3
str r0, [sp, #8]
mov r0, #2
add r2, r1, #0
mov r3, #0
bl BeginNormalPaletteFade
add r0, r6, #0
bl ov96_021E5DEC
b _02201AFE
_02201AE2:
bl IsPaletteFadeFinished
cmp r0, #0
beq _02201AFE
mov r0, #0x5c
bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02201AF8
bl GF_AssertFail
_02201AF8:
add sp, #0x1fc
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02201AFE:
mov r0, #0
add sp, #0x1fc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02201B04: .word 0x00000418
_02201B08: .word 0x00000708
_02201B0C: .word 0x000005E8
_02201B10: .word 0x000005CC
_02201B14: .word 0x000005DC
thumb_func_end ov96_02201558
thumb_func_start ov96_02201B18
ov96_02201B18: ; 0x02201B18
push {r4, lr}
bl ov96_021E5DC4
add r4, r0, #0
mov r0, #0x5e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl ov96_02203CE4
ldr r0, [r4, #0x48]
bl ov96_021EB5BC
mov r0, #1
pop {r4, pc}
thumb_func_end ov96_02201B18
thumb_func_start ov96_02201B34
ov96_02201B34: ; 0x02201B34
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
bl ov96_021E6040
add r6, r0, #0
bl ov96_021E9510
mov r4, #0
add r7, r4, #0
_02201B48:
lsl r1, r4, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
bl ov96_021E5FBC
add r3, r0, #0
str r7, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, _02201B94 ; =0x0000012B
add r1, r6, #0
str r0, [sp, #8]
add r0, r5, #0
add r2, r4, #0
bl ov96_021E95F8
add r4, r4, #1
cmp r4, #4
blt _02201B48
add r0, r6, #0
mov r1, #1
bl ov96_021E93B4
add r0, r6, #0
mov r1, #8
bl ov96_0221A56C
add r0, r6, #0
bl ov96_021E952C
add r0, r6, #0
mov r1, #8
bl ov96_021E9570
mov r0, #1
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
_02201B94: .word 0x0000012B
thumb_func_end ov96_02201B34
thumb_func_start ov96_02201B98
ov96_02201B98: ; 0x02201B98
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
bl sub_0203A914
add r0, r7, #0
bl ov96_021E5F8C
ldr r0, [r4]
mov r1, #0
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #1
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #3
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #4
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #5
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #6
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #7
bl FreeBgTilemapBuffer
add r0, r4, #4
bl RemoveWindow
add r5, r4, #0
mov r6, #0
add r5, #0x14
_02201BF0:
add r0, r5, #0
bl RemoveWindow
add r6, r6, #1
add r5, #0x10
cmp r6, #3
blt _02201BF0
ldr r0, [r4]
bl FreeToHeap
ldr r0, [r4, #0x48]
bl ov96_021EB21C
ldr r0, _02201C78 ; =0x000005D8
ldr r0, [r4, r0]
bl ov96_021EA894
ldr r0, _02201C7C ; =0x000005D4
ldr r0, [r4, r0]
bl ov96_021E9C0C
bl OamManager_Free
bl sub_0202168C
bl sub_02022608
ldr r0, _02201C80 ; =0x000005DC
ldr r0, [r4, r0]
bl ov96_022043B8
mov r0, #0x5e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl ov96_02203A30
mov r0, #4
bl FontID_Release
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
ldr r0, _02201C84 ; =0x00000598
ldr r0, [r4, r0]
bl FreeToHeap
add r0, r7, #0
bl ov96_021E5DAC
ldr r0, _02201C88 ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
ldr r0, _02201C8C ; =0x04000050
mov r1, #0
strh r1, [r0]
mov r0, #0x92
bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
nop
_02201C78: .word 0x000005D8
_02201C7C: .word 0x000005D4
_02201C80: .word 0x000005DC
_02201C84: .word 0x00000598
_02201C88: .word gSystem + 0x60
_02201C8C: .word 0x04000050
thumb_func_end ov96_02201B98
thumb_func_start ov96_02201C90
ov96_02201C90: ; 0x02201C90
push {r4, lr}
sub sp, #0x28
ldr r4, _02201CAC ; =ov96_0221C934
add r3, sp, #0
mov r2, #5
_02201C9A:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _02201C9A
add r0, sp, #0
bl GfGfx_SetBanks
add sp, #0x28
pop {r4, pc}
.balign 4, 0
_02201CAC: .word ov96_0221C934
thumb_func_end ov96_02201C90
thumb_func_start ov96_02201CB0
ov96_02201CB0: ; 0x02201CB0
push {r4, r5, lr}
sub sp, #0xd4
ldr r5, _02201DF0 ; =ov96_0221C7DC
add r3, sp, #0xc4
add r4, r0, #0
add r2, r3, #0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl SetBothScreensModesAndDisable
ldr r5, _02201DF4 ; =ov96_0221C83C
add r3, sp, #0xa8
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #0
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
bl BgClearTilemapBufferAndCommit
ldr r5, _02201DF8 ; =ov96_0221C858
add r3, sp, #0x8c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #1
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
bl BgClearTilemapBufferAndCommit
ldr r5, _02201DFC ; =ov96_0221C890
add r3, sp, #0x70
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #3
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #3
bl BgClearTilemapBufferAndCommit
ldr r5, _02201E00 ; =ov96_0221C8AC
add r3, sp, #0x54
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #4
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
bl BgClearTilemapBufferAndCommit
ldr r5, _02201E04 ; =ov96_0221C804
add r3, sp, #0x38
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #5
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #5
bl BgClearTilemapBufferAndCommit
ldr r5, _02201E08 ; =ov96_0221C820
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #6
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #6
bl BgClearTilemapBufferAndCommit
ldr r5, _02201E0C ; =ov96_0221C874
add r3, sp, #0
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #7
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #7
bl BgClearTilemapBufferAndCommit
mov r0, #8
mov r1, #0
bl GfGfx_EngineATogglePlanes
add sp, #0xd4
pop {r4, r5, pc}
nop
_02201DF0: .word ov96_0221C7DC
_02201DF4: .word ov96_0221C83C
_02201DF8: .word ov96_0221C858
_02201DFC: .word ov96_0221C890
_02201E00: .word ov96_0221C8AC
_02201E04: .word ov96_0221C804
_02201E08: .word ov96_0221C820
_02201E0C: .word ov96_0221C874
thumb_func_end ov96_02201CB0
thumb_func_start ov96_02201E10
ov96_02201E10: ; 0x02201E10
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
add r4, r1, #0
mov r1, #0
mov r0, #1
str r1, [sp]
lsl r0, r0, #0xe
str r0, [sp, #4]
str r1, [sp, #8]
ldr r0, [r5, #0x44]
mov r1, #1
str r0, [sp, #0xc]
ldr r2, [r5]
mov r0, #0xdb
add r3, r1, #0
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r5, #0x44]
mov r1, #2
str r0, [sp, #0xc]
ldr r2, [r5]
mov r0, #0xdb
mov r3, #1
bl GfGfxLoader_LoadScrnData
mov r1, #0
mov r0, #0x20
str r0, [sp]
ldr r0, [r5, #0x44]
add r2, r1, #0
str r0, [sp, #4]
mov r0, #0xdb
add r3, r1, #0
bl GfGfxLoader_GXLoadPal
mov r0, #0x5e
lsl r0, r0, #4
ldr r0, [r5, r0]
add r1, r4, #0
bl ov96_02203A64
add sp, #0x10
pop {r3, r4, r5, pc}
thumb_func_end ov96_02201E10
thumb_func_start ov96_02201E70
ov96_02201E70: ; 0x02201E70
push {r4, lr}
sub sp, #8
mov r1, #3
str r1, [sp]
mov r1, #0xdb
mov r2, #0x15
mov r3, #0x6a
add r4, r0, #0
bl ov96_021EB2BC
mov r0, #3
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
add r0, r4, #0
mov r1, #0xdb
mov r2, #0x12
mov r3, #0x6a
bl ov96_021EB2F4
add r0, r4, #0
mov r1, #0xdb
mov r2, #0x14
mov r3, #0x6a
bl ov96_021EB334
add r0, r4, #0
mov r1, #0xdb
mov r2, #0x13
mov r3, #0x6a
bl ov96_021EB36C
mov r0, #1
str r0, [sp]
add r0, r4, #0
mov r1, #0xdb
mov r2, #0x11
mov r3, #0x69
bl ov96_021EB2BC
mov r0, #1
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
add r0, r4, #0
mov r1, #0xdb
mov r2, #0xe
mov r3, #0x69
bl ov96_021EB2F4
add r0, r4, #0
mov r1, #0xdb
mov r2, #0x10
mov r3, #0x69
bl ov96_021EB334
add r0, r4, #0
mov r1, #0xdb
mov r2, #0xf
mov r3, #0x69
bl ov96_021EB36C
add sp, #8
pop {r4, pc}
thumb_func_end ov96_02201E70
thumb_func_start ov96_02201EF0
ov96_02201EF0: ; 0x02201EF0
push {r4, r5, r6, r7, lr}
sub sp, #0x5c
add r6, r0, #0
mov r0, #0
add r4, r1, #0
str r2, [sp, #4]
str r0, [sp, #0x10]
add r5, r6, #0
add r7, r0, #0
_02201F02:
add r0, r4, #0
bl ov96_021EB5E8
add r1, r0, #0
ldr r0, _02202148 ; =0x000005D4
ldr r3, [r6, #0x44]
ldr r0, [r6, r0]
mov r2, #3
bl ov96_021EA374
mov r1, #1
str r0, [r5, #0x50]
bl Set2dSpriteVisibleFlag
mov r0, #6
lsl r1, r7, #0xc
lsl r0, r0, #0xe
add r0, r1, r0
str r0, [sp, #0x50]
mov r0, #2
lsl r0, r0, #0xe
str r0, [sp, #0x54]
mov r0, #0
str r0, [sp, #0x58]
ldr r0, [r5, #0x50]
add r1, sp, #0x50
bl Sprite_SetMatrix
ldr r0, [r5, #0x50]
mov r1, #2
bl Sprite_SetDrawPriority
ldr r0, [sp, #0x10]
add r5, r5, #4
add r0, r0, #1
add r7, #0x10
str r0, [sp, #0x10]
cmp r0, #2
blt _02201F02
add r0, r6, #0
mov r1, #0x3c
bl ov96_022038A0
mov r7, #0
add r5, r6, #0
_02201F5C:
add r0, r5, #0
add r0, #0xf9
strb r7, [r0]
mov r0, #3
mov r1, #3
str r0, [sp]
add r0, r4, #0
add r2, r1, #0
mov r3, #0x6a
bl ov96_021EB3E4
add r1, r5, #0
add r1, #0xb8
str r0, [r1]
mov r0, #4
mov r1, #3
str r0, [sp]
add r0, r4, #0
add r2, r1, #0
mov r3, #0x6a
bl ov96_021EB3E4
add r1, r5, #0
add r1, #0xbc
str r0, [r1]
mov r0, #6
mov r1, #3
str r0, [sp]
add r0, r4, #0
add r2, r1, #0
mov r3, #0x6a
bl ov96_021EB3E4
add r1, r5, #0
add r1, #0xc0
str r0, [r1]
add r0, r5, #0
add r0, #0xbc
ldr r0, [r0]
mov r1, #1
bl ov96_021EB564
add r0, r5, #0
add r0, #0xb8
ldr r0, [r0]
mov r1, #0x14
bl ov96_021EB630
add r0, r5, #0
add r0, #0xbc
mov r1, #0xfa
ldr r0, [r0]
lsl r1, r1, #2
bl ov96_021EB630
add r0, r5, #0
add r0, #0xc0
ldr r0, [r0]
mov r1, #5
bl ov96_021EB630
add r7, r7, #1
add r5, #0x48
cmp r7, #0xc
blt _02201F5C
mov r7, #0
add r5, r6, #0
_02201FE2:
mov r0, #9
mov r1, #3
str r0, [sp]
add r0, r4, #0
add r2, r1, #0
mov r3, #0x6a
bl ov96_021EB3E4
ldr r1, _0220214C ; =0x00000418
str r0, [r5, r1]
add r0, r1, #0
ldr r0, [r5, r0]
mov r1, #2
bl ov96_021EB564
mov r0, #1
lsl r0, r0, #0xc
str r0, [sp, #0x44]
str r0, [sp, #0x48]
mov r0, #0
str r0, [sp, #0x4c]
ldr r0, _0220214C ; =0x00000418
add r1, sp, #0x44
ldr r0, [r5, r0]
bl ov96_021EB588
ldr r0, _0220214C ; =0x00000418
mov r1, #4
ldr r0, [r5, r0]
bl ov96_021EB630
add r7, r7, #1
add r5, #0x20
cmp r7, #0xc
blt _02201FE2
mov r7, #0
add r5, r6, #0
_0220202C:
mov r0, #0xb
str r0, [sp]
add r0, r4, #0
mov r1, #2
mov r2, #1
mov r3, #0x69
bl ov96_021EB3E4
str r0, [r5, #0x64]
mov r1, #6
bl ov96_021EB564
ldr r0, [r5, #0x64]
mov r1, #2
bl ov96_021EB630
add r7, r7, #1
add r5, r5, #4
cmp r7, #3
blt _0220202C
mov r0, #7
str r0, [sp]
add r0, r4, #0
mov r1, #3
mov r2, #1
mov r3, #0x69
bl ov96_021EB3E4
str r0, [r6, #0x4c]
mov r0, #2
lsl r0, r0, #0xe
str r0, [sp, #0x38]
str r0, [sp, #0x3c]
mov r0, #0
str r0, [sp, #0x40]
ldr r0, [r6, #0x4c]
add r1, sp, #0x38
bl ov96_021EB588
ldr r0, [r6, #0x4c]
mov r1, #5
bl ov96_021EB564
mov r1, #1
ldr r0, [r6, #0x4c]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r6, #0x4c]
mov r1, #2
bl ov96_021EB630
ldr r5, _02202150 ; =ov96_0221C910
add r3, sp, #0x14
mov r2, #4
_0220209A:
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _0220209A
ldr r0, [r5]
add r5, r6, #0
str r0, [r3]
ldr r0, [sp, #4]
add r0, r0, #1
lsr r2, r0, #0x1f
lsl r1, r0, #0x1e
sub r1, r1, r2
mov r0, #0x1e
ror r1, r0
add r0, r2, r1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
mov r0, #0
str r0, [sp, #8]
add r0, sp, #0x14
str r0, [sp, #0xc]
_022020C4:
mov r0, #8
str r0, [sp]
add r0, r4, #0
mov r1, #3
mov r2, #1
mov r3, #0x69
bl ov96_021EB3E4
ldr r1, [sp, #0xc]
str r0, [r5, #0x58]
bl ov96_021EB588
ldr r0, [r5, #0x58]
add r1, r7, #1
bl ov96_021EB564
mov r1, #1
ldr r0, [r5, #0x58]
add r2, r1, #0
bl ov96_021EB52C
add r0, r7, #1
lsr r2, r0, #0x1f
lsl r1, r0, #0x1e
sub r1, r1, r2
mov r0, #0x1e
ror r1, r0
add r0, r2, r1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
ldr r0, [r5, #0x58]
mov r1, #3
bl ov96_021EB630
ldr r0, [sp, #0xc]
add r5, r5, #4
add r0, #0xc
str r0, [sp, #0xc]
ldr r0, [sp, #8]
add r0, r0, #1
str r0, [sp, #8]
cmp r0, #3
blt _022020C4
mov r5, #0
mov r7, #0xa
_0220211E:
str r7, [sp]
add r0, r4, #0
mov r1, #3
mov r2, #1
mov r3, #0x69
bl ov96_021EB3E4
str r0, [r6, #0x70]
mov r1, #0
bl ov96_021EB564
ldr r0, [r6, #0x70]
mov r1, #4
bl ov96_021EB630
add r5, r5, #1
add r6, r6, #4
cmp r5, #9
blt _0220211E
add sp, #0x5c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02202148: .word 0x000005D4
_0220214C: .word 0x00000418
_02202150: .word ov96_0221C910
thumb_func_end ov96_02201EF0
thumb_func_start ov96_02202154
ov96_02202154: ; 0x02202154
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r4, r1, #0
add r5, r0, #0
bl ov96_021E5DC4
add r6, r0, #0
ldrb r0, [r4]
cmp r0, #0
beq _02202172
cmp r0, #1
beq _02202184
cmp r0, #2
beq _0220219C
b _022021CC
_02202172:
add r0, r5, #0
bl ov96_021E637C
cmp r0, #0
beq _022021CC
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _022021CC
_02202184:
add r0, r5, #0
bl ov96_0220223C
add r0, r5, #0
bl ov96_022028BC
cmp r0, #0
beq _022021CC
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _022021CC
_0220219C:
add r0, r5, #0
bl ov96_0220223C
add r0, r5, #0
bl ov96_021E667C
cmp r0, #0
beq _022021CC
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r6, #0x44]
str r0, [sp, #8]
mov r0, #0
add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
bl BeginNormalPaletteFade
add r0, r5, #0
mov r1, #1
bl ov96_021E5FC8
_022021CC:
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_02202154
thumb_func_start ov96_022021D4
ov96_022021D4: ; 0x022021D4
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
add r4, r1, #0
bl ov96_021E5F54
add r5, r0, #0
add r0, r6, #0
bl ov96_021E5DC4
ldrb r0, [r4]
cmp r0, #0
bne _022021FC
bl IsPaletteFadeFinished
cmp r0, #0
beq _022021F8
mov r0, #1
strb r0, [r4]
_022021F8:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_022021FC:
add r0, r6, #0
bl ov96_021E5F24
cmp r0, #0
beq _0220220A
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_0220220A:
add r5, #0x28
add r0, r5, #0
bl ov96_021E8A20
ldr r7, _02202238 ; =0x000003FF
add r5, r0, #0
mov r4, #0
_02202218:
ldrh r2, [r5]
lsl r1, r4, #0x18
add r0, r6, #0
and r2, r7
lsl r2, r2, #0x10
lsr r1, r1, #0x18
lsr r2, r2, #0x10
bl ov96_021E5FB0
add r4, r4, #1
add r5, r5, #2
cmp r4, #4
blt _02202218
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
nop
_02202238: .word 0x000003FF
thumb_func_end ov96_022021D4
thumb_func_start ov96_0220223C
ov96_0220223C: ; 0x0220223C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0xa0
str r0, [sp, #4]
bl ov96_021E5F54
str r0, [sp, #0x24]
ldr r0, [sp, #4]
bl ov96_021E5DC4
add r4, r0, #0
ldr r0, [sp, #4]
bl ov96_021E5F24
cmp r0, #0
beq _0220225C
b _02202706
_0220225C:
mov r0, #0x5d
lsl r0, r0, #4
ldrb r0, [r4, r0]
cmp r0, #0
beq _0220227C
ldr r0, [sp, #0x24]
add r0, #0x28
str r0, [sp, #0x24]
bl ov96_021E8A20
add r1, r0, #0
add r0, r4, #0
bl ov96_02202738
add sp, #0xa0
pop {r3, r4, r5, r6, r7, pc}
_0220227C:
ldr r0, [sp, #0x24]
add r0, #0x50
bl ov96_021E8A20
add r5, r0, #0
ldr r0, [sp, #0x24]
bl ov96_021E8A20
add r3, r0, #0
mov r2, #4
_02202290:
ldmia r3!, {r0, r1}
stmia r5!, {r0, r1}
sub r2, r2, #1
bne _02202290
ldr r0, [r3]
str r0, [r5]
ldr r0, _02202598 ; =0x000005E8
ldrh r1, [r4, r0]
cmp r1, #0
beq _022022A8
sub r1, r1, #1
strh r1, [r4, r0]
_022022A8:
ldr r0, [sp, #0x24]
add r0, #0x28
bl ov96_021E8A20
mov r0, #0
str r0, [sp, #0x28]
ldr r0, [sp, #0x24]
add r5, r4, #0
str r0, [sp, #0x1c]
add r0, #0x50
str r0, [sp, #0x1c]
add r0, r4, #0
str r0, [sp, #0x34]
add r0, #0xd4
str r0, [sp, #0x34]
add r0, r4, #0
str r0, [sp, #0x2c]
add r0, #0xe0
str r0, [sp, #0x2c]
add r0, r4, #0
str r0, [sp, #0x30]
add r0, #0xec
str r0, [sp, #0x30]
_022022D6:
ldr r0, [sp, #0x1c]
bl ov96_021E8A20
add r7, r0, #0
ldr r0, [r7]
cmp r0, #0
ldr r0, _0220259C ; =0x0000059C
beq _02202316
ldr r1, [r5, r0]
cmp r1, #0
beq _022022FC
add r0, r0, #4
ldr r0, [r5, r0]
cmp r0, #0
beq _022022FC
ldr r0, _0220259C ; =0x0000059C
mov r1, #0
str r1, [r5, r0]
b _0220231E
_022022FC:
cmp r1, #0
bne _0220231E
mov r0, #0x5a
lsl r0, r0, #4
ldr r0, [r5, r0]
cmp r0, #0
bne _0220231E
ldr r0, _0220259C ; =0x0000059C
mov r1, #1
str r1, [r5, r0]
add r0, r0, #4
str r1, [r5, r0]
b _0220231E
_02202316:
mov r1, #0
str r1, [r5, r0]
add r0, r0, #4
str r1, [r5, r0]
_0220231E:
ldr r0, _0220259C ; =0x0000059C
ldr r0, [r5, r0]
cmp r0, #0
beq _022023EA
add r0, sp, #0x94
str r0, [sp]
ldr r1, [sp, #0x28]
ldrb r2, [r7, #4]
lsl r1, r1, #0x18
ldrb r3, [r7, #5]
add r0, r4, #0
lsr r1, r1, #0x18
bl ov96_022031A8
add r6, r0, #0
cmp r6, #0xc
beq _022023E2
lsl r0, r6, #5
add r1, r4, r0
mov r0, #0x43
lsl r0, r0, #4
ldrb r0, [r1, r0]
cmp r0, #0
bne _02202412
mov r0, #0x48
mul r0, r6
add r0, r4, r0
add r0, #0xc4
ldr r0, [r0]
cmp r0, #0
beq _02202360
cmp r0, #2
bne _022023E2
_02202360:
ldr r0, [sp, #0x28]
add r3, r6, #0
add r1, r4, r0
ldr r0, _022025A0 ; =0x000005CC
strb r6, [r1, r0]
mov r0, #0x48
mul r3, r0
add r0, sp, #0x94
mov ip, r0
add r0, r4, r3
str r0, [sp, #0x48]
add r0, #0xe0
mov r2, ip
str r0, [sp, #0x48]
ldmia r2!, {r0, r1}
mov ip, r2
ldr r2, [sp, #0x48]
stmia r2!, {r0, r1}
mov r0, ip
ldr r1, [r0]
add r0, r2, #0
str r1, [r0]
ldrb r0, [r7, #4]
str r2, [sp, #0x48]
add r2, r4, r3
lsl r0, r0, #0xc
str r0, [sp, #0x88]
ldrb r0, [r7, #5]
add r7, sp, #0x88
add r2, #0xec
lsl r0, r0, #0xc
str r0, [sp, #0x90]
mov r0, #0
str r0, [sp, #0x8c]
ldmia r7!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r7]
str r0, [r2]
add r0, r4, r3
add r0, #0xc4
ldr r0, [r0]
cmp r0, #0
bne _022023E2
mov r0, #0xc
add r1, r6, #0
mul r1, r0
ldr r0, _022025A4 ; =ov96_0221C98C
add r2, r4, r3
add r6, r0, r1
ldmia r6!, {r0, r1}
add r2, #0xc8
stmia r2!, {r0, r1}
ldr r0, [r6]
add r1, r4, r3
str r0, [r2]
add r1, #0xc4
mov r0, #2
str r0, [r1]
add r1, r4, r3
add r1, #0xfc
mov r0, #0
strh r0, [r1]
add r1, r4, r3
add r1, #0xfe
strh r0, [r1]
_022023E2:
ldr r0, _022025A8 ; =0x000005EA
mov r1, #0
strb r1, [r4, r0]
b _022026A4
_022023EA:
mov r0, #0x5a
lsl r0, r0, #4
ldr r0, [r5, r0]
cmp r0, #0
beq _02202420
ldr r0, [sp, #0x28]
add r1, r4, r0
ldr r0, _022025A0 ; =0x000005CC
ldrb r0, [r1, r0]
cmp r0, #0xc
beq _02202412
ldr r0, _022025A8 ; =0x000005EA
ldrb r0, [r4, r0]
bl _dfltu
ldr r3, _022025AC ; =0x403E0000
mov r2, #0
bl _dls
blo _02202414
_02202412:
b _022026A4
_02202414:
ldr r0, _022025A8 ; =0x000005EA
ldrb r0, [r4, r0]
add r1, r0, #1
ldr r0, _022025A8 ; =0x000005EA
strb r1, [r4, r0]
b _022026A4
_02202420:
ldr r0, [sp, #0x28]
add r1, r4, r0
ldr r0, _022025A0 ; =0x000005CC
str r1, [sp, #0x18]
ldrb r0, [r1, r0]
cmp r0, #0xc
bne _02202430
b _0220269E
_02202430:
add r0, sp, #0x7c
str r0, [sp]
ldr r1, [sp, #0x28]
ldrb r2, [r7, #4]
lsl r1, r1, #0x18
ldrb r3, [r7, #5]
add r0, r4, #0
lsr r1, r1, #0x18
bl ov96_022031A8
cmp r0, #0xc
beq _022024A8
ldr r2, [sp, #0x18]
ldr r1, _022025A0 ; =0x000005CC
ldrb r1, [r2, r1]
cmp r0, r1
bne _022024A8
mov r1, #0x48
mul r1, r0
add r0, r4, r1
add r0, #0xfc
ldrh r0, [r0]
cmp r0, #4
bhs _022024EE
add r0, r4, r1
add r0, #0xfc
ldrh r0, [r0]
add r2, r0, #1
add r0, r4, r1
add r0, #0xfc
strh r2, [r0]
add r0, r4, r1
add r0, #0xfc
ldrh r0, [r0]
cmp r0, #1
bhi _02202482
add r1, r4, r1
add r1, #0xfe
mov r0, #0
strh r0, [r1]
b _02202696
_02202482:
cmp r0, #2
bhi _02202490
add r1, r4, r1
add r1, #0xfe
mov r0, #1
strh r0, [r1]
b _02202696
_02202490:
cmp r0, #3
bhi _0220249E
add r1, r4, r1
add r1, #0xfe
mov r0, #2
strh r0, [r1]
b _02202696
_0220249E:
add r1, r4, r1
add r1, #0xfe
mov r0, #3
strh r0, [r1]
b _02202696
_022024A8:
mov r1, #0
add r0, sp, #0x70
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
ldr r1, [sp, #0x18]
ldr r0, _022025A0 ; =0x000005CC
add r2, sp, #0x64
ldrb r1, [r1, r0]
mov r0, #0x48
add r6, r1, #0
str r1, [sp, #0x10]
mul r6, r0
ldr r1, [sp, #0x2c]
add r0, sp, #0x7c
add r1, r1, r6
bl VEC_Subtract
ldrb r0, [r7, #4]
ldr r1, [sp, #0x30]
add r2, sp, #0x58
lsl r0, r0, #0xc
str r0, [sp, #0x4c]
ldrb r0, [r7, #5]
add r1, r1, r6
lsl r0, r0, #0xc
str r0, [sp, #0x54]
mov r0, #0
str r0, [sp, #0x50]
add r0, sp, #0x4c
bl VEC_Subtract
ldr r0, [sp, #0x60]
cmp r0, #0
ble _022024F0
_022024EE:
b _02202696
_022024F0:
add r3, sp, #0x64
add r2, r4, r6
ldmia r3!, {r0, r1}
add r2, #0xd4
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r0, [sp, #0x10]
lsl r0, r0, #5
add r1, r4, r0
ldr r0, _022025B0 ; =0x0000042E
str r1, [sp, #0x14]
ldrsh r0, [r1, r0]
cmp r0, #0x3c
bgt _02202516
mov r0, #0x3f
lsl r0, r0, #0x18
str r0, [sp, #0x20]
b _0220253A
_02202516:
cmp r0, #0x46
bgt _02202520
ldr r0, _022025B4 ; =0x3F19999A
str r0, [sp, #0x20]
b _0220253A
_02202520:
cmp r0, #0x50
bgt _0220252A
ldr r0, _022025B8 ; =0x3F333333
str r0, [sp, #0x20]
b _0220253A
_0220252A:
cmp r0, #0x5a
bgt _02202534
ldr r0, _022025BC ; =0x3F4CCCCD
str r0, [sp, #0x20]
b _0220253A
_02202534:
mov r0, #0xfe
lsl r0, r0, #0x16
str r0, [sp, #0x20]
_0220253A:
ldr r0, [sp, #0x34]
add r0, r0, r6
bl VEC_Mag
asr r1, r0, #0xb
lsr r1, r1, #0x14
add r1, r0, r1
asr r0, r1, #0xc
bl _fflt
add r7, r0, #0
bl _f2d
mov r3, #1
mov r2, #0
lsl r3, r3, #0x1e
bl _dgr
bls _02202566
mov r7, #1
lsl r7, r7, #0x1e
b _0220257A
_02202566:
add r0, r7, #0
bl _f2d
ldr r3, _022025C0 ; =0x3FF00000
mov r2, #0
bl _dls
bhs _0220257A
mov r7, #0xfe
lsl r7, r7, #0x16
_0220257A:
ldr r0, _022025A8 ; =0x000005EA
ldrb r0, [r4, r0]
bl _ffltu
bl _f2d
ldr r3, _022025AC ; =0x403E0000
mov r2, #0
bl _ddiv
add r3, r1, #0
add r2, r0, #0
ldr r1, _022025C0 ; =0x3FF00000
b _022025C4
nop
_02202598: .word 0x000005E8
_0220259C: .word 0x0000059C
_022025A0: .word 0x000005CC
_022025A4: .word ov96_0221C98C
_022025A8: .word 0x000005EA
_022025AC: .word 0x403E0000
_022025B0: .word 0x0000042E
_022025B4: .word 0x3F19999A
_022025B8: .word 0x3F333333
_022025BC: .word 0x3F4CCCCD
_022025C0: .word 0x3FF00000
_022025C4:
mov r0, #0
bl _dadd
bl _d2f
str r0, [sp, #0x38]
ldr r0, [sp, #0x20]
bl _f2d
str r0, [sp, #0x3c]
add r0, r7, #0
str r1, [sp, #0xc]
bl _f2d
str r0, [sp, #0x40]
add r7, r1, #0
ldr r1, [sp, #0x14]
ldr r0, _0220270C ; =0x0000041C
ldr r0, [r1, r0]
bl _f2d
add r3, r1, #0
mov r1, #1
add r2, r0, #0
mov r0, #0
lsl r1, r1, #0x1e
bl _dsub
add r2, r0, #0
add r3, r1, #0
ldr r0, [sp, #0x40]
add r1, r7, #0
bl _dmul
add r2, r0, #0
add r3, r1, #0
ldr r0, [sp, #0x3c]
ldr r1, [sp, #0xc]
bl _dmul
str r0, [sp, #0x44]
ldr r0, [sp, #0x38]
add r7, r1, #0
bl _f2d
add r2, r0, #0
add r3, r1, #0
ldr r0, [sp, #0x44]
add r1, r7, #0
bl _ddiv
bl _d2f
add r7, r0, #0
bl _f2d
ldr r3, _02202710 ; =0x40080000
mov r2, #0
bl _dgr
bls _02202642
ldr r7, _02202714 ; =0x40400000
b _02202656
_02202642:
add r0, r7, #0
bl _f2d
ldr r3, _02202718 ; =0x3FF00000
mov r2, #0
bl _dls
bhs _02202656
mov r7, #0xfe
lsl r7, r7, #0x16
_02202656:
ldr r0, [sp, #0x34]
ldr r1, [sp, #0x34]
add r0, r0, r6
add r1, r1, r6
bl VEC_Normalize
ldr r0, _0220271C ; =0x45800000
add r1, r7, #0
bl _fmul
bl _ffix
ldr r1, [sp, #0x34]
ldr r3, [sp, #0x34]
add r1, r1, r6
add r2, sp, #0x70
add r3, r3, r6
bl VEC_MultAdd
ldr r1, [sp, #0x14]
ldr r0, _02202720 ; =0x00000428
ldr r0, [r1, r0]
ldr r1, [sp, #0x34]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r1, r1, r6
bl ov96_02204320
add r1, r4, r6
add r1, #0xc4
mov r0, #1
str r0, [r1]
_02202696:
ldr r1, [sp, #0x18]
ldr r0, _02202724 ; =0x000005CC
mov r2, #0xc
strb r2, [r1, r0]
_0220269E:
ldr r0, _02202728 ; =0x000005EA
mov r1, #0
strb r1, [r4, r0]
_022026A4:
ldr r0, [sp, #0x1c]
add r5, #0xc
add r0, #0x28
str r0, [sp, #0x1c]
ldr r0, [sp, #0x28]
add r0, r0, #1
str r0, [sp, #0x28]
cmp r0, #4
bge _022026B8
b _022022D6
_022026B8:
ldr r1, _0220272C ; =0x000005DC
ldr r0, [r4, r1]
add r1, #0xc
ldrh r2, [r4, r1]
ldr r1, _02202730 ; =0x00000708
sub r1, r1, r2
bl ov96_022043C0
ldr r0, [sp, #4]
bl ov96_022033FC
ldr r0, [sp, #4]
bl ov96_02203468
add r0, r4, #0
bl ov96_02203754
ldr r0, [sp, #4]
add r1, r4, #0
bl ov96_02203544
ldr r0, _02202734 ; =0x000005E8
ldrh r1, [r4, r0]
cmp r1, #0
bne _022026EE
mov r1, #1
b _022026F0
_022026EE:
mov r1, #0
_022026F0:
sub r0, #0x18
strb r1, [r4, r0]
ldr r0, [sp, #0x24]
add r0, #0x28
str r0, [sp, #0x24]
bl ov96_021E8A20
add r1, r0, #0
add r0, r4, #0
bl ov96_02202738
_02202706:
add sp, #0xa0
pop {r3, r4, r5, r6, r7, pc}
nop
_0220270C: .word 0x0000041C
_02202710: .word 0x40080000
_02202714: .word 0x40400000
_02202718: .word 0x3FF00000
_0220271C: .word 0x45800000
_02202720: .word 0x00000428
_02202724: .word 0x000005CC
_02202728: .word 0x000005EA
_0220272C: .word 0x000005DC
_02202730: .word 0x00000708
_02202734: .word 0x000005E8
thumb_func_end ov96_0220223C
thumb_func_start ov96_02202738
ov96_02202738: ; 0x02202738
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x30
str r0, [sp]
str r1, [sp, #4]
mov r1, #0
add r0, sp, #0x2c
strb r1, [r0]
strb r1, [r0, #1]
strb r1, [r0, #2]
strb r1, [r0, #3]
add r0, sp, #0x24
strh r1, [r0]
strh r1, [r0, #2]
strh r1, [r0, #4]
strh r1, [r0, #6]
add r0, r1, #0
ldr r4, [sp]
str r0, [sp, #0x1c]
str r0, [sp, #0xc]
ldr r0, [sp, #4]
str r1, [sp, #0x18]
add r5, r4, #0
str r0, [sp, #8]
_02202766:
add r0, r4, #0
add r0, #0xc4
ldr r1, [r0]
ldr r0, [sp, #0xc]
lsl r1, r0
ldr r0, [sp, #0x18]
orr r0, r1
str r0, [sp, #0x18]
ldr r0, _022028AC ; =0x00000433
ldrb r0, [r5, r0]
str r0, [sp, #0x10]
add r0, r4, #0
add r0, #0xfb
ldrb r0, [r0]
cmp r0, #0
beq _0220278A
mov r0, #1
b _0220278C
_0220278A:
mov r0, #0
_0220278C:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r1, r4, #0
str r0, [sp, #0x14]
add r1, #0xfb
mov r0, #0
strb r0, [r1]
add r0, r4, #0
add r0, #0xc8
ldr r1, [r0]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r7, r0, #0xc
add r0, r4, #0
add r0, #0xd0
ldr r1, [r0]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r6, r0, #0xc
cmp r7, #1
bge _022027BE
mov r7, #1
b _022027C4
_022027BE:
cmp r7, #0x40
ble _022027C4
mov r7, #0x40
_022027C4:
cmp r6, #1
bge _022027CC
mov r6, #1
b _022027D2
_022027CC:
cmp r6, #0x40
ble _022027D2
mov r6, #0x40
_022027D2:
ldr r0, [sp, #0x1c]
mov r1, #3
bl _s32_div_f
str r0, [sp, #0x20]
ldr r0, [sp, #0x1c]
mov r1, #3
bl _s32_div_f
ldr r0, [sp, #0x20]
add r2, sp, #0x2c
ldrb r2, [r2, r0]
add r0, r4, #0
add r0, #0xfe
sub r3, r6, #1
ldrh r0, [r0]
lsl r1, r1, #1
lsl r3, r3, #6
lsl r0, r1
add r2, r2, r0
ldr r0, [sp, #0x20]
add r1, sp, #0x2c
strb r2, [r1, r0]
ldr r0, [sp, #0x14]
lsl r2, r0, #0xd
ldr r0, [sp, #0x10]
lsl r1, r0, #0xc
sub r0, r7, #1
add r0, r0, r3
add r0, r1, r0
add r1, r2, r0
ldr r0, _022028B0 ; =0x00000431
ldrb r0, [r5, r0]
lsl r0, r0, #0xe
add r1, r1, r0
ldr r0, [sp, #8]
strh r1, [r0, #8]
ldr r0, [sp, #0x20]
add r1, sp, #0x24
lsl r0, r0, #1
ldrh r2, [r1, r0]
ldr r1, _022028B4 ; =0x0000042C
ldrh r1, [r5, r1]
add r2, r2, r1
add r1, sp, #0x24
strh r2, [r1, r0]
ldrh r2, [r1, r0]
ldr r1, _022028B8 ; =0x000003E7
cmp r2, r1
bls _0220283C
add r2, r1, #0
add r1, sp, #0x24
strh r2, [r1, r0]
_0220283C:
ldr r0, [sp, #0xc]
add r4, #0x48
add r0, r0, #2
str r0, [sp, #0xc]
ldr r0, [sp, #8]
add r5, #0x20
add r0, r0, #2
str r0, [sp, #8]
ldr r0, [sp, #0x1c]
add r0, r0, #1
str r0, [sp, #0x1c]
cmp r0, #0xc
blt _02202766
ldr r2, [sp, #4]
mov r3, #0
add r0, sp, #0x24
add r1, sp, #0x2c
_0220285E:
ldrb r4, [r1]
add r3, r3, #1
add r1, r1, #1
lsl r5, r4, #0xa
ldrh r4, [r0]
add r0, r0, #2
add r4, r5, r4
strh r4, [r2]
add r2, r2, #2
cmp r3, #4
blt _0220285E
ldr r1, [sp, #0x18]
ldr r0, [sp, #4]
str r1, [r0, #0x20]
mov r1, #0x5d
ldr r0, [sp]
lsl r1, r1, #4
ldrb r0, [r0, r1]
add r1, #0x18
lsl r2, r0, #0x18
ldr r0, [sp, #0x18]
add r2, r0, r2
ldr r0, [sp, #4]
str r2, [r0, #0x20]
ldr r0, [sp]
ldrh r0, [r0, r1]
mov r1, #0x1e
add r0, #0x1e
bl _s32_div_f
ldr r1, [sp, #4]
lsl r0, r0, #0x19
ldr r1, [r1, #0x20]
add r1, r1, r0
ldr r0, [sp, #4]
str r1, [r0, #0x20]
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
nop
_022028AC: .word 0x00000433
_022028B0: .word 0x00000431
_022028B4: .word 0x0000042C
_022028B8: .word 0x000003E7
thumb_func_end ov96_02202738
thumb_func_start ov96_022028BC
ov96_022028BC: ; 0x022028BC
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r6, r0, #0
add r0, r5, #0
bl ov96_021E5F54
add r7, r0, #0
bl ov96_021E8A20
add r4, r0, #0
mov r0, #0
add r7, #0xf0
str r0, [r4]
add r0, r7, #0
bl ov96_021E8A20
ldr r0, [r0, #0x20]
mov r1, #1
asr r0, r0, #0x18
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _0220290A
ldr r0, [r6, #0x48]
bl ov96_021EB63C
ldr r0, _0220294C ; =0x000005D8
mov r1, #1
ldr r0, [r6, r0]
bl ov96_021EB144
ldr r1, _02202950 ; =ov96_022038D4
add r0, r5, #0
bl ov96_021E8324
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_0220290A:
bl System_GetTouchNew
cmp r0, #0
beq _0220292C
add r0, r5, #0
bl ov96_021E5F24
add r1, r0, #0
mov r0, #1
lsl r1, r1, #0x18
str r0, [sp]
add r0, r5, #0
lsr r1, r1, #0x18
mov r2, #3
mov r3, #0
bl ov96_021E8228
_0220292C:
bl System_GetTouchHeld
cmp r0, #0
beq _02202942
ldr r0, _02202954 ; =gSystem + 0x40
ldrh r1, [r0, #0x20]
strb r1, [r4, #4]
ldrh r0, [r0, #0x22]
strb r0, [r4, #5]
mov r0, #1
str r0, [r4]
_02202942:
add r0, r5, #0
bl ov96_02202958
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0220294C: .word 0x000005D8
_02202950: .word ov96_022038D4
_02202954: .word gSystem + 0x40
thumb_func_end ov96_022028BC
thumb_func_start ov96_02202958
ov96_02202958: ; 0x02202958
push {r4, r5, r6, r7, lr}
sub sp, #0x14c
str r0, [sp]
bl ov96_021E5DC4
add r4, r0, #0
ldr r0, [sp]
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
str r0, [sp, #0x58]
ldr r0, [sp]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x2c]
ldr r0, [sp, #0x58]
ldr r0, [r0, #0x20]
asr r1, r0, #0x19
mov r0, #0x7f
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x54]
bne _02202994
mov r1, #0
b _0220299C
_02202994:
ldr r0, [sp, #0x54]
sub r0, r0, #1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
_0220299C:
add r0, r4, #0
bl ov96_022038A0
ldr r1, [sp, #0x2c]
mov r0, #0x5e
lsl r2, r1, #1
ldr r1, [sp, #0x58]
lsl r0, r0, #4
ldrh r2, [r1, r2]
ldr r1, _02202CE8 ; =0x000003FF
ldr r0, [r4, r0]
and r1, r2
lsl r1, r1, #0x10
lsr r1, r1, #0x10
bl ov96_02203BD0
ldr r0, [sp, #0x2c]
mov r1, #4
sub r0, r1, r0
str r0, [sp, #0x1c]
ldr r1, [sp, #0x1c]
ldr r0, _02202CEC ; =FX_SinCosTable_
lsl r1, r1, #0x18
lsr r1, r1, #0x18
lsl r1, r1, #0xe
asr r1, r1, #4
lsl r1, r1, #2
add r0, r0, r1
ldr r5, [sp, #0x58]
mov r6, #0
str r0, [sp, #0x5c]
_022029DA:
ldrh r0, [r5, #8]
asr r1, r0, #0xd
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _02202AD2
add r0, r6, #0
mov r1, #3
bl _s32_div_f
ldr r1, [sp, #0x2c]
cmp r1, r0
bne _02202AD2
add r0, r6, #0
mov r1, #3
bl _s32_div_f
lsl r0, r1, #0x18
lsr r0, r0, #0x16
add r0, r4, r0
str r0, [sp, #0x30]
mov r1, #1
ldr r0, [r0, #0x64]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [sp, #0x30]
mov r1, #6
ldr r0, [r0, #0x64]
bl ov96_021EB564
ldrh r1, [r5, #8]
mov r0, #0x3f
add r2, r1, #0
asr r1, r1, #6
and r1, r0
add r7, r1, #1
and r2, r0
ldr r1, [sp, #0x2c]
add r0, r2, #1
cmp r1, #0
beq _02202A8A
mov r2, #0
str r2, [sp, #0x108]
lsl r1, r0, #0xc
mov r2, #0x21
lsl r0, r7, #0xc
lsl r2, r2, #0xc
str r1, [sp, #0x104]
sub r1, r1, r2
str r1, [sp, #0x104]
add r1, r2, #0
ldr r2, [sp, #0x5c]
str r0, [sp, #0x10c]
sub r0, r0, r1
mov r1, #0
str r0, [sp, #0x10c]
ldrsh r1, [r2, r1]
add r3, r2, #0
mov r2, #2
ldrsh r2, [r3, r2]
add r0, sp, #0x110
bl MTX_RotY43_
add r0, sp, #0x104
add r1, sp, #0x110
add r2, sp, #0xf8
bl MTX_MultVec43
mov r0, #0x21
ldr r1, [sp, #0xf8]
lsl r0, r0, #0xc
add r0, r1, r0
mov r1, #0x21
ldr r2, [sp, #0x100]
lsl r1, r1, #0xc
add r1, r2, r1
asr r2, r0, #0xb
lsr r2, r2, #0x14
add r2, r0, r2
str r0, [sp, #0xf8]
asr r0, r2, #0xc
asr r2, r1, #0xb
lsr r2, r2, #0x14
add r2, r1, r2
str r1, [sp, #0x100]
asr r7, r2, #0xc
_02202A8A:
bl _fflt
str r0, [sp, #0x60]
add r0, r7, #0
bl _fflt
add r1, r0, #0
ldr r0, [sp, #0x60]
add r2, sp, #0x88
add r3, sp, #0x84
bl ov96_02204134
ldr r0, [sp, #0x88]
ldr r7, [sp, #0x84]
lsl r0, r0, #0xc
str r0, [sp, #0x140]
lsl r0, r7, #0xc
str r0, [sp, #0x144]
mov r0, #0
str r0, [sp, #0x148]
add r0, r7, #0
mov r1, #0x14
bl _s32_div_f
sub r7, #8
sub r0, r7, r0
lsl r0, r0, #0xc
str r0, [sp, #0x144]
ldr r0, [sp, #0x30]
add r1, sp, #0x140
ldr r0, [r0, #0x64]
bl ov96_021EB588
ldr r0, _02202CF0 ; =0x0000088F
bl PlaySE
_02202AD2:
add r6, r6, #1
add r5, r5, #2
cmp r6, #0xc
bge _02202ADC
b _022029DA
_02202ADC:
ldr r0, [sp, #0x2c]
mov r5, #0
lsl r1, r0, #1
add r0, r0, r1
str r0, [sp, #0x34]
_02202AE6:
ldr r0, [sp, #0x34]
lsl r0, r0, #0x18
lsr r7, r0, #0x18
ldr r0, [sp, #0x58]
lsl r1, r7, #1
add r0, r0, r1
str r0, [sp, #0x28]
ldrh r0, [r0, #8]
asr r1, r0, #0xe
mov r0, #3
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x50]
cmp r0, #1
bne _02202B28
lsl r0, r7, #5
add r6, r4, r0
ldr r0, _02202CF4 ; =0x00000418
mov r1, #1
ldr r0, [r6, r0]
add r2, r1, #0
bl ov96_021EB52C
mov r0, #0x5e
lsl r0, r0, #4
lsl r1, r5, #0x18
ldr r0, [r4, r0]
lsr r1, r1, #0x18
mov r2, #0
bl ov96_02203BC0
b _02202B70
_02202B28:
ldr r0, [sp, #0x50]
cmp r0, #2
bne _02202B50
lsl r0, r7, #5
add r6, r4, r0
ldr r0, _02202CF4 ; =0x00000418
mov r1, #1
ldr r0, [r6, r0]
mov r2, #0
bl ov96_021EB52C
mov r0, #0x5e
lsl r0, r0, #4
lsl r1, r5, #0x18
ldr r0, [r4, r0]
lsr r1, r1, #0x18
mov r2, #1
bl ov96_02203BC0
b _02202B70
_02202B50:
lsl r0, r7, #5
add r6, r4, r0
ldr r0, _02202CF4 ; =0x00000418
mov r1, #1
ldr r0, [r6, r0]
mov r2, #0
bl ov96_021EB52C
mov r0, #0x5e
lsl r0, r0, #4
lsl r1, r5, #0x18
ldr r0, [r4, r0]
lsr r1, r1, #0x18
mov r2, #0
bl ov96_02203BC0
_02202B70:
ldr r0, [sp, #0x28]
ldrh r0, [r0, #8]
asr r1, r0, #0xc
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x4c]
ldr r0, [sp, #0x58]
ldr r1, [r0, #0x20]
lsl r0, r7, #1
asr r1, r0
mov r0, #3
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x48]
ldr r0, [sp, #0x50]
cmp r0, #1
bne _02202BD2
mov r0, #0x5e
lsl r0, r0, #4
lsl r1, r5, #0x18
ldr r0, [r4, r0]
lsr r1, r1, #0x18
mov r2, #0xa
bl ov96_02203CA4
ldr r0, _02202CF8 ; =0x00000434
mov r1, #0xa
strh r1, [r6, r0]
mov r0, #0x89
lsl r0, r0, #4
bl IsSEPlaying
cmp r0, #0
bne _02202BC2
mov r0, #0x89
lsl r0, r0, #4
bl PlaySE
_02202BC2:
ldr r0, [sp, #0x4c]
cmp r0, #0
beq _02202C88
mov r0, #0x8b
lsl r0, r0, #4
bl PlaySE
b _02202C88
_02202BD2:
ldr r0, [sp, #0x4c]
cmp r0, #0
beq _02202C02
mov r0, #0x5e
lsl r0, r0, #4
lsl r1, r5, #0x18
ldr r0, [r4, r0]
lsr r1, r1, #0x18
mov r2, #7
bl ov96_02203CA4
ldr r0, _02202CF8 ; =0x00000434
mov r1, #7
strh r1, [r6, r0]
mov r0, #0x8b
lsl r0, r0, #4
bl PlaySE
mov r0, #0x5e
lsl r0, r0, #4
ldr r0, [r4, r0]
bl ov96_02203CD4
b _02202C88
_02202C02:
ldr r0, [sp, #0x48]
cmp r0, #1
bne _02202C4C
ldr r0, _02202CFC ; =0x00000436
ldrh r0, [r6, r0]
cmp r0, #0
bne _02202C4C
ldr r0, [sp, #0x50]
cmp r0, #1
bne _02202C1A
bl GF_AssertFail
_02202C1A:
mov r0, #0x5e
lsl r0, r0, #4
lsl r1, r5, #0x18
ldr r0, [r4, r0]
lsr r1, r1, #0x18
mov r2, #4
bl ov96_02203CA4
lsl r0, r7, #5
ldr r1, _02202CF8 ; =0x00000434
add r0, r4, r0
mov r2, #4
strh r2, [r0, r1]
mov r2, #1
add r1, r1, #2
strh r2, [r0, r1]
ldr r0, _02202D00 ; =0x000005EF
add r1, r4, r5
ldrb r0, [r1, r0]
cmp r0, #0
bne _02202C88
ldr r0, _02202D04 ; =0x000008AC
bl PlaySE
b _02202C88
_02202C4C:
ldr r0, _02202CF8 ; =0x00000434
mov r7, #0
ldrh r0, [r6, r0]
cmp r0, #0xa
bne _02202C5A
mov r7, #1
b _02202C6E
_02202C5A:
mov r0, #0x5e
lsl r0, r0, #4
lsl r1, r5, #0x18
ldr r0, [r4, r0]
lsr r1, r1, #0x18
bl ov96_02203CC4
cmp r0, #0
bne _02202C6E
mov r7, #1
_02202C6E:
cmp r7, #0
beq _02202C88
mov r0, #0x5e
lsl r0, r0, #4
lsl r1, r5, #0x18
ldr r0, [r4, r0]
lsr r1, r1, #0x18
mov r2, #1
bl ov96_02203CA4
ldr r0, _02202CF8 ; =0x00000434
mov r1, #1
strh r1, [r6, r0]
_02202C88:
ldr r0, [sp, #0x48]
cmp r0, #1
beq _02202C94
ldr r0, _02202CFC ; =0x00000436
mov r1, #0
strh r1, [r6, r0]
_02202C94:
ldr r0, [sp, #0x34]
add r5, r5, #1
add r0, r0, #1
str r0, [sp, #0x34]
cmp r5, #3
bge _02202CA2
b _02202AE6
_02202CA2:
mov r0, #0
str r0, [sp, #0x14]
ldr r0, [sp, #0x2c]
add r1, r0, #1
lsl r0, r1, #1
add r0, r1, r0
mov r1, #0xc
bl _s32_div_f
lsl r0, r1, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x38]
add r5, r4, #0
_02202CBC:
ldr r0, [sp, #0x38]
mov r1, #0xc
bl _s32_div_f
lsl r0, r1, #0x18
lsr r7, r0, #0x18
ldr r0, [sp, #0x58]
lsl r1, r7, #1
add r0, r0, r1
ldrh r0, [r0, #8]
asr r1, r0, #0xe
mov r0, #3
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x10]
cmp r0, #1
bne _02202D1E
lsl r0, r7, #5
add r6, r4, r0
ldr r0, _02202CF4 ; =0x00000418
b _02202D08
.balign 4, 0
_02202CE8: .word 0x000003FF
_02202CEC: .word FX_SinCosTable_
_02202CF0: .word 0x0000088F
_02202CF4: .word 0x00000418
_02202CF8: .word 0x00000434
_02202CFC: .word 0x00000436
_02202D00: .word 0x000005EF
_02202D04: .word 0x000008AC
_02202D08:
mov r1, #1
ldr r0, [r6, r0]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r5, #0x70]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
b _02202D5A
_02202D1E:
ldr r0, [sp, #0x10]
cmp r0, #2
bne _02202D40
lsl r0, r7, #5
add r6, r4, r0
ldr r0, _0220305C ; =0x00000418
mov r1, #1
ldr r0, [r6, r0]
mov r2, #0
bl ov96_021EB52C
mov r1, #1
ldr r0, [r5, #0x70]
add r2, r1, #0
bl ov96_021EB52C
b _02202D5A
_02202D40:
lsl r0, r7, #5
add r6, r4, r0
ldr r0, _0220305C ; =0x00000418
mov r1, #1
ldr r0, [r6, r0]
mov r2, #0
bl ov96_021EB52C
ldr r0, [r5, #0x70]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
_02202D5A:
ldr r0, [sp, #0x58]
lsl r2, r7, #1
add r0, r0, r2
ldrh r0, [r0, #8]
str r0, [sp, #0x64]
asr r1, r0, #0xc
mov r0, #1
and r0, r1
ldr r1, [sp, #0x58]
lsl r0, r0, #0x18
ldr r1, [r1, #0x20]
lsr r0, r0, #0x18
asr r1, r2
mov r2, #3
and r1, r2
lsl r1, r1, #0x18
lsr r3, r1, #0x18
ldr r2, [sp, #0x64]
mov r1, #0x3f
and r1, r2
str r1, [sp, #0x78]
add r1, r2, #0
asr r2, r1, #6
mov r1, #0x3f
and r1, r2
mov ip, r1
ldr r1, [sp, #0x10]
cmp r1, #1
bne _02202DBC
add r0, r5, #0
add r0, #0x94
ldr r0, [r0]
mov r1, #0x14
bl ov96_021EAC5C
ldr r0, _02203060 ; =0x00000434
mov r1, #0x14
strh r1, [r6, r0]
mov r0, #0x89
lsl r0, r0, #4
bl IsSEPlaying
cmp r0, #0
bne _02202E58
mov r0, #0x89
lsl r0, r0, #4
bl PlaySE
b _02202E58
_02202DBC:
cmp r0, #0
beq _02202DD4
add r0, r5, #0
add r0, #0x94
ldr r0, [r0]
mov r1, #0x16
bl ov96_021EAC5C
ldr r0, _02203060 ; =0x00000434
mov r1, #0x16
strh r1, [r6, r0]
b _02202E58
_02202DD4:
cmp r3, #1
bne _02202E24
ldr r2, [sp, #0x78]
mov r0, #0xc
add r3, r2, #1
ldr r2, _02203064 ; =ov96_0221C98C
mul r0, r7
ldr r1, _02203064 ; =ov96_0221C98C
ldr r2, [r2, r0]
add r1, r1, r0
asr r0, r2, #0xb
lsr r0, r0, #0x14
add r0, r2, r0
asr r0, r0, #0xc
cmp r3, r0
bne _02202E24
ldr r2, [r1, #8]
mov r0, ip
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
add r0, r0, #1
asr r1, r1, #0xc
cmp r0, r1
bne _02202E24
ldr r0, [sp, #0x10]
cmp r0, #1
bne _02202E10
bl GF_AssertFail
_02202E10:
add r0, r5, #0
add r0, #0x94
ldr r0, [r0]
mov r1, #0x10
bl ov96_021EAC5C
ldr r0, _02203060 ; =0x00000434
mov r1, #0x10
strh r1, [r6, r0]
b _02202E58
_02202E24:
ldr r0, _02203060 ; =0x00000434
mov r7, #0
ldrh r0, [r6, r0]
cmp r0, #0x14
bne _02202E32
mov r7, #1
b _02202E42
_02202E32:
add r0, r5, #0
add r0, #0x94
ldr r0, [r0]
bl ov96_021EAD78
cmp r0, #0
bne _02202E42
mov r7, #1
_02202E42:
cmp r7, #0
beq _02202E58
add r0, r5, #0
add r0, #0x94
ldr r0, [r0]
mov r1, #0
bl ov96_021EAC5C
ldr r0, _02203060 ; =0x00000434
mov r1, #0
strh r1, [r6, r0]
_02202E58:
ldr r0, [sp, #0x38]
add r5, r5, #4
add r0, r0, #1
str r0, [sp, #0x38]
ldr r0, [sp, #0x14]
add r0, r0, #1
str r0, [sp, #0x14]
cmp r0, #9
bge _02202E6C
b _02202CBC
_02202E6C:
ldr r0, [sp, #0x58]
ldr r3, _02203068 ; =ov96_0221C7C4
str r0, [sp, #0x3c]
add r2, sp, #0x8c
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r1, [sp, #0x1c]
ldr r0, [r3]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
lsl r1, r1, #0xe
str r0, [r2]
asr r1, r1, #4
mov r6, #0
ldr r0, _0220306C ; =FX_SinCosTable_
lsl r1, r1, #2
add r0, r0, r1
str r6, [sp, #0x40]
add r5, r4, #0
str r0, [sp, #0x68]
_02202E94:
ldr r0, [sp, #0x58]
ldr r1, [r0, #0x20]
ldr r0, [sp, #0x40]
asr r1, r0
mov r0, #3
and r0, r1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
add r0, r7, #0
add r0, #0xff
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #1
bls _02202EB2
b _022030DE
_02202EB2:
add r1, r5, #0
add r1, #0xfa
mov r0, #0
strb r0, [r1]
cmp r7, #2
beq _02202ECE
add r0, r5, #0
add r0, #0xbc
mov r1, #1
ldr r0, [r0]
add r2, r1, #0
bl ov96_021EB52C
b _02202EDC
_02202ECE:
add r0, r5, #0
add r0, #0xbc
ldr r0, [r0]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
_02202EDC:
add r0, r5, #0
add r0, #0xb8
mov r1, #1
ldr r0, [r0]
add r2, r1, #0
bl ov96_021EB52C
add r0, r6, #0
mov r1, #3
bl _s32_div_f
str r0, [sp, #0x24]
add r0, r6, #0
mov r1, #3
bl _s32_div_f
ldr r0, [sp, #0x24]
str r1, [sp, #0xc]
lsl r1, r0, #1
ldr r0, [sp, #0x58]
ldrh r0, [r0, r1]
asr r1, r0, #0xa
mov r0, #0x3f
and r0, r1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
ldr r0, [sp, #0xc]
lsl r0, r0, #1
asr r1, r0
mov r0, #3
and r0, r1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
ldr r0, [sp, #0x3c]
ldrh r1, [r0, #8]
mov r0, #0x3f
and r0, r1
asr r2, r1, #6
mov r1, #0x3f
and r1, r2
add r1, r1, #1
str r1, [sp, #0x44]
ldr r1, [sp, #0x2c]
add r0, r0, #1
cmp r1, #0
beq _02202F96
mov r2, #0
str r2, [sp, #0xb4]
lsl r1, r0, #0xc
mov r2, #0x21
ldr r0, [sp, #0x44]
lsl r2, r2, #0xc
str r1, [sp, #0xb0]
sub r1, r1, r2
lsl r0, r0, #0xc
str r1, [sp, #0xb0]
add r1, r2, #0
ldr r2, [sp, #0x68]
str r0, [sp, #0xb8]
sub r0, r0, r1
mov r1, #0
str r0, [sp, #0xb8]
ldrsh r1, [r2, r1]
add r3, r2, #0
mov r2, #2
ldrsh r2, [r3, r2]
add r0, sp, #0xbc
bl MTX_RotY43_
add r0, sp, #0xb0
add r1, sp, #0xbc
add r2, sp, #0xa4
bl MTX_MultVec43
mov r0, #0x21
ldr r1, [sp, #0xa4]
lsl r0, r0, #0xc
add r0, r1, r0
mov r1, #0x21
ldr r2, [sp, #0xac]
lsl r1, r1, #0xc
add r1, r2, r1
asr r2, r0, #0xb
lsr r2, r2, #0x14
add r2, r0, r2
str r0, [sp, #0xa4]
asr r0, r2, #0xc
asr r2, r1, #0xb
lsr r2, r2, #0x14
add r2, r1, r2
str r1, [sp, #0xac]
asr r1, r2, #0xc
str r1, [sp, #0x44]
_02202F96:
bl _fflt
str r0, [sp, #0x6c]
ldr r0, [sp, #0x44]
bl _fflt
add r1, r0, #0
ldr r0, [sp, #0x6c]
add r2, sp, #0x80
add r3, sp, #0x7c
bl ov96_02204134
ldr r0, [sp, #0x80]
add r1, sp, #0xec
lsl r0, r0, #0xc
str r0, [sp, #0xec]
ldr r0, [sp, #0x7c]
lsl r0, r0, #0xc
str r0, [sp, #0xf0]
mov r0, #0
str r0, [sp, #0xf4]
add r0, r5, #0
add r0, #0xbc
ldr r0, [r0]
bl ov96_021EB588
ldr r0, [sp, #0x7c]
mov r1, #0x14
str r0, [sp, #0x18]
bl _s32_div_f
ldr r1, [sp, #0x18]
sub r1, #8
sub r0, r1, r0
lsl r0, r0, #0xc
str r0, [sp, #0xf0]
add r0, r5, #0
add r0, #0xb8
str r1, [sp, #0x18]
ldr r0, [r0]
add r1, sp, #0xec
bl ov96_021EB588
add r3, sp, #0x8c
ldmia r3!, {r0, r1}
add r2, sp, #0x98
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r0, [sp, #0x7c]
bl _fflt
bl _f2d
add r3, r1, #0
add r2, r0, #0
ldr r1, _02203070 ; =0x40738000
mov r0, #0
bl _dadd
ldr r3, _02203074 ; =0x40878000
mov r2, #0
bl _ddiv
str r0, [sp, #0x70]
add r0, r7, #0
str r1, [sp, #8]
bl _ffltu
bl _f2d
ldr r3, _02203078 ; =0x40080000
mov r2, #0
bl _ddiv
add r2, r0, #0
add r3, r1, #0
ldr r1, _0220307C ; =0x3FF00000
mov r0, #0
bl _dadd
add r2, r0, #0
add r3, r1, #0
ldr r0, [sp, #0x70]
ldr r1, [sp, #8]
bl _dmul
bl _d2f
str r0, [sp, #0x74]
ldr r0, _02203080 ; =0x45800000
ldr r1, [sp, #0x74]
bl _fmul
bl _ffix
str r0, [sp, #0x98]
ldr r0, _02203080 ; =0x45800000
b _02203084
.balign 4, 0
_0220305C: .word 0x00000418
_02203060: .word 0x00000434
_02203064: .word ov96_0221C98C
_02203068: .word ov96_0221C7C4
_0220306C: .word FX_SinCosTable_
_02203070: .word 0x40738000
_02203074: .word 0x40878000
_02203078: .word 0x40080000
_0220307C: .word 0x3FF00000
_02203080: .word 0x45800000
_02203084:
ldr r1, [sp, #0x74]
bl _fmul
bl _ffix
str r0, [sp, #0x9c]
add r0, r5, #0
add r0, #0xbc
ldr r0, [r0]
add r1, sp, #0x98
mov r2, #2
bl ov96_021EB5A0
add r0, r5, #0
add r0, #0xb8
ldr r0, [r0]
add r1, sp, #0x98
mov r2, #2
bl ov96_021EB5A0
add r0, r5, #0
add r0, #0xc0
ldr r0, [r0]
add r1, sp, #0x98
mov r2, #2
bl ov96_021EB5A0
ldr r1, [sp, #0x24]
ldr r0, [sp, #0x2c]
cmp r1, r0
bne _02203168
ldr r0, [sp, #0xc]
add r1, r4, r0
ldr r0, _02203198 ; =0x000005EC
str r1, [sp, #0x20]
ldrb r0, [r1, r0]
cmp r7, r0
beq _02203168
ldr r0, _0220319C ; =0x000008B1
bl PlaySE
ldr r1, [sp, #0x20]
ldr r0, _02203198 ; =0x000005EC
strb r7, [r1, r0]
b _02203168
_022030DE:
add r0, r5, #0
add r0, #0xbc
ldr r0, [r0]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
add r0, r5, #0
add r0, #0xb8
ldr r0, [r0]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
cmp r7, #3
bne _02203168
add r0, r5, #0
add r0, #0xfa
ldrb r0, [r0]
cmp r0, #0
bne _02203168
add r1, r5, #0
add r1, #0xfa
mov r0, #1
strb r0, [r1]
add r0, r5, #0
add r0, #0xb8
ldr r0, [r0]
bl ov96_021EB594
add r1, r0, #0
add r0, r5, #0
add r0, #0xc0
ldr r0, [r0]
bl ov96_021EB588
add r0, r5, #0
add r0, #0xc0
ldr r0, [r0]
mov r1, #3
bl ov96_021EB564
add r0, r5, #0
add r0, #0xc0
mov r1, #1
ldr r0, [r0]
add r2, r1, #0
bl ov96_021EB52C
add r0, r6, #0
mov r1, #3
bl _s32_div_f
ldr r1, [sp, #0x2c]
cmp r0, r1
bne _02203168
ldr r0, _022031A0 ; =0x000008B3
bl PlaySE
add r0, r6, #0
mov r1, #3
bl _s32_div_f
add r0, r4, r1
ldr r1, _022031A4 ; =0x000005EF
mov r2, #0
strb r2, [r0, r1]
sub r1, r1, #3
strb r2, [r0, r1]
_02203168:
ldr r0, [sp, #0x40]
add r6, r6, #1
add r0, r0, #2
str r0, [sp, #0x40]
ldr r0, [sp, #0x3c]
add r5, #0x48
add r0, r0, #2
str r0, [sp, #0x3c]
cmp r6, #0xc
bge _0220317E
b _02202E94
_0220317E:
ldr r1, [sp, #0x2c]
add r0, r4, #0
bl ov96_02203970
ldr r2, [sp, #0x54]
mov r1, #0x1e
ldr r0, [sp]
mul r1, r2
bl ov96_021E6454
add sp, #0x14c
pop {r4, r5, r6, r7, pc}
nop
_02203198: .word 0x000005EC
_0220319C: .word 0x000008B1
_022031A0: .word 0x000008B3
_022031A4: .word 0x000005EF
thumb_func_end ov96_02202958
thumb_func_start ov96_022031A8
ov96_022031A8: ; 0x022031A8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x68
add r5, r1, #0
mov r1, #0x12
lsl r1, r1, #4
add r0, r2, #0
add r1, r3, r1
add r2, sp, #4
add r3, sp, #0
bl ov96_0220404C
ldr r0, _02203290 ; =0x45800000
ldr r1, [sp, #4]
bl _fmul
bl _ffix
str r0, [sp, #0x5c]
ldr r0, _02203290 ; =0x45800000
ldr r1, [sp]
bl _fmul
bl _ffix
str r0, [sp, #0x64]
mov r0, #0
str r0, [sp, #0x60]
cmp r5, #0
beq _0220323C
add r3, sp, #0x5c
ldmia r3!, {r0, r1}
add r2, sp, #0x20
stmia r2!, {r0, r1}
ldr r0, [r3]
ldr r3, _02203294 ; =FX_SinCosTable_
str r0, [r2]
mov r0, #0x21
ldr r1, [sp, #0x20]
lsl r0, r0, #0xc
sub r1, r1, r0
str r1, [sp, #0x20]
ldr r1, [sp, #0x28]
sub r0, r1, r0
str r0, [sp, #0x28]
lsl r0, r5, #0xe
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
add r2, r2, #1
lsl r2, r2, #1
ldrsh r1, [r3, r1]
ldrsh r2, [r3, r2]
add r0, sp, #0x2c
bl MTX_RotY43_
add r0, sp, #0x20
add r1, sp, #0x2c
add r2, sp, #0x14
bl MTX_MultVec43
mov r0, #0x21
ldr r1, [sp, #0x14]
lsl r0, r0, #0xc
add r1, r1, r0
str r1, [sp, #0x14]
ldr r1, [sp, #0x1c]
add r3, sp, #0x14
add r0, r1, r0
str r0, [sp, #0x1c]
ldmia r3!, {r0, r1}
add r2, sp, #0x5c
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
_0220323C:
add r2, sp, #0x5c
ldr r3, [sp, #0x80]
ldmia r2!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r2]
add r1, r5, #1
str r0, [r3]
lsl r0, r5, #1
add r4, r5, r0
lsl r0, r1, #1
add r6, r1, r0
cmp r4, r6
bge _02203288
mov r0, #0xc
ldr r1, _02203298 ; =ov96_0221C98C
mul r0, r4
add r5, r1, r0
add r7, sp, #8
_02203260:
add r0, r5, #0
add r1, sp, #0x5c
add r2, r7, #0
bl VEC_Subtract
add r0, r7, #0
bl VEC_Mag
mov r1, #1
lsl r1, r1, #0xe
cmp r0, r1
bgt _02203280
lsl r0, r4, #0x18
add sp, #0x68
lsr r0, r0, #0x18
pop {r3, r4, r5, r6, r7, pc}
_02203280:
add r4, r4, #1
add r5, #0xc
cmp r4, r6
blt _02203260
_02203288:
mov r0, #0xc
add sp, #0x68
pop {r3, r4, r5, r6, r7, pc}
nop
_02203290: .word 0x45800000
_02203294: .word FX_SinCosTable_
_02203298: .word ov96_0221C98C
thumb_func_end ov96_022031A8
thumb_func_start ov96_0220329C
ov96_0220329C: ; 0x0220329C
push {r4, r5, r6, lr}
add r5, r1, #0
add r1, r2, #0
add r2, r3, #0
ldr r4, [sp, #0x10]
bl ov96_021E60D8
add r6, r0, #0
ldrb r0, [r6, #4]
lsl r0, r0, #2
ldr r0, [r5, r0]
bl _fflt
bl _f2d
ldr r3, _0220330C ; =0x40240000
mov r2, #0
bl _ddiv
bl _d2f
str r0, [r4, #4]
ldrb r0, [r6]
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x14]
bl _fflt
bl _f2d
ldr r3, _0220330C ; =0x40240000
mov r2, #0
bl _ddiv
bl _d2f
str r0, [r4, #8]
ldrb r0, [r6, #4]
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x28]
str r0, [r4, #0x10]
ldrb r0, [r6, #3]
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x3c]
bl _fflt
str r0, [r4, #0xc]
mov r0, #0
strh r0, [r4, #0x14]
strb r0, [r4, #0x18]
strb r0, [r4, #0x19]
mov r0, #0x78
strh r0, [r4, #0x16]
pop {r4, r5, r6, pc}
.balign 4, 0
_0220330C: .word 0x40240000
thumb_func_end ov96_0220329C
thumb_func_start ov96_02203310
ov96_02203310: ; 0x02203310
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
ldr r0, [r6]
ldr r2, _02203374 ; =ov96_0221C7B0
add r1, r6, #4
bl AddWindow
mov r2, #0
str r2, [sp]
ldr r0, [r6]
mov r1, #3
mov r3, #1
bl BG_FillCharDataRange
add r0, r6, #4
mov r1, #0
bl FillWindowPixelBuffer
add r5, r6, #0
ldr r4, _02203378 ; =ov96_0221C7EC
mov r7, #0
add r5, #0x14
_0220333C:
ldr r0, [r6]
add r1, r5, #0
add r2, r4, #0
bl AddWindow
add r0, r5, #0
mov r1, #0
bl FillWindowPixelBuffer
add r7, r7, #1
add r4, #8
add r5, #0x10
cmp r7, #3
blt _0220333C
mov r1, #0
str r1, [sp]
ldr r0, [r6]
add r2, r1, #0
mov r3, #1
bl BG_FillCharDataRange
mov r1, #0x1e
ldr r2, [r6, #0x44]
mov r0, #0
lsl r1, r1, #4
bl LoadFontPal0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02203374: .word ov96_0221C7B0
_02203378: .word ov96_0221C7EC
thumb_func_end ov96_02203310
thumb_func_start ov96_0220337C
ov96_0220337C: ; 0x0220337C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
add r7, r1, #0
add r0, r5, #4
mov r1, #0
bl FillWindowPixelBuffer
ldr r2, _022033F4 ; =0x00000135
ldr r3, [r5, #0x44]
mov r0, #1
mov r1, #0x1b
bl NewMsgDataFromNarc
add r4, r0, #0
ldr r0, [r5, #0x44]
bl MessageFormat_New
mov r1, #0
str r1, [sp]
mov r2, #1
str r2, [sp, #4]
add r2, r7, #0
mov r3, #3
add r6, r0, #0
bl BufferIntegerAsString
ldr r3, [r5, #0x44]
add r0, r6, #0
add r1, r4, #0
mov r2, #0xa4
bl ReadMsgData_ExpandPlaceholders
add r7, r0, #0
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _022033F8 ; =0x000F0E00
mov r1, #4
str r0, [sp, #8]
add r0, r5, #4
add r2, r7, #0
str r3, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r7, #0
bl String_Delete
add r0, r6, #0
bl MessageFormat_Delete
add r0, r4, #0
bl DestroyMsgData
add r0, r5, #4
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_022033F4: .word 0x00000135
_022033F8: .word 0x000F0E00
thumb_func_end ov96_0220337C
thumb_func_start ov96_022033FC
ov96_022033FC: ; 0x022033FC
push {r3, r4, r5, r6, r7, lr}
bl ov96_021E5DC4
mov r5, #0
mov r1, #0x43
add r2, r5, #0
mov r3, #2
mov r4, #1
lsl r1, r1, #4
_0220340E:
ldrb r6, [r0, r1]
cmp r6, #0
beq _02203422
mov r6, #0x43
lsl r6, r6, #4
ldrb r6, [r0, r6]
sub r7, r6, #1
mov r6, #0x43
lsl r6, r6, #4
strb r7, [r0, r6]
_02203422:
ldr r6, _02203460 ; =0x0000042E
ldrsh r6, [r0, r6]
cmp r6, #0x78
bge _02203434
ldr r6, _02203460 ; =0x0000042E
ldrsh r6, [r0, r6]
add r7, r6, #1
ldr r6, _02203460 ; =0x0000042E
strh r7, [r0, r6]
_02203434:
mov r6, #0x43
lsl r6, r6, #4
ldrb r6, [r0, r6]
cmp r6, #0
beq _02203444
ldr r6, _02203464 ; =0x00000431
strb r4, [r0, r6]
b _02203454
_02203444:
ldr r6, _02203460 ; =0x0000042E
ldrsh r6, [r0, r6]
cmp r6, #0x64
ldr r6, _02203464 ; =0x00000431
bgt _02203452
strb r3, [r0, r6]
b _02203454
_02203452:
strb r2, [r0, r6]
_02203454:
add r5, r5, #1
add r0, #0x20
cmp r5, #0xc
blt _0220340E
pop {r3, r4, r5, r6, r7, pc}
nop
_02203460: .word 0x0000042E
_02203464: .word 0x00000431
thumb_func_end ov96_022033FC
thumb_func_start ov96_02203468
ov96_02203468: ; 0x02203468
push {r4, r5, r6, r7, lr}
sub sp, #0xc
bl ov96_021E5DC4
add r4, r0, #0
mov r0, #0
add r5, r4, #0
str r5, [sp]
add r5, #0xc8
add r7, r4, #0
str r0, [sp, #8]
str r5, [sp]
add r7, #0xd4
add r6, r0, #0
_02203484:
mov r0, #0
str r0, [sp, #4]
add r0, r4, #0
add r0, #0xc4
ldr r0, [r0]
cmp r0, #1
bne _022034A2
mov r0, #1
ldr r3, [sp]
lsl r0, r0, #0xc
add r1, r7, #0
add r2, r5, #0
bl VEC_MultAdd
b _022034CC
_022034A2:
cmp r0, #3
bne _022034CC
add r0, r4, #0
add r0, #0xf8
ldrb r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0xf8
strb r1, [r0]
add r0, r4, #0
add r0, #0xf8
ldrb r0, [r0]
cmp r0, #8
blo _022034CC
add r1, r4, #0
add r1, #0xf8
mov r0, #0
strb r0, [r1]
add r1, r4, #0
add r1, #0xc4
str r0, [r1]
_022034CC:
add r0, r4, #0
add r0, #0xc8
ldr r1, [r0]
mov r0, #1
lsl r0, r0, #0xc
cmp r1, r0
blt _022034F4
lsl r0, r0, #6
cmp r1, r0
bgt _022034F4
add r0, r4, #0
add r0, #0xd0
ldr r1, [r0]
mov r0, #1
lsl r0, r0, #0xc
cmp r1, r0
blt _022034F4
lsl r0, r0, #6
cmp r1, r0
ble _022034F8
_022034F4:
mov r0, #1
str r0, [sp, #4]
_022034F8:
ldr r0, [sp, #4]
cmp r0, #0
beq _02203528
add r0, r4, #0
add r0, #0xc4
str r6, [r0]
add r0, r4, #0
add r0, #0xd4
str r6, [r0]
add r0, r4, #0
add r0, #0xdc
str r6, [r0]
add r0, r4, #0
add r0, #0xd8
str r6, [r0]
add r0, r4, #0
add r0, #0xe0
str r6, [r0]
add r0, r4, #0
add r0, #0xe8
str r6, [r0]
add r0, r4, #0
add r0, #0xe4
str r6, [r0]
_02203528:
ldr r0, [sp]
add r4, #0x48
add r0, #0x48
str r0, [sp]
ldr r0, [sp, #8]
add r5, #0x48
add r0, r0, #1
add r7, #0x48
str r0, [sp, #8]
cmp r0, #0xc
blt _02203484
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02203468
thumb_func_start ov96_02203544
ov96_02203544: ; 0x02203544
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #0x20]
ldr r0, _02203730 ; =ov96_0221C98C
str r1, [sp, #8]
add r4, r1, #0
str r0, [sp, #0x18]
_02203556:
ldr r5, [sp, #8]
mov r0, #0
ldr r1, _02203734 ; =0x00000433
str r0, [sp, #0x1c]
strb r0, [r4, r1]
add r0, r5, #0
str r0, [sp, #0x14]
add r0, #0xc8
str r0, [sp, #0x14]
add r0, r5, #0
str r0, [sp, #0x10]
add r0, #0xd4
str r0, [sp, #0x10]
ldr r0, [sp, #0x20]
mov r1, #3
add r6, r5, #0
bl _s32_div_f
str r0, [sp, #0xc]
ldr r0, [sp, #0x20]
mov r1, #3
bl _s32_div_f
ldr r0, [sp, #0xc]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x24]
lsl r0, r1, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x28]
_02203592:
add r0, r5, #0
add r0, #0xc4
ldr r0, [r0]
cmp r0, #1
bne _022035C4
ldr r0, [sp, #0x1c]
mov r1, #3
bl _s32_div_f
add r7, r0, #0
ldr r0, [sp, #0xc]
cmp r7, r0
beq _022035C4
ldr r0, [sp, #0x18]
ldr r1, [sp, #0x14]
add r2, sp, #0x2c
bl VEC_Subtract
add r0, sp, #0x2c
bl VEC_Mag
mov r1, #3
lsl r1, r1, #0xc
cmp r0, r1
blt _022035C6
_022035C4:
b _022036FA
_022035C6:
add r1, r5, #0
add r1, #0xc4
mov r0, #3
str r0, [r1]
ldr r0, [sp, #0x1c]
mov r1, #3
bl _s32_div_f
add r2, r1, #0
mov r0, #1
str r0, [sp]
lsl r1, r7, #0x18
lsl r2, r2, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #3
bl ov96_021E8228
ldr r0, _02203738 ; =0x0000042C
ldrh r0, [r6, r0]
add r1, r0, #1
ldr r0, _02203738 ; =0x0000042C
strh r1, [r6, r0]
ldrh r1, [r6, r0]
sub r0, #0x45
cmp r1, r0
bls _02203606
ldr r1, _0220373C ; =0x000003E7
add r0, r1, #0
add r0, #0x45
strh r1, [r6, r0]
_02203606:
add r1, r5, #0
add r1, #0xfb
mov r0, #1
strb r0, [r1]
add r1, r0, #0
ldr r0, _02203734 ; =0x00000433
strb r1, [r4, r0]
add r0, r5, #0
add r0, #0xfe
ldrh r0, [r0]
cmp r0, #3
bhi _02203644
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0220362A: ; jump table
.short _02203632 - _0220362A - 2 ; case 0
.short _02203638 - _0220362A - 2 ; case 1
.short _0220363C - _0220362A - 2 ; case 2
.short _02203640 - _0220362A - 2 ; case 3
_02203632:
mov r7, #0xfe
lsl r7, r7, #0x16
b _0220364C
_02203638:
ldr r7, _02203740 ; =0x41A00000
b _0220364C
_0220363C:
ldr r7, _02203744 ; =0x42480000
b _0220364C
_02203640:
ldr r7, _02203748 ; =0x42C80000
b _0220364C
_02203644:
bl GF_AssertFail
mov r7, #0xfe
lsl r7, r7, #0x16
_0220364C:
add r1, r5, #0
add r1, #0xfe
mov r0, #0
strh r0, [r1]
add r1, r5, #0
add r1, #0xfc
strh r0, [r1]
ldr r0, [sp, #0x10]
bl VEC_Mag
asr r1, r0, #0xb
lsr r1, r1, #0x14
add r1, r0, r1
asr r0, r1, #0xc
bl _fflt
add r1, r7, #0
bl _fmul
mov r1, #0x42
lsl r1, r1, #4
ldr r1, [r6, r1]
bl _fmul
add r1, r0, #0
ldr r0, _0220374C ; =0x00000424
ldr r0, [r4, r0]
bl _fmul
bl _ffix
add r7, r0, #0
bpl _02203692
bl GF_AssertFail
_02203692:
ldr r0, _02203750 ; =0x0000042E
ldrsh r0, [r4, r0]
sub r1, r0, r7
ldr r0, _02203750 ; =0x0000042E
sub r1, #0x1e
strh r1, [r4, r0]
ldrsh r0, [r4, r0]
cmp r0, #0
bge _022036AA
ldr r0, _02203750 ; =0x0000042E
mov r1, #0
strh r1, [r4, r0]
_022036AA:
ldr r0, _02203750 ; =0x0000042E
ldrsh r1, [r4, r0]
mov r0, #0x78
sub r0, r0, r1
mov r1, #0x43
lsl r1, r1, #4
ldrb r1, [r4, r1]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r1, #0
bne _022036DC
cmp r0, #0x28
bls _022036FA
mov r1, #0x43
lsl r1, r1, #4
strb r0, [r4, r1]
mov r0, #1
str r0, [sp]
ldr r0, [sp, #4]
ldr r1, [sp, #0x24]
ldr r2, [sp, #0x28]
mov r3, #1
bl ov96_021E8228
b _022036FA
_022036DC:
mov r1, #0x43
lsl r1, r1, #4
ldrb r1, [r4, r1]
ldr r2, [sp, #0x28]
mov r3, #1
add r1, r1, r0
mov r0, #0x43
lsl r0, r0, #4
strb r1, [r4, r0]
mov r0, #1
str r0, [sp]
ldr r0, [sp, #4]
ldr r1, [sp, #0x24]
bl ov96_021E8228
_022036FA:
ldr r0, [sp, #0x14]
add r5, #0x48
add r0, #0x48
str r0, [sp, #0x14]
ldr r0, [sp, #0x10]
add r6, #0x20
add r0, #0x48
str r0, [sp, #0x10]
ldr r0, [sp, #0x1c]
add r0, r0, #1
str r0, [sp, #0x1c]
cmp r0, #0xc
bge _02203716
b _02203592
_02203716:
ldr r0, [sp, #0x18]
add r4, #0x20
add r0, #0xc
str r0, [sp, #0x18]
ldr r0, [sp, #0x20]
add r0, r0, #1
str r0, [sp, #0x20]
cmp r0, #0xc
bge _0220372A
b _02203556
_0220372A:
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
nop
_02203730: .word ov96_0221C98C
_02203734: .word 0x00000433
_02203738: .word 0x0000042C
_0220373C: .word 0x000003E7
_02203740: .word 0x41A00000
_02203744: .word 0x42480000
_02203748: .word 0x42C80000
_0220374C: .word 0x00000424
_02203750: .word 0x0000042E
thumb_func_end ov96_02203544
thumb_func_start ov96_02203754
ov96_02203754: ; 0x02203754
push {r4, r5, r6, r7, lr}
sub sp, #0x34
mov r1, #0
str r0, [sp]
add r0, r1, #0
add r2, sp, #0x28
str r0, [sp, #4]
_02203762:
ldr r0, [sp, #4]
add r1, r1, #1
strb r0, [r2]
add r2, r2, #1
cmp r1, #0xc
blt _02203762
ldr r0, [sp]
str r0, [sp, #0x10]
str r0, [sp, #0xc]
add r0, #0xc8
str r0, [sp, #0xc]
add r0, sp, #0x28
str r0, [sp, #8]
ldr r0, [sp, #0xc]
str r0, [sp, #0x14]
ldr r0, [sp, #8]
str r0, [sp, #0x18]
_02203784:
ldr r0, [sp, #0x10]
add r0, #0xc4
ldr r0, [r0]
cmp r0, #1
beq _02203792
cmp r0, #2
bne _022037DC
_02203792:
ldr r7, [sp]
ldr r6, [sp, #0x14]
ldr r5, [sp, #0x18]
mov r4, #0
_0220379A:
ldr r0, [sp, #4]
cmp r0, r4
beq _022037D0
add r0, r7, #0
add r0, #0xc4
ldr r0, [r0]
cmp r0, #1
beq _022037AE
cmp r0, #2
bne _022037D0
_022037AE:
ldr r0, [sp, #0xc]
add r1, r6, #0
add r2, sp, #0x1c
bl VEC_Subtract
add r0, sp, #0x1c
bl VEC_Mag
mov r1, #1
lsl r1, r1, #0xe
cmp r0, r1
bge _022037D0
ldr r0, [sp, #8]
mov r1, #1
strb r1, [r0]
add r0, r1, #0
strb r0, [r5]
_022037D0:
add r4, r4, #1
add r7, #0x48
add r6, #0x48
add r5, r5, #1
cmp r4, #0xc
blt _0220379A
_022037DC:
ldr r0, [sp, #0x10]
add r0, #0x48
str r0, [sp, #0x10]
ldr r0, [sp, #0xc]
add r0, #0x48
str r0, [sp, #0xc]
ldr r0, [sp, #8]
add r0, r0, #1
str r0, [sp, #8]
ldr r0, [sp, #4]
add r0, r0, #1
str r0, [sp, #4]
cmp r0, #0xc
blt _02203784
mov r3, #0
add r2, sp, #0x28
mov r1, #3
add r0, r3, #0
_02203800:
ldrb r4, [r2]
cmp r4, #0
beq _02203818
ldr r4, [sp]
add r4, #0xc4
str r1, [r4]
ldr r4, [sp]
add r4, #0xfe
strh r0, [r4]
ldr r4, [sp]
add r4, #0xfc
strh r0, [r4]
_02203818:
ldr r4, [sp]
add r3, r3, #1
add r4, #0x48
add r2, r2, #1
str r4, [sp]
cmp r3, #0xc
blt _02203800
add sp, #0x34
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02203754
thumb_func_start ov96_0220382C
ov96_0220382C: ; 0x0220382C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r0, [sp, #0x10]
add r0, r1, #0
str r1, [sp, #0x14]
bl ov96_021E5F24
lsl r0, r0, #0x18
ldr r5, [sp, #0x10]
lsr r0, r0, #0x18
mov r7, #0
add r4, r0, #1
add r5, #0x14
_02203846:
lsr r3, r4, #0x1f
lsl r2, r4, #0x1e
sub r2, r2, r3
mov r1, #0x1e
ror r2, r1
add r1, r3, r2
lsl r1, r1, #0x18
ldr r0, [sp, #0x14]
lsr r1, r1, #0x18
bl ov96_021E5F34
ldr r1, [sp, #0x10]
ldr r1, [r1, #0x44]
bl PlayerProfile_GetPlayerName_NewString
add r6, r0, #0
mov r0, #0
str r0, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _0220389C ; =0x000F0E00
mov r1, #0
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
add r0, r5, #0
add r2, r6, #0
add r3, r1, #0
bl AddTextPrinterParameterizedWithColor
add r0, r6, #0
bl String_Delete
add r0, r5, #0
bl CopyWindowToVram
add r7, r7, #1
add r4, r4, #1
add r5, #0x10
cmp r7, #3
blt _02203846
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0220389C: .word 0x000F0E00
thumb_func_end ov96_0220382C
thumb_func_start ov96_022038A0
ov96_022038A0: ; 0x022038A0
push {r3, r4, r5, lr}
add r5, r0, #0
lsl r0, r1, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
add r1, r0, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r5, #0x50]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r5, #0x54]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
pop {r3, r4, r5, pc}
thumb_func_end ov96_022038A0
thumb_func_start ov96_022038D4
ov96_022038D4: ; 0x022038D4
push {r4, r5, r6, lr}
add r4, r0, #0
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
add r5, r0, #0
add r0, r4, #0
bl ov96_021E5DC4
add r6, r0, #0
add r0, r4, #0
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x17
ldrh r1, [r5, r0]
ldr r0, _02203920 ; =0x000003FF
and r1, r0
lsl r1, r1, #0x10
lsr r5, r1, #0x10
add r1, r0, #0
sub r1, #0x18
cmp r5, r1
bls _0220390C
add r5, r0, #0
sub r5, #0x18
_0220390C:
add r0, r4, #0
add r1, r5, #0
bl ov96_021E8318
add r0, r6, #0
add r1, r5, #0
bl ov96_0220337C
pop {r4, r5, r6, pc}
nop
_02203920: .word 0x000003FF
thumb_func_end ov96_022038D4
thumb_func_start ov96_02203924
ov96_02203924: ; 0x02203924
push {r4, r5}
ldrh r2, [r0]
ldr r3, [r1, #4]
lsl r2, r2, #0x18
lsr r5, r2, #0x18
ldr r2, [r0, #4]
cmp r2, r3
ble _0220393A
mov r2, #0
mvn r2, r2
b _02203966
_0220393A:
cmp r2, r3
bge _02203942
mov r2, #1
b _02203966
_02203942:
ldr r4, _0220396C ; =ov96_0221C95C
mov r2, #0xc
add r3, r5, #0
mul r3, r2
ldrh r1, [r1, #2]
add r3, r4, r3
ldrh r0, [r0, #2]
ldrb r1, [r3, r1]
ldrb r0, [r3, r0]
cmp r0, r1
bhs _0220395C
sub r2, #0xd
b _02203966
_0220395C:
cmp r0, r1
bls _02203964
mov r2, #1
b _02203966
_02203964:
mov r2, #0
_02203966:
add r0, r2, #0
pop {r4, r5}
bx lr
.balign 4, 0
_0220396C: .word ov96_0221C95C
thumb_func_end ov96_02203924
thumb_func_start ov96_02203970
ov96_02203970: ; 0x02203970
push {r4, r5, r6, r7, lr}
sub sp, #0x64
add r5, r0, #0
add r7, r1, #0
mov r4, #0
_0220397A:
mov r0, #0x48
add r6, r4, #0
mul r6, r0
add r0, r5, r6
add r0, #0xbc
ldr r0, [r0]
bl ov96_021EB594
add r3, r5, r6
add r3, #0xf9
ldrb r3, [r3]
lsl r1, r4, #3
add r2, sp, #4
add r2, r2, r1
strh r3, [r2, #2]
ldr r0, [r0, #4]
str r0, [r2, #4]
add r0, sp, #4
strh r7, [r0, r1]
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #0xc
blo _0220397A
ldr r0, _022039F8 ; =0x00000598
ldr r3, _022039FC ; =ov96_02203924
ldr r0, [r5, r0]
mov r1, #0xc
str r0, [sp]
add r0, sp, #4
mov r2, #8
bl MATH_QSort
mov r4, #0
add r7, sp, #4
_022039C0:
lsl r0, r4, #3
add r0, r7, r0
ldrh r0, [r0, #2]
lsl r0, r0, #0x18
lsr r1, r0, #0x18
add r6, r1, #0
mov r0, #0x48
mul r6, r0
add r0, r5, r6
add r0, #0xb8
add r1, r4, #0
ldr r0, [r0]
add r1, #0x14
bl ov96_021EB630
add r0, r5, r6
add r0, #0xc0
ldr r0, [r0]
add r1, r4, #5
bl ov96_021EB630
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #0xc
blo _022039C0
add sp, #0x64
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_022039F8: .word 0x00000598
_022039FC: .word ov96_02203924
thumb_func_end ov96_02203970
thumb_func_start ov96_02203A00
ov96_02203A00: ; 0x02203A00
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
mov r1, #0x74
add r5, r0, #0
add r7, r2, #0
bl AllocFromHeap
add r4, r0, #0
mov r1, #0
mov r2, #0x74
bl MI_CpuFill8
str r5, [r4]
str r6, [r4, #8]
add r0, r4, #0
str r7, [r4, #4]
bl ov96_02203FBC
add r0, r4, #0
bl ov96_02203FFC
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02203A00
thumb_func_start ov96_02203A30
ov96_02203A30: ; 0x02203A30
push {r4, r5, r6, lr}
add r6, r0, #0
mov r4, #0
add r5, r6, #0
_02203A38:
ldr r0, [r5, #0x24]
bl FreeToHeap
ldr r0, [r5, #0x28]
bl FreeToHeap
add r4, r4, #1
add r5, #8
cmp r4, #3
blt _02203A38
ldr r0, [r6, #0x1c]
bl FreeToHeap
add r0, r6, #0
add r0, #0xc
bl RemoveWindow
add r0, r6, #0
bl FreeToHeap
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_02203A30
thumb_func_start ov96_02203A64
ov96_02203A64: ; 0x02203A64
push {r4, r5, lr}
sub sp, #0x1c
add r5, r0, #0
add r4, r1, #0
mov r1, #0
mov r0, #2
str r1, [sp]
lsl r0, r0, #0xc
str r0, [sp, #4]
str r1, [sp, #8]
ldr r0, [r5]
mov r1, #4
str r0, [sp, #0xc]
ldr r2, [r5, #8]
mov r0, #0xdb
mov r3, #7
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r5]
mov r1, #5
str r0, [sp, #0xc]
ldr r2, [r5, #8]
mov r0, #0xdb
mov r3, #6
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r5]
mov r1, #6
str r0, [sp, #0xc]
ldr r2, [r5, #8]
mov r0, #0xdb
mov r3, #7
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r5]
mov r1, #7
str r0, [sp, #0xc]
ldr r2, [r5, #8]
mov r0, #0xdb
mov r3, #6
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r5]
mov r1, #8
str r0, [sp, #0xc]
ldr r2, [r5, #8]
mov r0, #0xdb
mov r3, #5
bl GfGfxLoader_LoadScrnData
ldr r0, [r5]
add r3, r5, #0
str r0, [sp]
mov r0, #0xdb
mov r1, #9
mov r2, #0
add r3, #0x20
bl GfGfxLoader_GetScrnData
str r0, [r5, #0x1c]
mov r0, #0x80
str r0, [sp]
ldr r0, [r5]
mov r1, #3
str r0, [sp, #4]
mov r0, #0xdb
mov r2, #4
mov r3, #0
bl GfGfxLoader_GXLoadPal
mov r0, #4
str r0, [sp]
str r0, [sp, #4]
ldr r0, [r5, #0x20]
mov r1, #5
add r0, #0xc
str r0, [sp, #8]
lsl r0, r4, #0x1a
lsr r0, r0, #0x18
str r0, [sp, #0xc]
mov r0, #0x10
str r0, [sp, #0x10]
mov r0, #0x14
str r0, [sp, #0x14]
str r0, [sp, #0x18]
ldr r0, [r5, #8]
mov r2, #0
mov r3, #0x12
bl CopyRectToBgTilemapRect
ldr r0, [r5, #8]
mov r1, #5
bl ScheduleBgTilemapBufferTransfer
add sp, #0x1c
pop {r4, r5, pc}
thumb_func_end ov96_02203A64
thumb_func_start ov96_02203B44
ov96_02203B44: ; 0x02203B44
push {r4, lr}
sub sp, #8
add r4, r1, #0
mov r0, #2
str r0, [sp]
add r0, r4, #0
mov r1, #0xdb
mov r2, #0xd
mov r3, #0x65
bl ov96_021EB2BC
mov r0, #2
str r0, [sp]
mov r0, #4
str r0, [sp, #4]
add r0, r4, #0
mov r1, #0xdb
mov r2, #0xa
mov r3, #0x65
bl ov96_021EB2F4
add r0, r4, #0
mov r1, #0xdb
mov r2, #0xc
mov r3, #0x65
bl ov96_021EB334
add r0, r4, #0
mov r1, #0xdb
mov r2, #0xb
mov r3, #0x65
bl ov96_021EB36C
add sp, #8
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02203B44
thumb_func_start ov96_02203B8C
ov96_02203B8C: ; 0x02203B8C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
str r0, [sp, #4]
add r5, r1, #0
str r2, [sp, #8]
mov r4, #0
mov r6, #5
mov r7, #3
_02203B9C:
add r0, r5, #0
add r1, r7, #0
mov r2, #2
mov r3, #0x65
str r6, [sp]
bl ov96_021EB408
add r4, r4, #1
cmp r4, #3
blt _02203B9C
ldr r1, [sp, #4]
ldr r2, [sp, #8]
add r0, r5, #0
bl ov96_02203E30
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02203B8C
thumb_func_start ov96_02203BC0
ov96_02203BC0: ; 0x02203BC0
lsl r1, r1, #2
add r0, r0, r1
ldr r3, _02203BCC ; =ov96_021EB52C
ldr r0, [r0, #0x60]
mov r1, #1
bx r3
.balign 4, 0
_02203BCC: .word ov96_021EB52C
thumb_func_end ov96_02203BC0
thumb_func_start ov96_02203BD0
ov96_02203BD0: ; 0x02203BD0
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r6, r1, #0
add r5, r0, #0
add r0, r6, #0
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #3]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0]
mov r0, #0x64
mul r0, r4
sub r0, r6, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
mov r1, #0xa
bl _u32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #4]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0, #1]
add r0, r6, #0
mov r1, #0xa
bl _s32_div_f
lsl r0, r1, #0x10
lsr r4, r0, #0x10
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #5]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0, #2]
mov r4, #0
mov r6, #4
mov r7, #8
_02203C5E:
str r6, [sp]
str r7, [sp, #4]
ldr r0, [r5, #0x20]
lsl r2, r4, #2
add r0, #0xc
str r0, [sp, #8]
add r0, sp, #0x1c
add r0, #3
ldrb r0, [r0, r4]
add r2, #0x13
lsl r2, r2, #0x18
str r0, [sp, #0xc]
add r0, sp, #0x1c
ldrb r0, [r0, r4]
mov r1, #5
lsr r2, r2, #0x18
str r0, [sp, #0x10]
mov r0, #0x14
str r0, [sp, #0x14]
str r0, [sp, #0x18]
ldr r0, [r5, #8]
mov r3, #0x10
bl CopyRectToBgTilemapRect
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _02203C5E
ldr r0, [r5, #8]
mov r1, #5
bl ScheduleBgTilemapBufferTransfer
add sp, #0x24
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_02203BD0
thumb_func_start ov96_02203CA4
ov96_02203CA4: ; 0x02203CA4
push {r4, r5, r6, lr}
add r4, r1, #0
add r5, r0, #0
add r6, r2, #0
cmp r4, #3
blo _02203CB4
bl GF_AssertFail
_02203CB4:
lsl r0, r4, #2
add r0, r5, r0
ldr r0, [r0, #0x54]
add r1, r6, r4
bl ov96_021EB570
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_02203CA4
thumb_func_start ov96_02203CC4
ov96_02203CC4: ; 0x02203CC4
lsl r1, r1, #2
add r0, r0, r1
ldr r3, _02203CD0 ; =ov96_021EB57C
ldr r0, [r0, #0x54]
bx r3
nop
_02203CD0: .word ov96_021EB57C
thumb_func_end ov96_02203CC4
thumb_func_start ov96_02203CD4
ov96_02203CD4: ; 0x02203CD4
add r1, r0, #0
mov r2, #1
add r1, #0x70
strb r2, [r1]
mov r1, #0
add r0, #0x71
strb r1, [r0]
bx lr
thumb_func_end ov96_02203CD4
thumb_func_start ov96_02203CE4
ov96_02203CE4: ; 0x02203CE4
push {r3, r4, r5, lr}
add r5, r0, #0
add r0, #0x70
ldrb r0, [r0]
cmp r0, #0
beq _02203D4C
add r0, r5, #0
add r0, #0x71
ldrb r0, [r0]
add r1, r0, #1
add r0, r5, #0
add r0, #0x71
strb r1, [r0]
add r0, r5, #0
add r0, #0x71
ldrb r0, [r0]
mov r1, #0x1f
lsr r3, r0, #0x1f
lsl r2, r0, #0x1f
sub r2, r2, r3
ror r2, r1
add r1, r3, r2
lsl r1, r1, #3
neg r4, r1
cmp r0, #0xa
blo _02203D26
add r0, r5, #0
mov r4, #0
add r0, #0x70
strb r4, [r0]
add r0, r5, #0
add r0, #0x71
strb r4, [r0]
_02203D26:
ldr r0, [r5, #8]
mov r1, #4
mov r2, #3
add r3, r4, #0
bl ScheduleSetBgPosText
ldr r0, [r5, #8]
mov r1, #5
mov r2, #3
add r3, r4, #0
bl ScheduleSetBgPosText
ldr r0, [r5, #8]
mov r1, #6
mov r2, #3
add r3, r4, #0
bl ScheduleSetBgPosText
pop {r3, r4, r5, pc}
_02203D4C:
ldr r0, [r5, #8]
mov r1, #4
mov r2, #3
mov r3, #0
bl ScheduleSetBgPosText
ldr r0, [r5, #8]
mov r1, #5
mov r2, #3
mov r3, #0
bl ScheduleSetBgPosText
ldr r0, [r5, #8]
mov r1, #6
mov r2, #3
mov r3, #0
bl ScheduleSetBgPosText
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_02203CE4
thumb_func_start ov96_02203D74
ov96_02203D74: ; 0x02203D74
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r7, r0, #0
add r5, sp, #0x18
str r1, [sp, #0xc]
str r2, [sp, #0x10]
mov r6, #0
add r4, r7, #0
str r5, [sp, #0x14]
_02203D86:
ldr r0, [r4, #0x54]
bl ov96_021EB594
ldr r1, [r0]
ldr r3, [sp, #0xc]
asr r2, r1, #0xb
lsr r2, r2, #0x14
add r2, r1, r2
asr r1, r2, #0xc
strh r1, [r5]
ldr r1, [r0, #4]
ldr r2, [sp, #0x10]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
strh r0, [r5, #2]
mov r0, #2
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [sp, #0x14]
mov r1, #0
str r0, [sp, #8]
ldr r0, [r7, #4]
bl ov96_021E634C
add r6, r6, #1
add r4, r4, #4
add r5, r5, #4
cmp r6, #3
blt _02203D86
add sp, #0x24
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02203D74
thumb_func_start ov96_02203DCC
ov96_02203DCC: ; 0x02203DCC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
add r6, r0, #0
mov r0, #0
add r5, r1, #0
str r0, [sp, #0xc]
add r4, r6, #0
add r7, sp, #0x10
_02203DDC:
ldrb r0, [r5, #6]
mov r3, #0
str r0, [sp]
ldrh r0, [r5, #2]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
ldr r0, [r5, #0xc]
str r0, [sp, #8]
ldrh r1, [r5]
ldrb r2, [r5, #7]
add r0, sp, #0x10
bl GetMonSpriteCharAndPlttNarcIdsEx
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
ldrh r0, [r5]
str r0, [sp, #8]
ldrh r0, [r7]
ldrh r1, [r7, #2]
ldr r2, [r6]
ldr r3, [r5, #0xc]
bl sub_0201457C
str r0, [r4, #0x24]
ldrh r0, [r7]
ldrh r1, [r7, #4]
ldr r2, [r6]
bl sub_02014450
str r0, [r4, #0x28]
ldr r0, [sp, #0xc]
add r5, #0x10
add r0, r0, #1
add r4, #8
str r0, [sp, #0xc]
cmp r0, #3
blt _02203DDC
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02203DCC
thumb_func_start ov96_02203E30
ov96_02203E30: ; 0x02203E30
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r7, r0, #0
str r1, [sp, #4]
str r2, [sp, #8]
mov r4, #0
mov r5, #2
mov r6, #3
_02203E40:
add r0, r7, #0
add r1, r6, #0
add r2, r5, #0
mov r3, #0x65
str r5, [sp]
bl ov96_021EB408
add r4, r4, #1
cmp r4, #3
blt _02203E40
mov r0, #0x10
ldr r6, [sp, #8]
ldr r4, [sp, #4]
mov r5, #0
str r0, [sp, #0xc]
_02203E5E:
add r0, r7, #0
mov r1, #0x65
mov r2, #2
bl ov96_021EB4F4
str r0, [r4, #0x54]
mov r0, #0
str r0, [sp, #0x18]
ldr r0, [sp, #0xc]
mov r2, #0
lsl r0, r0, #0xc
str r0, [sp, #0x10]
ldr r0, [r6, #0xc]
str r0, [sp]
ldrh r3, [r6, #2]
ldrh r0, [r6]
ldrb r1, [r6, #7]
lsl r3, r3, #0x18
lsr r3, r3, #0x18
bl sub_020708D8
mov r1, #0x5e
lsl r1, r1, #2
add r0, r0, r1
lsl r0, r0, #0xc
str r0, [sp, #0x14]
ldr r0, [r4, #0x54]
add r1, sp, #0x10
bl ov96_021EB588
ldr r0, [r4, #0x54]
add r1, r5, #1
bl ov96_021EB564
mov r1, #1
ldr r0, [r4, #0x54]
add r2, r1, #0
bl ov96_021EB52C
mov r1, #0x13
ldr r0, [r4, #0x54]
sub r1, r1, r5
bl ov96_021EB630
add r0, r7, #0
mov r1, #0x65
mov r2, #5
bl ov96_021EB4F4
str r0, [r4, #0x60]
mov r1, #0
bl ov96_021EB564
mov r0, #1
ldr r1, [sp, #0x14]
lsl r0, r0, #0x10
sub r0, r1, r0
str r0, [sp, #0x14]
ldr r0, [r4, #0x60]
add r1, sp, #0x10
bl ov96_021EB588
ldr r0, [r4, #0x60]
mov r1, #4
bl ov96_021EB630
ldr r0, [sp, #0xc]
add r5, r5, #1
add r0, #0x32
add r6, #0x10
add r4, r4, #4
str r0, [sp, #0xc]
cmp r5, #3
blt _02203E5E
ldr r0, [sp, #4]
ldr r1, [sp, #8]
bl ov96_02203DCC
ldr r1, [sp, #4]
add r0, r7, #0
bl ov96_02203F50
ldr r0, [sp, #4]
bl ov96_02203F0C
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_02203E30
thumb_func_start ov96_02203F0C
ov96_02203F0C: ; 0x02203F0C
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
mov r4, #0
_02203F12:
lsl r0, r4, #3
add r5, r6, r0
mov r1, #0x32
ldr r0, [r5, #0x24]
lsl r1, r1, #6
bl DC_FlushRange
lsl r0, r4, #2
add r7, r6, r0
mov r2, #0x32
ldr r0, [r5, #0x24]
ldr r1, [r7, #0x3c]
lsl r2, r2, #6
bl GXS_LoadOBJ
ldr r0, [r5, #0x28]
mov r1, #0x20
bl DC_FlushRange
ldr r0, [r5, #0x28]
ldr r1, [r7, #0x48]
mov r2, #0x20
bl GXS_LoadOBJPltt
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _02203F12
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02203F0C
thumb_func_start ov96_02203F50
ov96_02203F50: ; 0x02203F50
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
mov r1, #0x65
mov r2, #0
add r5, r0, #0
bl ov96_021EB5EC
ldr r4, [r0]
add r0, r5, #0
mov r1, #0x65
mov r2, #1
bl ov96_021EB5EC
ldr r5, [r0]
add r0, r4, #0
bl sub_0200AF00
add r7, r0, #0
add r0, r5, #0
add r1, r7, #0
bl sub_0200B0F8
str r0, [sp]
mov r4, #0
_02203F80:
lsl r0, r4, #2
add r5, r6, r0
add r0, r7, #0
mov r1, #2
bl NNS_G2dGetImageLocation
mov r1, #0xd
lsl r1, r1, #8
add r2, r4, #0
mul r2, r1
mov r1, #3
lsl r1, r1, #8
add r1, r2, r1
add r0, r1, r0
str r0, [r5, #0x3c]
ldr r0, [sp]
mov r1, #2
bl NNS_G2dGetImagePaletteLocation
lsl r1, r4, #5
add r1, #0x20
add r0, r1, r0
str r0, [r5, #0x48]
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _02203F80
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02203F50
thumb_func_start ov96_02203FBC
ov96_02203FBC: ; 0x02203FBC
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
add r1, r4, #0
ldr r0, [r4, #8]
ldr r2, _02203FF8 ; =ov96_0221CA28
add r1, #0xc
bl AddWindow
mov r2, #0
str r2, [sp]
ldr r0, [r4, #8]
mov r1, #4
mov r3, #1
bl BG_FillCharDataRange
mov r1, #0x1e
ldr r2, [r4]
mov r0, #4
lsl r1, r1, #4
bl LoadFontPal0
add r4, #0xc
add r0, r4, #0
mov r1, #0
bl FillWindowPixelBuffer
add sp, #4
pop {r3, r4, pc}
nop
_02203FF8: .word ov96_0221CA28
thumb_func_end ov96_02203FBC
thumb_func_start ov96_02203FFC
ov96_02203FFC: ; 0x02203FFC
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
ldr r0, [r5, #4]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r1, r0, #0x18
ldr r0, [r5, #4]
bl ov96_021E5F34
ldr r1, [r5]
bl PlayerProfile_GetPlayerName_NewString
mov r1, #0
add r4, r0, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _02204048 ; =0x000F0E00
add r2, r4, #0
str r0, [sp, #8]
add r0, r5, #0
add r0, #0xc
add r3, r1, #0
str r1, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r4, #0
bl String_Delete
add r5, #0xc
add r0, r5, #0
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, pc}
nop
_02204048: .word 0x000F0E00
thumb_func_end ov96_02203FFC
thumb_func_start ov96_0220404C
ov96_0220404C: ; 0x0220404C
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r6, r1, #0
add r5, r2, #0
add r4, r3, #0
bl _fflt
str r0, [sp, #0x10]
add r0, r6, #0
bl _fflt
add r6, r0, #0
bl _f2d
add r3, r1, #0
add r2, r0, #0
ldr r1, _02204104 ; =0x40140000
mov r0, #0
bl _dmul
ldr r3, _02204108 ; =0x404A0000
mov r2, #0
bl _ddiv
add r2, r0, #0
add r3, r1, #0
ldr r0, _0220410C ; =0x9D89D89E
ldr r1, _02204110 ; =0x403689D8
bl _dadd
bl _d2f
add r7, r0, #0
ldr r0, [sp, #0x10]
bl _f2d
add r2, r0, #0
add r3, r1, #0
ldr r0, _02204114 ; =0xCCCCCCCD
ldr r1, _02204118 ; =0x3FC8CCCC
bl _dmul
str r0, [sp, #0x14]
add r0, r6, #0
str r1, [sp, #4]
bl _f2d
ldr r3, _0220411C ; =0x40200000
mov r2, #0
bl _ddiv
add r2, r0, #0
add r3, r1, #0
ldr r0, [sp, #0x14]
ldr r1, [sp, #4]
bl _dadd
ldr r3, _02204120 ; =0x402F0000
mov r2, #0
bl _dsub
ldr r3, _02204124 ; =0x40240000
mov r2, #0
bl _dsub
str r0, [sp, #0x18]
add r0, r6, #0
str r1, [sp, #0xc]
bl _f2d
ldr r3, _02204128 ; =0x40800000
mov r2, #0
bl _ddiv
add r2, r0, #0
add r3, r1, #0
ldr r0, _0220412C ; =0xF4DE9BD3
ldr r1, _02204130 ; =0x3FD937A6
bl _dadd
add r2, r0, #0
add r3, r1, #0
ldr r0, [sp, #0x18]
ldr r1, [sp, #0xc]
bl _ddiv
bl _d2f
str r7, [r4]
str r0, [r5]
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02204104: .word 0x40140000
_02204108: .word 0x404A0000
_0220410C: .word 0x9D89D89E
_02204110: .word 0x403689D8
_02204114: .word 0xCCCCCCCD
_02204118: .word 0x3FC8CCCC
_0220411C: .word 0x40200000
_02204120: .word 0x402F0000
_02204124: .word 0x40240000
_02204128: .word 0x40800000
_0220412C: .word 0xF4DE9BD3
_02204130: .word 0x3FD937A6
thumb_func_end ov96_0220404C
thumb_func_start ov96_02204134
ov96_02204134: ; 0x02204134
push {r4, r5, r6, r7, lr}
sub sp, #0x34
add r4, r1, #0
add r5, r0, #0
add r0, r4, #0
str r2, [sp]
add r6, r3, #0
bl _f2d
ldr r3, _022042E8 ; =0x404C8000
mov r2, #0
bl _dsub
str r0, [sp, #0x1c]
add r0, r4, #0
add r7, r1, #0
bl _f2d
ldr r3, _022042E8 ; =0x404C8000
mov r2, #0
bl _dsub
add r2, r0, #0
add r3, r1, #0
ldr r0, [sp, #0x1c]
add r1, r7, #0
bl _dmul
add r3, r1, #0
add r2, r0, #0
ldr r1, _022042EC ; =0x3FF00000
mov r0, #0
bl _dadd
add r3, r1, #0
add r2, r0, #0
ldr r1, _022042F0 ; =0x40100000
mov r0, #0
bl _ddiv
str r0, [sp, #0x20]
str r1, [sp, #0x18]
add r0, r4, #0
add r1, r4, #0
bl _fmul
add r1, r0, #0
add r0, r4, #0
bl _fmul
bl _f2d
ldr r3, _022042F4 ; =0x40BDB000
mov r2, #0
bl _ddiv
add r3, r1, #0
add r2, r0, #0
ldr r1, _022042F8 ; =0x40260000
mov r0, #0
bl _dadd
str r0, [sp, #0x24]
str r1, [sp, #0x10]
add r0, r4, #0
bl _f2d
add r3, r1, #0
add r2, r0, #0
ldr r1, _022042FC ; =0x40380000
mov r0, #0
bl _dsub
str r0, [sp, #0x28]
add r0, r4, #0
str r1, [sp, #8]
bl _f2d
add r3, r1, #0
add r2, r0, #0
ldr r1, _022042FC ; =0x40380000
mov r0, #0
bl _dsub
str r0, [sp, #0x2c]
add r0, r4, #0
add r7, r1, #0
bl _f2d
add r3, r1, #0
add r2, r0, #0
ldr r1, _022042FC ; =0x40380000
mov r0, #0
bl _dsub
add r2, r0, #0
add r3, r1, #0
ldr r0, [sp, #0x2c]
add r1, r7, #0
bl _dmul
add r2, r0, #0
add r3, r1, #0
ldr r0, [sp, #0x28]
ldr r1, [sp, #8]
bl _dmul
ldr r3, _02204300 ; =0x40B13000
mov r2, #0
bl _ddiv
add r2, r0, #0
add r3, r1, #0
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x10]
bl _dsub
ldr r3, _022042EC ; =0x3FF00000
mov r2, #0
bl _dsub
add r2, r0, #0
add r3, r1, #0
ldr r0, [sp, #0x20]
ldr r1, [sp, #0x18]
bl _dadd
bl _d2f
bl _f2d
ldr r3, _02204304 ; =0x40200000
mov r2, #0
bl _dmul
bl _d2f
add r4, r0, #0
bl _ffix
str r0, [r6]
add r0, r5, #0
bl _f2d
add r2, r0, #0
add r3, r1, #0
ldr r0, _02204308 ; =0x590B2164
ldr r1, _0220430C ; =0x3FD642C8
bl _dmul
add r3, r1, #0
add r2, r0, #0
ldr r1, _02204310 ; =0x40240000
mov r0, #0
bl _dadd
str r0, [sp, #0x30]
add r0, r4, #0
add r7, r1, #0
bl _f2d
ldr r3, _02204304 ; =0x40200000
mov r2, #0
bl _ddiv
ldr r3, _02204310 ; =0x40240000
mov r2, #0
bl _dsub
add r2, r0, #0
add r3, r1, #0
ldr r0, _02204314 ; =0x4A5294A5
ldr r1, _02204318 ; =0x3FE4A529
bl _dmul
add r6, r0, #0
add r0, r5, #0
add r4, r1, #0
bl _f2d
add r3, r1, #0
add r2, r0, #0
ldr r1, _0220431C ; =0x40500000
mov r0, #0
bl _dsub
add r2, r0, #0
add r3, r1, #0
add r0, r6, #0
add r1, r4, #0
bl _dmul
ldr r3, _0220431C ; =0x40500000
mov r2, #0
bl _ddiv
add r2, r0, #0
add r3, r1, #0
ldr r0, [sp, #0x30]
add r1, r7, #0
bl _dsub
bl _d2f
bl _f2d
ldr r3, _02204304 ; =0x40200000
mov r2, #0
bl _dmul
bl _d2f
bl _ffix
ldr r1, [sp]
str r0, [r1]
add sp, #0x34
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_022042E8: .word 0x404C8000
_022042EC: .word 0x3FF00000
_022042F0: .word 0x40100000
_022042F4: .word 0x40BDB000
_022042F8: .word 0x40260000
_022042FC: .word 0x40380000
_02204300: .word 0x40B13000
_02204304: .word 0x40200000
_02204308: .word 0x590B2164
_0220430C: .word 0x3FD642C8
_02204310: .word 0x40240000
_02204314: .word 0x4A5294A5
_02204318: .word 0x3FE4A529
_0220431C: .word 0x40500000
thumb_func_end ov96_02204134
thumb_func_start ov96_02204320
ov96_02204320: ; 0x02204320
push {r3, r4, r5, lr}
sub sp, #0x30
add r5, r0, #0
add r4, r1, #0
bl LCRandom
lsl r1, r5, #1
bl _s32_div_f
sub r1, r5, r1
mov r0, #0xb6
mul r0, r1
lsl r0, r0, #0x10
lsr r0, r0, #0x10
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
ldr r3, _02204360 ; =FX_SinCosTable_
add r2, r2, #1
lsl r2, r2, #1
ldrsh r1, [r3, r1]
ldrsh r2, [r3, r2]
add r0, sp, #0
bl MTX_RotY43_
add r0, r4, #0
add r1, sp, #0
add r2, r4, #0
bl MTX_MultVec43
add sp, #0x30
pop {r3, r4, r5, pc}
.balign 4, 0
_02204360: .word FX_SinCosTable_
thumb_func_end ov96_02204320
thumb_func_start ov96_02204364
ov96_02204364: ; 0x02204364
push {r3, r4, r5, lr}
add r5, r1, #0
mov r1, #0xcc
bl AllocFromHeap
add r4, r0, #0
mov r1, #0
mov r2, #0xcc
bl MI_CpuFill8
add r0, r4, #0
add r0, #0xc4
strb r5, [r0]
mov r0, #4
sub r1, r0, r5
add r0, r4, #0
add r0, #0xc9
strb r1, [r0]
add r0, r4, #0
add r0, #0xc9
ldrb r1, [r0]
add r0, r4, #0
add r0, #0xc8
strb r1, [r0]
add r0, r4, #0
mov r1, #0x28
add r0, #0xc7
strb r1, [r0]
add r0, r4, #0
add r0, #0xc7
ldrb r1, [r0]
add r0, r4, #0
add r0, #0xc6
strb r1, [r0]
add r0, r4, #0
pop {r3, r4, r5, pc}
thumb_func_end ov96_02204364
thumb_func_start ov96_022043AC
ov96_022043AC: ; 0x022043AC
lsl r1, r1, #2
str r2, [r0, r1]
add r0, r0, r1
str r3, [r0, #0x30]
bx lr
.balign 4, 0
thumb_func_end ov96_022043AC
thumb_func_start ov96_022043B8
ov96_022043B8: ; 0x022043B8
ldr r3, _022043BC ; =FreeToHeap
bx r3
.balign 4, 0
_022043BC: .word FreeToHeap
thumb_func_end ov96_022043B8
thumb_func_start ov96_022043C0
ov96_022043C0: ; 0x022043C0
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r0, #0xc9
ldrb r0, [r0]
add r7, r1, #0
mov r4, #0xc
cmp r0, #4
bne _022043D4
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_022043D4:
add r0, r5, #0
add r0, #0xc6
ldrb r0, [r0]
add r1, r0, #1
add r0, r5, #0
add r0, #0xc6
strb r1, [r0]
add r0, r5, #0
add r0, #0xc6
ldrb r1, [r0]
add r0, r5, #0
add r0, #0xc7
ldrb r0, [r0]
cmp r1, r0
blo _02204402
add r0, r5, #0
mov r1, #1
add r0, #0xc0
str r1, [r0]
add r0, r5, #0
mov r1, #0
add r0, #0xc6
strb r1, [r0]
_02204402:
add r0, r5, #0
add r0, #0xc0
ldr r0, [r0]
cmp r0, #0
beq _0220449A
add r0, r5, #0
add r1, r5, #0
add r0, #0xc8
add r1, #0xc5
ldrb r0, [r0]
ldrb r1, [r1]
add r6, r0, r1
add r1, r5, #0
add r1, #0xca
ldrb r2, [r1]
lsl r1, r6, #1
add r1, r6, r1
add r4, r2, r1
cmp r4, r0
bge _0220442E
bl GF_AssertFail
_0220442E:
lsl r0, r4, #2
add r1, r5, r0
ldr r1, [r1, #0x30]
ldr r1, [r1, #0xc]
cmp r1, #0
beq _0220443E
cmp r1, #2
bne _02204456
_0220443E:
ldr r0, [r5, r0]
ldrb r0, [r0, #0x19]
cmp r0, #1
beq _02204456
lsl r1, r6, #0x18
lsl r2, r4, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
lsr r2, r2, #0x18
add r3, r7, #0
bl ov96_022044A0
_02204456:
lsl r0, r4, #0x18
lsr r4, r0, #0x18
add r0, r5, #0
add r0, #0xc5
ldrb r0, [r0]
add r1, r0, #1
add r0, r5, #0
add r0, #0xc5
strb r1, [r0]
add r0, r5, #0
add r0, #0xc5
ldrb r1, [r0]
add r0, r5, #0
add r0, #0xc4
ldrb r0, [r0]
cmp r1, r0
blo _0220449A
add r0, r5, #0
mov r1, #0
add r0, #0xc5
strb r1, [r0]
add r0, r5, #0
add r0, #0xca
ldrb r0, [r0]
mov r1, #3
add r0, r0, #1
bl _s32_div_f
add r0, r5, #0
add r0, #0xca
strb r1, [r0]
mov r0, #0
add r5, #0xc0
str r0, [r5]
_0220449A:
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_022043C0
thumb_func_start ov96_022044A0
ov96_022044A0: ; 0x022044A0
push {r4, r5, r6, r7, lr}
sub sp, #0x94
str r1, [sp]
str r2, [sp, #4]
add r7, r0, #0
ldr r0, [sp, #4]
str r3, [sp, #8]
lsl r0, r0, #2
str r0, [sp, #0x14]
bl LCRandom
mov r1, #0x33
bl _s32_div_f
ldr r0, [sp, #0x14]
ldr r2, [r7, r0]
mov r0, #0x16
ldrsh r0, [r2, r0]
add r0, r0, r1
cmp r0, #0x78
bgt _02204564
ldr r0, [sp, #0x14]
add r0, r7, r0
ldr r0, [r0, #0x30]
add r1, r0, #0
add r1, #0x44
ldrh r1, [r1]
cmp r1, #4
bhs _02204564
ldr r1, [r0, #0xc]
cmp r1, #0
bne _0220450C
ldr r1, [sp, #4]
add r7, #0x30
lsl r2, r1, #2
mov r1, #1
add r0, #0x44
strh r1, [r0]
ldr r0, [r7, r2]
mov r1, #2
str r1, [r0, #0xc]
ldr r0, [sp, #4]
mov r1, #0xc
mul r1, r0
ldr r0, _02204718 ; =ov96_0221CA30
ldr r2, [r7, r2]
add r3, r0, r1
ldmia r3!, {r0, r1}
add r2, #0x10
stmia r2!, {r0, r1}
ldr r0, [r3]
add sp, #0x94
str r0, [r2]
pop {r4, r5, r6, r7, pc}
_0220450C:
cmp r1, #2
beq _02204514
bl GF_AssertFail
_02204514:
ldr r0, [sp, #0x14]
add r7, #0x30
ldr r1, [r7, r0]
add r0, r1, #0
add r0, #0x44
ldrh r0, [r0]
add r1, #0x44
add r0, r0, #1
strh r0, [r1]
ldr r0, [sp, #0x14]
ldr r1, [r7, r0]
add r0, r1, #0
add r0, #0x44
ldrh r0, [r0]
cmp r0, #1
bhi _0220453E
mov r0, #0
add r1, #0x46
strh r0, [r1]
add sp, #0x94
pop {r4, r5, r6, r7, pc}
_0220453E:
cmp r0, #2
bhi _0220454C
mov r0, #1
add r1, #0x46
strh r0, [r1]
add sp, #0x94
pop {r4, r5, r6, r7, pc}
_0220454C:
cmp r0, #3
bhi _0220455A
mov r0, #2
add r1, #0x46
strh r0, [r1]
add sp, #0x94
pop {r4, r5, r6, r7, pc}
_0220455A:
mov r0, #3
add r1, #0x46
strh r0, [r1]
add sp, #0x94
pop {r4, r5, r6, r7, pc}
_02204564:
mov r6, #0
add r4, r7, #0
add r5, r7, #0
_0220456A:
ldr r0, [r4]
str r0, [r5, #0x60]
add r0, r5, #0
add r0, #0x64
strh r6, [r0]
bl LCRandom
str r0, [sp, #0x18]
ldr r0, [r4]
mov r1, #0x14
ldrh r0, [r0, #0x14]
bl _s32_div_f
str r0, [sp, #0x1c]
ldr r0, [sp, #0x18]
mov r1, #0x15
bl _s32_div_f
ldr r0, [sp, #0x1c]
add r1, r0, r1
add r0, r5, #0
add r0, #0x66
strh r1, [r0]
ldr r0, [r4]
ldrb r0, [r0, #0x19]
cmp r0, #1
bne _022045AE
add r0, r5, #0
add r0, #0x66
ldrh r0, [r0]
add r1, r0, #1
add r0, r5, #0
add r0, #0x66
strh r1, [r0]
_022045AE:
ldr r1, [r4]
mov r0, #0x16
ldrsh r1, [r1, r0]
mov r0, #0x78
sub r0, r0, r1
mov r1, #0x14
bl _s32_div_f
add r1, r5, #0
add r1, #0x66
ldrh r1, [r1]
add r6, r6, #1
add r4, r4, #4
add r1, r1, r0
add r0, r5, #0
add r0, #0x66
add r5, #8
strh r1, [r0]
cmp r6, #0xc
blt _0220456A
add r0, r7, #0
mov r2, #0
add r0, #0x60
add r1, sp, #0x64
_022045DE:
add r2, r2, #1
stmia r1!, {r0}
add r0, #8
cmp r2, #0xc
blt _022045DE
ldr r0, [sp]
add r1, sp, #0x64
add r2, sp, #0x40
bl ov96_0220472C
add r4, r0, #0
bl LCRandom
add r1, r4, #0
bl _s32_div_f
lsl r2, r1, #0x18
add r1, sp, #0x28
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
ldr r1, [sp, #4]
lsr r2, r2, #0x16
add r4, r1, #0
add r1, sp, #0x40
ldr r1, [r1, r2]
mov r3, #0xc
ldrh r1, [r1, #4]
ldr r0, _02204718 ; =ov96_0221CA30
mul r4, r3
lsl r1, r1, #0x18
lsr r1, r1, #0x18
add r2, r1, #0
add r4, r0, r4
mul r2, r3
add r0, r0, r2
add r1, r4, #0
add r2, sp, #0x34
bl VEC_Subtract
add r0, sp, #0x34
add r1, r0, #0
bl VEC_Normalize
mov r0, #3
add r1, sp, #0x34
bl ov96_02204320
ldr r0, [sp, #4]
add r1, sp, #0x34
lsl r5, r0, #2
ldr r0, [r7, r5]
ldr r0, [r0, #0x10]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl ov96_02204320
bl LCRandom
add r6, r0, #0
ldr r0, [sp, #8]
bl _fflt
bl _f2d
ldr r3, _0220471C ; =0x40440000
mov r2, #0
bl _ddiv
str r1, [sp, #0x10]
str r0, [sp, #0x20]
ldr r1, [r7, r5]
mov r0, #0x16
ldrsh r0, [r1, r0]
bl _fflt
bl _f2d
ldr r3, _02204720 ; =0x40490000
mov r2, #0
bl _ddiv
str r0, [sp, #0x24]
add r5, r1, #0
add r0, r6, #0
mov r1, #0x33
bl _s32_div_f
add r0, r1, #0
bl _fflt
bl _f2d
add r2, r0, #0
add r3, r1, #0
ldr r0, [sp, #0x24]
add r1, r5, #0
bl _dadd
add r2, r0, #0
add r3, r1, #0
ldr r0, [sp, #0x20]
ldr r1, [sp, #0x10]
bl _dadd
bl _d2f
add r5, r0, #0
bl _f2d
mov r3, #1
mov r2, #0
lsl r3, r3, #0x1e
bl _dgr
bls _022046CE
mov r5, #1
lsl r5, r5, #0x1e
b _022046E2
_022046CE:
add r0, r5, #0
bl _f2d
ldr r3, _02204724 ; =0x3FF00000
mov r2, #0
bl _dls
bhs _022046E2
mov r5, #0xfe
lsl r5, r5, #0x16
_022046E2:
ldr r0, _02204728 ; =0x45800000
add r1, r5, #0
add r7, #0x30
bl _fmul
bl _ffix
ldr r3, [sp, #0x14]
add r1, sp, #0x34
ldr r3, [r7, r3]
add r2, sp, #0x28
add r3, #0x1c
bl VEC_MultAdd
ldr r0, [sp, #0x14]
mov r1, #1
ldr r0, [r7, r0]
str r1, [r0, #0xc]
ldr r0, [sp, #0x14]
ldr r2, [r7, r0]
ldmia r4!, {r0, r1}
add r2, #0x10
stmia r2!, {r0, r1}
ldr r0, [r4]
str r0, [r2]
add sp, #0x94
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02204718: .word ov96_0221CA30
_0220471C: .word 0x40440000
_02204720: .word 0x40490000
_02204724: .word 0x3FF00000
_02204728: .word 0x45800000
thumb_func_end ov96_022044A0
thumb_func_start ov96_0220472C
ov96_0220472C: ; 0x0220472C
push {r4, r5, r6, r7, lr}
sub sp, #0x84
str r0, [sp]
add r0, sp, #0x18
str r0, [sp, #0xc]
str r0, [sp, #0x10]
mov r0, #0
str r0, [sp, #8]
str r0, [sp, #0x14]
ldr r4, [sp, #8]
str r1, [sp, #4]
add r7, r2, #0
add r5, r4, #0
_02204746:
add r0, r5, #0
mov r1, #3
bl _s32_div_f
ldr r1, [sp]
cmp r0, r1
beq _022047A4
add r1, r4, #1
mov r0, #0xc
mul r0, r1
add r3, sp, #0xc
ldr r1, [sp, #4]
lsl r6, r5, #2
ldr r1, [r1, r6]
add r2, r3, r0
str r1, [r2, #8]
mov r1, #0
str r1, [r2, #4]
str r1, [r3, r0]
cmp r4, #0
bls _02204796
ldr r0, [r2, #8]
ldrh r0, [r0, #6]
_02204774:
ldr r3, [r3, #4]
ldr r6, [r3, #8]
ldrh r6, [r6, #6]
cmp r6, r0
bhs _0220478C
ldr r0, [r3]
str r2, [r0, #4]
ldr r0, [r3]
str r0, [r2]
str r3, [r2, #4]
str r2, [r3]
b _02204796
_0220478C:
add r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
cmp r1, r4
blo _02204774
_02204796:
cmp r1, r4
bne _0220479E
str r2, [r3, #4]
str r3, [r2]
_0220479E:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
_022047A4:
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #0xc
blo _02204746
ldr r0, [sp, #0x10]
mov r2, #0
ldr r0, [r0, #8]
ldrh r1, [r0, #6]
add r0, sp, #0xc
_022047B8:
ldr r0, [r0, #4]
lsl r4, r2, #2
ldr r3, [r0, #8]
str r3, [r7, r4]
ldr r3, [r7, r4]
ldrh r3, [r3, #6]
cmp r1, r3
bne _022047D2
ldr r3, [sp, #8]
add r3, r3, #1
lsl r3, r3, #0x18
lsr r3, r3, #0x18
str r3, [sp, #8]
_022047D2:
add r2, r2, #1
lsl r2, r2, #0x18
lsr r2, r2, #0x18
cmp r2, #9
blo _022047B8
ldr r0, [sp, #8]
cmp r0, #0
bne _022047E6
bl GF_AssertFail
_022047E6:
ldr r0, [sp, #8]
add sp, #0x84
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_0220472C
thumb_func_start ov96_022047EC
ov96_022047EC: ; 0x022047EC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x1fc
sub sp, #0x24
add r4, r0, #0
bl ov96_021E5DC4
str r0, [sp, #0x38]
add r0, r4, #0
bl ov96_021E5DD4
cmp r0, #6
bls _02204806
b _02204DD2
_02204806:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02204812: ; jump table
.short _02204820 - _02204812 - 2 ; case 0
.short _022048F8 - _02204812 - 2 ; case 1
.short _0220494E - _02204812 - 2 ; case 2
.short _02204A34 - _02204812 - 2 ; case 3
.short _02204B2C - _02204812 - 2 ; case 4
.short _02204DA6 - _02204812 - 2 ; case 5
.short _02204DCA - _02204812 - 2 ; case 6
_02204820:
mov r2, #0x1a
mov r0, #0x5c
mov r1, #0x8b
lsl r2, r2, #0xe
bl CreateHeap
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
bl GfGfx_DisableEngineAPlanes
bl GfGfx_DisableEngineBPlanes
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _02204B18 ; =0xFFFFE0FF
and r1, r0
str r1, [r2]
ldr r2, _02204B1C ; =0x04001000
ldr r1, [r2]
and r0, r1
str r0, [r2]
bl ov96_02204F20
mov r1, #0x1b
add r0, r4, #0
lsl r1, r1, #6
bl ov96_021E5D94
mov r2, #0x1b
mov r1, #0
lsl r2, r2, #6
add r5, r0, #0
bl MI_CpuFill8
mov r0, #0x8b
bl BgConfig_Alloc
mov r2, #0xdd
lsl r2, r2, #2
add r1, r5, r2
add r2, r2, #4
str r0, [r5]
add r0, r4, #0
add r2, r5, r2
mov r3, #4
bl ov96_021E5F70
add r0, r4, #0
mov r1, #8
bl ov96_021E6670
mov r0, #0xca
str r0, [sp, #0xa8]
mov r0, #1
lsl r0, r0, #0x12
str r0, [sp, #0xac]
lsr r0, r0, #4
mov r2, #0x8b
str r0, [sp, #0xb0]
str r2, [sp, #0xb4]
mov r0, #0x10
str r0, [sp]
ldr r3, _02204B20 ; =0x00300010
add r0, sp, #0xa8
mov r1, #0x16
bl ov96_021E92B0
bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7e
str r1, [sp, #4]
str r0, [sp, #8]
mov r3, #0x20
str r3, [sp, #0xc]
mov r2, #0x8b
str r2, [sp, #0x10]
add r2, r0, #0
bl OamManager_Create
mov r1, #0x8b
str r1, [r5, #0x14]
mov r0, #4
bl FontID_Alloc
ldr r0, [r5]
bl ov96_02204F40
add r0, r5, #0
bl ov96_02207740
ldr r0, _02204B24 ; =gSystem + 0x60
mov r1, #1
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
add r0, r4, #0
bl ov96_021E5DEC
b _02204DD2
_022048F8:
ldr r0, [sp, #0x38]
ldr r1, [sp, #0x38]
ldr r0, [r0, #0x14]
ldr r1, [r1]
add r2, r4, #0
bl ov96_02207CCC
mov r2, #0x37
ldr r1, [sp, #0x38]
lsl r2, r2, #4
str r0, [r1, r2]
add r0, r4, #0
bl ov96_021E5D34
add r5, r0, #0
add r0, r4, #0
bl ov96_021E5EE8
add r2, r0, #0
ldr r0, [sp, #0x38]
mov r1, #4
ldr r0, [r0, #0x14]
sub r1, r1, r5
bl ov96_02208AA8
mov r1, #0xdb
ldr r2, [sp, #0x38]
lsl r1, r1, #2
str r0, [r2, r1]
add r0, r2, #0
ldr r0, [r0, #0x14]
sub r1, #0xad
mov r2, #1
bl ov96_021E9A78
mov r2, #0xd1
ldr r1, [sp, #0x38]
lsl r2, r2, #2
str r0, [r1, r2]
add r0, r4, #0
bl ov96_021E5DEC
b _02204DD2
_0220494E:
ldr r5, _02204B28 ; =ov96_0221CAD4
add r3, sp, #0x9c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r5]
add r1, r2, #0
str r0, [r3]
ldr r0, [sp, #0x38]
ldr r0, [r0, #0x14]
bl ov96_021EB180
ldr r1, [sp, #0x38]
str r0, [r1, #0x20]
mov r0, #0xaf
lsl r0, r0, #0xe
str r0, [sp]
add r0, r1, #0
mov r1, #0
ldr r0, [r0, #0x20]
add r2, r1, #0
add r3, r1, #0
bl ov96_021EB5C8
ldr r0, [sp, #0x38]
ldr r0, [r0, #0x20]
bl ov96_021EB5E8
str r0, [sp]
ldr r0, [sp, #0x38]
mov r5, #0xd1
ldr r3, [sp, #0x38]
lsl r5, r5, #2
ldr r0, [r0, #0x14]
ldr r3, [r3, r5]
mov r1, #0xc
mov r2, #2
bl ov96_021EA854
ldr r1, [sp, #0x38]
add r2, r5, #4
str r0, [r1, r2]
add r0, r1, #0
ldr r0, [r0, #0x20]
mov r1, #0
mov r2, #0x65
bl ov96_021EB29C
ldr r0, [sp, #0x38]
mov r1, #1
ldr r0, [r0, #0x20]
mov r2, #0x66
bl ov96_021EB29C
ldr r0, [sp, #0x38]
mov r1, #2
ldr r0, [r0, #0x20]
mov r2, #0x67
bl ov96_021EB29C
ldr r0, [sp, #0x38]
mov r1, #3
ldr r0, [r0, #0x20]
mov r2, #0x68
bl ov96_021EB29C
add r1, r5, #0
ldr r0, [sp, #0x38]
add r1, #0x2c
ldr r0, [r0, r1]
ldr r1, [sp, #0x38]
ldr r1, [r1, #0x20]
bl ov96_02207E7C
ldr r0, [sp, #0x38]
ldr r0, [r0, #0x20]
bl ov96_022050B4
ldr r0, [sp, #0x38]
ldr r0, [r0, #0x20]
bl ov96_021EB3A4
ldr r2, [sp, #0x38]
add r3, r5, #0
ldr r2, [r2, r3]
ldr r3, [sp, #0x38]
add r0, r4, #0
ldr r3, [r3, #0x20]
mov r1, #0
bl ov96_021E6290
ldr r0, [r0]
mov r1, #1
bl Sprite_SetDrawPriority
ldr r0, [sp, #0x38]
add r1, r0, #0
ldr r1, [r1, #0x20]
bl ov96_022050F8
add r3, r5, #0
ldr r1, [sp, #0x38]
ldr r0, [sp, #0x38]
add r3, #0x2c
ldr r0, [r0, r3]
ldr r2, [sp, #0x38]
sub r3, #0x2c
ldr r1, [r1, #0x20]
ldr r2, [r2, r3]
bl ov96_02207F18
add r0, r4, #0
bl ov96_021E5DEC
b _02204DD2
_02204A34:
add r0, sp, #0x11c
mov r7, #0
add r5, sp, #0x160
str r0, [sp, #0x24]
add r6, sp, #0x6c
_02204A3E:
add r0, r7, #0
mov r1, #3
bl _s32_div_f
str r1, [sp, #0x18]
add r0, r7, #0
mov r1, #3
bl _s32_div_f
str r0, [sp, #0x3c]
ldr r1, [sp, #0x3c]
ldr r2, [sp, #0x18]
add r0, r4, #0
add r3, r5, #0
bl ov96_021E6168
ldr r1, [sp, #0x3c]
ldr r2, [sp, #0x18]
add r0, r4, #0
bl ov96_021E60C0
bl ov96_021E6108
ldr r1, [sp, #0x24]
add r7, r7, #1
str r0, [r1, #0x14]
ldrh r0, [r5]
strh r0, [r6]
ldrh r0, [r5, #2]
add r5, #0x10
strh r0, [r6, #2]
add r0, r1, #0
add r0, r0, #4
add r6, r6, #4
str r0, [sp, #0x24]
cmp r7, #0xc
blt _02204A3E
mov r1, #0x37
ldr r0, [sp, #0x38]
lsl r1, r1, #4
ldr r0, [r0, r1]
add r1, sp, #0x6c
bl ov96_022080F4
add r0, r4, #0
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r3, r0, #0x18
mov r1, #0x37
ldr r0, [sp, #0x38]
lsl r1, r1, #4
ldr r0, [r0, r1]
lsl r1, r3, #1
add r1, r3, r1
add r2, sp, #0x160
lsl r1, r1, #4
add r1, r2, r1
bl ov96_02208250
mov r1, #0x37
ldr r0, [sp, #0x38]
lsl r1, r1, #4
ldr r0, [r0, r1]
mov r1, #0
mov r2, #1
bl ov96_022082BC
mov r1, #0x37
ldr r0, [sp, #0x38]
lsl r1, r1, #4
ldr r0, [r0, r1]
mov r1, #1
mov r2, #2
bl ov96_022082BC
mov r1, #0
mov r0, #2
str r0, [sp, #0x120]
mov r0, #1
str r1, [sp, #0x11c]
str r1, [sp, #0x124]
str r0, [sp, #0x128]
str r0, [sp, #0x12c]
str r1, [sp]
str r1, [sp, #4]
mov r1, #0xd2
ldr r0, [sp, #0x38]
lsl r1, r1, #2
ldr r0, [r0, r1]
mov r1, #0xc
add r2, sp, #0x160
add r3, sp, #0x11c
bl ov96_021EA8A8
add r0, r4, #0
bl ov96_021E5F24
add r1, r0, #0
mov r2, #0x37
ldr r0, [sp, #0x38]
lsl r2, r2, #4
ldr r0, [r0, r2]
bl ov96_02208784
add r0, r4, #0
bl ov96_021E5DEC
b _02204DD2
.balign 4, 0
_02204B18: .word 0xFFFFE0FF
_02204B1C: .word 0x04001000
_02204B20: .word 0x00300010
_02204B24: .word gSystem + 0x60
_02204B28: .word ov96_0221CAD4
_02204B2C:
mov r1, #0xd2
ldr r0, [sp, #0x38]
lsl r1, r1, #2
ldr r0, [r0, r1]
bl ov96_021EAA00
cmp r0, #0
bne _02204B3E
b _02204DD2
_02204B3E:
add r0, r4, #0
bl ov96_021E5F24
str r0, [sp, #0x34]
ldr r0, [sp, #0x38]
ldr r0, [r0]
bl ov96_021E6030
add r0, r4, #0
mov r1, #1
bl ov96_021E5DFC
add r0, sp, #0x54
mov r1, #0xaa
mov r2, #0xe
bl ReadWholeNarcMemberByIdPair
ldr r0, [sp, #0x38]
mov r5, #0
str r0, [sp, #0x44]
add r0, #0x24
str r0, [sp, #0x44]
_02204B6A:
mov r0, #0xd2
ldr r1, [sp, #0x38]
lsl r0, r0, #2
ldr r0, [r1, r0]
lsl r1, r5, #0x18
lsr r1, r1, #0x18
bl ov96_021EAA04
add r6, r0, #0
add r0, r5, #0
mov r1, #3
bl _s32_div_f
str r1, [sp, #0x14]
cmp r1, #0
bne _02204B92
add r0, r6, #0
mov r1, #1
bl ov96_021EAB38
_02204B92:
add r0, r5, #0
mov r1, #3
bl _s32_div_f
add r7, r0, #0
add r0, r5, #0
mov r1, #3
bl _s32_div_f
add r2, r1, #0
add r0, r4, #0
add r1, r7, #0
bl ov96_021E60C0
bl ov96_021E6138
lsl r1, r0, #3
add r0, sp, #0x54
add r2, r0, r1
add r1, r2, #0
sub r1, #8
sub r2, r2, #4
ldr r1, [r1]
ldr r2, [r2]
add r0, r6, #0
bl ov96_021EAF70
mov r0, #0xd2
ldr r1, [sp, #0x38]
lsl r0, r0, #2
ldr r0, [r1, r0]
lsl r1, r5, #0x18
lsr r1, r1, #0x18
bl ov96_021EAA04
add r6, r0, #0
add r0, r5, #0
mov r1, #3
bl _s32_div_f
mov r1, #0xb8
str r0, [sp, #0x40]
mul r1, r0
ldr r0, [sp, #0x44]
add r7, r0, r1
ldr r0, [sp, #0x14]
add r1, r7, #0
lsl r0, r0, #2
str r6, [r7, r0]
ldr r0, [sp, #0x40]
add r1, #0xb0
lsl r0, r0, #5
str r0, [sp, #0x20]
mov r0, #1
strb r0, [r1]
add r0, r6, #0
mov r1, #1
bl ov96_021EAC0C
ldr r0, [sp, #0x20]
mov r2, #0x60
str r0, [sp, #0x1c]
add r0, #0x80
str r0, [sp, #0x1c]
ldr r1, [sp, #0x1c]
add r0, r6, #0
bl ov96_021EAF94
bl ov96_021E6104
add r1, r0, #0
add r0, r6, #0
bl ov96_021EAF6C
ldr r0, [sp, #0x20]
ldr r1, _02204DDC ; =0x00000BB8
add r0, #0xd0
str r0, [sp, #0x20]
lsl r0, r0, #0xc
str r0, [r7, #0x58]
mov r0, #0x1a
lsl r0, r0, #0x10
str r0, [r7, #0x5c]
add r0, r6, #0
bl ov96_021EABDC
ldr r1, [sp, #0x40]
ldr r0, [sp, #0x34]
cmp r1, r0
bne _02204C66
ldr r0, [sp, #0x14]
cmp r0, #0
bne _02204C66
add r0, sp, #0x48
str r0, [sp]
ldr r1, [sp, #0x1c]
add r0, r6, #0
mov r2, #0x60
add r3, sp, #0x4c
bl ov96_021EB0A4
mov r1, #0x80
add r0, sp, #0x48
strh r1, [r0, #8]
ldr r1, [sp, #0x48]
strh r1, [r0, #0xa]
_02204C66:
add r5, r5, #1
cmp r5, #0xc
bge _02204C6E
b _02204B6A
_02204C6E:
add r0, sp, #0xb8
mov r1, #0xaa
mov r2, #4
bl ReadWholeNarcMemberByIdPair
ldr r1, _02204DE0 ; =0x00000708
ldr r2, _02204DE4 ; =0x0000050C
ldr r0, [sp, #0x38]
strh r1, [r0, r2]
mov r1, #0x37
lsl r1, r1, #4
ldr r0, [r0, r1]
ldr r1, [sp, #0x38]
ldrh r1, [r1, r2]
bl ov96_02208740
ldr r0, [sp, #0x38]
bl ov96_022077F4
mov r0, #0
str r0, [sp, #0x30]
ldr r0, [sp, #0x38]
add r6, r0, #0
str r0, [sp, #0x2c]
add r6, #0x24
str r0, [sp, #0x28]
_02204CA2:
mov r0, #0xcd
mov r2, #0
ldr r1, [sp, #0x2c]
lsl r0, r0, #2
str r2, [r1, r0]
ldr r0, [sp, #0x30]
add r5, r2, #0
lsl r0, r0, #0x18
lsr r7, r0, #0x18
_02204CB4:
lsl r3, r5, #0x18
add r0, r4, #0
add r1, sp, #0xb8
add r2, r7, #0
lsr r3, r3, #0x18
str r6, [sp]
bl ov96_02206E88
add r5, r5, #1
cmp r5, #3
blt _02204CB4
add r0, r4, #0
bl ov96_021E5F24
cmp r0, #0
bne _02204CE8
mov r0, #0xdb
ldr r1, [sp, #0x38]
lsl r0, r0, #2
ldr r0, [r1, r0]
ldr r1, [sp, #0x30]
add r2, r6, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_02208AE8
_02204CE8:
ldr r1, [sp, #0x28]
ldr r0, [sp, #0x30]
add r1, #0xbc
str r0, [r1]
ldr r0, [sp, #0x2c]
add r6, #0xb8
add r0, r0, #4
str r0, [sp, #0x2c]
ldr r0, [sp, #0x28]
add r0, #0xb8
str r0, [sp, #0x28]
ldr r0, [sp, #0x30]
add r0, r0, #1
str r0, [sp, #0x30]
cmp r0, #4
blt _02204CA2
add r0, r4, #0
bl ov96_021E5F24
cmp r0, #0
bne _02204D26
add r0, r4, #0
bl ov96_021E5F54
add r0, #0x28
bl ov96_021E8A20
add r1, r0, #0
ldr r0, [sp, #0x38]
bl ov96_02205AFC
_02204D26:
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
add r0, sp, #0x50
mov r3, #0xd1
str r0, [sp, #8]
ldr r2, [sp, #0x38]
lsl r3, r3, #2
ldr r2, [r2, r3]
ldr r3, [sp, #0x38]
add r0, r4, #0
ldr r3, [r3, #0x20]
mov r1, #0
bl ov96_021E634C
ldr r0, [sp, #0x38]
bl ov96_02205048
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineATogglePlanes
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineBTogglePlanes
ldr r2, [sp, #0x38]
ldr r0, [sp, #0x34]
mov r1, #0xb8
add r2, #0x24
mul r1, r0
add r3, r2, r1
ldr r1, [r3, #0x5c]
ldr r3, [r3, #0x58]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r6, r3, #0xb
asr r5, r0, #0xc
ldr r0, [sp, #0x38]
lsr r6, r6, #0x14
add r6, r3, r6
mov r1, #0
asr r3, r6, #0xc
ldr r0, [r0]
add r2, r1, #0
sub r3, #0x80
bl ScheduleSetBgPosText
ldr r0, [sp, #0x38]
sub r5, #0x60
ldr r0, [r0]
mov r1, #0
mov r2, #3
add r3, r5, #0
bl ScheduleSetBgPosText
mov r0, #1
bl sub_0203A994
add r0, r4, #0
bl ov96_021E5DEC
b _02204DD2
_02204DA6:
add r0, r4, #0
bl ov96_021E5F24
cmp r0, #0
bne _02204DC2
bl LCRandom
mov r1, #0x14
bl _s32_div_f
mov r2, #0xdd
ldr r0, [sp, #0x38]
lsl r2, r2, #2
str r1, [r0, r2]
_02204DC2:
add r0, r4, #0
bl ov96_021E5DEC
b _02204DD2
_02204DCA:
add sp, #0x1fc
add sp, #0x24
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02204DD2:
mov r0, #0
add sp, #0x1fc
add sp, #0x24
pop {r3, r4, r5, r6, r7, pc}
nop
_02204DDC: .word 0x00000BB8
_02204DE0: .word 0x00000708
_02204DE4: .word 0x0000050C
thumb_func_end ov96_022047EC
thumb_func_start ov96_02204DE8
ov96_02204DE8: ; 0x02204DE8
push {r3, lr}
bl ov96_021E5DC4
ldr r0, [r0, #0x20]
bl ov96_021EB5BC
mov r0, #1
pop {r3, pc}
thumb_func_end ov96_02204DE8
thumb_func_start ov96_02204DF8
ov96_02204DF8: ; 0x02204DF8
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
bl ov96_021E6040
add r6, r0, #0
bl ov96_021E9510
mov r4, #0
add r7, r4, #0
_02204E0C:
lsl r1, r4, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
bl ov96_021E5FBC
add r3, r0, #0
str r7, [sp]
mov r0, #3
str r0, [sp, #4]
mov r0, #0x49
lsl r0, r0, #2
str r0, [sp, #8]
add r0, r5, #0
add r1, r6, #0
add r2, r4, #0
bl ov96_021E95F8
add r4, r4, #1
cmp r4, #4
blt _02204E0C
add r0, r6, #0
mov r1, #1
bl ov96_021E93B4
add r0, r6, #0
mov r1, #1
bl ov96_0221A56C
add r0, r6, #0
bl ov96_021E952C
add r0, r6, #0
mov r1, #1
bl ov96_021E9570
mov r0, #1
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_02204DF8
thumb_func_start ov96_02204E58
ov96_02204E58: ; 0x02204E58
push {r3, r4, r5, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
bl sub_0203A914
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
add r0, r5, #0
bl ov96_021E5F8C
ldr r0, [r4, #0x18]
bl FreeToHeap
ldr r0, [r4]
mov r1, #0
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #3
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #4
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #5
bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #6
bl FreeBgTilemapBuffer
add r0, r4, #4
bl RemoveWindow
ldr r0, [r4]
bl FreeToHeap
ldr r0, [r4, #0x20]
bl ov96_021EB21C
mov r0, #0xd2
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021EA894
mov r0, #0xd1
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021E9C0C
bl OamManager_Free
bl sub_0202168C
bl sub_02022608
mov r0, #0xdb
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_02208B2C
mov r0, #0x37
lsl r0, r0, #4
ldr r0, [r4, r0]
bl ov96_02207D64
mov r0, #4
bl FontID_Release
add r0, r5, #0
bl ov96_021E5DAC
ldr r0, _02204F18 ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
ldr r0, _02204F1C ; =0x04000050
mov r1, #0
strh r1, [r0]
mov r0, #0x8b
bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
nop
_02204F18: .word gSystem + 0x60
_02204F1C: .word 0x04000050
thumb_func_end ov96_02204E58
thumb_func_start ov96_02204F20
ov96_02204F20: ; 0x02204F20
push {r4, lr}
sub sp, #0x28
ldr r4, _02204F3C ; =ov96_0221CB9C
add r3, sp, #0
mov r2, #5
_02204F2A:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _02204F2A
add r0, sp, #0
bl GfGfx_SetBanks
add sp, #0x28
pop {r4, pc}
.balign 4, 0
_02204F3C: .word ov96_0221CB9C
thumb_func_end ov96_02204F20
thumb_func_start ov96_02204F40
ov96_02204F40: ; 0x02204F40
push {r4, r5, lr}
sub sp, #0x9c
ldr r5, _02205030 ; =ov96_0221CAF0
add r3, sp, #0x8c
add r4, r0, #0
add r2, r3, #0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl SetBothScreensModesAndDisable
ldr r5, _02205034 ; =ov96_0221CB64
add r3, sp, #0x70
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #0
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
bl BgClearTilemapBufferAndCommit
ldr r5, _02205038 ; =ov96_0221CB80
add r3, sp, #0x54
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #3
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #3
bl BgClearTilemapBufferAndCommit
ldr r5, _0220503C ; =ov96_0221CB10
add r3, sp, #0x38
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #4
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
bl BgClearTilemapBufferAndCommit
ldr r5, _02205040 ; =ov96_0221CB2C
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #5
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #5
bl BgClearTilemapBufferAndCommit
ldr r5, _02205044 ; =ov96_0221CB48
add r3, sp, #0
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #6
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #6
bl BgClearTilemapBufferAndCommit
mov r0, #8
mov r1, #0
bl GfGfx_EngineATogglePlanes
add sp, #0x9c
pop {r4, r5, pc}
nop
_02205030: .word ov96_0221CAF0
_02205034: .word ov96_0221CB64
_02205038: .word ov96_0221CB80
_0220503C: .word ov96_0221CB10
_02205040: .word ov96_0221CB2C
_02205044: .word ov96_0221CB48
thumb_func_end ov96_02204F40
thumb_func_start ov96_02205048
ov96_02205048: ; 0x02205048
push {r4, lr}
sub sp, #0x10
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
add r4, r0, #0
str r3, [sp, #8]
ldr r0, [r4, #0x14]
mov r1, #1
str r0, [sp, #0xc]
ldr r2, [r4]
mov r0, #0xe2
bl GfGfxLoader_LoadCharData
mov r2, #0
str r2, [sp]
ldr r3, [r4, #0x14]
mov r0, #0xe2
mov r1, #3
bl GfGfxLoader_LoadFromNarc
add r1, r4, #0
add r1, #0x1c
str r0, [r4, #0x18]
bl NNS_G2dGetUnpackedBGCharacterData
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
str r3, [sp, #8]
ldr r0, [r4, #0x14]
mov r1, #2
str r0, [sp, #0xc]
ldr r2, [r4]
mov r0, #0xe2
bl GfGfxLoader_LoadScrnData
mov r1, #0
mov r0, #0x40
str r0, [sp]
ldr r0, [r4, #0x14]
add r2, r1, #0
str r0, [sp, #4]
mov r0, #0xe2
add r3, r1, #0
bl GfGfxLoader_GXLoadPal
mov r0, #0x37
lsl r0, r0, #4
ldr r0, [r4, r0]
bl ov96_02207DDC
add sp, #0x10
pop {r4, pc}
thumb_func_end ov96_02205048
thumb_func_start ov96_022050B4
ov96_022050B4: ; 0x022050B4
push {r4, lr}
sub sp, #8
mov r1, #1
str r1, [sp]
mov r1, #0xe2
mov r2, #0x11
mov r3, #0x68
add r4, r0, #0
bl ov96_021EB2BC
mov r0, #1
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
add r0, r4, #0
mov r1, #0xe2
mov r2, #0xe
mov r3, #0x68
bl ov96_021EB2F4
add r0, r4, #0
mov r1, #0xe2
mov r2, #0x10
mov r3, #0x68
bl ov96_021EB334
add r0, r4, #0
mov r1, #0xe2
mov r2, #0xf
mov r3, #0x68
bl ov96_021EB36C
add sp, #8
pop {r4, pc}
thumb_func_end ov96_022050B4
thumb_func_start ov96_022050F8
ov96_022050F8: ; 0x022050F8
push {r4, r5, r6, r7, lr}
sub sp, #0xc
str r0, [sp, #4]
add r6, r1, #0
mov r5, #0
add r4, r0, #0
mov r7, #6
_02205106:
add r0, r6, #0
mov r1, #2
mov r2, #1
mov r3, #0x68
str r7, [sp]
bl ov96_021EB3E4
mov r1, #0xe
lsl r1, r1, #6
str r0, [r4, r1]
add r0, r1, #0
ldr r0, [r4, r0]
mov r1, #1
bl ov96_021EB564
add r5, r5, #1
add r4, #0xc
cmp r5, #0x14
blt _02205106
ldr r4, [sp, #4]
mov r5, #0
mov r7, #0x11
_02205132:
add r0, r6, #0
mov r1, #2
mov r2, #1
mov r3, #0x68
str r7, [sp]
bl ov96_021EB3E4
mov r1, #0x47
lsl r1, r1, #4
str r0, [r4, r1]
add r0, r1, #0
ldr r0, [r4, r0]
mov r1, #6
bl ov96_021EB564
mov r0, #0x12
str r0, [sp]
add r0, r6, #0
mov r1, #2
mov r2, #1
mov r3, #0x68
bl ov96_021EB3E4
ldr r1, _022052A4 ; =0x00000474
str r0, [r4, r1]
add r0, r1, #0
ldr r0, [r4, r0]
mov r1, #5
bl ov96_021EB564
add r5, r5, #1
add r4, #0x10
cmp r5, #0xa
blt _02205132
mov r0, #0
ldr r7, [sp, #4]
str r0, [sp, #8]
_0220517C:
mov r0, #9
str r0, [sp]
add r0, r6, #0
mov r1, #2
mov r2, #1
mov r3, #0x68
bl ov96_021EB3E4
mov r1, #2
str r0, [r7, #0x6c]
bl ov96_021EB564
mov r4, #0
_02205196:
lsl r0, r4, #2
add r5, r7, r0
mov r0, #0x17
str r0, [sp]
add r0, r6, #0
mov r1, #2
mov r2, #1
mov r3, #0x68
bl ov96_021EB3E4
str r0, [r5, #0x70]
mov r1, #3
bl ov96_021EB564
ldr r0, [r5, #0x70]
mov r1, #2
bl ov96_021EB630
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #2
blo _02205196
mov r0, #0x1b
str r0, [sp]
add r0, r6, #0
mov r1, #2
mov r2, #1
mov r3, #0x68
bl ov96_021EB3E4
mov r1, #8
str r0, [r7, #0x78]
bl ov96_021EB564
ldr r0, [sp, #8]
add r7, #0xb8
add r0, r0, #1
str r0, [sp, #8]
cmp r0, #4
blt _0220517C
ldr r4, [sp, #4]
mov r5, #0
mov r7, #0xe
_022051EE:
add r0, r6, #0
mov r1, #2
mov r2, #1
mov r3, #0x68
str r7, [sp]
bl ov96_021EB3E4
mov r1, #0xd3
lsl r1, r1, #2
str r0, [r4, r1]
add r0, r1, #0
ldr r0, [r4, r0]
mov r1, #7
bl ov96_021EB564
mov r0, #0xd3
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #4
bl ov96_021EB630
add r5, r5, #1
add r4, r4, #4
cmp r5, #4
blt _022051EE
ldr r4, [sp, #4]
mov r5, #0
mov r7, #0x19
_02205226:
add r0, r6, #0
mov r1, #2
mov r2, #1
mov r3, #0x68
str r7, [sp]
bl ov96_021EB3E4
mov r1, #0xd7
lsl r1, r1, #2
str r0, [r4, r1]
add r0, r1, #0
ldr r0, [r4, r0]
mov r1, #4
bl ov96_021EB564
add r5, r5, #1
add r4, r4, #4
cmp r5, #4
blt _02205226
mov r4, #0
mov r5, #0x1a
mov r7, #0x10
_02205252:
add r0, r6, #0
mov r1, #2
mov r2, #1
mov r3, #0x68
str r5, [sp]
bl ov96_021EB3E4
ldr r2, [sp, #4]
ldr r1, _022052A8 ; =0x0000056C
mov r3, #0x68
str r0, [r2, r1]
add r0, r6, #0
mov r1, #2
mov r2, #1
str r7, [sp]
bl ov96_021EB3E4
ldr r2, [sp, #4]
ldr r1, _022052AC ; =0x00000568
str r0, [r2, r1]
ldr r0, _022052AC ; =0x00000568
add r1, r2, #0
ldr r0, [r1, r0]
mov r1, #0
bl ov96_021EB564
ldr r1, [sp, #4]
ldr r0, _022052A8 ; =0x0000056C
ldr r0, [r1, r0]
mov r1, #4
bl ov96_021EB564
ldr r0, [sp, #4]
add r4, r4, #1
add r0, #0x14
str r0, [sp, #4]
cmp r4, #5
blt _02205252
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
_022052A4: .word 0x00000474
_022052A8: .word 0x0000056C
_022052AC: .word 0x00000568
thumb_func_end ov96_022050F8
thumb_func_start ov96_022052B0
ov96_022052B0: ; 0x022052B0
push {r4, r5, r6, r7, lr}
sub sp, #0x84
str r1, [sp, #0x10]
str r0, [sp, #0xc]
bl ov96_021E5DC4
str r0, [sp, #0x18]
ldr r0, [sp, #0x10]
ldrb r0, [r0]
cmp r0, #0
beq _022052D4
cmp r0, #1
bne _022052CC
b _02205430
_022052CC:
cmp r0, #2
bne _022052D2
b _02205456
_022052D2:
b _02205466
_022052D4:
ldr r0, [sp, #0xc]
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
mov r3, #0xde
ldr r2, [sp, #0x18]
lsl r3, r3, #2
ldr r2, [r2, r3]
add r0, sp, #0x20
mov r1, #0xe3
bl ReadWholeNarcMemberByIdPair
add r0, sp, #0x5c
ldr r7, [sp, #0x18]
str r0, [sp, #0x14]
mov r0, #0
add r6, sp, #0x20
str r0, [sp, #0x1c]
add r4, sp, #0x34
add r5, r7, #0
_02205300:
ldrb r0, [r4, #1]
ldr r2, _02205474 ; =0x0000061C
lsl r0, r0, #0x13
lsr r1, r0, #0x10
ldrb r0, [r4]
lsl r0, r0, #0x13
lsr r0, r0, #0x10
strh r0, [r7, r2]
ldrb r2, [r4, #1]
lsl r3, r2, #3
ldr r2, _02205478 ; =0x0000061E
cmp r0, #0
strh r3, [r7, r2]
beq _0220533C
cmp r1, #0
beq _0220533C
mov r2, #0xdf
mov r3, #1
lsl r2, r2, #2
str r3, [r5, r2]
add r2, #8
strh r0, [r5, r2]
ldr r0, _0220547C ; =0x00000386
add r2, r3, #0
strh r1, [r5, r0]
sub r0, r0, #6
ldr r0, [r5, r0]
add r1, r3, #0
bl ov96_021EB52C
_0220533C:
ldr r0, [sp, #0x1c]
add r4, r4, #2
add r0, r0, #1
add r7, r7, #4
add r5, #0xc
str r0, [sp, #0x1c]
cmp r0, #0x14
blt _02205300
ldr r5, [sp, #0x18]
mov r7, #0
add r4, r5, #0
_02205352:
ldrb r0, [r6, #1]
ldr r2, _02205480 ; =0x0000066C
lsl r0, r0, #0x13
lsr r1, r0, #0x10
ldrb r0, [r6]
lsl r0, r0, #0x13
lsr r0, r0, #0x10
strh r0, [r5, r2]
ldrb r2, [r6, #1]
lsl r3, r2, #3
ldr r2, _02205484 ; =0x0000066E
cmp r0, #0
strh r3, [r5, r2]
beq _02205398
cmp r1, #0
beq _02205398
ldr r2, _02205488 ; =0x0000046C
mov r3, #1
str r3, [r4, r2]
add r2, #0xc
strh r0, [r4, r2]
ldr r0, _0220548C ; =0x0000047A
add r2, r3, #0
strh r1, [r4, r0]
sub r0, #0xa
ldr r0, [r4, r0]
add r1, r3, #0
bl ov96_021EB52C
ldr r0, _02205490 ; =0x00000474
mov r1, #1
ldr r0, [r4, r0]
add r2, r1, #0
bl ov96_021EB52C
_02205398:
add r7, r7, #1
add r6, r6, #2
add r5, r5, #4
add r4, #0x10
cmp r7, #0xa
blt _02205352
ldr r0, _02205494 ; =0x000005C8
ldr r2, [sp, #0x18]
mov r3, #0
add r1, r0, #2
_022053AC:
ldr r4, [sp, #0x14]
add r3, r3, #1
ldrb r4, [r4]
lsl r4, r4, #3
strh r4, [r2, r0]
ldr r4, [sp, #0x14]
ldrb r4, [r4, #1]
lsl r4, r4, #3
strh r4, [r2, r1]
ldr r4, [sp, #0x14]
add r2, r2, #4
add r4, r4, #2
str r4, [sp, #0x14]
cmp r3, #0x14
blt _022053AC
ldr r0, [sp, #0xc]
bl ov96_021E5F24
cmp r0, #0
bne _02205408
ldr r0, [sp, #0x18]
bl ov96_02207870
mov r1, #0xdb
ldr r0, [sp, #0x18]
lsl r1, r1, #2
ldr r0, [r0, r1]
add r1, sp, #0x34
bl ov96_02208AF8
mov r1, #0xdb
ldr r0, [sp, #0x18]
lsl r1, r1, #2
ldr r0, [r0, r1]
add r1, sp, #0x20
bl ov96_02208AF8
mov r1, #0xdb
ldr r0, [sp, #0x18]
lsl r1, r1, #2
ldr r0, [r0, r1]
ldr r2, _02205498 ; =0x00000564
ldr r1, [sp, #0x18]
add r1, r1, r2
bl ov96_02208AF0
_02205408:
ldr r0, [sp, #0x18]
bl ov96_0220764C
mov r0, #0x5c
bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _0220541C
bl GF_AssertFail
_0220541C:
ldr r0, [sp, #0x10]
ldrb r0, [r0]
add r1, r0, #1
ldr r0, [sp, #0x10]
strb r1, [r0]
ldr r0, [sp, #0xc]
mov r1, #0x13
bl ov96_021E601C
b _02205466
_02205430:
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [sp, #0x18]
mov r1, #3
ldr r0, [r0, #0x14]
add r2, r1, #0
str r0, [sp, #8]
mov r0, #2
mov r3, #0
bl BeginNormalPaletteFade
ldr r0, [sp, #0x10]
ldrb r0, [r0]
add r1, r0, #1
ldr r0, [sp, #0x10]
strb r1, [r0]
b _02205466
_02205456:
bl IsPaletteFadeFinished
cmp r0, #0
beq _02205466
ldr r0, [sp, #0xc]
mov r1, #1
bl ov96_021E5FC8
_02205466:
ldr r0, [sp, #0xc]
bl ov96_02205D30
mov r0, #0
add sp, #0x84
pop {r4, r5, r6, r7, pc}
nop
_02205474: .word 0x0000061C
_02205478: .word 0x0000061E
_0220547C: .word 0x00000386
_02205480: .word 0x0000066C
_02205484: .word 0x0000066E
_02205488: .word 0x0000046C
_0220548C: .word 0x0000047A
_02205490: .word 0x00000474
_02205494: .word 0x000005C8
_02205498: .word 0x00000564
thumb_func_end ov96_022052B0
thumb_func_start ov96_0220549C
ov96_0220549C: ; 0x0220549C
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r4, r1, #0
add r5, r0, #0
bl ov96_021E5DC4
add r6, r0, #0
ldrb r0, [r4]
cmp r0, #0
beq _022054BA
cmp r0, #1
beq _022054D2
cmp r0, #2
beq _022054EA
b _0220551A
_022054BA:
add r0, r5, #0
bl ov96_02205D30
add r0, r5, #0
bl ov96_021E637C
cmp r0, #0
beq _0220551A
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _0220551A
_022054D2:
add r0, r5, #0
bl ov96_022055AC
add r0, r5, #0
bl ov96_02205C94
cmp r0, #0
beq _0220551A
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _0220551A
_022054EA:
add r0, r5, #0
bl ov96_022055AC
add r0, r5, #0
bl ov96_021E667C
cmp r0, #0
beq _0220551A
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r6, #0x14]
str r0, [sp, #8]
mov r0, #0
add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
bl BeginNormalPaletteFade
add r0, r5, #0
mov r1, #2
bl ov96_021E5FC8
_0220551A:
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
thumb_func_end ov96_0220549C
thumb_func_start ov96_02205520
ov96_02205520: ; 0x02205520
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
add r4, r1, #0
bl ov96_021E5F54
add r5, r0, #0
add r0, r7, #0
bl ov96_021E5DC4
ldrb r0, [r4]
cmp r0, #0
bne _02205548
bl IsPaletteFadeFinished
cmp r0, #0
beq _02205544
mov r0, #1
strb r0, [r4]
_02205544:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_02205548:
add r0, r7, #0
bl ov96_021E5F24
cmp r0, #0
beq _02205556
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02205556:
add r5, #0x28
add r0, r5, #0
bl ov96_021E8A20
add r6, r0, #0
mov r4, #0
add r5, r6, #0
_02205564:
ldr r0, [r5]
lsr r1, r0, #0x12
ldr r0, _022055A4 ; =0x000003FF
and r0, r1
ldrh r1, [r6, #0x18]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
asr r2, r1, #0xb
mov r1, #0x1f
and r1, r2
lsl r1, r1, #0x10
lsr r1, r1, #0x10
add r0, r0, r1
lsl r0, r0, #0x10
lsr r2, r0, #0x10
ldr r0, _022055A8 ; =0x000003E7
cmp r2, r0
bls _0220558A
add r2, r0, #0
_0220558A:
lsl r1, r4, #0x18
add r0, r7, #0
lsr r1, r1, #0x18
bl ov96_021E5FB0
add r4, r4, #1
add r6, r6, #2
add r5, r5, #4
cmp r4, #4
blt _02205564
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
nop
_022055A4: .word 0x000003FF
_022055A8: .word 0x000003E7
thumb_func_end ov96_02205520
thumb_func_start ov96_022055AC
ov96_022055AC: ; 0x022055AC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x78
str r0, [sp]
bl ov96_021E5F54
str r0, [sp, #0x28]
ldr r0, [sp]
bl ov96_021E5DC4
str r0, [sp, #0x2c]
ldr r0, [sp]
bl ov96_021E5F24
cmp r0, #0
beq _022055CC
b _02205AE0
_022055CC:
ldr r1, _022058B4 ; =0x0000050E
ldr r0, [sp, #0x2c]
ldrb r0, [r0, r1]
cmp r0, #0
beq _022055EC
ldr r0, [sp, #0x28]
add r0, #0x28
str r0, [sp, #0x28]
bl ov96_021E8A20
add r1, r0, #0
ldr r0, [sp, #0x2c]
bl ov96_02205AFC
add sp, #0x78
pop {r3, r4, r5, r6, r7, pc}
_022055EC:
ldr r0, [sp, #0x28]
add r0, #0x50
bl ov96_021E8A20
add r4, r0, #0
ldr r0, [sp, #0x28]
bl ov96_021E8A20
add r3, r0, #0
mov r2, #4
_02205600:
ldmia r3!, {r0, r1}
stmia r4!, {r0, r1}
sub r2, r2, #1
bne _02205600
ldr r0, [r3]
ldr r1, _022058B8 ; =0x0000050C
str r0, [r4]
ldr r0, [sp, #0x2c]
ldrh r0, [r0, r1]
cmp r0, #0
beq _0220561C
sub r2, r0, #1
ldr r0, [sp, #0x2c]
strh r2, [r0, r1]
_0220561C:
mov r1, #0xdb
ldr r0, [sp, #0x2c]
lsl r1, r1, #2
ldr r0, [r0, r1]
bl ov96_02208B34
mov r0, #0
ldr r5, [sp, #0x2c]
str r0, [sp, #0x30]
add r1, r0, #0
ldr r2, _022058BC ; =0x0000051B
ldr r0, [sp, #0x2c]
add r4, r5, #0
strb r1, [r0, r2]
ldr r0, [sp, #0x28]
add r6, r5, #0
str r0, [sp, #0x18]
add r0, #0x50
str r0, [sp, #0x18]
add r0, r5, #0
str r0, [sp, #0x14]
add r0, #0x24
str r0, [sp, #0x14]
add r0, r5, #0
str r0, [sp, #0x10]
add r0, #0xa0
str r0, [sp, #0x10]
add r0, r5, #0
str r0, [sp, #0xc]
add r0, #0xac
str r0, [sp, #0xc]
add r0, r5, #0
str r0, [sp, #8]
add r0, #0x88
str r0, [sp, #8]
str r0, [sp, #4]
_02205664:
ldr r0, [sp, #0x18]
bl ov96_021E8A20
add r7, r0, #0
ldr r0, [r7]
cmp r0, #0
beq _022056AA
mov r0, #0xc1
lsl r0, r0, #2
ldr r1, [r5, r0]
cmp r1, #0
beq _0220568E
add r0, r0, #4
ldr r0, [r5, r0]
cmp r0, #0
beq _0220568E
mov r0, #0xc1
mov r1, #0
lsl r0, r0, #2
str r1, [r5, r0]
b _022056B6
_0220568E:
cmp r1, #0
bne _022056B6
mov r0, #0xc2
lsl r0, r0, #2
ldr r0, [r5, r0]
cmp r0, #0
bne _022056B6
mov r0, #0xc1
mov r1, #1
lsl r0, r0, #2
str r1, [r5, r0]
add r0, r0, #4
str r1, [r5, r0]
b _022056B6
_022056AA:
mov r0, #0xc1
mov r1, #0
lsl r0, r0, #2
str r1, [r5, r0]
add r0, r0, #4
str r1, [r5, r0]
_022056B6:
add r0, r4, #0
add r0, #0xc0
ldrb r0, [r0]
cmp r0, #0
beq _02205750
add r0, r4, #0
add r0, #0xc1
ldrb r1, [r0]
cmp r1, #1
bne _022056F6
ldrb r0, [r7, #8]
cmp r0, #1
bne _022056F6
add r0, r4, #0
add r0, #0xd5
ldrb r0, [r0]
mov r1, #3
add r0, r0, #1
bl _s32_div_f
add r0, r4, #0
add r0, #0xd5
strb r1, [r0]
add r1, r4, #0
add r1, #0xc1
mov r0, #2
strb r0, [r1]
add r1, r4, #0
add r1, #0xd4
mov r0, #1
strb r0, [r1]
b _0220571C
_022056F6:
cmp r1, #2
bne _0220571C
ldrb r0, [r7, #8]
cmp r0, #2
bne _0220571C
add r1, r4, #0
add r1, #0xc1
mov r0, #0
strb r0, [r1]
add r1, r4, #0
add r1, #0xc0
strb r0, [r1]
add r1, r4, #0
add r1, #0xcf
strb r0, [r1]
add r1, r4, #0
add r1, #0xd4
mov r0, #1
strb r0, [r1]
_0220571C:
mov r0, #0xcd
mov r1, #0
lsl r0, r0, #2
str r1, [r6, r0]
add r1, r4, #0
add r1, #0x9e
mov r0, #0
strh r0, [r1]
add r1, r4, #0
add r1, #0xa0
str r0, [r1]
add r1, r4, #0
add r1, #0xa4
str r0, [r1]
add r1, r4, #0
add r3, r4, #0
add r1, #0xa8
add r2, r4, #0
add r3, #0xa0
str r0, [r1]
ldmia r3!, {r0, r1}
add r2, #0xac
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
b _02205A72
_02205750:
add r0, r4, #0
add r0, #0xca
ldrb r0, [r0]
cmp r0, #1
bne _0220578E
mov r0, #0xcd
mov r1, #0
lsl r0, r0, #2
str r1, [r6, r0]
add r1, r4, #0
add r1, #0x9e
mov r0, #0
strh r0, [r1]
add r1, r4, #0
add r1, #0xa0
str r0, [r1]
add r1, r4, #0
add r1, #0xa4
str r0, [r1]
add r1, r4, #0
add r3, r4, #0
add r1, #0xa8
add r2, r4, #0
add r3, #0xa0
str r0, [r1]
ldmia r3!, {r0, r1}
add r2, #0xac
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
b _02205A72
_0220578E:
add r0, r4, #0
add r0, #0xc8
ldrb r0, [r0]
cmp r0, #0
beq _022057CC
mov r0, #0xcd
mov r1, #0
lsl r0, r0, #2
str r1, [r6, r0]
add r1, r4, #0
add r1, #0x9e
mov r0, #0
strh r0, [r1]
add r1, r4, #0
add r1, #0xa0
str r0, [r1]
add r1, r4, #0
add r1, #0xa4
str r0, [r1]
add r1, r4, #0
add r3, r4, #0
add r1, #0xa8
add r2, r4, #0
add r3, #0xa0
str r0, [r1]
ldmia r3!, {r0, r1}
add r2, #0xac
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
b _02205A72
_022057CC:
add r0, r4, #0
add r0, #0xcf
ldrb r0, [r0]
cmp r0, #0
beq _0220580A
mov r0, #0xcd
mov r1, #0
lsl r0, r0, #2
str r1, [r6, r0]
add r1, r4, #0
add r1, #0x9e
mov r0, #0
strh r0, [r1]
add r1, r4, #0
add r1, #0xa0
str r0, [r1]
add r1, r4, #0
add r1, #0xa4
str r0, [r1]
add r1, r4, #0
add r3, r4, #0
add r1, #0xa8
add r2, r4, #0
add r3, #0xa0
str r0, [r1]
ldmia r3!, {r0, r1}
add r2, #0xac
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
b _02205A72
_0220580A:
mov r0, #0
str r0, [sp, #0x24]
mov r0, #0xc1
lsl r0, r0, #2
ldr r0, [r5, r0]
cmp r0, #0
beq _02205862
ldr r1, [sp, #0x30]
ldrb r2, [r7, #4]
lsl r1, r1, #0x18
ldrb r3, [r7, #5]
ldr r0, [sp, #0x2c]
lsr r1, r1, #0x18
bl ov96_02205DD4
cmp r0, #0
beq _022058F2
mov r0, #0xcd
mov r1, #1
lsl r0, r0, #2
str r1, [r6, r0]
ldrb r0, [r7, #4]
add r3, r4, #0
add r2, r4, #0
lsl r1, r0, #0xc
add r0, r4, #0
add r0, #0xa0
str r1, [r0]
ldrb r0, [r7, #5]
add r3, #0xa0
add r2, #0xac
lsl r1, r0, #0xc
add r0, r4, #0
add r0, #0xa4
str r1, [r0]
add r1, r4, #0
add r1, #0xa8
mov r0, #0
str r0, [r1]
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
b _022058F2
_02205862:
mov r0, #0xc2
lsl r0, r0, #2
ldr r0, [r5, r0]
cmp r0, #0
beq _022058C0
add r0, r4, #0
add r0, #0x9e
ldrh r0, [r0]
cmp r0, #0xff
bhs _02205886
add r0, r4, #0
add r0, #0x9e
ldrh r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0x9e
strh r1, [r0]
b _02205890
_02205886:
mov r0, #0x51
ldr r1, [sp, #0x2c]
mov r2, #1
lsl r0, r0, #4
strb r2, [r1, r0]
_02205890:
mov r0, #0xcd
lsl r0, r0, #2
ldr r0, [r6, r0]
cmp r0, #0
bne _0220589C
b _02205A72
_0220589C:
ldrb r0, [r7, #4]
lsl r1, r0, #0xc
add r0, r4, #0
add r0, #0xac
str r1, [r0]
ldrb r0, [r7, #5]
lsl r1, r0, #0xc
add r0, r4, #0
add r0, #0xb0
str r1, [r0]
b _022058F2
nop
_022058B4: .word 0x0000050E
_022058B8: .word 0x0000050C
_022058BC: .word 0x0000051B
_022058C0:
mov r0, #0xcd
lsl r0, r0, #2
ldr r0, [r6, r0]
cmp r0, #0
beq _022058EE
add r0, r4, #0
add r0, #0x9e
ldrh r0, [r0]
cmp r0, #0x1e
bhi _022058DC
add r1, r4, #0
add r1, #0xc9
mov r0, #1
strb r0, [r1]
_022058DC:
mov r0, #0xcd
mov r1, #0
lsl r0, r0, #2
str r1, [r6, r0]
add r2, r1, #0
mov r0, #0x51
ldr r1, [sp, #0x2c]
lsl r0, r0, #4
strb r2, [r1, r0]
_022058EE:
mov r0, #1
str r0, [sp, #0x24]
_022058F2:
add r0, r4, #0
add r0, #0xc9
ldrb r0, [r0]
cmp r0, #0
bne _022058FE
b _02205A42
_022058FE:
mov r1, #0
add r0, sp, #0x54
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
add r0, r4, #0
add r0, #0xd5
ldrb r1, [r0]
mov r0, #0x14
mul r0, r1
add r2, r4, r0
ldr r0, [r2, #0x30]
str r0, [sp, #0x20]
ldr r0, [r2, #0x34]
str r0, [sp, #0x1c]
ldr r0, [sp, #0x14]
bl ov96_022073F0
add r7, r0, #0
ldr r0, [sp, #0x20]
ldr r1, [sp, #0x1c]
bl _fmul
bl _f2d
ldr r3, _02205AE4 ; =0x40200000
mov r2, #0
bl _ddiv
add r3, r1, #0
add r2, r0, #0
ldr r1, _02205AE8 ; =0x40B00000
mov r0, #0
bl _dmul
bl _dfix
str r0, [sp, #0x34]
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x10]
add r2, sp, #0x60
bl VEC_Subtract
add r1, sp, #0x60
ldr r0, [sp, #0x34]
add r2, sp, #0x54
add r3, r1, #0
bl VEC_MultAdd
add r0, sp, #0x60
bl VEC_Mag
asr r1, r0, #0xb
lsr r1, r1, #0x14
add r1, r0, r1
asr r0, r1, #0xc
bl _fflt
add r2, r4, #0
add r2, #0x88
add r3, sp, #0x6c
ldmia r2!, {r0, r1}
mov ip, r3
stmia r3!, {r0, r1}
ldr r0, [r2]
add r1, sp, #0x60
str r0, [r3]
mov r0, ip
mov r2, ip
bl ov96_02207400
add r0, sp, #0x6c
bl VEC_Mag
bl _fflt
str r0, [sp, #0x38]
ldr r0, _02205AEC ; =0x45800000
add r1, r7, #0
bl _fmul
add r1, r0, #0
ldr r0, [sp, #0x38]
bl _fgr
bls _022059EA
mov r1, #0
add r0, sp, #0x3c
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
add r0, sp, #0x6c
add r1, r0, #0
bl VEC_Normalize
ldr r0, _02205AEC ; =0x45800000
add r1, r7, #0
bl _fmul
bl _ffix
ldr r3, [sp, #8]
add r1, sp, #0x6c
add r2, sp, #0x3c
bl VEC_MultAdd
ldr r0, _02205AEC ; =0x45800000
add r1, r7, #0
bl _fmul
bl _ffix
add r1, sp, #0x6c
add r2, sp, #0x3c
add r3, sp, #0x48
bl VEC_MultAdd
b _02205A00
_022059EA:
ldr r0, [sp, #4]
ldr r2, [sp, #8]
add r1, sp, #0x60
bl ov96_02207400
add r3, sp, #0x60
ldmia r3!, {r0, r1}
add r2, sp, #0x48
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
_02205A00:
ldr r0, [sp, #4]
bl ov96_022079B8
add r1, r4, #0
add r1, #0xd4
strb r0, [r1]
ldr r1, [sp, #0x2c]
ldr r0, _02205AF0 ; =0x0000051B
mov r2, #1
strb r2, [r1, r0]
ldr r1, [r4, #0x7c]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r2, r0, #0xc
ldr r1, [sp, #0x2c]
ldr r0, _02205AF4 ; =0x00000522
strh r2, [r1, r0]
add r0, r4, #0
add r0, #0x80
ldr r1, [r0]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r2, r0, #0xc
mov r0, #0x52
ldr r1, [sp, #0x2c]
lsl r0, r0, #4
strh r2, [r1, r0]
add r1, r4, #0
add r1, #0xc9
mov r0, #0
strb r0, [r1]
_02205A42:
ldr r0, [sp, #0x24]
cmp r0, #0
beq _02205A72
add r1, r4, #0
add r1, #0x9e
mov r0, #0
strh r0, [r1]
add r1, r4, #0
add r1, #0xa0
str r0, [r1]
add r1, r4, #0
add r1, #0xa4
str r0, [r1]
add r1, r4, #0
add r3, r4, #0
add r1, #0xa8
add r2, r4, #0
add r3, #0xa0
str r0, [r1]
ldmia r3!, {r0, r1}
add r2, #0xac
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
_02205A72:
ldr r0, [sp, #0x18]
add r5, #0xc
add r0, #0x28
str r0, [sp, #0x18]
ldr r0, [sp, #0x14]
add r4, #0xb8
add r0, #0xb8
str r0, [sp, #0x14]
ldr r0, [sp, #0x10]
add r6, r6, #4
add r0, #0xb8
str r0, [sp, #0x10]
ldr r0, [sp, #0xc]
add r0, #0xb8
str r0, [sp, #0xc]
ldr r0, [sp, #8]
add r0, #0xb8
str r0, [sp, #8]
ldr r0, [sp, #4]
add r0, #0xb8
str r0, [sp, #4]
ldr r0, [sp, #0x30]
add r0, r0, #1
str r0, [sp, #0x30]
cmp r0, #4
bge _02205AA8
b _02205664
_02205AA8:
ldr r0, [sp]
bl ov96_02205E30
ldr r0, [sp, #0x2c]
bl ov96_02207870
ldr r1, _02205AF8 ; =0x0000050C
ldr r0, [sp, #0x2c]
ldrh r0, [r0, r1]
cmp r0, #0
bne _02205AC6
mov r2, #1
add r1, r1, #2
ldr r0, [sp, #0x2c]
b _02205ACC
_02205AC6:
ldr r0, [sp, #0x2c]
mov r2, #0
add r1, r1, #2
_02205ACC:
strb r2, [r0, r1]
ldr r0, [sp, #0x28]
add r0, #0x28
str r0, [sp, #0x28]
bl ov96_021E8A20
add r1, r0, #0
ldr r0, [sp, #0x2c]
bl ov96_02205AFC
_02205AE0:
add sp, #0x78
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02205AE4: .word 0x40200000
_02205AE8: .word 0x40B00000
_02205AEC: .word 0x45800000
_02205AF0: .word 0x0000051B
_02205AF4: .word 0x00000522
_02205AF8: .word 0x0000050C
thumb_func_end ov96_022055AC
thumb_func_start ov96_02205AFC
ov96_02205AFC: ; 0x02205AFC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r0, [sp, #0x14]
mov r0, #0
str r0, [sp, #0xc]
str r0, [sp, #8]
ldr r0, [sp, #0xc]
ldr r3, [sp, #0x14]
str r0, [sp, #4]
mov r0, #0x57
ldr r2, [sp, #0xc]
str r1, [sp]
add r4, r1, #0
lsl r0, r0, #4
_02205B18:
ldr r1, [r3, r0]
add r2, r2, #1
strh r1, [r4, #0x18]
add r3, #0x14
add r4, r4, #2
cmp r2, #5
blt _02205B18
ldr r0, [sp, #0x14]
ldr r1, [sp]
mov r3, #0
add r0, #0x24
add r2, r1, #0
add r5, r3, #0
_02205B32:
add r4, r0, #0
add r4, #0xaa
ldrb r4, [r4]
ldr r6, [r0, #0x58]
lsl r4, r4, #0x1c
str r4, [sp, #0x10]
add r4, r0, #0
add r4, #0xac
ldrh r4, [r4]
lsl r4, r4, #0x12
mov lr, r4
asr r4, r6, #0xb
lsr r4, r4, #0x14
add r4, r6, r4
asr r7, r4, #0xc
ldr r4, [r0, #0x5c]
mov ip, r4
asr r4, r4, #0xb
lsr r6, r4, #0x14
mov r4, ip
add r6, r4, r6
asr r4, r6, #0xc
lsl r4, r4, #9
orr r4, r7
mov r6, lr
orr r6, r4
ldr r4, [sp, #0x10]
orr r4, r6
stmia r1!, {r4}
add r6, r0, #0
add r6, #0xb1
ldrb r6, [r6]
ldrh r4, [r2, #0x18]
lsl r6, r6, #5
orr r4, r6
add r6, r0, #0
strh r4, [r2, #0x18]
add r6, #0xb0
ldrb r6, [r6]
ldrh r4, [r2, #0x18]
sub r6, r6, #1
lsl r6, r6, #7
orr r4, r6
add r6, r0, #0
strh r4, [r2, #0x18]
add r6, #0xa6
ldrb r6, [r6]
ldrh r4, [r2, #0x18]
lsl r6, r6, #9
orr r4, r6
add r6, r0, #0
strh r4, [r2, #0x18]
add r6, #0xa7
ldrb r6, [r6]
ldrh r4, [r2, #0x18]
lsl r6, r6, #0xb
orr r4, r6
strh r4, [r2, #0x18]
add r4, r0, #0
add r4, #0xab
ldrb r4, [r4]
add r2, r2, #2
add r6, r4, #0
lsl r6, r3
ldr r4, [sp, #8]
orr r4, r6
lsl r4, r4, #0x18
lsr r4, r4, #0x18
str r4, [sp, #8]
add r4, r0, #0
add r4, #0x9d
ldrb r4, [r4]
add r0, #0xb8
add r6, r4, #0
lsl r6, r5
ldr r4, [sp, #0xc]
add r5, r5, #2
orr r4, r6
lsl r4, r4, #0x18
lsr r4, r4, #0x18
str r4, [sp, #0xc]
ldr r4, [sp, #0x14]
add r6, r4, r3
ldr r4, _02205C8C ; =0x000006BC
ldrb r4, [r6, r4]
add r6, r4, #0
lsl r6, r3
ldr r4, [sp, #4]
add r3, r3, #1
orr r4, r6
lsl r4, r4, #0x18
lsr r4, r4, #0x18
str r4, [sp, #4]
cmp r3, #4
blt _02205B32
ldr r0, [sp]
mov r2, #0
str r2, [r0, #0x14]
ldr r0, _02205C90 ; =0x0000051E
ldr r1, [sp, #0x14]
ldr r3, [sp]
ldrh r1, [r1, r0]
sub r4, r0, #2
orr r1, r2
str r1, [r3, #0x14]
ldr r3, [sp, #0x14]
ldrh r3, [r3, r4]
sub r4, r0, #5
lsl r3, r3, #9
orr r1, r3
ldr r3, [sp]
str r1, [r3, #0x14]
ldr r3, [sp, #0x14]
ldrb r3, [r3, r4]
lsl r3, r3, #0x12
orr r3, r1
ldr r1, [sp]
str r3, [r1, #0x14]
ldr r1, [sp, #4]
lsl r1, r1, #0x13
orr r3, r1
ldr r1, [sp]
str r3, [r1, #0x14]
str r2, [r1, #0x10]
ldr r1, [sp, #0x14]
add r3, r0, #4
ldrh r1, [r1, r3]
add r3, r2, #0
add r2, r0, #2
orr r3, r1
ldr r1, [sp]
str r3, [r1, #0x10]
ldr r1, [sp, #0x14]
ldrh r1, [r1, r2]
sub r2, r0, #3
lsl r1, r1, #9
orr r3, r1
ldr r1, [sp]
str r3, [r1, #0x10]
ldr r1, [sp, #0x14]
ldrb r1, [r1, r2]
add r2, r3, #0
lsl r1, r1, #0x12
orr r2, r1
ldr r1, [sp]
str r2, [r1, #0x10]
ldr r1, [sp, #8]
lsl r1, r1, #0x13
orr r2, r1
ldr r1, [sp]
add r3, r2, #0
str r2, [r1, #0x10]
add r2, r0, #0
ldr r1, [sp, #0xc]
sub r2, #0x10
lsl r1, r1, #0x17
orr r3, r1
ldr r1, [sp]
sub r0, #0x12
str r3, [r1, #0x10]
ldr r1, [sp, #0x14]
ldrb r1, [r1, r2]
add r2, r3, #0
lsl r1, r1, #0x1f
orr r2, r1
ldr r1, [sp]
str r2, [r1, #0x10]
ldr r1, [sp, #0x14]
ldrh r1, [r1, r0]
ldr r0, [sp]
strh r1, [r0, #0x22]
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02205C8C: .word 0x000006BC
_02205C90: .word 0x0000051E
thumb_func_end ov96_02205AFC
thumb_func_start ov96_02205C94
ov96_02205C94: ; 0x02205C94
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r6, r0, #0
add r0, r5, #0
bl ov96_021E5F54
add r7, r0, #0
bl ov96_021E8A20
add r4, r0, #0
mov r0, #0
add r7, #0xf0
str r0, [r4]
add r0, r7, #0
bl ov96_021E8A20
ldr r0, [r0, #0x10]
mov r1, #1
lsr r0, r0, #0x1f
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _02205CE4
ldr r0, [r6, #0x20]
bl ov96_021EB63C
mov r0, #0xd2
lsl r0, r0, #2
ldr r0, [r6, r0]
mov r1, #1
bl ov96_021EB144
ldr r1, _02205D28 ; =ov96_02207C64
add r0, r5, #0
bl ov96_021E8324
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02205CE4:
bl System_GetTouchNew
cmp r0, #0
beq _02205D06
add r0, r5, #0
bl ov96_021E5F24
add r1, r0, #0
mov r0, #1
lsl r1, r1, #0x18
str r0, [sp]
add r0, r5, #0
lsr r1, r1, #0x18
mov r2, #3
mov r3, #0
bl ov96_021E8228
_02205D06:
bl System_GetTouchHeld
cmp r0, #0
beq _02205D1C
ldr r0, _02205D2C ; =gSystem + 0x40
ldrh r1, [r0, #0x20]
strb r1, [r4, #4]
ldrh r0, [r0, #0x22]
strb r0, [r4, #5]
mov r0, #1
str r0, [r4]
_02205D1C:
add r0, r5, #0
bl ov96_02205D30
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_02205D28: .word ov96_02207C64
_02205D2C: .word gSystem + 0x40
thumb_func_end ov96_02205C94
thumb_func_start ov96_02205D30
ov96_02205D30: ; 0x02205D30
push {r4, r5, r6, r7, lr}
sub sp, #0xc
str r0, [sp]
bl ov96_021E5DC4
add r5, r0, #0
ldr r0, [sp]
bl ov96_021E5F54
str r0, [sp, #8]
add r0, #0xf0
bl ov96_021E8A20
add r4, r0, #0
ldr r0, [sp]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
lsl r0, r0, #2
ldr r1, [r4, r0]
ldr r0, _02205DD0 ; =0x000001FF
add r7, r1, #0
lsr r1, r1, #9
add r6, r1, #0
and r7, r0
and r6, r0
mov r1, #0
add r3, r7, #0
ldr r0, [r5]
add r2, r1, #0
sub r3, #0x80
bl ScheduleSetBgPosText
add r3, r6, #0
ldr r0, [r5]
mov r1, #0
mov r2, #3
sub r3, #0x60
bl ScheduleSetBgPosText
add r2, r5, #0
ldr r0, [sp]
ldr r1, [sp, #4]
ldr r3, [sp, #8]
add r2, #0x24
bl ov96_02206380
add r0, r5, #0
add r1, r7, #0
add r2, r6, #0
bl ov96_02206A24
add r0, r5, #0
add r1, r7, #0
add r2, r6, #0
bl ov96_02206AC0
add r0, r5, #0
add r1, r4, #0
add r2, r7, #0
add r3, r6, #0
bl ov96_02206B80
add r0, r5, #0
bl ov96_02207BE4
mov r0, #0x37
lsl r0, r0, #4
ldrh r1, [r4, #0x22]
ldr r0, [r5, r0]
bl ov96_02208740
ldrh r1, [r4, #0x22]
ldr r0, [sp]
bl ov96_021E6454
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02205DD0: .word 0x000001FF
thumb_func_end ov96_02205D30
thumb_func_start ov96_02205DD4
ov96_02205DD4: ; 0x02205DD4
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r6, r2, #0
mov r2, #0xb8
add r0, #0x24
mul r2, r1
add r5, r0, r2
add r0, r5, #0
add r0, #0xb1
ldrb r0, [r0]
add r4, r3, #0
cmp r0, #3
blo _02205DF2
bl GF_AssertFail
_02205DF2:
add r0, r5, #0
add r0, #0xb1
ldrb r0, [r0]
mov r1, #0x80
mov r2, #0x60
lsl r0, r0, #2
ldr r5, [r5, r0]
add r0, sp, #4
str r0, [sp]
add r0, r5, #0
add r3, sp, #8
bl ov96_021EB0A4
str r4, [sp]
ldr r1, [sp, #8]
ldr r2, [sp, #4]
add r0, r5, #0
lsl r1, r1, #0xc
lsl r2, r2, #0xc
add r3, r6, #0
bl ov96_021EB0CC
cmp r0, #0
beq _02205E28
add sp, #0xc
mov r0, #1
pop {r3, r4, r5, r6, pc}
_02205E28:
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_02205DD4
thumb_func_start ov96_02205E30
ov96_02205E30: ; 0x02205E30
push {r4, r5, r6, r7, lr}
sub sp, #0x4c
str r0, [sp, #8]
bl ov96_021E5DC4
add r6, r0, #0
mov r0, #0
ldr r1, _02206150 ; =0x00000519
add r5, r6, #0
str r0, [sp, #0x14]
strb r0, [r6, r1]
add r4, sp, #0x24
add r7, r6, #0
add r5, #0x24
_02205E4C:
mov r0, #0
strb r0, [r4]
add r0, r7, #0
add r0, #0xc8
ldrb r0, [r0]
cmp r0, #0
beq _02205E68
ldr r0, [sp, #8]
add r1, r6, #0
add r2, r5, #0
bl ov96_02206368
mov r0, #1
strb r0, [r4]
_02205E68:
ldr r0, [sp, #0x14]
add r4, r4, #1
add r0, r0, #1
add r7, #0xb8
add r5, #0xb8
str r0, [sp, #0x14]
cmp r0, #4
blt _02205E4C
mov r0, #0
str r0, [sp, #0xc]
add r0, sp, #0x24
str r0, [sp, #0x10]
ldr r0, _02206154 ; =0x000006BC
add r5, r6, #0
add r5, #0x24
add r0, r6, r0
ldr r7, _02206158 ; =0x33333333
str r5, [sp, #0x18]
str r0, [sp, #0x20]
_02205E8E:
ldr r0, [sp, #0x10]
ldrb r0, [r0]
cmp r0, #0
beq _02205E98
b _02206326
_02205E98:
add r0, r5, #0
bl ov96_02207B8C
cmp r0, #0
beq _02205EFA
add r0, r5, #0
add r0, #0xaa
ldrb r0, [r0]
bl ov96_02207BD4
add r1, r5, #0
add r1, #0xa7
strb r0, [r1]
add r1, r5, #0
add r1, #0xaa
mov r0, #0
strb r0, [r1]
add r1, r5, #0
add r1, #0xab
mov r0, #1
strb r0, [r1]
mov r0, #0
str r0, [r5, #0x64]
str r0, [r5, #0x68]
add r1, r5, #0
str r0, [r5, #0x6c]
add r2, r5, #0
add r1, #0xb0
mov r0, #2
strb r0, [r1]
add r1, r5, #0
add r1, #0xa9
mov r0, #0xa
strb r0, [r1]
add r0, r5, #0
add r0, #0xa7
ldrb r0, [r0]
add r1, r5, #0
add r1, #0x98
str r0, [sp]
ldr r1, [r1]
add r2, #0xb1
lsl r1, r1, #0x18
ldrb r2, [r2]
ldr r0, [sp, #8]
lsr r1, r1, #0x18
mov r3, #3
bl ov96_021E8228
_02205EFA:
add r0, r5, #0
add r0, #0xa9
ldrb r0, [r0]
cmp r0, #0
beq _02205FB2
add r0, r5, #0
add r0, #0xab
ldrb r0, [r0]
cmp r0, #0
beq _02205FB2
add r0, r5, #0
add r0, #0xa8
ldrb r0, [r0]
cmp r0, #0
bne _02205FA4
add r0, r5, #0
add r0, #0xa7
ldrb r0, [r0]
cmp r0, #0
beq _02205F50
add r0, r5, #0
add r0, #0xac
ldrh r0, [r0]
add r1, r0, #1
add r0, r5, #0
add r0, #0xac
strh r1, [r0]
add r0, r5, #0
add r0, #0xac
ldrh r1, [r0]
ldr r0, _0220615C ; =0x000003E7
cmp r1, r0
bls _02205F42
add r1, r5, #0
add r1, #0xac
strh r0, [r1]
_02205F42:
add r0, r5, #0
add r0, #0xa7
ldrb r0, [r0]
sub r1, r0, #1
add r0, r5, #0
add r0, #0xa7
strb r1, [r0]
_02205F50:
add r0, r5, #0
add r0, #0xa9
ldrb r0, [r0]
sub r1, r0, #1
add r0, r5, #0
add r0, #0xa9
strb r1, [r0]
add r0, r5, #0
add r0, #0xa9
ldrb r0, [r0]
cmp r0, #0
bne _02205F9A
add r1, r5, #0
add r1, #0xa9
mov r0, #0
strb r0, [r1]
add r1, r5, #0
add r1, #0x9c
mov r0, #1
strb r0, [r1]
add r1, r5, #0
add r1, #0x9d
strb r0, [r1]
add r1, r5, #0
str r0, [sp]
add r1, #0x98
add r2, r5, #0
ldr r1, [r1]
add r2, #0xb1
lsl r1, r1, #0x18
ldrb r2, [r2]
ldr r0, [sp, #8]
lsr r1, r1, #0x18
mov r3, #7
bl ov96_021E8228
b _02205FB2
_02205F9A:
add r1, r5, #0
add r1, #0xa8
mov r0, #4
strb r0, [r1]
b _02205FB2
_02205FA4:
add r0, r5, #0
add r0, #0xa8
ldrb r0, [r0]
sub r1, r0, #1
add r0, r5, #0
add r0, #0xa8
strb r1, [r0]
_02205FB2:
add r0, r5, #0
add r0, #0xab
ldrb r0, [r0]
cmp r0, #0
beq _02205FBE
b _02206326
_02205FBE:
add r3, r5, #0
add r3, #0x58
ldmia r3!, {r0, r1}
add r2, sp, #0x34
stmia r2!, {r0, r1}
ldr r0, [r3]
add r1, r5, #0
str r0, [r2]
add r0, r5, #0
add r0, #0x58
add r1, #0x64
add r2, r0, #0
bl VEC_Add
mov r0, #0xd
ldr r1, [r5, #0x58]
lsl r0, r0, #0x10
cmp r1, r0
blt _02205FEC
mov r0, #0x13
lsl r0, r0, #0x10
cmp r1, r0
ble _02206006
_02205FEC:
mov r0, #0x1a
ldr r1, [r5, #0x5c]
lsl r0, r0, #0xe
cmp r1, r0
bge _02205FFA
str r0, [r5, #0x5c]
b _02206020
_02205FFA:
mov r0, #0x62
lsl r0, r0, #0xe
cmp r1, r0
ble _02206020
str r0, [r5, #0x5c]
b _02206020
_02206006:
mov r0, #0x1a
ldr r1, [r5, #0x5c]
lsl r0, r0, #0xe
cmp r1, r0
bge _02206014
str r0, [r5, #0x5c]
b _02206020
_02206014:
lsl r0, r0, #2
cmp r1, r0
ble _02206020
mov r0, #0x1a
lsl r0, r0, #0x10
str r0, [r5, #0x5c]
_02206020:
mov r0, #0x62
ldr r1, [r5, #0x5c]
lsl r0, r0, #0xe
cmp r1, r0
ldr r1, [r5, #0x58]
ble _02206044
mov r0, #0xd
lsl r0, r0, #0x10
cmp r1, r0
bge _02206038
str r0, [r5, #0x58]
b _0220605A
_02206038:
mov r0, #0x13
lsl r0, r0, #0x10
cmp r1, r0
ble _0220605A
str r0, [r5, #0x58]
b _0220605A
_02206044:
mov r0, #9
lsl r0, r0, #0x10
cmp r1, r0
bge _02206050
str r0, [r5, #0x58]
b _0220605A
_02206050:
mov r0, #0x17
lsl r0, r0, #0x10
cmp r1, r0
ble _0220605A
str r0, [r5, #0x58]
_0220605A:
add r0, r5, #0
add r0, #0xb1
ldrb r0, [r0]
lsl r0, r0, #2
ldr r0, [r5, r0]
bl ov96_021EAF8C
add r2, r0, #0
add r0, r5, #0
add r0, #0x58
str r0, [sp]
str r0, [sp, #4]
ldr r1, [r5, #0x74]
add r0, r6, #0
add r3, sp, #0x34
bl ov96_02207300
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [r5, #0x74]
cmp r0, #8
bhi _022060DE
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02206092: ; jump table
.short _022061EC - _02206092 - 2 ; case 0
.short _022060A4 - _02206092 - 2 ; case 1
.short _022060BE - _02206092 - 2 ; case 2
.short _022060D8 - _02206092 - 2 ; case 3
.short _022060F4 - _02206092 - 2 ; case 4
.short _0220610E - _02206092 - 2 ; case 5
.short _02206140 - _02206092 - 2 ; case 6
.short _0220618A - _02206092 - 2 ; case 7
.short _022061BC - _02206092 - 2 ; case 8
_022060A4:
ldr r0, [r5, #0x68]
cmp r0, #0
ble _022060DE
bl _dflt
ldr r3, _02206160 ; =0xBFD33333
add r2, r7, #0
bl _dmul
bl _dfix
str r0, [r5, #0x68]
b _022061EC
_022060BE:
ldr r0, [r5, #0x64]
cmp r0, #0
bge _022060DE
bl _dflt
ldr r3, _02206160 ; =0xBFD33333
add r2, r7, #0
bl _dmul
bl _dfix
str r0, [r5, #0x64]
b _022061EC
_022060D8:
ldr r0, [r5, #0x68]
cmp r0, #0
blt _022060E0
_022060DE:
b _022061EC
_022060E0:
bl _dflt
ldr r3, _02206160 ; =0xBFD33333
add r2, r7, #0
bl _dmul
bl _dfix
str r0, [r5, #0x68]
b _022061EC
_022060F4:
ldr r0, [r5, #0x64]
cmp r0, #0
ble _022061EC
bl _dflt
ldr r3, _02206160 ; =0xBFD33333
add r2, r7, #0
bl _dmul
bl _dfix
str r0, [r5, #0x64]
b _022061EC
_0220610E:
ldr r0, [r5, #0x64]
cmp r0, #0
ble _02206126
bl _dflt
ldr r3, _02206160 ; =0xBFD33333
add r2, r7, #0
bl _dmul
bl _dfix
str r0, [r5, #0x64]
_02206126:
ldr r0, [r5, #0x68]
cmp r0, #0
ble _022061EC
bl _dflt
ldr r3, _02206160 ; =0xBFD33333
add r2, r7, #0
bl _dmul
bl _dfix
str r0, [r5, #0x68]
b _022061EC
_02206140:
ldr r0, [r5, #0x64]
cmp r0, #0
bge _02206170
bl _dflt
ldr r3, _02206160 ; =0xBFD33333
b _02206164
nop
_02206150: .word 0x00000519
_02206154: .word 0x000006BC
_02206158: .word 0x33333333
_0220615C: .word 0x000003E7
_02206160: .word 0xBFD33333
_02206164:
add r2, r7, #0
bl _dmul
bl _dfix
str r0, [r5, #0x64]
_02206170:
ldr r0, [r5, #0x68]
cmp r0, #0
ble _022061EC
bl _dflt
ldr r3, _02206340 ; =0xBFD33333
add r2, r7, #0
bl _dmul
bl _dfix
str r0, [r5, #0x68]
b _022061EC
_0220618A:
ldr r0, [r5, #0x64]
cmp r0, #0
bge _022061A2
bl _dflt
ldr r3, _02206340 ; =0xBFD33333
add r2, r7, #0
bl _dmul
bl _dfix
str r0, [r5, #0x64]
_022061A2:
ldr r0, [r5, #0x68]
cmp r0, #0
bge _022061EC
bl _dflt
ldr r3, _02206340 ; =0xBFD33333
add r2, r7, #0
bl _dmul
bl _dfix
str r0, [r5, #0x68]
b _022061EC
_022061BC:
ldr r0, [r5, #0x64]
cmp r0, #0
ble _022061D4
bl _dflt
ldr r3, _02206340 ; =0xBFD33333
add r2, r7, #0
bl _dmul
bl _dfix
str r0, [r5, #0x64]
_022061D4:
ldr r0, [r5, #0x68]
cmp r0, #0
bge _022061EC
bl _dflt
ldr r3, _02206340 ; =0xBFD33333
add r2, r7, #0
bl _dmul
bl _dfix
str r0, [r5, #0x68]
_022061EC:
ldr r0, [sp, #8]
ldr r1, [sp, #0x18]
add r2, sp, #0x40
bl ov96_02207418
ldr r1, _02206344 ; =0x00000519
ldrb r1, [r6, r1]
cmp r1, #0
bne _02206224
cmp r0, #0
beq _02206224
ldr r0, _02206344 ; =0x00000519
mov r1, #1
strb r1, [r6, r0]
ldr r1, [sp, #0x40]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r1, r0, #0xc
ldr r0, _02206348 ; =0x0000051E
strh r1, [r6, r0]
ldr r1, [sp, #0x44]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r1, r0, #0xc
ldr r0, _0220634C ; =0x0000051C
strh r1, [r6, r0]
_02206224:
add r3, r5, #0
add r3, #0x64
ldmia r3!, {r0, r1}
add r2, sp, #0x28
add r4, r2, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
add r0, r4, #0
bl VEC_Mag
cmp r0, #0
ble _022062E2
ldr r0, _02206350 ; =0x40C00000
bl _f2d
add r2, r0, #0
add r3, r1, #0
ldr r0, _02206354 ; =0x9999999A
ldr r1, _02206358 ; =0x3FB99999
bl _dmul
add r3, r1, #0
add r2, r0, #0
ldr r1, _0220635C ; =0x40B00000
mov r0, #0
bl _dmul
bl _dfix
add r4, r0, #0
mov r0, #0x51
lsl r0, r0, #4
ldrb r0, [r6, r0]
cmp r0, #0
beq _02206272
mov r0, #3
lsl r0, r0, #0xc
add r4, r4, r0
_02206272:
add r0, sp, #0x28
add r1, r0, #0
bl VEC_Normalize
asr r0, r4, #0x1f
str r0, [sp, #0x1c]
ldr r0, [sp, #0x28]
ldr r3, [sp, #0x1c]
asr r1, r0, #0x1f
add r2, r4, #0
bl _ll_mul
mov r2, #2
lsl r2, r2, #0xa
add r2, r0, r2
ldr r0, _02206360 ; =0x00000000
ldr r3, [sp, #0x1c]
adc r1, r0
lsl r0, r1, #0x14
lsr r1, r2, #0xc
orr r1, r0
ldr r0, [sp, #0x2c]
str r1, [sp, #0x28]
asr r1, r0, #0x1f
add r2, r4, #0
bl _ll_mul
mov r2, #2
lsl r2, r2, #0xa
add r0, r0, r2
ldr r2, _02206360 ; =0x00000000
adc r1, r2
lsl r1, r1, #0x14
lsr r0, r0, #0xc
orr r0, r1
str r0, [sp, #0x2c]
add r0, sp, #0x28
bl VEC_Mag
add r4, r0, #0
add r0, r5, #0
add r0, #0x64
bl VEC_Mag
cmp r0, r4
blt _022062DC
add r0, r5, #0
add r0, #0x64
add r1, sp, #0x28
add r2, r0, #0
bl VEC_Subtract
b _022062E2
_022062DC:
mov r0, #0
str r0, [r5, #0x64]
str r0, [r5, #0x68]
_022062E2:
add r0, r5, #0
add r0, #0x9c
ldrb r0, [r0]
cmp r0, #0
bne _02206316
add r0, r5, #0
add r0, #0xa6
ldrb r0, [r0]
cmp r0, #1
bne _02206316
add r0, r5, #0
add r0, #0xa2
ldrb r0, [r0]
sub r1, r0, #1
add r0, r5, #0
add r0, #0xa2
strb r1, [r0]
add r0, r5, #0
add r0, #0xa2
ldrb r0, [r0]
cmp r0, #0
bne _02206316
add r1, r5, #0
add r1, #0xa6
mov r0, #0
strb r0, [r1]
_02206316:
ldr r0, _02206364 ; =0x00000564
ldr r3, [sp, #0x20]
ldr r2, [sp, #0xc]
add r0, r6, r0
add r1, r5, #0
add r2, r3, r2
bl ov96_022078B0
_02206326:
ldr r0, [sp, #0x10]
add r5, #0xb8
add r0, r0, #1
str r0, [sp, #0x10]
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, #4
bge _0220633A
b _02205E8E
_0220633A:
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
nop
_02206340: .word 0xBFD33333
_02206344: .word 0x00000519
_02206348: .word 0x0000051E
_0220634C: .word 0x0000051C
_02206350: .word 0x40C00000
_02206354: .word 0x9999999A
_02206358: .word 0x3FB99999
_0220635C: .word 0x40B00000
_02206360: .word 0x00000000
_02206364: .word 0x00000564
thumb_func_end ov96_02205E30
thumb_func_start ov96_02206368
ov96_02206368: ; 0x02206368
add r0, r2, #0
add r0, #0xa4
ldrb r0, [r0]
cmp r0, #0
beq _0220637E
add r0, r2, #0
add r0, #0xa4
ldrb r0, [r0]
add r2, #0xa4
sub r0, r0, #1
strb r0, [r2]
_0220637E:
bx lr
thumb_func_end ov96_02206368
thumb_func_start ov96_02206380
ov96_02206380: ; 0x02206380
push {r4, r5, r6, r7, lr}
sub sp, #0x9c
str r0, [sp, #0x14]
str r1, [sp, #0x18]
add r4, r2, #0
str r3, [sp, #0x1c]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x34]
ldr r0, [sp, #0x1c]
add r0, #0xf0
bl ov96_021E8A20
str r0, [sp, #0x5c]
ldr r0, [sp, #0x14]
bl ov96_021E5DC4
str r0, [sp, #0x60]
ldr r0, [sp, #0x18]
lsl r1, r0, #2
ldr r0, [sp, #0x5c]
ldr r2, [r0, r1]
ldr r0, _022066F4 ; =0x000001FF
add r1, r2, #0
and r1, r0
str r1, [sp, #0x68]
lsr r1, r2, #9
and r1, r0
str r1, [sp, #0x64]
ldr r1, [sp, #0x5c]
ldr r2, [r1, #0x14]
mov r1, #1
lsr r3, r2, #0x12
and r3, r1
lsl r3, r3, #0x18
lsr r3, r3, #0x18
beq _02206454
add r6, r2, #0
lsr r2, r2, #9
add r5, r2, #0
and r6, r0
and r5, r0
ldr r0, _022066F8 ; =0x00000518
ldr r2, [sp, #0x60]
ldrb r2, [r2, r0]
lsl r3, r2, #2
ldr r2, [sp, #0x60]
add r3, r2, r3
add r2, r0, #0
add r2, #0xc
str r6, [r3, r2]
ldr r2, [sp, #0x60]
ldrb r2, [r2, r0]
lsl r3, r2, #2
ldr r2, [sp, #0x60]
add r3, r2, r3
add r2, r0, #0
add r2, #0x1c
str r5, [r3, r2]
ldr r2, [sp, #0x60]
ldrb r0, [r2, r0]
lsl r2, r0, #2
ldr r0, [sp, #0x60]
add r2, r0, r2
mov r0, #0xd3
lsl r0, r0, #2
ldr r0, [r2, r0]
add r2, r1, #0
bl ov96_021EB52C
ldr r1, _022066F8 ; =0x00000518
ldr r0, [sp, #0x60]
ldrb r0, [r0, r1]
lsl r1, r0, #2
ldr r0, [sp, #0x60]
add r1, r0, r1
mov r0, #0xd3
lsl r0, r0, #2
ldr r0, [r1, r0]
mov r1, #7
bl ov96_021EB564
ldr r0, _022066F8 ; =0x00000518
ldr r1, [sp, #0x60]
add r6, #0x80
ldrb r1, [r1, r0]
add r5, #0x60
add r1, r1, #1
lsr r3, r1, #0x1f
lsl r2, r1, #0x1e
sub r2, r2, r3
mov r1, #0x1e
ror r2, r1
add r2, r3, r2
ldr r1, [sp, #0x60]
mov r3, #1
strb r2, [r1, r0]
ldr r0, [sp, #0x68]
ldr r1, [sp, #0x64]
ldr r2, _022066FC ; =0x000008A3
sub r0, r6, r0
sub r1, r5, r1
bl ov96_02207C38
_02206454:
ldr r0, [sp, #0x5c]
ldr r0, [r0, #0x14]
lsr r1, r0, #0x13
mov r0, #0xf
and r0, r1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
ldr r0, [sp, #0x34]
asr r1, r0
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _02206478
ldr r0, _02206700 ; =0x000008CE
mov r1, #3
bl sub_0200606C
_02206478:
ldr r0, [sp, #0x5c]
mov r1, #1
ldr r0, [r0, #0x10]
lsr r2, r0, #0x12
and r2, r1
lsl r2, r2, #0x18
lsr r2, r2, #0x18
beq _02206510
add r6, r0, #0
ldr r2, _022066F4 ; =0x000001FF
lsr r0, r0, #9
add r5, r0, #0
and r6, r2
and r5, r2
ldr r0, _02206704 ; =0x0000051A
ldr r2, [sp, #0x60]
ldrb r2, [r2, r0]
lsl r3, r2, #2
ldr r2, [sp, #0x60]
add r3, r2, r3
add r2, r0, #0
add r2, #0x2a
str r6, [r3, r2]
ldr r2, [sp, #0x60]
ldrb r2, [r2, r0]
lsl r3, r2, #2
ldr r2, [sp, #0x60]
add r3, r2, r3
add r2, r0, #0
add r2, #0x3a
str r5, [r3, r2]
ldr r2, [sp, #0x60]
ldrb r0, [r2, r0]
lsl r2, r0, #2
ldr r0, [sp, #0x60]
add r2, r0, r2
mov r0, #0xd7
lsl r0, r0, #2
ldr r0, [r2, r0]
add r2, r1, #0
bl ov96_021EB52C
ldr r1, _02206704 ; =0x0000051A
ldr r0, [sp, #0x60]
ldrb r0, [r0, r1]
lsl r1, r0, #2
ldr r0, [sp, #0x60]
add r1, r0, r1
mov r0, #0xd7
lsl r0, r0, #2
ldr r0, [r1, r0]
mov r1, #4
bl ov96_021EB564
ldr r0, _02206704 ; =0x0000051A
ldr r1, [sp, #0x60]
add r6, #0x80
ldrb r1, [r1, r0]
add r5, #0x60
add r1, r1, #1
lsr r3, r1, #0x1f
lsl r2, r1, #0x1e
sub r2, r2, r3
mov r1, #0x1e
ror r2, r1
add r2, r3, r2
ldr r1, [sp, #0x60]
mov r3, #1
strb r2, [r1, r0]
ldr r0, [sp, #0x68]
ldr r1, [sp, #0x64]
ldr r2, _02206708 ; =0x000008CD
sub r0, r6, r0
sub r1, r5, r1
bl ov96_02207C38
_02206510:
ldr r5, [sp, #0x60]
mov r7, #0
add r6, sp, #0x90
_02206516:
mov r0, #0
str r0, [r6]
str r0, [r6, #4]
str r0, [r6, #8]
ldr r0, _0220670C ; =0x00000534
ldr r1, [r5, r0]
ldr r0, [sp, #0x64]
add r1, #0x60
sub r0, r1, r0
ldr r1, _02206710 ; =0x00000524
lsl r0, r0, #0xc
ldr r2, [r5, r1]
ldr r1, [sp, #0x68]
add r2, #0x80
sub r1, r2, r1
lsl r1, r1, #0xc
str r0, [sp, #0x94]
mov r0, #0xd3
str r1, [sp, #0x90]
lsl r0, r0, #2
ldr r0, [r5, r0]
add r1, r6, #0
bl ov96_021EB588
add r7, r7, #1
add r5, r5, #4
cmp r7, #4
blt _02206516
ldr r5, [sp, #0x60]
mov r7, #0
add r6, sp, #0x84
_02206554:
mov r0, #0
str r0, [r6]
str r0, [r6, #4]
str r0, [r6, #8]
ldr r0, _02206714 ; =0x00000554
ldr r1, [r5, r0]
ldr r0, [sp, #0x64]
add r1, #0x60
sub r0, r1, r0
ldr r1, _02206718 ; =0x00000544
lsl r0, r0, #0xc
ldr r2, [r5, r1]
ldr r1, [sp, #0x68]
add r2, #0x80
sub r1, r2, r1
lsl r1, r1, #0xc
str r0, [sp, #0x88]
mov r0, #0xd7
str r1, [sp, #0x84]
lsl r0, r0, #2
ldr r0, [r5, r0]
add r1, r6, #0
bl ov96_021EB588
add r7, r7, #1
add r5, r5, #4
cmp r7, #4
blt _02206554
ldr r0, [sp, #0x60]
bl ov96_022076E4
ldr r0, [sp, #0x18]
cmp r0, #0
bne _0220659E
mov r0, #1
str r0, [sp, #0x20]
b _022065A2
_0220659E:
mov r0, #0
str r0, [sp, #0x20]
_022065A2:
ldr r0, [sp, #0x5c]
mov r6, #0
str r0, [sp, #0x44]
str r0, [sp, #0x40]
ldr r0, [sp, #0x1c]
str r0, [sp, #0x3c]
add r0, #0x50
str r0, [sp, #0x3c]
_022065B2:
ldr r0, [sp, #0x44]
mov r2, #3
ldr r1, [r0]
ldr r0, _022066F4 ; =0x000001FF
add r7, r1, #0
lsr r1, r1, #9
and r7, r0
and r0, r1
str r0, [sp, #0x48]
ldr r0, [sp, #0x40]
ldrh r0, [r0, #0x18]
asr r1, r0, #5
and r1, r2
lsl r1, r1, #0x18
lsr r1, r1, #0x18
str r1, [sp, #0x30]
asr r1, r0, #7
and r1, r2
lsl r1, r1, #0x18
lsr r1, r1, #0x18
add r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
str r1, [sp, #0x54]
asr r1, r0, #9
mov r0, #1
and r1, r0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
str r1, [sp, #0x4c]
ldr r1, [sp, #0x5c]
ldr r1, [r1, #0x10]
lsr r2, r1, #0x13
mov r1, #0xf
and r1, r2
lsl r1, r1, #0x18
lsr r1, r1, #0x18
asr r1, r6
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x50]
ldr r0, [sp, #0x30]
lsl r0, r0, #2
ldr r0, [r4, r0]
str r0, [sp, #0x58]
ldr r0, [sp, #0x14]
bl ov96_021E5D34
cmp r0, r6
bgt _02206622
ldr r0, [sp, #0x3c]
mov r5, #1
bl ov96_021E8A20
b _0220662A
_02206622:
ldr r0, [sp, #0x1c]
mov r5, #0
bl ov96_021E8A20
_0220662A:
ldr r1, [sp, #0x18]
cmp r1, r6
bne _02206658
ldr r1, [sp, #0x30]
lsl r3, r6, #0x18
str r1, [sp]
str r0, [sp, #4]
ldr r0, [sp, #0x20]
mov r1, #0x37
str r0, [sp, #8]
mov r0, #1
str r0, [sp, #0xc]
mov r0, #0
str r0, [sp, #0x10]
ldr r0, [sp, #0x60]
lsl r1, r1, #4
ldr r0, [r0, r1]
ldr r2, [sp, #0x5c]
add r1, r4, #0
lsr r3, r3, #0x18
bl ov96_02206DEC
b _0220667C
_02206658:
ldr r1, [sp, #0x30]
lsl r3, r6, #0x18
str r1, [sp]
str r0, [sp, #4]
ldr r0, [sp, #0x20]
mov r1, #0x37
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
ldr r0, [sp, #0x60]
str r5, [sp, #0x10]
lsl r1, r1, #4
ldr r0, [r0, r1]
ldr r2, [sp, #0x5c]
add r1, r4, #0
lsr r3, r3, #0x18
bl ov96_02206DEC
_0220667C:
ldr r0, [sp, #0x68]
ldr r1, [sp, #0x48]
sub r0, r7, r0
str r0, [sp, #0x38]
add r0, #0x80
str r0, [sp, #0x38]
ldr r0, [sp, #0x64]
sub r1, r1, r0
mov r0, #0x70
ldrsh r0, [r4, r0]
add r1, #0x60
add r0, r1, r0
str r0, [sp, #0x24]
ldr r0, [sp, #0x38]
mov r1, #0x37
lsl r0, r0, #0xc
str r0, [sp, #0x2c]
str r0, [sp, #0x78]
ldr r0, [sp, #0x24]
lsl r1, r1, #4
lsl r0, r0, #0xc
str r0, [sp, #0x28]
str r0, [sp, #0x7c]
mov r0, #0
str r0, [sp, #0x80]
ldr r0, [sp, #0x4c]
str r0, [sp]
ldr r0, [sp, #0x60]
ldr r2, [sp, #0x30]
ldr r0, [r0, r1]
lsl r1, r6, #0x18
ldr r3, [sp, #0x50]
lsr r1, r1, #0x18
bl ov96_02208658
ldr r0, [sp, #0x50]
cmp r0, #0
bne _02206724
mov r1, #0x1f
ldr r0, [sp, #0x38]
mvn r1, r1
cmp r0, r1
blt _022066DA
mov r1, #0x12
lsl r1, r1, #4
cmp r0, r1
ble _022066E8
_022066DA:
mov r1, #0x1f
ldr r0, [sp, #0x24]
mvn r1, r1
cmp r0, r1
blt _0220671C
cmp r0, #0xe0
bgt _0220671C
_022066E8:
ldr r0, [sp, #0x58]
mov r1, #1
bl ov96_021EAB38
b _02206724
nop
_022066F4: .word 0x000001FF
_022066F8: .word 0x00000518
_022066FC: .word 0x000008A3
_02206700: .word 0x000008CE
_02206704: .word 0x0000051A
_02206708: .word 0x000008CD
_0220670C: .word 0x00000534
_02206710: .word 0x00000524
_02206714: .word 0x00000554
_02206718: .word 0x00000544
_0220671C:
ldr r0, [sp, #0x58]
mov r1, #0
bl ov96_021EAB38
_02206724:
mov r7, #0
add r5, r4, #0
_02206728:
ldr r0, [r5]
ldr r1, [sp, #0x38]
ldr r2, [sp, #0x24]
bl ov96_021EAF94
add r7, r7, #1
add r5, r5, #4
cmp r7, #3
blt _02206728
add r1, sp, #0x6c
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
ldr r0, [sp, #0x2c]
add r1, r6, #0
str r0, [sp, #0x6c]
ldr r0, [sp, #0x28]
str r0, [sp, #0x70]
ldr r0, [sp, #0x14]
ldr r2, [sp, #0x30]
bl ov96_021E60C0
ldrb r0, [r0, #5]
cmp r0, #0
beq _02206768
mov r0, #6
ldr r1, [sp, #0x70]
lsl r0, r0, #0xe
sub r0, r1, r0
str r0, [sp, #0x70]
b _02206772
_02206768:
mov r0, #1
ldr r1, [sp, #0x70]
lsl r0, r0, #0x10
sub r0, r1, r0
str r0, [sp, #0x70]
_02206772:
ldr r0, [r4, #0x48]
add r1, sp, #0x6c
bl ov96_021EB588
ldr r1, [sp, #0x24]
add r0, r4, #0
bl ov96_02207718
ldr r0, [sp, #0x50]
cmp r0, #0
bne _02206854
ldr r0, [sp, #0x4c]
mov r5, #0
cmp r0, #1
bne _02206812
add r0, r4, #0
add r0, #0xa3
ldrb r1, [r0]
ldr r0, [sp, #0x4c]
cmp r0, r1
beq _022067A6
mov r1, #1
ldr r0, [r4, #0x48]
add r2, r1, #0
bl ov96_021EB52C
_022067A6:
ldr r0, [sp, #0x58]
mov r1, #0x15
bl ov96_021EAC5C
add r0, r4, #0
mov r1, #0
add r0, #0x72
strb r1, [r0]
ldr r0, [sp, #0x34]
mov r5, #1
cmp r0, r6
bne _022067E8
mov r0, #3
bl sub_02006190
cmp r0, #0
bne _0220681C
ldr r1, [sp, #0x78]
ldr r2, [sp, #0x7c]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
mov r2, #0x89
asr r0, r0, #0xc
asr r1, r1, #0xc
lsl r2, r2, #4
add r3, r5, #0
bl ov96_02207C38
b _0220681C
_022067E8:
mov r0, #4
bl sub_02006190
cmp r0, #0
bne _0220681C
ldr r1, [sp, #0x78]
ldr r2, [sp, #0x7c]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
mov r2, #0x89
asr r0, r0, #0xc
asr r1, r1, #0xc
lsl r2, r2, #4
mov r3, #0
bl ov96_02207C38
b _0220681C
_02206812:
ldr r0, [r4, #0x48]
mov r1, #1
add r2, r5, #0
bl ov96_021EB52C
_0220681C:
cmp r5, #0
bne _02206866
ldr r0, [sp, #0x58]
ldr r1, [sp, #0x54]
bl ov96_021EAC08
add r0, r4, #0
add r0, #0x72
ldrb r0, [r0]
cmp r0, #0
beq _0220684A
ldr r0, [sp, #0x58]
mov r1, #0x1a
bl ov96_021EAC5C
add r0, r4, #0
add r0, #0x72
ldrb r0, [r0]
sub r1, r0, #1
add r0, r4, #0
add r0, #0x72
strb r1, [r0]
b _02206866
_0220684A:
ldr r0, [sp, #0x58]
mov r1, #0
bl ov96_021EAC5C
b _02206866
_02206854:
ldr r0, [r4, #0x48]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
ldr r0, [sp, #0x58]
ldr r1, [sp, #0x54]
bl ov96_021EAC0C
_02206866:
add r1, r4, #0
ldr r0, [sp, #0x4c]
add r1, #0xa3
strb r0, [r1]
ldr r0, [sp, #0x44]
ldr r0, [r0]
lsr r1, r0, #0x1c
mov r0, #0xf
and r0, r1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
mov r1, #0x37
ldr r0, [sp, #0x60]
lsl r1, r1, #4
ldr r0, [r0, r1]
add r1, r6, #0
add r2, r5, #0
bl ov96_02208840
add r0, r4, #0
add r0, #0x73
ldrb r1, [r0]
cmp r1, r5
bhs _022068F2
add r0, r4, #0
mov r1, #0xa
add r0, #0x72
strb r1, [r0]
ldr r0, [r4, #0x54]
mov r1, #8
bl ov96_021EB564
mov r1, #1
ldr r0, [r4, #0x54]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [sp, #0x34]
cmp r0, r6
bne _022068D4
ldr r1, [sp, #0x78]
ldr r2, [sp, #0x7c]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
ldr r2, _02206A14 ; =0x000005E2
asr r0, r0, #0xc
asr r1, r1, #0xc
mov r3, #1
bl ov96_02207C38
b _0220690E
_022068D4:
ldr r1, [sp, #0x78]
ldr r2, [sp, #0x7c]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
ldr r2, _02206A18 ; =0x000005EB
asr r0, r0, #0xc
asr r1, r1, #0xc
mov r3, #0
bl ov96_02207C38
b _0220690E
_022068F2:
ldr r0, [sp, #0x50]
cmp r0, #0
bne _0220690E
cmp r1, r5
bls _0220690E
ldr r0, [r4, #0x54]
mov r1, #9
bl ov96_021EB564
mov r1, #1
ldr r0, [r4, #0x54]
add r2, r1, #0
bl ov96_021EB52C
_0220690E:
add r0, r4, #0
add r0, #0x73
strb r5, [r0]
ldr r0, [r4, #0x54]
add r1, sp, #0x78
bl ov96_021EB588
ldr r0, [sp, #0x44]
ldr r1, _02206A1C ; =0x000003FF
ldr r0, [r0]
lsr r0, r0, #0x12
and r0, r1
lsl r0, r0, #0x10
lsr r7, r0, #0x10
ldr r0, [sp, #0x18]
cmp r0, r6
bne _0220693C
ldr r0, [sp, #0x60]
sub r1, #0x8f
ldr r0, [r0, r1]
add r1, r7, #0
bl ov96_02208374
_0220693C:
add r0, r4, #0
add r0, #0xae
ldrh r0, [r0]
cmp r0, r7
bhs _022069D4
add r0, r4, #0
add r0, #0x78
ldrh r0, [r0]
mov r1, #3
lsl r0, r0, #2
add r0, r4, r0
ldr r0, [r0, #0x4c]
bl ov96_021EB564
add r0, r4, #0
add r0, #0x78
ldrh r0, [r0]
mov r1, #1
add r2, r1, #0
lsl r0, r0, #2
add r0, r4, r0
ldr r0, [r0, #0x4c]
bl ov96_021EB52C
add r0, r4, #0
add r0, #0x78
ldrh r0, [r0]
add r0, r0, #1
lsr r2, r0, #0x1f
lsl r1, r0, #0x1f
sub r1, r1, r2
mov r0, #0x1f
ror r1, r0
add r0, r4, #0
add r1, r2, r1
add r0, #0x78
strh r1, [r0]
mov r1, #0x37
ldr r0, [sp, #0x60]
lsl r1, r1, #4
ldr r0, [r0, r1]
add r1, r6, #0
bl ov96_02208864
ldr r0, [sp, #0x34]
cmp r0, r6
bne _022069B8
ldr r1, [sp, #0x78]
ldr r2, [sp, #0x7c]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
ldr r2, _02206A20 ; =0x0000088F
asr r0, r0, #0xc
asr r1, r1, #0xc
mov r3, #1
bl ov96_02207C38
b _022069D4
_022069B8:
ldr r1, [sp, #0x78]
ldr r2, [sp, #0x7c]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
ldr r2, _02206A20 ; =0x0000088F
asr r0, r0, #0xc
asr r1, r1, #0xc
mov r3, #0
bl ov96_02207C38
_022069D4:
mov r5, #0
_022069D6:
lsl r0, r5, #2
add r0, r4, r0
ldr r0, [r0, #0x4c]
add r1, sp, #0x78
bl ov96_021EB588
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #2
blo _022069D6
add r0, r4, #0
add r0, #0xae
strh r7, [r0]
ldr r0, [sp, #0x44]
add r6, r6, #1
add r0, r0, #4
str r0, [sp, #0x44]
ldr r0, [sp, #0x40]
add r4, #0xb8
add r0, r0, #2
str r0, [sp, #0x40]
ldr r0, [sp, #0x3c]
add r0, #0x28
str r0, [sp, #0x3c]
cmp r6, #4
bge _02206A0E
b _022065B2
_02206A0E:
add sp, #0x9c
pop {r4, r5, r6, r7, pc}
nop
_02206A14: .word 0x000005E2
_02206A18: .word 0x000005EB
_02206A1C: .word 0x000003FF
_02206A20: .word 0x0000088F
thumb_func_end ov96_02206380
thumb_func_start ov96_02206A24
ov96_02206A24: ; 0x02206A24
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r0, [sp]
str r1, [sp, #4]
str r2, [sp, #8]
mov r7, #0
_02206A30:
mov r0, #0xc
add r1, r7, #0
mul r1, r0
ldr r0, [sp]
add r5, r0, r1
mov r0, #0xdf
lsl r0, r0, #2
ldr r0, [r5, r0]
cmp r0, #0
beq _02206AB6
mov r0, #0xe1
lsl r0, r0, #2
ldrh r1, [r5, r0]
ldr r0, [sp, #4]
sub r6, r1, r0
ldr r0, _02206ABC ; =0x00000386
add r6, #0x80
ldrh r1, [r5, r0]
ldr r0, [sp, #8]
sub r4, r1, r0
mov r0, #0
str r0, [sp, #0x14]
lsl r0, r6, #0xc
add r4, #0x60
str r0, [sp, #0xc]
lsl r0, r4, #0xc
str r0, [sp, #0x10]
mov r0, #0xe
lsl r0, r0, #6
ldr r0, [r5, r0]
add r1, sp, #0xc
bl ov96_021EB588
mov r0, #0x1f
mvn r0, r0
cmp r6, r0
blt _02206A9E
mov r0, #0x12
lsl r0, r0, #4
cmp r6, r0
bgt _02206A9E
mov r0, #0x1f
mvn r0, r0
cmp r4, r0
blt _02206A9E
cmp r4, #0xe0
bgt _02206A9E
mov r0, #0xe
lsl r0, r0, #6
mov r1, #1
ldr r0, [r5, r0]
add r2, r1, #0
bl ov96_021EB52C
b _02206AAC
_02206A9E:
mov r0, #0xe
lsl r0, r0, #6
ldr r0, [r5, r0]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
_02206AAC:
add r0, r7, #1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
cmp r7, #0x14
blo _02206A30
_02206AB6:
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_02206ABC: .word 0x00000386
thumb_func_end ov96_02206A24
thumb_func_start ov96_02206AC0
ov96_02206AC0: ; 0x02206AC0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r0, [sp]
str r1, [sp, #4]
str r2, [sp, #8]
mov r7, #0
_02206ACC:
ldr r0, [sp]
lsl r1, r7, #4
add r5, r0, r1
ldr r0, _02206B70 ; =0x0000046C
ldr r0, [r5, r0]
cmp r0, #0
beq _02206B6C
ldr r0, _02206B74 ; =0x00000478
ldrh r1, [r5, r0]
ldr r0, [sp, #4]
sub r6, r1, r0
ldr r0, _02206B78 ; =0x0000047A
add r6, #0x80
ldrh r1, [r5, r0]
ldr r0, [sp, #8]
sub r4, r1, r0
mov r0, #0
str r0, [sp, #0x14]
lsl r0, r6, #0xc
add r4, #0x60
str r0, [sp, #0xc]
lsl r0, r4, #0xc
str r0, [sp, #0x10]
mov r0, #0x47
lsl r0, r0, #4
ldr r0, [r5, r0]
add r1, sp, #0xc
bl ov96_021EB588
ldr r0, _02206B7C ; =0x00000474
add r1, sp, #0xc
ldr r0, [r5, r0]
bl ov96_021EB588
mov r0, #0x1f
mvn r0, r0
cmp r6, r0
blt _02206B48
mov r0, #0x12
lsl r0, r0, #4
cmp r6, r0
bgt _02206B48
mov r0, #0x1f
mvn r0, r0
cmp r4, r0
blt _02206B48
cmp r4, #0xe0
bgt _02206B48
mov r0, #0x47
lsl r0, r0, #4
mov r1, #1
ldr r0, [r5, r0]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, _02206B7C ; =0x00000474
mov r1, #1
ldr r0, [r5, r0]
add r2, r1, #0
bl ov96_021EB52C
b _02206B62
_02206B48:
mov r0, #0x47
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
ldr r0, _02206B7C ; =0x00000474
mov r1, #1
ldr r0, [r5, r0]
mov r2, #0
bl ov96_021EB52C
_02206B62:
add r0, r7, #1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
cmp r7, #0xa
blo _02206ACC
_02206B6C:
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02206B70: .word 0x0000046C
_02206B74: .word 0x00000478
_02206B78: .word 0x0000047A
_02206B7C: .word 0x00000474
thumb_func_end ov96_02206AC0
thumb_func_start ov96_02206B80
ov96_02206B80: ; 0x02206B80
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
add r5, r0, #0
ldr r0, _02206C78 ; =0x00000564
str r1, [sp]
add r0, r5, r0
str r2, [sp, #4]
str r3, [sp, #8]
mov r4, #0
str r0, [sp, #0x18]
_02206B94:
ldr r0, [sp]
lsl r1, r4, #1
add r0, r0, r1
ldrh r1, [r0, #0x18]
mov r0, #0x1f
and r0, r1
str r0, [sp, #0x14]
lsl r0, r0, #2
ldr r1, _02206C7C ; =0x000005C8
add r0, r5, r0
ldrh r2, [r0, r1]
ldr r1, [sp, #4]
sub r7, r2, r1
ldr r1, _02206C80 ; =0x000005CA
add r7, #0x80
ldrh r1, [r0, r1]
ldr r0, [sp, #8]
sub r6, r1, r0
mov r0, #0
str r0, [sp, #0x24]
lsl r0, r7, #0xc
add r6, #0x60
str r0, [sp, #0x1c]
lsl r0, r6, #0xc
str r0, [sp, #0x20]
mov r0, #0x14
mul r0, r4
add r1, r5, r0
str r0, [sp, #0x10]
ldr r0, _02206C84 ; =0x00000568
str r1, [sp, #0xc]
ldr r0, [r1, r0]
add r1, sp, #0x1c
bl ov96_021EB588
ldr r1, [sp, #0xc]
ldr r0, _02206C88 ; =0x0000056C
ldr r0, [r1, r0]
add r1, sp, #0x1c
bl ov96_021EB588
mov r0, #0x1f
mvn r0, r0
cmp r7, r0
blt _02206C22
mov r0, #0x12
lsl r0, r0, #4
cmp r7, r0
bgt _02206C22
mov r0, #0x1f
mvn r0, r0
cmp r6, r0
blt _02206C22
cmp r6, #0xe0
bgt _02206C22
mov r0, #0x14
mul r0, r4
add r7, r5, r0
ldr r0, _02206C84 ; =0x00000568
mov r1, #1
ldr r0, [r7, r0]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, _02206C88 ; =0x0000056C
mov r1, #1
ldr r0, [r7, r0]
add r2, r1, #0
bl ov96_021EB52C
b _02206C40
_02206C22:
mov r0, #0x14
mul r0, r4
add r7, r5, r0
ldr r0, _02206C84 ; =0x00000568
mov r1, #1
ldr r0, [r7, r0]
mov r2, #0
bl ov96_021EB52C
ldr r0, _02206C88 ; =0x0000056C
mov r1, #1
ldr r0, [r7, r0]
mov r2, #0
bl ov96_021EB52C
_02206C40:
ldr r0, _02206C8C ; =0x00000513
add r7, r5, r4
ldrb r1, [r7, r0]
ldr r0, [sp, #0x14]
cmp r0, r1
beq _02206C5E
ldr r1, [sp, #0xc]
ldr r0, _02206C88 ; =0x0000056C
ldr r0, [r1, r0]
mov r1, #4
bl ov96_021EB564
ldr r1, [sp, #0x14]
ldr r0, _02206C8C ; =0x00000513
strb r1, [r7, r0]
_02206C5E:
ldr r1, [sp, #0x18]
ldr r0, [sp, #0x10]
add r0, r1, r0
add r1, r6, #0
bl ov96_022076C0
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #5
blo _02206B94
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02206C78: .word 0x00000564
_02206C7C: .word 0x000005C8
_02206C80: .word 0x000005CA
_02206C84: .word 0x00000568
_02206C88: .word 0x0000056C
_02206C8C: .word 0x00000513
thumb_func_end ov96_02206B80
thumb_func_start ov96_02206C90
ov96_02206C90: ; 0x02206C90
push {r3, r4, r5, lr}
add r4, r1, #0
add r1, #0x9f
ldrb r1, [r1]
ldr r5, [sp, #0x10]
cmp r1, #3
bhi _02206D54
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_02206CAA: ; jump table
.short _02206CB2 - _02206CAA - 2 ; case 0
.short _02206CC8 - _02206CAA - 2 ; case 1
.short _02206D04 - _02206CAA - 2 ; case 2
.short _02206D54 - _02206CAA - 2 ; case 3
_02206CB2:
add r0, r4, #0
mov r1, #0
add r0, #0xa0
strb r1, [r0]
add r0, r4, #0
add r0, #0x9f
ldrb r0, [r0]
add r4, #0x9f
add r0, r0, #1
strb r0, [r4]
pop {r3, r4, r5, pc}
_02206CC8:
mov r0, #0x70
ldrsh r1, [r4, r0]
add r0, r4, #0
add r0, #0x70
add r1, #8
strh r1, [r0]
add r0, r4, #0
add r0, #0xa0
ldrb r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0xa0
strb r1, [r0]
add r0, r4, #0
add r0, #0xa0
ldrb r0, [r0]
cmp r0, #0x20
blo _02206D54
lsl r0, r3, #2
ldr r0, [r4, r0]
mov r1, #0
bl ov96_021EAB38
add r0, r4, #0
add r0, #0x9f
ldrb r0, [r0]
add r4, #0x9f
add r0, r0, #1
strb r0, [r4]
pop {r3, r4, r5, pc}
_02206D04:
ldr r1, [sp, #0x18]
cmp r1, #0
beq _02206D26
add r1, r3, #0
bl ov96_02208448
cmp r0, #0
beq _02206D54
mov r0, #1
strb r0, [r5, #8]
add r0, r4, #0
add r0, #0x9f
ldrb r0, [r0]
add r4, #0x9f
add r0, r0, #1
strb r0, [r4]
pop {r3, r4, r5, pc}
_02206D26:
ldr r1, [sp, #0x14]
cmp r1, #0
beq _02206D48
add r1, r2, #0
bl ov96_02208608
cmp r0, #0
beq _02206D54
mov r0, #1
strb r0, [r5, #8]
add r0, r4, #0
add r0, #0x9f
ldrb r0, [r0]
add r4, #0x9f
add r0, r0, #1
strb r0, [r4]
pop {r3, r4, r5, pc}
_02206D48:
add r0, r4, #0
add r0, #0x9f
ldrb r0, [r0]
add r4, #0x9f
add r0, r0, #1
strb r0, [r4]
_02206D54:
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_02206C90
thumb_func_start ov96_02206D58
ov96_02206D58: ; 0x02206D58
push {r4, lr}
add r4, r0, #0
add r0, #0x9f
ldrb r0, [r0]
cmp r0, #3
bhi _02206DE8
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02206D70: ; jump table
.short _02206D78 - _02206D70 - 2 ; case 0
.short _02206D98 - _02206D70 - 2 ; case 1
.short _02206DD2 - _02206D70 - 2 ; case 2
.short _02206DE8 - _02206D70 - 2 ; case 3
_02206D78:
add r0, r4, #0
mov r1, #0
add r0, #0xa0
strb r1, [r0]
lsl r0, r2, #2
ldr r0, [r4, r0]
mov r1, #1
bl ov96_021EAB38
add r0, r4, #0
add r0, #0x9f
ldrb r0, [r0]
add r4, #0x9f
add r0, r0, #1
strb r0, [r4]
pop {r4, pc}
_02206D98:
mov r0, #0x70
ldrsh r1, [r4, r0]
add r0, r4, #0
add r0, #0x70
sub r1, #8
strh r1, [r0]
add r0, r4, #0
add r0, #0xa0
ldrb r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0xa0
strb r1, [r0]
add r0, r4, #0
add r0, #0xa0
ldrb r0, [r0]
cmp r0, #0x20
blo _02206DE8
add r0, r4, #0
mov r1, #0
add r0, #0x70
strh r1, [r0]
add r0, r4, #0
add r0, #0x9f
ldrb r0, [r0]
add r4, #0x9f
add r0, r0, #1
strb r0, [r4]
pop {r4, pc}
_02206DD2:
ldr r0, [sp, #8]
cmp r0, #0
beq _02206DDC
mov r0, #2
strb r0, [r3, #8]
_02206DDC:
add r0, r4, #0
add r0, #0x9f
ldrb r0, [r0]
add r4, #0x9f
add r0, r0, #1
strb r0, [r4]
_02206DE8:
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02206D58
thumb_func_start ov96_02206DEC
ov96_02206DEC: ; 0x02206DEC
push {r3, r4, lr}
sub sp, #0xc
ldr r2, [r2, #0x10]
lsr r2, r2, #0x17
lsl r2, r2, #0x18
lsr r4, r2, #0x18
lsl r2, r3, #1
asr r4, r2
mov r2, #3
and r2, r4
lsl r2, r2, #0x18
lsr r4, r2, #0x18
add r2, r1, #0
add r2, #0x9e
ldrb r2, [r2]
cmp r2, r4
beq _02206E1C
add r2, r1, #0
add r2, #0x9e
strb r4, [r2]
add r2, r1, #0
mov r4, #0
add r2, #0x9f
strb r4, [r2]
_02206E1C:
add r2, r1, #0
add r2, #0x9e
ldrb r2, [r2]
cmp r2, #0
beq _02206E82
cmp r2, #1
beq _02206E32
cmp r2, #2
beq _02206E5C
add sp, #0xc
pop {r3, r4, pc}
_02206E32:
ldr r2, [sp, #0x20]
cmp r2, #0
beq _02206E42
ldr r2, [sp, #0x28]
cmp r2, #0
beq _02206E42
mov r4, #1
b _02206E44
_02206E42:
mov r4, #0
_02206E44:
ldr r2, [sp, #0x1c]
str r2, [sp]
ldr r2, [sp, #0x24]
str r4, [sp, #4]
str r2, [sp, #8]
add r2, r3, #0
add r3, sp, #8
ldrb r3, [r3, #0x10]
bl ov96_02206C90
add sp, #0xc
pop {r3, r4, pc}
_02206E5C:
ldr r0, [sp, #0x20]
cmp r0, #0
beq _02206E6C
ldr r0, [sp, #0x28]
cmp r0, #0
beq _02206E6C
mov r2, #1
b _02206E6E
_02206E6C:
mov r2, #0
_02206E6E:
ldr r0, [sp, #0x24]
orr r0, r2
str r0, [sp]
add r2, sp, #8
add r0, r1, #0
add r1, r3, #0
ldrb r2, [r2, #0x10]
ldr r3, [sp, #0x1c]
bl ov96_02206D58
_02206E82:
add sp, #0xc
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov96_02206DEC
thumb_func_start ov96_02206E88
ov96_02206E88: ; 0x02206E88
push {r3, r4, r5, r6, r7, lr}
str r3, [sp]
add r5, r1, #0
add r1, r2, #0
ldr r2, [sp]
ldr r6, [sp, #0x18]
bl ov96_021E60D8
add r4, r0, #0
ldr r0, [sp]
mov r1, #0x14
add r7, r0, #0
ldrb r0, [r4]
mul r7, r1
lsl r0, r0, #2
ldr r0, [r5, r0]
bl _fflt
bl _f2d
ldr r3, _02206F18 ; =0x40240000
mov r2, #0
bl _ddiv
bl _d2f
add r1, r6, r7
str r0, [r1, #0x14]
ldrb r0, [r4, #1]
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x50]
strb r0, [r1, #0x1c]
ldrb r0, [r4, #4]
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x14]
bl _fflt
bl _f2d
ldr r3, _02206F18 ; =0x40240000
mov r2, #0
bl _ddiv
bl _d2f
add r1, r6, r7
str r0, [r1, #0xc]
ldrb r0, [r4, #1]
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x28]
bl _fflt
bl _f2d
ldr r3, _02206F18 ; =0x40240000
mov r2, #0
bl _ddiv
bl _d2f
add r1, r6, r7
str r0, [r1, #0x10]
ldrb r0, [r4, #3]
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x3c]
str r0, [r1, #0x18]
pop {r3, r4, r5, r6, r7, pc}
nop
_02206F18: .word 0x40240000
thumb_func_end ov96_02206E88
thumb_func_start ov96_02206F1C
ov96_02206F1C: ; 0x02206F1C
push {r3, r4, r5, r6, r7, lr}
mov ip, r3
mov r3, #0
ldr r6, [sp, #0x18]
mov r5, ip
add r4, r3, #0
_02206F28:
add r3, r3, #1
stmia r5!, {r4}
cmp r3, #0x14
blt _02206F28
asr r3, r1, #0xb
lsr r3, r3, #0x14
add r3, r1, r3
asr r1, r3, #0xc
mov lr, r1
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
asr r7, r1, #0xc
ldr r1, _02206F9C ; =0x0000061C
strb r4, [r6]
add r3, r0, r1
_02206F48:
mov r1, #0xdf
lsl r1, r1, #2
ldr r1, [r0, r1]
cmp r1, #0
beq _02206F98
mov r1, #0xe1
lsl r1, r1, #2
ldrh r2, [r0, r1]
mov r1, lr
mov r5, #0x1f
sub r2, r2, r1
ldr r1, _02206FA0 ; =0x00000386
add r2, #0x80
ldrh r1, [r0, r1]
mvn r5, r5
sub r1, r1, r7
add r1, #0x60
cmp r2, r5
blt _02206F8E
mov r5, #0x12
lsl r5, r5, #4
cmp r2, r5
bgt _02206F8E
mov r2, #0x1f
mvn r2, r2
cmp r1, r2
blt _02206F8E
cmp r1, #0xe0
bgt _02206F8E
ldrb r2, [r6]
add r1, r2, #1
strb r1, [r6]
lsl r2, r2, #2
mov r1, ip
str r3, [r1, r2]
_02206F8E:
add r4, r4, #1
add r0, #0xc
add r3, r3, #4
cmp r4, #0x14
blt _02206F48
_02206F98:
pop {r3, r4, r5, r6, r7, pc}
nop
_02206F9C: .word 0x0000061C
_02206FA0: .word 0x00000386
thumb_func_end ov96_02206F1C
thumb_func_start ov96_02206FA4
ov96_02206FA4: ; 0x02206FA4
push {r4, r5}
ldrh r5, [r1]
ldrh r4, [r1, #2]
add r3, r5, #0
add r1, r4, #0
sub r3, #0x10
str r3, [r2]
sub r1, #0x10
str r1, [r2, #4]
add r5, #0x10
str r5, [r2, #8]
str r1, [r2, #0xc]
str r5, [r2, #0x10]
add r4, #0x10
str r4, [r2, #0x14]
str r3, [r2, #0x18]
str r4, [r2, #0x1c]
ldr r3, [r2]
ldr r1, [r2, #4]
str r3, [r2, #0x20]
str r1, [r2, #0x24]
ldr r3, [r2, #8]
ldr r1, [r2, #0xc]
str r3, [r2, #0x28]
str r1, [r2, #0x2c]
ldr r3, [r2, #8]
ldr r1, [r2, #0xc]
str r3, [r2, #0x30]
str r1, [r2, #0x34]
ldr r3, [r2, #0x10]
ldr r1, [r2, #0x14]
str r3, [r2, #0x38]
str r1, [r2, #0x3c]
ldr r3, [r2, #0x10]
ldr r1, [r2, #0x14]
str r3, [r2, #0x40]
str r1, [r2, #0x44]
ldr r3, [r2, #0x18]
ldr r1, [r2, #0x1c]
str r3, [r2, #0x48]
str r1, [r2, #0x4c]
ldr r3, [r2, #0x18]
ldr r1, [r2, #0x1c]
str r3, [r2, #0x50]
str r1, [r2, #0x54]
ldr r3, [r2]
ldr r1, [r2, #4]
str r3, [r2, #0x58]
str r1, [r2, #0x5c]
ldr r1, [r2, #0x24]
sub r1, r1, r0
str r1, [r2, #0x24]
ldr r1, [r2, #0x2c]
sub r1, r1, r0
str r1, [r2, #0x2c]
ldr r1, [r2, #0x30]
add r1, r1, r0
str r1, [r2, #0x30]
ldr r1, [r2, #0x38]
add r1, r1, r0
str r1, [r2, #0x38]
ldr r1, [r2, #0x44]
add r1, r1, r0
str r1, [r2, #0x44]
ldr r1, [r2, #0x4c]
add r1, r1, r0
str r1, [r2, #0x4c]
ldr r1, [r2, #0x50]
sub r1, r1, r0
str r1, [r2, #0x50]
add r2, #0x58
ldr r1, [r2]
sub r0, r1, r0
str r0, [r2]
pop {r4, r5}
bx lr
thumb_func_end ov96_02206FA4
thumb_func_start ov96_0220703C
ov96_0220703C: ; 0x0220703C
push {r4, r5, r6, r7, lr}
sub sp, #0xa4
str r0, [sp, #4]
ldr r0, [sp, #0xb8]
str r2, [sp, #0xc]
str r0, [sp, #0xb8]
ldr r0, [sp, #4]
str r1, [sp, #8]
ldr r1, [r0]
add r7, r3, #0
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0x24]
ldr r0, [sp, #4]
add r6, r3, #0
ldr r1, [r0, #4]
ldr r2, _022072F8 ; =ov96_0221CB00
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0x28]
ldr r0, [sp, #8]
str r3, [sp, #0x10]
ldr r1, [r0]
add r5, r3, #0
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0x1c]
ldr r0, [sp, #8]
add r3, sp, #0x34
ldr r1, [r0, #4]
mov r4, #0
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0x20]
ldmia r2!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r2!, {r0, r1}
stmia r3!, {r0, r1}
add r7, #0x28
add r6, #0x20
_0220709C:
add r3, sp, #0x34
add r2, sp, #0x94
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
add r0, sp, #0x2c
str r0, [sp]
add r0, r6, #0
add r1, r7, #0
add r2, sp, #0x24
add r3, sp, #0x1c
bl sub_02020F4C
cmp r0, #0
beq _022070DA
ldr r0, [sp, #0x2c]
lsl r1, r0, #0xc
ldr r0, [sp, #0xb8]
str r1, [r0]
ldr r0, [sp, #0x30]
lsl r1, r0, #0xc
ldr r0, [sp, #0xb8]
str r1, [r0, #4]
mov r1, #0
str r1, [r0, #8]
add r0, sp, #0x94
lsl r1, r4, #2
add sp, #0xa4
ldr r0, [r0, r1]
pop {r4, r5, r6, r7, pc}
_022070DA:
mov r0, #0
cmp r4, #0
bne _0220710A
cmp r4, #2
bne _0220710A
ldr r2, [sp, #0x28]
ldr r1, [r5, #0x24]
cmp r2, r1
bne _0220712E
ldr r2, [r5, #0x28]
ldr r3, [r5, #0x20]
cmp r3, r2
bge _022070F8
add r1, r3, #0
b _022070FC
_022070F8:
add r1, r2, #0
add r2, r3, #0
_022070FC:
ldr r3, [sp, #0x24]
cmp r1, r3
bgt _0220712E
cmp r3, r2
bgt _0220712E
mov r0, #1
b _0220712E
_0220710A:
ldr r2, [sp, #0x24]
ldr r1, [r5, #0x20]
cmp r2, r1
bne _0220712E
ldr r2, [r5, #0x2c]
ldr r3, [r5, #0x24]
cmp r3, r2
bge _0220711E
add r1, r3, #0
b _02207122
_0220711E:
add r1, r2, #0
add r2, r3, #0
_02207122:
ldr r3, [sp, #0x28]
cmp r1, r3
bgt _0220712E
cmp r3, r2
bgt _0220712E
mov r0, #1
_0220712E:
cmp r0, #0
beq _02207150
ldr r2, [sp, #4]
ldmia r2!, {r0, r1}
str r2, [sp, #4]
ldr r2, [sp, #0xb8]
stmia r2!, {r0, r1}
ldr r0, [sp, #4]
str r2, [sp, #0xb8]
ldr r1, [r0]
add r0, r2, #0
str r1, [r0]
add r0, sp, #0x94
lsl r1, r4, #2
add sp, #0xa4
ldr r0, [r0, r1]
pop {r4, r5, r6, r7, pc}
_02207150:
add r4, r4, #1
add r7, #0x10
add r6, #0x10
add r5, #0x10
cmp r4, #4
blt _0220709C
ldr r3, _022072FC ; =ov96_0221CAE0
add r2, sp, #0x44
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [sp, #0xc]
ldr r4, [sp, #0x10]
mov r5, #0
lsl r6, r0, #0xc
add r7, sp, #0x6c
_02207172:
add r3, sp, #0x44
add r2, sp, #0x84
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r4]
add r1, sp, #0x78
lsl r0, r0, #0xc
str r0, [sp, #0x78]
ldr r0, [r4, #4]
add r2, r7, #0
lsl r0, r0, #0xc
str r0, [sp, #0x7c]
mov r0, #0
str r0, [sp, #0x80]
ldr r0, [sp, #8]
bl VEC_Subtract
add r0, r7, #0
bl VEC_Mag
cmp r0, r6
bgt _022071E0
ldr r3, [sp, #0xc]
ldr r0, [sp, #4]
ldr r1, [sp, #8]
add r2, sp, #0x78
lsl r3, r3, #0xc
bl ov96_02207390
add r4, r0, #0
ldr r0, [sp, #8]
ldr r1, [sp, #4]
add r2, sp, #0x60
bl VEC_Subtract
ldr r2, [sp, #4]
add r0, r4, #0
add r1, sp, #0x60
add r3, sp, #0x54
bl VEC_MultAdd
ldr r1, [sp, #0x54]
ldr r0, [sp, #0xb8]
str r1, [r0]
ldr r1, [sp, #0x58]
str r1, [r0, #4]
mov r1, #0
str r1, [r0, #8]
add r0, sp, #0x84
lsl r1, r5, #2
add sp, #0xa4
ldr r0, [r0, r1]
pop {r4, r5, r6, r7, pc}
_022071E0:
add r5, r5, #1
add r4, #8
cmp r5, #4
blt _02207172
ldr r0, [sp, #8]
ldr r1, [r0]
ldr r0, [sp, #0x10]
ldr r0, [r0]
lsl r0, r0, #0xc
cmp r0, r1
bgt _022072F2
ldr r0, [sp, #0x10]
ldr r0, [r0, #0x10]
lsl r0, r0, #0xc
cmp r1, r0
bgt _022072F2
ldr r0, [sp, #8]
ldr r1, [r0, #4]
ldr r0, [sp, #0x10]
ldr r0, [r0, #4]
lsl r0, r0, #0xc
cmp r0, r1
bgt _022072F2
ldr r0, [sp, #0x10]
ldr r0, [r0, #0x14]
lsl r0, r0, #0xc
cmp r1, r0
bgt _022072F2
ldr r3, [sp, #8]
ldr r2, [sp, #0xb8]
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
mov r1, #0
str r0, [r2]
ldr r0, [sp, #0x10]
ldr r3, [sp, #0x10]
ldr r0, [r0]
ldr r3, [r3, #0x10]
str r0, [sp, #0x18]
ldr r0, [sp, #8]
str r3, [sp, #0x14]
ldr r2, [r0]
ldr r0, [sp, #0x18]
lsl r3, r3, #0xc
lsl r0, r0, #0xc
sub r0, r0, r2
sub r3, r3, r2
mov ip, r1
cmp r0, #0
bge _0220724A
sub r2, r1, #1
mul r0, r2
_0220724A:
cmp r3, #0
bge _02207254
mov r2, #0
mvn r2, r2
mul r3, r2
_02207254:
cmp r0, r3
bge _0220725C
mov r6, #0xc
b _02207260
_0220725C:
add r0, r3, #0
mov r6, #0xa
_02207260:
ldr r2, [sp, #0x10]
ldr r3, [sp, #8]
ldr r4, [sp, #0x10]
ldr r2, [r2, #4]
ldr r5, [r3, #4]
ldr r7, [r4, #0x14]
lsl r3, r2, #0xc
lsl r4, r7, #0xc
sub r3, r3, r5
sub r4, r4, r5
cmp r3, #0
bge _0220727E
mov r5, #0
mvn r5, r5
mul r3, r5
_0220727E:
cmp r4, #0
bge _02207288
mov r5, #0
mvn r5, r5
mul r4, r5
_02207288:
cmp r3, r4
bge _02207290
mov r4, #9
b _02207294
_02207290:
add r3, r4, #0
mov r4, #0xb
_02207294:
cmp r0, r3
bgt _022072A0
mov r0, #1
mov ip, r0
add r0, r6, #0
b _022072A4
_022072A0:
mov r1, #1
add r0, r4, #0
_022072A4:
mov r3, ip
cmp r3, #0
beq _022072CE
cmp r6, #0xc
bne _022072BE
ldr r2, [sp, #0x18]
ldr r1, [sp, #0xc]
sub r1, r2, r1
lsl r2, r1, #0xc
ldr r1, [sp, #0xb8]
add sp, #0xa4
str r2, [r1]
pop {r4, r5, r6, r7, pc}
_022072BE:
ldr r2, [sp, #0x14]
ldr r1, [sp, #0xc]
add r1, r2, r1
lsl r2, r1, #0xc
ldr r1, [sp, #0xb8]
add sp, #0xa4
str r2, [r1]
pop {r4, r5, r6, r7, pc}
_022072CE:
cmp r1, #0
beq _022072F4
cmp r4, #9
bne _022072E4
ldr r1, [sp, #0xc]
sub r1, r2, r1
lsl r2, r1, #0xc
ldr r1, [sp, #0xb8]
add sp, #0xa4
str r2, [r1, #4]
pop {r4, r5, r6, r7, pc}
_022072E4:
ldr r1, [sp, #0xc]
add r1, r7, r1
lsl r2, r1, #0xc
ldr r1, [sp, #0xb8]
add sp, #0xa4
str r2, [r1, #4]
pop {r4, r5, r6, r7, pc}
_022072F2:
mov r0, #0
_022072F4:
add sp, #0xa4
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_022072F8: .word ov96_0221CB00
_022072FC: .word ov96_0221CAE0
thumb_func_end ov96_0220703C
thumb_func_start ov96_02207300
ov96_02207300: ; 0x02207300
push {r4, r5, r6, r7, lr}
sub sp, #0xcc
str r1, [sp, #4]
ldr r1, [sp, #0xe0]
add r7, r3, #0
str r1, [sp, #0xe0]
ldr r1, [sp, #0xe4]
add r6, r2, #0
str r1, [sp, #0xe4]
add r1, sp, #0xc
str r1, [sp]
ldr r1, [r7]
ldr r2, [r7, #4]
add r3, sp, #0x7c
bl ov96_02206F1C
mov r4, #0
str r4, [sp, #8]
add r0, sp, #0xc
ldrb r0, [r0]
cmp r0, #0
ble _02207388
add r5, sp, #0x7c
_0220732E:
ldr r1, [r5]
add r0, r6, #0
add r2, sp, #0x1c
bl ov96_02206FA4
add r0, sp, #0x10
str r0, [sp]
ldr r1, [sp, #0xe0]
add r0, r7, #0
add r2, r6, #0
add r3, sp, #0x1c
bl ov96_0220703C
cmp r0, #0
beq _0220737C
cmp r0, #9
blt _02207360
ldr r2, [sp, #0x10]
ldr r1, [sp, #0xe4]
str r2, [r1]
ldr r2, [sp, #0x14]
str r2, [r1, #4]
mov r2, #0
str r2, [r1, #8]
b _02207374
_02207360:
ldr r1, [sp, #4]
cmp r0, r1
beq _02207374
ldr r2, [sp, #0x10]
ldr r1, [sp, #0xe4]
str r2, [r1]
ldr r2, [sp, #0x14]
str r2, [r1, #4]
mov r2, #0
str r2, [r1, #8]
_02207374:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #8]
b _02207388
_0220737C:
add r0, sp, #0xc
ldrb r0, [r0]
add r4, r4, #1
add r5, r5, #4
cmp r4, r0
blt _0220732E
_02207388:
ldr r0, [sp, #8]
add sp, #0xcc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02207300
thumb_func_start ov96_02207390
ov96_02207390: ; 0x02207390
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r4, r0, #0
add r6, r2, #0
add r0, r1, #0
add r1, r4, #0
add r2, sp, #0
add r7, r3, #0
bl VEC_Subtract
add r0, sp, #0
bl VEC_Mag
add r5, r0, #0
mul r5, r0
add r0, sp, #0
add r1, r6, #0
bl VEC_DotProduct
add r4, r0, #0
add r0, r6, #0
bl VEC_Mag
add r1, r0, #0
mul r1, r0
add r0, r7, #0
mul r0, r7
sub r0, r1, r0
mul r0, r5
sub r0, r4, r0
bl FX_Sqrt
add r7, r0, #0
sub r0, r7, r4
add r1, r5, #0
bl FX_Div
add r6, r0, #0
add r0, r4, r7
neg r0, r0
add r1, r5, #0
bl FX_Div
cmp r6, r0
bgt _022073EC
add r0, r6, #0
_022073EC:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_02207390
thumb_func_start ov96_022073F0
ov96_022073F0: ; 0x022073F0
mov r2, #0x14
mul r2, r1
add r0, r0, r2
ldr r3, _022073FC ; =_ffltu
ldrb r0, [r0, #0x1c]
bx r3
.balign 4, 0
_022073FC: .word _ffltu
thumb_func_end ov96_022073F0
thumb_func_start ov96_02207400
ov96_02207400: ; 0x02207400
push {r3, r4}
ldr r4, [r0]
ldr r3, [r1]
add r3, r4, r3
str r3, [r2]
ldr r3, [r0, #4]
ldr r0, [r1, #4]
add r0, r3, r0
str r0, [r2, #4]
pop {r3, r4}
bx lr
.balign 4, 0
thumb_func_end ov96_02207400
thumb_func_start ov96_02207418
ov96_02207418: ; 0x02207418
push {r4, r5, r6, r7, lr}
sub sp, #0x84
str r0, [sp, #8]
mov r0, #0
str r1, [sp, #0xc]
str r2, [sp, #0x10]
str r0, [sp, #0x18]
str r0, [sp, #0x80]
str r0, [sp, #0x74]
add r7, r0, #0
add r6, r1, #0
_0220742E:
add r0, r6, #0
add r0, #0xb1
ldrb r1, [r0]
add r0, r6, #0
add r0, #0xab
ldrb r0, [r0]
cmp r0, #0
beq _02207440
b _0220763C
_02207440:
lsl r0, r1, #2
ldr r0, [r6, r0]
str r0, [sp, #0x20]
add r0, sp, #0x2c
str r0, [sp]
ldr r2, [r6, #0x58]
ldr r3, [r6, #0x5c]
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
asr r2, r3, #0xb
lsr r2, r2, #0x14
add r2, r3, r2
ldr r0, [sp, #0x20]
asr r1, r1, #0xc
asr r2, r2, #0xc
add r3, sp, #0x30
bl ov96_021EB0A4
ldr r5, [sp, #0xc]
mov r4, #0
_0220746A:
cmp r7, r4
beq _02207500
add r0, r5, #0
add r0, #0xab
ldrb r0, [r0]
cmp r0, #0
bne _02207500
ldr r0, [sp, #0x30]
str r0, [sp, #0x14]
add r0, r5, #0
add r0, #0xb1
ldrb r0, [r0]
lsl r0, r0, #2
ldr r0, [r5, r0]
str r0, [sp, #0x1c]
add r0, sp, #0x24
str r0, [sp]
ldr r1, [r5, #0x58]
ldr r3, [r5, #0x5c]
asr r2, r1, #0xb
lsr r2, r2, #0x14
add r2, r1, r2
asr r1, r2, #0xc
asr r2, r3, #0xb
lsr r2, r2, #0x14
add r2, r3, r2
ldr r0, [sp, #0x1c]
asr r2, r2, #0xc
add r3, sp, #0x28
bl ov96_021EB0A4
add r0, sp, #0x70
str r0, [sp]
add r0, sp, #0x34
str r0, [sp, #4]
ldr r1, [sp, #0x28]
ldr r2, [sp, #0x24]
ldr r0, [sp, #0x1c]
lsl r1, r1, #0xc
lsl r2, r2, #0xc
add r3, sp, #0x6c
bl ov96_021EAF78
add r0, sp, #0x7c
str r0, [sp]
add r0, sp, #0x38
str r0, [sp, #4]
ldr r1, [sp, #0x14]
ldr r2, [sp, #0x2c]
ldr r0, [sp, #0x20]
lsl r1, r1, #0xc
lsl r2, r2, #0xc
add r3, sp, #0x78
bl ov96_021EAF78
add r0, sp, #0x78
add r1, sp, #0x6c
add r2, sp, #0x60
bl VEC_Subtract
add r0, sp, #0x60
bl VEC_Mag
ldr r2, [sp, #0x34]
ldr r1, [sp, #0x38]
add r1, r2, r1
lsl r1, r1, #0xc
cmp r0, r1
blt _022074F6
b _02207624
_022074F6:
add r0, r6, r4
add r0, #0x94
ldrb r0, [r0]
cmp r0, #0
beq _02207502
_02207500:
b _02207632
_02207502:
ldr r0, [sp, #8]
add r1, r6, #0
add r2, r5, #0
bl ov96_02207A34
cmp r0, #0
bne _0220751E
add r0, r6, #0
mov r1, #6
add r0, #0xa4
strb r1, [r0]
add r0, r5, #0
add r0, #0xa4
strb r1, [r0]
_0220751E:
add r0, r6, #0
add r0, #0x64
bl VEC_Mag
mov r1, #0xb
lsl r1, r1, #0xc
cmp r0, r1
ble _02207552
add r1, sp, #0x54
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
add r0, r6, #0
add r0, #0x64
add r1, r0, #0
bl VEC_Normalize
add r1, r6, #0
mov r0, #0xb
add r1, #0x64
lsl r0, r0, #0xc
add r2, sp, #0x54
add r3, r1, #0
bl VEC_MultAdd
_02207552:
add r0, r5, #0
add r0, #0x64
bl VEC_Mag
mov r1, #0xb
lsl r1, r1, #0xc
cmp r0, r1
ble _02207586
add r1, sp, #0x48
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
add r0, r5, #0
add r0, #0x64
add r1, r0, #0
bl VEC_Normalize
add r1, r5, #0
mov r0, #0xb
add r1, #0x64
lsl r0, r0, #0xc
add r2, sp, #0x48
add r3, r1, #0
bl VEC_MultAdd
_02207586:
add r0, r6, r4
add r0, #0x94
ldrb r0, [r0]
cmp r0, #0
beq _02207594
bl GF_AssertFail
_02207594:
add r0, r5, r7
add r0, #0x94
ldrb r0, [r0]
cmp r0, #0
beq _022075A2
bl GF_AssertFail
_022075A2:
add r1, r6, r4
mov r0, #1
add r1, #0x94
strb r0, [r1]
add r1, r5, r7
add r1, #0x94
strb r0, [r1]
ldr r1, [sp, #0x18]
cmp r1, #0
bne _022075EC
add r2, sp, #0x3c
mov r1, #0
str r1, [r2]
str r1, [r2, #4]
str r1, [r2, #8]
str r0, [sp, #0x18]
add r0, sp, #0x6c
add r1, sp, #0x78
bl VEC_Subtract
add r0, sp, #0x3c
add r1, r0, #0
bl VEC_Normalize
ldr r0, [sp, #0x38]
add r1, sp, #0x3c
lsl r0, r0, #0xc
add r2, sp, #0x78
add r3, r1, #0
bl VEC_MultAdd
add r3, sp, #0x3c
ldr r2, [sp, #0x10]
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
_022075EC:
mov r0, #1
add r1, r6, #0
str r0, [sp]
add r1, #0x98
add r2, r6, #0
ldr r1, [r1]
add r2, #0xb1
lsl r1, r1, #0x18
ldrb r2, [r2]
ldr r0, [sp, #8]
lsr r1, r1, #0x18
mov r3, #4
bl ov96_021E8228
add r1, r5, #0
mov r0, #1
str r0, [sp]
add r1, #0x98
ldr r1, [r1]
add r5, #0xb1
lsl r1, r1, #0x18
ldrb r2, [r5]
ldr r0, [sp, #8]
lsr r1, r1, #0x18
mov r3, #4
bl ov96_021E8228
b _0220763C
_02207624:
add r1, r6, r4
add r1, #0x94
mov r0, #0
strb r0, [r1]
add r1, r7, r5
add r1, #0x94
strb r0, [r1]
_02207632:
add r4, r4, #1
add r5, #0xb8
cmp r4, #4
bge _0220763C
b _0220746A
_0220763C:
add r7, r7, #1
add r6, #0xb8
cmp r7, #4
bge _02207646
b _0220742E
_02207646:
ldr r0, [sp, #0x18]
add sp, #0x84
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_02207418
thumb_func_start ov96_0220764C
ov96_0220764C: ; 0x0220764C
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
mov r7, #0x47
mov r6, #0
add r4, r5, #0
lsl r7, r7, #4
_02207658:
ldr r0, _022076BC ; =0x00000474
mov r1, #3
ldr r0, [r4, r0]
bl ov96_021EB630
mov r0, #0x47
lsl r0, r0, #4
ldr r0, [r4, r0]
bl ov96_021EB594
ldr r1, [r0, #4]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
bl ov96_02207BD8
add r1, r0, #0
ldr r0, [r4, r7]
add r1, r1, #7
bl ov96_021EB630
add r6, r6, #1
add r4, #0x10
cmp r6, #0xa
blt _02207658
mov r7, #0xe
lsl r7, r7, #6
mov r4, #0
add r6, r7, #0
_02207694:
ldr r0, [r5, r7]
bl ov96_021EB594
ldr r1, [r0, #4]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
bl ov96_02207BD8
add r1, r0, #0
ldr r0, [r5, r6]
add r1, r1, #1
bl ov96_021EB630
add r4, r4, #1
add r5, #0xc
cmp r4, #0x14
blt _02207694
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_022076BC: .word 0x00000474
thumb_func_end ov96_0220764C
thumb_func_start ov96_022076C0
ov96_022076C0: ; 0x022076C0
push {r3, r4, r5, lr}
add r5, r0, #0
add r0, r1, #0
bl ov96_02207BD8
add r4, r0, #0
add r1, r4, #0
ldr r0, [r5, #4]
add r1, #9
bl ov96_021EB630
add r4, #8
ldr r0, [r5, #8]
add r1, r4, #0
bl ov96_021EB630
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_022076C0
thumb_func_start ov96_022076E4
ov96_022076E4: ; 0x022076E4
push {r3, r4, r5, r6, r7, lr}
mov r7, #0xd7
lsl r7, r7, #2
add r5, r0, #0
mov r4, #0
add r6, r7, #0
_022076F0:
ldr r0, [r5, r7]
bl ov96_021EB594
ldr r1, [r0, #4]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
bl ov96_02207BD8
add r1, r0, #0
ldr r0, [r5, r6]
add r1, r1, #2
bl ov96_021EB630
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
blt _022076F0
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_022076E4
thumb_func_start ov96_02207718
ov96_02207718: ; 0x02207718
push {r4, r5, r6, lr}
add r5, r0, #0
add r0, r1, #0
bl ov96_02207BD8
add r6, r0, #0
ldr r0, [r5, #0x48]
add r1, r6, #3
bl ov96_021EB630
mov r4, #0
_0220772E:
ldr r0, [r5]
add r1, r6, #4
bl ov96_021EABA8
add r4, r4, #1
add r5, r5, #4
cmp r4, #3
blt _0220772E
pop {r4, r5, r6, pc}
thumb_func_end ov96_02207718
thumb_func_start ov96_02207740
ov96_02207740: ; 0x02207740
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
ldr r0, [r4]
ldr r2, _02207770 ; =ov96_0221CAC0
add r1, r4, #4
bl AddWindow
mov r2, #0
str r2, [sp]
ldr r0, [r4]
mov r1, #3
mov r3, #1
bl BG_FillCharDataRange
mov r1, #0x1e
ldr r2, [r4, #0x14]
mov r0, #0
lsl r1, r1, #4
bl LoadFontPal0
add sp, #4
pop {r3, r4, pc}
nop
_02207770: .word ov96_0221CAC0
thumb_func_end ov96_02207740
thumb_func_start ov96_02207774
ov96_02207774: ; 0x02207774
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
add r7, r1, #0
add r0, r5, #4
mov r1, #0
bl FillWindowPixelBuffer
ldr r2, _022077EC ; =0x00000135
ldr r3, [r5, #0x14]
mov r0, #1
mov r1, #0x1b
bl NewMsgDataFromNarc
add r4, r0, #0
ldr r0, [r5, #0x14]
bl MessageFormat_New
mov r1, #0
str r1, [sp]
mov r2, #1
str r2, [sp, #4]
add r2, r7, #0
mov r3, #3
add r6, r0, #0
bl BufferIntegerAsString
ldr r3, [r5, #0x14]
add r0, r6, #0
add r1, r4, #0
mov r2, #0x9d
bl ReadMsgData_ExpandPlaceholders
add r7, r0, #0
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _022077F0 ; =0x000F0E00
mov r1, #4
str r0, [sp, #8]
add r0, r5, #4
add r2, r7, #0
str r3, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r7, #0
bl String_Delete
add r0, r6, #0
bl MessageFormat_Delete
add r0, r4, #0
bl DestroyMsgData
add r0, r5, #4
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_022077EC: .word 0x00000135
_022077F0: .word 0x000F0E00
thumb_func_end ov96_02207774
thumb_func_start ov96_022077F4
ov96_022077F4: ; 0x022077F4
ldr r1, _022077FC ; =0x00000618
mov r2, #0
strh r2, [r0, r1]
bx lr
.balign 4, 0
_022077FC: .word 0x00000618
thumb_func_end ov96_022077F4
thumb_func_start ov96_02207800
ov96_02207800: ; 0x02207800
push {r4, lr}
add r4, r0, #0
add r0, #0xb4
ldrh r0, [r0]
mov r1, #0x14
add r0, r0, #1
bl _s32_div_f
add r4, #0xb4
strh r1, [r4]
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02207800
thumb_func_start ov96_02207818
ov96_02207818: ; 0x02207818
push {r3, r4, r5, lr}
add r5, r0, #0
mov r1, #0
add r2, r5, #0
_02207820:
ldr r0, [r2]
cmp r0, #0
bne _02207862
mov r0, #0x14
add r4, r1, #0
mul r4, r0
add r0, r5, #0
add r0, #0xb4
ldrh r1, [r0]
add r0, r5, r4
str r1, [r0, #0xc]
add r1, r5, #0
add r1, #0xb4
ldrh r1, [r1]
lsl r1, r1, #2
add r1, r5, r1
add r1, #0x64
ldrh r1, [r1]
strh r1, [r0, #0x10]
add r1, r5, #0
add r1, #0xb4
ldrh r1, [r1]
lsl r1, r1, #2
add r1, r5, r1
add r1, #0x66
ldrh r1, [r1]
strh r1, [r0, #0x12]
add r0, r5, #0
bl ov96_02207800
mov r0, #1
str r0, [r5, r4]
pop {r3, r4, r5, pc}
_02207862:
add r1, r1, #1
add r2, #0x14
cmp r1, #5
blt _02207820
bl GF_AssertFail
pop {r3, r4, r5, pc}
thumb_func_end ov96_02207818
thumb_func_start ov96_02207870
ov96_02207870: ; 0x02207870
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, _022078A8 ; =0x0000061A
mov r4, #0
ldrh r1, [r5, r0]
mov r0, #5
sub r6, r0, r1
cmp r6, #0
ble _022078A4
ldr r7, _022078A8 ; =0x0000061A
_02207884:
ldr r0, _022078AC ; =0x00000564
add r0, r5, r0
bl ov96_02207818
ldrh r0, [r5, r7]
add r0, r0, #1
strh r0, [r5, r7]
ldr r0, _022078A8 ; =0x0000061A
ldrh r0, [r5, r0]
cmp r0, #5
bls _0220789E
bl GF_AssertFail
_0220789E:
add r4, r4, #1
cmp r4, r6
blt _02207884
_022078A4:
pop {r3, r4, r5, r6, r7, pc}
nop
_022078A8: .word 0x0000061A
_022078AC: .word 0x00000564
thumb_func_end ov96_02207870
thumb_func_start ov96_022078B0
ov96_022078B0: ; 0x022078B0
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r7, r0, #0
add r5, r1, #0
mov r6, #0
add r0, r2, #0
strb r6, [r0]
add r0, r5, #0
str r0, [sp, #4]
add r0, #0x58
str r2, [sp]
add r4, r7, #0
str r0, [sp, #4]
_022078CA:
ldr r0, [r4]
cmp r0, #0
beq _02207978
ldr r0, [r4, #0xc]
lsl r0, r0, #2
add r0, r7, r0
add r0, #0x64
ldrh r0, [r0]
lsl r0, r0, #0xc
str r0, [sp, #8]
ldr r0, [r4, #0xc]
lsl r0, r0, #2
add r0, r7, r0
add r0, #0x66
ldrh r0, [r0]
lsl r0, r0, #0xc
str r0, [sp, #0xc]
mov r0, #0
str r0, [sp, #0x10]
add r0, r5, #0
add r0, #0xb1
ldrb r0, [r0]
lsl r0, r0, #2
ldr r0, [r5, r0]
bl ov96_021EAF8C
add r2, r0, #0
mov r3, #2
ldr r0, [sp, #4]
add r1, sp, #8
lsl r2, r2, #0xc
lsl r3, r3, #0xe
bl ov96_02207990
cmp r0, #0
beq _0220796E
add r0, r5, #0
add r0, #0xaa
ldrb r0, [r0]
cmp r0, #9
blo _02207932
add r5, #0xb3
ldrb r0, [r5, r6]
cmp r0, #0
bne _0220792C
ldr r0, [sp]
mov r1, #1
strb r1, [r0]
strb r1, [r5, r6]
_0220792C:
add sp, #0x14
mov r0, #0
pop {r4, r5, r6, r7, pc}
_02207932:
add r0, r5, r6
mov r1, #1
add r0, #0xb3
strb r1, [r0]
mov r0, #0x14
mov r1, #0
mul r0, r6
str r1, [r7, r0]
add r0, r5, #0
add r0, #0xaa
ldrb r0, [r0]
add r5, #0xaa
add r0, r0, #1
strb r0, [r5]
add r0, r7, #0
add r0, #0xb6
ldrh r0, [r0]
cmp r0, #0
bne _0220795C
bl GF_AssertFail
_0220795C:
add r0, r7, #0
add r0, #0xb6
ldrh r0, [r0]
add r7, #0xb6
add sp, #0x14
sub r0, r0, #1
strh r0, [r7]
mov r0, #1
pop {r4, r5, r6, r7, pc}
_0220796E:
add r1, r5, r6
add r1, #0xb3
mov r0, #0
strb r0, [r1]
b _02207980
_02207978:
add r1, r5, r6
add r1, #0xb3
mov r0, #0
strb r0, [r1]
_02207980:
add r6, r6, #1
add r4, #0x14
cmp r6, #5
blt _022078CA
mov r0, #0
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_022078B0
thumb_func_start ov96_02207990
ov96_02207990: ; 0x02207990
push {r4, r5, lr}
sub sp, #0xc
add r5, r2, #0
add r2, sp, #0
add r4, r3, #0
bl VEC_Subtract
add r0, sp, #0
bl VEC_Mag
add r1, r5, r4
cmp r0, r1
bge _022079B0
add sp, #0xc
mov r0, #1
pop {r4, r5, pc}
_022079B0:
mov r0, #0
add sp, #0xc
pop {r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_02207990
thumb_func_start ov96_022079B8
ov96_022079B8: ; 0x022079B8
push {r3, r4, lr}
sub sp, #0x24
add r1, sp, #0x18
mov r4, #1
bl VEC_Normalize
add r0, sp, #0x18
bl VEC_Mag
cmp r0, #0
beq _02207A2A
ldr r4, _02207A30 ; =ov96_0221CAC8
add r3, sp, #0xc
ldmia r4!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r4]
add r1, sp, #0
str r0, [r3]
ldr r0, [sp, #0x1c]
str r0, [sp]
ldr r0, [sp, #0x18]
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #4]
add r0, r2, #0
bl CalcAngleBetweenVecs
mov r2, #2
lsl r2, r2, #0xc
cmp r0, r2
bls _02207A00
mov r1, #0xe
lsl r1, r1, #0xc
cmp r0, r1
blo _02207A04
_02207A00:
mov r4, #4
b _02207A2A
_02207A04:
cmp r0, r2
bls _02207A14
mov r1, #6
lsl r1, r1, #0xc
cmp r0, r1
bhs _02207A14
mov r4, #2
b _02207A2A
_02207A14:
mov r1, #6
lsl r1, r1, #0xc
cmp r0, r1
blo _02207A28
mov r1, #0xa
lsl r1, r1, #0xc
cmp r0, r1
bhi _02207A28
mov r4, #3
b _02207A2A
_02207A28:
mov r4, #1
_02207A2A:
add r0, r4, #0
add sp, #0x24
pop {r3, r4, pc}
.balign 4, 0
_02207A30: .word ov96_0221CAC8
thumb_func_end ov96_022079B8
thumb_func_start ov96_02207A34
ov96_02207A34: ; 0x02207A34
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r4, r1, #0
add r7, r0, #0
add r0, r4, #0
add r5, r2, #0
add r0, #0x64
bl VEC_Mag
add r6, r0, #0
add r0, r5, #0
add r0, #0x64
bl VEC_Mag
cmp r6, r0
ble _02207A58
add r6, r4, #0
b _02207A68
_02207A58:
cmp r6, r0
bge _02207A62
add r6, r5, #0
add r5, r4, #0
b _02207A68
_02207A62:
add sp, #0x10
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_02207A68:
add r0, r6, #0
add r0, #0xb0
ldrb r1, [r0]
add r0, r5, #0
add r0, #0xb0
ldrb r0, [r0]
cmp r1, r0
beq _02207A7E
add sp, #0x10
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_02207A7E:
add r0, r6, #0
add r0, #0x64
bl ov96_022079B8
add r1, r6, #0
add r1, #0xb0
ldrb r1, [r1]
cmp r1, r0
beq _02207A96
add sp, #0x10
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_02207A96:
add r0, r6, #0
add r0, #0xa6
ldrb r0, [r0]
cmp r0, #1
bne _02207AA6
add sp, #0x10
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_02207AA6:
add r0, r5, #0
add r0, #0xaa
ldrb r1, [r0]
cmp r1, #2
blo _02207ACA
add r0, r5, #0
add r0, #0xaa
ldrb r0, [r0]
sub r1, r0, #2
add r0, r5, #0
add r0, #0xaa
strb r1, [r0]
add r0, r6, #0
add r0, #0xaa
ldrb r0, [r0]
add r1, r0, #2
add r0, r6, #0
b _02207ADC
_02207ACA:
add r0, r6, #0
add r0, #0xaa
ldrb r0, [r0]
add r1, r0, r1
add r0, r6, #0
add r0, #0xaa
strb r1, [r0]
mov r1, #0
add r0, r5, #0
_02207ADC:
add r0, #0xaa
strb r1, [r0]
add r0, r6, #0
add r0, #0xaa
ldrb r0, [r0]
cmp r0, #9
bls _02207AF2
add r0, r6, #0
mov r1, #9
add r0, #0xaa
strb r1, [r0]
_02207AF2:
add r0, r5, #0
mov r3, #1
add r0, #0xa6
strb r3, [r0]
add r1, r5, #0
add r2, r5, #0
str r3, [sp]
add r1, #0x98
ldr r1, [r1]
add r2, #0xb1
lsl r1, r1, #0x18
ldrb r2, [r2]
add r0, r7, #0
lsr r1, r1, #0x18
bl ov96_021E8228
add r0, r5, #0
add r0, #0xb1
ldrb r4, [r0]
add r0, r6, #0
add r0, #0x64
bl VEC_Mag
asr r3, r0, #0xb
lsr r3, r3, #0x14
add r3, r0, r3
mov r1, #0x14
add r2, r4, #0
mul r2, r1
add r2, r5, r2
ldr r2, [r2, #0x18]
asr r0, r3, #0xc
add r2, r2, r0
add r0, r5, #0
add r0, #0xa2
strb r2, [r0]
add r2, sp, #4
mov r0, #0
str r0, [r2]
str r0, [r2, #4]
str r0, [r2, #8]
add r2, r6, #0
add r2, #0xb1
ldrb r2, [r2]
ldr r0, _02207B88 ; =0x45800000
mul r1, r2
add r1, r6, r1
ldr r1, [r1, #0x14]
bl _fmul
bl _ffix
add r1, r6, #0
add r3, r5, #0
add r1, #0x64
add r2, sp, #4
add r3, #0x64
bl VEC_MultAdd
add r2, r6, #0
add r3, sp, #4
ldmia r3!, {r0, r1}
add r2, #0x64
stmia r2!, {r0, r1}
ldr r0, [r3]
add r6, #0xa4
str r0, [r2]
mov r0, #0x12
strb r0, [r6]
mov r0, #6
add r5, #0xa4
strb r0, [r5]
mov r0, #1
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02207B88: .word 0x45800000
thumb_func_end ov96_02207A34
thumb_func_start ov96_02207B8C
ov96_02207B8C: ; 0x02207B8C
mov r1, #0x66
ldr r2, [r0, #0x5c]
lsl r1, r1, #0xe
mov r3, #0
cmp r2, r1
ble _02207BAC
mov r1, #0xd
ldr r2, [r0, #0x58]
lsl r1, r1, #0x10
cmp r2, r1
blt _02207BAC
mov r1, #0x13
lsl r1, r1, #0x10
cmp r2, r1
bgt _02207BAC
mov r3, #1
_02207BAC:
cmp r3, #0
bne _02207BB4
mov r0, #0
bx lr
_02207BB4:
add r1, r0, #0
add r1, #0xaa
ldrb r1, [r1]
cmp r1, #0
bne _02207BC2
mov r0, #0
bx lr
_02207BC2:
add r0, #0xa6
ldrb r0, [r0]
cmp r0, #0
bne _02207BCE
mov r0, #1
bx lr
_02207BCE:
mov r0, #0
bx lr
.balign 4, 0
thumb_func_end ov96_02207B8C
thumb_func_start ov96_02207BD4
ov96_02207BD4: ; 0x02207BD4
bx lr
.balign 4, 0
thumb_func_end ov96_02207BD4
thumb_func_start ov96_02207BD8
ov96_02207BD8: ; 0x02207BD8
mov r1, #1
lsl r1, r1, #8
sub r0, r1, r0
lsl r0, r0, #3
add r0, r0, #5
bx lr
thumb_func_end ov96_02207BD8
thumb_func_start ov96_02207BE4
ov96_02207BE4: ; 0x02207BE4
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, _02207C30 ; =0x00000512
ldrb r1, [r5, r0]
cmp r1, #4
blo _02207C2A
sub r0, r0, #1
ldr r1, [r5, #0x1c]
ldrb r0, [r5, r0]
ldr r4, [r1, #0x14]
mov r1, #2
lsl r6, r0, #0xb
add r0, r4, r6
lsl r1, r1, #0xa
bl DC_FlushRange
mov r1, #6
mov r2, #2
add r0, r4, r6
lsl r1, r1, #0xa
lsl r2, r2, #0xa
bl GX_LoadBG0Char
ldr r0, _02207C30 ; =0x00000512
mov r1, #0
strb r1, [r5, r0]
sub r0, r0, #1
ldrb r0, [r5, r0]
mov r1, #6
add r0, r0, #1
bl _s32_div_f
ldr r0, _02207C34 ; =0x00000511
strb r1, [r5, r0]
pop {r4, r5, r6, pc}
_02207C2A:
add r1, r1, #1
strb r1, [r5, r0]
pop {r4, r5, r6, pc}
.balign 4, 0
_02207C30: .word 0x00000512
_02207C34: .word 0x00000511
thumb_func_end ov96_02207BE4
thumb_func_start ov96_02207C38
ov96_02207C38: ; 0x02207C38
push {r4, lr}
cmp r0, #0
blt _02207C60
mov r4, #1
lsl r4, r4, #8
cmp r0, r4
bge _02207C60
cmp r1, #0
blt _02207C60
cmp r1, #0xc0
bge _02207C60
cmp r3, #0
beq _02207C56
mov r1, #3
b _02207C58
_02207C56:
mov r1, #4
_02207C58:
lsl r0, r2, #0x10
lsr r0, r0, #0x10
bl sub_0200606C
_02207C60:
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02207C38
thumb_func_start ov96_02207C64
ov96_02207C64: ; 0x02207C64
push {r4, r5, r6, lr}
add r4, r0, #0
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
add r5, r0, #0
add r0, r4, #0
bl ov96_021E5DC4
add r6, r0, #0
add r0, r4, #0
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r1, r0, #0x18
lsl r0, r1, #2
lsl r1, r1, #1
add r1, r5, r1
ldrh r1, [r1, #0x18]
ldr r0, [r5, r0]
ldr r2, _02207CC8 ; =0x000003FF
lsr r0, r0, #0x12
asr r3, r1, #0xb
mov r1, #0x1f
and r0, r2
and r1, r3
lsl r0, r0, #0x10
lsl r1, r1, #0x18
lsr r0, r0, #0x10
lsr r1, r1, #0x18
add r0, r0, r1
lsl r0, r0, #0x10
lsr r5, r0, #0x10
add r0, r2, #0
sub r0, #0x18
cmp r5, r0
bls _02207CB6
add r5, r2, #0
sub r5, #0x18
_02207CB6:
add r0, r4, #0
add r1, r5, #0
bl ov96_021E8318
add r0, r6, #0
add r1, r5, #0
bl ov96_02207774
pop {r4, r5, r6, pc}
.balign 4, 0
_02207CC8: .word 0x000003FF
thumb_func_end ov96_02207C64
thumb_func_start ov96_02207CCC
ov96_02207CCC: ; 0x02207CCC
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
mov r1, #0x72
lsl r1, r1, #2
add r6, r0, #0
str r2, [sp]
bl AllocFromHeap
mov r2, #0x72
add r7, r0, #0
mov r1, #0
lsl r2, r2, #2
bl MI_CpuFill8
str r6, [r7]
ldr r0, [sp]
str r4, [r7, #8]
str r0, [r7, #4]
add r0, r7, #0
bl ov96_02208A4C
ldr r2, _02207D60 ; =0x00000135
mov r0, #1
mov r1, #0x1b
add r3, r6, #0
bl NewMsgDataFromNarc
str r0, [r7, #0x1c]
add r0, r6, #0
bl MessageFormat_New
str r0, [r7, #0x20]
mov r4, #0
add r5, r7, #0
_02207D10:
mov r0, #0xb
add r1, r6, #0
bl String_New
mov r1, #0x6a
lsl r1, r1, #2
str r0, [r5, r1]
add r4, r4, #1
add r5, r5, #4
cmp r4, #3
blt _02207D10
ldr r0, [sp]
bl ov96_021E5F24
add r1, r0, #0
ldr r0, [sp]
bl ov96_021E5D50
add r4, r0, #0
mov r6, #0
add r5, r7, #0
_02207D3A:
mov r0, #0x6a
lsl r0, r0, #2
add r1, r4, #0
ldr r0, [r5, r0]
add r1, #0x12
bl CopyU16ArrayToString
add r6, r6, #1
add r4, #0x28
add r5, r5, #4
cmp r6, #3
blt _02207D3A
add r0, r7, #0
mov r1, #1
bl ov96_022088AC
add r0, r7, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_02207D60: .word 0x00000135
thumb_func_end ov96_02207CCC
thumb_func_start ov96_02207D64
ov96_02207D64: ; 0x02207D64
push {r3, r4, r5, r6, r7, lr}
mov r7, #0x42
lsl r7, r7, #2
str r0, [sp]
mov r4, #0
add r5, r0, #0
add r6, r7, #4
_02207D72:
ldr r0, [r5, r7]
bl FreeToHeap
ldr r0, [r5, r6]
bl FreeToHeap
add r4, r4, #1
add r5, #8
cmp r4, #3
blt _02207D72
ldr r4, [sp]
mov r5, #0
_02207D8A:
add r0, r4, #0
add r0, #0x9c
ldr r0, [r0]
bl FreeToHeap
add r5, r5, #1
add r4, r4, #4
cmp r5, #0xc
blt _02207D8A
ldr r0, [sp]
ldr r0, [r0, #0x24]
bl FreeToHeap
mov r6, #0x6a
ldr r4, [sp]
mov r5, #0
lsl r6, r6, #2
_02207DAC:
ldr r0, [r4, r6]
bl String_Delete
add r5, r5, #1
add r4, r4, #4
cmp r5, #3
blt _02207DAC
ldr r0, [sp]
ldr r0, [r0, #0x20]
bl MessageFormat_Delete
ldr r0, [sp]
ldr r0, [r0, #0x1c]
bl DestroyMsgData
ldr r0, [sp]
add r0, #0xc
bl RemoveWindow
ldr r0, [sp]
bl FreeToHeap
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02207D64
thumb_func_start ov96_02207DDC
ov96_02207DDC: ; 0x02207DDC
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #5
str r0, [sp, #0xc]
ldr r2, [r4, #8]
mov r0, #0xe2
add r3, r1, #0
bl GfGfxLoader_LoadCharData
mov r1, #0
mov r0, #2
str r1, [sp]
lsl r0, r0, #0xc
str r0, [sp, #4]
str r1, [sp, #8]
ldr r0, [r4]
mov r1, #6
str r0, [sp, #0xc]
ldr r2, [r4, #8]
mov r0, #0xe2
add r3, r1, #0
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #7
str r0, [sp, #0xc]
ldr r2, [r4, #8]
mov r0, #0xe2
mov r3, #5
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #8
str r0, [sp, #0xc]
ldr r2, [r4, #8]
mov r0, #0xe2
mov r3, #6
bl GfGfxLoader_LoadScrnData
ldr r0, [r4]
add r3, r4, #0
str r0, [sp]
mov r0, #0xe2
mov r1, #9
mov r2, #0
add r3, #0x28
bl GfGfxLoader_GetScrnData
str r0, [r4, #0x24]
mov r0, #0x40
str r0, [sp]
ldr r0, [r4]
mov r1, #4
str r0, [sp, #4]
mov r0, #0xe2
add r2, r1, #0
mov r3, #0
bl GfGfxLoader_GXLoadPal
add r0, r4, #0
mov r1, #0
bl ov96_02208374
add sp, #0x10
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02207DDC
thumb_func_start ov96_02207E7C
ov96_02207E7C: ; 0x02207E7C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
ldr r0, _02207F14 ; =ov96_0221CBCC
add r5, r1, #0
ldr r1, [r0, #8]
ldr r0, [r0, #0xc]
add r4, sp, #8
str r1, [sp, #8]
str r0, [sp, #0xc]
mov r6, #0
mov r7, #2
_02207E92:
str r7, [sp]
ldr r3, [r4]
add r0, r5, #0
mov r1, #0x5d
mov r2, #9
bl ov96_021EB2BC
mov r0, #2
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r3, [r4]
add r0, r5, #0
mov r1, #0x5d
mov r2, #6
bl ov96_021EB2F4
ldr r3, [r4]
add r0, r5, #0
mov r1, #0x5d
mov r2, #0xa
bl ov96_021EB334
ldr r3, [r4]
add r0, r5, #0
mov r1, #0x5d
mov r2, #0xa
bl ov96_021EB36C
add r6, r6, #1
add r4, r4, #4
cmp r6, #2
blt _02207E92
mov r0, #2
str r0, [sp]
add r0, r5, #0
mov r1, #0xe2
mov r2, #0xd
mov r3, #0x65
bl ov96_021EB2BC
mov r0, #2
str r0, [sp]
mov r0, #8
str r0, [sp, #4]
add r0, r5, #0
mov r1, #0xe2
mov r2, #0xa
mov r3, #0x65
bl ov96_021EB2F4
add r0, r5, #0
mov r1, #0xe2
mov r2, #0xc
mov r3, #0x65
bl ov96_021EB334
add r0, r5, #0
mov r1, #0xe2
mov r2, #0xb
mov r3, #0x65
bl ov96_021EB36C
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02207F14: .word ov96_0221CBCC
thumb_func_end ov96_02207E7C
thumb_func_start ov96_02207F18
ov96_02207F18: ; 0x02207F18
push {r4, r5, r6, r7, lr}
sub sp, #0x34
str r0, [sp, #4]
mov r0, #0
add r5, r1, #0
str r0, [sp, #0x18]
ldr r0, [sp, #4]
mov r1, #0x4f
lsl r1, r1, #2
add r7, r0, r1
add r1, #0x40
str r0, [sp, #0x14]
add r0, r0, r1
str r2, [sp, #8]
str r0, [sp, #0x10]
_02207F36:
mov r2, #2
add r0, r5, #0
mov r1, #3
mov r3, #0x65
str r2, [sp]
bl ov96_021EB3E4
ldr r1, [sp, #0x14]
mov r2, #2
str r0, [r1, #0x38]
mov r1, #3
add r0, r5, #0
mov r3, #0x65
str r1, [sp]
bl ov96_021EB3E4
ldr r1, [sp, #0x14]
mov r2, #2
str r0, [r1, #0x40]
mov r0, #0xa
str r0, [sp]
add r0, r5, #0
mov r1, #3
mov r3, #0x65
bl ov96_021EB3E4
ldr r1, [sp, #0x14]
mov r3, #0x65
str r0, [r1, #0x3c]
mov r0, #0x13
mov r1, #2
str r0, [sp]
add r0, r5, #0
add r2, r1, #0
bl ov96_021EB3E4
str r0, [r7, #8]
mov r1, #0
bl ov96_021EB564
mov r1, #1
ldr r0, [r7, #8]
add r2, r1, #0
bl ov96_021EB52C
mov r0, #0x15
mov r1, #2
str r0, [sp]
add r0, r5, #0
add r2, r1, #0
mov r3, #0x65
bl ov96_021EB3E4
str r0, [r7, #4]
mov r1, #9
bl ov96_021EB564
mov r1, #1
ldr r0, [r7, #4]
add r2, r1, #0
bl ov96_021EB52C
mov r0, #0x14
mov r1, #2
str r0, [sp]
add r0, r5, #0
add r2, r1, #0
mov r3, #0x65
bl ov96_021EB3E4
str r0, [r7]
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x18]
ldr r0, [r0, #0x38]
add r1, #0x13
bl ov96_021EB564
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x18]
ldr r0, [r0, #0x40]
add r1, r1, #5
bl ov96_021EB564
ldr r0, [r7]
mov r1, #3
bl ov96_021EB564
mov r1, #1
ldr r0, [r7]
add r2, r1, #0
bl ov96_021EB52C
ldr r4, [sp, #0x10]
mov r6, #0
_02207FF2:
mov r0, #0x18
mov r1, #2
str r0, [sp]
add r0, r5, #0
add r2, r1, #0
mov r3, #0x65
bl ov96_021EB3E4
mov r1, #2
stmia r4!, {r0}
bl ov96_021EB564
add r6, r6, #1
cmp r6, #2
blt _02207FF2
ldr r0, [sp, #0x14]
add r7, #0x10
add r0, #0x1c
str r0, [sp, #0x14]
ldr r0, [sp, #0x10]
add r0, #8
str r0, [sp, #0x10]
ldr r0, [sp, #0x18]
add r0, r0, #1
str r0, [sp, #0x18]
cmp r0, #4
blt _02207F36
ldr r3, _022080E8 ; =ov96_0221CBF4
add r2, sp, #0x1c
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
mov r1, #3
str r0, [r2]
mov r0, #0x16
str r0, [sp]
add r0, r5, #0
mov r2, #2
mov r3, #0x65
bl ov96_021EB3E4
mov r2, #0x4e
ldr r1, [sp, #4]
lsl r2, r2, #2
str r0, [r1, r2]
add r0, r1, #0
ldr r0, [r0, r2]
mov r1, #4
bl ov96_021EB564
mov r1, #0x4e
ldr r0, [sp, #4]
lsl r1, r1, #2
ldr r0, [r0, r1]
mov r1, #1
add r2, r1, #0
bl ov96_021EB52C
mov r1, #0x4e
ldr r0, [sp, #4]
lsl r1, r1, #2
ldr r0, [r0, r1]
add r1, sp, #0x1c
bl ov96_021EB588
ldr r1, [sp, #4]
add r0, r5, #0
bl ov96_02208914
mov r0, #0
ldr r4, [sp, #4]
ldr r7, _022080EC ; =ov96_0221CBC4
ldr r6, _022080F0 ; =ov96_0221CBC8
str r0, [sp, #0xc]
_02208086:
add r0, r5, #0
bl ov96_021EB5E8
ldr r3, [sp, #4]
add r1, r0, #0
ldr r0, [sp, #8]
ldr r3, [r3]
mov r2, #3
bl ov96_021EA2C4
mov r1, #0x6d
lsl r1, r1, #2
str r0, [r4, r1]
add r0, r1, #0
ldr r0, [r4, r0]
mov r1, #1
bl Set2dSpriteVisibleFlag
ldrb r0, [r7]
add r1, sp, #0x28
lsl r0, r0, #0xc
str r0, [sp, #0x28]
mov r0, #0xb1
lsl r0, r0, #0xe
str r0, [sp, #0x2c]
mov r0, #0
str r0, [sp, #0x30]
mov r0, #0x6d
lsl r0, r0, #2
ldr r0, [r4, r0]
bl Sprite_SetMatrix
mov r0, #0x6d
lsl r0, r0, #2
ldrb r1, [r6]
ldr r0, [r4, r0]
bl Set2dSpriteAnimSeqNo
ldr r0, [sp, #0xc]
add r4, r4, #4
add r0, r0, #1
add r7, r7, #1
add r6, r6, #1
str r0, [sp, #0xc]
cmp r0, #2
blt _02208086
add sp, #0x34
pop {r4, r5, r6, r7, pc}
nop
_022080E8: .word ov96_0221CBF4
_022080EC: .word ov96_0221CBC4
_022080F0: .word ov96_0221CBC8
thumb_func_end ov96_02207F18
thumb_func_start ov96_022080F4
ov96_022080F4: ; 0x022080F4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x30
str r0, [sp, #8]
add r5, r1, #0
ldr r1, [sp, #8]
mov r0, #0x14
ldr r1, [r1]
bl NARC_New
str r0, [sp, #0x20]
bl sub_02074490
add r1, r0, #0
mov r0, #0x60
str r0, [sp]
ldr r0, [sp, #8]
mov r2, #5
ldr r0, [r0]
mov r3, #0xc0
str r0, [sp, #4]
mov r0, #0x14
bl GfGfxLoader_GXLoadPal
ldr r4, [sp, #8]
mov r7, #0
add r6, r4, #0
add r6, #0xcc
_0220812A:
ldr r0, [sp, #8]
mov r1, #1
ldr r0, [r0]
lsl r1, r1, #0xc
bl AllocFromHeapAtEnd
add r1, r4, #0
add r1, #0x9c
str r0, [r1]
ldrh r0, [r5, #2]
mov r1, #0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x14]
ldrh r0, [r5]
ldr r2, [sp, #0x14]
str r0, [sp, #0x10]
bl GetMonIconNaixEx
add r2, r4, #0
add r2, #0x9c
add r1, r0, #0
ldr r0, [sp, #0x20]
ldr r2, [r2]
bl NARC_ReadWholeMember
add r0, r4, #0
add r0, #0x9c
ldr r0, [r0]
add r1, r6, #0
bl NNS_G2dGetUnpackedBGCharacterData
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x14]
mov r2, #0
bl GetMonIconPaletteEx
add r1, r0, #6
ldr r0, [sp, #8]
add r4, r4, #4
add r0, r0, r7
add r0, #0xfc
add r7, r7, #1
strb r1, [r0]
add r5, r5, #4
add r6, r6, #4
cmp r7, #0xc
blt _0220812A
ldr r0, [sp, #0x20]
bl NARC_Delete
mov r0, #0
ldr r6, [sp, #8]
str r0, [sp, #0xc]
mov r0, #0x70
str r0, [sp, #0x1c]
add r0, r6, #0
str r0, [sp, #0x18]
add r7, r6, #0
_022081A0:
ldr r1, [sp, #0xc]
ldr r0, [sp, #8]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
mov r2, #0
bl ov96_0220831C
mov r1, #1
ldr r0, [r6, #0x38]
add r2, r1, #0
bl ov96_021EB52C
mov r1, #1
ldr r0, [r6, #0x40]
add r2, r1, #0
bl ov96_021EB52C
mov r0, #0
str r0, [sp, #0x2c]
ldr r0, [sp, #0x1c]
add r1, sp, #0x24
lsl r0, r0, #0xc
str r0, [sp, #0x24]
mov r0, #0x35
lsl r0, r0, #0x10
str r0, [sp, #0x28]
ldr r0, [r6, #0x38]
bl ov96_021EB588
ldr r0, [r6, #0x40]
add r1, sp, #0x24
bl ov96_021EB588
ldr r0, [r6, #0x3c]
add r1, sp, #0x24
bl ov96_021EB588
ldr r5, [sp, #0x18]
mov r4, #0
_022081EE:
mov r0, #0x5f
lsl r0, r0, #2
ldr r0, [r5, r0]
add r1, sp, #0x24
bl ov96_021EB588
add r4, r4, #1
add r5, r5, #4
cmp r4, #2
blt _022081EE
mov r0, #2
ldr r1, [sp, #0x28]
lsl r0, r0, #0x10
sub r0, r1, r0
str r0, [sp, #0x28]
mov r0, #0x4f
lsl r0, r0, #2
ldr r0, [r7, r0]
add r1, sp, #0x24
bl ov96_021EB588
mov r0, #5
lsl r0, r0, #6
ldr r0, [r7, r0]
add r1, sp, #0x24
bl ov96_021EB588
mov r0, #0x51
lsl r0, r0, #2
ldr r0, [r7, r0]
add r1, sp, #0x24
bl ov96_021EB588
ldr r0, [sp, #0x1c]
add r6, #0x1c
add r0, #0x28
str r0, [sp, #0x1c]
ldr r0, [sp, #0x18]
add r7, #0x10
add r0, #8
str r0, [sp, #0x18]
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, #4
blt _022081A0
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_022080F4
thumb_func_start ov96_02208250
ov96_02208250: ; 0x02208250
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
add r6, r0, #0
mov r0, #0
add r5, r1, #0
str r0, [sp, #0xc]
add r4, r6, #0
add r7, sp, #0x10
_02208260:
ldrb r0, [r5, #6]
mov r3, #2
str r0, [sp]
ldrh r0, [r5, #2]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
ldr r0, [r5, #0xc]
str r0, [sp, #8]
ldrh r1, [r5]
ldrb r2, [r5, #7]
add r0, sp, #0x10
bl GetMonSpriteCharAndPlttNarcIdsEx
mov r0, #0
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldrh r0, [r5]
str r0, [sp, #8]
ldrh r0, [r7]
ldrh r1, [r7, #2]
ldr r2, [r6]
ldr r3, [r5, #0xc]
bl sub_0201457C
mov r1, #0x42
lsl r1, r1, #2
str r0, [r4, r1]
ldrh r0, [r7]
ldrh r1, [r7, #4]
ldr r2, [r6]
bl sub_02014450
mov r1, #0x43
lsl r1, r1, #2
str r0, [r4, r1]
ldr r0, [sp, #0xc]
add r5, #0x10
add r0, r0, #1
add r4, #8
str r0, [sp, #0xc]
cmp r0, #3
blt _02208260
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_02208250
thumb_func_start ov96_022082BC
ov96_022082BC: ; 0x022082BC
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
add r5, r0, #0
add r4, r2, #0
cmp r6, #2
blo _022082CC
bl GF_AssertFail
_022082CC:
cmp r4, #3
blo _022082D4
bl GF_AssertFail
_022082D4:
mov r0, #0x42
lsl r0, r0, #2
lsl r4, r4, #3
add r7, r5, r0
mov r1, #0x32
ldr r0, [r7, r4]
lsl r1, r1, #6
bl DC_FlushRange
lsl r6, r6, #2
mov r1, #0x12
add r2, r5, r6
lsl r1, r1, #4
ldr r1, [r2, r1]
mov r2, #0x32
ldr r0, [r7, r4]
lsl r2, r2, #6
bl GXS_LoadOBJ
mov r0, #0x43
lsl r0, r0, #2
add r7, r5, r0
ldr r0, [r7, r4]
mov r1, #0x20
bl DC_FlushRange
mov r1, #0x4a
add r2, r5, r6
lsl r1, r1, #2
ldr r1, [r2, r1]
ldr r0, [r7, r4]
mov r2, #0x20
bl GXS_LoadOBJPltt
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_022082BC
thumb_func_start ov96_0220831C
ov96_0220831C: ; 0x0220831C
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
add r4, r1, #0
mov r0, #0x1c
mul r0, r4
add r0, r5, r0
ldr r0, [r0, #0x38]
add r6, r2, #0
bl ov96_021EB5B8
str r0, [sp]
lsl r0, r4, #1
add r0, r4, r0
add r6, r6, r0
add r7, r5, #0
lsl r0, r6, #2
mov r1, #2
add r7, #0xcc
str r0, [sp, #4]
ldr r0, [r7, r0]
lsl r1, r1, #8
ldr r0, [r0, #0x14]
bl DC_FlushRange
ldr r0, [sp, #4]
mov r1, #6
ldr r0, [r7, r0]
lsl r2, r4, #9
lsl r1, r1, #0xa
add r1, r2, r1
mov r2, #2
ldr r0, [r0, #0x14]
lsl r2, r2, #8
bl GXS_LoadOBJ
add r1, r5, r6
add r1, #0xfc
ldrb r1, [r1]
ldr r0, [sp]
bl Sprite_SetPalIndex
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_0220831C
thumb_func_start ov96_02208374
ov96_02208374: ; 0x02208374
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r6, r1, #0
add r5, r0, #0
add r0, r6, #0
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #3]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0]
mov r0, #0x64
mul r0, r4
sub r0, r6, r0
mov r1, #0xa
bl _s32_div_f
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #4]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0, #1]
add r0, r6, #0
mov r1, #0xa
bl _s32_div_f
lsl r0, r1, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #5]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0, #2]
mov r4, #0
mov r6, #4
mov r7, #8
_022083FE:
str r6, [sp]
str r7, [sp, #4]
ldr r0, [r5, #0x28]
lsl r2, r4, #2
add r0, #0xc
str r0, [sp, #8]
add r0, sp, #0x1c
add r0, #3
ldrb r0, [r0, r4]
add r2, #0xe
lsl r2, r2, #0x18
str r0, [sp, #0xc]
add r0, sp, #0x1c
ldrb r0, [r0, r4]
mov r1, #5
lsr r2, r2, #0x18
str r0, [sp, #0x10]
mov r0, #0x14
str r0, [sp, #0x14]
mov r0, #0x10
str r0, [sp, #0x18]
ldr r0, [r5, #8]
mov r3, #3
bl CopyRectToBgTilemapRect
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _022083FE
ldr r0, [r5, #8]
mov r1, #5
bl ScheduleBgTilemapBufferTransfer
add sp, #0x24
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02208374
thumb_func_start ov96_02208448
ov96_02208448: ; 0x02208448
push {r4, r5, r6, r7, lr}
sub sp, #0x24
mov r5, #0x67
add r4, r0, #0
lsl r5, r5, #2
add r6, r1, #0
ldr r1, [r4, r5]
cmp r1, #3
bhi _022084B4
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_02208466: ; jump table
.short _0220846E - _02208466 - 2 ; case 0
.short _022084D6 - _02208466 - 2 ; case 1
.short _02208500 - _02208466 - 2 ; case 2
.short _02208576 - _02208466 - 2 ; case 3
_0220846E:
add r0, r5, #4
ldrh r0, [r4, r0]
lsl r0, r0, #2
add r1, r4, r0
add r0, r5, #0
sub r0, #0x6c
ldr r0, [r1, r0]
bl ov96_021EB594
add r6, r0, #0
add r3, sp, #0x18
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
str r0, [r3]
mov r0, #2
ldr r1, [sp, #0x1c]
lsl r0, r0, #0x10
add r0, r1, r0
str r0, [sp, #0x1c]
add r0, r5, #4
ldrh r1, [r4, r0]
sub r0, #0x70
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r2, #0
bl ov96_021EB588
mov r0, #0xe7
ldr r1, [sp, #0x1c]
lsl r0, r0, #0xe
cmp r1, r0
bge _022084B6
_022084B4:
b _02208600
_022084B6:
mov r0, #0xa5
lsl r0, r0, #0xe
str r0, [sp, #0x1c]
add r0, r5, #4
ldrh r1, [r4, r0]
sub r0, #0x70
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, sp, #0x18
bl ov96_021EB588
ldr r0, [r4, r5]
add r0, r0, #1
str r0, [r4, r5]
b _02208600
_022084D6:
add r1, r5, #4
ldrh r1, [r4, r1]
add r2, r6, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_022082BC
add r3, r5, #4
ldrh r0, [r4, r3]
add r0, r0, #1
lsr r2, r0, #0x1f
lsl r1, r0, #0x1f
sub r1, r1, r2
mov r0, #0x1f
ror r1, r0
add r0, r2, r1
strh r0, [r4, r3]
ldr r0, [r4, r5]
add r0, r0, #1
str r0, [r4, r5]
b _02208600
_02208500:
add r0, r5, #4
ldrh r0, [r4, r0]
lsl r0, r0, #2
add r1, r4, r0
add r0, r5, #0
sub r0, #0x6c
ldr r0, [r1, r0]
bl ov96_021EB594
add r6, r0, #0
add r3, sp, #0xc
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
str r0, [r3]
mov r0, #2
ldr r1, [sp, #0x10]
lsl r0, r0, #0x10
add r0, r1, r0
str r0, [sp, #0x10]
add r0, r5, #4
ldrh r1, [r4, r0]
sub r0, #0x70
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r2, #0
bl ov96_021EB588
mov r0, #0xd1
ldr r1, [sp, #0x10]
lsl r0, r0, #0xe
cmp r1, r0
blt _02208600
str r0, [sp, #0x10]
add r0, r5, #4
ldrh r1, [r4, r0]
sub r0, #0x70
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, sp, #0xc
bl ov96_021EB588
add r3, r5, #4
ldrh r0, [r4, r3]
add r0, r0, #1
lsr r2, r0, #0x1f
lsl r1, r0, #0x1f
sub r1, r1, r2
mov r0, #0x1f
ror r1, r0
add r0, r2, r1
strh r0, [r4, r3]
ldr r0, [r4, r5]
add r0, r0, #1
str r0, [r4, r5]
b _02208600
_02208576:
add r0, r5, #4
ldrh r0, [r4, r0]
lsl r0, r0, #2
add r1, r4, r0
add r0, r5, #0
sub r0, #0x6c
ldr r0, [r1, r0]
bl ov96_021EB594
add r3, r0, #0
add r2, sp, #0
ldmia r3!, {r0, r1}
add r7, r2, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
mov r0, #2
ldr r1, [sp, #4]
lsl r0, r0, #0x10
add r0, r1, r0
str r0, [sp, #4]
add r0, r5, #4
ldrh r1, [r4, r0]
sub r0, #0x70
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
bl ov96_021EB588
mov r0, #0xbb
ldr r1, [sp, #4]
lsl r0, r0, #0xe
cmp r1, r0
blt _02208600
str r0, [sp, #4]
add r0, r5, #4
ldrh r1, [r4, r0]
sub r0, #0x70
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
bl ov96_021EB588
add r3, r5, #4
ldrh r0, [r4, r3]
add r0, r0, #1
lsr r2, r0, #0x1f
lsl r1, r0, #0x1f
sub r1, r1, r2
mov r0, #0x1f
ror r1, r0
add r0, r2, r1
strh r0, [r4, r3]
add r0, r6, #2
mov r1, #3
bl _s32_div_f
lsl r1, r1, #0x18
add r0, r4, #0
lsr r1, r1, #0x18
bl ov96_022088AC
mov r0, #0
str r0, [r4, r5]
add sp, #0x24
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02208600:
mov r0, #0
add sp, #0x24
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02208448
thumb_func_start ov96_02208608
ov96_02208608: ; 0x02208608
push {r3, r4, r5, lr}
add r4, r0, #0
add r5, r1, #0
beq _02208614
cmp r5, #4
blo _02208618
_02208614:
bl GF_AssertFail
_02208618:
mov r1, #0x6f
sub r0, r5, #1
lsl r1, r1, #2
lsl r0, r0, #2
add r3, r4, r1
ldrh r2, [r3, r0]
add r2, #0x20
strh r2, [r3, r0]
ldrh r2, [r3, r0]
cmp r2, #0x58
blo _0220863C
mov r2, #0
add r1, r1, #2
strh r2, [r3, r0]
add r2, r4, r1
ldrh r1, [r2, r0]
add r1, r1, #1
strh r1, [r2, r0]
_0220863C:
ldr r1, _02208654 ; =0x000001BE
add r2, r4, r1
ldrh r1, [r2, r0]
cmp r1, #3
blo _0220864E
mov r1, #0
strh r1, [r2, r0]
mov r0, #1
pop {r3, r4, r5, pc}
_0220864E:
mov r0, #0
pop {r3, r4, r5, pc}
nop
_02208654: .word 0x000001BE
thumb_func_end ov96_02208608
thumb_func_start ov96_02208658
ov96_02208658: ; 0x02208658
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r7, r3, #0
mov r3, #0x69
add r5, r0, #0
lsl r3, r3, #2
add r4, r1, #0
add r6, r5, r3
ldrb r3, [r6, r4]
cmp r2, r3
beq _02208674
strb r2, [r6, r4]
bl ov96_0220831C
_02208674:
cmp r7, #0
beq _022086B6
mov r0, #0
str r0, [sp, #0x18]
mov r0, #0x28
mul r0, r4
add r0, #0x70
lsl r0, r0, #0xc
str r0, [sp, #0x10]
ldr r0, _0220873C ; =0x00350004
add r6, r4, #0
str r0, [sp, #0x14]
mov r0, #0x1c
mul r6, r0
add r0, r5, r6
ldr r0, [r0, #0x38]
add r1, sp, #0x10
bl ov96_021EB588
add r0, r5, r6
ldr r0, [r0, #0x40]
add r1, sp, #0x10
bl ov96_021EB588
mov r0, #0x4f
lsl r0, r0, #2
add r1, r5, r0
lsl r0, r4, #4
add r0, r1, r0
mov r1, #0
bl ov96_02208A80
b _02208730
_022086B6:
mov r0, #0
str r0, [sp, #0xc]
mov r0, #0x28
mul r0, r4
add r0, #0x70
lsl r0, r0, #0xc
str r0, [sp, #4]
mov r0, #0x35
lsl r0, r0, #0x10
str r0, [sp, #8]
mov r0, #0x1c
add r6, r4, #0
mul r6, r0
add r0, r5, r6
ldr r0, [r0, #0x38]
add r1, sp, #4
bl ov96_021EB588
add r0, r5, r6
ldr r0, [r0, #0x40]
add r1, sp, #4
bl ov96_021EB588
mov r0, #0x4f
lsl r0, r0, #2
add r1, r5, r0
lsl r0, r4, #4
add r0, r1, r0
mov r1, #1
bl ov96_02208A80
ldr r1, [sp, #0x30]
cmp r1, #1
bne _02208724
add r0, r5, r6
add r0, #0x44
ldrb r0, [r0]
cmp r1, r0
beq _02208730
add r7, r5, #0
mov r0, #0x1c
mul r0, r4
mov r1, #1
add r7, #0x3c
str r0, [sp]
ldr r0, [r7, r0]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [sp]
mov r1, #1
ldr r0, [r7, r0]
bl ov96_021EB564
b _02208730
_02208724:
add r0, r5, r6
ldr r0, [r0, #0x3c]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
_02208730:
add r0, r5, r6
ldr r1, [sp, #0x30]
add r0, #0x44
strb r1, [r0]
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_0220873C: .word 0x00350004
thumb_func_end ov96_02208658
thumb_func_start ov96_02208740
ov96_02208740: ; 0x02208740
push {r3, r4, r5, lr}
add r5, r0, #0
add r0, r1, #0
mov r1, #0x1e
bl _s32_div_f
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
add r1, r0, #0
mov r0, #0x6d
lsl r0, r0, #2
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r5, r0]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
mov r0, #0x6e
lsl r0, r0, #2
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r5, r0]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
pop {r3, r4, r5, pc}
thumb_func_end ov96_02208740
thumb_func_start ov96_02208784
ov96_02208784: ; 0x02208784
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
add r7, r1, #0
mov r6, #0
add r4, r5, #0
_02208790:
mov r0, #0x6d
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #2
bl Sprite_SetDrawPriority
add r6, r6, #1
add r4, r4, #4
cmp r6, #2
blt _02208790
mov r6, #0
add r4, r5, #0
_022087A8:
mov r0, #0x13
lsl r0, r0, #4
ldr r0, [r4, r0]
bl ov96_021EB5B8
mov r1, #2
bl Sprite_SetDrawPriority
add r6, r6, #1
add r4, r4, #4
cmp r6, #2
blt _022087A8
mov r0, #1
mov r2, #0
add r1, sp, #4
_022087C6:
cmp r2, r7
bne _022087CC
strb r2, [r1]
_022087CC:
add r2, r2, #1
cmp r2, #4
blt _022087C6
mov r2, #0
add r4, sp, #4
add r3, sp, #4
_022087D8:
ldrb r1, [r3]
cmp r1, r2
beq _022087E8
add r1, r0, #0
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
strb r2, [r4, r1]
_022087E8:
add r2, r2, #1
cmp r2, #4
blt _022087D8
mov r0, #3
mov r6, #0
str r0, [sp]
add r4, sp, #4
mov r7, #4
_022087F8:
ldrb r1, [r4]
mov r0, #0x1c
mul r0, r1
add r0, r5, r0
ldr r0, [r0, #0x3c]
ldr r1, [sp]
bl ov96_021EB630
ldrb r1, [r4]
mov r0, #0x1c
mul r0, r1
add r0, r5, r0
ldr r0, [r0, #0x38]
add r1, r7, #0
bl ov96_021EB630
ldrb r1, [r4]
mov r0, #0x1c
mul r0, r1
add r0, r5, r0
add r1, r6, #0
ldr r0, [r0, #0x40]
add r1, #0xb
bl ov96_021EB630
ldr r0, [sp]
add r6, r6, #1
add r0, r0, #2
str r0, [sp]
add r4, r4, #1
add r7, r7, #2
cmp r6, #4
blt _022087F8
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02208784
thumb_func_start ov96_02208840
ov96_02208840: ; 0x02208840
push {r4, r5, r6, lr}
add r6, r2, #0
add r5, r0, #0
add r4, r1, #0
cmp r6, #9
bls _02208850
bl GF_AssertFail
_02208850:
lsl r0, r4, #4
add r1, r5, r0
mov r0, #5
lsl r0, r0, #6
ldr r0, [r1, r0]
add r6, #9
add r1, r6, #0
bl ov96_021EB564
pop {r4, r5, r6, pc}
thumb_func_end ov96_02208840
thumb_func_start ov96_02208864
ov96_02208864: ; 0x02208864
push {r3, r4, r5, lr}
add r5, r0, #0
mov r0, #0x5f
lsl r0, r0, #2
add r2, r5, r0
add r0, #0x26
ldrh r0, [r5, r0]
lsl r1, r1, #3
add r4, r2, r1
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #2
bl ov96_021EB564
ldr r0, _022088A8 ; =0x000001A2
mov r1, #1
ldrh r0, [r5, r0]
add r2, r1, #0
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_021EB52C
ldr r3, _022088A8 ; =0x000001A2
ldrh r0, [r5, r3]
add r0, r0, #1
lsr r2, r0, #0x1f
lsl r1, r0, #0x1f
sub r1, r1, r2
mov r0, #0x1f
ror r1, r0
add r0, r2, r1
strh r0, [r5, r3]
pop {r3, r4, r5, pc}
nop
_022088A8: .word 0x000001A2
thumb_func_end ov96_02208864
thumb_func_start ov96_022088AC
ov96_022088AC: ; 0x022088AC
push {r3, r4, r5, lr}
sub sp, #0x10
add r4, r0, #0
add r5, r1, #0
add r0, #0xc
mov r1, #0
bl FillWindowPixelBuffer
mov r0, #1
lsl r2, r5, #2
add r5, r4, r2
mov r2, #0x6a
str r0, [sp]
mov r3, #2
str r3, [sp, #4]
lsl r2, r2, #2
ldr r0, [r4, #0x20]
ldr r2, [r5, r2]
mov r1, #0
bl BufferString
ldr r0, [r4, #0x20]
ldr r1, [r4, #0x1c]
ldr r3, [r4]
mov r2, #0x9a
bl ReadMsgData_ExpandPlaceholders
mov r1, #0
add r5, r0, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _02208910 ; =0x000F0E00
add r2, r5, #0
str r0, [sp, #8]
add r0, r4, #0
add r0, #0xc
add r3, r1, #0
str r1, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r5, #0
bl String_Delete
add r4, #0xc
add r0, r4, #0
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, pc}
.balign 4, 0
_02208910: .word 0x000F0E00
thumb_func_end ov96_022088AC
thumb_func_start ov96_02208914
ov96_02208914: ; 0x02208914
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
str r0, [sp, #4]
ldr r0, _022089CC ; =ov96_0221CBCC
str r1, [sp, #8]
ldr r2, [r0]
ldr r1, [r0, #4]
str r2, [sp, #0x14]
str r1, [sp, #0x18]
ldr r1, [r0, #0x10]
ldr r0, [r0, #0x14]
add r5, sp, #0x14
add r4, sp, #0xc
str r1, [sp, #0xc]
str r0, [sp, #0x10]
mov r6, #0
mov r7, #3
_02208936:
ldr r0, [r4]
add r1, r7, #0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
ldr r3, [r5]
ldr r0, [sp, #4]
lsl r3, r3, #0x18
mov r2, #2
lsr r3, r3, #0x18
bl ov96_021EB408
add r6, r6, #1
add r4, r4, #4
add r5, r5, #4
cmp r6, #2
blt _02208936
ldr r4, [sp, #8]
mov r5, #0
add r7, sp, #0xc
add r6, sp, #0x14
_02208960:
ldr r1, [r6]
ldr r2, [r7]
lsl r1, r1, #0x18
lsl r2, r2, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_021EB4F4
mov r1, #0x13
lsl r1, r1, #4
str r0, [r4, r1]
add r0, r1, #0
ldr r0, [r4, r0]
bl ov96_021EB5B8
mov r1, #0
str r1, [sp, #0x24]
mov r1, #0xa
lsl r1, r1, #0xe
str r1, [sp, #0x1c]
mov r1, #1
sub r2, r1, r5
mov r1, #0x58
mul r1, r2
add r1, #0x30
lsl r2, r1, #0xc
mov r1, #0xaf
lsl r1, r1, #0xe
add r1, r2, r1
str r1, [sp, #0x20]
add r1, sp, #0x1c
bl Sprite_SetMatrix
mov r0, #0x13
lsl r0, r0, #4
mov r1, #1
ldr r0, [r4, r0]
add r2, r1, #0
bl ov96_021EB52C
add r5, r5, #1
add r7, r7, #4
add r6, r6, #4
add r4, r4, #4
cmp r5, #2
blt _02208960
ldr r0, [sp, #4]
ldr r1, [sp, #8]
bl ov96_022089D0
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
nop
_022089CC: .word ov96_0221CBCC
thumb_func_end ov96_02208914
thumb_func_start ov96_022089D0
ov96_022089D0: ; 0x022089D0
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r7, r0, #0
ldr r0, _02208A48 ; =ov96_0221CBCC
str r1, [sp]
ldr r1, [r0, #0x18]
ldr r0, [r0, #0x1c]
str r1, [sp, #0xc]
str r0, [sp, #0x10]
mov r4, #0
_022089E4:
lsl r0, r4, #2
add r1, sp, #0xc
ldr r5, [r1, r0]
str r0, [sp, #4]
add r0, r7, #0
add r1, r5, #0
mov r2, #0
bl ov96_021EB5EC
ldr r6, [r0]
add r0, r7, #0
add r1, r5, #0
mov r2, #1
bl ov96_021EB5EC
ldr r5, [r0]
add r0, r6, #0
bl sub_0200AF00
add r6, r0, #0
add r0, r5, #0
add r1, r6, #0
bl sub_0200B0F8
str r0, [sp, #8]
ldr r1, [sp]
ldr r0, [sp, #4]
add r5, r1, r0
add r0, r6, #0
mov r1, #2
bl NNS_G2dGetImageLocation
mov r1, #0x12
lsl r1, r1, #4
str r0, [r5, r1]
ldr r0, [sp, #8]
mov r1, #2
bl NNS_G2dGetImagePaletteLocation
mov r1, #0x4a
lsl r1, r1, #2
str r0, [r5, r1]
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #2
blo _022089E4
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
_02208A48: .word ov96_0221CBCC
thumb_func_end ov96_022089D0
thumb_func_start ov96_02208A4C
ov96_02208A4C: ; 0x02208A4C
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
add r1, r4, #0
ldr r0, [r4, #8]
ldr r2, _02208A7C ; =ov96_0221CBEC
add r1, #0xc
bl AddWindow
mov r2, #0
str r2, [sp]
ldr r0, [r4, #8]
mov r1, #4
mov r3, #1
bl BG_FillCharDataRange
mov r1, #0x1e
ldr r2, [r4]
mov r0, #4
lsl r1, r1, #4
bl LoadFontPal0
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
_02208A7C: .word ov96_0221CBEC
thumb_func_end ov96_02208A4C
thumb_func_start ov96_02208A80
ov96_02208A80: ; 0x02208A80
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
ldr r0, [r5]
mov r1, #1
add r2, r4, #0
bl ov96_021EB52C
ldr r0, [r5, #8]
mov r1, #1
add r2, r4, #0
bl ov96_021EB52C
ldr r0, [r5, #4]
mov r1, #1
add r2, r4, #0
bl ov96_021EB52C
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_02208A80
thumb_func_start ov96_02208AA8
ov96_02208AA8: ; 0x02208AA8
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r1, _02208AE0 ; =0x0000055C
bl AllocFromHeap
ldr r2, _02208AE0 ; =0x0000055C
mov r1, #0
add r4, r0, #0
bl MI_CpuFill8
ldr r0, _02208AE4 ; =0x00000554
mov r1, #4
sub r2, r1, r5
strb r5, [r4, r0]
add r1, r0, #5
strb r2, [r4, r1]
ldrb r2, [r4, r1]
add r1, r0, #4
strb r2, [r4, r1]
add r1, r0, #3
mov r2, #6
strb r2, [r4, r1]
ldrb r1, [r4, r1]
add r0, r0, #2
strb r1, [r4, r0]
add r0, r4, #0
pop {r3, r4, r5, pc}
nop
_02208AE0: .word 0x0000055C
_02208AE4: .word 0x00000554
thumb_func_end ov96_02208AA8
thumb_func_start ov96_02208AE8
ov96_02208AE8: ; 0x02208AE8
lsl r1, r1, #3
str r2, [r0, r1]
bx lr
.balign 4, 0
thumb_func_end ov96_02208AE8
thumb_func_start ov96_02208AF0
ov96_02208AF0: ; 0x02208AF0
mov r2, #0x62
lsl r2, r2, #2
str r1, [r0, r2]
bx lr
thumb_func_end ov96_02208AF0
thumb_func_start ov96_02208AF8
ov96_02208AF8: ; 0x02208AF8
push {r3, r4, r5, r6}
mov r3, #0
add r5, r3, #0
mov r6, #1
_02208B00:
ldrb r2, [r1]
ldrb r4, [r1, #1]
lsl r2, r2, #0x13
lsl r4, r4, #0x13
lsr r2, r2, #0x10
lsr r4, r4, #0x10
cmp r2, #0
beq _02208B1C
cmp r4, #0
beq _02208B1C
str r6, [r0, #0x20]
str r2, [r0, #0x24]
str r4, [r0, #0x28]
b _02208B1E
_02208B1C:
str r5, [r0, #0x20]
_02208B1E:
add r3, r3, #1
add r1, r1, #2
add r0, #0xc
cmp r3, #0x14
blt _02208B00
pop {r3, r4, r5, r6}
bx lr
thumb_func_end ov96_02208AF8
thumb_func_start ov96_02208B2C
ov96_02208B2C: ; 0x02208B2C
ldr r3, _02208B30 ; =FreeToHeap
bx r3
.balign 4, 0
_02208B30: .word FreeToHeap
thumb_func_end ov96_02208B2C
thumb_func_start ov96_02208B34
ov96_02208B34: ; 0x02208B34
push {r3, r4, r5, lr}
ldr r1, _02208BB0 ; =0x00000559
add r4, r0, #0
ldrb r2, [r4, r1]
mov r0, #4
cmp r2, #4
bne _02208B46
mov r0, #0
pop {r3, r4, r5, pc}
_02208B46:
sub r2, r1, #3
ldrb r2, [r4, r2]
add r3, r2, #1
sub r2, r1, #3
strb r3, [r4, r2]
ldrb r3, [r4, r2]
sub r2, r1, #2
ldrb r2, [r4, r2]
cmp r3, r2
blo _02208B68
add r2, r1, #0
mov r3, #1
sub r2, #9
str r3, [r4, r2]
mov r2, #0
sub r1, r1, #3
strb r2, [r4, r1]
_02208B68:
mov r1, #0x55
lsl r1, r1, #4
ldr r2, [r4, r1]
cmp r2, #0
beq _02208BAE
add r0, r1, #0
add r0, #8
ldrb r2, [r4, r0]
add r0, r1, #5
ldrb r0, [r4, r0]
add r5, r2, r0
cmp r5, r2
bge _02208B86
bl GF_AssertFail
_02208B86:
lsl r1, r5, #0x18
add r0, r4, #0
lsr r1, r1, #0x18
bl ov96_02208BB8
ldr r1, _02208BB4 ; =0x00000555
lsl r0, r5, #0x18
ldrb r2, [r4, r1]
lsr r0, r0, #0x18
add r2, r2, #1
strb r2, [r4, r1]
sub r2, r1, #1
ldrb r3, [r4, r1]
ldrb r2, [r4, r2]
cmp r3, r2
blo _02208BAE
mov r2, #0
strb r2, [r4, r1]
sub r1, r1, #5
str r2, [r4, r1]
_02208BAE:
pop {r3, r4, r5, pc}
.balign 4, 0
_02208BB0: .word 0x00000559
_02208BB4: .word 0x00000555
thumb_func_end ov96_02208B34
thumb_func_start ov96_02208BB8
ov96_02208BB8: ; 0x02208BB8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x1c0
str r0, [sp, #4]
lsl r0, r1, #3
str r1, [sp, #8]
ldr r1, [sp, #4]
str r0, [sp, #0x10]
ldr r0, [r1, r0]
str r0, [sp, #0x14]
add r0, #0xab
ldrb r0, [r0]
cmp r0, #0
bne _02208BE6
ldr r0, [sp, #0x14]
add r0, #0xa6
ldrb r0, [r0]
cmp r0, #1
beq _02208BE6
ldr r0, [sp, #0x14]
add r0, #0xa4
ldrb r0, [r0]
cmp r0, #0
beq _02208BE8
_02208BE6:
b _02208FAC
_02208BE8:
mov r7, #0
add r6, r1, #0
add r5, sp, #0x38
_02208BEE:
ldr r1, [r6]
ldr r0, [r6, #4]
str r1, [r5]
str r0, [r5, #4]
ldr r4, [r5]
add r0, sp, #0x30
str r0, [sp]
ldr r1, [r4, #0x58]
add r0, r4, #0
asr r2, r1, #0xb
lsr r2, r2, #0x14
add r0, #0xb1
add r2, r1, r2
ldrb r0, [r0]
asr r1, r2, #0xc
ldr r2, [r4, #0x5c]
lsl r0, r0, #2
asr r3, r2, #0xb
lsr r3, r3, #0x14
add r3, r2, r3
asr r2, r3, #0xc
ldr r0, [r4, r0]
add r3, sp, #0x34
bl ov96_021EB0A4
add r0, sp, #0x28
str r0, [sp]
add r0, r4, #0
add r0, #0xb1
ldrb r0, [r0]
ldr r1, [sp, #0x34]
ldr r2, [sp, #0x30]
lsl r0, r0, #2
ldr r0, [r4, r0]
lsl r1, r1, #0xc
lsl r2, r2, #0xc
add r3, sp, #0x2c
bl ov96_021EB03C
ldr r1, [sp, #0x2c]
add r7, r7, #1
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
ldr r1, [sp, #0x28]
strh r0, [r5, #4]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
strh r0, [r5, #6]
add r6, #8
add r5, #8
cmp r7, #4
blt _02208BEE
ldr r0, [sp, #0x10]
add r1, sp, #0x38
add r0, r1, r0
ldr r2, [sp, #4]
str r0, [sp, #0x1c]
mov r4, #0
add r3, sp, #0xd0
_02208C6C:
add r6, r2, #0
add r6, #0x20
ldmia r6!, {r0, r1}
add r5, r3, #0
stmia r5!, {r0, r1}
ldr r0, [r6]
add r4, r4, #1
str r0, [r5]
add r2, #0xc
add r3, #0xc
cmp r4, #0x14
blt _02208C6C
mov r7, #0x11
ldr r4, [sp, #4]
mov r6, #0
add r5, sp, #0x58
lsl r7, r7, #4
_02208C8E:
add r3, r4, r7
ldmia r3!, {r0, r1}
add r2, r5, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
add r6, r6, #1
str r0, [r2]
add r4, #0xc
add r5, #0xc
cmp r6, #0xa
blt _02208C8E
mov r1, #0x62
ldr r0, [sp, #4]
lsl r1, r1, #2
ldr r0, [r0, r1]
ldr r4, [sp, #4]
str r0, [sp, #0x18]
mov r5, #0
_02208CB2:
ldr r0, _02208FB0 ; =0x000001A2
mov r1, #6
strh r5, [r4, r0]
add r0, r5, #0
bl _s32_div_f
ldr r0, [sp, #0x1c]
lsl r7, r1, #5
ldrh r0, [r0, #4]
sub r0, #0x50
add r1, r0, r7
mov r0, #0x19
lsl r0, r0, #4
str r1, [r4, r0]
add r0, r5, #0
mov r1, #6
bl _s32_div_f
lsl r6, r0, #5
ldr r0, [sp, #0x1c]
ldrh r0, [r0, #6]
sub r0, #0x30
add r1, r0, r6
mov r0, #0x65
lsl r0, r0, #2
str r1, [r4, r0]
bl LCRandom
ldr r1, [sp, #0x1c]
lsl r3, r0, #0x1b
ldrh r1, [r1, #4]
sub r1, #0x60
add r2, r1, r7
lsr r1, r0, #0x1f
sub r3, r3, r1
mov r0, #0x1b
ror r3, r0
add r0, r1, r3
add r1, r2, r0
mov r0, #0x66
lsl r0, r0, #2
str r1, [r4, r0]
bl LCRandom
ldr r1, [sp, #0x1c]
lsr r3, r0, #0x1f
lsl r2, r0, #0x1b
ldrh r1, [r1, #6]
sub r2, r2, r3
mov r0, #0x1b
sub r1, #0x80
ror r2, r0
add r1, r1, r6
add r0, r3, r2
add r1, r1, r0
mov r0, #0x67
lsl r0, r0, #2
str r1, [r4, r0]
add r5, r5, #1
add r4, #0x14
cmp r5, #0x30
blt _02208CB2
mov r2, #0
ldr r1, [sp, #4]
add r5, r2, #0
add r0, r0, #4
_02208D36:
add r2, r2, #1
strh r5, [r1, r0]
add r1, #0x14
cmp r2, #0x30
blt _02208D36
mov r1, #0x1a
lsl r1, r1, #4
mov r7, #0
mov r0, #0x14
add r2, r1, #0
_02208D4A:
add r4, r7, #0
_02208D4C:
add r3, r4, #0
add r3, #0x13
lsl r3, r3, #0x18
lsr r6, r3, #0x18
add r3, r6, #0
ldr r6, [sp, #4]
mul r3, r0
add r3, r6, r3
ldrsh r6, [r3, r1]
add r4, r4, #1
add r6, r6, #2
strh r6, [r3, r2]
cmp r4, #4
blt _02208D4C
add r5, r5, #1
cmp r5, #2
blt _02208D4A
mov r0, #0
str r0, [sp, #0xc]
mov r1, #0x19
ldr r0, [sp, #4]
lsl r1, r1, #4
add r4, r0, r1
_02208D7A:
add r6, r4, #0
ldr r5, [sp, #0x18]
mov r7, #0
add r6, #0x10
_02208D82:
ldr r0, [r5]
cmp r0, #0
beq _02208D9E
ldrh r1, [r5, #0x10]
ldrh r2, [r5, #0x12]
add r0, r4, #0
bl ov96_022090A8
cmp r0, #0
beq _02208D9E
mov r0, #0
ldrsh r0, [r6, r0]
add r0, r0, #7
strh r0, [r6]
_02208D9E:
add r7, r7, #1
add r5, #0x14
cmp r7, #5
blt _02208D82
add r7, r4, #0
mov r5, #0
add r6, sp, #0x38
add r7, #0x10
_02208DAE:
ldr r0, [sp, #8]
cmp r5, r0
beq _02208DCA
ldrh r1, [r6, #4]
ldrh r2, [r6, #6]
add r0, r4, #0
bl ov96_022090A8
cmp r0, #0
beq _02208DCA
mov r0, #0
ldrsh r0, [r7, r0]
sub r0, r0, #3
strh r0, [r7]
_02208DCA:
add r5, r5, #1
add r6, #8
cmp r5, #4
blt _02208DAE
add r6, r4, #0
mov r7, #0
add r5, sp, #0xd0
add r6, #0x10
_02208DDA:
ldr r0, [r5]
cmp r0, #0
beq _02208E06
ldr r1, [r5, #4]
ldr r2, [r5, #8]
lsl r1, r1, #0x10
lsl r2, r2, #0x10
add r0, r4, #0
lsr r1, r1, #0x10
lsr r2, r2, #0x10
bl ov96_022090A8
cmp r0, #0
beq _02208DFE
mov r0, #0
ldrsh r0, [r6, r0]
sub r0, r0, #2
strh r0, [r6]
_02208DFE:
add r7, r7, #1
add r5, #0xc
cmp r7, #0x14
blt _02208DDA
_02208E06:
add r6, r4, #0
mov r7, #0
add r5, sp, #0x58
add r6, #0x10
_02208E0E:
ldr r0, [r5]
cmp r0, #0
beq _02208E3A
ldr r1, [r5, #4]
ldr r2, [r5, #8]
lsl r1, r1, #0x10
lsl r2, r2, #0x10
add r0, r4, #0
lsr r1, r1, #0x10
lsr r2, r2, #0x10
bl ov96_022090A8
cmp r0, #0
beq _02208E32
mov r0, #0
ldrsh r0, [r6, r0]
add r0, r0, #2
strh r0, [r6]
_02208E32:
add r7, r7, #1
add r5, #0xc
cmp r7, #0xa
blt _02208E0E
_02208E3A:
add r0, r4, #0
bl ov96_022090D8
cmp r0, #0
bne _02208E4C
mov r0, #0x10
ldrsh r0, [r4, r0]
sub r0, #0x64
strh r0, [r4, #0x10]
_02208E4C:
ldr r0, [sp, #0xc]
add r4, #0x14
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, #0x30
blt _02208D7A
ldr r0, [sp, #0x14]
ldr r1, [r0, #0x5c]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
lsl r0, r0, #4
lsr r1, r0, #0x10
mov r0, #1
lsl r0, r0, #8
cmp r1, r0
bls _02208E8E
mov r4, #0x96
add r3, r0, #0
lsl r4, r4, #2
ldr r1, [sp, #4]
mov r2, #0
add r3, #0xa0
add r5, r4, #0
_02208E7C:
add r0, r1, r3
ldrsh r6, [r0, r4]
add r2, r2, #1
add r1, #0x14
add r6, r6, #3
strh r6, [r0, r5]
cmp r2, #6
blt _02208E7C
b _02208EA8
_02208E8E:
bhs _02208EA8
mov r1, #0x1a
ldr r3, [sp, #4]
mov r4, #0
add r0, #0xa0
lsl r1, r1, #4
_02208E9A:
ldrsh r2, [r3, r0]
add r4, r4, #1
add r2, r2, #3
strh r2, [r3, r1]
add r3, #0x14
cmp r4, #6
blt _02208E9A
_02208EA8:
ldr r0, [sp, #0x14]
add r0, #0xaa
ldrb r0, [r0]
cmp r0, #0
beq _02208F2E
mov r7, #0x1a
lsl r7, r7, #4
add r4, r7, #0
add r6, r7, #0
ldr r2, [sp, #4]
mov r3, #0
add r4, #0xb8
add r6, #0xb8
_02208EC2:
ldr r5, [sp, #0x14]
add r1, r2, r7
add r5, #0xaa
ldrsh r0, [r1, r4]
ldrb r5, [r5]
add r3, r3, #1
add r2, #0x14
add r0, r0, r5
strh r0, [r1, r6]
cmp r3, #6
blt _02208EC2
ldr r0, [sp, #0x14]
ldr r1, [r0, #0x58]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
lsl r0, r0, #4
lsr r1, r0, #0x10
mov r0, #1
lsl r0, r0, #8
cmp r1, r0
bls _02208F0E
mov r4, #0x96
add r3, r0, #0
lsl r4, r4, #2
ldr r1, [sp, #4]
mov r2, #0
add r3, #0xa0
add r5, r4, #0
_02208EFC:
add r0, r1, r3
ldrsh r6, [r0, r4]
add r2, r2, #1
add r1, #0x14
add r6, r6, #2
strh r6, [r0, r5]
cmp r2, #3
blt _02208EFC
b _02208F2E
_02208F0E:
bhs _02208F2E
mov r4, #0xa5
add r3, r0, #0
lsl r4, r4, #2
ldr r1, [sp, #4]
mov r2, #0
add r3, #0xa0
add r5, r4, #0
_02208F1E:
add r0, r1, r3
ldrsh r6, [r0, r4]
add r2, r2, #1
add r1, #0x14
add r6, r6, #2
strh r6, [r0, r5]
cmp r2, #3
blt _02208F1E
_02208F2E:
ldr r0, [sp, #4]
bl ov96_02208FB8
add r4, r0, #0
ldr r1, _02208FB4 ; =0x00000558
ldr r0, [sp, #4]
ldrb r1, [r0, r1]
ldr r0, [sp, #8]
cmp r0, r1
blo _02208FAC
ldr r0, [sp, #0x1c]
ldr r2, [sp, #0x1c]
ldr r1, [r0]
add r0, sp, #0x20
str r0, [sp]
add r0, r1, #0
add r0, #0xb1
ldrb r0, [r0]
ldrh r2, [r2, #6]
add r3, sp, #0x24
lsl r0, r0, #2
ldr r0, [r1, r0]
ldr r1, [sp, #0x1c]
ldrh r1, [r1, #4]
bl ov96_021EB0A4
ldr r0, [sp, #0x24]
lsl r1, r0, #0xc
ldr r0, [sp, #0x1c]
ldr r0, [r0]
str r1, [r0, #0x7c]
ldr r0, [sp, #0x20]
lsl r1, r0, #0xc
ldr r0, [sp, #0x1c]
ldr r0, [r0]
add r0, #0x80
str r1, [r0]
ldr r1, [sp, #0x1c]
mov r0, #0
ldr r1, [r1]
add r1, #0x84
str r0, [r1]
ldr r1, [r4, #8]
lsl r2, r1, #0xc
ldr r1, [sp, #0x1c]
ldr r1, [r1]
add r1, #0x88
str r2, [r1]
ldr r1, [r4, #0xc]
lsl r2, r1, #0xc
ldr r1, [sp, #0x1c]
ldr r1, [r1]
add r1, #0x8c
str r2, [r1]
ldr r1, [sp, #0x1c]
ldr r1, [r1]
add r1, #0x90
str r0, [r1]
ldr r0, [sp, #0x1c]
mov r1, #1
ldr r0, [r0]
add r0, #0xa5
strb r1, [r0]
_02208FAC:
add sp, #0x1c0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02208FB0: .word 0x000001A2
_02208FB4: .word 0x00000558
thumb_func_end ov96_02208BB8
thumb_func_start ov96_02208FB8
ov96_02208FB8: ; 0x02208FB8
push {r4, lr}
sub sp, #0x180
mov r1, #0x19
lsl r1, r1, #4
add r0, r0, r1
mov r2, #0
add r1, sp, #0
_02208FC6:
add r2, r2, #1
stmia r1!, {r0}
add r0, #0x14
cmp r2, #0x30
blt _02208FC6
add r0, sp, #0
add r1, sp, #0xc0
bl ov96_02208FF0
add r4, r0, #0
bl LCRandom
add r1, r4, #0
bl _s32_div_f
lsl r0, r1, #0x18
lsr r1, r0, #0x16
add r0, sp, #0xc0
ldr r0, [r0, r1]
add sp, #0x180
pop {r4, pc}
thumb_func_end ov96_02208FB8
thumb_func_start ov96_02208FF0
ov96_02208FF0: ; 0x02208FF0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x1fc
sub sp, #0x54
mov ip, r0
add r0, sp, #0x10
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0
str r0, [sp]
str r0, [sp, #0xc]
ldr r0, [sp]
add r7, r1, #0
_02209008:
add r2, r0, #1
mov r1, #0xc
mul r1, r2
add r2, sp, #4
lsl r4, r0, #2
mov r3, ip
ldr r3, [r3, r4]
add r2, r2, r1
str r3, [r2, #8]
mov r3, #0
str r3, [r2, #4]
add r4, r3, #0
add r3, sp, #4
str r4, [r3, r1]
add r1, r4, #0
cmp r0, #0
bls _02209054
ldr r5, [r2, #8]
mov r4, #0x10
ldrsh r4, [r5, r4]
mov r6, #0x10
_02209032:
ldr r3, [r3, #4]
ldr r5, [r3, #8]
ldrsh r5, [r5, r6]
cmp r5, r4
bge _0220904A
ldr r4, [r3]
str r2, [r4, #4]
ldr r4, [r3]
str r4, [r2]
str r3, [r2, #4]
str r2, [r3]
b _02209054
_0220904A:
add r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
cmp r1, r0
blo _02209032
_02209054:
cmp r1, r0
bne _0220905C
str r2, [r3, #4]
str r3, [r2]
_0220905C:
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #0x30
blo _02209008
ldr r0, [sp, #8]
mov r3, #0
ldr r1, [r0, #8]
mov r0, #0x10
ldrsh r2, [r1, r0]
add r1, sp, #4
_02209072:
ldr r1, [r1, #4]
lsl r5, r3, #2
ldr r4, [r1, #8]
str r4, [r7, r5]
ldr r4, [r7, r5]
ldrsh r4, [r4, r0]
cmp r2, r4
bne _0220908C
ldr r4, [sp]
add r4, r4, #1
lsl r4, r4, #0x18
lsr r4, r4, #0x18
str r4, [sp]
_0220908C:
add r3, r3, #1
lsl r3, r3, #0x18
lsr r3, r3, #0x18
cmp r3, #0x30
blo _02209072
ldr r0, [sp]
cmp r0, #0
bne _022090A0
bl GF_AssertFail
_022090A0:
ldr r0, [sp]
add sp, #0x1fc
add sp, #0x54
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_02208FF0
thumb_func_start ov96_022090A8
ov96_022090A8: ; 0x022090A8
push {r4, r5}
ldr r5, [r0, #8]
ldr r3, [r0, #0xc]
add r4, r5, #0
add r0, r3, #0
sub r5, #0x10
add r4, #0x10
sub r0, #0x10
add r3, #0x10
cmp r5, r1
bgt _022090D0
cmp r1, r4
bge _022090D0
cmp r0, r2
bgt _022090D0
cmp r2, r3
bge _022090D0
mov r0, #1
pop {r4, r5}
bx lr
_022090D0:
mov r0, #0
pop {r4, r5}
bx lr
.balign 4, 0
thumb_func_end ov96_022090A8
thumb_func_start ov96_022090D8
ov96_022090D8: ; 0x022090D8
ldr r2, [r0, #0xc]
cmp r2, #0x68
bge _022090E2
mov r0, #0
bx lr
_022090E2:
mov r1, #0x62
lsl r1, r1, #2
cmp r2, r1
ldr r1, [r0, #8]
bgt _0220910C
cmp r1, #0x90
blt _022090F4
mov r2, #1
b _022090F6
_022090F4:
mov r2, #0
_022090F6:
mov r0, #0x17
lsl r0, r0, #4
cmp r1, r0
bgt _02209102
mov r0, #1
b _02209104
_02209102:
mov r0, #0
_02209104:
tst r0, r2
beq _0220912C
mov r0, #1
bx lr
_0220910C:
cmp r1, #0xd0
blt _02209114
mov r2, #1
b _02209116
_02209114:
mov r2, #0
_02209116:
mov r0, #0x13
lsl r0, r0, #4
cmp r1, r0
bgt _02209122
mov r0, #1
b _02209124
_02209122:
mov r0, #0
_02209124:
tst r0, r2
beq _0220912C
mov r0, #1
bx lr
_0220912C:
mov r0, #0
bx lr
thumb_func_end ov96_022090D8
thumb_func_start ov96_02209130
ov96_02209130: ; 0x02209130
push {r4, r5, r6, lr}
sub sp, #0x10
add r5, r1, #0
add r6, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
ldrb r0, [r5]
cmp r0, #0
beq _0220914A
cmp r0, #1
beq _0220918A
b _022091A6
_0220914A:
ldr r0, [r4, #0x40]
bl ov96_0220A840
ldr r0, [r4, #0x40]
bl ov96_0220AD34
cmp r0, #2
bne _022091AA
ldr r1, _022091B0 ; =ov96_0221CC00
add r0, sp, #0xc
ldrh r2, [r1]
ldrh r1, [r1, #2]
strh r2, [r0]
strh r1, [r0, #2]
ldr r0, [r4, #0xc]
bl sub_0200E2B0
add r3, r0, #0
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
add r0, sp, #0xc
str r0, [sp, #8]
ldr r2, [r4, #0x14]
add r0, r6, #0
mov r1, #0
bl ov96_021E62AC
ldrb r0, [r5]
add r0, r0, #1
strb r0, [r5]
b _022091AA
_0220918A:
add r0, r6, #0
bl ov96_021E637C
cmp r0, #0
beq _022091AA
ldr r0, [r4, #0x10]
mov r1, #0
bl ov96_021EB144
add r0, r6, #0
mov r1, #1
bl ov96_021E5FC8
b _022091AA
_022091A6:
bl GF_AssertFail
_022091AA:
mov r0, #0
add sp, #0x10
pop {r4, r5, r6, pc}
.balign 4, 0
_022091B0: .word ov96_0221CC00
thumb_func_end ov96_02209130
thumb_func_start ov96_022091B4
ov96_022091B4: ; 0x022091B4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
add r0, r5, #0
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
ldr r0, [r0, #0x10]
lsl r0, r0, #0xf
lsr r0, r0, #0x1f
cmp r0, #1
bne _0220920C
ldr r0, [r4, #0x40]
bl ov96_0220AD4C
add r1, r0, #0
add r0, r5, #0
bl ov96_0220A5DC
add r0, r4, #0
bl ov96_02209BF8
ldr r0, [r4, #0x4c]
mov r1, #0
bl ov96_0220B708
ldr r0, [r4, #0x44]
bl ov96_0220B8F0
ldr r0, [r4, #0x40]
bl ov96_0220A87C
ldr r0, [r4, #0x10]
mov r1, #1
bl ov96_021EB144
add sp, #0x10
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_0220920C:
bl System_GetTouchNew
cmp r0, #0
beq _0220922E
add r0, r5, #0
bl ov96_021E5F24
add r1, r0, #0
mov r0, #1
lsl r1, r1, #0x18
str r0, [sp]
add r0, r5, #0
lsr r1, r1, #0x18
mov r2, #3
mov r3, #0
bl ov96_021E8228
_0220922E:
add r0, r4, #0
bl ov96_02209E70
ldr r0, [r4, #0x40]
bl ov96_0220A840
ldr r0, [r4, #0x40]
bl ov96_0220AD34
add r6, r0, #0
cmp r6, #1
bne _0220924A
mov r1, #1
b _0220924C
_0220924A:
mov r1, #0
_0220924C:
ldr r0, [r4, #0x4c]
bl ov96_0220B528
add r0, r5, #0
bl ov96_021E5F24
cmp r0, #0
bne _02209262
ldr r0, [r4, #0x48]
bl ov96_0220C9A0
_02209262:
ldr r0, [r4, #0x44]
bl ov96_0220B8D8
ldr r0, [r4, #0x40]
bl ov96_0220A910
add r7, r0, #0
add r0, r4, #0
add r1, r7, #0
bl ov96_0220A298
ldr r0, [r4, #0x4c]
bl ov96_0220B7CC
cmp r0, #0
beq _02209312
cmp r6, #2
bne _02209312
cmp r7, #0
beq _02209312
ldr r0, [r4, #0x4c]
bl ov96_0220B758
add r6, r0, #0
ldr r0, [r4, #0x4c]
bl ov96_0220B774
ldr r1, [r6]
str r0, [sp, #8]
ldr r0, [r4, #0x40]
lsr r1, r1, #0x1a
bl ov96_0220A8CC
add r7, r0, #0
ldr r0, [r4, #0x4c]
bl ov96_0220B7B4
add r1, r0, #0
ldr r0, [sp, #8]
add r3, r7, #0
str r0, [sp]
add r0, sp, #0xc
str r0, [sp, #4]
ldr r2, [r6]
ldr r0, [r4, #0x40]
lsl r2, r2, #0x17
lsr r2, r2, #0x17
lsl r2, r2, #0x10
lsr r2, r2, #0x10
lsl r2, r2, #0x10
asr r2, r2, #0x10
bl ov96_0220AAEC
add r2, r0, #0
ldr r0, [r4, #0x4c]
add r1, r7, #0
bl ov96_0220B634
add r0, r4, #0
bl ov96_02209BB0
cmp r7, #0
beq _022092EC
add r0, r4, #0
mov r1, #0x10
mov r2, #2
bl ov96_0220A704
b _02209312
_022092EC:
ldr r0, [sp, #0xc]
cmp r0, #0
beq _022092FE
add r0, r4, #0
mov r1, #4
mov r2, #1
bl ov96_0220A704
b _02209312
_022092FE:
ldr r0, [r4, #0x4c]
bl ov96_0220B774
cmp r0, #0
beq _02209312
add r0, r4, #0
mov r1, #4
mov r2, #1
bl ov96_0220A704
_02209312:
mov r0, #0x26
lsl r0, r0, #4
ldr r1, [r4, r0]
cmp r1, #0
ble _02209320
sub r1, r1, #1
str r1, [r4, r0]
_02209320:
mov r1, #0x26
lsl r1, r1, #4
ldr r1, [r4, r1]
add r0, r5, #0
bl ov96_021E6454
mov r0, #0x26
lsl r0, r0, #4
ldr r0, [r4, r0]
cmp r0, #0
bne _02209356
add r0, r5, #0
bl ov96_021E5F24
cmp r0, #0
bne _02209356
add r0, r5, #0
bl ov96_021E5F54
add r0, #0x28
bl ov96_021E8A20
mov r1, #1
ldr r2, [r0, #0x10]
lsl r1, r1, #0x10
orr r1, r2
str r1, [r0, #0x10]
_02209356:
mov r0, #0
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_022091B4
thumb_func_start ov96_0220935C
ov96_0220935C: ; 0x0220935C
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r4, r1, #0
add r5, r0, #0
bl ov96_021E5DC4
add r6, r0, #0
ldrb r0, [r4]
cmp r0, #0
beq _02209376
cmp r0, #1
beq _02209394
b _022093C8
_02209376:
add r0, r5, #0
bl ov96_0220A4DC
add r0, r5, #0
bl ov96_0220A14C
add r0, r5, #0
bl ov96_022091B4
cmp r0, #0
beq _022093C8
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _022093C8
_02209394:
add r0, r5, #0
bl ov96_021E667C
cmp r0, #0
beq _022093C8
mov r0, #0x9a
lsl r0, r0, #2
ldr r0, [r6, r0]
cmp r0, #0
bne _022093C8
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r6]
str r0, [sp, #8]
mov r0, #0
add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
bl BeginNormalPaletteFade
add r0, r5, #0
mov r1, #2
bl ov96_021E5FC8
_022093C8:
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_0220935C
thumb_func_start ov96_022093D0
ov96_022093D0: ; 0x022093D0
push {r4, r5, r6, lr}
add r6, r0, #0
bl ov96_021E5DC4
add r5, r0, #0
bl IsPaletteFadeFinished
cmp r0, #0
beq _02209442
add r0, r6, #0
bl ov96_021E5F24
add r4, r0, #0
ldr r0, [r5, #0x40]
bl ov96_0220AD4C
lsl r1, r4, #0x18
add r2, r0, #0
add r0, r6, #0
lsr r1, r1, #0x18
bl ov96_021E5FB0
cmp r4, #0
bne _0220943E
add r0, r6, #0
bl ov96_021E5D34
add r4, r0, #0
cmp r4, #4
bge _0220943E
mov r0, #0x28
add r5, r4, #0
mul r5, r0
_02209412:
add r0, r6, #0
bl ov96_021E5F54
add r0, #0x50
add r0, r0, r5
bl ov96_021E8A20
add r2, r0, #0
ldr r2, [r2]
lsl r1, r4, #0x18
lsl r2, r2, #0x18
lsr r2, r2, #0x18
lsl r2, r2, #0x10
add r0, r6, #0
lsr r1, r1, #0x18
lsr r2, r2, #0x10
bl ov96_021E5FB0
add r4, r4, #1
add r5, #0x28
cmp r4, #4
blt _02209412
_0220943E:
mov r0, #1
pop {r4, r5, r6, pc}
_02209442:
mov r0, #0
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_022093D0
thumb_func_start ov96_02209448
ov96_02209448: ; 0x02209448
push {r4, r5, r6, r7, lr}
sub sp, #0xec
str r0, [sp, #0xc]
bl ov96_021E5DC4
str r0, [sp, #0x14]
ldr r0, [sp, #0xc]
bl ov96_021E5DD4
cmp r0, #7
bls _02209460
b _0220971E
_02209460:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0220946C: ; jump table
.short _0220947C - _0220946C - 2 ; case 0
.short _022094EE - _0220946C - 2 ; case 1
.short _02209546 - _0220946C - 2 ; case 2
.short _022095D2 - _0220946C - 2 ; case 3
.short _02209618 - _0220946C - 2 ; case 4
.short _0220963C - _0220946C - 2 ; case 5
.short _022096F2 - _0220946C - 2 ; case 6
.short _02209710 - _0220946C - 2 ; case 7
_0220947C:
mov r2, #6
mov r0, #0x5c
mov r1, #0x8d
lsl r2, r2, #0x10
bl CreateHeap
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
bl GfGfx_DisableEngineAPlanes
bl GfGfx_DisableEngineBPlanes
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _02209728 ; =0xFFFFE0FF
and r1, r0
str r1, [r2]
ldr r2, _0220972C ; =0x04001000
ldr r1, [r2]
and r0, r1
str r0, [r2]
bl ov96_02209820
ldr r0, _02209730 ; =gSystem + 0x60
mov r1, #1
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
mov r1, #0x27
ldr r0, [sp, #0xc]
lsl r1, r1, #4
bl ov96_021E5D94
mov r2, #0x27
mov r1, #0
lsl r2, r2, #4
add r4, r0, #0
bl MI_CpuFill8
mov r0, #0x8d
str r0, [r4]
mov r1, #0xe1
mov r0, #0x26
lsl r1, r1, #2
lsl r0, r0, #4
str r1, [r4, r0]
ldr r0, [sp, #0xc]
bl ov96_021E5DEC
b _02209722
_022094EE:
ldr r0, [sp, #0x14]
ldr r0, [r0]
bl BgConfig_Alloc
ldr r1, [sp, #0x14]
str r0, [r1, #4]
ldr r0, [sp, #0xc]
mov r1, #4
bl ov96_021E6670
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x14]
ldr r0, [r0, #4]
ldr r1, [r1]
bl ov96_02209C14
ldr r0, [sp, #0xc]
bl ov96_02209DE4
ldr r0, [sp, #0x14]
bl ov96_02209D14
ldr r0, [sp, #0x14]
bl ov96_02209840
ldr r0, [sp, #0x14]
ldr r0, [r0, #0xc]
bl sub_0200E2B0
str r0, [sp]
ldr r0, [sp, #0x14]
ldr r3, [sp, #0x14]
ldr r0, [r0]
ldr r3, [r3, #0x14]
mov r1, #9
mov r2, #0x20
bl ov96_021EA854
ldr r1, [sp, #0x14]
str r0, [r1, #0x10]
ldr r0, [sp, #0xc]
bl ov96_021E5DEC
b _02209722
_02209546:
mov r5, #0
add r6, sp, #0x18
add r2, r6, #0
add r0, r5, #0
add r1, r5, #0
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
str r0, [r2]
str r5, [sp, #0x10]
add r7, sp, #0x5c
_02209566:
ldr r0, [sp, #0xc]
bl ov96_021E5F24
ldr r1, [sp, #0x10]
cmp r1, r0
beq _022095A4
mov r4, #0
_02209574:
cmp r5, #9
blt _0220957C
bl GF_AssertFail
_0220957C:
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x10]
add r2, r4, #0
add r3, r7, #0
bl ov96_021E6168
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x10]
add r2, r4, #0
bl ov96_021E60C0
bl ov96_021E6108
str r0, [r6, #0x14]
add r4, r4, #1
add r7, #0x10
add r6, r6, #4
add r5, r5, #1
cmp r4, #3
blt _02209574
_022095A4:
ldr r0, [sp, #0x10]
add r0, r0, #1
str r0, [sp, #0x10]
cmp r0, #4
blt _02209566
mov r0, #1
str r0, [sp, #0x1c]
str r0, [sp, #0x24]
str r0, [sp, #0x28]
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
ldr r0, [sp, #0x14]
mov r1, #9
ldr r0, [r0, #0x10]
add r2, sp, #0x5c
add r3, sp, #0x18
bl ov96_021EA8A8
ldr r0, [sp, #0xc]
bl ov96_021E5DEC
b _02209722
_022095D2:
ldr r0, [sp, #0x14]
ldr r0, [r0, #0x10]
bl ov96_021EAA00
cmp r0, #0
bne _022095E0
b _02209722
_022095E0:
ldr r0, [sp, #0x14]
bl ov96_02209A14
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x14]
ldr r0, [r0, #8]
ldr r1, [r1, #0xc]
bl ov96_02209B04
ldr r0, [sp, #0x14]
ldr r0, [r0, #0xc]
bl sub_0200E2B0
ldr r2, [sp, #0x14]
add r3, r0, #0
ldr r0, [sp, #0xc]
ldr r2, [r2, #0x14]
mov r1, #0
bl ov96_021E61D8
ldr r0, [r0]
mov r1, #0
bl Sprite_SetDrawPriority
ldr r0, [sp, #0xc]
bl ov96_021E5DEC
b _02209722
_02209618:
ldr r0, [sp, #0x14]
bl ov96_02209910
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x14]
ldr r2, [sp, #0x14]
ldr r0, [r0]
ldr r1, [r1, #8]
ldr r2, [r2, #0xc]
ldr r3, [sp, #0xc]
bl ov96_0220A744
ldr r1, [sp, #0x14]
str r0, [r1, #0x40]
ldr r0, [sp, #0xc]
bl ov96_021E5DEC
b _02209722
_0220963C:
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x14]
ldr r2, [sp, #0x14]
ldr r0, [r0]
ldr r1, [r1, #8]
ldr r2, [r2, #0xc]
ldr r3, [sp, #0xc]
bl ov96_0220B374
ldr r1, [sp, #0x14]
ldr r2, [sp, #0x14]
str r0, [r1, #0x4c]
add r0, r1, #0
ldr r0, [r0, #0x10]
ldr r3, [sp, #0xc]
str r0, [sp]
add r0, r1, #0
ldr r0, [r0]
ldr r1, [r1, #8]
ldr r2, [r2, #0xc]
bl ov96_0220B7F4
ldr r1, [sp, #0x14]
str r0, [r1, #0x44]
add r0, r1, #0
ldr r0, [r0, #0x10]
mov r1, #1
bl ov96_021EB144
ldr r0, [sp, #0xc]
bl ov96_021E5F24
cmp r0, #0
bne _0220968E
ldr r1, [sp, #0x14]
ldr r0, [sp, #0xc]
ldr r1, [r1]
bl ov96_0220C93C
ldr r1, [sp, #0x14]
str r0, [r1, #0x48]
_0220968E:
ldr r0, [sp, #0x14]
bl ov96_02209F14
ldr r0, [sp, #0xc]
bl ov96_02209F8C
ldr r0, [sp, #0x14]
ldr r0, [r0, #4]
bl ov96_021E6030
mov r0, #1
bl sub_0203A994
ldr r0, [sp, #0xc]
mov r1, #1
bl ov96_021E5DFC
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineATogglePlanes
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineBTogglePlanes
ldr r0, [sp, #0xc]
bl ov96_021E5F24
cmp r0, #0
bne _022096D2
ldr r0, [sp, #0x14]
ldr r0, [r0, #0x48]
bl ov96_0220C9CC
_022096D2:
mov r0, #6
str r0, [sp]
mov r1, #1
ldr r0, [sp, #0x14]
str r1, [sp, #4]
ldr r0, [r0]
ldr r3, _02209734 ; =0x00007FFF
str r0, [sp, #8]
mov r0, #0
add r2, r1, #0
bl BeginNormalPaletteFade
ldr r0, [sp, #0xc]
bl ov96_021E5DEC
b _02209722
_022096F2:
ldr r0, [sp, #0xc]
bl ov96_021E5F24
cmp r0, #0
bne _02209702
ldr r0, [sp, #0xc]
bl ov96_0220A424
_02209702:
ldr r0, [sp, #0xc]
bl ov96_0220A4DC
ldr r0, [sp, #0xc]
bl ov96_021E5DEC
b _02209722
_02209710:
bl IsPaletteFadeFinished
cmp r0, #0
beq _02209722
add sp, #0xec
mov r0, #1
pop {r4, r5, r6, r7, pc}
_0220971E:
bl GF_AssertFail
_02209722:
mov r0, #0
add sp, #0xec
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02209728: .word 0xFFFFE0FF
_0220972C: .word 0x04001000
_02209730: .word gSystem + 0x60
_02209734: .word 0x00007FFF
thumb_func_end ov96_02209448
thumb_func_start ov96_02209738
ov96_02209738: ; 0x02209738
push {r3, lr}
bl ov96_021E5DC4
ldr r0, [r0, #0xc]
bl sub_0200D020
mov r0, #1
pop {r3, pc}
thumb_func_end ov96_02209738
thumb_func_start ov96_02209748
ov96_02209748: ; 0x02209748
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
bl ov96_021E6040
add r6, r0, #0
bl ov96_021E9510
mov r4, #0
add r7, r4, #0
_0220975C:
lsl r1, r4, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
bl ov96_021E5FBC
add r3, r0, #0
str r7, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, _022097A8 ; =0x00000126
add r1, r6, #0
str r0, [sp, #8]
add r0, r5, #0
add r2, r4, #0
bl ov96_021E95F8
add r4, r4, #1
cmp r4, #4
blt _0220975C
add r0, r6, #0
mov r1, #1
bl ov96_021E93B4
add r0, r6, #0
mov r1, #3
bl ov96_0221A56C
add r0, r6, #0
bl ov96_021E952C
add r0, r6, #0
mov r1, #3
bl ov96_021E9570
mov r0, #1
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
_022097A8: .word 0x00000126
thumb_func_end ov96_02209748
thumb_func_start ov96_022097AC
ov96_022097AC: ; 0x022097AC
push {r3, r4, r5, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
bl ov96_0220A0E0
add r0, r5, #0
bl ov96_021E5F24
cmp r0, #0
bne _022097CA
ldr r0, [r4, #0x48]
bl ov96_0220C998
_022097CA:
ldr r0, [r4, #0x40]
bl ov96_0220A7F8
ldr r0, [r4, #0x44]
bl ov96_0220B8A0
ldr r0, [r4, #0x4c]
bl ov96_0220B500
add r0, r4, #0
bl ov96_022099EC
add r0, r4, #0
bl ov96_022098E8
add r0, r4, #0
bl ov96_02209CA8
bl sub_0203A914
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
add r0, r5, #0
bl ov96_021E5DAC
ldr r0, _0220981C ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
mov r0, #0x8d
bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.balign 4, 0
_0220981C: .word gSystem + 0x60
thumb_func_end ov96_022097AC
thumb_func_start ov96_02209820
ov96_02209820: ; 0x02209820
push {r4, lr}
sub sp, #0x28
ldr r4, _0220983C ; =ov96_0221CCA0
add r3, sp, #0
mov r2, #5
_0220982A:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _0220982A
add r0, sp, #0
bl GfGfx_SetBanks
add sp, #0x28
pop {r4, pc}
.balign 4, 0
_0220983C: .word ov96_0221CCA0
thumb_func_end ov96_02209820
thumb_func_start ov96_02209840
ov96_02209840: ; 0x02209840
push {r3, r4, lr}
sub sp, #0x4c
ldr r3, _022098D8 ; =ov96_0221CC30
add r4, r0, #0
ldmia r3!, {r0, r1}
add r2, sp, #0x34
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r3, _022098DC ; =ov96_0221CC80
add r2, sp, #0x14
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r3, _022098E0 ; =ov96_0221CC1C
add r2, sp, #0
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
mov r0, #0x80
str r0, [sp]
ldr r0, [r4]
bl SpriteRenderer_Create
str r0, [r4, #8]
bl SpriteRenderer_CreateGfxHandler
str r0, [r4, #0xc]
ldr r0, [r4, #8]
add r1, sp, #0x14
add r2, sp, #0
mov r3, #0x20
bl sub_0200CF70
mov r2, #1
ldr r0, [r4, #8]
ldr r1, [r4, #0xc]
lsl r2, r2, #8
bl sub_0200CFF4
ldr r0, [r4, #8]
ldr r1, [r4, #0xc]
add r2, sp, #0x34
bl SpriteRenderer_Init2DGfxResManagersFromCountsArray
ldr r0, [r4, #8]
bl SpriteRenderer_GetG2dRendererPtr
mov r2, #1
mov r1, #0
lsl r2, r2, #0x14
bl G2dRenderer_SetSubSurfaceCoords
ldr r0, [r4]
ldr r1, _022098E4 ; =0x000002E7
mov r2, #1
bl ov96_021E9A78
str r0, [r4, #0x14]
ldr r1, [r4]
mov r0, #0x14
bl NARC_New
str r0, [r4, #0x50]
add sp, #0x4c
pop {r3, r4, pc}
.balign 4, 0
_022098D8: .word ov96_0221CC30
_022098DC: .word ov96_0221CC80
_022098E0: .word ov96_0221CC1C
_022098E4: .word 0x000002E7
thumb_func_end ov96_02209840
thumb_func_start ov96_022098E8
ov96_022098E8: ; 0x022098E8
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x50]
bl NARC_Delete
ldr r0, [r4, #0x10]
bl ov96_021EA894
ldr r0, [r4, #0x14]
bl ov96_021E9C0C
ldr r0, [r4, #8]
ldr r1, [r4, #0xc]
bl SpriteRenderer_UnloadResourcesAndRemoveGfxHandler
ldr r0, [r4, #8]
bl SpriteRenderer_Delete
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_022098E8
thumb_func_start ov96_02209910
ov96_02209910: ; 0x02209910
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
add r5, r0, #0
mov r7, #0
add r0, sp, #0x14
str r7, [r0]
str r7, [r0, #4]
mov r6, #2
str r7, [r0, #8]
lsl r6, r6, #0xe
add r4, r5, #0
_02209926:
mov r0, #0xb
lsl r0, r0, #0x10
str r6, [sp, #0x14]
str r0, [sp, #0x18]
ldr r0, [r5, #0xc]
bl sub_0200E2B0
add r1, r0, #0
ldr r0, [r5, #0x14]
ldr r3, [r5]
mov r2, #0
bl ov96_021EA584
str r0, [r4, #0x2c]
add r1, sp, #0x14
bl Sprite_SetMatrix
ldr r0, [r4, #0x2c]
mov r1, #2
bl Sprite_SetDrawPriority
ldr r0, [r4, #0x2c]
mov r1, #1
bl Set2dSpriteAnimSeqNo
ldr r0, [r4, #0x2c]
mov r1, #1
bl Set2dSpriteVisibleFlag
mov r0, #1
lsl r0, r0, #0x10
add r7, r7, #1
add r6, r6, r0
add r4, r4, #4
cmp r7, #3
blt _02209926
mov r0, #0x19
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r5, #8]
ldr r1, [r5, #0xc]
mov r2, #0xc0
mov r3, #0xb8
bl ov96_0220D13C
str r0, [r5, #0x24]
mov r7, #0
add r4, r5, #0
mov r6, #0xd4
_0220998A:
mov r1, #0
add r0, sp, #8
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
ldr r0, [r5, #0xc]
bl sub_0200E2B0
add r1, r0, #0
ldr r0, [r5, #0x14]
ldr r3, [r5]
mov r2, #2
bl ov96_021EA374
str r0, [r4, #0x38]
lsl r0, r6, #0xc
str r0, [sp, #8]
mov r0, #0x2e
lsl r0, r0, #0xe
str r0, [sp, #0xc]
mov r0, #0
str r0, [sp, #0x10]
ldr r0, [r4, #0x38]
add r1, sp, #8
bl Sprite_SetMatrix
ldr r0, [r4, #0x38]
mov r1, #1
bl Set2dSpriteVisibleFlag
add r7, r7, #1
add r4, r4, #4
add r6, #0x10
cmp r7, #2
blt _0220998A
mov r0, #0x13
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r5, #8]
ldr r1, [r5, #0xc]
mov r2, #0x20
mov r3, #0x10
bl ov96_0220D13C
str r0, [r5, #0x28]
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02209910
thumb_func_start ov96_022099EC
ov96_022099EC: ; 0x022099EC
push {r3, r4, r5, lr}
add r5, r0, #0
bne _022099F6
bl GF_AssertFail
_022099F6:
mov r4, #0
_022099F8:
ldr r0, [r5, #0x24]
cmp r0, #0
bne _02209A02
bl GF_AssertFail
_02209A02:
ldr r0, [r5, #0x24]
bl sub_0200D9DC
add r4, r4, #1
add r5, r5, #4
cmp r4, #2
blt _022099F8
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_022099EC
thumb_func_start ov96_02209A14
ov96_02209A14: ; 0x02209A14
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r6, r0, #0
ldr r5, [r6, #0xc]
ldr r4, [r6, #8]
mov r7, #1
str r7, [sp]
ldr r0, _02209AF8 ; =0x00002710
str r7, [sp, #4]
str r0, [sp, #8]
add r0, r4, #0
add r1, r5, #0
mov r2, #0xea
mov r3, #8
bl SpriteRenderer_LoadCharResObjFromNarcId
mov r0, #0
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, _02209AF8 ; =0x00002710
str r7, [sp, #8]
str r0, [sp, #0xc]
add r0, r4, #0
add r1, r5, #0
mov r2, #0xea
mov r3, #7
bl SpriteRenderer_LoadPlttResObjFromNarcId
add r0, r7, #0
str r0, [sp]
ldr r0, _02209AF8 ; =0x00002710
add r1, r5, #0
str r0, [sp, #4]
add r0, r4, #0
mov r2, #0xea
mov r3, #9
bl SpriteRenderer_LoadCellResObjFromNarcId
add r0, r7, #0
str r0, [sp]
ldr r0, _02209AF8 ; =0x00002710
add r1, r5, #0
str r0, [sp, #4]
add r0, r4, #0
mov r2, #0xea
mov r3, #0xa
bl SpriteRenderer_LoadAnimResObjFromNarcId
mov r0, #1
str r0, [sp]
mov r7, #2
ldr r0, _02209AFC ; =0x00002711
str r7, [sp, #4]
str r0, [sp, #8]
add r0, r4, #0
add r1, r5, #0
mov r2, #0xea
mov r3, #0xc
bl SpriteRenderer_LoadCharResObjFromNarcId
mov r0, #0
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, _02209AFC ; =0x00002711
str r7, [sp, #8]
str r0, [sp, #0xc]
add r0, r4, #0
add r1, r5, #0
mov r2, #0xea
mov r3, #0xb
bl SpriteRenderer_LoadPlttResObjFromNarcId
mov r0, #1
str r0, [sp]
ldr r0, _02209AFC ; =0x00002711
add r1, r5, #0
str r0, [sp, #4]
add r0, r4, #0
mov r2, #0xea
mov r3, #0xd
bl SpriteRenderer_LoadCellResObjFromNarcId
mov r0, #1
str r0, [sp]
ldr r0, _02209AFC ; =0x00002711
add r1, r5, #0
str r0, [sp, #4]
add r0, r4, #0
mov r2, #0xea
mov r3, #0xe
bl SpriteRenderer_LoadAnimResObjFromNarcId
bl sub_02074490
add r3, r0, #0
mov r0, #0
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, _02209B00 ; =0x00002712
str r7, [sp, #8]
str r0, [sp, #0xc]
add r0, r4, #0
add r1, r5, #0
mov r2, #0x14
bl SpriteRenderer_LoadPlttResObjFromNarcId
mov r1, #0x85
lsl r1, r1, #2
strh r0, [r6, r1]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02209AF8: .word 0x00002710
_02209AFC: .word 0x00002711
_02209B00: .word 0x00002712
thumb_func_end ov96_02209A14
thumb_func_start ov96_02209B04
ov96_02209B04: ; 0x02209B04
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
mov r4, #1
str r4, [sp]
ldr r2, _02209BA4 ; =0x00002712
str r4, [sp, #4]
str r2, [sp, #8]
mov r2, #0xea
mov r3, #0x10
add r5, r0, #0
add r6, r1, #0
bl SpriteRenderer_LoadCharResObjFromNarcId
mov r0, #0
str r0, [sp]
add r0, r4, #0
str r0, [sp, #4]
ldr r0, _02209BA8 ; =0x00002713
str r4, [sp, #8]
str r0, [sp, #0xc]
add r0, r5, #0
add r1, r6, #0
mov r2, #0xea
mov r3, #0xf
bl SpriteRenderer_LoadPlttResObjFromNarcId
mov r7, #2
mov r4, #0
_02209B3C:
mov r0, #1
str r0, [sp]
ldr r0, _02209BA8 ; =0x00002713
str r7, [sp, #4]
add r0, r4, r0
str r0, [sp, #8]
add r0, r5, #0
add r1, r6, #0
mov r2, #0xea
mov r3, #0x10
bl SpriteRenderer_LoadCharResObjFromNarcId
mov r0, #0
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, _02209BAC ; =0x00002714
str r7, [sp, #8]
add r0, r4, r0
str r0, [sp, #0xc]
add r0, r5, #0
add r1, r6, #0
mov r2, #0xea
mov r3, #0xf
bl SpriteRenderer_LoadPlttResObjFromNarcId
add r4, r4, #1
cmp r4, #2
blt _02209B3C
mov r0, #1
str r0, [sp]
ldr r0, _02209BA4 ; =0x00002712
add r1, r6, #0
str r0, [sp, #4]
add r0, r5, #0
mov r2, #0xea
mov r3, #0x11
bl SpriteRenderer_LoadCellResObjFromNarcId
mov r0, #1
str r0, [sp]
ldr r0, _02209BA4 ; =0x00002712
add r1, r6, #0
str r0, [sp, #4]
add r0, r5, #0
mov r2, #0xea
mov r3, #0x12
bl SpriteRenderer_LoadAnimResObjFromNarcId
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
_02209BA4: .word 0x00002712
_02209BA8: .word 0x00002713
_02209BAC: .word 0x00002714
thumb_func_end ov96_02209B04
thumb_func_start ov96_02209BB0
ov96_02209BB0: ; 0x02209BB0
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
bne _02209BBA
bl GF_AssertFail
_02209BBA:
ldr r0, [r6, #0x40]
bl ov96_0220AD4C
add r5, r0, #0
mov r4, #0
mov r7, #2
_02209BC6:
add r0, r5, #0
mov r1, #0xa
bl _s32_div_f
sub r0, r7, r4
lsl r0, r0, #2
add r0, r6, r0
lsl r1, r1, #0x10
lsr r1, r1, #0x10
ldr r0, [r0, #0x2c]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
cmp r5, #0xa
blo _02209BF6
add r0, r5, #0
mov r1, #0xa
bl _s32_div_f
lsl r0, r0, #0x10
add r4, r4, #1
lsr r5, r0, #0x10
cmp r4, #3
blt _02209BC6
_02209BF6:
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_02209BB0
thumb_func_start ov96_02209BF8
ov96_02209BF8: ; 0x02209BF8
push {r4, r5, r6, lr}
mov r4, #0
add r5, r0, #0
add r6, r4, #0
_02209C00:
ldr r0, [r5, #0x24]
add r1, r6, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r4, r4, #1
add r5, r5, #4
cmp r4, #2
blt _02209C00
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_02209BF8
thumb_func_start ov96_02209C14
ov96_02209C14: ; 0x02209C14
push {r4, r5, r6, r7, lr}
sub sp, #0xbc
ldr r4, _02209C9C ; =ov96_0221CC0C
add r3, sp, #4
add r6, r0, #0
str r1, [sp]
add r2, r3, #0
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl SetBothScreensModesAndDisable
ldr r4, _02209CA0 ; =ov96_0221CCF8
add r3, sp, #0x14
mov r2, #0x15
_02209C36:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _02209C36
ldr r5, _02209CA4 ; =ov96_0221CC48
mov r7, #0
add r4, sp, #0x14
_02209C44:
ldr r1, [r5]
add r0, r6, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
add r2, r4, #0
mov r3, #0
bl InitBgFromTemplate
ldr r1, [r5]
add r0, r6, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl BgClearTilemapBufferAndCommit
ldr r0, [r5]
ldr r3, [sp]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r1, #0x20
mov r2, #0
bl BG_ClearCharDataRange
add r7, r7, #1
add r4, #0x1c
add r5, r5, #4
cmp r7, #6
blt _02209C44
ldr r1, [sp]
mov r0, #4
bl FontID_Alloc
mov r0, #4
mov r1, #0
bl GfGfx_EngineATogglePlanes
add r0, r6, #0
mov r1, #0
mov r2, #3
mov r3, #0x10
bl BgSetPosTextAndCommit
add sp, #0xbc
pop {r4, r5, r6, r7, pc}
nop
_02209C9C: .word ov96_0221CC0C
_02209CA0: .word ov96_0221CCF8
_02209CA4: .word ov96_0221CC48
thumb_func_end ov96_02209C14
thumb_func_start ov96_02209CA8
ov96_02209CA8: ; 0x02209CA8
push {r4, r5, r6, lr}
add r6, r0, #0
mov r4, #0
add r5, r6, #0
_02209CB0:
ldr r0, [r5, #0x18]
bl String_Delete
add r4, r4, #1
add r5, r5, #4
cmp r4, #3
blt _02209CB0
mov r0, #0x97
lsl r0, r0, #2
ldr r0, [r6, r0]
bl MessageFormat_Delete
mov r0, #0x96
lsl r0, r0, #2
ldr r0, [r6, r0]
bl DestroyMsgData
mov r0, #0x86
lsl r0, r0, #2
mov r5, #0
add r4, r6, r0
_02209CDA:
add r0, r4, #0
bl RemoveWindow
add r5, r5, #1
add r4, #0x10
cmp r5, #4
blt _02209CDA
ldr r4, _02209D10 ; =ov96_0221CC48
mov r5, #0
_02209CEC:
ldr r1, [r4]
ldr r0, [r6, #4]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl FreeBgTilemapBuffer
add r5, r5, #1
add r4, r4, #4
cmp r5, #6
blt _02209CEC
mov r0, #4
bl FontID_Release
ldr r0, [r6, #4]
bl FreeToHeap
pop {r4, r5, r6, pc}
nop
_02209D10: .word ov96_0221CC48
thumb_func_end ov96_02209CA8
thumb_func_start ov96_02209D14
ov96_02209D14: ; 0x02209D14
push {r4, lr}
sub sp, #0x10
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
mov r1, #1
add r4, r0, #0
str r1, [sp, #8]
ldr r0, [r4]
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xea
bl GfGfxLoader_LoadCharData
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #2
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xea
bl GfGfxLoader_LoadScrnData
mov r1, #0
str r1, [sp]
ldr r0, [r4]
add r2, r1, #0
str r0, [sp, #4]
mov r0, #0xea
add r3, r1, #0
bl GfGfxLoader_GXLoadPal
mov r1, #0x1e
ldr r2, [r4]
mov r0, #0
lsl r1, r1, #4
bl LoadFontPal0
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #4
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xea
add r3, r1, #0
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #4
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xea
mov r3, #5
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #5
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xea
mov r3, #4
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #6
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xea
mov r3, #5
bl GfGfxLoader_LoadScrnData
mov r3, #0
str r3, [sp]
ldr r0, [r4]
mov r1, #3
str r0, [sp, #4]
mov r0, #0xea
mov r2, #4
bl GfGfxLoader_GXLoadPal
add sp, #0x10
pop {r4, pc}
thumb_func_end ov96_02209D14
thumb_func_start ov96_02209DE4
ov96_02209DE4: ; 0x02209DE4
push {r3, r4, r5, r6, r7, lr}
str r0, [sp]
bl ov96_021E5DC4
add r6, r0, #0
ldr r2, _02209E68 ; =0x00000135
ldr r3, [r6]
mov r0, #1
mov r1, #0x1b
bl NewMsgDataFromNarc
mov r1, #0x96
lsl r1, r1, #2
str r0, [r6, r1]
ldr r0, [r6]
bl MessageFormat_New
mov r1, #0x97
lsl r1, r1, #2
str r0, [r6, r1]
sub r1, #0x44
ldr r4, _02209E6C ; =ov96_0221CC60
mov r7, #0
add r5, r6, r1
_02209E14:
ldr r0, [r6, #4]
add r1, r5, #0
add r2, r4, #0
bl AddWindow
add r0, r5, #0
mov r1, #0
bl FillWindowPixelBuffer
add r0, r5, #0
bl ClearWindowTilemap
add r7, r7, #1
add r4, #8
add r5, #0x10
cmp r7, #4
blt _02209E14
ldr r0, [sp]
bl ov96_021E5F24
add r1, r0, #0
ldr r0, [sp]
bl ov96_021E5D50
add r5, r0, #0
mov r7, #0
add r4, r6, #0
_02209E4A:
ldr r1, [r6]
mov r0, #0xb
bl String_New
add r1, r5, #0
add r1, #0x12
str r0, [r4, #0x18]
bl CopyU16ArrayToString
add r7, r7, #1
add r4, r4, #4
add r5, #0x28
cmp r7, #3
blt _02209E4A
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02209E68: .word 0x00000135
_02209E6C: .word ov96_0221CC60
thumb_func_end ov96_02209DE4
thumb_func_start ov96_02209E70
ov96_02209E70: ; 0x02209E70
push {r3, r4, r5, lr}
sub sp, #8
add r5, r0, #0
bne _02209E7C
bl GF_AssertFail
_02209E7C:
ldr r0, [r5, #0x4c]
cmp r0, #0
bne _02209E86
bl GF_AssertFail
_02209E86:
mov r0, #0x26
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0x1e
bl _s32_div_f
cmp r0, #0
bge _02209E98
mov r0, #0
_02209E98:
mov r1, #0x64
bl _s32_div_f
lsl r0, r1, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
add r1, r0, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r5, #0x38]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r5, #0x3c]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
ldr r0, [r5, #0x4c]
bl ov96_0220B7B4
add r0, r0, #1
mov r1, #3
bl _s32_div_f
lsl r2, r1, #0x18
mov r0, #1
str r0, [sp]
mov r3, #2
mov r0, #0x97
lsr r2, r2, #0x16
str r3, [sp, #4]
lsl r0, r0, #2
add r2, r5, r2
ldr r0, [r5, r0]
ldr r2, [r2, #0x18]
mov r1, #0
bl BufferString
mov r2, #0x92
ldr r0, [r5]
lsl r2, r2, #2
add r1, r2, #0
str r0, [sp]
add r0, r5, r2
add r1, #0x14
add r2, #0x10
ldr r1, [r5, r1]
ldr r2, [r5, r2]
mov r3, #0x9a
bl ov96_02209F40
add sp, #8
pop {r3, r4, r5, pc}
thumb_func_end ov96_02209E70
thumb_func_start ov96_02209F14
ov96_02209F14: ; 0x02209F14
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
mov r3, #0x86
lsl r3, r3, #2
ldr r0, [r4]
add r1, r3, #0
add r2, r3, #0
str r0, [sp]
add r1, #0x44
add r2, #0x40
add r0, r4, r3
ldr r1, [r4, r1]
ldr r2, [r4, r2]
sub r3, #0xeb
bl ov96_02209F40
add r0, r4, #0
bl ov96_02209E70
add sp, #4
pop {r3, r4, pc}
thumb_func_end ov96_02209F14
thumb_func_start ov96_02209F40
ov96_02209F40: ; 0x02209F40
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r4, r1, #0
mov r1, #0
add r5, r0, #0
add r6, r2, #0
add r7, r3, #0
bl FillWindowPixelBuffer
ldr r3, [sp, #0x28]
add r0, r4, #0
add r1, r6, #0
add r2, r7, #0
bl ReadMsgData_ExpandPlaceholders
mov r1, #0
add r4, r0, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _02209F88 ; =0x000F0E00
add r2, r4, #0
str r0, [sp, #8]
add r0, r5, #0
add r3, r1, #0
str r1, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r4, #0
bl String_Delete
add r0, r5, #0
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02209F88: .word 0x000F0E00
thumb_func_end ov96_02209F40
thumb_func_start ov96_02209F8C
ov96_02209F8C: ; 0x02209F8C
push {r4, r5, r6, r7, lr}
sub sp, #0x24
str r0, [sp, #8]
bl ov96_021E5DC4
add r7, r0, #0
bne _02209F9E
bl GF_AssertFail
_02209F9E:
ldr r0, [r7, #8]
cmp r0, #0
bne _02209FA8
bl GF_AssertFail
_02209FA8:
ldr r0, [r7, #0xc]
cmp r0, #0
bne _02209FB2
bl GF_AssertFail
_02209FB2:
ldr r0, [r7, #0x44]
cmp r0, #0
bne _02209FBC
bl GF_AssertFail
_02209FBC:
mov r0, #0
str r0, [sp, #0x1c]
add r0, r7, #0
str r0, [sp, #0x18]
add r0, #0x54
str r0, [sp, #0x18]
mov r0, #0x78
str r0, [sp, #0x14]
ldr r0, _0220A0DC ; =ov96_0221CCC8
str r0, [sp, #0x10]
_02209FD0:
ldr r0, [sp, #0x14]
mov r3, #0x98
lsl r0, r0, #0x10
asr r4, r0, #0x10
ldr r0, [sp, #0x1c]
add r2, r4, #0
add r0, #0xd
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r7, #8]
ldr r1, [r7, #0xc]
bl ov96_0220D1A0
ldr r1, [sp, #0x18]
mov r2, #0
str r0, [r1, #4]
ldr r1, [sp, #0x1c]
ldr r0, [sp, #8]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_0220A254
mov r0, #0x12
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, [r7, #8]
ldr r1, [r7, #0xc]
add r2, r4, #0
mov r3, #0x98
bl ov96_0220D1A0
ldr r1, [sp, #0x18]
str r0, [r1, #8]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [sp, #0x14]
mov r6, #0
lsl r0, r0, #0x10
asr r0, r0, #0x10
add r0, r0, #6
lsl r0, r0, #0x10
asr r0, r0, #0x10
ldr r5, [sp, #0x18]
add r4, r6, #0
str r0, [sp, #0x20]
_0220A034:
ldr r0, [sp, #0x10]
mov r3, #0x88
ldr r0, [r0, #8]
sub r3, r3, r4
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp]
mov r0, #0x2c
sub r0, r0, r6
lsl r0, r0, #0x18
lsl r3, r3, #0x10
lsr r0, r0, #0x18
str r0, [sp, #4]
asr r3, r3, #0x10
sub r3, #0x14
lsl r3, r3, #0x10
ldr r0, [r7, #8]
ldr r1, [r7, #0xc]
ldr r2, [sp, #0x20]
asr r3, r3, #0x10
bl ov96_0220D1A0
mov r1, #0
str r0, [r5, #0x5c]
bl UnkImageStruct_SetSpriteVisibleFlag
add r6, r6, #1
add r4, #0x10
add r5, r5, #4
cmp r6, #5
blt _0220A034
ldr r0, [sp, #0x14]
mov r5, #0
lsl r0, r0, #0x10
asr r0, r0, #0x10
ldr r4, [sp, #0x18]
str r0, [sp, #0xc]
add r6, r5, #0
_0220A080:
ldr r0, [sp, #0x10]
mov r3, #0x88
ldr r0, [r0, #4]
sub r3, r3, r6
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp]
mov r0, #0x18
sub r0, r0, r5
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
lsl r3, r3, #0x10
ldr r0, [r7, #8]
ldr r1, [r7, #0xc]
ldr r2, [sp, #0xc]
asr r3, r3, #0x10
bl ov96_0220D1A0
mov r1, #0
str r0, [r4, #0xc]
bl UnkImageStruct_SetSpriteVisibleFlag
add r5, r5, #1
add r6, r6, #4
add r4, r4, #4
cmp r5, #0x14
blt _0220A080
ldr r0, [sp, #0x18]
add r0, #0x70
str r0, [sp, #0x18]
ldr r0, [sp, #0x14]
add r0, #0x20
str r0, [sp, #0x14]
ldr r0, [sp, #0x10]
add r0, #0xc
str r0, [sp, #0x10]
ldr r0, [sp, #0x1c]
add r0, r0, #1
str r0, [sp, #0x1c]
cmp r0, #4
bge _0220A0D6
b _02209FD0
_0220A0D6:
add sp, #0x24
pop {r4, r5, r6, r7, pc}
nop
_0220A0DC: .word ov96_0221CCC8
thumb_func_end ov96_02209F8C
thumb_func_start ov96_0220A0E0
ov96_0220A0E0: ; 0x0220A0E0
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
mov r7, #0
add r6, #0x54
_0220A0E8:
ldr r0, [r6, #4]
cmp r0, #0
bne _0220A0F2
bl GF_AssertFail
_0220A0F2:
ldr r0, [r6, #4]
bl sub_0200D9DC
ldr r0, [r6, #8]
cmp r0, #0
bne _0220A102
bl GF_AssertFail
_0220A102:
ldr r0, [r6, #8]
bl sub_0200D9DC
mov r4, #0
add r5, r6, #0
_0220A10C:
ldr r0, [r5, #0xc]
cmp r0, #0
bne _0220A116
bl GF_AssertFail
_0220A116:
ldr r0, [r5, #0xc]
bl sub_0200D9DC
add r4, r4, #1
add r5, r5, #4
cmp r4, #0x14
blt _0220A10C
mov r5, #0
add r4, r6, #0
_0220A128:
ldr r0, [r4, #0x5c]
cmp r0, #0
bne _0220A132
bl GF_AssertFail
_0220A132:
ldr r0, [r4, #0x5c]
bl sub_0200D9DC
add r5, r5, #1
add r4, r4, #4
cmp r5, #5
blt _0220A128
add r7, r7, #1
add r6, #0x70
cmp r7, #4
blt _0220A0E8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0220A0E0
thumb_func_start ov96_0220A14C
ov96_0220A14C: ; 0x0220A14C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
str r0, [sp]
cmp r0, #0
bne _0220A15A
bl GF_AssertFail
_0220A15A:
ldr r0, [sp]
bl ov96_021E5DC4
add r7, r0, #0
ldr r0, [sp]
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
add r7, #0x54
_0220A176:
ldr r0, [sp, #4]
mov r1, #5
ldr r0, [r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl _u32_div_f
add r6, r0, #0
cmp r6, #0x14
ble _0220A1BE
ldr r0, [r7, #0x5c]
bl UnkImageStruct_GetSpriteVisibleFlag
cmp r0, #0
bne _0220A1BC
mov r4, #0
add r5, r7, #0
_0220A198:
ldr r0, [r5, #0x5c]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
add r4, r4, #1
add r5, r5, #4
cmp r4, #5
blt _0220A198
mov r5, #0
add r4, r7, #0
_0220A1AC:
ldr r0, [r4, #0xc]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
add r5, r5, #1
add r4, r4, #4
cmp r5, #0x14
blt _0220A1AC
_0220A1BC:
sub r6, #0x14
_0220A1BE:
cmp r6, #0x14
ble _0220A1C4
mov r6, #0x14
_0220A1C4:
mov r4, #0
cmp r6, #0
ble _0220A1EC
add r5, r7, #0
_0220A1CC:
ldr r0, [r5, #0xc]
bl UnkImageStruct_GetSpriteVisibleFlag
cmp r0, #0
bne _0220A1E4
ldr r0, [r5, #0xc]
bl UnkImageStruct_ResetSpriteAnimCtrlState
ldr r0, [r5, #0xc]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
_0220A1E4:
add r4, r4, #1
add r5, r5, #4
cmp r4, r6
blt _0220A1CC
_0220A1EC:
ldr r0, [sp, #4]
ldr r0, [r0]
lsl r1, r0, #4
lsr r1, r1, #0x1f
beq _0220A22C
lsl r0, r0, #6
lsr r2, r0, #0x1e
ldrb r0, [r7]
cmp r2, r0
beq _0220A21A
ldr r1, [sp, #8]
lsl r2, r2, #0x18
lsl r1, r1, #0x18
ldr r0, [sp]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_0220A254
ldr r0, [sp, #4]
ldr r0, [r0]
lsl r0, r0, #6
lsr r0, r0, #0x1e
strb r0, [r7]
_0220A21A:
ldr r0, [r7, #4]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r7, #8]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
b _0220A23C
_0220A22C:
ldr r0, [r7, #8]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r7, #4]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
_0220A23C:
ldr r0, [sp, #4]
add r7, #0x70
add r0, r0, #4
str r0, [sp, #4]
ldr r0, [sp, #8]
add r0, r0, #1
str r0, [sp, #8]
cmp r0, #4
blt _0220A176
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0220A14C
thumb_func_start ov96_0220A254
ov96_0220A254: ; 0x0220A254
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
str r2, [sp, #8]
add r7, r0, #0
add r5, r1, #0
bl ov96_021E5DC4
add r6, r0, #0
add r4, r6, #0
ldr r2, [sp, #8]
add r0, r7, #0
add r1, r5, #0
add r3, sp, #0xc
add r4, #0x50
bl ov96_021E6168
lsl r0, r5, #9
str r0, [sp]
ldr r0, [r6]
mov r2, #0x71
str r0, [sp, #4]
mov r0, #0x70
mul r0, r5
lsl r2, r2, #2
add r0, r4, r0
ldrh r2, [r4, r2]
ldr r0, [r0, #8]
ldr r3, [r6, #0x50]
add r1, sp, #0xc
bl ov96_021EECB8
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0220A254
thumb_func_start ov96_0220A298
ov96_0220A298: ; 0x0220A298
push {r4, r5, r6, lr}
sub sp, #0x10
add r5, r0, #0
ldr r0, [r5, #0x4c]
add r6, r1, #0
bl ov96_0220B730
mov r4, #0x99
lsl r4, r4, #2
bl System_GetTouchNew
cmp r0, #0
beq _0220A322
add r0, sp, #0xc
add r1, sp, #8
bl System_GetTouchNewCoords
mov r1, #0
ldr r0, [sp, #0xc]
add r2, r1, #0
add r3, r1, #0
cmp r0, #0x60
blo _0220A2CC
cmp r0, #0xb0
bhi _0220A2CC
mov r3, #1
_0220A2CC:
cmp r3, #0
beq _0220A2D8
ldr r0, [sp, #8]
cmp r0, #0x48
blo _0220A2D8
mov r2, #1
_0220A2D8:
cmp r2, #0
beq _0220A2E4
ldr r0, [sp, #8]
cmp r0, #0x98
bhi _0220A2E4
mov r1, #1
_0220A2E4:
cmp r6, #0
bne _0220A2EC
cmp r1, #0
beq _0220A3A2
_0220A2EC:
ldr r1, [r5, r4]
ldr r0, _0220A40C ; =0xFFFF00FF
and r1, r0
ldr r0, [sp, #8]
lsl r0, r0, #0x18
lsr r0, r0, #0x10
orr r0, r1
str r0, [r5, r4]
ldr r1, [r5, r4]
ldr r0, _0220A410 ; =0xFF00FFFF
and r1, r0
ldr r0, [sp, #8]
lsl r0, r0, #0x18
lsr r0, r0, #8
orr r0, r1
str r0, [r5, r4]
ldr r1, [r5, r4]
mov r0, #0xff
bic r1, r0
mov r0, #1
orr r1, r0
str r1, [r5, r4]
ldr r1, [r5, r4]
lsl r0, r0, #0x18
orr r0, r1
str r0, [r5, r4]
b _0220A3A2
_0220A322:
ldr r0, [r5, r4]
lsl r0, r0, #7
lsr r0, r0, #0x1f
beq _0220A35C
bl System_GetTouchHeld
cmp r0, #0
bne _0220A35C
ldr r0, [r5, r4]
lsl r1, r0, #0x10
lsl r0, r0, #8
lsr r1, r1, #0x18
lsr r0, r0, #0x18
sub r0, r1, r0
cmp r0, #0x20
blt _0220A352
ldr r0, [r5, #0x4c]
bl ov96_0220B744
cmp r0, #0
beq _0220A352
ldr r0, [r5, #0x4c]
bl ov96_0220B6EC
_0220A352:
ldr r1, [r5, r4]
ldr r0, _0220A414 ; =0xFEFFFFFF
and r0, r1
str r0, [r5, r4]
b _0220A3A2
_0220A35C:
ldr r0, [r5, r4]
lsl r0, r0, #7
lsr r0, r0, #0x1f
beq _0220A3A2
add r0, sp, #4
add r1, sp, #0
bl System_GetTouchHeldCoords
ldr r1, [r5, r4]
ldr r0, _0220A410 ; =0xFF00FFFF
and r1, r0
ldr r0, [sp]
lsl r0, r0, #0x18
lsr r0, r0, #8
orr r0, r1
str r0, [r5, r4]
ldr r2, [r5, r4]
mov r1, #0xff
add r0, r2, #0
bic r0, r1
lsl r1, r2, #0x18
lsr r1, r1, #0x18
add r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
orr r0, r1
str r0, [r5, r4]
ldr r1, [r5, r4]
lsl r0, r1, #0x18
lsr r0, r0, #0x18
cmp r0, #0xa
blo _0220A3A2
ldr r0, _0220A414 ; =0xFEFFFFFF
and r0, r1
str r0, [r5, r4]
_0220A3A2:
bl System_GetTouchNew
cmp r0, #0
bne _0220A3B2
bl System_GetTouchHeld
cmp r0, #0
bgt _0220A408
_0220A3B2:
ldr r0, _0220A418 ; =ov96_0221CC04
bl TouchscreenHitbox_FindRectAtTouchNew
mov r1, #0
mvn r1, r1
cmp r0, r1
ldr r0, [r5, #0x4c]
beq _0220A3E4
bl ov96_0220B744
cmp r0, #0
beq _0220A3DA
ldr r0, _0220A41C ; =0x0000089B
mov r4, #0x14
bl PlaySE
ldr r0, [r5, #0x4c]
bl ov96_0220B6EC
b _0220A400
_0220A3DA:
ldr r0, _0220A420 ; =0x0000089C
mov r4, #0x16
bl PlaySE
b _0220A400
_0220A3E4:
bl ov96_0220B744
cmp r0, #0
bne _0220A3F0
mov r4, #0x15
b _0220A400
_0220A3F0:
ldr r0, [r5, #0x4c]
bl ov96_0220B788
cmp r0, #0
beq _0220A3FE
mov r4, #0x17
b _0220A400
_0220A3FE:
mov r4, #0x13
_0220A400:
ldr r0, [r5, #0x28]
add r1, r4, #0
bl UnkImageStruct_TryChangeSpriteAnimSeqNo
_0220A408:
add sp, #0x10
pop {r4, r5, r6, pc}
.balign 4, 0
_0220A40C: .word 0xFFFF00FF
_0220A410: .word 0xFF00FFFF
_0220A414: .word 0xFEFFFFFF
_0220A418: .word ov96_0221CC04
_0220A41C: .word 0x0000089B
_0220A420: .word 0x0000089C
thumb_func_end ov96_0220A298
thumb_func_start ov96_0220A424
ov96_0220A424: ; 0x0220A424
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
add r0, r5, #0
bl ov96_021E5F54
bl ov96_021E8A20
add r5, r0, #0
ldr r0, [r4, #0x4c]
bl ov96_0220B758
add r6, r0, #0
ldr r0, [r4, #0x4c]
bl ov96_0220B730
add r7, r0, #0
ldr r0, [r4, #0x40]
bl ov96_0220AD4C
lsl r0, r0, #0x18
ldr r1, [r5]
mov r2, #0xff
bic r1, r2
lsr r0, r0, #0x18
orr r1, r0
ldr r0, _0220A4C8 ; =0xFFFF00FF
str r1, [r5]
and r0, r1
ldr r1, [r6]
lsl r1, r1, #6
lsr r1, r1, #0x18
lsl r1, r1, #0x18
lsr r1, r1, #0x10
orr r0, r1
str r0, [r5]
ldr r0, [r4, #0x4c]
bl ov96_0220B79C
lsl r0, r0, #0x18
ldr r2, [r5]
ldr r1, _0220A4CC ; =0xFF00FFFF
lsr r0, r0, #8
and r1, r2
orr r0, r1
str r0, [r5]
ldr r0, [r4, #0x4c]
bl ov96_0220B774
lsl r0, r0, #0x1f
ldr r2, [r5]
ldr r1, _0220A4D0 ; =0xFBFFFFFF
lsr r0, r0, #5
and r1, r2
orr r0, r1
str r0, [r5]
cmp r7, #3
bne _0220A4A0
mov r2, #1
b _0220A4A2
_0220A4A0:
mov r2, #0
_0220A4A2:
ldr r1, [r5]
ldr r0, _0220A4D4 ; =0xEFFFFFFF
and r1, r0
lsl r0, r2, #0x1f
lsr r0, r0, #3
orr r0, r1
str r0, [r5]
ldr r0, [r4, #0x4c]
bl ov96_0220B7B4
lsl r0, r0, #0x1e
ldr r2, [r5]
ldr r1, _0220A4D8 ; =0xFCFFFFFF
lsr r0, r0, #6
and r1, r2
orr r0, r1
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
nop
_0220A4C8: .word 0xFFFF00FF
_0220A4CC: .word 0xFF00FFFF
_0220A4D0: .word 0xFBFFFFFF
_0220A4D4: .word 0xEFFFFFFF
_0220A4D8: .word 0xFCFFFFFF
thumb_func_end ov96_0220A424
thumb_func_start ov96_0220A4DC
ov96_0220A4DC: ; 0x0220A4DC
push {r3, r4, r5, r6, r7, lr}
str r0, [sp]
bl ov96_021E5F24
add r6, r0, #0
ldr r0, [sp]
bl ov96_021E5DC4
add r5, r0, #0
ldr r0, [sp]
bl ov96_021E5F54
add r4, r0, #0
cmp r5, #0
bne _0220A4FE
bl GF_AssertFail
_0220A4FE:
ldr r0, [r5, #0x4c]
cmp r0, #0
bne _0220A508
bl GF_AssertFail
_0220A508:
ldr r0, [r5, #0x40]
cmp r0, #0
bne _0220A512
bl GF_AssertFail
_0220A512:
cmp r6, #0
bne _0220A5C0
add r0, r4, #0
add r0, #0x28
bl ov96_021E8A20
add r5, r0, #0
add r0, r4, #0
add r0, #0x50
bl ov96_021E8A20
add r6, r0, #0
add r0, r4, #0
bl ov96_021E8A20
add r3, r0, #0
mov r2, #4
_0220A534:
ldmia r3!, {r0, r1}
stmia r6!, {r0, r1}
sub r2, r2, #1
bne _0220A534
ldr r0, [r3]
add r4, #0x50
str r0, [r6]
mov r6, #0
mov r7, #0xff
_0220A546:
add r0, r4, #0
bl ov96_021E8A20
ldr r2, [r0]
ldr r1, [r5]
lsl r2, r2, #0x18
lsr r2, r2, #0x18
lsl r2, r2, #0x18
bic r1, r7
lsr r2, r2, #0x18
orr r2, r1
ldr r1, _0220A5C8 ; =0xFFFF00FF
str r2, [r5]
and r1, r2
ldr r2, [r0]
add r6, r6, #1
lsl r2, r2, #0x10
lsr r2, r2, #0x18
lsl r2, r2, #0x18
lsr r2, r2, #0x10
orr r2, r1
ldr r1, _0220A5CC ; =0xFF00FFFF
str r2, [r5]
and r1, r2
ldr r2, [r0]
add r4, #0x28
lsl r2, r2, #8
lsr r2, r2, #0x18
lsl r2, r2, #0x18
lsr r2, r2, #8
orr r2, r1
ldr r1, _0220A5D0 ; =0xFCFFFFFF
str r2, [r5]
and r1, r2
ldr r2, [r0]
lsl r2, r2, #6
lsr r2, r2, #0x1e
lsl r2, r2, #0x1e
lsr r2, r2, #6
orr r2, r1
ldr r1, _0220A5D4 ; =0xFBFFFFFF
str r2, [r5]
and r1, r2
ldr r2, [r0]
lsl r2, r2, #5
lsr r2, r2, #0x1f
lsl r2, r2, #0x1f
lsr r2, r2, #5
orr r2, r1
str r2, [r5]
ldr r0, [r0]
ldr r1, _0220A5D8 ; =0xF7FFFFFF
lsl r0, r0, #3
lsr r0, r0, #0x1f
lsl r0, r0, #0x1f
and r1, r2
lsr r0, r0, #4
orr r0, r1
stmia r5!, {r0}
cmp r6, #4
blt _0220A546
_0220A5C0:
ldr r0, [sp]
bl ov96_0220A424
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0220A5C8: .word 0xFFFF00FF
_0220A5CC: .word 0xFF00FFFF
_0220A5D0: .word 0xFCFFFFFF
_0220A5D4: .word 0xFBFFFFFF
_0220A5D8: .word 0xF7FFFFFF
thumb_func_end ov96_0220A4DC
thumb_func_start ov96_0220A5DC
ov96_0220A5DC: ; 0x0220A5DC
push {r4, r5, r6, r7, lr}
sub sp, #0x14
str r0, [sp, #0x10]
add r5, r1, #0
bl ov96_021E5DC4
add r4, r0, #0
mov r0, #0x97
lsl r0, r0, #2
ldr r6, [r4, r0]
sub r0, r0, #4
ldr r7, [r4, r0]
lsl r1, r5, #0x10
ldr r0, [sp, #0x10]
lsr r1, r1, #0x10
bl ov96_021E8318
mov r0, #0x8e
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
mov r0, #1
str r0, [sp, #4]
add r0, r6, #0
add r2, r5, #0
mov r3, #3
bl BufferIntegerAsString
ldr r3, [r4]
add r0, r6, #0
add r1, r7, #0
mov r2, #0x9f
bl ReadMsgData_ExpandPlaceholders
add r5, r0, #0
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _0220A65C ; =0x000F0E00
mov r1, #4
str r0, [sp, #8]
mov r0, #0x8e
lsl r0, r0, #2
add r0, r4, r0
add r2, r5, #0
str r3, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r5, #0
bl String_Delete
mov r0, #0x8e
lsl r0, r0, #2
add r0, r4, r0
bl CopyWindowToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
_0220A65C: .word 0x000F0E00
thumb_func_end ov96_0220A5DC
thumb_func_start ov96_0220A660
ov96_0220A660: ; 0x0220A660
push {r4, r5, r6, lr}
add r6, r0, #0
ldr r0, _0220A700 ; =0x0000026E
add r5, r1, #0
ldrb r0, [r5, r0]
cmp r0, #0
beq _0220A672
mov r1, #1
b _0220A676
_0220A672:
mov r1, #0
mvn r1, r1
_0220A676:
mov r0, #0x9b
lsl r0, r0, #2
ldrsb r0, [r5, r0]
mov r2, #3
add r4, r0, #0
mul r4, r1
ldr r0, [r5, #4]
mov r1, #0
add r3, r4, #0
bl ScheduleSetBgPosText
ldr r0, [r5, #4]
mov r1, #1
mov r2, #3
add r3, r4, #0
bl ScheduleSetBgPosText
ldr r0, [r5, #8]
bl SpriteRenderer_GetG2dRendererPtr
neg r2, r4
mov r1, #0
lsl r2, r2, #0xc
bl G2dRenderer_SetMainSurfaceCoords
mov r1, #0x9b
lsl r1, r1, #2
add r0, r1, #1
ldrsb r2, [r5, r1]
ldrb r0, [r5, r0]
sub r0, r2, r0
strb r0, [r5, r1]
add r0, r1, #2
ldrb r2, [r5, r0]
mov r0, #1
eor r2, r0
add r0, r1, #2
strb r2, [r5, r0]
ldrsb r0, [r5, r1]
cmp r0, #0
bgt _0220A6FC
ldr r0, [r5, #4]
mov r1, #0
mov r2, #3
mov r3, #0x10
bl ScheduleSetBgPosText
ldr r0, [r5, #4]
mov r1, #1
mov r2, #3
mov r3, #0
bl ScheduleSetBgPosText
ldr r0, [r5, #8]
bl SpriteRenderer_GetG2dRendererPtr
mov r1, #0
add r2, r1, #0
bl G2dRenderer_SetMainSurfaceCoords
mov r0, #0x9a
mov r1, #0
lsl r0, r0, #2
str r1, [r5, r0]
add r0, r6, #0
bl DestroySysTask
_0220A6FC:
pop {r4, r5, r6, pc}
nop
_0220A700: .word 0x0000026E
thumb_func_end ov96_0220A660
thumb_func_start ov96_0220A704
ov96_0220A704: ; 0x0220A704
push {r4, r5, r6, lr}
add r5, r0, #0
mov r0, #0x9a
lsl r0, r0, #2
ldr r0, [r5, r0]
add r4, r1, #0
add r6, r2, #0
cmp r0, #0
beq _0220A71A
bl DestroySysTask
_0220A71A:
ldr r0, _0220A73C ; =0x0000026E
mov r1, #0
strb r1, [r5, r0]
sub r1, r0, #2
strb r4, [r5, r1]
sub r0, r0, #1
strb r6, [r5, r0]
ldr r0, _0220A740 ; =ov96_0220A660
add r1, r5, #0
mov r2, #2
bl CreateSysTask
mov r1, #0x9a
lsl r1, r1, #2
str r0, [r5, r1]
pop {r4, r5, r6, pc}
nop
_0220A73C: .word 0x0000026E
_0220A740: .word ov96_0220A660
thumb_func_end ov96_0220A704
thumb_func_start ov96_0220A744
ov96_0220A744: ; 0x0220A744
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r6, r1, #0
mov r1, #0x61
lsl r1, r1, #2
str r0, [sp, #8]
add r7, r2, #0
add r4, r3, #0
bl AllocFromHeap
mov r2, #0x61
str r0, [sp, #0xc]
mov r1, #0
lsl r2, r2, #2
bl MI_CpuFill8
mov r0, #6
ldr r1, [sp, #0xc]
lsl r0, r0, #6
ldr r2, [r1, r0]
mov r1, #0xf
bic r2, r1
add r3, r2, #0
mov r1, #1
ldr r2, [sp, #0xc]
orr r3, r1
str r3, [r2, r0]
ldr r2, [r2, r0]
mov r3, #0xf0
bic r2, r3
ldr r3, [sp, #0xc]
str r2, [r3, r0]
add r0, r3, #0
str r6, [r0, #4]
str r7, [r0, #8]
str r4, [r0]
mov r0, #7
str r0, [sp]
mov r2, #0
str r1, [sp, #4]
add r0, r6, #0
add r1, r7, #0
add r3, r2, #0
bl ov96_0220D13C
ldr r1, [sp, #0xc]
str r0, [r1, #0xc]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #0x12
str r0, [sp]
mov r0, #1
mov r2, #0
str r0, [sp, #4]
add r0, r6, #0
add r1, r7, #0
add r3, r2, #0
bl ov96_0220D13C
ldr r1, [sp, #0xc]
str r0, [r1, #0x10]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r5, [sp, #0xc]
mov r4, #0
_0220A7CA:
lsl r3, r4, #0x10
ldr r0, [sp, #8]
add r1, r6, #0
add r2, r7, #0
lsr r3, r3, #0x10
bl ov96_0220AE40
mov r1, #0x55
lsl r1, r1, #2
str r0, [r5, r1]
add r4, r4, #1
add r5, r5, #4
cmp r4, #0xa
blt _0220A7CA
ldr r0, [sp, #0xc]
add r1, r6, #0
add r0, #0x14
add r2, r7, #0
bl ov96_0220B178
ldr r0, [sp, #0xc]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_0220A744
thumb_func_start ov96_0220A7F8
ov96_0220A7F8: ; 0x0220A7F8
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
bne _0220A802
bl GF_AssertFail
_0220A802:
ldr r0, [r6, #0xc]
cmp r0, #0
bne _0220A80C
bl GF_AssertFail
_0220A80C:
ldr r0, [r6, #0xc]
bl sub_0200D9DC
ldr r0, [r6, #0x10]
bl sub_0200D9DC
mov r7, #0x55
mov r4, #0
add r5, r6, #0
lsl r7, r7, #2
_0220A820:
ldr r0, [r5, r7]
bl ov96_0220AF30
add r4, r4, #1
add r5, r5, #4
cmp r4, #0xa
blt _0220A820
add r0, r6, #0
add r0, #0x14
bl ov96_0220B1B8
add r0, r6, #0
bl FreeToHeap
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0220A7F8
thumb_func_start ov96_0220A840
ov96_0220A840: ; 0x0220A840
push {r4, lr}
add r4, r0, #0
bne _0220A84A
bl GF_AssertFail
_0220A84A:
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
lsl r0, r0, #0x1c
lsr r0, r0, #0x1c
cmp r0, #1
beq _0220A85E
cmp r0, #2
beq _0220A866
b _0220A86E
_0220A85E:
add r0, r4, #0
bl ov96_0220AD64
b _0220A872
_0220A866:
add r0, r4, #0
bl ov96_0220AE28
b _0220A872
_0220A86E:
bl GF_AssertFail
_0220A872:
add r4, #0x14
add r0, r4, #0
bl ov96_0220B324
pop {r4, pc}
thumb_func_end ov96_0220A840
thumb_func_start ov96_0220A87C
ov96_0220A87C: ; 0x0220A87C
push {r3, r4, r5, r6, r7, lr}
str r0, [sp]
ldr r0, [r0, #0x10]
mov r1, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
ldr r0, [sp]
mov r1, #0
ldr r0, [r0, #0xc]
bl UnkImageStruct_SetSpriteAnimActiveFlag
mov r7, #0x55
lsl r7, r7, #2
ldr r5, [sp]
mov r4, #0
add r6, r7, #0
_0220A89C:
ldr r0, [r5, r6]
ldr r1, [r0, #0x10]
lsl r1, r1, #4
lsr r1, r1, #0x1f
beq _0220A8B8
ldr r0, [r0]
mov r1, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
ldr r0, [r5, r7]
mov r1, #0
ldr r0, [r0, #4]
bl UnkImageStruct_SetSpriteAnimActiveFlag
_0220A8B8:
add r4, r4, #1
add r5, r5, #4
cmp r4, #0xa
blt _0220A89C
ldr r0, [sp]
add r0, #0x14
str r0, [sp]
bl ov96_0220B354
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_0220A87C
thumb_func_start ov96_0220A8CC
ov96_0220A8CC: ; 0x0220A8CC
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
cmp r5, #0
bne _0220A8DA
bl GF_AssertFail
_0220A8DA:
mov r0, #6
lsl r0, r0, #6
ldr r0, [r5, r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x1c
bne _0220A8EA
bl GF_AssertFail
_0220A8EA:
mov r0, #6
lsl r0, r0, #6
ldr r1, [r5, r0]
sub r0, #0x30
lsl r1, r1, #0x18
lsr r1, r1, #0x1c
lsl r1, r1, #2
add r1, r5, r1
ldr r0, [r1, r0]
add r1, r4, #0
bl ov96_0220B0A4
cmp r0, #0
beq _0220A90A
mov r0, #1
pop {r3, r4, r5, pc}
_0220A90A:
mov r0, #0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_0220A8CC
thumb_func_start ov96_0220A910
ov96_0220A910: ; 0x0220A910
push {r4, r5, r6, r7, lr}
sub sp, #0x4c
add r4, r0, #0
bne _0220A91C
bl GF_AssertFail
_0220A91C:
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
lsl r1, r0, #0x1c
lsr r1, r1, #0x1c
cmp r1, #1
bne _0220A930
add sp, #0x4c
mov r0, #0
pop {r4, r5, r6, r7, pc}
_0220A930:
lsl r0, r0, #0x18
lsr r0, r0, #0x1c
bne _0220A93A
bl GF_AssertFail
_0220A93A:
mov r0, #6
lsl r0, r0, #6
ldr r1, [r4, r0]
sub r0, #0x30
lsl r1, r1, #0x18
lsr r1, r1, #0x1c
lsl r1, r1, #2
add r1, r4, r1
ldr r0, [r1, r0]
add r1, sp, #0x10
add r1, #2
add r2, sp, #0x10
bl ov96_0220B148
add r0, sp, #0x18
add r1, sp, #0x14
bl System_GetTouchNewCoords
add r1, sp, #0x10
mov r0, #0
ldrsh r0, [r1, r0]
str r0, [sp]
ldr r0, [sp]
ldr r4, [sp, #0x14]
sub r0, #0x12
cmp r4, r0
blo _0220A978
ldr r0, [sp]
add r0, #0xc
cmp r4, r0
bls _0220A97A
_0220A978:
b _0220AAE2
_0220A97A:
ldr r0, [sp, #0x18]
cmp r0, #0
beq _0220A992
lsl r0, r0, #0xc
bl _ffltu
add r1, r0, #0
mov r0, #0x3f
lsl r0, r0, #0x18
bl _fadd
b _0220A9A0
_0220A992:
lsl r0, r0, #0xc
bl _ffltu
mov r1, #0x3f
lsl r1, r1, #0x18
bl _fsub
_0220A9A0:
bl _ffix
str r0, [sp, #0xc]
cmp r4, #0
beq _0220A9BC
lsl r0, r4, #0xc
bl _ffltu
add r1, r0, #0
mov r0, #0x3f
lsl r0, r0, #0x18
bl _fadd
b _0220A9CA
_0220A9BC:
lsl r0, r4, #0xc
bl _ffltu
mov r1, #0x3f
lsl r1, r1, #0x18
bl _fsub
_0220A9CA:
bl _ffix
str r0, [sp, #8]
mov r6, #0x3f
add r1, sp, #0x10
mov r0, #2
ldrsh r0, [r1, r0]
ldr r4, _0220AAE8 ; =ov96_0221CDD8
mov r7, #0
add r5, sp, #0x1c
str r0, [sp, #4]
lsl r6, r6, #0x18
_0220A9E2:
mov r0, #0
ldrsh r1, [r4, r0]
ldr r0, [sp, #4]
add r0, r0, r1
cmp r0, #0
ble _0220A9FE
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
add r0, r6, #0
bl _fadd
b _0220AA0A
_0220A9FE:
lsl r0, r0, #0xc
bl _fflt
add r1, r6, #0
bl _fsub
_0220AA0A:
bl _ffix
str r0, [r5]
mov r0, #2
ldrsh r1, [r4, r0]
ldr r0, [sp]
add r0, r0, r1
cmp r0, #0
ble _0220AA2C
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
add r0, r6, #0
bl _fadd
b _0220AA38
_0220AA2C:
lsl r0, r0, #0xc
bl _fflt
add r1, r6, #0
bl _fsub
_0220AA38:
bl _ffix
str r0, [r5, #4]
add r7, r7, #1
add r4, r4, #4
add r5, #0xc
cmp r7, #4
blt _0220A9E2
ldr r4, [sp, #0x1c]
ldr r2, [sp, #0xc]
ldr r1, [sp, #0x2c]
ldr r0, [sp, #0x20]
sub r2, r2, r4
sub r0, r1, r0
asr r1, r0, #0x1f
asr r3, r2, #0x1f
bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
add r0, r0, r2
adc r1, r3
lsl r1, r1, #0x14
lsr r0, r0, #0xc
orr r0, r1
ldr r1, [sp, #0x28]
sub r1, r1, r4
bl FX_Div
ldr r1, [sp, #0x20]
ldr r5, [sp, #0x34]
add r4, r0, r1
ldr r2, [sp, #0xc]
ldr r1, [sp, #0x44]
ldr r0, [sp, #0x38]
sub r2, r2, r5
sub r0, r1, r0
asr r1, r0, #0x1f
asr r3, r2, #0x1f
bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
add r0, r0, r2
adc r1, r3
lsl r1, r1, #0x14
lsr r0, r0, #0xc
orr r0, r1
ldr r1, [sp, #0x40]
sub r1, r1, r5
bl FX_Div
ldr r1, [sp, #0x38]
ldr r2, [sp, #0xc]
add r0, r0, r1
ldr r1, [sp, #0x28]
cmp r2, r1
blt _0220AAB6
ldr r3, [sp, #0x34]
cmp r2, r3
ble _0220AADC
_0220AAB6:
ldr r2, [sp, #8]
cmp r2, r4
blt _0220AAC8
ldr r3, [sp, #0x1c]
ldr r2, [sp, #0xc]
cmp r2, r3
blt _0220AAC8
cmp r2, r1
ble _0220AADC
_0220AAC8:
ldr r1, [sp, #8]
cmp r1, r0
bgt _0220AAE2
ldr r1, [sp, #0x34]
ldr r0, [sp, #0xc]
cmp r0, r1
blt _0220AAE2
ldr r1, [sp, #0x40]
cmp r0, r1
bgt _0220AAE2
_0220AADC:
add sp, #0x4c
mov r0, #1
pop {r4, r5, r6, r7, pc}
_0220AAE2:
mov r0, #0
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_0220AAE8: .word ov96_0221CDD8
thumb_func_end ov96_0220A910
thumb_func_start ov96_0220AAEC
ov96_0220AAEC: ; 0x0220AAEC
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r5, r0, #0
mov r0, #0
str r1, [sp, #4]
add r6, r2, #0
add r4, r3, #0
str r0, [sp, #8]
cmp r5, #0
bne _0220AB04
bl GF_AssertFail
_0220AB04:
mov r0, #6
lsl r0, r0, #6
ldr r0, [r5, r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x1c
bne _0220AB16
add sp, #0x24
mov r0, #0
pop {r4, r5, r6, r7, pc}
_0220AB16:
add r0, sp, #0x20
add r1, sp, #0x1c
bl System_GetTouchNewCoords
ldr r1, [sp, #0x20]
ldr r2, [sp, #0x1c]
lsl r1, r1, #0x10
lsl r2, r2, #0x10
ldr r0, [r5, #0xc]
asr r1, r1, #0x10
asr r2, r2, #0x10
mov r7, #7
bl UnkImageStruct_SetSpritePositionXY
cmp r4, #0
bne _0220AB3C
ldr r0, [sp, #0x38]
cmp r0, #0
beq _0220AB3E
_0220AB3C:
mov r7, #0x12
_0220AB3E:
ldr r0, [r5, #0xc]
add r1, r7, #0
bl UnkImageStruct_SetSpriteAnimSeqNo
ldr r0, [r5, #0xc]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [sp, #0x38]
cmp r0, #0
beq _0220AB62
add r6, #0x96
lsl r0, r6, #0x10
asr r6, r0, #0x10
ldr r0, _0220AD24 ; =0x000008BB
bl PlaySE
b _0220AB72
_0220AB62:
cmp r4, #0
beq _0220AB72
add r6, #0xa0
lsl r0, r6, #0x10
asr r6, r0, #0x10
ldr r0, _0220AD24 ; =0x000008BB
bl PlaySE
_0220AB72:
mov r0, #6
lsl r0, r0, #6
ldr r0, [r5, r0]
mov r7, #0
lsl r0, r0, #0x18
lsr r0, r0, #0x1c
str r0, [sp, #0xc]
cmp r0, #0
ble _0220AC6A
add r0, r5, #0
str r0, [sp, #0x10]
add r0, #0x14
str r0, [sp, #0x10]
mov r0, #0xf0
str r0, [sp, #0x14]
_0220AB90:
ldr r0, [sp, #0xc]
add r1, r7, #1
sub r0, r0, r1
lsl r0, r0, #2
add r1, r5, r0
mov r0, #0x55
lsl r0, r0, #2
ldr r4, [r1, r0]
cmp r6, #0
ble _0220AC6A
mov r0, #8
ldrsh r0, [r4, r0]
sub r0, r0, r6
strh r0, [r4, #8]
mov r0, #8
ldrsh r0, [r4, r0]
cmp r0, #0
bgt _0220AC6A
bgt _0220AC62
mov r0, #6
lsl r0, r0, #6
ldr r2, [r5, r0]
ldr r1, [sp, #0x14]
add r0, r2, #0
bic r0, r1
lsl r1, r2, #0x18
lsr r1, r1, #0x1c
sub r1, r1, #1
lsl r1, r1, #0x1c
lsr r1, r1, #0x18
orr r1, r0
mov r0, #6
lsl r0, r0, #6
str r1, [r5, r0]
sub r0, r0, #4
ldr r1, [r5, r0]
lsl r0, r1, #0x10
lsr r1, r1, #0x10
add r1, r1, #1
lsr r0, r0, #0x10
lsl r1, r1, #0x10
orr r1, r0
mov r0, #0x5f
lsl r0, r0, #2
str r1, [r5, r0]
ldr r0, [r5, r0]
lsr r0, r0, #0x10
cmp r0, #0xc8
bls _0220AC08
mov r0, #0x5f
lsl r0, r0, #2
ldr r0, [r5, r0]
lsl r0, r0, #0x10
lsr r1, r0, #0x10
mov r0, #0x32
lsl r0, r0, #0x12
orr r1, r0
mov r0, #0x5f
lsl r0, r0, #2
str r1, [r5, r0]
_0220AC08:
ldr r0, [r4]
mov r1, #0
bl UnkImageStruct_SetSpriteAnimSeqNo
add r1, sp, #0x18
ldr r0, [r4]
add r1, #2
add r2, sp, #0x18
bl UnkImageStruct_GetSpritePositionXY
ldr r0, [r4, #4]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #8
ldrsh r0, [r4, r0]
add r3, sp, #0x18
mov r2, #2
neg r0, r0
lsl r0, r0, #0x10
asr r6, r0, #0x10
ldr r0, [sp, #8]
ldrsh r2, [r3, r2]
add r4, r3, #0
mov r3, #0
add r0, r0, #1
str r0, [sp, #8]
ldrsh r3, [r4, r3]
ldr r0, [sp, #0x10]
mov r1, #4
bl ov96_0220B1D8
ldr r0, [r5]
bl ov96_021E5F24
add r1, r0, #0
mov r0, #1
str r0, [sp]
lsl r1, r1, #0x18
ldr r0, [r5]
ldr r2, [sp, #4]
lsr r1, r1, #0x18
mov r3, #3
bl ov96_021E8228
_0220AC62:
ldr r0, [sp, #0xc]
add r7, r7, #1
cmp r7, r0
blt _0220AB90
_0220AC6A:
ldr r0, [sp, #8]
cmp r0, #0
beq _0220AC78
ldr r0, _0220AD28 ; =0x000008B9
bl PlaySE
b _0220ACA0
_0220AC78:
ldr r0, _0220AD2C ; =0x000008B8
bl PlaySE
ldr r1, [sp, #0x20]
ldr r2, [sp, #0x1c]
lsl r1, r1, #0x10
lsl r2, r2, #0x10
ldr r0, [r5, #0x10]
asr r1, r1, #0x10
asr r2, r2, #0x10
bl UnkImageStruct_SetSpritePositionXY
ldr r0, [r5, #0x10]
mov r1, #6
bl UnkImageStruct_SetSpriteAnimSeqNo
ldr r0, [r5, #0x10]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
_0220ACA0:
ldr r0, [sp, #8]
cmp r0, #0
bne _0220ACFC
mov r0, #6
lsl r0, r0, #6
ldr r1, [r5, r0]
lsl r1, r1, #0x18
lsr r1, r1, #0x1c
beq _0220ACFC
lsl r1, r1, #2
add r1, r5, r1
sub r0, #0x30
ldr r1, [r1, r0]
mov r0, #8
ldrsh r0, [r1, r0]
cmp r0, #0x14
bgt _0220ACCC
ldr r0, [r1]
mov r1, #3
bl UnkImageStruct_SetSpriteAnimSeqNo
b _0220ACFC
_0220ACCC:
cmp r0, #0x3c
bgt _0220ACFC
ldr r0, [r1]
mov r1, #2
bl UnkImageStruct_SetSpriteAnimSeqNo
ldr r0, _0220AD2C ; =0x000008B8
bl PlaySE
bl LCRandom
add r2, r0, #0
lsr r4, r2, #0x1f
lsl r3, r2, #0x19
sub r3, r3, r4
mov r2, #0x19
ror r3, r2
ldr r0, _0220AD2C ; =0x000008B8
ldr r1, _0220AD30 ; =0x0000FFFF
add r3, r4, r3
mov r2, #0x40
sub r2, r2, r3
bl sub_0200592C
_0220ACFC:
ldr r0, [sp, #8]
cmp r0, #0
ble _0220AD12
mov r0, #6
lsl r0, r0, #6
ldr r0, [r5, r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x1c
bne _0220AD12
mov r1, #1
b _0220AD14
_0220AD12:
mov r1, #0
_0220AD14:
ldr r0, [sp, #0x3c]
str r1, [r0]
ldr r0, [sp, #8]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
add sp, #0x24
pop {r4, r5, r6, r7, pc}
nop
_0220AD24: .word 0x000008BB
_0220AD28: .word 0x000008B9
_0220AD2C: .word 0x000008B8
_0220AD30: .word 0x0000FFFF
thumb_func_end ov96_0220AAEC
thumb_func_start ov96_0220AD34
ov96_0220AD34: ; 0x0220AD34
push {r4, lr}
add r4, r0, #0
bne _0220AD3E
bl GF_AssertFail
_0220AD3E:
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
lsl r0, r0, #0x1c
lsr r0, r0, #0x1c
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_0220AD34
thumb_func_start ov96_0220AD4C
ov96_0220AD4C: ; 0x0220AD4C
push {r4, lr}
add r4, r0, #0
bne _0220AD56
bl GF_AssertFail
_0220AD56:
mov r0, #0x5f
lsl r0, r0, #2
ldr r0, [r4, r0]
lsr r0, r0, #0x10
lsl r0, r0, #0x10
lsr r0, r0, #0x10
pop {r4, pc}
thumb_func_end ov96_0220AD4C
thumb_func_start ov96_0220AD64
ov96_0220AD64: ; 0x0220AD64
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
mov r0, #6
lsl r0, r0, #6
ldr r1, [r5, r0]
lsl r1, r1, #0x18
lsr r1, r1, #0x1c
cmp r1, #0xa
blo _0220ADAC
add r7, r0, #0
mov r6, #0
add r4, r5, #0
sub r7, #0x2c
_0220AD7E:
ldr r0, [r4, r7]
bl ov96_0220B164
cmp r0, #1
beq _0220AD90
add r6, r6, #1
add r4, r4, #4
cmp r6, #0xa
blt _0220AD7E
_0220AD90:
cmp r6, #0xa
bne _0220AE06
ldr r0, _0220AE1C ; =0x000008BD
bl PlaySE
mov r1, #6
lsl r1, r1, #6
ldr r2, [r5, r1]
mov r0, #0xf
bic r2, r0
mov r0, #2
orr r0, r2
str r0, [r5, r1]
b _0220AE06
_0220ADAC:
sub r1, r0, #4
ldr r1, [r5, r1]
sub r3, r0, #4
lsl r1, r1, #0x10
lsr r2, r1, #0x10
add r1, r3, #0
add r6, r2, #1
lsl r6, r6, #0x10
ldr r1, [r5, r1]
ldr r4, _0220AE20 ; =0xFFFF0000
lsr r6, r6, #0x10
and r1, r4
orr r6, r1
add r1, r3, #0
str r6, [r5, r1]
cmp r2, #2
blo _0220AE06
ldr r1, [r5, r3]
and r1, r4
str r1, [r5, r3]
ldr r1, [r5, r0]
sub r0, #0x2c
lsl r1, r1, #0x18
lsr r1, r1, #0x1c
lsl r1, r1, #2
add r1, r5, r1
ldr r0, [r1, r0]
bl ov96_0220AED4
ldr r0, _0220AE24 ; =0x000008C1
bl PlaySE
mov r2, #6
lsl r2, r2, #6
ldr r3, [r5, r2]
mov r1, #0xf0
add r0, r3, #0
bic r0, r1
lsl r1, r3, #0x18
lsr r1, r1, #0x1c
add r1, r1, #1
lsl r1, r1, #0x1c
lsr r1, r1, #0x18
orr r0, r1
str r0, [r5, r2]
_0220AE06:
mov r6, #0x55
mov r4, #0
lsl r6, r6, #2
_0220AE0C:
ldr r0, [r5, r6]
bl ov96_0220AF64
add r4, r4, #1
add r5, r5, #4
cmp r4, #0xa
blt _0220AE0C
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0220AE1C: .word 0x000008BD
_0220AE20: .word 0xFFFF0000
_0220AE24: .word 0x000008C1
thumb_func_end ov96_0220AD64
thumb_func_start ov96_0220AE28
ov96_0220AE28: ; 0x0220AE28
mov r2, #6
lsl r2, r2, #6
ldr r3, [r0, r2]
lsl r1, r3, #0x18
lsr r1, r1, #0x1c
bne _0220AE3E
mov r1, #0xf
bic r3, r1
mov r1, #1
orr r1, r3
str r1, [r0, r2]
_0220AE3E:
bx lr
thumb_func_end ov96_0220AE28
thumb_func_start ov96_0220AE40
ov96_0220AE40: ; 0x0220AE40
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r6, r1, #0
add r4, r0, #0
add r7, r2, #0
add r5, r3, #0
cmp r6, #0
bne _0220AE54
bl GF_AssertFail
_0220AE54:
cmp r7, #0
bne _0220AE5C
bl GF_AssertFail
_0220AE5C:
add r0, r4, #0
mov r1, #0x14
bl AllocFromHeap
add r4, r0, #0
mov r1, #0
mov r2, #0x14
bl MI_CpuFill8
mov r2, #0
ldr r1, [r4, #0x10]
ldr r0, _0220AED0 ; =0xF80FFFFF
add r3, r2, #0
and r1, r0
lsl r0, r5, #0x19
lsr r0, r0, #5
orr r0, r1
str r0, [r4, #0x10]
lsl r1, r5, #1
mov r0, #0x16
sub r0, r0, r1
lsl r0, r0, #0x10
lsr r5, r0, #0x10
mov r0, #4
str r0, [sp]
add r0, r6, #0
add r1, r7, #0
str r5, [sp, #4]
bl ov96_0220D13C
mov r1, #0
str r0, [r4, #4]
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #1
str r0, [sp]
add r0, r5, #1
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #4]
add r0, r6, #0
add r1, r7, #0
mov r2, #0x78
mov r3, #0
bl ov96_0220D13C
str r0, [r4]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4]
mov r1, #1
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r0, r4, #0
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
nop
_0220AED0: .word 0xF80FFFFF
thumb_func_end ov96_0220AE40
thumb_func_start ov96_0220AED4
ov96_0220AED4: ; 0x0220AED4
push {r4, lr}
add r4, r0, #0
bne _0220AEDE
bl GF_AssertFail
_0220AEDE:
mov r0, #0x64
strh r0, [r4, #8]
ldr r1, [r4, #0x10]
ldr r0, _0220AF28 ; =0xFFFFF00F
and r1, r0
ldr r0, _0220AF2C ; =0xFFF00FFF
and r1, r0
mov r0, #1
lsl r0, r0, #0xc
orr r1, r0
lsl r0, r0, #0xf
orr r0, r1
str r0, [r4, #0x10]
ldr r0, [r4]
mov r1, #1
bl UnkImageStruct_SetSpriteAnimSeqNo
ldr r0, [r4]
mov r1, #0x78
mov r2, #0
bl UnkImageStruct_SetSpritePositionXY
ldr r0, [r4]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
add r0, r4, #0
bl ov96_0220AFF8
add r0, r4, #0
bl ov96_0220B068
ldr r0, [r4, #4]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
pop {r4, pc}
.balign 4, 0
_0220AF28: .word 0xFFFFF00F
_0220AF2C: .word 0xFFF00FFF
thumb_func_end ov96_0220AED4
thumb_func_start ov96_0220AF30
ov96_0220AF30: ; 0x0220AF30
push {r4, lr}
add r4, r0, #0
bne _0220AF3A
bl GF_AssertFail
_0220AF3A:
ldr r0, [r4]
cmp r0, #0
bne _0220AF44
bl GF_AssertFail
_0220AF44:
ldr r0, [r4, #4]
cmp r0, #0
bne _0220AF4E
bl GF_AssertFail
_0220AF4E:
ldr r0, [r4]
bl sub_0200D9DC
ldr r0, [r4, #4]
bl sub_0200D9DC
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_0220AF30
thumb_func_start ov96_0220AF64
ov96_0220AF64: ; 0x0220AF64
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r1, [r5, #0x10]
lsl r0, r1, #0xc
lsr r0, r0, #0x18
cmp r0, #1
bne _0220AFEE
lsl r0, r1, #5
lsr r0, r0, #0x19
lsl r2, r0, #2
mov r0, #0xa8
sub r4, r0, r2
ldr r0, _0220AFF0 ; =0xFFFFF00F
and r0, r1
lsl r1, r1, #0x14
lsr r1, r1, #0x18
add r1, #0x14
lsl r1, r1, #0x18
lsr r1, r1, #0x14
add r2, r0, #0
orr r2, r1
str r2, [r5, #0x10]
lsl r2, r2, #0x14
ldr r0, [r5]
mov r1, #0
lsr r2, r2, #0x18
bl UnkImageStruct_AddSpritePositionXY
ldr r2, [r5, #0x10]
ldr r0, [r5, #4]
lsl r2, r2, #0x14
mov r1, #0
lsr r2, r2, #0x18
bl UnkImageStruct_AddSpritePositionXY
add r1, sp, #0
ldr r0, [r5, #4]
add r1, #2
add r2, sp, #0
bl UnkImageStruct_GetSpritePositionXY
add r1, sp, #0
ldr r0, [r5]
add r1, #2
add r2, sp, #0
bl UnkImageStruct_GetSpritePositionXY
add r3, sp, #0
mov r2, #0
ldrsh r0, [r3, r2]
cmp r0, r4
blo _0220AFEE
strh r4, [r3]
mov r1, #2
ldrsh r1, [r3, r1]
ldrsh r2, [r3, r2]
ldr r0, [r5]
bl UnkImageStruct_SetSpritePositionXY
add r0, r5, #0
bl ov96_0220B068
ldr r1, [r5, #0x10]
ldr r0, _0220AFF4 ; =0xFFF00FFF
and r1, r0
mov r0, #2
lsl r0, r0, #0xc
orr r0, r1
str r0, [r5, #0x10]
_0220AFEE:
pop {r3, r4, r5, pc}
.balign 4, 0
_0220AFF0: .word 0xFFFFF00F
_0220AFF4: .word 0xFFF00FFF
thumb_func_end ov96_0220AF64
thumb_func_start ov96_0220AFF8
ov96_0220AFF8: ; 0x0220AFF8
push {r4, lr}
add r4, r0, #0
bne _0220B002
bl GF_AssertFail
_0220B002:
bl MTRandom
mov r1, #3
bl _u32_div_f
lsl r0, r1, #0x18
ldr r1, [r4, #0x10]
lsr r0, r0, #0x18
lsl r1, r1, #0x1c
lsr r1, r1, #0x1c
cmp r0, r1
blo _0220B020
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
_0220B020:
ldr r2, [r4, #0x10]
mov r1, #0xf
bic r2, r1
mov r1, #0xf
and r0, r1
orr r0, r2
str r0, [r4, #0x10]
bl MTRandom
ldr r1, [r4, #0x10]
lsl r1, r1, #0x1c
lsr r2, r1, #0x1a
ldr r1, _0220B060 ; =ov96_0221CDC8
ldrsh r2, [r1, r2]
mov r1, #0xf
and r0, r1
add r0, r2, r0
strh r0, [r4, #0xa]
bl MTRandom
mov r1, #0xc
bl _u32_div_f
ldr r0, [r4, #0x10]
lsl r0, r0, #0x1c
lsr r2, r0, #0x1a
ldr r0, _0220B064 ; =ov96_0221CDCA
ldrsh r0, [r0, r2]
add r0, r0, r1
strh r0, [r4, #0xc]
pop {r4, pc}
nop
_0220B060: .word ov96_0221CDC8
_0220B064: .word ov96_0221CDCA
thumb_func_end ov96_0220AFF8
thumb_func_start ov96_0220B068
ov96_0220B068: ; 0x0220B068
push {r3, r4, r5, lr}
add r4, r0, #0
bne _0220B072
bl GF_AssertFail
_0220B072:
add r1, sp, #0
add r0, r4, #0
add r1, #2
add r2, sp, #0
bl ov96_0220B148
mov r0, #0xa
add r2, sp, #0
mov r1, #2
ldrsh r3, [r2, r1]
ldrsh r0, [r4, r0]
add r0, r3, r0
strh r0, [r2, #2]
mov r3, #0
mov r0, #0xc
ldrsh r5, [r2, r3]
ldrsh r0, [r4, r0]
add r0, r5, r0
strh r0, [r2]
ldrsh r1, [r2, r1]
ldrsh r2, [r2, r3]
ldr r0, [r4, #4]
bl UnkImageStruct_SetSpritePositionXY
pop {r3, r4, r5, pc}
thumb_func_end ov96_0220B068
thumb_func_start ov96_0220B0A4
ov96_0220B0A4: ; 0x0220B0A4
push {r4, r5, r6, lr}
sub sp, #0x10
add r6, r0, #0
add r5, r1, #0
mov r0, #0
add r1, sp, #4
strb r0, [r1]
strb r0, [r1, #1]
strb r0, [r1, #2]
strb r0, [r1, #3]
strb r0, [r1, #4]
strb r0, [r1, #5]
strb r0, [r1, #6]
strb r0, [r1, #7]
strb r0, [r1, #8]
strb r0, [r1, #9]
strb r0, [r1, #0xa]
strb r0, [r1, #0xb]
cmp r5, #3
blt _0220B0D0
bl GF_AssertFail
_0220B0D0:
ldr r0, _0220B140 ; =ov96_0221DC68
lsl r1, r5, #2
ldr r4, [r0, r1]
ldr r0, _0220B144 ; =ov96_0221CDA0
add r1, sp, #0
ldrb r0, [r0, r5]
add r1, #2
add r2, sp, #0
sub r0, r0, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
ldr r0, [r6, #4]
bl UnkImageStruct_GetSpritePositionXY
mov r0, #0
cmp r5, #0
ble _0220B11E
add r6, sp, #0
mov r3, #2
ldrsh r2, [r6, r0]
ldrsh r3, [r6, r3]
add r1, sp, #4
_0220B0FC:
ldrb r6, [r4]
add r0, r0, #1
add r6, r2, r6
strb r6, [r1]
ldrb r6, [r4, #1]
add r6, r2, r6
strb r6, [r1, #1]
ldrb r6, [r4, #2]
add r6, r3, r6
strb r6, [r1, #2]
ldrb r6, [r4, #3]
add r4, r4, #4
add r6, r3, r6
strb r6, [r1, #3]
add r1, r1, #4
cmp r0, r5
blt _0220B0FC
_0220B11E:
mov r2, #0xff
lsl r1, r5, #2
add r0, sp, #4
strb r2, [r0, r1]
bl TouchscreenHitbox_FindRectAtTouchNew
mov r1, #0
mvn r1, r1
cmp r0, r1
beq _0220B138
add sp, #0x10
mov r0, #1
pop {r4, r5, r6, pc}
_0220B138:
mov r0, #0
add sp, #0x10
pop {r4, r5, r6, pc}
nop
_0220B140: .word ov96_0221DC68
_0220B144: .word ov96_0221CDA0
thumb_func_end ov96_0220B0A4
thumb_func_start ov96_0220B148
ov96_0220B148: ; 0x0220B148
push {r4, r5, r6, lr}
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
cmp r5, #0
bne _0220B158
bl GF_AssertFail
_0220B158:
ldr r0, [r5]
add r1, r4, #0
add r2, r6, #0
bl UnkImageStruct_GetSpritePositionXY
pop {r4, r5, r6, pc}
thumb_func_end ov96_0220B148
thumb_func_start ov96_0220B164
ov96_0220B164: ; 0x0220B164
push {r4, lr}
add r4, r0, #0
bne _0220B16E
bl GF_AssertFail
_0220B16E:
ldr r0, [r4, #0x10]
lsl r0, r0, #0xc
lsr r0, r0, #0x18
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_0220B164
thumb_func_start ov96_0220B178
ov96_0220B178: ; 0x0220B178
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
add r6, r1, #0
add r7, r2, #0
mov r4, #0
_0220B184:
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r1, #0x1c
lsl r0, r1, #0x10
lsr r0, r0, #0x10
str r0, [sp]
mov r0, #1
mov r2, #0
str r0, [sp, #4]
add r0, r6, #0
add r1, r7, #0
add r3, r2, #0
bl ov96_0220D13C
mov r1, #0
str r0, [r5]
bl UnkImageStruct_SetSpriteVisibleFlag
add r4, r4, #1
add r5, #0x14
cmp r4, #0x10
blt _0220B184
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_0220B178
thumb_func_start ov96_0220B1B8
ov96_0220B1B8: ; 0x0220B1B8
push {r3, r4, r5, lr}
add r5, r0, #0
mov r4, #0
_0220B1BE:
ldr r0, [r5]
cmp r0, #0
bne _0220B1C8
bl GF_AssertFail
_0220B1C8:
ldr r0, [r5]
bl sub_0200D9DC
add r4, r4, #1
add r5, #0x14
cmp r4, #0x10
blt _0220B1BE
pop {r3, r4, r5, pc}
thumb_func_end ov96_0220B1B8
thumb_func_start ov96_0220B1D8
ov96_0220B1D8: ; 0x0220B1D8
push {r4, r5, r6, r7, lr}
sub sp, #0xc
str r1, [sp]
mov r4, #0
add r5, r0, #0
add r7, r2, #0
str r3, [sp, #4]
add r6, r4, #0
_0220B1E8:
ldr r0, [r5, #4]
cmp r0, #0
bne _0220B2C0
mov r0, #1
str r0, [r5, #4]
strh r7, [r5, #0x10]
ldr r0, [sp, #4]
strh r0, [r5, #0x12]
bl MTRandom
mov r1, #7
and r0, r1
add r0, r0, #4
beq _0220B220
bl MTRandom
mov r1, #7
and r0, r1
add r0, r0, #4
lsl r0, r0, #0xc
bl _ffltu
add r1, r0, #0
mov r0, #0x3f
lsl r0, r0, #0x18
bl _fadd
b _0220B238
_0220B220:
bl MTRandom
mov r1, #7
and r0, r1
add r0, r0, #4
lsl r0, r0, #0xc
bl _ffltu
mov r1, #0x3f
lsl r1, r1, #0x18
bl _fsub
_0220B238:
lsr r2, r6, #0x1f
lsl r1, r6, #0x1f
add r3, r0, #0
sub r1, r1, r2
mov r0, #0x1f
ror r1, r0
add r0, r2, r1
bne _0220B24E
mov r0, #1
str r0, [sp, #8]
b _0220B254
_0220B24E:
mov r0, #0
mvn r0, r0
str r0, [sp, #8]
_0220B254:
add r0, r3, #0
bl _ffix
ldr r1, [sp, #8]
mul r0, r1
str r0, [r5, #8]
bl MTRandom
mov r1, #7
and r0, r1
add r0, #8
beq _0220B288
bl MTRandom
mov r1, #7
and r0, r1
add r0, #8
lsl r0, r0, #0xc
bl _ffltu
add r1, r0, #0
mov r0, #0x3f
lsl r0, r0, #0x18
bl _fadd
b _0220B2A0
_0220B288:
bl MTRandom
mov r1, #7
and r0, r1
add r0, #8
lsl r0, r0, #0xc
bl _ffltu
mov r1, #0x3f
lsl r1, r1, #0x18
bl _fsub
_0220B2A0:
bl _ffix
str r0, [r5, #0xc]
ldr r0, [r5]
ldr r2, [sp, #4]
add r1, r7, #0
bl UnkImageStruct_SetSpritePositionXY
ldr r0, [r5]
bl UnkImageStruct_ResetSpriteAnimCtrlState
ldr r0, [r5]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
add r4, r4, #1
_0220B2C0:
ldr r0, [sp]
cmp r4, r0
bge _0220B2CE
add r6, r6, #1
add r5, #0x14
cmp r6, #0x10
blt _0220B1E8
_0220B2CE:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0220B1D8
thumb_func_start ov96_0220B2D4
ov96_0220B2D4: ; 0x0220B2D4
push {r4, lr}
add r4, r0, #0
mov r0, #0x10
ldrsh r1, [r4, r0]
ldr r0, [r4, #8]
asr r0, r0, #0xc
add r0, r1, r0
strh r0, [r4, #0x10]
ldr r0, [r4, #8]
mov r1, #3
lsl r0, r0, #2
bl _s32_div_f
str r0, [r4, #8]
mov r2, #0x12
ldr r0, [r4, #0xc]
ldrsh r1, [r4, r2]
asr r0, r0, #0xc
sub r0, r1, r0
strh r0, [r4, #0x12]
ldr r0, [r4, #0xc]
mov r1, #0x10
sub r0, r0, #4
str r0, [r4, #0xc]
ldrsh r1, [r4, r1]
ldrsh r2, [r4, r2]
ldr r0, [r4]
bl UnkImageStruct_SetSpritePositionXY
mov r0, #0x10
ldrsh r1, [r4, r0]
cmp r1, #0
blt _0220B31C
add r0, #0xf0
cmp r1, r0
ble _0220B320
_0220B31C:
mov r0, #1
pop {r4, pc}
_0220B320:
mov r0, #0
pop {r4, pc}
thumb_func_end ov96_0220B2D4
thumb_func_start ov96_0220B324
ov96_0220B324: ; 0x0220B324
push {r3, r4, r5, r6, r7, lr}
mov r4, #0
add r5, r0, #0
add r7, r4, #0
add r6, r4, #0
_0220B32E:
ldr r0, [r5, #4]
cmp r0, #1
bne _0220B348
add r0, r5, #0
bl ov96_0220B2D4
cmp r0, #0
beq _0220B348
ldr r0, [r5]
add r1, r7, #0
bl UnkImageStruct_SetSpriteVisibleFlag
str r6, [r5, #4]
_0220B348:
add r4, r4, #1
add r5, #0x14
cmp r4, #0x10
blt _0220B32E
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0220B324
thumb_func_start ov96_0220B354
ov96_0220B354: ; 0x0220B354
push {r4, r5, r6, lr}
mov r4, #0
add r5, r0, #0
add r6, r4, #0
_0220B35C:
ldr r0, [r5, #4]
cmp r0, #1
bne _0220B36A
ldr r0, [r5]
add r1, r6, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
_0220B36A:
add r4, r4, #1
add r5, #0x14
cmp r4, #0x10
blt _0220B35C
pop {r4, r5, r6, pc}
thumb_func_end ov96_0220B354
thumb_func_start ov96_0220B374
ov96_0220B374: ; 0x0220B374
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r7, r0, #0
add r0, r3, #0
add r5, r1, #0
add r6, r2, #0
str r3, [sp, #8]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xc]
add r0, r7, #0
mov r1, #0x48
bl AllocFromHeap
add r4, r0, #0
mov r1, #0
mov r2, #0x48
bl MI_CpuFill8
str r7, [r4]
str r5, [r4, #4]
ldr r0, [sp, #8]
str r6, [r4, #8]
str r0, [r4, #0xc]
ldr r1, [r4, #0x44]
mov r0, #0xff
bic r1, r0
str r1, [r4, #0x44]
add r0, r4, #0
ldr r1, [sp, #0xc]
ldr r2, [sp, #8]
add r0, #0x34
bl ov96_0220D200
add r0, r4, #0
ldr r1, [r4, #4]
ldr r2, [r4, #8]
add r0, #0x10
bl ov96_0220C490
add r1, sp, #0x14
mov r3, #1
ldr r0, [r4, #0x24]
add r1, #2
add r2, sp, #0x14
lsl r3, r3, #0x14
bl UnkImageStruct_GetSpritePositionXY_CustomScreenYOffset
add r3, sp, #0x10
mov r7, #4
ldrsh r0, [r3, r7]
mov r2, #6
add r1, r6, #0
sub r0, #0x18
strh r0, [r3, #4]
mov r0, #0x11
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
ldrsh r2, [r3, r2]
ldrsh r3, [r3, r7]
add r0, r5, #0
bl ov96_0220D1A0
str r0, [r4, #0x2c]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
add r1, sp, #0x14
ldr r0, [r4, #0x28]
add r1, #2
add r2, sp, #0x14
lsl r3, r7, #0x12
bl UnkImageStruct_GetSpritePositionXY_CustomScreenYOffset
add r3, sp, #0x10
ldrsh r0, [r3, r7]
mov r2, #6
add r1, r6, #0
sub r0, #0x18
strh r0, [r3, #4]
mov r0, #0x11
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
ldrsh r2, [r3, r2]
ldrsh r3, [r3, r7]
add r0, r5, #0
bl ov96_0220D1A0
str r0, [r4, #0x30]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
add r1, sp, #0x10
ldr r0, [r4, #0x10]
add r1, #2
add r2, sp, #0x10
bl UnkImageStruct_GetSpritePositionXY
mov r0, #0x11
str r0, [sp]
mov r0, #0x1a
str r0, [sp, #4]
add r7, sp, #0x10
mov r2, #2
mov r3, #0
ldrsh r2, [r7, r2]
ldrsh r3, [r7, r3]
add r0, r5, #0
add r1, r6, #0
bl ov96_0220D13C
mov r1, #0
str r0, [r4, #0x14]
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #0xf
str r0, [sp]
mov r0, #0x17
str r0, [sp, #4]
mov r2, #2
mov r3, #0
ldrsh r2, [r7, r2]
ldrsh r3, [r7, r3]
add r0, r5, #0
add r1, r6, #0
bl ov96_0220D13C
mov r1, #0
str r0, [r4, #0x1c]
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #0x1b
str r0, [sp]
mov r0, #0x18
str r0, [sp, #4]
mov r2, #2
mov r3, #0
ldrsh r2, [r7, r2]
ldrsh r3, [r7, r3]
add r0, r5, #0
add r1, r6, #0
bl ov96_0220D13C
mov r1, #0
str r0, [r4, #0x20]
bl UnkImageStruct_SetSpriteVisibleFlag
add r3, r7, #0
mov r7, #0
ldrsh r0, [r3, r7]
mov r2, #2
add r1, r6, #0
sub r0, #0x18
strh r0, [r3]
mov r0, #0x18
str r0, [sp]
mov r0, #0x19
str r0, [sp, #4]
ldrsh r2, [r3, r2]
ldrsh r3, [r3, r7]
add r0, r5, #0
bl ov96_0220D13C
add r1, r7, #0
str r0, [r4, #0x18]
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #1
str r0, [sp]
add r1, r7, #0
ldr r2, [sp, #0xc]
add r0, r4, #0
add r3, r1, #0
bl ov96_0220C54C
add r0, r7, #0
str r0, [sp]
ldr r2, [sp, #0xc]
add r0, r4, #0
mov r1, #5
mov r3, #2
bl ov96_0220C54C
add r0, r7, #0
str r0, [sp]
ldr r2, [sp, #0xc]
add r0, r4, #0
mov r1, #6
mov r3, #1
bl ov96_0220C54C
add r0, r4, #0
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_0220B374
thumb_func_start ov96_0220B500
ov96_0220B500: ; 0x0220B500
push {r4, r5, r6, lr}
add r6, r0, #0
bne _0220B50A
bl GF_AssertFail
_0220B50A:
mov r4, #0
add r5, r6, #0
_0220B50E:
ldr r0, [r5, #0x10]
cmp r0, #0
beq _0220B518
bl sub_0200D9DC
_0220B518:
add r4, r4, #1
add r5, r5, #4
cmp r4, #9
blt _0220B50E
add r0, r6, #0
bl FreeToHeap
pop {r4, r5, r6, pc}
thumb_func_end ov96_0220B500
thumb_func_start ov96_0220B528
ov96_0220B528: ; 0x0220B528
push {r3, r4, r5, r6, lr}
sub sp, #4
add r4, r0, #0
add r5, r1, #0
cmp r4, #0
bne _0220B538
bl GF_AssertFail
_0220B538:
ldr r0, [r4, #0x40]
lsl r0, r0, #0x16
lsr r0, r0, #0x18
cmp r0, #3
bhi _0220B578
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0220B54E: ; jump table
.short _0220B556 - _0220B54E - 2 ; case 0
.short _0220B560 - _0220B54E - 2 ; case 1
.short _0220B568 - _0220B54E - 2 ; case 2
.short _0220B570 - _0220B54E - 2 ; case 3
_0220B556:
add r0, r4, #0
add r1, r5, #0
bl ov96_0220B940
b _0220B57C
_0220B560:
add r0, r4, #0
bl ov96_0220B95C
b _0220B57C
_0220B568:
add r0, r4, #0
bl ov96_0220B988
b _0220B57C
_0220B570:
add r0, r4, #0
bl ov96_0220B9A8
b _0220B57C
_0220B578:
bl GF_AssertFail
_0220B57C:
ldr r0, _0220B62C ; =ov96_0221E5A4
ldr r1, [r0]
add r1, r1, #1
str r1, [r0]
cmp r5, #0
bne _0220B58E
add r0, r4, #0
bl ov96_0220C680
_0220B58E:
add r0, r4, #0
bl ov96_0220BD38
ldr r2, [r4, #0x40]
add r0, r4, #0
lsl r1, r2, #0xb
lsl r2, r2, #0x1e
lsr r2, r2, #0x1e
lsl r2, r2, #0x18
add r0, #0x34
lsr r1, r1, #0x15
lsr r2, r2, #0x18
bl ov96_0220D2AC
ldr r1, [r4, #0x40]
ldr r0, _0220B630 ; =0xFFE003FF
and r0, r1
lsl r1, r1, #0xb
lsr r1, r1, #0x15
add r1, r1, #1
lsl r1, r1, #0x15
lsr r1, r1, #0xb
orr r0, r1
str r0, [r4, #0x40]
ldr r0, [r4, #0x10]
bl sub_0200DCA0
cmp r0, #0
beq _0220B628
ldr r0, [r4, #0x10]
ldr r0, [r0]
bl sub_02024CB8
add r6, r0, #0
bl NNS_G2dGetAnimCtrlCurrentElement
add r5, r0, #0
ldr r0, [r6, #0xc]
cmp r0, #0
bne _0220B5E2
bl GF_AssertFail
_0220B5E2:
add r1, sp, #0
ldr r0, [r4, #0x10]
add r1, #2
add r2, sp, #0
bl UnkImageStruct_GetSpritePositionXY
mov r0, #4
add r3, sp, #0
mov r1, #2
ldrsh r2, [r3, r1]
ldrsh r0, [r5, r0]
mov r6, #6
add r0, r2, r0
strh r0, [r3, #2]
mov r2, #0
ldrsh r0, [r3, r2]
ldrsh r5, [r5, r6]
add r0, r0, r5
strh r0, [r3]
ldrsh r1, [r3, r1]
ldrsh r2, [r3, r2]
ldr r0, [r4, #0x14]
bl UnkImageStruct_SetSpritePositionXY
add r3, sp, #0
mov r2, #0
ldrsh r0, [r3, r2]
mov r1, #2
sub r0, #0x18
strh r0, [r3]
ldrsh r1, [r3, r1]
ldrsh r2, [r3, r2]
ldr r0, [r4, #0x18]
bl UnkImageStruct_SetSpritePositionXY
_0220B628:
add sp, #4
pop {r3, r4, r5, r6, pc}
.balign 4, 0
_0220B62C: .word ov96_0221E5A4
_0220B630: .word 0xFFE003FF
thumb_func_end ov96_0220B528
thumb_func_start ov96_0220B634
ov96_0220B634: ; 0x0220B634
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
add r7, r1, #0
ldr r0, _0220B6E4 ; =ov96_0221E5A4
str r2, [sp, #4]
mov r1, #0
str r1, [r0]
ldr r0, [r5, #0x40]
lsl r0, r0, #0x16
lsr r0, r0, #0x18
cmp r0, #2
bne _0220B652
bl GF_AssertFail
_0220B652:
ldr r0, [r5, #0x40]
lsl r1, r0, #0x16
lsr r1, r1, #0x18
cmp r1, #1
bne _0220B69C
lsl r0, r0, #0x1e
add r4, r5, #0
lsr r0, r0, #0x1e
ldr r1, [r5, #0x44]
add r4, #0x34
lsl r6, r0, #2
ldr r0, [r4, r6]
lsl r1, r1, #8
lsr r1, r1, #0x18
lsl r0, r0, #6
lsl r1, r1, #0x10
lsr r0, r0, #0x18
lsr r1, r1, #0x10
bl ov96_0220D33C
lsl r0, r0, #0x18
ldr r2, [r4, r6]
ldr r1, _0220B6E8 ; =0xFC03FFFF
lsr r0, r0, #6
and r1, r2
orr r0, r1
str r0, [r4, r6]
ldr r0, [r4, r6]
lsl r0, r0, #6
lsr r0, r0, #0x18
bne _0220B69C
add r0, r5, #0
mov r1, #2
bl ov96_0220C578
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
_0220B69C:
ldr r0, [r5, #0x44]
lsl r0, r0, #0x17
lsr r0, r0, #0x1f
bne _0220B6AE
ldr r2, [sp, #4]
add r0, r5, #0
add r1, r7, #0
bl ov96_0220C714
_0220B6AE:
ldr r0, [r5, #0x10]
mov r1, #2
bl UnkImageStruct_SetSpriteAnimSeqNo
ldr r0, [r5, #0xc]
bl ov96_021E5F24
add r1, r0, #0
mov r0, #1
str r0, [sp]
ldr r2, [r5, #0x40]
lsl r1, r1, #0x18
lsl r2, r2, #0x1e
lsr r2, r2, #0x1e
lsl r2, r2, #0x18
ldr r0, [r5, #0xc]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #4
bl ov96_021E8228
add r0, r5, #0
mov r1, #1
bl ov96_0220C578
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0220B6E4: .word ov96_0221E5A4
_0220B6E8: .word 0xFC03FFFF
thumb_func_end ov96_0220B634
thumb_func_start ov96_0220B6EC
ov96_0220B6EC: ; 0x0220B6EC
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x40]
lsl r0, r0, #0x16
lsr r0, r0, #0x18
cmp r0, #3
bne _0220B6FE
bl GF_AssertFail
_0220B6FE:
add r0, r4, #0
mov r1, #3
bl ov96_0220C578
pop {r4, pc}
thumb_func_end ov96_0220B6EC
thumb_func_start ov96_0220B708
ov96_0220B708: ; 0x0220B708
push {r4, r5, r6, lr}
add r5, r0, #0
add r6, r1, #0
cmp r5, #0
bne _0220B716
bl GF_AssertFail
_0220B716:
mov r4, #0
_0220B718:
ldr r0, [r5, #0x10]
cmp r0, #0
beq _0220B724
add r1, r6, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
_0220B724:
add r4, r4, #1
add r5, r5, #4
cmp r4, #9
blt _0220B718
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_0220B708
thumb_func_start ov96_0220B730
ov96_0220B730: ; 0x0220B730
push {r4, lr}
add r4, r0, #0
bne _0220B73A
bl GF_AssertFail
_0220B73A:
ldr r0, [r4, #0x40]
lsl r0, r0, #0x16
lsr r0, r0, #0x18
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_0220B730
thumb_func_start ov96_0220B744
ov96_0220B744: ; 0x0220B744
ldr r0, [r0, #0x40]
mov r1, #1
lsl r0, r0, #0x16
lsr r0, r0, #0x18
beq _0220B754
cmp r0, #1
beq _0220B754
mov r1, #0
_0220B754:
add r0, r1, #0
bx lr
thumb_func_end ov96_0220B744
thumb_func_start ov96_0220B758
ov96_0220B758: ; 0x0220B758
push {r4, lr}
add r4, r0, #0
bne _0220B762
bl GF_AssertFail
_0220B762:
ldr r0, [r4, #0x40]
add r1, r4, #0
lsl r0, r0, #0x1e
lsr r0, r0, #0x1e
add r1, #0x34
lsl r0, r0, #2
add r0, r1, r0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_0220B758
thumb_func_start ov96_0220B774
ov96_0220B774: ; 0x0220B774
push {r4, lr}
add r4, r0, #0
bne _0220B77E
bl GF_AssertFail
_0220B77E:
ldr r0, [r4, #0x44]
lsl r0, r0, #0x17
lsr r0, r0, #0x1f
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_0220B774
thumb_func_start ov96_0220B788
ov96_0220B788: ; 0x0220B788
push {r4, lr}
add r4, r0, #0
bne _0220B792
bl GF_AssertFail
_0220B792:
ldr r0, [r4, #0x44]
lsl r0, r0, #0x16
lsr r0, r0, #0x1f
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_0220B788
thumb_func_start ov96_0220B79C
ov96_0220B79C: ; 0x0220B79C
push {r4, lr}
add r4, r0, #0
bne _0220B7A6
bl GF_AssertFail
_0220B7A6:
ldr r0, [r4, #0x44]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
lsl r0, r0, #0x10
lsr r0, r0, #0x10
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_0220B79C
thumb_func_start ov96_0220B7B4
ov96_0220B7B4: ; 0x0220B7B4
push {r4, lr}
add r4, r0, #0
bne _0220B7BE
bl GF_AssertFail
_0220B7BE:
ldr r0, [r4, #0x40]
lsl r0, r0, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #0x18
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_0220B7B4
thumb_func_start ov96_0220B7CC
ov96_0220B7CC: ; 0x0220B7CC
push {r4, lr}
add r4, r0, #0
bne _0220B7D6
bl GF_AssertFail
_0220B7D6:
ldr r1, [r4, #0x40]
mov r0, #1
lsl r1, r1, #0x16
lsr r1, r1, #0x18
beq _0220B7F0
cmp r1, #1
bne _0220B7EE
ldr r1, [r4, #0x44]
lsl r1, r1, #8
lsr r1, r1, #0x18
cmp r1, #2
bhs _0220B7F0
_0220B7EE:
mov r0, #0
_0220B7F0:
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_0220B7CC
thumb_func_start ov96_0220B7F4
ov96_0220B7F4: ; 0x0220B7F4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x68
add r7, r3, #0
add r4, r0, #0
add r0, r7, #0
str r1, [sp, #0xc]
str r2, [sp, #0x10]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x14]
add r0, sp, #0x2c
mov r1, #0xaa
mov r2, #5
bl ReadWholeNarcMemberByIdPair
add r0, r4, #0
mov r1, #0xc8
bl AllocFromHeap
str r0, [sp, #0x1c]
mov r1, #0
mov r2, #0xc8
bl MI_CpuFill8
ldr r0, [sp, #0x1c]
ldr r1, [sp, #0xc]
str r4, [r0]
str r1, [r0, #4]
ldr r1, [sp, #0x10]
str r1, [r0, #8]
str r7, [r0, #0xc]
ldr r0, [sp, #0x80]
ldr r1, [sp, #0x1c]
str r0, [r1, #0x10]
ldr r1, [sp, #0x14]
bl ov96_0220C844
ldr r0, [sp, #0x1c]
mov r6, #0
str r0, [sp, #0x18]
add r0, #0x14
str r0, [sp, #0x18]
_0220B84C:
ldr r0, [sp, #0x14]
cmp r6, r0
beq _0220B892
mov r4, #0
add r5, sp, #0x20
_0220B856:
add r0, r7, #0
add r1, r6, #0
add r2, r4, #0
bl ov96_021E60D8
ldrb r0, [r0, #3]
add r4, r4, #1
lsl r1, r0, #2
add r0, sp, #0x2c
add r0, r0, r1
ldr r0, [r0, #0x14]
cmp r4, #3
stmia r5!, {r0}
blt _0220B856
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp]
str r7, [sp, #4]
add r0, sp, #0x20
str r0, [sp, #8]
ldr r3, [sp, #0x1c]
ldr r0, [sp, #0x18]
ldr r1, [sp, #0xc]
ldr r2, [sp, #0x10]
ldr r3, [r3, #0x10]
bl ov96_0220BE28
ldr r0, [sp, #0x18]
add r0, #0x3c
str r0, [sp, #0x18]
_0220B892:
add r6, r6, #1
cmp r6, #4
blt _0220B84C
ldr r0, [sp, #0x1c]
add sp, #0x68
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0220B7F4
thumb_func_start ov96_0220B8A0
ov96_0220B8A0: ; 0x0220B8A0
push {r3, r4, r5, r6, r7, lr}
str r0, [sp]
cmp r0, #0
bne _0220B8AC
bl GF_AssertFail
_0220B8AC:
ldr r6, [sp]
mov r7, #0
_0220B8B0:
mov r4, #0
add r5, r6, #0
_0220B8B4:
ldr r0, [r5, #0x30]
cmp r0, #0
beq _0220B8BE
bl sub_0200D9DC
_0220B8BE:
add r4, r4, #1
add r5, r5, #4
cmp r4, #6
blt _0220B8B4
add r7, r7, #1
add r6, #0x3c
cmp r7, #3
blt _0220B8B0
ldr r0, [sp]
bl FreeToHeap
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0220B8A0
thumb_func_start ov96_0220B8D8
ov96_0220B8D8: ; 0x0220B8D8
push {r3, r4, r5, lr}
add r5, r0, #0
mov r4, #0
add r5, #0x14
_0220B8E0:
add r0, r5, #0
bl ov96_0220C40C
add r4, r4, #1
add r5, #0x3c
cmp r4, #3
blt _0220B8E0
pop {r3, r4, r5, pc}
thumb_func_end ov96_0220B8D8
thumb_func_start ov96_0220B8F0
ov96_0220B8F0: ; 0x0220B8F0
push {r3, r4, r5, r6, r7, lr}
mov r1, #0
add r6, r0, #0
str r1, [sp]
add r6, #0x14
add r7, r1, #0
_0220B8FC:
ldr r0, [r6, #0x38]
mov r1, #0xc
lsl r0, r0, #7
lsr r0, r0, #0x1e
lsl r0, r0, #2
add r0, r6, r0
ldr r0, [r0, #4]
bl ov96_021EAC5C
ldr r0, [r6, #0x34]
cmp r0, #0
beq _0220B91C
bl DestroySysTask
mov r0, #0
str r0, [r6, #0x34]
_0220B91C:
mov r4, #0
add r5, r6, #0
_0220B920:
ldr r0, [r5, #0x1c]
add r1, r7, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r4, r4, #1
add r5, r5, #4
cmp r4, #6
blt _0220B920
ldr r0, [sp]
add r6, #0x3c
add r0, r0, #1
str r0, [sp]
cmp r0, #3
blt _0220B8FC
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0220B8F0
thumb_func_start ov96_0220B940
ov96_0220B940: ; 0x0220B940
push {r4, lr}
add r4, r0, #0
cmp r1, #0
bne _0220B95A
ldr r0, [r4, #0x10]
bl sub_0200DCA0
cmp r0, #0
bne _0220B95A
ldr r0, [r4, #0x10]
mov r1, #1
bl UnkImageStruct_SetSpriteAnimSeqNo
_0220B95A:
pop {r4, pc}
thumb_func_end ov96_0220B940
thumb_func_start ov96_0220B95C
ov96_0220B95C: ; 0x0220B95C
push {r3, lr}
ldr r2, [r0, #0x44]
ldr r1, _0220B984 ; =0xFF00FFFF
and r1, r2
lsl r2, r2, #8
lsr r2, r2, #0x18
add r2, r2, #1
lsl r2, r2, #0x18
lsr r2, r2, #8
orr r1, r2
str r1, [r0, #0x44]
lsl r1, r1, #8
lsr r1, r1, #0x18
cmp r1, #0xa
blo _0220B980
mov r1, #0
bl ov96_0220C578
_0220B980:
pop {r3, pc}
nop
_0220B984: .word 0xFF00FFFF
thumb_func_end ov96_0220B95C
thumb_func_start ov96_0220B988
ov96_0220B988: ; 0x0220B988
push {r3, lr}
ldr r1, [r0, #0x40]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #2
add r1, r0, r1
ldr r1, [r1, #0x34]
lsl r1, r1, #6
lsr r1, r1, #0x18
cmp r1, #8
blo _0220B9A4
mov r1, #0
bl ov96_0220C578
_0220B9A4:
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_0220B988
thumb_func_start ov96_0220B9A8
ov96_0220B9A8: ; 0x0220B9A8
push {r4, r5, r6, lr}
sub sp, #0x10
add r4, r0, #0
ldr r1, [r4, #0x44]
lsl r2, r1, #0x10
lsr r2, r2, #0x1a
cmp r2, #6
bls _0220B9BA
b _0220BD1A
_0220B9BA:
add r2, r2, r2
add r2, pc
ldrh r2, [r2, #6]
lsl r2, r2, #0x10
asr r2, r2, #0x10
add pc, r2
_0220B9C6: ; jump table
.short _0220B9D4 - _0220B9C6 - 2 ; case 0
.short _0220BA02 - _0220B9C6 - 2 ; case 1
.short _0220BA68 - _0220B9C6 - 2 ; case 2
.short _0220BB4E - _0220B9C6 - 2 ; case 3
.short _0220BC2E - _0220B9C6 - 2 ; case 4
.short _0220BCB0 - _0220B9C6 - 2 ; case 5
.short _0220BD10 - _0220B9C6 - 2 ; case 6
_0220B9D4:
ldr r0, [r4, #0x1c]
bl UnkImageStruct_ResetSpriteAnimCtrlState
ldr r0, [r4, #0x1c]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, _0220BD24 ; =0x000008B4
bl PlaySE
ldr r1, [r4, #0x44]
ldr r0, _0220BD28 ; =0xFFFF03FF
add r2, r1, #0
and r2, r0
lsl r0, r1, #0x10
lsr r0, r0, #0x1a
add r0, r0, #1
lsl r0, r0, #0x1a
lsr r0, r0, #0x10
orr r0, r2
add sp, #0x10
str r0, [r4, #0x44]
pop {r4, r5, r6, pc}
_0220BA02:
ldr r0, _0220BD2C ; =0x00FFFFFF
add r2, r1, #0
and r2, r0
lsr r0, r1, #0x18
add r0, r0, #1
lsl r0, r0, #0x18
orr r0, r2
str r0, [r4, #0x44]
lsr r0, r0, #0x18
cmp r0, #2
bhs _0220BA1A
b _0220BD1E
_0220BA1A:
ldr r0, [r4, #0x20]
bl UnkImageStruct_ResetSpriteAnimCtrlState
ldr r0, [r4, #0x20]
mov r1, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
ldr r0, [r4, #0x20]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4, #0x10]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4, #0x14]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4, #0x18]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r1, [r4, #0x44]
ldr r0, _0220BD2C ; =0x00FFFFFF
add r2, r1, #0
and r2, r0
ldr r0, _0220BD28 ; =0xFFFF03FF
add r1, r2, #0
and r1, r0
lsl r0, r2, #0x10
lsr r0, r0, #0x1a
add r0, r0, #1
lsl r0, r0, #0x1a
lsr r0, r0, #0x10
orr r0, r1
add sp, #0x10
str r0, [r4, #0x44]
pop {r4, r5, r6, pc}
_0220BA68:
add r1, sp, #0xc
ldr r0, [r4, #0x20]
add r1, #2
add r2, sp, #0xc
bl UnkImageStruct_GetSpritePositionXY
mov r3, #8
add r1, sp, #4
add r0, r3, #0
ldrsh r5, [r1, r3]
sub r0, #0x48
sub r2, r0, r5
asr r0, r2, #1
lsr r0, r0, #0x1e
add r0, r2, r0
lsl r0, r0, #0xe
asr r2, r0, #0x10
add r0, r3, #0
sub r0, #0x3c
cmp r5, r0
ble _0220BA96
cmp r2, #0
bne _0220BAF0
_0220BA96:
ldr r0, [r4, #0x40]
lsl r0, r0, #0x1e
lsr r0, r0, #0x1e
sub r0, r0, #1
lsl r0, r0, #0x18
asr r5, r0, #0x18
bpl _0220BAA6
mov r5, #2
_0220BAA6:
ldr r0, [r4, #0xc]
bl ov96_021E5F24
add r2, r0, #0
mov r0, #0
lsl r2, r2, #0x18
lsl r3, r5, #0x18
str r0, [sp]
add r0, r4, #0
mov r1, #6
lsr r2, r2, #0x18
lsr r3, r3, #0x18
bl ov96_0220C54C
mov r2, #0x28
add r0, sp, #4
add r3, r2, #0
strh r2, [r0, #0xa]
sub r3, #0x50
strh r3, [r0, #8]
add r0, r4, #0
mov r1, #6
bl ov96_0220C90C
ldr r1, [r4, #0x44]
ldr r0, _0220BD28 ; =0xFFFF03FF
add r2, r1, #0
and r2, r0
lsl r0, r1, #0x10
lsr r0, r0, #0x1a
add r0, r0, #1
lsl r0, r0, #0x1a
lsr r0, r0, #0x10
orr r0, r2
add sp, #0x10
str r0, [r4, #0x44]
pop {r4, r5, r6, pc}
_0220BAF0:
mov r6, #0xa
add r2, r5, r2
lsl r2, r2, #0x10
ldrsh r1, [r1, r6]
ldr r0, [r4, #0x20]
asr r2, r2, #0x10
lsl r3, r3, #0x11
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
add r1, sp, #0xc
mov r3, #1
ldr r0, [r4, #0x28]
add r1, #2
add r2, sp, #0xc
lsl r3, r3, #0x14
bl UnkImageStruct_GetSpritePositionXY_CustomScreenYOffset
add r1, sp, #4
mov r0, #8
ldrsh r1, [r1, r0]
mov r0, #0x11
lsl r0, r0, #4
sub r2, r0, r1
bpl _0220BB22
neg r2, r2
_0220BB22:
add r1, sp, #4
mov r0, #8
ldrsh r3, [r1, r0]
asr r2, r2, #2
add r2, r3, r2
strh r2, [r1, #8]
ldrsh r0, [r1, r0]
cmp r0, #0xd8
ble _0220BB36
mov r0, #0xd8
_0220BB36:
add r5, sp, #4
strh r0, [r5, #8]
mov r2, #0xa
mov r3, #8
ldrsh r2, [r5, r2]
ldrsh r3, [r5, r3]
add r0, r4, #0
mov r1, #6
bl ov96_0220C90C
add sp, #0x10
pop {r4, r5, r6, pc}
_0220BB4E:
add r1, sp, #8
mov r3, #1
ldr r0, [r4, #0x24]
add r1, #2
add r2, sp, #8
lsl r3, r3, #0x14
bl UnkImageStruct_GetSpritePositionXY_CustomScreenYOffset
add r1, sp, #4
mov r0, #4
ldrsh r1, [r1, r0]
mov r0, #0x88
sub r0, r0, r1
bpl _0220BB6C
neg r0, r0
_0220BB6C:
lsl r0, r0, #0xf
asr r5, r0, #0x10
cmp r1, #0x88
bge _0220BBB6
cmp r5, #0
bne _0220BB7A
mov r5, #1
_0220BB7A:
add r6, sp, #4
mov r3, #4
ldrsh r0, [r6, r3]
mov r2, #6
mov r1, #5
add r0, r0, r5
strh r0, [r6, #4]
ldrsh r2, [r6, r2]
ldrsh r3, [r6, r3]
add r0, r4, #0
bl ov96_0220C90C
add r1, sp, #8
mov r3, #1
ldr r0, [r4, #0x28]
add r1, #2
add r2, sp, #8
lsl r3, r3, #0x14
bl UnkImageStruct_GetSpritePositionXY_CustomScreenYOffset
mov r3, #4
ldrsh r0, [r6, r3]
mov r1, #6
add r0, r0, r5
strh r0, [r6, #4]
ldrsh r2, [r6, r1]
ldrsh r3, [r6, r3]
add r0, r4, #0
bl ov96_0220C90C
_0220BBB6:
ldr r1, [r4, #0x44]
ldr r0, _0220BD2C ; =0x00FFFFFF
add r2, r1, #0
and r2, r0
lsr r0, r1, #0x18
add r0, r0, #1
lsl r0, r0, #0x18
orr r0, r2
str r0, [r4, #0x44]
lsr r0, r0, #0x18
cmp r0, #4
bhs _0220BBD0
b _0220BD1E
_0220BBD0:
ldr r1, [r4, #0x24]
ldr r0, [r4, #0x28]
mov r2, #0x28
str r0, [r4, #0x24]
str r1, [r4, #0x28]
ldr r1, [r4, #0x2c]
ldr r0, [r4, #0x30]
mov r3, #0x30
str r0, [r4, #0x2c]
str r1, [r4, #0x30]
add r0, r4, #0
mov r1, #5
bl ov96_0220C90C
add r0, r4, #0
mov r1, #6
mov r2, #0x28
mov r3, #0x88
bl ov96_0220C90C
mov r1, #0x88
add r2, r1, #0
mov r3, #1
ldr r0, [r4, #0x20]
sub r2, #0x90
lsl r3, r3, #0x14
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
ldr r0, _0220BD30 ; =0x000008B5
bl PlaySE
ldr r1, [r4, #0x44]
ldr r0, _0220BD2C ; =0x00FFFFFF
add r2, r1, #0
and r2, r0
ldr r0, _0220BD28 ; =0xFFFF03FF
add r1, r2, #0
and r1, r0
lsl r0, r2, #0x10
lsr r0, r0, #0x1a
add r0, r0, #1
lsl r0, r0, #0x1a
lsr r0, r0, #0x10
orr r0, r1
add sp, #0x10
str r0, [r4, #0x44]
pop {r4, r5, r6, pc}
_0220BC2E:
add r1, sp, #4
ldr r0, [r4, #0x20]
add r1, #2
add r2, sp, #4
bl UnkImageStruct_GetSpritePositionXY
add r1, sp, #4
mov r0, #0
ldrsh r1, [r1, r0]
sub r0, #0x18
sub r0, r0, r1
bpl _0220BC48
neg r0, r0
_0220BC48:
lsl r0, r0, #0x10
asr r2, r0, #0x10
beq _0220BC56
lsr r0, r2, #0x1f
add r0, r2, r0
lsl r0, r0, #0xf
asr r2, r0, #0x10
_0220BC56:
add r1, sp, #4
mov r0, #0
ldrsh r3, [r1, r0]
add r2, r2, #2
add r2, r3, r2
strh r2, [r1]
ldrsh r2, [r1, r0]
cmp r2, #0x70
blt _0220BCA0
ldr r0, _0220BD34 ; =0x000008B6
bl PlaySE
ldr r0, [r4, #0x20]
mov r1, #0x88
mov r2, #0x70
bl UnkImageStruct_SetSpritePositionXY
ldr r0, [r4, #0x20]
mov r1, #1
bl UnkImageStruct_SetSpriteAnimActiveFlag
ldr r0, [r4, #0x1c]
bl UnkImageStruct_ResetSpriteAnimCtrlState
ldr r1, [r4, #0x44]
ldr r0, _0220BD28 ; =0xFFFF03FF
add r2, r1, #0
and r2, r0
lsl r0, r1, #0x10
lsr r0, r0, #0x1a
add r0, r0, #1
lsl r0, r0, #0x1a
lsr r0, r0, #0x10
orr r0, r2
add sp, #0x10
str r0, [r4, #0x44]
pop {r4, r5, r6, pc}
_0220BCA0:
mov r3, #2
ldrsh r1, [r1, r3]
ldr r0, [r4, #0x20]
lsl r3, r3, #0x13
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
add sp, #0x10
pop {r4, r5, r6, pc}
_0220BCB0:
ldr r0, _0220BD2C ; =0x00FFFFFF
add r2, r1, #0
and r2, r0
lsr r0, r1, #0x18
add r0, r0, #1
lsl r0, r0, #0x18
orr r0, r2
str r0, [r4, #0x44]
lsr r0, r0, #0x18
cmp r0, #2
blo _0220BD1E
ldr r0, [r4, #0x20]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4, #0xc]
bl ov96_021E5F24
add r2, r0, #0
mov r0, #1
str r0, [sp]
ldr r3, [r4, #0x40]
lsl r2, r2, #0x18
lsl r3, r3, #0x1e
lsr r3, r3, #0x1e
lsl r3, r3, #0x18
add r0, r4, #0
mov r1, #0
lsr r2, r2, #0x18
lsr r3, r3, #0x18
bl ov96_0220C54C
ldr r1, [r4, #0x44]
ldr r0, _0220BD2C ; =0x00FFFFFF
add r2, r1, #0
and r2, r0
ldr r0, _0220BD28 ; =0xFFFF03FF
add r1, r2, #0
and r1, r0
lsl r0, r2, #0x10
lsr r0, r0, #0x1a
add r0, r0, #1
lsl r0, r0, #0x1a
lsr r0, r0, #0x10
orr r0, r1
add sp, #0x10
str r0, [r4, #0x44]
pop {r4, r5, r6, pc}
_0220BD10:
mov r1, #0
bl ov96_0220C578
add sp, #0x10
pop {r4, r5, r6, pc}
_0220BD1A:
bl GF_AssertFail
_0220BD1E:
add sp, #0x10
pop {r4, r5, r6, pc}
nop
_0220BD24: .word 0x000008B4
_0220BD28: .word 0xFFFF03FF
_0220BD2C: .word 0x00FFFFFF
_0220BD30: .word 0x000008B5
_0220BD34: .word 0x000008B6
thumb_func_end ov96_0220B9A8
thumb_func_start ov96_0220BD38
ov96_0220BD38: ; 0x0220BD38
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r6, r0, #0
ldr r0, [r6, #0x40]
lsl r0, r0, #0x16
lsr r0, r0, #0x18
cmp r0, #3
beq _0220BE20
add r0, r6, #0
str r0, [sp]
add r0, #0x34
add r7, r6, #0
mov r5, #0
str r0, [sp]
add r7, #0x44
_0220BD56:
ldr r0, [r6, #0x40]
lsl r0, r0, #0x1e
lsr r0, r0, #0x1e
cmp r5, r0
bne _0220BD74
mov r0, #0x1a
str r0, [sp, #8]
mov r0, #0x18
str r0, [sp, #4]
ldr r1, [r7]
ldr r0, _0220BE24 ; =0xFFFFFDFF
ldr r4, [r6, #0x18]
and r0, r1
str r0, [r7]
b _0220BD90
_0220BD74:
add r0, r0, #1
cmp r0, #3
blt _0220BD7C
mov r0, #0
_0220BD7C:
cmp r0, r5
bne _0220BD84
mov r0, #1
b _0220BD86
_0220BD84:
mov r0, #0
_0220BD86:
lsl r0, r0, #2
add r0, r6, r0
ldr r4, [r0, #0x2c]
mov r0, #0x11
str r0, [sp, #4]
_0220BD90:
ldr r0, [sp]
ldr r2, [r0]
lsl r0, r2, #6
lsr r1, r0, #0x18
bne _0220BDCA
ldr r1, [sp, #8]
add r0, r4, #0
bl UnkImageStruct_TryChangeSpriteAnimSeqNo
add r0, r4, #0
bl UnkImageStruct_GetSpriteVisibleFlag
cmp r0, #0
bne _0220BDB4
add r0, r4, #0
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
_0220BDB4:
mov r0, #0x89
lsl r0, r0, #4
bl IsSEPlaying
cmp r0, #0
bne _0220BE14
mov r0, #0x89
lsl r0, r0, #4
bl PlaySE
b _0220BE14
_0220BDCA:
lsl r2, r2, #0xe
lsr r2, r2, #0x17
add r0, r4, #0
lsl r1, r1, #0xc
lsl r2, r2, #0xc
bl ov96_0220C768
cmp r0, #0
beq _0220BE02
ldr r1, [sp, #4]
add r0, r4, #0
bl UnkImageStruct_TryChangeSpriteAnimSeqNo
add r0, r4, #0
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r6, #0x40]
lsl r0, r0, #0x1e
lsr r0, r0, #0x1e
cmp r5, r0
bne _0220BE14
mov r0, #2
ldr r1, [r7]
lsl r0, r0, #8
orr r0, r1
str r0, [r7]
b _0220BE14
_0220BE02:
add r0, r4, #0
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
mov r1, #1
add r0, r4, #0
lsl r1, r1, #0xc
bl sub_0200DC8C
_0220BE14:
ldr r0, [sp]
add r5, r5, #1
add r0, r0, #4
str r0, [sp]
cmp r5, #3
blt _0220BD56
_0220BE20:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_0220BE24: .word 0xFFFFFDFF
thumb_func_end ov96_0220BD38
thumb_func_start ov96_0220BE28
ov96_0220BE28: ; 0x0220BE28
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r1, [sp, #8]
str r2, [sp, #0xc]
mov r1, #0
mov r2, #0x3c
add r5, r0, #0
str r3, [sp, #0x10]
bl MI_CpuFill8
add r0, sp, #0x20
ldrb r0, [r0, #0x10]
ldr r1, [r5, #0x38]
str r0, [sp, #0x14]
ldr r0, _0220BFA4 ; =0xF9FFFFFF
and r1, r0
ldr r0, [sp, #0x14]
lsl r3, r0, #0x1e
lsr r0, r3, #5
orr r0, r1
str r0, [r5, #0x38]
ldr r0, [sp, #0x34]
ldr r1, _0220BFA8 ; =0xE7FFFFFF
str r0, [r5]
ldr r2, [r5, #0x38]
and r2, r1
lsr r1, r3, #3
orr r1, r2
str r1, [r5, #0x38]
bl ov96_021E5F24
ldr r2, [r5, #0x38]
lsl r1, r2, #5
lsr r1, r1, #0x1e
cmp r1, r0
bls _0220BE84
ldr r0, _0220BFA8 ; =0xE7FFFFFF
add r1, r2, #0
and r1, r0
lsl r0, r2, #3
lsr r0, r0, #0x1e
sub r0, r0, #1
lsl r0, r0, #0x1e
lsr r0, r0, #3
orr r0, r1
str r0, [r5, #0x38]
_0220BE84:
ldr r6, [sp, #0x38]
mov r7, #0
add r4, r5, #0
_0220BE8A:
ldr r1, [r5, #0x38]
ldr r0, [sp, #0x10]
lsl r1, r1, #3
lsr r2, r1, #0x1e
lsl r1, r2, #1
add r1, r2, r1
add r1, r7, r1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_021EAA04
str r0, [r4, #4]
ldr r0, [r6]
add r7, r7, #1
str r0, [r4, #0x10]
add r4, r4, #4
add r6, r6, #4
cmp r7, #3
blt _0220BE8A
ldr r0, [sp, #0x34]
bl ov96_021E5F54
ldr r1, [sp, #0x14]
mov r2, #0x28
add r0, #0x50
mul r2, r1
add r0, r0, r2
bl ov96_021E8A20
ldr r2, [r0]
ldr r1, _0220BFAC ; =0xFFFF00FF
mov r3, #0x38
and r2, r1
ldr r1, [sp, #0x38]
ldr r1, [r1]
lsl r1, r1, #0x18
lsr r1, r1, #0x10
orr r1, r2
str r1, [r0]
ldr r0, [r5, #0x38]
ldr r1, [sp, #0xc]
lsl r0, r0, #3
lsr r0, r0, #0x1e
lsl r4, r0, #6
mov r0, #0xc
add r4, #0x48
str r0, [sp]
mov r0, #0x1d
str r0, [sp, #4]
lsl r2, r4, #0x10
ldr r0, [sp, #8]
asr r2, r2, #0x10
bl ov96_0220D13C
str r0, [r5, #0x1c]
mov r0, #5
str r0, [sp]
mov r0, #0x1c
str r0, [sp, #4]
lsl r2, r4, #0x10
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
asr r2, r2, #0x10
mov r3, #0x38
bl ov96_0220D13C
mov r1, #0
str r0, [r5, #0x20]
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #0x10
str r0, [sp]
mov r0, #0x1f
str r0, [sp, #4]
lsl r2, r4, #0x10
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
asr r2, r2, #0x10
mov r3, #0x28
bl ov96_0220D13C
mov r1, #1
str r0, [r5, #0x28]
bl sub_0200DF98
ldr r1, _0220BFB0 ; =0x3F333333
ldr r0, [r5, #0x28]
add r2, r1, #0
bl sub_0200E024
ldr r0, [r5, #0x28]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #0x18
str r0, [sp]
mov r0, #0x1f
str r0, [sp, #4]
lsl r2, r4, #0x10
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
asr r2, r2, #0x10
mov r3, #0x28
bl ov96_0220D13C
mov r1, #0
str r0, [r5, #0x24]
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #0xe
str r0, [sp]
mov r0, #0x1e
str r0, [sp, #4]
lsl r2, r4, #0x10
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
asr r2, r2, #0x10
mov r3, #0x28
bl ov96_0220D13C
mov r1, #0
str r0, [r5, #0x2c]
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #0x1b
str r0, [sp]
mov r0, #0x1e
str r0, [sp, #4]
lsl r2, r4, #0x10
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
asr r2, r2, #0x10
mov r3, #0x28
bl ov96_0220D13C
mov r1, #0
str r0, [r5, #0x30]
bl UnkImageStruct_SetSpriteVisibleFlag
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0220BFA4: .word 0xF9FFFFFF
_0220BFA8: .word 0xE7FFFFFF
_0220BFAC: .word 0xFFFF00FF
_0220BFB0: .word 0x3F333333
thumb_func_end ov96_0220BE28
thumb_func_start ov96_0220BFB4
ov96_0220BFB4: ; 0x0220BFB4
push {r3, r4, r5, r6, r7, lr}
ldr r2, [r0, #0x38]
add r7, r1, #0
lsl r1, r2, #3
lsr r1, r1, #0x1e
lsl r1, r1, #6
add r1, #0x48
lsl r1, r1, #0x10
asr r6, r1, #0x10
lsl r1, r2, #7
lsr r1, r1, #0x1e
lsl r1, r1, #2
ldr r5, [r0, #0x24]
add r0, r0, r1
ldr r0, [r0, #4]
mov r4, #0x28
bl ov96_021EAA20
bl ov96_021E8BB0
ldrh r0, [r0, #4]
cmp r0, #0
beq _0220BFE8
sub r4, #0x10
lsl r0, r4, #0x10
asr r4, r0, #0x10
_0220BFE8:
add r0, r5, #0
add r1, r6, #0
add r2, r4, #0
bl UnkImageStruct_SetSpritePositionXY
add r0, r5, #0
add r1, r7, #0
bl UnkImageStruct_TryChangeSpriteAnimSeqNo
add r0, r5, #0
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_0220BFB4
thumb_func_start ov96_0220C004
ov96_0220C004: ; 0x0220C004
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4]
lsl r1, r0, #5
lsr r1, r1, #0x1f
beq _0220C024
ldr r0, [r5, #0x28]
mov r1, #0x10
bl UnkImageStruct_TryChangeSpriteAnimSeqNo
ldr r0, [r5, #0x28]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
b _0220C040
_0220C024:
lsl r0, r0, #8
lsr r1, r0, #0x18
cmp r1, #0x32
ldr r0, [r5, #0x28]
blo _0220C03A
lsl r1, r1, #0x10
lsr r1, r1, #0x10
mov r2, #0
bl ov96_0220C8B8
b _0220C040
_0220C03A:
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
_0220C040:
ldr r0, [r4]
lsl r0, r0, #0x10
lsr r1, r0, #0x18
bne _0220C06C
add r0, r5, #0
mov r1, #0x1a
bl ov96_0220BFB4
ldr r0, [r5, #0x28]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r5, #0x38]
mov r1, #0xc
lsl r0, r0, #7
lsr r0, r0, #0x1e
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #4]
bl ov96_021EAC5C
pop {r3, r4, r5, pc}
_0220C06C:
ldr r2, [r5, #0x38]
ldr r0, [r5, #0x24]
lsl r2, r2, #7
lsr r2, r2, #0x1e
lsl r2, r2, #2
add r2, r5, r2
ldr r2, [r2, #0x10]
lsl r1, r1, #0xc
lsl r2, r2, #0xc
bl ov96_0220C768
cmp r0, #0
beq _0220C0A2
add r0, r5, #0
mov r1, #0x18
bl ov96_0220BFB4
ldr r0, [r5, #0x38]
mov r1, #0
lsl r0, r0, #7
lsr r0, r0, #0x1e
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #4]
bl ov96_021EAC5C
pop {r3, r4, r5, pc}
_0220C0A2:
ldr r0, [r4]
lsl r0, r0, #5
lsr r0, r0, #0x1f
beq _0220C0BE
ldr r0, [r5, #0x38]
mov r1, #8
lsl r0, r0, #7
lsr r0, r0, #0x1e
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #4]
bl ov96_021EAC5C
pop {r3, r4, r5, pc}
_0220C0BE:
ldr r0, [r5, #0x24]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r5, #0x38]
mov r1, #4
lsl r0, r0, #7
lsr r0, r0, #0x1e
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #4]
bl ov96_021EAC5C
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_0220C004
thumb_func_start ov96_0220C0DC
ov96_0220C0DC: ; 0x0220C0DC
push {r4, r5, r6, lr}
add r5, r0, #0
add r6, r1, #0
ldr r0, [r6]
ldr r1, [r5, #0x38]
lsl r0, r0, #0x18
lsl r1, r1, #9
lsr r0, r0, #0x18
lsr r1, r1, #0x18
cmp r1, r0
beq _0220C154
mov r1, #0xa
bl _u32_div_f
lsr r4, r1, #1
mov r0, #0xc
sub r2, r0, r4
cmp r1, #0
ldr r0, [r5, #0x1c]
beq _0220C10C
add r1, r2, #0
bl UnkImageStruct_TryChangeSpriteAnimSeqNo
b _0220C112
_0220C10C:
mov r1, #0xd
bl UnkImageStruct_TryChangeSpriteAnimSeqNo
_0220C112:
ldr r1, [r5, #0x38]
lsl r2, r4, #1
lsl r1, r1, #3
lsr r1, r1, #0x1e
lsl r1, r1, #6
add r2, r4, r2
add r1, #0x48
add r2, #0x30
lsl r1, r1, #0x10
lsl r2, r2, #0x10
ldr r0, [r5, #0x20]
asr r1, r1, #0x10
asr r2, r2, #0x10
bl UnkImageStruct_SetSpritePositionXY
ldr r0, [r5, #0x20]
mov r1, #5
bl UnkImageStruct_SetSpriteAnimSeqNo
ldr r0, [r5, #0x20]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r1, [r5, #0x38]
ldr r0, _0220C158 ; =0xFF807FFF
and r1, r0
ldr r0, [r6]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
lsl r0, r0, #0x18
lsr r0, r0, #9
orr r0, r1
str r0, [r5, #0x38]
_0220C154:
pop {r4, r5, r6, pc}
nop
_0220C158: .word 0xFF807FFF
thumb_func_end ov96_0220C0DC
thumb_func_start ov96_0220C15C
ov96_0220C15C: ; 0x0220C15C
push {r3, r4, r5, lr}
sub sp, #8
add r4, r1, #0
ldr r1, [r4, #0x38]
lsl r2, r1, #0x1a
lsr r2, r2, #0x1c
cmp r2, #6
bls _0220C16E
b _0220C3CA
_0220C16E:
add r2, r2, r2
add r2, pc
ldrh r2, [r2, #6]
lsl r2, r2, #0x10
asr r2, r2, #0x10
add pc, r2
_0220C17A: ; jump table
.short _0220C188 - _0220C17A - 2 ; case 0
.short _0220C1B2 - _0220C17A - 2 ; case 1
.short _0220C216 - _0220C17A - 2 ; case 2
.short _0220C274 - _0220C17A - 2 ; case 3
.short _0220C2B2 - _0220C17A - 2 ; case 4
.short _0220C33E - _0220C17A - 2 ; case 5
.short _0220C3B6 - _0220C17A - 2 ; case 6
_0220C188:
ldr r5, [r4, #0x2c]
add r0, r5, #0
bl UnkImageStruct_ResetSpriteAnimCtrlState
add r0, r5, #0
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r2, [r4, #0x38]
mov r1, #0x3c
add r0, r2, #0
bic r0, r1
lsl r1, r2, #0x1a
lsr r1, r1, #0x1c
add r1, r1, #1
lsl r1, r1, #0x1c
lsr r1, r1, #0x1a
orr r0, r1
add sp, #8
str r0, [r4, #0x38]
pop {r3, r4, r5, pc}
_0220C1B2:
ldr r0, _0220C3D4 ; =0xFFFFC03F
and r0, r1
lsl r1, r1, #0x12
lsr r1, r1, #0x18
add r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x12
orr r1, r0
lsl r0, r1, #0x12
lsr r0, r0, #0x18
str r1, [r4, #0x38]
cmp r0, #2
blo _0220C294
lsl r0, r1, #7
lsr r0, r0, #0x1e
lsl r0, r0, #2
add r0, r4, r0
ldr r5, [r4, #0x30]
ldr r0, [r0, #4]
mov r1, #0
bl ov96_021EAB38
add r0, r5, #0
mov r1, #0x1b
bl UnkImageStruct_SetSpriteAnimSeqNo
add r0, r5, #0
mov r1, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r0, r5, #0
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r1, [r4, #0x38]
ldr r0, _0220C3D4 ; =0xFFFFC03F
add r2, r1, #0
and r2, r0
mov r0, #0x3c
add r1, r2, #0
bic r1, r0
lsl r0, r2, #0x1a
lsr r0, r0, #0x1c
add r0, r0, #1
lsl r0, r0, #0x1c
lsr r0, r0, #0x1a
orr r0, r1
add sp, #8
str r0, [r4, #0x38]
pop {r3, r4, r5, pc}
_0220C216:
add r1, sp, #4
ldr r0, [r4, #0x30]
add r1, #2
add r2, sp, #4
bl UnkImageStruct_GetSpritePositionXY
mov r3, #4
add r1, sp, #0
add r0, r3, #0
ldrsh r5, [r1, r3]
sub r0, #0x44
sub r2, r0, r5
asr r0, r2, #1
lsr r0, r0, #0x1e
add r0, r2, r0
lsl r0, r0, #0xe
asr r2, r0, #0x10
add r0, r3, #0
sub r0, #0x44
cmp r5, r0
ble _0220C244
cmp r2, #0
bne _0220C25E
_0220C244:
ldr r2, [r4, #0x38]
mov r1, #0x3c
add r0, r2, #0
bic r0, r1
lsl r1, r2, #0x1a
lsr r1, r1, #0x1c
add r1, r1, #1
lsl r1, r1, #0x1c
lsr r1, r1, #0x1a
orr r0, r1
add sp, #8
str r0, [r4, #0x38]
pop {r3, r4, r5, pc}
_0220C25E:
ldr r0, [r4, #0x30]
mov r4, #6
add r2, r5, r2
lsl r2, r2, #0x10
ldrsh r1, [r1, r4]
asr r2, r2, #0x10
lsl r3, r3, #0x12
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
add sp, #8
pop {r3, r4, r5, pc}
_0220C274:
add r0, r1, #0
lsl r1, r1, #0x12
lsr r1, r1, #0x18
ldr r3, _0220C3D4 ; =0xFFFFC03F
add r1, r1, #1
lsl r1, r1, #0x18
and r0, r3
lsr r1, r1, #0x12
orr r0, r1
str r0, [r4, #0x38]
lsl r0, r0, #0x12
add r2, r4, #0
lsr r0, r0, #0x18
add r2, #0x38
cmp r0, #4
bhs _0220C296
_0220C294:
b _0220C3CE
_0220C296:
ldr r0, [r2]
add sp, #8
and r3, r0
mov r0, #0x3c
add r1, r3, #0
bic r1, r0
lsl r0, r3, #0x1a
lsr r0, r0, #0x1c
add r0, r0, #1
lsl r0, r0, #0x1c
lsr r0, r0, #0x1a
orr r0, r1
str r0, [r2]
pop {r3, r4, r5, pc}
_0220C2B2:
add r1, sp, #0
ldr r0, [r4, #0x30]
add r1, #2
add r2, sp, #0
bl UnkImageStruct_GetSpritePositionXY
add r1, sp, #0
mov r0, #0
ldrsh r1, [r1, r0]
sub r0, #0x18
sub r0, r0, r1
bpl _0220C2CC
neg r0, r0
_0220C2CC:
lsl r0, r0, #0x10
asr r1, r0, #0x10
beq _0220C2DA
lsr r0, r1, #0x1f
add r0, r1, r0
lsl r0, r0, #0xf
asr r1, r0, #0x10
_0220C2DA:
add r5, sp, #0
mov r0, #0
ldrsh r2, [r5, r0]
add r1, r1, #2
add r1, r2, r1
strh r1, [r5]
ldrsh r2, [r5, r0]
cmp r2, #0x30
blt _0220C32E
ldr r0, [r4, #0x38]
mov r2, #0x30
lsl r0, r0, #3
lsr r0, r0, #0x1e
lsl r0, r0, #6
add r0, #0x48
strh r0, [r5, #2]
strh r2, [r5]
mov r1, #2
ldrsh r1, [r5, r1]
ldr r0, [r4, #0x30]
bl UnkImageStruct_SetSpritePositionXY
ldr r0, [r4, #0x30]
mov r1, #1
bl UnkImageStruct_SetSpriteAnimActiveFlag
ldr r0, [r4, #0x2c]
bl UnkImageStruct_ResetSpriteAnimCtrlState
ldr r2, [r4, #0x38]
mov r1, #0x3c
add r0, r2, #0
bic r0, r1
lsl r1, r2, #0x1a
lsr r1, r1, #0x1c
add r1, r1, #1
lsl r1, r1, #0x1c
lsr r1, r1, #0x1a
orr r0, r1
add sp, #8
str r0, [r4, #0x38]
pop {r3, r4, r5, pc}
_0220C32E:
mov r3, #2
ldrsh r1, [r5, r3]
ldr r0, [r4, #0x30]
lsl r3, r3, #0x13
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
add sp, #8
pop {r3, r4, r5, pc}
_0220C33E:
ldr r0, _0220C3D4 ; =0xFFFFC03F
and r0, r1
lsl r1, r1, #0x12
lsr r1, r1, #0x18
add r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x12
orr r0, r1
str r0, [r4, #0x38]
lsl r0, r0, #0x12
lsr r0, r0, #0x18
cmp r0, #2
blo _0220C3CE
ldr r0, [r4, #0x30]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4, #0x38]
mov r1, #1
lsl r0, r0, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #2
add r0, r4, r0
ldr r0, [r0, #4]
bl ov96_021EAB38
ldr r0, [r4, #0x38]
mov r1, #0
lsl r0, r0, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #2
add r0, r4, r0
ldr r0, [r0, #4]
bl ov96_021EAB74
ldr r1, [r4, #0x38]
ldr r0, _0220C3D8 ; =0xFE7FFFFF
add r2, r1, #0
and r2, r0
lsl r0, r1, #0x1e
lsr r0, r0, #0x1e
lsl r0, r0, #0x1e
lsr r0, r0, #7
add r1, r2, #0
orr r1, r0
ldr r0, _0220C3D4 ; =0xFFFFC03F
add r2, r1, #0
and r2, r0
mov r0, #0x3c
add r1, r2, #0
bic r1, r0
lsl r0, r2, #0x1a
lsr r0, r0, #0x1c
add r0, r0, #1
lsl r0, r0, #0x1c
lsr r0, r0, #0x1a
orr r0, r1
add sp, #8
str r0, [r4, #0x38]
pop {r3, r4, r5, pc}
_0220C3B6:
mov r1, #0
str r1, [r4, #0x34]
ldr r2, [r4, #0x38]
ldr r1, _0220C3DC ; =0xFFFFBFFF
and r1, r2
str r1, [r4, #0x38]
bl DestroySysTask
add sp, #8
pop {r3, r4, r5, pc}
_0220C3CA:
bl GF_AssertFail
_0220C3CE:
add sp, #8
pop {r3, r4, r5, pc}
nop
_0220C3D4: .word 0xFFFFC03F
_0220C3D8: .word 0xFE7FFFFF
_0220C3DC: .word 0xFFFFBFFF
thumb_func_end ov96_0220C15C
thumb_func_start ov96_0220C3E0
ov96_0220C3E0: ; 0x0220C3E0
push {r4, lr}
add r4, r0, #0
ldr r1, [r4, #0x38]
mov r0, #0x3c
bic r1, r0
ldr r0, _0220C404 ; =0xFFFFC03F
mov r2, #1
and r1, r0
mov r0, #1
lsl r0, r0, #0xe
orr r0, r1
str r0, [r4, #0x38]
ldr r0, _0220C408 ; =ov96_0220C15C
add r1, r4, #0
bl CreateSysTask
str r0, [r4, #0x34]
pop {r4, pc}
.balign 4, 0
_0220C404: .word 0xFFFFC03F
_0220C408: .word ov96_0220C15C
thumb_func_end ov96_0220C3E0
thumb_func_start ov96_0220C40C
ov96_0220C40C: ; 0x0220C40C
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5]
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
add r6, r0, #0
ldr r0, [r5, #0x38]
lsl r1, r0, #5
lsr r1, r1, #0x1e
lsl r4, r1, #2
lsl r0, r0, #7
lsr r1, r0, #0x1e
ldr r0, [r6, r4]
lsl r0, r0, #6
lsr r0, r0, #0x1e
cmp r1, r0
bne _0220C43E
add r0, r5, #0
add r1, r6, r4
bl ov96_0220C004
b _0220C44E
_0220C43E:
ldr r0, [r5, #0x24]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r5, #0x28]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
_0220C44E:
add r0, r5, #0
add r1, r6, r4
bl ov96_0220C0DC
ldr r2, [r5, #0x38]
lsl r0, r2, #0x11
lsr r0, r0, #0x1f
bne _0220C48E
ldr r0, [r6, r4]
lsl r0, r0, #6
lsr r1, r0, #0x1e
lsl r0, r2, #7
lsr r0, r0, #0x1e
cmp r0, r1
beq _0220C48E
cmp r1, #3
blo _0220C474
bl GF_AssertFail
_0220C474:
ldr r0, [r5, #0x38]
mov r1, #3
bic r0, r1
ldr r1, [r6, r4]
lsl r1, r1, #6
lsr r2, r1, #0x1e
mov r1, #3
and r1, r2
orr r0, r1
str r0, [r5, #0x38]
add r0, r5, #0
bl ov96_0220C3E0
_0220C48E:
pop {r4, r5, r6, pc}
thumb_func_end ov96_0220C40C
thumb_func_start ov96_0220C490
ov96_0220C490: ; 0x0220C490
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
add r5, r0, #0
str r2, [sp]
mov r0, #0
add r7, r1, #0
add r1, r0, #0
add r2, sp, #4
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
str r0, [r2]
cmp r7, #0
bne _0220C4B6
bl GF_AssertFail
_0220C4B6:
ldr r0, [sp]
cmp r0, #0
bne _0220C4C0
bl GF_AssertFail
_0220C4C0:
ldr r1, _0220C540 ; =0x00002712
mov r3, #2
add r0, r1, #1
str r0, [sp, #0x1c]
mov r0, #1
str r0, [sp, #0x14]
str r1, [sp, #0x18]
str r1, [sp, #0x20]
str r1, [sp, #0x24]
mov r1, #0x88
add r0, sp, #4
strh r1, [r0]
mov r1, #0x70
strh r1, [r0, #2]
mov r0, #0x1b
str r0, [sp, #0xc]
str r3, [sp, #0x30]
ldr r1, [sp]
add r0, r7, #0
add r2, sp, #4
lsl r3, r3, #0x13
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
mov r1, #1
str r0, [r5]
bl UnkImageStruct_SetSpriteAnimActiveFlag
mov r4, #0
mov r6, #0x30
_0220C4FA:
ldr r0, _0220C544 ; =0x00002713
mov r3, #1
add r0, r4, r0
str r0, [sp, #0x18]
ldr r0, _0220C548 ; =0x00002714
mov r1, #0x28
add r0, r4, r0
str r0, [sp, #0x1c]
ldr r0, _0220C540 ; =0x00002712
add r2, sp, #4
str r0, [sp, #0x20]
str r0, [sp, #0x24]
mov r0, #2
str r0, [sp, #0x14]
add r0, sp, #4
strh r1, [r0]
strh r6, [r0, #2]
add r0, r4, #1
str r0, [sp, #0xc]
ldr r1, [sp]
add r0, r7, #0
lsl r3, r3, #0x14
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
mov r1, #1
str r0, [r5, #0x14]
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r4, r4, #1
add r6, #0x58
add r5, r5, #4
cmp r4, #2
blt _0220C4FA
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0220C540: .word 0x00002712
_0220C544: .word 0x00002713
_0220C548: .word 0x00002714
thumb_func_end ov96_0220C490
thumb_func_start ov96_0220C54C
ov96_0220C54C: ; 0x0220C54C
push {r4, r5, lr}
sub sp, #0x14
lsl r1, r1, #2
add r1, r0, r1
ldr r4, [r0]
ldr r5, [r1, #0x10]
add r1, r2, #0
add r2, r3, #0
ldr r0, [r0, #0xc]
add r3, sp, #4
bl ov96_021E6168
ldr r2, [sp, #0x20]
add r0, r5, #0
add r1, sp, #4
mov r3, #0
str r4, [sp]
bl ov96_021EEBE4
add sp, #0x14
pop {r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_0220C54C
thumb_func_start ov96_0220C578
ov96_0220C578: ; 0x0220C578
push {r3, r4, r5, r6, lr}
sub sp, #4
add r4, r1, #0
add r5, r0, #0
cmp r4, #2
beq _0220C58A
cmp r4, #3
beq _0220C5C8
b _0220C648
_0220C58A:
ldr r0, [r5, #0xc]
bl ov96_021E5F24
mov r3, #1
str r3, [sp]
add r1, r0, #0
ldr r2, [r5, #0x40]
lsl r1, r1, #0x18
lsl r2, r2, #0x1e
lsr r2, r2, #0x1e
lsl r2, r2, #0x18
ldr r0, [r5, #0xc]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_021E8228
ldr r1, [r5, #0x40]
add r0, r5, #0
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r3, r1, #2
add r0, #0x34
ldr r2, [r0, r3]
ldr r1, _0220C668 ; =0xFC03FFFF
and r1, r2
str r1, [r0, r3]
ldr r1, [r5, #0x40]
ldr r0, _0220C66C ; =0xFFE003FF
and r0, r1
str r0, [r5, #0x40]
b _0220C648
_0220C5C8:
ldr r0, [r5, #0xc]
bl ov96_021E5F24
add r1, r0, #0
mov r0, #1
str r0, [sp]
ldr r2, [r5, #0x40]
lsl r1, r1, #0x18
lsl r2, r2, #0x1e
lsr r2, r2, #0x1e
lsl r2, r2, #0x18
ldr r0, [r5, #0xc]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #7
bl ov96_021E8228
ldr r1, [r5, #0x44]
ldr r0, _0220C670 ; =0x00FFFFFF
and r0, r1
str r0, [r5, #0x44]
lsl r0, r0, #0x18
lsr r2, r0, #0x18
sub r2, #0xa
cmp r2, #0x64
ble _0220C600
mov r2, #0x64
b _0220C606
_0220C600:
cmp r2, #0
bge _0220C606
mov r2, #0
_0220C606:
ldr r1, [r5, #0x44]
mov r0, #0xff
bic r1, r0
lsl r0, r2, #0x18
lsr r0, r0, #0x18
orr r0, r1
str r0, [r5, #0x44]
lsl r0, r0, #0x17
lsr r0, r0, #0x1f
beq _0220C620
add r0, r5, #0
bl ov96_0220C7FC
_0220C620:
ldr r3, [r5, #0x40]
add r1, r5, #0
add r0, r3, #0
lsl r3, r3, #0x1e
lsr r3, r3, #0x1e
mov r2, #3
add r6, r3, #1
mov r3, #3
bic r0, r2
and r3, r6
orr r0, r3
str r0, [r5, #0x40]
lsl r0, r0, #0x1e
lsr r0, r0, #0x1e
add r1, #0x40
cmp r0, #3
blo _0220C648
ldr r0, [r1]
bic r0, r2
str r0, [r1]
_0220C648:
ldr r1, [r5, #0x40]
ldr r0, _0220C674 ; =0xFFFFFC03
and r1, r0
lsl r0, r4, #0x18
lsr r0, r0, #0x16
orr r0, r1
str r0, [r5, #0x40]
ldr r1, [r5, #0x44]
ldr r0, _0220C678 ; =0xFFFF03FF
and r1, r0
ldr r0, _0220C67C ; =0xFF00FFFF
and r0, r1
str r0, [r5, #0x44]
add sp, #4
pop {r3, r4, r5, r6, pc}
nop
_0220C668: .word 0xFC03FFFF
_0220C66C: .word 0xFFE003FF
_0220C670: .word 0x00FFFFFF
_0220C674: .word 0xFFFFFC03
_0220C678: .word 0xFFFF03FF
_0220C67C: .word 0xFF00FFFF
thumb_func_end ov96_0220C578
thumb_func_start ov96_0220C680
ov96_0220C680: ; 0x0220C680
push {r4, lr}
ldr r3, [r0, #0x40]
lsl r1, r3, #0x16
lsr r1, r1, #0x18
cmp r1, #3
beq _0220C70C
ldr r1, [r0, #0x44]
lsl r2, r1, #0x17
lsr r2, r2, #0x1f
beq _0220C6B0
ldr r1, _0220C710 ; =0x001FFFFF
add r2, r3, #0
and r2, r1
lsr r1, r3, #0x15
add r1, r1, #1
lsl r1, r1, #0x15
orr r1, r2
str r1, [r0, #0x40]
lsr r1, r1, #0x15
cmp r1, #0x5a
blo _0220C70C
bl ov96_0220C7FC
pop {r4, pc}
_0220C6B0:
lsl r1, r1, #0x18
lsr r1, r1, #0x18
beq _0220C704
add r1, r3, #0
ldr r4, _0220C710 ; =0x001FFFFF
lsr r3, r3, #0x15
add r3, r3, #1
add r2, r0, #0
and r1, r4
lsl r3, r3, #0x15
orr r1, r3
str r1, [r0, #0x40]
lsr r1, r1, #0x15
add r2, #0x40
cmp r1, #2
blo _0220C6EC
ldr r1, [r2]
and r1, r4
str r1, [r2]
ldr r3, [r0, #0x44]
mov r2, #0xff
add r1, r3, #0
bic r1, r2
lsl r2, r3, #0x18
lsr r2, r2, #0x18
sub r2, r2, #1
lsl r2, r2, #0x18
lsr r2, r2, #0x18
orr r1, r2
str r1, [r0, #0x44]
_0220C6EC:
ldr r1, [r0, #0x44]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
cmp r1, #0x32
blo _0220C70C
lsl r1, r1, #0x10
ldr r0, [r0, #0x14]
lsr r1, r1, #0x10
mov r2, #1
bl ov96_0220C8B8
pop {r4, pc}
_0220C704:
ldr r0, [r0, #0x14]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
_0220C70C:
pop {r4, pc}
nop
_0220C710: .word 0x001FFFFF
thumb_func_end ov96_0220C680
thumb_func_start ov96_0220C714
ov96_0220C714: ; 0x0220C714
push {r3, r4, r5, lr}
add r4, r0, #0
ldr r0, [r4, #0x44]
add r5, r1, #0
lsl r0, r0, #0x17
lsr r0, r0, #0x1f
beq _0220C726
bl GF_AssertFail
_0220C726:
cmp r5, #0
beq _0220C740
ldr r2, [r4, #0x44]
mov r1, #0xff
add r0, r2, #0
bic r0, r1
lsl r1, r2, #0x18
lsr r1, r1, #0x18
add r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
orr r0, r1
str r0, [r4, #0x44]
_0220C740:
ldr r1, [r4, #0x44]
lsl r0, r1, #0x18
lsr r0, r0, #0x18
cmp r0, #0x64
bls _0220C754
mov r0, #0xff
bic r1, r0
mov r0, #0x64
orr r0, r1
str r0, [r4, #0x44]
_0220C754:
ldr r0, [r4, #0x44]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #0x64
blo _0220C764
add r0, r4, #0
bl ov96_0220C7C4
_0220C764:
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_0220C714
thumb_func_start ov96_0220C768
ov96_0220C768: ; 0x0220C768
push {r4, lr}
add r4, r0, #0
add r0, r1, #0
add r1, r2, #0
bl FX_Div
mov r1, #0x64
add r2, r0, #0
mul r2, r1
asr r0, r2, #0xc
cmp r0, #0x28
bgt _0220C7BE
sub r0, r1, r0
lsl r0, r0, #1
cmp r0, #0
ble _0220C79A
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
mov r0, #0x3f
lsl r0, r0, #0x18
bl _fadd
b _0220C7A8
_0220C79A:
lsl r0, r0, #0xc
bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
bl _fsub
_0220C7A8:
bl _ffix
mov r1, #0x64
bl _s32_div_f
add r1, r0, #0
add r0, r4, #0
bl sub_0200DC8C
mov r0, #1
pop {r4, pc}
_0220C7BE:
mov r0, #0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_0220C768
thumb_func_start ov96_0220C7C4
ov96_0220C7C4: ; 0x0220C7C4
push {r4, lr}
add r4, r0, #0
mov r0, #1
ldr r1, [r4, #0x44]
lsl r0, r0, #8
orr r0, r1
str r0, [r4, #0x44]
ldr r1, [r4, #0x40]
ldr r0, _0220C7F4 ; =0x001FFFFF
and r0, r1
str r0, [r4, #0x40]
ldr r0, [r4, #0x14]
mov r1, #0x10
bl UnkImageStruct_SetSpriteAnimSeqNo
mov r1, #1
ldr r0, [r4, #0x14]
lsl r1, r1, #0xc
bl sub_0200DC8C
ldr r0, _0220C7F8 ; =0x000008BF
bl PlaySE
pop {r4, pc}
.balign 4, 0
_0220C7F4: .word 0x001FFFFF
_0220C7F8: .word 0x000008BF
thumb_func_end ov96_0220C7C4
thumb_func_start ov96_0220C7FC
ov96_0220C7FC: ; 0x0220C7FC
push {r4, lr}
ldr r2, [r0, #0x44]
ldr r1, _0220C83C ; =0xFFFFFEFF
ldr r3, _0220C840 ; =0xFC03FFFF
and r2, r1
str r2, [r0, #0x44]
ldr r2, [r0, #0x40]
lsr r1, r1, #0xb
and r1, r2
str r1, [r0, #0x40]
ldr r2, [r0, #0x44]
mov r1, #0xff
bic r2, r1
str r2, [r0, #0x44]
ldr r1, [r0, #0x40]
add r2, r0, #0
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
add r2, #0x34
lsl r1, r1, #2
ldr r4, [r2, r1]
and r4, r3
mov r3, #0xa
lsl r3, r3, #0x12
orr r3, r4
str r3, [r2, r1]
ldr r0, [r0, #0x14]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
pop {r4, pc}
nop
_0220C83C: .word 0xFFFFFEFF
_0220C840: .word 0xFC03FFFF
thumb_func_end ov96_0220C7FC
thumb_func_start ov96_0220C844
ov96_0220C844: ; 0x0220C844
push {r4, r5, r6, r7, lr}
sub sp, #0xc
mov r5, #0
str r0, [sp]
str r1, [sp, #4]
str r5, [sp, #8]
mov r7, #0x48
_0220C852:
ldr r1, [sp, #8]
ldr r0, [sp, #4]
cmp r1, r0
beq _0220C8A8
mov r6, #0
_0220C85C:
add r1, r6, r5
lsl r1, r1, #0x18
ldr r0, [sp]
lsr r1, r1, #0x18
bl ov96_021EAA04
add r4, r0, #0
mov r1, #0x20
bl ov96_021EABA8
add r0, r4, #0
add r1, r7, #0
mov r2, #0x30
bl ov96_021EAF94
add r0, r4, #0
mov r1, #2
bl ov96_021EAC0C
cmp r6, #0
bne _0220C88A
mov r1, #1
b _0220C88C
_0220C88A:
mov r1, #0
_0220C88C:
lsl r1, r1, #0x18
add r0, r4, #0
lsr r1, r1, #0x18
bl ov96_021EAB38
add r0, r4, #0
mov r1, #0
bl ov96_021EAB74
add r6, r6, #1
cmp r6, #3
blt _0220C85C
add r5, r5, #3
add r7, #0x40
_0220C8A8:
ldr r0, [sp, #8]
add r0, r0, #1
str r0, [sp, #8]
cmp r0, #4
blt _0220C852
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0220C844
thumb_func_start ov96_0220C8B8
ov96_0220C8B8: ; 0x0220C8B8
push {r3, r4, r5, lr}
add r4, r2, #0
add r5, r0, #0
mov r2, #0
sub r1, #0x32
beq _0220C8CE
lsl r0, r1, #0xc
mov r1, #0xa
bl _s32_div_f
add r2, r0, #0
_0220C8CE:
ldr r0, _0220C908 ; =0x0000099A
cmp r2, r0
bge _0220C8D6
add r2, r0, #0
_0220C8D6:
add r0, r5, #0
add r1, r2, #0
bl sub_0200DC8C
add r0, r5, #0
mov r1, #0x11
bl UnkImageStruct_TryChangeSpriteAnimSeqNo
cmp r4, #0
beq _0220C8FC
add r0, r5, #0
bl UnkImageStruct_GetSpriteVisibleFlag
cmp r0, #0
bne _0220C8FC
mov r0, #0x23
lsl r0, r0, #6
bl PlaySE
_0220C8FC:
add r0, r5, #0
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
pop {r3, r4, r5, pc}
nop
_0220C908: .word 0x0000099A
thumb_func_end ov96_0220C8B8
thumb_func_start ov96_0220C90C
ov96_0220C90C: ; 0x0220C90C
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
lsl r6, r1, #2
add r0, r5, r6
add r7, r2, #0
add r4, r3, #0
mov r3, #1
ldr r0, [r0, #0x10]
add r1, r7, #0
add r2, r4, #0
lsl r3, r3, #0x14
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
add r0, r5, r6
sub r4, #0x18
lsl r2, r4, #0x10
mov r3, #1
ldr r0, [r0, #0x18]
add r1, r7, #0
asr r2, r2, #0x10
lsl r3, r3, #0x14
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_0220C90C
thumb_func_start ov96_0220C93C
ov96_0220C93C: ; 0x0220C93C
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
str r0, [sp]
bl ov96_021E5D34
add r5, r0, #0
add r0, r4, #0
mov r1, #0x78
bl AllocFromHeap
mov r1, #0
mov r2, #0x78
add r6, r0, #0
bl MI_CpuFill8
ldr r0, [sp]
str r4, [r6]
str r0, [r6, #4]
mov r0, #4
sub r0, r0, r5
str r0, [r6, #0x74]
cmp r0, #3
bls _0220C96E
bl GF_AssertFail
_0220C96E:
ldr r0, [r6, #0x74]
mov r7, #0
cmp r0, #0
bls _0220C992
add r4, r6, #0
add r4, #8
_0220C97A:
lsl r1, r5, #0x18
ldr r2, [sp]
add r0, r4, #0
lsr r1, r1, #0x18
bl ov96_0220C9F4
ldr r0, [r6, #0x74]
add r7, r7, #1
add r5, r5, #1
add r4, #0x24
cmp r7, r0
blo _0220C97A
_0220C992:
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0220C93C
thumb_func_start ov96_0220C998
ov96_0220C998: ; 0x0220C998
ldr r3, _0220C99C ; =FreeToHeap
bx r3
.balign 4, 0
_0220C99C: .word FreeToHeap
thumb_func_end ov96_0220C998
thumb_func_start ov96_0220C9A0
ov96_0220C9A0: ; 0x0220C9A0
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5, #0x74]
mov r6, #0
cmp r0, #0
bls _0220C9CA
add r4, r5, #0
add r4, #8
_0220C9B0:
add r0, r4, #0
bl ov96_0220CA28
add r1, r0, #0
ldr r2, [r5, #4]
add r0, r4, #0
bl ov96_0220CF50
ldr r0, [r5, #0x74]
add r6, r6, #1
add r4, #0x24
cmp r6, r0
blo _0220C9B0
_0220C9CA:
pop {r4, r5, r6, pc}
thumb_func_end ov96_0220C9A0
thumb_func_start ov96_0220C9CC
ov96_0220C9CC: ; 0x0220C9CC
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, [r5, #0x74]
mov r6, #0
cmp r0, #0
bls _0220C9F2
add r4, r5, #0
add r4, #8
add r7, r6, #0
_0220C9DE:
ldr r2, [r5, #4]
add r0, r4, #0
add r1, r7, #0
bl ov96_0220CF50
ldr r0, [r5, #0x74]
add r6, r6, #1
add r4, #0x24
cmp r6, r0
blo _0220C9DE
_0220C9F2:
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_0220C9CC
thumb_func_start ov96_0220C9F4
ov96_0220C9F4: ; 0x0220C9F4
push {r4, r5, r6, lr}
add r4, r1, #0
add r6, r2, #0
add r5, r0, #0
mov r1, #0
mov r2, #0x24
bl MI_CpuFill8
str r6, [r5]
ldr r1, [r5, #0x18]
ldr r0, _0220CA24 ; =0x3FFFFFFF
add r2, r6, #0
and r1, r0
lsl r0, r4, #0x1e
orr r0, r1
str r0, [r5, #0x18]
mov r0, #0x64
str r0, [r5, #0x10]
add r0, r5, #4
add r1, r4, #0
bl ov96_0220D200
pop {r4, r5, r6, pc}
nop
_0220CA24: .word 0x3FFFFFFF
thumb_func_end ov96_0220C9F4
thumb_func_start ov96_0220CA28
ov96_0220CA28: ; 0x0220CA28
push {r3, r4, r5, lr}
add r4, r0, #0
ldr r5, _0220CABC ; =0x00000000
bne _0220CA34
bl GF_AssertFail
_0220CA34:
ldr r0, [r4, #0x14]
lsl r0, r0, #2
lsr r0, r0, #0x1a
cmp r0, #3
bhi _0220CA7A
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0220CA4A: ; jump table
.short _0220CA52 - _0220CA4A - 2 ; case 0
.short _0220CA5C - _0220CA4A - 2 ; case 1
.short _0220CA66 - _0220CA4A - 2 ; case 2
.short _0220CA70 - _0220CA4A - 2 ; case 3
_0220CA52:
add r0, r4, #0
bl ov96_0220CAC4
add r5, r0, #0
b _0220CA7E
_0220CA5C:
add r0, r4, #0
bl ov96_0220CBC0
add r5, r0, #0
b _0220CA7E
_0220CA66:
add r0, r4, #0
bl ov96_0220CC18
add r5, r0, #0
b _0220CA7E
_0220CA70:
add r0, r4, #0
bl ov96_0220CBEC
add r5, r0, #0
b _0220CA7E
_0220CA7A:
bl GF_AssertFail
_0220CA7E:
ldr r0, [r4, #0x14]
lsl r0, r0, #2
lsr r0, r0, #0x1a
cmp r0, #3
beq _0220CA8E
add r0, r4, #0
bl ov96_0220D07C
_0220CA8E:
ldr r2, [r4, #0x14]
ldr r1, [r4, #0x18]
lsr r2, r2, #0x1e
lsl r1, r1, #0x15
lsl r2, r2, #0x18
add r0, r4, #4
lsr r1, r1, #0x15
lsr r2, r2, #0x18
bl ov96_0220D2AC
ldr r2, [r4, #0x18]
ldr r1, _0220CAC0 ; =0xFFFFF800
add r0, r2, #0
lsl r2, r2, #0x15
lsr r2, r2, #0x15
and r0, r1
add r2, r2, #1
lsr r1, r1, #0x15
and r1, r2
orr r0, r1
str r0, [r4, #0x18]
add r0, r5, #0
pop {r3, r4, r5, pc}
.balign 4, 0
_0220CABC: .word 0x00000000
_0220CAC0: .word 0xFFFFF800
thumb_func_end ov96_0220CA28
thumb_func_start ov96_0220CAC4
ov96_0220CAC4: ; 0x0220CAC4
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r2, [r5, #0x14]
ldr r1, _0220CBB4 ; =0xFFFF00FF
mov r4, #0
and r1, r2
lsl r2, r2, #0x10
lsr r2, r2, #0x18
add r2, r2, #1
lsl r2, r2, #0x18
lsr r2, r2, #0x10
orr r1, r2
str r1, [r5, #0x14]
lsl r1, r1, #0x10
lsr r2, r1, #0x18
ldr r1, [r5, #0x18]
lsl r1, r1, #2
lsr r1, r1, #0x18
cmp r2, r1
blo _0220CB7E
bl ov96_0220CD00
cmp r0, #0
beq _0220CB20
add r0, r5, #0
bl ov96_0220D0F8
mov r0, #1
str r0, [sp]
ldr r1, [r5, #0x18]
ldr r2, [r5, #0x14]
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
ldr r0, [r5]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #7
bl ov96_021E8228
add r0, r5, #0
mov r1, #1
bl ov96_0220CD84
b _0220CB5C
_0220CB20:
add r0, r5, #0
bl ov96_0220CCBC
cmp r0, #0
beq _0220CB2C
add r4, r4, #2
_0220CB2C:
ldr r0, [r5, #0x1c]
lsl r1, r0, #0x17
lsr r1, r1, #0x1f
beq _0220CB52
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #2
blo _0220CB5C
add r0, r5, #0
bl ov96_0220CC38
cmp r0, #0
beq _0220CB5C
mov r1, #2
add r0, r5, #0
and r1, r4
bl ov96_0220CE04
b _0220CB5C
_0220CB52:
mov r1, #2
add r0, r5, #0
and r1, r4
bl ov96_0220CE04
_0220CB5C:
ldr r1, [r5, #0x14]
ldr r0, _0220CBB4 ; =0xFFFF00FF
and r0, r1
str r0, [r5, #0x14]
bl MTRandom
mov r1, #3
bl _u32_div_f
ldr r2, [r5, #0x18]
ldr r0, _0220CBB8 ; =0xC03FFFFF
and r2, r0
add r0, r1, #4
lsl r0, r0, #0x18
lsr r0, r0, #2
orr r0, r2
str r0, [r5, #0x18]
_0220CB7E:
ldr r3, [r5, #0x1c]
lsl r0, r3, #0x17
lsr r0, r0, #0x1f
beq _0220CBB0
add r0, r3, #0
lsl r3, r3, #0x18
lsr r3, r3, #0x18
add r3, r3, #1
mov r2, #0xff
lsl r3, r3, #0x18
bic r0, r2
lsr r3, r3, #0x18
orr r0, r3
str r0, [r5, #0x1c]
lsl r0, r0, #0x18
add r1, r5, #0
lsr r0, r0, #0x18
add r1, #0x1c
cmp r0, #0xa
blo _0220CBB0
ldr r3, [r1]
ldr r0, _0220CBBC ; =0xFFFFFEFF
bic r3, r2
and r0, r3
str r0, [r1]
_0220CBB0:
add r0, r4, #0
pop {r3, r4, r5, pc}
.balign 4, 0
_0220CBB4: .word 0xFFFF00FF
_0220CBB8: .word 0xC03FFFFF
_0220CBBC: .word 0xFFFFFEFF
thumb_func_end ov96_0220CAC4
thumb_func_start ov96_0220CBC0
ov96_0220CBC0: ; 0x0220CBC0
push {r3, lr}
ldr r2, [r0, #0x14]
ldr r1, _0220CBE8 ; =0xFFFF00FF
and r1, r2
lsl r2, r2, #0x10
lsr r2, r2, #0x18
add r2, r2, #1
lsl r2, r2, #0x18
lsr r2, r2, #0x10
orr r1, r2
str r1, [r0, #0x14]
lsl r1, r1, #0x10
lsr r1, r1, #0x18
cmp r1, #0x1a
blo _0220CBE4
mov r1, #0
bl ov96_0220CD84
_0220CBE4:
mov r0, #0
pop {r3, pc}
.balign 4, 0
_0220CBE8: .word 0xFFFF00FF
thumb_func_end ov96_0220CBC0
thumb_func_start ov96_0220CBEC
ov96_0220CBEC: ; 0x0220CBEC
push {r3, lr}
ldr r2, [r0, #0x14]
ldr r1, _0220CC14 ; =0xFFFF00FF
and r1, r2
lsl r2, r2, #0x10
lsr r2, r2, #0x18
add r2, r2, #1
lsl r2, r2, #0x18
lsr r2, r2, #0x10
orr r1, r2
str r1, [r0, #0x14]
lsl r1, r1, #0x10
lsr r1, r1, #0x18
cmp r1, #0x2a
blo _0220CC10
mov r1, #0
bl ov96_0220CD84
_0220CC10:
mov r0, #0
pop {r3, pc}
.balign 4, 0
_0220CC14: .word 0xFFFF00FF
thumb_func_end ov96_0220CBEC
thumb_func_start ov96_0220CC18
ov96_0220CC18: ; 0x0220CC18
push {r3, lr}
ldr r1, [r0, #0x14]
lsr r1, r1, #0x1e
lsl r1, r1, #2
add r1, r0, r1
ldr r1, [r1, #4]
lsl r1, r1, #6
lsr r1, r1, #0x18
cmp r1, #8
blo _0220CC32
mov r1, #0
bl ov96_0220CD84
_0220CC32:
mov r0, #0
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_0220CC18
thumb_func_start ov96_0220CC38
ov96_0220CC38: ; 0x0220CC38
push {r4, r5, r6, lr}
add r5, r0, #0
mov r4, #0
bl MTRandom
mov r1, #0x64
bl _u32_div_f
lsl r0, r1, #0x18
lsr r6, r0, #0x18
cmp r5, #0
bne _0220CC54
bl GF_AssertFail
_0220CC54:
ldr r2, [r5, #0x14]
ldr r1, _0220CCAC ; =ov96_0221CE34
lsr r2, r2, #0x1e
lsl r2, r2, #2
add r2, r5, r2
ldr r2, [r2, #4]
mov r0, #0
lsl r2, r2, #6
lsr r3, r2, #0x18
_0220CC66:
ldr r2, [r1]
cmp r3, r2
blo _0220CC76
lsl r1, r0, #2
ldr r0, _0220CCB0 ; =ov96_0221CE48
ldr r0, [r0, r1]
add r4, r4, r0
b _0220CC7E
_0220CC76:
add r0, r0, #1
add r1, r1, #4
cmp r0, #5
blt _0220CC66
_0220CC7E:
ldr r1, [r5, #0x14]
ldr r2, _0220CCB4 ; =ov96_0221CE14
lsl r1, r1, #8
mov r0, #0
lsr r3, r1, #0x18
_0220CC88:
ldr r1, [r2]
cmp r3, r1
blo _0220CC98
lsl r1, r0, #2
ldr r0, _0220CCB8 ; =ov96_0221CE24
ldr r0, [r0, r1]
add r4, r4, r0
b _0220CCA0
_0220CC98:
add r0, r0, #1
add r2, r2, #4
cmp r0, #4
blt _0220CC88
_0220CCA0:
cmp r6, r4
bge _0220CCA8
mov r0, #1
pop {r4, r5, r6, pc}
_0220CCA8:
mov r0, #0
pop {r4, r5, r6, pc}
.balign 4, 0
_0220CCAC: .word ov96_0221CE34
_0220CCB0: .word ov96_0221CE48
_0220CCB4: .word ov96_0221CE14
_0220CCB8: .word ov96_0221CE24
thumb_func_end ov96_0220CC38
thumb_func_start ov96_0220CCBC
ov96_0220CCBC: ; 0x0220CCBC
push {r4, r5, r6, lr}
add r5, r0, #0
mov r6, #0
bl MTRandom
mov r1, #0x64
bl _u32_div_f
lsl r0, r1, #0x18
lsr r4, r0, #0x18
ldr r0, [r5, #0x14]
lsr r0, r0, #0x1e
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #4]
lsr r0, r0, #0x1a
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #3
blo _0220CCE8
bl GF_AssertFail
_0220CCE8:
ldr r0, _0220CCFC ; =ov96_0221CE08
lsl r1, r5, #2
ldr r0, [r0, r1]
add r0, r6, r0
cmp r4, r0
bge _0220CCF8
mov r0, #1
pop {r4, r5, r6, pc}
_0220CCF8:
mov r0, #0
pop {r4, r5, r6, pc}
.balign 4, 0
_0220CCFC: .word ov96_0221CE08
thumb_func_end ov96_0220CCBC
thumb_func_start ov96_0220CD00
ov96_0220CD00: ; 0x0220CD00
push {r4, r5, r6, lr}
add r5, r0, #0
mov r4, #0
bl MTRandom
mov r1, #0x64
bl _u32_div_f
lsl r0, r1, #0x18
lsr r6, r0, #0x18
cmp r5, #0
bne _0220CD1C
bl GF_AssertFail
_0220CD1C:
ldr r2, [r5, #0x14]
ldr r1, _0220CD74 ; =ov96_0221CDF4
lsr r2, r2, #0x1e
lsl r2, r2, #2
add r2, r5, r2
ldr r2, [r2, #4]
mov r0, #0
lsl r2, r2, #6
lsr r3, r2, #0x18
_0220CD2E:
ldrh r2, [r1]
cmp r3, r2
bhs _0220CD3E
lsl r1, r0, #1
ldr r0, _0220CD78 ; =ov96_0221CDFE
ldrsh r0, [r0, r1]
add r4, r4, r0
b _0220CD46
_0220CD3E:
add r0, r0, #1
add r1, r1, #2
cmp r0, #5
blt _0220CD2E
_0220CD46:
ldr r1, [r5, #0x14]
ldr r2, _0220CD7C ; =ov96_0221CDE8
lsl r1, r1, #8
mov r0, #0
lsr r3, r1, #0x18
_0220CD50:
ldrh r1, [r2]
cmp r3, r1
blo _0220CD60
lsl r1, r0, #1
ldr r0, _0220CD80 ; =ov96_0221CDEE
ldrsh r0, [r0, r1]
add r4, r4, r0
b _0220CD68
_0220CD60:
add r0, r0, #1
add r2, r2, #2
cmp r0, #3
blt _0220CD50
_0220CD68:
cmp r6, r4
bge _0220CD70
mov r0, #1
pop {r4, r5, r6, pc}
_0220CD70:
mov r0, #0
pop {r4, r5, r6, pc}
.balign 4, 0
_0220CD74: .word ov96_0221CDF4
_0220CD78: .word ov96_0221CDFE
_0220CD7C: .word ov96_0221CDE8
_0220CD80: .word ov96_0221CDEE
thumb_func_end ov96_0220CD00
thumb_func_start ov96_0220CD84
ov96_0220CD84: ; 0x0220CD84
push {r4, r5}
cmp r1, #1
beq _0220CD98
cmp r1, #2
bne _0220CDDA
ldr r3, [r0, #0x18]
ldr r2, _0220CDF0 ; =0xFFFFF800
and r2, r3
str r2, [r0, #0x18]
b _0220CDDA
_0220CD98:
ldr r2, [r0, #0x14]
lsl r2, r2, #8
lsr r5, r2, #0x18
sub r5, #0xa
cmp r5, #0x64
ble _0220CDA8
mov r5, #0x64
b _0220CDAE
_0220CDA8:
cmp r5, #0
bge _0220CDAE
mov r5, #0
_0220CDAE:
ldr r4, [r0, #0x14]
ldr r3, _0220CDF4 ; =0xFF00FFFF
add r2, r0, #0
and r4, r3
lsl r3, r5, #0x18
lsr r3, r3, #8
orr r4, r3
add r5, r4, #0
ldr r3, _0220CDF8 ; =0x3FFFFFFF
lsr r4, r4, #0x1e
add r4, r4, #1
and r5, r3
lsl r4, r4, #0x1e
orr r4, r5
str r4, [r0, #0x14]
lsr r4, r4, #0x1e
add r2, #0x14
cmp r4, #3
blo _0220CDDA
ldr r4, [r2]
and r3, r4
str r3, [r2]
_0220CDDA:
ldr r3, [r0, #0x14]
ldr r2, _0220CDFC ; =0xC0FFFFFF
lsl r1, r1, #0x1a
and r2, r3
lsr r1, r1, #2
orr r2, r1
ldr r1, _0220CE00 ; =0xFFFF00FF
and r1, r2
str r1, [r0, #0x14]
pop {r4, r5}
bx lr
.balign 4, 0
_0220CDF0: .word 0xFFFFF800
_0220CDF4: .word 0xFF00FFFF
_0220CDF8: .word 0x3FFFFFFF
_0220CDFC: .word 0xC0FFFFFF
_0220CE00: .word 0xFFFF00FF
thumb_func_end ov96_0220CD84
thumb_func_start ov96_0220CE04
ov96_0220CE04: ; 0x0220CE04
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
str r1, [sp, #4]
ldr r6, _0220CF48 ; =0x00000000
bne _0220CE14
bl GF_AssertFail
_0220CE14:
add r0, r5, #4
str r0, [sp, #8]
ldr r0, [r5, #0x14]
ldr r1, [sp, #8]
lsr r0, r0, #0x1e
lsl r0, r0, #2
str r0, [sp, #0xc]
ldr r0, [r1, r0]
lsl r0, r0, #0x17
lsr r7, r0, #0x17
ldr r0, [sp, #4]
cmp r0, #0
beq _0220CE34
add r7, #0xa0
lsl r0, r7, #0x10
asr r7, r0, #0x10
_0220CE34:
add r4, r5, #0
add r4, #0x10
_0220CE38:
ldr r0, [r4]
sub r0, r0, r7
str r0, [r4]
ldr r0, [r5, #0x10]
cmp r0, #0
bgt _0220CE72
neg r0, r0
lsl r0, r0, #0x10
asr r7, r0, #0x10
mov r0, #0x64
str r0, [r5, #0x10]
mov r0, #1
str r0, [sp]
ldr r1, [r5, #0x18]
ldr r2, [r5, #0x14]
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
ldr r0, [r5]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #3
bl ov96_021E8228
add r0, r6, #1
lsl r0, r0, #0x10
lsr r6, r0, #0x10
b _0220CE38
_0220CE72:
ldr r2, [r5, #0x14]
mov r1, #0xff
add r0, r2, #0
bic r0, r1
lsl r1, r2, #0x18
lsr r1, r1, #0x18
add r1, r1, r6
lsl r1, r1, #0x18
lsr r1, r1, #0x18
orr r0, r1
str r0, [r5, #0x14]
ldr r1, [r5, #0x1c]
lsl r0, r1, #0x16
lsr r0, r0, #0x1f
bne _0220CEFC
lsl r0, r1, #0x17
lsr r0, r0, #0x1f
beq _0220CEF2
ldr r2, [sp, #8]
ldr r0, [sp, #0xc]
lsl r1, r1, #0x18
ldr r0, [r2, r0]
lsr r1, r1, #0x18
lsl r0, r0, #6
lsl r1, r1, #0x10
lsr r0, r0, #0x18
lsr r1, r1, #0x10
bl ov96_0220D33C
lsl r0, r0, #0x18
ldr r2, [sp, #8]
ldr r1, [sp, #0xc]
lsr r0, r0, #6
ldr r2, [r2, r1]
ldr r1, _0220CF4C ; =0xFC03FFFF
and r1, r2
add r2, r1, #0
orr r2, r0
ldr r1, [sp, #8]
ldr r0, [sp, #0xc]
str r2, [r1, r0]
ldr r0, [r1, r0]
lsl r0, r0, #6
lsr r0, r0, #0x18
bne _0220CEF2
mov r3, #1
str r3, [sp]
ldr r1, [r5, #0x18]
ldr r2, [r5, #0x14]
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
ldr r0, [r5]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_021E8228
add r0, r5, #0
mov r1, #2
bl ov96_0220CD84
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
_0220CEF2:
ldr r1, [sp, #4]
add r0, r5, #0
add r2, r6, #0
bl ov96_0220D014
_0220CEFC:
cmp r6, #0
beq _0220CF1A
ldr r0, [r5, #0x14]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _0220CF1A
mov r1, #0xa
bl _u32_div_f
cmp r1, #0
bne _0220CF1A
add r0, r5, #0
mov r1, #3
bl ov96_0220CD84
_0220CF1A:
mov r0, #1
ldr r1, [r5, #0x1c]
lsl r0, r0, #8
orr r1, r0
mov r0, #0xff
bic r1, r0
str r1, [r5, #0x1c]
mov r0, #1
str r0, [sp]
ldr r1, [r5, #0x18]
ldr r2, [r5, #0x14]
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
ldr r0, [r5]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #4
bl ov96_021E8228
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0220CF48: .word 0x00000000
_0220CF4C: .word 0xFC03FFFF
thumb_func_end ov96_0220CE04
thumb_func_start ov96_0220CF50
ov96_0220CF50: ; 0x0220CF50
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r0, r2, #0
add r4, r1, #0
bl ov96_021E5F54
ldr r1, [r5, #0x18]
add r0, #0x50
lsr r2, r1, #0x1e
mov r1, #0x28
mul r1, r2
add r0, r0, r1
bl ov96_021E8A20
ldr r7, [r5, #0x14]
mov r6, #0xff
lsr r1, r7, #0x1e
lsl r2, r1, #2
ldr r1, [r0]
add r3, r5, #4
bic r1, r6
lsl r6, r7, #0x18
lsr r6, r6, #0x18
lsl r6, r6, #0x18
lsr r6, r6, #0x18
orr r6, r1
str r6, [r0]
ldr r2, [r3, r2]
ldr r1, _0220CFFC ; =0xFFFF00FF
lsl r2, r2, #6
lsr r2, r2, #0x18
lsl r2, r2, #0x18
and r1, r6
lsr r2, r2, #0x10
orr r2, r1
ldr r1, _0220D000 ; =0xFF00FFFF
str r2, [r0]
and r1, r2
ldr r2, [r5, #0x14]
lsl r2, r2, #8
lsr r2, r2, #0x18
lsl r2, r2, #0x18
lsr r2, r2, #8
orr r2, r1
ldr r1, _0220D004 ; =0xFBFFFFFF
str r2, [r0]
and r1, r2
ldr r2, [r5, #0x1c]
lsl r2, r2, #0x16
lsr r2, r2, #0x1f
lsl r2, r2, #0x1f
lsr r2, r2, #5
orr r2, r1
ldr r1, _0220D008 ; =0xF7FFFFFF
and r2, r1
mov r1, #2
and r1, r4
lsl r1, r1, #0x1f
lsr r1, r1, #4
orr r2, r1
ldr r1, _0220D00C ; =0xFCFFFFFF
str r2, [r0]
and r2, r1
ldr r1, [r5, #0x14]
lsr r1, r1, #0x1e
lsl r1, r1, #0x1e
lsr r1, r1, #6
orr r1, r2
str r1, [r0]
ldr r1, [r5, #0x14]
lsl r1, r1, #2
lsr r1, r1, #0x1a
cmp r1, #1
bne _0220CFE8
mov r3, #1
b _0220CFEA
_0220CFE8:
mov r3, #0
_0220CFEA:
ldr r2, [r0]
ldr r1, _0220D010 ; =0xEFFFFFFF
and r2, r1
lsl r1, r3, #0x1f
lsr r1, r1, #3
orr r1, r2
str r1, [r0]
pop {r3, r4, r5, r6, r7, pc}
nop
_0220CFFC: .word 0xFFFF00FF
_0220D000: .word 0xFF00FFFF
_0220D004: .word 0xFBFFFFFF
_0220D008: .word 0xF7FFFFFF
_0220D00C: .word 0xFCFFFFFF
_0220D010: .word 0xEFFFFFFF
thumb_func_end ov96_0220CF50
thumb_func_start ov96_0220D014
ov96_0220D014: ; 0x0220D014
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #0x1c]
add r4, r1, #0
lsl r0, r0, #0x16
lsr r0, r0, #0x1f
beq _0220D026
bl GF_AssertFail
_0220D026:
cmp r4, #0
beq _0220D040
ldr r1, [r5, #0x14]
ldr r0, _0220D074 ; =0xFF00FFFF
add r2, r1, #0
and r2, r0
lsl r0, r1, #8
lsr r0, r0, #0x18
add r0, #0x1e
lsl r0, r0, #0x18
lsr r0, r0, #8
orr r0, r2
str r0, [r5, #0x14]
_0220D040:
ldr r1, [r5, #0x14]
lsl r0, r1, #8
lsr r0, r0, #0x18
cmp r0, #0x64
bls _0220D056
ldr r0, _0220D074 ; =0xFF00FFFF
and r1, r0
mov r0, #0x19
lsl r0, r0, #0x12
orr r0, r1
str r0, [r5, #0x14]
_0220D056:
ldr r0, [r5, #0x14]
lsl r0, r0, #8
lsr r0, r0, #0x18
cmp r0, #0x64
blo _0220D072
mov r0, #2
ldr r1, [r5, #0x1c]
lsl r0, r0, #8
orr r0, r1
str r0, [r5, #0x1c]
ldr r1, [r5, #0x18]
ldr r0, _0220D078 ; =0xFFC007FF
and r0, r1
str r0, [r5, #0x18]
_0220D072:
pop {r3, r4, r5, pc}
.balign 4, 0
_0220D074: .word 0xFF00FFFF
_0220D078: .word 0xFFC007FF
thumb_func_end ov96_0220D014
thumb_func_start ov96_0220D07C
ov96_0220D07C: ; 0x0220D07C
push {r4, lr}
ldr r1, [r0, #0x1c]
lsl r1, r1, #0x16
lsr r1, r1, #0x1f
beq _0220D0A8
ldr r2, [r0, #0x18]
ldr r1, _0220D0F0 ; =0xFFC007FF
and r1, r2
lsl r2, r2, #0xa
lsr r2, r2, #0x15
add r2, r2, #1
lsl r2, r2, #0x15
lsr r2, r2, #0xa
orr r1, r2
str r1, [r0, #0x18]
lsl r1, r1, #0xa
lsr r1, r1, #0x15
cmp r1, #0x5a
blo _0220D0EE
bl ov96_0220D0F8
pop {r4, pc}
_0220D0A8:
ldr r1, [r0, #0x14]
lsl r1, r1, #8
lsr r1, r1, #0x18
beq _0220D0EE
ldr r4, [r0, #0x18]
add r2, r0, #0
add r1, r4, #0
lsl r4, r4, #0xa
lsr r4, r4, #0x15
ldr r3, _0220D0F0 ; =0xFFC007FF
add r4, r4, #1
lsl r4, r4, #0x15
and r1, r3
lsr r4, r4, #0xa
orr r1, r4
str r1, [r0, #0x18]
lsl r1, r1, #0xa
lsr r1, r1, #0x15
add r2, #0x18
cmp r1, #2
blo _0220D0EE
ldr r1, [r2]
and r1, r3
str r1, [r2]
ldr r2, [r0, #0x14]
ldr r1, _0220D0F4 ; =0xFF00FFFF
add r3, r2, #0
and r3, r1
lsl r1, r2, #8
lsr r1, r1, #0x18
sub r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #8
orr r1, r3
str r1, [r0, #0x14]
_0220D0EE:
pop {r4, pc}
.balign 4, 0
_0220D0F0: .word 0xFFC007FF
_0220D0F4: .word 0xFF00FFFF
thumb_func_end ov96_0220D07C
thumb_func_start ov96_0220D0F8
ov96_0220D0F8: ; 0x0220D0F8
push {r3, r4}
ldr r4, [r0, #0x1c]
ldr r3, _0220D12C ; =0xFFFFFDFF
ldr r1, [r0, #0x14]
and r3, r4
str r3, [r0, #0x1c]
ldr r4, [r0, #0x18]
ldr r3, _0220D130 ; =0xFFC007FF
lsr r1, r1, #0x1e
and r3, r4
str r3, [r0, #0x18]
ldr r4, [r0, #0x14]
ldr r3, _0220D134 ; =0xFF00FFFF
add r2, r0, #4
and r3, r4
str r3, [r0, #0x14]
lsl r1, r1, #2
ldr r3, [r2, r1]
ldr r0, _0220D138 ; =0xFC03FFFF
and r3, r0
mov r0, #0xa
lsl r0, r0, #0x12
orr r0, r3
str r0, [r2, r1]
pop {r3, r4}
bx lr
.balign 4, 0
_0220D12C: .word 0xFFFFFDFF
_0220D130: .word 0xFFC007FF
_0220D134: .word 0xFF00FFFF
_0220D138: .word 0xFC03FFFF
thumb_func_end ov96_0220D0F8
thumb_func_start ov96_0220D13C
ov96_0220D13C: ; 0x0220D13C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
ldr r6, _0220D19C ; =ov96_0221CE84
add r7, r2, #0
str r3, [sp]
add r5, r0, #0
add r4, r1, #0
add r3, sp, #4
mov r2, #6
_0220D14E:
ldmia r6!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _0220D14E
ldr r0, [r6]
cmp r5, #0
str r0, [r3]
bne _0220D162
bl GF_AssertFail
_0220D162:
cmp r4, #0
bne _0220D16A
bl GF_AssertFail
_0220D16A:
add r1, sp, #4
strh r7, [r1]
ldr r0, [sp]
mov r3, #1
strh r0, [r1, #2]
add r0, sp, #0x40
ldrh r2, [r0, #0x10]
strh r2, [r1, #6]
ldrh r0, [r0, #0x14]
add r1, r4, #0
add r2, sp, #4
str r0, [sp, #0xc]
str r3, [sp, #0x30]
add r0, r5, #0
lsl r3, r3, #0x14
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
mov r1, #1
add r4, r0, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r0, r4, #0
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
nop
_0220D19C: .word ov96_0221CE84
thumb_func_end ov96_0220D13C
thumb_func_start ov96_0220D1A0
ov96_0220D1A0: ; 0x0220D1A0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
ldr r6, _0220D1FC ; =ov96_0221CEB8
add r7, r2, #0
str r3, [sp]
add r5, r0, #0
add r4, r1, #0
add r3, sp, #4
mov r2, #6
_0220D1B2:
ldmia r6!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _0220D1B2
ldr r0, [r6]
cmp r5, #0
str r0, [r3]
bne _0220D1C6
bl GF_AssertFail
_0220D1C6:
cmp r4, #0
bne _0220D1CE
bl GF_AssertFail
_0220D1CE:
add r1, sp, #4
strh r7, [r1]
ldr r0, [sp]
mov r3, #1
strh r0, [r1, #2]
add r0, sp, #0x40
ldrh r2, [r0, #0x10]
lsl r3, r3, #0x14
strh r2, [r1, #6]
ldrh r0, [r0, #0x14]
add r1, r4, #0
add r2, sp, #4
str r0, [sp, #0xc]
add r0, r5, #0
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
mov r1, #1
add r4, r0, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r0, r4, #0
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0220D1FC: .word ov96_0221CEB8
thumb_func_end ov96_0220D1A0
thumb_func_start ov96_0220D200
ov96_0220D200: ; 0x0220D200
push {r4, r5, r6, r7, lr}
sub sp, #0x44
add r5, r0, #0
str r1, [sp]
str r2, [sp, #4]
add r0, sp, #8
mov r1, #0xaa
mov r2, #5
bl ReadWholeNarcMemberByIdPair
mov r6, #0
add r7, sp, #8
_0220D218:
ldr r0, [sp, #4]
ldr r1, [sp]
add r2, r6, #0
bl ov96_021E60D8
add r4, r0, #0
ldrb r0, [r4]
cmp r0, #5
blo _0220D22E
bl GF_AssertFail
_0220D22E:
ldrb r0, [r4, #3]
cmp r0, #5
blo _0220D238
bl GF_AssertFail
_0220D238:
ldrb r0, [r4, #4]
cmp r0, #5
blo _0220D242
bl GF_AssertFail
_0220D242:
ldr r1, [r5]
ldr r0, _0220D298 ; =0xFFFFFE00
add r6, r6, #1
and r0, r1
ldrb r1, [r4]
lsl r1, r1, #2
ldr r2, [r7, r1]
ldr r1, _0220D29C ; =0x000001FF
and r1, r2
orr r1, r0
ldr r0, _0220D2A0 ; =0xFFFC01FF
str r1, [r5]
and r0, r1
ldrb r1, [r4, #3]
lsl r1, r1, #2
add r1, r7, r1
ldr r1, [r1, #0x14]
lsl r1, r1, #0x17
lsr r1, r1, #0xe
orr r1, r0
ldr r0, _0220D2A4 ; =0x03FFFFFF
str r1, [r5]
and r0, r1
ldrb r1, [r4, #4]
lsl r1, r1, #2
add r1, r7, r1
ldr r1, [r1, #0x28]
lsl r1, r1, #0x1a
orr r1, r0
ldr r0, _0220D2A8 ; =0xFC03FFFF
str r1, [r5]
and r0, r1
lsl r1, r1, #0xe
lsr r1, r1, #0x17
lsl r1, r1, #0x18
lsr r1, r1, #6
orr r0, r1
stmia r5!, {r0}
cmp r6, #3
blt _0220D218
add sp, #0x44
pop {r4, r5, r6, r7, pc}
nop
_0220D298: .word 0xFFFFFE00
_0220D29C: .word 0x000001FF
_0220D2A0: .word 0xFFFC01FF
_0220D2A4: .word 0x03FFFFFF
_0220D2A8: .word 0xFC03FFFF
thumb_func_end ov96_0220D200
thumb_func_start ov96_0220D2AC
ov96_0220D2AC: ; 0x0220D2AC
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r7, r1, #0
add r5, r0, #0
add r0, r7, #0
mov r1, #0x3c
str r2, [sp]
mov r4, #0
bl _u32_div_f
str r1, [sp, #4]
add r0, r7, #0
mov r1, #0x1e
bl _u32_div_f
add r6, r1, #0
_0220D2CC:
ldr r1, [r5]
lsl r0, r1, #6
lsl r3, r1, #0xe
lsr r2, r0, #0x18
lsr r3, r3, #0x17
lsl r0, r2, #0x10
lsl r3, r3, #0x10
lsr r0, r0, #0x10
lsr r3, r3, #0x10
cmp r7, #0
beq _0220D32A
cmp r0, r3
bhs _0220D32A
ldr r0, [sp]
cmp r4, r0
bne _0220D302
ldr r0, [sp, #4]
cmp r0, #0
bne _0220D314
ldr r0, _0220D338 ; =0xFC03FFFF
add r2, #8
and r0, r1
lsl r1, r2, #0x18
lsr r1, r1, #6
orr r0, r1
str r0, [r5]
b _0220D314
_0220D302:
cmp r6, #0
bne _0220D314
ldr r0, _0220D338 ; =0xFC03FFFF
and r0, r1
add r1, r2, #5
lsl r1, r1, #0x18
lsr r1, r1, #6
orr r0, r1
str r0, [r5]
_0220D314:
ldr r1, [r5]
lsl r0, r1, #6
lsr r0, r0, #0x18
cmp r0, r3
bls _0220D32A
ldr r0, _0220D338 ; =0xFC03FFFF
and r0, r1
lsl r1, r3, #0x18
lsr r1, r1, #6
orr r0, r1
str r0, [r5]
_0220D32A:
add r4, r4, #1
add r5, r5, #4
cmp r4, #3
blt _0220D2CC
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
nop
_0220D338: .word 0xFC03FFFF
thumb_func_end ov96_0220D2AC
thumb_func_start ov96_0220D33C
ov96_0220D33C: ; 0x0220D33C
push {r3, r4, r5, lr}
add r5, r1, #0
add r4, r0, #0
cmp r5, #0xa
blo _0220D34A
bl GF_AssertFail
_0220D34A:
ldr r0, _0220D35C ; =ov96_0221CE5C
lsl r1, r5, #2
ldr r0, [r0, r1]
sub r0, r4, r0
cmp r0, #0
bgt _0220D358
mov r0, #0
_0220D358:
pop {r3, r4, r5, pc}
nop
_0220D35C: .word ov96_0221CE5C
thumb_func_end ov96_0220D33C
thumb_func_start ov96_0220D360
ov96_0220D360: ; 0x0220D360
push {r4, r5, r6, lr}
add r5, r1, #0
add r6, r0, #0
ldr r0, [r5, #0x10]
cmp r0, #0
bne _0220D370
mov r1, #1
b _0220D374
_0220D370:
mov r1, #0
mvn r1, r1
_0220D374:
mov r0, #0xc
ldrsb r0, [r5, r0]
mov r2, #3
add r4, r0, #0
mul r4, r1
add r3, r4, #0
ldr r0, [r5, #4]
mov r1, #1
add r3, #8
bl ScheduleSetBgPosText
ldr r0, [r5, #4]
mov r1, #0
mov r2, #3
add r3, r4, #0
bl ScheduleSetBgPosText
ldr r0, [r5]
bl SpriteRenderer_GetG2dRendererPtr
neg r2, r4
mov r1, #0
lsl r2, r2, #0xc
bl G2dRenderer_SetMainSurfaceCoords
mov r0, #0xd
ldrsb r0, [r5, r0]
lsr r2, r0, #0x1f
lsl r1, r0, #0x1f
sub r1, r1, r2
mov r0, #0x1f
ror r1, r0
add r0, r2, r1
cmp r0, #1
bne _0220D3C2
mov r0, #0xc
ldrsb r0, [r5, r0]
sub r0, r0, #1
strb r0, [r5, #0xc]
_0220D3C2:
ldr r0, [r5, #0x10]
mov r1, #1
eor r0, r1
str r0, [r5, #0x10]
mov r0, #0xd
ldrsb r2, [r5, r0]
sub r2, r2, #1
strb r2, [r5, #0xd]
ldrsb r0, [r5, r0]
cmp r0, #0
bgt _0220D406
ldr r0, [r5, #4]
mov r2, #3
mov r3, #8
bl ScheduleSetBgPosText
mov r1, #0
ldr r0, [r5, #4]
mov r2, #3
add r3, r1, #0
bl ScheduleSetBgPosText
ldr r0, [r5]
bl SpriteRenderer_GetG2dRendererPtr
mov r1, #0
add r2, r1, #0
bl G2dRenderer_SetMainSurfaceCoords
mov r0, #0
str r0, [r5, #8]
add r0, r6, #0
bl DestroySysTask
_0220D406:
pop {r4, r5, r6, pc}
thumb_func_end ov96_0220D360
thumb_func_start ov96_0220D408
ov96_0220D408: ; 0x0220D408
push {r4, lr}
add r4, r0, #0
bne _0220D412
bl GF_AssertFail
_0220D412:
ldr r0, [r4, #8]
cmp r0, #0
bne _0220D41C
mov r0, #1
pop {r4, pc}
_0220D41C:
mov r0, #0
pop {r4, pc}
thumb_func_end ov96_0220D408
thumb_func_start ov96_0220D420
ov96_0220D420: ; 0x0220D420
str r1, [r0, #4]
str r2, [r0]
bx lr
.balign 4, 0
thumb_func_end ov96_0220D420
thumb_func_start ov96_0220D428
ov96_0220D428: ; 0x0220D428
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5, #4]
add r4, r1, #0
add r6, r2, #0
cmp r0, #0
bne _0220D43A
bl GF_AssertFail
_0220D43A:
ldr r0, [r5]
cmp r0, #0
bne _0220D444
bl GF_AssertFail
_0220D444:
ldr r0, [r5, #8]
cmp r0, #0
beq _0220D44E
bl DestroySysTask
_0220D44E:
mov r0, #0
str r0, [r5, #0x10]
strb r4, [r5, #0xc]
ldr r0, _0220D464 ; =ov96_0220D360
add r1, r5, #0
mov r2, #2
strb r6, [r5, #0xd]
bl CreateSysTask
str r0, [r5, #8]
pop {r4, r5, r6, pc}
.balign 4, 0
_0220D464: .word ov96_0220D360
thumb_func_end ov96_0220D428
thumb_func_start ov96_0220D468
ov96_0220D468: ; 0x0220D468
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
ldrh r0, [r4, #0xe]
cmp r0, #0
beq _0220D47A
cmp r0, #1
beq _0220D4C4
b _0220D51A
_0220D47A:
ldrh r0, [r4, #0xc]
bl _dfltu
add r2, r0, #0
add r3, r1, #0
ldr r0, _0220D520 ; =0x33333333
ldr r1, _0220D524 ; =0x3FD33333
bl _dmul
add r3, r1, #0
add r2, r0, #0
ldr r1, _0220D528 ; =0x3FF00000
mov r0, #0
bl _dsub
bl _d2f
str r0, [r4, #8]
ldrh r0, [r4, #0xc]
cmp r0, #1
bls _0220D4B0
mov r0, #0
strh r0, [r4, #0xc]
ldrh r0, [r4, #0xe]
add r0, r0, #1
strh r0, [r4, #0xe]
pop {r3, r4, r5, pc}
_0220D4B0:
mov r1, #0xfe
ldr r0, [r4]
ldr r2, [r4, #8]
lsl r1, r1, #0x16
bl ov96_021EB10C
ldrh r0, [r4, #0xc]
add r0, r0, #1
strh r0, [r4, #0xc]
pop {r3, r4, r5, pc}
_0220D4C4:
ldrh r0, [r4, #0xc]
bl _dfltu
add r2, r0, #0
add r3, r1, #0
ldr r0, _0220D520 ; =0x33333333
ldr r1, _0220D524 ; =0x3FD33333
bl _dmul
add r3, r1, #0
add r2, r0, #0
ldr r1, _0220D528 ; =0x3FF00000
mov r0, #0
bl _dadd
bl _d2f
str r0, [r4, #8]
ldrh r0, [r4, #0xc]
cmp r0, #1
bls _0220D506
mov r0, #0
mov r1, #0xfe
str r0, [r4, #4]
lsl r1, r1, #0x16
ldr r0, [r4]
add r2, r1, #0
bl ov96_021EB10C
add r0, r5, #0
bl DestroySysTask
pop {r3, r4, r5, pc}
_0220D506:
mov r1, #0xfe
ldr r0, [r4]
ldr r2, [r4, #8]
lsl r1, r1, #0x16
bl ov96_021EB10C
ldrh r0, [r4, #0xc]
add r0, r0, #1
strh r0, [r4, #0xc]
pop {r3, r4, r5, pc}
_0220D51A:
bl GF_AssertFail
pop {r3, r4, r5, pc}
.balign 4, 0
_0220D520: .word 0x33333333
_0220D524: .word 0x3FD33333
_0220D528: .word 0x3FF00000
thumb_func_end ov96_0220D468
thumb_func_start ov96_0220D52C
ov96_0220D52C: ; 0x0220D52C
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #4]
add r4, r1, #0
cmp r0, #0
beq _0220D53C
bl DestroySysTask
_0220D53C:
str r4, [r5]
mov r2, #0
strh r2, [r5, #0xc]
ldr r0, _0220D550 ; =ov96_0220D468
add r1, r5, #0
strh r2, [r5, #0xe]
bl CreateSysTask
str r0, [r5, #4]
pop {r3, r4, r5, pc}
.balign 4, 0
_0220D550: .word ov96_0220D468
thumb_func_end ov96_0220D52C
thumb_func_start ov96_0220D554
ov96_0220D554: ; 0x0220D554
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r6, r0, #0
add r7, r1, #0
bl ov96_021EAA20
add r5, r0, #0
bl ov96_021E90FC
add r4, r0, #0
add r1, sp, #0
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
add r0, r5, #0
bl ov96_021E8BB0
ldrh r0, [r0, #4]
cmp r0, #0
beq _0220D58A
add r0, r6, #0
mov r1, #1
mov r5, #0x40
bl ov96_021EABE0
b _0220D594
_0220D58A:
add r0, r6, #0
mov r1, #2
mov r5, #0x20
bl ov96_021EABE0
_0220D594:
cmp r7, #0
beq _0220D5B2
lsr r0, r5, #0x1f
add r0, r5, r0
asr r0, r0, #1
lsl r0, r0, #0xc
sub r1, r5, r4
str r0, [sp]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r0, r0, #1
add r0, r4, r0
lsl r0, r0, #0xc
str r0, [sp, #4]
b _0220D5C2
_0220D5B2:
lsr r0, r5, #0x1f
add r0, r5, r0
asr r0, r0, #1
lsl r0, r0, #0xc
str r0, [sp]
sub r0, r5, #1
lsl r0, r0, #0xc
str r0, [sp, #4]
_0220D5C2:
add r0, r6, #0
add r1, sp, #0
bl ov96_021EABF4
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0220D554
thumb_func_start ov96_0220D5D0
ov96_0220D5D0: ; 0x0220D5D0
push {r3, r4, lr}
sub sp, #0x34
add r2, r0, #0
add r0, sp, #0x20
str r0, [sp]
add r0, sp, #0xc
str r0, [sp, #4]
add r4, r1, #0
ldr r0, [r2, #4]
ldr r1, [r2, #0x1c]
ldr r2, [r2, #0x20]
add r3, sp, #0x1c
bl ov96_021EAF78
add r0, sp, #0x14
str r0, [sp]
add r0, sp, #8
str r0, [sp, #4]
ldr r0, [r4, #4]
ldr r1, [r4, #0x1c]
ldr r2, [r4, #0x20]
add r3, sp, #0x10
bl ov96_021EAF78
ldr r1, [sp, #0xc]
ldr r0, [sp, #8]
add r2, sp, #0x28
add r0, r1, r0
lsl r4, r0, #0xc
mov r0, #0
str r0, [sp, #0x24]
str r0, [sp, #0x18]
add r0, sp, #0x1c
add r1, sp, #0x10
bl VEC_Subtract
add r0, sp, #0x28
bl VEC_Mag
cmp r0, r4
bgt _0220D628
add sp, #0x34
mov r0, #1
pop {r3, r4, pc}
_0220D628:
mov r0, #0
add sp, #0x34
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov96_0220D5D0
thumb_func_start ov96_0220D630
ov96_0220D630: ; 0x0220D630
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
add r1, r4, #0
add r2, r4, #0
add r1, #0x45
add r2, #0x46
ldrb r1, [r1]
ldrb r2, [r2]
ldr r0, [r4]
bl ov96_0220F378
ldrb r0, [r0, #2]
cmp r0, #0
beq _0220D67E
mov r0, #1
add r1, r4, #0
add r2, r4, #0
str r0, [sp]
add r1, #0x45
add r2, #0x46
ldrb r1, [r1]
ldrb r2, [r2]
ldr r0, [r4]
mov r3, #2
bl ov96_021E8228
ldr r0, [r4, #8]
bl ov96_0220F3B4
lsl r0, r0, #0x18
ldr r2, [r4, #0x40]
mov r1, #0xff
bic r2, r1
lsr r0, r0, #0x18
orr r0, r2
str r0, [r4, #0x40]
mov r0, #1
str r0, [r4, #0xc]
_0220D67E:
ldr r1, [r4, #0x40]
ldr r0, _0220D690 ; =0xFFFF00FF
and r1, r0
mov r0, #0xa
lsl r0, r0, #8
orr r0, r1
str r0, [r4, #0x40]
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
_0220D690: .word 0xFFFF00FF
thumb_func_end ov96_0220D630
thumb_func_start ov96_0220D694
ov96_0220D694: ; 0x0220D694
push {r4, lr}
add r4, r0, #0
bne _0220D69E
bl GF_AssertFail
_0220D69E:
ldr r1, [r4, #0xc]
mov r0, #1
cmp r1, #2
beq _0220D6AC
cmp r1, #1
beq _0220D6AC
mov r0, #0
_0220D6AC:
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_0220D694
thumb_func_start ov96_0220D6B0
ov96_0220D6B0: ; 0x0220D6B0
mov r2, #0
ldrsh r2, [r1, r2]
lsl r2, r2, #0xc
str r2, [r0, #0x10]
mov r2, #2
ldrsh r1, [r1, r2]
lsl r1, r1, #0xc
str r1, [r0, #0x14]
mov r1, #2
ldr r2, [r0, #0x40]
lsl r1, r1, #0x1a
orr r1, r2
str r1, [r0, #0x40]
bx lr
thumb_func_end ov96_0220D6B0
thumb_func_start ov96_0220D6CC
ov96_0220D6CC: ; 0x0220D6CC
push {r3, r4, r5, lr}
sub sp, #0x18
ldr r5, _0220D740 ; =ov96_0221CF00
add r3, r0, #0
ldmia r5!, {r0, r1}
add r4, sp, #0xc
add r2, r4, #0
stmia r4!, {r0, r1}
ldr r0, [r5]
add r1, sp, #0
str r0, [r4]
mov r4, #0
str r4, [r1]
str r4, [r1, #4]
str r4, [r1, #8]
ldr r0, [r3, #4]
str r0, [sp]
ldr r0, [r3]
str r0, [sp, #8]
add r0, r2, #0
str r4, [sp, #4]
bl CalcAngleBetweenVecs
mov r2, #2
lsl r2, r2, #0xc
cmp r0, r2
bls _0220D70A
mov r1, #0xe
lsl r1, r1, #0xc
cmp r0, r1
blo _0220D710
_0220D70A:
add sp, #0x18
mov r0, #4
pop {r3, r4, r5, pc}
_0220D710:
cmp r0, r2
bls _0220D722
mov r1, #6
lsl r1, r1, #0xc
cmp r0, r1
bhs _0220D722
add sp, #0x18
mov r0, #2
pop {r3, r4, r5, pc}
_0220D722:
mov r1, #6
lsl r1, r1, #0xc
cmp r0, r1
blo _0220D738
mov r1, #0xa
lsl r1, r1, #0xc
cmp r0, r1
bhi _0220D738
add sp, #0x18
mov r0, #3
pop {r3, r4, r5, pc}
_0220D738:
mov r0, #1
add sp, #0x18
pop {r3, r4, r5, pc}
nop
_0220D740: .word ov96_0221CF00
thumb_func_end ov96_0220D6CC
thumb_func_start ov96_0220D744
ov96_0220D744: ; 0x0220D744
push {r4, r5, r6, lr}
sub sp, #0x60
add r5, r0, #0
ldr r0, [r5, #0xc]
cmp r0, #0
bne _0220D752
b _0220D8B0
_0220D752:
add r0, r5, #0
add r1, r5, #0
add r0, #0x10
add r1, #0x1c
add r2, sp, #0x54
bl VEC_Subtract
add r0, sp, #0x54
bl VEC_Mag
add r4, r0, #0
cmp r4, #0
ble _0220D770
mov r2, #1
b _0220D772
_0220D770:
mov r2, #0
_0220D772:
ldr r1, [r5, #0x40]
ldr r0, _0220D8B4 ; =0xEFFFFFFF
and r1, r0
lsl r0, r2, #0x1f
lsr r0, r0, #3
orr r0, r1
str r0, [r5, #0x40]
lsl r0, r0, #5
lsr r0, r0, #0x1f
beq _0220D844
mov r2, #0
add r0, sp, #0x24
str r2, [r0]
add r1, sp, #0x30
str r2, [r0, #4]
str r2, [r1]
str r2, [r0, #8]
add r0, r5, #0
str r2, [r1, #4]
add r0, #0x34
str r2, [r1, #8]
bl VEC_Normalize
ldr r0, _0220D8B8 ; =0x00000CCD
add r1, sp, #0x30
add r2, sp, #0x24
add r3, sp, #0x18
bl VEC_MultAdd
ldr r0, [sp, #0x18]
cmp r0, #0
bge _0220D7B4
neg r0, r0
_0220D7B4:
str r0, [sp, #0x18]
ldr r0, [sp, #0x1c]
cmp r0, #0
bge _0220D7BE
neg r0, r0
_0220D7BE:
str r0, [sp, #0x1c]
ldr r0, [r5, #0x40]
lsl r0, r0, #4
lsr r0, r0, #0x1f
beq _0220D806
ldr r0, [r5, #8]
mov r1, #0x64
ldr r0, [r0, #4]
bl _s32_div_f
add r6, r0, #0
add r0, sp, #0x54
add r1, sp, #0x48
bl VEC_Normalize
add r1, r5, #0
add r0, r6, #0
add r1, #0x28
add r2, sp, #0x24
add r3, sp, #0xc
bl VEC_MultAdd
ldr r1, [sp, #0xc]
cmp r1, #0
bge _0220D7F2
neg r1, r1
_0220D7F2:
ldr r0, [sp, #0x18]
add r0, r0, r1
ldr r1, [sp, #0x10]
str r0, [sp, #0x18]
cmp r1, #0
bge _0220D800
neg r1, r1
_0220D800:
ldr r0, [sp, #0x1c]
add r0, r0, r1
str r0, [sp, #0x1c]
_0220D806:
add r0, r5, #0
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x1c]
add r0, #0x34
bl ov96_0220E960
add r0, r5, #0
add r0, #0x1c
add r1, r5, #0
add r1, #0x34
add r2, r0, #0
bl VEC_Add
add r3, r5, #0
add r3, #0x1c
add r2, r5, #0
ldmia r3!, {r0, r1}
add r2, #0x10
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r0, [r5, #0x34]
cmp r0, #0
bne _0220D8B0
ldr r0, [r5, #0x38]
cmp r0, #0
bne _0220D8B0
ldr r1, [r5, #0x40]
ldr r0, _0220D8BC ; =0xFBFFFFFF
and r0, r1
str r0, [r5, #0x40]
_0220D844:
ldr r0, [r5, #0x40]
lsl r0, r0, #3
lsr r0, r0, #0x1f
beq _0220D8B0
add r0, sp, #0x54
add r1, sp, #0x48
bl VEC_Normalize
ldr r0, [r5, #0x40]
lsl r0, r0, #5
lsr r0, r0, #0x1f
bne _0220D870
add r0, sp, #0x48
bl ov96_0220D6CC
lsl r0, r0, #0x1c
ldr r2, [r5, #0x40]
ldr r1, _0220D8C0 ; =0xFF0FFFFF
lsr r0, r0, #8
and r1, r2
orr r0, r1
str r0, [r5, #0x40]
_0220D870:
ldr r0, [r5, #8]
ldr r0, [r0, #8]
cmp r4, r0
bgt _0220D886
add r3, sp, #0x54
ldmia r3!, {r0, r1}
add r2, sp, #0x3c
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
b _0220D898
_0220D886:
add r2, sp, #0
mov r1, #0
str r1, [r2]
str r1, [r2, #4]
str r1, [r2, #8]
add r1, sp, #0x48
add r3, sp, #0x3c
bl VEC_MultAdd
_0220D898:
add r0, r5, #0
add r0, #0x1c
add r1, sp, #0x3c
add r2, r0, #0
bl VEC_Add
add r2, sp, #0x48
ldmia r2!, {r0, r1}
add r5, #0x28
stmia r5!, {r0, r1}
ldr r0, [r2]
str r0, [r5]
_0220D8B0:
add sp, #0x60
pop {r4, r5, r6, pc}
.balign 4, 0
_0220D8B4: .word 0xEFFFFFFF
_0220D8B8: .word 0x00000CCD
_0220D8BC: .word 0xFBFFFFFF
_0220D8C0: .word 0xFF0FFFFF
thumb_func_end ov96_0220D744
thumb_func_start ov96_0220D8C4
ov96_0220D8C4: ; 0x0220D8C4
push {lr}
sub sp, #0xc
add r3, sp, #4
str r3, [sp]
ldr r0, [r0, #4]
asr r1, r1, #0xc
asr r2, r2, #0xc
add r3, sp, #8
bl ov96_021EB06C
ldr r1, [sp, #8]
cmp r1, #0
ble _0220D8EC
ldr r0, [sp, #4]
cmp r0, #0
ble _0220D8EC
cmp r1, #0xff
bge _0220D8EC
cmp r0, #0xff
blt _0220D8F2
_0220D8EC:
add sp, #0xc
mov r0, #1
pop {pc}
_0220D8F2:
cmp r1, #8
blt _0220D902
cmp r1, #0xf8
bge _0220D902
cmp r0, #8
blt _0220D902
cmp r0, #0xb4
blt _0220D908
_0220D902:
add sp, #0xc
mov r0, #1
pop {pc}
_0220D908:
mov r0, #0
add sp, #0xc
pop {pc}
.balign 4, 0
thumb_func_end ov96_0220D8C4
thumb_func_start ov96_0220D910
ov96_0220D910: ; 0x0220D910
push {r4, r5, r6, lr}
sub sp, #0x18
add r5, r0, #0
ldr r0, [r5, #0x40]
mov r1, #3
lsl r0, r0, #0xc
lsr r0, r0, #0x1c
lsl r0, r0, #0x18
lsr r6, r0, #0x18
add r0, r6, #0
bl _s32_div_f
lsl r4, r1, #2
add r0, r6, #0
mov r1, #3
bl _s32_div_f
add r2, r0, #0
mov r1, #0xc
mul r2, r1
ldr r1, _0220D994 ; =ov96_0221CFBC
add r0, sp, #4
add r1, r1, r2
ldr r3, _0220D998 ; =ov96_0221CFBE
str r0, [sp]
add r2, r3, r2
ldrsh r1, [r4, r1]
ldrsh r2, [r4, r2]
ldr r0, [r5, #4]
add r3, sp, #8
bl ov96_021EB0A4
ldr r0, [sp, #8]
add r2, r5, #0
lsl r0, r0, #0xc
str r0, [r5, #0x1c]
ldr r0, [sp, #4]
add r3, sp, #0xc
lsl r0, r0, #0xc
str r0, [r5, #0x20]
ldr r0, [sp, #8]
add r2, #0x34
lsl r0, r0, #0xc
str r0, [r5, #0x10]
ldr r0, [sp, #4]
lsl r0, r0, #0xc
str r0, [r5, #0x14]
mov r0, #0
str r0, [r3]
str r0, [r3, #4]
str r0, [r3, #8]
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r1, [r5, #0x40]
ldr r0, _0220D99C ; =0xFF0FFFFF
and r1, r0
mov r0, #2
lsl r0, r0, #0x14
orr r1, r0
ldr r0, _0220D9A0 ; =0xFBFFFFFF
and r0, r1
str r0, [r5, #0x40]
add sp, #0x18
pop {r4, r5, r6, pc}
.balign 4, 0
_0220D994: .word ov96_0221CFBC
_0220D998: .word ov96_0221CFBE
_0220D99C: .word 0xFF0FFFFF
_0220D9A0: .word 0xFBFFFFFF
thumb_func_end ov96_0220D910
thumb_func_start ov96_0220D9A4
ov96_0220D9A4: ; 0x0220D9A4
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
ldr r2, [r4, #0xc]
cmp r2, #4
bhi _0220DA94
add r2, r2, r2
add r2, pc
ldrh r2, [r2, #6]
lsl r2, r2, #0x10
asr r2, r2, #0x10
add pc, r2
_0220D9BC: ; jump table
.short _0220DA94 - _0220D9BC - 2 ; case 0
.short _0220DA6A - _0220D9BC - 2 ; case 1
.short _0220D9F2 - _0220D9BC - 2 ; case 2
.short _0220D9CE - _0220D9BC - 2 ; case 3
.short _0220D9C6 - _0220D9BC - 2 ; case 4
_0220D9C6:
mov r0, #2
add sp, #4
str r0, [r4, #0xc]
pop {r3, r4, pc}
_0220D9CE:
add r1, r4, #0
add r1, #0x44
ldrb r1, [r1]
sub r2, r1, #1
add r1, r4, #0
add r1, #0x44
strb r2, [r1]
add r1, r4, #0
add r1, #0x44
ldrb r1, [r1]
cmp r1, #0
bne _0220DA98
bl ov96_0220D910
mov r0, #4
add sp, #4
str r0, [r4, #0xc]
pop {r3, r4, pc}
_0220D9F2:
bl ov96_0220D744
ldr r1, [r4, #0x1c]
ldr r2, [r4, #0x20]
add r0, r4, #0
bl ov96_0220D8C4
cmp r0, #0
beq _0220DA98
mov r3, #1
add r1, r4, #0
add r2, r4, #0
str r3, [sp]
add r1, #0x45
add r2, #0x46
ldrb r1, [r1]
ldrb r2, [r2]
ldr r0, [r4]
bl ov96_021E8228
mov r0, #1
add r1, r4, #0
add r2, r4, #0
str r0, [sp]
add r1, #0x45
add r2, #0x46
ldrb r1, [r1]
ldrb r2, [r2]
ldr r0, [r4]
mov r3, #5
bl ov96_021E8228
ldr r0, [r4, #0x40]
lsl r0, r0, #2
lsr r0, r0, #0x1f
beq _0220DA52
mov r0, #1
add r1, r4, #0
add r2, r4, #0
str r0, [sp]
add r1, #0x45
add r2, #0x46
ldrb r1, [r1]
ldrb r2, [r2]
ldr r0, [r4]
mov r3, #8
bl ov96_021E8228
_0220DA52:
ldr r1, [r4, #0x40]
ldr r0, _0220DA9C ; =0xDFFFFFFF
add sp, #4
and r0, r1
str r0, [r4, #0x40]
add r0, r4, #0
mov r1, #0x5a
add r0, #0x44
strb r1, [r0]
mov r0, #3
str r0, [r4, #0xc]
pop {r3, r4, pc}
_0220DA6A:
ldr r3, [r4, #0x40]
mov r2, #0xff
add r0, r3, #0
bic r0, r2
lsl r2, r3, #0x18
lsr r2, r2, #0x18
sub r2, r2, #1
lsl r2, r2, #0x18
lsr r2, r2, #0x18
orr r0, r2
str r0, [r4, #0x40]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bne _0220DA8A
mov r0, #2
str r0, [r4, #0xc]
_0220DA8A:
add r0, r4, #0
bl ov96_0220D744
add sp, #4
pop {r3, r4, pc}
_0220DA94:
bl GF_AssertFail
_0220DA98:
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
_0220DA9C: .word 0xDFFFFFFF
thumb_func_end ov96_0220D9A4
thumb_func_start ov96_0220DAA0
ov96_0220DAA0: ; 0x0220DAA0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x30
ldr r3, _0220DB38 ; =ov96_0221CEF4
add r5, r0, #0
mov r0, #0xc
str r1, [sp, #4]
str r0, [sp, #0x14]
str r2, [sp, #8]
add r2, sp, #0x24
ldmia r3!, {r0, r1}
add r4, r2, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
mov r7, #1
str r0, [r2]
ldr r0, [sp, #4]
lsl r7, r7, #0x14
lsl r0, r0, #0xc
str r0, [sp, #0x10]
ldr r0, [sp, #8]
mov r6, #0
lsl r0, r0, #0xc
str r0, [sp, #0xc]
_0220DACE:
ldr r0, [sp, #8]
str r0, [sp]
ldr r0, [r5, #4]
ldr r1, [r5, #0x1c]
ldr r2, [r5, #0x20]
ldr r3, [sp, #4]
bl ov96_021EB0CC
cmp r0, #0
beq _0220DB0C
mov r1, #0
add r0, sp, #0x18
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
ldr r1, [r5, #0x1c]
ldr r0, [sp, #0x10]
sub r0, r0, r1
bpl _0220DAF6
neg r0, r0
_0220DAF6:
str r0, [sp, #0x18]
ldr r1, [r5, #0x20]
ldr r0, [sp, #0xc]
sub r0, r0, r1
bpl _0220DB02
neg r0, r0
_0220DB02:
str r0, [sp, #0x1c]
add r0, sp, #0x18
bl VEC_Mag
str r0, [r4]
_0220DB0C:
add r6, r6, #1
add r5, #0x48
add r4, r4, #4
cmp r6, #3
blt _0220DACE
mov r2, #0
add r1, sp, #0x24
_0220DB1A:
ldr r0, [r1]
cmp r0, r7
bge _0220DB24
add r7, r0, #0
str r2, [sp, #0x14]
_0220DB24:
add r2, r2, #1
add r1, r1, #4
cmp r2, #3
blt _0220DB1A
ldr r0, [sp, #0x14]
lsl r0, r0, #0x18
asr r0, r0, #0x18
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
nop
_0220DB38: .word ov96_0221CEF4
thumb_func_end ov96_0220DAA0
thumb_func_start ov96_0220DB3C
ov96_0220DB3C: ; 0x0220DB3C
push {r4, r5, r6, lr}
add r5, r0, #0
add r4, r2, #0
cmp r1, #0
beq _0220DB50
cmp r1, #1
beq _0220DB7C
cmp r1, #2
beq _0220DBA8
pop {r4, r5, r6, pc}
_0220DB50:
ldr r0, [r5]
add r1, r4, #0
bl UnkImageStruct_SetSpriteVisibleFlag
cmp r4, #0
bne _0220DB60
mov r6, #1
b _0220DB62
_0220DB60:
mov r6, #0
_0220DB62:
ldr r0, [r5, #4]
add r1, r6, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r5, #8]
add r1, r4, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r5, #0xc]
add r1, r6, #0
bl UnkImageStruct_SetSpriteVisibleFlag
pop {r4, r5, r6, pc}
_0220DB7C:
cmp r4, #0
bne _0220DB84
mov r6, #1
b _0220DB86
_0220DB84:
mov r6, #0
_0220DB86:
ldr r0, [r5]
add r1, r6, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r5, #4]
add r1, r4, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r5, #8]
add r1, r6, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r5, #0xc]
add r1, r4, #0
bl UnkImageStruct_SetSpriteVisibleFlag
pop {r4, r5, r6, pc}
_0220DBA8:
ldr r0, [r5]
add r1, r4, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r5, #4]
add r1, r4, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r5, #8]
add r1, r4, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r5, #0xc]
add r1, r4, #0
bl UnkImageStruct_SetSpriteVisibleFlag
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_0220DB3C
thumb_func_start ov96_0220DBCC
ov96_0220DBCC: ; 0x0220DBCC
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
ldr r0, [r5]
add r2, r4, #0
bl sub_0200E024
ldr r0, [r5, #4]
add r1, r4, #0
add r2, r4, #0
bl sub_0200E024
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_0220DBCC
thumb_func_start ov96_0220DBE8
ov96_0220DBE8: ; 0x0220DBE8
push {r3, r4, r5, r6, r7, lr}
sub r7, r1, #3
add r5, r0, #0
add r4, r2, #0
add r6, r3, #0
cmp r7, #4
blt _0220DBFA
bl GF_AssertFail
_0220DBFA:
mov r3, #0x1e
ldr r0, [r5, #0x10]
add r1, r4, #0
add r2, r6, #0
lsl r3, r3, #0x10
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
mov r3, #0x1e
ldr r0, [r5, #0x14]
add r1, r4, #0
add r2, r6, #0
lsl r3, r3, #0x10
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
ldr r0, [r5, #0x10]
add r1, r7, #0
bl UnkImageStruct_SetSpriteAnimSeqNo
ldr r0, [r5, #0x14]
bl UnkImageStruct_ResetSpriteAnimCtrlState
ldr r0, [r5, #0x10]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r5, #0x14]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0220DBE8
thumb_func_start ov96_0220DC38
ov96_0220DC38: ; 0x0220DC38
push {r4, lr}
cmp r0, #6
bhi _0220DC68
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0220DC4A: ; jump table
.short _0220DC68 - _0220DC4A - 2 ; case 0
.short _0220DC68 - _0220DC4A - 2 ; case 1
.short _0220DC68 - _0220DC4A - 2 ; case 2
.short _0220DC58 - _0220DC4A - 2 ; case 3
.short _0220DC5C - _0220DC4A - 2 ; case 4
.short _0220DC60 - _0220DC4A - 2 ; case 5
.short _0220DC64 - _0220DC4A - 2 ; case 6
_0220DC58:
mov r4, #0
b _0220DC6C
_0220DC5C:
mov r4, #0x80
b _0220DC6C
_0220DC60:
mov r4, #0
b _0220DC6C
_0220DC64:
mov r4, #0xc0
b _0220DC6C
_0220DC68:
bl GF_AssertFail
_0220DC6C:
ldr r0, _0220DC78 ; =0x0000088D
add r1, r4, #0
bl PlaySE_SetPitch
pop {r4, pc}
nop
_0220DC78: .word 0x0000088D
thumb_func_end ov96_0220DC38
thumb_func_start ov96_0220DC7C
ov96_0220DC7C: ; 0x0220DC7C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r6, r2, #0
add r4, r0, #0
add r0, r6, #0
add r5, r1, #0
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
add r0, r6, #0
bl ov96_021E5DC4
str r0, [sp, #0xc]
mov r0, #0
str r0, [sp, #8]
add r4, r4, #4
_0220DCA0:
ldrh r1, [r5]
lsl r0, r1, #0x19
lsr r2, r0, #0x16
lsr r0, r2, #0x1f
add r0, r2, r0
lsl r1, r1, #0x12
lsl r0, r0, #0xf
lsr r1, r1, #0x1d
asr r0, r0, #0x10
cmp r1, #2
bne _0220DCC0
mov r1, #0x1e
lsl r1, r1, #4
add r0, r0, r1
lsl r0, r0, #0x10
asr r0, r0, #0x10
_0220DCC0:
mov r1, #0x12
lsl r1, r1, #4
add r7, r0, #0
cmp r0, r1
blt _0220DCCE
mov r6, #1
b _0220DCD0
_0220DCCE:
mov r6, #0
_0220DCD0:
cmp r6, #0
beq _0220DCDE
mov r1, #0x12
lsl r1, r1, #4
sub r1, r7, r1
lsl r1, r1, #0x10
asr r7, r1, #0x10
_0220DCDE:
ldrh r1, [r5]
lsl r1, r1, #0x15
lsr r1, r1, #0x1c
bl ov96_0220E6DC
str r0, [sp, #4]
ldrh r0, [r5]
lsl r0, r0, #0x12
lsr r0, r0, #0x1d
bne _0220DD0E
add r0, r4, #0
mov r1, #2
mov r2, #0
bl ov96_0220DB3C
ldr r0, [r4, #0x10]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4, #0x14]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
b _0220DD90
_0220DD0E:
cmp r0, #3
blo _0220DD72
ldr r1, [r4, #0x18]
lsl r1, r1, #8
lsr r1, r1, #0x18
cmp r1, #3
bhs _0220DD72
add r0, r4, #0
mov r1, #2
mov r2, #0
bl ov96_0220DB3C
ldrh r1, [r5]
add r3, r7, #0
sub r3, #0x28
lsl r1, r1, #0x12
lsl r3, r3, #0x10
ldr r2, [sp, #4]
add r0, r4, #0
lsr r1, r1, #0x1d
asr r3, r3, #0x10
bl ov96_0220DBE8
ldrh r0, [r5]
lsl r0, r0, #0x10
lsr r1, r0, #0x1e
ldr r0, [sp]
cmp r1, r0
bne _0220DD62
ldr r1, [sp, #0xc]
ldr r0, _0220DE70 ; =0x000006A8
add r0, r1, r0
mov r1, #4
add r2, r1, #0
bl ov96_0220D428
ldrh r0, [r5]
lsl r0, r0, #0x12
lsr r0, r0, #0x1d
bl ov96_0220DC38
b _0220DD6A
_0220DD62:
ldr r0, [r4, #0x10]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
_0220DD6A:
ldr r0, _0220DE74 ; =0x000008C4
bl PlaySE
b _0220DD90
_0220DD72:
cmp r0, #1
bne _0220DD90
add r0, r4, #0
add r1, r6, #0
mov r2, #1
bl ov96_0220DB3C
ldr r0, [r4, #0x10]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4, #0x14]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
_0220DD90:
ldr r0, [r4, #0x18]
lsl r1, r0, #8
lsr r1, r1, #0x18
bne _0220DDB6
ldrh r1, [r5]
lsl r1, r1, #0x12
lsr r1, r1, #0x1d
cmp r1, #1
bne _0220DDB6
ldr r1, _0220DE78 ; =0xFFFF0000
and r0, r1
str r0, [r4, #0x18]
ldr r1, _0220DE7C ; =0x3F99999A
add r0, r4, #0
bl ov96_0220DBCC
ldr r0, _0220DE80 ; =0x000008C3
bl PlaySE
_0220DDB6:
ldrh r0, [r5]
lsl r0, r0, #0x12
lsr r1, r0, #0x1d
ldr r0, _0220DE84 ; =0x0000FFFF
add r0, r1, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
cmp r0, #1
bhi _0220DE46
cmp r6, #0
beq _0220DDDE
ldr r0, [sp, #4]
cmp r0, #0x10
ble _0220DDDE
lsl r0, r6, #2
add r0, r4, r0
ldr r0, [r0, #8]
mov r1, #1
bl UnkImageStruct_TryChangeSpriteAnimSeqNo
_0220DDDE:
ldr r0, [r4, #0x18]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl GF_SinDeg
mov r1, #0x12
bl _s32_div_f
bl _fflt
ldr r1, _0220DE88 ; =0x45800000
bl _fdiv
add r1, r0, #0
ldr r0, _0220DE7C ; =0x3F99999A
bl _fadd
add r1, r0, #0
ldr r0, [r4, #0x18]
ldr r2, _0220DE78 ; =0xFFFF0000
and r2, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
add r0, #0xa
lsl r0, r0, #0x10
lsr r0, r0, #0x10
orr r0, r2
str r0, [r4, #0x18]
add r0, r4, #0
bl ov96_0220DBCC
add r2, r7, #0
lsl r0, r6, #2
sub r2, #0x28
add r6, r4, r0
lsl r2, r2, #0x10
mov r3, #0x1e
ldr r0, [r4, r0]
ldr r1, [sp, #4]
asr r2, r2, #0x10
lsl r3, r3, #0x10
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
mov r3, #0x1e
ldr r0, [r6, #8]
ldr r1, [sp, #4]
add r2, r7, #0
lsl r3, r3, #0x10
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
_0220DE46:
ldr r1, [r4, #0x18]
ldr r0, _0220DE8C ; =0xFF00FFFF
and r0, r1
ldrh r1, [r5]
add r5, r5, #2
lsl r1, r1, #0x12
lsr r1, r1, #0x1d
lsl r1, r1, #0x18
lsr r1, r1, #8
orr r0, r1
str r0, [r4, #0x18]
ldr r0, [sp, #8]
add r4, #0x1c
add r0, r0, #1
str r0, [sp, #8]
cmp r0, #2
bge _0220DE6A
b _0220DCA0
_0220DE6A:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
_0220DE70: .word 0x000006A8
_0220DE74: .word 0x000008C4
_0220DE78: .word 0xFFFF0000
_0220DE7C: .word 0x3F99999A
_0220DE80: .word 0x000008C3
_0220DE84: .word 0x0000FFFF
_0220DE88: .word 0x45800000
_0220DE8C: .word 0xFF00FFFF
thumb_func_end ov96_0220DC7C
thumb_func_start ov96_0220DE90
ov96_0220DE90: ; 0x0220DE90
ldrb r1, [r1]
ldrb r0, [r0]
cmp r0, r1
bne _0220DE9C
mov r0, #0
bx lr
_0220DE9C:
cmp r0, r1
bhs _0220DEA4
mov r0, #1
bx lr
_0220DEA4:
mov r0, #0
mvn r0, r0
bx lr
.balign 4, 0
thumb_func_end ov96_0220DE90
thumb_func_start ov96_0220DEAC
ov96_0220DEAC: ; 0x0220DEAC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0xa0
add r5, r0, #0
str r2, [sp, #8]
mov r0, #0
str r1, [sp, #4]
add r3, sp, #0x40
add r1, r0, #0
mov r2, #6
_0220DEBE:
stmia r3!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _0220DEBE
ldr r0, [sp, #8]
bl ov96_021E5DC4
str r0, [sp, #0x1c]
add r0, sp, #0x40
mov r6, #0
str r0, [sp, #0x14]
mov r0, #0xff
add r5, #0x3c
str r6, [sp, #0x10]
str r0, [sp, #0x28]
str r0, [sp, #0x24]
_0220DEDE:
ldr r0, [sp, #0x1c]
lsl r1, r6, #0x18
ldr r0, [r0, #0x20]
lsr r1, r1, #0x18
bl ov96_021EAA04
add r4, r0, #0
cmp r5, #0
bne _0220DEF4
bl GF_AssertFail
_0220DEF4:
cmp r4, #0
bne _0220DEFC
bl GF_AssertFail
_0220DEFC:
ldr r0, [sp, #4]
add r3, sp, #0x3c
add r0, r0, r6
ldrb r7, [r0, #0x10]
str r0, [sp, #0xc]
add r0, sp, #0x38
str r0, [sp]
ldr r1, [sp, #0xc]
add r0, r4, #0
ldrb r1, [r1, #4]
add r2, r7, #0
bl ov96_021EB0A4
ldr r0, [sp, #0x14]
strb r7, [r0]
str r4, [r0, #4]
ldr r0, [sp, #4]
ldr r0, [r0, #0x20]
lsl r0, r0, #0xd
lsr r0, r0, #0x14
add r1, r0, #0
lsr r1, r6
mov r0, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x18]
cmp r0, #1
bne _0220DF68
ldr r0, [r5, #0x18]
lsl r0, r0, #0xc
lsr r0, r0, #0x1f
bne _0220DF68
add r0, r4, #0
mov r1, #1
bl ov96_0220D554
mov r0, #1
ldr r1, [r5, #0x18]
lsl r0, r0, #0x12
orr r1, r0
ldr r0, _0220E1FC ; =0xFFFF00FF
and r1, r0
mov r0, #6
lsl r0, r0, #8
orr r0, r1
str r0, [r5, #0x18]
mov r0, #1
lsl r0, r0, #0xc
str r0, [r5, #0x14]
ldr r0, _0220E200 ; =0x0000089E
bl PlaySE
b _0220DFC6
_0220DF68:
ldr r0, [sp, #0x18]
cmp r0, #0
bne _0220DFC6
ldr r0, [r5, #0x18]
lsl r0, r0, #0xc
lsr r0, r0, #0x1f
cmp r0, #1
bne _0220DFC6
ldr r1, [sp, #0x3c]
ldr r2, [sp, #0x38]
lsl r1, r1, #0x10
lsl r2, r2, #0x10
mov r3, #0x1e
ldr r0, [r5]
asr r1, r1, #0x10
asr r2, r2, #0x10
lsl r3, r3, #0x10
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
ldr r0, [r5]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r5]
bl UnkImageStruct_ResetSpriteAnimCtrlState
add r0, r4, #0
mov r1, #0
bl ov96_0220D554
mov r1, #0xfe
lsl r1, r1, #0x16
add r0, r4, #0
add r2, r1, #0
bl ov96_021EB10C
add r0, r4, #0
mov r1, #1
bl ov96_021EAB38
ldr r1, [r5, #0x18]
ldr r0, _0220E204 ; =0xFFFBFFFF
and r0, r1
str r0, [r5, #0x18]
ldr r0, _0220E208 ; =0x000008B6
bl PlaySE
_0220DFC6:
ldr r2, [r5, #0x18]
ldr r1, _0220E20C ; =0xFFF7FFFF
add r0, r5, #0
and r1, r2
ldr r2, [sp, #0x18]
add r0, #0x18
lsl r2, r2, #0x1f
lsr r2, r2, #0xc
orr r1, r2
str r1, [r5, #0x18]
lsl r1, r1, #0xd
lsr r1, r1, #0x1f
beq _0220E058
ldr r1, [r0]
ldr r2, _0220E1FC ; =0xFFFF00FF
and r2, r1
lsl r1, r1, #0x10
lsr r1, r1, #0x18
sub r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x10
orr r1, r2
str r1, [r0]
ldr r0, [r5, #0x18]
lsl r0, r0, #0x10
lsr r0, r0, #0x18
bne _0220E006
add r0, r4, #0
mov r1, #0
bl ov96_021EAB38
b _0220E1B4
_0220E006:
ldr r1, [r5, #0x14]
ldr r0, _0220E210 ; =0x0000019A
sub r0, r1, r0
str r0, [r5, #0x14]
bl _fflt
ldr r1, _0220E214 ; =0x45800000
bl _fdiv
add r1, r0, #0
add r0, r4, #0
add r2, r1, #0
bl ov96_021EB10C
add r0, sp, #0x30
str r0, [sp]
ldr r1, [sp, #0xc]
ldr r2, [sp, #0xc]
ldrb r1, [r1, #4]
ldrb r2, [r2, #0x10]
add r0, r4, #0
add r3, sp, #0x34
bl ov96_021EB06C
ldr r0, [sp, #0x30]
cmp r0, #0xb4
bge _0220E03E
b _0220E1B4
_0220E03E:
ldr r0, [r5, #0x18]
mov r3, #1
lsl r0, r0, #0x10
lsr r1, r0, #0x18
mov r0, #6
sub r0, r0, r1
lsl r2, r0, #2
ldr r1, [sp, #0x3c]
add r0, r4, #0
add r2, r7, r2
bl ov96_021EB01C
b _0220E1B4
_0220E058:
ldr r0, [sp, #4]
ldr r2, [sp, #0x38]
ldr r0, [r0, #0x1c]
mov r3, #1
lsl r0, r0, #8
lsr r1, r0, #8
ldr r0, [sp, #0x10]
lsr r1, r0
mov r0, #3
and r0, r1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
ldr r1, [sp, #0x3c]
add r0, r4, #0
bl ov96_021EB01C
add r0, r4, #0
add r1, r7, #1
bl ov96_021EAC0C
ldr r0, [sp, #4]
ldr r0, [r0, #0x20]
lsl r0, r0, #1
lsr r0, r0, #0x14
add r1, r0, #0
lsr r1, r6
mov r0, #1
tst r0, r1
beq _0220E10C
add r0, r6, #0
mov r1, #3
bl _s32_div_f
str r0, [sp, #0x20]
add r0, r6, #0
mov r1, #3
bl _s32_div_f
add r2, r1, #0
ldr r1, [sp, #0x20]
lsl r2, r2, #0x18
lsl r1, r1, #0x18
ldr r0, [sp, #8]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_0220F378
add r7, r0, #0
ldr r0, [sp, #8]
bl ov96_021E5F24
ldr r1, [sp, #0x20]
cmp r1, r0
bne _0220E0E6
ldr r0, [r5, #0x18]
lsl r1, r0, #0xf
lsr r1, r1, #0x1f
bne _0220E0E6
lsl r0, r0, #0xe
lsr r0, r0, #0x1f
bne _0220E0E6
ldrb r0, [r7, #2]
cmp r0, #0
bne _0220E0E0
ldr r0, _0220E218 ; =0x000005F3
bl PlaySE
b _0220E0E6
_0220E0E0:
ldr r0, _0220E21C ; =0x000008C5
bl PlaySE
_0220E0E6:
ldrb r0, [r7, #2]
cmp r0, #0
bne _0220E100
add r0, r5, #4
add r1, r4, #0
bl ov96_0220D52C
mov r0, #2
ldr r1, [r5, #0x18]
lsl r0, r0, #0x10
orr r0, r1
str r0, [r5, #0x18]
b _0220E114
_0220E100:
mov r0, #1
ldr r1, [r5, #0x18]
lsl r0, r0, #0x10
orr r0, r1
str r0, [r5, #0x18]
b _0220E114
_0220E10C:
ldr r1, [r5, #0x18]
ldr r0, _0220E220 ; =0xFFFDFFFF
and r0, r1
str r0, [r5, #0x18]
_0220E114:
ldr r0, [r5, #0x18]
lsl r0, r0, #0xf
lsr r0, r0, #0x1f
beq _0220E1B4
add r0, r6, #0
mov r1, #3
bl _s32_div_f
add r7, r0, #0
add r0, r6, #0
mov r1, #3
bl _s32_div_f
add r2, r1, #0
lsl r1, r7, #0x18
lsl r2, r2, #0x18
ldr r0, [sp, #8]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_0220F378
ldr r1, [r5, #0x18]
add r2, sp, #0x2c
lsl r1, r1, #0x18
lsr r1, r1, #0x18
add r7, r0, #0
bl ov96_0220E8C0
add r3, r0, #0
ldr r2, [sp, #0x38]
ldr r1, [sp, #0x3c]
add r2, r2, r3
add r0, r4, #0
mov r3, #0
bl ov96_021EB01C
ldr r1, [sp, #0x2c]
add r0, r4, #0
add r2, r1, #0
bl ov96_021EB10C
add r0, r7, #0
bl ov96_0220F3B4
ldr r7, [r5, #0x18]
add r3, r0, #0
add r2, r5, #0
ldr r0, [sp, #0x24]
add r1, r7, #0
bic r1, r0
lsl r0, r7, #0x18
lsr r0, r0, #0x18
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
orr r0, r1
str r0, [r5, #0x18]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r2, #0x18
cmp r0, r3
bls _0220E1B4
ldr r1, [r2]
ldr r0, _0220E224 ; =0xFFFEFFFF
mov r3, #0
and r1, r0
ldr r0, [sp, #0x28]
bic r1, r0
str r1, [r2]
ldr r1, [sp, #0x3c]
ldr r2, [sp, #0x38]
add r0, r4, #0
bl ov96_021EB01C
mov r1, #0xfe
lsl r1, r1, #0x16
add r0, r4, #0
add r2, r1, #0
bl ov96_021EB10C
_0220E1B4:
ldr r0, [sp, #0x14]
add r6, r6, #1
add r0, #8
str r0, [sp, #0x14]
ldr r0, [sp, #0x10]
add r5, #0x1c
add r0, r0, #2
str r0, [sp, #0x10]
cmp r6, #0xc
bge _0220E1CA
b _0220DEDE
_0220E1CA:
mov r0, #0
str r0, [sp]
ldr r3, _0220E228 ; =ov96_0220DE90
add r0, sp, #0x40
mov r1, #0xc
mov r2, #8
bl MATH_QSort
mov r5, #0
add r4, sp, #0x40
_0220E1DE:
ldr r0, [r4, #4]
cmp r0, #0
bne _0220E1E8
bl GF_AssertFail
_0220E1E8:
ldr r0, [r4, #4]
add r1, r5, #7
bl ov96_021EABA8
add r5, r5, #1
add r4, #8
cmp r5, #0xc
blt _0220E1DE
add sp, #0xa0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0220E1FC: .word 0xFFFF00FF
_0220E200: .word 0x0000089E
_0220E204: .word 0xFFFBFFFF
_0220E208: .word 0x000008B6
_0220E20C: .word 0xFFF7FFFF
_0220E210: .word 0x0000019A
_0220E214: .word 0x45800000
_0220E218: .word 0x000005F3
_0220E21C: .word 0x000008C5
_0220E220: .word 0xFFFDFFFF
_0220E224: .word 0xFFFEFFFF
_0220E228: .word ov96_0220DE90
thumb_func_end ov96_0220DEAC
thumb_func_start ov96_0220E22C
ov96_0220E22C: ; 0x0220E22C
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r6, r0, #0
add r5, r1, #0
bl ov96_021E5DC4
add r4, r0, #0
ldr r0, _0220E2A0 ; =0x000006A4
ldr r1, [r4, #8]
ldr r2, [r4]
add r0, r4, r0
bl ov96_0220EFD0
ldrb r0, [r5]
cmp r0, #0
beq _0220E256
cmp r0, #1
beq _0220E272
cmp r0, #2
beq _0220E282
b _0220E296
_0220E256:
mov r0, #6
mov r1, #1
str r0, [sp]
str r1, [sp, #4]
ldr r0, [r4]
ldr r3, _0220E2A4 ; =0x00007FFF
str r0, [sp, #8]
mov r0, #0
add r2, r1, #0
bl BeginNormalPaletteFade
ldrb r0, [r5]
add r0, r0, #1
strb r0, [r5]
_0220E272:
bl IsPaletteFadeFinished
cmp r0, #0
beq _0220E29A
ldrb r0, [r5]
add r0, r0, #1
strb r0, [r5]
b _0220E29A
_0220E282:
add r0, r6, #0
bl ov96_021E637C
cmp r0, #0
beq _0220E29A
add r0, r6, #0
mov r1, #1
bl ov96_021E5FC8
b _0220E29A
_0220E296:
bl GF_AssertFail
_0220E29A:
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
_0220E2A0: .word 0x000006A4
_0220E2A4: .word 0x00007FFF
thumb_func_end ov96_0220E22C
thumb_func_start ov96_0220E2A8
ov96_0220E2A8: ; 0x0220E2A8
push {r3, r4, r5, lr}
add r4, r0, #0
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
add r0, r4, #0
bl ov96_021E5DC4
add r0, #0xc4
ldr r0, [r0]
bl ov96_022104C4
lsl r0, r0, #0x18
lsr r5, r0, #0x18
add r0, r4, #0
add r1, r5, #0
bl ov96_021E8318
add r0, r4, #0
add r1, r5, #0
bl ov96_0220E9A0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_0220E2A8
thumb_func_start ov96_0220E2DC
ov96_0220E2DC: ; 0x0220E2DC
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r5, r0, #0
add r6, r1, #0
bl ov96_021E5DC4
add r4, r0, #0
ldr r0, _0220E38C ; =0x000006A4
ldr r1, [r4, #8]
ldr r2, [r4]
add r0, r4, r0
bl ov96_0220EFD0
ldrb r0, [r6]
cmp r0, #0
beq _0220E302
cmp r0, #1
beq _0220E31A
b _0220E382
_0220E302:
add r0, r5, #0
bl ov96_0220F03C
add r0, r5, #0
bl ov96_0220F1CC
cmp r0, #0
beq _0220E386
ldrb r0, [r6]
add r0, r0, #1
strb r0, [r6]
b _0220E386
_0220E31A:
add r0, r5, #0
bl ov96_0220F03C
add r0, r5, #0
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
add r2, r0, #0
ldr r1, [r2, #0x1c]
ldr r2, [r2, #0x20]
add r0, r4, #0
lsl r2, r2, #0x19
add r0, #0xc4
lsr r1, r1, #0x1e
lsr r2, r2, #0x19
lsl r1, r1, #0x18
lsl r2, r2, #0x10
ldr r0, [r0]
lsr r1, r1, #0x18
lsr r2, r2, #0x10
bl ov96_02210324
add r0, r5, #0
bl ov96_021E667C
cmp r0, #0
beq _0220E386
ldr r0, _0220E390 ; =0x000006A8
add r0, r4, r0
bl ov96_0220D408
cmp r0, #0
beq _0220E386
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4]
str r0, [sp, #8]
mov r0, #0
add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
bl BeginNormalPaletteFade
add r0, r5, #0
mov r1, #2
bl ov96_021E5FC8
b _0220E386
_0220E382:
bl GF_AssertFail
_0220E386:
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
_0220E38C: .word 0x000006A4
_0220E390: .word 0x000006A8
thumb_func_end ov96_0220E2DC
thumb_func_start ov96_0220E394
ov96_0220E394: ; 0x0220E394
push {r4, r5, r6, lr}
add r4, r1, #0
add r6, r0, #0
bl ov96_021E5DC4
ldrb r0, [r4]
cmp r0, #0
bne _0220E3E6
bl IsPaletteFadeFinished
cmp r0, #0
beq _0220E3EA
add r0, r6, #0
bl ov96_021E5F24
add r4, r0, #0
add r0, r6, #0
bl ov96_021E5DC4
cmp r4, #0
bne _0220E3E2
mov r1, #0x8f
lsl r1, r1, #2
mov r4, #0
add r5, r0, r1
_0220E3C6:
ldr r2, [r5]
lsl r1, r4, #0x18
lsl r2, r2, #0xe
lsr r2, r2, #0x10
lsl r2, r2, #0x10
add r0, r6, #0
lsr r1, r1, #0x18
lsr r2, r2, #0x10
bl ov96_021E5FB0
add r4, r4, #1
add r5, #0xe4
cmp r4, #4
blt _0220E3C6
_0220E3E2:
mov r0, #1
pop {r4, r5, r6, pc}
_0220E3E6:
bl GF_AssertFail
_0220E3EA:
mov r0, #0
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_0220E394
thumb_func_start ov96_0220E3F0
ov96_0220E3F0: ; 0x0220E3F0
push {r4, r5, r6, lr}
sub sp, #0x10
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
add r0, r5, #0
bl ov96_021E5DD4
cmp r0, #3
bls _0220E408
b _0220E5C6
_0220E408:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0220E414: ; jump table
.short _0220E41C - _0220E414 - 2 ; case 0
.short _0220E488 - _0220E414 - 2 ; case 1
.short _0220E4C4 - _0220E414 - 2 ; case 2
.short _0220E4F6 - _0220E414 - 2 ; case 3
_0220E41C:
mov r2, #6
mov r0, #0x5c
mov r1, #0x8e
lsl r2, r2, #0x10
bl CreateHeap
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
bl GfGfx_DisableEngineAPlanes
bl GfGfx_DisableEngineBPlanes
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _0220E5D0 ; =0xFFFFE0FF
and r1, r0
str r1, [r2]
ldr r2, _0220E5D4 ; =0x04001000
ldr r1, [r2]
and r0, r1
str r0, [r2]
bl ov96_0220E868
ldr r0, _0220E5D8 ; =gSystem + 0x60
mov r1, #1
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
ldr r1, _0220E5DC ; =0x000006BC
add r0, r5, #0
bl ov96_021E5D94
ldr r2, _0220E5DC ; =0x000006BC
mov r1, #0
add r4, r0, #0
bl MI_CpuFill8
mov r0, #0x8e
str r0, [r4]
ldr r1, _0220E5E0 ; =0x00000708
ldr r0, _0220E5E4 ; =0x0000050C
str r5, [r4, #4]
str r1, [r4, r0]
add r0, r5, #0
bl ov96_021E5DEC
b _0220E5CA
_0220E488:
ldr r0, [r4]
bl BgConfig_Alloc
str r0, [r4, #8]
add r0, r5, #0
mov r1, #4
bl ov96_021E6670
add r0, r4, #0
bl ov96_0220ED9C
add r0, r4, #0
bl ov96_0220EE8C
add r0, r4, #0
bl ov96_0221022C
mov r0, #2
bl sub_0203A994
add r0, r4, #0
bl ov96_0220EA08
add r0, r4, #0
bl ov96_0220F3FC
add r0, r5, #0
bl ov96_021E5DEC
b _0220E5CA
_0220E4C4:
ldr r0, [r4, #0x20]
bl ov96_021EAA00
cmp r0, #0
beq _0220E5CA
add r0, r4, #0
bl ov96_0220EB3C
ldr r0, [r4, #0x10]
bl sub_0200E2B0
add r3, r0, #0
ldr r2, [r4, #0x1c]
add r0, r5, #0
mov r1, #0
bl ov96_021E61D8
ldr r0, [r0]
mov r1, #0
bl Sprite_SetDrawPriority
add r0, r5, #0
bl ov96_021E5DEC
b _0220E5CA
_0220E4F6:
add r0, r5, #0
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r1, r0, #0x18
ldr r0, [r4, #0x14]
str r0, [sp]
str r1, [sp, #4]
ldr r0, [r4]
str r0, [sp, #8]
str r5, [sp, #0xc]
ldr r0, [r4, #0xc]
ldr r1, [r4, #0x10]
ldr r2, [r4, #8]
ldr r3, [r4, #0x18]
bl ov96_02210240
add r1, r4, #0
add r1, #0xc4
str r0, [r1]
add r3, r4, #0
mov r0, #0x51
add r3, #0xc4
lsl r0, r0, #4
ldr r1, [r4, #0xc]
ldr r2, [r4, #0x10]
ldr r3, [r3]
add r0, r4, r0
bl ov96_0221007C
ldr r1, [r4]
add r0, r5, #0
bl ov96_022107F0
add r1, r4, #0
add r1, #0xc8
str r0, [r1]
add r0, r5, #0
bl ov96_021E64B8
ldr r0, _0220E5E8 ; =0x000006A8
ldr r1, [r4, #8]
ldr r2, [r4, #0xc]
add r0, r4, r0
bl ov96_0220D420
ldr r0, [r4, #8]
bl ov96_021E6030
add r0, r5, #0
mov r1, #1
bl ov96_021E5DFC
add r0, r4, #0
bl ov96_0220F4A0
add r0, r5, #0
bl ov96_021E5F24
cmp r0, #0
bne _0220E5A2
add r0, r5, #0
bl ov96_021E5F54
add r0, #0x28
bl ov96_021E8A20
add r6, r0, #0
ldr r0, _0220E5E4 ; =0x0000050C
mov r1, #0x1e
ldr r0, [r4, r0]
add r0, #0x1e
bl _s32_div_f
lsl r0, r0, #0x1a
ldr r2, [r6, #0x1c]
ldr r1, _0220E5EC ; =0xC0FFFFFF
lsr r0, r0, #2
and r1, r2
orr r0, r1
str r0, [r6, #0x1c]
add r0, r4, #0
add r0, #0xcc
add r1, r5, #0
bl ov96_0220FA18
_0220E5A2:
ldr r0, _0220E5F0 ; =0x000004EC
mov r1, #0x57
lsl r1, r1, #2
add r0, r4, r0
add r1, r4, r1
bl ov96_0220FF64
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineATogglePlanes
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineBTogglePlanes
add sp, #0x10
mov r0, #1
pop {r4, r5, r6, pc}
_0220E5C6:
bl GF_AssertFail
_0220E5CA:
mov r0, #0
add sp, #0x10
pop {r4, r5, r6, pc}
.balign 4, 0
_0220E5D0: .word 0xFFFFE0FF
_0220E5D4: .word 0x04001000
_0220E5D8: .word gSystem + 0x60
_0220E5DC: .word 0x000006BC
_0220E5E0: .word 0x00000708
_0220E5E4: .word 0x0000050C
_0220E5E8: .word 0x000006A8
_0220E5EC: .word 0xC0FFFFFF
_0220E5F0: .word 0x000004EC
thumb_func_end ov96_0220E3F0
thumb_func_start ov96_0220E5F4
ov96_0220E5F4: ; 0x0220E5F4
push {r4, lr}
bl ov96_021E5DC4
add r4, r0, #0
bne _0220E602
bl GF_AssertFail
_0220E602:
ldr r0, [r4, #0x10]
bl sub_0200D020
mov r0, #1
pop {r4, pc}
thumb_func_end ov96_0220E5F4
thumb_func_start ov96_0220E60C
ov96_0220E60C: ; 0x0220E60C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
bl ov96_021E6040
add r6, r0, #0
bl ov96_021E9510
mov r4, #0
add r7, r4, #0
_0220E620:
lsl r1, r4, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
bl ov96_021E5FBC
add r3, r0, #0
str r7, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, _0220E66C ; =0x00000127
add r1, r6, #0
str r0, [sp, #8]
add r0, r5, #0
add r2, r4, #0
bl ov96_021E95F8
add r4, r4, #1
cmp r4, #4
blt _0220E620
add r0, r6, #0
mov r1, #1
bl ov96_021E93B4
add r0, r6, #0
mov r1, #4
bl ov96_0221A56C
add r0, r6, #0
bl ov96_021E952C
add r0, r6, #0
mov r1, #4
bl ov96_021E9570
mov r0, #1
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
_0220E66C: .word 0x00000127
thumb_func_end ov96_0220E60C
thumb_func_start ov96_0220E670
ov96_0220E670: ; 0x0220E670
push {r3, r4, r5, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
add r0, r5, #0
bl ov96_021E6550
add r0, r4, #0
add r0, #0xc8
ldr r0, [r0]
bl ov96_02210850
add r0, r4, #0
add r0, #0xc4
ldr r0, [r0]
bl ov96_022102D4
mov r0, #0x51
lsl r0, r0, #4
add r0, r4, r0
bl ov96_022101D0
add r0, r4, #0
bl ov96_0220EAA4
add r0, r4, #0
bl ov96_0220EE4C
bl sub_0203A914
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
add r0, r5, #0
bl ov96_021E5DAC
ldr r0, _0220E6D8 ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
mov r0, #0x8e
bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.balign 4, 0
_0220E6D8: .word gSystem + 0x60
thumb_func_end ov96_0220E670
thumb_func_start ov96_0220E6DC
ov96_0220E6DC: ; 0x0220E6DC
push {r3, r4, r5, lr}
add r5, r0, #0
sub r0, r1, #7
add r1, r5, #0
mul r1, r0
mov r0, #0x26
mul r0, r1
mov r1, #0xfa
lsl r1, r1, #2
bl _s32_div_f
add r0, #0x80
lsl r0, r0, #0x10
asr r4, r0, #0x10
lsl r0, r5, #0x11
lsr r0, r0, #0x10
bl GF_SinDeg
lsl r0, r0, #6
asr r0, r0, #0x10
add r0, r4, r0
lsl r0, r0, #0x10
asr r0, r0, #0x10
pop {r3, r4, r5, pc}
thumb_func_end ov96_0220E6DC
thumb_func_start ov96_0220E70C
ov96_0220E70C: ; 0x0220E70C
push {r4, r5, r6, lr}
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
cmp r5, #0
bne _0220E71C
bl GF_AssertFail
_0220E71C:
cmp r4, #4
blo _0220E724
bl GF_AssertFail
_0220E724:
cmp r6, #3
blo _0220E72C
bl GF_AssertFail
_0220E72C:
mov r2, #0xe4
add r1, r4, #0
mul r1, r2
add r3, r5, r1
mov r1, #0x48
mul r1, r6
add r1, r3, r1
add r2, #0x8c
ldr r1, [r1, r2]
mov r0, #1
cmp r1, #2
beq _0220E74A
cmp r1, #1
beq _0220E74A
mov r0, #0
_0220E74A:
pop {r4, r5, r6, pc}
thumb_func_end ov96_0220E70C
thumb_func_start ov96_0220E74C
ov96_0220E74C: ; 0x0220E74C
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
cmp r5, #0
bne _0220E75A
bl GF_AssertFail
_0220E75A:
cmp r4, #2
blo _0220E762
bl GF_AssertFail
_0220E762:
mov r0, #0x4f
lsl r0, r0, #4
add r1, r5, r0
mov r0, #0xc
mul r0, r4
add r0, r1, r0
pop {r3, r4, r5, pc}
thumb_func_end ov96_0220E74C
thumb_func_start ov96_0220E770
ov96_0220E770: ; 0x0220E770
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
cmp r5, #0
bne _0220E782
bl GF_AssertFail
_0220E782:
cmp r4, #4
blo _0220E78A
bl GF_AssertFail
_0220E78A:
cmp r6, #3
blo _0220E792
bl GF_AssertFail
_0220E792:
mov r0, #0x59
lsl r0, r0, #2
add r1, r5, r0
mov r0, #0xe4
mul r0, r4
add r1, r1, r0
mov r0, #0x48
mul r0, r6
add r1, r1, r0
ldr r0, [r1, #0x1c]
asr r0, r0, #0xc
strh r0, [r7]
ldr r0, [r1, #0x20]
asr r0, r0, #0xc
strh r0, [r7, #2]
ldr r0, [r1, #4]
bl ov96_021EAF8C
ldr r1, [sp, #0x18]
str r0, [r1]
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_0220E770
thumb_func_start ov96_0220E7BC
ov96_0220E7BC: ; 0x0220E7BC
push {r4, r5, r6, lr}
add r6, r0, #0
add r5, r1, #0
mov r4, #0
cmp r6, #0
bne _0220E7CC
bl GF_AssertFail
_0220E7CC:
add r0, r6, #0
bl ov96_021E5DC4
add r6, r0, #0
bne _0220E7DA
bl GF_AssertFail
_0220E7DA:
mov r1, #0xe4
mul r1, r5
mov r2, #0x8f
add r1, r6, r1
lsl r2, r2, #2
ldr r1, [r1, r2]
mov r0, #0
lsl r1, r1, #0xe
lsr r1, r1, #0x10
lsl r1, r1, #0x10
lsr r1, r1, #0x10
add r2, r6, r2
_0220E7F2:
ldr r3, [r2]
lsl r3, r3, #0xe
lsr r3, r3, #0x10
lsl r3, r3, #0x10
lsr r3, r3, #0x10
cmp r0, r5
beq _0220E80A
cmp r1, r3
bhs _0220E80A
add r3, r4, #1
lsl r3, r3, #0x18
lsr r4, r3, #0x18
_0220E80A:
add r0, r0, #1
add r2, #0xe4
cmp r0, #4
blt _0220E7F2
add r0, r4, #0
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_0220E7BC
thumb_func_start ov96_0220E818
ov96_0220E818: ; 0x0220E818
push {r4, lr}
mov r4, #0x59
lsl r4, r4, #2
add r4, r0, r4
mov r0, #0xe4
mul r0, r2
add r2, r4, r0
mov r0, #0x48
mul r0, r3
add r0, r2, r0
bl ov96_0220D6B0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_0220E818
thumb_func_start ov96_0220E834
ov96_0220E834: ; 0x0220E834
mov r3, #0x59
lsl r3, r3, #2
add r3, r0, r3
mov r0, #0xe4
mul r0, r1
add r1, r3, r0
mov r0, #0x48
mul r0, r2
ldr r3, _0220E84C ; =ov96_0220D630
add r0, r1, r0
bx r3
nop
_0220E84C: .word ov96_0220D630
thumb_func_end ov96_0220E834
thumb_func_start ov96_0220E850
ov96_0220E850: ; 0x0220E850
mov r2, #0xe4
mul r2, r1
add r1, r0, r2
mov r0, #0x8f
lsl r0, r0, #2
ldr r0, [r1, r0]
lsl r0, r0, #0xe
lsr r0, r0, #0x10
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
.balign 4, 0
thumb_func_end ov96_0220E850
thumb_func_start ov96_0220E868
ov96_0220E868: ; 0x0220E868
push {r4, lr}
sub sp, #0x28
ldr r4, _0220E884 ; =ov96_0221CF94
add r3, sp, #0
mov r2, #5
_0220E872:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _0220E872
add r0, sp, #0
bl GfGfx_SetBanks
add sp, #0x28
pop {r4, pc}
.balign 4, 0
_0220E884: .word ov96_0221CF94
thumb_func_end ov96_0220E868
thumb_func_start ov96_0220E888
ov96_0220E888: ; 0x0220E888
add r1, r0, #0
mul r1, r0
add r0, r1, #0
bx lr
thumb_func_end ov96_0220E888
thumb_func_start ov96_0220E890
ov96_0220E890: ; 0x0220E890
ldr r2, [r0]
cmp r2, #0
beq _0220E8BC
bge _0220E89C
neg r3, r2
b _0220E89E
_0220E89C:
add r3, r2, #0
_0220E89E:
cmp r3, r1
bge _0220E8A8
mov r1, #0
str r1, [r0]
bx lr
_0220E8A8:
cmp r2, #0
ble _0220E8B0
mov r2, #1
b _0220E8B4
_0220E8B0:
mov r2, #0
mvn r2, r2
_0220E8B4:
ldr r3, [r0]
mul r2, r1
sub r1, r3, r2
str r1, [r0]
_0220E8BC:
bx lr
.balign 4, 0
thumb_func_end ov96_0220E890
thumb_func_start ov96_0220E8C0
ov96_0220E8C0: ; 0x0220E8C0
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
mov r7, #0xfe
add r5, r0, #0
add r4, r1, #0
str r2, [sp]
mov r6, #0
lsl r7, r7, #0x16
cmp r5, #0
bne _0220E8D8
bl GF_AssertFail
_0220E8D8:
ldrb r0, [r5]
str r0, [sp, #4]
sub r0, r4, r0
bl ov96_0220E888
add r4, r0, #0
ldr r0, [sp, #4]
bl ov96_0220E888
sub r4, r4, r0
beq _0220E94E
ldrb r0, [r5, #1]
cmp r0, #0
beq _0220E906
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
mov r0, #0x3f
lsl r0, r0, #0x18
bl _fadd
b _0220E914
_0220E906:
lsl r0, r0, #0xc
bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
bl _fsub
_0220E914:
bl _ffix
cmp r0, #0
beq _0220E94E
mov r1, #0xa
bl _s32_div_f
add r6, r0, #0
ldr r0, _0220E958 ; =0xFFFE8000
mul r6, r4
cmp r6, r0
bgt _0220E92E
add r6, r0, #0
_0220E92E:
mov r0, #1
lsl r0, r0, #0xe
sub r0, r6, r0
mov r1, #0x64
bl _s32_div_f
bl _fflt
ldr r1, _0220E95C ; =0x45800000
bl _fdiv
add r1, r0, #0
add r0, r7, #0
bl _fsub
add r7, r0, #0
_0220E94E:
ldr r0, [sp]
str r7, [r0]
asr r0, r6, #0xc
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0220E958: .word 0xFFFE8000
_0220E95C: .word 0x45800000
thumb_func_end ov96_0220E8C0
thumb_func_start ov96_0220E960
ov96_0220E960: ; 0x0220E960
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r2, #0
bl ov96_0220E890
add r0, r5, #4
add r1, r4, #0
bl ov96_0220E890
pop {r3, r4, r5, pc}
thumb_func_end ov96_0220E960
thumb_func_start ov96_0220E974
ov96_0220E974: ; 0x0220E974
ldr r2, [r0]
neg r3, r1
cmp r2, #0
ble _0220E984
cmp r2, r1
ble _0220E98A
str r1, [r0]
b _0220E98A
_0220E984:
cmp r2, r3
bge _0220E98A
str r3, [r0]
_0220E98A:
ldr r2, [r0, #4]
cmp r2, #0
ble _0220E998
cmp r2, r1
ble _0220E99E
str r1, [r0, #4]
bx lr
_0220E998:
cmp r2, r3
bge _0220E99E
str r3, [r0, #4]
_0220E99E:
bx lr
thumb_func_end ov96_0220E974
thumb_func_start ov96_0220E9A0
ov96_0220E9A0: ; 0x0220E9A0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r7, r1, #0
bl ov96_021E5DC4
add r4, r0, #0
ldr r5, [r4, #0x14]
ldr r6, [r4, #0x18]
add r0, #0x24
mov r1, #0
bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
mov r0, #1
str r0, [sp, #4]
add r0, r5, #0
add r2, r7, #0
mov r3, #3
bl BufferIntegerAsString
ldr r3, [r4]
add r0, r5, #0
add r1, r6, #0
mov r2, #0xa0
bl ReadMsgData_ExpandPlaceholders
add r5, r0, #0
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _0220EA04 ; =0x000F0E00
mov r1, #4
str r0, [sp, #8]
add r0, r4, #0
add r0, #0x24
add r2, r5, #0
str r3, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r5, #0
bl String_Delete
add r4, #0x24
add r0, r4, #0
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0220EA04: .word 0x000F0E00
thumb_func_end ov96_0220E9A0
thumb_func_start ov96_0220EA08
ov96_0220EA08: ; 0x0220EA08
push {r3, r4, lr}
sub sp, #0x4c
ldr r3, _0220EA94 ; =ov96_0221CF40
add r4, r0, #0
ldmia r3!, {r0, r1}
add r2, sp, #0x34
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r3, _0220EA98 ; =ov96_0221CF74
add r2, sp, #0x14
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r3, _0220EA9C ; =ov96_0221CF2C
add r2, sp, #0
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
mov r0, #0x80
str r0, [sp]
ldr r0, [r4]
bl SpriteRenderer_Create
str r0, [r4, #0xc]
bl SpriteRenderer_CreateGfxHandler
str r0, [r4, #0x10]
ldr r0, [r4, #0xc]
add r1, sp, #0x14
add r2, sp, #0
mov r3, #0x20
bl sub_0200CF70
ldr r0, [r4, #0xc]
ldr r1, [r4, #0x10]
mov r2, #0x80
bl sub_0200CFF4
ldr r0, [r4, #0xc]
ldr r1, [r4, #0x10]
add r2, sp, #0x34
bl SpriteRenderer_Init2DGfxResManagersFromCountsArray
ldr r0, [r4, #0xc]
bl SpriteRenderer_GetG2dRendererPtr
mov r2, #0x1e
mov r1, #0
lsl r2, r2, #0x10
bl G2dRenderer_SetSubSurfaceCoords
ldr r0, [r4]
ldr r1, _0220EAA0 ; =0x00000AA7
mov r2, #1
bl ov96_021E9A78
str r0, [r4, #0x1c]
add sp, #0x4c
pop {r3, r4, pc}
.balign 4, 0
_0220EA94: .word ov96_0221CF40
_0220EA98: .word ov96_0221CF74
_0220EA9C: .word ov96_0221CF2C
_0220EAA0: .word 0x00000AA7
thumb_func_end ov96_0220EA08
thumb_func_start ov96_0220EAA4
ov96_0220EAA4: ; 0x0220EAA4
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x20]
bl ov96_021EA894
ldr r0, [r4, #0x1c]
bl ov96_021E9C0C
ldr r0, [r4, #0xc]
ldr r1, [r4, #0x10]
bl SpriteRenderer_UnloadResourcesAndRemoveGfxHandler
ldr r0, [r4, #0xc]
bl SpriteRenderer_Delete
pop {r4, pc}
thumb_func_end ov96_0220EAA4
thumb_func_start ov96_0220EAC4
ov96_0220EAC4: ; 0x0220EAC4
push {r4, r5, r6, r7, lr}
sub sp, #0xc
str r0, [sp]
ldr r0, [r0, #0x20]
mov r1, #1
bl ov96_021EB144
ldr r0, [sp]
add r0, #0xc4
ldr r0, [r0]
bl ov96_0221031C
mov r4, #0
ldr r5, [sp]
ldr r6, _0220EB34 ; =0x0000054C
add r7, r4, #0
_0220EAE4:
ldr r0, [r5, r6]
add r1, r7, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r4, r4, #1
add r5, #0x1c
cmp r4, #0xc
blt _0220EAE4
mov r0, #0
str r0, [sp, #4]
ldr r1, _0220EB38 ; =0x00000514
ldr r0, [sp]
mov r6, #0
add r0, r0, r1
str r0, [sp, #8]
add r7, r6, #0
_0220EB04:
ldr r5, [sp, #8]
mov r4, #0
_0220EB08:
ldr r0, [r5]
add r1, r6, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
ldr r0, [r5, #8]
add r1, r7, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r4, r4, #1
add r5, r5, #4
cmp r4, #2
blt _0220EB08
ldr r0, [sp, #8]
add r0, #0x1c
str r0, [sp, #8]
ldr r0, [sp, #4]
add r0, r0, #1
str r0, [sp, #4]
cmp r0, #2
blt _0220EB04
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_0220EB34: .word 0x0000054C
_0220EB38: .word 0x00000514
thumb_func_end ov96_0220EAC4
thumb_func_start ov96_0220EB3C
ov96_0220EB3C: ; 0x0220EB3C
push {r4, r5, r6, lr}
sub sp, #0x10
ldr r4, [r0, #0xc]
ldr r5, [r0, #0x10]
cmp r4, #0
bne _0220EB4C
bl GF_AssertFail
_0220EB4C:
cmp r5, #0
bne _0220EB54
bl GF_AssertFail
_0220EB54:
mov r6, #1
str r6, [sp]
ldr r0, _0220EC94 ; =0x00002710
str r6, [sp, #4]
str r0, [sp, #8]
add r0, r4, #0
add r1, r5, #0
mov r2, #0xed
mov r3, #0x16
bl SpriteRenderer_LoadCharResObjFromNarcId
mov r0, #0
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, _0220EC94 ; =0x00002710
str r6, [sp, #8]
str r0, [sp, #0xc]
add r0, r4, #0
add r1, r5, #0
mov r2, #0xed
mov r3, #0x13
bl SpriteRenderer_LoadPlttResObjFromNarcId
add r0, r6, #0
str r0, [sp]
ldr r0, _0220EC94 ; =0x00002710
add r1, r5, #0
str r0, [sp, #4]
add r0, r4, #0
mov r2, #0xed
mov r3, #0x15
bl SpriteRenderer_LoadCellResObjFromNarcId
add r0, r6, #0
str r0, [sp]
ldr r0, _0220EC94 ; =0x00002710
add r1, r5, #0
str r0, [sp, #4]
add r0, r4, #0
mov r2, #0xed
mov r3, #0x14
bl SpriteRenderer_LoadAnimResObjFromNarcId
mov r0, #1
str r0, [sp]
mov r6, #2
ldr r0, _0220EC98 ; =0x00002711
str r6, [sp, #4]
str r0, [sp, #8]
add r0, r4, #0
add r1, r5, #0
mov r2, #0xed
mov r3, #0x1a
bl SpriteRenderer_LoadCharResObjFromNarcId
mov r0, #0
str r0, [sp]
mov r0, #4
str r0, [sp, #4]
ldr r0, _0220EC98 ; =0x00002711
str r6, [sp, #8]
str r0, [sp, #0xc]
add r0, r4, #0
add r1, r5, #0
mov r2, #0xed
mov r3, #0x17
bl SpriteRenderer_LoadPlttResObjFromNarcId
mov r0, #1
str r0, [sp]
ldr r0, _0220EC98 ; =0x00002711
add r1, r5, #0
str r0, [sp, #4]
add r0, r4, #0
mov r2, #0xed
mov r3, #0x19
bl SpriteRenderer_LoadCellResObjFromNarcId
mov r0, #1
str r0, [sp]
ldr r0, _0220EC98 ; =0x00002711
add r1, r5, #0
str r0, [sp, #4]
add r0, r4, #0
mov r2, #0xed
mov r3, #0x18
bl SpriteRenderer_LoadAnimResObjFromNarcId
mov r6, #1
str r6, [sp]
ldr r0, _0220EC9C ; =0x00002712
str r6, [sp, #4]
str r0, [sp, #8]
add r0, r4, #0
add r1, r5, #0
mov r2, #0xed
mov r3, #0x12
bl SpriteRenderer_LoadCharResObjFromNarcId
mov r0, #0
str r0, [sp]
add r0, r6, #0
str r0, [sp, #4]
ldr r0, _0220EC9C ; =0x00002712
str r6, [sp, #8]
str r0, [sp, #0xc]
add r0, r4, #0
add r1, r5, #0
mov r2, #0xed
mov r3, #0xf
bl SpriteRenderer_LoadPlttResObjFromNarcId
mov r0, #1
str r0, [sp]
mov r6, #2
ldr r0, _0220ECA0 ; =0x00002713
str r6, [sp, #4]
str r0, [sp, #8]
add r0, r4, #0
add r1, r5, #0
mov r2, #0xed
mov r3, #0x12
bl SpriteRenderer_LoadCharResObjFromNarcId
mov r0, #0
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, _0220ECA0 ; =0x00002713
str r6, [sp, #8]
str r0, [sp, #0xc]
add r0, r4, #0
add r1, r5, #0
mov r2, #0xed
mov r3, #0xf
bl SpriteRenderer_LoadPlttResObjFromNarcId
mov r0, #1
str r0, [sp]
ldr r0, _0220EC9C ; =0x00002712
add r1, r5, #0
str r0, [sp, #4]
add r0, r4, #0
mov r2, #0xed
mov r3, #0x11
bl SpriteRenderer_LoadCellResObjFromNarcId
mov r0, #1
str r0, [sp]
ldr r0, _0220EC9C ; =0x00002712
add r1, r5, #0
str r0, [sp, #4]
add r0, r4, #0
mov r2, #0xed
mov r3, #0x10
bl SpriteRenderer_LoadAnimResObjFromNarcId
add sp, #0x10
pop {r4, r5, r6, pc}
.balign 4, 0
_0220EC94: .word 0x00002710
_0220EC98: .word 0x00002711
_0220EC9C: .word 0x00002712
_0220ECA0: .word 0x00002713
thumb_func_end ov96_0220EB3C
thumb_func_start ov96_0220ECA4
ov96_0220ECA4: ; 0x0220ECA4
push {r4, r5, r6, r7, lr}
sub sp, #0x6c
ldr r4, _0220ED2C ; =ov96_0221CFEC
add r7, r2, #0
str r3, [sp]
add r5, r0, #0
add r6, r1, #0
add r3, sp, #0x38
mov r2, #6
_0220ECB6:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _0220ECB6
ldr r0, [r4]
ldr r4, _0220ED30 ; =ov96_0221D020
str r0, [r3]
add r3, sp, #4
mov r2, #6
_0220ECC8:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _0220ECC8
ldr r0, [r4]
str r0, [r3]
ldr r0, [sp, #0x88]
cmp r0, #0
beq _0220ECDE
add r4, sp, #4
b _0220ECE0
_0220ECDE:
add r4, sp, #0x38
_0220ECE0:
cmp r5, #0
bne _0220ECE8
bl GF_AssertFail
_0220ECE8:
cmp r6, #0
bne _0220ECF0
bl GF_AssertFail
_0220ECF0:
strh r7, [r4]
ldr r0, [sp]
mov r3, #0x1e
strh r0, [r4, #2]
add r0, sp, #0x70
ldrh r1, [r0, #0x10]
add r2, r4, #0
lsl r3, r3, #0x10
strh r1, [r4, #6]
ldrh r0, [r0, #0x14]
add r1, r6, #0
str r0, [r4, #8]
add r0, r5, #0
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
add r4, r0, #0
mov r1, #2
bl sub_0200DF98
add r0, r4, #0
mov r1, #1
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r0, r4, #0
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
add r0, r4, #0
add sp, #0x6c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_0220ED2C: .word ov96_0221CFEC
_0220ED30: .word ov96_0221D020
thumb_func_end ov96_0220ECA4
thumb_func_start ov96_0220ED34
ov96_0220ED34: ; 0x0220ED34
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
ldr r6, _0220ED98 ; =ov96_0221D054
add r7, r2, #0
str r3, [sp]
add r5, r0, #0
add r4, r1, #0
add r3, sp, #4
mov r2, #6
_0220ED46:
ldmia r6!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _0220ED46
ldr r0, [r6]
cmp r5, #0
str r0, [r3]
bne _0220ED5A
bl GF_AssertFail
_0220ED5A:
cmp r4, #0
bne _0220ED62
bl GF_AssertFail
_0220ED62:
add r1, sp, #4
strh r7, [r1]
ldr r0, [sp]
mov r3, #0x1e
strh r0, [r1, #2]
add r0, sp, #0x40
ldrh r2, [r0, #0x10]
lsl r3, r3, #0x10
strh r2, [r1, #6]
ldrh r0, [r0, #0x14]
add r1, r4, #0
add r2, sp, #4
str r0, [sp, #0xc]
add r0, r5, #0
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
add r4, r0, #0
mov r1, #1
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r0, r4, #0
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
add r0, r4, #0
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0220ED98: .word ov96_0221D054
thumb_func_end ov96_0220ED34
thumb_func_start ov96_0220ED9C
ov96_0220ED9C: ; 0x0220ED9C
push {r4, r5, r6, r7, lr}
sub sp, #0xdc
str r0, [sp]
ldr r6, [r0, #8]
ldr r0, [r0]
add r3, sp, #8
ldr r4, _0220EE3C ; =ov96_0221CF0C
str r0, [sp, #4]
add r2, r3, #0
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl SetBothScreensModesAndDisable
ldr r4, _0220EE40 ; =ov96_0221D088
add r3, sp, #0x18
mov r2, #0x18
_0220EDC2:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _0220EDC2
ldr r0, [r4]
ldr r5, _0220EE44 ; =ov96_0221CF58
str r0, [r3]
mov r7, #0
add r4, sp, #0x18
_0220EDD4:
ldr r1, [r5]
add r0, r6, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
add r2, r4, #0
mov r3, #0
bl InitBgFromTemplate
ldr r1, [r5]
add r0, r6, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl BgClearTilemapBufferAndCommit
ldr r0, [r5]
ldr r3, [sp, #4]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r1, #0x20
mov r2, #0
bl BG_ClearCharDataRange
add r7, r7, #1
add r4, #0x1c
add r5, r5, #4
cmp r7, #7
blt _0220EDD4
ldr r3, [sp]
ldr r2, _0220EE48 ; =0x00000135
ldr r3, [r3]
mov r0, #1
mov r1, #0x1b
bl NewMsgDataFromNarc
ldr r1, [sp]
str r0, [r1, #0x18]
add r0, r1, #0
ldr r0, [r0]
bl MessageFormat_New
ldr r1, [sp]
str r0, [r1, #0x14]
ldr r1, [r1]
mov r0, #4
bl FontID_Alloc
mov r0, #4
mov r1, #0
bl GfGfx_EngineATogglePlanes
add sp, #0xdc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_0220EE3C: .word ov96_0221CF0C
_0220EE40: .word ov96_0221D088
_0220EE44: .word ov96_0221CF58
_0220EE48: .word 0x00000135
thumb_func_end ov96_0220ED9C
thumb_func_start ov96_0220EE4C
ov96_0220EE4C: ; 0x0220EE4C
push {r4, r5, r6, lr}
add r6, r0, #0
add r0, #0x24
bl RemoveWindow
ldr r0, [r6, #0x14]
bl MessageFormat_Delete
ldr r0, [r6, #0x18]
bl DestroyMsgData
ldr r5, _0220EE88 ; =ov96_0221CF58
mov r4, #0
_0220EE66:
ldr r1, [r5]
ldr r0, [r6, #8]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl FreeBgTilemapBuffer
add r4, r4, #1
add r5, r5, #4
cmp r4, #7
blt _0220EE66
mov r0, #4
bl FontID_Release
ldr r0, [r6, #8]
bl FreeToHeap
pop {r4, r5, r6, pc}
.balign 4, 0
_0220EE88: .word ov96_0221CF58
thumb_func_end ov96_0220EE4C
thumb_func_start ov96_0220EE8C
ov96_0220EE8C: ; 0x0220EE8C
push {r4, lr}
sub sp, #0x10
mov r3, #0
str r3, [sp]
add r4, r0, #0
str r3, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #4
str r0, [sp, #0xc]
ldr r2, [r4, #8]
mov r0, #0xed
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r3, #1
str r3, [sp, #8]
ldr r0, [r4]
mov r1, #2
str r0, [sp, #0xc]
ldr r2, [r4, #8]
mov r0, #0xed
bl GfGfxLoader_LoadCharData
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #5
str r0, [sp, #0xc]
ldr r2, [r4, #8]
mov r0, #0xed
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
mov r1, #1
str r0, [sp, #4]
str r1, [sp, #8]
ldr r0, [r4]
add r3, r1, #0
str r0, [sp, #0xc]
ldr r2, [r4, #8]
mov r0, #0xed
bl GfGfxLoader_LoadScrnData
mov r1, #0
str r1, [sp]
ldr r0, [r4]
add r2, r1, #0
str r0, [sp, #4]
mov r0, #0xed
add r3, r1, #0
bl GfGfxLoader_GXLoadPal
ldr r0, [r4, #8]
mov r1, #1
mov r2, #4
mov r3, #8
bl ScheduleSetBgPosText
mov r1, #0x1e
ldr r2, [r4]
mov r0, #0
lsl r1, r1, #4
bl LoadFontPal0
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #4
str r0, [sp, #0xc]
ldr r2, [r4, #8]
mov r0, #0xed
add r3, r1, #0
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #0xb
str r0, [sp, #0xc]
ldr r2, [r4, #8]
mov r0, #0xed
mov r3, #5
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #0xb
str r0, [sp, #0xc]
ldr r2, [r4, #8]
mov r0, #0xed
mov r3, #6
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #5
str r0, [sp, #0xc]
ldr r2, [r4, #8]
mov r0, #0xed
mov r3, #4
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #0xc
str r0, [sp, #0xc]
ldr r2, [r4, #8]
mov r0, #0xed
mov r3, #5
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #0xd
str r0, [sp, #0xc]
ldr r2, [r4, #8]
mov r0, #0xed
mov r3, #6
bl GfGfxLoader_LoadScrnData
mov r3, #0
str r3, [sp]
ldr r0, [r4]
mov r1, #3
str r0, [sp, #4]
mov r0, #0xed
mov r2, #4
bl GfGfxLoader_GXLoadPal
add sp, #0x10
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_0220EE8C
thumb_func_start ov96_0220EFD0
ov96_0220EFD0: ; 0x0220EFD0
push {r4, r5, r6, lr}
sub sp, #0x10
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
cmp r5, #0
bne _0220EFE2
bl GF_AssertFail
_0220EFE2:
cmp r4, #0
bne _0220EFEA
bl GF_AssertFail
_0220EFEA:
ldrb r0, [r5]
add r0, r0, #1
strb r0, [r5]
ldrb r0, [r5]
cmp r0, #4
blo _0220F038
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
mov r0, #1
str r0, [sp, #8]
str r6, [sp, #0xc]
ldrb r1, [r5, #1]
mov r0, #0xed
add r2, r4, #0
add r1, r1, #5
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
str r6, [sp, #0xc]
ldrb r1, [r5, #1]
mov r0, #0xed
add r2, r4, #0
add r1, r1, #5
mov r3, #4
bl GfGfxLoader_LoadScrnData
ldrb r0, [r5, #1]
mov r1, #6
add r0, r0, #1
bl _s32_div_f
strb r1, [r5, #1]
mov r0, #0
strb r0, [r5]
_0220F038:
add sp, #0x10
pop {r4, r5, r6, pc}
thumb_func_end ov96_0220EFD0
thumb_func_start ov96_0220F03C
ov96_0220F03C: ; 0x0220F03C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
str r0, [sp]
bl ov96_021E5DC4
add r7, r0, #0
ldr r0, [sp]
bl ov96_021E5F54
str r0, [sp, #0xc]
ldr r0, [sp]
bl ov96_021E5F24
cmp r0, #0
beq _0220F05C
b _0220F1A4
_0220F05C:
mov r0, #0
str r0, [sp, #8]
ldr r0, [sp, #0xc]
add r0, #0x28
bl ov96_021E8A20
str r0, [sp, #4]
ldr r0, [r0, #0x20]
lsr r0, r0, #0x1f
beq _0220F07E
add r7, #0xcc
ldr r1, [sp]
add r0, r7, #0
bl ov96_0220FA18
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
_0220F07E:
ldr r0, _0220F1A8 ; =0x0000050C
ldr r1, [r7, r0]
cmp r1, #0
ble _0220F0AA
sub r1, r1, #1
str r1, [r7, r0]
ldr r0, [r7, r0]
mov r1, #0x1e
add r0, #0x1e
bl _s32_div_f
str r0, [sp, #8]
ldr r0, [sp, #4]
ldr r1, [r0, #0x1c]
ldr r0, _0220F1AC ; =0xC0FFFFFF
and r1, r0
ldr r0, [sp, #8]
lsl r0, r0, #0x1a
lsr r0, r0, #2
orr r1, r0
ldr r0, [sp, #4]
str r1, [r0, #0x1c]
_0220F0AA:
ldr r0, [sp, #0xc]
add r0, #0x50
bl ov96_021E8A20
add r4, r0, #0
ldr r0, [sp, #0xc]
bl ov96_021E8A20
add r3, r0, #0
mov r2, #4
_0220F0BE:
ldmia r3!, {r0, r1}
stmia r4!, {r0, r1}
sub r2, r2, #1
bne _0220F0BE
ldr r0, [r3]
mov r6, #0
str r0, [r4]
ldr r4, [sp, #0xc]
mov r0, #0x57
lsl r0, r0, #2
add r4, #0x50
add r5, r7, r0
_0220F0D6:
add r0, r4, #0
bl ov96_021E8A20
add r2, r0, #0
ldr r0, [r2]
ldr r1, [r5, #4]
lsl r0, r0, #0xf
lsr r0, r0, #0x1f
beq _0220F13A
lsl r0, r1, #0x11
lsr r3, r0, #0x1f
beq _0220F0FC
lsl r0, r1, #0x10
lsr r0, r0, #0x1f
beq _0220F0FC
ldr r0, _0220F1B0 ; =0xFFFFBFFF
and r0, r1
str r0, [r5, #4]
b _0220F114
_0220F0FC:
cmp r3, #0
bne _0220F114
ldr r1, [r5, #4]
lsl r0, r1, #0x10
lsr r0, r0, #0x1f
bne _0220F114
mov r0, #1
lsl r0, r0, #0xe
orr r1, r0
lsl r0, r0, #1
orr r0, r1
str r0, [r5, #4]
_0220F114:
ldr r0, [r2]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
strh r0, [r5]
ldr r0, [r2]
lsl r0, r0, #0x10
lsr r0, r0, #0x18
strh r0, [r5, #2]
ldr r1, [r5, #4]
ldr r0, _0220F1B4 ; =0xFFFFC000
and r0, r1
lsl r1, r1, #0x12
lsr r1, r1, #0x12
add r2, r1, #1
ldr r1, _0220F1B8 ; =0x00003FFF
and r1, r2
orr r0, r1
str r0, [r5, #4]
b _0220F156
_0220F13A:
ldr r0, _0220F1BC ; =0xE000FFFF
and r0, r1
lsl r1, r1, #0x12
lsr r1, r1, #0x12
lsl r1, r1, #0x13
lsr r1, r1, #3
orr r1, r0
ldr r0, _0220F1B4 ; =0xFFFFC000
and r1, r0
sub r0, r0, #1
and r1, r0
ldr r0, _0220F1C0 ; =0xFFFF7FFF
and r0, r1
str r0, [r5, #4]
_0220F156:
add r6, r6, #1
add r4, #0x28
add r5, #0xe4
cmp r6, #4
blt _0220F0D6
add r0, r7, #0
add r0, #0xc8
ldr r0, [r0]
bl ov96_02210858
ldr r0, _0220F1C4 ; =0x000004EC
ldr r1, [sp, #0xc]
ldr r2, [sp, #8]
add r0, r7, r0
bl ov96_02210030
mov r0, #0x57
lsl r0, r0, #2
ldr r1, [sp]
add r0, r7, r0
bl ov96_0220F8C8
ldr r0, _0220F1A8 ; =0x0000050C
ldr r0, [r7, r0]
cmp r0, #0
bgt _0220F19A
ldr r0, [sp, #4]
ldr r1, [r0, #0x20]
ldr r0, _0220F1C8 ; =0x7FFFFFFF
and r1, r0
add r0, r0, #1
orr r1, r0
ldr r0, [sp, #4]
str r1, [r0, #0x20]
_0220F19A:
add r7, #0xcc
ldr r1, [sp]
add r0, r7, #0
bl ov96_0220FA18
_0220F1A4:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0220F1A8: .word 0x0000050C
_0220F1AC: .word 0xC0FFFFFF
_0220F1B0: .word 0xFFFFBFFF
_0220F1B4: .word 0xFFFFC000
_0220F1B8: .word 0x00003FFF
_0220F1BC: .word 0xE000FFFF
_0220F1C0: .word 0xFFFF7FFF
_0220F1C4: .word 0x000004EC
_0220F1C8: .word 0x7FFFFFFF
thumb_func_end ov96_0220F03C
thumb_func_start ov96_0220F1CC
ov96_0220F1CC: ; 0x0220F1CC
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r6, r0, #0
add r0, r5, #0
bl ov96_021E5F54
add r4, r0, #0
add r0, #0xf0
bl ov96_021E8A20
add r7, r0, #0
add r0, r4, #0
bl ov96_021E8A20
add r4, r0, #0
ldr r0, [r7, #0x20]
lsr r0, r0, #0x1f
cmp r0, #1
bne _0220F20C
add r0, r6, #0
bl ov96_0220EAC4
add r0, r5, #0
bl ov96_021E65A4
add r0, r5, #0
bl ov96_0220E2A8
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_0220F20C:
bl System_GetTouchNew
cmp r0, #0
beq _0220F22E
add r0, r5, #0
bl ov96_021E5F24
add r1, r0, #0
mov r0, #1
lsl r1, r1, #0x18
str r0, [sp]
add r0, r5, #0
lsr r1, r1, #0x18
mov r2, #3
mov r3, #0
bl ov96_021E8228
_0220F22E:
bl System_GetTouchHeld
cmp r0, #0
ldr r1, [r4]
beq _0220F25C
mov r0, #0xff
bic r1, r0
ldr r0, _0220F274 ; =gSystem + 0x40
ldrh r2, [r0, #0x20]
lsl r2, r2, #0x18
lsr r2, r2, #0x18
orr r2, r1
str r2, [r4]
ldrh r0, [r0, #0x22]
ldr r1, _0220F278 ; =0xFFFF00FF
lsl r0, r0, #0x18
and r1, r2
lsr r0, r0, #0x10
orr r1, r0
mov r0, #1
lsl r0, r0, #0x10
orr r0, r1
b _0220F260
_0220F25C:
ldr r0, _0220F27C ; =0xFFFEFFFF
and r0, r1
_0220F260:
str r0, [r4]
mov r0, #0x51
lsl r0, r0, #4
add r0, r6, r0
add r1, r5, #0
bl ov96_0221013C
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_0220F274: .word gSystem + 0x40
_0220F278: .word 0xFFFF00FF
_0220F27C: .word 0xFFFEFFFF
thumb_func_end ov96_0220F1CC
thumb_func_start ov96_0220F280
ov96_0220F280: ; 0x0220F280
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x58
add r7, r0, #0
add r0, sp, #8
mov r1, #0xaa
mov r2, #7
bl ReadWholeNarcMemberByIdPair
mov r0, #0
str r0, [sp]
_0220F294:
ldr r0, [sp]
mov r6, #0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
_0220F29E:
ldr r1, [sp]
add r0, r7, #0
add r2, r6, #0
bl ov96_021E60D8
lsl r2, r6, #0x18
add r4, r0, #0
ldr r1, [sp, #4]
add r0, r7, #0
lsr r2, r2, #0x18
bl ov96_0220F378
add r5, r0, #0
ldrb r0, [r4, #2]
cmp r0, #5
blo _0220F2C2
bl GF_AssertFail
_0220F2C2:
ldrb r0, [r4]
cmp r0, #5
blo _0220F2CC
bl GF_AssertFail
_0220F2CC:
ldrb r0, [r4, #1]
cmp r0, #5
blo _0220F2D6
bl GF_AssertFail
_0220F2D6:
ldrb r0, [r4, #2]
strb r0, [r5, #2]
ldrb r0, [r4, #2]
lsl r1, r0, #2
add r0, sp, #8
ldr r0, [r0, r1]
strb r0, [r5]
ldrb r0, [r4, #2]
lsl r1, r0, #2
add r0, sp, #8
add r0, r0, r1
ldr r0, [r0, #0x14]
strb r0, [r5, #1]
ldrb r0, [r4]
lsl r1, r0, #2
add r0, sp, #8
add r0, r0, r1
ldr r0, [r0, #0x28]
cmp r0, #0
ble _0220F310
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
mov r0, #0x3f
lsl r0, r0, #0x18
bl _fadd
b _0220F31E
_0220F310:
lsl r0, r0, #0xc
bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
bl _fsub
_0220F31E:
bl _ffix
mov r1, #0xa
bl _s32_div_f
str r0, [r5, #4]
ldrb r0, [r4, #1]
lsl r1, r0, #2
add r0, sp, #8
add r0, r0, r1
ldr r0, [r0, #0x3c]
cmp r0, #0
ble _0220F34A
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
mov r0, #0x3f
lsl r0, r0, #0x18
bl _fadd
b _0220F358
_0220F34A:
lsl r0, r0, #0xc
bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
bl _fsub
_0220F358:
bl _ffix
mov r1, #0xa
bl _s32_div_f
add r6, r6, #1
str r0, [r5, #8]
cmp r6, #3
blt _0220F29E
ldr r0, [sp]
add r0, r0, #1
str r0, [sp]
cmp r0, #4
blt _0220F294
add sp, #0x58
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_0220F280
thumb_func_start ov96_0220F378
ov96_0220F378: ; 0x0220F378
push {r4, r5, r6, lr}
add r5, r1, #0
add r6, r2, #0
bl ov96_021E5DC4
add r4, r0, #0
bne _0220F38A
bl GF_AssertFail
_0220F38A:
cmp r5, #4
blo _0220F392
bl GF_AssertFail
_0220F392:
cmp r6, #3
blo _0220F39A
bl GF_AssertFail
_0220F39A:
lsl r0, r5, #1
add r0, r5, r0
add r1, r6, r0
mov r0, #0xc
add r4, #0x34
mul r0, r1
add r4, r4, r0
bne _0220F3AE
bl GF_AssertFail
_0220F3AE:
add r0, r4, #0
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_0220F378
thumb_func_start ov96_0220F3B4
ov96_0220F3B4: ; 0x0220F3B4
ldrb r0, [r0]
lsl r0, r0, #0x11
lsr r0, r0, #0x10
bx lr
thumb_func_end ov96_0220F3B4
thumb_func_start ov96_0220F3BC
ov96_0220F3BC: ; 0x0220F3BC
push {r3, lr}
ldr r0, [r0, #4]
lsl r0, r0, #0x1b
lsr r0, r0, #0x1d
cmp r0, #6
bhi _0220F3F2
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0220F3D4: ; jump table
.short _0220F3F2 - _0220F3D4 - 2 ; case 0
.short _0220F3F2 - _0220F3D4 - 2 ; case 1
.short _0220F3F2 - _0220F3D4 - 2 ; case 2
.short _0220F3E2 - _0220F3D4 - 2 ; case 3
.short _0220F3E6 - _0220F3D4 - 2 ; case 4
.short _0220F3EA - _0220F3D4 - 2 ; case 5
.short _0220F3EE - _0220F3D4 - 2 ; case 6
_0220F3E2:
mov r0, #1
pop {r3, pc}
_0220F3E6:
mov r0, #2
pop {r3, pc}
_0220F3EA:
mov r0, #3
pop {r3, pc}
_0220F3EE:
mov r0, #5
pop {r3, pc}
_0220F3F2:
bl GF_AssertFail
mov r0, #0
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_0220F3BC
thumb_func_start ov96_0220F3FC
ov96_0220F3FC: ; 0x0220F3FC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x118
str r0, [sp, #8]
ldr r0, [r0, #0x10]
bl sub_0200E2B0
str r0, [sp]
ldr r0, [sp, #8]
ldr r3, [sp, #8]
ldr r0, [r0]
ldr r3, [r3, #0x1c]
mov r1, #0xc
mov r2, #7
bl ov96_021EA854
ldr r1, [sp, #8]
str r0, [r1, #0x20]
bl ov96_021EB138
mov r4, #0
add r5, sp, #0x14
add r2, r5, #0
add r0, r4, #0
add r1, r4, #0
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
str r0, [r2]
ldr r0, [sp, #8]
add r6, sp, #0x58
ldr r0, [r0, #4]
str r0, [sp, #0xc]
_0220F446:
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r7, r1, #0
add r0, r4, #0
mov r1, #3
bl _s32_div_f
str r0, [sp, #0x10]
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x10]
add r2, r7, #0
add r3, r6, #0
bl ov96_021E6168
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x10]
add r2, r7, #0
bl ov96_021E60C0
bl ov96_021E6108
str r0, [r5, #0x14]
add r4, r4, #1
add r6, #0x10
add r5, r5, #4
cmp r4, #0xc
blt _0220F446
mov r0, #1
str r0, [sp, #0x18]
str r0, [sp, #0x20]
str r0, [sp, #0x24]
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
ldr r0, [sp, #8]
mov r1, #0xc
ldr r0, [r0, #0x20]
add r2, sp, #0x58
add r3, sp, #0x14
bl ov96_021EA8A8
add sp, #0x118
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_0220F3FC
thumb_func_start ov96_0220F4A0
ov96_0220F4A0: ; 0x0220F4A0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x58
str r0, [sp, #0xc]
add r0, sp, #0x40
mov r1, #0
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
str r1, [r0, #0xc]
str r1, [r0, #0x10]
str r1, [r0, #0x14]
mov r1, #0xaa
mov r2, #0x11
bl ReadWholeNarcMemberByIdPair
ldr r0, [sp, #0xc]
cmp r0, #0
bne _0220F4C8
bl GF_AssertFail
_0220F4C8:
ldr r0, [sp, #0xc]
ldr r0, [r0, #4]
cmp r0, #0
bne _0220F4D4
bl GF_AssertFail
_0220F4D4:
ldr r0, [sp, #0xc]
ldr r7, [r0, #4]
add r0, r7, #0
bl ov96_0220F280
mov r2, #0x8f
ldr r1, [sp, #0xc]
lsl r2, r2, #2
add r1, r1, r2
mov r0, #0
mov r2, #3
mov r3, #3
_0220F4EC:
ldr r5, [r1]
add r4, r0, #0
bic r5, r2
and r4, r3
orr r4, r5
str r4, [r1]
add r0, r0, #1
add r1, #0xe4
cmp r0, #4
blt _0220F4EC
mov r1, #0x59
ldr r0, [sp, #0xc]
lsl r1, r1, #2
add r0, r0, r1
mov r6, #0
str r0, [sp, #0x20]
_0220F50C:
add r0, r6, #0
mov r1, #3
bl _s32_div_f
str r1, [sp, #0x10]
add r0, r6, #0
mov r1, #3
bl _s32_div_f
mov r1, #0xe4
str r0, [sp, #0x1c]
mul r1, r0
ldr r0, [sp, #0x20]
add r2, r0, r1
ldr r1, [sp, #0x10]
mov r0, #0x48
mul r0, r1
add r5, r2, r0
ldr r0, [sp, #0xc]
lsl r1, r6, #0x18
ldr r0, [r0, #0x20]
lsr r1, r1, #0x18
bl ov96_021EAA04
mov r1, #1
str r0, [sp, #0x24]
bl ov96_021EAB38
add r0, r6, #0
mov r1, #3
bl _s32_div_f
add r4, r0, #0
add r0, r6, #0
mov r1, #3
bl _s32_div_f
add r2, r1, #0
add r0, r7, #0
add r1, r4, #0
bl ov96_021E60C0
bl ov96_021E6138
lsl r1, r0, #3
add r0, sp, #0x40
add r2, r0, r1
add r1, r2, #0
sub r1, #8
sub r2, r2, #4
ldr r0, [sp, #0x24]
ldr r1, [r1]
ldr r2, [r2]
bl ov96_021EAF70
ldr r0, [sp, #0xc]
lsl r1, r6, #0x18
ldr r0, [r0, #0x20]
lsr r1, r1, #0x18
bl ov96_021EAA04
add r4, r0, #0
bl ov96_021EAA20
bl ov96_021E8BB0
str r0, [sp, #0x28]
add r0, r4, #0
mov r1, #0
bl ov96_0220D554
mov r1, #0xfe
lsl r1, r1, #0x16
add r0, r4, #0
add r2, r1, #0
bl ov96_021EB10C
ldr r1, [sp, #0x1c]
mov r0, #0xc
add r2, r1, #0
mul r2, r0
ldr r0, _0220F700 ; =ov96_0221CFBC
add r1, r0, r2
ldr r0, [sp, #0x10]
lsl r0, r0, #2
add r0, r1, r0
mov r1, #0
ldrsh r1, [r0, r1]
str r1, [sp, #0x18]
mov r1, #2
ldrsh r0, [r0, r1]
str r0, [sp, #0x14]
add r0, r4, #0
bl ov96_021EAC0C
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x14]
add r0, r4, #0
bl ov96_021EAF94
bl ov96_021E6104
add r1, r0, #0
add r0, r4, #0
bl ov96_021EAF6C
add r0, sp, #0x2c
str r0, [sp]
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x14]
add r0, r4, #0
add r3, sp, #0x30
bl ov96_021EB0A4
str r7, [r5]
ldr r1, [r5, #0x40]
ldr r0, _0220F704 ; =0xFFF0FFFF
and r1, r0
lsl r0, r6, #0x1c
lsr r0, r0, #0xc
orr r0, r1
str r0, [r5, #0x40]
ldr r0, [sp, #0x1c]
lsl r0, r0, #0x18
lsr r1, r0, #0x18
add r0, r5, #0
add r0, #0x45
strb r1, [r0]
ldr r0, [sp, #0x10]
lsl r0, r0, #0x18
lsr r3, r0, #0x18
add r0, r5, #0
add r0, #0x46
strb r3, [r0]
str r4, [r5, #4]
ldr r2, [r5, #0x40]
ldr r0, _0220F708 ; =0xFCFFFFFF
and r0, r2
ldr r2, [sp, #0x28]
ldrh r2, [r2, #4]
lsl r2, r2, #0x1e
lsr r2, r2, #6
orr r0, r2
str r0, [r5, #0x40]
add r0, r7, #0
add r2, r3, #0
bl ov96_0220F378
str r0, [r5, #8]
mov r0, #2
str r0, [r5, #0xc]
ldr r1, [r5, #0x40]
ldr r0, _0220F70C ; =0xFF0FFFFF
and r1, r0
mov r0, #2
lsl r0, r0, #0x14
orr r0, r1
str r0, [r5, #0x40]
ldr r0, [sp, #0x30]
lsl r0, r0, #0xc
str r0, [r5, #0x1c]
ldr r0, [sp, #0x2c]
lsl r0, r0, #0xc
str r0, [r5, #0x20]
ldr r0, [sp, #0x30]
lsl r0, r0, #0xc
str r0, [r5, #0x10]
ldr r0, [sp, #0x2c]
lsl r0, r0, #0xc
str r0, [r5, #0x14]
add r0, r7, #0
bl ov96_021E5F24
ldr r1, [sp, #0x1c]
cmp r1, r0
bne _0220F6A8
ldr r0, [sp, #0x10]
ldr r3, [sp, #0x18]
lsl r0, r0, #2
add r1, sp, #0x34
add r2, sp, #0x34
add r1, r1, r0
strh r3, [r2, r0]
ldr r0, [sp, #0x14]
strh r0, [r1, #2]
ldr r0, [sp, #0xc]
ldr r0, [r0, #0x10]
bl sub_0200E2B0
add r3, r0, #0
mov r0, #1
str r0, [sp]
ldr r2, [sp, #0xc]
add r0, r7, #0
ldr r2, [r2, #0x1c]
add r1, r4, #0
bl ov96_021E64F8
mov r1, #4
bl Sprite_SetDrawPriority
add r0, r4, #0
mov r1, #6
bl ov96_021EABA8
b _0220F6B0
_0220F6A8:
add r0, r4, #0
mov r1, #7
bl ov96_021EABA8
_0220F6B0:
add r0, r7, #0
bl ov96_021E5F24
cmp r0, #0
bne _0220F6D0
add r0, r7, #0
bl ov96_021E5F54
add r0, #0x28
bl ov96_021E8A20
add r1, r0, r6
ldr r0, [sp, #0x30]
strb r0, [r1, #4]
ldr r0, [sp, #0x2c]
strb r0, [r1, #0x10]
_0220F6D0:
add r6, r6, #1
cmp r6, #0xc
bge _0220F6D8
b _0220F50C
_0220F6D8:
ldr r0, [sp, #0xc]
ldr r0, [r0, #0x10]
bl sub_0200E2B0
add r3, r0, #0
mov r0, #1
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
add r0, sp, #0x34
str r0, [sp, #8]
ldr r2, [sp, #0xc]
add r0, r7, #0
ldr r2, [r2, #0x1c]
mov r1, #0
bl ov96_021E62AC
add sp, #0x58
pop {r3, r4, r5, r6, r7, pc}
nop
_0220F700: .word ov96_0221CFBC
_0220F704: .word 0xFFF0FFFF
_0220F708: .word 0xFCFFFFFF
_0220F70C: .word 0xFF0FFFFF
thumb_func_end ov96_0220F4A0
thumb_func_start ov96_0220F710
ov96_0220F710: ; 0x0220F710
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x30
bl ov96_021E5DC4
str r0, [sp, #8]
str r0, [sp, #4]
add r0, #0xcc
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #0xc]
ldr r0, [sp, #4]
str r0, [sp]
_0220F728:
ldr r0, [sp, #0xc]
mov r1, #3
bl _s32_div_f
add r4, r0, #0
ldr r0, [sp, #0xc]
mov r1, #3
bl _s32_div_f
mov r2, #0x59
ldr r0, [sp, #8]
lsl r2, r2, #2
add r0, r0, r2
str r0, [sp, #0x10]
mov r0, #0xe4
add r2, r4, #0
mul r2, r0
ldr r0, [sp, #0x10]
add r2, r0, r2
mov r0, #0x48
mul r0, r1
add r7, r2, r0
ldr r0, [sp, #0xc]
add r4, r0, #1
cmp r4, #0xc
blt _0220F75E
b _0220F8AE
_0220F75E:
ldr r1, [sp, #4]
add r1, r1, r0
mov r0, #0xc
mul r0, r4
add r6, r1, r0
add r0, r7, #0
str r0, [sp, #0x14]
add r0, #0x1c
str r0, [sp, #0x14]
add r0, r7, #0
str r0, [sp, #0x18]
add r0, #0x28
str r0, [sp, #0x18]
add r0, r7, #0
str r0, [sp, #0x1c]
add r0, #0x34
str r0, [sp, #0x1c]
add r0, r7, #0
str r0, [sp, #0x20]
add r0, #0x40
str r0, [sp, #0x20]
_0220F788:
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r5, r0, #0
add r0, r4, #0
mov r1, #3
bl _s32_div_f
mov r0, #0xe4
add r2, r5, #0
mul r2, r0
ldr r0, [sp, #0x10]
add r2, r0, r2
mov r0, #0x48
mul r0, r1
add r5, r2, r0
add r0, r7, #0
bl ov96_0220D694
cmp r0, #0
beq _0220F89A
add r0, r5, #0
bl ov96_0220D694
cmp r0, #0
beq _0220F89A
add r0, r7, #0
add r1, r5, #0
bl ov96_0220D5D0
cmp r0, #0
beq _0220F89A
ldr r0, [sp]
ldrb r0, [r0, r4]
cmp r0, #0
bne _0220F89A
mov r1, #0
add r0, sp, #0x24
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
mov r0, #1
strb r0, [r6]
ldrb r1, [r6]
ldr r0, [sp]
add r2, sp, #0x24
strb r1, [r0, r4]
add r1, r5, #0
ldr r0, [sp, #0x14]
add r1, #0x1c
bl VEC_Subtract
add r0, sp, #0x24
add r1, r0, #0
bl VEC_Normalize
ldr r0, [r5, #8]
ldr r1, [r0, #4]
ldr r0, [r7, #0x40]
lsl r0, r0, #6
lsr r0, r0, #0x1e
bne _0220F812
mov r0, #6
mul r0, r1
mov r1, #5
bl _s32_div_f
add r1, r0, #0
_0220F812:
ldr r2, [sp, #0x18]
add r0, r1, #0
ldr r3, [sp, #0x1c]
add r1, sp, #0x24
bl VEC_MultAdd
ldr r0, [r7, #8]
ldr r1, [r0, #4]
ldr r0, [r5, #0x40]
lsl r0, r0, #6
lsr r0, r0, #0x1e
bne _0220F836
mov r0, #6
mul r0, r1
mov r1, #5
bl _s32_div_f
add r1, r0, #0
_0220F836:
add r2, r5, #0
add r3, r5, #0
add r0, r1, #0
add r1, sp, #0x24
add r2, #0x28
add r3, #0x34
bl VEC_MultAdd
mov r0, #0
ldr r1, [r5, #0x34]
mvn r0, r0
mul r0, r1
str r0, [r5, #0x34]
mov r0, #0
ldr r1, [r5, #0x38]
mvn r0, r0
mul r0, r1
str r0, [r5, #0x38]
mov r1, #2
ldr r0, [sp, #0x1c]
lsl r1, r1, #0xe
bl ov96_0220E974
add r0, r5, #0
mov r1, #2
add r0, #0x34
lsl r1, r1, #0xe
bl ov96_0220E974
add r0, sp, #0x24
bl ov96_0220D6CC
lsl r0, r0, #0x1c
ldr r2, [r5, #0x40]
ldr r1, _0220F8C4 ; =0xFF0FFFFF
lsr r0, r0, #8
and r1, r2
orr r1, r0
mov r0, #1
lsl r0, r0, #0x1a
orr r0, r1
str r0, [r5, #0x40]
ldr r0, [sp, #0x20]
ldr r1, [r0]
mov r0, #1
lsl r0, r0, #0x1a
orr r1, r0
ldr r0, [sp, #0x20]
str r1, [r0]
b _0220F8A4
_0220F89A:
mov r0, #0
strb r0, [r6]
ldrb r1, [r6]
ldr r0, [sp]
strb r1, [r0, r4]
_0220F8A4:
add r4, r4, #1
add r6, #0xc
cmp r4, #0xc
bge _0220F8AE
b _0220F788
_0220F8AE:
ldr r0, [sp]
add r0, #0xc
str r0, [sp]
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, #0xc
bge _0220F8C0
b _0220F728
_0220F8C0:
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0220F8C4: .word 0xFF0FFFFF
thumb_func_end ov96_0220F710
thumb_func_start ov96_0220F8C8
ov96_0220F8C8: ; 0x0220F8C8
push {r3, r4, r5, r6, r7, lr}
add r7, r1, #0
add r5, r0, #0
add r0, r7, #0
bl ov96_021E5F54
add r0, #0x28
bl ov96_021E8A20
mov r0, #0
str r0, [sp]
_0220F8DE:
ldr r0, [r5, #4]
add r1, r5, #0
lsr r3, r0, #0x1e
add r0, r3, #0
mov r2, #0x48
add r1, #0x48
mul r0, r2
ldr r4, [r1, r0]
ldr r3, _0220FA0C ; =0xF7FFFFFF
and r3, r4
str r3, [r1, r0]
ldr r1, [r5, #4]
lsl r0, r1, #0x11
lsr r0, r0, #0x1f
beq _0220F928
mov r1, #0
mov r2, #2
add r0, r5, #0
ldrsh r1, [r5, r1]
ldrsh r2, [r5, r2]
add r0, #8
bl ov96_0220DAA0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #0xc
beq _0220F9DE
mov r1, #2
ldr r2, [r5, #4]
lsl r1, r1, #0x1c
orr r2, r1
ldr r1, _0220FA10 ; =0x3FFFFFFF
lsl r0, r0, #0x1e
and r1, r2
orr r0, r1
str r0, [r5, #4]
b _0220F9DE
_0220F928:
lsl r0, r1, #0x10
lsr r0, r0, #0x1f
beq _0220F998
lsl r0, r1, #2
lsr r0, r0, #0x1f
cmp r0, #1
bne _0220F9DE
add r3, r5, #0
lsr r0, r1, #0x1e
add r3, #8
mul r2, r0
add r4, r3, r2
ldr r0, [r4, #0x1c]
ldr r2, [r4, #0x20]
lsl r0, r0, #4
lsl r2, r2, #4
ldr r3, [r4, #0xc]
asr r0, r0, #0x10
asr r2, r2, #0x10
cmp r3, #3
bne _0220F95A
ldr r0, _0220FA14 ; =0xDFFFFFFF
and r0, r1
str r0, [r5, #4]
b _0220F9DE
_0220F95A:
mov r1, #0
ldrsh r1, [r5, r1]
sub r0, r1, r0
bpl _0220F964
neg r0, r0
_0220F964:
cmp r0, #8
bgt _0220F976
mov r0, #2
ldrsh r0, [r5, r0]
sub r0, r0, r2
bpl _0220F972
neg r0, r0
_0220F972:
cmp r0, #8
ble _0220F9DE
_0220F976:
add r0, r4, #0
add r1, r5, #0
bl ov96_0220D6B0
ldr r1, [r4, #0x10]
ldr r2, [r4, #0x14]
add r0, r4, #0
bl ov96_0220D8C4
lsl r0, r0, #0x1f
ldr r2, [r4, #0x40]
ldr r1, _0220FA14 ; =0xDFFFFFFF
lsr r0, r0, #2
and r1, r2
orr r0, r1
str r0, [r4, #0x40]
b _0220F9DE
_0220F998:
lsl r0, r1, #2
lsr r0, r0, #0x1f
cmp r0, #1
bne _0220F9D6
add r0, r5, #0
lsr r1, r1, #0x1e
mul r2, r1
add r0, #8
add r4, r0, r2
mov r1, #0
mov r2, #2
ldrsh r1, [r5, r1]
ldrsh r2, [r5, r2]
bl ov96_0220DAA0
lsl r0, r0, #0x18
lsr r2, r0, #0x18
ldr r0, [r4, #0xc]
cmp r0, #2
bne _0220F9D6
ldr r0, [r5, #4]
lsr r1, r0, #0x1e
cmp r2, r1
bne _0220F9D6
lsl r0, r0, #3
lsr r0, r0, #0x13
cmp r0, #5
bhi _0220F9D6
add r0, r4, #0
bl ov96_0220D630
_0220F9D6:
ldr r1, [r5, #4]
ldr r0, _0220FA14 ; =0xDFFFFFFF
and r0, r1
str r0, [r5, #4]
_0220F9DE:
add r4, r5, #0
mov r6, #0
add r4, #8
_0220F9E4:
add r0, r4, #0
add r1, r7, #0
bl ov96_0220D9A4
add r6, r6, #1
add r4, #0x48
cmp r6, #3
blt _0220F9E4
ldr r0, [sp]
add r5, #0xe4
add r0, r0, #1
str r0, [sp]
cmp r0, #4
bge _0220FA02
b _0220F8DE
_0220FA02:
add r0, r7, #0
bl ov96_0220F710
pop {r3, r4, r5, r6, r7, pc}
nop
_0220FA0C: .word 0xF7FFFFFF
_0220FA10: .word 0x3FFFFFFF
_0220FA14: .word 0xDFFFFFFF
thumb_func_end ov96_0220F8C8
thumb_func_start ov96_0220FA18
ov96_0220FA18: ; 0x0220FA18
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r0, [sp, #4]
add r0, r1, #0
bl ov96_021E5F54
add r0, #0x28
bl ov96_021E8A20
str r0, [sp, #8]
str r0, [sp, #0xc]
add r0, #0x1c
str r0, [sp, #0xc]
ldr r0, [sp, #8]
mov r4, #0
ldr r1, [r0, #0x1c]
ldr r0, _0220FB84 ; =0x3FFFFFFF
add r2, r1, #0
and r2, r0
lsr r0, r1, #0x1e
add r0, r0, #1
lsl r0, r0, #0x1e
orr r2, r0
ldr r0, [sp, #8]
mov r1, #0x7f
add r6, r0, #0
str r2, [r0, #0x1c]
ldr r0, [r0, #0x20]
add r6, #0x20
bic r0, r1
lsr r1, r2, #0x1e
add r3, r1, #0
mov r2, #0xe4
mul r3, r2
ldr r1, [sp, #4]
add r2, #0x8c
add r1, r1, r3
ldr r1, [r1, r2]
add r7, r4, #0
lsl r1, r1, #0xe
lsr r2, r1, #0x10
mov r1, #0x7f
and r2, r1
and r1, r2
add r2, r0, #0
orr r2, r1
ldr r1, _0220FB88 ; =0x8007FFFF
ldr r0, [sp, #8]
and r2, r1
str r2, [r0, #0x20]
ldr r2, [r0, #0x1c]
lsl r0, r1, #0x18
and r2, r0
ldr r0, [sp, #8]
str r2, [r0, #0x1c]
ldr r2, [r0, #0x20]
asr r0, r1, #0xc
add r1, r2, #0
and r1, r0
ldr r0, [sp, #8]
str r1, [r0, #0x20]
ldr r0, [sp, #4]
add r0, #0x98
str r0, [sp, #4]
_0220FA98:
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r5, r0, #0
add r0, r4, #0
mov r1, #3
bl _s32_div_f
mov r0, #0xe4
add r2, r5, #0
mul r2, r0
ldr r0, [sp, #4]
add r3, sp, #0x14
add r2, r0, r2
mov r0, #0x48
mul r0, r1
add r5, r2, r0
add r0, sp, #0x10
str r0, [sp]
ldr r1, [r5, #0x1c]
ldr r2, [r5, #0x20]
lsl r1, r1, #4
lsl r2, r2, #4
ldr r0, [r5, #4]
asr r1, r1, #0x10
asr r2, r2, #0x10
bl ov96_021EB06C
ldr r1, [sp, #0x14]
cmp r1, #0xff
ble _0220FADC
mov r1, #0xff
b _0220FAE2
_0220FADC:
cmp r1, #0
bge _0220FAE2
mov r1, #0
_0220FAE2:
ldr r0, [sp, #8]
add r0, r0, r4
strb r1, [r0, #4]
ldr r1, [sp, #0x10]
cmp r1, #0xff
ble _0220FAF2
mov r1, #0xff
b _0220FAF8
_0220FAF2:
cmp r1, #0
bge _0220FAF8
mov r1, #0
_0220FAF8:
strb r1, [r0, #0x10]
ldr r0, [r5, #0x40]
lsl r0, r0, #0x10
lsr r0, r0, #0x18
beq _0220FB30
ldr r2, [r6]
ldr r0, _0220FB88 ; =0x8007FFFF
add r1, r2, #0
and r1, r0
lsl r0, r2, #1
mov r2, #1
lsl r2, r4
lsr r0, r0, #0x14
orr r0, r2
lsl r0, r0, #0x14
lsr r0, r0, #1
orr r0, r1
str r0, [r6]
ldr r1, [r5, #0x40]
ldr r0, _0220FB8C ; =0xFFFF00FF
and r0, r1
lsl r1, r1, #0x10
lsr r1, r1, #0x18
sub r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x10
orr r0, r1
str r0, [r5, #0x40]
_0220FB30:
ldr r0, [r5, #0xc]
cmp r0, #3
bne _0220FB50
ldr r2, [r6]
ldr r0, _0220FB90 ; =0xFFF8007F
add r1, r2, #0
and r1, r0
lsl r0, r2, #0xd
mov r2, #1
lsl r2, r4
lsr r0, r0, #0x14
orr r0, r2
lsl r0, r0, #0x14
lsr r0, r0, #0xd
orr r0, r1
str r0, [r6]
_0220FB50:
ldr r0, [sp, #0xc]
add r4, r4, #1
ldr r2, [r0]
mov r0, #0xff
lsl r0, r0, #0x18
add r1, r2, #0
and r1, r0
lsl r0, r2, #8
ldr r2, [r5, #0x40]
lsr r0, r0, #8
lsl r2, r2, #8
lsr r2, r2, #0x1c
sub r2, r2, #1
lsl r2, r7
add r2, r0, r2
ldr r0, _0220FB94 ; =0x00FFFFFF
add r7, r7, #2
and r0, r2
orr r1, r0
ldr r0, [sp, #0xc]
cmp r4, #0xc
str r1, [r0]
blt _0220FA98
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_0220FB84: .word 0x3FFFFFFF
_0220FB88: .word 0x8007FFFF
_0220FB8C: .word 0xFFFF00FF
_0220FB90: .word 0xFFF8007F
_0220FB94: .word 0x00FFFFFF
thumb_func_end ov96_0220FA18
thumb_func_start ov96_0220FB98
ov96_0220FB98: ; 0x0220FB98
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
ldr r1, [r5, #4]
mov r0, #0x20
orr r0, r1
str r0, [r5, #4]
mov r0, #0x80
strh r0, [r5]
mov r0, #0
strh r0, [r5, #2]
strh r0, [r5]
ldr r1, [r5, #4]
mov r0, #0x1c
bic r1, r0
mov r0, #4
orr r0, r1
str r0, [r5, #4]
strb r2, [r5, #8]
bl MTRandom
mov r1, #0xf
bl _u32_div_f
strb r1, [r5, #9]
ldr r1, [r5, #4]
ldr r0, _0220FBD8 ; =0xFFFFC03F
and r0, r1
str r0, [r5, #4]
strb r4, [r5, #0xa]
pop {r3, r4, r5, pc}
nop
_0220FBD8: .word 0xFFFFC03F
thumb_func_end ov96_0220FB98
thumb_func_start ov96_0220FBDC
ov96_0220FBDC: ; 0x0220FBDC
ldr r2, [r0, #4]
mov r1, #0x20
bic r2, r1
mov r1, #0x1c
bic r2, r1
str r2, [r0, #4]
bx lr
.balign 4, 0
thumb_func_end ov96_0220FBDC
thumb_func_start ov96_0220FBEC
ov96_0220FBEC: ; 0x0220FBEC
push {r4, r5, r6, r7, lr}
sub sp, #0x2c
str r1, [sp, #8]
mov r1, #2
ldrsh r1, [r0, r1]
str r0, [sp, #4]
mov r0, #0x12
lsl r0, r0, #4
str r2, [sp, #0xc]
cmp r1, r0
bge _0220FC08
add sp, #0x2c
mov r0, #0
pop {r4, r5, r6, r7, pc}
_0220FC08:
sub r0, r1, r0
lsl r0, r0, #0x10
asr r0, r0, #0x10
mov r4, #0
str r0, [sp, #0x10]
_0220FC12:
mov r1, #0
add r0, sp, #0x20
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r6, r1, #0
add r0, r4, #0
mov r1, #3
bl _s32_div_f
mov r1, #0xe4
str r0, [sp, #0x14]
mul r1, r0
ldr r0, [sp, #8]
add r1, r0, r1
mov r0, #0x48
add r1, #8
mul r0, r6
add r5, r1, r0
ldr r0, [r5, #0xc]
cmp r0, #1
bne _0220FCA2
add r0, sp, #0x18
str r0, [sp]
ldr r1, [r5, #0x1c]
ldr r2, [r5, #0x20]
ldr r0, [r5, #4]
asr r1, r1, #0xc
asr r2, r2, #0xc
add r3, sp, #0x1c
bl ov96_021EB06C
ldr r1, [sp, #4]
mov r0, #0
ldrsh r0, [r1, r0]
ldr r2, [sp, #0x1c]
ldr r1, [sp, #0x18]
sub r2, r2, r0
ldr r0, [sp, #0x10]
str r2, [sp, #0x20]
sub r1, r1, r0
lsl r0, r2, #0xc
str r0, [sp, #0x20]
str r1, [sp, #0x24]
lsl r0, r1, #0xc
str r0, [sp, #0x24]
add r0, sp, #0x20
bl VEC_Mag
add r7, r0, #0
ldr r0, [r5, #4]
bl ov96_021EAF8C
add r0, #0xe
lsl r0, r0, #0xc
cmp r7, r0
bgt _0220FCA2
ldr r1, [sp, #0x14]
ldr r0, [sp, #0xc]
strb r1, [r0, #4]
strb r6, [r0, #5]
ldr r1, [sp, #0x1c]
strh r1, [r0]
ldr r1, [sp, #0x18]
add sp, #0x2c
strh r1, [r0, #2]
mov r0, #1
pop {r4, r5, r6, r7, pc}
_0220FCA2:
add r4, r4, #1
cmp r4, #0xc
blt _0220FC12
mov r0, #0
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0220FBEC
thumb_func_start ov96_0220FCB0
ov96_0220FCB0: ; 0x0220FCB0
push {r4, r5, r6, r7}
mov r5, #2
ldrsh r5, [r0, r5]
mov r2, #1
sub r6, r1, #1
add r3, r2, #0
mov r4, #0
cmp r5, r6
bne _0220FCD6
ldrsh r6, [r0, r4]
add r7, r2, #0
cmp r6, #8
blt _0220FCD0
cmp r6, #0x17
bgt _0220FCD0
add r7, r4, #0
_0220FCD0:
cmp r7, #0
beq _0220FCD6
mov r4, #1
_0220FCD6:
cmp r4, #0
bne _0220FCFC
sub r4, r1, #2
mov r6, #0
cmp r5, r4
bne _0220FCF6
ldrsh r4, [r0, r6]
mov r7, #1
cmp r4, #5
blt _0220FCF0
cmp r4, #0x1a
bgt _0220FCF0
add r7, r6, #0
_0220FCF0:
cmp r7, #0
beq _0220FCF6
mov r6, #1
_0220FCF6:
cmp r6, #0
bne _0220FCFC
mov r3, #0
_0220FCFC:
cmp r3, #0
bne _0220FD22
sub r1, r1, #3
mov r3, #0
cmp r5, r1
bne _0220FD1C
ldrsh r0, [r0, r3]
mov r1, #1
cmp r0, #2
blt _0220FD16
cmp r0, #0x1d
bgt _0220FD16
add r1, r3, #0
_0220FD16:
cmp r1, #0
beq _0220FD1C
mov r3, #1
_0220FD1C:
cmp r3, #0
bne _0220FD22
mov r2, #0
_0220FD22:
add r0, r2, #0
pop {r4, r5, r6, r7}
bx lr
thumb_func_end ov96_0220FCB0
thumb_func_start ov96_0220FD28
ov96_0220FD28: ; 0x0220FD28
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
add r4, r2, #0
mov r0, #0
add r6, r1, #0
ldrsh r1, [r4, r0]
asr r0, r1, #2
lsr r0, r0, #0x1d
add r0, r1, r0
asr r0, r0, #3
add r1, sp, #4
strh r0, [r1]
mov r0, #2
ldrsh r2, [r4, r0]
asr r3, r2, #2
lsr r3, r3, #0x1d
add r3, r2, r3
asr r2, r3, #3
strh r2, [r1, #2]
ldrsh r0, [r1, r0]
cmp r0, #9
bge _0220FD7C
ldr r1, [r5, #4]
mov r0, #0x1c
bic r1, r0
mov r0, #0xc
orr r0, r1
str r0, [r5, #4]
add r0, sp, #4
mov r1, #9
bl ov96_0220FCB0
cmp r0, #0
beq _0220FDDC
ldr r1, [r5, #4]
mov r0, #0x1c
bic r1, r0
mov r0, #0x10
orr r0, r1
str r0, [r5, #4]
b _0220FDDC
_0220FD7C:
cmp r0, #0xf
bge _0220FDA6
ldr r1, [r5, #4]
mov r0, #0x1c
bic r1, r0
mov r0, #0x10
orr r0, r1
str r0, [r5, #4]
add r0, sp, #4
mov r1, #0xf
bl ov96_0220FCB0
cmp r0, #0
beq _0220FDDC
ldr r1, [r5, #4]
mov r0, #0x1c
bic r1, r0
mov r0, #0x14
orr r0, r1
str r0, [r5, #4]
b _0220FDDC
_0220FDA6:
cmp r0, #0x14
bge _0220FDD0
ldr r2, [r5, #4]
mov r0, #0x1c
bic r2, r0
mov r1, #0x14
add r0, r2, #0
orr r0, r1
str r0, [r5, #4]
add r0, sp, #4
bl ov96_0220FCB0
cmp r0, #0
beq _0220FDDC
ldr r1, [r5, #4]
mov r0, #0x1c
bic r1, r0
mov r0, #0x18
orr r0, r1
str r0, [r5, #4]
b _0220FDDC
_0220FDD0:
ldr r1, [r5, #4]
mov r0, #0x1c
bic r1, r0
mov r0, #0x18
orr r0, r1
str r0, [r5, #4]
_0220FDDC:
ldrb r1, [r4, #4]
mov r0, #0xe4
mul r0, r1
add r6, r6, r0
add r0, r5, #0
ldr r7, [r6, #8]
bl ov96_0220F3BC
add r1, r6, #0
add r1, #0xe0
ldr r1, [r1]
lsl r1, r1, #0xe
lsr r1, r1, #0x10
add r1, r1, r0
cmp r1, #0xc8
ble _0220FDFE
mov r1, #0xc8
_0220FDFE:
add r0, r6, #0
add r0, #0xe0
ldr r2, [r0]
ldr r0, _0220FE34 ; =0xFFFC0003
lsl r1, r1, #0x10
and r0, r2
lsr r1, r1, #0xe
orr r0, r1
add r6, #0xe0
str r0, [r6]
ldr r0, [r5, #4]
mov r1, #3
bic r0, r1
ldrb r1, [r4, #4]
mov r3, #3
and r1, r3
orr r0, r1
str r0, [r5, #4]
mov r0, #1
str r0, [sp]
ldrb r1, [r4, #4]
ldrb r2, [r4, #5]
add r0, r7, #0
bl ov96_021E8228
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0220FE34: .word 0xFFFC0003
thumb_func_end ov96_0220FD28
thumb_func_start ov96_0220FE38
ov96_0220FE38: ; 0x0220FE38
push {r4, r5, r6, lr}
sub sp, #8
add r4, r0, #0
add r6, r2, #0
ldr r2, [r4, #4]
add r5, r1, #0
lsl r1, r2, #0x1a
lsr r1, r1, #0x1f
bne _0220FE4C
b _0220FF4E
_0220FE4C:
lsl r1, r2, #0x1b
lsr r1, r1, #0x1d
cmp r1, #6
bhi _0220FEEC
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_0220FE60: ; jump table
.short _0220FEEC - _0220FE60 - 2 ; case 0
.short _0220FE6E - _0220FE60 - 2 ; case 1
.short _0220FEB6 - _0220FE60 - 2 ; case 2
.short _0220FECC - _0220FE60 - 2 ; case 3
.short _0220FECC - _0220FE60 - 2 ; case 4
.short _0220FECC - _0220FE60 - 2 ; case 5
.short _0220FECC - _0220FE60 - 2 ; case 6
_0220FE6E:
add r1, r6, #0
add r2, sp, #0
bl ov96_0220FBEC
cmp r0, #0
beq _0220FE86
add r0, r4, #0
add r1, r6, #0
add r2, sp, #0
bl ov96_0220FD28
b _0220FEF0
_0220FE86:
mov r0, #2
ldrsh r2, [r4, r0]
mov r1, #0x1e
lsl r1, r1, #4
cmp r2, r1
blt _0220FEA4
mov r0, #0
strh r0, [r4, #2]
ldr r1, [r4, #4]
mov r0, #0x1c
bic r1, r0
mov r0, #8
orr r0, r1
str r0, [r4, #4]
b _0220FEF0
_0220FEA4:
ldrb r1, [r4, #0xa]
add r1, r2, r1
strh r1, [r4, #2]
ldrsh r0, [r4, r0]
ldrb r1, [r4, #9]
bl ov96_0220E6DC
strh r0, [r4]
b _0220FEF0
_0220FEB6:
mov r1, #2
ldrsh r3, [r4, r1]
ldrb r2, [r4, #0xa]
add r2, r3, r2
strh r2, [r4, #2]
ldrsh r1, [r4, r1]
cmp r1, #0x30
blt _0220FEF0
bl ov96_0220FBDC
b _0220FEF0
_0220FECC:
ldr r1, _0220FF54 ; =0xFFFFC03F
and r1, r2
lsl r2, r2, #0x12
lsr r2, r2, #0x18
add r2, r2, #1
lsl r2, r2, #0x18
lsr r2, r2, #0x12
orr r1, r2
str r1, [r4, #4]
lsl r1, r1, #0x12
lsr r1, r1, #0x18
cmp r1, #0x14
blo _0220FEF0
bl ov96_0220FBDC
b _0220FEF0
_0220FEEC:
bl GF_AssertFail
_0220FEF0:
ldrh r0, [r5]
mov r1, #0x7f
bic r0, r1
mov r1, #2
ldrsh r1, [r4, r1]
lsl r2, r1, #1
asr r1, r2, #2
lsr r1, r1, #0x1d
add r1, r2, r1
lsl r1, r1, #0xd
lsr r2, r1, #0x10
mov r1, #0x7f
and r1, r2
orr r0, r1
strh r0, [r5]
ldrh r1, [r5]
ldr r0, _0220FF58 ; =0xFFFFF87F
and r1, r0
ldrb r0, [r4, #9]
lsl r0, r0, #0x1c
lsr r0, r0, #0x15
orr r0, r1
strh r0, [r5]
ldrh r1, [r5]
ldr r0, _0220FF5C ; =0xFFFFC7FF
and r0, r1
ldr r1, [r4, #4]
lsl r1, r1, #0x1b
lsr r1, r1, #0x1d
lsl r1, r1, #0x10
lsr r1, r1, #0x10
lsl r1, r1, #0x1d
lsr r1, r1, #0x12
orr r0, r1
strh r0, [r5]
ldrh r1, [r5]
ldr r0, _0220FF60 ; =0xFFFF3FFF
and r0, r1
ldr r1, [r4, #4]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x10
lsr r1, r1, #0x10
lsl r1, r1, #0x1e
lsr r1, r1, #0x10
orr r0, r1
strh r0, [r5]
_0220FF4E:
add sp, #8
pop {r4, r5, r6, pc}
nop
_0220FF54: .word 0xFFFFC03F
_0220FF58: .word 0xFFFFF87F
_0220FF5C: .word 0xFFFFC7FF
_0220FF60: .word 0xFFFF3FFF
thumb_func_end ov96_0220FE38
thumb_func_start ov96_0220FF64
ov96_0220FF64: ; 0x0220FF64
str r1, [r0]
bx lr
thumb_func_end ov96_0220FF64
thumb_func_start ov96_0220FF68
ov96_0220FF68: ; 0x0220FF68
ldr r3, _0220FF84 ; =ov96_0221CF1C
mov r2, #0
_0220FF6C:
ldr r1, [r3]
cmp r1, r0
bhi _0220FF76
add r0, r2, #0
bx lr
_0220FF76:
add r2, r2, #1
add r3, r3, #4
cmp r2, #4
blt _0220FF6C
mov r0, #0
mvn r0, r0
bx lr
.balign 4, 0
_0220FF84: .word ov96_0221CF1C
thumb_func_end ov96_0220FF68
thumb_func_start ov96_0220FF88
ov96_0220FF88: ; 0x0220FF88
push {r3, r4, r5, lr}
add r5, r0, #0
add r0, r1, #0
mov r4, #1
bl ov96_0220FF68
lsl r0, r0, #0x1c
add r2, r5, #0
ldr r3, [r5, #0x1c]
ldr r1, _0221002C ; =0xFFFFF0FF
lsr r0, r0, #0x14
and r1, r3
orr r0, r1
str r0, [r5, #0x1c]
lsl r0, r0, #0x14
lsr r0, r0, #0x1c
add r2, #0x1c
cmp r0, #3
bhi _0220FFD8
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0220FFBA: ; jump table
.short _0220FFC2 - _0220FFBA - 2 ; case 0
.short _0220FFD0 - _0220FFBA - 2 ; case 1
.short _0220FFC2 - _0220FFBA - 2 ; case 2
.short _0220FFD0 - _0220FFBA - 2 ; case 3
_0220FFC2:
ldr r1, [r2]
mov r0, #0xff
bic r1, r0
mov r0, #0x1e
orr r0, r1
str r0, [r2]
b _0220FFD8
_0220FFD0:
ldr r1, [r2]
mov r0, #0xff
bic r1, r0
str r1, [r2]
_0220FFD8:
ldr r0, [r5, #0x1c]
lsl r0, r0, #0x14
lsr r0, r0, #0x1c
cmp r0, #3
bhs _0220FFE6
mov r1, #4
b _0220FFF4
_0220FFE6:
bl MTRandom
mov r1, #1
and r0, r1
add r0, r0, #1
lsl r0, r0, #0x1a
lsr r1, r0, #0x18
_0220FFF4:
ldr r0, [r5, #0x1c]
lsl r0, r0, #0x14
lsr r0, r0, #0x1c
beq _0220FFFE
mov r4, #2
_0220FFFE:
mov r2, #0
cmp r4, #0
ble _0221002A
add r0, r5, #0
add r0, #8
_02210008:
ldr r3, [r0]
lsl r3, r3, #0x1a
lsr r3, r3, #0x1f
bne _02210022
mov r0, #0xc
mul r0, r2
add r3, r5, #4
lsl r2, r2, #0x18
add r0, r3, r0
lsr r2, r2, #0x18
bl ov96_0220FB98
pop {r3, r4, r5, pc}
_02210022:
add r2, r2, #1
add r0, #0xc
cmp r2, r4
blt _02210008
_0221002A:
pop {r3, r4, r5, pc}
.balign 4, 0
_0221002C: .word 0xFFFFF0FF
thumb_func_end ov96_0220FF88
thumb_func_start ov96_02210030
ov96_02210030: ; 0x02210030
push {r3, r4, r5, r6, r7, lr}
add r1, #0x28
add r7, r0, #0
add r0, r1, #0
add r5, r2, #0
bl ov96_021E8A20
add r4, r0, #0
ldr r0, [r7, #0x1c]
lsl r1, r0, #0x18
lsr r2, r1, #0x18
bne _02210052
add r0, r7, #0
add r1, r5, #0
bl ov96_0220FF88
b _02210060
_02210052:
mov r1, #0xff
bic r0, r1
sub r1, r2, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
orr r0, r1
str r0, [r7, #0x1c]
_02210060:
mov r6, #0
add r5, r7, #4
_02210064:
ldr r2, [r7]
add r0, r5, #0
add r1, r4, #0
bl ov96_0220FE38
add r6, r6, #1
add r4, r4, #2
add r5, #0xc
cmp r6, #2
blt _02210064
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02210030
thumb_func_start ov96_0221007C
ov96_0221007C: ; 0x0221007C
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
str r0, [sp, #0xc]
add r7, r1, #0
str r2, [sp, #0x10]
str r3, [r0]
mov r5, #0
add r4, r0, #0
mov r6, #5
_0221008E:
mov r2, #0
str r6, [sp]
ldr r1, [sp, #0x10]
add r0, r7, #0
add r3, r2, #0
str r6, [sp, #4]
bl ov96_0220ED34
str r0, [r4, #0x3c]
add r5, r5, #1
add r4, #0x1c
cmp r5, #0xc
blt _0221008E
mov r0, #0
str r0, [sp, #0x14]
ldr r0, [sp, #0xc]
add r0, r0, #4
str r0, [sp, #0x18]
_022100B2:
ldr r4, [sp, #0x18]
mov r6, #0
_022100B6:
cmp r6, #1
bne _022100BE
mov r5, #1
b _022100C0
_022100BE:
mov r5, #0
_022100C0:
mov r0, #0
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
mov r2, #0
ldr r1, [sp, #0x10]
str r5, [sp, #8]
add r0, r7, #0
add r3, r2, #0
bl ov96_0220ECA4
str r0, [r4]
mov r0, #2
str r0, [sp]
mov r0, #0x14
str r0, [sp, #4]
mov r2, #0
ldr r1, [sp, #0x10]
add r0, r7, #0
add r3, r2, #0
str r5, [sp, #8]
bl ov96_0220ECA4
str r0, [r4, #8]
add r6, r6, #1
add r4, r4, #4
cmp r6, #2
blt _022100B6
mov r0, #0
str r0, [sp]
mov r0, #1
mov r2, #0
str r0, [sp, #4]
ldr r1, [sp, #0x10]
add r0, r7, #0
add r3, r2, #0
bl ov96_0220ED34
ldr r1, [sp, #0x18]
mov r2, #0
str r0, [r1, #0x10]
mov r0, #4
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r1, [sp, #0x10]
add r0, r7, #0
add r3, r2, #0
bl ov96_0220ED34
ldr r1, [sp, #0x18]
str r0, [r1, #0x14]
add r0, r1, #0
add r0, #0x1c
str r0, [sp, #0x18]
ldr r0, [sp, #0x14]
add r0, r0, #1
str r0, [sp, #0x14]
cmp r0, #2
blt _022100B2
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_0221007C
thumb_func_start ov96_0221013C
ov96_0221013C: ; 0x0221013C
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
add r0, r1, #0
str r1, [sp]
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
add r4, r0, #0
ldr r0, [sp]
bl ov96_021E5DC4
str r0, [sp, #4]
ldr r2, [sp]
add r0, r5, #0
add r1, r4, #0
bl ov96_0220DC7C
ldr r2, [sp]
add r0, r5, #0
add r1, r4, #0
bl ov96_0220DEAC
ldr r0, [r4, #0x1c]
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r1, r0, #0x18
mov r0, #0x63
lsl r0, r0, #2
add r6, r5, r0
ldr r0, [r4, #0x20]
lsl r7, r1, #1
lsl r0, r0, #0x19
lsr r2, r0, #0x19
ldrh r0, [r6, r7]
cmp r2, r0
beq _02210194
lsl r2, r2, #0x10
ldr r0, [r5]
lsr r2, r2, #0x10
bl ov96_02210390
_02210194:
ldr r0, [r4, #0x20]
lsl r0, r0, #0x19
lsr r0, r0, #0x19
strh r0, [r6, r7]
ldr r0, [r4, #0x1c]
lsl r0, r0, #2
lsr r0, r0, #0x1a
sub r1, r0, #1
cmp r1, #0
bgt _022101AA
mov r1, #0
_022101AA:
cmp r1, #0
bgt _022101B0
mov r1, #0
_022101B0:
ldr r0, [sp, #4]
add r0, #0xc4
str r0, [sp, #4]
ldr r0, [r0]
bl ov96_0221040C
ldr r1, [r4, #0x1c]
ldr r0, [sp]
lsl r1, r1, #2
lsr r2, r1, #0x1a
mov r1, #0x1e
mul r1, r2
bl ov96_021E6454
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_0221013C
thumb_func_start ov96_022101D0
ov96_022101D0: ; 0x022101D0
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
mov r4, #0
add r5, r6, #0
_022101D8:
ldr r0, [r5, #0x3c]
cmp r0, #0
bne _022101E2
bl GF_AssertFail
_022101E2:
ldr r0, [r5, #0x3c]
bl sub_0200D9DC
ldr r0, [r5, #0x44]
cmp r0, #0
beq _022101F2
bl DestroySysTask
_022101F2:
add r4, r4, #1
add r5, #0x1c
cmp r4, #0xc
blt _022101D8
mov r7, #0
add r6, r6, #4
_022101FE:
mov r4, #0
add r5, r6, #0
_02210202:
ldr r0, [r5]
bl sub_0200D9DC
ldr r0, [r5, #8]
bl sub_0200D9DC
add r4, r4, #1
add r5, r5, #4
cmp r4, #2
blt _02210202
ldr r0, [r6, #0x10]
bl sub_0200D9DC
ldr r0, [r6, #0x14]
bl sub_0200D9DC
add r7, r7, #1
add r6, #0x1c
cmp r7, #2
blt _022101FE
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_022101D0
thumb_func_start ov96_0221022C
ov96_0221022C: ; 0x0221022C
ldr r3, _02210238 ; =AddWindow
add r1, r0, #0
ldr r0, [r1, #8]
add r1, #0x24
ldr r2, _0221023C ; =ov96_0221CEEC
bx r3
.balign 4, 0
_02210238: .word AddWindow
_0221023C: .word ov96_0221CEEC
thumb_func_end ov96_0221022C
thumb_func_start ov96_02210240
ov96_02210240: ; 0x02210240
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
add r6, r1, #0
ldr r0, [sp, #0x28]
mov r1, #0xe8
add r7, r2, #0
str r3, [sp, #8]
bl AllocFromHeap
add r4, r0, #0
mov r1, #0
mov r2, #0xe8
bl MI_CpuFill8
str r5, [r4, #8]
str r6, [r4, #0xc]
add r0, sp, #0x10
ldrb r0, [r0, #0x14]
strb r0, [r4, #0x1c]
ldr r0, [sp, #0x28]
str r0, [r4, #4]
ldr r0, [sp, #8]
str r7, [r4, #0x10]
str r0, [r4, #0x14]
ldr r0, [sp, #0x20]
str r0, [r4, #0x18]
ldr r0, [sp, #0x2c]
str r0, [r4]
add r0, r4, #0
bl ov96_02210538
mov r0, #8
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
ldr r0, [r4, #8]
ldr r1, [r4, #0xc]
mov r2, #0xd2
mov r3, #0x4c
bl ov96_022104D8
str r0, [r4, #0x68]
add r0, r4, #0
bl ov96_0221075C
add r0, r4, #0
bl ov96_0221065C
add r0, r4, #0
bl ov96_0221069C
ldr r0, [r4, #4]
add r3, r4, #0
str r0, [sp]
mov r0, #0xed
mov r1, #0xe
mov r2, #1
add r3, #0x24
bl GfGfxLoader_GetScrnData
str r0, [r4, #0x20]
add r0, r4, #0
mov r1, #0x3c
bl ov96_0221040C
add r0, r4, #0
mov r1, #0
bl ov96_0221058C
add r0, r4, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02210240
thumb_func_start ov96_022102D4
ov96_022102D4: ; 0x022102D4
push {r4, r5, r6, lr}
add r6, r0, #0
bne _022102DE
bl GF_AssertFail
_022102DE:
ldr r0, [r6, #0x20]
bl FreeToHeap
add r5, r6, #0
mov r4, #0
add r5, #0x28
_022102EA:
add r0, r5, #0
bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #4
blt _022102EA
mov r5, #0
add r4, r6, #0
_022102FC:
ldr r0, [r4, #0x68]
cmp r0, #0
bne _02210306
bl GF_AssertFail
_02210306:
ldr r0, [r4, #0x68]
bl sub_0200D9DC
add r5, r5, #1
add r4, r4, #4
cmp r5, #0x1f
blt _022102FC
add r0, r6, #0
bl FreeToHeap
pop {r4, r5, r6, pc}
thumb_func_end ov96_022102D4
thumb_func_start ov96_0221031C
ov96_0221031C: ; 0x0221031C
ldr r3, _02210320 ; =ov96_022107D4
bx r3
.balign 4, 0
_02210320: .word ov96_022107D4
thumb_func_end ov96_0221031C
thumb_func_start ov96_02210324
ov96_02210324: ; 0x02210324
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, [r5]
add r7, r1, #0
add r4, r2, #0
bl ov96_021E5F24
cmp r7, r0
bne _02210386
add r0, r5, #0
add r0, #0xe6
ldrh r0, [r0]
cmp r4, r0
beq _02210386
cmp r0, r4
bls _02210352
add r0, r5, #0
add r0, #0xe5
ldrb r0, [r0]
add r1, r0, #1
add r0, r5, #0
add r0, #0xe5
strb r1, [r0]
_02210352:
add r0, r5, #0
add r0, #0xe5
ldrb r0, [r0]
lsl r0, r0, #7
add r1, r4, r0
ldr r0, _0221038C ; =0x000003E7
cmp r1, r0
ble _02210366
add r1, r0, #0
b _0221036C
_02210366:
cmp r1, #0
bge _0221036C
mov r1, #0
_0221036C:
lsl r1, r1, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
bl ov96_0221058C
add r0, r5, #0
add r0, #0xe6
ldrh r0, [r0]
add r5, #0xe6
sub r0, r4, r0
lsl r0, r0, #0x10
lsr r6, r0, #0x10
strh r4, [r5]
_02210386:
lsl r0, r6, #0x18
lsr r0, r0, #0x18
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0221038C: .word 0x000003E7
thumb_func_end ov96_02210324
thumb_func_start ov96_02210390
ov96_02210390: ; 0x02210390
push {r4, r5, r6, lr}
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
cmp r5, #0
bne _022103A0
bl GF_AssertFail
_022103A0:
cmp r4, #4
blo _022103A8
bl GF_AssertFail
_022103A8:
add r0, r4, #3
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x68]
add r1, r4, #4
bl UnkImageStruct_SetSpriteAnimSeqNo
ldr r0, [r5]
bl ov96_021E5F24
cmp r4, r0
bne _02210402
add r0, r5, #0
add r0, #0xe6
ldrh r0, [r0]
cmp r6, r0
beq _02210402
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
bl ov96_02210324
cmp r0, #1
beq _022103FE
cmp r0, #2
bne _022103E6
ldr r0, _02210408 ; =0x0000088D
mov r1, #0x80
bl PlaySE_SetPitch
b _022103FE
_022103E6:
cmp r0, #3
ldr r0, _02210408 ; =0x0000088D
bne _022103F6
mov r1, #1
lsl r1, r1, #8
bl PlaySE_SetPitch
b _022103FE
_022103F6:
mov r1, #5
lsl r1, r1, #6
bl PlaySE_SetPitch
_022103FE:
mov r0, #1
pop {r4, r5, r6, pc}
_02210402:
mov r0, #0
pop {r4, r5, r6, pc}
nop
_02210408: .word 0x0000088D
thumb_func_end ov96_02210390
thumb_func_start ov96_0221040C
ov96_0221040C: ; 0x0221040C
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r6, r0, #0
add r0, r1, #0
mov r1, #0x64
bl _s32_div_f
lsl r0, r1, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
lsl r0, r1, #0x18
lsr r0, r0, #0x18
str r0, [sp]
add r0, r6, #0
add r0, #0xe4
ldrb r0, [r0]
cmp r0, #0
beq _0221044E
cmp r0, #1
beq _02210478
cmp r0, #2
beq _022104A6
b _022104A2
_0221044E:
cmp r4, #0x14
bhi _022104A6
mov r4, #0
add r5, r6, #0
mov r7, #2
_02210458:
ldr r0, [r5, #0x6c]
add r1, r7, #0
bl UnkImageStruct_SetSpritePalIndex
add r4, r4, #1
add r5, r5, #4
cmp r4, #2
blt _02210458
add r0, r6, #0
add r0, #0xe4
ldrb r0, [r0]
add r1, r0, #1
add r0, r6, #0
add r0, #0xe4
strb r1, [r0]
b _022104A6
_02210478:
cmp r4, #3
bhi _022104A6
mov r4, #0
add r5, r6, #0
mov r7, #3
_02210482:
ldr r0, [r5, #0x6c]
add r1, r7, #0
bl UnkImageStruct_SetSpritePalIndex
add r4, r4, #1
add r5, r5, #4
cmp r4, #2
blt _02210482
add r0, r6, #0
add r0, #0xe4
ldrb r0, [r0]
add r1, r0, #1
add r0, r6, #0
add r0, #0xe4
strb r1, [r0]
b _022104A6
_022104A2:
bl GF_AssertFail
_022104A6:
ldr r1, [sp, #4]
ldr r0, [r6, #0x6c]
add r1, #9
str r1, [sp, #4]
bl UnkImageStruct_SetSpriteAnimSeqNo
ldr r1, [sp]
ldr r0, [r6, #0x70]
add r1, #9
str r1, [sp]
bl UnkImageStruct_SetSpriteAnimSeqNo
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0221040C
thumb_func_start ov96_022104C4
ov96_022104C4: ; 0x022104C4
add r1, r0, #0
add r0, #0xe5
add r1, #0xe6
ldrb r0, [r0]
ldrh r1, [r1]
lsl r0, r0, #7
add r0, r1, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bx lr
thumb_func_end ov96_022104C4
thumb_func_start ov96_022104D8
ov96_022104D8: ; 0x022104D8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
ldr r6, _02210534 ; =ov96_0221D17C
add r7, r2, #0
str r3, [sp]
add r5, r0, #0
add r4, r1, #0
add r3, sp, #4
mov r2, #6
_022104EA:
ldmia r6!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _022104EA
ldr r0, [r6]
cmp r5, #0
str r0, [r3]
bne _022104FE
bl GF_AssertFail
_022104FE:
cmp r4, #0
bne _02210506
bl GF_AssertFail
_02210506:
add r1, sp, #4
strh r7, [r1]
ldr r0, [sp]
mov r3, #0x1e
strh r0, [r1, #2]
add r0, sp, #0x40
ldrh r2, [r0, #0x10]
lsl r3, r3, #0x10
strh r2, [r1, #6]
ldrh r0, [r0, #0x14]
add r1, r4, #0
add r2, sp, #4
str r0, [sp, #0xc]
add r0, r5, #0
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
mov r1, #1
add r4, r0, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r0, r4, #0
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02210534: .word ov96_0221D17C
thumb_func_end ov96_022104D8
thumb_func_start ov96_02210538
ov96_02210538: ; 0x02210538
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
bne _02210542
bl GF_AssertFail
_02210542:
ldr r0, [r5, #0x10]
cmp r0, #0
bne _0221054C
bl GF_AssertFail
_0221054C:
add r6, r5, #0
ldr r7, _02210588 ; =ov96_0221D15C
mov r4, #0
add r6, #0x28
_02210554:
lsl r1, r4, #4
lsl r2, r4, #3
ldr r0, [r5, #0x10]
add r1, r6, r1
add r2, r7, r2
bl AddWindow
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #4
blo _02210554
mov r2, #0
str r2, [sp]
ldr r0, [r5, #0x10]
mov r1, #7
mov r3, #1
bl BG_FillCharDataRange
mov r1, #0x1e
ldr r2, [r5, #4]
mov r0, #4
lsl r1, r1, #4
bl LoadFontPal0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02210588: .word ov96_0221D15C
thumb_func_end ov96_02210538
thumb_func_start ov96_0221058C
ov96_0221058C: ; 0x0221058C
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r6, r1, #0
add r5, r0, #0
add r0, r6, #0
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #3]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0]
mov r0, #0x64
mul r0, r4
sub r0, r6, r0
mov r1, #0xa
bl _s32_div_f
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #4]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0, #1]
add r0, r6, #0
mov r1, #0xa
bl _s32_div_f
lsl r0, r1, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #5]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0, #2]
mov r4, #0
mov r6, #4
mov r7, #8
_02210616:
str r6, [sp]
str r7, [sp, #4]
ldr r0, [r5, #0x24]
lsl r2, r4, #0x1a
add r0, #0xc
str r0, [sp, #8]
add r0, sp, #0x1c
add r0, #3
ldrb r0, [r0, r4]
mov r1, #6
lsr r2, r2, #0x18
str r0, [sp, #0xc]
add r0, sp, #0x1c
ldrb r0, [r0, r4]
mov r3, #0
str r0, [sp, #0x10]
mov r0, #0x14
str r0, [sp, #0x14]
mov r0, #0x10
str r0, [sp, #0x18]
ldr r0, [r5, #0x10]
bl CopyRectToBgTilemapRect
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _02210616
ldr r0, [r5, #0x10]
mov r1, #6
bl ScheduleBgTilemapBufferTransfer
add sp, #0x24
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0221058C
thumb_func_start ov96_0221065C
ov96_0221065C: ; 0x0221065C
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r7, r0, #0
mov r6, #0
mov r4, #0xe6
add r5, r7, #0
_02210668:
add r0, r6, #0
add r0, #9
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
lsl r2, r4, #0x10
ldr r0, [r7, #8]
ldr r1, [r7, #0xc]
asr r2, r2, #0x10
mov r3, #0x4c
bl ov96_022104D8
mov r1, #1
str r0, [r5, #0x6c]
bl UnkImageStruct_SetSpritePalIndex
add r6, r6, #1
add r4, #0x10
add r5, r5, #4
cmp r6, #2
blt _02210668
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0221065C
thumb_func_start ov96_0221069C
ov96_0221069C: ; 0x0221069C
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r5, r0, #0
ldr r0, _02210750 ; =0x00000000
str r0, [sp, #0x1c]
bne _022106AC
bl GF_AssertFail
_022106AC:
add r6, r5, #0
mov r4, #0
str r5, [sp, #0x10]
add r6, #0x28
_022106B4:
ldrb r0, [r5, #0x1c]
cmp r4, r0
bne _022106C6
mov r0, #8
str r0, [sp, #0x18]
mov r0, #0x48
mov r7, #0
str r0, [sp, #0x14]
b _022106E4
_022106C6:
ldr r0, [sp, #0x1c]
ldr r1, _02210754 ; =ov96_0221D14C
add r0, r0, #1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
ldr r0, [sp, #0x1c]
ldr r2, _02210754 ; =ov96_0221D14C
lsl r0, r0, #2
add r1, r1, r0
ldrsh r0, [r2, r0]
str r0, [sp, #0x18]
mov r0, #2
ldrsh r0, [r1, r0]
str r0, [sp, #0x14]
str r7, [sp, #0x1c]
_022106E4:
ldr r0, [r5]
add r1, r4, #0
bl ov96_021E5F34
ldr r1, [r5, #4]
bl PlayerProfile_GetPlayerName_NewString
lsl r7, r7, #4
str r0, [sp, #0x20]
add r0, r6, r7
mov r1, #0
bl FillWindowPixelBuffer
mov r0, #0
str r0, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _02210758 ; =0x000F0E00
mov r1, #0
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
ldr r2, [sp, #0x20]
add r0, r6, r7
add r3, r1, #0
bl AddTextPrinterParameterizedWithColor
add r0, r6, r7
bl CopyWindowToVram
ldr r0, [sp, #0x20]
bl String_Delete
lsl r0, r4, #0x10
lsr r0, r0, #0x10
str r0, [sp]
mov r0, #0x41
str r0, [sp, #4]
ldr r0, [r5, #8]
ldr r1, [r5, #0xc]
ldr r2, [sp, #0x18]
ldr r3, [sp, #0x14]
bl ov96_022104D8
ldr r1, [sp, #0x10]
add r4, r4, #1
str r0, [r1, #0x74]
add r0, r1, #0
add r0, r0, #4
str r0, [sp, #0x10]
cmp r4, #4
blt _022106B4
add sp, #0x24
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02210750: .word 0x00000000
_02210754: .word ov96_0221D14C
_02210758: .word 0x000F0E00
thumb_func_end ov96_0221069C
thumb_func_start ov96_0221075C
ov96_0221075C: ; 0x0221075C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r5, r0, #0
mov r0, #0
str r0, [sp, #0x10]
mov r0, #8
mov r7, #7
str r0, [sp, #0xc]
_0221076C:
ldr r0, [sp, #0x10]
mov r4, #0
add r0, r0, #4
lsl r0, r0, #3
str r0, [sp, #8]
ldr r0, [sp, #0xc]
lsl r0, r0, #0x10
asr r0, r0, #0x10
str r0, [sp, #0x14]
_0221077E:
add r0, r4, r7
cmp r4, #0
bne _02210788
mov r2, #1
b _0221078C
_02210788:
mov r2, #0
mvn r2, r2
_0221078C:
ldr r1, [sp, #8]
lsl r0, r0, #2
mul r2, r1
mov r1, #0x80
add r6, r5, r0
mov r0, #0x14
add r1, r1, r2
str r0, [sp]
mov r0, #0x40
lsl r1, r1, #0x10
str r0, [sp, #4]
asr r2, r1, #0x10
ldr r0, [r5, #8]
ldr r1, [r5, #0xc]
ldr r3, [sp, #0x14]
bl ov96_022104D8
mov r1, #3
str r0, [r6, #0x68]
bl UnkImageStruct_SetSpritePriority
add r4, r4, #1
cmp r4, #2
blt _0221077E
ldr r0, [sp, #0xc]
add r7, r7, #2
add r0, #0x10
str r0, [sp, #0xc]
ldr r0, [sp, #0x10]
add r0, r0, #1
str r0, [sp, #0x10]
cmp r0, #0xc
blt _0221076C
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0221075C
thumb_func_start ov96_022107D4
ov96_022107D4: ; 0x022107D4
push {r4, r5, r6, lr}
mov r4, #0
add r5, r0, #0
add r6, r4, #0
_022107DC:
ldr r0, [r5, #0x68]
add r1, r6, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r4, r4, #1
add r5, r5, #4
cmp r4, #0x1f
blt _022107DC
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_022107D4
thumb_func_start ov96_022107F0
ov96_022107F0: ; 0x022107F0
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
str r0, [sp]
bl ov96_021E5D34
add r5, r0, #0
add r0, r4, #0
mov r1, #0xc0
bl AllocFromHeap
mov r1, #0
mov r2, #0xc0
add r7, r0, #0
bl MI_CpuFill8
str r4, [r7]
ldr r0, [sp]
mov r4, #0
str r0, [r7, #4]
mov r0, #4
sub r1, r0, r5
add r0, r7, #0
add r0, #0xbc
strb r1, [r0]
add r0, r7, #0
add r0, #0xbc
ldrb r0, [r0]
cmp r0, #0
ble _0221084A
add r6, r7, #0
add r6, #8
_0221082E:
lsl r1, r5, #0x18
ldr r2, [sp]
add r0, r6, #0
lsr r1, r1, #0x18
bl ov96_022108BC
add r0, r7, #0
add r0, #0xbc
ldrb r0, [r0]
add r4, r4, #1
add r5, r5, #1
add r6, #0x3c
cmp r4, r0
blt _0221082E
_0221084A:
add r0, r7, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_022107F0
thumb_func_start ov96_02210850
ov96_02210850: ; 0x02210850
ldr r3, _02210854 ; =FreeToHeap
bx r3
.balign 4, 0
_02210854: .word FreeToHeap
thumb_func_end ov96_02210850
thumb_func_start ov96_02210858
ov96_02210858: ; 0x02210858
push {r3, r4, r5, r6, r7, lr}
str r0, [sp]
ldr r0, [r0, #4]
bl ov96_021E5DC4
mov r7, #0
add r6, r0, #0
add r4, r7, #0
_02210868:
lsl r1, r4, #0x18
add r0, r6, #0
lsr r1, r1, #0x18
bl ov96_0220E850
add r4, r4, #1
add r7, r7, r0
cmp r4, #4
blt _02210868
ldr r0, [sp]
mov r5, #0
add r0, #0xbc
ldrb r0, [r0]
cmp r0, #0
ble _022108BA
asr r0, r7, #1
lsr r0, r0, #0x1e
ldr r4, [sp]
add r0, r7, r0
lsl r0, r0, #0xe
add r4, #8
lsr r7, r0, #0x10
_02210894:
lsl r1, r5, #0x18
add r0, r6, #0
lsr r1, r1, #0x18
bl ov96_0220E850
add r2, r0, #0
lsl r2, r2, #0x10
add r0, r4, #0
add r1, r7, #0
lsr r2, r2, #0x10
bl ov96_022108EC
ldr r0, [sp]
add r5, r5, #1
add r0, #0xbc
ldrb r0, [r0]
add r4, #0x3c
cmp r5, r0
blt _02210894
_022108BA:
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_02210858
thumb_func_start ov96_022108BC
ov96_022108BC: ; 0x022108BC
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r7, r2, #0
mov r1, #0
mov r2, #0x3c
add r5, r0, #0
bl MI_CpuFill8
lsl r0, r4, #1
mov r6, #0
add r4, r4, r0
_022108D2:
lsl r2, r4, #0x18
add r0, r5, #0
add r1, r7, #0
lsr r2, r2, #0x18
bl ov96_02210980
add r6, r6, #1
add r4, r4, #1
add r5, #0x14
cmp r6, #3
blt _022108D2
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_022108BC
thumb_func_start ov96_022108EC
ov96_022108EC: ; 0x022108EC
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
add r7, r2, #0
mov r4, #0
_022108F6:
add r0, r5, #0
add r1, r6, #0
add r2, r7, #0
bl ov96_02210AE0
add r4, r4, #1
add r5, #0x14
cmp r4, #3
blt _022108F6
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_022108EC
thumb_func_start ov96_0221090C
ov96_0221090C: ; 0x0221090C
push {r3, r4, r5, lr}
add r4, r0, #0
ldr r0, [r4, #0xc]
lsl r0, r0, #0x19
lsr r0, r0, #0x1e
lsl r5, r0, #1
bl MTRandom
ldr r1, _02210970 ; =ov96_0221D1B1
ldrb r1, [r1, r5]
bl _u32_div_f
ldr r0, _02210974 ; =ov96_0221D1B0
ldrb r0, [r0, r5]
add r0, r0, r1
strh r0, [r4, #6]
mov r0, #6
ldrsh r0, [r4, r0]
lsl r0, r0, #3
strh r0, [r4, #6]
ldr r1, [r4, #0xc]
lsl r0, r1, #0x1b
lsr r2, r0, #0x1e
mov r0, #0xc
mul r0, r2
ldr r2, _02210978 ; =ov96_0221D1C4
lsl r1, r1, #0x19
lsr r1, r1, #0x1e
lsl r1, r1, #2
add r0, r2, r0
ldrsh r0, [r1, r0]
strh r0, [r4, #8]
bl MTRandom
mov r1, #5
bl _u32_div_f
mov r0, #8
ldrsh r2, [r4, r0]
sub r0, r1, #2
lsl r0, r0, #3
add r0, r2, r0
strh r0, [r4, #8]
ldr r1, [r4, #0xc]
mov r0, #1
bic r1, r0
ldr r0, _0221097C ; =0xFFFFF87F
and r0, r1
str r0, [r4, #0xc]
pop {r3, r4, r5, pc}
.balign 4, 0
_02210970: .word ov96_0221D1B1
_02210974: .word ov96_0221D1B0
_02210978: .word ov96_0221D1C4
_0221097C: .word 0xFFFFF87F
thumb_func_end ov96_0221090C
thumb_func_start ov96_02210980
ov96_02210980: ; 0x02210980
push {r3, r4, r5, r6, r7, lr}
add r7, r2, #0
add r5, r0, #0
add r6, r1, #0
add r0, r7, #0
mov r1, #3
bl _s32_div_f
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r7, #0
mov r1, #3
bl _s32_div_f
lsl r0, r1, #0x18
str r6, [r5]
ldr r2, [r5, #0xc]
mov r1, #0x18
bic r2, r1
lsl r1, r4, #0x1e
lsr r1, r1, #0x1b
orr r2, r1
mov r1, #0x60
lsr r0, r0, #0x18
bic r2, r1
lsl r1, r0, #0x1e
lsr r1, r1, #0x19
orr r1, r2
lsl r2, r4, #1
lsl r0, r0, #3
add r0, r2, r0
ldr r2, _022109D4 ; =0xFFF807FF
and r2, r1
lsl r1, r0, #0x18
lsr r1, r1, #0xd
orr r1, r2
str r1, [r5, #0xc]
strb r0, [r5, #0x10]
add r0, r5, #0
bl ov96_0221090C
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_022109D4: .word 0xFFF807FF
thumb_func_end ov96_02210980
thumb_func_start ov96_022109D8
ov96_022109D8: ; 0x022109D8
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r6, r0, #0
ldr r0, [r6]
bl ov96_021E5DC4
ldr r1, [r6, #0xc]
add r7, r0, #0
lsl r1, r1, #0x1b
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
ldr r0, [r6]
lsr r1, r1, #0x18
bl ov96_0220E7BC
ldr r0, [r6, #0xc]
lsl r1, r0, #0x15
lsr r1, r1, #0x1c
beq _02210A04
cmp r1, #1
beq _02210A68
b _02210ABA
_02210A04:
lsl r0, r0, #0x1f
lsr r0, r0, #0x1f
beq _02210A0E
bl GF_AssertFail
_02210A0E:
mov r0, #8
ldrsh r0, [r6, r0]
add r4, r6, #0
mov r5, #0
strh r0, [r6, #4]
mov r0, #6
str r0, [sp, #4]
mov r0, #1
add r4, #0xc
str r0, [sp]
_02210A22:
lsl r1, r5, #0x18
add r0, r7, #0
lsr r1, r1, #0x18
bl ov96_0220E74C
ldr r0, [r0, #4]
lsl r0, r0, #0x1a
lsr r0, r0, #0x1f
beq _02210A60
add r0, r6, #0
add r1, r5, #0
mov r2, #0x38
bl ov96_02210BD0
cmp r0, #0
beq _02210A60
ldr r0, [r4]
ldr r1, [sp, #4]
bic r0, r1
lsl r1, r5, #0x1e
lsr r1, r1, #0x1d
orr r1, r0
ldr r0, [sp]
bic r1, r0
mov r0, #1
orr r1, r0
ldr r0, _02210ADC ; =0xFFFFF87F
and r1, r0
mov r0, #0x80
orr r0, r1
str r0, [r4]
_02210A60:
add r5, r5, #1
cmp r5, #2
blt _02210A22
b _02210ABE
_02210A68:
lsl r0, r0, #0x1f
lsr r0, r0, #0x1f
cmp r0, #1
beq _02210A74
bl GF_AssertFail
_02210A74:
ldr r1, [r6, #0xc]
lsl r0, r1, #0x1f
lsr r0, r0, #0x1f
beq _02210ABE
lsl r1, r1, #0x1d
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
add r0, r7, #0
lsr r1, r1, #0x18
bl ov96_0220E74C
add r1, r0, #0
ldr r0, [r1, #4]
lsl r0, r0, #0x1a
lsr r0, r0, #0x1f
beq _02210AAC
mov r0, #6
ldrsh r2, [r6, r0]
mov r0, #0x12
lsl r0, r0, #4
add r0, r2, r0
lsl r0, r0, #0x10
ldrb r1, [r1, #9]
asr r0, r0, #0x10
bl ov96_0220E6DC
strh r0, [r6, #4]
b _02210ABE
_02210AAC:
ldr r1, [r6, #0xc]
mov r0, #1
bic r1, r0
ldr r0, _02210ADC ; =0xFFFFF87F
and r0, r1
str r0, [r6, #0xc]
b _02210ABE
_02210ABA:
bl GF_AssertFail
_02210ABE:
ldr r3, [r6, #0xc]
add r0, r7, #0
lsl r2, r3, #0x1b
lsl r3, r3, #0x19
lsr r2, r2, #0x1e
lsr r3, r3, #0x1e
lsl r2, r2, #0x18
lsl r3, r3, #0x18
add r1, r6, #4
lsr r2, r2, #0x18
lsr r3, r3, #0x18
bl ov96_0220E818
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02210ADC: .word 0xFFFFF87F
thumb_func_end ov96_022109D8
thumb_func_start ov96_02210AE0
ov96_02210AE0: ; 0x02210AE0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
ldr r0, [r5]
add r4, r1, #0
add r6, r2, #0
bl ov96_021E5DC4
ldr r2, [r5, #0xc]
str r0, [sp, #4]
lsl r1, r2, #0x1b
lsl r2, r2, #0x19
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_0220E70C
cmp r0, #0
beq _02210BC4
ldrb r0, [r5, #0x10]
sub r0, r0, #1
strb r0, [r5, #0x10]
ldrb r0, [r5, #0x10]
cmp r0, #0
bne _02210B22
add r0, r5, #0
bl ov96_0221090C
mov r0, #0x5a
strb r0, [r5, #0x10]
_02210B22:
ldr r1, [r5, #0xc]
ldr r0, _02210BC8 ; =0xFFF807FF
and r0, r1
lsl r1, r1, #0xd
lsr r1, r1, #0x18
sub r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #0xd
orr r0, r1
str r0, [r5, #0xc]
lsl r0, r0, #0xd
lsr r0, r0, #0x18
bne _02210B50
add r0, r5, #0
bl ov96_022109D8
ldr r1, [r5, #0xc]
ldr r0, _02210BC8 ; =0xFFF807FF
and r1, r0
mov r0, #0xa
lsl r0, r0, #0xc
orr r0, r1
str r0, [r5, #0xc]
_02210B50:
ldr r1, [r5, #0xc]
lsl r0, r1, #0x1f
lsr r0, r0, #0x1f
beq _02210BC4
lsl r1, r1, #0x1d
add r0, r5, #0
lsr r1, r1, #0x1e
mov r2, #0x10
bl ov96_02210BD0
cmp r0, #0
beq _02210BC4
bl MTRandom
mov r1, #0x64
bl _u32_div_f
add r0, sp, #8
str r0, [sp]
ldr r2, [r5, #0xc]
add r7, r1, #0
lsl r1, r2, #0x1b
lsl r2, r2, #0x19
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
add r3, sp, #0xc
bl ov96_0220E770
add r4, #0x14
cmp r4, r6
bge _02210B9C
mov r0, #0
b _02210BA8
_02210B9C:
ldr r0, [r5, #0xc]
lsl r0, r0, #0x19
lsr r0, r0, #0x1e
lsl r1, r0, #2
ldr r0, _02210BCC ; =ov96_0221D1B8
ldr r0, [r0, r1]
_02210BA8:
cmp r7, r0
bge _02210BC4
ldr r2, [r5, #0xc]
ldr r0, [sp, #4]
lsl r1, r2, #0x1b
lsl r2, r2, #0x19
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_0220E834
_02210BC4:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02210BC8: .word 0xFFF807FF
_02210BCC: .word ov96_0221D1B8
thumb_func_end ov96_02210AE0
thumb_func_start ov96_02210BD0
ov96_02210BD0: ; 0x02210BD0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r4, r0, #0
ldr r0, [r4]
add r5, r1, #0
add r6, r2, #0
bl ov96_021E5DC4
lsl r1, r5, #0x18
lsr r1, r1, #0x18
add r7, r0, #0
bl ov96_0220E74C
add r5, r0, #0
mov r0, #2
ldrsh r1, [r5, r0]
mov r0, #0x12
lsl r0, r0, #4
cmp r1, r0
bge _02210BFE
add sp, #0x10
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_02210BFE:
add r0, sp, #8
str r0, [sp]
ldr r2, [r4, #0xc]
add r0, r7, #0
lsl r1, r2, #0x1b
lsl r2, r2, #0x19
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
lsr r1, r1, #0x18
lsr r2, r2, #0x18
add r3, sp, #0xc
bl ov96_0220E770
mov r0, #2
ldrsh r1, [r5, r0]
mov r0, #0x12
lsl r0, r0, #4
sub r0, r1, r0
lsl r0, r0, #0x10
asr r0, r0, #0x10
str r0, [sp]
str r6, [sp, #4]
mov r3, #0
add r2, sp, #8
mov r0, #4
mov r1, #6
ldrsh r0, [r2, r0]
ldrsh r1, [r2, r1]
ldrsh r3, [r5, r3]
ldr r2, [sp, #8]
bl ov96_02210C48
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02210BD0
thumb_func_start ov96_02210C48
ov96_02210C48: ; 0x02210C48
push {r4, r5}
ldr r5, _02210C94 ; =0xFFFFFFF8
mov r4, #0x10
add r5, sp
ldrsh r4, [r5, r4]
sub r4, r1, r4
bpl _02210C5A
neg r1, r4
b _02210C5C
_02210C5A:
add r1, r4, #0
_02210C5C:
cmp r4, #0
bge _02210C62
neg r4, r4
_02210C62:
sub r3, r0, r3
bpl _02210C6A
neg r0, r3
b _02210C6C
_02210C6A:
add r0, r3, #0
_02210C6C:
cmp r3, #0
bge _02210C72
neg r3, r3
_02210C72:
ldr r5, [sp, #0xc]
add r2, r2, r5
add r5, r2, #0
mul r5, r2
add r2, r3, #0
mul r2, r0
add r0, r4, #0
mul r0, r1
add r0, r2, r0
cmp r5, r0
blt _02210C8E
mov r0, #1
pop {r4, r5}
bx lr
_02210C8E:
mov r0, #0
pop {r4, r5}
bx lr
.balign 4, 0
_02210C94: .word 0xFFFFFFF8
thumb_func_end ov96_02210C48
thumb_func_start ov96_02210C98
ov96_02210C98: ; 0x02210C98
push {r4, r5, r6, r7, lr}
sub sp, #0x1fc
sub sp, #0x98
str r0, [sp, #0x14]
bl ov96_021E5DC4
add r4, r0, #0
ldr r0, [sp, #0x14]
bl ov96_021E5DD4
cmp r0, #5
bls _02210CB4
bl _02211626
_02210CB4:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02210CC0: ; jump table
.short _02210CCC - _02210CC0 - 2 ; case 0
.short _02210DCE - _02210CC0 - 2 ; case 1
.short _02210E1A - _02210CC0 - 2 ; case 2
.short _022111D4 - _02210CC0 - 2 ; case 3
.short _0221123C - _02210CC0 - 2 ; case 4
.short _02211616 - _02210CC0 - 2 ; case 5
_02210CCC:
mov r2, #5
mov r0, #0x5c
mov r1, #0x93
lsl r2, r2, #0x10
bl CreateHeap
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
bl GfGfx_DisableEngineAPlanes
bl GfGfx_DisableEngineBPlanes
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _02211078 ; =0xFFFFE0FF
and r1, r0
str r1, [r2]
ldr r2, _0221107C ; =0x04001000
ldr r1, [r2]
and r0, r1
str r0, [r2]
bl ov96_022117CC
mov r1, #0x82
ldr r0, [sp, #0x14]
lsl r1, r1, #4
bl ov96_021E5D94
mov r2, #0x82
mov r1, #0
lsl r2, r2, #4
add r5, r0, #0
bl MI_CpuFill8
mov r0, #0x93
mov r1, #0x28
bl AllocFromHeap
ldr r1, _02211080 ; =0x0000081C
mov r2, #0x28
str r0, [r5, r1]
ldr r0, [r5, r1]
mov r1, #0
bl MI_CpuFill8
mov r0, #0x93
bl BgConfig_Alloc
str r0, [r5, #4]
ldr r0, [sp, #0x14]
mov r1, #8
bl ov96_021E6670
mov r0, #0x85
str r0, [sp, #0x108]
mov r0, #1
lsl r0, r0, #0x12
str r0, [sp, #0x10c]
lsr r0, r0, #4
mov r2, #0x93
str r0, [sp, #0x110]
ldr r3, _02211084 ; =0x00300010
str r2, [sp, #0x114]
mov r1, #0x10
add r0, sp, #0x108
str r1, [sp]
bl ov96_021E92B0
bl NNS_G2dInitOamManagerModule
mov r0, #1
str r0, [sp]
mov r1, #0x7e
str r1, [sp, #4]
mov r0, #0
str r0, [sp, #8]
mov r3, #0x20
str r3, [sp, #0xc]
mov r2, #0x93
str r2, [sp, #0x10]
add r2, r0, #0
bl OamManager_Create
mov r1, #0x93
str r1, [r5, #0x58]
mov r0, #4
bl FontID_Alloc
ldr r0, [r5, #4]
bl ov96_022118C4
add r0, r5, #0
bl ov96_0221362C
ldr r0, [sp, #0x14]
bl ov96_022140F4
mov r4, #0
add r6, r4, #0
_02210DA0:
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
bl ov96_02214044
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #4
blo _02210DA0
add r0, r5, #0
bl ov96_022141F8
ldr r0, _02211088 ; =gSystem + 0x60
mov r1, #1
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
ldr r0, [sp, #0x14]
bl ov96_021E5DEC
bl _02211626
_02210DCE:
ldr r0, [r4, #0x58]
ldr r1, [r4, #4]
ldr r2, [sp, #0x14]
bl ov96_0221464C
mov r1, #0x75
lsl r1, r1, #4
str r0, [r4, r1]
ldr r0, [sp, #0x14]
bl ov96_021E5D34
add r5, r0, #0
ldr r0, [sp, #0x14]
bl ov96_021E5EE8
add r2, r0, #0
mov r1, #4
ldr r0, [r4, #0x58]
sub r1, r1, r5
bl ov96_02214A24
ldr r1, _0221108C ; =0x0000074C
mov r2, #1
str r0, [r4, r1]
ldr r0, [r4, #0x58]
ldr r1, _02211090 ; =0x00000AAF
bl ov96_021E9A78
ldr r1, _02211094 ; =0x00000744
str r0, [r4, r1]
ldr r0, [sp, #0x14]
bl ov96_021E64B8
ldr r0, [sp, #0x14]
bl ov96_021E5DEC
bl _02211626
_02210E1A:
ldr r5, _02211098 ; =ov96_0221D238
add r3, sp, #0xfc
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r5]
add r1, r2, #0
str r0, [r3]
ldr r0, [r4, #0x58]
bl ov96_021EB180
mov r1, #0
str r0, [r4]
mov r0, #2
lsl r0, r0, #0x14
str r0, [sp]
ldr r0, [r4]
add r2, r1, #0
add r3, r1, #0
bl ov96_021EB5C8
ldr r0, [r4]
bl ov96_021EB5E8
str r0, [sp]
ldr r3, _02211094 ; =0x00000744
ldr r0, [r4, #0x58]
ldr r3, [r4, r3]
mov r1, #0xc
mov r2, #8
bl ov96_021EA854
ldr r1, _0221109C ; =0x00000748
mov r2, #0x65
str r0, [r4, r1]
ldr r0, [r4]
mov r1, #0
bl ov96_021EB29C
ldr r0, [r4]
mov r1, #1
mov r2, #0x66
bl ov96_021EB29C
mov r0, #1
str r0, [sp]
ldr r0, [r4]
mov r1, #0xec
mov r2, #0x12
mov r3, #0x65
bl ov96_021EB2BC
mov r0, #1
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0xec
mov r2, #0xf
mov r3, #0x65
bl ov96_021EB2F4
ldr r0, [r4]
mov r1, #0xec
mov r2, #0x11
mov r3, #0x65
bl ov96_021EB334
ldr r0, [r4]
mov r1, #0xec
mov r2, #0x10
mov r3, #0x65
bl ov96_021EB36C
mov r0, #2
str r0, [sp]
ldr r0, [r4]
mov r1, #0xec
mov r2, #0xe
mov r3, #0x66
bl ov96_021EB2BC
mov r0, #2
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4]
mov r1, #0xec
mov r2, #0xb
mov r3, #0x66
bl ov96_021EB2F4
ldr r0, [r4]
mov r1, #0xec
mov r2, #0xd
mov r3, #0x66
bl ov96_021EB334
ldr r0, [r4]
mov r1, #0xec
mov r2, #0xc
mov r3, #0x66
bl ov96_021EB36C
ldr r0, [r4]
bl ov96_021EB3A4
mov r0, #0
str r0, [sp, #0x54]
mov r7, #7
_02210EF6:
ldr r0, [sp, #0x54]
mov r1, #3
bl _s32_div_f
add r5, r0, #0
ldr r0, [sp, #0x54]
mov r1, #3
bl _s32_div_f
mov r0, #0x5d
lsl r0, r0, #2
mul r0, r5
add r2, r4, r0
mov r0, #0x7c
mul r0, r1
add r5, r2, r0
mov r0, #2
str r0, [sp]
mov r1, #1
ldr r0, [r4]
add r2, r1, #0
mov r3, #0x65
bl ov96_021EB3E4
mov r1, #5
str r0, [r5, #0x60]
bl ov96_021EB630
mov r6, #0
_02210F30:
str r7, [sp]
mov r1, #1
ldr r0, [r4]
add r2, r1, #0
mov r3, #0x65
bl ov96_021EB3E4
mov r1, #0x2f
str r0, [r5, #0x64]
bl ov96_021EB630
add r6, r6, #1
add r5, r5, #4
cmp r6, #3
blt _02210F30
ldr r0, [sp, #0x54]
add r0, r0, #1
str r0, [sp, #0x54]
cmp r0, #0xc
blt _02210EF6
ldr r0, _022110A0 ; =0x0000062C
mov r6, #0
add r5, r4, r0
add r7, sp, #0xf0
_02210F60:
mov r0, #0
str r0, [r7]
str r0, [r7, #4]
str r0, [r7, #8]
mov r0, #3
str r0, [sp]
mov r1, #1
ldr r0, [r4]
add r2, r1, #0
mov r3, #0x65
bl ov96_021EB3E4
str r0, [r5]
mov r0, #8
str r0, [sp]
mov r1, #1
ldr r0, [r4]
add r2, r1, #0
mov r3, #0x65
bl ov96_021EB3E4
str r0, [r5, #4]
ldr r0, [r5]
mov r1, #0xa
bl ov96_021EB564
ldr r0, [r5, #4]
mov r1, #0xd
bl ov96_021EB564
ldr r0, [r5]
mov r1, #0x2e
bl ov96_021EB630
ldr r0, [r5, #4]
mov r1, #0x2d
bl ov96_021EB630
add r0, r5, #0
bl ov96_02213444
add r1, r5, #0
add r1, #0x39
mov r0, #0
strb r0, [r1]
mov r0, #2
lsl r0, r0, #0x12
str r0, [sp, #0xf0]
mov r0, #0x1a
lsl r0, r0, #0xe
str r0, [sp, #0xf4]
ldr r0, [r5]
add r1, r7, #0
bl ov96_021EB588
ldr r0, [r5, #4]
add r1, r7, #0
bl ov96_021EB588
add r3, sp, #0xf0
add r2, r5, #0
ldmia r3!, {r0, r1}
add r2, #8
stmia r2!, {r0, r1}
ldr r0, [r3]
add r1, r5, #0
str r0, [r2]
add r1, #0x42
mov r0, #7
strb r0, [r1]
cmp r6, #0
bne _02211002
mov r1, #1
ldr r0, [r5]
add r2, r1, #0
bl ov96_021EB52C
add r1, r5, #0
add r1, #0x38
mov r0, #1
strb r0, [r1]
_02211002:
add r6, r6, #1
add r5, #0x4c
cmp r6, #2
blt _02210F60
ldr r1, _022110A4 ; =ov96_0221D1F4
add r0, sp, #0x68
ldrh r2, [r1, #0xc]
ldr r5, _022110A8 ; =ov96_0221D3D8
add r3, sp, #0xc0
strh r2, [r0, #8]
ldrh r2, [r1, #0xe]
strh r2, [r0, #0xa]
ldrh r2, [r1, #0x10]
ldrh r1, [r1, #0x12]
strh r2, [r0, #0xc]
strh r1, [r0, #0xe]
mov r2, #6
_02211024:
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _02211024
mov r0, #0
str r0, [sp, #0x20]
add r0, sp, #0xc0
str r0, [sp, #0x38]
add r0, sp, #0x70
str r0, [sp, #0x34]
mov r0, #2
str r0, [sp, #0x30]
ldr r0, _022110AC ; =ov96_0221D4B4
str r4, [sp, #0x3c]
str r0, [sp, #0x2c]
ldr r0, _022110B0 ; =ov96_0221D3A8
str r0, [sp, #0x28]
_02211046:
mov r0, #5
str r0, [sp]
mov r1, #1
ldr r0, [r4]
add r2, r1, #0
mov r3, #0x65
bl ov96_021EB3E4
ldr r2, _022110B4 ; =0x000006C4
ldr r1, [sp, #0x3c]
str r0, [r1, r2]
add r0, r1, #0
ldr r0, [r0, r2]
mov r1, #1
add r2, r1, #0
bl ov96_021EB52C
ldr r1, _022110B4 ; =0x000006C4
ldr r0, [sp, #0x3c]
ldr r0, [r0, r1]
mov r1, #1
bl ov96_021EB564
ldr r1, _022110B4 ; =0x000006C4
b _022110B8
.balign 4, 0
_02211078: .word 0xFFFFE0FF
_0221107C: .word 0x04001000
_02211080: .word 0x0000081C
_02211084: .word 0x00300010
_02211088: .word gSystem + 0x60
_0221108C: .word 0x0000074C
_02211090: .word 0x00000AAF
_02211094: .word 0x00000744
_02211098: .word ov96_0221D238
_0221109C: .word 0x00000748
_022110A0: .word 0x0000062C
_022110A4: .word ov96_0221D1F4
_022110A8: .word ov96_0221D3D8
_022110AC: .word ov96_0221D4B4
_022110B0: .word ov96_0221D3A8
_022110B4: .word 0x000006C4
_022110B8:
ldr r0, [sp, #0x3c]
ldr r0, [r0, r1]
ldr r1, [sp, #0x38]
bl ov96_021EB588
ldr r1, _02211428 ; =0x000006C4
ldr r0, [sp, #0x3c]
mov r2, #1
ldr r0, [r0, r1]
ldr r1, [sp, #0x34]
ldrh r1, [r1]
bl ov96_021EB5AC
ldr r1, _02211428 ; =0x000006C4
ldr r0, [sp, #0x3c]
ldr r0, [r0, r1]
mov r1, #3
bl ov96_021EB630
ldr r7, [sp, #0x2c]
mov r6, #0
_022110E2:
mov r0, #6
str r0, [sp]
mov r1, #1
ldr r0, [r4]
add r2, r1, #0
mov r3, #0x65
bl ov96_021EB3E4
mov r1, #1
add r2, r1, #0
add r5, r0, #0
bl ov96_021EB52C
ldr r1, [sp, #0x30]
add r0, r5, #0
add r1, r6, r1
bl ov96_021EB564
add r0, r5, #0
add r1, r7, #0
bl ov96_021EB588
add r0, r5, #0
mov r1, #0x67
bl ov96_021EB630
add r6, r6, #1
add r7, #0xc
cmp r6, #2
blt _022110E2
mov r0, #0xb
str r0, [sp]
mov r1, #1
ldr r0, [r4]
add r2, r1, #0
mov r3, #0x65
bl ov96_021EB3E4
ldr r2, _0221142C ; =0x000006D4
ldr r1, [sp, #0x3c]
str r0, [r1, r2]
add r0, r1, #0
ldr r0, [r0, r2]
ldr r1, [sp, #0x28]
bl ov96_021EB588
ldr r1, _0221142C ; =0x000006D4
ldr r0, [sp, #0x3c]
ldr r0, [r0, r1]
mov r1, #2
bl ov96_021EB630
mov r0, #0xc
str r0, [sp]
mov r1, #1
ldr r0, [r4]
add r2, r1, #0
mov r3, #0x65
bl ov96_021EB3E4
ldr r2, _02211430 ; =0x000006E4
ldr r1, [sp, #0x3c]
str r0, [r1, r2]
add r0, r1, #0
ldr r0, [r0, r2]
ldr r1, [sp, #0x38]
bl ov96_021EB588
ldr r1, _02211430 ; =0x000006E4
ldr r0, [sp, #0x3c]
ldr r0, [r0, r1]
mov r1, #0x66
bl ov96_021EB630
ldr r0, [sp, #0x3c]
add r0, r0, #4
str r0, [sp, #0x3c]
ldr r0, [sp, #0x38]
add r0, #0xc
str r0, [sp, #0x38]
ldr r0, [sp, #0x34]
add r0, r0, #2
str r0, [sp, #0x34]
ldr r0, [sp, #0x30]
add r0, r0, #2
str r0, [sp, #0x30]
ldr r0, [sp, #0x2c]
add r0, #0x18
str r0, [sp, #0x2c]
ldr r0, [sp, #0x28]
add r0, #0xc
str r0, [sp, #0x28]
ldr r0, [sp, #0x20]
add r0, r0, #1
str r0, [sp, #0x20]
cmp r0, #4
bge _022111A6
b _02211046
_022111A6:
ldr r2, _02211434 ; =0x00000744
ldr r0, [sp, #0x14]
ldr r2, [r4, r2]
ldr r3, [r4]
mov r1, #0
bl ov96_021E6290
ldr r0, [r0]
mov r1, #1
bl Sprite_SetDrawPriority
mov r2, #0x75
lsl r2, r2, #4
ldr r1, [r4, r2]
sub r2, #0xc
ldr r0, [r4]
ldr r2, [r4, r2]
bl ov96_02214718
ldr r0, [sp, #0x14]
bl ov96_021E5DEC
b _02211626
_022111D4:
mov r5, #0
add r7, sp, #0x1d4
add r6, sp, #0x190
_022111DA:
add r0, r5, #0
mov r1, #3
bl _s32_div_f
str r1, [sp, #0x1c]
add r0, r5, #0
mov r1, #3
bl _s32_div_f
str r0, [sp, #0x58]
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x58]
ldr r2, [sp, #0x1c]
add r3, r7, #0
bl ov96_021E6168
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x58]
ldr r2, [sp, #0x1c]
bl ov96_021E60C0
bl ov96_021E6108
str r0, [r6, #0x14]
add r5, r5, #1
add r7, #0x10
add r6, r6, #4
cmp r5, #0xc
blt _022111DA
mov r0, #1
mov r1, #0
str r1, [sp, #0x190]
str r0, [sp, #0x194]
str r1, [sp, #0x198]
str r0, [sp, #0x19c]
str r0, [sp, #0x1a0]
str r1, [sp]
str r1, [sp, #4]
ldr r0, _02211438 ; =0x00000748
mov r1, #0xc
ldr r0, [r4, r0]
add r2, sp, #0x1d4
add r3, sp, #0x190
bl ov96_021EA8A8
ldr r0, [sp, #0x14]
bl ov96_021E5DEC
b _02211626
_0221123C:
ldr r0, _02211438 ; =0x00000748
ldr r0, [r4, r0]
bl ov96_021EAA00
cmp r0, #0
bne _0221124A
b _02211626
_0221124A:
ldr r0, [sp, #0x14]
bl ov96_021E5F24
str r0, [sp, #0x50]
ldr r0, [r4, #4]
bl ov96_021E6030
ldr r0, [sp, #0x14]
mov r1, #1
bl ov96_021E5DFC
add r0, sp, #0x9c
mov r1, #0xaa
mov r2, #0xb
bl ReadWholeNarcMemberByIdPair
add r0, r4, #0
str r0, [sp, #0x60]
add r0, #0x5c
mov r7, #0
str r0, [sp, #0x60]
_02211274:
ldr r0, _02211438 ; =0x00000748
lsl r1, r7, #0x18
ldr r0, [r4, r0]
lsr r1, r1, #0x18
bl ov96_021EAA04
mov r1, #1
add r5, r0, #0
bl ov96_021EAB38
add r0, r7, #0
mov r1, #3
bl _s32_div_f
add r6, r0, #0
add r0, r7, #0
mov r1, #3
bl _s32_div_f
add r2, r1, #0
ldr r0, [sp, #0x14]
add r1, r6, #0
bl ov96_021E60C0
bl ov96_021E6138
lsl r1, r0, #3
add r0, sp, #0x9c
add r2, r0, r1
add r1, r2, #0
sub r1, #8
sub r2, r2, #4
ldr r1, [r1]
ldr r2, [r2]
add r0, r5, #0
bl ov96_021EAF70
ldr r0, _02211438 ; =0x00000748
lsl r1, r7, #0x18
ldr r0, [r4, r0]
lsr r1, r1, #0x18
bl ov96_021EAA04
add r5, r0, #0
bl ov96_021EAA20
str r0, [sp, #0x5c]
add r0, r7, #0
mov r1, #3
bl _s32_div_f
str r1, [sp, #0x18]
add r0, r7, #0
mov r1, #3
bl _s32_div_f
mov r1, #0x5d
lsl r1, r1, #2
str r0, [sp, #0x24]
mul r1, r0
ldr r0, [sp, #0x60]
ldr r2, [sp, #0x18]
add r0, r0, r1
mov r1, #0x7c
mul r1, r2
add r6, r0, r1
str r5, [r0, r1]
add r0, r5, #0
bl ov96_021EAF8C
str r0, [r6, #0x20]
mov r0, #0
str r0, [r6, #0x78]
ldr r0, [sp, #0x5c]
bl ov96_021E90FC
ldr r1, [sp, #0x24]
mov r0, #0xc
add r2, r1, #0
mul r2, r0
ldr r0, _0221143C ; =ov96_0221D408
ldr r1, [sp, #0x18]
add r0, r0, r2
lsl r2, r1, #2
add r1, r0, r2
ldrh r0, [r0, r2]
str r0, [sp, #0x4c]
ldrh r0, [r1, #2]
str r0, [sp, #0x48]
add r1, r6, #0
add r1, #0x5c
mov r0, #2
strh r0, [r1]
add r0, r5, #0
mov r1, #2
bl ov96_021EAC0C
ldr r1, [sp, #0x4c]
ldr r2, [sp, #0x48]
add r0, r5, #0
bl ov96_021EAF94
bl ov96_021E6104
add r1, r0, #0
add r0, r5, #0
bl ov96_021EAF6C
add r0, sp, #0x68
str r0, [sp]
ldr r1, [sp, #0x4c]
ldr r2, [sp, #0x48]
add r0, r5, #0
add r3, sp, #0x6c
bl ov96_021EB0A4
ldr r0, [sp, #0x6c]
lsl r0, r0, #0xc
str r0, [r6, #0x14]
ldr r0, [sp, #0x68]
lsl r0, r0, #0xc
str r0, [r6, #0x18]
ldr r0, [sp, #0x6c]
lsl r0, r0, #0xc
str r0, [r6, #0x30]
ldr r0, [sp, #0x68]
lsl r0, r0, #0xc
str r0, [r6, #0x34]
ldr r0, [sp, #0x6c]
lsl r0, r0, #0xc
str r0, [r6, #0x24]
ldr r0, [sp, #0x68]
lsl r0, r0, #0xc
str r0, [r6, #0x28]
ldr r0, [sp, #0x14]
bl ov96_021E5F24
ldr r1, [sp, #0x24]
cmp r1, r0
bne _02211396
add r0, r5, #0
mov r1, #8
bl ov96_021EABA8
b _0221139E
_02211396:
add r0, r5, #0
mov r1, #0x10
bl ov96_021EABA8
_0221139E:
add r0, r5, #0
mov r1, #0x14
bl ov96_021EABDC
ldr r1, [sp, #0x24]
ldr r0, [sp, #0x50]
cmp r1, r0
bne _022113D8
ldr r0, [sp, #0x18]
ldr r3, [sp, #0x6c]
lsl r0, r0, #2
add r1, sp, #0xb4
add r2, sp, #0xb4
add r1, r1, r0
strh r3, [r2, r0]
ldr r0, [sp, #0x68]
strh r0, [r1, #2]
ldr r0, [r4]
bl ov96_021EB5E8
add r3, r0, #0
mov r0, #1
str r0, [sp]
ldr r2, _02211434 ; =0x00000744
ldr r0, [sp, #0x14]
ldr r2, [r4, r2]
add r1, r5, #0
bl ov96_021E64F8
_022113D8:
add r7, r7, #1
cmp r7, #0xc
bge _022113E0
b _02211274
_022113E0:
mov r0, #1
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
add r0, sp, #0xb4
str r0, [sp, #8]
ldr r2, _02211434 ; =0x00000744
ldr r0, [sp, #0x14]
ldr r2, [r4, r2]
ldr r3, [r4]
mov r1, #0
bl ov96_021E634C
ldr r0, [sp, #0x14]
bl ov96_021E5F24
cmp r0, #0
beq _02211406
b _022115A0
_02211406:
add r0, sp, #0x118
mov r1, #0xaa
mov r2, #8
bl ReadWholeNarcMemberByIdPair
mov r0, #0
str r0, [sp, #0x44]
add r0, r4, #0
str r0, [sp, #0x40]
add r0, #0x5c
ldr r7, [sp, #0x44]
str r0, [sp, #0x40]
_0221141E:
ldr r0, [sp, #0x44]
mov r1, #0xc
add r2, r4, r0
ldr r0, _02211440 ; =0x00000734
b _02211444
.balign 4, 0
_02211428: .word 0x000006C4
_0221142C: .word 0x000006D4
_02211430: .word 0x000006E4
_02211434: .word 0x00000744
_02211438: .word 0x00000748
_0221143C: .word ov96_0221D408
_02211440: .word 0x00000734
_02211444:
ldr r6, [sp, #0x40]
strb r1, [r2, r0]
ldr r0, [sp, #0x44]
mov r5, #0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x64]
_02211452:
lsl r3, r5, #0x18
ldr r0, [sp, #0x14]
ldr r2, [sp, #0x64]
add r1, sp, #0x118
lsr r3, r3, #0x18
str r6, [sp]
bl ov96_0221359C
ldr r0, _02211630 ; =0x0000074C
add r1, r5, r7
lsl r1, r1, #0x18
ldr r0, [r4, r0]
lsr r1, r1, #0x18
add r2, r6, #0
bl ov96_02214A6C
add r5, r5, #1
add r6, #0x7c
cmp r5, #3
blt _02211452
mov r0, #0x5d
ldr r1, [sp, #0x40]
lsl r0, r0, #2
add r0, r1, r0
str r0, [sp, #0x40]
ldr r0, [sp, #0x44]
add r7, r7, #3
add r0, r0, #1
str r0, [sp, #0x44]
cmp r0, #4
blt _0221141E
ldr r0, _02211630 ; =0x0000074C
ldr r1, _02211634 ; =0x0000062C
ldr r0, [r4, r0]
add r1, r4, r1
bl ov96_02214B74
ldr r0, _02211630 ; =0x0000074C
ldr r0, [r4, r0]
bl ov96_02214A9C
ldr r5, _02211638 ; =ov96_0221D220
add r3, sp, #0x90
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r5]
add r1, r2, #0
str r0, [r3]
add r0, r2, #0
bl VEC_Normalize
ldr r3, _0221163C ; =ov96_0221D250
add r2, sp, #0x84
add r6, r2, #0
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
mov r7, #0
str r0, [r2]
add r5, r6, #0
ldr r2, _02211640 ; =0x00000754
ldmia r5!, {r0, r1}
add r3, r4, r2
stmia r3!, {r0, r1}
ldr r0, [r5]
mvn r7, r7
str r0, [r3]
add r0, r2, #0
add r0, #0xc
add r5, r4, r0
ldmia r6!, {r0, r1}
add r3, r5, #0
stmia r5!, {r0, r1}
ldr r0, [r6]
str r0, [r5]
ldr r0, [r3]
ldr r5, _02211644 ; =ov96_0221D208
add r1, r0, #0
mul r1, r7
str r1, [r3]
add r3, sp, #0x78
ldmia r5!, {r0, r1}
add r6, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r5]
add r5, r6, #0
str r0, [r3]
add r0, r2, #0
add r0, #0x18
add r3, r4, r0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
add r5, sp, #0x90
str r0, [r3]
add r0, r2, #0
add r0, #0x24
add r3, r4, r0
ldmia r6!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r6]
add r6, sp, #0x90
str r0, [r3]
add r0, r2, #0
add r0, #0x28
ldr r0, [r4, r0]
add r1, r0, #0
add r0, r2, #0
mul r1, r7
add r0, #0x28
str r1, [r4, r0]
add r0, r2, #0
add r0, #0x30
add r3, r4, r0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
str r0, [r3]
add r0, r2, #0
add r0, #0x3c
add r5, r4, r0
ldmia r6!, {r0, r1}
add r3, r5, #0
stmia r5!, {r0, r1}
ldr r0, [r6]
str r0, [r5]
ldr r0, [r3]
add r5, sp, #0x90
add r1, r0, #0
add r0, r2, #0
mul r1, r7
add r0, #0x48
str r1, [r3]
add r3, r4, r0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
str r0, [r3]
add r0, r2, #0
add r0, #0x4c
ldr r0, [r4, r0]
add r1, r0, #0
add r0, r2, #0
mul r1, r7
add r0, #0x4c
str r1, [r4, r0]
add r0, r2, #0
add r0, #0x54
add r5, r4, r0
add r6, sp, #0x90
ldmia r6!, {r0, r1}
add r3, r5, #0
stmia r5!, {r0, r1}
ldr r0, [r6]
str r0, [r5]
ldr r0, [r3]
add r1, r0, #0
add r0, r2, #0
mul r1, r7
str r1, [r3]
add r0, #0x58
ldr r0, [r4, r0]
add r2, #0x58
add r1, r0, #0
mul r1, r7
str r1, [r4, r2]
_022115A0:
ldr r0, [sp, #0x14]
bl ov96_021E5F24
cmp r0, #0
bne _022115BE
ldr r0, [sp, #0x14]
bl ov96_021E5F54
add r0, #0x28
bl ov96_021E8A20
add r1, r0, #0
add r0, r4, #0
bl ov96_02211DE4
_022115BE:
add r0, r4, #0
bl ov96_02211A24
mov r0, #0x75
lsl r0, r0, #4
ldr r0, [r4, r0]
bl ov96_022147FC
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineATogglePlanes
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineBTogglePlanes
ldr r0, _02211648 ; =0x00000A8C
ldr r1, _0221164C ; =0x00000738
str r0, [r4, r1]
add r0, r1, #0
add r0, #0x18
ldr r0, [r4, r0]
ldr r1, [r4, r1]
bl ov96_0221490C
mov r0, #2
bl sub_0203A994
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r4, #0x58]
mov r1, #3
str r0, [sp, #8]
mov r0, #2
add r2, r1, #0
mov r3, #0
bl BeginNormalPaletteFade
ldr r0, [sp, #0x14]
bl ov96_021E5DEC
b _02211626
_02211616:
bl IsPaletteFadeFinished
cmp r0, #0
beq _02211626
add sp, #0x1fc
add sp, #0x98
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02211626:
mov r0, #0
add sp, #0x1fc
add sp, #0x98
pop {r4, r5, r6, r7, pc}
nop
_02211630: .word 0x0000074C
_02211634: .word 0x0000062C
_02211638: .word ov96_0221D220
_0221163C: .word ov96_0221D250
_02211640: .word 0x00000754
_02211644: .word ov96_0221D208
_02211648: .word 0x00000A8C
_0221164C: .word 0x00000738
thumb_func_end ov96_02210C98
thumb_func_start ov96_02211650
ov96_02211650: ; 0x02211650
push {r3, lr}
bl ov96_021E5DC4
ldr r0, [r0]
bl ov96_021EB5BC
mov r0, #1
pop {r3, pc}
thumb_func_end ov96_02211650
thumb_func_start ov96_02211660
ov96_02211660: ; 0x02211660
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
bl ov96_021E5DC4
add r0, r5, #0
bl ov96_021E6040
add r6, r0, #0
bl ov96_021E9510
mov r4, #0
add r7, r4, #0
_0221167A:
lsl r1, r4, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
bl ov96_021E5FBC
add r3, r0, #0
str r7, [sp]
mov r0, #3
str r0, [sp, #4]
mov r0, #0x4b
lsl r0, r0, #2
str r0, [sp, #8]
add r0, r5, #0
add r1, r6, #0
add r2, r4, #0
bl ov96_021E95F8
add r4, r4, #1
cmp r4, #4
blt _0221167A
add r0, r6, #0
mov r1, #1
bl ov96_021E93B4
add r0, r6, #0
mov r1, #9
bl ov96_0221A56C
add r0, r6, #0
bl ov96_021E952C
add r0, r6, #0
mov r1, #9
bl ov96_021E9570
mov r0, #1
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02211660
thumb_func_start ov96_022116C8
ov96_022116C8: ; 0x022116C8
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
bl sub_0203A914
add r0, r7, #0
bl ov96_021E6550
ldr r0, [r4, #4]
mov r1, #0
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #1
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #2
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #3
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #4
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #5
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #6
bl FreeBgTilemapBuffer
add r0, r4, #0
bl ov96_02214234
add r0, r7, #0
bl ov96_022141B0
add r0, r4, #0
add r0, #8
bl RemoveWindow
add r5, r4, #0
mov r6, #0
add r5, #0x18
_0221172E:
add r0, r5, #0
bl RemoveWindow
add r6, r6, #1
add r5, #0x10
cmp r6, #4
blt _0221172E
ldr r0, [r4, #4]
bl FreeToHeap
ldr r0, [r4]
bl ov96_021EB21C
ldr r0, _022117B4 ; =0x00000748
ldr r0, [r4, r0]
bl ov96_021EA894
ldr r0, _022117B8 ; =0x00000744
ldr r0, [r4, r0]
bl ov96_021E9C0C
bl OamManager_Free
bl sub_0202168C
bl sub_02022608
ldr r0, _022117BC ; =0x0000074C
ldr r0, [r4, r0]
bl ov96_02214B7C
mov r0, #0x75
lsl r0, r0, #4
ldr r0, [r4, r0]
bl ov96_02214690
mov r0, #4
bl FontID_Release
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
ldr r0, _022117C0 ; =0x0000081C
ldr r0, [r4, r0]
bl FreeToHeap
add r0, r7, #0
bl ov96_021E5DAC
ldr r0, _022117C4 ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
ldr r0, _022117C8 ; =0x04000050
mov r1, #0
strh r1, [r0]
mov r0, #0x93
bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_022117B4: .word 0x00000748
_022117B8: .word 0x00000744
_022117BC: .word 0x0000074C
_022117C0: .word 0x0000081C
_022117C4: .word gSystem + 0x60
_022117C8: .word 0x04000050
thumb_func_end ov96_022116C8
thumb_func_start ov96_022117CC
ov96_022117CC: ; 0x022117CC
push {r4, lr}
sub sp, #0x28
ldr r4, _022117E8 ; =ov96_0221D380
add r3, sp, #0
mov r2, #5
_022117D6:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _022117D6
add r0, sp, #0
bl GfGfx_SetBanks
add sp, #0x28
pop {r4, pc}
.balign 4, 0
_022117E8: .word ov96_0221D380
thumb_func_end ov96_022117CC
thumb_func_start ov96_022117EC
ov96_022117EC: ; 0x022117EC
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r4, r1, #0
add r5, r0, #0
bl ov96_021E5DC4
add r6, r0, #0
ldrb r0, [r4]
cmp r0, #0
beq _0221180A
cmp r0, #1
beq _0221181C
cmp r0, #2
beq _02211834
b _0221186A
_0221180A:
add r0, r5, #0
bl ov96_021E637C
cmp r0, #0
beq _0221186A
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _0221186A
_0221181C:
add r0, r5, #0
bl ov96_02211B94
add r0, r5, #0
bl ov96_02211AF0
cmp r0, #0
beq _0221186A
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _0221186A
_02211834:
add r0, r5, #0
bl ov96_02211B94
add r0, r5, #0
bl ov96_0221236C
add r0, r5, #0
bl ov96_021E667C
cmp r0, #0
beq _0221186A
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r6, #0x58]
str r0, [sp, #8]
mov r0, #0
add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
bl BeginNormalPaletteFade
add r0, r5, #0
mov r1, #1
bl ov96_021E5FC8
_0221186A:
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
thumb_func_end ov96_022117EC
thumb_func_start ov96_02211870
ov96_02211870: ; 0x02211870
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r6, r0, #0
bl ov96_021E5DC4
add r5, r0, #0
ldrb r0, [r4]
cmp r0, #0
bne _02211892
bl IsPaletteFadeFinished
cmp r0, #0
beq _0221188E
mov r0, #1
strb r0, [r4]
_0221188E:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_02211892:
add r0, r6, #0
bl ov96_021E5F24
cmp r0, #0
beq _022118A0
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_022118A0:
ldr r7, _022118C0 ; =0x000006F4
mov r4, #0
_022118A4:
ldr r2, [r5, r7]
lsl r1, r4, #0x18
lsl r2, r2, #0x10
add r0, r6, #0
lsr r1, r1, #0x18
lsr r2, r2, #0x10
bl ov96_021E5FB0
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
blt _022118A4
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_022118C0: .word 0x000006F4
thumb_func_end ov96_02211870
thumb_func_start ov96_022118C4
ov96_022118C4: ; 0x022118C4
push {r4, r5, lr}
sub sp, #0xd4
ldr r5, _02211A04 ; =ov96_0221D28C
add r3, sp, #0xc4
add r4, r0, #0
add r2, r3, #0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl SetBothScreensModesAndDisable
ldr r5, _02211A08 ; =ov96_0221D30C
add r3, sp, #0xa8
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #0
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
bl BgClearTilemapBufferAndCommit
ldr r5, _02211A0C ; =ov96_0221D328
add r3, sp, #0x8c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #1
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
bl BgClearTilemapBufferAndCommit
ldr r5, _02211A10 ; =ov96_0221D344
add r3, sp, #0x70
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #2
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
bl BgClearTilemapBufferAndCommit
ldr r5, _02211A14 ; =ov96_0221D29C
add r3, sp, #0x54
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #3
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #3
bl BgClearTilemapBufferAndCommit
ldr r5, _02211A18 ; =ov96_0221D2B8
add r3, sp, #0x38
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #4
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
bl BgClearTilemapBufferAndCommit
ldr r5, _02211A1C ; =ov96_0221D2D4
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #5
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #5
bl BgClearTilemapBufferAndCommit
ldr r5, _02211A20 ; =ov96_0221D2F0
add r3, sp, #0
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #6
str r0, [r3]
add r0, r4, #0
mov r3, #0
bl InitBgFromTemplate
add r0, r4, #0
mov r1, #6
bl BgClearTilemapBufferAndCommit
mov r0, #8
mov r1, #0
bl GfGfx_EngineATogglePlanes
add sp, #0xd4
pop {r4, r5, pc}
nop
_02211A04: .word ov96_0221D28C
_02211A08: .word ov96_0221D30C
_02211A0C: .word ov96_0221D328
_02211A10: .word ov96_0221D344
_02211A14: .word ov96_0221D29C
_02211A18: .word ov96_0221D2B8
_02211A1C: .word ov96_0221D2D4
_02211A20: .word ov96_0221D2F0
thumb_func_end ov96_022118C4
thumb_func_start ov96_02211A24
ov96_02211A24: ; 0x02211A24
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4, #0x58]
mov r1, #1
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xec
add r3, r1, #0
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4, #0x58]
mov r1, #3
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xec
mov r3, #2
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4, #0x58]
mov r1, #6
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xec
mov r3, #5
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4, #0x58]
mov r1, #7
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xec
mov r3, #6
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4, #0x58]
mov r1, #2
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xec
mov r3, #1
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4, #0x58]
mov r1, #4
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xec
mov r3, #2
bl GfGfxLoader_LoadScrnData
mov r0, #0x75
lsl r0, r0, #4
ldr r0, [r4, r0]
bl ov96_022146C0
mov r1, #0
mov r0, #0x80
str r0, [sp]
ldr r0, [r4, #0x58]
add r2, r1, #0
str r0, [sp, #4]
mov r0, #0xec
add r3, r1, #0
bl GfGfxLoader_GXLoadPal
mov r0, #0x40
str r0, [sp]
ldr r0, [r4, #0x58]
mov r1, #5
str r0, [sp, #4]
mov r0, #0xec
mov r2, #4
mov r3, #0
bl GfGfxLoader_GXLoadPal
add sp, #0x10
pop {r4, pc}
thumb_func_end ov96_02211A24
thumb_func_start ov96_02211AF0
ov96_02211AF0: ; 0x02211AF0
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r6, r0, #0
add r0, r5, #0
bl ov96_021E5F54
add r7, r0, #0
bl ov96_021E8A20
add r4, r0, #0
mov r0, #0
add r7, #0xf0
str r0, [r4]
add r0, r7, #0
bl ov96_021E8A20
ldr r0, [r0, #0x20]
mov r1, #1
asr r0, r0, #0x18
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _02211B44
ldr r0, [r6]
bl ov96_021EB63C
ldr r0, _02211B88 ; =0x00000748
mov r1, #1
ldr r0, [r6, r0]
bl ov96_021EB144
add r0, r5, #0
bl ov96_021E65A4
ldr r1, _02211B8C ; =ov96_02214618
add r0, r5, #0
bl ov96_021E8324
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02211B44:
bl System_GetTouchNew
cmp r0, #0
beq _02211B66
add r0, r5, #0
bl ov96_021E5F24
add r1, r0, #0
mov r0, #1
lsl r1, r1, #0x18
str r0, [sp]
add r0, r5, #0
lsr r1, r1, #0x18
mov r2, #3
mov r3, #0
bl ov96_021E8228
_02211B66:
bl System_GetTouchHeld
cmp r0, #0
beq _02211B7C
ldr r0, _02211B90 ; =gSystem + 0x40
ldrh r1, [r0, #0x20]
strb r1, [r4, #4]
ldrh r0, [r0, #0x22]
strb r0, [r4, #5]
mov r0, #1
str r0, [r4]
_02211B7C:
add r0, r5, #0
bl ov96_02211F38
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_02211B88: .word 0x00000748
_02211B8C: .word ov96_02214618
_02211B90: .word gSystem + 0x40
thumb_func_end ov96_02211AF0
thumb_func_start ov96_02211B94
ov96_02211B94: ; 0x02211B94
push {r4, r5, r6, r7, lr}
sub sp, #0x14
str r0, [sp, #4]
bl ov96_021E5F54
str r0, [sp, #0xc]
ldr r0, [sp, #4]
bl ov96_021E5DC4
add r4, r0, #0
ldr r0, _02211DC8 ; =0x00000738
ldr r1, [r4, r0]
cmp r1, #0
ble _02211BB4
sub r1, r1, #1
str r1, [r4, r0]
_02211BB4:
ldr r0, [sp, #4]
bl ov96_021E5F24
cmp r0, #0
beq _02211BC0
b _02211DC4
_02211BC0:
ldr r0, _02211DCC ; =0x0000073E
ldrb r0, [r4, r0]
cmp r0, #0
beq _02211BDE
ldr r0, [sp, #0xc]
add r0, #0x28
str r0, [sp, #0xc]
bl ov96_021E8A20
add r1, r0, #0
add r0, r4, #0
bl ov96_02211DE4
add sp, #0x14
pop {r4, r5, r6, r7, pc}
_02211BDE:
ldr r0, [sp, #0xc]
add r0, #0x28
bl ov96_021E8A20
str r0, [sp, #0x10]
ldr r0, [sp, #0xc]
add r0, #0x50
bl ov96_021E8A20
add r5, r0, #0
ldr r0, [sp, #0xc]
bl ov96_021E8A20
add r3, r0, #0
mov r2, #4
_02211BFC:
ldmia r3!, {r0, r1}
stmia r5!, {r0, r1}
sub r2, r2, #1
bne _02211BFC
ldr r0, [r3]
mov r6, #0
str r0, [r5]
ldr r0, [sp, #0xc]
add r5, r4, #0
add r0, #0x50
str r0, [sp, #0xc]
add r0, r4, #0
str r0, [sp, #8]
add r0, #0x5c
str r0, [sp, #8]
_02211C1A:
ldr r0, [sp, #0xc]
bl ov96_021E8A20
add r7, r0, #0
ldr r0, [r7]
cmp r0, #0
ldr r0, _02211DD0 ; =0x00000704
beq _02211C58
ldr r1, [r5, r0]
cmp r1, #0
beq _02211C40
add r0, r0, #4
ldr r0, [r5, r0]
cmp r0, #0
beq _02211C40
ldr r0, _02211DD0 ; =0x00000704
mov r1, #0
str r1, [r5, r0]
b _02211C60
_02211C40:
cmp r1, #0
bne _02211C60
ldr r0, _02211DD4 ; =0x00000708
ldr r0, [r5, r0]
cmp r0, #0
bne _02211C60
ldr r0, _02211DD0 ; =0x00000704
mov r1, #1
str r1, [r5, r0]
add r0, r0, #4
str r1, [r5, r0]
b _02211C60
_02211C58:
mov r1, #0
str r1, [r5, r0]
add r0, r0, #4
str r1, [r5, r0]
_02211C60:
ldr r0, _02211DD0 ; =0x00000704
ldr r0, [r5, r0]
cmp r0, #0
beq _02211CAA
ldrb r2, [r7, #4]
lsl r1, r6, #0x18
ldrb r3, [r7, #5]
add r0, r4, #0
lsr r1, r1, #0x18
bl ov96_02213364
add r7, r0, #0
cmp r7, #0xc
beq _02211D68
mov r1, #3
bl _s32_div_f
mov r0, #0x7c
add r2, r1, #0
mul r2, r0
ldr r0, [sp, #8]
add r1, r0, r2
ldr r0, [r1, #0x78]
cmp r0, #2
beq _02211D68
cmp r0, #1
beq _02211D68
ldr r0, [r1, #0x48]
cmp r0, #0
bne _02211D68
ldr r0, _02211DD8 ; =0x00000734
add r1, r4, r6
strb r7, [r1, r0]
mov r1, #0
add r0, #0xe
strb r1, [r4, r0]
b _02211D68
_02211CAA:
ldr r0, _02211DD4 ; =0x00000708
ldr r0, [r5, r0]
cmp r0, #0
beq _02211CF2
ldr r1, _02211DD8 ; =0x00000734
add r0, r4, r6
ldrb r1, [r0, r1]
cmp r1, #0xc
beq _02211D68
ldr r1, _02211DDC ; =0x00000742
ldrb r1, [r4, r1]
cmp r1, #0x14
bhs _02211CCE
ldr r1, _02211DDC ; =0x00000742
ldrb r1, [r4, r1]
add r2, r1, #1
ldr r1, _02211DDC ; =0x00000742
strb r2, [r4, r1]
_02211CCE:
ldr r1, _02211DD8 ; =0x00000734
ldrb r0, [r0, r1]
mov r1, #3
bl _s32_div_f
add r2, r1, #0
lsl r2, r2, #0x18
lsr r2, r2, #0x18
mov r3, #0x7c
mul r3, r2
ldr r2, [sp, #8]
ldrb r0, [r7, #4]
add r2, r2, r3
ldrb r1, [r7, #5]
add r2, #0x24
bl ov96_02213354
b _02211D68
_02211CF2:
ldr r0, _02211DD8 ; =0x00000734
add r7, r4, r6
ldrb r0, [r7, r0]
cmp r0, #0xc
beq _02211D68
mov r1, #3
bl _s32_div_f
lsl r0, r1, #0x18
lsr r1, r0, #0x18
mov r0, #0x7c
add r2, r1, #0
mul r2, r0
ldr r0, [sp, #8]
add r0, r0, r2
ldr r1, [r0, #0x78]
cmp r1, #3
beq _02211D5C
cmp r1, #2
beq _02211D5C
ldr r1, _02211DDC ; =0x00000742
ldrb r1, [r4, r1]
cmp r1, #8
bhi _02211D58
ldr r2, [r0, #0x24]
ldr r1, [r0, #0x30]
cmp r2, r1
bne _02211D32
ldr r2, [r0, #0x28]
ldr r1, [r0, #0x34]
cmp r2, r1
beq _02211D5C
_02211D32:
mov r1, #1
str r1, [r0, #0x78]
ldr r0, _02211DD8 ; =0x00000734
mov r1, #3
ldrb r0, [r7, r0]
bl _s32_div_f
add r2, r1, #0
mov r0, #1
str r0, [sp]
lsl r1, r6, #0x18
lsl r2, r2, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #6
bl ov96_021E8228
b _02211D5C
_02211D58:
mov r1, #0
str r1, [r0, #0x78]
_02211D5C:
ldr r0, _02211DDC ; =0x00000742
mov r1, #0
strb r1, [r4, r0]
mov r1, #0xc
sub r0, #0xe
strb r1, [r7, r0]
_02211D68:
ldr r0, [sp, #0xc]
ldr r1, [sp, #8]
add r0, #0x28
str r0, [sp, #0xc]
mov r0, #0x5d
lsl r0, r0, #2
add r0, r1, r0
add r6, r6, #1
add r5, #0xc
str r0, [sp, #8]
cmp r6, #4
bge _02211D82
b _02211C1A
_02211D82:
ldr r1, _02211DE0 ; =0x0000074C
ldr r0, [sp, #4]
ldr r1, [r4, r1]
bl ov96_02214B84
ldr r0, [sp, #4]
bl ov96_022124F8
ldr r0, [sp, #4]
bl ov96_02212B94
ldr r0, [sp, #4]
bl ov96_022127F4
ldr r0, [sp, #4]
bl ov96_022130EC
ldr r0, [sp, #4]
bl ov96_022132FC
ldr r0, _02211DC8 ; =0x00000738
ldr r1, [r4, r0]
cmp r1, #0
bgt _02211DB6
mov r1, #1
b _02211DB8
_02211DB6:
mov r1, #0
_02211DB8:
add r0, r0, #6
strb r1, [r4, r0]
ldr r1, [sp, #0x10]
add r0, r4, #0
bl ov96_02211DE4
_02211DC4:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02211DC8: .word 0x00000738
_02211DCC: .word 0x0000073E
_02211DD0: .word 0x00000704
_02211DD4: .word 0x00000708
_02211DD8: .word 0x00000734
_02211DDC: .word 0x00000742
_02211DE0: .word 0x0000074C
thumb_func_end ov96_02211B94
thumb_func_start ov96_02211DE4
ov96_02211DE4: ; 0x02211DE4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r0, [sp]
mov r0, #0
str r0, [sp, #0xc]
str r0, [sp, #8]
str r0, [sp, #4]
add r4, r0, #0
add r6, r0, #0
ldr r0, [sp]
add r5, r1, #0
str r0, [sp, #0x10]
add r0, #0x5c
str r0, [sp, #0x10]
_02211E00:
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r7, r0, #0
add r0, r4, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x5d
lsl r0, r0, #2
add r2, r7, #0
mul r2, r0
ldr r0, [sp, #0x10]
add r2, r0, r2
mov r0, #0x7c
mul r0, r1
add r0, r2, r0
add r3, r0, #0
add r3, #0x5c
ldrh r3, [r3]
ldr r2, [r0, #0x34]
sub r3, r3, #1
lsl r3, r3, #0x18
asr r1, r2, #0xb
lsr r7, r3, #0x18
add r3, r5, r4
lsr r1, r1, #0x14
mov ip, r3
add r1, r2, r1
asr r2, r1, #0xc
ldr r1, [r0, #0x78]
ldr r3, [r0, #0x30]
lsl r1, r1, #0x18
asr r0, r3, #0xb
lsr r0, r0, #0x14
add r0, r3, r0
asr r0, r0, #0xc
strb r0, [r5, r4]
mov r0, ip
strb r2, [r0, #0xc]
add r2, r7, #0
lsr r1, r1, #0x18
lsl r2, r6
ldr r0, [sp, #0xc]
lsl r1, r6
add r0, r0, r2
str r0, [sp, #0xc]
ldr r0, [sp, #8]
add r4, r4, #1
add r0, r0, r1
add r6, r6, #2
str r0, [sp, #8]
cmp r4, #0xc
blt _02211E00
ldr r1, _02211F2C ; =0x0000062C
ldr r0, [sp]
mov r6, #0
add r4, r0, r1
add r7, r6, #0
_02211E78:
ldr r1, [r4, #8]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0x14]
add r0, r4, #0
bl ov96_02213EC4
add r2, r5, r6
ldr r1, [sp, #0x14]
add r6, r6, #1
strb r1, [r2, #0x18]
strb r0, [r2, #0x1a]
add r0, r4, #0
add r0, #0x39
ldrb r0, [r0]
add r4, #0x4c
add r1, r0, #0
lsl r1, r7
ldr r0, [sp, #4]
add r7, r7, #2
add r0, r0, r1
str r0, [sp, #4]
cmp r6, #2
blt _02211E78
ldr r0, _02211F30 ; =0x0000073C
ldr r1, [sp]
ldrb r2, [r1, r0]
lsl r3, r2, #2
add r3, r1, r3
add r1, r0, #0
sub r1, #0x48
ldr r1, [r3, r1]
lsl r1, r1, #0x18
lsr r3, r1, #0x18
add r1, r2, #1
lsr r6, r1, #0x1f
lsl r4, r1, #0x1e
sub r4, r4, r6
mov r1, #0x1e
ror r4, r1
ldr r1, [sp]
add r4, r6, r4
strb r4, [r1, r0]
ldr r4, [sp, #4]
lsl r2, r2, #0x1c
lsl r6, r4, #0x18
ldr r4, [sp, #0xc]
add r1, r5, #0
add r4, r4, r6
add r2, r4, r2
str r2, [r5, #0x1c]
ldr r2, [sp]
sub r0, #0xd8
ldrb r0, [r2, r0]
add r1, #0x1c
cmp r0, #2
bne _02211EF8
mov r0, #1
ldr r2, [r1]
lsl r0, r0, #0x1e
add r0, r2, r0
str r0, [r1]
_02211EF8:
mov r1, #0x6b
ldr r0, [sp]
lsl r1, r1, #4
ldrb r0, [r0, r1]
cmp r0, #0
beq _02211F0E
mov r0, #2
ldr r1, [r5, #0x1c]
lsl r0, r0, #0x1e
sub r0, r1, r0
str r0, [r5, #0x1c]
_02211F0E:
ldr r0, [sp, #8]
mov r1, #0
add r2, r1, r0
ldr r1, _02211F34 ; =0x0000073E
ldr r0, [sp]
str r2, [r5, #0x20]
ldrb r0, [r0, r1]
lsl r0, r0, #0x18
add r1, r2, r0
lsl r0, r3, #0x19
add r0, r1, r0
str r0, [r5, #0x20]
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_02211F2C: .word 0x0000062C
_02211F30: .word 0x0000073C
_02211F34: .word 0x0000073E
thumb_func_end ov96_02211DE4
thumb_func_start ov96_02211F38
ov96_02211F38: ; 0x02211F38
push {r4, r5, r6, r7, lr}
sub sp, #0x74
str r0, [sp, #8]
bl ov96_021E5DC4
str r0, [sp, #0x38]
ldr r0, [sp, #8]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x10]
ldr r0, [sp, #8]
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
add r6, r0, #0
ldr r0, [sp, #0x38]
bl ov96_02214418
ldr r0, [sp, #0x38]
mov r4, #0
str r0, [sp, #0x40]
add r0, #0x5c
add r7, r4, #0
str r0, [sp, #0x40]
_02211F70:
add r0, r4, #0
mov r1, #3
bl _s32_div_f
str r0, [sp, #0x18]
add r0, r4, #0
mov r1, #3
bl _s32_div_f
ldr r2, [sp, #0x18]
mov r0, #0x5d
add r3, r2, #0
lsl r0, r0, #2
mul r3, r0
ldr r0, [sp, #0x40]
mov r2, #0x7c
add r0, r0, r3
mul r2, r1
add r5, r0, r2
ldr r0, [r0, r2]
bl ov96_021EAA20
bl ov96_021E8BAC
ldr r0, [r6, #0x20]
add r1, r0, #0
asr r1, r7
mov r0, #3
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x28]
cmp r0, #3
bne _02211FC8
mov r1, #1
ldr r0, [r5, #4]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r5, #4]
mov r1, #0xc
bl ov96_021EB570
b _02211FFE
_02211FC8:
ldr r0, [sp, #0x28]
cmp r0, #2
ldr r0, [r5, #4]
bne _02211FF6
mov r1, #1
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [r5, #4]
mov r1, #0x10
bl ov96_021EB570
mov r0, #0x89
lsl r0, r0, #4
bl IsSEPlaying
cmp r0, #0
bne _02211FFE
mov r0, #0x89
lsl r0, r0, #4
bl PlaySE
b _02211FFE
_02211FF6:
mov r1, #1
mov r2, #0
bl ov96_021EB52C
_02211FFE:
add r0, r6, r4
str r0, [sp, #0xc]
ldrb r0, [r6, r4]
str r0, [sp, #0x34]
ldr r0, [sp, #0xc]
ldrb r0, [r0, #0xc]
str r0, [sp, #0x30]
ldr r0, [r6, #0x1c]
add r1, r0, #0
asr r1, r7
mov r0, #3
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x2c]
mov r1, #0
add r0, sp, #0x68
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
ldr r0, [sp, #0x34]
mov r1, #3
lsl r0, r0, #0xc
str r0, [sp, #0x68]
ldr r0, [sp, #0x30]
lsl r0, r0, #0xc
str r0, [sp, #0x6c]
add r0, r4, #0
bl _s32_div_f
str r0, [sp, #0x44]
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r2, r1, #0
ldr r0, [sp, #8]
ldr r1, [sp, #0x44]
bl ov96_021E60C0
ldrb r0, [r0, #7]
cmp r0, #1
beq _0221205E
cmp r0, #2
beq _0221206A
cmp r0, #3
beq _02212076
b _02212082
_0221205E:
mov r0, #2
ldr r1, [sp, #0x6c]
lsl r0, r0, #0xe
sub r0, r1, r0
str r0, [sp, #0x6c]
b _02212086
_0221206A:
mov r0, #2
ldr r1, [sp, #0x6c]
lsl r0, r0, #0xe
sub r0, r1, r0
str r0, [sp, #0x6c]
b _02212086
_02212076:
mov r0, #1
ldr r1, [sp, #0x6c]
lsl r0, r0, #0x10
sub r0, r1, r0
str r0, [sp, #0x6c]
b _02212086
_02212082:
bl GF_AssertFail
_02212086:
ldr r0, [r5, #4]
add r1, sp, #0x68
bl ov96_021EB588
ldr r0, [sp, #0x28]
cmp r0, #1
bne _02212138
add r0, r5, #0
add r0, #0x63
ldrb r0, [r0]
cmp r0, #0
bne _0221212C
mov r1, #0
add r0, sp, #0x5c
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
ldr r1, [sp, #0x38]
ldr r0, _02212358 ; =0x00000748
ldr r0, [r1, r0]
lsl r1, r4, #0x18
lsr r1, r1, #0x18
bl ov96_021EAA04
add r1, r5, #0
add r1, #0x62
ldrb r1, [r1]
ldr r2, [sp, #0xc]
add r3, sp, #0x4c
str r1, [sp, #0x24]
add r1, sp, #0x48
str r1, [sp]
ldr r1, [sp, #0xc]
ldrb r2, [r2, #0xc]
ldrb r1, [r1]
bl ov96_021EB06C
ldr r0, [sp, #0x4c]
add r1, sp, #0x5c
lsl r0, r0, #0xc
str r0, [sp, #0x5c]
ldr r0, [sp, #0x48]
lsl r0, r0, #0xc
str r0, [sp, #0x60]
ldr r0, [sp, #0x24]
lsl r0, r0, #2
add r0, r5, r0
str r0, [sp, #0x14]
ldr r0, [r0, #8]
bl ov96_021EB588
ldr r0, [sp, #0x14]
mov r1, #1
ldr r0, [r0, #8]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [sp, #0x14]
mov r1, #0xe
ldr r0, [r0, #8]
bl ov96_021EB564
add r0, r5, #0
add r0, #0x62
ldrb r0, [r0]
mov r1, #3
add r0, r0, #1
bl _s32_div_f
add r0, r5, #0
add r0, #0x62
strb r1, [r0]
add r5, #0x63
mov r0, #5
strb r0, [r5]
ldr r1, [sp, #0x18]
ldr r0, [sp, #0x10]
cmp r1, r0
bne _02212138
ldr r0, _0221235C ; =0x000008CC
bl PlaySE
b _02212138
_0221212C:
add r0, r5, #0
add r0, #0x63
ldrb r0, [r0]
add r5, #0x63
sub r0, r0, #1
strb r0, [r5]
_02212138:
ldr r1, [sp, #0x38]
ldr r0, _02212358 ; =0x00000748
ldr r0, [r1, r0]
lsl r1, r4, #0x18
lsr r1, r1, #0x18
bl ov96_021EAA04
ldr r1, [sp, #0x28]
add r5, r0, #0
cmp r1, #2
bne _02212156
mov r1, #0x14
bl ov96_021EAC5C
b _02212162
_02212156:
ldr r1, [sp, #0x2c]
add r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_021EAC0C
_02212162:
ldr r1, [sp, #0x34]
ldr r2, [sp, #0x30]
add r0, r5, #0
mov r3, #1
bl ov96_021EB01C
add r4, r4, #1
add r7, r7, #2
cmp r4, #0xc
bge _02212178
b _02211F70
_02212178:
ldr r2, [sp, #0x38]
mov r1, #0x5d
ldr r0, [sp, #0x10]
lsl r1, r1, #2
add r2, #0x5c
mul r1, r0
add r0, r2, r1
ldr r1, [sp, #0x10]
add r3, r6, #0
lsl r2, r1, #1
add r3, #0xc
add r1, r1, r2
add r1, r3, r1
bl ov96_022144C0
ldr r0, [sp, #0x38]
ldr r2, [sp, #0x10]
add r1, r6, #0
bl ov96_0221457C
ldr r2, [r6, #0x1c]
mov r5, #0
asr r0, r2, #0x1e
mov r1, #1
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x1c]
asr r0, r2, #0x1f
and r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x3c]
ldr r1, _02212360 ; =0x0000062C
ldr r0, [sp, #0x38]
str r5, [sp, #0x20]
add r4, r0, r1
_022121C2:
mov r1, #0
add r0, sp, #0x50
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
ldr r0, [r6, #0x1c]
asr r0, r0, #0x18
lsl r0, r0, #0x18
lsr r1, r0, #0x18
ldr r0, [sp, #0x20]
asr r1, r0
mov r0, #3
and r0, r1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
cmp r7, #1
bne _02212220
ldr r0, [r4]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
ldr r0, [r4, #4]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
cmp r5, #0
bne _02212206
ldr r0, [sp, #0x1c]
cmp r0, #0
beq _02212206
mov r2, #1
b _02212208
_02212206:
mov r2, #0
_02212208:
add r3, r6, r5
ldrb r0, [r3, #0x1a]
lsl r1, r5, #0x18
lsr r1, r1, #0x18
str r0, [sp]
ldr r0, [sp, #0x10]
str r0, [sp, #4]
ldrb r3, [r3, #0x18]
ldr r0, [sp, #0x38]
bl ov96_022123B0
b _02212296
_02212220:
add r1, r4, #0
add r1, #0x3f
mov r0, #0
strb r0, [r1]
cmp r5, #1
bne _02212248
ldr r0, [sp, #0x3c]
cmp r0, #0
ldr r0, [r4]
beq _0221223E
mov r1, #1
add r2, r1, #0
bl ov96_021EB52C
b _02212252
_0221223E:
mov r1, #1
mov r2, #0
bl ov96_021EB52C
b _02212252
_02212248:
mov r1, #1
ldr r0, [r4]
add r2, r1, #0
bl ov96_021EB52C
_02212252:
cmp r7, #2
ldr r0, [r4, #4]
bne _02212272
mov r1, #1
add r2, r1, #0
bl ov96_021EB52C
add r0, r4, #0
add r0, #0x44
ldrb r0, [r0]
cmp r0, #2
beq _0221227A
ldr r0, _02212364 ; =0x000008C7
bl PlaySE
b _0221227A
_02212272:
mov r1, #1
mov r2, #0
bl ov96_021EB52C
_0221227A:
cmp r5, #0
bne _0221228E
ldr r0, [sp, #0x1c]
cmp r0, #0
beq _0221228E
ldr r0, [r4]
mov r1, #0xb
bl ov96_021EB570
b _02212296
_0221228E:
ldr r0, [r4]
mov r1, #0xa
bl ov96_021EB570
_02212296:
add r0, r4, #0
add r0, #0x44
strb r7, [r0]
add r7, r6, r5
ldrb r0, [r7, #0x18]
lsl r0, r0, #0xc
str r0, [sp, #0x50]
ldrb r0, [r7, #0x1a]
bl ov96_02213F5C
str r0, [sp, #0x54]
lsl r1, r5, #0x18
ldrb r3, [r7, #0x1a]
ldr r0, [sp, #0x38]
ldr r2, [sp, #0x1c]
lsr r1, r1, #0x18
bl ov96_02213FF4
ldr r0, [r4]
add r1, sp, #0x50
bl ov96_021EB588
ldr r0, [r4, #4]
add r1, sp, #0x50
bl ov96_021EB588
ldrb r0, [r7, #0x1a]
cmp r0, #0xc0
ldr r0, [r4]
bhs _022122DA
mov r1, #0x2e
bl ov96_021EB630
b _022122E0
_022122DA:
mov r1, #4
bl ov96_021EB630
_022122E0:
ldr r0, [sp, #0x20]
add r5, r5, #1
add r0, r0, #2
add r4, #0x4c
str r0, [sp, #0x20]
cmp r5, #2
bge _022122F0
b _022121C2
_022122F0:
ldr r7, _02212368 ; =0x000006E4
ldr r4, [sp, #0x38]
add r6, r7, #0
mov r5, #0
sub r6, #0x10
_022122FA:
ldr r0, [r4, r6]
bl ov96_021EB57C
cmp r0, #0
bne _0221230E
ldr r0, [r4, r7]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
_0221230E:
add r5, r5, #1
add r4, r4, #4
cmp r5, #4
blt _022122FA
ldr r0, [sp, #8]
bl ov96_0221236C
mov r1, #0x75
ldr r0, [sp, #0x38]
lsl r1, r1, #4
ldr r0, [r0, r1]
bl ov96_02214904
add r2, r0, #0
mov r1, #0x75
ldr r0, [sp, #0x38]
lsl r1, r1, #4
ldr r0, [r0, r1]
lsl r1, r2, #0x18
lsr r1, r1, #0x18
bl ov96_0221497C
mov r2, #0x75
ldr r0, [sp, #0x38]
lsl r2, r2, #4
ldr r0, [r0, r2]
ldr r1, [sp, #0x38]
sub r2, #0x18
ldr r1, [r1, r2]
bl ov96_0221490C
ldr r0, [sp, #0x38]
bl ov96_02214490
add sp, #0x74
pop {r4, r5, r6, r7, pc}
nop
_02212358: .word 0x00000748
_0221235C: .word 0x000008CC
_02212360: .word 0x0000062C
_02212364: .word 0x000008C7
_02212368: .word 0x000006E4
thumb_func_end ov96_02211F38
thumb_func_start ov96_0221236C
ov96_0221236C: ; 0x0221236C
push {r3, r4, r5, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
add r0, r5, #0
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
ldr r1, [r0, #0x1c]
ldr r0, [r0, #0x20]
asr r2, r1, #0x1c
mov r1, #3
and r1, r2
lsl r1, r1, #0x18
lsr r2, r1, #0x18
asr r1, r0, #0x19
mov r0, #0x7f
and r0, r1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
ldr r0, _022123AC ; =0x00000814
add r3, r4, r2
strb r1, [r3, r0]
sub r0, #0xc4
ldr r0, [r4, r0]
bl ov96_022148E8
pop {r3, r4, r5, pc}
nop
_022123AC: .word 0x00000814
thumb_func_end ov96_0221236C
thumb_func_start ov96_022123B0
ov96_022123B0: ; 0x022123B0
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r4, r0, #0
add r0, sp, #0x10
ldrb r3, [r0, #0x10]
str r2, [sp]
cmp r3, #0xd8
blo _022123D2
ldr r0, _022124E0 ; =0x0000062C
add r2, r4, r0
mov r0, #0x4c
mul r0, r1
add r1, r2, r0
add r1, #0x3f
ldrb r1, [r1]
cmp r1, #0
beq _022123D4
_022123D2:
b _022124DA
_022123D4:
add r0, r2, r0
mov r1, #1
add r0, #0x3f
sub r3, #0xd8
strb r1, [r0]
lsl r0, r3, #0x18
lsr r7, r0, #0x18
cmp r7, #0x10
blo _022123EA
bl GF_AssertFail
_022123EA:
lsl r0, r7, #0x16
lsr r5, r0, #0x18
lsl r6, r5, #2
ldr r0, _022124E4 ; =0x000006C4
add r1, r4, r6
ldr r0, [r1, r0]
mov r1, #0xf
bl ov96_021EB564
lsr r1, r7, #0x1f
lsl r2, r7, #0x1e
sub r2, r2, r1
mov r0, #0x1e
ror r2, r0
add r0, r1, r2
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
cmp r0, r5
beq _02212434
ldr r0, [sp]
mov r3, #0
cmp r0, #0
beq _0221241C
mov r3, #1
_0221241C:
ldr r1, [sp, #4]
add r0, r4, #0
mov r2, #1
bl ov96_02214258
mov r2, #0
add r0, r4, #0
add r1, r5, #0
add r3, r2, #0
bl ov96_02214258
b _02212440
_02212434:
mov r2, #0
add r0, r4, #0
add r1, r5, #0
add r3, r2, #0
bl ov96_02214258
_02212440:
add r0, r7, #0
mov r1, #5
bl _s32_div_f
cmp r1, #0
bne _02212466
add r0, r7, #0
mov r1, #5
bl _s32_div_f
add r1, sp, #0x10
ldrb r1, [r1, #0x14]
cmp r1, r0
bne _02212466
ldr r0, _022124E8 ; =0x000008C6
bl PlaySE
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_02212466:
add r0, sp, #0x10
ldrb r1, [r0, #0x14]
ldr r0, [sp, #4]
cmp r1, r0
bne _022124D4
cmp r5, #3
bhi _02212490
add r0, r5, r5
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02212480: ; jump table
.short _02212488 - _02212480 - 2 ; case 0
.short _0221248C - _02212480 - 2 ; case 1
.short _02212488 - _02212480 - 2 ; case 2
.short _0221248C - _02212480 - 2 ; case 3
_02212488:
mov r7, #0x11
b _02212498
_0221248C:
mov r7, #0x12
b _02212498
_02212490:
bl GF_AssertFail
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_02212498:
ldr r0, _022124EC ; =0x000006D4
mov r1, #1
add r0, r4, r0
str r0, [sp, #8]
ldr r0, [r0, r6]
add r2, r1, #0
bl ov96_021EB52C
ldr r0, [sp, #8]
add r1, r7, #0
ldr r0, [r0, r6]
bl ov96_021EB564
ldr r0, _022124F0 ; =0x000006E4
mov r1, #1
add r4, r4, r0
ldr r0, [r4, r6]
add r2, r1, #0
bl ov96_021EB52C
add r5, #0x13
ldr r0, [r4, r6]
add r1, r5, #0
bl ov96_021EB564
ldr r0, _022124F4 ; =0x000008CB
bl PlaySE
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_022124D4:
ldr r0, _022124E8 ; =0x000008C6
bl PlaySE
_022124DA:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
_022124E0: .word 0x0000062C
_022124E4: .word 0x000006C4
_022124E8: .word 0x000008C6
_022124EC: .word 0x000006D4
_022124F0: .word 0x000006E4
_022124F4: .word 0x000008CB
thumb_func_end ov96_022123B0
thumb_func_start ov96_022124F8
ov96_022124F8: ; 0x022124F8
push {r4, r5, r6, r7, lr}
sub sp, #0x10c
bl ov96_021E5DC4
str r0, [sp, #8]
add r0, sp, #0x70
mov r4, #0
str r4, [r0]
str r4, [r0, #4]
ldr r3, _022127F0 ; =ov96_0221D25C
str r4, [r0, #8]
ldmia r3!, {r0, r1}
add r2, sp, #0x10
stmia r2!, {r0, r1}
ldr r0, [r3]
add r7, sp, #0x7c
str r0, [r2]
ldr r0, [sp, #8]
str r0, [sp, #0xc]
add r0, #0x5c
str r0, [sp, #0xc]
_02212522:
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r5, r0, #0
add r0, r4, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x5d
lsl r0, r0, #2
add r2, r5, #0
mul r2, r0
ldr r0, [sp, #0xc]
add r3, sp, #0x70
add r2, r0, r2
mov r0, #0x7c
mul r0, r1
add r5, r2, r0
add r2, r5, #0
ldmia r3!, {r0, r1}
add r2, #0x3c
stmia r2!, {r0, r1}
ldr r0, [r3]
add r3, r5, #0
str r0, [r2]
add r3, #0x30
ldmia r3!, {r0, r1}
add r2, r7, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
add r3, r5, #0
str r0, [r2]
add r3, #0x30
ldmia r3!, {r0, r1}
add r2, sp, #0x4c
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r0, [r5, #0x48]
cmp r0, #0
beq _022125FC
sub r0, r0, #2
cmp r0, #1
bhi _02212590
mov r0, #0x5a
ldrsh r0, [r5, r0]
cmp r0, #0
ble _02212590
mov r0, #0x5a
ldrsh r0, [r5, r0]
sub r1, r0, #1
add r0, r5, #0
add r0, #0x5a
strh r1, [r0]
_02212590:
mov r0, #0x58
ldrsh r1, [r5, r0]
cmp r1, #0
bne _022125AC
mov r0, #0x5a
ldrsh r0, [r5, r0]
cmp r0, #0
bgt _022125AC
mov r0, #0
add r1, r5, #0
str r0, [r5, #0x48]
add r1, #0x5a
strh r0, [r1]
b _022125FC
_022125AC:
lsl r0, r1, #0xc
add r1, r5, #0
add r2, sp, #0x4c
add r1, #0x4c
add r3, r2, #0
bl VEC_MultAdd
add r6, sp, #0x4c
add r3, r5, #0
add r3, #0x30
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
str r0, [r3]
add r3, r5, #0
ldmia r2!, {r0, r1}
add r3, #0x24
stmia r3!, {r0, r1}
ldr r0, [r2]
str r0, [r3]
mov r0, #0x58
ldrsh r0, [r5, r0]
cmp r0, #0
ble _022125EA
mov r0, #0x58
ldrsh r0, [r5, r0]
sub r1, r0, #1
add r0, r5, #0
add r0, #0x58
strh r1, [r0]
_022125EA:
ldr r0, [r5, #0x78]
cmp r0, #2
beq _022125FC
ldr r0, [r5, #0x48]
cmp r0, #3
bne _022125FC
add r0, r5, #0
bl ov96_02213FB4
_022125FC:
ldr r0, [r5, #0x78]
cmp r0, #2
beq _0221260C
add r0, r5, #0
add r0, #0x60
ldrb r0, [r0]
cmp r0, #0
beq _02212634
_0221260C:
add r0, r5, #0
add r0, #0x60
ldrb r0, [r0]
sub r1, r0, #1
add r0, r5, #0
add r0, #0x60
strb r1, [r0]
add r0, r5, #0
add r0, #0x60
ldrb r0, [r0]
cmp r0, #0
bne _0221263A
mov r0, #0
str r0, [r5, #0x78]
add r0, r5, #0
add r0, #0x70
ldrb r0, [r0]
add r5, #0x71
strb r0, [r5]
b _02212742
_02212634:
ldr r0, [r5, #0x48]
cmp r0, #0
beq _0221263C
_0221263A:
b _02212742
_0221263C:
add r0, r5, #0
add r0, #0x24
add r1, sp, #0x4c
add r2, sp, #0x64
bl VEC_Subtract
add r0, sp, #0x64
bl VEC_Mag
add r6, r0, #0
cmp r6, #0
bgt _0221265C
add r0, r5, #0
bl ov96_02213558
b _02212742
_0221265C:
add r0, sp, #0x64
add r1, sp, #0x58
bl VEC_Normalize
add r3, sp, #0x58
add r2, r5, #0
ldmia r3!, {r0, r1}
add r2, #0x3c
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r0, [r5, #0x78]
cmp r0, #1
bne _0221267C
ldr r0, [r5, #0x68]
b _02212688
_0221267C:
cmp r0, #3
bne _02212686
mov r0, #2
lsl r0, r0, #0xc
b _02212688
_02212686:
ldr r0, [r5, #0x64]
_02212688:
cmp r6, r0
bgt _0221269C
add r3, r5, #0
add r3, #0x24
ldmia r3!, {r0, r1}
add r2, sp, #0x4c
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
b _022126BA
_0221269C:
mov r2, #0
add r1, sp, #0x40
str r2, [r1]
str r2, [r1, #4]
str r2, [r1, #8]
add r1, sp, #0x58
add r2, sp, #0x40
add r3, sp, #0x64
bl VEC_MultAdd
add r1, sp, #0x4c
add r0, sp, #0x64
add r2, r1, #0
bl VEC_Add
_022126BA:
cmp r6, #0
beq _02212736
add r6, sp, #0x10
ldmia r6!, {r0, r1}
add r3, sp, #0x34
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
add r1, sp, #0x28
str r0, [r3]
ldr r0, [sp, #0x5c]
str r0, [sp, #0x28]
ldr r0, [sp, #0x58]
str r0, [sp, #0x30]
mov r0, #0
str r0, [sp, #0x2c]
add r0, r2, #0
bl CalcAngleBetweenVecs
mov r1, #2
lsl r1, r1, #0xc
cmp r0, r1
bls _022126F0
mov r1, #0xe
lsl r1, r1, #0xc
cmp r0, r1
blo _022126FA
_022126F0:
add r1, r5, #0
add r1, #0x5c
mov r0, #4
strh r0, [r1]
b _02212736
_022126FA:
mov r1, #2
lsl r1, r1, #0xc
cmp r0, r1
bls _02212714
mov r1, #6
lsl r1, r1, #0xc
cmp r0, r1
bhs _02212714
add r1, r5, #0
add r1, #0x5c
mov r0, #2
strh r0, [r1]
b _02212736
_02212714:
mov r1, #6
lsl r1, r1, #0xc
cmp r0, r1
blo _0221272E
mov r1, #0xa
lsl r1, r1, #0xc
cmp r0, r1
bhi _0221272E
add r1, r5, #0
add r1, #0x5c
mov r0, #3
strh r0, [r1]
b _02212736
_0221272E:
add r1, r5, #0
add r1, #0x5c
mov r0, #1
strh r0, [r1]
_02212736:
add r2, sp, #0x4c
ldmia r2!, {r0, r1}
add r5, #0x30
stmia r5!, {r0, r1}
ldr r0, [r2]
str r0, [r5]
_02212742:
add r4, r4, #1
add r7, #0xc
cmp r4, #0xc
bge _0221274C
b _02212522
_0221274C:
ldr r0, [sp, #8]
add r5, sp, #0x7c
add r0, #0x5c
mov r6, #0
str r5, [sp, #4]
str r0, [sp, #8]
_02212758:
add r0, r6, #0
mov r1, #3
bl _s32_div_f
add r4, r0, #0
add r0, r6, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x5d
lsl r0, r0, #2
add r2, r4, #0
mul r2, r0
ldr r0, [sp, #8]
add r2, r0, r2
mov r0, #0x7c
mul r0, r1
add r4, r2, r0
ldr r1, [r4, #0x30]
ldr r0, [r5]
cmp r1, r0
bne _0221278C
ldr r1, [r4, #0x34]
ldr r0, [r5, #4]
cmp r1, r0
beq _022127BE
_0221278C:
add r0, sp, #0x1c
str r0, [sp]
add r0, r4, #0
ldr r1, [sp, #4]
ldr r2, [r4, #0x20]
add r0, #0x30
mov r3, #1
bl ov96_02213728
cmp r0, #0
beq _022127BE
add r7, sp, #0x1c
add r3, r4, #0
add r3, #0x30
ldmia r7!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r7]
str r0, [r3]
add r3, r4, #0
ldmia r2!, {r0, r1}
add r3, #0x24
stmia r3!, {r0, r1}
ldr r0, [r2]
str r0, [r3]
_022127BE:
ldr r1, [r4, #0x30]
ldr r0, [r4, #0x24]
cmp r1, r0
bne _022127DC
ldr r1, [r4, #0x34]
ldr r0, [r4, #0x28]
cmp r1, r0
bne _022127DC
ldr r0, [r4, #0x78]
cmp r0, #3
beq _022127DC
cmp r0, #2
beq _022127DC
mov r0, #0
str r0, [r4, #0x78]
_022127DC:
ldr r0, [sp, #4]
add r6, r6, #1
add r0, #0xc
add r5, #0xc
str r0, [sp, #4]
cmp r6, #0xc
blt _02212758
add sp, #0x10c
pop {r4, r5, r6, r7, pc}
nop
_022127F0: .word ov96_0221D25C
thumb_func_end ov96_022124F8
thumb_func_start ov96_022127F4
ov96_022127F4: ; 0x022127F4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x60
str r0, [sp, #8]
bl ov96_021E5DC4
str r0, [sp, #0x1c]
mov r0, #0
str r0, [sp, #0x20]
ldr r1, _02212B08 ; =0x0000062C
ldr r0, [sp, #0x1c]
add r5, r0, r1
_0221280A:
add r0, r5, #0
add r0, #0x38
ldrb r1, [r0]
cmp r1, #0
beq _02212822
add r0, r5, #0
add r0, #0x39
ldrb r0, [r0]
cmp r0, #0
beq _02212824
cmp r0, #2
beq _02212824
_02212822:
b _02212B82
_02212824:
cmp r1, #1
bne _0221282E
mov r0, #8
str r0, [sp, #0x18]
b _02212836
_0221282E:
cmp r1, #2
bne _02212836
mov r0, #0xc
str r0, [sp, #0x18]
_02212836:
ldr r0, [sp, #0x18]
mov r6, #0
lsl r0, r0, #0xc
str r0, [sp, #0xc]
add r0, r5, #0
str r0, [sp, #0x28]
add r0, #8
str r0, [sp, #0x28]
ldr r0, [sp, #0x1c]
str r0, [sp, #0x24]
add r0, #0x5c
str r0, [sp, #0x24]
_0221284E:
mov r1, #0
add r0, sp, #0x54
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
add r0, r6, #0
mov r1, #3
bl _s32_div_f
str r1, [sp, #0x34]
add r0, r6, #0
mov r1, #3
bl _s32_div_f
mov r1, #0x5d
lsl r1, r1, #2
str r0, [sp, #0x10]
mul r1, r0
ldr r0, [sp, #0x24]
ldr r2, [sp, #0x34]
add r1, r0, r1
mov r0, #0x7c
mul r0, r2
add r2, sp, #0x58
str r2, [sp]
add r2, sp, #0x38
add r4, r1, r0
str r2, [sp, #4]
ldr r0, [r1, r0]
ldr r1, [r4, #0x30]
ldr r2, [r4, #0x34]
add r3, sp, #0x54
bl ov96_021EAF78
ldr r1, [sp, #0x38]
ldr r2, [sp, #0x28]
ldr r3, [sp, #0xc]
add r0, sp, #0x54
lsl r1, r1, #0xc
bl ov96_0221341C
cmp r0, #0
bne _022128A6
b _02212ADC
_022128A6:
add r0, r5, r6
add r0, #0x2c
ldrb r0, [r0]
cmp r0, #0
beq _022128B6
ldr r0, [r5, #0x48]
cmp r0, #0
bne _022128E6
_022128B6:
ldr r0, [r4, #0x48]
cmp r0, #3
beq _022128E6
cmp r0, #2
beq _022128E6
ldr r0, [sp, #0x28]
add r1, sp, #0x54
add r2, sp, #0x48
bl VEC_Subtract
add r0, sp, #0x48
add r1, r0, #0
bl VEC_Normalize
add r0, r5, #0
add r0, #0x39
ldrb r0, [r0]
cmp r0, #2
bne _022129A6
add r0, r5, #0
add r0, #0x3b
ldrb r0, [r0]
cmp r0, r6
bne _022128E8
_022128E6:
b _02212AE4
_022128E8:
add r0, r4, #0
add r0, #0x71
ldrb r1, [r0]
add r0, r5, #0
add r0, #0x45
ldrb r0, [r0]
sub r1, r1, r0
cmp r1, #0
bgt _02212966
add r1, r4, #0
add r1, #0x71
mov r0, #0
strb r0, [r1]
mov r0, #2
add r1, r4, #0
str r0, [r4, #0x78]
add r3, r4, #0
add r3, #0x4c
add r1, #0x60
mov r0, #0x5a
strb r0, [r1]
mov r0, #3
add r1, r4, #0
str r0, [r4, #0x48]
add r1, #0x5a
mov r0, #0x1e
strh r0, [r1]
add r0, sp, #0x48
add r2, r0, #0
str r0, [sp, #0x2c]
ldmia r2!, {r0, r1}
add r7, r3, #0
stmia r3!, {r0, r1}
add r0, r2, #0
ldr r0, [r0]
str r2, [sp, #0x2c]
str r0, [r3]
mov r0, #0
ldr r2, [sp, #0x34]
ldr r1, [r7]
mvn r0, r0
mul r0, r1
str r0, [r7]
mov r0, #0
lsl r2, r2, #0x18
ldr r1, [r4, #0x50]
mvn r0, r0
mul r0, r1
str r0, [r4, #0x50]
ldr r1, [sp, #0x10]
add r4, #0x58
mov r0, #7
strh r0, [r4]
mov r0, #1
str r0, [sp]
lsl r1, r1, #0x18
ldr r0, [sp, #8]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #1
bl ov96_021E8228
b _02212AD2
_02212966:
add r0, r4, #0
add r0, #0x71
strb r1, [r0]
mov r0, #3
add r1, r4, #0
str r0, [r4, #0x48]
add r3, r4, #0
add r3, #0x4c
add r1, #0x5a
mov r0, #0x1e
strh r0, [r1]
add r1, r4, #0
add r1, #0x58
mov r0, #7
add r7, sp, #0x48
strh r0, [r1]
ldmia r7!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r7]
str r0, [r3]
mov r0, #0
ldr r1, [r2]
mvn r0, r0
mul r0, r1
str r0, [r2]
mov r0, #0
ldr r1, [r4, #0x50]
mvn r0, r0
mul r0, r1
str r0, [r4, #0x50]
b _02212AD2
_022129A6:
add r0, r4, #0
add r0, #0x3c
bl VEC_Mag
cmp r0, #0
bne _022129B4
b _02212AC2
_022129B4:
add r0, r4, #0
add r0, #0x6c
ldrh r0, [r0]
mov r1, #0x5a
lsl r1, r1, #2
lsl r0, r0, #0x10
bl _s32_div_f
add r2, r0, #0
add r0, r4, #0
lsl r2, r2, #0x10
add r0, #0x3c
add r1, sp, #0x48
lsr r2, r2, #0x10
bl ov96_02213534
ldr r1, [r4, #0x78]
cmp r1, #1
bne _02212A86
cmp r0, #0
beq _02212A86
add r1, r5, #0
add r1, #0x39
mov r0, #2
strb r0, [r1]
add r1, r5, #0
add r1, #0x3e
strb r0, [r1]
add r0, r4, #0
add r0, #0x73
ldrb r1, [r0]
add r0, r5, #0
add r0, #0x41
strb r1, [r0]
add r0, r4, #0
add r0, #0x72
ldrb r1, [r0]
add r0, r5, #0
add r0, #0x45
strb r1, [r0]
add r0, r4, #0
add r0, #0x75
ldrb r1, [r0]
add r0, r5, #0
add r0, #0x46
strh r1, [r0]
add r0, r5, #0
add r0, #0x41
ldrb r1, [r0]
mov r0, #0x1e
add r2, r1, #0
mul r2, r0
ldr r0, _02212B0C ; =ov96_0221D514
ldrb r0, [r0, r2]
add r2, r4, #0
add r2, #0x4c
str r0, [sp, #0x14]
mov r0, #1
str r0, [r4, #0x48]
add r0, sp, #0x48
mov ip, r0
mov r3, ip
ldmia r3!, {r0, r1}
add r7, r2, #0
stmia r2!, {r0, r1}
add r0, r3, #0
ldr r0, [r0]
mov r3, #4
str r0, [r2]
mov r0, #0
ldr r2, [sp, #0x34]
ldr r1, [r7]
mvn r0, r0
mul r0, r1
str r0, [r7]
mov r0, #0
lsl r2, r2, #0x18
ldr r1, [r4, #0x50]
mvn r0, r0
mul r0, r1
add r1, r4, #0
str r0, [r4, #0x50]
add r1, #0x58
mov r0, #3
strh r0, [r1]
mov r0, #0
add r1, r5, #0
str r0, [r4, #0x78]
add r1, #0x3c
mov r0, #1
strb r0, [r1]
add r1, r5, #0
add r1, #0x3d
mov r0, #0x1e
strb r0, [r1]
ldr r1, [sp, #0x10]
mov r0, #1
str r0, [sp]
lsl r1, r1, #0x18
ldr r0, [sp, #8]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_021E8228
b _02212ABA
_02212A86:
add r1, r5, #0
add r1, #0x3e
mov r0, #1
strb r0, [r1]
add r4, #0x73
add r0, r5, #0
ldrb r1, [r4]
add r0, #0x41
strb r1, [r0]
add r0, r5, #0
add r0, #0x41
ldrb r1, [r0]
mov r0, #0x1e
add r2, r1, #0
mul r2, r0
ldr r0, _02212B10 ; =ov96_0221D5AA
add r1, r5, #0
ldrb r0, [r0, r2]
add r1, #0x3c
str r0, [sp, #0x14]
mov r0, #1
strb r0, [r1]
add r1, r5, #0
add r1, #0x3d
mov r0, #0x1e
strb r0, [r1]
_02212ABA:
add r1, r5, #0
ldr r0, [sp, #0x14]
add r1, #0x40
strb r0, [r1]
_02212AC2:
ldr r0, [sp, #0x1c]
add r1, r5, #0
add r2, sp, #0x48
bl ov96_022134D4
add r0, r5, #0
add r0, #0x3b
strb r6, [r0]
_02212AD2:
add r1, r5, r6
add r1, #0x2c
mov r0, #1
strb r0, [r1]
b _02212AE4
_02212ADC:
add r1, r5, r6
add r1, #0x2c
mov r0, #0
strb r0, [r1]
_02212AE4:
add r6, r6, #1
cmp r6, #0xc
bge _02212AEC
b _0221284E
_02212AEC:
add r7, r5, #0
mov r4, #0
add r7, #8
_02212AF2:
lsr r2, r4, #0x1f
lsl r1, r4, #0x1e
sub r1, r1, r2
mov r0, #0x1e
ror r1, r0
add r1, r2, r1
mov r0, #0x18
add r2, r1, #0
mul r2, r0
ldr r0, _02212B14 ; =ov96_0221D4B4
b _02212B18
.balign 4, 0
_02212B08: .word 0x0000062C
_02212B0C: .word ov96_0221D514
_02212B10: .word ov96_0221D5AA
_02212B14: .word ov96_0221D4B4
_02212B18:
ldr r3, [sp, #0xc]
add r6, r0, r2
asr r0, r4, #1
lsr r0, r0, #0x1e
add r0, r4, r0
asr r1, r0, #2
mov r0, #0xc
mul r0, r1
mov r1, #2
str r0, [sp, #0x30]
add r0, r6, r0
lsl r1, r1, #0xe
add r2, r7, #0
bl ov96_0221341C
cmp r0, #0
beq _02212B7C
ldr r0, [sp, #0x30]
add r1, r5, #0
add r0, r6, r0
add r1, #8
add r2, sp, #0x3c
bl VEC_Subtract
add r0, sp, #0x3c
add r1, r0, #0
bl VEC_Normalize
add r0, r5, #0
add r0, #0x14
add r1, sp, #0x3c
bl VEC_DotProduct
cmp r0, #0
ble _02212B82
add r2, r5, #0
lsl r0, r0, #1
add r2, #0x14
neg r0, r0
add r1, sp, #0x3c
add r3, r2, #0
bl VEC_MultAdd
add r0, r5, #0
add r1, r5, #0
add r0, #0x14
add r1, #0x20
bl VEC_Normalize
b _02212B82
_02212B7C:
add r4, r4, #1
cmp r4, #8
blt _02212AF2
_02212B82:
ldr r0, [sp, #0x20]
add r5, #0x4c
add r0, r0, #1
str r0, [sp, #0x20]
cmp r0, #2
bge _02212B90
b _0221280A
_02212B90:
add sp, #0x60
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_022127F4
thumb_func_start ov96_02212B94
ov96_02212B94: ; 0x02212B94
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
bl ov96_021E5DC4
mov r1, #0x6b
add r5, r0, #0
lsl r1, r1, #4
ldrb r0, [r5, r1]
cmp r0, #0
bne _02212BC0
add r0, r1, #0
add r0, #0x88
ldr r2, [r5, r0]
mov r0, #0xe1
lsl r0, r0, #2
cmp r2, r0
bgt _02212BC0
mov r2, #3
add r0, r1, #1
strb r2, [r5, r0]
mov r0, #1
strb r0, [r5, r1]
_02212BC0:
ldr r0, _02212EC4 ; =0x0000062C
mov r7, #0
add r4, r5, r0
_02212BC6:
add r0, r4, #0
add r0, #0x38
ldrb r0, [r0]
cmp r0, #0
beq _02212CB4
add r0, r4, #0
add r0, #0x39
ldrb r0, [r0]
cmp r0, #3
bne _02212C02
add r0, r4, #0
add r0, #0x43
ldrb r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0x43
strb r1, [r0]
add r0, r4, #0
add r0, #0x43
ldrb r0, [r0]
cmp r0, #8
blo _02212CB4
add r1, r4, #0
add r1, #0x43
mov r0, #0
strb r0, [r1]
add r1, r4, #0
add r1, #0x39
strb r0, [r1]
b _02212E70
_02212C02:
cmp r0, #1
bne _02212CAC
add r0, r4, #0
add r0, #0x3a
ldrb r0, [r0]
sub r1, r0, #1
add r0, r4, #0
add r0, #0x3a
strb r1, [r0]
add r0, r4, #0
add r0, #0x3a
ldrb r0, [r0]
cmp r0, #0
bne _02212CB4
add r0, r4, #0
bl ov96_02213444
add r0, r5, #0
add r1, r4, #0
bl ov96_02213E60
cmp r7, #0
bne _02212CA2
ldr r0, _02212EC8 ; =0x00000738
mov r1, #0x4b
ldr r0, [r5, r0]
lsl r1, r1, #4
cmp r0, r1
blt _02212C40
mov r6, #0
b _02212C58
_02212C40:
lsr r1, r1, #1
cmp r0, r1
blt _02212C4A
mov r6, #5
b _02212C58
_02212C4A:
mov r1, #0x4b
lsl r1, r1, #2
cmp r0, r1
blt _02212C56
mov r6, #0xa
b _02212C58
_02212C56:
mov r6, #0x19
_02212C58:
ldr r0, _02212ECC ; =0x00000743
ldrb r0, [r5, r0]
add r0, r6, r0
lsl r0, r0, #0x18
lsr r6, r0, #0x18
cmp r6, #0x64
bls _02212C68
mov r6, #0x64
_02212C68:
bl LCRandom
mov r1, #0x64
bl _s32_div_f
cmp r1, r6
bge _02212C86
add r1, r4, #0
add r1, #0x38
mov r0, #2
strb r0, [r1]
ldr r0, _02212ECC ; =0x00000743
mov r1, #0
strb r1, [r5, r0]
b _02212E70
_02212C86:
add r1, r4, #0
add r1, #0x38
mov r0, #1
strb r0, [r1]
ldr r0, _02212ECC ; =0x00000743
ldrb r0, [r5, r0]
cmp r0, #0x64
bhs _02212CB4
ldr r0, _02212ECC ; =0x00000743
ldrb r0, [r5, r0]
add r1, r0, #1
ldr r0, _02212ECC ; =0x00000743
strb r1, [r5, r0]
b _02212E70
_02212CA2:
add r1, r4, #0
add r1, #0x38
mov r0, #1
strb r0, [r1]
b _02212E70
_02212CAC:
cmp r0, #0
beq _02212CB6
cmp r0, #2
beq _02212CB6
_02212CB4:
b _02212E70
_02212CB6:
add r0, r4, #0
add r0, #0x40
ldrb r0, [r0]
lsl r6, r0, #0xc
bne _02212CC2
b _02212E56
_02212CC2:
add r3, r4, #0
add r3, #8
ldmia r3!, {r0, r1}
add r2, sp, #0x1c
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r1, [r4, #8]
ldr r0, [r4, #0x14]
add r0, r1, r0
str r0, [r4, #8]
ldr r1, [r4, #0xc]
ldr r0, [r4, #0x18]
add r0, r1, r0
str r0, [r4, #0xc]
add r0, r4, #0
add r0, #0x46
ldrh r1, [r0]
ldr r0, _02212ED0 ; =ov96_0221D640
ldrb r0, [r0, r1]
lsl r0, r0, #0xc
cmp r6, r0
blt _02212D0E
add r0, r4, #0
add r0, #0x3e
ldrb r0, [r0]
cmp r0, #2
bne _02212D04
add r1, r4, #0
add r1, #0x39
mov r0, #2
strb r0, [r1]
b _02212D1C
_02212D04:
add r1, r4, #0
add r1, #0x39
mov r0, #0
strb r0, [r1]
b _02212D1C
_02212D0E:
add r1, r4, #0
add r1, #0x39
mov r0, #0
strb r0, [r1]
add r1, r4, #0
add r1, #0x45
strb r0, [r1]
_02212D1C:
mov r1, #0
add r0, sp, #0x10
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
add r1, r4, #0
add r1, #0x3e
add r0, r4, #0
add r0, #0x3c
ldrb r1, [r1]
ldrb r0, [r0]
cmp r1, #2
bne _02212D48
add r1, r4, #0
add r1, #0x41
ldrb r1, [r1]
mov r2, #0x1e
mul r2, r1
ldr r1, _02212ED4 ; =ov96_0221D514
add r1, r1, r2
ldrb r1, [r0, r1]
b _02212D64
_02212D48:
cmp r1, #1
bne _02212D5E
add r1, r4, #0
add r1, #0x41
ldrb r1, [r1]
mov r2, #0x1e
mul r2, r1
ldr r1, _02212ED8 ; =ov96_0221D5AA
add r1, r1, r2
ldrb r1, [r0, r1]
b _02212D64
_02212D5E:
bl GF_AssertFail
mov r1, #0
_02212D64:
add r0, r4, #0
add r0, #0x40
strb r1, [r0]
add r2, r4, #0
add r0, r5, #0
add r1, r4, #0
add r2, #0x20
bl ov96_022134D4
add r0, r4, #0
add r0, #0x3c
ldrb r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0x3c
strb r1, [r0]
add r0, r4, #0
add r0, #0x3c
ldrb r1, [r0]
add r0, r4, #0
add r0, #0x3d
ldrb r0, [r0]
cmp r1, r0
blo _02212DB8
mov r0, #0
str r0, [r4, #0x14]
add r2, r4, #0
add r3, sp, #0x10
str r0, [r4, #0x18]
ldmia r3!, {r0, r1}
add r2, #0x20
stmia r2!, {r0, r1}
ldr r0, [r3]
add r1, r4, #0
str r0, [r2]
add r1, #0x3e
mov r0, #0
strb r0, [r1]
add r1, r4, #0
add r1, #0x40
strb r0, [r1]
b _02212DE4
_02212DB8:
add r0, r4, #0
add r0, #0x40
ldrb r0, [r0]
cmp r0, #0
bne _02212DE4
add r3, sp, #0x10
add r2, r4, #0
ldmia r3!, {r0, r1}
add r2, #0x20
stmia r2!, {r0, r1}
ldr r0, [r3]
add r1, r4, #0
str r0, [r2]
add r1, #0x3c
mov r0, #0
strb r0, [r1]
add r1, r4, #0
add r1, #0x3d
strb r0, [r1]
add r1, r4, #0
add r1, #0x3e
strb r0, [r1]
_02212DE4:
mov r0, #0
str r0, [r4, #0x48]
add r0, sp, #4
str r0, [sp]
add r0, r4, #0
add r0, #8
add r1, sp, #0x1c
mov r2, #8
mov r3, #0
bl ov96_02213728
add r3, r0, #0
beq _02212E10
add r6, sp, #4
add r2, r4, #0
ldmia r6!, {r0, r1}
add r2, #8
stmia r2!, {r0, r1}
ldr r0, [r6]
str r0, [r2]
mov r0, #1
str r0, [r4, #0x48]
_02212E10:
cmp r3, #4
bhi _02212E70
add r0, r3, r3
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02212E20: ; jump table
.short _02212E70 - _02212E20 - 2 ; case 0
.short _02212E40 - _02212E20 - 2 ; case 1
.short _02212E40 - _02212E20 - 2 ; case 2
.short _02212E2A - _02212E20 - 2 ; case 3
.short _02212E2A - _02212E20 - 2 ; case 4
_02212E2A:
mov r0, #0
ldr r1, [r4, #0x24]
mvn r0, r0
mul r0, r1
str r0, [r4, #0x24]
mov r0, #0
ldr r1, [r4, #0x18]
mvn r0, r0
mul r0, r1
str r0, [r4, #0x18]
b _02212E70
_02212E40:
mov r0, #0
ldr r1, [r4, #0x20]
mvn r0, r0
mul r0, r1
str r0, [r4, #0x20]
mov r0, #0
ldr r1, [r4, #0x14]
mvn r0, r0
mul r0, r1
str r0, [r4, #0x14]
b _02212E70
_02212E56:
add r1, r4, #0
add r1, #0x39
mov r0, #0
strb r0, [r1]
add r1, r4, #0
add r1, #0x45
strb r0, [r1]
add r1, r4, #0
add r1, #0x46
strh r0, [r1]
add r1, r4, #0
add r1, #0x3e
strb r0, [r1]
_02212E70:
add r7, r7, #1
add r4, #0x4c
cmp r7, #2
bge _02212E7A
b _02212BC6
_02212E7A:
ldr r4, _02212EDC ; =0x00000664
ldrb r0, [r5, r4]
cmp r0, #0
beq _02212F06
add r0, r4, #0
add r0, #0x4c
ldrb r0, [r5, r0]
cmp r0, #0
beq _02212F06
add r6, r4, #0
sub r6, #0x38
add r0, r5, r6
add r0, #0x39
ldrb r0, [r0]
add r4, #0x14
cmp r0, #1
beq _02212F06
cmp r0, #3
beq _02212F06
add r0, r5, r4
add r0, #0x39
ldrb r0, [r0]
cmp r0, #1
beq _02212F06
cmp r0, #3
beq _02212F06
add r0, r5, r6
add r0, #0x38
ldrb r0, [r0]
cmp r0, #1
bne _02212EBC
mov r1, #8
b _02212EE8
_02212EBC:
cmp r0, #2
bne _02212EE0
mov r1, #0xc
b _02212EE8
.balign 4, 0
_02212EC4: .word 0x0000062C
_02212EC8: .word 0x00000738
_02212ECC: .word 0x00000743
_02212ED0: .word ov96_0221D640
_02212ED4: .word ov96_0221D514
_02212ED8: .word ov96_0221D5AA
_02212EDC: .word 0x00000664
_02212EE0:
bl GF_AssertFail
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
_02212EE8:
add r0, r5, r6
add r2, r5, r4
mov r3, #2
add r0, #8
lsl r1, r1, #0xc
add r2, #8
lsl r3, r3, #0xe
bl ov96_0221341C
cmp r0, #0
beq _02212F06
add r0, r5, r6
add r1, r5, r4
bl ov96_02212F0C
_02212F06:
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02212B94
thumb_func_start ov96_02212F0C
ov96_02212F0C: ; 0x02212F0C
push {r4, r5, lr}
sub sp, #0x4c
add r2, r0, #0
add r5, r2, #0
add r5, #0x14
add r4, r1, #0
ldmia r5!, {r0, r1}
add r3, sp, #0x14
stmia r3!, {r0, r1}
ldr r0, [r5]
add r5, r2, #0
str r0, [r3]
add r5, #0x20
ldmia r5!, {r0, r1}
add r3, sp, #0x20
stmia r3!, {r0, r1}
ldr r0, [r5]
add r1, sp, #0x20
str r0, [r3]
add r0, r2, #0
add r0, #0x39
ldrb r0, [r0]
add r5, r2, #0
add r5, #8
strb r0, [r1, #0x19]
add r0, r2, #0
add r0, #0x3b
ldrb r0, [r0]
add r3, sp, #8
strb r0, [r1, #0x1b]
add r0, r2, #0
add r0, #0x3c
ldrb r0, [r0]
strb r0, [r1, #0x1c]
add r0, r2, #0
add r0, #0x3d
ldrb r0, [r0]
strb r0, [r1, #0x1d]
add r0, r2, #0
add r0, #0x3e
ldrb r0, [r0]
strb r0, [r1, #0x1e]
add r0, r2, #0
add r0, #0x40
ldrb r0, [r0]
add r1, sp, #0x40
strb r0, [r1]
add r0, r2, #0
add r0, #0x41
ldrb r0, [r0]
strb r0, [r1, #1]
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
add r1, r4, #0
str r0, [r3]
add r0, r2, #0
mov r2, #0
bl ov96_02212F94
add r0, r4, #0
add r1, sp, #0
mov r2, #1
bl ov96_02212F94
add sp, #0x4c
pop {r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_02212F0C
thumb_func_start ov96_02212F94
ov96_02212F94: ; 0x02212F94
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
add r5, r0, #0
add r4, r1, #0
str r2, [sp]
add r1, sp, #0x1c
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
add r1, r5, #0
add r1, #0x40
ldrb r1, [r1]
cmp r1, #3
bhi _02213032
add r1, r4, #0
add r1, #0x40
ldrb r1, [r1]
cmp r1, #3
bls _02213006
add r0, r4, #0
add r0, #0x39
ldrb r1, [r0]
add r0, r5, #0
add r0, #0x39
strb r1, [r0]
add r0, r4, #0
add r0, #0x3c
ldrb r1, [r0]
add r0, r5, #0
add r0, #0x3c
strb r1, [r0]
add r0, r4, #0
add r0, #0x3d
ldrb r1, [r0]
add r0, r5, #0
add r0, #0x3d
strb r1, [r0]
add r0, r4, #0
add r0, #0x3e
ldrb r1, [r0]
add r0, r5, #0
add r0, #0x3e
strb r1, [r0]
add r0, r4, #0
add r0, #0x40
ldrb r1, [r0]
add r0, r5, #0
add r0, #0x40
strb r1, [r0]
add r0, r4, #0
add r0, #0x41
ldrb r1, [r0]
add r0, r5, #0
add r0, #0x41
strb r1, [r0]
b _0221305C
_02213006:
add r1, r5, #0
add r1, #0x39
strb r0, [r1]
add r1, r5, #0
add r1, #0x3c
strb r0, [r1]
add r1, r5, #0
mov r2, #0x1e
add r1, #0x3d
strb r2, [r1]
add r1, r5, #0
mov r2, #1
add r1, #0x3e
strb r2, [r1]
add r1, r5, #0
mov r2, #3
add r1, #0x40
strb r2, [r1]
add r1, r5, #0
add r1, #0x41
strb r0, [r1]
b _0221305C
_02213032:
add r1, r5, #0
add r1, #0x39
strb r0, [r1]
add r1, r5, #0
add r1, #0x3c
strb r0, [r1]
add r1, r5, #0
mov r2, #0x1e
add r1, #0x3d
strb r2, [r1]
add r1, r5, #0
mov r2, #1
add r1, #0x3e
strb r2, [r1]
add r1, r5, #0
mov r2, #3
add r1, #0x40
strb r2, [r1]
add r1, r5, #0
add r1, #0x41
strb r0, [r1]
_0221305C:
add r0, r5, #0
add r1, r4, #0
add r2, r5, #0
add r0, #8
add r1, #8
add r2, #0x20
bl VEC_Subtract
add r0, r5, #0
add r0, #0x20
bl VEC_Mag
cmp r0, #0
bne _022130B4
ldr r3, _022130E4 ; =ov96_0221D268
add r2, sp, #0x10
ldmia r3!, {r0, r1}
add r6, r2, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
ldr r3, _022130E8 ; =ov96_0221D280
str r0, [r2]
add r7, sp, #4
ldmia r3!, {r0, r1}
add r2, r7, #0
stmia r7!, {r0, r1}
ldr r0, [r3]
str r0, [r7]
ldr r0, [sp]
cmp r0, #0
bne _022130A8
add r2, r5, #0
ldmia r6!, {r0, r1}
add r2, #0x20
stmia r2!, {r0, r1}
ldr r0, [r6]
str r0, [r2]
b _022130B4
_022130A8:
add r3, r5, #0
ldmia r2!, {r0, r1}
add r3, #0x20
stmia r3!, {r0, r1}
ldr r0, [r2]
str r0, [r3]
_022130B4:
add r0, r5, #0
add r0, #0x20
add r1, r0, #0
bl VEC_Normalize
add r0, r5, #0
add r0, #0x40
ldrb r0, [r0]
add r1, r5, #0
add r3, r5, #0
lsl r0, r0, #0xc
add r1, #0x20
add r2, sp, #0x1c
add r3, #0x14
bl VEC_MultAdd
add r4, #0x3b
ldrb r0, [r4]
cmp r0, #0xc
bhs _022130E0
add r5, #0x3b
strb r0, [r5]
_022130E0:
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_022130E4: .word ov96_0221D268
_022130E8: .word ov96_0221D280
thumb_func_end ov96_02212F94
thumb_func_start ov96_022130EC
ov96_022130EC: ; 0x022130EC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
str r0, [sp, #4]
bl ov96_021E5DC4
str r0, [sp, #0xc]
mov r0, #0
str r0, [sp, #0x10]
ldr r0, [sp, #0xc]
ldr r1, _022132F0 ; =0x0000062C
str r0, [sp, #0x14]
add r5, r0, r1
add r0, #0x5c
str r0, [sp, #0x14]
_02213108:
add r0, r5, #0
add r0, #0x38
ldrb r0, [r0]
cmp r0, #0
beq _02213172
add r0, r5, #0
add r0, #0x39
ldrb r0, [r0]
cmp r0, #0
beq _02213120
cmp r0, #2
bne _02213172
_02213120:
ldr r1, [r5, #8]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0x18]
ldr r1, [r5, #0xc]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0x1c]
add r0, r5, #0
bl ov96_022143DC
ldr r1, _022132F4 ; =ov96_0221D474
lsl r2, r0, #4
str r0, [sp, #8]
ldr r0, _022132F4 ; =ov96_0221D474
add r1, r1, r2
add r0, r0, r2
add r1, #8
add r2, sp, #0x18
bl sub_02020E80
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _02213172
add r1, r5, #0
add r1, #0x39
mov r0, #1
strb r0, [r1]
add r1, r5, #0
add r1, #0x3a
mov r0, #0xa
strb r0, [r1]
add r0, r5, #0
add r0, #0x3b
ldrb r4, [r0]
cmp r4, #0xc
bne _02213174
_02213172:
b _022132DC
_02213174:
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r7, r0, #0
add r0, r4, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x5d
lsl r0, r0, #2
add r2, r7, #0
mul r2, r0
ldr r0, [sp, #0x14]
add r6, r1, #0
add r4, r0, r2
mov r0, #0x7c
mul r6, r0
ldr r0, [sp, #8]
cmp r0, r7
bne _02213238
add r0, r4, r6
add r0, #0x5e
ldrh r0, [r0]
cmp r0, #0
beq _022131B6
add r0, r4, r6
add r0, #0x5e
ldrh r0, [r0]
sub r1, r0, #1
add r0, r4, r6
add r0, #0x5e
strh r1, [r0]
_022131B6:
add r0, r5, #0
add r0, #0x3b
ldrb r0, [r0]
mov r1, #3
bl _s32_div_f
lsl r1, r0, #2
ldr r0, [sp, #0xc]
add r0, r0, r1
ldr r1, _022132F8 ; =0x000006F4
ldr r1, [r0, r1]
cmp r1, #0
beq _022131DA
ldr r1, _022132F8 ; =0x000006F4
ldr r1, [r0, r1]
sub r2, r1, #1
ldr r1, _022132F8 ; =0x000006F4
str r2, [r0, r1]
_022131DA:
add r0, r5, #0
add r0, #0x3b
ldrb r6, [r0]
mov r1, #3
add r0, r6, #0
bl _s32_div_f
add r4, r0, #0
add r0, r6, #0
mov r1, #3
bl _s32_div_f
add r2, r1, #0
mov r0, #1
str r0, [sp]
lsl r1, r4, #0x18
lsl r2, r2, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #8
bl ov96_021E8228
add r0, r5, #0
add r0, #0x3b
ldrb r6, [r0]
mov r1, #3
add r0, r6, #0
bl _s32_div_f
add r4, r0, #0
add r0, r6, #0
mov r1, #3
bl _s32_div_f
add r2, r1, #0
mov r0, #1
str r0, [sp]
lsl r1, r4, #0x18
lsl r2, r2, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #1
bl ov96_021E8228
b _022132DC
_02213238:
add r0, r5, #0
add r0, #0x38
ldrb r0, [r0]
mov r7, #0
cmp r0, #1
bne _02213248
mov r7, #1
b _02213254
_02213248:
cmp r0, #2
bne _02213250
mov r7, #2
b _02213254
_02213250:
bl GF_AssertFail
_02213254:
add r0, r4, r6
add r0, #0x5e
ldrh r0, [r0]
add r0, r0, r7
cmp r0, #0x63
bgt _0221326E
add r0, r4, r6
add r0, #0x5e
ldrh r0, [r0]
add r1, r0, r7
add r0, r4, r6
add r0, #0x5e
strh r1, [r0]
_0221326E:
add r0, r5, #0
add r0, #0x3b
ldrb r0, [r0]
mov r1, #3
bl _s32_div_f
lsl r1, r0, #2
ldr r0, [sp, #0xc]
add r0, r0, r1
ldr r1, _022132F8 ; =0x000006F4
ldr r1, [r0, r1]
add r1, r7, r1
cmp r1, #0x63
bgt _02213294
ldr r1, _022132F8 ; =0x000006F4
ldr r1, [r0, r1]
add r2, r1, r7
ldr r1, _022132F8 ; =0x000006F4
str r2, [r0, r1]
_02213294:
ldr r0, [sp, #8]
lsl r1, r0, #2
ldr r0, [sp, #0xc]
add r0, r0, r1
ldr r1, _022132F8 ; =0x000006F4
ldr r1, [r0, r1]
cmp r1, #0
beq _022132AE
ldr r1, _022132F8 ; =0x000006F4
ldr r1, [r0, r1]
sub r2, r1, #1
ldr r1, _022132F8 ; =0x000006F4
str r2, [r0, r1]
_022132AE:
add r0, r5, #0
add r0, #0x3b
ldrb r6, [r0]
mov r1, #3
add r0, r6, #0
bl _s32_div_f
add r4, r0, #0
add r0, r6, #0
mov r1, #3
bl _s32_div_f
add r2, r1, #0
mov r0, #1
str r0, [sp]
lsl r1, r4, #0x18
lsl r2, r2, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #3
bl ov96_021E8228
_022132DC:
ldr r0, [sp, #0x10]
add r5, #0x4c
add r0, r0, #1
str r0, [sp, #0x10]
cmp r0, #2
bge _022132EA
b _02213108
_022132EA:
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
nop
_022132F0: .word 0x0000062C
_022132F4: .word ov96_0221D474
_022132F8: .word 0x000006F4
thumb_func_end ov96_022130EC
thumb_func_start ov96_022132FC
ov96_022132FC: ; 0x022132FC
push {r3, r4, r5, r6, r7, lr}
bl ov96_021E5DC4
add r6, r0, #0
mov r5, #0
mov r7, #3
add r6, #0x5c
_0221330A:
add r0, r5, #0
mov r1, #3
bl _s32_div_f
add r4, r0, #0
add r0, r5, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x5d
lsl r0, r0, #2
mul r0, r4
add r2, r6, r0
mov r0, #0x7c
mul r0, r1
add r0, r2, r0
ldr r2, [r0, #0x78]
cmp r2, #2
beq _02213346
add r1, r0, #0
add r1, #0x71
ldrb r1, [r1]
cmp r1, #0x1e
bhs _0221333E
str r7, [r0, #0x78]
b _02213346
_0221333E:
cmp r2, #1
beq _02213346
mov r1, #0
str r1, [r0, #0x78]
_02213346:
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #0xc
blo _0221330A
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_022132FC
thumb_func_start ov96_02213354
ov96_02213354: ; 0x02213354
lsl r0, r0, #0xc
str r0, [r2]
lsl r0, r1, #0xc
str r0, [r2, #4]
mov r0, #0
str r0, [r2, #8]
bx lr
.balign 4, 0
thumb_func_end ov96_02213354
thumb_func_start ov96_02213364
ov96_02213364: ; 0x02213364
push {r4, r5, r6, r7, lr}
sub sp, #0x2c
str r1, [sp, #8]
str r2, [sp, #0xc]
str r3, [sp, #0x10]
add r7, r0, #0
bl ov96_021E6104
mov r1, #0x5d
mov r5, #0
str r0, [sp, #0x14]
lsl r6, r0, #0xc
ldr r0, [sp, #8]
lsl r1, r1, #2
add r7, #0x5c
mul r1, r0
add r4, r5, #0
add r7, r7, r1
_02213388:
mov r0, #0x7c
mul r0, r4
add r1, r7, r0
ldr r0, [sp, #0x14]
str r0, [sp]
add r0, sp, #0x18
str r0, [sp, #4]
ldr r0, [r1, #0x30]
ldr r1, [r1, #0x34]
asr r2, r0, #0xb
lsr r2, r2, #0x14
add r2, r0, r2
asr r0, r2, #0xc
asr r2, r1, #0xb
lsr r2, r2, #0x14
add r2, r1, r2
asr r1, r2, #0xc
ldr r2, [sp, #0xc]
ldr r3, [sp, #0x10]
bl ov96_021E872C
cmp r0, #0
add r0, sp, #0x20
beq _022133CC
ldr r2, [sp, #0x18]
lsl r1, r4, #2
str r2, [r0, r1]
mov r1, #1
add r0, sp, #0x1c
strb r1, [r0, r4]
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
b _022133D6
_022133CC:
lsl r2, r4, #2
mov r1, #0
str r1, [r0, r2]
add r0, sp, #0x1c
strb r1, [r0, r4]
_022133D6:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _02213388
cmp r5, #0
bne _022133EA
add sp, #0x2c
mov r0, #0xc
pop {r4, r5, r6, r7, pc}
_022133EA:
mov r0, #3
mov r3, #0
add r1, sp, #0x20
add r2, sp, #0x1c
_022133F2:
ldrb r4, [r2, r3]
cmp r4, #0
beq _02213404
lsl r4, r3, #2
ldr r4, [r1, r4]
cmp r4, r6
bge _02213404
add r0, r3, #0
add r6, r4, #0
_02213404:
add r3, r3, #1
lsl r3, r3, #0x18
lsr r3, r3, #0x18
cmp r3, #3
blo _022133F2
cmp r0, #3
bne _02213418
bl GF_AssertFail
mov r0, #0xc
_02213418:
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_02213364
thumb_func_start ov96_0221341C
ov96_0221341C: ; 0x0221341C
push {r4, r5, lr}
sub sp, #0xc
add r5, r1, #0
add r1, r2, #0
add r2, sp, #0
add r4, r3, #0
bl VEC_Subtract
add r0, sp, #0
bl VEC_Mag
add r1, r5, r4
cmp r0, r1
bgt _0221343E
add sp, #0xc
mov r0, #1
pop {r4, r5, pc}
_0221343E:
mov r0, #0
add sp, #0xc
pop {r4, r5, pc}
thumb_func_end ov96_0221341C
thumb_func_start ov96_02213444
ov96_02213444: ; 0x02213444
push {r4, r5, r6}
sub sp, #0xc
add r2, sp, #0
mov r3, #0
str r3, [r2]
str r3, [r2, #4]
add r4, r0, #0
add r5, r4, #0
str r3, [r2, #8]
add r6, r2, #0
ldmia r6!, {r0, r1}
add r5, #0x14
stmia r5!, {r0, r1}
ldr r0, [r6]
str r0, [r5]
add r5, r4, #0
ldmia r2!, {r0, r1}
add r5, #0x20
stmia r5!, {r0, r1}
ldr r0, [r2]
mov r1, #3
str r0, [r5]
add r0, r4, #0
add r0, #0x38
strb r3, [r0]
add r0, r4, #0
add r0, #0x39
strb r1, [r0]
add r0, r4, #0
add r0, #0x3a
strb r3, [r0]
add r0, r4, #0
mov r1, #0xc
add r0, #0x3b
strb r1, [r0]
add r0, r4, #0
add r0, #0x3c
strb r3, [r0]
add r0, r4, #0
add r0, #0x3d
strb r3, [r0]
add r0, r4, #0
add r0, #0x3e
strb r3, [r0]
add r0, r4, #0
add r0, #0x40
strb r3, [r0]
add r0, r4, #0
add r0, #0x41
strb r3, [r0]
add r0, r4, #0
add r0, #0x43
strb r3, [r0]
add r0, r4, #0
add r0, #0x45
strb r3, [r0]
add r0, r4, #0
add r0, #0x46
strh r3, [r0]
add r1, r3, #0
_022134BC:
add r0, r4, r3
add r0, #0x2c
strb r1, [r0]
add r0, r3, #1
lsl r0, r0, #0x18
lsr r3, r0, #0x18
cmp r3, #0xc
blo _022134BC
add sp, #0xc
pop {r4, r5, r6}
bx lr
.balign 4, 0
thumb_func_end ov96_02213444
thumb_func_start ov96_022134D4
ov96_022134D4: ; 0x022134D4
push {r4, r5, lr}
sub sp, #0xc
add r4, r1, #0
add r1, sp, #0
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
add r1, r4, #0
add r0, r2, #0
add r1, #0x20
bl VEC_Normalize
add r5, r4, #0
add r2, r4, #0
add r5, #0x20
add r2, #0x14
ldmia r5!, {r0, r1}
add r3, r2, #0
stmia r2!, {r0, r1}
ldr r0, [r5]
add r4, #0x40
str r0, [r2]
ldrb r0, [r4]
add r1, r3, #0
add r2, sp, #0
lsl r0, r0, #0xc
bl VEC_MultAdd
add sp, #0xc
pop {r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_022134D4
thumb_func_start ov96_02213514
ov96_02213514: ; 0x02213514
push {r4, lr}
sub sp, #0x18
add r4, r1, #0
add r1, sp, #0xc
bl VEC_Normalize
add r0, r4, #0
add r1, sp, #0
bl VEC_Normalize
add r0, sp, #0xc
add r1, sp, #0
bl VEC_DotProduct
add sp, #0x18
pop {r4, pc}
thumb_func_end ov96_02213514
thumb_func_start ov96_02213534
ov96_02213534: ; 0x02213534
push {r4, lr}
add r4, r2, #0
bl ov96_02213514
asr r1, r4, #4
lsl r1, r1, #1
add r1, r1, #1
lsl r2, r1, #1
ldr r1, _02213554 ; =FX_SinCosTable_
ldrsh r1, [r1, r2]
cmp r0, r1
blt _02213550
mov r0, #1
pop {r4, pc}
_02213550:
mov r0, #0
pop {r4, pc}
.balign 4, 0
_02213554: .word FX_SinCosTable_
thumb_func_end ov96_02213534
thumb_func_start ov96_02213558
ov96_02213558: ; 0x02213558
add r1, r0, #0
add r1, #0x61
ldrb r1, [r1]
add r2, r1, #1
add r1, r0, #0
add r1, #0x61
strb r2, [r1]
add r1, r0, #0
add r1, #0x61
ldrb r1, [r1]
cmp r1, #0xa
blo _0221359A
add r1, r0, #0
mov r2, #0
add r1, #0x61
strb r2, [r1]
add r1, r0, #0
add r1, #0x71
ldrb r1, [r1]
add r2, r1, #2
add r1, r0, #0
add r1, #0x71
strb r2, [r1]
add r1, r0, #0
add r1, #0x70
ldrb r2, [r1]
add r1, r0, #0
add r1, #0x71
ldrb r1, [r1]
cmp r1, r2
bls _0221359A
add r0, #0x71
strb r2, [r0]
_0221359A:
bx lr
thumb_func_end ov96_02213558
thumb_func_start ov96_0221359C
ov96_0221359C: ; 0x0221359C
push {r4, r5, r6, lr}
add r6, r1, #0
add r1, r2, #0
add r2, r3, #0
ldr r5, [sp, #0x10]
bl ov96_021E60D8
add r4, r0, #0
ldrb r0, [r4, #4]
lsl r0, r0, #2
ldr r1, [r6, r0]
add r0, r5, #0
add r0, #0x6c
strh r1, [r0]
ldrb r0, [r4, #4]
lsl r0, r0, #2
add r0, r6, r0
ldr r1, [r0, #0x14]
add r0, r5, #0
add r0, #0x6e
strh r1, [r0]
ldrb r0, [r4, #3]
lsl r0, r0, #2
add r0, r6, r0
ldr r1, [r0, #0x28]
add r0, r5, #0
add r0, #0x70
strb r1, [r0]
ldrb r0, [r4, #3]
lsl r0, r0, #2
add r0, r6, r0
ldr r1, [r0, #0x28]
add r0, r5, #0
add r0, #0x71
strb r1, [r0]
ldrb r0, [r4, #1]
mov r1, #0xa
lsl r0, r0, #2
add r0, r6, r0
ldr r0, [r0, #0x3c]
lsl r0, r0, #0xc
bl _s32_div_f
str r0, [r5, #0x64]
ldrb r0, [r4, #1]
mov r1, #0xa
lsl r0, r0, #2
add r0, r6, r0
ldr r0, [r0, #0x50]
lsl r0, r0, #0xc
bl _s32_div_f
str r0, [r5, #0x68]
ldrb r0, [r4]
lsl r0, r0, #2
add r0, r6, r0
ldr r1, [r0, #0x64]
add r0, r5, #0
add r0, #0x72
strb r1, [r0]
add r0, r5, #0
ldrb r1, [r4, #4]
add r0, #0x73
strb r1, [r0]
add r0, r5, #0
ldrb r1, [r4]
add r0, #0x75
add r5, #0x74
strb r1, [r0]
ldrb r0, [r4, #3]
strb r0, [r5]
pop {r4, r5, r6, pc}
thumb_func_end ov96_0221359C
thumb_func_start ov96_0221362C
ov96_0221362C: ; 0x0221362C
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r7, r0, #0
add r1, r7, #0
ldr r0, [r7, #4]
ldr r2, _0221369C ; =ov96_0221D1F8
add r1, #8
bl AddWindow
add r5, r7, #0
ldr r4, _022136A0 ; =ov96_0221D360
mov r6, #0
add r5, #0x18
_02213646:
ldr r0, [r7, #4]
add r1, r5, #0
add r2, r4, #0
bl AddWindow
add r6, r6, #1
add r4, #8
add r5, #0x10
cmp r6, #4
blt _02213646
mov r2, #0
str r2, [sp]
ldr r0, [r7, #4]
mov r1, #3
mov r3, #1
bl BG_FillCharDataRange
mov r1, #0
str r1, [sp]
ldr r0, [r7, #4]
add r2, r1, #0
mov r3, #1
bl BG_FillCharDataRange
mov r1, #0x1e
ldr r2, [r7, #0x58]
mov r0, #0
lsl r1, r1, #4
bl LoadFontPal0
mov r0, #0x20
str r0, [sp]
ldr r0, [r7, #0x58]
mov r1, #0x13
str r0, [sp, #4]
mov r0, #0xec
add r3, r0, #0
mov r2, #0
add r3, #0xd4
bl GfGfxLoader_GXLoadPal
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0221369C: .word ov96_0221D1F8
_022136A0: .word ov96_0221D360
thumb_func_end ov96_0221362C
thumb_func_start ov96_022136A4
ov96_022136A4: ; 0x022136A4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
add r7, r1, #0
add r0, #8
mov r1, #0
bl FillWindowPixelBuffer
ldr r2, _02213720 ; =0x00000135
ldr r3, [r5, #0x58]
mov r0, #1
mov r1, #0x1b
bl NewMsgDataFromNarc
add r4, r0, #0
ldr r0, [r5, #0x58]
bl MessageFormat_New
mov r1, #0
str r1, [sp]
mov r2, #1
str r2, [sp, #4]
add r2, r7, #0
mov r3, #3
add r6, r0, #0
bl BufferIntegerAsString
ldr r3, [r5, #0x58]
add r0, r6, #0
add r1, r4, #0
mov r2, #0xa5
bl ReadMsgData_ExpandPlaceholders
add r7, r0, #0
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _02213724 ; =0x000F0E00
mov r1, #4
str r0, [sp, #8]
add r0, r5, #0
add r0, #8
add r2, r7, #0
str r3, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r7, #0
bl String_Delete
add r0, r6, #0
bl MessageFormat_Delete
add r0, r4, #0
bl DestroyMsgData
add r5, #8
add r0, r5, #0
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02213720: .word 0x00000135
_02213724: .word 0x000F0E00
thumb_func_end ov96_022136A4
thumb_func_start ov96_02213728
ov96_02213728: ; 0x02213728
push {r3, r4, r5, r6, r7, lr}
sub sp, #0xb8
add r7, r0, #0
str r2, [sp, #4]
add r0, sp, #0xac
mov r2, #0
str r2, [r0]
str r2, [r0, #4]
str r2, [r0, #8]
add r0, sp, #0xa0
str r2, [r0]
str r2, [r0, #4]
str r2, [r0, #8]
add r0, sp, #0x7c
str r2, [r0]
str r2, [r0, #4]
str r2, [r0, #8]
add r0, sp, #0x70
str r3, [sp, #8]
str r2, [r0]
str r2, [r0, #4]
ldr r3, _02213928 ; =ov96_0221D214
add r5, r1, #0
str r2, [r0, #8]
ldmia r3!, {r0, r1}
add r6, sp, #0x64
stmia r6!, {r0, r1}
ldr r0, [r3]
ldr r3, _0221392C ; =ov96_0221D274
str r0, [r6]
ldmia r3!, {r0, r1}
add r6, sp, #0x58
stmia r6!, {r0, r1}
ldr r0, [r3]
ldr r3, _02213930 ; =ov96_0221D244
str r0, [r6]
ldmia r3!, {r0, r1}
add r6, sp, #0x4c
stmia r6!, {r0, r1}
ldr r0, [r3]
ldr r3, _02213934 ; =ov96_0221D22C
str r0, [r6]
ldmia r3!, {r0, r1}
add r6, sp, #0x40
stmia r6!, {r0, r1}
ldr r0, [r3]
ldr r4, [sp, #0xd0]
str r0, [r6]
str r2, [r4]
str r2, [r4, #4]
str r2, [r4, #8]
ldr r0, [r5]
asr r1, r0, #0xb
lsr r1, r1, #0x14
add r1, r0, r1
asr r0, r1, #0xc
str r0, [sp, #0x28]
ldr r0, [r5, #4]
asr r1, r0, #0xb
lsr r1, r1, #0x14
add r1, r0, r1
asr r0, r1, #0xc
str r0, [sp, #0x2c]
ldr r0, [r7]
asr r1, r0, #0xb
lsr r1, r1, #0x14
add r1, r0, r1
asr r0, r1, #0xc
str r0, [sp, #0x20]
ldr r0, [r7, #4]
asr r1, r0, #0xb
lsr r1, r1, #0x14
add r1, r0, r1
asr r0, r1, #0xc
str r0, [sp, #0x24]
mov r0, #7
ldr r1, [r7, #4]
lsl r0, r0, #0x10
cmp r1, r0
ldr r1, [r7]
bge _022137D6
mov r0, #2
lsl r0, r0, #0x12
cmp r1, r0
blt _022137E4
mov r2, #1
b _022137E4
_022137D6:
mov r0, #2
lsl r0, r0, #0x12
cmp r1, r0
bge _022137E2
mov r2, #2
b _022137E4
_022137E2:
mov r2, #3
_022137E4:
mov r6, #0
ldr r0, [sp, #8]
str r6, [sp, #0x14]
str r6, [sp, #0x10]
cmp r0, #0
bne _022137F2
b _02213942
_022137F2:
cmp r2, #3
bhi _0221388E
add r0, r2, r2
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02213802: ; jump table
.short _0221380A - _02213802 - 2 ; case 0
.short _0221382A - _02213802 - 2 ; case 1
.short _0221384C - _02213802 - 2 ; case 2
.short _0221386A - _02213802 - 2 ; case 3
_0221380A:
mov r0, #7
lsl r0, r0, #0x10
ldr r1, _02213938 ; =0xFFFE0000
str r0, [sp, #0x80]
mov r0, #6
lsl r0, r0, #0x10
str r0, [sp, #0x70]
asr r0, r1, #1
str r1, [sp, #0x7c]
str r0, [sp, #0x74]
add r0, sp, #0x64
add r1, sp, #0x88
bl VEC_Normalize
mov r6, #5
b _02213892
_0221382A:
mov r0, #0xa
lsl r0, r0, #0x10
str r0, [sp, #0x7c]
ldr r0, _0221393C ; =0xFFFF0000
add r1, sp, #0x88
str r0, [sp, #0x80]
mov r0, #0x12
lsl r0, r0, #0x10
str r0, [sp, #0x70]
mov r0, #7
lsl r0, r0, #0x10
str r0, [sp, #0x74]
add r0, sp, #0x58
bl VEC_Normalize
mov r6, #6
b _02213892
_0221384C:
mov r0, #0xe
lsl r0, r0, #0x10
mov r1, #6
lsl r1, r1, #0x10
str r0, [sp, #0x80]
ldr r0, _02213938 ; =0xFFFE0000
str r1, [sp, #0x7c]
str r0, [sp, #0x70]
str r1, [sp, #0x74]
add r0, sp, #0x4c
add r1, sp, #0x88
bl VEC_Normalize
mov r6, #7
b _02213892
_0221386A:
mov r0, #0x12
lsl r0, r0, #0x10
str r0, [sp, #0x7c]
mov r0, #6
lsl r0, r0, #0x10
str r0, [sp, #0x80]
mov r0, #0xa
lsl r0, r0, #0x10
str r0, [sp, #0x70]
mov r0, #0xe
lsl r0, r0, #0x10
str r0, [sp, #0x74]
add r0, sp, #0x40
add r1, sp, #0x88
bl VEC_Normalize
mov r6, #8
b _02213892
_0221388E:
bl GF_AssertFail
_02213892:
cmp r6, #0
beq _02213942
ldr r0, [sp, #4]
add r2, sp, #0x7c
lsl r0, r0, #0xc
str r0, [sp, #0xc]
add r1, sp, #0x88
add r3, r2, #0
bl VEC_MultAdd
add r2, sp, #0x70
ldr r0, [sp, #0xc]
add r1, sp, #0x88
add r3, r2, #0
bl VEC_MultAdd
ldr r1, [sp, #0x7c]
add r2, sp, #0x28
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
ldr r1, [sp, #0x80]
str r0, [sp, #0x38]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
ldr r1, [sp, #0x70]
str r0, [sp, #0x3c]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
ldr r1, [sp, #0x74]
str r0, [sp, #0x30]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0x34]
add r0, sp, #0x18
str r0, [sp]
add r0, sp, #0x38
add r1, sp, #0x30
add r3, sp, #0x20
bl sub_02020F4C
cmp r0, #0
beq _02213940
add r0, sp, #0x38
add r1, sp, #0x30
add r2, sp, #0x18
bl sub_02020E80
cmp r0, #0
bne _02213916
add r2, r5, #0
ldmia r2!, {r0, r1}
add r3, r4, #0
stmia r3!, {r0, r1}
ldr r0, [r2]
str r0, [r3]
mov r0, #1
str r0, [sp, #0x14]
b _02213922
_02213916:
ldr r0, [sp, #0x18]
lsl r0, r0, #0xc
str r0, [r4]
ldr r0, [sp, #0x1c]
lsl r0, r0, #0xc
str r0, [r4, #4]
_02213922:
mov r0, #1
str r0, [sp, #0x10]
b _02213942
.balign 4, 0
_02213928: .word ov96_0221D214
_0221392C: .word ov96_0221D274
_02213930: .word ov96_0221D244
_02213934: .word ov96_0221D22C
_02213938: .word 0xFFFE0000
_0221393C: .word 0xFFFF0000
_02213940:
mov r6, #0
_02213942:
mov r1, #7
ldr r0, [r7, #4]
lsl r1, r1, #0x10
cmp r0, r1
blt _0221394E
b _02213B28
_0221394E:
ldr r1, [sp, #4]
add r1, #0x10
lsl r2, r1, #0xc
cmp r0, r2
bge _02213974
ldr r0, [sp, #4]
mov r1, #0x10
sub r0, r1, r0
ldr r3, [r5, #4]
lsl r0, r0, #0xc
cmp r3, r0
bne _02213974
ldmia r5!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r5]
add sp, #0xb8
str r0, [r4]
mov r0, #3
pop {r3, r4, r5, r6, r7, pc}
_02213974:
mov r0, #2
lsl r0, r0, #0xe
str r0, [sp, #0xac]
mov r0, #0xf7
lsl r0, r0, #0xc
str r0, [sp, #0xa0]
str r2, [sp, #0xb0]
str r2, [sp, #0xa4]
add r0, sp, #0x94
str r0, [sp]
add r0, sp, #0xac
add r1, sp, #0xa0
add r2, r5, #0
add r3, r7, #0
bl ov96_02213D2C
cmp r0, #0
beq _022139EC
ldr r0, [sp, #0x14]
cmp r0, #0
beq _022139A4
add sp, #0xb8
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
_022139A4:
ldr r0, [sp, #0x10]
cmp r0, #0
beq _022139B8
ldr r1, [r4, #4]
ldr r0, [sp, #0x98]
cmp r1, r0
blt _022139B8
add sp, #0xb8
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
_022139B8:
ldr r0, [sp, #8]
cmp r0, #0
beq _022139DC
add r0, sp, #0x38
add r1, sp, #0x30
add r2, sp, #0x28
add r3, sp, #0x94
bl ov96_02213D00
cmp r0, #0
beq _022139DC
ldmia r5!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r5]
add sp, #0xb8
str r0, [r4]
mov r0, #3
pop {r3, r4, r5, r6, r7, pc}
_022139DC:
add r2, sp, #0x94
ldmia r2!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r2]
add sp, #0xb8
str r0, [r4]
mov r0, #3
pop {r3, r4, r5, r6, r7, pc}
_022139EC:
mov r1, #2
ldr r0, [r7]
lsl r1, r1, #0x12
cmp r0, r1
bge _02213A8E
ldr r1, [sp, #4]
add r1, #8
str r1, [sp, #4]
lsl r1, r1, #0xc
cmp r0, r1
bge _02213A16
ldr r0, [r5]
cmp r0, r1
bne _02213A16
ldmia r5!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r5]
add sp, #0xb8
str r0, [r4]
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02213A16:
mov r0, #0xb7
lsl r0, r0, #0xc
str r0, [sp, #0xb0]
mov r0, #1
lsl r0, r0, #0x10
str r0, [sp, #0xa4]
str r1, [sp, #0xac]
str r1, [sp, #0xa0]
add r0, sp, #0x94
str r0, [sp]
add r0, sp, #0xac
add r1, sp, #0xa0
add r2, r5, #0
add r3, r7, #0
bl ov96_02213D2C
cmp r0, #0
beq _02213AD2
ldr r0, [sp, #0x14]
cmp r0, #0
beq _02213A46
add sp, #0xb8
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
_02213A46:
ldr r0, [sp, #0x10]
cmp r0, #0
beq _02213A5A
ldr r1, [r4]
ldr r0, [sp, #0x94]
cmp r1, r0
blt _02213A5A
add sp, #0xb8
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
_02213A5A:
ldr r0, [sp, #8]
cmp r0, #0
beq _02213A7E
add r0, sp, #0x38
add r1, sp, #0x30
add r2, sp, #0x28
add r3, sp, #0x94
bl ov96_02213D00
cmp r0, #0
beq _02213A7E
ldmia r5!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r5]
add sp, #0xb8
str r0, [r4]
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02213A7E:
add r2, sp, #0x94
ldmia r2!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r2]
add sp, #0xb8
str r0, [r4]
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02213A8E:
ldr r1, [sp, #4]
mov r2, #0xf7
sub r1, r2, r1
lsl r1, r1, #0xc
cmp r0, r1
ble _02213AAE
ldr r0, [r5]
cmp r0, r1
bne _02213AAE
ldmia r5!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r5]
add sp, #0xb8
str r0, [r4]
mov r0, #2
pop {r3, r4, r5, r6, r7, pc}
_02213AAE:
mov r0, #1
lsl r0, r0, #0x10
str r0, [sp, #0xb0]
mov r0, #0xb7
lsl r0, r0, #0xc
str r0, [sp, #0xa4]
str r1, [sp, #0xac]
str r1, [sp, #0xa0]
add r0, sp, #0x94
str r0, [sp]
add r0, sp, #0xac
add r1, sp, #0xa0
add r2, r5, #0
add r3, r7, #0
bl ov96_02213D2C
cmp r0, #0
bne _02213AD4
_02213AD2:
b _02213CFA
_02213AD4:
ldr r0, [sp, #0x14]
cmp r0, #0
beq _02213AE0
add sp, #0xb8
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
_02213AE0:
ldr r0, [sp, #0x10]
cmp r0, #0
beq _02213AF4
ldr r1, [r4]
ldr r0, [sp, #0x94]
cmp r1, r0
bgt _02213AF4
add sp, #0xb8
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
_02213AF4:
ldr r0, [sp, #8]
cmp r0, #0
beq _02213B18
add r0, sp, #0x38
add r1, sp, #0x30
add r2, sp, #0x28
add r3, sp, #0x94
bl ov96_02213D00
cmp r0, #0
beq _02213B18
ldmia r5!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r5]
add sp, #0xb8
str r0, [r4]
mov r0, #2
pop {r3, r4, r5, r6, r7, pc}
_02213B18:
add r2, sp, #0x94
ldmia r2!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r2]
add sp, #0xb8
str r0, [r4]
mov r0, #2
pop {r3, r4, r5, r6, r7, pc}
_02213B28:
ldr r1, [sp, #4]
mov r2, #0xb7
sub r1, r2, r1
lsl r1, r1, #0xc
cmp r0, r1
ble _02213B48
ldr r0, [r5, #4]
cmp r0, r1
bne _02213B48
ldmia r5!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r5]
add sp, #0xb8
str r0, [r4]
mov r0, #4
pop {r3, r4, r5, r6, r7, pc}
_02213B48:
mov r0, #0xf7
lsl r0, r0, #0xc
str r0, [sp, #0xac]
mov r0, #2
lsl r0, r0, #0xe
str r0, [sp, #0xa0]
str r1, [sp, #0xb0]
str r1, [sp, #0xa4]
add r0, sp, #0x94
str r0, [sp]
add r0, sp, #0xac
add r1, sp, #0xa0
add r2, r5, #0
add r3, r7, #0
bl ov96_02213D2C
cmp r0, #0
beq _02213BC0
ldr r0, [sp, #0x14]
cmp r0, #0
beq _02213B78
add sp, #0xb8
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
_02213B78:
ldr r0, [sp, #0x10]
cmp r0, #0
beq _02213B8C
ldr r1, [r4, #4]
ldr r0, [sp, #0x98]
cmp r1, r0
bgt _02213B8C
add sp, #0xb8
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
_02213B8C:
ldr r0, [sp, #8]
cmp r0, #0
beq _02213BB0
add r0, sp, #0x38
add r1, sp, #0x30
add r2, sp, #0x28
add r3, sp, #0x94
bl ov96_02213D00
cmp r0, #0
beq _02213BB0
ldmia r5!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r5]
add sp, #0xb8
str r0, [r4]
mov r0, #4
pop {r3, r4, r5, r6, r7, pc}
_02213BB0:
add r2, sp, #0x94
ldmia r2!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r2]
add sp, #0xb8
str r0, [r4]
mov r0, #4
pop {r3, r4, r5, r6, r7, pc}
_02213BC0:
mov r1, #2
ldr r0, [r7]
lsl r1, r1, #0x12
cmp r0, r1
bge _02213C62
ldr r1, [sp, #4]
add r1, #8
str r1, [sp, #4]
lsl r1, r1, #0xc
cmp r0, r1
bge _02213BEA
ldr r0, [r5]
cmp r0, r1
bne _02213BEA
ldmia r5!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r5]
add sp, #0xb8
str r0, [r4]
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02213BEA:
mov r0, #0xb7
lsl r0, r0, #0xc
str r0, [sp, #0xb0]
mov r0, #1
lsl r0, r0, #0x10
str r0, [sp, #0xa4]
str r1, [sp, #0xac]
str r1, [sp, #0xa0]
add r0, sp, #0x94
str r0, [sp]
add r0, sp, #0xac
add r1, sp, #0xa0
add r2, r5, #0
add r3, r7, #0
bl ov96_02213D2C
cmp r0, #0
beq _02213CFA
ldr r0, [sp, #0x14]
cmp r0, #0
beq _02213C1A
add sp, #0xb8
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
_02213C1A:
ldr r0, [sp, #0x10]
cmp r0, #0
beq _02213C2E
ldr r1, [r4]
ldr r0, [sp, #0x94]
cmp r1, r0
blt _02213C2E
add sp, #0xb8
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
_02213C2E:
ldr r0, [sp, #8]
cmp r0, #0
beq _02213C52
add r0, sp, #0x38
add r1, sp, #0x30
add r2, sp, #0x28
add r3, sp, #0x94
bl ov96_02213D00
cmp r0, #0
beq _02213C52
ldmia r5!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r5]
add sp, #0xb8
str r0, [r4]
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02213C52:
add r2, sp, #0x94
ldmia r2!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r2]
add sp, #0xb8
str r0, [r4]
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02213C62:
ldr r1, [sp, #4]
mov r2, #0xf7
sub r1, r2, r1
lsl r1, r1, #0xc
cmp r0, r1
ble _02213C82
ldr r0, [r5]
cmp r0, r1
bne _02213C82
ldmia r5!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r5]
add sp, #0xb8
str r0, [r4]
mov r0, #2
pop {r3, r4, r5, r6, r7, pc}
_02213C82:
mov r0, #1
lsl r0, r0, #0x10
str r0, [sp, #0xb0]
mov r0, #0xb7
lsl r0, r0, #0xc
str r0, [sp, #0xa4]
str r1, [sp, #0xac]
str r1, [sp, #0xa0]
add r0, sp, #0x94
str r0, [sp]
add r0, sp, #0xac
add r1, sp, #0xa0
add r2, r5, #0
add r3, r7, #0
bl ov96_02213D2C
cmp r0, #0
beq _02213CFA
ldr r0, [sp, #0x14]
cmp r0, #0
beq _02213CB2
add sp, #0xb8
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
_02213CB2:
ldr r0, [sp, #0x10]
cmp r0, #0
beq _02213CC6
ldr r1, [r4]
ldr r0, [sp, #0x94]
cmp r1, r0
bgt _02213CC6
add sp, #0xb8
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
_02213CC6:
ldr r0, [sp, #8]
cmp r0, #0
beq _02213CEA
add r0, sp, #0x38
add r1, sp, #0x30
add r2, sp, #0x28
add r3, sp, #0x94
bl ov96_02213D00
cmp r0, #0
beq _02213CEA
ldmia r5!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r5]
add sp, #0xb8
str r0, [r4]
mov r0, #2
pop {r3, r4, r5, r6, r7, pc}
_02213CEA:
add r2, sp, #0x94
ldmia r2!, {r0, r1}
stmia r4!, {r0, r1}
ldr r0, [r2]
add sp, #0xb8
str r0, [r4]
mov r0, #2
pop {r3, r4, r5, r6, r7, pc}
_02213CFA:
add r0, r6, #0
add sp, #0xb8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_02213728
thumb_func_start ov96_02213D00
ov96_02213D00: ; 0x02213D00
push {r4, r5, lr}
sub sp, #0x14
ldr r5, [r3]
asr r4, r5, #0xb
lsr r4, r4, #0x14
add r4, r5, r4
asr r4, r4, #0xc
str r4, [sp, #0xc]
ldr r4, [r3, #4]
asr r3, r4, #0xb
lsr r3, r3, #0x14
add r3, r4, r3
asr r3, r3, #0xc
str r3, [sp, #0x10]
add r3, sp, #4
str r3, [sp]
add r3, sp, #0xc
bl sub_02020F4C
add sp, #0x14
pop {r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_02213D00
thumb_func_start ov96_02213D2C
ov96_02213D2C: ; 0x02213D2C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
add r5, r0, #0
add r6, r1, #0
add r1, sp, #0x2c
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
ldr r1, [r5]
add r4, r2, #0
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0x18]
ldr r1, [r5, #4]
add r7, r3, #0
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0x1c]
ldr r1, [r6]
add r2, sp, #8
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0x10]
ldr r1, [r6, #4]
add r3, sp, #0
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0x14]
ldr r1, [r4]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #8]
ldr r1, [r4, #4]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #0xc]
ldr r1, [r7]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp]
ldr r1, [r7, #4]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
str r0, [sp, #4]
add r0, sp, #0x18
add r1, sp, #0x10
bl sub_02020EB0
cmp r0, #0
bne _02213DB8
add sp, #0x38
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_02213DB8:
add r0, r6, #0
add r1, r5, #0
add r2, sp, #0x20
bl VEC_Subtract
add r0, sp, #0x20
add r1, r0, #0
bl VEC_Normalize
ldr r1, [r5, #4]
ldr r0, [r6, #4]
cmp r1, r0
bne _02213E10
ldr r0, [r4, #4]
sub r0, r1, r0
bpl _02213DDE
mov r2, #0
mvn r2, r2
mul r0, r2
_02213DDE:
ldr r2, [r7, #4]
sub r3, r1, r2
bpl _02213DEA
mov r2, #0
mvn r2, r2
mul r3, r2
_02213DEA:
cmp r3, #0
bne _02213DF4
add sp, #0x38
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_02213DF4:
ldr r2, [r4]
str r1, [sp, #0x30]
add r1, r0, r3
str r2, [sp, #0x2c]
bl FX_Div
ldr r3, [sp, #0x50]
add r1, sp, #0x20
add r2, sp, #0x2c
bl VEC_MultAdd
add sp, #0x38
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02213E10:
ldr r1, [r5]
ldr r0, [r6]
cmp r1, r0
bne _02213E56
ldr r0, [r4]
sub r0, r1, r0
bpl _02213E24
mov r2, #0
mvn r2, r2
mul r0, r2
_02213E24:
ldr r2, [r7]
sub r3, r1, r2
bpl _02213E30
mov r2, #0
mvn r2, r2
mul r3, r2
_02213E30:
cmp r3, #0
bne _02213E3A
add sp, #0x38
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_02213E3A:
str r1, [sp, #0x2c]
ldr r1, [r4, #4]
str r1, [sp, #0x30]
add r1, r0, r3
bl FX_Div
ldr r3, [sp, #0x50]
add r1, sp, #0x20
add r2, sp, #0x2c
bl VEC_MultAdd
add sp, #0x38
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02213E56:
bl GF_AssertFail
mov r0, #0
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_02213D2C
thumb_func_start ov96_02213E60
ov96_02213E60: ; 0x02213E60
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r7, r1, #0
ldr r1, _02213EB8 ; =0x0000066E
mov r4, #0
ldrb r6, [r0, r1]
add r3, r4, #0
add r2, sp, #0
add r1, #0x4c
_02213E72:
cmp r6, r3
beq _02213E86
ldrb r5, [r0, r1]
cmp r5, r3
beq _02213E86
add r5, r4, #0
add r4, r4, #1
lsl r4, r4, #0x18
lsr r4, r4, #0x18
strb r3, [r2, r5]
_02213E86:
add r3, r3, #1
cmp r3, #0xf
blt _02213E72
bl LCRandom
add r1, r4, #0
bl _s32_div_f
lsl r0, r1, #0x18
lsr r1, r0, #0x18
add r0, sp, #0
ldrb r0, [r0, r1]
ldr r1, _02213EBC ; =ov96_0221D438
lsl r2, r0, #2
ldrsh r1, [r1, r2]
lsl r1, r1, #0xc
str r1, [r7, #8]
ldr r1, _02213EC0 ; =ov96_0221D43A
ldrsh r1, [r1, r2]
lsl r1, r1, #0xc
str r1, [r7, #0xc]
add r7, #0x42
strb r0, [r7]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02213EB8: .word 0x0000066E
_02213EBC: .word ov96_0221D438
_02213EC0: .word ov96_0221D43A
thumb_func_end ov96_02213E60
thumb_func_start ov96_02213EC4
ov96_02213EC4: ; 0x02213EC4
push {r3, r4, r5, lr}
add r5, r0, #0
add r1, r5, #0
add r1, #0x39
ldrb r1, [r1]
cmp r1, #3
bne _02213F14
mov r0, #0x16
ldr r1, [r5, #0xc]
lsl r0, r0, #0xe
cmp r1, r0
bne _02213EE4
add r5, #0x43
ldrb r0, [r5]
add r0, #0xc0
b _02213F56
_02213EE4:
mov r0, #0x1a
lsl r0, r0, #0xe
cmp r1, r0
bne _02213EF4
add r5, #0x43
ldrb r0, [r5]
add r0, #0xc8
b _02213F56
_02213EF4:
mov r0, #0x1e
lsl r0, r0, #0xe
cmp r1, r0
bne _02213F04
add r5, #0x43
ldrb r0, [r5]
add r0, #0xd0
b _02213F56
_02213F04:
bl GF_AssertFail
ldr r1, [r5, #0xc]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
b _02213F56
_02213F14:
cmp r1, #1
bne _02213F4C
add r1, r5, #0
add r1, #0x3b
ldrb r1, [r1]
cmp r1, #0xc
bne _02213F2E
ldr r1, [r5, #0xc]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
b _02213F56
_02213F2E:
bl ov96_022143DC
add r5, #0x3b
add r4, r0, #0
ldrb r0, [r5]
mov r1, #3
bl _s32_div_f
add r1, r0, #0
lsl r1, r1, #0x18
add r0, r4, #0
lsr r1, r1, #0x18
bl ov96_02214394
b _02213F56
_02213F4C:
ldr r1, [r5, #0xc]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r0, r0, #0xc
_02213F56:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
pop {r3, r4, r5, pc}
thumb_func_end ov96_02213EC4
thumb_func_start ov96_02213F5C
ov96_02213F5C: ; 0x02213F5C
push {r4, lr}
add r4, r0, #0
cmp r4, #0xc0
bge _02213F68
lsl r0, r4, #0xc
pop {r4, pc}
_02213F68:
cmp r4, #0xd8
bge _02213FA0
sub r4, #0xc0
lsr r2, r4, #0x1f
lsl r1, r4, #0x1d
sub r1, r1, r2
mov r0, #0x1d
ror r1, r0
add r0, r2, r1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
cmp r4, #8
bge _02213F8A
ldr r0, _02213FB0 ; =ov96_0221DC80
ldrb r0, [r0, r1]
add r0, #0x58
b _02213F9C
_02213F8A:
cmp r4, #0x10
bge _02213F96
ldr r0, _02213FB0 ; =ov96_0221DC80
ldrb r0, [r0, r1]
add r0, #0x68
b _02213F9C
_02213F96:
ldr r0, _02213FB0 ; =ov96_0221DC80
ldrb r0, [r0, r1]
add r0, #0x78
_02213F9C:
lsl r0, r0, #0xc
pop {r4, pc}
_02213FA0:
cmp r4, #0xe8
bge _02213FA8
lsl r0, r4, #0xc
pop {r4, pc}
_02213FA8:
bl GF_AssertFail
lsl r0, r4, #0xc
pop {r4, pc}
.balign 4, 0
_02213FB0: .word ov96_0221DC80
thumb_func_end ov96_02213F5C
thumb_func_start ov96_02213FB4
ov96_02213FB4: ; 0x02213FB4
add r1, r0, #0
add r1, #0x5c
ldrh r1, [r1]
cmp r1, #4
bhi _02213FF2
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_02213FCA: ; jump table
.short _02213FF2 - _02213FCA - 2 ; case 0
.short _02213FD4 - _02213FCA - 2 ; case 1
.short _02213FE4 - _02213FCA - 2 ; case 2
.short _02213FEC - _02213FCA - 2 ; case 3
.short _02213FDC - _02213FCA - 2 ; case 4
_02213FD4:
mov r1, #4
add r0, #0x5c
strh r1, [r0]
bx lr
_02213FDC:
mov r1, #2
add r0, #0x5c
strh r1, [r0]
bx lr
_02213FE4:
mov r1, #3
add r0, #0x5c
strh r1, [r0]
bx lr
_02213FEC:
mov r1, #1
add r0, #0x5c
strh r1, [r0]
_02213FF2:
bx lr
thumb_func_end ov96_02213FB4
thumb_func_start ov96_02213FF4
ov96_02213FF4: ; 0x02213FF4
push {r3, lr}
cmp r3, #0xc0
bge _02214004
add r1, r0, r1
ldr r0, _02214038 ; =0x000007B4
mov r2, #0
strb r2, [r1, r0]
pop {r3, pc}
_02214004:
cmp r3, #0xd8
bge _0221402E
ldr r3, _02214038 ; =0x000007B4
add r3, r0, r3
ldrb r0, [r3, r1]
cmp r0, #0
bne _02214036
mov r0, #1
strb r0, [r3, r1]
cmp r1, #0
bne _02214026
cmp r2, #0
beq _02214026
ldr r0, _0221403C ; =0x000008CA
bl PlaySE
pop {r3, pc}
_02214026:
ldr r0, _02214040 ; =0x000008C9
bl PlaySE
pop {r3, pc}
_0221402E:
add r1, r0, r1
ldr r0, _02214038 ; =0x000007B4
mov r2, #0
strb r2, [r1, r0]
_02214036:
pop {r3, pc}
.balign 4, 0
_02214038: .word 0x000007B4
_0221403C: .word 0x000008CA
_02214040: .word 0x000008C9
thumb_func_end ov96_02213FF4
thumb_func_start ov96_02214044
ov96_02214044: ; 0x02214044
push {r4, r5, r6, r7, lr}
sub sp, #0x14
str r1, [sp, #0x10]
add r5, r0, #0
ldr r0, [sp, #0x10]
add r4, r5, #0
add r4, #0x18
lsl r7, r0, #4
add r0, r4, r7
mov r1, #0
add r6, r2, #0
bl FillWindowPixelBuffer
cmp r6, #0
beq _022140A2
cmp r6, #2
bne _0221406C
ldr r0, _022140E0 ; =0x000007B8
ldr r2, [r5, r0]
b _0221408A
_0221406C:
cmp r6, #1
bne _02214076
ldr r0, _022140E4 ; =0x000007BC
ldr r2, [r5, r0]
b _0221408A
_02214076:
cmp r6, #3
bne _02214082
mov r0, #0x1f
lsl r0, r0, #6
ldr r2, [r5, r0]
b _0221408A
_02214082:
bl GF_AssertFail
ldr r0, _022140E0 ; =0x000007B8
ldr r2, [r5, r0]
_0221408A:
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _022140E8 ; =0x00010200
mov r1, #4
str r0, [sp, #8]
add r0, r4, r7
str r3, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
b _022140D4
_022140A2:
ldr r0, [sp, #0x10]
add r1, r5, r0
ldr r0, _022140EC ; =0x00000818
ldrb r0, [r1, r0]
cmp r0, #0
beq _022140B4
mov r1, #0xc1
lsl r1, r1, #0xa
b _022140B6
_022140B4:
ldr r1, _022140E8 ; =0x00010200
_022140B6:
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
str r1, [sp, #8]
str r3, [sp, #0xc]
ldr r2, [sp, #0x10]
add r0, r4, r7
lsl r2, r2, #2
add r5, r5, r2
ldr r2, _022140F0 ; =0x000007C4
mov r1, #4
ldr r2, [r5, r2]
bl AddTextPrinterParameterizedWithColor
_022140D4:
add r0, r4, r7
bl CopyWindowToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
_022140E0: .word 0x000007B8
_022140E4: .word 0x000007BC
_022140E8: .word 0x00010200
_022140EC: .word 0x00000818
_022140F0: .word 0x000007C4
thumb_func_end ov96_02214044
thumb_func_start ov96_022140F4
ov96_022140F4: ; 0x022140F4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
str r0, [sp, #8]
bl ov96_021E5DC4
add r5, r0, #0
ldr r2, _02214198 ; =0x00000135
ldr r3, [r5, #0x58]
mov r0, #1
mov r1, #0x1b
bl NewMsgDataFromNarc
str r0, [sp, #0xc]
ldr r0, [r5, #0x58]
bl MessageFormat_New
add r7, r0, #0
ldr r0, [sp, #0xc]
ldr r1, _0221419C ; =0x00000133
bl NewString_ReadMsgData
ldr r1, _022141A0 ; =0x000007B8
str r0, [r5, r1]
mov r1, #0x4d
ldr r0, [sp, #0xc]
lsl r1, r1, #2
bl NewString_ReadMsgData
ldr r1, _022141A4 ; =0x000007BC
str r0, [r5, r1]
ldr r0, [sp, #0xc]
ldr r1, _02214198 ; =0x00000135
bl NewString_ReadMsgData
mov r1, #0x1f
lsl r1, r1, #6
str r0, [r5, r1]
mov r4, #0
_02214140:
ldr r0, [sp, #8]
add r1, r4, #0
bl ov96_021E5F34
ldr r1, [r5, #0x58]
bl PlayerProfile_GetPlayerName_NewString
add r6, r0, #0
mov r0, #1
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
add r0, r7, #0
mov r1, #0
add r2, r6, #0
mov r3, #2
bl BufferString
ldr r1, [sp, #0xc]
ldr r2, _022141A8 ; =0x00000132
ldr r3, [r5, #0x58]
add r0, r7, #0
bl ReadMsgData_ExpandPlaceholders
lsl r1, r4, #2
add r2, r5, r1
ldr r1, _022141AC ; =0x000007C4
str r0, [r2, r1]
add r0, r6, #0
bl String_Delete
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #4
blo _02214140
add r0, r7, #0
bl MessageFormat_Delete
ldr r0, [sp, #0xc]
bl DestroyMsgData
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02214198: .word 0x00000135
_0221419C: .word 0x00000133
_022141A0: .word 0x000007B8
_022141A4: .word 0x000007BC
_022141A8: .word 0x00000132
_022141AC: .word 0x000007C4
thumb_func_end ov96_022140F4
thumb_func_start ov96_022141B0
ov96_022141B0: ; 0x022141B0
push {r4, r5, r6, lr}
bl ov96_021E5DC4
add r5, r0, #0
ldr r0, _022141EC ; =0x000007B8
ldr r0, [r5, r0]
bl String_Delete
ldr r0, _022141F0 ; =0x000007BC
ldr r0, [r5, r0]
bl String_Delete
mov r0, #0x1f
lsl r0, r0, #6
ldr r0, [r5, r0]
bl String_Delete
ldr r6, _022141F4 ; =0x000007C4
mov r4, #0
_022141D6:
lsl r0, r4, #2
add r0, r5, r0
ldr r0, [r0, r6]
bl String_Delete
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #4
blo _022141D6
pop {r4, r5, r6, pc}
.balign 4, 0
_022141EC: .word 0x000007B8
_022141F0: .word 0x000007BC
_022141F4: .word 0x000007C4
thumb_func_end ov96_022141B0
thumb_func_start ov96_022141F8
ov96_022141F8: ; 0x022141F8
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
ldr r0, _0221422C ; =0x000007D4
mov r4, #0
add r7, r6, r0
_02214202:
lsl r1, r4, #4
mov r0, #0
add r5, r7, r1
strb r0, [r7, r1]
strb r4, [r5, #1]
strb r0, [r5, #2]
sub r0, r0, #1
strb r0, [r5, #3]
ldr r0, _02214230 ; =ov96_02214278
str r6, [r5, #8]
add r1, r5, #0
mov r2, #1
bl CreateSysTask
str r0, [r5, #4]
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #4
blo _02214202
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0221422C: .word 0x000007D4
_02214230: .word ov96_02214278
thumb_func_end ov96_022141F8
thumb_func_start ov96_02214234
ov96_02214234: ; 0x02214234
push {r4, r5, r6, lr}
ldr r6, _02214254 ; =0x000007D8
add r5, r0, #0
mov r4, #0
_0221423C:
lsl r0, r4, #4
add r0, r5, r0
ldr r0, [r0, r6]
bl DestroySysTask
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #4
blo _0221423C
pop {r4, r5, r6, pc}
nop
_02214254: .word 0x000007D8
thumb_func_end ov96_02214234
thumb_func_start ov96_02214258
ov96_02214258: ; 0x02214258
push {r4, r5}
lsl r1, r1, #4
add r4, r0, r1
ldr r1, _02214274 ; =0x000007D4
mov r5, #1
add r0, r1, #0
strb r5, [r4, r1]
add r0, #0xe
strb r2, [r4, r0]
add r1, #0xf
strb r3, [r4, r1]
pop {r4, r5}
bx lr
nop
_02214274: .word 0x000007D4
thumb_func_end ov96_02214258
thumb_func_start ov96_02214278
ov96_02214278: ; 0x02214278
push {r3, r4, r5, lr}
sub sp, #0x10
add r4, r1, #0
ldrb r0, [r4]
cmp r0, #0
bne _02214286
b _0221438C
_02214286:
cmp r0, #1
beq _02214292
cmp r0, #2
beq _022142CE
add sp, #0x10
pop {r3, r4, r5, pc}
_02214292:
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _022142B4
ldrb r0, [r4, #0xf]
cmp r0, #0
ldr r0, [r4, #8]
beq _022142AA
ldrb r1, [r4, #1]
mov r2, #1
bl ov96_02214044
b _022142BE
_022142AA:
ldrb r1, [r4, #1]
mov r2, #2
bl ov96_02214044
b _022142BE
_022142B4:
ldrb r1, [r4, #1]
ldr r0, [r4, #8]
mov r2, #3
bl ov96_02214044
_022142BE:
mov r0, #0
strb r0, [r4, #2]
strb r0, [r4, #0xd]
strb r0, [r4, #0xc]
mov r0, #2
add sp, #0x10
strb r0, [r4]
pop {r3, r4, r5, pc}
_022142CE:
ldrb r0, [r4, #2]
add r0, r0, #1
strb r0, [r4, #2]
ldrb r0, [r4, #2]
cmp r0, #0x1e
bls _02214318
mov r0, #8
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
mov r1, #1
str r1, [sp, #8]
ldrb r2, [r4, #1]
ldr r0, [r4, #8]
mov r3, #0
lsl r2, r2, #0x1b
ldr r0, [r0, #4]
lsr r2, r2, #0x18
bl BgTilemapRectChangePalette
ldr r0, [r4, #8]
mov r1, #1
ldr r0, [r0, #4]
bl ScheduleBgTilemapBufferTransfer
ldrb r1, [r4, #1]
ldr r0, [r4, #8]
mov r2, #0
bl ov96_02214044
mov r0, #0
mvn r0, r0
strb r0, [r4, #3]
mov r0, #0
add sp, #0x10
strb r0, [r4]
pop {r3, r4, r5, pc}
_02214318:
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _02214388
ldr r3, _02214390 ; =ov96_0221D1F4
add r1, sp, #0xc
ldrb r0, [r3, #2]
add r2, sp, #0xc
add r1, #2
strb r0, [r2, #2]
ldrb r0, [r3, #3]
strb r0, [r2, #3]
ldrb r5, [r3]
add r0, sp, #0xc
strb r5, [r2]
ldrb r3, [r3, #1]
strb r3, [r2, #1]
ldrb r2, [r4, #0xd]
add r2, r2, #1
lsr r5, r2, #0x1f
lsl r3, r2, #0x1f
sub r3, r3, r5
mov r2, #0x1f
ror r3, r2
add r2, r5, r3
strb r2, [r4, #0xd]
mov r2, #5
strb r2, [r4, #0xc]
ldrb r2, [r4, #0xe]
cmp r2, #0
beq _0221435A
ldrb r0, [r4, #0xd]
ldrb r1, [r1, r0]
b _0221435E
_0221435A:
ldrb r1, [r4, #0xd]
ldrb r1, [r0, r1]
_0221435E:
mov r0, #8
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
str r1, [sp, #8]
ldrb r2, [r4, #1]
ldr r0, [r4, #8]
mov r1, #1
lsl r2, r2, #0x1b
ldr r0, [r0, #4]
lsr r2, r2, #0x18
mov r3, #0
bl BgTilemapRectChangePalette
ldr r0, [r4, #8]
mov r1, #1
ldr r0, [r0, #4]
bl ScheduleBgTilemapBufferTransfer
add sp, #0x10
pop {r3, r4, r5, pc}
_02214388:
sub r0, r0, #1
strb r0, [r4, #0xc]
_0221438C:
add sp, #0x10
pop {r3, r4, r5, pc}
.balign 4, 0
_02214390: .word ov96_0221D1F4
thumb_func_end ov96_02214278
thumb_func_start ov96_02214394
ov96_02214394: ; 0x02214394
push {r3, lr}
cmp r0, #3
bhi _022143BE
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_022143A6: ; jump table
.short _022143AE - _022143A6 - 2 ; case 0
.short _022143B2 - _022143A6 - 2 ; case 1
.short _022143B6 - _022143A6 - 2 ; case 2
.short _022143BA - _022143A6 - 2 ; case 3
_022143AE:
mov r0, #0xd8
b _022143C6
_022143B2:
mov r0, #0xdc
b _022143C6
_022143B6:
mov r0, #0xe0
b _022143C6
_022143BA:
mov r0, #0xe4
b _022143C6
_022143BE:
bl GF_AssertFail
mov r0, #0
pop {r3, pc}
_022143C6:
cmp r1, #4
blo _022143D2
bl GF_AssertFail
mov r0, #0
pop {r3, pc}
_022143D2:
add r0, r0, r1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_02214394
thumb_func_start ov96_022143DC
ov96_022143DC: ; 0x022143DC
add r2, r0, #0
ldr r1, [r2, #8]
ldr r2, [r2, #0xc]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
ldr r3, _022143F8 ; =ov96_022143FC
asr r0, r0, #0xc
asr r1, r1, #0xc
bx r3
nop
_022143F8: .word ov96_022143FC
thumb_func_end ov96_022143DC
thumb_func_start ov96_022143FC
ov96_022143FC: ; 0x022143FC
cmp r0, #0x80
bge _0221440C
cmp r1, #0x70
bge _02214408
mov r0, #0
bx lr
_02214408:
mov r0, #2
bx lr
_0221440C:
cmp r1, #0x70
bge _02214414
mov r0, #1
bx lr
_02214414:
mov r0, #3
bx lr
thumb_func_end ov96_022143FC
thumb_func_start ov96_02214418
ov96_02214418: ; 0x02214418
push {r4, r5, r6, r7}
ldr r1, _02214484 ; =0x00000738
mov r5, #0
ldr r2, [r0, r1]
mov r1, #0x4b
lsl r1, r1, #2
cmp r2, r1
bgt _0221443E
ldr r1, _02214488 ; =0x00000818
add r3, r5, #0
_0221442C:
add r2, r0, r5
strb r3, [r2, r1]
add r2, r5, #1
lsl r2, r2, #0x18
lsr r5, r2, #0x18
cmp r5, #4
blo _0221442C
pop {r4, r5, r6, r7}
bx lr
_0221443E:
ldr r2, _0221448C ; =0x00000814
add r3, r5, #0
_02214442:
add r1, r0, r3
ldrb r1, [r1, r2]
cmp r5, r1
bhs _0221444C
add r5, r1, #0
_0221444C:
add r1, r3, #1
lsl r1, r1, #0x18
lsr r3, r1, #0x18
cmp r3, #4
blo _02214442
mov r6, #0
ldr r1, _0221448C ; =0x00000814
add r2, r6, #0
mov r3, #1
_0221445E:
cmp r5, #0
beq _02214470
add r4, r0, r6
ldrb r7, [r4, r1]
cmp r5, r7
bne _02214470
ldr r7, _02214488 ; =0x00000818
strb r3, [r4, r7]
b _02214476
_02214470:
ldr r4, _02214488 ; =0x00000818
add r7, r0, r6
strb r2, [r7, r4]
_02214476:
add r4, r6, #1
lsl r4, r4, #0x18
lsr r6, r4, #0x18
cmp r6, #4
blo _0221445E
pop {r4, r5, r6, r7}
bx lr
.balign 4, 0
_02214484: .word 0x00000738
_02214488: .word 0x00000818
_0221448C: .word 0x00000814
thumb_func_end ov96_02214418
thumb_func_start ov96_02214490
ov96_02214490: ; 0x02214490
push {r3, r4, r5, r6, r7, lr}
mov r4, #0
ldr r6, _022144BC ; =0x000007D4
add r5, r0, #0
add r7, r4, #0
_0221449A:
lsl r0, r4, #4
add r0, r5, r0
ldrb r0, [r0, r6]
cmp r0, #0
bne _022144AE
add r0, r5, #0
add r1, r4, #0
add r2, r7, #0
bl ov96_02214044
_022144AE:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #4
blo _0221449A
pop {r3, r4, r5, r6, r7, pc}
nop
_022144BC: .word 0x000007D4
thumb_func_end ov96_02214490
thumb_func_start ov96_022144C0
ov96_022144C0: ; 0x022144C0
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r6, r1, #0
mov r5, #0
add r4, sp, #0xc
mov r7, #0x7c
_022144CC:
lsl r2, r5, #3
add r1, r6, r5
str r1, [r4, r2]
add r1, r5, #0
mul r1, r7
add r3, r4, r2
add r1, r0, r1
str r1, [r3, #4]
add r1, r5, #1
lsl r1, r1, #0x18
lsr r5, r1, #0x18
cmp r5, #3
blo _022144CC
ldr r0, [sp, #0xc]
ldrb r1, [r0]
ldr r0, [sp, #0x14]
ldrb r0, [r0]
cmp r1, r0
blo _022144F8
add r0, r4, #0
add r4, sp, #0x14
b _022144FA
_022144F8:
add r0, sp, #0x14
_022144FA:
ldr r1, [sp, #0x1c]
ldrb r2, [r1]
ldr r1, [r0]
ldrb r1, [r1]
cmp r1, r2
blo _02214522
ldr r1, [r4]
ldrb r1, [r1]
cmp r1, r2
blo _02214518
str r0, [sp]
add r0, sp, #0x1c
str r4, [sp, #4]
str r0, [sp, #8]
b _0221452A
_02214518:
str r0, [sp]
add r0, sp, #0x1c
str r0, [sp, #4]
str r4, [sp, #8]
b _0221452A
_02214522:
add r1, sp, #0x1c
str r1, [sp]
str r0, [sp, #4]
str r4, [sp, #8]
_0221452A:
mov r5, #0
add r4, sp, #0
_0221452E:
lsl r0, r5, #2
ldr r0, [r4, r0]
add r1, r5, #0
ldr r0, [r0, #4]
add r1, #8
ldr r0, [r0]
bl ov96_021EABA8
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #3
blo _0221452E
add sp, #0x24
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_022144C0
thumb_func_start ov96_0221454C
ov96_0221454C: ; 0x0221454C
ldrh r3, [r1, #2]
ldrh r2, [r0, #2]
cmp r2, r3
bls _0221455A
mov r0, #0
mvn r0, r0
bx lr
_0221455A:
cmp r2, r3
bhs _02214562
mov r0, #1
bx lr
_02214562:
ldrh r1, [r1]
ldrh r0, [r0]
cmp r0, r1
bhs _02214570
mov r0, #0
mvn r0, r0
bx lr
_02214570:
cmp r0, r1
bls _02214578
mov r0, #1
bx lr
_02214578:
mov r0, #0
bx lr
thumb_func_end ov96_0221454C
thumb_func_start ov96_0221457C
ov96_0221457C: ; 0x0221457C
push {r4, r5, r6, r7, lr}
sub sp, #0x2c
mov r5, #0
str r0, [sp, #4]
add r6, r1, #0
add r7, r2, #0
add r4, r5, #0
_0221458A:
add r0, r4, #0
mov r1, #3
bl _s32_div_f
cmp r0, r7
beq _022145AC
lsl r0, r5, #2
add r1, sp, #8
add r2, sp, #8
add r1, r1, r0
strh r4, [r2, r0]
add r0, r6, r4
ldrb r0, [r0, #0xc]
strh r0, [r1, #2]
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
_022145AC:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #0xc
blo _0221458A
ldr r1, _02214610 ; =0x0000081C
ldr r0, [sp, #4]
ldr r3, _02214614 ; =ov96_0221454C
ldr r0, [r0, r1]
mov r1, #9
str r0, [sp]
add r0, sp, #8
mov r2, #4
bl MATH_QSort
mov r5, #0
add r7, sp, #8
_022145CE:
lsl r0, r5, #2
ldrh r0, [r7, r0]
mov r1, #3
lsl r0, r0, #0x18
lsr r6, r0, #0x18
add r0, r6, #0
bl _s32_div_f
add r4, r0, #0
add r0, r6, #0
mov r1, #3
bl _s32_div_f
mov r0, #0x5d
mov r2, #0x7c
lsl r0, r0, #2
mul r2, r1
ldr r1, [sp, #4]
mul r0, r4
add r0, r1, r0
add r0, r2, r0
add r1, r5, #0
ldr r0, [r0, #0x5c]
add r1, #0x10
bl ov96_021EABA8
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #9
blo _022145CE
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02214610: .word 0x0000081C
_02214614: .word ov96_0221454C
thumb_func_end ov96_0221457C
thumb_func_start ov96_02214618
ov96_02214618: ; 0x02214618
push {r4, r5, r6, lr}
add r5, r0, #0
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
add r0, r5, #0
bl ov96_021E5DC4
add r6, r0, #0
mov r0, #0x75
lsl r0, r0, #4
ldr r0, [r6, r0]
bl ov96_02214904
add r4, r0, #0
add r0, r5, #0
add r1, r4, #0
bl ov96_021E8318
add r0, r6, #0
add r1, r4, #0
bl ov96_022136A4
pop {r4, r5, r6, pc}
thumb_func_end ov96_02214618
thumb_func_start ov96_0221464C
ov96_0221464C: ; 0x0221464C
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
mov r1, #0x50
add r5, r0, #0
add r7, r2, #0
bl AllocFromHeap
add r4, r0, #0
mov r1, #0
mov r2, #0x50
bl MI_CpuFill8
str r5, [r4]
str r6, [r4, #0x10]
add r0, r4, #0
str r7, [r4, #4]
bl ov96_022148A4
ldr r2, _0221468C ; =0x00000135
mov r0, #1
mov r1, #0x1b
add r3, r5, #0
bl NewMsgDataFromNarc
str r0, [r4, #0x34]
add r0, r5, #0
bl MessageFormat_New
str r0, [r4, #0x38]
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_0221468C: .word 0x00000135
thumb_func_end ov96_0221464C
thumb_func_start ov96_02214690
ov96_02214690: ; 0x02214690
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x40]
bl FreeToHeap
ldr r0, [r4, #0x38]
bl MessageFormat_Delete
ldr r0, [r4, #0x34]
bl DestroyMsgData
add r0, r4, #0
add r0, #0x14
bl RemoveWindow
add r0, r4, #0
add r0, #0x24
bl RemoveWindow
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02214690
thumb_func_start ov96_022146C0
ov96_022146C0: ; 0x022146C0
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #8
str r0, [sp, #0xc]
ldr r2, [r4, #0x10]
mov r0, #0xec
mov r3, #5
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #9
str r0, [sp, #0xc]
ldr r2, [r4, #0x10]
mov r0, #0xec
mov r3, #6
bl GfGfxLoader_LoadScrnData
ldr r0, [r4]
add r3, r4, #0
str r0, [sp]
mov r0, #0xec
mov r1, #0xa
mov r2, #0
add r3, #0x3c
bl GfGfxLoader_GetScrnData
str r0, [r4, #0x40]
add r0, r4, #0
mov r1, #0
bl ov96_0221497C
add sp, #0x10
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_022146C0
thumb_func_start ov96_02214718
ov96_02214718: ; 0x02214718
push {r4, r5, r6, r7, lr}
sub sp, #0x2c
ldr r3, _022147EC ; =ov96_0221D660
str r2, [sp, #4]
add r7, r0, #0
add r6, r1, #0
ldmia r3!, {r0, r1}
add r2, sp, #0x20
stmia r2!, {r0, r1}
ldr r0, [r3]
ldr r3, _022147F0 ; =ov96_0221D66C
str r0, [r2]
ldmia r3!, {r0, r1}
add r2, sp, #0x14
stmia r2!, {r0, r1}
ldr r0, [r3]
mov r1, #0
str r0, [r2]
mov r0, #9
str r0, [sp]
add r0, r7, #0
mov r2, #2
mov r3, #0x66
bl ov96_021EB3E4
mov r1, #1
add r4, r0, #0
add r2, r1, #0
bl ov96_021EB52C
add r0, r4, #0
add r1, sp, #0x20
bl ov96_021EB588
ldr r0, [r6, #4]
bl ov96_021E5F24
add r1, r0, #0
add r0, r4, #0
add r1, r1, #1
bl ov96_021EB564
mov r0, #0xa
str r0, [sp]
add r0, r7, #0
mov r1, #0
mov r2, #2
mov r3, #0x66
bl ov96_021EB3E4
mov r1, #1
add r4, r0, #0
add r2, r1, #0
bl ov96_021EB52C
add r0, r4, #0
add r1, sp, #0x14
bl ov96_021EB588
add r0, r4, #0
mov r1, #5
bl ov96_021EB564
str r4, [r6, #0x4c]
mov r4, #0
_0221479A:
lsl r0, r4, #2
add r5, r6, r0
add r0, r7, #0
bl ov96_021EB5E8
add r1, r0, #0
ldr r0, [sp, #4]
ldr r3, [r6]
mov r2, #0
bl ov96_021EA2C4
mov r1, #1
str r0, [r5, #8]
bl Set2dSpriteVisibleFlag
ldr r0, _022147F4 ; =ov96_0221D648
add r1, sp, #8
ldrb r0, [r0, r4]
lsl r0, r0, #0xc
str r0, [sp, #8]
mov r0, #0xa
lsl r0, r0, #0x12
str r0, [sp, #0xc]
mov r0, #0
str r0, [sp, #0x10]
ldr r0, [r5, #8]
bl Sprite_SetMatrix
ldr r1, _022147F8 ; =ov96_0221D64C
ldr r0, [r5, #8]
ldrb r1, [r1, r4]
bl Set2dSpriteAnimSeqNo
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #2
blo _0221479A
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
nop
_022147EC: .word ov96_0221D660
_022147F0: .word ov96_0221D66C
_022147F4: .word ov96_0221D648
_022147F8: .word ov96_0221D64C
thumb_func_end ov96_02214718
thumb_func_start ov96_022147FC
ov96_022147FC: ; 0x022147FC
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
add r0, #0x14
mov r1, #0
bl FillWindowPixelBuffer
ldr r0, [r5, #4]
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r1, r0, #0x18
ldr r0, [r5, #4]
bl ov96_021E5F34
ldr r1, [r5]
bl PlayerProfile_GetPlayerName_NewString
mov r1, #0
add r4, r0, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _02214850 ; =0x000F0E00
add r2, r4, #0
str r0, [sp, #8]
add r0, r5, #0
add r0, #0x14
add r3, r1, #0
str r1, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r4, #0
bl String_Delete
add r5, #0x14
add r0, r5, #0
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, pc}
nop
_02214850: .word 0x000F0E00
thumb_func_end ov96_022147FC
thumb_func_start ov96_02214854
ov96_02214854: ; 0x02214854
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
add r0, #0x24
mov r1, #0
bl FillWindowPixelBuffer
ldr r0, [r5, #0x38]
ldr r1, [r5, #0x34]
ldr r2, _0221489C ; =0x00000137
ldr r3, [r5]
bl ReadMsgData_ExpandPlaceholders
mov r1, #0
add r4, r0, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _022148A0 ; =0x000F0E00
add r2, r4, #0
str r0, [sp, #8]
add r0, r5, #0
add r0, #0x24
add r3, r1, #0
str r1, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r4, #0
bl String_Delete
add r5, #0x24
add r0, r5, #0
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, pc}
.balign 4, 0
_0221489C: .word 0x00000137
_022148A0: .word 0x000F0E00
thumb_func_end ov96_02214854
thumb_func_start ov96_022148A4
ov96_022148A4: ; 0x022148A4
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
add r1, r4, #0
ldr r0, [r4, #0x10]
ldr r2, _022148E0 ; =ov96_0221D650
add r1, #0x14
bl AddWindow
add r1, r4, #0
ldr r0, [r4, #0x10]
ldr r2, _022148E4 ; =ov96_0221D658
add r1, #0x24
bl AddWindow
mov r2, #0
str r2, [sp]
ldr r0, [r4, #0x10]
mov r1, #4
mov r3, #1
bl BG_FillCharDataRange
mov r1, #0x1e
ldr r2, [r4]
mov r0, #4
lsl r1, r1, #4
bl LoadFontPal0
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
_022148E0: .word ov96_0221D650
_022148E4: .word ov96_0221D658
thumb_func_end ov96_022148A4
thumb_func_start ov96_022148E8
ov96_022148E8: ; 0x022148E8
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5, #4]
add r4, r1, #0
add r6, r2, #0
bl ov96_021E5F24
cmp r6, r0
bne _02214902
ldr r0, [r5, #0x44]
cmp r0, r4
beq _02214902
str r4, [r5, #0x44]
_02214902:
pop {r4, r5, r6, pc}
thumb_func_end ov96_022148E8
thumb_func_start ov96_02214904
ov96_02214904: ; 0x02214904
ldr r0, [r0, #0x44]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bx lr
thumb_func_end ov96_02214904
thumb_func_start ov96_0221490C
ov96_0221490C: ; 0x0221490C
push {r3, r4, r5, lr}
add r5, r0, #0
mov r0, #0xe1
lsl r0, r0, #2
cmp r1, r0
bgt _02214944
ldr r0, [r5, #8]
mov r1, #0
bl Set2dSpriteVisibleFlag
ldr r0, [r5, #0xc]
mov r1, #0
bl Set2dSpriteVisibleFlag
ldr r0, [r5, #0x4c]
mov r1, #1
mov r2, #0
bl ov96_021EB52C
ldr r0, [r5, #0x48]
cmp r0, #0
bne _0221497A
add r0, r5, #0
bl ov96_02214854
mov r0, #1
str r0, [r5, #0x48]
pop {r3, r4, r5, pc}
_02214944:
add r0, r1, #0
mov r1, #0x1e
bl _s32_div_f
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
add r1, r0, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r5, #8]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r0, [r5, #0xc]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
_0221497A:
pop {r3, r4, r5, pc}
thumb_func_end ov96_0221490C
thumb_func_start ov96_0221497C
ov96_0221497C: ; 0x0221497C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
add r6, r1, #0
add r5, r0, #0
add r0, r6, #0
mov r1, #0xa
bl _s32_div_f
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #2]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0]
add r0, r6, #0
mov r1, #0xa
bl _s32_div_f
lsl r0, r1, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #3]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0, #1]
mov r4, #0
mov r6, #4
mov r7, #8
_022149DA:
str r6, [sp]
str r7, [sp, #4]
ldr r0, [r5, #0x3c]
lsl r2, r4, #2
add r0, #0xc
str r0, [sp, #8]
add r0, sp, #0x1c
add r0, #2
ldrb r0, [r0, r4]
add r2, r2, #6
lsl r2, r2, #0x18
str r0, [sp, #0xc]
add r0, sp, #0x1c
ldrb r0, [r0, r4]
mov r1, #6
lsr r2, r2, #0x18
str r0, [sp, #0x10]
mov r0, #0x14
str r0, [sp, #0x14]
mov r0, #0x10
str r0, [sp, #0x18]
ldr r0, [r5, #0x10]
mov r3, #0xa
bl CopyRectToBgTilemapRect
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #2
blo _022149DA
ldr r0, [r5, #0x10]
mov r1, #6
bl ScheduleBgTilemapBufferTransfer
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0221497C
thumb_func_start ov96_02214A24
ov96_02214A24: ; 0x02214A24
push {r3, r4, r5, lr}
add r5, r1, #0
mov r1, #0xa0
bl AllocFromHeap
add r4, r0, #0
mov r1, #0
mov r2, #0xa0
bl MI_CpuFill8
add r0, r4, #0
add r0, #0x98
strb r5, [r0]
mov r0, #4
sub r1, r0, r5
add r0, r4, #0
add r0, #0x9e
strb r1, [r0]
add r0, r4, #0
add r0, #0x9e
ldrb r1, [r0]
add r0, r4, #0
add r0, #0x9d
strb r1, [r0]
add r0, r4, #0
mov r1, #3
add r0, #0x9b
strb r1, [r0]
add r0, r4, #0
add r0, #0x9b
ldrb r1, [r0]
add r0, r4, #0
add r0, #0x9a
strb r1, [r0]
add r0, r4, #0
pop {r3, r4, r5, pc}
thumb_func_end ov96_02214A24
thumb_func_start ov96_02214A6C
ov96_02214A6C: ; 0x02214A6C
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r5, r0, #0
add r0, r4, #0
mov r1, #3
add r6, r2, #0
bl _s32_div_f
add r7, r0, #0
add r0, r4, #0
mov r1, #3
bl _s32_div_f
lsl r0, r7, #0x18
lsr r2, r0, #0x18
mov r0, #0x24
mul r0, r2
add r2, r5, r0
lsl r0, r1, #0x18
lsr r0, r0, #0x16
add r0, r2, r0
str r6, [r0, #0x18]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02214A6C
thumb_func_start ov96_02214A9C
ov96_02214A9C: ; 0x02214A9C
push {r4, r5, r6, lr}
add r5, r0, #0
mov r4, #0
mov r6, #0x24
_02214AA4:
add r0, r4, #0
mul r0, r6
add r0, r5, r0
bl ov96_02214ABC
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #4
blo _02214AA4
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_02214A9C
thumb_func_start ov96_02214ABC
ov96_02214ABC: ; 0x02214ABC
push {r3, r4, r5, r6}
sub sp, #8
add r1, sp, #0
add r5, r0, #0
mov r4, #0
add r1, #3
add r0, sp, #0
_02214ACA:
lsl r2, r4, #2
add r2, r5, r2
ldr r3, [r2, #0x18]
add r2, r3, #0
add r6, r3, #0
add r2, #0x73
add r6, #0x70
ldrb r2, [r2]
ldrb r6, [r6]
add r3, #0x75
add r6, r2, r6
strb r6, [r1, r4]
ldrb r3, [r3]
add r2, r2, r3
strb r2, [r0, r4]
add r2, r4, #1
lsl r2, r2, #0x18
lsr r4, r2, #0x18
cmp r4, #3
blo _02214ACA
add r3, sp, #0
mov r0, #0
mov r4, #1
add r3, #3
_02214AFA:
add r1, r3, r4
sub r1, r1, #1
ldrb r2, [r1]
ldrb r1, [r3, r4]
cmp r2, r1
bhs _02214B08
add r0, r4, #0
_02214B08:
add r1, r4, #1
lsl r1, r1, #0x18
lsr r4, r1, #0x18
cmp r4, #3
blo _02214AFA
cmp r0, #0
add r1, sp, #0
bne _02214B2C
ldrb r2, [r1, #1]
ldrb r1, [r1, #2]
cmp r2, r1
blo _02214B26
mov r2, #1
mov r1, #2
b _02214B56
_02214B26:
mov r2, #2
mov r1, #1
b _02214B56
_02214B2C:
cmp r0, #1
bne _02214B44
ldrb r2, [r1]
ldrb r1, [r1, #2]
cmp r2, r1
blo _02214B3E
mov r2, #0
mov r1, #2
b _02214B56
_02214B3E:
mov r2, #2
mov r1, #0
b _02214B56
_02214B44:
ldrb r2, [r1]
ldrb r1, [r1, #1]
cmp r2, r1
blo _02214B52
mov r2, #0
mov r1, #1
b _02214B56
_02214B52:
mov r2, #1
mov r1, #0
_02214B56:
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x18]
str r0, [r5, #4]
lsl r0, r2, #2
add r0, r5, r0
ldr r0, [r0, #0x18]
str r0, [r5, #0xc]
lsl r0, r1, #2
add r0, r5, r0
ldr r0, [r0, #0x18]
str r0, [r5, #0x14]
add sp, #8
pop {r3, r4, r5, r6}
bx lr
thumb_func_end ov96_02214ABC
thumb_func_start ov96_02214B74
ov96_02214B74: ; 0x02214B74
add r0, #0x90
str r1, [r0]
bx lr
.balign 4, 0
thumb_func_end ov96_02214B74
thumb_func_start ov96_02214B7C
ov96_02214B7C: ; 0x02214B7C
ldr r3, _02214B80 ; =FreeToHeap
bx r3
.balign 4, 0
_02214B80: .word FreeToHeap
thumb_func_end ov96_02214B7C
thumb_func_start ov96_02214B84
ov96_02214B84: ; 0x02214B84
push {r4, lr}
add r4, r1, #0
add r1, #0x9e
ldrb r1, [r1]
cmp r1, #4
beq _02214C38
add r1, r4, #0
add r1, #0x9a
ldrb r1, [r1]
add r2, r1, #1
add r1, r4, #0
add r1, #0x9a
strb r2, [r1]
add r1, r4, #0
add r1, #0x9a
ldrb r2, [r1]
add r1, r4, #0
add r1, #0x9b
ldrb r1, [r1]
cmp r2, r1
blo _02214BBE
add r1, r4, #0
mov r2, #1
add r1, #0x94
str r2, [r1]
add r1, r4, #0
mov r2, #0
add r1, #0x9a
strb r2, [r1]
_02214BBE:
add r1, r4, #0
add r1, #0x94
ldr r1, [r1]
cmp r1, #0
beq _02214C38
add r1, r4, #0
add r1, #0x9d
ldrb r2, [r1]
add r1, r4, #0
add r1, #0x99
ldrb r1, [r1]
add r2, r2, r1
mov r1, #0x24
mul r1, r2
add r2, r4, r1
add r1, r4, #0
add r1, #0x9c
ldrb r1, [r1]
lsl r3, r1, #3
ldr r1, [r2, r3]
cmp r1, #0
bne _02214BF4
add r1, r4, #0
add r2, r2, r3
bl ov96_022155A0
b _02214BF8
_02214BF4:
sub r0, r1, #1
str r0, [r2, r3]
_02214BF8:
add r0, r4, #0
add r0, #0x99
ldrb r0, [r0]
add r1, r0, #1
add r0, r4, #0
add r0, #0x99
strb r1, [r0]
add r0, r4, #0
add r0, #0x99
ldrb r1, [r0]
add r0, r4, #0
add r0, #0x98
ldrb r0, [r0]
cmp r1, r0
blo _02214C38
add r0, r4, #0
mov r1, #0
add r0, #0x99
strb r1, [r0]
add r0, r4, #0
add r0, #0x9c
ldrb r0, [r0]
mov r1, #3
add r0, r0, #1
bl _s32_div_f
add r0, r4, #0
add r0, #0x9c
strb r1, [r0]
mov r0, #0
add r4, #0x94
str r0, [r4]
_02214C38:
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02214B84
thumb_func_start ov96_02214C3C
ov96_02214C3C: ; 0x02214C3C
push {r4, r5, r6, r7, lr}
sub sp, #0x24
str r0, [sp, #8]
str r1, [sp, #0xc]
ldr r0, [sp, #0x38]
str r2, [sp, #0x10]
add r6, r3, #0
str r0, [sp, #0x38]
ldr r0, [r6, #0x78]
cmp r0, #0
beq _02214C58
add sp, #0x24
mov r0, #0
pop {r4, r5, r6, r7, pc}
_02214C58:
ldr r0, [r6, #0x48]
cmp r0, #0
beq _02214C64
add sp, #0x24
mov r0, #0
pop {r4, r5, r6, r7, pc}
_02214C64:
ldr r3, [r6, #0x30]
ldr r4, [r6, #0x34]
asr r2, r3, #0xb
lsr r2, r2, #0x14
add r2, r3, r2
asr r3, r4, #0xb
lsr r3, r3, #0x14
add r3, r4, r3
mov r0, #0x80
mov r1, #0x60
asr r2, r2, #0xc
asr r3, r3, #0xc
bl ov96_02215614
str r0, [sp, #0x14]
add r0, r6, #0
str r0, [sp, #0x1c]
add r0, #0x30
mov r4, #0
str r0, [sp, #0x1c]
_02214C8C:
mov r0, #0x4c
add r1, r4, #0
mul r1, r0
ldr r0, [sp, #0x38]
add r5, r0, r1
add r0, r5, #0
add r0, #0x39
ldrb r0, [r0]
cmp r0, #0
bne _02214CCA
add r0, r5, #0
add r0, #0x38
ldrb r0, [r0]
cmp r0, #0
beq _02214CCA
ldr r2, [r5, #8]
ldr r7, [r5, #0xc]
asr r3, r2, #0xb
lsr r3, r3, #0x14
add r3, r2, r3
asr r2, r3, #0xc
asr r3, r7, #0xb
lsr r3, r3, #0x14
add r3, r7, r3
mov r0, #0x80
mov r1, #0x60
asr r3, r3, #0xc
bl ov96_02215614
add r7, r0, #0
b _02214CCC
_02214CCA:
mov r7, #4
_02214CCC:
cmp r7, #4
beq _02214D68
mov r0, #0
str r0, [sp, #0x18]
add r0, r5, #0
add r0, #0x38
ldrb r0, [r0]
cmp r0, #1
bne _02214CE4
mov r0, #8
str r0, [sp, #0x18]
b _02214CF2
_02214CE4:
cmp r0, #2
bne _02214CEE
mov r0, #0xc
str r0, [sp, #0x18]
b _02214CF2
_02214CEE:
bl GF_AssertFail
_02214CF2:
ldr r0, [r6]
bl ov96_021EAF8C
add r1, r0, #0
ldr r3, [sp, #0x18]
add r2, r5, #0
ldr r0, [sp, #0x1c]
lsl r1, r1, #0xc
add r2, #8
lsl r3, r3, #0xc
bl ov96_022156E8
cmp r0, #0
beq _02214D16
mov r1, #1
add r0, sp, #0x20
strb r1, [r0, r4]
b _02214D6E
_02214D16:
ldr r0, [sp, #0x14]
cmp r0, r7
bne _02214D60
str r0, [sp]
ldr r0, [sp, #0xc]
str r0, [sp, #4]
ldr r1, [r5, #8]
ldr r2, [r5, #0xc]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
ldr r3, [r6, #0x30]
asr r0, r0, #0xc
asr r2, r3, #0xb
lsr r2, r2, #0x14
add r2, r3, r2
ldr r3, [r6, #0x34]
asr r1, r1, #0xc
asr r5, r3, #0xb
lsr r5, r5, #0x14
add r5, r3, r5
asr r2, r2, #0xc
asr r3, r5, #0xc
bl ov96_02215650
cmp r0, #0
add r0, sp, #0x20
beq _02214D5A
mov r1, #4
strb r1, [r0, r4]
b _02214D6E
_02214D5A:
mov r1, #3
strb r1, [r0, r4]
b _02214D6E
_02214D60:
mov r1, #2
add r0, sp, #0x20
strb r1, [r0, r4]
b _02214D6E
_02214D68:
mov r1, #0
add r0, sp, #0x20
strb r1, [r0, r4]
_02214D6E:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #2
blo _02214C8C
add r0, sp, #0x20
ldrb r3, [r0, #1]
ldrb r2, [r0]
cmp r2, r3
blo _02214D8E
ldr r1, [sp, #0x38]
ldr r3, [sp, #0x14]
add r0, r6, #0
bl ov96_02214DBC
b _02214D9E
_02214D8E:
ldr r1, [sp, #0x38]
add r2, r3, #0
add r1, #0x4c
ldr r3, [sp, #0x14]
add r0, r6, #0
str r1, [sp, #0x38]
bl ov96_02214DBC
_02214D9E:
add r4, r0, #0
ldr r0, [r6, #0x78]
cmp r0, #1
bne _02214DB6
mov r0, #1
str r0, [sp]
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
ldr r2, [sp, #0x10]
mov r3, #6
bl ov96_021E8228
_02214DB6:
add r0, r4, #0
add sp, #0x24
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_02214C3C
thumb_func_start ov96_02214DBC
ov96_02214DBC: ; 0x02214DBC
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
bl LCRandom
mov r1, #0x64
bl _s32_div_f
lsl r0, r1, #0x18
lsr r0, r0, #0x18
cmp r6, #0xd
bhi _02214EA2
add r1, r6, r6
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_02214DE4: ; jump table
.short _02214EA6 - _02214DE4 - 2 ; case 0
.short _02214E78 - _02214DE4 - 2 ; case 1
.short _02214E00 - _02214DE4 - 2 ; case 2
.short _02214E32 - _02214DE4 - 2 ; case 3
.short _02214E64 - _02214DE4 - 2 ; case 4
.short _02214EA2 - _02214DE4 - 2 ; case 5
.short _02214EA2 - _02214DE4 - 2 ; case 6
.short _02214EA2 - _02214DE4 - 2 ; case 7
.short _02214EA6 - _02214DE4 - 2 ; case 8
.short _02214E78 - _02214DE4 - 2 ; case 9
.short _02214EA2 - _02214DE4 - 2 ; case 10
.short _02214EA2 - _02214DE4 - 2 ; case 11
.short _02214EA2 - _02214DE4 - 2 ; case 12
.short _02214E64 - _02214DE4 - 2 ; case 13
_02214E00:
cmp r0, #0x3c
bhs _02214E08
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_02214E08:
cmp r0, #0x50
bhs _02214E1C
add r4, #8
ldmia r4!, {r0, r1}
add r5, #0x24
stmia r5!, {r0, r1}
ldr r0, [r4]
str r0, [r5]
mov r0, #0xa
pop {r3, r4, r5, r6, r7, pc}
_02214E1C:
add r4, #8
add r2, r5, #0
ldmia r4!, {r0, r1}
add r2, #0x24
stmia r2!, {r0, r1}
ldr r0, [r4]
str r0, [r2]
mov r0, #1
str r0, [r5, #0x78]
mov r0, #0xa
pop {r3, r4, r5, r6, r7, pc}
_02214E32:
cmp r0, #0x14
bhs _02214E3A
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_02214E3A:
cmp r0, #0x5a
bhs _02214E4E
add r4, #8
ldmia r4!, {r0, r1}
add r5, #0x24
stmia r5!, {r0, r1}
ldr r0, [r4]
str r0, [r5]
mov r0, #3
pop {r3, r4, r5, r6, r7, pc}
_02214E4E:
add r4, #8
add r2, r5, #0
ldmia r4!, {r0, r1}
add r2, #0x24
stmia r2!, {r0, r1}
ldr r0, [r4]
str r0, [r2]
mov r0, #1
str r0, [r5, #0x78]
mov r0, #3
pop {r3, r4, r5, r6, r7, pc}
_02214E64:
add r4, #8
add r2, r5, #0
ldmia r4!, {r0, r1}
add r2, #0x24
stmia r2!, {r0, r1}
ldr r0, [r4]
str r0, [r2]
mov r0, #1
str r0, [r5, #0x78]
b _02214EA6
_02214E78:
cmp r7, #4
beq _02214E9C
mov r0, #3
sub r0, r0, r7
lsl r0, r0, #0x18
lsr r1, r0, #0x18
mov r0, #0xc
add r2, r1, #0
mul r2, r0
ldr r0, _02214EAC ; =ov96_0221D678
ldrh r0, [r0, r2]
lsl r0, r0, #0xc
str r0, [r5, #0x24]
ldr r0, _02214EB0 ; =ov96_0221D67A
ldrh r0, [r0, r2]
lsl r0, r0, #0xc
str r0, [r5, #0x28]
b _02214EA6
_02214E9C:
bl GF_AssertFail
b _02214EA6
_02214EA2:
bl GF_AssertFail
_02214EA6:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_02214EAC: .word ov96_0221D678
_02214EB0: .word ov96_0221D67A
thumb_func_end ov96_02214DBC
thumb_func_start ov96_02214EB4
ov96_02214EB4: ; 0x02214EB4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
str r0, [sp, #8]
str r1, [sp, #0xc]
ldr r0, [sp, #0x40]
str r2, [sp, #0x10]
add r6, r3, #0
str r0, [sp, #0x40]
ldr r0, [r6, #0x78]
cmp r0, #0
beq _02214ED0
add sp, #0x28
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_02214ED0:
ldr r0, [r6, #0x48]
cmp r0, #0
beq _02214EDC
add sp, #0x28
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_02214EDC:
ldr r3, [r6, #0x30]
ldr r4, [r6, #0x34]
asr r2, r3, #0xb
lsr r2, r2, #0x14
add r2, r3, r2
asr r3, r4, #0xb
lsr r3, r3, #0x14
add r3, r4, r3
mov r0, #0x80
mov r1, #0x60
asr r2, r2, #0xc
asr r3, r3, #0xc
bl ov96_02215614
str r0, [sp, #0x14]
mov r4, #0
_02214EFC:
mov r0, #0x4c
add r1, r4, #0
mul r1, r0
ldr r0, [sp, #0x40]
add r5, r0, r1
add r0, r5, #0
add r0, #0x39
ldrb r0, [r0]
cmp r0, #0
bne _02214F38
add r0, r5, #0
add r0, #0x38
ldrb r0, [r0]
cmp r0, #0
beq _02214F38
ldr r2, [r5, #8]
ldr r7, [r5, #0xc]
asr r3, r2, #0xb
lsr r3, r3, #0x14
add r3, r2, r3
asr r2, r3, #0xc
asr r3, r7, #0xb
lsr r3, r3, #0x14
add r3, r7, r3
mov r0, #0x80
mov r1, #0x60
asr r3, r3, #0xc
bl ov96_02215614
b _02214F3A
_02214F38:
mov r0, #4
_02214F3A:
cmp r0, #4
beq _02214F92
ldr r1, [sp, #0xc]
cmp r1, r0
bne _02214F8A
ldr r0, [sp, #0x14]
str r0, [sp]
ldr r0, [sp, #0xc]
str r0, [sp, #4]
ldr r1, [r5, #8]
ldr r2, [r5, #0xc]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
ldr r3, [r6, #0x30]
asr r0, r0, #0xc
asr r2, r3, #0xb
lsr r2, r2, #0x14
add r2, r3, r2
ldr r3, [r6, #0x34]
asr r1, r1, #0xc
asr r5, r3, #0xb
lsr r5, r5, #0x14
add r5, r3, r5
asr r2, r2, #0xc
asr r3, r5, #0xc
bl ov96_0221567C
cmp r0, #0
add r0, sp, #0x18
beq _02214F84
mov r1, #7
strb r1, [r0, r4]
b _02214F98
_02214F84:
mov r1, #6
strb r1, [r0, r4]
b _02214F98
_02214F8A:
mov r1, #6
add r0, sp, #0x18
strb r1, [r0, r4]
b _02214F98
_02214F92:
mov r1, #5
add r0, sp, #0x18
strb r1, [r0, r4]
_02214F98:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #2
blo _02214EFC
add r0, sp, #0x18
ldrb r4, [r0, #1]
ldrb r0, [r0]
cmp r0, #7
bne _02214FB0
mov r0, #1
b _02214FB2
_02214FB0:
mov r0, #0
_02214FB2:
cmp r4, #7
bne _02214FBA
mov r1, #1
b _02214FBC
_02214FBA:
mov r1, #0
_02214FBC:
cmp r0, r1
bne _02215014
ldr r1, [sp, #0x40]
add r0, r6, #0
add r0, #0x30
add r1, #8
add r2, sp, #0x1c
bl VEC_Subtract
add r0, sp, #0x1c
bl VEC_Mag
ldr r1, [sp, #0x40]
add r5, r0, #0
add r0, r6, #0
add r0, #0x30
add r1, #0x54
add r2, sp, #0x1c
bl VEC_Subtract
add r0, sp, #0x1c
bl VEC_Mag
cmp r5, r0
blt _02215000
add r2, sp, #0x18
ldrb r2, [r2]
ldr r1, [sp, #0x40]
ldr r3, [sp, #0xc]
add r0, r6, #0
bl ov96_02215058
add r4, r0, #0
b _0221503C
_02215000:
ldr r1, [sp, #0x40]
ldr r3, [sp, #0xc]
add r1, #0x4c
add r0, r6, #0
add r2, r4, #0
str r1, [sp, #0x40]
bl ov96_02215058
add r4, r0, #0
b _0221503C
_02215014:
add r0, sp, #0x18
ldrb r2, [r0]
cmp r2, r4
blo _0221502A
ldr r1, [sp, #0x40]
ldr r3, [sp, #0xc]
add r0, r6, #0
bl ov96_02215058
add r4, r0, #0
b _0221503C
_0221502A:
ldr r1, [sp, #0x40]
ldr r3, [sp, #0xc]
add r1, #0x4c
add r0, r6, #0
add r2, r4, #0
str r1, [sp, #0x40]
bl ov96_02215058
add r4, r0, #0
_0221503C:
ldr r0, [r6, #0x78]
cmp r0, #1
bne _02215052
mov r0, #1
str r0, [sp]
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
ldr r2, [sp, #0x10]
mov r3, #6
bl ov96_021E8228
_02215052:
add r0, r4, #0
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_02214EB4
thumb_func_start ov96_02215058
ov96_02215058: ; 0x02215058
push {r3, r4, r5, r6, lr}
sub sp, #4
add r4, r0, #0
cmp r2, #0xc
bls _02215064
b _0221516E
_02215064:
add r0, r2, r2
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02215070: ; jump table
.short _0221516E - _02215070 - 2 ; case 0
.short _0221516E - _02215070 - 2 ; case 1
.short _0221516E - _02215070 - 2 ; case 2
.short _0221516E - _02215070 - 2 ; case 3
.short _0221516E - _02215070 - 2 ; case 4
.short _02215172 - _02215070 - 2 ; case 5
.short _0221508A - _02215070 - 2 ; case 6
.short _02215146 - _02215070 - 2 ; case 7
.short _02215172 - _02215070 - 2 ; case 8
.short _0221516E - _02215070 - 2 ; case 9
.short _0221516E - _02215070 - 2 ; case 10
.short _0221508A - _02215070 - 2 ; case 11
.short _02215146 - _02215070 - 2 ; case 12
_0221508A:
sub r1, r3, #1
add r6, r1, #0
mov r0, #0xc
mul r6, r0
ldr r0, _02215178 ; =ov96_0221D678
ldr r1, [r4, #0x30]
add r5, r0, r6
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
ldr r2, [r4, #0x34]
asr r0, r0, #0xc
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
asr r1, r1, #0xc
add r2, r5, #0
bl ov96_022156A8
cmp r0, #0
beq _022150BA
add sp, #4
mov r0, #0
pop {r3, r4, r5, r6, pc}
_022150BA:
bl LCRandom
lsr r2, r0, #0x1f
lsl r1, r0, #0x1f
sub r1, r1, r2
mov r0, #0x1f
ror r1, r0
add r0, r2, r1
bne _022150D8
ldrh r1, [r5]
add r0, sp, #0
strh r1, [r0]
ldrh r1, [r5, #2]
strh r1, [r0, #2]
b _02215108
_022150D8:
bl LCRandom
lsr r2, r0, #0x1f
lsl r1, r0, #0x1f
sub r1, r1, r2
mov r0, #0x1f
ror r1, r0
add r0, r2, r1
bne _022150FA
ldr r0, _0221517C ; =ov96_0221D67C
ldrh r1, [r0, r6]
add r2, r0, r6
add r0, sp, #0
strh r1, [r0]
ldrh r1, [r2, #2]
strh r1, [r0, #2]
b _02215108
_022150FA:
ldr r0, _02215180 ; =ov96_0221D680
ldrh r1, [r0, r6]
add r2, r0, r6
add r0, sp, #0
strh r1, [r0]
ldrh r1, [r2, #2]
strh r1, [r0, #2]
_02215108:
bl LCRandom
mov r1, #0x11
bl _s32_div_f
add r2, sp, #0
mov r0, #8
ldrh r3, [r2]
sub r0, r0, r1
add r0, r3, r0
strh r0, [r2]
bl LCRandom
mov r1, #0x11
bl _s32_div_f
add r2, sp, #0
mov r0, #8
ldrh r3, [r2, #2]
sub r0, r0, r1
add sp, #4
add r0, r3, r0
strh r0, [r2, #2]
ldrh r0, [r2]
lsl r0, r0, #0xc
str r0, [r4, #0x24]
ldrh r0, [r2, #2]
lsl r0, r0, #0xc
str r0, [r4, #0x28]
mov r0, #6
pop {r3, r4, r5, r6, pc}
_02215146:
add r3, r1, #0
add r3, #8
add r2, r4, #0
ldmia r3!, {r0, r1}
add r2, #0x24
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
bl LCRandom
mov r1, #0x64
bl _s32_div_f
cmp r1, #0x50
bge _02215168
mov r0, #1
str r0, [r4, #0x78]
_02215168:
add sp, #4
mov r0, #0xa
pop {r3, r4, r5, r6, pc}
_0221516E:
bl GF_AssertFail
_02215172:
mov r0, #0
add sp, #4
pop {r3, r4, r5, r6, pc}
.balign 4, 0
_02215178: .word ov96_0221D678
_0221517C: .word ov96_0221D67C
_02215180: .word ov96_0221D680
thumb_func_end ov96_02215058
thumb_func_start ov96_02215184
ov96_02215184: ; 0x02215184
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x30
str r0, [sp, #8]
ldr r0, [sp, #0x48]
str r1, [sp, #0xc]
str r0, [sp, #0x48]
ldr r0, [sp, #0x4c]
str r2, [sp, #0x10]
add r5, r3, #0
str r0, [sp, #0x4c]
ldr r0, [r5, #0x78]
cmp r0, #0
beq _022151A4
add sp, #0x30
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_022151A4:
ldr r0, [r5, #0x48]
cmp r0, #0
beq _022151B0
add sp, #0x30
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_022151B0:
ldr r3, [r5, #0x30]
ldr r4, [r5, #0x34]
asr r2, r3, #0xb
lsr r2, r2, #0x14
add r2, r3, r2
asr r3, r4, #0xb
lsr r3, r3, #0x14
add r3, r4, r3
mov r0, #0x80
mov r1, #0x60
asr r2, r2, #0xc
asr r3, r3, #0xc
bl ov96_02215614
str r0, [sp, #0x14]
mov r4, #0
add r7, sp, #0x20
_022151D2:
mov r0, #0x4c
add r1, r4, #0
mul r1, r0
ldr r0, [sp, #0x48]
add r3, r0, r1
add r0, r3, #0
add r0, #0x39
ldrb r0, [r0]
cmp r0, #0
bne _02215210
add r0, r3, #0
add r0, #0x38
ldrb r0, [r0]
cmp r0, #0
beq _02215210
ldr r2, [r3, #8]
ldr r3, [r3, #0xc]
asr r6, r2, #0xb
lsr r6, r6, #0x14
add r6, r2, r6
asr r2, r6, #0xc
asr r6, r3, #0xb
lsr r6, r6, #0x14
add r6, r3, r6
mov r0, #0x80
mov r1, #0x60
asr r3, r6, #0xc
bl ov96_02215614
strb r0, [r7, r4]
b _02215214
_02215210:
mov r0, #4
strb r0, [r7, r4]
_02215214:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #2
blo _022151D2
add r0, r5, #0
str r0, [sp, #0x1c]
add r0, #0x30
mov r4, #0
str r0, [sp, #0x1c]
_02215228:
mov r0, #0x4c
add r1, r4, #0
mul r1, r0
ldr r0, [sp, #0x48]
add r6, r0, r1
add r0, sp, #0x20
mov r1, #8
add r0, #2
strb r1, [r0, r4]
add r0, sp, #0x20
ldrb r0, [r0, r4]
str r0, [sp, #0x18]
cmp r0, #4
beq _022152CC
add r0, r6, #0
add r0, #0x38
ldrb r0, [r0]
mov r7, #0
cmp r0, #1
bne _02215254
add r7, r1, #0
b _02215260
_02215254:
cmp r0, #2
bne _0221525C
mov r7, #0xc
b _02215260
_0221525C:
bl GF_AssertFail
_02215260:
ldr r0, [r5]
bl ov96_021EAF8C
add r1, r0, #0
add r2, r6, #0
ldr r0, [sp, #0x1c]
lsl r1, r1, #0xc
add r2, #8
lsl r3, r7, #0xc
bl ov96_022156E8
cmp r0, #0
beq _02215284
add r0, sp, #0x20
mov r1, #8
add r0, #2
strb r1, [r0, r4]
b _022152CC
_02215284:
ldr r1, [sp, #0x14]
ldr r0, [sp, #0x18]
cmp r1, r0
bne _022152CC
add r0, r1, #0
str r0, [sp]
ldr r0, [sp, #0xc]
str r0, [sp, #4]
ldr r1, [r6, #8]
ldr r2, [r6, #0xc]
asr r0, r1, #0xb
lsr r0, r0, #0x14
add r0, r1, r0
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
ldr r3, [r5, #0x30]
asr r0, r0, #0xc
asr r2, r3, #0xb
lsr r2, r2, #0x14
add r2, r3, r2
ldr r3, [r5, #0x34]
asr r1, r1, #0xc
asr r6, r3, #0xb
lsr r6, r6, #0x14
add r6, r3, r6
asr r2, r2, #0xc
asr r3, r6, #0xc
bl ov96_02215650
cmp r0, #0
beq _022152CC
add r0, sp, #0x20
mov r1, #0xd
add r0, #2
strb r1, [r0, r4]
_022152CC:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #2
blo _02215228
add r0, sp, #0x20
ldrb r2, [r0, #2]
cmp r2, #0xd
bne _022152EC
ldr r1, [sp, #0x48]
ldr r3, [sp, #0x14]
add r0, r5, #0
bl ov96_02214DBC
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
_022152EC:
ldrb r2, [r0, #3]
cmp r2, #0xd
bne _02215304
ldr r1, [sp, #0x48]
ldr r3, [sp, #0x14]
add r1, #0x4c
add r0, r5, #0
str r1, [sp, #0x48]
bl ov96_02214DBC
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
_02215304:
ldr r0, [sp, #0xc]
mov r1, #0x24
mul r1, r0
ldr r0, [sp, #0x4c]
add r0, r0, r1
ldr r0, [r0, #4]
add r0, #0x71
ldrb r0, [r0]
cmp r0, #0x32
blo _02215326
ldr r1, [sp, #0x4c]
ldr r2, [sp, #0xc]
add r0, r5, #0
bl ov96_02215478
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
_02215326:
add r6, sp, #0x20
mov r4, #0
add r6, #2
_0221532C:
mov r0, #0x4c
add r1, r4, #0
mul r1, r0
ldr r0, [sp, #0x48]
add r1, r0, r1
add r0, sp, #0x20
ldrb r2, [r0, r4]
cmp r2, #4
beq _0221538E
ldr r0, [sp, #0xc]
cmp r0, r2
bne _02215388
ldr r0, [sp, #0x14]
str r0, [sp]
ldr r0, [sp, #0xc]
str r0, [sp, #4]
ldr r2, [r1, #8]
ldr r7, [r5, #0x34]
asr r0, r2, #0xb
lsr r0, r0, #0x14
add r0, r2, r0
ldr r2, [r1, #0xc]
asr r0, r0, #0xc
asr r1, r2, #0xb
lsr r1, r1, #0x14
add r1, r2, r1
ldr r2, [r5, #0x30]
asr r1, r1, #0xc
asr r3, r2, #0xb
lsr r3, r3, #0x14
add r3, r2, r3
asr r2, r3, #0xc
asr r3, r7, #0xb
lsr r3, r3, #0x14
add r3, r7, r3
asr r3, r3, #0xc
bl ov96_02215650
cmp r0, #0
beq _02215382
mov r0, #0xc
strb r0, [r6, r4]
b _02215392
_02215382:
mov r0, #0xb
strb r0, [r6, r4]
b _02215392
_02215388:
mov r0, #0xb
strb r0, [r6, r4]
b _02215392
_0221538E:
mov r0, #0xa
strb r0, [r6, r4]
_02215392:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #2
blo _0221532C
add r0, sp, #0x20
ldrb r2, [r0, #2]
ldrb r4, [r0, #3]
cmp r2, #7
bne _022153AA
mov r0, #1
b _022153AC
_022153AA:
mov r0, #0
_022153AC:
cmp r4, #7
bne _022153B4
mov r1, #1
b _022153B6
_022153B4:
mov r1, #0
_022153B6:
cmp r0, r1
bne _02215416
ldr r1, [sp, #0x48]
add r0, r5, #0
add r0, #0x30
add r1, #8
add r2, sp, #0x24
bl VEC_Subtract
add r0, sp, #0x24
bl VEC_Mag
ldr r1, [sp, #0x48]
add r6, r0, #0
add r0, r5, #0
add r0, #0x30
add r1, #0x54
add r2, sp, #0x24
bl VEC_Subtract
add r0, sp, #0x24
bl VEC_Mag
cmp r6, r0
blt _022153FE
ldr r0, [sp, #0x4c]
add r2, sp, #0x20
str r0, [sp]
ldrb r2, [r2, #2]
ldr r1, [sp, #0x48]
ldr r3, [sp, #0xc]
add r0, r5, #0
bl ov96_02215460
add r4, r0, #0
b _02215442
_022153FE:
ldr r0, [sp, #0x4c]
ldr r1, [sp, #0x48]
str r0, [sp]
ldr r3, [sp, #0xc]
add r1, #0x4c
add r0, r5, #0
add r2, r4, #0
str r1, [sp, #0x48]
bl ov96_02215460
add r4, r0, #0
b _02215442
_02215416:
cmp r2, r4
blo _0221542C
ldr r0, [sp, #0x4c]
ldr r1, [sp, #0x48]
str r0, [sp]
ldr r3, [sp, #0xc]
add r0, r5, #0
bl ov96_02215460
add r4, r0, #0
b _02215442
_0221542C:
ldr r0, [sp, #0x4c]
ldr r1, [sp, #0x48]
str r0, [sp]
ldr r3, [sp, #0xc]
add r1, #0x4c
add r0, r5, #0
add r2, r4, #0
str r1, [sp, #0x48]
bl ov96_02215460
add r4, r0, #0
_02215442:
ldr r0, [r5, #0x78]
cmp r0, #1
bne _02215458
mov r0, #1
str r0, [sp]
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
ldr r2, [sp, #0x10]
mov r3, #6
bl ov96_021E8228
_02215458:
add r0, r4, #0
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02215184
thumb_func_start ov96_02215460
ov96_02215460: ; 0x02215460
push {r3, lr}
cmp r2, #0xa
bne _02215470
ldr r1, [sp, #8]
add r2, r3, #0
bl ov96_02215478
pop {r3, pc}
_02215470:
bl ov96_02215058
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_02215460
thumb_func_start ov96_02215478
ov96_02215478: ; 0x02215478
push {r4, r5, r6, r7, lr}
sub sp, #0x14
str r0, [sp]
str r2, [sp, #8]
mov r0, #0
add r7, sp, #0x10
str r0, [sp, #0xc]
strb r0, [r7]
ldr r0, [sp, #0xc]
str r1, [sp, #4]
strb r0, [r7, #1]
ldr r0, [sp, #0xc]
strb r0, [r7, #2]
ldr r0, [sp, #0xc]
strb r0, [r7, #3]
_02215496:
ldr r1, [sp, #0xc]
mov r0, #0x24
add r2, r1, #0
mul r2, r0
ldr r0, [sp, #4]
mov r4, #0
add r6, r0, r2
_022154A4:
lsl r0, r4, #3
add r0, r6, r0
ldr r3, [r0, #4]
mov r0, #0x80
ldr r2, [r3, #0x30]
ldr r3, [r3, #0x34]
asr r5, r2, #0xb
lsr r5, r5, #0x14
add r5, r2, r5
asr r2, r5, #0xc
asr r5, r3, #0xb
lsr r5, r5, #0x14
add r5, r3, r5
mov r1, #0x60
asr r3, r5, #0xc
bl ov96_02215614
cmp r0, #4
beq _022154D0
ldrb r1, [r7, r0]
add r1, r1, #1
strb r1, [r7, r0]
_022154D0:
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _022154A4
ldr r0, [sp, #0xc]
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xc]
cmp r0, #4
blo _02215496
mov r4, #0
mov r1, #1
add r0, sp, #0x10
_022154EE:
add r2, r0, r1
sub r2, r2, #1
ldrb r3, [r2]
ldrb r2, [r0, r1]
cmp r3, r2
bls _02215502
ldr r2, [sp, #8]
cmp r1, r2
beq _02215502
add r4, r1, #0
_02215502:
add r1, r1, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
cmp r1, #4
blo _022154EE
bl LCRandom
lsr r2, r0, #0x1f
lsl r1, r0, #0x1a
sub r1, r1, r2
mov r0, #0x1a
ror r1, r0
add r5, r2, r1
bl LCRandom
lsr r2, r0, #0x1f
lsl r1, r0, #0x1b
sub r1, r1, r2
mov r0, #0x1b
ror r1, r0
add r0, r2, r1
cmp r4, #3
bhi _02215594
add r1, r4, r4
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_0221553C: ; jump table
.short _02215544 - _0221553C - 2 ; case 0
.short _0221555A - _0221553C - 2 ; case 1
.short _0221556E - _0221553C - 2 ; case 2
.short _02215582 - _0221553C - 2 ; case 3
_02215544:
mov r1, #0x80
sub r1, r1, r5
lsl r2, r1, #0xc
ldr r1, [sp]
str r2, [r1, #0x24]
mov r1, #0x60
sub r0, r1, r0
lsl r1, r0, #0xc
ldr r0, [sp]
str r1, [r0, #0x28]
b _02215598
_0221555A:
add r5, #0x80
ldr r1, [sp]
lsl r2, r5, #0xc
str r2, [r1, #0x24]
mov r1, #0x60
sub r0, r1, r0
lsl r1, r0, #0xc
ldr r0, [sp]
str r1, [r0, #0x28]
b _02215598
_0221556E:
mov r1, #0x80
sub r1, r1, r5
lsl r2, r1, #0xc
ldr r1, [sp]
add r0, #0x60
str r2, [r1, #0x24]
lsl r1, r0, #0xc
ldr r0, [sp]
str r1, [r0, #0x28]
b _02215598
_02215582:
add r5, #0x80
ldr r1, [sp]
lsl r2, r5, #0xc
add r0, #0x60
str r2, [r1, #0x24]
lsl r1, r0, #0xc
ldr r0, [sp]
str r1, [r0, #0x28]
b _02215598
_02215594:
bl GF_AssertFail
_02215598:
mov r0, #0xa
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02215478
thumb_func_start ov96_022155A0
ov96_022155A0: ; 0x022155A0
push {r3, r4, r5, lr}
sub sp, #8
add r4, r2, #0
add r2, r1, #0
add r2, #0x9d
ldrb r3, [r2]
add r2, r1, #0
add r2, #0x99
ldrb r2, [r2]
add r2, r3, r2
lsl r2, r2, #0x18
lsr r3, r2, #0x18
add r2, r1, #0
add r2, #0x9c
ldrb r2, [r2]
cmp r2, #0
beq _022155CC
cmp r2, #1
beq _022155E0
cmp r2, #2
beq _022155F4
b _0221560C
_022155CC:
add r1, #0x90
ldr r1, [r1]
str r1, [sp]
add r1, r3, #0
ldr r3, [r4, #4]
bl ov96_02214EB4
add sp, #8
str r0, [r4]
pop {r3, r4, r5, pc}
_022155E0:
add r1, #0x90
ldr r1, [r1]
str r1, [sp]
add r1, r3, #0
ldr r3, [r4, #4]
bl ov96_02214C3C
add sp, #8
str r0, [r4]
pop {r3, r4, r5, pc}
_022155F4:
add r5, r1, #0
add r5, #0x90
ldr r5, [r5]
str r5, [sp]
str r1, [sp, #4]
add r1, r3, #0
ldr r3, [r4, #4]
bl ov96_02215184
add sp, #8
str r0, [r4]
pop {r3, r4, r5, pc}
_0221560C:
bl GF_AssertFail
add sp, #8
pop {r3, r4, r5, pc}
thumb_func_end ov96_022155A0
thumb_func_start ov96_02215614
ov96_02215614: ; 0x02215614
push {r3, lr}
cmp r2, r0
bge _02215622
cmp r3, r1
bge _02215622
mov r0, #0
pop {r3, pc}
_02215622:
cmp r2, r0
blt _0221562E
cmp r3, r1
bge _0221562E
mov r0, #1
pop {r3, pc}
_0221562E:
cmp r2, r0
bge _0221563A
cmp r3, r1
blt _0221563A
mov r0, #2
pop {r3, pc}
_0221563A:
cmp r2, r0
blt _02215646
cmp r3, r1
blt _02215646
mov r0, #3
pop {r3, pc}
_02215646:
bl GF_AssertFail
mov r0, #4
pop {r3, pc}
.balign 4, 0
thumb_func_end ov96_02215614
thumb_func_start ov96_02215650
ov96_02215650: ; 0x02215650
push {r3, lr}
bl ov96_02215614
ldr r1, _02215678 ; =0xFFFFFFF8
add r1, sp
ldrb r3, [r1, #0x14]
ldrb r2, [r1, #0x10]
cmp r3, r2
beq _0221566A
mov r1, #3
sub r1, r1, r2
lsl r1, r1, #0x18
lsr r3, r1, #0x18
_0221566A:
cmp r0, r3
bne _02215672
mov r0, #1
pop {r3, pc}
_02215672:
mov r0, #0
pop {r3, pc}
nop
_02215678: .word 0xFFFFFFF8
thumb_func_end ov96_02215650
thumb_func_start ov96_0221567C
ov96_0221567C: ; 0x0221567C
push {r3, lr}
bl ov96_02215614
ldr r1, _022156A4 ; =0xFFFFFFF8
add r1, sp
ldrb r2, [r1, #0x14]
ldrb r1, [r1, #0x10]
cmp r2, r1
bne _0221569E
mov r1, #3
sub r1, r1, r2
cmp r1, r0
beq _0221569A
mov r0, #1
pop {r3, pc}
_0221569A:
mov r0, #0
pop {r3, pc}
_0221569E:
mov r0, #0
pop {r3, pc}
nop
_022156A4: .word 0xFFFFFFF8
thumb_func_end ov96_0221567C
thumb_func_start ov96_022156A8
ov96_022156A8: ; 0x022156A8
push {r4, r5, r6, r7}
mov r7, #0
add r3, r7, #0
add r4, r7, #0
sub r3, #8
sub r4, #8
_022156B4:
lsl r5, r7, #2
add r6, r2, r5
ldrh r5, [r2, r5]
ldrh r6, [r6, #2]
sub r5, r0, r5
sub r6, r1, r6
cmp r5, r4
blt _022156D6
cmp r5, #8
bgt _022156D6
cmp r6, r3
blt _022156D6
cmp r6, #8
bgt _022156D6
mov r0, #1
pop {r4, r5, r6, r7}
bx lr
_022156D6:
add r5, r7, #1
lsl r5, r5, #0x18
lsr r7, r5, #0x18
cmp r7, #3
blo _022156B4
mov r0, #0
pop {r4, r5, r6, r7}
bx lr
.balign 4, 0
thumb_func_end ov96_022156A8
thumb_func_start ov96_022156E8
ov96_022156E8: ; 0x022156E8
push {r4, r5, lr}
sub sp, #0xc
add r5, r1, #0
add r1, r2, #0
add r2, sp, #0
add r4, r3, #0
bl VEC_Subtract
add r0, sp, #0
bl VEC_Mag
add r1, r5, r4
cmp r0, r1
bge _0221570A
add sp, #0xc
mov r0, #1
pop {r4, r5, pc}
_0221570A:
mov r0, #0
add sp, #0xc
pop {r4, r5, pc}
thumb_func_end ov96_022156E8
thumb_func_start ov96_02215710
ov96_02215710: ; 0x02215710
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
add r7, r0, #0
ldr r0, [r5, #0x18]
cmp r0, #0
bne _02215720
mov r1, #1
b _02215724
_02215720:
mov r1, #0
mvn r1, r1
_02215724:
ldr r0, [r5, #0xc]
asr r0, r0, #0xc
add r6, r0, #0
mul r6, r1
lsr r0, r6, #0x1f
add r0, r6, r0
asr r4, r0, #1
mov r0, #0x14
ldrsb r0, [r5, r0]
mov r1, #3
bl _s32_div_f
cmp r1, #0
beq _0221574A
cmp r1, #1
beq _02215752
cmp r1, #2
beq _0221575A
b _02215756
_0221574A:
mov r0, #0
mvn r0, r0
mul r4, r0
b _0221575A
_02215752:
mov r4, #0
b _0221575A
_02215756:
bl GF_AssertFail
_0221575A:
mov r1, #0
ldr r0, [r5, #4]
add r2, r1, #0
add r3, r4, #0
bl ScheduleSetBgPosText
ldr r0, [r5, #4]
mov r1, #1
mov r2, #0
add r3, r4, #0
bl ScheduleSetBgPosText
ldr r0, [r5, #4]
mov r1, #2
mov r2, #0
add r3, r4, #0
bl ScheduleSetBgPosText
ldr r0, [r5, #4]
mov r1, #3
mov r2, #0
add r3, r4, #0
bl ScheduleSetBgPosText
ldr r0, [r5, #4]
mov r1, #0
mov r2, #3
add r3, r6, #0
bl ScheduleSetBgPosText
ldr r0, [r5, #4]
mov r1, #1
mov r2, #3
add r3, r6, #0
bl ScheduleSetBgPosText
ldr r0, [r5, #4]
mov r1, #2
mov r2, #3
add r3, r6, #0
bl ScheduleSetBgPosText
mov r1, #3
ldr r0, [r5, #4]
add r2, r1, #0
add r3, r6, #0
bl ScheduleSetBgPosText
ldr r0, [r5]
bl SpriteRenderer_GetG2dRendererPtr
lsl r1, r4, #0xc
lsl r2, r6, #0xc
bl G2dRenderer_SetMainSurfaceCoords
ldr r1, [r5, #0xc]
ldr r0, [r5, #0x10]
sub r0, r1, r0
str r0, [r5, #0xc]
ldr r1, [r5, #0x18]
mov r0, #1
eor r0, r1
str r0, [r5, #0x18]
mov r0, #0x14
ldrsb r1, [r5, r0]
add r1, r1, #1
strb r1, [r5, #0x14]
ldrsb r1, [r5, r0]
ldrb r0, [r5, #0x15]
cmp r1, r0
blt _02215860
mov r1, #0
ldr r0, [r5, #4]
add r2, r1, #0
add r3, r1, #0
bl ScheduleSetBgPosText
mov r2, #0
ldr r0, [r5, #4]
mov r1, #1
add r3, r2, #0
bl ScheduleSetBgPosText
mov r2, #0
ldr r0, [r5, #4]
mov r1, #2
add r3, r2, #0
bl ScheduleSetBgPosText
mov r2, #0
ldr r0, [r5, #4]
mov r1, #3
add r3, r2, #0
bl ScheduleSetBgPosText
mov r1, #0
ldr r0, [r5, #4]
mov r2, #3
add r3, r1, #0
bl ScheduleSetBgPosText
ldr r0, [r5, #4]
mov r1, #1
mov r2, #3
mov r3, #0
bl ScheduleSetBgPosText
ldr r0, [r5, #4]
mov r1, #2
mov r2, #3
mov r3, #0
bl ScheduleSetBgPosText
mov r1, #3
ldr r0, [r5, #4]
add r2, r1, #0
mov r3, #0
bl ScheduleSetBgPosText
ldr r0, [r5]
bl SpriteRenderer_GetG2dRendererPtr
mov r1, #0
add r2, r1, #0
bl G2dRenderer_SetMainSurfaceCoords
mov r0, #0
str r0, [r5, #8]
add r0, r7, #0
bl DestroySysTask
_02215860:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02215710
thumb_func_start ov96_02215864
ov96_02215864: ; 0x02215864
push {r4, lr}
add r4, r0, #0
bne _0221586E
bl GF_AssertFail
_0221586E:
ldr r0, [r4, #8]
cmp r0, #0
bne _02215878
mov r0, #1
pop {r4, pc}
_02215878:
mov r0, #0
pop {r4, pc}
thumb_func_end ov96_02215864
thumb_func_start ov96_0221587C
ov96_0221587C: ; 0x0221587C
str r1, [r0, #4]
str r2, [r0]
bx lr
.balign 4, 0
thumb_func_end ov96_0221587C
thumb_func_start ov96_02215884
ov96_02215884: ; 0x02215884
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5, #4]
add r6, r1, #0
add r4, r2, #0
cmp r0, #0
bne _02215896
bl GF_AssertFail
_02215896:
ldr r0, [r5]
cmp r0, #0
bne _022158A0
bl GF_AssertFail
_022158A0:
ldr r0, [r5, #8]
cmp r0, #0
beq _022158AA
bl DestroySysTask
_022158AA:
mov r0, #0
str r0, [r5, #0x18]
strb r0, [r5, #0x14]
strb r4, [r5, #0x15]
lsl r0, r6, #0xc
str r0, [r5, #0xc]
strb r6, [r5, #0x16]
lsl r1, r4, #0xc
bl FX_Div
str r0, [r5, #0x10]
ldr r0, _022158D0 ; =ov96_02215710
add r1, r5, #0
mov r2, #2
bl CreateSysTask
str r0, [r5, #8]
pop {r4, r5, r6, pc}
nop
_022158D0: .word ov96_02215710
thumb_func_end ov96_02215884
thumb_func_start ov96_022158D4
ov96_022158D4: ; 0x022158D4
cmp r0, #0x68
blt _022158E8
cmp r0, #0xa0
bge _022158E8
cmp r1, #0
blt _022158E8
cmp r1, #0x20
bge _022158E8
mov r0, #1
bx lr
_022158E8:
mov r0, #0
bx lr
thumb_func_end ov96_022158D4
thumb_func_start ov96_022158EC
ov96_022158EC: ; 0x022158EC
push {r3, r4, lr}
sub sp, #0xc
add r3, r0, #0
add r4, r2, #0
add r0, r1, #0
add r1, r3, #0
add r2, sp, #0
bl VEC_Subtract
add r0, sp, #0
bl VEC_Mag
cmp r0, r4
bgt _0221590E
add sp, #0xc
mov r0, #1
pop {r3, r4, pc}
_0221590E:
mov r0, #0
add sp, #0xc
pop {r3, r4, pc}
thumb_func_end ov96_022158EC
thumb_func_start ov96_02215914
ov96_02215914: ; 0x02215914
ldr r2, [r0]
cmp r2, #0
beq _02215940
bge _02215920
neg r3, r2
b _02215922
_02215920:
add r3, r2, #0
_02215922:
cmp r3, r1
bge _0221592C
mov r1, #0
str r1, [r0]
bx lr
_0221592C:
cmp r2, #0
ble _02215934
mov r2, #1
b _02215938
_02215934:
mov r2, #0
mvn r2, r2
_02215938:
ldr r3, [r0]
mul r2, r1
sub r1, r3, r2
str r1, [r0]
_02215940:
bx lr
.balign 4, 0
thumb_func_end ov96_02215914
thumb_func_start ov96_02215944
ov96_02215944: ; 0x02215944
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r2, #0
bl ov96_02215914
add r0, r5, #4
add r1, r4, #0
bl ov96_02215914
pop {r3, r4, r5, pc}
thumb_func_end ov96_02215944
thumb_func_start ov96_02215958
ov96_02215958: ; 0x02215958
ldr r2, [r0]
neg r3, r1
cmp r2, #0
ble _02215968
cmp r2, r1
ble _0221596E
str r1, [r0]
b _0221596E
_02215968:
cmp r2, r3
bge _0221596E
str r3, [r0]
_0221596E:
ldr r2, [r0, #4]
cmp r2, #0
ble _0221597C
cmp r2, r1
ble _02215982
str r1, [r0, #4]
bx lr
_0221597C:
cmp r2, r3
bge _02215982
str r3, [r0, #4]
_02215982:
bx lr
thumb_func_end ov96_02215958
thumb_func_start ov96_02215984
ov96_02215984: ; 0x02215984
push {r4, r5, lr}
sub sp, #0xc
add r4, r1, #0
add r5, r0, #0
bl ov96_021E5DC4
ldrb r1, [r4]
cmp r1, #0
beq _022159A0
cmp r1, #1
beq _022159BC
cmp r1, #2
beq _022159CC
b _022159E0
_022159A0:
mov r1, #6
str r1, [sp]
mov r1, #1
str r1, [sp, #4]
ldr r0, [r0]
ldr r3, _022159EC ; =0x00007FFF
str r0, [sp, #8]
mov r0, #0
add r2, r1, #0
bl BeginNormalPaletteFade
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
_022159BC:
bl IsPaletteFadeFinished
cmp r0, #0
beq _022159E4
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _022159E4
_022159CC:
add r0, r5, #0
bl ov96_021E637C
cmp r0, #0
beq _022159E4
add r0, r5, #0
mov r1, #1
bl ov96_021E5FC8
b _022159E4
_022159E0:
bl GF_AssertFail
_022159E4:
mov r0, #0
add sp, #0xc
pop {r4, r5, pc}
nop
_022159EC: .word 0x00007FFF
thumb_func_end ov96_02215984
thumb_func_start ov96_022159F0
ov96_022159F0: ; 0x022159F0
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r4, r1, #0
add r5, r0, #0
bl ov96_021E5DC4
add r6, r0, #0
ldrb r0, [r4]
cmp r0, #0
beq _02215A0A
cmp r0, #1
beq _02215A22
b _02215A60
_02215A0A:
add r0, r5, #0
bl ov96_02215FC8
add r0, r5, #0
bl ov96_02216234
cmp r0, #0
beq _02215A64
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _02215A64
_02215A22:
add r0, r5, #0
bl ov96_02215FC8
add r0, r5, #0
bl ov96_021E667C
cmp r0, #0
beq _02215A64
ldr r0, _02215A6C ; =0x000007F8
add r0, r6, r0
bl ov96_02215864
cmp r0, #0
beq _02215A64
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r6]
str r0, [sp, #8]
mov r0, #0
add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
bl BeginNormalPaletteFade
add r0, r5, #0
mov r1, #2
bl ov96_021E5FC8
b _02215A64
_02215A60:
bl GF_AssertFail
_02215A64:
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
nop
_02215A6C: .word 0x000007F8
thumb_func_end ov96_022159F0
thumb_func_start ov96_02215A70
ov96_02215A70: ; 0x02215A70
push {r4, r5, r6, lr}
add r4, r1, #0
add r6, r0, #0
bl ov96_021E5DC4
add r5, r0, #0
ldrb r0, [r4]
cmp r0, #0
bne _02215ABC
bl IsPaletteFadeFinished
cmp r0, #0
beq _02215AC0
add r0, r6, #0
bl ov96_021E5F24
cmp r0, #0
bne _02215AB8
mov r0, #0x81
lsl r0, r0, #2
mov r4, #0
add r5, r5, r0
_02215A9C:
ldr r2, [r5]
lsl r1, r4, #0x18
lsl r2, r2, #0x14
lsr r2, r2, #0x14
lsl r2, r2, #0x10
add r0, r6, #0
lsr r1, r1, #0x18
lsr r2, r2, #0x10
bl ov96_021E5FB0
add r4, r4, #1
add r5, #0xa8
cmp r4, #4
blt _02215A9C
_02215AB8:
mov r0, #1
pop {r4, r5, r6, pc}
_02215ABC:
bl GF_AssertFail
_02215AC0:
mov r0, #0
pop {r4, r5, r6, pc}
thumb_func_end ov96_02215A70
thumb_func_start ov96_02215AC4
ov96_02215AC4: ; 0x02215AC4
push {r3, r4, r5, r6, lr}
sub sp, #0x14
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
add r0, r5, #0
bl ov96_021E5DD4
cmp r0, #4
bls _02215ADC
b _02215CA0
_02215ADC:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02215AE8: ; jump table
.short _02215AF2 - _02215AE8 - 2 ; case 0
.short _02215B5C - _02215AE8 - 2 ; case 1
.short _02215B94 - _02215AE8 - 2 ; case 2
.short _02215BC8 - _02215AE8 - 2 ; case 3
.short _02215C0A - _02215AE8 - 2 ; case 4
_02215AF2:
mov r2, #6
mov r0, #0x5c
mov r1, #0x91
lsl r2, r2, #0x10
bl CreateHeap
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
bl GfGfx_DisableEngineAPlanes
bl GfGfx_DisableEngineBPlanes
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _02215CAC ; =0xFFFFE0FF
and r1, r0
str r1, [r2]
ldr r2, _02215CB0 ; =0x04001000
ldr r1, [r2]
and r0, r1
str r0, [r2]
bl ov96_02215FA8
ldr r0, _02215CB4 ; =gSystem + 0x60
mov r1, #1
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
ldr r1, _02215CB8 ; =0x00000814
add r0, r5, #0
bl ov96_021E5D94
ldr r2, _02215CB8 ; =0x00000814
mov r1, #0
add r4, r0, #0
bl MI_CpuFill8
mov r0, #0x91
str r0, [r4]
ldr r1, _02215CBC ; =0x00000708
ldr r0, _02215CC0 ; =0x00000438
str r1, [r4, r0]
add r0, r5, #0
bl ov96_021E5DEC
b _02215CA4
_02215B5C:
ldr r0, [r4]
bl BgConfig_Alloc
str r0, [r4, #4]
add r0, r5, #0
mov r1, #8
bl ov96_021E6670
add r0, r4, #0
bl ov96_0221654C
add r0, r4, #0
bl ov96_0221663C
add r0, r4, #0
bl ov96_022193E4
add r0, r4, #0
bl ov96_022162F4
add r0, r4, #0
add r1, r5, #0
bl ov96_02217AE4
add r0, r5, #0
bl ov96_021E5DEC
b _02215CA4
_02215B94:
ldr r0, [r4, #0x1c]
bl ov96_021EAA00
cmp r0, #0
bne _02215BA0
b _02215CA4
_02215BA0:
add r0, r4, #0
bl ov96_022163AC
ldr r0, [r4, #0xc]
bl sub_0200E2B0
add r3, r0, #0
ldr r2, [r4, #0x18]
add r0, r5, #0
mov r1, #0
bl ov96_021E61D8
ldr r0, [r0]
mov r1, #0
bl Sprite_SetDrawPriority
add r0, r5, #0
bl ov96_021E5DEC
b _02215CA4
_02215BC8:
add r0, r5, #0
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r6, r0, #0x18
ldr r1, [r4]
add r0, r5, #0
bl ov96_02219F7C
mov r1, #0x61
lsl r1, r1, #2
str r0, [r4, r1]
ldr r0, [r4, #0x14]
str r0, [sp]
ldr r0, [r4, #0x10]
str r0, [sp, #4]
str r6, [sp, #8]
ldr r0, [r4]
str r0, [sp, #0xc]
str r5, [sp, #0x10]
ldr r0, [r4, #8]
ldr r1, [r4, #0xc]
ldr r2, [r4, #0x18]
ldr r3, [r4, #4]
bl ov96_022194C4
mov r1, #6
lsl r1, r1, #6
str r0, [r4, r1]
add r0, r5, #0
bl ov96_021E5DEC
b _02215CA4
_02215C0A:
add r0, r4, #0
add r1, r5, #0
bl ov96_02217B84
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
bl ov96_022195C8
ldr r0, [r4, #0x1c]
mov r3, #6
str r0, [sp]
ldr r0, [r4]
lsl r3, r3, #6
str r0, [sp, #4]
ldr r0, _02215CC4 ; =0x0000043C
ldr r1, [r4, #8]
ldr r2, [r4, #0xc]
ldr r3, [r4, r3]
add r0, r4, r0
bl ov96_02217544
ldr r0, [r4, #4]
bl ov96_021E6030
ldr r0, _02215CC8 ; =0x000007F8
ldr r1, [r4, #4]
ldr r2, [r4, #8]
add r0, r4, r0
bl ov96_0221587C
add r0, r5, #0
mov r1, #1
bl ov96_021E5DFC
add r0, r5, #0
bl ov96_021E5F24
cmp r0, #0
bne _02215C84
add r0, r5, #0
bl ov96_021E5F54
add r0, #0x28
bl ov96_021E8A20
ldr r2, [r0, #0x20]
ldr r1, _02215CCC ; =0xFFF80007
and r1, r2
ldr r2, _02215CC0 ; =0x00000438
ldr r2, [r4, r2]
lsl r2, r2, #0x10
lsr r2, r2, #0xd
orr r1, r2
str r1, [r0, #0x20]
mov r0, #0x62
lsl r0, r0, #2
add r0, r4, r0
add r1, r5, #0
bl ov96_02218330
_02215C84:
mov r0, #2
bl sub_0203A994
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineATogglePlanes
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineBTogglePlanes
add sp, #0x14
mov r0, #1
pop {r3, r4, r5, r6, pc}
_02215CA0:
bl GF_AssertFail
_02215CA4:
mov r0, #0
add sp, #0x14
pop {r3, r4, r5, r6, pc}
nop
_02215CAC: .word 0xFFFFE0FF
_02215CB0: .word 0x04001000
_02215CB4: .word gSystem + 0x60
_02215CB8: .word 0x00000814
_02215CBC: .word 0x00000708
_02215CC0: .word 0x00000438
_02215CC4: .word 0x0000043C
_02215CC8: .word 0x000007F8
_02215CCC: .word 0xFFF80007
thumb_func_end ov96_02215AC4
thumb_func_start ov96_02215CD0
ov96_02215CD0: ; 0x02215CD0
push {r4, lr}
bl ov96_021E5DC4
add r4, r0, #0
bne _02215CDE
bl GF_AssertFail
_02215CDE:
ldr r0, [r4, #0xc]
bl sub_0200D020
mov r0, #1
pop {r4, pc}
thumb_func_end ov96_02215CD0
thumb_func_start ov96_02215CE8
ov96_02215CE8: ; 0x02215CE8
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
bl ov96_021E6040
add r6, r0, #0
bl ov96_021E9510
mov r4, #0
add r7, r4, #0
_02215CFC:
lsl r1, r4, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
bl ov96_021E5FBC
add r3, r0, #0
str r7, [sp]
mov r0, #3
str r0, [sp, #4]
ldr r0, _02215D48 ; =0x0000012A
add r1, r6, #0
str r0, [sp, #8]
add r0, r5, #0
add r2, r4, #0
bl ov96_021E95F8
add r4, r4, #1
cmp r4, #4
blt _02215CFC
add r0, r6, #0
mov r1, #1
bl ov96_021E93B4
add r0, r6, #0
mov r1, #7
bl ov96_0221A56C
add r0, r6, #0
bl ov96_021E952C
add r0, r6, #0
mov r1, #7
bl ov96_021E9570
mov r0, #1
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
_02215D48: .word 0x0000012A
thumb_func_end ov96_02215CE8
thumb_func_start ov96_02215D4C
ov96_02215D4C: ; 0x02215D4C
push {r3, r4, r5, lr}
add r5, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
mov r0, #0x61
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov96_02219FDC
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
bl ov96_022195E8
ldr r0, _02215DB4 ; =0x0000043C
add r0, r4, r0
bl ov96_022177D8
add r0, r4, #0
bl ov96_02217DBC
add r0, r4, #0
bl ov96_02216390
add r0, r4, #0
bl ov96_022165FC
bl sub_0203A914
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0
add r1, r0, #0
bl Main_SetHBlankIntrCB
add r0, r5, #0
bl ov96_021E5DAC
ldr r0, _02215DB8 ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
mov r0, #0x91
bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
nop
_02215DB4: .word 0x0000043C
_02215DB8: .word gSystem + 0x60
thumb_func_end ov96_02215D4C
thumb_func_start ov96_02215DBC
ov96_02215DBC: ; 0x02215DBC
push {r4, lr}
add r4, r1, #0
bl ov96_021E5DC4
mov r1, #0xa8
mul r1, r4
add r1, r0, r1
mov r0, #0x6e
lsl r0, r0, #2
ldr r0, [r1, r0]
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02215DBC
thumb_func_start ov96_02215DD4
ov96_02215DD4: ; 0x02215DD4
push {r4, lr}
add r4, r1, #0
bl ov96_021E5DC4
mov r1, #0x69
lsl r1, r1, #2
add r1, r0, r1
mov r0, #0xa8
mul r0, r4
add r0, r1, r0
add r0, #0x2c
pop {r4, pc}
thumb_func_end ov96_02215DD4
thumb_func_start ov96_02215DEC
ov96_02215DEC: ; 0x02215DEC
push {r4, r5, lr}
sub sp, #0xc
add r5, r1, #0
add r4, r2, #0
bl ov96_021E5DC4
mov r1, #0x69
lsl r1, r1, #2
add r1, r0, r1
mov r0, #0xa8
mul r0, r5
add r2, r1, r0
add r0, sp, #4
str r0, [sp]
ldr r0, [r2, #4]
ldr r1, [r2, #0x2c]
ldr r2, [r2, #0x30]
ldr r0, [r0]
asr r1, r1, #0xc
asr r2, r2, #0xc
add r3, sp, #8
bl ov96_021EB06C
ldr r0, [sp, #8]
lsl r0, r0, #0xc
str r0, [r4]
ldr r0, [sp, #4]
lsl r0, r0, #0xc
str r0, [r4, #4]
add sp, #0xc
pop {r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_02215DEC
thumb_func_start ov96_02215E2C
ov96_02215E2C: ; 0x02215E2C
push {r4, lr}
add r4, r1, #0
bl ov96_021E5DC4
mov r1, #0xa8
mul r1, r4
add r1, r0, r1
mov r0, #0x81
lsl r0, r0, #2
ldr r0, [r1, r0]
lsl r0, r0, #0xc
lsr r0, r0, #0x1c
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02215E2C
thumb_func_start ov96_02215E48
ov96_02215E48: ; 0x02215E48
push {r4, lr}
add r4, r1, #0
bl ov96_021E5DC4
mov r1, #0xa8
mul r1, r4
add r1, r0, r1
mov r0, #0x6a
lsl r0, r0, #2
ldr r0, [r1, r0]
ldr r0, [r0, #8]
asr r0, r0, #0xc
lsl r0, r0, #0x18
lsr r0, r0, #0x18
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02215E48
thumb_func_start ov96_02215E68
ov96_02215E68: ; 0x02215E68
push {r4, lr}
add r4, r1, #0
bl ov96_021E5DC4
mov r1, #0xa8
mul r1, r4
add r1, r0, r1
mov r0, #0x6a
lsl r0, r0, #2
ldr r1, [r1, r0]
ldr r0, [r1, #8]
ldr r1, [r1, #4]
ldr r1, [r1, #8]
bl FX_Div
mov r1, #0x64
mul r1, r0
asr r0, r1, #0xc
lsl r0, r0, #0x18
lsr r0, r0, #0x18
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02215E68
thumb_func_start ov96_02215E94
ov96_02215E94: ; 0x02215E94
push {r4, lr}
add r4, r1, #0
bl ov96_021E5DC4
mov r1, #0xa8
mul r1, r4
add r1, r0, r1
mov r0, #0x81
lsl r0, r0, #2
ldr r0, [r1, r0]
lsl r0, r0, #5
lsr r0, r0, #0x1f
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02215E94
thumb_func_start ov96_02215EB0
ov96_02215EB0: ; 0x02215EB0
push {r4, lr}
add r4, r1, #0
bl ov96_021E5DC4
mov r1, #0xa8
mul r1, r4
add r1, r0, r1
mov r0, #0x81
lsl r0, r0, #2
ldr r0, [r1, r0]
lsl r0, r0, #4
lsr r0, r0, #0x1f
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02215EB0
thumb_func_start ov96_02215ECC
ov96_02215ECC: ; 0x02215ECC
push {r4, lr}
add r4, r1, #0
bl ov96_021E5DC4
mov r1, #0x69
lsl r1, r1, #2
add r1, r0, r1
mov r0, #0xa8
mul r0, r4
add r0, r1, r0
bl ov96_02218688
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02215ECC
thumb_func_start ov96_02215EE8
ov96_02215EE8: ; 0x02215EE8
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r6, r2, #0
bl ov96_021E5DC4
add r7, r0, #0
mov r0, #0xa8
add r5, r4, #0
mul r5, r0
mov r0, #0x81
lsl r0, r0, #2
add r4, r7, r0
ldr r0, [r4, r5]
lsl r0, r0, #3
lsr r0, r0, #0x1f
beq _02215F0C
bl GF_AssertFail
_02215F0C:
mov r0, #1
ldr r1, [r4, r5]
lsl r0, r0, #0x1e
orr r0, r1
str r0, [r4, r5]
mov r0, #0
ldrsh r1, [r6, r0]
mov r0, #7
add r2, r7, r5
lsl r0, r0, #6
strh r1, [r2, r0]
mov r1, #2
ldrsh r1, [r6, r1]
add r0, r0, #2
strh r1, [r2, r0]
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_02215EE8
thumb_func_start ov96_02215F2C
ov96_02215F2C: ; 0x02215F2C
push {r4, r5, r6, lr}
add r6, r1, #0
bl ov96_021E5DC4
mov r1, #0x81
lsl r1, r1, #2
add r5, r0, r1
mov r0, #0xa8
add r4, r6, #0
mul r4, r0
ldr r0, [r5, r4]
lsl r0, r0, #3
lsr r0, r0, #0x1f
beq _02215F4C
bl GF_AssertFail
_02215F4C:
ldr r0, [r5, r4]
lsl r0, r0, #5
lsr r0, r0, #0x1f
beq _02215F58
bl GF_AssertFail
_02215F58:
mov r0, #2
ldr r1, [r5, r4]
lsl r0, r0, #0x1c
orr r0, r1
str r0, [r5, r4]
pop {r4, r5, r6, pc}
thumb_func_end ov96_02215F2C
thumb_func_start ov96_02215F64
ov96_02215F64: ; 0x02215F64
push {r4, lr}
add r4, r1, #0
bl ov96_021E5DC4
mov r1, #0x69
lsl r1, r1, #2
add r1, r0, r1
mov r0, #0xa8
mul r0, r4
add r0, r1, r0
bl ov96_0221910C
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02215F64
thumb_func_start ov96_02215F80
ov96_02215F80: ; 0x02215F80
push {r3, r4, r5, lr}
add r5, r1, #0
add r4, r2, #0
bl ov96_021E5DC4
mov r1, #0x69
lsl r1, r1, #2
add r1, r0, r1
mov r0, #0xa8
mul r0, r5
add r0, r1, r0
add r1, r4, #0
bl ov96_022186B8
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_02215F80
thumb_func_start ov96_02215FA0
ov96_02215FA0: ; 0x02215FA0
ldr r3, _02215FA4 ; =ov96_022186CC
bx r3
.balign 4, 0
_02215FA4: .word ov96_022186CC
thumb_func_end ov96_02215FA0
thumb_func_start ov96_02215FA8
ov96_02215FA8: ; 0x02215FA8
push {r4, lr}
sub sp, #0x28
ldr r4, _02215FC4 ; =ov96_0221D774
add r3, sp, #0
mov r2, #5
_02215FB2:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _02215FB2
add r0, sp, #0
bl GfGfx_SetBanks
add sp, #0x28
pop {r4, pc}
.balign 4, 0
_02215FC4: .word ov96_0221D774
thumb_func_end ov96_02215FA8
thumb_func_start ov96_02215FC8
ov96_02215FC8: ; 0x02215FC8
push {r4, r5, r6, r7, lr}
sub sp, #0x14
str r0, [sp]
bl ov96_021E5DC4
str r0, [sp, #0xc]
ldr r0, [sp]
bl ov96_021E5F54
str r0, [sp, #4]
add r0, #0x28
bl ov96_021E8A20
str r0, [sp, #8]
ldr r0, [sp]
bl ov96_021E5F24
cmp r0, #0
beq _02215FF0
b _022161C4
_02215FF0:
ldr r0, [sp, #8]
ldr r0, [r0, #0x20]
lsr r0, r0, #0x1f
beq _0221600A
mov r1, #0x62
ldr r0, [sp, #0xc]
lsl r1, r1, #2
add r0, r0, r1
ldr r1, [sp]
bl ov96_02218330
add sp, #0x14
pop {r4, r5, r6, r7, pc}
_0221600A:
ldr r1, _022161D4 ; =0x00000438
ldr r0, [sp, #0xc]
ldr r0, [r0, r1]
cmp r0, #0
ble _02216032
sub r2, r0, #1
ldr r0, [sp, #0xc]
str r2, [r0, r1]
ldr r0, [sp, #8]
ldr r2, [r0, #0x20]
ldr r0, _022161D8 ; =0xFFF80007
and r2, r0
ldr r0, [sp, #0xc]
ldr r0, [r0, r1]
add r1, r2, #0
lsl r0, r0, #0x10
lsr r0, r0, #0xd
orr r1, r0
ldr r0, [sp, #8]
str r1, [r0, #0x20]
_02216032:
ldr r0, [sp, #4]
add r0, #0x50
bl ov96_021E8A20
add r4, r0, #0
ldr r0, [sp, #4]
bl ov96_021E8A20
add r3, r0, #0
mov r2, #4
_02216046:
ldmia r3!, {r0, r1}
stmia r4!, {r0, r1}
sub r2, r2, #1
bne _02216046
ldr r0, [r3]
mov r1, #0x66
str r0, [r4]
mov r0, #0
str r0, [sp, #0x10]
ldr r0, [sp, #4]
lsl r1, r1, #2
add r0, #0x50
str r0, [sp, #4]
ldr r0, [sp, #0xc]
add r6, r0, r1
_02216064:
ldr r0, [sp, #4]
bl ov96_021E8A20
add r7, r0, #0
ldr r0, [r7]
add r4, r6, #0
add r5, r6, #0
lsl r0, r0, #0xf
add r4, #8
add r5, #0xc
lsr r0, r0, #0x1f
beq _022160E0
ldr r0, [r4]
lsl r1, r0, #0x11
lsr r1, r1, #0x1f
beq _02216092
lsl r2, r0, #0x10
lsr r2, r2, #0x1f
beq _02216092
ldr r1, _022161DC ; =0xFFFFBFFF
and r0, r1
str r0, [r4]
b _022160BA
_02216092:
cmp r1, #0
bne _022160BA
ldr r1, [r4]
lsl r0, r1, #0x10
lsr r0, r0, #0x1f
bne _022160BA
mov r0, #1
lsl r0, r0, #0xe
orr r1, r0
lsl r0, r0, #1
orr r0, r1
str r0, [r4]
ldr r0, [r7]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
strh r0, [r6, #4]
ldr r0, [r7]
lsl r0, r0, #0x10
lsr r0, r0, #0x18
strh r0, [r6, #6]
_022160BA:
ldr r0, [r7]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
strh r0, [r6]
ldr r0, [r7]
lsl r0, r0, #0x10
lsr r0, r0, #0x18
strh r0, [r6, #2]
ldr r1, [r4]
ldr r0, _022161E0 ; =0xFFFFC000
and r0, r1
lsl r1, r1, #0x12
lsr r1, r1, #0x12
add r2, r1, #1
ldr r1, _022161E4 ; =0x00003FFF
and r1, r2
orr r0, r1
str r0, [r4]
b _02216104
_022160E0:
ldr r1, [r4]
lsl r0, r1, #0x10
lsr r0, r0, #0x1f
beq _02216104
ldr r0, _022161E8 ; =0xE000FFFF
and r0, r1
lsl r1, r1, #0x12
lsr r1, r1, #0x12
lsl r1, r1, #0x13
lsr r1, r1, #3
orr r1, r0
ldr r0, _022161E0 ; =0xFFFFC000
and r1, r0
sub r0, r0, #1
and r1, r0
ldr r0, _022161EC ; =0xFFFF7FFF
and r0, r1
str r0, [r4]
_02216104:
mov r0, #0
mov r1, #2
ldrsh r0, [r6, r0]
ldrsh r1, [r6, r1]
bl ov96_022158D4
add r2, r0, #0
add r0, r5, #0
add r1, r4, #0
bl ov96_02219460
ldr r0, [r5, #0x60]
lsl r1, r0, #5
lsr r1, r1, #0x1f
beq _02216172
lsl r0, r0, #6
lsr r1, r0, #0x1e
cmp r1, #1
bne _02216150
ldr r0, [r7]
lsl r0, r0, #0xd
lsr r0, r0, #0x1e
cmp r0, #1
bne _02216150
add r0, r5, #0
bl ov96_02219398
add r0, r5, #0
bl ov96_02218A68
ldr r1, [r5, #0x60]
ldr r0, _022161F0 ; =0xFCFFFFFF
and r1, r0
mov r0, #2
lsl r0, r0, #0x18
orr r0, r1
str r0, [r5, #0x60]
b _02216172
_02216150:
cmp r1, #2
bne _02216172
ldr r0, [r7]
lsl r0, r0, #0xd
lsr r0, r0, #0x1e
cmp r0, #2
bne _02216172
ldr r1, [r5, #0x60]
ldr r0, _022161F4 ; =0xFBFFFFFF
and r1, r0
ldr r0, _022161F0 ; =0xFCFFFFFF
and r0, r1
str r0, [r5, #0x60]
add r0, r5, #0
mov r1, #4
bl ov96_02218578
_02216172:
ldr r0, [sp, #4]
add r6, #0xa8
add r0, #0x28
str r0, [sp, #4]
ldr r0, [sp, #0x10]
add r0, r0, #1
str r0, [sp, #0x10]
cmp r0, #4
bge _02216186
b _02216064
_02216186:
mov r1, #0x61
ldr r0, [sp, #0xc]
lsl r1, r1, #2
ldr r0, [r0, r1]
bl ov96_02219FE4
mov r1, #0x66
ldr r0, [sp, #0xc]
lsl r1, r1, #2
add r0, r0, r1
ldr r1, [sp]
bl ov96_022180CC
ldr r0, [sp, #8]
ldr r1, [r0, #0x20]
lsl r0, r1, #0xd
lsr r0, r0, #0x10
bne _022161B6
ldr r0, _022161F8 ; =0x7FFFFFFF
and r1, r0
add r0, r0, #1
orr r1, r0
ldr r0, [sp, #8]
str r1, [r0, #0x20]
_022161B6:
mov r1, #0x62
ldr r0, [sp, #0xc]
lsl r1, r1, #2
add r0, r0, r1
ldr r1, [sp]
bl ov96_02218330
_022161C4:
ldr r1, _022161FC ; =0x0000043C
ldr r0, [sp, #0xc]
add r0, r0, r1
ldr r1, [sp]
bl ov96_0221768C
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_022161D4: .word 0x00000438
_022161D8: .word 0xFFF80007
_022161DC: .word 0xFFFFBFFF
_022161E0: .word 0xFFFFC000
_022161E4: .word 0x00003FFF
_022161E8: .word 0xE000FFFF
_022161EC: .word 0xFFFF7FFF
_022161F0: .word 0xFCFFFFFF
_022161F4: .word 0xFBFFFFFF
_022161F8: .word 0x7FFFFFFF
_022161FC: .word 0x0000043C
thumb_func_end ov96_02215FC8
thumb_func_start ov96_02216200
ov96_02216200: ; 0x02216200
push {r3, r4, r5, lr}
add r4, r0, #0
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
add r0, r4, #0
bl ov96_021E5DC4
mov r1, #6
lsl r1, r1, #6
ldr r0, [r0, r1]
bl ov96_0221978C
lsl r0, r0, #0x18
lsr r5, r0, #0x18
add r0, r4, #0
add r1, r5, #0
bl ov96_021E8318
add r0, r4, #0
add r1, r5, #0
bl ov96_022193F8
pop {r3, r4, r5, pc}
thumb_func_end ov96_02216200
thumb_func_start ov96_02216234
ov96_02216234: ; 0x02216234
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
bl ov96_021E5DC4
add r4, r0, #0
add r0, r6, #0
bl ov96_021E5F54
add r7, r0, #0
bl ov96_021E8A20
add r7, #0xf0
add r5, r0, #0
add r0, r7, #0
bl ov96_021E8A20
ldr r0, [r0, #0x20]
lsr r0, r0, #0x1f
cmp r0, #1
bne _02216282
ldr r0, _022162E0 ; =0x0000043C
add r0, r4, r0
bl ov96_02217820
ldr r0, [r4, #0x1c]
mov r1, #1
bl ov96_021EB144
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
bl ov96_0221964C
ldr r1, _022162E4 ; =ov96_02216200
add r0, r6, #0
bl ov96_021E8324
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02216282:
bl System_GetTouchNew
cmp r0, #0
beq _022162A4
add r0, r6, #0
bl ov96_021E5F24
add r1, r0, #0
mov r0, #1
lsl r1, r1, #0x18
str r0, [sp]
add r0, r6, #0
lsr r1, r1, #0x18
mov r2, #3
mov r3, #0
bl ov96_021E8228
_022162A4:
bl System_GetTouchHeld
cmp r0, #0
beq _022162D4
ldr r2, [r5]
mov r0, #0xff
ldr r1, _022162E8 ; =gSystem + 0x40
bic r2, r0
ldrh r0, [r1, #0x20]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
orr r2, r0
ldr r0, _022162EC ; =0xFFFF00FF
str r2, [r5]
and r2, r0
ldrh r0, [r1, #0x22]
add r1, r2, #0
lsl r0, r0, #0x18
lsr r0, r0, #0x10
orr r1, r0
mov r0, #1
lsl r0, r0, #0x10
orr r0, r1
b _022162DA
_022162D4:
ldr r1, [r5]
ldr r0, _022162F0 ; =0xFFFEFFFF
and r0, r1
_022162DA:
str r0, [r5]
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_022162E0: .word 0x0000043C
_022162E4: .word ov96_02216200
_022162E8: .word gSystem + 0x40
_022162EC: .word 0xFFFF00FF
_022162F0: .word 0xFFFEFFFF
thumb_func_end ov96_02216234
thumb_func_start ov96_022162F4
ov96_022162F4: ; 0x022162F4
push {r3, r4, lr}
sub sp, #0x4c
ldr r3, _02216380 ; =ov96_0221D720
add r4, r0, #0
ldmia r3!, {r0, r1}
add r2, sp, #0x34
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r3, _02216384 ; =ov96_0221D754
add r2, sp, #0x14
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r3, _02216388 ; =ov96_0221D6F4
add r2, sp, #0
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
mov r0, #0x80
str r0, [sp]
ldr r0, [r4]
bl SpriteRenderer_Create
str r0, [r4, #8]
bl SpriteRenderer_CreateGfxHandler
str r0, [r4, #0xc]
ldr r0, [r4, #8]
add r1, sp, #0x14
add r2, sp, #0
mov r3, #0x20
bl sub_0200CF70
ldr r0, [r4, #8]
ldr r1, [r4, #0xc]
mov r2, #0x80
bl sub_0200CFF4
ldr r0, [r4, #8]
ldr r1, [r4, #0xc]
add r2, sp, #0x34
bl SpriteRenderer_Init2DGfxResManagersFromCountsArray
ldr r0, [r4, #8]
bl SpriteRenderer_GetG2dRendererPtr
mov r2, #0x1e
mov r1, #0
lsl r2, r2, #0x10
bl G2dRenderer_SetSubSurfaceCoords
ldr r0, [r4]
ldr r1, _0221638C ; =0x000002E7
mov r2, #1
bl ov96_021E9A78
str r0, [r4, #0x18]
add sp, #0x4c
pop {r3, r4, pc}
.balign 4, 0
_02216380: .word ov96_0221D720
_02216384: .word ov96_0221D754
_02216388: .word ov96_0221D6F4
_0221638C: .word 0x000002E7
thumb_func_end ov96_022162F4
thumb_func_start ov96_02216390
ov96_02216390: ; 0x02216390
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x18]
bl ov96_021E9C0C
ldr r0, [r4, #8]
ldr r1, [r4, #0xc]
bl SpriteRenderer_UnloadResourcesAndRemoveGfxHandler
ldr r0, [r4, #8]
bl SpriteRenderer_Delete
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02216390
thumb_func_start ov96_022163AC
ov96_022163AC: ; 0x022163AC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
ldr r6, [r0, #8]
ldr r5, [r0, #0xc]
cmp r6, #0
bne _022163BC
bl GF_AssertFail
_022163BC:
cmp r5, #0
bne _022163C4
bl GF_AssertFail
_022163C4:
mov r4, #1
str r4, [sp]
ldr r0, _022164E0 ; =0x00002710
str r4, [sp, #4]
str r0, [sp, #8]
add r0, r6, #0
add r1, r5, #0
mov r2, #0xf2
mov r3, #0x10
bl SpriteRenderer_LoadCharResObjFromNarcId
mov r0, #0
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, _022164E0 ; =0x00002710
str r4, [sp, #8]
str r0, [sp, #0xc]
add r0, r6, #0
add r1, r5, #0
mov r2, #0xf2
mov r3, #0xd
bl SpriteRenderer_LoadPlttResObjFromNarcId
add r0, r4, #0
str r0, [sp]
ldr r0, _022164E0 ; =0x00002710
add r1, r5, #0
str r0, [sp, #4]
add r0, r6, #0
mov r2, #0xf2
mov r3, #0xf
bl SpriteRenderer_LoadCellResObjFromNarcId
add r0, r4, #0
str r0, [sp]
ldr r0, _022164E0 ; =0x00002710
add r1, r5, #0
str r0, [sp, #4]
add r0, r6, #0
mov r2, #0xf2
mov r3, #0xe
bl SpriteRenderer_LoadAnimResObjFromNarcId
mov r0, #1
str r0, [sp]
mov r4, #2
ldr r0, _022164E4 ; =0x00002711
str r4, [sp, #4]
str r0, [sp, #8]
add r0, r6, #0
add r1, r5, #0
mov r2, #0xf2
mov r3, #0x14
bl SpriteRenderer_LoadCharResObjFromNarcId
mov r0, #0
str r0, [sp]
add r0, r4, #0
str r0, [sp, #4]
ldr r0, _022164E4 ; =0x00002711
str r4, [sp, #8]
str r0, [sp, #0xc]
add r0, r6, #0
add r1, r5, #0
mov r2, #0xf2
mov r3, #0x11
bl SpriteRenderer_LoadPlttResObjFromNarcId
mov r0, #1
str r0, [sp]
ldr r0, _022164E4 ; =0x00002711
add r1, r5, #0
str r0, [sp, #4]
add r0, r6, #0
mov r2, #0xf2
mov r3, #0x13
bl SpriteRenderer_LoadCellResObjFromNarcId
mov r0, #1
str r0, [sp]
ldr r0, _022164E4 ; =0x00002711
add r1, r5, #0
str r0, [sp, #4]
add r0, r6, #0
mov r2, #0xf2
mov r3, #0x12
bl SpriteRenderer_LoadAnimResObjFromNarcId
add r7, r4, #0
mov r4, #0
_0221647A:
mov r0, #1
str r0, [sp]
ldr r0, _022164E8 ; =0x00002712
str r7, [sp, #4]
add r0, r4, r0
str r0, [sp, #8]
add r0, r6, #0
add r1, r5, #0
mov r2, #0xf2
mov r3, #0x18
bl SpriteRenderer_LoadCharResObjFromNarcId
mov r0, #0
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, _022164E8 ; =0x00002712
str r7, [sp, #8]
add r0, r4, r0
str r0, [sp, #0xc]
add r0, r6, #0
add r1, r5, #0
mov r2, #0xf2
mov r3, #0x15
bl SpriteRenderer_LoadPlttResObjFromNarcId
add r4, r4, #1
cmp r4, #2
blt _0221647A
mov r0, #1
str r0, [sp]
ldr r0, _022164E8 ; =0x00002712
add r1, r5, #0
str r0, [sp, #4]
add r0, r6, #0
mov r2, #0xf2
mov r3, #0x17
bl SpriteRenderer_LoadCellResObjFromNarcId
mov r0, #1
str r0, [sp]
ldr r0, _022164E8 ; =0x00002712
add r1, r5, #0
str r0, [sp, #4]
add r0, r6, #0
mov r2, #0xf2
mov r3, #0x16
bl SpriteRenderer_LoadAnimResObjFromNarcId
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_022164E0: .word 0x00002710
_022164E4: .word 0x00002711
_022164E8: .word 0x00002712
thumb_func_end ov96_022163AC
thumb_func_start ov96_022164EC
ov96_022164EC: ; 0x022164EC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
ldr r6, _02216548 ; =ov96_0221D79C
add r7, r2, #0
str r3, [sp]
add r5, r0, #0
add r4, r1, #0
add r3, sp, #4
mov r2, #6
_022164FE:
ldmia r6!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _022164FE
ldr r0, [r6]
cmp r5, #0
str r0, [r3]
bne _02216512
bl GF_AssertFail
_02216512:
cmp r4, #0
bne _0221651A
bl GF_AssertFail
_0221651A:
add r1, sp, #4
strh r7, [r1]
ldr r0, [sp]
mov r3, #0x1e
strh r0, [r1, #2]
add r0, sp, #0x40
ldrh r2, [r0, #0x10]
lsl r3, r3, #0x10
strh r2, [r1, #6]
ldrh r0, [r0, #0x14]
add r1, r4, #0
add r2, sp, #4
str r0, [sp, #0xc]
add r0, r5, #0
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
mov r1, #1
add r4, r0, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r0, r4, #0
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02216548: .word ov96_0221D79C
thumb_func_end ov96_022164EC
thumb_func_start ov96_0221654C
ov96_0221654C: ; 0x0221654C
push {r4, r5, r6, r7, lr}
sub sp, #0xdc
str r0, [sp]
ldr r6, [r0, #4]
ldr r0, [r0]
add r3, sp, #8
ldr r4, _022165EC ; =ov96_0221D6C4
str r0, [sp, #4]
add r2, r3, #0
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl SetBothScreensModesAndDisable
ldr r4, _022165F0 ; =ov96_0221D834
add r3, sp, #0x18
mov r2, #0x18
_02216572:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _02216572
ldr r0, [r4]
ldr r5, _022165F4 ; =ov96_0221D738
str r0, [r3]
mov r7, #0
add r4, sp, #0x18
_02216584:
ldr r1, [r5]
add r0, r6, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
add r2, r4, #0
mov r3, #0
bl InitBgFromTemplate
ldr r1, [r5]
add r0, r6, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl BgClearTilemapBufferAndCommit
ldr r0, [r5]
ldr r3, [sp, #4]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r1, #0x20
mov r2, #0
bl BG_ClearCharDataRange
add r7, r7, #1
add r4, #0x1c
add r5, r5, #4
cmp r7, #7
blt _02216584
ldr r3, [sp]
ldr r2, _022165F8 ; =0x00000135
ldr r3, [r3]
mov r0, #1
mov r1, #0x1b
bl NewMsgDataFromNarc
ldr r1, [sp]
str r0, [r1, #0x14]
add r0, r1, #0
ldr r0, [r0]
bl MessageFormat_New
ldr r1, [sp]
str r0, [r1, #0x10]
ldr r1, [r1]
mov r0, #4
bl FontID_Alloc
mov r0, #8
mov r1, #0
bl GfGfx_EngineATogglePlanes
add sp, #0xdc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_022165EC: .word ov96_0221D6C4
_022165F0: .word ov96_0221D834
_022165F4: .word ov96_0221D738
_022165F8: .word 0x00000135
thumb_func_end ov96_0221654C
thumb_func_start ov96_022165FC
ov96_022165FC: ; 0x022165FC
push {r4, r5, r6, lr}
add r6, r0, #0
add r0, #0x20
bl RemoveWindow
ldr r0, [r6, #0x10]
bl MessageFormat_Delete
ldr r0, [r6, #0x14]
bl DestroyMsgData
ldr r5, _02216638 ; =ov96_0221D738
mov r4, #0
_02216616:
ldr r1, [r5]
ldr r0, [r6, #4]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl FreeBgTilemapBuffer
add r4, r4, #1
add r5, r5, #4
cmp r4, #7
blt _02216616
mov r0, #4
bl FontID_Release
ldr r0, [r6, #4]
bl FreeToHeap
pop {r4, r5, r6, pc}
.balign 4, 0
_02216638: .word ov96_0221D738
thumb_func_end ov96_022165FC
thumb_func_start ov96_0221663C
ov96_0221663C: ; 0x0221663C
push {r4, lr}
sub sp, #0x10
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
mov r1, #1
add r4, r0, #0
str r1, [sp, #8]
ldr r0, [r4]
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xf2
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r3, #1
str r3, [sp, #8]
ldr r0, [r4]
mov r1, #3
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xf2
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #5
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xf2
mov r3, #2
bl GfGfxLoader_LoadCharData
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #2
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xf2
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r3, #1
str r3, [sp, #8]
ldr r0, [r4]
mov r1, #4
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xf2
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #6
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xf2
mov r3, #2
bl GfGfxLoader_LoadScrnData
mov r1, #0
str r1, [sp]
ldr r0, [r4]
add r2, r1, #0
str r0, [sp, #4]
mov r0, #0xf2
add r3, r1, #0
bl GfGfxLoader_GXLoadPal
mov r1, #0x1e
ldr r2, [r4]
mov r0, #0
lsl r1, r1, #4
bl LoadFontPal0
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #9
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xf2
mov r3, #6
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #0xb
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xf2
mov r3, #4
bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #0xc
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xf2
mov r3, #4
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r4]
mov r1, #0xa
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0xf2
mov r3, #6
bl GfGfxLoader_LoadScrnData
mov r3, #0
str r3, [sp]
ldr r0, [r4]
mov r1, #8
str r0, [sp, #4]
mov r0, #0xf2
mov r2, #4
bl GfGfxLoader_GXLoadPal
add sp, #0x10
pop {r4, pc}
thumb_func_end ov96_0221663C
thumb_func_start ov96_02216770
ov96_02216770: ; 0x02216770
push {r3, r4, r5, r6, lr}
sub sp, #4
add r4, r0, #0
add r5, r1, #0
add r0, #0xe4
add r1, r2, #0
ldr r2, [r0]
add r6, r3, #0
lsl r0, r2, #0x14
lsr r0, r0, #0x1c
cmp r0, #3
bls _0221678A
b _0221691E
_0221678A:
add r3, r0, r0
add r3, pc
ldrh r3, [r3, #6]
lsl r3, r3, #0x10
asr r3, r3, #0x10
add pc, r3
_02216796: ; jump table
.short _0221679E - _02216796 - 2 ; case 0
.short _02216810 - _02216796 - 2 ; case 1
.short _02216870 - _02216796 - 2 ; case 2
.short _02216922 - _02216796 - 2 ; case 3
_0221679E:
mov r1, #0
mov r2, #2
mov r3, #0x1e
ldrsh r1, [r5, r1]
ldrsh r2, [r5, r2]
ldr r0, [r4, #0x10]
lsl r3, r3, #0x10
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
ldr r0, [r4, #0x10]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4, #0x10]
bl UnkImageStruct_ResetSpriteAnimCtrlState
mov r1, #0
mov r2, #2
mov r3, #0x1e
ldrsh r1, [r5, r1]
ldrsh r2, [r5, r2]
ldr r0, [r4, #0xc]
lsl r3, r3, #0x10
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
ldr r0, [r4, #0xc]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4]
mov r1, #0
bl ov96_021EAB38
add r0, r4, #0
mov r1, #0
add r0, #0xe2
strb r1, [r0]
ldr r0, _02216928 ; =0x000008B4
ldr r1, [sp, #0x20]
bl ov96_022193CC
add r0, r4, #0
add r0, #0xe4
ldr r1, [r0]
ldr r0, _0221692C ; =0xFFFFF0FF
add r2, r1, #0
and r2, r0
lsl r0, r1, #0x14
lsr r0, r0, #0x1c
add r0, r0, #1
lsl r0, r0, #0x1c
lsr r0, r0, #0x14
orr r0, r2
add r4, #0xe4
add sp, #4
str r0, [r4]
pop {r3, r4, r5, r6, pc}
_02216810:
add r1, sp, #0
ldr r0, [r4, #0xc]
add r1, #2
add r2, sp, #0
bl UnkImageStruct_GetSpritePositionXY
add r3, sp, #0
mov r2, #0
ldrsh r0, [r3, r2]
mov r1, #2
sub r0, #0x28
strh r0, [r3]
ldrsh r1, [r3, r1]
ldrsh r2, [r3, r2]
mov r3, #0x1e
ldr r0, [r4, #0xc]
lsl r3, r3, #0x10
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
mov r1, #0xe2
ldrsb r0, [r4, r1]
add r2, r0, #1
add r0, r4, #0
add r0, #0xe2
strb r2, [r0]
ldrsb r0, [r4, r1]
cmp r0, #0xa
blt _02216922
ldr r0, [r4, #0xc]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
add r0, r4, #0
add r0, #0xe4
ldr r1, [r0]
ldr r0, _0221692C ; =0xFFFFF0FF
add r2, r1, #0
and r2, r0
lsl r0, r1, #0x14
lsr r0, r0, #0x1c
add r0, r0, #1
lsl r0, r0, #0x1c
lsr r0, r0, #0x14
orr r0, r2
add r4, #0xe4
add sp, #4
str r0, [r4]
pop {r3, r4, r5, r6, pc}
_02216870:
ldr r3, [sp, #0x20]
cmp r3, #0
beq _022168BA
lsl r2, r2, #0x10
lsr r2, r2, #0x1e
lsl r2, r2, #0x18
add r0, r1, #0
add r1, r6, #0
lsr r2, r2, #0x18
bl ov96_02219794
cmp r0, #0
beq _02216922
ldr r2, [sp, #0x18]
ldr r0, _02216930 ; =0xFFF9FFFF
ldr r1, [r2]
add sp, #4
and r1, r0
mov r0, #2
lsl r0, r0, #0x10
orr r0, r1
str r0, [r2]
add r0, r4, #0
add r0, #0xe4
ldr r1, [r0]
ldr r0, _0221692C ; =0xFFFFF0FF
add r2, r1, #0
and r2, r0
lsl r0, r1, #0x14
lsr r0, r0, #0x1c
add r0, r0, #1
lsl r0, r0, #0x1c
lsr r0, r0, #0x14
orr r0, r2
add r4, #0xe4
str r0, [r4]
pop {r3, r4, r5, r6, pc}
_022168BA:
ldr r3, [sp, #0x1c]
cmp r3, #0
beq _02216904
lsl r2, r2, #0x10
lsr r2, r2, #0x1e
lsl r2, r2, #0x18
add r0, r1, #0
add r1, r6, #0
lsr r2, r2, #0x18
bl ov96_02219940
cmp r0, #0
beq _02216922
ldr r2, [sp, #0x18]
ldr r0, _02216930 ; =0xFFF9FFFF
ldr r1, [r2]
add sp, #4
and r1, r0
mov r0, #2
lsl r0, r0, #0x10
orr r0, r1
str r0, [r2]
add r0, r4, #0
add r0, #0xe4
ldr r1, [r0]
ldr r0, _0221692C ; =0xFFFFF0FF
add r2, r1, #0
and r2, r0
lsl r0, r1, #0x14
lsr r0, r0, #0x1c
add r0, r0, #1
lsl r0, r0, #0x1c
lsr r0, r0, #0x14
orr r0, r2
add r4, #0xe4
str r0, [r4]
pop {r3, r4, r5, r6, pc}
_02216904:
add r1, r4, #0
add r1, #0xe4
ldr r2, [r1]
ldr r1, _0221692C ; =0xFFFFF0FF
add r0, r0, #1
lsl r0, r0, #0x1c
and r1, r2
lsr r0, r0, #0x14
orr r0, r1
add r4, #0xe4
add sp, #4
str r0, [r4]
pop {r3, r4, r5, r6, pc}
_0221691E:
bl GF_AssertFail
_02216922:
add sp, #4
pop {r3, r4, r5, r6, pc}
nop
_02216928: .word 0x000008B4
_0221692C: .word 0xFFFFF0FF
_02216930: .word 0xFFF9FFFF
thumb_func_end ov96_02216770
thumb_func_start ov96_02216934
ov96_02216934: ; 0x02216934
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
add r0, #0xe4
ldr r0, [r0]
add r2, r1, #0
lsl r0, r0, #0x14
lsr r0, r0, #0x1c
cmp r0, #3
bhi _02216A3E
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02216954: ; jump table
.short _0221695C - _02216954 - 2 ; case 0
.short _022169B0 - _02216954 - 2 ; case 1
.short _02216A08 - _02216954 - 2 ; case 2
.short _02216A42 - _02216954 - 2 ; case 3
_0221695C:
mov r3, #2
mov r1, #0
ldrsh r3, [r2, r3]
ldrsh r1, [r2, r1]
mov r2, #0x19
lsl r2, r2, #4
sub r2, r3, r2
lsl r2, r2, #0x10
mov r3, #0x1e
ldr r0, [r4, #0xc]
asr r2, r2, #0x10
lsl r3, r3, #0x10
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
ldr r0, [r4, #0xc]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
add r0, r4, #0
mov r1, #0
add r0, #0xe2
strb r1, [r0]
ldr r0, _02216A48 ; =0x000008B5
ldr r1, [sp, #0x18]
bl ov96_022193CC
add r0, r4, #0
add r0, #0xe4
ldr r1, [r0]
ldr r0, _02216A4C ; =0xFFFFF0FF
add r2, r1, #0
and r2, r0
lsl r0, r1, #0x14
lsr r0, r0, #0x1c
add r0, r0, #1
lsl r0, r0, #0x1c
lsr r0, r0, #0x14
orr r0, r2
add r4, #0xe4
add sp, #4
str r0, [r4]
pop {r3, r4, pc}
_022169B0:
add r1, sp, #0
ldr r0, [r4, #0xc]
add r1, #2
add r2, sp, #0
bl UnkImageStruct_GetSpritePositionXY
add r3, sp, #0
mov r2, #0
ldrsh r0, [r3, r2]
mov r1, #2
add r0, #0x28
strh r0, [r3]
ldrsh r1, [r3, r1]
ldrsh r2, [r3, r2]
mov r3, #0x1e
ldr r0, [r4, #0xc]
lsl r3, r3, #0x10
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
mov r1, #0xe2
ldrsb r0, [r4, r1]
add r2, r0, #1
add r0, r4, #0
add r0, #0xe2
strb r2, [r0]
ldrsb r0, [r4, r1]
cmp r0, #0xa
blt _02216A42
add r0, r4, #0
add r0, #0xe4
ldr r1, [r0]
ldr r0, _02216A4C ; =0xFFFFF0FF
add r2, r1, #0
and r2, r0
lsl r0, r1, #0x14
lsr r0, r0, #0x1c
add r0, r0, #1
lsl r0, r0, #0x1c
lsr r0, r0, #0x14
orr r0, r2
add r4, #0xe4
add sp, #4
str r0, [r4]
pop {r3, r4, pc}
_02216A08:
ldr r0, [sp, #0x14]
cmp r0, #0
beq _02216A1E
ldr r2, [sp, #0x10]
ldr r0, _02216A50 ; =0xFFF9FFFF
ldr r1, [r2]
and r1, r0
mov r0, #1
lsl r0, r0, #0x12
orr r0, r1
str r0, [r2]
_02216A1E:
add r0, r4, #0
add r0, #0xe4
ldr r1, [r0]
ldr r0, _02216A4C ; =0xFFFFF0FF
add r2, r1, #0
and r2, r0
lsl r0, r1, #0x14
lsr r0, r0, #0x1c
add r0, r0, #1
lsl r0, r0, #0x1c
lsr r0, r0, #0x14
orr r0, r2
add r4, #0xe4
add sp, #4
str r0, [r4]
pop {r3, r4, pc}
_02216A3E:
bl GF_AssertFail
_02216A42:
add sp, #4
pop {r3, r4, pc}
nop
_02216A48: .word 0x000008B5
_02216A4C: .word 0xFFFFF0FF
_02216A50: .word 0xFFF9FFFF
thumb_func_end ov96_02216934
thumb_func_start ov96_02216A54
ov96_02216A54: ; 0x02216A54
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, [r5]
add r4, r1, #0
mov r1, #1
add r6, r2, #0
add r7, r3, #0
bl ov96_021EAB38
mov r1, #0
mov r2, #2
mov r3, #0x1e
ldrsh r1, [r4, r1]
ldrsh r2, [r4, r2]
ldr r0, [r5, #0x10]
lsl r3, r3, #0x10
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
ldr r0, [r5, #0x10]
bl UnkImageStruct_ResetSpriteAnimCtrlState
ldr r0, [r5, #0xc]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, _02216A9C ; =0x000008B6
ldr r1, [sp, #0x18]
bl ov96_022193CC
cmp r7, #0
beq _02216A9A
ldr r1, [r6]
ldr r0, _02216AA0 ; =0xFFF9FFFF
and r0, r1
str r0, [r6]
_02216A9A:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02216A9C: .word 0x000008B6
_02216AA0: .word 0xFFF9FFFF
thumb_func_end ov96_02216A54
thumb_func_start ov96_02216AA4
ov96_02216AA4: ; 0x02216AA4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
add r5, r0, #0
mov r0, #0
str r0, [sp, #0x18]
add r0, r3, #0
add r7, r1, #0
str r2, [sp, #0xc]
str r3, [sp, #0x10]
ldr r4, [sp, #0x40]
bl ov96_021E5F54
add r6, r0, #0
ldrb r1, [r5]
add r0, sp, #0x24
strh r1, [r0]
ldrb r1, [r5, #1]
strh r1, [r0, #2]
ldr r0, [sp, #0x10]
bl ov96_021E5D34
cmp r0, r4
bhi _02216AE6
mov r0, #1
str r0, [sp, #0x1c]
mov r0, #0x28
add r6, #0x50
mul r0, r4
add r0, r6, r0
bl ov96_021E8A20
str r0, [sp, #0x20]
b _02216AF2
_02216AE6:
mov r0, #0
str r0, [sp, #0x1c]
add r0, r6, #0
bl ov96_021E8A20
str r0, [sp, #0x20]
_02216AF2:
ldr r0, [sp, #0x10]
bl ov96_021E5F24
cmp r0, #0
bne _02216B00
mov r0, #1
b _02216B02
_02216B00:
mov r0, #0
_02216B02:
cmp r0, #0
beq _02216B12
ldr r0, [sp, #0x1c]
cmp r0, #0
beq _02216B12
mov r0, #1
str r0, [sp, #0x14]
b _02216B16
_02216B12:
mov r0, #0
str r0, [sp, #0x14]
_02216B16:
ldr r0, [sp, #0x10]
bl ov96_021E5F24
cmp r4, r0
bne _02216B24
mov r6, #1
b _02216B26
_02216B24:
mov r6, #0
_02216B26:
ldr r0, [sp, #0x14]
add r1, r7, #0
add r3, r0, #0
ldrb r0, [r5, #5]
add r1, #0xe4
ldr r1, [r1]
lsl r0, r0, #0x19
lsl r1, r1, #0x12
lsr r0, r0, #0x1e
lsr r1, r1, #0x1e
orr r3, r6
cmp r0, r1
beq _02216B70
add r0, r7, #0
add r0, #0xe4
ldr r1, [r0]
ldr r0, _02216BF8 ; =0xFFFFF0FF
and r1, r0
add r0, r7, #0
add r0, #0xe4
str r1, [r0]
add r0, r7, #0
add r0, #0xe4
ldr r1, [r0]
ldr r0, _02216BFC ; =0xFFFFCFFF
and r0, r1
ldrb r1, [r5, #5]
lsl r1, r1, #0x19
lsr r1, r1, #0x1e
lsl r1, r1, #0x1e
lsr r1, r1, #0x12
orr r1, r0
add r0, r7, #0
add r0, #0xe4
str r1, [r0]
mov r0, #1
str r0, [sp, #0x18]
_02216B70:
add r0, r7, #0
add r0, #0xe4
ldr r0, [r0]
lsl r0, r0, #0x12
lsr r0, r0, #0x1e
beq _02216BD0
cmp r0, #1
beq _02216B88
cmp r0, #2
beq _02216BB8
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
_02216B88:
ldr r0, [sp, #0x18]
cmp r0, #0
beq _02216B9E
ldrb r2, [r5, #4]
ldr r0, [sp, #0xc]
add r1, r4, #0
lsl r2, r2, #0x18
lsr r2, r2, #0x1e
mov r3, #1
bl ov96_0221996C
_02216B9E:
ldr r0, [sp, #0x20]
ldr r2, [sp, #0xc]
str r0, [sp]
ldr r0, [sp, #0x14]
add r1, sp, #0x24
str r0, [sp, #4]
add r0, r7, #0
add r3, r4, #0
str r6, [sp, #8]
bl ov96_02216770
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
_02216BB8:
ldr r0, [sp, #0x20]
ldr r2, [sp, #0xc]
str r0, [sp]
str r3, [sp, #4]
add r0, r7, #0
add r1, sp, #0x24
add r3, r4, #0
str r6, [sp, #8]
bl ov96_02216934
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
_02216BD0:
ldr r0, [sp, #0x18]
cmp r0, #0
beq _02216BF2
ldr r2, [sp, #0x20]
str r6, [sp]
add r0, r7, #0
add r1, sp, #0x24
bl ov96_02216A54
ldrb r2, [r5, #4]
ldr r0, [sp, #0xc]
add r1, r4, #0
lsl r2, r2, #0x18
lsr r2, r2, #0x1e
mov r3, #0
bl ov96_0221996C
_02216BF2:
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
nop
_02216BF8: .word 0xFFFFF0FF
_02216BFC: .word 0xFFFFCFFF
thumb_func_end ov96_02216AA4
thumb_func_start ov96_02216C00
ov96_02216C00: ; 0x02216C00
ldrb r1, [r1]
ldrb r0, [r0]
cmp r0, r1
bne _02216C0C
mov r0, #0
bx lr
_02216C0C:
cmp r0, r1
bhs _02216C14
mov r0, #1
bx lr
_02216C14:
mov r0, #0
mvn r0, r0
bx lr
.balign 4, 0
thumb_func_end ov96_02216C00
thumb_func_start ov96_02216C1C
ov96_02216C1C: ; 0x02216C1C
ldrb r1, [r1]
ldrb r0, [r0]
cmp r0, r1
bne _02216C28
mov r0, #0
bx lr
_02216C28:
cmp r0, r1
bhs _02216C30
mov r0, #1
bx lr
_02216C30:
mov r0, #0
mvn r0, r0
bx lr
.balign 4, 0
thumb_func_end ov96_02216C1C
thumb_func_start ov96_02216C38
ov96_02216C38: ; 0x02216C38
push {r3, r4, r5, r6, r7, lr}
sub sp, #0xa8
str r0, [sp, #4]
str r2, [sp, #0xc]
mov r0, #0
str r1, [sp, #8]
add r2, sp, #0x88
add r1, r0, #0
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [sp, #0xc]
bl ov96_021E5DC4
str r0, [sp, #0x58]
ldr r0, [sp, #8]
ldr r0, [r0, #0x1c]
lsl r0, r0, #0x18
lsr r0, r0, #0x1f
beq _02216C74
ldr r1, _02216F60 ; =0x000003B9
ldr r0, [sp, #4]
ldrb r0, [r0, r1]
lsl r0, r0, #0x1f
lsr r0, r0, #0x1f
bne _02216C74
ldr r0, _02216F64 ; =0x000008D4
bl PlaySE
_02216C74:
ldr r0, _02216F60 ; =0x000003B9
ldr r1, [sp, #4]
mov r6, #0
ldrb r1, [r1, r0]
mov r2, #1
ldr r5, [sp, #8]
bic r1, r2
ldr r2, [sp, #8]
str r6, [sp, #0x3c]
ldr r2, [r2, #0x1c]
lsl r2, r2, #0x18
lsr r2, r2, #0x1f
lsl r2, r2, #0x18
lsr r3, r2, #0x18
mov r2, #1
and r2, r3
orr r2, r1
ldr r1, [sp, #4]
strb r2, [r1, r0]
mov r0, #0xff
add r4, r1, #0
add r4, #0x10
str r0, [sp, #0x68]
str r0, [sp, #0x6c]
str r0, [sp, #0x70]
_02216CA6:
ldr r0, [sp, #0xc]
bl ov96_021E5D34
cmp r0, r6
bgt _02216CB4
mov r7, #1
b _02216CB6
_02216CB4:
mov r7, #0
_02216CB6:
ldr r0, [sp, #0xc]
bl ov96_021E5F24
cmp r0, #0
bne _02216CC4
mov r1, #1
b _02216CC6
_02216CC4:
mov r1, #0
_02216CC6:
mov r0, #0
str r0, [sp, #0x48]
cmp r1, #0
beq _02216CD6
cmp r7, #0
beq _02216CD6
mov r0, #1
str r0, [sp, #0x48]
_02216CD6:
cmp r5, #0
bne _02216CDE
bl GF_AssertFail
_02216CDE:
cmp r4, #0
bne _02216CE6
bl GF_AssertFail
_02216CE6:
ldrb r0, [r5, #4]
lsl r0, r0, #0x18
lsr r0, r0, #0x1e
str r0, [sp, #0x34]
add r0, r4, #0
add r0, #0xe4
ldr r1, [r0]
ldr r0, _02216F68 ; =0xFFFF3FFF
and r1, r0
ldr r0, [sp, #0x34]
lsl r0, r0, #0x1e
lsr r0, r0, #0x10
orr r1, r0
add r0, r4, #0
add r0, #0xe4
str r1, [r0]
ldrb r0, [r5, #4]
lsl r0, r0, #0x18
lsr r1, r0, #0x1e
ldr r0, [sp, #0x3c]
add r0, r1, r0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x30]
ldr r0, [sp, #0x58]
ldr r1, [sp, #0x30]
ldr r0, [r0, #0x1c]
bl ov96_021EAA04
str r0, [sp, #0x54]
str r0, [r4]
cmp r0, #0
bne _02216D2C
bl GF_AssertFail
_02216D2C:
ldr r0, [sp, #0xc]
bl ov96_021E5F24
cmp r6, r0
bne _02216D9A
ldrb r0, [r5, #4]
mov r1, #3
lsl r0, r0, #0x18
lsr r0, r0, #0x1e
str r0, [sp, #0x38]
ldr r0, [sp, #8]
ldr r0, [r0, #0x1c]
lsr r7, r0, #8
ldr r0, [sp, #0x38]
add r0, r0, #2
bl _s32_div_f
ldr r0, [sp, #0x3c]
add r0, r1, r0
lsl r0, r0, #0x18
lsr r0, r0, #0x17
add r1, r7, #0
lsr r1, r0
mov r0, #3
and r0, r1
cmp r0, #1
bne _02216D68
mov r0, #1
str r0, [sp, #0x28]
b _02216D6C
_02216D68:
mov r0, #0
str r0, [sp, #0x28]
_02216D6C:
ldr r0, [sp, #0x38]
mov r1, #3
add r0, r0, #1
bl _s32_div_f
ldr r0, [sp, #0x3c]
add r0, r1, r0
lsl r0, r0, #0x18
lsr r0, r0, #0x17
add r1, r7, #0
lsr r1, r0
mov r0, #3
and r0, r1
cmp r0, #1
bne _02216D8E
mov r2, #1
b _02216D90
_02216D8E:
mov r2, #0
_02216D90:
ldr r0, [sp, #4]
ldr r1, [sp, #0x28]
ldr r0, [r0]
bl ov96_02219770
_02216D9A:
add r0, r4, #0
add r0, #0xe4
ldr r0, [r0]
lsl r0, r0, #7
lsr r0, r0, #0x1e
beq _02216E82
ldrb r0, [r5, #2]
lsl r0, r0, #0x18
lsr r0, r0, #0x1e
beq _02216E82
ldrb r1, [r5, #4]
lsl r1, r1, #0x1a
lsr r7, r1, #0x1e
mov r1, #0
str r1, [sp, #0x50]
cmp r7, r6
bgt _02216DBE
sub r7, r7, #1
_02216DBE:
cmp r0, #1
bne _02216DE8
ldr r0, [sp, #0xc]
bl ov96_021E5F24
cmp r7, r0
bne _02216DDA
ldr r1, [sp, #0x58]
ldr r0, _02216F6C ; =0x000007F8
mov r2, #0xa
add r0, r1, r0
mov r1, #4
bl ov96_02215884
_02216DDA:
mov r0, #1
str r0, [sp, #0x50]
mov r0, #0x8d
lsl r0, r0, #4
bl PlaySE
b _02216E0E
_02216DE8:
cmp r0, #2
bne _02216E0E
ldr r0, [sp, #0xc]
bl ov96_021E5F24
cmp r7, r0
bne _02216E04
ldr r1, [sp, #0x58]
ldr r0, _02216F6C ; =0x000007F8
mov r2, #0xf
add r0, r1, r0
mov r1, #0xa
bl ov96_02215884
_02216E04:
mov r0, #1
str r0, [sp, #0x50]
ldr r0, _02216F70 ; =0x000008D2
bl PlaySE
_02216E0E:
ldr r0, [sp, #0x50]
cmp r0, #0
beq _02216E82
mov r0, #6
mul r0, r7
ldr r1, [sp, #8]
ldrb r7, [r5]
add r1, r1, r0
ldrb r2, [r1, #1]
ldr r1, [sp, #8]
ldrb r3, [r5, #1]
ldrb r0, [r1, r0]
str r0, [sp, #0x74]
sub r1, r7, r0
bpl _02216E2E
neg r1, r1
_02216E2E:
lsr r0, r1, #0x1f
str r0, [sp, #0x64]
add r0, r1, r0
str r0, [sp, #0x64]
lsl r0, r0, #0xf
asr r0, r0, #0x10
str r0, [sp, #0x44]
sub r1, r3, r2
bpl _02216E42
neg r1, r1
_02216E42:
lsr r0, r1, #0x1f
add r0, r1, r0
lsl r0, r0, #0xf
asr r0, r0, #0x10
str r0, [sp, #0x40]
ldr r0, [sp, #0x74]
cmp r7, r0
ble _02216E54
add r7, r0, #0
_02216E54:
ldr r0, [sp, #0x44]
add r0, r0, r7
lsl r0, r0, #0x10
asr r1, r0, #0x10
cmp r3, r2
ble _02216E62
add r3, r2, #0
_02216E62:
ldr r2, [sp, #0x40]
ldr r0, [r4, #0x14]
add r2, r2, r3
lsl r2, r2, #0x10
mov r3, #0x1e
asr r2, r2, #0x10
lsl r3, r3, #0x10
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
ldr r0, [r4, #0x14]
bl UnkImageStruct_ResetSpriteAnimCtrlState
ldr r0, [r4, #0x14]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
_02216E82:
add r0, r4, #0
add r0, #0xe4
ldr r1, [r0]
ldr r0, _02216F74 ; =0xFE7FFFFF
and r0, r1
ldrb r1, [r5, #2]
lsl r1, r1, #0x18
lsr r1, r1, #0x1e
lsl r1, r1, #0x1e
lsr r1, r1, #7
orr r1, r0
add r0, r4, #0
add r0, #0xe4
str r1, [r0]
add r0, r4, #0
add r0, #0xe4
ldr r1, [r0]
ldr r0, _02216F78 ; =0xFFFCFFFF
and r0, r1
ldrb r1, [r5, #4]
lsl r1, r1, #0x1a
lsr r1, r1, #0x1e
lsl r1, r1, #0x1e
lsr r1, r1, #0xe
orr r1, r0
add r0, r4, #0
add r0, #0xe4
str r1, [r0]
ldrb r1, [r5, #5]
ldr r0, [sp, #0x54]
lsl r1, r1, #0x1b
lsr r1, r1, #0x1e
add r1, r1, #1
bl ov96_021EAC0C
ldrb r0, [r5, #4]
lsl r0, r0, #0x1c
lsr r1, r0, #0x1c
cmp r1, #4
bne _02216EF0
ldr r0, [r4, #0x18]
cmp r0, #4
beq _02216EF0
ldr r0, [sp, #0x58]
ldr r3, [sp, #0x34]
add r7, r4, #0
ldr r0, [r0, #0x1c]
ldr r1, [sp, #0x30]
add r7, #0x3c
lsl r3, r3, #6
mov r2, #1
add r3, r7, r3
bl ov96_021EAF60
b _02216F10
_02216EF0:
ldr r0, [r4, #0x18]
cmp r0, #4
bne _02216F10
cmp r1, #4
beq _02216F10
ldr r0, [sp, #0x58]
ldr r3, [sp, #0x34]
add r7, r4, #0
ldr r0, [r0, #0x1c]
ldr r1, [sp, #0x30]
add r7, #0x1c
lsl r3, r3, #6
mov r2, #1
add r3, r7, r3
bl ov96_021EAF60
_02216F10:
ldrb r0, [r5, #4]
lsl r0, r0, #0x1c
lsr r1, r0, #0x1c
cmp r1, #5
bne _02216F40
ldr r0, [r4, #0x18]
cmp r0, #5
beq _02216F40
ldr r0, [sp, #0xc]
bl ov96_021E5F24
cmp r6, r0
bne _02216F36
mov r1, #1
ldr r0, _02216F7C ; =0x000008D1
lsl r1, r1, #8
bl PlaySE_SetPitch
b _02216F8C
_02216F36:
ldr r0, _02216F80 ; =0x000008D5
mov r1, #0x40
bl sub_02006118
b _02216F8C
_02216F40:
cmp r1, #0xc
bne _02216F8C
ldr r0, [r4, #0x18]
cmp r0, #0xc
beq _02216F8C
lsl r1, r6, #0x18
ldr r0, [sp, #0xc]
ldr r2, [sp, #0x34]
lsr r1, r1, #0x18
bl ov96_0221935C
ldrb r0, [r0, #0x18]
cmp r0, #0
beq _02216F8C
ldr r0, _02216F84 ; =0x000008D3
b _02216F88
.balign 4, 0
_02216F60: .word 0x000003B9
_02216F64: .word 0x000008D4
_02216F68: .word 0xFFFF3FFF
_02216F6C: .word 0x000007F8
_02216F70: .word 0x000008D2
_02216F74: .word 0xFE7FFFFF
_02216F78: .word 0xFFFCFFFF
_02216F7C: .word 0x000008D1
_02216F80: .word 0x000008D5
_02216F84: .word 0x000008D3
_02216F88:
bl PlaySE
_02216F8C:
ldrb r0, [r5, #4]
lsl r0, r0, #0x1c
lsr r1, r0, #0x1c
cmp r1, #6
bne _02216FB8
ldr r0, [r4, #0x18]
cmp r0, #6
beq _02216FB8
ldrb r1, [r5, #5]
ldr r0, [r4, #4]
lsl r1, r1, #0x1b
lsr r1, r1, #0x1e
add r1, #0xb
lsl r1, r1, #0x10
lsr r1, r1, #0x10
bl UnkImageStruct_TryChangeSpriteAnimSeqNo
ldr r0, [r4, #4]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
b _02216FE6
_02216FB8:
cmp r1, #6
beq _02216FC2
ldr r0, [r4, #0x18]
cmp r0, #6
beq _02216FCC
_02216FC2:
cmp r1, #7
bne _02216FE6
ldr r0, [r4, #0x18]
cmp r0, #5
bne _02216FE6
_02216FCC:
ldrb r1, [r5, #5]
ldr r0, [r4, #4]
lsl r1, r1, #0x1b
lsr r1, r1, #0x1e
add r1, #0xf
lsl r1, r1, #0x10
lsr r1, r1, #0x10
bl UnkImageStruct_SetSpriteAnimSeqNo
ldr r0, [r4, #4]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
_02216FE6:
ldr r0, [r4, #4]
bl sub_0200DCA0
cmp r0, #1
bne _02216FFE
ldrb r1, [r5]
mov r3, #0x1e
ldrb r2, [r5, #1]
ldr r0, [r4, #4]
lsl r3, r3, #0x10
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
_02216FFE:
ldrb r0, [r5, #4]
lsl r0, r0, #0x1c
lsr r0, r0, #0x1c
cmp r0, #6
bne _02217010
ldr r0, [sp, #0x54]
mov r1, #0xc
bl ov96_021EAC5C
_02217010:
ldrb r1, [r5]
cmp r1, #0
beq _02217024
cmp r1, #0xff
beq _02217024
ldrb r3, [r5, #1]
cmp r3, #0
beq _02217024
cmp r3, #0xff
bne _0221703E
_02217024:
ldr r0, [sp, #0x54]
mov r1, #0
bl ov96_021EAB38
ldr r0, [r4, #4]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4, #8]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
b _022170DE
_0221703E:
ldrb r0, [r5, #5]
lsl r0, r0, #0x19
lsr r0, r0, #0x1e
beq _0221704C
mov r0, #1
str r0, [sp, #0x24]
b _02217050
_0221704C:
mov r0, #0
str r0, [sp, #0x24]
_02217050:
ldrb r0, [r5, #4]
lsl r0, r0, #0x1c
lsr r0, r0, #0x1c
cmp r0, #3
bne _02217060
mov r0, #1
str r0, [sp, #0x20]
b _02217064
_02217060:
mov r0, #0
str r0, [sp, #0x20]
_02217064:
ldr r0, [sp, #8]
ldr r0, [r0, #0x1c]
lsr r2, r0, #8
ldr r0, [sp, #0x30]
lsl r0, r0, #1
lsr r2, r0
mov r0, #3
and r0, r2
ldrb r2, [r5, #2]
lsl r0, r0, #0x18
lsr r7, r0, #0x18
lsl r2, r2, #0x1a
lsr r2, r2, #0x1a
sub r2, r3, r2
sub r2, #0x18
lsl r2, r2, #0x10
mov r3, #0x1e
ldr r0, [r4, #8]
asr r2, r2, #0x10
lsl r3, r3, #0x10
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
ldr r0, [sp, #0x20]
cmp r0, #0
bne _0221709C
ldr r0, [sp, #0x24]
cmp r0, #0
beq _022170A0
_0221709C:
mov r7, #0
b _022170CE
_022170A0:
cmp r7, #2
bne _022170C2
ldr r0, [r4, #8]
mov r1, #1
bl UnkImageStruct_TryChangeSpriteAnimSeqNo
mov r0, #0x89
lsl r0, r0, #4
bl IsSEPlaying
cmp r0, #0
bne _022170CE
mov r0, #0x89
lsl r0, r0, #4
bl PlaySE
b _022170CE
_022170C2:
cmp r7, #1
bne _022170CE
ldr r0, [r4, #8]
mov r1, #9
bl UnkImageStruct_TryChangeSpriteAnimSeqNo
_022170CE:
cmp r7, #0
beq _022170D6
mov r1, #1
b _022170D8
_022170D6:
mov r1, #0
_022170D8:
ldr r0, [r4, #8]
bl UnkImageStruct_SetSpriteVisibleFlag
_022170DE:
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp]
ldr r2, [sp, #4]
ldr r3, [sp, #0xc]
ldr r2, [r2]
add r0, r5, #0
add r1, r4, #0
bl ov96_02216AA4
ldrb r0, [r5, #4]
lsl r0, r0, #0x1c
lsr r0, r0, #0x1c
cmp r0, #3
bne _02217100
mov r0, #1
b _02217102
_02217100:
mov r0, #0
_02217102:
lsl r0, r0, #0x18
lsr r7, r0, #0x18
cmp r7, #1
bne _02217174
add r0, r4, #0
add r0, #0xe4
ldr r0, [r0]
lsl r0, r0, #0xb
lsr r0, r0, #0x1f
bne _02217174
add r0, r4, #0
add r0, #0xe4
ldr r1, [r0]
mov r0, #2
lsl r0, r0, #0x12
orr r1, r0
add r0, r4, #0
add r0, #0xe4
str r1, [r0]
add r1, r4, #0
add r1, #0xe1
mov r0, #6
strb r0, [r1]
add r1, r4, #0
mov r0, #1
add r1, #0xdc
lsl r0, r0, #0xc
str r0, [r1]
ldr r0, _02217468 ; =0x0000089E
bl PlaySE
ldr r0, [sp, #4]
lsl r1, r6, #0x18
ldr r0, [r0]
ldr r2, [sp, #0x34]
lsr r1, r1, #0x18
mov r3, #1
bl ov96_0221996C
ldr r0, [sp, #0xc]
bl ov96_021E5F24
cmp r6, r0
beq _02217160
ldr r0, [sp, #0x48]
cmp r0, #0
beq _022171E0
_02217160:
add r0, r4, #0
add r0, #0xe4
ldr r1, [r0]
mov r0, #2
lsl r0, r0, #0x14
orr r1, r0
add r0, r4, #0
add r0, #0xe4
str r1, [r0]
b _022171E0
_02217174:
cmp r7, #0
bne _022171E0
add r0, r4, #0
add r0, #0xe4
ldr r0, [r0]
lsl r0, r0, #0xb
lsr r0, r0, #0x1f
cmp r0, #1
bne _022171E0
ldrb r1, [r5]
mov r3, #0x1e
ldrb r2, [r5, #1]
ldr r0, [r4, #0x10]
lsl r3, r3, #0x10
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
ldr r0, [r4, #0x10]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [r4, #0x10]
bl UnkImageStruct_ResetSpriteAnimCtrlState
ldr r0, [sp, #0xc]
bl ov96_021E5F24
cmp r6, r0
bne _022171B0
mov r1, #1
b _022171B2
_022171B0:
mov r1, #0
_022171B2:
ldr r0, _0221746C ; =0x000008B6
bl ov96_022193CC
ldr r0, [sp, #4]
lsl r1, r6, #0x18
ldr r0, [r0]
ldr r2, [sp, #0x34]
lsr r1, r1, #0x18
mov r3, #0
bl ov96_0221996C
ldr r0, [sp, #0x54]
mov r1, #1
bl ov96_021EAB38
add r0, r4, #0
add r0, #0xe4
ldr r1, [r0]
ldr r0, _02217470 ; =0xFFF7FFFF
and r1, r0
add r0, r4, #0
add r0, #0xe4
str r1, [r0]
_022171E0:
add r0, r4, #0
add r0, #0xe4
ldr r1, [r0]
ldr r0, _02217474 ; =0xFFEFFFFF
mov r3, #1
and r1, r0
lsl r0, r7, #0x1f
lsr r0, r0, #0xb
orr r1, r0
add r0, r4, #0
add r0, #0xe4
str r1, [r0]
ldrb r1, [r5]
ldrb r2, [r5, #1]
ldr r0, [sp, #0x54]
bl ov96_021EB01C
ldrb r3, [r5, #2]
ldrb r2, [r5, #1]
ldrb r1, [r5]
lsl r3, r3, #0x1a
lsr r3, r3, #0x1a
sub r2, r2, r3
ldr r0, [sp, #0x54]
mov r3, #0
bl ov96_021EB01C
add r0, r4, #0
add r0, #0xe4
ldr r2, [r0]
lsl r0, r2, #0xc
lsr r0, r0, #0x1f
beq _0221730A
lsl r0, r2, #0xa
lsr r0, r0, #0x1f
beq _02217288
ldr r0, [sp, #0x48]
cmp r0, #0
beq _0221725C
mov r0, #6
lsl r2, r2, #0x10
lsr r2, r2, #0x1e
lsl r2, r2, #0x18
ldr r1, [sp, #0x58]
lsl r0, r0, #6
ldr r0, [r1, r0]
lsl r1, r6, #0x18
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_02219940
cmp r0, #0
beq _02217288
add r0, r4, #0
add r0, #0xe4
ldr r1, [r0]
ldr r0, _02217478 ; =0xFFDFFFFF
and r1, r0
add r0, r4, #0
add r0, #0xe4
str r1, [r0]
b _02217288
_0221725C:
mov r0, #6
lsl r2, r2, #0x10
lsr r2, r2, #0x1e
lsl r2, r2, #0x18
ldr r1, [sp, #0x58]
lsl r0, r0, #6
ldr r0, [r1, r0]
lsl r1, r6, #0x18
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_02219794
cmp r0, #0
beq _02217288
add r0, r4, #0
add r0, #0xe4
ldr r1, [r0]
ldr r0, _02217478 ; =0xFFDFFFFF
and r1, r0
add r0, r4, #0
add r0, #0xe4
str r1, [r0]
_02217288:
mov r0, #0xe1
ldrsb r0, [r4, r0]
sub r1, r0, #1
add r0, r4, #0
add r0, #0xe1
strb r1, [r0]
mov r0, #0xe1
ldrsb r0, [r4, r0]
cmp r0, #0
bgt _022172A6
ldr r0, [sp, #0x54]
mov r1, #0
bl ov96_021EAB38
b _022174AE
_022172A6:
ldrb r0, [r5]
str r0, [sp, #0x84]
ldrb r0, [r5, #1]
str r0, [sp, #0x80]
add r0, r4, #0
add r0, #0xdc
ldr r1, [r0]
ldr r0, _0221747C ; =0x0000019A
sub r1, r1, r0
add r0, r4, #0
add r0, #0xdc
str r1, [r0]
add r0, r4, #0
add r0, #0xdc
ldr r0, [r0]
bl _fflt
ldr r1, _02217480 ; =0x45800000
bl _fdiv
add r1, r0, #0
ldr r0, [sp, #0x54]
add r2, r1, #0
bl ov96_021EB10C
add r0, sp, #0x80
str r0, [sp]
ldr r0, [sp, #0x54]
ldr r1, [sp, #0x84]
ldr r2, [sp, #0x80]
add r3, sp, #0x84
bl ov96_021EB06C
ldr r0, [sp, #0x80]
cmp r0, #0xa0
bge _022172F0
b _022174AE
_022172F0:
mov r0, #0xe1
ldrsb r1, [r4, r0]
mov r0, #6
ldrb r3, [r5, #1]
sub r0, r0, r1
lsl r2, r0, #2
add r2, r3, r2
ldrb r1, [r5]
ldr r0, [sp, #0x54]
mov r3, #1
bl ov96_021EB01C
b _022174AE
_0221730A:
ldrb r1, [r5, #1]
mov r0, #0xa0
sub r1, r0, r1
mov r0, #0xc
mul r0, r1
bl _fflt
ldr r1, _02217480 ; =0x45800000
bl _fdiv
add r1, r0, #0
ldr r0, _02217484 ; =0x3F99999A
bl _fsub
ldrb r1, [r5, #4]
str r0, [sp, #0x4c]
str r0, [sp, #0x2c]
lsl r1, r1, #0x1c
lsr r1, r1, #0x1c
cmp r1, #5
bne _02217392
add r1, r4, #0
add r1, #0xe4
ldr r1, [r1]
lsl r1, r1, #0x18
lsr r7, r1, #0x18
bl _f2d
str r0, [sp, #0x5c]
add r0, r7, #0
str r1, [sp, #0x1c]
bl _dfltu
add r2, r0, #0
add r3, r1, #0
ldr r0, _02217488 ; =0x9999999A
ldr r1, _0221748C ; =0x3FB99999
bl _dmul
add r2, r0, #0
add r3, r1, #0
ldr r0, _02217488 ; =0x9999999A
ldr r1, _02217490 ; =0x3FE99999
bl _dsub
add r2, r0, #0
add r3, r1, #0
ldr r0, [sp, #0x5c]
ldr r1, [sp, #0x1c]
bl _dmul
bl _d2f
str r0, [sp, #0x4c]
cmp r7, #4
bhs _02217392
add r0, r4, #0
add r0, #0xe4
ldr r0, [r0]
ldr r1, [sp, #0x68]
bic r0, r1
add r1, r7, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
orr r1, r0
add r0, r4, #0
add r0, #0xe4
str r1, [r0]
_02217392:
ldrb r0, [r5, #4]
lsl r0, r0, #0x1c
lsr r0, r0, #0x1c
cmp r0, #8
bne _02217432
lsl r1, r6, #0x18
ldr r0, [sp, #0xc]
ldr r2, [sp, #0x34]
lsr r1, r1, #0x18
bl ov96_0221935C
add r1, r4, #0
add r1, #0xe4
ldr r1, [r1]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bne _022173D2
ldrb r0, [r0, #0x18]
cmp r0, #0
bne _022173CC
ldr r0, [sp, #0xc]
bl ov96_021E5F24
cmp r6, r0
bne _022173D2
ldr r0, _02217494 ; =0x000005F3
bl PlaySE
b _022173D2
_022173CC:
ldr r0, _02217498 ; =0x0000060A
bl PlaySE
_022173D2:
add r0, r4, #0
add r0, #0xe4
ldr r0, [r0]
lsl r0, r0, #0x18
lsr r7, r0, #0x18
ldr r0, [sp, #0x2c]
bl _f2d
str r0, [sp, #0x60]
add r0, r7, #0
str r1, [sp, #0x14]
bl _dfltu
add r2, r0, #0
add r3, r1, #0
ldr r0, _02217488 ; =0x9999999A
ldr r1, _0221748C ; =0x3FB99999
bl _dmul
add r2, r0, #0
add r3, r1, #0
ldr r0, _02217488 ; =0x9999999A
ldr r1, _02217490 ; =0x3FE99999
bl _dsub
add r2, r0, #0
add r3, r1, #0
ldr r0, [sp, #0x60]
ldr r1, [sp, #0x14]
bl _dmul
bl _d2f
str r0, [sp, #0x2c]
cmp r7, #5
bhs _02217432
add r0, r4, #0
add r0, #0xe4
ldr r0, [r0]
ldr r1, [sp, #0x6c]
bic r0, r1
add r1, r7, #1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
orr r1, r0
add r0, r4, #0
add r0, #0xe4
str r1, [r0]
_02217432:
ldrb r0, [r5, #4]
lsl r0, r0, #0x1c
lsr r0, r0, #0x1c
cmp r0, #8
beq _0221749C
cmp r0, #5
beq _0221749C
add r0, r4, #0
add r0, #0xe4
ldr r0, [r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _022174A4
ldr r0, [sp, #0x54]
mov r1, #1
bl ov96_02218510
add r0, r4, #0
add r0, #0xe4
ldr r1, [r0]
ldr r0, [sp, #0x70]
bic r1, r0
add r0, r4, #0
add r0, #0xe4
str r1, [r0]
b _022174A4
nop
_02217468: .word 0x0000089E
_0221746C: .word 0x000008B6
_02217470: .word 0xFFF7FFFF
_02217474: .word 0xFFEFFFFF
_02217478: .word 0xFFDFFFFF
_0221747C: .word 0x0000019A
_02217480: .word 0x45800000
_02217484: .word 0x3F99999A
_02217488: .word 0x9999999A
_0221748C: .word 0x3FB99999
_02217490: .word 0x3FE99999
_02217494: .word 0x000005F3
_02217498: .word 0x0000060A
_0221749C:
ldr r0, [sp, #0x54]
mov r1, #0
bl ov96_02218510
_022174A4:
ldr r0, [sp, #0x54]
ldr r1, [sp, #0x4c]
ldr r2, [sp, #0x2c]
bl ov96_021EB10C
_022174AE:
ldrb r0, [r5, #4]
add r6, r6, #1
add r5, r5, #6
lsl r0, r0, #0x1c
lsr r0, r0, #0x1c
str r0, [r4, #0x18]
ldr r0, [sp, #0x3c]
add r4, #0xe8
add r0, r0, #3
str r0, [sp, #0x3c]
cmp r6, #4
bge _022174CA
bl _02216CA6
_022174CA:
mov r6, #0
add r4, r6, #0
add r5, sp, #0x88
_022174D0:
ldr r1, [sp, #8]
ldr r0, [sp, #0x58]
ldrb r1, [r1, #4]
ldr r0, [r0, #0x1c]
lsl r1, r1, #0x18
lsr r1, r1, #0x1e
add r1, r1, r4
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_021EAA04
ldr r1, [sp, #8]
add r3, sp, #0x7c
ldrb r1, [r1]
add r7, r0, #0
str r1, [sp, #0x7c]
ldr r1, [sp, #8]
ldrb r1, [r1, #1]
str r1, [sp, #0x78]
add r1, sp, #0x78
str r1, [sp]
ldr r1, [sp, #0x7c]
ldr r2, [sp, #0x78]
bl ov96_021EB06C
ldr r0, [sp, #0x78]
add r6, r6, #1
strb r0, [r5]
ldr r0, [sp, #8]
str r7, [r5, #4]
add r0, r0, #6
str r0, [sp, #8]
add r4, r4, #3
add r5, #8
cmp r6, #4
blt _022174D0
mov r0, #0
str r0, [sp]
ldr r3, _02217540 ; =ov96_02216C00
add r0, sp, #0x88
mov r1, #4
mov r2, #8
bl MATH_QSort
mov r5, #0
add r4, sp, #0x88
_0221752C:
ldr r0, [r4, #4]
add r1, r5, #7
bl ov96_021EABA8
add r5, r5, #1
add r4, #8
cmp r5, #4
blt _0221752C
add sp, #0xa8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02217540: .word ov96_02216C00
thumb_func_end ov96_02216C38
thumb_func_start ov96_02217544
ov96_02217544: ; 0x02217544
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
str r0, [sp, #8]
ldr r0, [sp, #0x38]
str r1, [sp, #0xc]
str r0, [sp, #0x38]
ldr r0, [sp, #8]
str r2, [sp, #0x10]
str r3, [r0]
str r1, [r0, #4]
add r1, r2, #0
str r1, [r0, #8]
mov r0, #3
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [sp, #0xc]
mov r2, #0x80
mov r3, #0x10
bl ov96_022164EC
ldr r1, [sp, #8]
str r0, [r1, #0xc]
mov r0, #0
str r0, [sp, #0x1c]
add r0, r1, #0
add r0, #0x10
str r0, [sp, #8]
ldr r0, [sp, #0x1c]
str r0, [sp, #0x18]
ldr r0, [sp, #0x3c]
str r0, [sp, #0x14]
_02217584:
ldr r0, [sp, #0x18]
lsl r0, r0, #0x18
lsr r6, r0, #0x18
ldr r0, [sp, #0x38]
add r1, r6, #0
bl ov96_021EAA04
ldr r1, [sp, #8]
mov r7, #0
add r4, r1, #0
add r5, r1, #0
str r0, [r1]
add r4, #0x1c
add r5, #0x3c
_022175A0:
lsl r1, r6, #0x18
ldr r0, [sp, #0x38]
lsr r1, r1, #0x18
bl ov96_021EAA04
bl ov96_021EAA20
bl ov96_021E8BB0
ldr r1, [sp, #0x14]
add r2, r4, #0
bl ov96_021E8BB4
add r0, r4, #0
add r1, r5, #0
mov r2, #0x20
bl MI_CpuCopy8
add r0, r5, #0
mov r1, #0x10
bl sub_02003F04
add r7, r7, #1
add r6, r6, #1
add r4, #0x40
add r5, #0x40
cmp r7, #3
blt _022175A0
mov r0, #7
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
mov r2, #0
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x10]
add r3, r2, #0
bl ov96_022164EC
ldr r1, [sp, #8]
str r0, [r1, #0x14]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #1
str r0, [sp]
mov r0, #5
str r0, [sp, #4]
mov r2, #0
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x10]
add r3, r2, #0
bl ov96_022164EC
ldr r1, [sp, #8]
str r0, [r1, #8]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #0xb
str r0, [sp]
mov r0, #4
str r0, [sp, #4]
mov r2, #0
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x10]
add r3, r2, #0
bl ov96_022164EC
ldr r1, [sp, #8]
str r0, [r1, #4]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #0x15
str r0, [sp]
mov r0, #6
str r0, [sp, #4]
mov r2, #0
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x10]
add r3, r2, #0
bl ov96_022164EC
ldr r1, [sp, #8]
str r0, [r1, #0xc]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #8
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
mov r2, #0
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x10]
add r3, r2, #0
bl ov96_022164EC
ldr r1, [sp, #8]
str r0, [r1, #0x10]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
ldr r0, [sp, #8]
add r0, #0xe8
str r0, [sp, #8]
ldr r0, [sp, #0x18]
add r0, r0, #3
str r0, [sp, #0x18]
ldr r0, [sp, #0x1c]
add r0, r0, #1
str r0, [sp, #0x1c]
cmp r0, #4
bge _02217686
b _02217584
_02217686:
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02217544
thumb_func_start ov96_0221768C
ov96_0221768C: ; 0x0221768C
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r4, r1, #0
add r7, r0, #0
add r0, r4, #0
bl ov96_021E5F54
add r0, #0xf0
bl ov96_021E8A20
str r0, [sp, #8]
add r0, r4, #0
bl ov96_021E5DC4
str r0, [sp, #4]
ldr r1, [sp, #8]
add r0, r7, #0
add r2, r4, #0
bl ov96_02216C38
ldr r1, [sp, #8]
add r0, r4, #0
ldr r1, [r1, #0x20]
lsl r1, r1, #0xd
lsr r1, r1, #0x10
bl ov96_021E6454
ldr r0, [sp, #8]
ldr r0, [r0, #0x20]
lsl r0, r0, #0xd
lsr r1, r0, #0x10
ldr r0, _022177C4 ; =0x000001C2
cmp r1, r0
bne _022176D6
ldr r0, _022177C8 ; =0x000006D7
bl PlaySE
_022176D6:
add r0, r4, #0
bl ov96_021E5F24
add r2, r0, #0
mov r1, #6
ldr r0, [sp, #8]
mul r2, r1
add r0, r0, r2
ldrb r0, [r0, #5]
lsl r0, r0, #0x1d
lsr r4, r0, #0x1d
cmp r4, #4
bhi _0221771A
add r0, r4, r4
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_022176FC: ; jump table
.short _02217706 - _022176FC - 2 ; case 0
.short _02217716 - _022176FC - 2 ; case 1
.short _0221770E - _022176FC - 2 ; case 2
.short _0221770A - _022176FC - 2 ; case 3
.short _02217712 - _022176FC - 2 ; case 4
_02217706:
mov r5, #2
b _0221771E
_0221770A:
mov r5, #3
b _0221771E
_0221770E:
mov r5, #4
b _0221771E
_02217712:
mov r5, #5
b _0221771E
_02217716:
add r5, r1, #0
b _0221771E
_0221771A:
bl GF_AssertFail
_0221771E:
ldr r0, [r7, #0xc]
add r1, r5, #0
bl UnkImageStruct_TryChangeSpriteAnimSeqNo
mov r0, #0xee
lsl r0, r0, #2
ldrb r0, [r7, r0]
cmp r4, r0
beq _02217746
cmp r4, #2
bne _0221773C
ldr r0, _022177CC ; =0x0000089B
bl PlaySE
b _02217746
_0221773C:
cmp r4, #4
bne _02217746
ldr r0, _022177D0 ; =0x0000089C
bl PlaySE
_02217746:
mov r0, #0xee
lsl r0, r0, #2
ldr r3, [sp, #8]
strb r4, [r7, r0]
mov r1, #0
add r2, sp, #0xc
_02217752:
strb r1, [r2, #1]
ldrb r0, [r3, #3]
add r1, r1, #1
add r3, r3, #6
strb r0, [r2]
add r2, r2, #2
cmp r1, #4
blt _02217752
mov r0, #0
str r0, [sp]
ldr r3, _022177D4 ; =ov96_02216C1C
add r0, sp, #0xc
mov r1, #4
mov r2, #2
bl MATH_QSort
ldr r5, [sp, #8]
mov r6, #0
add r4, r7, #0
_02217778:
mov r0, #0x3b
lsl r0, r0, #4
ldrb r2, [r5, #3]
ldrh r0, [r4, r0]
cmp r2, r0
beq _02217790
lsl r1, r6, #0x18
ldr r0, [r7]
lsr r1, r1, #0x18
add r3, sp, #0xc
bl ov96_0221966C
_02217790:
ldrb r1, [r5, #3]
mov r0, #0x3b
lsl r0, r0, #4
strh r1, [r4, r0]
add r6, r6, #1
add r4, r4, #2
add r5, r5, #6
cmp r6, #4
blt _02217778
ldr r0, [sp, #8]
mov r1, #0x1e
ldr r0, [r0, #0x20]
lsl r0, r0, #0xd
lsr r0, r0, #0x10
bl _u32_div_f
add r1, r0, #0
mov r2, #6
ldr r0, [sp, #4]
lsl r2, r2, #6
ldr r0, [r0, r2]
bl ov96_022196E4
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
_022177C4: .word 0x000001C2
_022177C8: .word 0x000006D7
_022177CC: .word 0x0000089B
_022177D0: .word 0x0000089C
_022177D4: .word ov96_02216C1C
thumb_func_end ov96_0221768C
thumb_func_start ov96_022177D8
ov96_022177D8: ; 0x022177D8
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
ldr r0, [r6, #4]
cmp r0, #0
bne _022177E6
bl GF_AssertFail
_022177E6:
ldr r0, [r6, #8]
cmp r0, #0
bne _022177F0
bl GF_AssertFail
_022177F0:
ldr r0, [r6, #0xc]
cmp r0, #0
bne _022177FA
bl GF_AssertFail
_022177FA:
ldr r0, [r6, #0xc]
bl sub_0200D9DC
mov r7, #0
add r6, #0x10
_02217804:
mov r4, #0
add r5, r6, #0
_02217808:
ldr r0, [r5, #4]
bl sub_0200D9DC
add r4, r4, #1
add r5, r5, #4
cmp r4, #5
blt _02217808
add r7, r7, #1
add r6, #0xe8
cmp r7, #4
blt _02217804
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_022177D8
thumb_func_start ov96_02217820
ov96_02217820: ; 0x02217820
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
str r0, [sp]
mov r0, #0
ldr r7, [sp]
str r0, [sp, #4]
add r6, r0, #0
_0221782E:
mov r4, #0
add r5, r7, #0
_02217832:
ldr r0, [r5, #0x14]
add r1, r6, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r4, r4, #1
add r5, r5, #4
cmp r4, #5
blt _02217832
ldr r0, [sp, #4]
add r7, #0xe8
add r0, r0, #1
str r0, [sp, #4]
cmp r0, #4
blt _0221782E
ldr r0, [sp]
mov r1, #0
ldr r0, [r0, #0xc]
bl UnkImageStruct_SetSpriteAnimActiveFlag
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_02217820
thumb_func_start ov96_0221785C
ov96_0221785C: ; 0x0221785C
cmp r0, #0xb
bne _02217864
mov r0, #0
bx lr
_02217864:
mov r0, #1
bx lr
thumb_func_end ov96_0221785C
thumb_func_start ov96_02217868
ov96_02217868: ; 0x02217868
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x14]
cmp r0, #6
beq _0221788A
cmp r0, #0xb
beq _0221788A
add r0, r1, #0
bl ov96_022186CC
lsl r0, r0, #0x1c
ldr r2, [r4, #0x60]
ldr r1, _0221788C ; =0xFFF0FFFF
lsr r0, r0, #0xc
and r1, r2
orr r0, r1
str r0, [r4, #0x60]
_0221788A:
pop {r4, pc}
.balign 4, 0
_0221788C: .word 0xFFF0FFFF
thumb_func_end ov96_02217868
thumb_func_start ov96_02217890
ov96_02217890: ; 0x02217890
cmp r0, #6
beq _02217898
cmp r0, #0xb
bne _0221789C
_02217898:
mov r0, #1
bx lr
_0221789C:
mov r0, #0
bx lr
thumb_func_end ov96_02217890
thumb_func_start ov96_022178A0
ov96_022178A0: ; 0x022178A0
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4, #4]
ldr r1, [r4, #0x14]
ldr r0, [r0, #4]
str r2, [sp, #4]
ldr r7, [r0]
ldr r6, [r0, #4]
ldr r0, [r5, #0x14]
bl ov96_0221785C
cmp r0, #0
bne _022178C0
b _02217AC6
_022178C0:
ldr r0, [r4, #0x14]
cmp r0, #6
bne _0221794A
add r0, r7, #0
bl _fflt
add r1, r0, #0
ldr r0, _02217ACC ; =0x40400000
bl _fmul
bl _ffix
add r7, r0, #0
add r0, r6, #0
bl _fflt
add r1, r0, #0
mov r0, #1
lsl r0, r0, #0x1e
bl _fmul
bl _ffix
add r6, r0, #0
ldr r0, [r4, #0x60]
lsl r0, r0, #0x14
lsr r0, r0, #0x14
add r1, r0, #1
cmp r1, #0xc8
ble _022178FE
mov r1, #0xc8
_022178FE:
ldr r0, [r4, #0x60]
ldr r2, _02217AD0 ; =0xFFFFF000
mov r3, #3
and r0, r2
lsr r2, r2, #0x14
and r1, r2
orr r0, r1
str r0, [r4, #0x60]
mov r0, #1
str r0, [sp]
ldr r2, [r4, #0x60]
ldr r0, [r4]
lsl r1, r2, #0xa
lsl r2, r2, #8
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_021E8228
mov r0, #1
str r0, [sp]
ldr r2, [r4, #0x60]
ldr r0, [r4]
lsl r1, r2, #0xa
lsl r2, r2, #8
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #4
bl ov96_021E8228
b _022179B4
_0221794A:
cmp r0, #0xb
bne _022179B0
ldr r0, [r4, #4]
ldr r0, [r0, #4]
ldr r7, [r0, #0x10]
ldr r6, [r0, #0x14]
ldr r0, [r4, #0x60]
lsl r0, r0, #0x14
lsr r0, r0, #0x14
add r1, r0, #2
cmp r1, #0xc8
ble _02217964
mov r1, #0xc8
_02217964:
ldr r0, [r4, #0x60]
ldr r2, _02217AD0 ; =0xFFFFF000
mov r3, #3
and r0, r2
lsr r2, r2, #0x14
and r1, r2
orr r0, r1
str r0, [r4, #0x60]
mov r0, #1
str r0, [sp]
ldr r2, [r4, #0x60]
ldr r0, [r4]
lsl r1, r2, #0xa
lsl r2, r2, #8
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_021E8228
mov r0, #1
str r0, [sp]
ldr r2, [r4, #0x60]
ldr r0, [r4]
lsl r1, r2, #0xa
lsl r2, r2, #8
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #4
bl ov96_021E8228
b _022179B4
_022179B0:
mov r7, #3
lsl r7, r7, #0xc
_022179B4:
add r2, r5, #0
add r2, #0x44
ldr r1, [sp, #4]
add r0, r7, #0
add r3, r2, #0
bl VEC_MultAdd
add r0, r5, #0
mov r1, #3
add r0, #0x44
lsl r1, r1, #0xe
bl ov96_02215958
ldr r1, [sp, #4]
add r0, r4, #0
bl ov96_02217868
ldr r0, [r4, #0x14]
bl ov96_02217890
cmp r0, #0
beq _022179F6
add r0, r5, #0
mov r1, #4
add r0, #0x5d
strb r1, [r0]
add r0, r4, #0
add r0, #0x5d
strb r1, [r0]
add r0, r5, #0
add r1, r6, #0
bl ov96_02219174
_022179F6:
ldr r0, [r5, #0x10]
cmp r0, #0
beq _02217A06
ldr r0, [r4, #0x14]
bl ov96_02217890
cmp r0, #0
beq _02217A14
_02217A06:
str r4, [r5, #0x10]
ldr r0, [r4, #0x10]
cmp r0, #0
beq _02217A14
cmp r0, r5
beq _02217A14
str r0, [r5, #0x10]
_02217A14:
mov r0, #2
ldr r1, [r5, #0x60]
lsl r0, r0, #0x1a
orr r0, r1
str r0, [r5, #0x60]
ldr r0, [r4, #0x14]
str r0, [r5, #0x18]
ldr r0, [r4, #0x14]
bl ov96_02217890
cmp r0, #0
ldr r1, [r5, #0x60]
beq _02217A82
lsl r0, r1, #0x10
lsr r0, r0, #0x1e
cmp r0, #2
beq _02217A5C
ldr r0, [r4, #0x14]
cmp r0, #6
beq _02217A42
cmp r0, #0xb
beq _02217A50
b _02217A5C
_02217A42:
ldr r0, _02217AD4 ; =0xFFFF3FFF
and r1, r0
mov r0, #1
lsl r0, r0, #0xe
orr r0, r1
str r0, [r5, #0x60]
b _02217A5C
_02217A50:
ldr r0, _02217AD4 ; =0xFFFF3FFF
and r1, r0
mov r0, #2
lsl r0, r0, #0xe
orr r0, r1
str r0, [r5, #0x60]
_02217A5C:
ldr r0, [r4, #0x60]
ldr r1, [r5, #0x60]
lsl r0, r0, #0xa
lsl r1, r1, #0xa
lsr r0, r0, #0x1e
lsr r1, r1, #0x1e
cmp r0, r1
bhs _02217A6E
add r0, r0, #1
_02217A6E:
ldr r2, [r5, #0x60]
ldr r1, _02217AD8 ; =0xFFFFCFFF
lsl r0, r0, #0x1e
and r1, r2
lsr r0, r0, #0x12
orr r0, r1
str r0, [r5, #0x60]
mov r0, #4
str r0, [r5, #0x64]
b _02217A8C
_02217A82:
ldr r0, _02217ADC ; =0x7FFFFFFF
and r1, r0
add r0, r0, #1
orr r0, r1
str r0, [r5, #0x60]
_02217A8C:
ldr r0, [r4, #0x14]
mov r1, #0
cmp r0, #3
beq _02217A9A
cmp r0, #4
beq _02217A9A
mov r1, #1
_02217A9A:
cmp r1, #0
bne _02217AA2
bl GF_AssertFail
_02217AA2:
ldr r0, [r5, #0x14]
mov r2, #1
sub r0, r0, #3
cmp r0, #8
bhi _02217AB8
add r1, r2, #0
lsl r1, r0
ldr r0, _02217AE0 ; =0x00000103
tst r0, r1
beq _02217AB8
mov r2, #0
_02217AB8:
cmp r2, #0
bne _02217AC0
bl GF_AssertFail
_02217AC0:
add sp, #8
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02217AC6:
mov r0, #0
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02217ACC: .word 0x40400000
_02217AD0: .word 0xFFFFF000
_02217AD4: .word 0xFFFF3FFF
_02217AD8: .word 0xFFFFCFFF
_02217ADC: .word 0x7FFFFFFF
_02217AE0: .word 0x00000103
thumb_func_end ov96_022178A0
thumb_func_start ov96_02217AE4
ov96_02217AE4: ; 0x02217AE4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x118
str r0, [sp, #8]
ldr r0, [r0, #0xc]
str r1, [sp, #0xc]
bl sub_0200E2B0
str r0, [sp]
ldr r0, [sp, #8]
ldr r3, [sp, #8]
ldr r0, [r0]
ldr r3, [r3, #0x18]
mov r1, #0xc
mov r2, #7
bl ov96_021EA854
ldr r1, [sp, #8]
add r5, sp, #0x14
mov r4, #0
str r0, [r1, #0x1c]
add r2, r5, #0
add r0, r4, #0
add r1, r4, #0
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
str r0, [r2]
add r6, sp, #0x58
_02217B26:
add r0, r4, #0
mov r1, #3
bl _s32_div_f
add r7, r1, #0
add r0, r4, #0
mov r1, #3
bl _s32_div_f
str r0, [sp, #0x10]
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x10]
add r2, r7, #0
add r3, r6, #0
bl ov96_021E6168
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x10]
add r2, r7, #0
bl ov96_021E60C0
bl ov96_021E6108
str r0, [r5, #0x14]
add r4, r4, #1
add r6, #0x10
add r5, r5, #4
cmp r4, #0xc
blt _02217B26
mov r0, #3
str r0, [sp, #0x18]
mov r0, #1
str r0, [sp, #0x20]
str r0, [sp, #0x24]
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
ldr r0, [sp, #8]
mov r1, #0xc
ldr r0, [r0, #0x1c]
add r2, sp, #0x58
add r3, sp, #0x14
bl ov96_021EA8A8
add sp, #0x118
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02217AE4
thumb_func_start ov96_02217B84
ov96_02217B84: ; 0x02217B84
push {r4, r5, r6, r7, lr}
sub sp, #0x5c
str r0, [sp, #0xc]
str r1, [sp, #0x10]
add r0, sp, #0x44
mov r1, #0
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
str r1, [r0, #0xc]
str r1, [r0, #0x10]
str r1, [r0, #0x14]
mov r1, #0xaa
mov r2, #0x13
bl ReadWholeNarcMemberByIdPair
ldr r0, [sp, #0xc]
cmp r0, #0
bne _02217BAE
bl GF_AssertFail
_02217BAE:
ldr r0, [sp, #0x10]
bl ov96_0221918C
mov r1, #0x83
ldr r0, [sp, #0xc]
lsl r1, r1, #2
add r0, r0, r1
str r0, [sp, #0x28]
mov r0, #0xf
mov r4, #0
str r0, [sp, #0x2c]
_02217BC4:
add r0, r4, #0
mov r1, #3
bl _s32_div_f
lsl r0, r0, #0x18
lsr r7, r0, #0x18
add r0, r4, #0
mov r1, #3
bl _s32_div_f
lsl r0, r1, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x24]
mov r0, #0xa8
add r1, r7, #0
mul r1, r0
ldr r0, [sp, #0x28]
add r1, r0, r1
ldr r0, [sp, #0x24]
lsl r0, r0, #4
add r6, r1, r0
ldr r0, [sp, #0xc]
lsl r1, r4, #0x18
ldr r0, [r0, #0x1c]
lsr r1, r1, #0x18
bl ov96_021EAA04
add r5, r0, #0
ldr r0, [sp, #0x24]
cmp r0, #0
bne _02217C06
mov r1, #1
b _02217C08
_02217C06:
mov r1, #0
_02217C08:
lsl r1, r1, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
bl ov96_021EAB38
ldr r0, [sp, #0x10]
ldr r2, [sp, #0x24]
add r1, r7, #0
bl ov96_021E60C0
bl ov96_021E6138
lsl r1, r0, #3
add r0, sp, #0x44
add r2, r0, r1
add r1, r2, #0
sub r1, #8
sub r2, r2, #4
ldr r1, [r1]
ldr r2, [r2]
add r0, r5, #0
bl ov96_021EAF70
ldr r0, [sp, #0xc]
lsl r1, r4, #0x18
ldr r0, [r0, #0x1c]
lsr r1, r1, #0x18
bl ov96_021EAA04
add r5, r0, #0
bl ov96_021EAA20
add r0, r5, #0
mov r1, #2
bl ov96_021EABE0
add r0, r5, #0
mov r1, #1
bl ov96_02218510
ldr r1, _02217DB0 ; =ov96_0221D6E4
lsl r0, r7, #2
ldr r2, _02217DB0 ; =ov96_0221D6E4
add r1, r1, r0
ldrsh r0, [r2, r0]
str r0, [sp, #0x20]
mov r0, #2
ldrsh r0, [r1, r0]
str r0, [sp, #0x1c]
ldr r0, [sp, #0x10]
bl ov96_021E5F24
cmp r7, r0
bne _02217C7E
ldr r1, [sp, #0x20]
add r0, sp, #0x30
strh r1, [r0, #0x10]
ldr r1, [sp, #0x1c]
strh r1, [r0, #0x12]
_02217C7E:
add r0, r5, #0
mov r1, #2
bl ov96_021EAC0C
add r0, r5, #0
mov r1, #7
bl ov96_021EABA8
ldr r1, [sp, #0x20]
ldr r2, [sp, #0x1c]
add r0, r5, #0
bl ov96_021EAF94
bl ov96_021E6104
add r1, r0, #0
add r0, r5, #0
bl ov96_021EAF6C
add r0, sp, #0x38
str r0, [sp]
ldr r1, [sp, #0x20]
ldr r2, [sp, #0x1c]
add r0, r5, #0
add r3, sp, #0x3c
bl ov96_021EB0A4
ldr r0, [r6, #0xc]
ldr r1, [sp, #0x2c]
bic r0, r1
mov r1, #0xf
and r1, r4
orr r0, r1
str r0, [r6, #0xc]
str r5, [r6]
ldr r0, [sp, #0x10]
ldr r2, [sp, #0x24]
add r1, r7, #0
bl ov96_0221935C
str r0, [r6, #4]
ldr r0, [r0, #8]
add r4, r4, #1
str r0, [r6, #8]
cmp r4, #0xc
bge _02217CDC
b _02217BC4
_02217CDC:
ldr r0, [sp, #0xc]
ldr r0, [r0, #0xc]
bl sub_0200E2B0
add r3, r0, #0
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
add r0, sp, #0x40
str r0, [sp, #8]
ldr r2, [sp, #0xc]
ldr r0, [sp, #0x10]
ldr r2, [r2, #0x18]
mov r1, #0
bl ov96_021E62AC
mov r0, #0x69
lsl r0, r0, #2
ldr r1, [sp, #0xc]
add r2, r0, #0
add r4, r1, r0
sub r2, #0xc
add r1, r1, r2
str r1, [sp, #0x18]
ldr r1, [sp, #0xc]
add r0, #0x68
add r7, r1, r0
add r0, r1, #0
ldr r6, _02217DB0 ; =ov96_0221D6E4
mov r5, #0
str r0, [sp, #0x14]
_02217D1A:
ldr r0, [sp, #0x18]
ldr r1, [sp, #0xc]
str r0, [r4, #8]
mov r0, #6
str r7, [r4, #4]
lsl r0, r0, #6
ldr r0, [r1, r0]
mov r1, #0
str r0, [r4, #0xc]
ldr r0, [sp, #0x10]
mov r2, #2
str r0, [r4]
add r0, sp, #0x30
str r0, [sp]
ldr r0, [r4, #4]
ldrsh r1, [r6, r1]
ldrsh r2, [r6, r2]
ldr r0, [r0]
add r3, sp, #0x34
bl ov96_021EB0A4
add r0, r4, #0
mov r1, #1
bl ov96_02218578
ldr r1, [r4, #0x60]
ldr r0, _02217DB4 ; =0xFFF0FFFF
add r7, #0xa8
and r1, r0
mov r0, #2
lsl r0, r0, #0x10
orr r0, r1
str r0, [r4, #0x60]
ldr r0, [sp, #0x34]
add r6, r6, #4
lsl r0, r0, #0xc
str r0, [r4, #0x2c]
ldr r0, [sp, #0x30]
lsl r0, r0, #0xc
str r0, [r4, #0x30]
ldr r0, [sp, #0x34]
lsl r0, r0, #0xc
str r0, [r4, #0x20]
ldr r0, [sp, #0x30]
lsl r0, r0, #0xc
str r0, [r4, #0x24]
ldr r1, [r4, #0x60]
ldr r0, _02217DB8 ; =0xFFCFFFFF
and r1, r0
lsl r0, r5, #0x1e
lsr r0, r0, #0xa
orr r0, r1
str r0, [r4, #0x60]
mov r0, #0
add r1, r4, #0
str r0, [r4, #0x54]
add r1, #0x5f
mov r0, #3
strb r0, [r1]
mov r0, #0x8f
ldr r1, [sp, #0x14]
lsl r0, r0, #2
str r5, [r1, r0]
ldr r0, [sp, #0x18]
add r5, r5, #1
add r0, #0xa8
str r0, [sp, #0x18]
add r0, r1, #0
add r0, #0xa8
add r4, #0xa8
str r0, [sp, #0x14]
cmp r5, #4
blt _02217D1A
add sp, #0x5c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02217DB0: .word ov96_0221D6E4
_02217DB4: .word 0xFFF0FFFF
_02217DB8: .word 0xFFCFFFFF
thumb_func_end ov96_02217B84
thumb_func_start ov96_02217DBC
ov96_02217DBC: ; 0x02217DBC
ldr r3, _02217DC4 ; =ov96_021EA894
ldr r0, [r0, #0x1c]
bx r3
nop
_02217DC4: .word ov96_021EA894
thumb_func_end ov96_02217DBC
thumb_func_start ov96_02217DC8
ov96_02217DC8: ; 0x02217DC8
push {r4, lr}
add r4, r0, #0
cmp r1, #3
bhi _02217E00
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_02217DDC: ; jump table
.short _02217E04 - _02217DDC - 2 ; case 0
.short _02217DE4 - _02217DDC - 2 ; case 1
.short _02217DEC - _02217DDC - 2 ; case 2
.short _02217DFA - _02217DDC - 2 ; case 3
_02217DE4:
mov r1, #1
bl ov96_02218578
pop {r4, pc}
_02217DEC:
mov r1, #7
bl ov96_02218578
mov r0, #1
add r4, #0x59
strb r0, [r4]
pop {r4, pc}
_02217DFA:
bl ov96_02218FFC
pop {r4, pc}
_02217E00:
bl GF_AssertFail
_02217E04:
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02217DC8
thumb_func_start ov96_02217E08
ov96_02217E08: ; 0x02217E08
push {r4, lr}
ldr r2, [r0, #0x14]
ldr r1, [r0, #0x18]
ldr r0, [r0, #0x60]
mov r4, #0
lsl r0, r0, #4
lsr r0, r0, #0x1f
bne _02217E1C
add r0, r4, #0
pop {r4, pc}
_02217E1C:
cmp r2, #0xc
bhi _02217E72
add r0, r2, r2
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02217E2C: ; jump table
.short _02217E6C - _02217E2C - 2 ; case 0
.short _02217E60 - _02217E2C - 2 ; case 1
.short _02217E60 - _02217E2C - 2 ; case 2
.short _02217E6C - _02217E2C - 2 ; case 3
.short _02217E6C - _02217E2C - 2 ; case 4
.short _02217E48 - _02217E2C - 2 ; case 5
.short _02217E48 - _02217E2C - 2 ; case 6
.short _02217E48 - _02217E2C - 2 ; case 7
.short _02217E48 - _02217E2C - 2 ; case 8
.short _02217E60 - _02217E2C - 2 ; case 9
.short _02217E6C - _02217E2C - 2 ; case 10
.short _02217E46 - _02217E2C - 2 ; case 11
.short _02217E48 - _02217E2C - 2 ; case 12
_02217E46:
b _02217E76
_02217E48:
cmp r1, #0xb
beq _02217E50
cmp r1, #6
bne _02217E54
_02217E50:
mov r4, #3
b _02217E76
_02217E54:
cmp r2, #6
bne _02217E5C
mov r4, #2
b _02217E76
_02217E5C:
mov r4, #1
b _02217E76
_02217E60:
cmp r1, #0xb
beq _02217E68
cmp r1, #6
bne _02217E76
_02217E68:
mov r4, #3
b _02217E76
_02217E6C:
bl GF_AssertFail
b _02217E76
_02217E72:
bl GF_AssertFail
_02217E76:
add r0, r4, #0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02217E08
thumb_func_start ov96_02217E7C
ov96_02217E7C: ; 0x02217E7C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x30
bl ov96_021E5DC4
mov r1, #0x62
lsl r1, r1, #2
str r0, [sp, #8]
add r0, r0, r1
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #0xc]
ldr r0, [sp, #8]
add r1, #0x1c
ldr r7, [sp, #4]
add r4, r0, r1
_02217E9A:
add r0, r4, #0
bl ov96_02218744
cmp r0, #0
beq _02217EB4
mov r0, #0x5d
ldrsb r0, [r4, r0]
cmp r0, #0
bgt _02217EB4
ldr r0, [sp, #0xc]
add r6, r0, #1
cmp r6, #4
blt _02217EB6
_02217EB4:
b _02217FBC
_02217EB6:
mov r1, #0x69
ldr r0, [sp, #8]
lsl r1, r1, #2
add r1, r0, r1
mov r0, #0xa8
mul r0, r6
add r5, r1, r0
ldr r1, [sp, #4]
ldr r0, [sp, #0xc]
add r1, r1, r0
lsl r0, r6, #2
add r0, r1, r0
str r0, [sp]
add r0, r4, #0
str r0, [sp, #0x10]
add r0, #0x2c
str r0, [sp, #0x10]
_02217ED8:
add r0, r5, #0
bl ov96_02218744
cmp r0, #0
beq _02217FAE
add r0, r4, #0
add r1, r5, #0
bl ov96_02218598
cmp r0, #0
beq _02217FAE
mov r1, #0
add r0, sp, #0x24
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
ldrb r0, [r7, r6]
cmp r0, #0
beq _02217F0E
ldr r0, [r4, #0x60]
lsl r0, r0, #4
lsr r0, r0, #0x1f
bne _02217F0E
ldr r0, [sp]
strb r1, [r0]
ldrb r0, [r0]
strb r0, [r7, r6]
_02217F0E:
ldrb r0, [r7, r6]
cmp r0, #0
bne _02217FAE
add r1, r5, #0
ldr r0, [sp, #0x10]
add r1, #0x2c
add r2, sp, #0x24
bl VEC_Subtract
ldr r0, [sp, #0x24]
cmp r0, #0
bne _02217F44
ldr r0, [sp, #0x28]
cmp r0, #0
bne _02217F44
bl MTRandom
mov r1, #0x3f
and r0, r1
sub r0, #0x20
str r0, [sp, #0x24]
bl MTRandom
mov r1, #0x3f
and r0, r1
sub r0, #0x20
str r0, [sp, #0x28]
_02217F44:
add r0, sp, #0x24
add r1, r0, #0
bl VEC_Normalize
add r0, r4, #0
add r1, r5, #0
add r2, sp, #0x24
bl ov96_022178A0
str r0, [sp, #0x14]
mov r0, #0
ldr r1, [sp, #0x24]
mvn r0, r0
mul r0, r1
str r0, [sp, #0x24]
mov r0, #0
ldr r1, [sp, #0x28]
mvn r0, r0
mul r0, r1
str r0, [sp, #0x28]
add r0, r5, #0
add r1, r4, #0
add r2, sp, #0x24
bl ov96_022178A0
str r0, [sp, #0x18]
add r0, r4, #0
bl ov96_02217E08
str r0, [sp, #0x1c]
add r0, r5, #0
bl ov96_02217E08
str r0, [sp, #0x20]
ldr r1, [sp, #0x1c]
add r0, r4, #0
bl ov96_02217DC8
ldr r1, [sp, #0x20]
add r0, r5, #0
bl ov96_02217DC8
ldr r0, [sp, #0x14]
cmp r0, #0
bne _02217FA4
ldr r0, [sp, #0x18]
cmp r0, #0
beq _02217FAE
_02217FA4:
ldr r0, [sp]
mov r1, #1
strb r1, [r0]
ldrb r0, [r0]
strb r0, [r7, r6]
_02217FAE:
ldr r0, [sp]
add r6, r6, #1
add r0, r0, #4
add r5, #0xa8
str r0, [sp]
cmp r6, #4
blt _02217ED8
_02217FBC:
ldr r0, [sp, #0xc]
add r4, #0xa8
add r0, r0, #1
add r7, r7, #4
str r0, [sp, #0xc]
cmp r0, #4
bge _02217FCC
b _02217E9A
_02217FCC:
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_02217E7C
thumb_func_start ov96_02217FD0
ov96_02217FD0: ; 0x02217FD0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #0x10]
_02217FDA:
ldr r6, [sp, #4]
ldr r5, [sp, #4]
add r6, #0xc
add r0, r6, #0
add r4, r6, #0
str r0, [sp, #0x14]
add r0, #0x5c
mov r7, #0
add r5, #0x74
add r4, #0x60
str r0, [sp, #0x14]
_02217FF0:
mov r0, #0
str r0, [sp, #8]
ldr r0, [r5, #4]
ldr r0, [r0, #8]
str r0, [sp, #0xc]
ldr r0, [r6, #0x60]
lsl r1, r0, #8
lsr r1, r1, #0x1e
cmp r1, r7
bne _0221807E
lsl r0, r0, #3
lsr r0, r0, #0x1f
beq _0221803E
ldr r1, [sp, #0x14]
mov r0, #0
ldrsb r0, [r1, r0]
sub r1, r0, #1
ldr r0, [sp, #0x14]
strb r1, [r0]
mov r0, #0x5c
ldrsb r0, [r6, r0]
cmp r0, #0
bgt _02218082
mov r0, #5
add r3, r6, #0
lsl r0, r0, #0xe
add r2, r6, #0
add r3, #0x2c
str r0, [r5, #8]
ldmia r3!, {r0, r1}
add r2, #0x20
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r1, [r4]
ldr r0, _022180BC ; =0xEFFFFFFF
and r0, r1
str r0, [r4]
b _02218082
_0221803E:
ldr r0, [r5, #8]
cmp r0, #0
bgt _02218082
add r1, r6, #0
add r1, #0x5c
mov r0, #0x3c
strb r0, [r1]
mov r0, #1
ldr r1, [r4]
lsl r0, r0, #0x1c
orr r1, r0
ldr r0, _022180C0 ; =0xDFFFFFFF
mov r3, #1
and r1, r0
ldr r0, _022180C4 ; =0xBFFFFFFF
and r0, r1
str r0, [r4]
mov r0, #1
str r0, [sp]
ldr r2, [r6, #0x60]
ldr r0, [r6]
lsl r1, r2, #0xa
lsl r2, r2, #8
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_021E8228
b _02218082
_0221807E:
ldr r0, _022180C8 ; =0x444CC000
str r0, [sp, #8]
_02218082:
ldr r0, [r5, #8]
bl _fflt
ldr r1, [sp, #8]
bl _fadd
bl _ffix
ldr r1, [sp, #0xc]
str r0, [r5, #8]
cmp r0, r1
ble _0221809E
add r0, r1, #0
str r0, [r5, #8]
_0221809E:
add r7, r7, #1
add r5, #0x10
cmp r7, #3
blt _02217FF0
ldr r0, [sp, #4]
add r0, #0xa8
str r0, [sp, #4]
ldr r0, [sp, #0x10]
add r0, r0, #1
str r0, [sp, #0x10]
cmp r0, #4
blt _02217FDA
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_022180BC: .word 0xEFFFFFFF
_022180C0: .word 0xDFFFFFFF
_022180C4: .word 0xBFFFFFFF
_022180C8: .word 0x444CC000
thumb_func_end ov96_02217FD0
thumb_func_start ov96_022180CC
ov96_022180CC: ; 0x022180CC
push {r4, r5, r6, r7, lr}
sub sp, #0x24
str r0, [sp]
mov r0, #0
mov r7, #0x3f
ldr r5, [sp]
str r1, [sp, #4]
str r0, [sp, #8]
lsl r7, r7, #0x18
_022180DE:
mov r1, #0
add r0, sp, #0x18
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
add r0, sp, #0xc
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
add r0, r1, #0
add r6, r5, #0
add r4, r5, #0
ldrsh r0, [r5, r0]
add r6, #8
add r4, #0xc
cmp r0, #0
ble _02218110
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
add r0, r7, #0
bl _fadd
b _0221811C
_02218110:
lsl r0, r0, #0xc
bl _fflt
add r1, r7, #0
bl _fsub
_0221811C:
bl _ffix
str r0, [sp, #0x18]
mov r0, #2
ldrsh r0, [r5, r0]
cmp r0, #0
ble _0221813A
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
add r0, r7, #0
bl _fadd
b _02218146
_0221813A:
lsl r0, r0, #0xc
bl _fflt
add r1, r7, #0
bl _fsub
_02218146:
bl _ffix
str r0, [sp, #0x1c]
mov r0, #4
ldrsh r0, [r5, r0]
cmp r0, #0
ble _02218164
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
add r0, r7, #0
bl _fadd
b _02218170
_02218164:
lsl r0, r0, #0xc
bl _fflt
add r1, r7, #0
bl _fsub
_02218170:
bl _ffix
str r0, [sp, #0xc]
mov r0, #6
ldrsh r0, [r5, r0]
cmp r0, #0
ble _0221818E
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
add r0, r7, #0
bl _fadd
b _0221819A
_0221818E:
lsl r0, r0, #0xc
bl _fflt
add r1, r7, #0
bl _fsub
_0221819A:
bl _ffix
str r0, [sp, #0x10]
ldr r1, [r6]
lsl r0, r1, #0x11
lsr r0, r0, #0x1f
beq _02218226
mov r0, #0
mov r1, #2
ldrsh r0, [r5, r0]
ldrsh r1, [r5, r1]
bl ov96_022158D4
cmp r0, #0
beq _022181CC
add r0, r4, #0
bl ov96_0221862C
cmp r0, #0
bne _022181C4
b _022182FC
_022181C4:
add r0, r4, #0
bl ov96_0221910C
b _022182FC
_022181CC:
bl ov96_021E6104
cmp r0, #0
ble _022181E8
bl ov96_021E6104
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
add r0, r7, #0
bl _fadd
b _022181F8
_022181E8:
bl ov96_021E6104
lsl r0, r0, #0xc
bl _fflt
add r1, r7, #0
bl _fsub
_022181F8:
bl _ffix
add r2, r0, #0
ldr r0, [r4, #0x60]
lsl r0, r0, #5
lsr r0, r0, #0x1f
bne _022182FC
ldr r0, [r4, #0x14]
cmp r0, #3
beq _022182FC
add r4, #0x2c
add r0, r4, #0
add r1, sp, #0x18
bl ov96_022158EC
cmp r0, #0
beq _022182FC
mov r0, #2
ldr r1, [r6]
lsl r0, r0, #0x1c
orr r0, r1
str r0, [r6]
b _022182FC
_02218226:
lsl r0, r1, #0x10
lsr r0, r0, #0x1f
beq _02218274
lsl r0, r1, #2
lsr r0, r0, #0x1f
cmp r0, #1
bne _022182FC
ldr r0, [r4, #0x2c]
lsl r0, r0, #4
asr r3, r0, #0x10
ldr r0, [r4, #0x30]
lsl r0, r0, #4
asr r2, r0, #0x10
ldr r0, [r4, #0x14]
cmp r0, #3
bne _0221824E
ldr r0, _02218328 ; =0xDFFFFFFF
and r0, r1
str r0, [r6]
b _022182FC
_0221824E:
mov r0, #0
ldrsh r0, [r5, r0]
sub r0, r0, r3
bpl _02218258
neg r0, r0
_02218258:
cmp r0, #1
bgt _0221826A
mov r0, #2
ldrsh r0, [r5, r0]
sub r0, r0, r2
bpl _02218266
neg r0, r0
_02218266:
cmp r0, #1
ble _022182FC
_0221826A:
add r0, r4, #0
add r1, r5, #0
bl ov96_022186B8
b _022182FC
_02218274:
lsl r0, r1, #3
lsr r0, r0, #0x13
beq _022182FC
lsl r0, r1, #2
lsr r0, r0, #0x1f
cmp r0, #1
bne _022182F4
ldr r0, [r4, #0x14]
cmp r0, #1
beq _0221828C
cmp r0, #4
bne _022182F4
_0221828C:
ldr r0, [r4, #0x60]
lsl r1, r0, #3
lsr r1, r1, #0x1f
bne _022182F4
lsl r0, r0, #5
lsr r0, r0, #0x1f
bne _022182F4
mov r2, #1
add r0, sp, #0xc
add r1, sp, #0x18
lsl r2, r2, #0xe
bl ov96_022158EC
cmp r0, #0
beq _022182C4
ldr r0, [r6]
lsl r0, r0, #3
lsr r0, r0, #0x13
cmp r0, #7
bhi _022182F4
ldr r1, [r4, #0x60]
ldr r0, _0221832C ; =0xBFFFFFFF
and r1, r0
mov r0, #2
lsl r0, r0, #0x1c
orr r0, r1
str r0, [r4, #0x60]
b _022182F4
_022182C4:
mov r2, #3
add r0, sp, #0xc
add r1, sp, #0x18
lsl r2, r2, #0xe
bl ov96_022158EC
cmp r0, #0
bne _022182F4
ldr r0, [r6]
lsl r0, r0, #3
lsr r0, r0, #0x13
cmp r0, #7
bhi _022182F4
mov r0, #1
ldr r1, [r4, #0x60]
lsl r0, r0, #0x1e
orr r1, r0
ldr r0, _02218328 ; =0xDFFFFFFF
and r0, r1
str r0, [r4, #0x60]
ldrh r0, [r5]
strh r0, [r4, #0x1c]
ldrh r0, [r5, #2]
strh r0, [r4, #0x1e]
_022182F4:
ldr r1, [r6]
ldr r0, _02218328 ; =0xDFFFFFFF
and r0, r1
str r0, [r6]
_022182FC:
add r0, r5, #0
ldr r1, [sp, #4]
add r0, #0xc
bl ov96_02218B1C
ldr r0, [sp, #8]
add r5, #0xa8
add r0, r0, #1
str r0, [sp, #8]
cmp r0, #4
bge _02218314
b _022180DE
_02218314:
ldr r0, [sp, #4]
bl ov96_02217E7C
ldr r0, [sp]
ldr r1, [sp, #4]
bl ov96_02217FD0
add sp, #0x24
pop {r4, r5, r6, r7, pc}
nop
_02218328: .word 0xDFFFFFFF
_0221832C: .word 0xBFFFFFFF
thumb_func_end ov96_022180CC
thumb_func_start ov96_02218330
ov96_02218330: ; 0x02218330
push {r4, r5, r6, r7, lr}
sub sp, #0x24
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
add r0, r1, #0
bl ov96_021E5F54
add r0, #0x28
bl ov96_021E8A20
str r0, [sp, #8]
mov r2, #0x30
str r2, [sp, #0x14]
mov r2, #0xc0
ldr r0, [sp]
str r2, [sp, #0x10]
str r2, [sp, #0xc]
mov r2, #0x3f
mov ip, r2
mov r2, #0xf
str r2, [sp, #0x20]
mov r2, #0x60
str r2, [sp, #0x1c]
mov r2, #7
ldr r1, [sp, #8]
mov r6, #0
add r0, #0x1c
mov r7, #0x18
str r2, [sp, #0x18]
_0221836C:
ldr r2, [r0, #0x2c]
ldr r3, [r0, #0x30]
lsl r2, r2, #4
lsl r3, r3, #4
ldr r4, [r0, #0x64]
asr r2, r2, #0x10
asr r3, r3, #0x10
cmp r4, #0
beq _02218384
sub r4, r4, #1
str r4, [r0, #0x64]
b _02218392
_02218384:
bne _02218392
ldr r5, [r0, #0x60]
ldr r4, _02218504 ; =0xFFFFCFFF
and r5, r4
ldr r4, _02218508 ; =0xFFFF3FFF
and r4, r5
str r4, [r0, #0x60]
_02218392:
ldrb r4, [r1, #4]
ldr r5, [sp, #0x14]
bic r4, r5
ldr r5, [r0, #0x60]
lsl r5, r5, #0x12
lsr r5, r5, #0x1e
lsl r5, r5, #0x18
lsr r5, r5, #0x18
lsl r5, r5, #0x1e
lsr r5, r5, #0x1a
orr r4, r5
strb r4, [r1, #4]
ldrb r4, [r1, #2]
ldr r5, [sp, #0x10]
bic r4, r5
ldr r5, [r0, #0x60]
lsl r5, r5, #0x10
lsr r5, r5, #0x1e
lsl r5, r5, #0x18
lsr r5, r5, #0x18
lsl r5, r5, #0x1e
lsr r5, r5, #0x18
orr r4, r5
strb r4, [r1, #2]
ldrb r4, [r1, #4]
ldr r5, [sp, #0xc]
bic r4, r5
ldr r5, [r0, #0x60]
lsl r5, r5, #8
lsr r5, r5, #0x1e
lsl r5, r5, #0x18
lsr r5, r5, #0x18
lsl r5, r5, #0x1e
lsr r5, r5, #0x18
orr r4, r5
strb r4, [r1, #4]
ldr r5, [r0, #0x60]
ldrb r4, [r1, #5]
lsl r5, r5, #0xc
lsr r5, r5, #0x1c
sub r5, r5, #1
lsl r5, r5, #0x18
lsr r5, r5, #0x18
lsl r5, r5, #0x1e
bic r4, r7
lsr r5, r5, #0x1b
orr r4, r5
strb r4, [r1, #5]
cmp r2, #0xff
ble _022183FA
mov r2, #0xff
b _02218400
_022183FA:
cmp r2, #0
bge _02218400
mov r2, #0
_02218400:
strb r2, [r1]
cmp r3, #0xff
ble _0221840A
mov r3, #0xff
b _02218410
_0221840A:
cmp r3, #0
bge _02218410
mov r3, #0
_02218410:
strb r3, [r1, #1]
ldrb r4, [r1, #2]
mov r2, ip
bic r4, r2
ldr r2, [r0, #0x50]
asr r2, r2, #0xc
lsl r2, r2, #0x18
lsr r3, r2, #0x18
mov r2, #0x3f
and r2, r3
orr r2, r4
strb r2, [r1, #2]
ldrb r4, [r1, #4]
ldr r2, [sp, #0x20]
bic r4, r2
ldr r2, [r0, #0x14]
lsl r2, r2, #0x18
lsr r3, r2, #0x18
mov r2, #0xf
and r2, r3
orr r2, r4
strb r2, [r1, #4]
ldr r2, [r0, #0x60]
ldr r3, [sp, #0x1c]
lsl r2, r2, #0x14
lsr r2, r2, #0x14
strb r2, [r1, #3]
ldrb r2, [r1, #5]
bic r2, r3
ldr r3, [r0, #0x60]
lsl r3, r3, #6
lsr r3, r3, #0x1e
lsl r3, r3, #0x18
lsr r3, r3, #0x18
lsl r3, r3, #0x1e
lsr r3, r3, #0x19
orr r2, r3
strb r2, [r1, #5]
ldrb r4, [r1, #5]
ldr r2, [sp, #0x18]
bic r4, r2
add r2, r0, #0
add r2, #0x5f
ldrb r3, [r2]
mov r2, #7
and r2, r3
orr r2, r4
strb r2, [r1, #5]
ldr r2, [r0, #0x60]
lsr r3, r2, #0x1f
beq _02218480
mov r3, #1
str r3, [sp, #4]
ldr r3, _0221850C ; =0x7FFFFFFF
and r2, r3
str r2, [r0, #0x60]
_02218480:
add r6, r6, #1
add r0, #0xa8
add r1, r1, #6
cmp r6, #4
bge _0221848C
b _0221836C
_0221848C:
ldr r0, [sp, #8]
ldr r6, [sp, #8]
ldr r1, [r0, #0x1c]
mov r0, #0x80
bic r1, r0
ldr r0, [sp, #4]
mov r5, #0
lsl r0, r0, #0x1f
lsr r0, r0, #0x18
orr r1, r0
ldr r0, [sp, #8]
add r6, #0x1c
str r1, [r0, #0x1c]
lsl r0, r1, #0x18
lsr r1, r0, #0x18
ldr r0, [sp, #8]
add r4, r5, #0
str r1, [r0, #0x1c]
_022184B0:
add r0, r5, #0
mov r1, #3
bl _s32_div_f
add r7, r0, #0
add r0, r5, #0
mov r1, #3
bl _s32_div_f
mov r0, #0xa8
lsl r2, r1, #4
ldr r1, [sp]
mul r0, r7
add r0, r1, r0
add r0, r2, r0
add r0, #0x8c
ldr r0, [r0]
asr r0, r0, #0xc
bne _022184DA
mov r1, #2
b _022184E4
_022184DA:
cmp r0, #0x1e
bge _022184E2
mov r1, #1
b _022184E4
_022184E2:
mov r1, #0
_022184E4:
ldr r2, [r6]
lsl r1, r4
lsl r0, r2, #0x18
lsr r2, r2, #8
add r1, r2, r1
lsr r0, r0, #0x18
lsl r1, r1, #8
orr r0, r1
add r5, r5, #1
add r4, r4, #2
str r0, [r6]
cmp r5, #0xc
blt _022184B0
add sp, #0x24
pop {r4, r5, r6, r7, pc}
nop
_02218504: .word 0xFFFFCFFF
_02218508: .word 0xFFFF3FFF
_0221850C: .word 0x7FFFFFFF
thumb_func_end ov96_02218330
thumb_func_start ov96_02218510
ov96_02218510: ; 0x02218510
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r6, r0, #0
add r5, r1, #0
bl ov96_021EAA20
add r7, r0, #0
bl ov96_021E90FC
add r4, r0, #0
add r1, sp, #0
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
add r0, r7, #0
bl ov96_021E8BB0
ldrh r0, [r0, #4]
cmp r0, #0
beq _0221853E
mov r0, #0x40
b _02218540
_0221853E:
mov r0, #0x20
_02218540:
cmp r5, #0
beq _0221855E
lsr r1, r0, #0x1f
add r1, r0, r1
asr r1, r1, #1
lsl r1, r1, #0xc
str r1, [sp]
sub r1, r0, r4
lsr r0, r1, #0x1f
add r0, r1, r0
asr r0, r0, #1
add r0, r4, r0
lsl r0, r0, #0xc
str r0, [sp, #4]
b _0221856C
_0221855E:
lsr r1, r0, #0x1f
add r1, r0, r1
asr r1, r1, #1
lsl r1, r1, #0xc
lsl r0, r0, #0xc
str r1, [sp]
str r0, [sp, #4]
_0221856C:
add r0, r6, #0
add r1, sp, #0
bl ov96_021EABF4
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_02218510
thumb_func_start ov96_02218578
ov96_02218578: ; 0x02218578
cmp r1, #4
bne _02218580
mov r3, #0x3c
b _02218582
_02218580:
mov r3, #0
_02218582:
add r2, r0, #0
add r2, #0x5e
strb r3, [r2]
cmp r1, #7
bne _02218594
add r2, r0, #0
mov r3, #0x10
add r2, #0x59
strb r3, [r2]
_02218594:
str r1, [r0, #0x14]
bx lr
thumb_func_end ov96_02218578
thumb_func_start ov96_02218598
ov96_02218598: ; 0x02218598
push {r4, r5, lr}
sub sp, #0x34
add r5, r0, #0
add r4, r1, #0
ldr r1, [r5, #0x50]
ldr r0, [r4, #0x50]
sub r1, r1, r0
bpl _022185AA
neg r1, r1
_022185AA:
mov r0, #5
lsl r0, r0, #0xc
cmp r1, r0
ble _022185B8
add sp, #0x34
mov r0, #0
pop {r4, r5, pc}
_022185B8:
add r0, sp, #0x20
str r0, [sp]
add r0, sp, #0xc
str r0, [sp, #4]
ldr r0, [r5, #4]
ldr r1, [r5, #0x2c]
ldr r0, [r0]
ldr r2, [r5, #0x30]
add r3, sp, #0x1c
bl ov96_021EAF78
add r0, sp, #0x14
str r0, [sp]
add r0, sp, #8
str r0, [sp, #4]
ldr r0, [r4, #4]
ldr r1, [r4, #0x2c]
ldr r0, [r0]
ldr r2, [r4, #0x30]
add r3, sp, #0x10
bl ov96_021EAF78
ldr r0, [r5, #0x14]
cmp r0, #6
bne _022185F0
ldr r0, [sp, #0xc]
add r0, #8
str r0, [sp, #0xc]
_022185F0:
ldr r0, [r4, #0x14]
cmp r0, #6
bne _022185FC
ldr r0, [sp, #8]
add r0, #8
str r0, [sp, #8]
_022185FC:
ldr r1, [sp, #0xc]
ldr r0, [sp, #8]
add r2, sp, #0x28
add r0, r1, r0
lsl r4, r0, #0xc
mov r0, #0
str r0, [sp, #0x24]
str r0, [sp, #0x18]
add r0, sp, #0x1c
add r1, sp, #0x10
bl VEC_Subtract
add r0, sp, #0x28
bl VEC_Mag
cmp r0, r4
bgt _02218624
add sp, #0x34
mov r0, #1
pop {r4, r5, pc}
_02218624:
mov r0, #0
add sp, #0x34
pop {r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_02218598
thumb_func_start ov96_0221862C
ov96_0221862C: ; 0x0221862C
push {r3, r4, lr}
sub sp, #0xc
add r4, r0, #0
bl ov96_02218688
cmp r0, #0
beq _02218676
add r1, sp, #0
mov r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
ldr r0, [r4, #0x60]
add r4, #0x2c
lsl r0, r0, #0xa
lsr r0, r0, #0x1e
lsl r0, r0, #0x18
lsr r3, r0, #0x18
add r2, r3, #0
mov r0, #6
mul r2, r0
ldr r0, _0221867C ; =ov96_0221D708
ldr r3, _02218680 ; =ov96_0221D70C
ldrsh r0, [r0, r2]
lsl r0, r0, #0xc
str r0, [sp]
ldr r0, _02218684 ; =ov96_0221D70A
ldrsh r0, [r0, r2]
ldrsh r2, [r3, r2]
lsl r0, r0, #0xc
str r0, [sp, #4]
add r0, r4, #0
lsl r2, r2, #0xc
bl ov96_022158EC
add sp, #0xc
pop {r3, r4, pc}
_02218676:
mov r0, #0
add sp, #0xc
pop {r3, r4, pc}
.balign 4, 0
_0221867C: .word ov96_0221D708
_02218680: .word ov96_0221D70C
_02218684: .word ov96_0221D70A
thumb_func_end ov96_0221862C
thumb_func_start ov96_02218688
ov96_02218688: ; 0x02218688
ldr r2, [r0, #0x60]
lsl r1, r2, #4
lsr r1, r1, #0x1f
beq _02218694
mov r0, #0
bx lr
_02218694:
lsl r1, r2, #3
lsr r1, r1, #0x1f
beq _0221869E
mov r0, #0
bx lr
_0221869E:
lsl r1, r2, #5
lsr r1, r1, #0x1f
beq _022186A8
mov r0, #0
bx lr
_022186A8:
ldr r0, [r0, #0x14]
cmp r0, #1
bne _022186B2
mov r0, #1
bx lr
_022186B2:
mov r0, #0
bx lr
.balign 4, 0
thumb_func_end ov96_02218688
thumb_func_start ov96_022186B8
ov96_022186B8: ; 0x022186B8
mov r2, #0
ldrsh r2, [r1, r2]
lsl r2, r2, #0xc
str r2, [r0, #0x20]
mov r2, #2
ldrsh r1, [r1, r2]
lsl r1, r1, #0xc
str r1, [r0, #0x24]
bx lr
.balign 4, 0
thumb_func_end ov96_022186B8
thumb_func_start ov96_022186CC
ov96_022186CC: ; 0x022186CC
push {r3, r4, r5, lr}
sub sp, #0x18
ldr r5, _02218740 ; =ov96_0221D6B8
add r3, r0, #0
ldmia r5!, {r0, r1}
add r4, sp, #0xc
add r2, r4, #0
stmia r4!, {r0, r1}
ldr r0, [r5]
add r1, sp, #0
str r0, [r4]
mov r4, #0
str r4, [r1]
str r4, [r1, #4]
str r4, [r1, #8]
ldr r0, [r3, #4]
str r0, [sp]
ldr r0, [r3]
str r0, [sp, #8]
add r0, r2, #0
str r4, [sp, #4]
bl CalcAngleBetweenVecs
mov r2, #2
lsl r2, r2, #0xc
cmp r0, r2
bls _0221870A
mov r1, #0xe
lsl r1, r1, #0xc
cmp r0, r1
blo _02218710
_0221870A:
add sp, #0x18
mov r0, #4
pop {r3, r4, r5, pc}
_02218710:
cmp r0, r2
bls _02218722
mov r1, #6
lsl r1, r1, #0xc
cmp r0, r1
bhs _02218722
add sp, #0x18
mov r0, #2
pop {r3, r4, r5, pc}
_02218722:
mov r1, #6
lsl r1, r1, #0xc
cmp r0, r1
blo _02218738
mov r1, #0xa
lsl r1, r1, #0xc
cmp r0, r1
bhi _02218738
add sp, #0x18
mov r0, #3
pop {r3, r4, r5, pc}
_02218738:
mov r0, #1
add sp, #0x18
pop {r3, r4, r5, pc}
nop
_02218740: .word ov96_0221D6B8
thumb_func_end ov96_022186CC
thumb_func_start ov96_02218744
ov96_02218744: ; 0x02218744
push {r3, r4, r5, lr}
add r4, r0, #0
bne _0221874E
bl GF_AssertFail
_0221874E:
ldr r0, [r4, #0x14]
cmp r0, #0
bne _02218758
bl GF_AssertFail
_02218758:
ldr r5, [r4, #0x14]
mov r0, #0
add r2, r0, #0
add r3, r0, #0
cmp r5, #0xa
beq _0221876E
ldr r1, [r4, #0x60]
lsl r1, r1, #5
lsr r1, r1, #0x1f
bne _0221876E
mov r3, #1
_0221876E:
cmp r3, #0
beq _02218778
cmp r5, #4
beq _02218778
mov r2, #1
_02218778:
cmp r2, #0
beq _02218782
cmp r5, #3
beq _02218782
mov r0, #1
_02218782:
pop {r3, r4, r5, pc}
thumb_func_end ov96_02218744
thumb_func_start ov96_02218784
ov96_02218784: ; 0x02218784
push {r4, lr}
add r4, r1, #0
bl ov96_021E5DC4
mov r1, #0x62
lsl r1, r1, #2
add r1, r0, r1
lsl r0, r4, #2
mov r2, #0
add r1, r1, r0
add r0, r2, #0
_0221879A:
add r2, r2, #1
strb r0, [r1]
add r1, r1, #1
cmp r2, #4
blt _0221879A
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02218784
thumb_func_start ov96_022187A8
ov96_022187A8: ; 0x022187A8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x58
add r5, r0, #0
str r1, [sp]
add r1, r5, #0
add r0, #0x20
add r1, #0x2c
add r2, sp, #0x4c
bl VEC_Subtract
add r0, sp, #0x4c
bl VEC_Mag
add r7, r0, #0
cmp r7, #0
ble _022187CC
mov r4, #1
b _022187CE
_022187CC:
mov r4, #0
_022187CE:
ldr r0, [r5, #0x60]
lsl r0, r0, #4
lsr r0, r0, #0x1f
beq _02218884
ldr r0, [r5, #0x18]
cmp r0, #0
bne _022187E0
bl GF_AssertFail
_022187E0:
ldr r0, [r5, #0x18]
cmp r0, #6
beq _022187EA
cmp r0, #9
bne _022187F0
_022187EA:
mov r6, #1
lsl r6, r6, #0xc
b _022187F2
_022187F0:
ldr r6, _02218928 ; =0x00000B33
_022187F2:
mov r0, #0x58
ldrsb r0, [r5, r0]
cmp r0, #0
bgt _0221883E
mov r2, #0
add r0, sp, #0x10
str r2, [r0]
add r1, sp, #0x1c
str r2, [r0, #4]
str r2, [r1]
str r2, [r0, #8]
add r0, r5, #0
str r2, [r1, #4]
add r0, #0x44
str r2, [r1, #8]
bl VEC_Normalize
add r0, r6, #0
add r1, sp, #0x1c
add r2, sp, #0x10
add r3, sp, #0x28
bl VEC_MultAdd
ldr r0, [sp, #0x28]
cmp r0, #0
bge _02218828
neg r0, r0
_02218828:
ldr r2, [sp, #0x2c]
str r0, [sp, #0x28]
cmp r2, #0
bge _02218832
neg r2, r2
_02218832:
add r0, r5, #0
ldr r1, [sp, #0x28]
add r0, #0x44
str r2, [sp, #0x2c]
bl ov96_02215944
_0221883E:
add r0, r5, #0
add r0, #0x2c
add r1, r5, #0
add r1, #0x44
add r2, r0, #0
bl VEC_Add
add r3, r5, #0
add r3, #0x2c
add r2, r5, #0
ldmia r3!, {r0, r1}
add r2, #0x20
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r0, [r5, #0x44]
cmp r0, #0
bne _02218922
ldr r0, [r5, #0x48]
cmp r0, #0
bne _02218922
ldr r1, [r5, #0x60]
ldr r0, [sp]
lsl r1, r1, #0xa
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_02218784
mov r0, #0
str r0, [r5, #0x10]
ldr r1, [r5, #0x60]
ldr r0, _0221892C ; =0xF7FFFFFF
and r0, r1
str r0, [r5, #0x60]
_02218884:
ldr r0, [r5, #0x60]
lsl r0, r0, #3
lsr r0, r0, #0x1f
bne _02218922
mov r0, #0x58
ldrsb r0, [r5, r0]
cmp r0, #0
bgt _02218922
cmp r4, #0
beq _02218922
add r0, sp, #0x4c
add r1, sp, #0x40
bl VEC_Normalize
ldr r0, [r5, #0x60]
lsl r0, r0, #4
lsr r0, r0, #0x1f
bne _022188BC
add r0, sp, #0x40
bl ov96_022186CC
lsl r0, r0, #0x1c
ldr r2, [r5, #0x60]
ldr r1, _02218930 ; =0xFFF0FFFF
lsr r0, r0, #0xc
and r1, r2
orr r0, r1
str r0, [r5, #0x60]
_022188BC:
ldr r1, [r5, #4]
ldr r0, [r1, #4]
ldr r2, [r1, #8]
mov r1, #0x1e
lsl r1, r1, #0xc
ldr r0, [r0, #0xc]
cmp r2, r1
bge _022188E6
asr r1, r0, #0x1f
lsr r2, r0, #0x15
lsl r1, r1, #0xb
lsl r3, r0, #0xb
mov r0, #2
orr r1, r2
mov r2, #0
lsl r0, r0, #0xa
add r0, r3, r0
adc r1, r2
lsl r1, r1, #0x14
lsr r0, r0, #0xc
orr r0, r1
_022188E6:
cmp r7, r0
bgt _022188F8
add r3, sp, #0x4c
ldmia r3!, {r0, r1}
add r2, sp, #0x34
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
b _0221890A
_022188F8:
add r2, sp, #4
mov r1, #0
str r1, [r2]
str r1, [r2, #4]
str r1, [r2, #8]
add r1, sp, #0x40
add r3, sp, #0x34
bl VEC_MultAdd
_0221890A:
add r0, r5, #0
add r0, #0x2c
add r1, sp, #0x34
add r2, r0, #0
bl VEC_Add
add r2, sp, #0x40
ldmia r2!, {r0, r1}
add r5, #0x38
stmia r5!, {r0, r1}
ldr r0, [r2]
str r0, [r5]
_02218922:
add sp, #0x58
pop {r3, r4, r5, r6, r7, pc}
nop
_02218928: .word 0x00000B33
_0221892C: .word 0xF7FFFFFF
_02218930: .word 0xFFF0FFFF
thumb_func_end ov96_022187A8
thumb_func_start ov96_02218934
ov96_02218934: ; 0x02218934
push {r4, r5, r6, r7, lr}
sub sp, #0x3c
ldr r3, [r0, #0x2c]
cmp r3, #0
ble _02218944
ldr r2, [r0, #0x30]
cmp r2, #0
bgt _0221894A
_02218944:
add sp, #0x3c
mov r0, #1
pop {r4, r5, r6, r7, pc}
_0221894A:
add r1, sp, #4
str r1, [sp]
ldr r0, [r0, #4]
asr r1, r3, #0xc
ldr r0, [r0]
asr r2, r2, #0xc
add r3, sp, #8
bl ov96_021EB06C
ldr r4, [sp, #4]
cmp r4, #0x40
blt _02218A46
cmp r4, #0xa0
bgt _02218A46
ldr r0, [sp, #8]
cmp r0, #0
ble _0221897E
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
mov r0, #0x3f
lsl r0, r0, #0x18
bl _fadd
b _0221898C
_0221897E:
lsl r0, r0, #0xc
bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
bl _fsub
_0221898C:
bl _ffix
add r7, r0, #0
cmp r4, #0
ble _022189A8
lsl r0, r4, #0xc
bl _fflt
add r1, r0, #0
mov r0, #0x3f
lsl r0, r0, #0x18
bl _fadd
b _022189B6
_022189A8:
lsl r0, r4, #0xc
bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
bl _fsub
_022189B6:
bl _ffix
add r4, r0, #0
mov r0, #0
ldr r1, _02218A4C ; =ov96_0221D6D4
add r2, sp, #0xc
add r3, r0, #0
mov r5, #2
_022189C6:
ldrsh r6, [r1, r3]
add r0, r0, #1
lsl r6, r6, #0xc
str r6, [r2]
ldrsh r6, [r1, r5]
add r1, r1, #4
lsl r6, r6, #0xc
str r6, [r2, #4]
add r2, #0xc
cmp r0, #4
blt _022189C6
ldr r5, [sp, #0xc]
ldr r1, [sp, #0x1c]
ldr r0, [sp, #0x10]
sub r2, r7, r5
sub r0, r1, r0
asr r1, r0, #0x1f
asr r3, r2, #0x1f
bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
add r0, r0, r2
adc r1, r3
lsl r1, r1, #0x14
lsr r0, r0, #0xc
orr r0, r1
ldr r1, [sp, #0x18]
sub r1, r1, r5
bl FX_Div
ldr r1, [sp, #0x10]
ldr r5, [sp, #0x24]
add r6, r0, r1
sub r2, r7, r5
ldr r1, [sp, #0x34]
ldr r0, [sp, #0x28]
asr r3, r2, #0x1f
sub r0, r1, r0
asr r1, r0, #0x1f
bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
add r0, r0, r2
adc r1, r3
lsl r1, r1, #0x14
lsr r0, r0, #0xc
orr r0, r1
ldr r1, [sp, #0x30]
sub r1, r1, r5
bl FX_Div
ldr r1, [sp, #0x28]
add r0, r0, r1
cmp r4, r6
blt _02218A46
cmp r4, r0
blt _02218A46
add sp, #0x3c
mov r0, #0
pop {r4, r5, r6, r7, pc}
_02218A46:
mov r0, #1
add sp, #0x3c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02218A4C: .word ov96_0221D6D4
thumb_func_end ov96_02218934
thumb_func_start ov96_02218A50
ov96_02218A50: ; 0x02218A50
push {r4, lr}
add r4, r0, #0
ldr r2, [r4, #4]
ldr r1, [r2, #4]
ldr r1, [r1, #8]
str r1, [r2, #8]
bl ov96_02219398
add r0, r4, #0
bl ov96_02218A68
pop {r4, pc}
thumb_func_end ov96_02218A50
thumb_func_start ov96_02218A68
ov96_02218A68: ; 0x02218A68
push {r4, lr}
sub sp, #0x18
add r4, r0, #0
ldr r0, [r4, #0x60]
ldr r1, _02218AD8 ; =ov96_0221D6E4
lsl r0, r0, #0xa
lsr r0, r0, #0x1e
lsl r2, r0, #2
add r0, sp, #4
str r0, [sp]
ldr r0, [r4, #4]
ldr r3, _02218ADC ; =ov96_0221D6E6
ldrsh r1, [r1, r2]
ldrsh r2, [r3, r2]
ldr r0, [r0]
add r3, sp, #8
bl ov96_021EB0A4
ldr r0, [sp, #8]
add r2, r4, #0
lsl r0, r0, #0xc
str r0, [r4, #0x2c]
ldr r0, [sp, #4]
add r3, sp, #0xc
lsl r0, r0, #0xc
str r0, [r4, #0x30]
ldr r0, [sp, #8]
add r2, #0x44
lsl r0, r0, #0xc
str r0, [r4, #0x20]
ldr r0, [sp, #4]
lsl r0, r0, #0xc
str r0, [r4, #0x24]
mov r0, #0
str r0, [r3]
str r0, [r3, #4]
str r0, [r3, #8]
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r1, [r4, #0x60]
ldr r0, _02218AE0 ; =0xFFF0FFFF
and r1, r0
mov r0, #2
lsl r0, r0, #0x10
orr r1, r0
ldr r0, _02218AE4 ; =0xF7FFFFFF
and r1, r0
ldr r0, _02218AE8 ; =0xDFFFFFFF
and r1, r0
ldr r0, _02218AEC ; =0xBFFFFFFF
and r0, r1
str r0, [r4, #0x60]
add sp, #0x18
pop {r4, pc}
.balign 4, 0
_02218AD8: .word ov96_0221D6E4
_02218ADC: .word ov96_0221D6E6
_02218AE0: .word 0xFFF0FFFF
_02218AE4: .word 0xF7FFFFFF
_02218AE8: .word 0xDFFFFFFF
_02218AEC: .word 0xBFFFFFFF
thumb_func_end ov96_02218A68
thumb_func_start ov96_02218AF0
ov96_02218AF0: ; 0x02218AF0
ldr r1, [r0, #0x14]
sub r1, #9
cmp r1, #2
bls _02218B1A
ldr r2, [r0, #0x50]
cmp r2, #0
bgt _02218B04
mov r1, #0
str r1, [r0, #0x54]
bx lr
_02218B04:
ldr r1, [r0, #0x54]
sub r1, r2, r1
str r1, [r0, #0x50]
bpl _02218B10
mov r1, #0
str r1, [r0, #0x50]
_02218B10:
mov r1, #2
ldr r2, [r0, #0x54]
lsl r1, r1, #0xc
add r1, r2, r1
str r1, [r0, #0x54]
_02218B1A:
bx lr
thumb_func_end ov96_02218AF0
thumb_func_start ov96_02218B1C
ov96_02218B1C: ; 0x02218B1C
push {r4, r5, lr}
sub sp, #0xc
add r4, r0, #0
mov r2, #0x5d
ldrsb r0, [r4, r2]
cmp r0, #0
ble _02218B3A
sub r3, r0, #1
add r0, r4, #0
add r0, #0x5d
strb r3, [r0]
ldrsb r0, [r4, r2]
cmp r0, #0
ble _02218B3A
b _02218DEA
_02218B3A:
ldr r0, [r4, #0x14]
cmp r0, #0xc
bhi _02218B6E
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02218B4C: ; jump table
.short _02218B6E - _02218B4C - 2 ; case 0
.short _02218B6E - _02218B4C - 2 ; case 1
.short _02218B6E - _02218B4C - 2 ; case 2
.short _02218B6E - _02218B4C - 2 ; case 3
.short _02218B6E - _02218B4C - 2 ; case 4
.short _02218B74 - _02218B4C - 2 ; case 5
.short _02218B66 - _02218B4C - 2 ; case 6
.short _02218B74 - _02218B4C - 2 ; case 7
.short _02218B74 - _02218B4C - 2 ; case 8
.short _02218B6E - _02218B4C - 2 ; case 9
.short _02218B74 - _02218B4C - 2 ; case 10
.short _02218B74 - _02218B4C - 2 ; case 11
.short _02218B74 - _02218B4C - 2 ; case 12
_02218B66:
add r0, r4, #0
bl ov96_02218F18
b _02218B74
_02218B6E:
add r0, r4, #0
bl ov96_022187A8
_02218B74:
ldr r0, [r4, #0x14]
cmp r0, #0xc
bls _02218B7C
b _02218DE0
_02218B7C:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02218B88: ; jump table
.short _02218DE0 - _02218B88 - 2 ; case 0
.short _02218C4E - _02218B88 - 2 ; case 1
.short _02218C20 - _02218B88 - 2 ; case 2
.short _02218BFE - _02218B88 - 2 ; case 3
.short _02218BA2 - _02218B88 - 2 ; case 4
.short _02218D62 - _02218B88 - 2 ; case 5
.short _02218D84 - _02218B88 - 2 ; case 6
.short _02218DC6 - _02218B88 - 2 ; case 7
.short _02218C88 - _02218B88 - 2 ; case 8
.short _02218CAC - _02218B88 - 2 ; case 9
.short _02218CEA - _02218B88 - 2 ; case 10
.short _02218D0E - _02218B88 - 2 ; case 11
.short _02218D46 - _02218B88 - 2 ; case 12
_02218BA2:
ldr r0, [r4, #0x60]
lsl r0, r0, #4
lsr r0, r0, #0x1f
beq _02218BAE
bl GF_AssertFail
_02218BAE:
add r0, r4, #0
bl ov96_02218934
cmp r0, #0
beq _02218BC0
add r0, r4, #0
bl ov96_02219030
b _02218DE4
_02218BC0:
ldr r0, [r4, #0x60]
lsl r1, r0, #2
lsr r1, r1, #0x1f
beq _02218BD0
add r0, r4, #0
bl ov96_02218F58
b _02218DE4
_02218BD0:
lsl r0, r0, #1
lsr r0, r0, #0x1f
beq _02218BE2
add r1, r4, #0
add r0, r4, #0
add r1, #0x1c
bl ov96_02218DF8
b _02218DE4
_02218BE2:
mov r1, #0x5e
ldrsb r0, [r4, r1]
sub r2, r0, #1
add r0, r4, #0
add r0, #0x5e
strb r2, [r0]
ldrsb r0, [r4, r1]
cmp r0, #0
bgt _02218CD8
add r0, r4, #0
mov r1, #1
bl ov96_02218578
b _02218DE4
_02218BFE:
mov r1, #0x5b
ldrsb r0, [r4, r1]
sub r2, r0, #1
add r0, r4, #0
add r0, #0x5b
strb r2, [r0]
ldrsb r0, [r4, r1]
cmp r0, #0
bgt _02218CD8
add r0, r4, #0
bl ov96_02218A50
add r0, r4, #0
mov r1, #4
bl ov96_02218578
b _02218DE4
_02218C20:
add r0, r4, #0
bl ov96_02218934
cmp r0, #0
beq _02218C32
add r0, r4, #0
bl ov96_02219030
b _02218DE4
_02218C32:
mov r1, #0x58
ldrsb r0, [r4, r1]
sub r2, r0, #1
add r0, r4, #0
add r0, #0x58
strb r2, [r0]
ldrsb r0, [r4, r1]
cmp r0, #0
bgt _02218CD8
add r0, r4, #0
mov r1, #1
bl ov96_02218578
b _02218DE4
_02218C4E:
add r0, r4, #0
bl ov96_02218934
cmp r0, #0
beq _02218C60
add r0, r4, #0
bl ov96_02219030
b _02218DE4
_02218C60:
ldr r1, [r4, #0x60]
lsl r0, r1, #4
lsr r0, r0, #0x1f
bne _02218CD8
lsl r0, r1, #2
lsr r0, r0, #0x1f
beq _02218C76
add r0, r4, #0
bl ov96_02218F58
b _02218DE4
_02218C76:
lsl r0, r1, #1
lsr r0, r0, #0x1f
beq _02218CD8
add r1, r4, #0
add r0, r4, #0
add r1, #0x1c
bl ov96_02218DF8
b _02218DE4
_02218C88:
mov r1, #0x5a
ldrsb r0, [r4, r1]
sub r2, r0, #1
add r0, r4, #0
add r0, #0x5a
strb r2, [r0]
ldrsb r0, [r4, r1]
cmp r0, #0
bgt _02218CD8
add r0, r4, #0
mov r1, #0
add r0, #0x5a
strb r1, [r0]
add r0, r4, #0
mov r1, #9
bl ov96_02218578
b _02218DE4
_02218CAC:
ldr r0, [r4, #4]
ldr r3, _02218DF0 ; =ov96_0221D7D0
ldr r0, [r0, #4]
ldrb r1, [r0, #0x18]
mov r0, #0x14
add r5, r1, #0
mov r1, #0x5a
mul r5, r0
ldrsb r0, [r4, r1]
lsl r2, r0, #1
add r0, r3, r5
ldrsh r0, [r2, r0]
lsl r0, r0, #0xc
str r0, [r4, #0x50]
ldrsb r0, [r4, r1]
add r2, r0, #1
add r0, r4, #0
add r0, #0x5a
strb r2, [r0]
ldrsb r0, [r4, r1]
cmp r0, #0xa
bge _02218CDA
_02218CD8:
b _02218DE4
_02218CDA:
add r0, r4, #0
mov r1, #0xa
add r0, #0x5a
strb r1, [r0]
add r0, r4, #0
bl ov96_02218578
b _02218DE4
_02218CEA:
mov r1, #0x5a
ldrsb r0, [r4, r1]
sub r2, r0, #1
add r0, r4, #0
add r0, #0x5a
strb r2, [r0]
ldrsb r0, [r4, r1]
cmp r0, #0
bgt _02218DE4
add r0, r4, #0
mov r1, #0
add r0, #0x5a
strb r1, [r0]
add r0, r4, #0
mov r1, #0xb
bl ov96_02218578
b _02218DE4
_02218D0E:
ldr r0, [r4, #0x50]
cmp r0, #0
bne _02218D2C
add r0, r4, #0
bl ov96_02218FD4
add r0, r4, #0
bl ov96_02218934
cmp r0, #0
beq _02218DE4
add r0, r4, #0
bl ov96_02219030
b _02218DE4
_02218D2C:
ldr r1, [r4, #4]
ldr r1, [r1, #4]
ldrb r2, [r1, #0x18]
ldr r1, _02218DF4 ; =ov96_0221D69C
ldrb r1, [r1, r2]
lsl r1, r1, #0xc
sub r0, r0, r1
str r0, [r4, #0x50]
cmp r0, #0
bgt _02218DE4
mov r0, #0
str r0, [r4, #0x50]
b _02218DE4
_02218D46:
mov r1, #0x5a
ldrsb r0, [r4, r1]
sub r2, r0, #1
add r0, r4, #0
add r0, #0x5a
strb r2, [r0]
ldrsb r0, [r4, r1]
cmp r0, #0
bgt _02218DE4
add r0, r4, #0
mov r1, #1
bl ov96_02218578
b _02218DE4
_02218D62:
mov r1, #0x59
ldrsb r0, [r4, r1]
sub r2, r0, #1
add r0, r4, #0
add r0, #0x59
strb r2, [r0]
ldrsb r0, [r4, r1]
cmp r0, #0
bgt _02218DE4
add r0, r4, #0
mov r1, #6
add r0, #0x59
strb r1, [r0]
add r0, r4, #0
bl ov96_02218578
b _02218DE4
_02218D84:
mov r1, #0x59
ldrsb r0, [r4, r1]
sub r2, r0, #1
add r0, r4, #0
add r0, #0x59
strb r2, [r0]
ldrsb r0, [r4, r1]
cmp r0, #0
bgt _02218DE4
add r3, r4, #0
add r3, #0x2c
add r2, r4, #0
ldmia r3!, {r0, r1}
add r2, #0x20
stmia r2!, {r0, r1}
ldr r0, [r3]
add r3, sp, #0
str r0, [r2]
mov r0, #0
str r0, [r3]
str r0, [r3, #4]
str r0, [r3, #8]
add r2, r4, #0
ldmia r3!, {r0, r1}
add r2, #0x44
stmia r2!, {r0, r1}
ldr r0, [r3]
mov r1, #7
str r0, [r2]
add r0, r4, #0
bl ov96_02218578
b _02218DE4
_02218DC6:
mov r1, #0x59
ldrsb r0, [r4, r1]
sub r2, r0, #1
add r0, r4, #0
add r0, #0x59
strb r2, [r0]
ldrsb r0, [r4, r1]
cmp r0, #0
bgt _02218DE4
add r0, r4, #0
bl ov96_02218EB8
b _02218DE4
_02218DE0:
bl GF_AssertFail
_02218DE4:
add r0, r4, #0
bl ov96_02218AF0
_02218DEA:
add sp, #0xc
pop {r4, r5, pc}
nop
_02218DF0: .word ov96_0221D7D0
_02218DF4: .word ov96_0221D69C
thumb_func_end ov96_02218B1C
thumb_func_start ov96_02218DF8
ov96_02218DF8: ; 0x02218DF8
push {r4, r5, lr}
sub sp, #0xc
add r5, r0, #0
add r4, r1, #0
add r0, sp, #0
mov r1, #0
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
ldr r0, [r5, #0x14]
mov r2, #1
cmp r0, #1
beq _02218E18
cmp r0, #4
beq _02218E18
add r2, r1, #0
_02218E18:
cmp r2, #0
bne _02218E20
bl GF_AssertFail
_02218E20:
ldr r0, [r5, #0x60]
lsl r0, r0, #3
lsr r0, r0, #0x1f
beq _02218E2C
bl GF_AssertFail
_02218E2C:
ldr r0, [r5, #0x60]
lsl r0, r0, #5
lsr r0, r0, #0x1f
beq _02218E38
bl GF_AssertFail
_02218E38:
ldr r1, [r5, #0x60]
ldr r0, _02218EB0 ; =0xBFFFFFFF
add r2, r5, #0
and r0, r1
str r0, [r5, #0x60]
mov r0, #0
ldrsh r0, [r4, r0]
add r1, r5, #0
add r1, #0x2c
lsl r0, r0, #0xc
str r0, [sp]
mov r0, #2
ldrsh r0, [r4, r0]
add r2, #0x38
lsl r0, r0, #0xc
str r0, [sp, #4]
add r0, sp, #0
bl VEC_Subtract
add r0, r5, #0
add r0, #0x38
add r1, r0, #0
bl VEC_Normalize
add r1, r5, #0
mov r0, #1
add r1, #0x38
add r3, r5, #0
lsl r0, r0, #0xe
add r2, r1, #0
add r3, #0x44
bl VEC_MultAdd
ldr r0, [r5, #0x44]
cmp r0, #0
bne _02218E86
ldr r0, [r5, #0x48]
cmp r0, #0
beq _02218EAC
_02218E86:
add r0, r5, #0
add r0, #0x38
bl ov96_022186CC
lsl r0, r0, #0x1c
ldr r2, [r5, #0x60]
ldr r1, _02218EB4 ; =0xFFF0FFFF
lsr r0, r0, #0xc
and r1, r2
orr r0, r1
str r0, [r5, #0x60]
add r0, r5, #0
mov r1, #4
add r0, #0x59
strb r1, [r0]
add r0, r5, #0
mov r1, #5
bl ov96_02218578
_02218EAC:
add sp, #0xc
pop {r4, r5, pc}
.balign 4, 0
_02218EB0: .word 0xBFFFFFFF
_02218EB4: .word 0xFFF0FFFF
thumb_func_end ov96_02218DF8
thumb_func_start ov96_02218EB8
ov96_02218EB8: ; 0x02218EB8
push {r3, r4, lr}
sub sp, #0xc
add r4, r0, #0
ldr r0, [r4, #0x14]
mov r1, #1
cmp r0, #7
beq _02218ECC
cmp r0, #6
beq _02218ECC
mov r1, #0
_02218ECC:
cmp r1, #0
bne _02218ED4
bl GF_AssertFail
_02218ED4:
add r3, sp, #0
mov r0, #0
str r0, [r3]
str r0, [r3, #4]
str r0, [r3, #8]
add r2, r4, #0
ldmia r3!, {r0, r1}
add r2, #0x44
stmia r2!, {r0, r1}
ldr r0, [r3]
add r3, r4, #0
str r0, [r2]
add r3, #0x2c
add r2, r4, #0
ldmia r3!, {r0, r1}
add r2, #0x20
stmia r2!, {r0, r1}
ldr r0, [r3]
mov r1, #1
str r0, [r2]
add r0, r4, #0
bl ov96_02218578
add r0, r4, #0
bl ov96_02218934
cmp r0, #0
beq _02218F12
add r0, r4, #0
bl ov96_02219030
_02218F12:
add sp, #0xc
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov96_02218EB8
thumb_func_start ov96_02218F18
ov96_02218F18: ; 0x02218F18
push {r4, lr}
sub sp, #0x18
add r4, r0, #0
add r2, sp, #0
mov r0, #0
str r0, [r2]
str r0, [r2, #4]
str r0, [r2, #8]
add r1, r4, #0
ldr r0, _02218F54 ; =0x00000B33
add r1, #0x38
add r3, sp, #0xc
bl VEC_MultAdd
add r0, r4, #0
add r0, #0x44
add r1, sp, #0xc
add r2, r0, #0
bl VEC_Add
add r0, r4, #0
add r0, #0x2c
add r4, #0x44
add r1, r4, #0
add r2, r0, #0
bl VEC_Add
add sp, #0x18
pop {r4, pc}
nop
_02218F54: .word 0x00000B33
thumb_func_end ov96_02218F18
thumb_func_start ov96_02218F58
ov96_02218F58: ; 0x02218F58
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
ldr r0, [r4, #0x14]
mov r1, #1
cmp r0, #1
beq _02218F6C
cmp r0, #4
beq _02218F6C
mov r1, #0
_02218F6C:
cmp r1, #0
bne _02218F74
bl GF_AssertFail
_02218F74:
ldr r0, [r4, #0x60]
lsl r0, r0, #3
lsr r0, r0, #0x1f
beq _02218F80
bl GF_AssertFail
_02218F80:
ldr r0, [r4, #0x60]
lsl r0, r0, #5
lsr r0, r0, #0x1f
beq _02218F8C
bl GF_AssertFail
_02218F8C:
ldr r1, [r4, #0x60]
ldr r0, _02218FD0 ; =0xDFFFFFFF
and r0, r1
str r0, [r4, #0x60]
add r0, r4, #0
mov r1, #5
add r0, #0x5a
strb r1, [r0]
ldr r0, [r4, #4]
ldr r0, [r0, #4]
ldrb r0, [r0, #0x18]
cmp r0, #0
beq _02218FC4
mov r0, #1
str r0, [sp]
ldr r2, [r4, #0x60]
ldr r0, [r4]
lsl r1, r2, #0xa
lsl r2, r2, #8
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #2
bl ov96_021E8228
_02218FC4:
add r0, r4, #0
mov r1, #8
bl ov96_02218578
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
_02218FD0: .word 0xDFFFFFFF
thumb_func_end ov96_02218F58
thumb_func_start ov96_02218FD4
ov96_02218FD4: ; 0x02218FD4
push {r4, lr}
add r4, r0, #0
mov r1, #0xc
bl ov96_02218578
add r0, r4, #0
add r2, r4, #0
mov r1, #0xa
add r0, #0x5a
strb r1, [r0]
mov r0, #0
str r0, [r4, #0x50]
add r2, #0x2c
ldmia r2!, {r0, r1}
add r4, #0x20
stmia r4!, {r0, r1}
ldr r0, [r2]
str r0, [r4]
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02218FD4
thumb_func_start ov96_02218FFC
ov96_02218FFC: ; 0x02218FFC
push {r4, lr}
add r4, r0, #0
ldr r1, [r4, #4]
ldr r0, [r1, #8]
ldr r1, [r1, #4]
ldr r1, [r1, #8]
bl FX_Div
mov r1, #1
lsl r1, r1, #0xc
sub r1, r1, r0
mov r0, #0xa
mul r0, r1
sub r0, r0, #3
bpl _0221901C
mov r0, #0
_0221901C:
asr r1, r0, #0xc
add r0, r4, #0
add r0, #0x58
strb r1, [r0]
add r0, r4, #0
mov r1, #2
bl ov96_02218578
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02218FFC
thumb_func_start ov96_02219030
ov96_02219030: ; 0x02219030
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
mov r1, #0x3c
add r0, #0x5b
strb r1, [r0]
add r0, r4, #0
mov r2, #0
add r0, #0x58
strb r2, [r0]
ldr r1, [r4, #0x10]
cmp r1, #0
bne _02219084
ldr r0, [r4, #0x60]
lsl r0, r0, #0x14
lsr r3, r0, #0x14
sub r3, #0xa
bpl _02219056
add r3, r2, #0
_02219056:
ldr r1, [r4, #0x60]
ldr r0, _02219108 ; =0xFFFFF000
and r1, r0
lsr r0, r0, #0x14
and r0, r3
orr r0, r1
str r0, [r4, #0x60]
mov r0, #1
str r0, [sp]
ldr r2, [r4, #0x60]
ldr r0, [r4]
lsl r1, r2, #0xa
lsl r2, r2, #8
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #8
bl ov96_021E8228
b _022190C2
_02219084:
ldr r0, [r1, #0x60]
lsl r0, r0, #0x14
lsr r3, r0, #0x14
add r3, #0xa
cmp r3, #0xc8
ble _02219092
mov r3, #0xc8
_02219092:
ldr r2, [r1, #0x60]
ldr r0, _02219108 ; =0xFFFFF000
and r2, r0
lsr r0, r0, #0x14
and r0, r3
orr r0, r2
str r0, [r1, #0x60]
mov r0, #1
str r0, [sp]
ldr r2, [r1, #0x60]
ldr r0, [r1]
lsl r1, r2, #0xa
lsl r2, r2, #8
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #3
bl ov96_021E8228
mov r0, #0
str r0, [r4, #0x10]
_022190C2:
mov r0, #1
str r0, [sp]
ldr r2, [r4, #0x60]
ldr r0, [r4]
lsl r1, r2, #0xa
lsl r2, r2, #8
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
lsr r1, r1, #0x18
lsr r2, r2, #0x18
mov r3, #5
bl ov96_021E8228
mov r3, #1
str r3, [sp]
ldr r2, [r4, #0x60]
ldr r0, [r4]
lsl r1, r2, #0xa
lsl r2, r2, #8
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_021E8228
add r0, r4, #0
mov r1, #3
bl ov96_02218578
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
_02219108: .word 0xFFFFF000
thumb_func_end ov96_02219030
thumb_func_start ov96_0221910C
ov96_0221910C: ; 0x0221910C
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
ldr r0, [r4, #0x60]
lsl r0, r0, #5
lsr r0, r0, #0x1f
beq _0221911E
bl GF_AssertFail
_0221911E:
ldr r0, [r4, #0x60]
lsl r0, r0, #3
lsr r0, r0, #0x1f
beq _0221912A
bl GF_AssertFail
_0221912A:
ldr r1, [r4, #0x60]
mov r0, #1
add r2, r1, #0
lsl r0, r0, #0x1a
orr r2, r0
ldr r1, _02219170 ; =0xFCFFFFFF
add r3, r4, #0
and r1, r2
lsr r0, r0, #2
orr r0, r1
add r2, r4, #0
add r3, #0x2c
str r0, [r4, #0x60]
ldmia r3!, {r0, r1}
add r2, #0x20
stmia r2!, {r0, r1}
ldr r0, [r3]
mov r3, #7
str r0, [r2]
mov r0, #1
str r0, [sp]
ldr r2, [r4, #0x60]
ldr r0, [r4]
lsl r1, r2, #0xa
lsl r2, r2, #8
lsr r1, r1, #0x1e
lsr r2, r2, #0x1e
lsl r1, r1, #0x18
lsl r2, r2, #0x18
lsr r1, r1, #0x18
lsr r2, r2, #0x18
bl ov96_021E8228
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
_02219170: .word 0xFCFFFFFF
thumb_func_end ov96_0221910C
thumb_func_start ov96_02219174
ov96_02219174: ; 0x02219174
ldr r3, [r0, #4]
ldr r2, [r3, #8]
sub r1, r2, r1
str r1, [r3, #8]
ldr r1, [r0, #4]
ldr r0, [r1, #8]
cmp r0, #0
bge _02219188
mov r0, #0
str r0, [r1, #8]
_02219188:
bx lr
.balign 4, 0
thumb_func_end ov96_02219174
thumb_func_start ov96_0221918C
ov96_0221918C: ; 0x0221918C
push {r4, r5, r6, r7, lr}
sub sp, #0x84
str r0, [sp]
mov r0, #0
add r3, sp, #0xc
add r1, r0, #0
mov r2, #7
_0221919A:
stmia r3!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _0221919A
stmia r3!, {r0, r1}
add r0, sp, #0xc
mov r1, #0xaa
mov r2, #9
bl ReadWholeNarcMemberByIdPair
mov r0, #0
str r0, [sp, #4]
_022191B2:
ldr r0, [sp, #4]
mov r6, #0x3f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r7, #0
lsl r6, r6, #0x18
str r0, [sp, #8]
_022191C0:
ldr r0, [sp]
ldr r1, [sp, #4]
add r2, r7, #0
bl ov96_021E60D8
add r4, r0, #0
lsl r2, r7, #0x18
ldr r0, [sp]
ldr r1, [sp, #8]
lsr r2, r2, #0x18
bl ov96_0221935C
add r5, r0, #0
ldrb r0, [r4]
cmp r0, #5
blo _022191E4
bl GF_AssertFail
_022191E4:
ldrb r0, [r4, #3]
cmp r0, #5
blo _022191EE
bl GF_AssertFail
_022191EE:
ldrb r0, [r4, #1]
cmp r0, #5
blo _022191F8
bl GF_AssertFail
_022191F8:
ldrb r0, [r4, #2]
cmp r0, #5
blo _02219202
bl GF_AssertFail
_02219202:
ldrb r0, [r4]
lsl r1, r0, #2
add r0, sp, #0xc
ldr r0, [r0, r1]
cmp r0, #0
ble _0221921E
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
add r0, r6, #0
bl _fadd
b _0221922A
_0221921E:
lsl r0, r0, #0xc
bl _fflt
add r1, r6, #0
bl _fsub
_0221922A:
bl _ffix
mov r1, #0xa
bl _s32_div_f
str r0, [r5]
ldrb r0, [r4]
lsl r1, r0, #2
add r0, sp, #0xc
add r0, r0, r1
ldr r0, [r0, #0x14]
cmp r0, #0
ble _02219254
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
add r0, r6, #0
bl _fadd
b _02219260
_02219254:
lsl r0, r0, #0xc
bl _fflt
add r1, r6, #0
bl _fsub
_02219260:
bl _ffix
mov r1, #0xa
bl _s32_div_f
str r0, [r5, #4]
ldrb r0, [r4, #3]
lsl r1, r0, #2
add r0, sp, #0xc
add r0, r0, r1
ldr r0, [r0, #0x28]
cmp r0, #0
ble _0221928A
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
add r0, r6, #0
bl _fadd
b _02219296
_0221928A:
lsl r0, r0, #0xc
bl _fflt
add r1, r6, #0
bl _fsub
_02219296:
bl _ffix
str r0, [r5, #8]
ldrb r0, [r4, #1]
lsl r1, r0, #2
add r0, sp, #0xc
add r0, r0, r1
ldr r0, [r0, #0x3c]
cmp r0, #0
ble _022192BA
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
add r0, r6, #0
bl _fadd
b _022192C6
_022192BA:
lsl r0, r0, #0xc
bl _fflt
add r1, r6, #0
bl _fsub
_022192C6:
bl _ffix
mov r1, #0xa
bl _s32_div_f
str r0, [r5, #0xc]
ldrb r0, [r4, #2]
lsl r1, r0, #2
add r0, sp, #0xc
add r0, r0, r1
ldr r0, [r0, #0x64]
cmp r0, #0
ble _022192F0
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
add r0, r6, #0
bl _fadd
b _022192FC
_022192F0:
lsl r0, r0, #0xc
bl _fflt
add r1, r6, #0
bl _fsub
_022192FC:
bl _ffix
mov r1, #0xa
bl _s32_div_f
str r0, [r5, #0x10]
ldrb r0, [r4, #2]
lsl r1, r0, #2
add r0, sp, #0xc
add r0, r0, r1
ldr r0, [r0, #0x64]
cmp r0, #0
ble _02219326
lsl r0, r0, #0xc
bl _fflt
add r1, r0, #0
add r0, r6, #0
bl _fadd
b _02219332
_02219326:
lsl r0, r0, #0xc
bl _fflt
add r1, r6, #0
bl _fsub
_02219332:
bl _ffix
mov r1, #0xa
bl _s32_div_f
str r0, [r5, #0x14]
ldrb r0, [r4, #2]
add r7, r7, #1
cmp r7, #3
strb r0, [r5, #0x18]
bge _0221934A
b _022191C0
_0221934A:
ldr r0, [sp, #4]
add r0, r0, #1
str r0, [sp, #4]
cmp r0, #4
bge _02219356
b _022191B2
_02219356:
add sp, #0x84
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0221918C
thumb_func_start ov96_0221935C
ov96_0221935C: ; 0x0221935C
push {r4, r5, r6, lr}
add r5, r1, #0
add r6, r2, #0
bl ov96_021E5DC4
add r4, r0, #0
bne _0221936E
bl GF_AssertFail
_0221936E:
cmp r5, #4
blo _02219376
bl GF_AssertFail
_02219376:
cmp r6, #3
blo _0221937E
bl GF_AssertFail
_0221937E:
lsl r0, r5, #1
add r0, r5, r0
add r1, r6, r0
mov r0, #0x1c
add r4, #0x30
mul r0, r1
add r4, r4, r0
bne _02219392
bl GF_AssertFail
_02219392:
add r0, r4, #0
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_0221935C
thumb_func_start ov96_02219398
ov96_02219398: ; 0x02219398
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x60]
mov r1, #3
lsl r0, r0, #8
lsr r0, r0, #0x1e
add r0, r0, #1
bl _u32_div_f
ldr r2, [r4, #0x60]
ldr r0, _022193C8 ; =0xFF3FFFFF
and r2, r0
lsl r0, r1, #0x1e
lsr r0, r0, #8
orr r0, r2
str r0, [r4, #0x60]
ldr r1, [r4, #8]
lsl r0, r0, #8
lsr r0, r0, #0x1e
add r1, #0x74
lsl r0, r0, #4
add r0, r1, r0
str r0, [r4, #4]
pop {r4, pc}
.balign 4, 0
_022193C8: .word 0xFF3FFFFF
thumb_func_end ov96_02219398
thumb_func_start ov96_022193CC
ov96_022193CC: ; 0x022193CC
cmp r1, #0
beq _022193D4
mov r1, #3
b _022193D6
_022193D4:
mov r1, #4
_022193D6:
ldr r3, _022193E0 ; =sub_0200606C
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bx r3
nop
_022193E0: .word sub_0200606C
thumb_func_end ov96_022193CC
thumb_func_start ov96_022193E4
ov96_022193E4: ; 0x022193E4
ldr r3, _022193F0 ; =AddWindow
add r1, r0, #0
ldr r0, [r1, #4]
add r1, #0x20
ldr r2, _022193F4 ; =ov96_0221D6A4
bx r3
.balign 4, 0
_022193F0: .word AddWindow
_022193F4: .word ov96_0221D6A4
thumb_func_end ov96_022193E4
thumb_func_start ov96_022193F8
ov96_022193F8: ; 0x022193F8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r7, r1, #0
bl ov96_021E5DC4
add r4, r0, #0
ldr r5, [r4, #0x10]
ldr r6, [r4, #0x14]
add r0, #0x20
mov r1, #0
bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
mov r0, #1
str r0, [sp, #4]
add r0, r5, #0
add r2, r7, #0
mov r3, #3
bl BufferIntegerAsString
ldr r3, [r4]
add r0, r5, #0
add r1, r6, #0
mov r2, #0xa3
bl ReadMsgData_ExpandPlaceholders
add r5, r0, #0
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _0221945C ; =0x000F0E00
mov r1, #4
str r0, [sp, #8]
add r0, r4, #0
add r0, #0x20
add r2, r5, #0
str r3, [sp, #0xc]
bl AddTextPrinterParameterizedWithColor
add r0, r5, #0
bl String_Delete
add r4, #0x20
add r0, r4, #0
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0221945C: .word 0x000F0E00
thumb_func_end ov96_022193F8
thumb_func_start ov96_02219460
ov96_02219460: ; 0x02219460
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
ldr r1, [r0, #4]
add r4, r0, #0
ldr r1, [r1, #8]
add r7, r2, #0
asr r1, r1, #0xc
add r4, #0x5f
cmp r1, #0x1e
bge _02219478
mov r5, #1
b _0221947A
_02219478:
mov r5, #0
_0221947A:
bl ov96_0221862C
cmp r0, #0
beq _0221948E
cmp r5, #0
beq _0221948A
mov r0, #1
b _02219490
_0221948A:
mov r0, #0
b _02219490
_0221948E:
mov r0, #3
_02219490:
cmp r7, #0
bne _02219498
strb r0, [r4]
pop {r3, r4, r5, r6, r7, pc}
_02219498:
ldr r1, [r6]
lsl r2, r1, #0x11
lsr r2, r2, #0x1f
beq _022194BA
cmp r0, #1
bhi _022194AA
mov r0, #2
strb r0, [r4]
pop {r3, r4, r5, r6, r7, pc}
_022194AA:
cmp r0, #3
bne _022194B4
mov r0, #4
strb r0, [r4]
pop {r3, r4, r5, r6, r7, pc}
_022194B4:
bl GF_AssertFail
pop {r3, r4, r5, r6, r7, pc}
_022194BA:
lsl r1, r1, #0x10
lsr r1, r1, #0x1f
bne _022194C2
strb r0, [r4]
_022194C2:
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_02219460
thumb_func_start ov96_022194C4
ov96_022194C4: ; 0x022194C4
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
add r6, r1, #0
add r7, r2, #0
str r3, [sp, #0x10]
cmp r5, #0
bne _022194D8
bl GF_AssertFail
_022194D8:
cmp r6, #0
bne _022194E0
bl GF_AssertFail
_022194E0:
cmp r7, #0
bne _022194E8
bl GF_AssertFail
_022194E8:
ldr r0, [sp, #0x10]
cmp r0, #0
bne _022194F2
bl GF_AssertFail
_022194F2:
ldr r0, [sp, #0x28]
cmp r0, #0
bne _022194FC
bl GF_AssertFail
_022194FC:
ldr r0, [sp, #0x2c]
cmp r0, #0
bne _02219506
bl GF_AssertFail
_02219506:
ldr r0, [sp, #0x34]
mov r1, #0xc8
bl AllocFromHeap
add r4, r0, #0
mov r1, #0
mov r2, #0xc8
bl MI_CpuFill8
str r5, [r4, #8]
str r6, [r4, #0xc]
str r7, [r4, #0x10]
add r0, sp, #0x18
ldrb r1, [r0, #0x18]
add r0, r4, #0
add r0, #0x22
strb r1, [r0]
ldr r0, [sp, #0x34]
str r0, [r4, #4]
ldr r0, [sp, #0x10]
str r0, [r4, #0x14]
ldr r0, [sp, #0x28]
str r0, [r4, #0x18]
ldr r0, [sp, #0x2c]
str r0, [r4, #0x1c]
ldr r0, [sp, #0x38]
str r0, [r4]
ldr r1, [r4, #4]
mov r0, #0x14
bl NARC_New
str r0, [r4, #0x24]
ldr r0, [r4, #4]
add r3, r4, #0
str r0, [sp]
mov r0, #0xf2
mov r1, #7
mov r2, #1
add r3, #0x2c
bl GfGfxLoader_GetScrnData
str r0, [r4, #0x28]
bl sub_02074490
add r3, r0, #0
mov r0, #0
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
ldr r0, _022195C4 ; =0x00002714
add r1, r6, #0
str r0, [sp, #0xc]
add r0, r5, #0
mov r2, #0x14
bl SpriteRenderer_LoadPlttResObjFromNarcId
strh r0, [r4, #0x20]
ldr r0, [sp, #0x38]
bl ov96_021E5F24
add r1, r0, #0
ldr r0, [sp, #0x38]
bl ov96_021E5D50
add r6, r0, #0
mov r7, #0
add r5, r4, #0
_02219590:
ldr r1, [r4, #4]
mov r0, #0xb
bl String_New
add r1, r5, #0
add r1, #0xb0
str r0, [r1]
add r0, r5, #0
add r0, #0xb0
add r1, r6, #0
ldr r0, [r0]
add r1, #0x12
bl CopyU16ArrayToString
add r7, r7, #1
add r5, r5, #4
add r6, #0x28
cmp r7, #3
blt _02219590
add r0, r4, #0
bl ov96_02219A08
add r0, r4, #0
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
_022195C4: .word 0x00002714
thumb_func_end ov96_022194C4
thumb_func_start ov96_022195C8
ov96_022195C8: ; 0x022195C8
push {r4, lr}
add r4, r0, #0
bl ov96_02219C30
add r0, r4, #0
mov r1, #0x3c
bl ov96_022196E4
add r0, r4, #0
mov r1, #0
bl ov96_02219A5C
add r0, r4, #0
bl ov96_02219B30
pop {r4, pc}
thumb_func_end ov96_022195C8
thumb_func_start ov96_022195E8
ov96_022195E8: ; 0x022195E8
push {r4, r5, r6, lr}
add r6, r0, #0
bne _022195F2
bl GF_AssertFail
_022195F2:
ldr r0, [r6, #0x24]
bl NARC_Delete
mov r4, #0
add r5, r6, #0
_022195FC:
add r0, r5, #0
add r0, #0xb0
ldr r0, [r0]
bl String_Delete
add r4, r4, #1
add r5, r5, #4
cmp r4, #3
blt _022195FC
ldr r0, [r6, #0x28]
bl FreeToHeap
add r4, r6, #0
mov r5, #0
add r4, #0x30
_0221961A:
add r0, r4, #0
bl RemoveWindow
add r5, r5, #1
add r4, #0x10
cmp r5, #3
blt _0221961A
mov r5, #0
add r4, r6, #0
_0221962C:
ldr r0, [r4, #0x60]
cmp r0, #0
bne _02219636
bl GF_AssertFail
_02219636:
ldr r0, [r4, #0x60]
bl sub_0200D9DC
add r5, r5, #1
add r4, r4, #4
cmp r5, #0x12
blt _0221962C
add r0, r6, #0
bl FreeToHeap
pop {r4, r5, r6, pc}
thumb_func_end ov96_022195E8
thumb_func_start ov96_0221964C
ov96_0221964C: ; 0x0221964C
push {r4, r5, r6, lr}
mov r4, #0
add r5, r0, #0
add r6, r4, #0
_02219654:
add r0, r5, #0
add r0, #0xa0
ldr r0, [r0]
add r1, r6, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r4, r4, #1
add r5, r5, #4
cmp r4, #2
blt _02219654
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_0221964C
thumb_func_start ov96_0221966C
ov96_0221966C: ; 0x0221966C
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
str r1, [sp]
add r6, r0, #0
add r5, r3, #0
str r2, [sp, #4]
cmp r6, #0
bne _02219680
bl GF_AssertFail
_02219680:
ldr r0, [sp]
cmp r0, #4
blo _0221968A
bl GF_AssertFail
_0221968A:
mov r7, #0
add r4, r7, #0
_0221968E:
ldrb r0, [r5, #1]
add r1, r7, #6
lsl r0, r0, #2
add r0, r6, r0
add r0, #0x88
ldr r0, [r0]
bl UnkImageStruct_TryChangeSpriteAnimSeqNo
cmp r4, #3
beq _022196AC
ldrb r1, [r5]
ldrb r0, [r5, #2]
cmp r1, r0
beq _022196AC
add r7, r4, #1
_022196AC:
add r4, r4, #1
add r5, r5, #2
cmp r4, #4
blt _0221968E
ldr r0, [r6]
bl ov96_021E5F24
ldr r1, [sp]
cmp r1, r0
bne _022196DE
add r0, r6, #0
add r0, #0xc2
ldrh r1, [r0]
ldr r0, [sp, #4]
cmp r0, r1
beq _022196DE
ldr r1, [sp, #4]
add r0, r6, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_02219A5C
ldr r0, [sp, #4]
add r6, #0xc2
strh r0, [r6]
_022196DE:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_0221966C
thumb_func_start ov96_022196E4
ov96_022196E4: ; 0x022196E4
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r4, r1, #0
add r6, r0, #0
add r0, r4, #0
mov r1, #0x64
bl _s32_div_f
lsl r0, r1, #0x18
lsr r5, r0, #0x18
add r0, r5, #0
mov r1, #0xa
bl _s32_div_f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
add r0, r5, #0
mov r1, #0xa
bl _s32_div_f
lsl r0, r1, #0x18
lsr r0, r0, #0x18
str r0, [sp]
cmp r4, #0xa
blt _0221971C
cmp r4, #0x37
ble _02219720
_0221971C:
mov r1, #1
b _02219722
_02219720:
mov r1, #0
_02219722:
add r0, r6, #0
add r0, #0xc4
str r1, [r0]
mov r4, #0
add r5, r6, #0
mov r7, #1
_0221972E:
add r0, r6, #0
add r0, #0xc4
ldr r0, [r0]
cmp r0, #0
bne _0221973C
add r1, r7, #0
b _0221973E
_0221973C:
mov r1, #0
_0221973E:
add r0, r5, #0
add r0, #0x88
ldr r0, [r0]
bl UnkImageStruct_SetSpriteVisibleFlag
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
blt _0221972E
add r0, r6, #0
add r0, #0xa8
ldr r1, [sp, #4]
ldr r0, [r0]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
add r6, #0xac
ldr r1, [sp]
ldr r0, [r6]
add r1, r1, #1
bl Set2dSpriteAnimSeqNo
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_022196E4
thumb_func_start ov96_02219770
ov96_02219770: ; 0x02219770
push {r3, r4, r5, lr}
add r5, r0, #0
add r0, #0xa0
ldr r0, [r0]
add r4, r2, #0
bl UnkImageStruct_SetSpriteVisibleFlag
add r5, #0xa4
ldr r0, [r5]
add r1, r4, #0
bl UnkImageStruct_SetSpriteVisibleFlag
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_02219770
thumb_func_start ov96_0221978C
ov96_0221978C: ; 0x0221978C
add r0, #0xc2
ldrh r0, [r0]
bx lr
.balign 4, 0
thumb_func_end ov96_0221978C
thumb_func_start ov96_02219794
ov96_02219794: ; 0x02219794
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
ldr r0, [r5]
add r4, r2, #0
bl ov96_021E5F24
lsl r0, r0, #0x18
lsr r7, r0, #0x18
add r0, r4, #1
mov r1, #3
bl _s32_div_f
lsl r0, r1, #0x18
lsr r6, r0, #0x18
add r0, r5, #0
add r0, #0xc0
ldrb r0, [r0]
cmp r0, #0
beq _022197C8
cmp r0, #1
beq _02219856
cmp r0, #2
bne _022197C6
b _0221992A
_022197C6:
b _02219936
_022197C8:
add r0, r5, #0
add r0, #0x9c
add r1, sp, #8
mov r3, #0x1e
ldr r0, [r0]
add r1, #2
add r2, sp, #8
lsl r3, r3, #0x10
bl UnkImageStruct_GetSpritePositionXY_CustomScreenYOffset
add r0, sp, #4
mov r1, #4
ldrsh r1, [r0, r1]
cmp r1, #0xd8
bge _0221981C
mov r0, #0x11
lsl r0, r0, #4
sub r0, r0, r1
bpl _022197F0
neg r0, r0
_022197F0:
add r2, sp, #4
mov r1, #4
lsl r0, r0, #0xe
ldrsh r3, [r2, r1]
asr r0, r0, #0x10
add r0, r3, r0
strh r0, [r2, #4]
ldrsh r0, [r2, r1]
cmp r0, #0xd8
ble _02219808
mov r0, #0xd8
strh r0, [r2, #4]
_02219808:
add r4, sp, #4
mov r2, #6
mov r3, #4
ldrsh r2, [r4, r2]
ldrsh r3, [r4, r3]
add r0, r5, #0
mov r1, #0xf
bl ov96_02219F20
b _0221993A
_0221981C:
mov r2, #0x28
add r3, r2, #0
strh r2, [r0, #6]
sub r3, #0x50
strh r3, [r0, #4]
add r0, r5, #0
mov r1, #0xf
bl ov96_02219F20
str r4, [sp]
add r2, r5, #0
add r2, #0x9c
ldr r0, [r5]
ldr r1, [r5, #4]
ldr r2, [r2]
add r3, r7, #0
bl ov96_02219DA8
add r0, r5, #0
add r1, r6, #0
bl ov96_02219EE0
add r0, r5, #0
add r0, #0xc0
ldrb r0, [r0]
add r5, #0xc0
add r0, r0, #1
strb r0, [r5]
b _0221993A
_02219856:
add r0, r5, #0
add r0, #0x98
add r1, sp, #4
mov r3, #0x1e
ldr r0, [r0]
add r1, #2
add r2, sp, #4
lsl r3, r3, #0x10
bl UnkImageStruct_GetSpritePositionXY_CustomScreenYOffset
add r1, sp, #4
mov r0, #0
ldrsh r0, [r1, r0]
mov r1, #0x88
sub r2, r1, r0
bpl _02219878
neg r2, r2
_02219878:
lsl r1, r2, #1
add r2, r2, r1
asr r1, r2, #1
lsr r1, r1, #0x1e
add r1, r2, r1
lsl r1, r1, #0xe
asr r4, r1, #0x10
cmp r0, #0x88
bgt _022198D4
cmp r4, #0
bne _02219890
mov r4, #1
_02219890:
add r6, sp, #4
mov r3, #0
ldrsh r0, [r6, r3]
mov r2, #2
mov r1, #0xe
add r0, r0, r4
strh r0, [r6]
ldrsh r2, [r6, r2]
ldrsh r3, [r6, r3]
add r0, r5, #0
bl ov96_02219F20
add r0, r5, #0
add r0, #0x9c
add r1, sp, #4
mov r3, #0x1e
ldr r0, [r0]
add r1, #2
add r2, sp, #4
lsl r3, r3, #0x10
bl UnkImageStruct_GetSpritePositionXY_CustomScreenYOffset
mov r3, #0
ldrsh r0, [r6, r3]
mov r2, #2
mov r1, #0xf
add r0, r0, r4
strh r0, [r6]
ldrsh r2, [r6, r2]
ldrsh r3, [r6, r3]
add r0, r5, #0
bl ov96_02219F20
b _0221993A
_022198D4:
add r0, r5, #0
add r0, #0x98
ldr r2, [r0]
add r0, r5, #0
add r0, #0x9c
ldr r1, [r0]
add r0, r5, #0
add r0, #0x98
str r1, [r0]
add r0, r5, #0
add r0, #0x9c
str r2, [r0]
add r0, r5, #0
add r0, #0xa0
ldr r2, [r0]
add r0, r5, #0
add r0, #0xa4
ldr r1, [r0]
add r0, r5, #0
add r0, #0xa0
str r1, [r0]
add r0, r5, #0
add r0, #0xa4
str r2, [r0]
add r0, r5, #0
mov r1, #0xe
mov r2, #0x28
mov r3, #0x30
bl ov96_02219F20
add r0, r5, #0
mov r1, #0xf
mov r2, #0x28
mov r3, #0x88
bl ov96_02219F20
add r0, r5, #0
add r0, #0xc0
ldrb r0, [r0]
add r5, #0xc0
add r0, r0, #1
strb r0, [r5]
b _0221993A
_0221992A:
mov r0, #0
add r5, #0xc0
strb r0, [r5]
add sp, #0xc
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02219936:
bl GF_AssertFail
_0221993A:
mov r0, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end ov96_02219794
thumb_func_start ov96_02219940
ov96_02219940: ; 0x02219940
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
beq _0221994C
cmp r4, #4
blo _02219950
_0221994C:
bl GF_AssertFail
_02219950:
add r5, #0xbc
ldrsb r0, [r5, r4]
add r0, r0, #1
strb r0, [r5, r4]
ldrsb r0, [r5, r4]
cmp r0, #0xc
ble _02219966
mov r0, #0
strb r0, [r5, r4]
mov r0, #1
pop {r3, r4, r5, pc}
_02219966:
mov r0, #0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_02219940
thumb_func_start ov96_0221996C
ov96_0221996C: ; 0x0221996C
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
cmp r5, #0
bne _0221997E
bl GF_AssertFail
_0221997E:
cmp r4, #4
blo _02219986
bl GF_AssertFail
_02219986:
cmp r6, #3
blo _0221998E
bl GF_AssertFail
_0221998E:
cmp r7, #0
bne _0221999C
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
bl ov96_02219DD0
_0221999C:
add r0, r5, #0
add r1, r4, #0
add r2, r7, #0
bl ov96_02219F50
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_0221996C
thumb_func_start ov96_022199A8
ov96_022199A8: ; 0x022199A8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
ldr r6, _02219A04 ; =ov96_0221D910
add r7, r2, #0
str r3, [sp]
add r5, r0, #0
add r4, r1, #0
add r3, sp, #4
mov r2, #6
_022199BA:
ldmia r6!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _022199BA
ldr r0, [r6]
cmp r5, #0
str r0, [r3]
bne _022199CE
bl GF_AssertFail
_022199CE:
cmp r4, #0
bne _022199D6
bl GF_AssertFail
_022199D6:
add r1, sp, #4
strh r7, [r1]
ldr r0, [sp]
mov r3, #0x1e
strh r0, [r1, #2]
add r0, sp, #0x40
ldrh r2, [r0, #0x10]
lsl r3, r3, #0x10
strh r2, [r1, #6]
ldrh r0, [r0, #0x14]
add r1, r4, #0
add r2, sp, #4
str r0, [sp, #0xc]
add r0, r5, #0
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
mov r1, #1
add r4, r0, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r0, r4, #0
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02219A04: .word ov96_0221D910
thumb_func_end ov96_022199A8
thumb_func_start ov96_02219A08
ov96_02219A08: ; 0x02219A08
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
bne _02219A12
bl GF_AssertFail
_02219A12:
ldr r0, [r5, #0x14]
cmp r0, #0
bne _02219A1C
bl GF_AssertFail
_02219A1C:
add r6, r5, #0
ldr r7, _02219A58 ; =ov96_0221D8F8
mov r4, #0
add r6, #0x30
_02219A24:
lsl r1, r4, #4
lsl r2, r4, #3
ldr r0, [r5, #0x14]
add r1, r6, r1
add r2, r7, r2
bl AddWindow
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _02219A24
mov r2, #0
str r2, [sp]
ldr r0, [r5, #0x14]
mov r1, #5
mov r3, #1
bl BG_FillCharDataRange
mov r1, #0x1e
ldr r2, [r5, #4]
mov r0, #4
lsl r1, r1, #4
bl LoadFontPal0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02219A58: .word ov96_0221D8F8
thumb_func_end ov96_02219A08
thumb_func_start ov96_02219A5C
ov96_02219A5C: ; 0x02219A5C
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r6, r1, #0
add r5, r0, #0
add r0, r6, #0
mov r1, #0x64
bl _s32_div_f
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #3]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0]
mov r0, #0x64
mul r0, r4
sub r0, r6, r0
mov r1, #0xa
bl _s32_div_f
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #4]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0, #1]
add r0, r6, #0
mov r1, #0xa
bl _s32_div_f
lsl r0, r1, #0x18
lsr r4, r0, #0x18
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x1c
strb r1, [r0, #5]
add r0, r4, #0
mov r1, #5
bl _s32_div_f
lsl r1, r0, #3
add r0, sp, #0x1c
strb r1, [r0, #2]
mov r4, #0
mov r6, #4
mov r7, #8
_02219AE6:
str r6, [sp]
str r7, [sp, #4]
ldr r0, [r5, #0x2c]
lsl r2, r4, #2
add r0, #0xc
str r0, [sp, #8]
add r0, sp, #0x1c
add r0, #3
ldrb r0, [r0, r4]
add r2, #0x10
lsl r2, r2, #0x18
str r0, [sp, #0xc]
add r0, sp, #0x1c
ldrb r0, [r0, r4]
mov r1, #6
lsr r2, r2, #0x18
str r0, [sp, #0x10]
mov r0, #0x14
str r0, [sp, #0x14]
mov r0, #0x10
str r0, [sp, #0x18]
ldr r0, [r5, #0x14]
mov r3, #0xb
bl CopyRectToBgTilemapRect
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #3
blo _02219AE6
ldr r0, [r5, #0x14]
mov r1, #6
bl ScheduleBgTilemapBufferTransfer
add sp, #0x24
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02219A5C
thumb_func_start ov96_02219B30
ov96_02219B30: ; 0x02219B30
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
add r0, #0x30
mov r1, #0
bl FillWindowPixelBuffer
add r1, r5, #0
add r1, #0x22
ldrb r1, [r1]
ldr r0, [r5]
bl ov96_021E5F34
ldr r1, [r5, #4]
bl PlayerProfile_GetPlayerName_NewString
mov r1, #0
add r4, r0, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _02219BC0 ; =0x000F0E00
add r2, r4, #0
str r0, [sp, #8]
add r0, r5, #0
str r1, [sp, #0xc]
add r0, #0x30
add r3, r1, #0
bl AddTextPrinterParameterizedWithColor
ldr r0, [r5, #4]
mov r3, #0x13
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
str r0, [sp, #8]
add r0, r5, #0
ldr r1, [r5, #0x1c]
ldr r2, [r5, #0x18]
add r0, #0x50
lsl r3, r3, #4
bl ov96_02219BDC
add r0, r4, #0
bl String_Delete
add r0, r5, #0
add r0, #0x30
bl CopyWindowToVram
mov r0, #1
add r2, r5, #0
str r0, [sp]
mov r3, #2
str r3, [sp, #4]
add r2, #0xb4
ldr r0, [r5, #0x1c]
ldr r2, [r2]
mov r1, #0
bl BufferString
ldr r0, [r5, #4]
mov r3, #0x9a
str r0, [sp]
add r0, r5, #0
ldr r1, [r5, #0x1c]
ldr r2, [r5, #0x18]
add r0, #0x40
bl ov96_02219BC4
add sp, #0x10
pop {r3, r4, r5, pc}
.balign 4, 0
_02219BC0: .word 0x000F0E00
thumb_func_end ov96_02219B30
thumb_func_start ov96_02219BC4
ov96_02219BC4: ; 0x02219BC4
push {r3, r4, lr}
sub sp, #0xc
ldr r4, [sp, #0x18]
str r4, [sp]
mov r4, #0
str r4, [sp, #4]
str r4, [sp, #8]
bl ov96_02219BDC
add sp, #0xc
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov96_02219BC4
thumb_func_start ov96_02219BDC
ov96_02219BDC: ; 0x02219BDC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r4, r1, #0
mov r1, #0
add r5, r0, #0
add r6, r2, #0
add r7, r3, #0
bl FillWindowPixelBuffer
ldr r3, [sp, #0x28]
add r0, r4, #0
add r1, r6, #0
add r2, r7, #0
bl ReadMsgData_ExpandPlaceholders
add r4, r0, #0
add r3, sp, #0x18
mov r0, #0x18
ldrsh r0, [r3, r0]
mov r1, #0
mov r6, #0x14
str r0, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _02219C2C ; =0x000F0E00
add r2, r4, #0
str r0, [sp, #8]
str r1, [sp, #0xc]
ldrsh r3, [r3, r6]
add r0, r5, #0
bl AddTextPrinterParameterizedWithColor
add r0, r4, #0
bl String_Delete
add r0, r5, #0
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02219C2C: .word 0x000F0E00
thumb_func_end ov96_02219BDC
thumb_func_start ov96_02219C30
ov96_02219C30: ; 0x02219C30
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x40
add r5, r0, #0
mov r0, #0
add r2, sp, #0xc
add r1, r0, #0
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
stmia r2!, {r0, r1}
str r0, [r2]
add r0, r5, #0
add r0, #0x22
ldrb r0, [r0]
mov r2, #0x86
mov r3, #0xa0
add r0, #0xc
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp]
mov r0, #6
str r0, [sp, #4]
ldr r0, [r5, #8]
ldr r1, [r5, #0xc]
bl ov96_022199A8
mov r1, #1
str r0, [r5, #0x60]
bl UnkImageStruct_SetSpritePalIndex
mov r7, #0
mov r6, #0x78
add r4, r5, #0
_02219C76:
lsl r0, r6, #0x10
asr r0, r0, #0x10
str r0, [sp, #8]
add r0, r7, #1
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp]
mov r0, #5
str r0, [sp, #4]
ldr r0, [r5, #8]
ldr r1, [r5, #0xc]
ldr r2, [sp, #8]
mov r3, #0x24
bl ov96_022199A8
lsl r1, r7, #0x18
str r0, [r4, #0x68]
add r0, r5, #0
lsr r1, r1, #0x18
mov r2, #0
bl ov96_02219DD0
mov r0, #0xa
str r0, [sp]
mov r0, #4
str r0, [sp, #4]
ldr r0, [r5, #8]
ldr r1, [r5, #0xc]
ldr r2, [sp, #8]
mov r3, #0x24
bl ov96_022199A8
mov r1, #0
str r0, [r4, #0x78]
bl UnkImageStruct_SetSpriteVisibleFlag
mov r0, #6
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
lsl r2, r6, #0x10
ldr r0, [r5, #8]
ldr r1, [r5, #0xc]
asr r2, r2, #0x10
mov r3, #0x18
bl ov96_022199A8
add r1, r4, #0
add r1, #0x88
str r0, [r1]
add r0, r4, #0
add r0, #0x88
ldr r0, [r0]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
add r7, r7, #1
add r6, #0x20
add r4, r4, #4
cmp r7, #4
blt _02219C76
mov r4, #0
mov r7, #0x30
add r6, r5, #0
_02219CF6:
ldr r0, _02219DA4 ; =0x00002712
mov r3, #0x1e
add r0, r4, r0
str r0, [sp, #0x20]
str r0, [sp, #0x24]
ldr r0, _02219DA4 ; =0x00002712
mov r1, #0x28
str r0, [sp, #0x28]
str r0, [sp, #0x2c]
mov r0, #2
str r0, [sp, #0x1c]
add r0, sp, #0xc
strh r1, [r0]
strh r7, [r0, #2]
add r0, r4, #2
str r0, [sp, #0x14]
mov r0, #2
str r0, [sp, #0x38]
ldr r0, [r5, #8]
ldr r1, [r5, #0xc]
add r2, sp, #0xc
lsl r3, r3, #0x10
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
add r1, r6, #0
add r1, #0x98
str r0, [r1]
add r0, r6, #0
add r0, #0x98
ldr r0, [r0]
mov r1, #1
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r4, r4, #1
add r7, #0x58
add r6, r6, #4
cmp r4, #2
blt _02219CF6
mov r6, #0
add r4, r5, #0
mov r7, #0x18
_02219D48:
mov r0, #2
sub r0, r0, r6
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
add r3, r5, #0
add r2, r4, #0
add r3, #0x22
add r2, #0x98
ldrb r3, [r3]
ldr r0, [r5]
ldr r1, [r5, #4]
ldr r2, [r2]
bl ov96_02219DA8
mov r0, #5
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
lsl r3, r7, #0x10
ldr r0, [r5, #8]
ldr r1, [r5, #0xc]
mov r2, #0x28
asr r3, r3, #0x10
bl ov96_022199A8
add r1, r4, #0
add r1, #0xa0
str r0, [r1]
add r0, r4, #0
add r0, #0xa0
ldr r0, [r0]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
add r6, r6, #1
add r4, r4, #4
add r7, #0x58
cmp r6, #2
blt _02219D48
add r0, r5, #0
bl ov96_02219E60
add sp, #0x40
pop {r3, r4, r5, r6, r7, pc}
nop
_02219DA4: .word 0x00002712
thumb_func_end ov96_02219C30
thumb_func_start ov96_02219DA8
ov96_02219DA8: ; 0x02219DA8
push {r4, r5, lr}
sub sp, #0x14
add r4, r2, #0
add r2, sp, #0x10
ldrb r2, [r2, #0x10]
add r5, r1, #0
add r1, r3, #0
add r3, sp, #4
bl ov96_021E6168
mov r2, #0
add r0, r4, #0
add r1, sp, #4
add r3, r2, #0
str r5, [sp]
bl ov96_021EEBE4
add sp, #0x14
pop {r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_02219DA8
thumb_func_start ov96_02219DD0
ov96_02219DD0: ; 0x02219DD0
push {r4, r5, r6, lr}
sub sp, #0x18
add r4, r1, #0
add r5, r0, #0
add r0, r4, #2
lsl r0, r0, #2
add r0, r5, r0
ldr r6, [r0, #0x60]
ldr r0, [r5]
add r3, sp, #8
bl ov96_021E6168
lsl r0, r4, #9
str r0, [sp]
ldr r0, [r5, #4]
add r1, sp, #8
str r0, [sp, #4]
ldrh r2, [r5, #0x20]
ldr r3, [r5, #0x24]
add r0, r6, #0
bl ov96_021EECB8
add sp, #0x18
pop {r4, r5, r6, pc}
thumb_func_end ov96_02219DD0
thumb_func_start ov96_02219E00
ov96_02219E00: ; 0x02219E00
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
ldr r6, _02219E5C ; =ov96_0221D944
add r7, r2, #0
str r3, [sp]
add r5, r0, #0
add r4, r1, #0
add r3, sp, #4
mov r2, #6
_02219E12:
ldmia r6!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _02219E12
ldr r0, [r6]
cmp r5, #0
str r0, [r3]
bne _02219E26
bl GF_AssertFail
_02219E26:
cmp r4, #0
bne _02219E2E
bl GF_AssertFail
_02219E2E:
add r1, sp, #4
strh r7, [r1]
ldr r0, [sp]
mov r3, #0x1e
strh r0, [r1, #2]
add r0, sp, #0x40
ldrh r2, [r0, #0x10]
lsl r3, r3, #0x10
strh r2, [r1, #6]
ldrh r0, [r0, #0x14]
add r1, r4, #0
add r2, sp, #4
str r0, [sp, #0xc]
add r0, r5, #0
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
mov r1, #1
add r4, r0, #0
bl UnkImageStruct_SetSpriteAnimActiveFlag
add r0, r4, #0
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02219E5C: .word ov96_0221D944
thumb_func_end ov96_02219E00
thumb_func_start ov96_02219E60
ov96_02219E60: ; 0x02219E60
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r6, r0, #0
mov r0, #0x14
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r6, #8]
ldr r1, [r6, #0xc]
mov r2, #0x72
mov r3, #0xb4
bl ov96_02219E00
mov r1, #0xe
str r0, [r6, #0x64]
bl UnkImageStruct_SetSpritePalIndex
mov r7, #0
add r4, r6, #0
mov r5, #0x86
_02219E88:
mov r1, #0
add r0, sp, #8
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
ldr r0, [r6, #0xc]
bl sub_0200E2B0
add r1, r0, #0
ldr r0, [r6, #0x10]
ldr r3, [r6, #4]
mov r2, #1
bl ov96_021EA374
add r1, r4, #0
add r1, #0xa8
str r0, [r1]
lsl r0, r5, #0xc
str r0, [sp, #8]
mov r0, #0x2d
lsl r0, r0, #0xe
str r0, [sp, #0xc]
mov r0, #0
str r0, [sp, #0x10]
add r0, r4, #0
add r0, #0xa8
ldr r0, [r0]
add r1, sp, #8
bl Sprite_SetMatrix
add r0, r4, #0
add r0, #0xa8
ldr r0, [r0]
mov r1, #1
bl Set2dSpriteVisibleFlag
add r7, r7, #1
add r4, r4, #4
add r5, #0x10
cmp r7, #2
blt _02219E88
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02219E60
thumb_func_start ov96_02219EE0
ov96_02219EE0: ; 0x02219EE0
push {r4, lr}
sub sp, #8
add r4, r0, #0
add r0, r1, #1
mov r1, #3
bl _s32_div_f
lsl r2, r1, #0x18
mov r0, #1
lsr r2, r2, #0x16
add r2, r4, r2
str r0, [sp]
mov r3, #2
str r3, [sp, #4]
add r2, #0xb0
ldr r0, [r4, #0x1c]
ldr r2, [r2]
mov r1, #0
bl BufferString
ldr r0, [r4, #4]
mov r3, #0x9a
str r0, [sp]
add r0, r4, #0
ldr r1, [r4, #0x1c]
ldr r2, [r4, #0x18]
add r0, #0x40
bl ov96_02219BC4
add sp, #8
pop {r4, pc}
.balign 4, 0
thumb_func_end ov96_02219EE0
thumb_func_start ov96_02219F20
ov96_02219F20: ; 0x02219F20
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
lsl r6, r1, #2
add r0, r5, r6
add r7, r2, #0
add r4, r3, #0
mov r3, #0x1e
ldr r0, [r0, #0x60]
add r1, r7, #0
add r2, r4, #0
lsl r3, r3, #0x10
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
add r0, r5, r6
sub r4, #0x18
lsl r2, r4, #0x10
mov r3, #0x1e
ldr r0, [r0, #0x68]
add r1, r7, #0
asr r2, r2, #0x10
lsl r3, r3, #0x10
bl UnkImageStruct_SetSpritePositionXY_CustomScreenYOffset
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov96_02219F20
thumb_func_start ov96_02219F50
ov96_02219F50: ; 0x02219F50
push {r4, r5, r6, lr}
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
bne _02219F5E
mov r1, #1
b _02219F60
_02219F5E:
mov r1, #0
_02219F60:
add r0, r4, #2
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x60]
bl UnkImageStruct_SetSpriteVisibleFlag
add r0, r4, #6
lsl r0, r0, #2
add r0, r5, r0
ldr r0, [r0, #0x60]
add r1, r6, #0
bl UnkImageStruct_SetSpriteVisibleFlag
pop {r4, r5, r6, pc}
thumb_func_end ov96_02219F50
thumb_func_start ov96_02219F7C
ov96_02219F7C: ; 0x02219F7C
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
str r0, [sp]
bl ov96_021E5D34
add r5, r0, #0
add r0, r4, #0
mov r1, #0x30
bl AllocFromHeap
mov r1, #0
mov r2, #0x30
add r7, r0, #0
bl MI_CpuFill8
str r4, [r7]
ldr r0, [sp]
mov r4, #0
str r0, [r7, #4]
mov r0, #4
sub r1, r0, r5
add r0, r7, #0
add r0, #0x2c
strb r1, [r0]
add r0, r7, #0
add r0, #0x2c
ldrb r0, [r0]
cmp r0, #0
ble _02219FD6
add r6, r7, #0
add r6, #8
_02219FBA:
lsl r1, r5, #0x18
ldr r2, [sp]
add r0, r6, #0
lsr r1, r1, #0x18
bl ov96_0221A00C
add r0, r7, #0
add r0, #0x2c
ldrb r0, [r0]
add r4, r4, #1
add r5, r5, #1
add r6, #0xc
cmp r4, r0
blt _02219FBA
_02219FD6:
add r0, r7, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov96_02219F7C
thumb_func_start ov96_02219FDC
ov96_02219FDC: ; 0x02219FDC
ldr r3, _02219FE0 ; =FreeToHeap
bx r3
.balign 4, 0
_02219FE0: .word FreeToHeap
thumb_func_end ov96_02219FDC
thumb_func_start ov96_02219FE4
ov96_02219FE4: ; 0x02219FE4
push {r4, r5, r6, lr}
add r6, r0, #0
add r0, #0x2c
ldrb r0, [r0]
mov r4, #0
cmp r0, #0
ble _0221A00A
add r5, r6, #0
add r5, #8
_02219FF6:
add r0, r5, #0
bl ov96_0221A400
add r0, r6, #0
add r0, #0x2c
ldrb r0, [r0]
add r4, r4, #1
add r5, #0xc
cmp r4, r0
blt _02219FF6
_0221A00A:
pop {r4, r5, r6, pc}
thumb_func_end ov96_02219FE4
thumb_func_start ov96_0221A00C
ov96_0221A00C: ; 0x0221A00C
push {r4, r5, r6, lr}
add r4, r1, #0
add r6, r2, #0
add r5, r0, #0
mov r1, #0
mov r2, #0xc
bl MI_CpuFill8
str r6, [r5]
ldr r1, [r5, #8]
mov r0, #3
bic r1, r0
mov r0, #3
and r0, r4
orr r1, r0
mov r0, #0xc
bic r1, r0
str r1, [r5, #8]
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov96_0221A00C
thumb_func_start ov96_0221A034
ov96_0221A034: ; 0x0221A034
push {r3, r4, lr}
sub sp, #0xc
add r3, r0, #0
add r4, r2, #0
add r0, r1, #0
add r1, r3, #0
add r2, sp, #0
bl VEC_Subtract
add r0, sp, #0
bl VEC_Mag
cmp r0, r4
bgt _0221A056
add sp, #0xc
mov r0, #1
pop {r3, r4, pc}
_0221A056:
mov r0, #0
add sp, #0xc
pop {r3, r4, pc}
thumb_func_end ov96_0221A034
thumb_func_start ov96_0221A05C
ov96_0221A05C: ; 0x0221A05C
push {r3, r4, lr}
sub sp, #0xc
add r3, r0, #0
add r4, r2, #0
add r0, r1, #0
add r1, r3, #0
add r2, sp, #0
bl VEC_Subtract
add r0, sp, #0
add r1, r0, #0
bl VEC_Normalize
add r0, sp, #0
bl ov96_02215FA0
cmp r4, r0
bne _0221A086
add sp, #0xc
mov r0, #1
pop {r3, r4, pc}
_0221A086:
mov r0, #0
add sp, #0xc
pop {r3, r4, pc}
thumb_func_end ov96_0221A05C
thumb_func_start ov96_0221A08C
ov96_0221A08C: ; 0x0221A08C
push {r4, r5, r6, r7, lr}
sub sp, #0x2c
add r5, r0, #0
mov r0, #0
str r0, [sp, #0x10]
str r0, [sp, #0xc]
ldr r0, [sp, #0x10]
add r1, sp, #0x28
strb r0, [r1]
ldr r0, [sp, #0x10]
strb r0, [r1, #1]
ldr r0, [sp, #0x10]
strb r0, [r1, #2]
ldr r0, [sp, #0x10]
strb r0, [r1, #3]
ldr r1, [r5, #8]
ldr r0, [r5]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_02215DD4
ldr r1, [r5, #8]
add r6, r0, #0
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
ldr r0, [r5]
lsr r1, r1, #0x18
bl ov96_02215E2C
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r7, #0
add r4, sp, #0x28
str r0, [sp, #0x18]
_0221A0D6:
ldr r0, [r5, #8]
lsl r0, r0, #0x1e
lsr r0, r0, #0x1e
cmp r7, r0
beq _0221A14A
lsl r1, r7, #0x18
ldr r0, [r5]
lsr r1, r1, #0x18
bl ov96_02215DD4
str r0, [sp, #0x14]
mov r2, #2
ldr r1, [sp, #0x14]
add r0, r6, #0
lsl r2, r2, #0x10
bl ov96_0221A034
cmp r0, #0
beq _0221A11E
ldr r1, [sp, #0x14]
ldr r2, [sp, #0x18]
add r0, r6, #0
bl ov96_0221A05C
cmp r0, #0
beq _0221A10E
mov r0, #3
b _0221A110
_0221A10E:
mov r0, #1
_0221A110:
strb r0, [r4]
ldr r0, [sp, #0xc]
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xc]
b _0221A14A
_0221A11E:
mov r2, #3
ldr r1, [sp, #0x14]
add r0, r6, #0
lsl r2, r2, #0x10
bl ov96_0221A034
cmp r0, #0
beq _0221A14A
ldr r1, [sp, #0x14]
ldr r2, [sp, #0x18]
add r0, r6, #0
bl ov96_0221A05C
cmp r0, #0
beq _0221A140
mov r0, #2
strb r0, [r4]
_0221A140:
ldr r0, [sp, #0x10]
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x10]
_0221A14A:
add r7, r7, #1
add r4, r4, #1
cmp r7, #4
blt _0221A0D6
mov r4, #0
add r0, sp, #0x24
strb r4, [r0]
strb r4, [r0, #1]
strb r4, [r0, #2]
strb r4, [r0, #3]
add r1, r4, #0
add r0, sp, #0x28
add r2, sp, #0x1c
_0221A164:
ldr r3, [r5, #8]
lsl r3, r3, #0x1e
lsr r3, r3, #0x1e
cmp r1, r3
beq _0221A17C
ldrb r6, [r2, #9]
ldrb r3, [r0]
cmp r6, r3
bhs _0221A17C
strb r1, [r2, #8]
ldrb r3, [r0]
strb r3, [r2, #9]
_0221A17C:
add r1, r1, #1
add r0, r0, #1
cmp r1, #4
blt _0221A164
bl MTRandom
mov r1, #0x64
bl _u32_div_f
add r2, sp, #0x1c
ldrb r3, [r2, #9]
ldr r0, _0221A308 ; =ov96_0221D97C
ldrb r0, [r0, r3]
add r0, r4, r0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r1, r0
bge _0221A1D0
ldrb r1, [r2, #8]
ldr r0, [r5]
bl ov96_02215DD4
ldr r1, [r0]
asr r2, r1, #0xc
add r1, sp, #0x1c
strh r2, [r1, #4]
ldr r0, [r0, #4]
add r2, sp, #0x20
asr r0, r0, #0xc
strh r0, [r1, #6]
ldr r1, [r5, #8]
ldr r0, [r5]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_02215EE8
mov r0, #0x10
add sp, #0x2c
strb r0, [r5, #4]
pop {r4, r5, r6, r7, pc}
_0221A1D0:
bl MTRandom
mov r1, #0x64
bl _u32_div_f
ldr r0, [sp, #0x10]
cmp r0, #0
beq _0221A1E6
add r0, r4, #5
lsl r0, r0, #0x18
lsr r4, r0, #0x18
_0221A1E6:
ldr r0, [sp, #0xc]
cmp r0, #0
beq _0221A1F8
sub r2, r0, #1
ldr r0, _0221A30C ; =ov96_0221D978
ldrb r0, [r0, r2]
add r0, r4, r0
lsl r0, r0, #0x18
lsr r4, r0, #0x18
_0221A1F8:
cmp r1, r4
bge _0221A214
ldr r1, [r5, #8]
ldr r0, [r5]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_02215F2C
mov r0, #0x14
add sp, #0x2c
strb r0, [r5, #4]
pop {r4, r5, r6, r7, pc}
_0221A214:
bl MTRandom
mov r1, #0x64
bl _u32_div_f
cmp r1, #0x3c
bge _0221A2BC
bl MTRandom
mov r1, #0x64
bl _u32_div_f
ldr r0, [r5, #8]
str r1, [sp]
lsl r0, r0, #0x1a
lsr r0, r0, #0x1f
bne _0221A302
mov r7, #0
mvn r7, r7
ldr r0, _0221A310 ; =0x000003E7
str r7, [sp, #8]
str r0, [sp, #4]
mov r4, #0
_0221A242:
lsl r1, r4, #0x18
ldr r0, [r5]
lsr r1, r1, #0x18
bl ov96_02215E48
add r6, r0, #0
lsl r1, r4, #0x18
ldr r0, [r5]
lsr r1, r1, #0x18
bl ov96_02215DBC
ldr r1, [r5, #8]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
cmp r4, r1
beq _0221A284
cmp r0, #3
beq _0221A284
cmp r0, #4
beq _0221A284
ldrb r1, [r5, #7]
ldr r0, [r5]
bl ov96_02215E94
cmp r0, #0
bne _0221A284
ldr r0, [sp, #4]
cmp r0, r6
ble _0221A284
str r7, [sp, #8]
lsl r0, r4, #0x18
asr r7, r0, #0x18
str r6, [sp, #4]
_0221A284:
add r4, r4, #1
cmp r4, #4
blt _0221A242
ldr r0, [sp]
cmp r0, #0x3c
bge _0221A294
strb r7, [r5, #7]
b _0221A2A2
_0221A294:
cmp r0, #0x64
bge _0221A29E
ldr r0, [sp, #8]
strb r0, [r5, #7]
b _0221A2A2
_0221A29E:
bl GF_AssertFail
_0221A2A2:
mov r0, #7
ldrsb r1, [r5, r0]
sub r0, #8
cmp r1, r0
beq _0221A302
ldr r1, [r5, #8]
mov r0, #0x20
orr r0, r1
str r0, [r5, #8]
mov r0, #0
add sp, #0x2c
strb r0, [r5, #4]
pop {r4, r5, r6, r7, pc}
_0221A2BC:
cmp r1, #0x50
bge _0221A2C8
mov r0, #0xa
add sp, #0x2c
strb r0, [r5, #4]
pop {r4, r5, r6, r7, pc}
_0221A2C8:
cmp r1, #0x64
bge _0221A302
bl MTRandom
mov r1, #0x91
bl _u32_div_f
add r1, #0x38
add r0, sp, #0x1c
strh r1, [r0]
bl MTRandom
mov r1, #0x50
bl _u32_div_f
add r1, #0x48
add r0, sp, #0x1c
strh r1, [r0, #2]
ldr r1, [r5, #8]
ldr r0, [r5]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
add r2, sp, #0x1c
bl ov96_02215F80
mov r0, #0xa
strb r0, [r5, #4]
_0221A302:
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
nop
_0221A308: .word ov96_0221D97C
_0221A30C: .word ov96_0221D978
_0221A310: .word 0x000003E7
thumb_func_end ov96_0221A08C
thumb_func_start ov96_0221A314
ov96_0221A314: ; 0x0221A314
push {r4, r5, r6, lr}
sub sp, #0x18
add r5, r0, #0
ldr r0, [r5, #8]
add r2, sp, #0xc
lsl r0, r0, #0x1e
lsr r0, r0, #0x1e
lsl r4, r0, #2
mov r1, #0
add r0, sp, #0
str r1, [r2]
str r1, [r0]
str r1, [r2, #4]
str r1, [r0, #4]
str r1, [r2, #8]
str r1, [r0, #8]
ldr r1, [r5, #8]
ldr r0, [r5]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r6, _0221A3A4 ; =ov96_0221D98C
bl ov96_02215DEC
ldr r0, [r5, #8]
add r2, r6, r4
lsl r0, r0, #0x1e
lsr r0, r0, #0x1e
lsl r1, r0, #2
add r0, r6, #0
ldrsh r0, [r0, r1]
lsl r0, r0, #0xc
str r0, [sp]
ldr r0, [r5, #8]
lsl r0, r0, #0x1e
lsr r0, r0, #0x1e
lsl r1, r0, #2
ldr r0, _0221A3A8 ; =ov96_0221D98E
ldrsh r0, [r0, r1]
lsl r0, r0, #0xc
str r0, [sp, #4]
ldr r1, [r5, #8]
ldr r0, [r5]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_02215F80
mov r2, #1
add r0, sp, #0xc
add r1, sp, #0
lsl r2, r2, #0x12
bl ov96_0221A034
cmp r0, #0
beq _0221A3A0
ldr r1, [r5, #8]
ldr r0, [r5]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_02215F64
ldr r1, [r5, #8]
mov r0, #0x10
bic r1, r0
str r1, [r5, #8]
_0221A3A0:
add sp, #0x18
pop {r4, r5, r6, pc}
.balign 4, 0
_0221A3A4: .word ov96_0221D98C
_0221A3A8: .word ov96_0221D98E
thumb_func_end ov96_0221A314
thumb_func_start ov96_0221A3AC
ov96_0221A3AC: ; 0x0221A3AC
push {r4, r5, r6, lr}
add r5, r0, #0
bl MTRandom
mov r1, #0x64
bl _u32_div_f
add r6, r1, #0
ldr r1, [r5, #8]
ldr r0, [r5]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
mov r4, #0
bl ov96_02215E68
cmp r0, #0xa
bhs _0221A3D6
mov r4, #0x64
b _0221A3F4
_0221A3D6:
cmp r0, #0x14
bhs _0221A3DE
mov r4, #0x46
b _0221A3F4
_0221A3DE:
cmp r0, #0x1e
bhs _0221A3E6
mov r4, #0x32
b _0221A3F4
_0221A3E6:
cmp r0, #0x28
bhs _0221A3EE
mov r4, #0x1e
b _0221A3F4
_0221A3EE:
cmp r0, #0x32
bhs _0221A3F4
mov r4, #0xa
_0221A3F4:
cmp r6, r4
bge _0221A3FC
mov r0, #1
pop {r4, r5, r6, pc}
_0221A3FC:
mov r0, #0
pop {r4, r5, r6, pc}
thumb_func_end ov96_0221A3AC
thumb_func_start ov96_0221A400
ov96_0221A400: ; 0x0221A400
push {r3, r4, r5, lr}
add r4, r0, #0
ldr r1, [r4, #8]
ldr r0, [r4]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_02215E94
cmp r0, #0
beq _0221A41A
b _0221A568
_0221A41A:
ldr r1, [r4, #8]
lsl r0, r1, #0x1a
lsr r0, r0, #0x1f
beq _0221A4C4
lsl r0, r1, #0x1b
lsr r0, r0, #0x1f
bne _0221A4C4
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
ldr r0, [r4]
lsr r1, r1, #0x18
bl ov96_02215DBC
ldrb r1, [r4, #7]
ldr r0, [r4]
bl ov96_02215DBC
cmp r0, #3
beq _0221A462
ldrb r1, [r4, #7]
ldr r0, [r4]
bl ov96_02215E94
cmp r0, #0
bne _0221A462
ldr r1, [r4, #8]
ldr r0, [r4]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_02215EB0
cmp r0, #0
beq _0221A49C
_0221A462:
ldr r1, [r4, #8]
ldr r0, [r4]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_02215DD4
ldr r1, [r0]
asr r2, r1, #0xc
add r1, sp, #0
strh r2, [r1]
ldr r0, [r0, #4]
add r2, sp, #0
asr r0, r0, #0xc
strh r0, [r1, #2]
ldr r1, [r4, #8]
ldr r0, [r4]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_02215F80
ldr r1, [r4, #8]
mov r0, #0x20
bic r1, r0
str r1, [r4, #8]
b _0221A4C4
_0221A49C:
ldrb r1, [r4, #7]
ldr r0, [r4]
bl ov96_02215DD4
ldr r1, [r0]
asr r2, r1, #0xc
add r1, sp, #0
strh r2, [r1]
ldr r0, [r0, #4]
add r2, sp, #0
asr r0, r0, #0xc
strh r0, [r1, #2]
ldr r1, [r4, #8]
ldr r0, [r4]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_02215F80
_0221A4C4:
ldr r1, [r4, #8]
lsl r0, r1, #0x1b
lsr r0, r0, #0x1f
beq _0221A504
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
ldr r0, [r4]
lsr r1, r1, #0x18
bl ov96_02215ECC
cmp r0, #0
beq _0221A568
ldr r1, [r4, #8]
ldr r0, [r4]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_02215DBC
add r5, r0, #0
add r0, r4, #0
bl ov96_0221A314
cmp r5, #3
bne _0221A568
ldr r1, [r4, #8]
mov r0, #0x10
bic r1, r0
str r1, [r4, #8]
pop {r3, r4, r5, pc}
_0221A504:
mov r0, #4
ldrsb r1, [r4, r0]
sub r1, r1, #1
strb r1, [r4, #4]
ldrsb r0, [r4, r0]
cmp r0, #0
bgt _0221A568
bge _0221A518
mov r0, #0
strb r0, [r4, #4]
_0221A518:
mov r0, #6
ldrsb r1, [r4, r0]
sub r1, r1, #1
strb r1, [r4, #6]
ldrsb r0, [r4, r0]
cmp r0, #0
bgt _0221A568
mov r0, #3
strb r0, [r4, #6]
ldr r1, [r4, #8]
ldr r0, [r4]
lsl r1, r1, #0x1e
lsr r1, r1, #0x1e
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ov96_02215ECC
cmp r0, #0
beq _0221A568
add r0, r4, #0
bl ov96_0221A08C
mov r0, #5
ldrsb r1, [r4, r0]
sub r1, r1, #1
strb r1, [r4, #5]
ldrsb r0, [r4, r0]
cmp r0, #0
bgt _0221A568
add r0, r4, #0
bl ov96_0221A3AC
cmp r0, #0
beq _0221A564
ldr r1, [r4, #8]
mov r0, #0x10
orr r0, r1
str r0, [r4, #8]
_0221A564:
mov r0, #0
strb r0, [r4, #5]
_0221A568:
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov96_0221A400
thumb_func_start ov96_0221A56C
ov96_0221A56C: ; 0x0221A56C
push {r3, lr}
ldr r2, _0221A578 ; =ov96_0221D9A0
lsl r3, r1, #2
ldr r2, [r2, r3]
blx r2
pop {r3, pc}
.balign 4, 0
_0221A578: .word ov96_0221D9A0
thumb_func_end ov96_0221A56C
thumb_func_start ov96_0221A57C
ov96_0221A57C: ; 0x0221A57C
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
ldr r0, _0221A5B4 ; =ov96_0221D9C8
lsl r1, r1, #2
ldr r6, [r0, r1]
cmp r6, #0
beq _0221A5AC
mov r5, #0
_0221A58C:
add r0, r7, #0
add r1, r5, #0
bl ov96_021E94EC
add r4, r0, #0
ldr r0, [r4, #0xc]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
blx r6
strh r0, [r4, #0xa]
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #4
blo _0221A58C
pop {r3, r4, r5, r6, r7, pc}
_0221A5AC:
bl GF_AssertFail
pop {r3, r4, r5, r6, r7, pc}
nop
_0221A5B4: .word ov96_0221D9C8
thumb_func_end ov96_0221A57C
thumb_func_start ov96_0221A5B8
ov96_0221A5B8: ; 0x0221A5B8
push {r3, lr}
lsl r2, r1, #2
ldr r1, _0221A5D0 ; =ov96_0221D9C8
ldr r1, [r1, r2]
cmp r1, #0
bne _0221A5CA
bl ov96_0221A730
pop {r3, pc}
_0221A5CA:
bl GF_AssertFail
pop {r3, pc}
.balign 4, 0
_0221A5D0: .word ov96_0221D9C8
thumb_func_end ov96_0221A5B8
thumb_func_start ov96_0221A5D4
ov96_0221A5D4: ; 0x0221A5D4
push {r4, lr}
add r4, r1, #0
bl _ffltu
add r1, r4, #0
bl _fmul
bl _f2d
add r3, r1, #0
add r2, r0, #0
ldr r1, _0221A610 ; =0x3FF00000
mov r0, #0
bl _dadd
add r3, r1, #0
add r2, r0, #0
ldr r1, _0221A614 ; =0x405E0000
mov r0, #0
bl _ddiv
add r3, r1, #0
add r2, r0, #0
ldr r1, _0221A618 ; =0x4062C000
mov r0, #0
bl _dsub
bl _d2f
pop {r4, pc}
.balign 4, 0
_0221A610: .word 0x3FF00000
_0221A614: .word 0x405E0000
_0221A618: .word 0x4062C000
thumb_func_end ov96_0221A5D4
thumb_func_start ov96_0221A61C
ov96_0221A61C: ; 0x0221A61C
push {r4, lr}
bl _ffixu
add r4, r0, #0
bl _dfltu
ldr r3, _0221A63C ; =0x40690000
mov r2, #0
bl _dgr
bls _0221A634
mov r4, #0xc8
_0221A634:
lsl r0, r4, #0x18
lsr r0, r0, #0x18
pop {r4, pc}
nop
_0221A63C: .word 0x40690000
thumb_func_end ov96_0221A61C
thumb_func_start ov96_0221A640
ov96_0221A640: ; 0x0221A640
push {r3, lr}
bl _ffltu
ldr r1, _0221A668 ; =0x41F00000
bl _fdiv
bl _f2d
add r3, r1, #0
add r2, r0, #0
ldr r1, _0221A66C ; =0x40C67600
mov r0, #0
bl _ddiv
bl _d2f
bl ov96_0221A61C
pop {r3, pc}
nop
_0221A668: .word 0x41F00000
_0221A66C: .word 0x40C67600
thumb_func_end ov96_0221A640
thumb_func_start ov96_0221A670
ov96_0221A670: ; 0x0221A670
push {r3, lr}
lsl r1, r0, #1
add r0, r0, r1
bl _fflt
bl ov96_0221A61C
pop {r3, pc}
thumb_func_end ov96_0221A670
thumb_func_start ov96_0221A680
ov96_0221A680: ; 0x0221A680
push {r3, lr}
lsl r1, r0, #1
add r0, r0, r1
bl _fflt
bl ov96_0221A61C
pop {r3, pc}
thumb_func_end ov96_0221A680
thumb_func_start ov96_0221A690
ov96_0221A690: ; 0x0221A690
push {r3, lr}
bl _ffltu
bl ov96_0221A61C
pop {r3, pc}
thumb_func_end ov96_0221A690
thumb_func_start ov96_0221A69C
ov96_0221A69C: ; 0x0221A69C
push {r3, lr}
ldr r1, _0221A6AC ; =0x3DA3D70A
bl ov96_0221A5D4
bl ov96_0221A61C
pop {r3, pc}
nop
_0221A6AC: .word 0x3DA3D70A
thumb_func_end ov96_0221A69C
thumb_func_start ov96_0221A6B0
ov96_0221A6B0: ; 0x0221A6B0
push {r3, lr}
bl _ffltu
bl _f2d
ldr r3, _0221A6CC ; =0x400C0000
mov r2, #0
bl _ddiv
bl _d2f
bl ov96_0221A61C
pop {r3, pc}
.balign 4, 0
_0221A6CC: .word 0x400C0000
thumb_func_end ov96_0221A6B0
thumb_func_start ov96_0221A6D0
ov96_0221A6D0: ; 0x0221A6D0
push {r3, lr}
bl _ffltu
bl _f2d
ldr r3, _0221A6F8 ; =0x40900000
mov r2, #0
bl _ddiv
add r3, r1, #0
add r2, r0, #0
ldr r1, _0221A6FC ; =0x40240000
mov r0, #0
bl _dmul
bl _d2f
bl ov96_0221A61C
pop {r3, pc}
.balign 4, 0
_0221A6F8: .word 0x40900000
_0221A6FC: .word 0x40240000
thumb_func_end ov96_0221A6D0
thumb_func_start ov96_0221A700
ov96_0221A700: ; 0x0221A700
push {r3, lr}
bl _ffltu
bl _f2d
ldr r3, _0221A71C ; =0x3FF80000
mov r2, #0
bl _dmul
bl _d2f
bl ov96_0221A61C
pop {r3, pc}
.balign 4, 0
_0221A71C: .word 0x3FF80000
thumb_func_end ov96_0221A700
thumb_func_start ov96_0221A720
ov96_0221A720: ; 0x0221A720
push {r3, lr}
lsl r1, r0, #1
add r0, r0, r1
bl _fflt
bl ov96_0221A61C
pop {r3, pc}
thumb_func_end ov96_0221A720
thumb_func_start ov96_0221A730
ov96_0221A730: ; 0x0221A730
push {r4, r5, r6, r7, lr}
sub sp, #0x14
ldr r1, _0221A7D0 ; =ov96_0221D99C
str r0, [sp]
ldrb r2, [r1]
add r0, sp, #8
mov r4, #0
strb r2, [r0]
ldrb r2, [r1, #1]
add r6, sp, #0x10
add r5, r4, #0
strb r2, [r0, #1]
ldrb r2, [r1, #2]
ldrb r1, [r1, #3]
add r7, sp, #0xc
strb r2, [r0, #2]
strb r1, [r0, #3]
_0221A752:
ldr r0, [sp]
add r1, r4, #0
bl ov96_021E94EC
ldrb r0, [r0, #9]
strb r0, [r6, r4]
add r0, r4, #1
lsl r0, r0, #0x18
strb r5, [r7, r4]
lsr r4, r0, #0x18
cmp r4, #4
blo _0221A752
add r7, sp, #0x10
add r6, sp, #0xc
_0221A76E:
ldr r0, [sp]
add r1, r5, #0
ldrb r4, [r7, r5]
bl ov96_021E94EC
str r0, [sp, #4]
mov r0, #0
_0221A77C:
cmp r5, r0
beq _0221A78C
ldrb r1, [r7, r0]
cmp r4, r1
bne _0221A78C
ldrb r1, [r6, r5]
add r1, r1, #1
strb r1, [r6, r5]
_0221A78C:
add r0, r0, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #4
blo _0221A77C
ldrb r1, [r6, r5]
add r0, sp, #8
add r0, r0, r4
ldrb r0, [r1, r0]
ldr r1, [sp, #4]
ldr r2, [r1, #0xc]
lsl r1, r2, #2
add r1, r2, r1
add r0, r0, r1
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r4, #0
bl _dfltu
ldr r3, _0221A7D4 ; =0x40690000
mov r2, #0
bl _dgr
bls _0221A7BE
mov r4, #0xc8
_0221A7BE:
ldr r0, [sp, #4]
strh r4, [r0, #0xa]
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
cmp r5, #4
blo _0221A76E
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_0221A7D0: .word ov96_0221D99C
_0221A7D4: .word 0x40690000
thumb_func_end ov96_0221A730
.rodata
_0221A7D8:
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.word 0
ov96_0221A7E4: ; 0x0221A7E4
.word ov97_0221E5C0
.word ov97_0221E5D4
.word ov97_0221E69C
.word FS_OVERLAY_ID(OVY_97)
ov96_0221A7F4:
.word ov96_021F010C
.word ov96_021F08E4
.word ov96_021F08F4
.word ov96_021F095C
.word 0
ov96_0221A808: ; 0x0221A808
.word ov96_021EB678
.word ov96_021EB680
.word 0
.word ov96_021EB688
.word 0
ov96_0221A81C:
.word ov96_02210C98
.word ov96_02211650
.word ov96_02211660
.word ov96_022116C8
.word 0
ov96_0221A830:
.word ov96_02209448
.word ov96_02209738
.word ov96_02209748
.word ov96_022097AC
.word 1
ov96_0221A844: ; 0x0221A844
.word ov96_021EB690
.word ov96_021EB698
.word 0
.word ov96_021EB6A0
.word 0
ov96_0221A858:
.word ov96_02201558
.word ov96_02201B18
.word ov96_02201B34
.word ov96_02201B98
.word 0
ov96_0221A86C: ; 0x0221A86C
.word ov96_021F7934
.word ov96_021F7C4C
.word 0
.word ov96_021F7C70
.word 0
ov96_0221A880:
.word ov96_02215AC4
.word ov96_02215CD0
.word ov96_02215CE8
.word ov96_02215D4C
.word 0
ov96_0221A894: ; 0x0221A894
.byte 0xB8, 0x0B, 0x23, 0x00, 0x28, 0x00, 0x50, 0x00, 0x28, 0x00, 0x5E, 0x01
.byte 0x00, 0x30, 0x46, 0x00, 0x1E, 0x00, 0x03, 0x00
ov96_0221A8A8:
.word ov96_0220E3F0
.word ov96_0220E5F4
.word ov96_0220E60C
.word ov96_0220E670
.word 0
ov96_0221A8BC: ; 0x0221A8BC
.word ov96_021EEE0C
.word ov96_021EEEBC
.word 0
.word ov96_021EEEC0
.word 0
ov96_0221A8D0:
.word ov96_022047EC
.word ov96_02204DE8
.word ov96_02204DF8
.word ov96_02204E58
.word 0
ov96_0221A8E4: ; 0x0221A8E4
.word ov96_021EF0FC
.word ov96_021EF18C
.word 0
.word ov96_021EF19C
.word 0
ov96_0221A8F8:
.word ov96_021FC768
.word ov96_021FCD74
.word ov96_021FCD84
.word ov96_021FCE10
.word 0
ov96_0221A90C:
.word ov96_021F94A8
.word ov96_021F9CA4
.word ov96_021F9CC4
.word ov96_021F9D58
.word 1
ov96_0221A920:
.word ov96_021F5018
.word ov96_021F54C0
.word ov96_021F54D4
.word ov96_021F553C
.word 1
ov96_0221A934: ; 0x0221A934
.byte 0x00, 0x01, 0x06, 0x0A, 0x03, 0x02, 0x09, 0x0A, 0x08, 0x09, 0x01, 0x0A
.byte 0x07, 0x06, 0x03, 0x0A, 0x05, 0x04, 0x00, 0x0A, 0x00, 0x05, 0x04, 0x06, 0x05, 0x04, 0x01, 0x08
.byte 0x09, 0x08, 0x01, 0x03, 0x03, 0x02, 0x09, 0x07, 0x06, 0x07, 0x00, 0x02
ov96_0221A95C: ; 0x0221A95C
.byte 0x04, 0x02, 0x09, 0x07
.byte 0x07, 0x02, 0x03, 0x08, 0x05, 0x00, 0x09, 0x07, 0x03, 0x06, 0x08, 0x05, 0x08, 0x05, 0x03, 0x00
.byte 0x01, 0x02, 0x09, 0x04, 0x02, 0x06, 0x05, 0x03, 0x00, 0x07, 0x03, 0x09, 0x09, 0x08, 0x04, 0x01
.byte 0x06, 0x03, 0x07, 0x00
ov96_0221A984: ; 0x0221A984
.word ov96_021E67C4
.word ov96_021E6814
.word ov96_021E6870
.word ov96_021E695C
.word ov96_021E6990
.word ov96_021E69C4
.word ov96_021E6A00
.word ov96_021E6A54
.word ov96_021E6A94
.word ov96_021E6AE8
.word ov96_021E6BC0
.word ov96_021E6BEC
.word ov96_021E6C20
.word ov96_021E6C40
.word ov96_021E6CB8
.word ov96_021E6CE4
.word ov96_021E6D54
.word ov96_021E6DE8
.word ov96_021E6E38
.word ov96_021E6F18
.word ov96_021E6F2C
.word ov96_021E6FFC
.word ov96_021E7030
.word ov96_021E7080
.word ov96_021E70F0
.word ov96_021E711C
.word ov96_021E7150
.word ov96_021E7190
.word ov96_021E7268
.word ov96_021E74AC
.word ov96_021E74E0
.word ov96_021E7294
.word ov96_021E72CC
.word ov96_021E7320
.word ov96_021E73F8
.word ov96_021E7514
.word ov96_021E7544
.word ov96_021E7590
.word ov96_021E75B8
ov96_0221AA20: ; 0x0221AA20
.byte 0x40, 0x01, 0x3F, 0x01, 0x42, 0x01, 0x43, 0x01, 0x3D, 0x01, 0x45, 0x01, 0x47, 0x01, 0x58, 0x01
.byte 0x55, 0x01, 0x4C, 0x01, 0x41, 0x01, 0x46, 0x01, 0x3E, 0x01, 0x4A, 0x01, 0x43, 0x01, 0x5A, 0x01
.byte 0x47, 0x01, 0x4D, 0x01, 0x58, 0x01, 0x79, 0x01, 0x49, 0x01, 0x40, 0x01, 0x5C, 0x01, 0x5A, 0x01
.byte 0x59, 0x01, 0x40, 0x01, 0x3F, 0x01, 0x42, 0x01, 0x5A, 0x01, 0x59, 0x01, 0x49, 0x01, 0x40, 0x01
.byte 0x5C, 0x01, 0x4A, 0x01, 0x43, 0x01, 0x41, 0x01, 0x46, 0x01, 0x3E, 0x01, 0x55, 0x01, 0x4C, 0x01
.byte 0x45, 0x01, 0x47, 0x01, 0x58, 0x01, 0x58, 0x01, 0x79, 0x01, 0x5A, 0x01, 0x47, 0x01, 0x4D, 0x01
.byte 0x43, 0x01, 0x3D, 0x01, 0x44, 0x01, 0x62, 0x01, 0x40, 0x01, 0x58, 0x01, 0x59, 0x01, 0x80, 0x01
.byte 0x81, 0x00, 0x45, 0x01, 0x4C, 0x01, 0x4D, 0x01, 0x55, 0x01, 0x3D, 0x01, 0x46, 0x01, 0xE8, 0x00
.byte 0x7A, 0x01, 0x65, 0x01, 0x41, 0x01, 0x79, 0x01, 0x58, 0x01, 0x3E, 0x01, 0x42, 0x01, 0x3F, 0x01
.byte 0x60, 0x01, 0x5A, 0x01, 0x55, 0x01, 0x44, 0x01, 0x62, 0x01, 0x40, 0x01, 0x5A, 0x01, 0x55, 0x01
.byte 0x42, 0x01, 0x3F, 0x01, 0x60, 0x01, 0xE8, 0x00, 0x7A, 0x01, 0x55, 0x01, 0x3D, 0x01, 0x46, 0x01
.byte 0x4C, 0x01, 0x4D, 0x01, 0x80, 0x01, 0x81, 0x00, 0x45, 0x01, 0x58, 0x01, 0x3E, 0x01, 0x65, 0x01
.byte 0x41, 0x01, 0x79, 0x01, 0x59, 0x01, 0x58, 0x01
ov96_0221AAE8: ; 0x0221AAE8
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00
.byte 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0A, 0x00
.byte 0x0B, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00
.byte 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00
.byte 0x1B, 0x00, 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00
.byte 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2A, 0x00
.byte 0x2B, 0x00, 0x2C, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2F, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00
.byte 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3A, 0x00
.byte 0x3B, 0x00, 0x3C, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00
.byte 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4A, 0x00
.byte 0x4B, 0x00, 0x4C, 0x00, 0x4D, 0x00, 0x4E, 0x00, 0x4F, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00
.byte 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5A, 0x00
.byte 0x5B, 0x00, 0x5C, 0x00, 0x5D, 0x00, 0x5E, 0x00, 0x5F, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00
.byte 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6A, 0x00
.byte 0x6B, 0x00, 0x6C, 0x00, 0x6D, 0x00, 0x6E, 0x00, 0x6F, 0x00, 0x70, 0x00, 0x71, 0x00, 0x72, 0x00
.byte 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, 0x00, 0x78, 0x00, 0x79, 0x00, 0x7A, 0x00
.byte 0x7B, 0x00, 0x7C, 0x00, 0x7D, 0x00, 0x7E, 0x00, 0x7F, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00
.byte 0x83, 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89, 0x00, 0x8A, 0x00
.byte 0x8B, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8F, 0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00
.byte 0x93, 0x00, 0x94, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9A, 0x00
.byte 0x9B, 0x00, 0x9C, 0x00, 0x9D, 0x00, 0x9E, 0x00, 0x9F, 0x00, 0xA0, 0x00, 0xA1, 0x00, 0xA2, 0x00
.byte 0xA3, 0x00, 0xA4, 0x00, 0xA5, 0x00, 0xA6, 0x00, 0xA7, 0x00, 0xA8, 0x00, 0xA9, 0x00, 0xAA, 0x00
.byte 0xAB, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xB0, 0x00, 0xB1, 0x00, 0xB2, 0x00, 0xB3, 0x00
.byte 0xB4, 0x00, 0xB5, 0x00, 0xB6, 0x00, 0xB7, 0x00, 0xB8, 0x00, 0xB9, 0x00, 0xBA, 0x00, 0xBB, 0x00
.byte 0xBC, 0x00, 0xBD, 0x00, 0xBE, 0x00, 0xBF, 0x00, 0xC0, 0x00, 0xC1, 0x00, 0xC2, 0x00, 0xC3, 0x00
.byte 0xC4, 0x00, 0xC5, 0x00, 0xC6, 0x00, 0xC7, 0x00, 0xC8, 0x00, 0xC9, 0x00, 0xE5, 0x00, 0xE6, 0x00
.byte 0xE7, 0x00, 0xE8, 0x00, 0xE9, 0x00, 0xEA, 0x00, 0xEB, 0x00, 0xEC, 0x00, 0xED, 0x00, 0xEE, 0x00
.byte 0xEF, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF2, 0x00, 0xF3, 0x00, 0xF4, 0x00, 0xF5, 0x00, 0xF6, 0x00
.byte 0xF7, 0x00, 0xF8, 0x00, 0xF9, 0x00, 0xFA, 0x00, 0xFB, 0x00, 0xFC, 0x00, 0xFD, 0x00, 0xFE, 0x00
.byte 0xFF, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x03, 0x01, 0x04, 0x01, 0x05, 0x01, 0x06, 0x01
.byte 0x07, 0x01, 0x08, 0x01, 0x09, 0x01, 0x0A, 0x01, 0x0B, 0x01, 0x0C, 0x01, 0x0D, 0x01, 0x0E, 0x01
.byte 0x0F, 0x01, 0x10, 0x01, 0x11, 0x01, 0x12, 0x01, 0x13, 0x01, 0x14, 0x01, 0x15, 0x01, 0x16, 0x01
.byte 0x17, 0x01, 0x18, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x1B, 0x01, 0x1C, 0x01, 0x1D, 0x01, 0x1E, 0x01
.byte 0x1F, 0x01, 0x20, 0x01, 0x21, 0x01, 0x22, 0x01, 0x23, 0x01, 0x24, 0x01, 0x25, 0x01, 0x26, 0x01
.byte 0x27, 0x01, 0x28, 0x01, 0x29, 0x01, 0x2A, 0x01, 0x2B, 0x01, 0x2C, 0x01, 0x2D, 0x01, 0x2E, 0x01
.byte 0x2F, 0x01, 0x30, 0x01, 0x31, 0x01, 0x32, 0x01, 0x33, 0x01, 0x34, 0x01, 0x35, 0x01, 0x36, 0x01
.byte 0x37, 0x01, 0x38, 0x01, 0x39, 0x01, 0x3A, 0x01, 0x3B, 0x01, 0x3C, 0x01, 0x3D, 0x01, 0x3E, 0x01
.byte 0x3F, 0x01, 0x40, 0x01, 0x41, 0x01, 0x42, 0x01, 0x43, 0x01, 0x44, 0x01, 0x45, 0x01, 0x46, 0x01
.byte 0x47, 0x01, 0x48, 0x01, 0x49, 0x01, 0x4A, 0x01, 0x4B, 0x01, 0x4C, 0x01, 0x4D, 0x01, 0x4E, 0x01
.byte 0x4F, 0x01, 0x50, 0x01, 0x51, 0x01, 0x52, 0x01, 0x53, 0x01, 0x54, 0x01, 0x55, 0x01, 0x56, 0x01
.byte 0x57, 0x01, 0x58, 0x01, 0x59, 0x01, 0x5A, 0x01, 0x5B, 0x01, 0x5C, 0x01, 0x5D, 0x01, 0x5E, 0x01
.byte 0x5F, 0x01, 0x60, 0x01, 0x61, 0x01, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x66, 0x01
.byte 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6A, 0x01, 0x6B, 0x01, 0x6C, 0x01, 0x6D, 0x01, 0x6E, 0x01
.byte 0x6F, 0x01, 0x70, 0x01, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01
.byte 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7A, 0x01, 0x7B, 0x01, 0x7C, 0x01, 0x7D, 0x01, 0x7E, 0x01
.byte 0x7F, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01
.byte 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8A, 0x01, 0x8B, 0x01, 0x8C, 0x01, 0x8D, 0x01, 0x8E, 0x01
.byte 0x8F, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01
.byte 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9A, 0x01, 0x9B, 0x01, 0x9C, 0x01, 0x9D, 0x01, 0xA1, 0x01
.byte 0xA2, 0x01, 0xA3, 0x01, 0xA4, 0x01, 0xA5, 0x01, 0xA6, 0x01, 0xA7, 0x01, 0xA8, 0x01, 0xA9, 0x01
.byte 0xAA, 0x01, 0xAB, 0x01, 0xAC, 0x01, 0xAD, 0x01, 0xAE, 0x01, 0xAF, 0x01, 0xB0, 0x01, 0xB1, 0x01
.byte 0xB2, 0x01, 0xB3, 0x01, 0xB4, 0x01, 0xB5, 0x01, 0xB6, 0x01, 0xB7, 0x01, 0xB8, 0x01, 0xB9, 0x01
.byte 0xBA, 0x01, 0xBD, 0x01, 0xC0, 0x01, 0xC1, 0x01, 0xC2, 0x01, 0xC3, 0x01, 0xC4, 0x01, 0xC5, 0x01
.byte 0xC6, 0x01, 0xC7, 0x01, 0xC8, 0x01, 0xCA, 0x01, 0xCC, 0x01, 0xCD, 0x01, 0xCE, 0x01, 0xCF, 0x01
.byte 0xD0, 0x01, 0xD1, 0x01, 0xD2, 0x01, 0xD3, 0x01, 0xD4, 0x01, 0xD5, 0x01, 0xD6, 0x01, 0xD7, 0x01
.byte 0xD8, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xDB, 0x01, 0xDC, 0x01, 0xDD, 0x01, 0xDE, 0x01, 0xDF, 0x01
.byte 0xE0, 0x01, 0xE1, 0x01, 0xE2, 0x01, 0xE3, 0x01, 0xE4, 0x01, 0xE5, 0x01, 0xE6, 0x01, 0xE7, 0x01
.byte 0xE8, 0x01, 0xE9, 0x01, 0xEA, 0x01, 0xEB, 0x01, 0xEC, 0x01, 0xED, 0x01, 0xEE, 0x01, 0xEF, 0x01
.byte 0xF0, 0x01, 0xF1, 0x01, 0xF2, 0x01, 0xF3, 0x01, 0xF4, 0x01, 0xF5, 0x01, 0xF6, 0x01, 0xF7, 0x01
.byte 0xF8, 0x01, 0xF9, 0x01, 0xFA, 0x01, 0xFB, 0x01, 0xFC, 0x01, 0xFD, 0x01, 0xFE, 0x01, 0xFF, 0x01
.byte 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x09, 0x02, 0x0A, 0x02, 0x0B, 0x02, 0x0C, 0x02
.byte 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x02, 0x12, 0x02, 0x13, 0x02, 0x14, 0x02, 0x15, 0x02
.byte 0x16, 0x02, 0x18, 0x02
ov96_0221AEC4: ; 0x0221AEC4
.word ov96_021E96F8
.word ov96_021E99F4
.word 0
.word ov96_021E9718
.word ov96_021E99F8
.word 0
.word ov96_021E9784
.word ov96_021E99FC
.word 0
.word ov96_021E97B8
.word ov96_021E9A04
.word 0
.word ov96_021E97EC
.word ov96_021E9A10
.word ov96_021E9A38
.word ov96_021E9820
.word ov96_021E9A14
.word 0
.word ov96_021E9858
.word sub_020342B8
.word ov96_021E9A2C
.word ov96_021E9870
.word ov96_021E9A14
.word 0
.word ov96_021E98D0
.word ov96_021E9A14
.word 0
.word ov96_021E98F4
.word ov96_021E9A18
.word ov96_021E9A54
.word ov96_021E9994
.word ov96_021E9A1C
.word ov96_021E9A48
.word ov96_021E99B8
.word ov96_021E9A24
.word ov96_021E9A68
ov96_0221AF54: ; 0x0221AF54
.byte 0x0B, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221AF64: ; 0x0221AF64
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221AF74: ; 0x0221AF74
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00
.byte 0x10, 0x00, 0x30, 0x00, 0x10, 0x00, 0x10, 0x00
ov96_0221AF88: ; 0x0221AF88
.byte 0x70, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00
.byte 0x69, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221AFA0: ; 0x0221AFA0
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221AFBC: ; 0x0221AFBC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221AFD8: ; 0x0221AFD8
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x02, 0x00, 0x03, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221AFF4: ; 0x0221AFF4
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221B010: ; 0x0221B010
.byte 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
ov96_0221B030: ; 0x0221B030
.byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221B058: ; 0x0221B058
.byte 0x0B, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00
.byte 0x33, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0xC9, 0x00, 0x00, 0x00, 0xF5, 0x01, 0x00, 0x00
.byte 0xE9, 0x03, 0x00, 0x00, 0xD1, 0x07, 0x00, 0x00, 0x89, 0x13, 0x00, 0x00, 0x11, 0x27, 0x00, 0x00
.byte 0x21, 0x4E, 0x00, 0x00, 0x51, 0xC3, 0x00, 0x00
ov96_0221B088: ; 0x0221B088
.byte 0xC0, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF
.byte 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
.byte 0xE0, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
.byte 0x20, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00
ov96_0221B0BC: ; 0x0221B0BC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x69, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221B0F0: ; 0x0221B0F0
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00
.byte 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221B124: ; 0x0221B124
.byte 0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
.byte 0x0F, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0xB8, 0x0B, 0x00, 0x00
.byte 0xF0, 0x00, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00
.byte 0x0C, 0x00, 0x00, 0x00, 0x84, 0x03, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x09, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x07, 0x00
ov96_0221B19A: ; 0x0221B19A
.byte 0x06, 0x07, 0x08, 0x12, 0x04, 0x00
.byte 0x01, 0x00, 0x06, 0x04, 0x0D, 0x18, 0x02, 0x00, 0x49, 0x00, 0x00, 0x00
ov96_0221B1AC: ; 0x0221B1AC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
ov96_0221B1BC: ; 0x0221B1BC
.byte 0x63, 0x00, 0x00, 0x00
.byte 0x64, 0x00, 0x00, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
ov96_0221B1D4: ; 0x0221B1D4
.byte 0x01, 0x00, 0x00, 0x00
ov96_0221B1D8: ; 0x0221B1D8
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
.byte 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
.byte 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
.byte 0x09, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
.byte 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00
.byte 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
.byte 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00
.byte 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00
.byte 0x23, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00
.byte 0x1F, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00
.byte 0x17, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00
.byte 0x19, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00
.byte 0x24, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00
.byte 0x25, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00
.byte 0x27, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00
.byte 0x14, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00
.byte 0x29, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00
.byte 0x2B, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00
.byte 0x2D, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00
.byte 0x2F, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00
.byte 0x31, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00
.byte 0x33, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00
.byte 0x35, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00
.byte 0x1E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00
.byte 0x1C, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00
.byte 0x0F, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00
.byte 0x44, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00
.byte 0x5C, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00
.byte 0x5E, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00
.byte 0x48, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00
.byte 0x3E, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00
.byte 0x40, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00
.byte 0x42, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00
.byte 0x3A, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x00
.byte 0x3D, 0x00, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00
.byte 0x4B, 0x00, 0x00, 0x00, 0xB1, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0xB4, 0x00, 0x00, 0x00
.byte 0x4D, 0x00, 0x00, 0x00, 0xB5, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x00, 0x00, 0xB2, 0x00, 0x00, 0x00
.byte 0x49, 0x00, 0x00, 0x00, 0xB3, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, 0xBC, 0x00, 0x00, 0x00
.byte 0x4F, 0x00, 0x00, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00
.byte 0x51, 0x00, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00
.byte 0x38, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0xC5, 0x00, 0x00, 0x00
.byte 0x56, 0x00, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0xC7, 0x00, 0x00, 0x00
.byte 0x58, 0x00, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0xC9, 0x00, 0x00, 0x00
.byte 0x5A, 0x00, 0x00, 0x00, 0xD3, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00, 0xDA, 0x00, 0x00, 0x00
.byte 0xAB, 0x00, 0x00, 0x00, 0xDB, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00
.byte 0xAC, 0x00, 0x00, 0x00, 0xDD, 0x00, 0x00, 0x00, 0xAD, 0x00, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x00
.byte 0xAE, 0x00, 0x00, 0x00, 0xDF, 0x00, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00
.byte 0xB0, 0x00, 0x00, 0x00, 0xE1, 0x00, 0x00, 0x00, 0xB1, 0x00, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x00
.byte 0xB2, 0x00, 0x00, 0x00, 0xE5, 0x00, 0x00, 0x00, 0xB3, 0x00, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00
.byte 0xB4, 0x00, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x00, 0xB5, 0x00, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00
.byte 0xB6, 0x00, 0x00, 0x00, 0xED, 0x00, 0x00, 0x00, 0xB7, 0x00, 0x00, 0x00, 0xEE, 0x00, 0x00, 0x00
.byte 0xD5, 0x00, 0x00, 0x00, 0xEF, 0x00, 0x00, 0x00, 0xD6, 0x00, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00
.byte 0x54, 0x00, 0x00, 0x00, 0x3B, 0x01, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x3C, 0x01, 0x00, 0x00
.byte 0x72, 0x00, 0x00, 0x00, 0x3D, 0x01, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x3E, 0x01, 0x00, 0x00
.byte 0x74, 0x00, 0x00, 0x00, 0x3F, 0x01, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00
.byte 0x76, 0x00, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00
.byte 0x78, 0x00, 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00
.byte 0x7A, 0x00, 0x00, 0x00, 0x45, 0x01, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x46, 0x01, 0x00, 0x00
.byte 0x7C, 0x00, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x48, 0x01, 0x00, 0x00
.byte 0x7E, 0x00, 0x00, 0x00, 0x49, 0x01, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x4A, 0x01, 0x00, 0x00
.byte 0x80, 0x00, 0x00, 0x00, 0x4B, 0x01, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x4C, 0x01, 0x00, 0x00
.byte 0x82, 0x00, 0x00, 0x00, 0x4D, 0x01, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x4E, 0x01, 0x00, 0x00
.byte 0x84, 0x00, 0x00, 0x00, 0x4F, 0x01, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00
.byte 0x86, 0x00, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00
.byte 0x88, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x56, 0x01, 0x00, 0x00
.byte 0x8A, 0x00, 0x00, 0x00, 0x57, 0x01, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00
.byte 0x8C, 0x00, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x5A, 0x01, 0x00, 0x00
.byte 0x8E, 0x00, 0x00, 0x00, 0x5B, 0x01, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x5C, 0x01, 0x00, 0x00
.byte 0x90, 0x00, 0x00, 0x00, 0x5F, 0x01, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00
.byte 0x92, 0x00, 0x00, 0x00, 0x61, 0x01, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00
.byte 0x94, 0x00, 0x00, 0x00, 0x63, 0x01, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00
.byte 0x96, 0x00, 0x00, 0x00, 0x65, 0x01, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x66, 0x01, 0x00, 0x00
.byte 0x98, 0x00, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00
.byte 0x9A, 0x00, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x00, 0x6A, 0x01, 0x00, 0x00
.byte 0x9C, 0x00, 0x00, 0x00, 0x6B, 0x01, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x00, 0x6C, 0x01, 0x00, 0x00
.byte 0x9E, 0x00, 0x00, 0x00, 0x6D, 0x01, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0x6E, 0x01, 0x00, 0x00
.byte 0xA0, 0x00, 0x00, 0x00, 0x6F, 0x01, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00
.byte 0xA2, 0x00, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0xA3, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00
.byte 0xA4, 0x00, 0x00, 0x00, 0x73, 0x01, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00
.byte 0xA6, 0x00, 0x00, 0x00, 0x75, 0x01, 0x00, 0x00, 0xA7, 0x00, 0x00, 0x00, 0x76, 0x01, 0x00, 0x00
.byte 0xA8, 0x00, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x00, 0x79, 0x01, 0x00, 0x00
.byte 0xB8, 0x00, 0x00, 0x00, 0x7A, 0x01, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00
.byte 0xBA, 0x00, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0xBB, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00
.byte 0xBC, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xBD, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00, 0x00
.byte 0xBE, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x89, 0x01, 0x00, 0x00
.byte 0xC0, 0x00, 0x00, 0x00, 0x8A, 0x01, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x8B, 0x01, 0x00, 0x00
.byte 0xC2, 0x00, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00
.byte 0xC8, 0x00, 0x00, 0x00, 0x9A, 0x01, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x9B, 0x01, 0x00, 0x00
.byte 0xC5, 0x00, 0x00, 0x00, 0x9C, 0x01, 0x00, 0x00, 0xC7, 0x00, 0x00, 0x00, 0x9D, 0x01, 0x00, 0x00
.byte 0xC4, 0x00, 0x00, 0x00, 0x5D, 0x01, 0x00, 0x00, 0xF3, 0x00, 0x00, 0x00, 0xEA, 0x00, 0x00, 0x00
.byte 0xF2, 0x00, 0x00, 0x00, 0x5E, 0x01, 0x00, 0x00, 0xE5, 0x00, 0x00, 0x00, 0x78, 0x01, 0x00, 0x00
.byte 0xE6, 0x00, 0x00, 0x00, 0x7B, 0x01, 0x00, 0x00, 0xE7, 0x00, 0x00, 0x00, 0xD2, 0x00, 0x00, 0x00
.byte 0xEF, 0x00, 0x00, 0x00, 0x8C, 0x01, 0x00, 0x00, 0xF1, 0x00, 0x00, 0x00, 0x8D, 0x01, 0x00, 0x00
.byte 0xF0, 0x00, 0x00, 0x00, 0x8E, 0x01, 0x00, 0x00, 0xED, 0x00, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00
.byte 0xEA, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0xEB, 0x00, 0x00, 0x00, 0x91, 0x01, 0x00, 0x00
.byte 0xEC, 0x00, 0x00, 0x00, 0x92, 0x01, 0x00, 0x00, 0xEE, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00
.byte 0xE8, 0x00, 0x00, 0x00, 0x94, 0x01, 0x00, 0x00, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x45, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00
.byte 0x60, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00
.byte 0x62, 0x00, 0x00, 0x00, 0x97, 0x01, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00
.byte 0x64, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0xFB, 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00
.byte 0xFF, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00
.byte 0xFC, 0x00, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x0B, 0x01, 0x00, 0x00
.byte 0x01, 0x01, 0x00, 0x00, 0x0C, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0D, 0x01, 0x00, 0x00
.byte 0xFD, 0x00, 0x00, 0x00, 0x0E, 0x01, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x0F, 0x01, 0x00, 0x00
.byte 0x09, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00
.byte 0x05, 0x01, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00
.byte 0x07, 0x01, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00
.byte 0x67, 0x00, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00
.byte 0x69, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00
.byte 0x6B, 0x00, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x1B, 0x01, 0x00, 0x00
.byte 0x6D, 0x00, 0x00, 0x00, 0x1C, 0x01, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x1D, 0x01, 0x00, 0x00
.byte 0x65, 0x00, 0x00, 0x00, 0x1E, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x1F, 0x01, 0x00, 0x00
.byte 0x6F, 0x00, 0x00, 0x00, 0x9E, 0x01, 0x00, 0x00, 0xD1, 0x00, 0x00, 0x00, 0xA5, 0x01, 0x00, 0x00
.byte 0x3B, 0x00, 0x00, 0x00, 0xA6, 0x01, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0xA7, 0x01, 0x00, 0x00
.byte 0xCF, 0x00, 0x00, 0x00, 0xA8, 0x01, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00, 0xA9, 0x01, 0x00, 0x00
.byte 0xD2, 0x00, 0x00, 0x00, 0xAA, 0x01, 0x00, 0x00, 0xD3, 0x00, 0x00, 0x00, 0xAB, 0x01, 0x00, 0x00
.byte 0xD4, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0xD7, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00
.byte 0xD8, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xD9, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00
.byte 0xDA, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0xDB, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00
.byte 0xDC, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0xDD, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00
.byte 0xDE, 0x00, 0x00, 0x00, 0xE9, 0x00, 0x00, 0x00, 0xDF, 0x00, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00
.byte 0xE0, 0x00, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00
.byte 0xE2, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00
.byte 0xE4, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221B9BC: ; 0x0221B9BC
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221B9CC: ; 0x0221B9CC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221B9E8: ; 0x0221B9E8
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221BA10: ; 0x0221BA10
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00
ov96_0221BA18: ; 0x0221BA18
.byte 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x00
ov96_0221BA20: ; 0x0221BA20
.byte 0x00, 0x28, 0xB8, 0x00, 0x98, 0xB8, 0xC0, 0x00, 0xFF, 0x00, 0x00, 0x00
ov96_0221BA2C: ; 0x0221BA2C
.byte 0x00, 0x28, 0x90, 0xC8
.byte 0x00, 0x28, 0xC8, 0x00, 0xFF, 0x00, 0x00, 0x00
ov96_0221BA38: ; 0x0221BA38
.byte 0x00, 0x28, 0x90, 0xC8, 0x00, 0x28, 0xC8, 0x00
.byte 0xFF, 0x00, 0x00, 0x00
ov96_0221BA44: ; 0x0221BA44
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BA54: ; 0x0221BA54
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x00, 0x00
.byte 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x30, 0x00
ov96_0221BA68: ; 0x0221BA68
.byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221BA80: ; 0x0221BA80
.byte 0x20, 0x00, 0x18, 0x00, 0x20, 0x00, 0x70, 0x00, 0xD0, 0x00, 0x70, 0x00, 0xE2, 0x00, 0xB4, 0x00
.byte 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xC8, 0x00, 0xA0, 0x00, 0xE2, 0x00, 0xB4, 0x00
ov96_0221BAA0: ; 0x0221BAA0
.byte 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
ov96_0221BAC0: ; 0x0221BAC0
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221BAE8: ; 0x0221BAE8
.byte 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
.byte 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
.byte 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
.byte 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
.byte 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00
.byte 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00
ov96_0221BB38: ; 0x0221BB38
.byte 0x02, 0x07, 0x02, 0x0E, 0x02, 0x0C, 0x01, 0x00
.byte 0x02, 0x04, 0x06, 0x18, 0x02, 0x0C, 0x1D, 0x00, 0x02, 0x07, 0x0D, 0x0E, 0x02, 0x0C, 0x4D, 0x00
.byte 0x02, 0x04, 0x11, 0x18, 0x06, 0x0C, 0x69, 0x00, 0x02, 0x18, 0x01, 0x07, 0x02, 0x03, 0xF9, 0x00
.byte 0x05, 0x09, 0x03, 0x0E, 0x02, 0x0C, 0x01, 0x00, 0x05, 0x05, 0x12, 0x16, 0x02, 0x0C, 0x1D, 0x00
.byte 0x05, 0x05, 0x14, 0x16, 0x02, 0x0C, 0x49, 0x00, 0x02, 0x05, 0x01, 0x0C, 0x02, 0x0C, 0x01, 0x00
.byte 0x02, 0x13, 0x01, 0x05, 0x02, 0x03, 0x19, 0x00, 0x02, 0x1A, 0x01, 0x05, 0x02, 0x03, 0x23, 0x00
.byte 0x02, 0x02, 0x05, 0x1C, 0x12, 0x0C, 0x2D, 0x00
ov96_0221BB98: ; 0x0221BB98
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01
.byte 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x02, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x01, 0x03, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221BC5C: ; 0x0221BC5C
.byte 0x03, 0x00, 0x14, 0x20
.byte 0x02, 0x0F, 0x01, 0x00
ov96_0221BC64: ; 0x0221BC64
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
ov96_0221BC70: ; 0x0221BC70
.byte 0x5C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x05
ov96_0221BC7C: ; 0x0221BC7C
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221BC8C: ; 0x0221BC8C
.byte 0x22, 0x01, 0x23, 0x01
.byte 0x24, 0x01, 0x25, 0x01, 0x42, 0x01, 0x43, 0x01, 0x44, 0x01, 0x45, 0x01
ov96_0221BC9C: ; 0x0221BC9C
.byte 0x00, 0x00, 0x80, 0x3F
.byte 0x66, 0x66, 0x66, 0x3F, 0xCD, 0xCC, 0x4C, 0x3F, 0x33, 0x33, 0x33, 0x3F, 0x9A, 0x99, 0x19, 0x3F
.byte 0x00, 0x00, 0x00, 0x3F
ov96_0221BCB4: ; 0x0221BCB4
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
.byte 0x0A, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
ov96_0221BCCC: ; 0x0221BCCC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x1D, 0x00
.byte 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221BCE8: ; 0x0221BCE8
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1D, 0x00, 0x00, 0x03, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BD04: ; 0x0221BD04
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221BD20: ; 0x0221BD20
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1C, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221BD3C: ; 0x0221BD3C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0x01
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221BD58: ; 0x0221BD58
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1B, 0x02, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BD74: ; 0x0221BD74
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221BD90: ; 0x0221BD90
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1E, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221BDAC: ; 0x0221BDAC
.byte 0x10, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BDD4: ; 0x0221BDD4
.byte 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x48, 0x00, 0x58, 0x00, 0x28, 0x00
.byte 0xD8, 0x00, 0x28, 0x00, 0xA8, 0x00, 0x28, 0x00, 0xD8, 0x00, 0x48, 0x00, 0x28, 0x00, 0xA8, 0x00
.byte 0x58, 0x00, 0xA8, 0x00, 0x28, 0x00, 0x92, 0x00, 0xD8, 0x00, 0xA8, 0x00, 0xD8, 0x00, 0x92, 0x00
.byte 0xA8, 0x00, 0xA8, 0x00,
ov96_0221BE04:
.byte 0x18, 0x00, 0x03, 0x00
ov96_0221BE08:
.byte 0x10, 0x00, 0x05, 0x00
ov96_0221BE0C:
.byte 0x20, 0x00, 0x02, 0x00
ov96_0221BE10:
.byte 0x38, 0x00, 0x01, 0x00
ov96_0221BE14:
.byte 0x03, 0x00, 0x00, 0x00, 0x90, 0x00, 0x38, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x60, 0x00, 0x88, 0x00, 0x04, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BE34:
.byte 0x04, 0x00, 0x00, 0x00, 0xD0, 0x00, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x80, 0x00, 0x60, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BE54:
.byte 0x04, 0x00, 0x00, 0x00, 0x68, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00
.byte 0xA8, 0x00, 0x70, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BE74:
.byte 0x02, 0x00, 0x00, 0x00, 0x58, 0x00, 0x50, 0x00, 0x03, 0x00, 0x00, 0x00
.byte 0xC8, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BE94:
.byte 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0xC0, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x00, 0x38, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BEB4:
.byte 0x02, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x40, 0x00, 0x03, 0x00, 0x00, 0x00
.byte 0x88, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BED4:
.byte 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x38, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BEF4:
.byte 0x03, 0x00, 0x00, 0x00, 0xC8, 0x00, 0x40, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x60, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BF14:
.byte 0x03, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x90, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BF34:
.byte 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x38, 0x00, 0x03, 0x00, 0x00, 0x00
.byte 0x80, 0x00, 0x60, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BF54:
.byte 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x00
.byte 0x90, 0x00, 0x60, 0x00, 0x04, 0x00, 0x00, 0x00, 0xC8, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BF74:
.byte 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BF94:
.byte 0x02, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x40, 0x00, 0x03, 0x00, 0x00, 0x00
.byte 0x40, 0x00, 0x60, 0x00, 0x04, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BFB4:
.byte 0x04, 0x00, 0x00, 0x00, 0xC8, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00
.byte 0x48, 0x00, 0x60, 0x00, 0x04, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BFD4:
.byte 0x04, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x04, 0x00, 0x00, 0x00
.byte 0xD0, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221BFF4: ; 0x0221BFF4
.byte 0x88, 0x48, 0x68, 0x88, 0x20, 0x98, 0x98, 0x98, 0x66, 0x00, 0x00, 0x00
.byte 0x67, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
.byte 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00
ov96_0221C01C: ; 0x0221C01C
.byte 0x00, 0x80, 0xFD, 0xFF
.byte 0x00, 0x80, 0x07, 0x00, 0x00, 0x80, 0x12, 0x00
ov96_0221C028: ; 0x0221C028
.byte 0x04, 0x06, 0x10, 0x0A, 0x02, 0x0F, 0x01, 0x00
.byte 0x04, 0x15, 0x08, 0x0A, 0x02, 0x0F, 0x15, 0x00, 0x04, 0x15, 0x0C, 0x0A, 0x02, 0x0F, 0x29, 0x00
.byte 0x04, 0x15, 0x10, 0x0A, 0x02, 0x0F, 0x3D, 0x00, 0x04, 0x12, 0x14, 0x0E, 0x02, 0x0F, 0x51, 0x00
ov96_0221C050: ; 0x0221C050
.byte 0x00, 0x80, 0x12, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0A, 0x00
.byte 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x07, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, 0x00, 0x80, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0x00
ov96_0221C080: ; 0x0221C080
.byte 0x00, 0x80, 0x02, 0x00, 0x00, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00
.byte 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x08, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C0B0: ; 0x0221C0B0
.byte 0xC0, 0xD0, 0x00, 0x00
ov96_0221C0B4: ; 0x0221C0B4
.byte 0x01, 0x01, 0x00, 0x00
ov96_0221C0B8: ; 0x0221C0B8
.byte 0xD1, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0x01, 0x01, 0x01, 0x01
ov96_0221C0C4: ; 0x0221C0C4
.byte 0x00, 0x80, 0x0A, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C0D0: ; 0x0221C0D0
.byte 0x00, 0x60, 0x0A, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C0DC: ; 0x0221C0DC
.byte 0x00, 0x60, 0x01, 0x00
.byte 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C0E8: ; 0x0221C0E8
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
.byte 0x00, 0x10, 0x00, 0x00
ov96_0221C0F4: ; 0x0221C0F4
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
ov96_0221C100: ; 0x0221C100
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
ov96_0221C110: ; 0x0221C110
.byte 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00
.byte 0xC0, 0x01, 0x00, 0x00
ov96_0221C124: ; 0x0221C124
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C140: ; 0x0221C140
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1E, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C15C: ; 0x0221C15C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1A, 0x01
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C178: ; 0x0221C178
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0x00, 0x00, 0x01, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221C194: ; 0x0221C194
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C1B0: ; 0x0221C1B0
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C1CC: ; 0x0221C1CC
.byte 0x06, 0x04, 0x08, 0x0A
.byte 0x02, 0x0F, 0x01, 0x00, 0x06, 0x16, 0x04, 0x0A, 0x02, 0x0F, 0x15, 0x00, 0x06, 0x16, 0x06, 0x0A
.byte 0x02, 0x0F, 0x29, 0x00, 0x06, 0x16, 0x08, 0x0A, 0x02, 0x0F, 0x3D, 0x00, 0x03, 0x00, 0x14, 0x20
.byte 0x02, 0x0F, 0x51, 0x00
ov96_0221C1F4: ; 0x0221C1F4
.byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C21C: ; 0x0221C21C
.byte 0x10, 0x00, 0x08, 0x00
.byte 0x04, 0x00, 0x0B, 0x00, 0x0C, 0x00, 0x0B, 0x00, 0x14, 0x00, 0x0B, 0x00, 0x1C, 0x00, 0x0B, 0x00
.byte 0x08, 0x00, 0x0E, 0x00, 0x10, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x0E, 0x00, 0x04, 0x00, 0x11, 0x00
.byte 0x0C, 0x00, 0x11, 0x00, 0x14, 0x00, 0x11, 0x00, 0x1C, 0x00, 0x11, 0x00, 0x08, 0x00, 0x14, 0x00
.byte 0x10, 0x00, 0x14, 0x00, 0x18, 0x00, 0x14, 0x00, 0x04, 0x00, 0x17, 0x00, 0x0C, 0x00, 0x17, 0x00
.byte 0x14, 0x00, 0x17, 0x00, 0x1C, 0x00, 0x17, 0x00, 0x08, 0x00, 0x19, 0x00, 0x10, 0x00, 0x19, 0x00
.byte 0x18, 0x00, 0x19, 0x00, 0x04, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x14, 0x00, 0x1C, 0x00
.byte 0x1C, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x1F, 0x00, 0x10, 0x00, 0x1F, 0x00, 0x18, 0x00, 0x1F, 0x00
ov96_0221C290: ; 0x0221C290
.byte 0x00, 0x01, 0x04, 0x05, 0x06, 0x07, 0x00, 0x00
ov96_0221C298: ; 0x0221C298
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00
ov96_0221C2A0: ; 0x0221C2A0
.byte 0x01, 0x08, 0x01, 0x10, 0x02, 0x0F, 0x01, 0x00
ov96_0221C2A8: ; 0x0221C2A8
.byte 0x18, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x03, 0x03, 0x03
ov96_0221C2B4: ; 0x0221C2B4
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221C2C4: ; 0x0221C2C4
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x00, 0x00
.byte 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00
ov96_0221C2D8: ; 0x0221C2D8
.byte 0xE9, 0x03, 0x00, 0x00, 0xE9, 0x03, 0x00, 0x00
.byte 0xE9, 0x03, 0x00, 0x00, 0xE9, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C2F0: ; 0x0221C2F0
.byte 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
ov96_0221C310: ; 0x0221C310
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C338: ; 0x0221C338
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x01, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C3E0: ; 0x0221C3E0
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C3EC: ; 0x0221C3EC
.byte 0x01, 0x0C, 0x01, 0x01
.byte 0x0B, 0x01, 0x00, 0x00
ov96_0221C3F4: ; 0x0221C3F4
.byte 0xB0, 0xB8, 0xC8, 0xD8, 0xE0, 0xF0, 0x00, 0x00
ov96_0221C3FC: ; 0x0221C3FC
.byte 0x03, 0x00, 0x14, 0x20
.byte 0x02, 0x0F, 0x01, 0x00
ov96_0221C404: ; 0x0221C404
.byte 0x6B, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06
ov96_0221C410: ; 0x0221C410
.byte 0x30, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00
ov96_0221C41C: ; 0x0221C41C
.byte 0x30, 0x00, 0x00, 0x00
.byte 0x80, 0x00, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00
ov96_0221C428: ; 0x0221C428
.byte 0x30, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00
.byte 0xD0, 0x00, 0x00, 0x00
ov96_0221C434: ; 0x0221C434
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221C444: ; 0x0221C444
.byte 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x3F
.byte 0x00, 0x00, 0x80, 0x3F
ov96_0221C454: ; 0x0221C454
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C470: ; 0x0221C470
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x1C, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C48C: ; 0x0221C48C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1A, 0x00
.byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C4A8: ; 0x0221C4A8
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1C, 0x00, 0x00, 0x02, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221C4C4: ; 0x0221C4C4
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1E, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C4E0: ; 0x0221C4E0
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x19, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C4FC: ; 0x0221C4FC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x19, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C518: ; 0x0221C518
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1E, 0x00, 0x00, 0x03, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221C534: ; 0x0221C534
.byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C55C: ; 0x0221C55C
.byte 0xFC, 0xFC, 0xFC, 0xFC
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFD, 0x06, 0x0C, 0x10, 0x11, 0x12, 0x12, 0x12, 0xFE, 0xFD
.byte 0x06, 0x0B, 0x0F, 0x11, 0x12, 0x13, 0x14, 0xFE, 0xFD, 0x06, 0x0B, 0x0F, 0x11, 0x12, 0x13, 0x14
.byte 0xFE, 0xFD, 0x06, 0x0A, 0x0E, 0x11, 0x12, 0x13, 0x14
ov96_0221C589: ; 0x0221C589
.byte 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x12, 0x12, 0x11, 0x10, 0x0D, 0x0A, 0x06, 0x00, 0x00, 0x14, 0x14, 0x13, 0x12, 0x11
.byte 0x0F, 0x0B, 0x06, 0x00, 0x14, 0x14, 0x13, 0x12, 0x11, 0x0F, 0x0B, 0x06, 0x00, 0x14, 0x14, 0x13
.byte 0x12, 0x11, 0x0F, 0x0B, 0x06, 0x00, 0x00, 0x00
ov96_0221C5B8: ; 0x0221C5B8
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221C5C4: ; 0x0221C5C4
.byte 0x03, 0x00, 0x14, 0x20, 0x02, 0x0F, 0x01, 0x00
ov96_0221C5CC: ; 0x0221C5CC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C5D8: ; 0x0221C5D8
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221C5E4: ; 0x0221C5E4
.byte 0x8B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04
ov96_0221C5F0: ; 0x0221C5F0
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C5FC: ; 0x0221C5FC
.byte 0x02, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
ov96_0221C60C: ; 0x0221C60C
.byte 0x06, 0x00, 0x00, 0x00
.byte 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00
ov96_0221C61C: ; 0x0221C61C
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C62C: ; 0x0221C62C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0x00
.byte 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C648: ; 0x0221C648
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1E, 0x00, 0x00, 0x03, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221C664: ; 0x0221C664
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1B, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C680: ; 0x0221C680
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x1C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C69C: ; 0x0221C69C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1A, 0x01
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C6B8: ; 0x0221C6B8
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221C6D4: ; 0x0221C6D4
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C6F0: ; 0x0221C6F0
.byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C718: ; 0x0221C718
.byte 0x90, 0x98, 0xA8, 0xB8, 0xC0, 0xD0, 0x00, 0x00
ov96_0221C720: ; 0x0221C720
.byte 0x01, 0x0C, 0x01, 0x01, 0x0B, 0x01, 0x00, 0x00
ov96_0221C728: ; 0x0221C728
.byte 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00
.byte 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00
.byte 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00
ov96_0221C748: ; 0x0221C748
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221C754: ; 0x0221C754
.byte 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C760: ; 0x0221C760
.byte 0x04, 0x00, 0x16, 0x10, 0x02, 0x0F, 0x01, 0x00
ov96_0221C768: ; 0x0221C768
.byte 0x04, 0x18, 0x10, 0x06, 0x02, 0x0F, 0x21, 0x00
ov96_0221C770: ; 0x0221C770
.byte 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
ov96_0221C7B0: ; 0x0221C7B0
.byte 0x03, 0x00, 0x14, 0x20, 0x02, 0x0F, 0x01, 0x00
ov96_0221C7B8: ; 0x0221C7B8
.byte 0x73, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x03, 0x03, 0x03
ov96_0221C7C4: ; 0x0221C7C4
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
ov96_0221C7D0: ; 0x0221C7D0
.byte 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
ov96_0221C7DC: ; 0x0221C7DC
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C7EC: ; 0x0221C7EC
.byte 0x00, 0x18, 0x02, 0x08
.byte 0x02, 0x0F, 0x01, 0x00, 0x00, 0x0D, 0x02, 0x08, 0x02, 0x0F, 0x11, 0x00, 0x00, 0x02, 0x02, 0x08
.byte 0x02, 0x0F, 0x21, 0x00
ov96_0221C804: ; 0x0221C804
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C820: ; 0x0221C820
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1D, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C83C: ; 0x0221C83C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0x02
.byte 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C858: ; 0x0221C858
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1B, 0x00, 0x00, 0x03, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221C874: ; 0x0221C874
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C890: ; 0x0221C890
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C8AC: ; 0x0221C8AC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0x03
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C8C8: ; 0x0221C8C8
.byte 0xF6, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00
.byte 0xF9, 0x00, 0x00, 0x00, 0xC7, 0x00, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00
.byte 0x52, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00
ov96_0221C8EC: ; 0x0221C8EC
.byte 0xAA, 0x00, 0x00, 0x00
.byte 0x82, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00
.byte 0x46, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00
ov96_0221C910: ; 0x0221C910
.byte 0x00, 0x80, 0x0B, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00
.byte 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221C934: ; 0x0221C934
.byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221C95C: ; 0x0221C95C
.byte 0x0B, 0x0A, 0x09, 0x08
.byte 0x07, 0x06, 0x03, 0x04, 0x05, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x0B, 0x0A, 0x09, 0x08, 0x07
.byte 0x06, 0x03, 0x04, 0x05, 0x03, 0x04, 0x05, 0x02, 0x01, 0x00, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06
.byte 0x08, 0x07, 0x06, 0x03, 0x04, 0x05, 0x02, 0x01, 0x00, 0x0B, 0x0A, 0x09
ov96_0221C98C: ; 0x0221C98C
.byte 0x00, 0x90, 0x01, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x03, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0xD0, 0x03, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x03, 0x00
.byte 0x00, 0xD0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, 0xD0, 0x03, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0xD0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x90, 0x01, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00
.byte 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x90, 0x01, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00
.byte 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x02, 0x00
ov96_0221CA1C: ; 0x0221CA1C
.byte 0x00, 0x02, 0x04, 0x06
.byte 0x07, 0x08, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00
ov96_0221CA28: ; 0x0221CA28
.byte 0x04, 0x05, 0x13, 0x08, 0x02, 0x0F, 0x01, 0x00
ov96_0221CA30: ; 0x0221CA30
.byte 0x00, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x03, 0x00, 0x00, 0x10, 0x02, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x03, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0xD0, 0x03, 0x00, 0x00, 0xD0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x02, 0x00
.byte 0x00, 0xD0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0xD0, 0x03, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x50, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00
.byte 0x00, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x10, 0x02, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x02, 0x00
ov96_0221CAC0: ; 0x0221CAC0
.byte 0x03, 0x00, 0x14, 0x20, 0x02, 0x0F, 0x01, 0x00
ov96_0221CAC8: ; 0x0221CAC8
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x10, 0x00, 0x00
ov96_0221CAD4: ; 0x0221CAD4
.byte 0xBE, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04
ov96_0221CAE0: ; 0x0221CAE0
.byte 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
ov96_0221CAF0: ; 0x0221CAF0
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221CB00: ; 0x0221CB00
.byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
ov96_0221CB10: ; 0x0221CB10
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221CB2C: ; 0x0221CB2C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x00
.byte 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221CB48: ; 0x0221CB48
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0x01, 0x00, 0x03, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221CB64: ; 0x0221CB64
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1A, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221CB80: ; 0x0221CB80
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221CB9C: ; 0x0221CB9C
.byte 0x10, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221CBC4: ; 0x0221CBC4
.byte 0x80, 0x90, 0x00, 0x00
ov96_0221CBC8: ; 0x0221CBC8
.byte 0x01, 0x01, 0x00, 0x00
ov96_0221CBCC: ; 0x0221CBCC
.byte 0x66, 0x00, 0x00, 0x00
.byte 0x67, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
.byte 0x05, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00
ov96_0221CBEC: ; 0x0221CBEC
.byte 0x04, 0x00, 0x16, 0x10
.byte 0x02, 0x0F, 0x01, 0x00
ov96_0221CBF4: ; 0x0221CBF4
.byte 0x00, 0x00, 0x07, 0x00, 0x00, 0x40, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221CC00: ; 0x0221CC00
.byte 0x78, 0x00, 0x84, 0x00
ov96_0221CC04: ; 0x0221CC04
.byte 0x08, 0x20, 0x00, 0x40, 0xFF, 0x00, 0x00, 0x00
ov96_0221CC0C: ; 0x0221CC0C
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221CC1C: ; 0x0221CC1C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x10, 0x00, 0x30, 0x00
ov96_0221CC30: ; 0x0221CC30
.byte 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221CC48: ; 0x0221CC48
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
ov96_0221CC60: ; 0x0221CC60
.byte 0x01, 0x06, 0x16, 0x04, 0x02, 0x0F, 0x01, 0x00, 0x01, 0x19, 0x16, 0x07, 0x02, 0x0F, 0x09, 0x00
.byte 0x02, 0x00, 0x14, 0x20, 0x02, 0x0F, 0x17, 0x00, 0x06, 0x00, 0x16, 0x0F, 0x02, 0x0F, 0x01, 0x00
ov96_0221CC80: ; 0x0221CC80
.byte 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
ov96_0221CCA0: ; 0x0221CCA0
.byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221CCC8: ; 0x0221CCC8
.byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
.byte 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
.byte 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00
ov96_0221CCF8: ; 0x0221CCF8
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01
.byte 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x03, 0x00, 0x01, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221CDA0: ; 0x0221CDA0
.byte 0x03, 0x03, 0x03, 0x00
ov96_0221CDA4:
.byte 0xFE, 0x02, 0xFD, 0x03, 0xFD, 0x03, 0xFE, 0x02, 0xFF, 0x00, 0x00, 0x00
ov96_0221CDB0:
.byte 0xFE, 0x02, 0xFE, 0x02, 0xFF, 0x01, 0xFD, 0x03, 0xFF, 0x00, 0x00, 0x00
ov96_0221CDBC:
.byte 0xFE, 0x02, 0xFF, 0x01, 0xFF, 0x01, 0xFE, 0x02, 0xFF, 0x00, 0x00, 0x00
ov96_0221CDC8: ; 0x0221CDC8
.byte 0xF4, 0xFF
ov96_0221CDCA: ; 0x0221CDCA
.byte 0xF4, 0xFF, 0x02, 0x00, 0xF3, 0xFF
.byte 0xF0, 0xFF, 0xFC, 0xFF, 0xFE, 0xFF, 0xFC, 0xFF
ov96_0221CDD8: ; 0x0221CDD8
.byte 0xE2, 0xFF, 0x0C, 0x00, 0xF0, 0xFF, 0xEE, 0xFF
.byte 0x10, 0x00, 0x0C, 0x00, 0x1E, 0x00, 0xEE, 0xFF
ov96_0221CDE8: ; 0x0221CDE8
.byte 0x5A, 0x00, 0x50, 0x00, 0x46, 0x00
ov96_0221CDEE: ; 0x0221CDEE
.byte 0xCE, 0xFF
.byte 0xEC, 0xFF, 0xF6, 0xFF
ov96_0221CDF4: ; 0x0221CDF4
.byte 0x05, 0x00, 0x0A, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x1E, 0x00
ov96_0221CDFE: ; 0x0221CDFE
.byte 0x55, 0x00
.byte 0x4B, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x00, 0x00
ov96_0221CE08: ; 0x0221CE08
.byte 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
.byte 0x10, 0x00, 0x00, 0x00
ov96_0221CE14: ; 0x0221CE14
.byte 0x64, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00
.byte 0x46, 0x00, 0x00, 0x00
ov96_0221CE24: ; 0x0221CE24
.byte 0x64, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00
.byte 0x0A, 0x00, 0x00, 0x00
ov96_0221CE34: ; 0x0221CE34
.byte 0x64, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00
.byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221CE48: ; 0x0221CE48
.byte 0x64, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00
.byte 0x64, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00
ov96_0221CE5C: ; 0x0221CE5C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00
ov96_0221CE84: ; 0x0221CE84
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00
.byte 0x10, 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221CEB8: ; 0x0221CEB8
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x27, 0x00, 0x00
.byte 0x11, 0x27, 0x00, 0x00, 0x11, 0x27, 0x00, 0x00, 0x11, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221CEEC: ; 0x0221CEEC
.byte 0x02, 0x00, 0x14, 0x20
.byte 0x02, 0x0F, 0x01, 0x00
ov96_0221CEF4: ; 0x0221CEF4
.byte 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00
ov96_0221CF00: ; 0x0221CF00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
ov96_0221CF0C: ; 0x0221CF0C
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221CF1C: ; 0x0221CF1C
.byte 0x37, 0x00, 0x00, 0x00
.byte 0x28, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221CF2C: ; 0x0221CF2C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x10, 0x00, 0x30, 0x00
ov96_0221CF40: ; 0x0221CF40
.byte 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221CF58: ; 0x0221CF58
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
.byte 0x07, 0x00, 0x00, 0x00
ov96_0221CF74: ; 0x0221CF74
.byte 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x20, 0x00, 0x00, 0x00
ov96_0221CF94: ; 0x0221CF94
.byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221CFBC: ; 0x0221CFBC
.byte 0x28, 0x00
ov96_0221CFBE: ; 0x0221CFBE
.byte 0x28, 0x00
.byte 0x28, 0x00, 0x58, 0x00, 0x28, 0x00, 0x98, 0x00, 0x60, 0x00, 0x28, 0x00, 0x60, 0x00, 0x58, 0x00
.byte 0x60, 0x00, 0x98, 0x00, 0xA0, 0x00, 0x28, 0x00, 0xA0, 0x00, 0x58, 0x00, 0xA0, 0x00, 0x98, 0x00
.byte 0xD8, 0x00, 0x28, 0x00, 0xD8, 0x00, 0x58, 0x00, 0xD8, 0x00, 0x98, 0x00
ov96_0221CFEC: ; 0x0221CFEC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x13, 0x27, 0x00, 0x00, 0x13, 0x27, 0x00, 0x00, 0x12, 0x27, 0x00, 0x00, 0x12, 0x27, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D020: ; 0x0221D020
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x12, 0x27, 0x00, 0x00, 0x12, 0x27, 0x00, 0x00, 0x12, 0x27, 0x00, 0x00
.byte 0x12, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221D054: ; 0x0221D054
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00
.byte 0x10, 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D088: ; 0x0221D088
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01
.byte 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x02, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D14C: ; 0x0221D14C
.byte 0xA8, 0x00, 0x10, 0x00
.byte 0xA8, 0x00, 0x20, 0x00, 0xA8, 0x00, 0x30, 0x00, 0x08, 0x00, 0x48, 0x00
ov96_0221D15C: ; 0x0221D15C
.byte 0x07, 0x03, 0x08, 0x08
.byte 0x02, 0x0F, 0x01, 0x00, 0x07, 0x17, 0x01, 0x08, 0x02, 0x0F, 0x11, 0x00, 0x07, 0x17, 0x03, 0x08
.byte 0x02, 0x0F, 0x21, 0x00, 0x07, 0x17, 0x05, 0x08, 0x02, 0x0F, 0x31, 0x00
ov96_0221D17C: ; 0x0221D17C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x11, 0x27, 0x00, 0x00, 0x11, 0x27, 0x00, 0x00, 0x11, 0x27, 0x00, 0x00, 0x11, 0x27, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D1B0: ; 0x0221D1B0
.byte 0x03
ov96_0221D1B1: ; 0x0221D1B1
.byte 0x05, 0x07, 0x06, 0x0F, 0x06, 0x00, 0x00
ov96_0221D1B8: ; 0x0221D1B8
.byte 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00
.byte 0x24, 0x00, 0x00, 0x00
ov96_0221D1C4: ; 0x0221D1C4
.byte 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x58, 0x00, 0x28, 0x00, 0x98, 0x00
.byte 0x60, 0x00, 0x28, 0x00, 0x60, 0x00, 0x58, 0x00, 0x60, 0x00, 0x98, 0x00, 0xA0, 0x00, 0x28, 0x00
.byte 0xA0, 0x00, 0x58, 0x00, 0xA0, 0x00, 0x98, 0x00, 0xD8, 0x00, 0x28, 0x00, 0xD8, 0x00, 0x58, 0x00
.byte 0xD8, 0x00, 0x98, 0x00
ov96_0221D1F4: ; 0x0221D1F4
.byte 0x01, 0x03, 0x01, 0x02
ov96_0221D1F8: ; 0x0221D1F8
.byte 0x03, 0x00, 0x14, 0x20, 0x02, 0x0F, 0x01, 0x00
.byte 0x00, 0x00, 0x00, 0x40, 0x00, 0xC0, 0x00, 0x80
ov96_0221D208: ; 0x0221D208
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221D214: ; 0x0221D214
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D220: ; 0x0221D220
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D22C: ; 0x0221D22C
.byte 0x00, 0xF0, 0xFF, 0xFF
.byte 0x00, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00
ov96_0221D238: ; 0x0221D238
.byte 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x02, 0x02, 0x02, 0x02
ov96_0221D244: ; 0x0221D244
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00
ov96_0221D250: ; 0x0221D250
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D25C: ; 0x0221D25C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
ov96_0221D268: ; 0x0221D268
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221D274: ; 0x0221D274
.byte 0x00, 0xF0, 0xFF, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D280: ; 0x0221D280
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D28C: ; 0x0221D28C
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D29C: ; 0x0221D29C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1A, 0x03
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D2B8: ; 0x0221D2B8
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221D2D4: ; 0x0221D2D4
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D2F0: ; 0x0221D2F0
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1D, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D30C: ; 0x0221D30C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1D, 0x00
.byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D328: ; 0x0221D328
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0x01, 0x00, 0x02, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221D344: ; 0x0221D344
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1B, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D360: ; 0x0221D360
.byte 0x00, 0x00, 0x00, 0x08, 0x02, 0x0E, 0x01, 0x00, 0x00, 0x08, 0x00, 0x08, 0x02, 0x0E, 0x11, 0x00
.byte 0x00, 0x10, 0x00, 0x08, 0x02, 0x0E, 0x21, 0x00, 0x00, 0x18, 0x00, 0x08, 0x02, 0x0E, 0x31, 0x00
ov96_0221D380: ; 0x0221D380
.byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D3A8: ; 0x0221D3A8
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x0F, 0x00
.byte 0x00, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D3D8: ; 0x0221D3D8
.byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00
.byte 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D408: ; 0x0221D408
.byte 0x58, 0x00, 0x50, 0x00, 0x30, 0x00, 0x50, 0x00
.byte 0x48, 0x00, 0x38, 0x00, 0xA8, 0x00, 0x50, 0x00, 0xD0, 0x00, 0x50, 0x00, 0xB8, 0x00, 0x38, 0x00
.byte 0x58, 0x00, 0x80, 0x00, 0x30, 0x00, 0x80, 0x00, 0x48, 0x00, 0x98, 0x00, 0xA8, 0x00, 0x80, 0x00
.byte 0xD0, 0x00, 0x80, 0x00, 0xB8, 0x00, 0x98, 0x00
ov96_0221D438: ; 0x0221D438
.byte 0x50, 0x00
ov96_0221D43A: ; 0x0221D43A
.byte 0x58, 0x00, 0x68, 0x00, 0x58, 0x00
.byte 0x80, 0x00, 0x58, 0x00, 0x98, 0x00, 0x58, 0x00, 0xB0, 0x00, 0x58, 0x00, 0x50, 0x00, 0x68, 0x00
.byte 0x68, 0x00, 0x68, 0x00, 0x80, 0x00, 0x68, 0x00, 0x98, 0x00, 0x68, 0x00, 0xB0, 0x00, 0x68, 0x00
.byte 0x50, 0x00, 0x78, 0x00, 0x68, 0x00, 0x78, 0x00, 0x80, 0x00, 0x78, 0x00, 0x98, 0x00, 0x78, 0x00
.byte 0xB0, 0x00, 0x78, 0x00
ov96_0221D474: ; 0x0221D474
.byte 0x40, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x50, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
.byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00
.byte 0xC0, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00
.byte 0x80, 0x00, 0x00, 0x00
ov96_0221D4B4: ; 0x0221D4B4
.byte 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00
.byte 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x00, 0x00, 0x05, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00
.byte 0x00, 0x80, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x00, 0x00, 0x08, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221D514: ; 0x0221D514
.byte 0x07, 0x07, 0x06, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x04
.byte 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x07, 0x07, 0x06, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04
.byte 0x04, 0x04, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x07, 0x07, 0x06, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04
.byte 0x04, 0x04, 0x04, 0x03, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07
.byte 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04
.byte 0x04, 0x04, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07
.byte 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04
.byte 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01
ov96_0221D5AA: ; 0x0221D5AA
.byte 0x05, 0x05, 0x05, 0x04, 0x04, 0x04
.byte 0x04, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03
.byte 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03
.byte 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D640: ; 0x0221D640
.byte 0x07, 0x07, 0x06, 0x05, 0x04, 0x00, 0x00, 0x00
ov96_0221D648: ; 0x0221D648
.byte 0xC0, 0xD0, 0x00, 0x00
ov96_0221D64C: ; 0x0221D64C
.byte 0x01, 0x01, 0x00, 0x00
ov96_0221D650: ; 0x0221D650
.byte 0x04, 0x08, 0x12, 0x0A, 0x02, 0x0F, 0x01, 0x00
ov96_0221D658: ; 0x0221D658
.byte 0x04, 0x13, 0x0E, 0x0A, 0x04, 0x0F, 0x15, 0x00
ov96_0221D660: ; 0x0221D660
.byte 0x00, 0x60, 0x03, 0x00, 0x00, 0x80, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D66C: ; 0x0221D66C
.byte 0x00, 0x00, 0x0B, 0x00
.byte 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D678: ; 0x0221D678
.byte 0xD0, 0x00
ov96_0221D67A: ; 0x0221D67A
.byte 0x40, 0x00
ov96_0221D67C: ; 0x0221D67C
.byte 0xB8, 0x00, 0x30, 0x00
ov96_0221D680: ; 0x0221D680
.byte 0xE0, 0x00, 0x58, 0x00, 0x30, 0x00, 0x90, 0x00, 0x48, 0x00, 0xA0, 0x00, 0x20, 0x00, 0x78, 0x00
.byte 0xD0, 0x00, 0x90, 0x00, 0xB8, 0x00, 0xA0, 0x00, 0xE0, 0x00, 0x78, 0x00
ov96_0221D69C: ; 0x0221D69C
.byte 0x00, 0x08, 0x08, 0x08
.byte 0x08, 0x00, 0x00, 0x00
ov96_0221D6A4: ; 0x0221D6A4
.byte 0x03, 0x00, 0x14, 0x20, 0x02, 0x0F, 0x01, 0x00, 0x33, 0x0B, 0x00, 0x00
.byte 0x33, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D6B8: ; 0x0221D6B8
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x10, 0x00, 0x00
ov96_0221D6C4: ; 0x0221D6C4
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221D6D4: ; 0x0221D6D4
.byte 0x20, 0x00, 0xA0, 0x00, 0x30, 0x00, 0x40, 0x00, 0xD0, 0x00, 0x40, 0x00
.byte 0xE0, 0x00, 0xA0, 0x00
ov96_0221D6E4: ; 0x0221D6E4
.byte 0x48, 0x00
ov96_0221D6E6: ; 0x0221D6E6
.byte 0x60, 0x00, 0xB8, 0x00, 0x60, 0x00, 0x40, 0x00, 0x88, 0x00
.byte 0xC0, 0x00, 0x88, 0x00
ov96_0221D6F4: ; 0x0221D6F4
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00
.byte 0x10, 0x00, 0x30, 0x00, 0x10, 0x00, 0x30, 0x00
ov96_0221D708: ; 0x0221D708
.byte 0x30, 0x00
ov96_0221D70A: ; 0x0221D70A
.byte 0x30, 0x00
ov96_0221D70C: ; 0x0221D70C
.byte 0x40, 0x00, 0xD0, 0x00
.byte 0x30, 0x00, 0x40, 0x00, 0x20, 0x00, 0x90, 0x00, 0x40, 0x00, 0xE0, 0x00, 0x90, 0x00, 0x40, 0x00
ov96_0221D720: ; 0x0221D720
.byte 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D738: ; 0x0221D738
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
.byte 0x06, 0x00, 0x00, 0x00
ov96_0221D754: ; 0x0221D754
.byte 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x20, 0x00, 0x00, 0x00
ov96_0221D774: ; 0x0221D774
.byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D79C: ; 0x0221D79C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0x10, 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D7D0: ; 0x0221D7D0
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0E, 0x00, 0x12, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00
.byte 0x16, 0x00, 0x17, 0x00, 0x17, 0x00, 0x18, 0x00, 0x0A, 0x00, 0x12, 0x00, 0x18, 0x00, 0x1C, 0x00
.byte 0x1D, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x0A, 0x00, 0x13, 0x00
.byte 0x1B, 0x00, 0x21, 0x00, 0x25, 0x00, 0x26, 0x00, 0x26, 0x00, 0x27, 0x00, 0x27, 0x00, 0x28, 0x00
.byte 0x0A, 0x00, 0x13, 0x00, 0x1B, 0x00, 0x22, 0x00, 0x28, 0x00, 0x2C, 0x00, 0x2D, 0x00, 0x2E, 0x00
.byte 0x2F, 0x00, 0x30, 0x00
ov96_0221D834: ; 0x0221D834
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1E, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1D, 0x02
.byte 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03
.byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D8F8: ; 0x0221D8F8
.byte 0x05, 0x12, 0x13, 0x0A, 0x02, 0x0F, 0x01, 0x00
.byte 0x05, 0x00, 0x16, 0x0F, 0x02, 0x0F, 0x15, 0x00, 0x05, 0x0E, 0x09, 0x0A, 0x02, 0x0F, 0x33, 0x00
ov96_0221D910: ; 0x0221D910
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x11, 0x27, 0x00, 0x00, 0x11, 0x27, 0x00, 0x00, 0x11, 0x27, 0x00, 0x00
.byte 0x11, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov96_0221D944: ; 0x0221D944
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00
.byte 0x10, 0x27, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221D978: ; 0x0221D978
.byte 0x05, 0x0A, 0x1E, 0x00
ov96_0221D97C: ; 0x0221D97C
.byte 0x00, 0x0A, 0x32, 0x50
.byte 0x3C, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00
ov96_0221D98C: ; 0x0221D98C
.byte 0x30, 0x00
ov96_0221D98E: ; 0x0221D98E
.byte 0x40, 0x00
.byte 0xD0, 0x00, 0x40, 0x00, 0x20, 0x00, 0xA0, 0x00, 0xE0, 0x00, 0xA0, 0x00
ov96_0221D99C: ; 0x0221D99C
.byte 0x64, 0x50, 0x46, 0x3C
ov96_0221D9A0: ; 0x0221D9A0
.word ov96_0221A57C
.word ov96_0221A57C
.word ov96_0221A57C
.word ov96_0221A57C
.word ov96_0221A57C
.word ov96_0221A57C
.word ov96_0221A57C
.word ov96_0221A57C
.word ov96_0221A57C
.word ov96_0221A5B8
ov96_0221D9C8: ; 0x0221D9C8
.word ov96_0221A640
.word ov96_0221A670
.word ov96_0221A680
.word ov96_0221A690
.word ov96_0221A69C
.word ov96_0221A6B0
.word ov96_0221A6D0
.word ov96_0221A700
.word ov96_0221A720
.word 0
.data
_0221DA00:
.word ov96_0221DC30
.word ov96_0221DC50
.word ov96_0221DB50
.word ov96_0221DC5C
.word ov96_0221DC74
.word ov96_0221DC1C
.word ov96_0221DC3C
.word ov96_0221DC90
.word ov96_0221DC48
.word ov96_0221DC88
ov96_0221DA28: ; 0x0221DA28
.word ov96_0221A90C
.word ov96_0221A8D0
.word ov96_0221A7F4
.word ov96_0221A830
.word ov96_0221A8A8
.word ov96_0221A920
.word ov96_0221A8F8
.word ov96_0221A880
.word ov96_0221A858
.word ov96_0221A81C
ov96_0221DA50: ; 0x0221DA50
.word ov96_021EB6C8
.word ov96_021EB730
.word ov96_021EBA98
ov96_0221DA5C: ; 0x0221DA5C
.word ov96_021EBAFC
.word ov96_021EBB64
.word ov96_021EC1B0
ov96_0221DA68: ; 0x0221DA68
.word ov96_021EF094
ov96_0221DA6C: ; 0x0221DA6C
.word ov96_021EFD9C
.word ov96_021EFEB8
.word ov96_021EFF3C
.word ov96_021EFFE4
.word ov96_021F008C
ov96_0221DA80: ; 0x0221DA80
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov96_0221DB50:
.word ov96_021F0A7C
.word ov96_021F0AE0
.word ov96_021F0B58
ov96_0221DB5C: ; 0x0221DB5C
.byte 0xFC, 0xFF, 0xFF, 0xFF
.byte 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
ov96_0221DB70: ; 0x0221DB70
.byte 0xFD, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
.byte 0xFD, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
ov96_0221DBB8: ; 0x0221DBB8
.word ov96_0221BE10
.word ov96_0221BE0C
.word ov96_0221BE04
.word ov96_0221BE08
ov96_0221DBC8: ; 0x0221DBC8
.word ov96_0221BF74
.word ov96_0221BF14
.word ov96_0221BEF4
.word ov96_0221BED4
.word ov96_0221BEB4
.word ov96_0221BE74
.word ov96_0221BE94
.word ov96_0221BF54
.word ov96_0221BF94
.word ov96_0221BE14
.word ov96_0221BE34
.word ov96_0221BF34
.word ov96_0221BFB4
.word ov96_0221BE54
.word ov96_0221BFD4
ov96_0221DC04: ; 0x0221DC04
.byte 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
ov96_0221DC10: ; 0x0221DC10
.byte 0x14, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
ov96_0221DC18: ; 0x0221DC18
.byte 0x03, 0x04, 0x05, 0x06
ov96_0221DC1C:
.word ov96_021F5650
.word ov96_021F5730
ov96_0221DC24: ; 0x0221DC24
.word ov96_021F7E74
ov96_0221DC28: ; 0x0221DC28
.byte 0x94, 0x00, 0x6B, 0x00
ov96_0221DC2C: ; 0x0221DC2C
.byte 0x03, 0x04, 0x05, 0x00
ov96_0221DC30:
.word ov96_021F9234
.word ov96_021F9240
.word ov96_021F9380
ov96_0221DC3C:
.word ov96_021FD2E0
.word ov96_021FD3EC
.word ov96_021FD46C
ov96_0221DC48:
.word ov96_02202154
.word ov96_022021D4
ov96_0221DC50:
.word ov96_022052B0
.word ov96_0220549C
.word ov96_02205520
ov96_0221DC5C:
.word ov96_02209130
.word ov96_0220935C
.word ov96_022093D0
ov96_0221DC68: ; 0x0221DC68
.word ov96_0221CDBC
.word ov96_0221CDB0
.word ov96_0221CDA4
ov96_0221DC74:
.word ov96_0220E22C
.word ov96_0220E2DC
.word ov96_0220E394
ov96_0221DC80: ; 0x0221DC80
.byte 0x00, 0x04, 0x02, 0x01, 0x00, 0x01, 0x00, 0x01
ov96_0221DC88:
.word ov96_022117EC
.word ov96_02211870
ov96_0221DC90:
.word ov96_02215984
.word ov96_022159F0
.word ov96_02215A70
.word 0
.bss
_0221DCA0:
.space 0x900
ov96_0221E5A0: ; 0x0221E5A0
.space 0x4
ov96_0221E5A4: ; 0x0221E5A4
.space 0x1c