pokeheartgold/asm/overlay_41.s
Adrienn Tindall 8660536d04 Make HeapID an enum
Also made some _ctor and _new -> _New
2023-06-03 02:18:52 -05:00

13084 lines
226 KiB
ArmAsm

.include "asm/macros.inc"
.include "overlay_41.inc"
.include "global.inc"
.text
thumb_func_start ov41_02245EA0
ov41_02245EA0: ; 0x02245EA0
push {r3, r4, r5, r6, r7, lr}
add r7, r1, #0
add r5, r0, #0
add r0, r7, #0
mov r1, #8
bl AllocFromHeap
lsl r6, r5, #3
add r4, r0, #0
add r0, r7, #0
add r1, r6, #0
bl AllocFromHeap
mov r1, #0
add r2, r6, #0
str r0, [r4]
bl memset
str r5, [r4, #4]
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_02245EA0
thumb_func_start ov41_02245ECC
ov41_02245ECC: ; 0x02245ECC
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl FreeToHeap
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_02245ECC
thumb_func_start ov41_02245EE0
ov41_02245EE0: ; 0x02245EE0
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5]
bl ov41_0224607C
add r4, r0, #0
bne _02245EF2
bl GF_AssertFail
_02245EF2:
ldr r0, [r5, #0x18]
str r0, [r4]
add r0, r5, #0
bl ov41_022460A8
str r0, [r4, #4]
add r0, r4, #0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_02245EE0
thumb_func_start ov41_02245F04
ov41_02245F04: ; 0x02245F04
push {r3, lr}
add r1, sp, #0
bl ov41_022460DC
add r0, sp, #0
bl sub_020252F4
pop {r3, pc}
thumb_func_end ov41_02245F04
thumb_func_start ov41_02245F14
ov41_02245F14: ; 0x02245F14
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r4, r0, #0
add r6, r1, #0
str r2, [sp]
add r7, r3, #0
bl ov41_02245F04
cmp r0, #0
bne _02245F2E
add sp, #0xc
mov r0, #0
pop {r4, r5, r6, r7, pc}
_02245F2E:
add r0, r4, #0
add r1, sp, #8
add r2, sp, #4
bl ov41_02245FA8
ldr r0, _02245F98 ; =gSystem + 0x40
ldr r1, [sp, #8]
ldrh r2, [r0, #0x20]
sub r1, r2, r1
str r1, [r6]
ldrh r1, [r0, #0x22]
ldr r0, [sp, #4]
sub r1, r1, r0
ldr r0, [sp]
sub r4, r1, #4
str r1, [r0]
add r0, r1, #4
cmp r4, r0
bge _02245F92
_02245F54:
cmp r4, #0
blt _02245F86
ldr r0, [r6]
sub r5, r0, #4
add r0, r0, #4
cmp r5, r0
bge _02245F86
_02245F62:
cmp r5, #0
blt _02245F7C
add r0, r7, #0
add r1, r5, #0
add r2, r4, #0
mov r3, #0
bl ov41_022464BC
cmp r0, #0
bne _02245F7C
add sp, #0xc
mov r0, #1
pop {r4, r5, r6, r7, pc}
_02245F7C:
ldr r0, [r6]
add r5, r5, #1
add r0, r0, #4
cmp r5, r0
blt _02245F62
_02245F86:
ldr r0, [sp]
add r4, r4, #1
ldr r0, [r0]
add r0, r0, #4
cmp r4, r0
blt _02245F54
_02245F92:
mov r0, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02245F98: .word gSystem + 0x40
thumb_func_end ov41_02245F14
thumb_func_start ov41_02245F9C
ov41_02245F9C: ; 0x02245F9C
ldr r3, _02245FA4 ; =sub_02015FC4
ldr r0, [r0, #4]
bx r3
nop
_02245FA4: .word sub_02015FC4
thumb_func_end ov41_02245F9C
thumb_func_start ov41_02245FA8
ov41_02245FA8: ; 0x02245FA8
push {r3, r4, r5, lr}
sub sp, #8
ldr r0, [r0, #4]
add r5, r1, #0
add r4, r2, #0
bl sub_02015FCC
add r1, sp, #0
strh r0, [r1]
lsr r0, r0, #0x10
strh r0, [r1, #2]
ldrh r0, [r1]
strh r0, [r1, #4]
ldrh r0, [r1, #2]
strh r0, [r1, #6]
mov r0, #4
ldrsh r0, [r1, r0]
str r0, [r5]
mov r0, #6
ldrsh r0, [r1, r0]
str r0, [r4]
add sp, #8
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_02245FA8
thumb_func_start ov41_02245FD8
ov41_02245FD8: ; 0x02245FD8
push {r3, r4, r5, lr}
sub sp, #8
ldr r0, [r0, #4]
add r5, r1, #0
add r4, r2, #0
bl sub_02015FE8
add r1, sp, #0
strh r0, [r1]
lsr r0, r0, #0x10
strh r0, [r1, #2]
ldrh r0, [r1]
strh r0, [r1, #4]
ldrh r0, [r1, #2]
strh r0, [r1, #6]
mov r0, #4
ldrsh r0, [r1, r0]
str r0, [r5]
mov r0, #6
ldrsh r0, [r1, r0]
str r0, [r4]
add sp, #8
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_02245FD8
thumb_func_start ov41_02246008
ov41_02246008: ; 0x02246008
ldr r3, _02246010 ; =sub_02015FB0
ldr r0, [r0, #4]
bx r3
nop
_02246010: .word sub_02015FB0
thumb_func_end ov41_02246008
thumb_func_start ov41_02246014
ov41_02246014: ; 0x02246014
ldr r3, _0224601C ; =sub_02015FF4
ldr r0, [r0, #4]
bx r3
nop
_0224601C: .word sub_02015FF4
thumb_func_end ov41_02246014
thumb_func_start ov41_02246020
ov41_02246020: ; 0x02246020
push {r3, r4, r5, lr}
sub sp, #8
add r5, r1, #0
add r4, r2, #0
add r1, sp, #4
add r2, sp, #0
bl ov41_02245FD8
ldr r0, [sp, #4]
cmp r0, #0x10
beq _02246040
cmp r0, #0x20
beq _02246046
cmp r0, #0x40
beq _0224604C
b _02246050
_02246040:
mov r0, #0
str r0, [r5]
b _02246050
_02246046:
mov r0, #0xa
str r0, [r5]
b _02246050
_0224604C:
mov r0, #0x14
str r0, [r5]
_02246050:
ldr r0, [sp]
cmp r0, #0x10
beq _02246062
cmp r0, #0x20
beq _0224606A
cmp r0, #0x40
beq _02246072
add sp, #8
pop {r3, r4, r5, pc}
_02246062:
mov r0, #0
add sp, #8
str r0, [r4]
pop {r3, r4, r5, pc}
_0224606A:
mov r0, #0xa
add sp, #8
str r0, [r4]
pop {r3, r4, r5, pc}
_02246072:
mov r0, #0x14
str r0, [r4]
add sp, #8
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_02246020
thumb_func_start ov41_0224607C
ov41_0224607C: ; 0x0224607C
push {r3, r4}
ldr r4, [r0, #4]
mov r1, #0
cmp r4, #0
ble _022460A0
ldr r3, [r0]
add r2, r3, #0
_0224608A:
ldr r0, [r2, #4]
cmp r0, #0
bne _02246098
lsl r0, r1, #3
add r0, r3, r0
pop {r3, r4}
bx lr
_02246098:
add r1, r1, #1
add r2, #8
cmp r1, r4
blt _0224608A
_022460A0:
mov r0, #0
pop {r3, r4}
bx lr
.balign 4, 0
thumb_func_end ov41_0224607C
thumb_func_start ov41_022460A8
ov41_022460A8: ; 0x022460A8
push {r3, lr}
sub sp, #0x20
ldr r1, [r0, #4]
mov r3, #0
str r1, [sp]
ldr r1, [r0, #8]
str r1, [sp, #4]
ldr r1, [r0, #0xc]
str r1, [sp, #8]
ldr r2, [r0, #0x10]
add r1, sp, #0
strh r2, [r1, #0xc]
ldr r2, [r0, #0x14]
strh r2, [r1, #0xe]
strh r3, [r1, #0x10]
mov r2, #0x1f
str r2, [sp, #0x14]
str r3, [sp, #0x18]
ldr r0, [r0, #0x1c]
strh r0, [r1, #0x1c]
add r0, sp, #0
bl sub_02015F8C
add sp, #0x20
pop {r3, pc}
.balign 4, 0
thumb_func_end ov41_022460A8
thumb_func_start ov41_022460DC
ov41_022460DC: ; 0x022460DC
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
ldr r0, [r5, #4]
add r4, r1, #0
bl sub_02015FCC
add r1, sp, #0
strh r0, [r1, #4]
lsr r0, r0, #0x10
strh r0, [r1, #6]
ldrh r0, [r1, #4]
strh r0, [r1, #0xc]
ldrh r0, [r1, #6]
strh r0, [r1, #0xe]
ldr r0, [r5, #4]
bl sub_02015FE8
add r1, sp, #0
strh r0, [r1]
lsr r0, r0, #0x10
strh r0, [r1, #2]
ldrh r0, [r1]
strh r0, [r1, #8]
ldrh r0, [r1, #2]
strh r0, [r1, #0xa]
mov r0, #0xe
ldrsh r2, [r1, r0]
mov r0, #0xa
strb r2, [r4]
ldrsh r0, [r1, r0]
add r0, r2, r0
strb r0, [r4, #1]
mov r0, #0xc
ldrsh r2, [r1, r0]
mov r0, #8
strb r2, [r4, #2]
ldrsh r0, [r1, r0]
add r0, r2, r0
strb r0, [r4, #3]
add sp, #0x10
pop {r3, r4, r5, pc}
thumb_func_end ov41_022460DC
thumb_func_start ov41_02246130
ov41_02246130: ; 0x02246130
push {r3, lr}
bl ov41_022466D0
bl ov41_022466F0
bl ov41_02246778
ldr r0, _0224614C ; =gSystem + 0x60
mov r1, #1
strb r1, [r0, #9]
bl GX_SwapDisplay
pop {r3, pc}
nop
_0224614C: .word gSystem + 0x60
thumb_func_end ov41_02246130
thumb_func_start ov41_02246150
ov41_02246150: ; 0x02246150
push {r3, lr}
ldr r0, _0224616C ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GX_SwapDisplay
bl ov41_022467D4
bl ov41_022467C8
bl GX_ResetBankForTex
pop {r3, pc}
nop
_0224616C: .word gSystem + 0x60
thumb_func_end ov41_02246150
thumb_func_start ov41_02246170
ov41_02246170: ; 0x02246170
push {r4, lr}
sub sp, #0x10
ldr r3, _022461CC ; =ov41_0224BFB4
add r2, sp, #0
add r4, r0, #0
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
mov r0, #0x1a
mov r1, #0xe
bl NARC_ctor
mov r1, #6
lsl r1, r1, #6
str r0, [r4, r1]
add r0, r4, #0
add r1, sp, #0
bl ov41_022467E4
mov r2, #0xa
add r0, r4, #0
mov r1, #0xe
lsl r2, r2, #0xa
mov r3, #0x20
bl ov41_02246CC0
add r0, r4, #0
bl ov41_02246A50
add r0, r4, #0
mov r1, #0xd
bl ov41_02246C90
add r0, r4, #0
bl ov41_02246A94
mov r0, #0xe
bl BgConfig_Alloc
str r0, [r4, #0x40]
add r0, r4, #0
bl ov41_022468FC
add sp, #0x10
pop {r4, pc}
.balign 4, 0
_022461CC: .word ov41_0224BFB4
thumb_func_end ov41_02246170
thumb_func_start ov41_022461D0
ov41_022461D0: ; 0x022461D0
push {r4, lr}
add r4, r0, #0
bl ov41_02246CB0
add r0, r4, #0
bl ov41_02246820
add r0, r4, #0
bl ov41_02246A20
ldr r0, [r4, #0x40]
bl FreeToHeap
add r0, r4, #0
bl ov41_02246D2C
add r0, r4, #0
bl ov41_02246B34
add r0, r4, #0
bl ov41_02246A7C
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
bl NARC_dtor
ldr r0, [r4, #4]
bl FreeToHeap
mov r0, #0
str r0, [r4, #4]
ldr r0, [r4, #0x10]
bl FreeToHeap
mov r0, #0
str r0, [r4, #0x10]
pop {r4, pc}
thumb_func_end ov41_022461D0
thumb_func_start ov41_0224621C
ov41_0224621C: ; 0x0224621C
push {r4, lr}
add r4, r0, #0
bl Thunk_G3X_Reset
bl NNS_G2dSetupSoftwareSpriteCamera
ldr r0, [r4, #0x1c]
cmp r0, #0
beq _02246234
add r0, r4, #0
bl ov41_02246830
_02246234:
ldr r0, [r4, #0x2c]
cmp r0, #0
beq _02246240
ldr r0, [r4, #0x20]
bl sub_02008120
_02246240:
mov r0, #0
add r1, r0, #0
bl sub_02026E50
add r0, r4, #0
bl ov41_02246B5C
pop {r4, pc}
thumb_func_end ov41_0224621C
thumb_func_start ov41_02246250
ov41_02246250: ; 0x02246250
push {r3, r4, r5, lr}
add r4, r1, #0
ldr r1, [r4]
ldr r2, [r4, #4]
add r5, r0, #0
bl ov41_0224683C
ldr r1, [r4, #8]
ldr r2, [r4, #0xc]
add r0, r5, #0
bl ov41_0224689C
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_02246250
thumb_func_start ov41_0224626C
ov41_0224626C: ; 0x0224626C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl sub_02015EF4
ldr r0, [r4]
bl sub_02015F64
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_0224626C
thumb_func_start ov41_02246280
ov41_02246280: ; 0x02246280
push {r4, r5, r6, lr}
sub sp, #0x70
add r5, r0, #0
mov r0, #0
str r1, [sp]
mvn r0, r0
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
str r0, [sp, #0x10]
add r4, r2, #0
ldr r2, [r5, #0x48]
add r6, r3, #0
str r2, [sp, #0x14]
ldr r2, [r5, #0x4c]
add r3, r1, #0
str r2, [sp, #0x18]
ldr r2, [r5, #0x50]
str r2, [sp, #0x1c]
ldr r2, [r5, #0x54]
str r2, [sp, #0x20]
str r0, [sp, #0x24]
str r0, [sp, #0x28]
add r0, sp, #0x4c
add r2, r1, #0
bl CreateSpriteResourcesHeader
ldr r0, [r5, #0x44]
str r0, [sp, #0x2c]
add r0, sp, #0x4c
str r0, [sp, #0x30]
lsl r0, r4, #0xc
str r0, [sp, #0x34]
lsl r0, r6, #0xc
str r0, [sp, #0x38]
mov r0, #0
str r0, [sp, #0x3c]
ldr r0, [sp, #0x80]
str r0, [sp, #0x40]
ldr r0, [sp, #0x84]
str r0, [sp, #0x44]
mov r0, #0xe
str r0, [sp, #0x48]
add r0, sp, #0x2c
bl sub_02024714
add sp, #0x70
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov41_02246280
thumb_func_start ov41_022462E4
ov41_022462E4: ; 0x022462E4
push {r3, r4, lr}
sub sp, #0xc
ldr r4, [sp, #0x1c]
str r4, [sp]
ldr r4, [sp, #0x18]
str r4, [sp, #4]
mov r4, #0xe
str r4, [sp, #8]
ldr r0, [r0, #0x48]
bl AddCharResObjFromOpenNarc
bl sub_0200ADA4
add sp, #0xc
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov41_022462E4
thumb_func_start ov41_02246304
ov41_02246304: ; 0x02246304
push {r4, lr}
sub sp, #0x10
ldr r4, [sp, #0x20]
str r4, [sp]
ldr r4, [sp, #0x18]
str r4, [sp, #4]
ldr r4, [sp, #0x1c]
str r4, [sp, #8]
mov r4, #0xe
str r4, [sp, #0xc]
ldr r0, [r0, #0x4c]
bl AddPlttResObjFromOpenNarc
bl sub_0200B00C
add sp, #0x10
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_02246304
thumb_func_start ov41_02246328
ov41_02246328: ; 0x02246328
push {r3, r4, lr}
sub sp, #0xc
ldr r4, [sp, #0x18]
str r4, [sp]
mov r4, #2
str r4, [sp, #4]
mov r4, #0xe
str r4, [sp, #8]
ldr r0, [r0, #0x50]
bl AddCellOrAnimResObjFromOpenNarc
add sp, #0xc
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov41_02246328
thumb_func_start ov41_02246344
ov41_02246344: ; 0x02246344
push {r3, r4, lr}
sub sp, #0xc
ldr r4, [sp, #0x18]
str r4, [sp]
mov r4, #3
str r4, [sp, #4]
mov r4, #0xe
str r4, [sp, #8]
ldr r0, [r0, #0x54]
bl AddCellOrAnimResObjFromOpenNarc
add sp, #0xc
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov41_02246344
thumb_func_start ov41_02246360
ov41_02246360: ; 0x02246360
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x48]
bl Get2DGfxResObjById
add r1, r0, #0
ldr r0, [r4, #0x48]
bl DestroySingle2DGfxResObj
pop {r4, pc}
thumb_func_end ov41_02246360
thumb_func_start ov41_02246374
ov41_02246374: ; 0x02246374
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x4c]
bl Get2DGfxResObjById
add r1, r0, #0
ldr r0, [r4, #0x4c]
bl DestroySingle2DGfxResObj
pop {r4, pc}
thumb_func_end ov41_02246374
thumb_func_start ov41_02246388
ov41_02246388: ; 0x02246388
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x50]
bl Get2DGfxResObjById
add r1, r0, #0
ldr r0, [r4, #0x50]
bl DestroySingle2DGfxResObj
pop {r4, pc}
thumb_func_end ov41_02246388
thumb_func_start ov41_0224639C
ov41_0224639C: ; 0x0224639C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x54]
bl Get2DGfxResObjById
add r1, r0, #0
ldr r0, [r4, #0x54]
bl DestroySingle2DGfxResObj
pop {r4, pc}
thumb_func_end ov41_0224639C
thumb_func_start ov41_022463B0
ov41_022463B0: ; 0x022463B0
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
add r0, r4, #0
mov r1, #0x76
mov r2, #0x13
mov r3, #0xe
bl ov41_02246D54
add r0, r5, #0
add r1, r4, #0
bl ov41_02246B68
add r0, r5, #0
add r1, r4, #0
bl ov41_02246BEC
pop {r3, r4, r5, pc}
thumb_func_end ov41_022463B0
thumb_func_start ov41_022463D4
ov41_022463D4: ; 0x022463D4
ldr r3, _022463D8 ; =ov41_02246DA8
bx r3
.balign 4, 0
_022463D8: .word ov41_02246DA8
thumb_func_end ov41_022463D4
thumb_func_start ov41_022463DC
ov41_022463DC: ; 0x022463DC
push {r4, r5, r6, lr}
add r4, r0, #0
ldr r0, [r4, #0x34]
add r6, r1, #0
add r5, r2, #0
bl sub_020255C4
ldr r1, [r4, #0x38]
lsl r5, r5, #2
add r0, r6, #0
add r1, r1, r5
bl NNS_G2dGetUnpackedCharacterData
ldr r0, [r4, #0x38]
ldr r0, [r0, r5]
pop {r4, r5, r6, pc}
thumb_func_end ov41_022463DC
thumb_func_start ov41_022463FC
ov41_022463FC: ; 0x022463FC
push {r3, r4}
mov r0, #1
lsl r0, r0, #0x1a
ldr r2, [r0]
ldr r1, _02246428 ; =0xFFFF1FFF
add r3, r0, #0
and r1, r2
str r1, [r0]
add r3, #8
ldrh r4, [r3]
mov r2, #3
mov r1, #1
bic r4, r2
orr r1, r4
add r0, #0xa
strh r1, [r3]
ldrh r1, [r0]
bic r1, r2
strh r1, [r0]
pop {r3, r4}
bx lr
nop
_02246428: .word 0xFFFF1FFF
thumb_func_end ov41_022463FC
thumb_func_start ov41_0224642C
ov41_0224642C: ; 0x0224642C
push {r3, r4}
mov r0, #1
lsl r0, r0, #0x1a
ldr r2, [r0]
ldr r1, _02246488 ; =0xFFFF1FFF
add r3, r0, #0
and r2, r1
lsr r1, r0, #0xd
orr r1, r2
str r1, [r0]
add r3, #0x48
ldrh r4, [r3]
mov r2, #0x3f
mov r1, #0x1f
bic r4, r2
orr r1, r4
strh r1, [r3]
add r3, r0, #0
add r3, #0x4a
ldrh r4, [r3]
mov r1, #0x12
bic r4, r2
orr r1, r4
strh r1, [r3]
add r1, r0, #0
ldr r2, _0224648C ; =0x00000AF6
add r1, #0x40
strh r2, [r1]
add r1, r0, #0
ldr r2, _02246490 ; =0x0000128F
add r1, #0x44
strh r2, [r1]
add r2, r0, #0
add r2, #8
ldrh r3, [r2]
mov r1, #3
add r0, #0xa
bic r3, r1
strh r3, [r2]
ldrh r2, [r0]
bic r2, r1
mov r1, #1
orr r1, r2
strh r1, [r0]
pop {r3, r4}
bx lr
.balign 4, 0
_02246488: .word 0xFFFF1FFF
_0224648C: .word 0x00000AF6
_02246490: .word 0x0000128F
thumb_func_end ov41_0224642C
thumb_func_start ov41_02246494
ov41_02246494: ; 0x02246494
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x40]
bl BgConfig_HandleScheduledScrollAndTransferOps
ldr r0, [r4, #0x20]
bl sub_02009418
bl OamManager_ApplyAndResetBuffers
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_02246494
thumb_func_start ov41_022464AC
ov41_022464AC: ; 0x022464AC
push {r3, lr}
add r3, r1, #0
mov r1, #0x76
mov r2, #0x13
bl ov41_02246D54
pop {r3, pc}
.balign 4, 0
thumb_func_end ov41_022464AC
thumb_func_start ov41_022464BC
ov41_022464BC: ; 0x022464BC
push {r4, r5}
ldrh r5, [r0, #2]
ldrh r4, [r0]
lsl r5, r5, #3
cmp r1, #0
blt _022464D6
cmp r2, #0
blt _022464D6
cmp r1, r5
bge _022464D6
lsl r4, r4, #3
cmp r2, r4
blt _022464DC
_022464D6:
mov r0, #2
pop {r4, r5}
bx lr
_022464DC:
add r4, r2, #0
mul r4, r5
add r4, r1, r4
lsr r5, r4, #0x1f
lsl r2, r4, #0x1d
sub r2, r2, r5
mov r1, #0x1d
ror r2, r1
add r1, r5, r2
lsl r2, r1, #2
add r1, r3, #0
ldr r3, [r0, #0x14]
asr r0, r4, #2
lsr r0, r0, #0x1d
add r0, r4, r0
asr r0, r0, #3
lsl r0, r0, #2
ldr r3, [r3, r0]
mov r0, #0xf
lsl r0, r2
lsl r1, r2
and r0, r3
cmp r1, r0
bne _02246512
mov r0, #1
pop {r4, r5}
bx lr
_02246512:
mov r0, #0
pop {r4, r5}
bx lr
thumb_func_end ov41_022464BC
thumb_func_start ov41_02246518
ov41_02246518: ; 0x02246518
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r2, #0
bl ov41_022467E4
mov r2, #0xa
add r0, r5, #0
add r1, r4, #0
lsl r2, r2, #0xa
mov r3, #0x20
bl ov41_02246CC0
ldr r0, [r5, #0x20]
mov r1, #1
bl sub_020094B0
add r0, r5, #0
add r1, r4, #0
bl ov41_02246C90
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_02246518
thumb_func_start ov41_02246544
ov41_02246544: ; 0x02246544
push {r4, r5, lr}
sub sp, #0x1c
ldr r3, _02246590 ; =ov41_0224C018
add r5, r0, #0
str r1, [r5, #0x40]
add r4, r2, #0
ldmia r3!, {r0, r1}
add r2, sp, #0
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldr r0, [r3]
mov r1, #2
str r0, [r2]
ldr r0, [r5, #0x40]
bl FreeBgTilemapBuffer
ldr r0, [r5, #0x40]
mov r1, #2
add r2, sp, #0
mov r3, #0
bl InitBgFromTemplate
mov r0, #2
mov r1, #0x20
mov r2, #0
add r3, r4, #0
bl BG_ClearCharDataRange
ldr r0, [r5, #0x40]
mov r1, #2
bl BgClearTilemapBufferAndCommit
add sp, #0x1c
pop {r4, r5, pc}
nop
_02246590: .word ov41_0224C018
thumb_func_end ov41_02246544
thumb_func_start ov41_02246594
ov41_02246594: ; 0x02246594
push {r4, lr}
add r4, r0, #0
bl ov41_02246CB0
add r0, r4, #0
bl ov41_02246820
add r0, r4, #0
bl ov41_02246D2C
ldr r0, [r4, #4]
bl FreeToHeap
mov r0, #0
str r0, [r4, #4]
ldr r0, [r4, #0x10]
bl FreeToHeap
mov r0, #0
str r0, [r4, #0x10]
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_02246594
thumb_func_start ov41_022465C0
ov41_022465C0: ; 0x022465C0
ldr r3, _022465C8 ; =FreeBgTilemapBuffer
ldr r0, [r0, #0x40]
mov r1, #2
bx r3
.balign 4, 0
_022465C8: .word FreeBgTilemapBuffer
thumb_func_end ov41_022465C0
thumb_func_start ov41_022465CC
ov41_022465CC: ; 0x022465CC
ldr r3, _022465D4 ; =sub_02009418
ldr r0, [r0, #0x20]
bx r3
nop
_022465D4: .word sub_02009418
thumb_func_end ov41_022465CC
thumb_func_start ov41_022465D8
ov41_022465D8: ; 0x022465D8
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r4, r1, #0
ldr r0, _0224665C ; =0x04000454
str r3, [sp]
mov r1, #0
str r1, [r0]
sub r0, #0x10
add r6, r2, #0
ldr r7, [sp, #0x18]
str r1, [r0]
bl NNS_G2dSetupSoftwareSpriteCamera
ldr r1, _02246660 ; =0x04000470
lsl r0, r4, #0xc
str r0, [r1]
lsl r0, r6, #0xc
str r0, [r1]
mov r0, #0
str r0, [r1]
ldr r0, [sp]
ldr r1, _02246664 ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r0, r2, #1
add r2, r2, #1
lsl r2, r2, #1
ldrsh r0, [r1, r0]
ldrsh r1, [r1, r2]
bl G3_RotZ
ldr r2, [r7, #8]
ldr r1, [r7, #4]
ldr r3, [r7]
ldr r0, _02246668 ; =0x0400046C
str r3, [r0]
str r1, [r0]
neg r1, r4
str r2, [r0]
lsl r1, r1, #0xc
str r1, [r0, #4]
neg r1, r6
lsl r1, r1, #0xc
str r1, [r0, #4]
mov r1, #0
str r1, [r0, #4]
sub r0, #0x28
str r1, [r0]
ldr r0, [r5, #0x1c]
cmp r0, #0
beq _02246644
add r0, r5, #0
bl ov41_02246830
_02246644:
ldr r0, [r5, #0x2c]
cmp r0, #0
beq _02246650
ldr r0, [r5, #0x20]
bl sub_02008120
_02246650:
ldr r0, _0224666C ; =0x04000448
mov r1, #1
str r1, [r0]
str r1, [r0]
pop {r3, r4, r5, r6, r7, pc}
nop
_0224665C: .word 0x04000454
_02246660: .word 0x04000470
_02246664: .word FX_SinCosTable_
_02246668: .word 0x0400046C
_0224666C: .word 0x04000448
thumb_func_end ov41_022465D8
thumb_func_start ov41_02246670
ov41_02246670: ; 0x02246670
push {r4, lr}
add r4, r0, #0
mov r0, #0x1a
mov r1, #0xe
bl NARC_ctor
mov r1, #6
lsl r1, r1, #6
str r0, [r4, r1]
add r0, r4, #0
bl ov41_02246A94
mov r0, #0xe
bl BgConfig_Alloc
str r0, [r4, #0x40]
add r0, r4, #0
bl ov41_022468FC
pop {r4, pc}
thumb_func_end ov41_02246670
thumb_func_start ov41_02246698
ov41_02246698: ; 0x02246698
push {r4, lr}
add r4, r0, #0
bl ov41_02246A20
ldr r0, [r4, #0x40]
bl FreeToHeap
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
bl NARC_dtor
add r0, r4, #0
bl ov41_02246B34
pop {r4, pc}
thumb_func_end ov41_02246698
thumb_func_start ov41_022466B8
ov41_022466B8: ; 0x022466B8
push {r3, lr}
ldr r0, [r0, #0x40]
bl BgConfig_HandleScheduledScrollAndTransferOps
bl OamManager_ApplyAndResetBuffers
pop {r3, pc}
.balign 4, 0
thumb_func_end ov41_022466B8
thumb_func_start ov41_022466C8
ov41_022466C8: ; 0x022466C8
ldr r3, _022466CC ; =ov41_02246B5C
bx r3
.balign 4, 0
_022466CC: .word ov41_02246B5C
thumb_func_end ov41_022466C8
thumb_func_start ov41_022466D0
ov41_022466D0: ; 0x022466D0
push {r4, lr}
sub sp, #0x28
ldr r4, _022466EC ; =ov41_0224C06C
add r3, sp, #0
mov r2, #5
_022466DA:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _022466DA
add r0, sp, #0
bl GX_SetBanks
add sp, #0x28
pop {r4, pc}
.balign 4, 0
_022466EC: .word ov41_0224C06C
thumb_func_end ov41_022466D0
thumb_func_start ov41_022466F0
ov41_022466F0: ; 0x022466F0
push {r3, lr}
bl NNS_G3dInit
bl G3X_InitMtxStack
mov r0, #1
add r1, r0, #0
bl GX_EngineAToggleLayers
ldr r0, _02246764 ; =0x04000008
mov r1, #3
ldrh r2, [r0]
bic r2, r1
mov r1, #1
orr r1, r2
strh r1, [r0]
add r0, #0x58
ldrh r1, [r0]
ldr r2, _02246768 ; =0xFFFFCFFD
and r1, r2
strh r1, [r0]
ldrh r3, [r0]
add r1, r2, #2
and r3, r1
mov r1, #0x10
orr r1, r3
strh r1, [r0]
ldrh r3, [r0]
ldr r1, _0224676C ; =0x0000CFFB
and r1, r3
strh r1, [r0]
add r1, r2, #2
ldrh r3, [r0]
lsr r2, r2, #0x11
and r3, r1
mov r1, #8
orr r1, r3
strh r1, [r0]
mov r0, #0
add r1, r0, #0
mov r3, #0x3f
str r0, [sp]
bl G3X_SetClearColor
ldr r2, _02246770 ; =0x04000540
mov r0, #2
ldr r1, _02246774 ; =0xBFFF0000
str r0, [r2]
str r1, [r2, #0x40]
mov r1, #1
bl GF_3DVramMan_InitFrameTexVramManager
mov r0, #1
lsl r0, r0, #0xe
mov r1, #1
bl GF_3DVramMan_InitFramePlttVramManager
pop {r3, pc}
.balign 4, 0
_02246764: .word 0x04000008
_02246768: .word 0xFFFFCFFD
_0224676C: .word 0x0000CFFB
_02246770: .word 0x04000540
_02246774: .word 0xBFFF0000
thumb_func_end ov41_022466F0
thumb_func_start ov41_02246778
ov41_02246778: ; 0x02246778
push {r4, lr}
sub sp, #0x10
ldr r4, _022467C0 ; =_0224BF94
add r3, sp, #0
add r2, r3, #0
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl SetBothScreensModesAndDisable
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
ldr r0, _022467C4 ; =0xFFCFFFEF
and r1, r0
mov r0, #0x10
orr r0, r1
str r0, [r2]
bl NNS_G2dInitOamManagerModule
bl GX_DisableEngineALayers
bl GX_DisableEngineBLayers
mov r0, #0x1f
mov r1, #1
bl GX_EngineAToggleLayers
mov r0, #0x13
mov r1, #1
bl GX_EngineBToggleLayers
add sp, #0x10
pop {r4, pc}
.balign 4, 0
_022467C0: .word _0224BF94
_022467C4: .word 0xFFCFFFEF
thumb_func_end ov41_02246778
thumb_func_start ov41_022467C8
ov41_022467C8: ; 0x022467C8
push {r3, lr}
bl NNS_GfdResetFrmTexVramState
bl NNS_GfdResetFrmPlttVramState
pop {r3, pc}
thumb_func_end ov41_022467C8
thumb_func_start ov41_022467D4
ov41_022467D4: ; 0x022467D4
push {r3, lr}
bl GX_DisableEngineALayers
bl GX_DisableEngineBLayers
bl NNS_G2dInitOamManagerModule
pop {r3, pc}
thumb_func_end ov41_022467D4
thumb_func_start ov41_022467E4
ov41_022467E4: ; 0x022467E4
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
add r0, r4, #0
bl sub_02015DDC
str r0, [r5]
mov r1, #0x76
ldr r0, [r4, #0xc]
lsl r1, r1, #2
bl AllocFromHeap
str r0, [r5, #4]
mov r0, #0x76
str r0, [r5, #8]
mov r0, #0
str r0, [r5, #0xc]
ldr r0, [r4, #0xc]
mov r1, #0x4c
bl AllocFromHeap
str r0, [r5, #0x10]
mov r0, #0x13
str r0, [r5, #0x14]
mov r0, #0
str r0, [r5, #0x18]
mov r0, #1
str r0, [r5, #0x1c]
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_022467E4
thumb_func_start ov41_02246820
ov41_02246820: ; 0x02246820
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl sub_02015E20
mov r0, #0
str r0, [r4]
pop {r4, pc}
thumb_func_end ov41_02246820
thumb_func_start ov41_02246830
ov41_02246830: ; 0x02246830
ldr r3, _02246838 ; =sub_02015E64
ldr r0, [r0]
bx r3
nop
_02246838: .word sub_02015E64
thumb_func_end ov41_02246830
thumb_func_start ov41_0224683C
ov41_0224683C: ; 0x0224683C
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
mov r0, #0
str r0, [sp, #4]
add r0, r2, #0
add r4, r1, #0
str r2, [sp]
cmp r0, #0
ble _02246898
add r7, r5, #0
add r6, r4, #0
add r7, #0xc
_02246856:
ldr r1, [r5, #0xc]
ldr r0, [r5, #8]
cmp r1, r0
blt _02246862
bl GF_AssertFail
_02246862:
ldr r0, [r4, #4]
cmp r0, #0
beq _02246878
add r0, r6, #0
bl sub_02015EA0
ldr r2, [r5, #0xc]
ldr r1, [r5, #4]
lsl r2, r2, #2
str r0, [r1, r2]
b _02246882
_02246878:
ldr r1, [r5, #0xc]
ldr r0, [r5, #4]
lsl r2, r1, #2
mov r1, #0
str r1, [r0, r2]
_02246882:
ldr r0, [r7]
add r4, #8
add r0, r0, #1
str r0, [r7]
ldr r0, [sp, #4]
add r6, #8
add r1, r0, #1
ldr r0, [sp]
str r1, [sp, #4]
cmp r1, r0
blt _02246856
_02246898:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov41_0224683C
thumb_func_start ov41_0224689C
ov41_0224689C: ; 0x0224689C
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
mov r0, #0
str r0, [sp, #4]
add r0, r2, #0
add r4, r1, #0
str r2, [sp]
cmp r0, #0
ble _022468F8
add r7, r5, #0
add r6, r4, #0
add r7, #0x18
_022468B6:
ldr r1, [r5, #0x18]
ldr r0, [r5, #0x14]
cmp r1, r0
blt _022468C2
bl GF_AssertFail
_022468C2:
ldr r0, [r4, #4]
cmp r0, #0
beq _022468D8
add r0, r6, #0
bl sub_02015F1C
ldr r2, [r5, #0x18]
ldr r1, [r5, #0x10]
lsl r2, r2, #2
str r0, [r1, r2]
b _022468E2
_022468D8:
ldr r1, [r5, #0x18]
ldr r0, [r5, #0x10]
lsl r2, r1, #2
mov r1, #0
str r1, [r0, r2]
_022468E2:
ldr r0, [r7]
add r4, #0xc
add r0, r0, #1
str r0, [r7]
ldr r0, [sp, #4]
add r6, #0xc
add r1, r0, #1
ldr r0, [sp]
str r1, [sp, #4]
cmp r1, r0
blt _022468B6
_022468F8:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov41_0224689C
thumb_func_start ov41_022468FC
ov41_022468FC: ; 0x022468FC
push {r4, r5, lr}
sub sp, #0x8c
ldr r5, _02246A0C ; =ov41_0224BFE0
add r4, r0, #0
ldmia r5!, {r0, r1}
add r3, sp, #0x70
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #1
str r0, [r3]
ldr r0, [r4, #0x40]
mov r3, #0
bl InitBgFromTemplate
mov r0, #1
mov r1, #0x20
mov r2, #0
mov r3, #0xe
bl BG_ClearCharDataRange
ldr r0, [r4, #0x40]
mov r1, #1
bl BgClearTilemapBufferAndCommit
ldr r5, _02246A10 ; =ov41_0224BFFC
add r3, sp, #0x54
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #2
str r0, [r3]
ldr r0, [r4, #0x40]
mov r3, #0
bl InitBgFromTemplate
mov r0, #2
mov r1, #0x20
mov r2, #0
mov r3, #0xe
bl BG_ClearCharDataRange
ldr r0, [r4, #0x40]
mov r1, #2
bl BgClearTilemapBufferAndCommit
ldr r5, _02246A14 ; =ov41_0224C034
add r3, sp, #0x38
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #3
str r0, [r3]
ldr r0, [r4, #0x40]
mov r3, #0
bl InitBgFromTemplate
mov r0, #3
mov r1, #0x20
mov r2, #0
mov r3, #0xe
bl BG_ClearCharDataRange
ldr r0, [r4, #0x40]
mov r1, #3
bl BgClearTilemapBufferAndCommit
ldr r5, _02246A18 ; =ov41_0224BFC4
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #4
str r0, [r3]
ldr r0, [r4, #0x40]
mov r3, #0
bl InitBgFromTemplate
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0xe
bl BG_ClearCharDataRange
ldr r0, [r4, #0x40]
mov r1, #4
bl BgClearTilemapBufferAndCommit
ldr r5, _02246A1C ; =ov41_0224C050
add r3, sp, #0
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #5
str r0, [r3]
ldr r0, [r4, #0x40]
mov r3, #0
bl InitBgFromTemplate
mov r0, #5
mov r1, #0x20
mov r2, #0
mov r3, #0xe
bl BG_ClearCharDataRange
ldr r0, [r4, #0x40]
mov r1, #5
bl BgClearTilemapBufferAndCommit
add sp, #0x8c
pop {r4, r5, pc}
nop
_02246A0C: .word ov41_0224BFE0
_02246A10: .word ov41_0224BFFC
_02246A14: .word ov41_0224C034
_02246A18: .word ov41_0224BFC4
_02246A1C: .word ov41_0224C050
thumb_func_end ov41_022468FC
thumb_func_start ov41_02246A20
ov41_02246A20: ; 0x02246A20
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x40]
mov r1, #1
bl FreeBgTilemapBuffer
ldr r0, [r4, #0x40]
mov r1, #2
bl FreeBgTilemapBuffer
ldr r0, [r4, #0x40]
mov r1, #3
bl FreeBgTilemapBuffer
ldr r0, [r4, #0x40]
mov r1, #4
bl FreeBgTilemapBuffer
ldr r0, [r4, #0x40]
mov r1, #5
bl FreeBgTilemapBuffer
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_02246A20
thumb_func_start ov41_02246A50
ov41_02246A50: ; 0x02246A50
push {r4, lr}
add r4, r0, #0
mov r0, #0x77
mov r1, #0xe
bl Create2DGfxResMan
mov r1, #0x77
str r0, [r4, #0x34]
mov r0, #0xe
lsl r1, r1, #2
bl AllocFromHeap
mov r2, #0x77
mov r1, #0
lsl r2, r2, #2
str r0, [r4, #0x38]
bl memset
mov r0, #0x77
str r0, [r4, #0x3c]
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_02246A50
thumb_func_start ov41_02246A7C
ov41_02246A7C: ; 0x02246A7C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x38]
bl FreeToHeap
ldr r0, [r4, #0x34]
bl Destroy2DGfxResMan
mov r0, #0
str r0, [r4, #0x3c]
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_02246A7C
thumb_func_start ov41_02246A94
ov41_02246A94: ; 0x02246A94
push {r4, r5, lr}
sub sp, #0x24
ldr r5, _02246B30 ; =ov41_0224BFA4
add r3, sp, #0x14
add r4, r0, #0
add r2, r3, #0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
mov r1, #0x10
add r0, r2, #0
add r2, r1, #0
bl sub_020215C0
mov r0, #5
mov r1, #0xe
bl sub_02022588
bl sub_020216C8
bl sub_02022638
bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7c
str r1, [sp, #4]
str r0, [sp, #8]
mov r3, #0x1f
str r3, [sp, #0xc]
mov r2, #0xe
str r2, [sp, #0x10]
add r2, r0, #0
bl OamManager_Create
add r1, r4, #0
mov r0, #0x30
add r1, #0x58
mov r2, #0xe
bl G2dRenderer_Init
str r0, [r4, #0x44]
add r0, r4, #0
mov r2, #2
add r0, #0x58
mov r1, #0
lsl r2, r2, #0x14
bl G2dRenderer_SetSubSurfaceCoords
mov r0, #8
mov r1, #0
mov r2, #0xe
bl Create2DGfxResObjMan
str r0, [r4, #0x48]
mov r0, #5
mov r1, #1
mov r2, #0xe
bl Create2DGfxResObjMan
str r0, [r4, #0x4c]
mov r0, #0x30
mov r1, #2
mov r2, #0xe
bl Create2DGfxResObjMan
str r0, [r4, #0x50]
mov r0, #0x30
mov r1, #3
mov r2, #0xe
bl Create2DGfxResObjMan
str r0, [r4, #0x54]
add sp, #0x24
pop {r4, r5, pc}
nop
_02246B30: .word ov41_0224BFA4
thumb_func_end ov41_02246A94
thumb_func_start ov41_02246B34
ov41_02246B34: ; 0x02246B34
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #0x44]
bl sub_02024504
mov r4, #0
_02246B40:
ldr r0, [r5, #0x48]
bl Destroy2DGfxResObjMan
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
blt _02246B40
bl sub_0202168C
bl sub_02022608
bl OamManager_Free
pop {r3, r4, r5, pc}
thumb_func_end ov41_02246B34
thumb_func_start ov41_02246B5C
ov41_02246B5C: ; 0x02246B5C
ldr r3, _02246B64 ; =sub_0202457C
ldr r0, [r0, #0x44]
bx r3
nop
_02246B64: .word sub_0202457C
thumb_func_end ov41_02246B5C
thumb_func_start ov41_02246B68
ov41_02246B68: ; 0x02246B68
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
mov r4, #0
add r6, r0, #0
add r7, r1, #0
add r5, r4, #0
_02246B74:
mov r0, #1
str r0, [sp]
mov r0, #6
lsl r0, r0, #6
ldr r0, [r6, r0]
add r1, r4, #1
mov r2, #0
mov r3, #0xe
bl GfGfxLoader_LoadFromOpenNarc
str r0, [sp, #4]
cmp r0, #0
bne _02246B92
bl GF_AssertFail
_02246B92:
ldr r1, [sp, #4]
add r0, r6, #0
add r2, r4, #0
bl ov41_022463DC
ldr r1, [r7]
add r4, r4, #1
add r1, r1, r5
str r0, [r1, #4]
ldr r1, [r6]
ldr r0, [r7]
str r1, [r0, r5]
add r5, #8
cmp r4, #0x64
blt _02246B74
mov r0, #1
str r0, [sp]
mov r0, #6
lsl r0, r0, #6
mov r1, #0
ldr r0, [r6, r0]
add r2, r1, #0
mov r3, #0xe
bl GfGfxLoader_LoadFromOpenNarc
add r4, r0, #0
ldr r0, [r7, #0x14]
add r1, r4, #0
mov r2, #0
bl sub_020255C4
ldr r1, [r7, #8]
add r0, r4, #0
add r1, r1, #4
bl NNS_G2dGetUnpackedPaletteData
ldr r1, [r6]
ldr r0, [r7, #8]
str r1, [r0]
ldr r0, [r7, #8]
mov r1, #3
str r1, [r0, #8]
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_02246B68
thumb_func_start ov41_02246BEC
ov41_02246BEC: ; 0x02246BEC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
mov r0, #0x87
add r4, r1, #0
mov r6, #0
str r0, [sp, #8]
_02246BFA:
mov r0, #1
str r0, [sp]
mov r0, #6
lsl r0, r0, #6
add r1, r6, #0
ldr r0, [r5, r0]
add r1, #0xce
mov r2, #0
mov r3, #0xe
bl GfGfxLoader_LoadFromOpenNarc
add r2, r6, #0
add r1, r0, #0
add r2, #0x64
add r0, r5, #0
lsl r7, r2, #3
bl ov41_022463DC
ldr r1, [r4]
mov r2, #0
add r1, r1, r7
str r0, [r1, #4]
ldr r1, [r5]
ldr r0, [r4]
mov r3, #0xe
str r1, [r0, r7]
add r0, r6, #1
str r0, [sp, #4]
mov r0, #1
str r0, [sp]
mov r0, #6
lsl r0, r0, #6
ldr r0, [r5, r0]
ldr r1, [sp, #8]
bl GfGfxLoader_LoadFromOpenNarc
str r0, [sp, #0xc]
ldr r0, [r4, #0x14]
ldr r1, [sp, #0xc]
ldr r2, [sp, #4]
bl sub_020255C4
ldr r1, [sp, #4]
mov r0, #0xc
add r7, r1, #0
mul r7, r0
ldr r1, [r4, #8]
ldr r0, [sp, #0xc]
add r1, r1, r7
add r1, r1, #4
bl NNS_G2dGetUnpackedPaletteData
ldr r0, [r4, #8]
add r0, r0, r7
ldr r0, [r0, #4]
cmp r0, #0
bne _02246C70
bl GF_AssertFail
_02246C70:
ldr r1, [r5]
ldr r0, [r4, #8]
add r6, r6, #1
str r1, [r0, r7]
ldr r0, [r4, #8]
add r1, r0, r7
mov r0, #1
str r0, [r1, #8]
ldr r0, [sp, #8]
add r0, r0, #4
str r0, [sp, #8]
cmp r6, #0x12
blt _02246BFA
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_02246BEC
thumb_func_start ov41_02246C90
ov41_02246C90: ; 0x02246C90
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
mov r2, #0
mov r0, #6
add r3, r1, #0
str r2, [sp]
lsl r0, r0, #6
ldr r0, [r4, r0]
mov r1, #0xeb
bl GfGfxLoader_LoadFromOpenNarc
str r0, [r4, #0x30]
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov41_02246C90
thumb_func_start ov41_02246CB0
ov41_02246CB0: ; 0x02246CB0
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x30]
bl FreeToHeap
mov r0, #0
str r0, [r4, #0x30]
pop {r4, pc}
thumb_func_end ov41_02246CB0
thumb_func_start ov41_02246CC0
ov41_02246CC0: ; 0x02246CC0
push {r4, r5, r6, lr}
add r5, r0, #0
add r0, r1, #0
add r4, r2, #0
add r6, r3, #0
bl sub_02007FD4
str r0, [r5, #0x20]
ldr r3, _02246D1C ; =NNS_GfdDefaultFuncAllocTexVram
mov r1, #0
ldr r3, [r3]
add r0, r4, #0
add r2, r1, #0
blx r3
str r0, [r5, #0x24]
ldr r3, _02246D20 ; =NNS_GfdDefaultFuncAllocPlttVram
add r0, r6, #0
ldr r3, [r3]
mov r1, #0
mov r2, #1
blx r3
str r0, [r5, #0x28]
ldr r3, [r5, #0x24]
ldr r2, _02246D24 ; =0x7FFF0000
lsl r1, r3, #0x10
and r2, r3
lsr r2, r2, #0x10
ldr r0, [r5, #0x20]
lsr r1, r1, #0xd
lsl r2, r2, #4
bl sub_020093FC
ldr r3, [r5, #0x28]
ldr r2, _02246D28 ; =0xFFFF0000
lsl r1, r3, #0x10
and r2, r3
lsr r2, r2, #0x10
ldr r0, [r5, #0x20]
lsr r1, r1, #0xd
lsl r2, r2, #3
bl sub_02009408
mov r0, #1
str r0, [r5, #0x2c]
pop {r4, r5, r6, pc}
nop
_02246D1C: .word NNS_GfdDefaultFuncAllocTexVram
_02246D20: .word NNS_GfdDefaultFuncAllocPlttVram
_02246D24: .word 0x7FFF0000
_02246D28: .word 0xFFFF0000
thumb_func_end ov41_02246CC0
thumb_func_start ov41_02246D2C
ov41_02246D2C: ; 0x02246D2C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x20]
bl sub_02008524
ldr r1, _02246D4C ; =NNS_GfdDefaultFuncFreeTexVram
ldr r0, [r4, #0x24]
ldr r1, [r1]
blx r1
ldr r1, _02246D50 ; =NNS_GfdDefaultFuncFreePlttVram
ldr r0, [r4, #0x28]
ldr r1, [r1]
blx r1
mov r0, #0
str r0, [r4, #0x2c]
pop {r4, pc}
.balign 4, 0
_02246D4C: .word NNS_GfdDefaultFuncFreeTexVram
_02246D50: .word NNS_GfdDefaultFuncFreePlttVram
thumb_func_end ov41_02246D2C
thumb_func_start ov41_02246D54
ov41_02246D54: ; 0x02246D54
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r5, r0, #0
lsl r0, r4, #3
str r0, [sp]
add r7, r3, #0
ldr r1, [sp]
add r0, r7, #0
add r6, r2, #0
bl AllocFromHeap
ldr r2, [sp]
mov r1, #0
str r0, [r5]
bl memset
add r0, r4, #0
add r1, r7, #0
bl Create2DGfxResMan
str r0, [r5, #0x10]
str r4, [r5, #4]
mov r0, #0xc
add r4, r6, #0
mul r4, r0
add r0, r7, #0
add r1, r4, #0
bl AllocFromHeap
mov r1, #0
add r2, r4, #0
str r0, [r5, #8]
bl memset
add r0, r6, #0
add r1, r7, #0
bl Create2DGfxResMan
str r0, [r5, #0x14]
str r6, [r5, #0xc]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_02246D54
thumb_func_start ov41_02246DA8
ov41_02246DA8: ; 0x02246DA8
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x10]
cmp r0, #0
beq _02246DBA
bl Destroy2DGfxResMan
mov r0, #0
str r0, [r4, #0x10]
_02246DBA:
ldr r0, [r4, #0x14]
cmp r0, #0
beq _02246DC8
bl Destroy2DGfxResMan
mov r0, #0
str r0, [r4, #0x14]
_02246DC8:
ldr r0, [r4]
bl FreeToHeap
mov r0, #0
str r0, [r4]
ldr r0, [r4, #8]
bl FreeToHeap
mov r0, #0
str r0, [r4, #8]
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_02246DA8
thumb_func_start ov41_02246DE0
ov41_02246DE0: ; 0x02246DE0
push {r3, r4, r5, lr}
sub sp, #8
mov r2, #2
add r5, r0, #0
mov r0, #3
mov r1, #0xd
lsl r2, r2, #0x10
bl CreateHeap
mov r2, #1
mov r0, #3
mov r1, #0xe
lsl r2, r2, #0x12
bl CreateHeap
mov r1, #0x6f
add r0, r5, #0
lsl r1, r1, #4
mov r2, #0xd
bl OverlayManager_CreateAndGetData
mov r2, #0x6f
mov r1, #0
lsl r2, r2, #4
add r4, r0, #0
bl memset
ldr r0, _02246EF0 ; =ov41_02247478
add r1, r4, #0
bl Main_SetVBlankIntrCB
bl HBlankInterruptDisable
add r0, r5, #0
bl OverlayManager_GetArgs
add r5, r0, #0
ldr r0, [r5, #0xc]
ldr r1, _02246EF4 ; =0x000006DC
str r0, [r4, r1]
ldr r0, [r5, #0x20]
cmp r0, #0
beq _02246E3E
bl sub_020183F0
ldr r1, _02246EF8 ; =0x000006EC
b _02246E42
_02246E3E:
mov r0, #0
add r1, #0x10
_02246E42:
str r0, [r4, r1]
bl sub_020210BC
mov r0, #4
bl sub_02021148
mov r1, #0x61
lsl r1, r1, #2
ldr r0, [r5, #8]
add r1, r4, r1
bl ov41_02248E84
add r0, r4, #0
bl ov41_02247240
mov r1, #0xd7
lsl r1, r1, #2
add r0, r4, r1
sub r1, #0x8d
mov r2, #0xd
bl ov41_022499B4
mov r0, #0xaf
lsl r0, r0, #2
mov r1, #0xd
bl ov41_02245EA0
mov r1, #0xd9
lsl r1, r1, #2
str r0, [r4, r1]
ldr r1, [r5]
add r0, r4, #0
mov r2, #0xa
mov r3, #0
bl ov41_02247288
add r0, r4, #0
bl ov41_02247334
add r0, r4, #0
mov r1, #0
bl ov41_02247480
add r0, r4, #0
bl ov41_022474D4
ldr r1, [r5, #0xc]
add r0, r4, #0
bl ov41_0224765C
ldr r0, _02246EFC ; =0x00000568
mov r2, #0xfd
add r1, r4, r0
str r1, [sp]
mov r1, #1
sub r0, #0xd0
lsl r2, r2, #2
str r1, [sp, #4]
add r1, r4, r2
sub r2, #0x8c
add r0, r4, r0
add r2, r4, r2
add r3, r4, #0
bl ov41_02248F18
mov r0, #0xd
bl sub_0201660C
ldr r1, _02246F00 ; =0x000006B8
str r0, [r4, r1]
mov r0, #0xd
mov r1, #1
bl AllocWindows
ldr r2, _02246F04 ; =0x000006BC
mov r1, #0
str r0, [r4, r2]
sub r2, #0xc
str r1, [r4, r2]
mov r0, #0x35
add r2, r1, #0
bl sub_02004EC4
mov r0, #1
add sp, #8
pop {r3, r4, r5, pc}
nop
_02246EF0: .word ov41_02247478
_02246EF4: .word 0x000006DC
_02246EF8: .word 0x000006EC
_02246EFC: .word 0x00000568
_02246F00: .word 0x000006B8
_02246F04: .word 0x000006BC
thumb_func_end ov41_02246DE0
thumb_func_start ov41_02246F08
ov41_02246F08: ; 0x02246F08
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r7, r0, #0
add r5, r1, #0
bl OverlayManager_GetData
add r4, r0, #0
add r0, r7, #0
mov r6, #0
bl OverlayManager_GetArgs
ldr r1, [r5]
cmp r1, #0xc
bhi _02246FD6
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_02246F30: ; jump table
.short _02246F4A - _02246F30 - 2 ; case 0
.short _02246F4A - _02246F30 - 2 ; case 1
.short _02246F66 - _02246F30 - 2 ; case 2
.short _02246F76 - _02246F30 - 2 ; case 3
.short _02246FA4 - _02246F30 - 2 ; case 4
.short _02246FC6 - _02246F30 - 2 ; case 5
.short _02246FF4 - _02246F30 - 2 ; case 6
.short _0224702A - _02246F30 - 2 ; case 7
.short _02247050 - _02246F30 - 2 ; case 8
.short _02247094 - _02246F30 - 2 ; case 9
.short _022470D0 - _02246F30 - 2 ; case 10
.short _022470EE - _02246F30 - 2 ; case 11
.short _0224710C - _02246F30 - 2 ; case 12
_02246F4A:
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r1, #0xd
str r1, [sp, #8]
mov r1, #5
add r2, r1, #0
add r3, r6, #0
bl BeginNormalPaletteFade
mov r0, #2
str r0, [r5]
b _0224712A
_02246F66:
bl IsPaletteFadeFinished
cmp r0, #0
beq _02246FD6
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _0224712A
_02246F76:
ldr r0, [r0, #0x1c]
cmp r0, #1
bne _02246F9E
mov r0, #1
bl sub_02002B8C
ldr r0, _02247138 ; =0x00000568
mov r1, #0x1b
add r0, r4, r0
mov r2, #0xd7
mov r3, #0x2f
bl ov41_0224AC40
mov r1, #0x6e
lsl r1, r1, #4
str r0, [r4, r1]
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _0224712A
_02246F9E:
mov r0, #6
str r0, [r5]
b _0224712A
_02246FA4:
mov r0, #0x6e
lsl r0, r0, #4
ldr r0, [r4, r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bl TextPrinterCheckActive
cmp r0, #0
bne _02246FD6
ldr r0, _02247138 ; =0x00000568
add r0, r4, r0
bl ov41_0224AC80
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _0224712A
_02246FC6:
ldr r0, _0224713C ; =gSystem
ldr r1, [r0, #0x48]
mov r0, #3
and r1, r0
ldr r0, _02247140 ; =gSystem + 0x40
ldrh r0, [r0, #0x24]
orr r0, r1
bne _02246FD8
_02246FD6:
b _0224712A
_02246FD8:
ldr r0, _02247138 ; =0x00000568
mov r1, #0x1b
add r0, r4, r0
mov r2, #0xd7
mov r3, #0x30
bl ov41_0224AC08
add r0, r6, #0
bl sub_02002B8C
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _0224712A
_02246FF4:
mov r1, #0x6b
lsl r1, r1, #4
ldr r0, [r4, r1]
cmp r0, #3
bne _0224700C
add r1, r1, #4
add r0, r4, #0
add r1, r4, r1
bl ov41_022476B8
mov r0, #7
str r0, [r5]
_0224700C:
ldr r0, _02247144 ; =0x00000498
add r0, r4, r0
bl ov41_02248E44
add r0, r4, #0
bl ov41_02247D44
ldr r0, _02247138 ; =0x00000568
add r0, r4, r0
bl ov41_0224ABF0
add r0, r4, #0
bl ov41_02247578
b _0224712A
_0224702A:
ldr r0, _02247148 ; =0x000006B4
ldr r1, [r4, r0]
cmp r1, #0
beq _0224712A
add r1, r6, #0
str r1, [r4, r0]
mov r1, #8
str r1, [r5]
mov r1, #4
sub r0, r0, #4
str r1, [r4, r0]
ldr r1, _0224714C ; =0x0000047C
mov r2, #0xe
add r0, r4, r1
sub r1, #0x88
add r1, r4, r1
bl ov41_0224B4E8
b _0224712A
_02247050:
mov r1, #0x6b
lsl r1, r1, #4
ldr r0, [r4, r1]
cmp r0, #9
bne _0224706A
add r1, r1, #4
add r0, r4, #0
add r1, r4, r1
bl ov41_02247828
mov r0, #0xa
str r0, [r5]
b _0224712A
_0224706A:
cmp r0, #8
bne _0224707E
mov r0, #9
str r0, [r5]
mov r0, #5
str r0, [r4, r1]
add r0, r4, #0
bl ov41_02247D64
b _0224712A
_0224707E:
add r0, r4, #0
bl ov41_02247B7C
mov r1, #0x6b
lsl r1, r1, #4
str r0, [r4, r1]
ldr r0, _0224714C ; =0x0000047C
add r0, r4, r0
bl ov41_0224B50C
b _0224712A
_02247094:
mov r0, #0x6b
lsl r0, r0, #4
ldr r1, [r4, r0]
cmp r1, #6
bne _022470AA
mov r1, #1
add r0, #0x10
str r1, [r4, r0]
mov r0, #0xb
str r0, [r5]
b _0224712A
_022470AA:
cmp r1, #7
bne _022470BA
add r1, r6, #0
add r0, #0x10
str r1, [r4, r0]
mov r0, #0xb
str r0, [r5]
b _0224712A
_022470BA:
add r0, r4, #0
bl ov41_02247DF8
mov r1, #0x6b
lsl r1, r1, #4
str r0, [r4, r1]
ldr r0, _0224714C ; =0x0000047C
add r0, r4, r0
bl ov41_0224B50C
b _0224712A
_022470D0:
ldr r0, _02247148 ; =0x000006B4
ldr r1, [r4, r0]
cmp r1, #0
beq _0224712A
add r2, r6, #0
str r2, [r4, r0]
mov r1, #6
str r1, [r5]
sub r0, r0, #4
str r2, [r4, r0]
ldr r0, _0224714C ; =0x0000047C
add r0, r4, r0
bl ov41_0224B518
b _0224712A
_022470EE:
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r1, #0xd
str r1, [sp, #8]
add r1, r6, #0
add r2, r1, #0
add r3, r1, #0
bl BeginNormalPaletteFade
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _0224712A
_0224710C:
bl IsPaletteFadeFinished
cmp r0, #0
beq _0224712A
add r0, r6, #0
str r0, [r5]
mov r0, #0x6b
mov r1, #0xa
lsl r0, r0, #4
str r1, [r4, r0]
ldr r0, _0224714C ; =0x0000047C
mov r6, #1
add r0, r4, r0
bl ov41_0224B518
_0224712A:
add r0, r4, #0
bl ov41_0224726C
add r0, r6, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
_02247138: .word 0x00000568
_0224713C: .word gSystem
_02247140: .word gSystem + 0x40
_02247144: .word 0x00000498
_02247148: .word 0x000006B4
_0224714C: .word 0x0000047C
thumb_func_end ov41_02246F08
thumb_func_start ov41_02247150
ov41_02247150: ; 0x02247150
push {r4, r5, r6, lr}
add r6, r0, #0
bl OverlayManager_GetData
add r4, r0, #0
add r0, r6, #0
bl OverlayManager_GetArgs
add r5, r0, #0
mov r0, #0x1b
lsl r0, r0, #6
ldr r0, [r4, r0]
cmp r0, #1
bne _02247182
ldr r0, [r5, #0x10]
mov r1, #8
bl GameStats_AddSpecial
mov r1, #0xfd
lsl r1, r1, #2
ldr r0, [r5, #4]
ldr r2, [r5, #0x14]
add r1, r4, r1
bl ov41_022479A8
_02247182:
ldr r0, [r5, #0x18]
cmp r0, #0
beq _0224719C
mov r1, #0x1b
lsl r1, r1, #6
ldr r1, [r4, r1]
cmp r1, #1
bne _02247198
mov r1, #1
str r1, [r0]
b _0224719C
_02247198:
mov r1, #0
str r1, [r0]
_0224719C:
ldr r0, [r5, #0x20]
cmp r0, #0
beq _022471AA
ldr r1, _02247230 ; =0x000006EC
ldr r1, [r4, r1]
bl sub_02018410
_022471AA:
ldr r0, _02247234 ; =0x000006B8
ldr r0, [r4, r0]
bl sub_02016624
ldr r0, _02247238 ; =0x000006BC
mov r1, #1
ldr r0, [r4, r0]
bl WindowArray_dtor
add r0, r4, #0
bl ov41_022476A8
ldr r0, _0224723C ; =0x00000498
add r0, r4, r0
bl ov41_02248F6C
add r0, r4, #0
bl ov41_02247568
add r0, r4, #0
bl ov41_022474C4
add r0, r4, #0
bl ov41_02247310
add r0, r4, #0
bl ov41_022473F0
mov r0, #0xd9
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov41_02245ECC
mov r0, #0xd9
mov r1, #0
lsl r0, r0, #2
str r1, [r4, r0]
sub r0, #8
add r0, r4, r0
bl ov41_022499DC
add r0, r4, #0
bl ov41_02247274
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
bl HBlankInterruptDisable
bl sub_02021238
cmp r0, #1
beq _0224721A
bl GF_AssertFail
_0224721A:
add r0, r6, #0
bl OverlayManager_FreeData
mov r0, #0xd
bl DestroyHeap
mov r0, #0xe
bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
.balign 4, 0
_02247230: .word 0x000006EC
_02247234: .word 0x000006B8
_02247238: .word 0x000006BC
_0224723C: .word 0x00000498
thumb_func_end ov41_02247150
thumb_func_start ov41_02247240
ov41_02247240: ; 0x02247240
push {r4, lr}
sub sp, #0x18
add r4, r0, #0
bl ov41_02246130
add r0, r4, #0
bl ov41_02246170
add r0, r4, #0
add r1, sp, #0
bl ov41_022463B0
add r0, r4, #0
add r1, sp, #0
bl ov41_02246250
add r0, sp, #0
bl ov41_022463D4
add sp, #0x18
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_02247240
thumb_func_start ov41_0224726C
ov41_0224726C: ; 0x0224726C
ldr r3, _02247270 ; =ov41_0224621C
bx r3
.balign 4, 0
_02247270: .word ov41_0224621C
thumb_func_end ov41_0224726C
thumb_func_start ov41_02247274
ov41_02247274: ; 0x02247274
push {r4, lr}
add r4, r0, #0
bl ov41_0224626C
add r0, r4, #0
bl ov41_022461D0
bl ov41_02246150
pop {r4, pc}
thumb_func_end ov41_02247274
thumb_func_start ov41_02247288
ov41_02247288: ; 0x02247288
push {r3, r4, r5, r6, lr}
sub sp, #0x34
add r5, r0, #0
ldr r0, [r5]
add r4, r1, #0
str r0, [sp, #0x10]
ldr r0, [r5, #4]
mov r1, #0xd9
str r0, [sp, #0x14]
ldr r0, [r5, #0x10]
lsl r1, r1, #2
str r0, [sp, #0x18]
ldr r0, [r5, #0x30]
add r6, r3, #0
str r0, [sp, #0x1c]
ldr r0, [r5, #0x20]
str r0, [sp, #0x20]
ldr r0, [r5, #0x40]
str r2, [sp, #0x30]
str r0, [sp, #0x24]
ldr r0, [r5, r1]
str r0, [sp, #0x28]
add r0, r1, #0
sub r0, #8
add r0, r5, r0
add r1, #0x90
str r0, [sp, #0x2c]
add r0, r5, r1
add r1, sp, #0x10
bl ov41_02247F3C
cmp r6, #0
add r2, sp, #0
bne _022472DC
mov r0, #0xfd
lsl r0, r0, #2
add r0, r5, r0
add r1, r4, #0
mov r3, #0xe
bl ov41_02247FE0
b _022472EA
_022472DC:
mov r0, #0xfd
lsl r0, r0, #2
add r0, r5, r0
add r1, r4, #0
mov r3, #0xe
bl ov41_02247FFC
_022472EA:
add r0, r5, #0
add r1, sp, #0
bl ov41_022495C8
mov r0, #0xfd
lsl r0, r0, #2
add r0, r5, r0
bl ov41_02248158
mov r0, #0xfd
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
mov r2, #0xe
bl ov41_0224825C
add sp, #0x34
pop {r3, r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov41_02247288
thumb_func_start ov41_02247310
ov41_02247310: ; 0x02247310
push {r4, lr}
add r4, r0, #0
mov r0, #0xfd
lsl r0, r0, #2
add r0, r4, r0
bl ov41_022482A8
mov r0, #0xfd
lsl r0, r0, #2
add r0, r4, r0
bl ov41_022480E0
mov r0, #0xfd
lsl r0, r0, #2
add r0, r4, r0
bl ov41_02247F90
pop {r4, pc}
thumb_func_end ov41_02247310
thumb_func_start ov41_02247334
ov41_02247334: ; 0x02247334
push {r4, r5, r6, r7, lr}
sub sp, #0x2c
add r5, r0, #0
ldr r0, [r5]
str r0, [sp]
ldr r0, [r5, #4]
str r0, [sp, #4]
ldr r0, [r5, #0x10]
str r0, [sp, #8]
ldr r0, [r5, #0x30]
str r0, [sp, #0xc]
ldr r0, [r5, #0x40]
str r0, [sp, #0x10]
mov r0, #0x61
lsl r0, r0, #2
add r0, r5, r0
str r0, [sp, #0x28]
mov r0, #0xd9
lsl r0, r0, #2
ldr r1, [r5, r0]
str r1, [sp, #0x14]
add r1, r0, #0
sub r1, #8
add r1, r5, r1
str r1, [sp, #0x18]
mov r1, #0xe
str r1, [sp, #0x1c]
mov r1, #2
str r1, [sp, #0x20]
mov r1, #1
add r0, r0, #4
str r1, [sp, #0x24]
add r0, r5, r0
add r1, sp, #0
bl ov41_02248488
mov r0, #0xda
lsl r0, r0, #2
mov r1, #0
add r0, r5, r0
add r2, r1, #0
bl ov41_022487F8
mov r6, #0
_0224738C:
mov r0, #0x61
lsl r0, r0, #2
add r0, r5, r0
add r1, r6, #0
bl ov41_02248ED4
add r7, r0, #0
mov r4, #0
cmp r7, #0
ble _022473B4
_022473A0:
mov r0, #0xda
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
add r2, r6, #0
bl ov41_022485DC
add r4, r4, #1
cmp r4, r7
blt _022473A0
_022473B4:
add r6, r6, #1
cmp r6, #0x64
blt _0224738C
mov r7, #0xda
mov r6, #0x61
mov r4, #0
lsl r7, r7, #2
lsl r6, r6, #2
_022473C4:
add r0, r5, r6
add r1, r4, #0
bl ov41_02248EE8
add r2, r0, #0
cmp r2, #0x12
bge _022473DA
add r0, r5, r7
mov r1, #1
bl ov41_022485DC
_022473DA:
add r4, r4, #1
cmp r4, #0x12
blt _022473C4
mov r0, #0xda
lsl r0, r0, #2
add r0, r5, r0
bl ov41_02248724
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_02247334
thumb_func_start ov41_022473F0
ov41_022473F0: ; 0x022473F0
push {r4, lr}
add r4, r0, #0
mov r0, #0xda
lsl r0, r0, #2
add r0, r4, r0
bl ov41_02248940
mov r0, #0xda
lsl r0, r0, #2
add r0, r4, r0
bl ov41_022486F8
mov r0, #0xda
lsl r0, r0, #2
add r0, r4, r0
bl ov41_022484C0
pop {r4, pc}
thumb_func_end ov41_022473F0
thumb_func_start ov41_02247414
ov41_02247414: ; 0x02247414
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
ldr r0, _02247474 ; =0x04000008
mov r2, #3
ldrh r3, [r0]
mov r1, #1
bic r3, r2
orr r1, r3
strh r1, [r0]
ldrh r1, [r0, #2]
bic r1, r2
strh r1, [r0, #2]
ldrh r3, [r0, #4]
mov r1, #2
bic r3, r2
orr r1, r3
strh r1, [r0, #4]
ldrh r3, [r0, #6]
mov r1, #3
bic r3, r2
add r2, r3, #0
orr r2, r1
strh r2, [r0, #6]
add r3, r1, #0
ldr r0, [r4, #0x40]
add r2, r1, #0
sub r3, #0x13
bl BgSetPosTextAndCommit
mov r0, #0xda
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
bl ov41_0224888C
mov r1, #0
mov r0, #0xda
lsl r0, r0, #2
add r0, r4, r0
mov r2, #2
add r3, r1, #0
str r1, [sp]
bl ov41_022488D8
add sp, #4
pop {r3, r4, pc}
nop
_02247474: .word 0x04000008
thumb_func_end ov41_02247414
thumb_func_start ov41_02247478
ov41_02247478: ; 0x02247478
ldr r3, _0224747C ; =ov41_02246494
bx r3
.balign 4, 0
_0224747C: .word ov41_02246494
thumb_func_end ov41_02247478
thumb_func_start ov41_02247480
ov41_02247480: ; 0x02247480
push {r3, lr}
sub sp, #0x30
ldr r2, [r0, #0x40]
str r2, [sp]
mov r2, #0x1a
str r2, [sp, #4]
lsl r2, r1, #1
add r1, r2, #0
add r1, #0x79
str r1, [sp, #8]
mov r1, #0x85
str r1, [sp, #0xc]
mov r1, #1
add r2, #0x7a
str r2, [sp, #0x10]
mov r2, #0
str r1, [sp, #0x1c]
str r1, [sp, #0x20]
mov r1, #2
str r1, [sp, #0x24]
mov r1, #0xe
str r1, [sp, #0x2c]
ldr r1, _022474C0 ; =0x000004B4
str r2, [sp, #0x14]
add r0, r0, r1
add r1, sp, #0
str r2, [sp, #0x18]
str r2, [sp, #0x28]
bl ov41_02249C7C
add sp, #0x30
pop {r3, pc}
.balign 4, 0
_022474C0: .word 0x000004B4
thumb_func_end ov41_02247480
thumb_func_start ov41_022474C4
ov41_022474C4: ; 0x022474C4
ldr r1, _022474CC ; =0x000004B4
ldr r3, _022474D0 ; =ov41_02249CC4
add r0, r0, r1
bx r3
.balign 4, 0
_022474CC: .word 0x000004B4
_022474D0: .word ov41_02249CC4
thumb_func_end ov41_022474C4
thumb_func_start ov41_022474D4
ov41_022474D4: ; 0x022474D4
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
mov r0, #0x4e
ldr r2, _02247550 ; =0x000006EC
lsl r0, r0, #4
add r0, r4, r0
add r1, r4, #0
add r2, r4, r2
bl ov41_0224A27C
mov r0, #0x4e
lsl r0, r0, #4
mov r1, #0
ldr r2, _02247554 ; =ov41_022475B4
add r0, r4, r0
add r3, r4, #0
str r1, [sp]
bl ov41_0224A5D4
mov r0, #0
str r0, [sp]
mov r0, #0x4e
lsl r0, r0, #4
ldr r2, _02247558 ; =ov41_022475D4
add r0, r4, r0
mov r1, #1
add r3, r4, #0
bl ov41_0224A5D4
mov r0, #0
str r0, [sp]
mov r0, #0x4e
lsl r0, r0, #4
ldr r2, _0224755C ; =ov41_022475F4
add r0, r4, r0
mov r1, #2
add r3, r4, #0
bl ov41_0224A5D4
mov r0, #0
str r0, [sp]
mov r0, #0x4e
lsl r0, r0, #4
ldr r2, _02247560 ; =ov41_02247628
add r0, r4, r0
mov r1, #3
add r3, r4, #0
bl ov41_0224A5D4
mov r0, #0
str r0, [sp]
mov r0, #0x4e
lsl r0, r0, #4
ldr r2, _02247564 ; =ov41_02247598
add r0, r4, r0
mov r1, #4
add r3, r4, #0
bl ov41_0224A5D4
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
_02247550: .word 0x000006EC
_02247554: .word ov41_022475B4
_02247558: .word ov41_022475D4
_0224755C: .word ov41_022475F4
_02247560: .word ov41_02247628
_02247564: .word ov41_02247598
thumb_func_end ov41_022474D4
thumb_func_start ov41_02247568
ov41_02247568: ; 0x02247568
add r1, r0, #0
mov r0, #0x4e
lsl r0, r0, #4
ldr r3, _02247574 ; =ov41_0224A3E4
add r0, r1, r0
bx r3
.balign 4, 0
_02247574: .word ov41_0224A3E4
thumb_func_end ov41_02247568
thumb_func_start ov41_02247578
ov41_02247578: ; 0x02247578
mov r1, #0x4e
lsl r1, r1, #4
ldr r3, _02247584 ; =ov41_0224A54C
add r0, r0, r1
bx r3
nop
_02247584: .word ov41_0224A54C
thumb_func_end ov41_02247578
thumb_func_start ov41_02247588
ov41_02247588: ; 0x02247588
mov r1, #0x4e
lsl r1, r1, #4
ldr r3, _02247594 ; =ov41_0224A580
add r0, r0, r1
bx r3
nop
_02247594: .word ov41_0224A580
thumb_func_end ov41_02247588
thumb_func_start ov41_02247598
ov41_02247598: ; 0x02247598
push {r4, lr}
mov r0, #0xda
add r4, r1, #0
lsl r0, r0, #2
add r0, r4, r0
bl ov41_02248998
cmp r0, #0
beq _022475B2
mov r0, #0x6b
mov r1, #3
lsl r0, r0, #4
str r1, [r4, r0]
_022475B2:
pop {r4, pc}
thumb_func_end ov41_02247598
thumb_func_start ov41_022475B4
ov41_022475B4: ; 0x022475B4
push {r4, lr}
mov r0, #0xda
add r4, r1, #0
lsl r0, r0, #2
add r0, r4, r0
bl ov41_0224894C
add r1, r0, #0
mov r0, #0xda
lsl r0, r0, #2
add r0, r4, r0
mov r2, #0
bl ov41_02248790
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_022475B4
thumb_func_start ov41_022475D4
ov41_022475D4: ; 0x022475D4
push {r4, lr}
mov r0, #0xda
add r4, r1, #0
lsl r0, r0, #2
add r0, r4, r0
bl ov41_0224894C
add r1, r0, #0
mov r0, #0xda
lsl r0, r0, #2
add r0, r4, r0
mov r2, #1
bl ov41_02248790
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_022475D4
thumb_func_start ov41_022475F4
ov41_022475F4: ; 0x022475F4
push {r4, lr}
mov r0, #0x6b
add r4, r1, #0
lsl r0, r0, #4
ldr r0, [r4, r0]
cmp r0, #0
beq _02247624
mov r0, #0xda
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
bl ov41_0224895C
add r2, r0, #0
mov r0, #0xda
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
bl ov41_022487F8
mov r0, #0x6b
mov r1, #0
lsl r0, r0, #4
str r1, [r4, r0]
_02247624:
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_022475F4
thumb_func_start ov41_02247628
ov41_02247628: ; 0x02247628
push {r4, lr}
mov r0, #0x6b
add r4, r1, #0
lsl r0, r0, #4
ldr r0, [r4, r0]
cmp r0, #1
beq _02247658
mov r0, #0xda
lsl r0, r0, #2
add r0, r4, r0
mov r1, #1
bl ov41_0224895C
add r2, r0, #0
mov r0, #0xda
lsl r0, r0, #2
add r0, r4, r0
mov r1, #1
bl ov41_022487F8
mov r0, #0x6b
mov r1, #1
lsl r0, r0, #4
str r1, [r4, r0]
_02247658:
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_02247628
thumb_func_start ov41_0224765C
ov41_0224765C: ; 0x0224765C
push {r3, r4, r5, lr}
sub sp, #0x28
add r4, r0, #0
add r2, sp, #0
mov r0, #0
add r3, r1, #0
add r5, r2, #0
add r1, r0, #0
stmia r5!, {r0, r1}
stmia r5!, {r0, r1}
stmia r5!, {r0, r1}
stmia r5!, {r0, r1}
stmia r5!, {r0, r1}
ldr r0, [r4, #0x40]
add r1, r2, #0
str r0, [sp]
ldr r0, [r4, #0x44]
mov r2, #0xf
str r0, [sp, #4]
add r0, r4, #0
add r0, #0x48
str r0, [sp, #8]
mov r0, #0xa
str r0, [sp, #0x10]
mov r0, #6
str r3, [sp, #0xc]
lsl r0, r0, #6
ldr r0, [r4, r0]
str r0, [sp, #0x24]
ldr r0, _022476A4 ; =0x00000568
add r0, r4, r0
bl ov41_0224AA08
add sp, #0x28
pop {r3, r4, r5, pc}
nop
_022476A4: .word 0x00000568
thumb_func_end ov41_0224765C
thumb_func_start ov41_022476A8
ov41_022476A8: ; 0x022476A8
ldr r1, _022476B0 ; =0x00000568
ldr r3, _022476B4 ; =ov41_0224AB40
add r0, r0, r1
bx r3
.balign 4, 0
_022476B0: .word 0x00000568
_022476B4: .word ov41_0224AB40
thumb_func_end ov41_022476A8
thumb_func_start ov41_022476B8
ov41_022476B8: ; 0x022476B8
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
ldr r0, _022476DC ; =ov41_022476E0
mov r1, #0x10
mov r2, #0xa
mov r3, #0xd
bl sub_02007200
bl sub_0201F988
str r5, [r0]
str r4, [r0, #4]
mov r1, #0
str r1, [r0, #8]
str r1, [r0, #0xc]
pop {r3, r4, r5, pc}
nop
_022476DC: .word ov41_022476E0
thumb_func_end ov41_022476B8
thumb_func_start ov41_022476E0
ov41_022476E0: ; 0x022476E0
push {r3, r4, lr}
sub sp, #4
add r4, r1, #0
ldr r1, [r4, #0xc]
cmp r1, #9
bls _022476EE
b _02247822
_022476EE:
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_022476FA: ; jump table
.short _0224770E - _022476FA - 2 ; case 0
.short _02247730 - _022476FA - 2 ; case 1
.short _0224774A - _022476FA - 2 ; case 2
.short _02247766 - _022476FA - 2 ; case 3
.short _0224777A - _022476FA - 2 ; case 4
.short _022477A2 - _022476FA - 2 ; case 5
.short _022477C2 - _022476FA - 2 ; case 6
.short _022477E8 - _022476FA - 2 ; case 7
.short _02247804 - _022476FA - 2 ; case 8
.short _02247818 - _022476FA - 2 ; case 9
_0224770E:
mov r0, #0xda
ldr r1, [r4]
lsl r0, r0, #2
add r0, r1, r0
mov r1, #3
mov r2, #0
bl ov41_02248750
cmp r0, #0
bne _02247726
bl GF_AssertFail
_02247726:
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_02247730:
mov r0, #0xda
ldr r1, [r4]
lsl r0, r0, #2
add r0, r1, r0
bl ov41_02248998
cmp r0, #0
beq _02247822
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_0224774A:
mov r0, #1
str r0, [sp]
mov r0, #8
add r1, r0, #0
sub r1, #0x18
mov r2, #0
mov r3, #0xa
bl sub_0200B484
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_02247766:
mov r0, #1
bl sub_0200B5C0
cmp r0, #0
beq _02247822
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_0224777A:
mov r0, #0x4e
ldr r1, [r4]
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
mov r2, #8
bl ov41_0224A5A4
ldr r0, [r4, #8]
add r0, r0, #1
str r0, [r4, #8]
cmp r0, #8
blt _02247822
mov r0, #0
str r0, [r4, #8]
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_022477A2:
mov r1, #7
add r0, r4, #0
mvn r1, r1
mov r2, #5
mov r3, #8
bl ov41_02247A48
cmp r0, #0
beq _02247822
mov r0, #0
str r0, [r4, #8]
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_022477C2:
ldr r0, [r4]
mov r1, #1
bl ov41_02247480
ldr r0, [r4]
mov r1, #1
ldr r0, [r0, #0x40]
mov r2, #3
mov r3, #0
bl ScheduleSetBgPosText
ldr r0, [r4]
bl ov41_02247AB4
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_022477E8:
mov r1, #0
mov r0, #1
add r2, r1, #0
str r0, [sp]
mov r0, #8
sub r2, #0x10
mov r3, #0xa
bl sub_0200B484
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_02247804:
mov r0, #1
bl sub_0200B5C0
cmp r0, #0
beq _02247822
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_02247818:
ldr r1, [r4, #4]
mov r2, #1
str r2, [r1]
bl sub_02007234
_02247822:
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov41_022476E0
thumb_func_start ov41_02247828
ov41_02247828: ; 0x02247828
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
ldr r0, _0224784C ; =ov41_02247850
mov r1, #0x10
mov r2, #0xa
mov r3, #0xd
bl sub_02007200
bl sub_0201F988
str r5, [r0]
str r4, [r0, #4]
mov r1, #0
str r1, [r0, #8]
str r1, [r0, #0xc]
pop {r3, r4, r5, pc}
nop
_0224784C: .word ov41_02247850
thumb_func_end ov41_02247828
thumb_func_start ov41_02247850
ov41_02247850: ; 0x02247850
push {r3, r4, lr}
sub sp, #4
add r4, r1, #0
ldr r1, [r4, #0xc]
cmp r1, #9
bls _0224785E
b _022479A2
_0224785E:
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_0224786A: ; jump table
.short _0224787E - _0224786A - 2 ; case 0
.short _0224789A - _0224786A - 2 ; case 1
.short _022478AE - _0224786A - 2 ; case 2
.short _022478E2 - _0224786A - 2 ; case 3
.short _02247902 - _0224786A - 2 ; case 4
.short _0224792C - _0224786A - 2 ; case 5
.short _02247948 - _0224786A - 2 ; case 6
.short _0224795C - _0224786A - 2 ; case 7
.short _0224797E - _0224786A - 2 ; case 8
.short _02247998 - _0224786A - 2 ; case 9
_0224787E:
mov r0, #1
str r0, [sp]
mov r0, #8
add r1, r0, #0
sub r1, #0x18
mov r2, #0
mov r3, #0xa
bl sub_0200B484
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_0224789A:
mov r0, #1
bl sub_0200B5C0
cmp r0, #0
beq _022479A2
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_022478AE:
ldr r0, [r4]
bl ov41_02247B5C
ldr r0, [r4]
bl ov41_02247414
ldr r0, [r4]
bl ov41_02247588
ldr r0, [r4]
mov r1, #0
bl ov41_02247480
ldr r0, [r4]
mov r2, #3
add r3, r2, #0
ldr r0, [r0, #0x40]
mov r1, #1
sub r3, #0x2b
bl ScheduleSetBgPosText
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_022478E2:
mov r1, #8
add r2, r1, #0
add r0, r4, #0
sub r2, #0xd
add r3, r1, #0
bl ov41_02247A48
cmp r0, #0
beq _022479A2
mov r0, #0
str r0, [r4, #8]
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_02247902:
mov r0, #0x4e
ldr r1, [r4]
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
add r2, r1, #0
sub r2, #8
bl ov41_0224A5A4
ldr r0, [r4, #8]
add r0, r0, #1
str r0, [r4, #8]
cmp r0, #8
blt _022479A2
mov r0, #0
str r0, [r4, #8]
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_0224792C:
mov r1, #0
mov r0, #1
add r2, r1, #0
str r0, [sp]
mov r0, #8
sub r2, #0x10
mov r3, #0xa
bl sub_0200B484
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_02247948:
mov r0, #1
bl sub_0200B5C0
cmp r0, #0
beq _022479A2
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_0224795C:
mov r0, #0xda
ldr r1, [r4]
lsl r0, r0, #2
add r0, r1, r0
mov r1, #0
add r2, r1, #0
bl ov41_02248750
cmp r0, #0
bne _02247974
bl GF_AssertFail
_02247974:
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_0224797E:
mov r0, #0xda
ldr r1, [r4]
lsl r0, r0, #2
add r0, r1, r0
bl ov41_02248998
cmp r0, #0
beq _022479A2
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
str r0, [r4, #0xc]
pop {r3, r4, pc}
_02247998:
ldr r1, [r4, #4]
mov r2, #1
str r2, [r1]
bl sub_02007234
_022479A2:
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov41_02247850
thumb_func_start ov41_022479A8
ov41_022479A8: ; 0x022479A8
push {r3, r4, r5, r6, r7, lr}
str r1, [sp]
add r6, r0, #0
add r4, r2, #0
bl sub_0202BC60
ldr r1, [sp]
ldr r2, [sp]
add r1, #0x84
ldr r1, [r1]
add r0, r6, #0
add r2, #0x78
bl sub_0202BC88
cmp r4, #0
beq _022479E8
add r0, r4, #0
mov r1, #0xd
bl PlayerProfile_GetPlayerName_NewString
add r5, r0, #0
add r0, r4, #0
bl PlayerProfile_GetTrainerGender
add r2, r0, #0
add r0, r6, #0
add r1, r5, #0
bl sub_0202BDC8
add r0, r5, #0
bl String_dtor
_022479E8:
ldr r0, [sp]
mov r5, #0
add r7, r0, #0
ldr r4, [r0, #0x1c]
add r7, #0x14
cmp r4, r7
beq _02247A0E
_022479F6:
ldr r0, [r4, #4]
cmp r0, #0
bne _02247A08
ldr r1, [r4]
add r0, r6, #0
add r2, r5, #0
bl sub_0202BCAC
add r5, r5, #1
_02247A08:
ldr r4, [r4, #8]
cmp r4, r7
bne _022479F6
_02247A0E:
ldr r0, [sp]
ldr r4, [r0, #0xc]
add r7, r0, #4
cmp r4, r7
beq _02247A30
_02247A18:
ldr r0, [r4, #4]
cmp r0, #0
bne _02247A2A
ldr r1, [r4]
add r0, r6, #0
add r2, r5, #0
bl sub_0202BCAC
add r5, r5, #1
_02247A2A:
ldr r4, [r4, #8]
cmp r4, r7
bne _02247A18
_02247A30:
ldr r1, [sp]
add r0, r6, #0
ldr r1, [r1, #0x74]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl sub_0202BD60
add r0, r6, #0
bl sub_0202BC38
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_022479A8
thumb_func_start ov41_02247A48
ov41_02247A48: ; 0x02247A48
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, [r5, #8]
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
cmp r0, #8
bge _02247A64
mov r0, #0xfd
ldr r3, [r5]
lsl r0, r0, #2
add r0, r3, r0
bl ov41_022480F8
_02247A64:
ldr r0, [r5, #8]
cmp r0, #1
blt _02247AA2
ldr r0, [r5]
mov r1, #2
ldr r0, [r0, #0x40]
add r2, r1, #0
add r3, r4, #0
bl ScheduleSetBgPosText
ldr r0, [r5]
mov r1, #1
ldr r0, [r0, #0x40]
mov r2, #2
add r3, r4, #0
bl ScheduleSetBgPosText
ldr r0, [r5]
mov r1, #2
ldr r0, [r0, #0x40]
mov r2, #5
add r3, r6, #0
bl ScheduleSetBgPosText
ldr r0, [r5]
mov r1, #1
ldr r0, [r0, #0x40]
mov r2, #5
add r3, r6, #0
bl ScheduleSetBgPosText
_02247AA2:
ldr r0, [r5, #8]
add r0, r0, #1
str r0, [r5, #8]
cmp r0, r7
ble _02247AB0
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02247AB0:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov41_02247A48
thumb_func_start ov41_02247AB4
ov41_02247AB4: ; 0x02247AB4
push {r4, r5, lr}
sub sp, #0x14
add r4, r0, #0
ldr r0, [r4, #0x40]
mov r1, #3
bl BgClearTilemapBufferAndCommit
mov r2, #0
ldr r0, [r4, #0x40]
mov r1, #3
add r3, r2, #0
bl BgSetPosTextAndCommit
mov r1, #3
ldr r0, [r4, #0x40]
add r2, r1, #0
mov r3, #0
bl BgSetPosTextAndCommit
add r0, sp, #0
mov r1, #0
mov r2, #0x14
bl MI_CpuFill8
ldr r0, [r4, #0x40]
add r3, sp, #0
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
mov r0, #5
str r0, [sp, #0xc]
mov r0, #0x19
strb r0, [r3, #0x10]
mov r0, #4
strb r0, [r3, #0x11]
ldrb r0, [r3, #0x12]
mov r1, #0xf
ldr r2, _02247B54 ; =0x000006EC
bic r0, r1
ldr r1, [r4, r2]
sub r2, #0x34
lsl r1, r1, #0x18
lsr r5, r1, #0x18
mov r1, #0xf
and r1, r5
orr r0, r1
strb r0, [r3, #0x12]
ldr r0, [r4, r2]
add r1, sp, #0
bl sub_020166FC
add r0, r4, #0
mov r1, #1
bl ov41_02247D1C
ldr r0, _02247B58 ; =0x04000008
mov r2, #3
ldrh r3, [r0]
mov r1, #2
bic r3, r2
orr r1, r3
strh r1, [r0]
ldrh r3, [r0, #2]
mov r1, #1
bic r3, r2
orr r1, r3
strh r1, [r0, #2]
ldrh r3, [r0, #4]
mov r1, #3
bic r3, r2
orr r1, r3
strh r1, [r0, #4]
ldrh r1, [r0, #6]
bic r1, r2
strh r1, [r0, #6]
add sp, #0x14
pop {r4, r5, pc}
nop
_02247B54: .word 0x000006EC
_02247B58: .word 0x04000008
thumb_func_end ov41_02247AB4
thumb_func_start ov41_02247B5C
ov41_02247B5C: ; 0x02247B5C
push {r4, lr}
add r4, r0, #0
ldr r0, _02247B78 ; =0x000006B8
ldr r0, [r4, r0]
bl sub_020169CC
add r0, r4, #0
bl ov41_02247D3C
ldr r0, [r4, #0x40]
mov r1, #3
bl BgClearTilemapBufferAndCommit
pop {r4, pc}
.balign 4, 0
_02247B78: .word 0x000006B8
thumb_func_end ov41_02247B5C
thumb_func_start ov41_02247B7C
ov41_02247B7C: ; 0x02247B7C
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, _02247BB0 ; =0x000006B8
ldr r0, [r5, r0]
bl sub_020168F4
add r4, r0, #0
beq _02247B96
cmp r4, #1
beq _02247B9A
cmp r4, #2
beq _02247B9E
b _02247BA0
_02247B96:
mov r0, #4
pop {r3, r4, r5, pc}
_02247B9A:
mov r4, #8
b _02247BA0
_02247B9E:
mov r4, #9
_02247BA0:
ldr r0, _02247BB0 ; =0x000006B8
ldr r0, [r5, r0]
bl sub_020169C0
ldr r1, _02247BB4 ; =0x000006EC
str r0, [r5, r1]
add r0, r4, #0
pop {r3, r4, r5, pc}
.balign 4, 0
_02247BB0: .word 0x000006B8
_02247BB4: .word 0x000006EC
thumb_func_end ov41_02247B7C
thumb_func_start ov41_02247BB8
ov41_02247BB8: ; 0x02247BB8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r5, r0, #0
ldr r0, _02247C70 ; =0x000006DC
str r1, [sp, #0x14]
ldr r0, [r5, r0]
add r7, r2, #0
add r4, r3, #0
bl Options_GetFrame
add r6, r0, #0
mov r0, #0
mov r1, #0xe0
mov r2, #0xe
bl LoadFontPal1
str r4, [sp]
add r0, sp, #0x20
ldrb r1, [r0, #0x10]
mov r2, #3
add r3, r7, #0
str r1, [sp, #4]
ldrb r0, [r0, #0x14]
ldr r1, _02247C74 ; =0x000006BC
str r0, [sp, #8]
mov r0, #7
str r0, [sp, #0xc]
mov r0, #0x5a
str r0, [sp, #0x10]
ldr r0, [r5, #0x40]
ldr r1, [r5, r1]
bl AddWindowParameterized
ldr r0, _02247C74 ; =0x000006BC
mov r1, #0xf
ldr r0, [r5, r0]
bl FillWindowPixelBuffer
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp]
mov r0, #0xe
str r0, [sp, #4]
ldr r0, [r5, #0x40]
mov r1, #3
mov r2, #0x3c
mov r3, #8
bl LoadUserFrameGfx2
ldr r0, _02247C74 ; =0x000006BC
mov r1, #0
ldr r0, [r5, r0]
mov r2, #0x3c
mov r3, #8
bl DrawFrameAndWindow2
mov r0, #0
mov r1, #0x1b
mov r2, #0xd7
mov r3, #0xd
bl NewMsgDataFromNarc
ldr r1, [sp, #0x14]
add r6, r0, #0
bl NewString_ReadMsgData
add r4, r0, #0
mov r3, #0
str r3, [sp]
ldr r0, _02247C78 ; =0x0001020F
str r3, [sp, #4]
str r0, [sp, #8]
ldr r0, _02247C74 ; =0x000006BC
str r3, [sp, #0xc]
ldr r0, [r5, r0]
mov r1, #1
add r2, r4, #0
bl AddTextPrinterParameterized2
add r0, r4, #0
bl String_dtor
add r0, r6, #0
bl DestroyMsgData
ldr r0, _02247C74 ; =0x000006BC
ldr r0, [r5, r0]
bl CopyWindowToVram
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_02247C70: .word 0x000006DC
_02247C74: .word 0x000006BC
_02247C78: .word 0x0001020F
thumb_func_end ov41_02247BB8
thumb_func_start ov41_02247C7C
ov41_02247C7C: ; 0x02247C7C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
ldr r0, _02247CF4 ; =0x000006BC
add r4, r1, #0
ldr r0, [r5, r0]
mov r1, #0xf
bl FillWindowPixelBuffer
mov r0, #0
mov r1, #0x1b
mov r2, #0xd7
mov r3, #0xd
bl NewMsgDataFromNarc
add r1, r4, #0
add r7, r0, #0
bl NewString_ReadMsgData
add r6, r0, #0
mov r0, #1
lsl r0, r0, #8
mov r1, #0xd
bl String_New
add r4, r0, #0
ldr r0, _02247CF8 ; =0x000006E8
add r1, r4, #0
ldr r0, [r5, r0]
add r2, r6, #0
bl StringExpandPlaceholders
mov r3, #0
str r3, [sp]
ldr r0, _02247CFC ; =0x0001020F
str r3, [sp, #4]
str r0, [sp, #8]
ldr r0, _02247CF4 ; =0x000006BC
str r3, [sp, #0xc]
ldr r0, [r5, r0]
mov r1, #1
add r2, r4, #0
bl AddTextPrinterParameterized2
add r0, r4, #0
bl String_dtor
add r0, r6, #0
bl String_dtor
add r0, r7, #0
bl DestroyMsgData
ldr r0, _02247CF4 ; =0x000006BC
ldr r0, [r5, r0]
bl CopyWindowToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
_02247CF4: .word 0x000006BC
_02247CF8: .word 0x000006E8
_02247CFC: .word 0x0001020F
thumb_func_end ov41_02247C7C
thumb_func_start ov41_02247D00
ov41_02247D00: ; 0x02247D00
push {r4, lr}
add r4, r0, #0
ldr r0, _02247D18 ; =0x000006BC
ldr r0, [r4, r0]
bl ClearWindowTilemapAndCopyToVram
ldr r0, _02247D18 ; =0x000006BC
ldr r0, [r4, r0]
bl RemoveWindow
pop {r4, pc}
nop
_02247D18: .word 0x000006BC
thumb_func_end ov41_02247D00
thumb_func_start ov41_02247D1C
ov41_02247D1C: ; 0x02247D1C
push {r3, lr}
sub sp, #8
mov r2, #0x1b
str r2, [sp]
mov r2, #2
mov r3, #1
str r2, [sp, #4]
bl ov41_02247BB8
add sp, #8
pop {r3, pc}
.balign 4, 0
thumb_func_end ov41_02247D1C
thumb_func_start ov41_02247D34
ov41_02247D34: ; 0x02247D34
ldr r3, _02247D38 ; =ov41_02247C7C
bx r3
.balign 4, 0
_02247D38: .word ov41_02247C7C
thumb_func_end ov41_02247D34
thumb_func_start ov41_02247D3C
ov41_02247D3C: ; 0x02247D3C
ldr r3, _02247D40 ; =ov41_02247D00
bx r3
.balign 4, 0
_02247D40: .word ov41_02247D00
thumb_func_end ov41_02247D3C
thumb_func_start ov41_02247D44
ov41_02247D44: ; 0x02247D44
push {r4, lr}
add r4, r0, #0
mov r0, #0xfd
lsl r0, r0, #2
add r0, r4, r0
bl ov41_022482B4
add r1, r0, #0
ldr r0, _02247D60 ; =0x00000568
add r0, r4, r0
bl ov41_0224AC98
pop {r4, pc}
nop
_02247D60: .word 0x00000568
thumb_func_end ov41_02247D44
thumb_func_start ov41_02247D64
ov41_02247D64: ; 0x02247D64
push {r4, r5, lr}
sub sp, #0x14
add r4, r0, #0
add r0, sp, #0
mov r1, #0
mov r2, #0x14
bl MI_CpuFill8
ldr r0, [r4, #0x40]
add r3, sp, #0
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
mov r0, #5
str r0, [sp, #0xc]
mov r0, #0x19
strb r0, [r3, #0x10]
mov r0, #4
strb r0, [r3, #0x11]
ldrb r0, [r3, #0x12]
mov r1, #0xf
ldr r2, _02247DEC ; =0x000006EC
bic r0, r1
ldr r1, [r4, r2]
sub r2, #0x34
lsl r1, r1, #0x18
lsr r5, r1, #0x18
mov r1, #0xf
and r1, r5
orr r0, r1
strb r0, [r3, #0x12]
ldr r0, [r4, r2]
bl sub_020169CC
ldr r0, _02247DF0 ; =0x000006B8
add r1, sp, #0
ldr r0, [r4, r0]
bl sub_020166FC
add r0, r4, #0
mov r1, #2
bl ov41_02247D34
ldr r0, _02247DF4 ; =0x04000008
mov r2, #3
ldrh r3, [r0]
mov r1, #2
bic r3, r2
orr r1, r3
strh r1, [r0]
ldrh r3, [r0, #2]
mov r1, #1
bic r3, r2
orr r1, r3
strh r1, [r0, #2]
ldrh r3, [r0, #4]
mov r1, #3
bic r3, r2
orr r1, r3
strh r1, [r0, #4]
ldrh r1, [r0, #6]
bic r1, r2
strh r1, [r0, #6]
add sp, #0x14
pop {r4, r5, pc}
nop
_02247DEC: .word 0x000006EC
_02247DF0: .word 0x000006B8
_02247DF4: .word 0x04000008
thumb_func_end ov41_02247D64
thumb_func_start ov41_02247DF8
ov41_02247DF8: ; 0x02247DF8
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, _02247E2C ; =0x000006B8
ldr r0, [r5, r0]
bl sub_020168F4
add r4, r0, #0
beq _02247E12
cmp r4, #1
beq _02247E16
cmp r4, #2
beq _02247E1A
b _02247E1C
_02247E12:
mov r0, #5
pop {r3, r4, r5, pc}
_02247E16:
mov r4, #6
b _02247E1C
_02247E1A:
mov r4, #7
_02247E1C:
ldr r0, _02247E2C ; =0x000006B8
ldr r0, [r5, r0]
bl sub_020169C0
ldr r1, _02247E30 ; =0x000006EC
str r0, [r5, r1]
add r0, r4, #0
pop {r3, r4, r5, pc}
.balign 4, 0
_02247E2C: .word 0x000006B8
_02247E30: .word 0x000006EC
thumb_func_end ov41_02247DF8
thumb_func_start ov41_02247E34
ov41_02247E34: ; 0x02247E34
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r6, r0, #0
str r1, [sp]
add r7, r2, #0
add r0, r3, #0
sub r0, r0, r7
mov r1, #3
str r3, [sp, #4]
ldr r4, [sp, #0x2c]
ldr r5, [sp, #0x30]
bl _u32_div_f
add r1, r7, r0
lsl r0, r0, #1
add r0, r7, r0
str r0, [sp, #8]
ldr r0, [sp]
str r1, [sp, #0xc]
sub r0, r0, r6
mov r1, #3
bl _u32_div_f
add r2, r6, r0
lsl r0, r0, #1
ldr r1, [sp, #0x28]
add r0, r6, r0
cmp r1, #0xf
bhi _02247F36
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_02247E7A: ; jump table
.short _02247E9A - _02247E7A - 2 ; case 0
.short _02247EA2 - _02247E7A - 2 ; case 1
.short _02247EAA - _02247E7A - 2 ; case 2
.short _02247EB2 - _02247E7A - 2 ; case 3
.short _02247EBC - _02247E7A - 2 ; case 4
.short _02247EC6 - _02247E7A - 2 ; case 5
.short _02247ED0 - _02247E7A - 2 ; case 6
.short _02247EDA - _02247E7A - 2 ; case 7
.short _02247EE6 - _02247E7A - 2 ; case 8
.short _02247EF0 - _02247E7A - 2 ; case 9
.short _02247EFA - _02247E7A - 2 ; case 10
.short _02247F04 - _02247E7A - 2 ; case 11
.short _02247F10 - _02247E7A - 2 ; case 12
.short _02247F1A - _02247E7A - 2 ; case 13
.short _02247F24 - _02247E7A - 2 ; case 14
.short _02247F2E - _02247E7A - 2 ; case 15
_02247E9A:
str r7, [r4]
add sp, #0x10
str r6, [r5]
pop {r3, r4, r5, r6, r7, pc}
_02247EA2:
str r7, [r4]
add sp, #0x10
str r2, [r5]
pop {r3, r4, r5, r6, r7, pc}
_02247EAA:
str r7, [r4]
add sp, #0x10
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
_02247EB2:
ldr r0, [sp]
str r7, [r4]
add sp, #0x10
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
_02247EBC:
ldr r0, [sp, #0xc]
add sp, #0x10
str r0, [r4]
str r6, [r5]
pop {r3, r4, r5, r6, r7, pc}
_02247EC6:
ldr r0, [sp, #0xc]
add sp, #0x10
str r0, [r4]
str r2, [r5]
pop {r3, r4, r5, r6, r7, pc}
_02247ED0:
ldr r1, [sp, #0xc]
add sp, #0x10
str r1, [r4]
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
_02247EDA:
ldr r0, [sp, #0xc]
str r0, [r4]
ldr r0, [sp]
add sp, #0x10
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
_02247EE6:
ldr r0, [sp, #8]
add sp, #0x10
str r0, [r4]
str r6, [r5]
pop {r3, r4, r5, r6, r7, pc}
_02247EF0:
ldr r0, [sp, #8]
add sp, #0x10
str r0, [r4]
str r2, [r5]
pop {r3, r4, r5, r6, r7, pc}
_02247EFA:
ldr r1, [sp, #8]
add sp, #0x10
str r1, [r4]
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
_02247F04:
ldr r0, [sp, #8]
str r0, [r4]
ldr r0, [sp]
add sp, #0x10
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
_02247F10:
ldr r0, [sp, #4]
add sp, #0x10
str r0, [r4]
str r6, [r5]
pop {r3, r4, r5, r6, r7, pc}
_02247F1A:
ldr r0, [sp, #4]
add sp, #0x10
str r0, [r4]
str r2, [r5]
pop {r3, r4, r5, r6, r7, pc}
_02247F24:
ldr r1, [sp, #4]
add sp, #0x10
str r1, [r4]
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
_02247F2E:
ldr r0, [sp, #4]
str r0, [r4]
ldr r0, [sp]
str r0, [r5]
_02247F36:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_02247E34
thumb_func_start ov41_02247F3C
ov41_02247F3C: ; 0x02247F3C
push {r4, lr}
add r4, r0, #0
ldr r0, [r1]
mov r2, #0
str r0, [r4, #0x2c]
ldr r0, [r1, #4]
str r0, [r4, #0x30]
ldr r0, [r1, #8]
str r0, [r4, #0x34]
ldr r0, [r1, #0xc]
str r0, [r4, #0x38]
ldr r0, [r1, #0x10]
str r0, [r4, #0x3c]
ldr r0, [r1, #0x14]
str r0, [r4, #0x40]
ldr r0, [r1, #0x18]
str r0, [r4, #0x44]
str r2, [r4, #0x74]
ldr r0, [r1, #0x1c]
str r0, [r4]
add r0, r4, #4
str r0, [r4, #0xc]
str r0, [r4, #0x10]
add r0, r4, #0
add r0, #0x14
str r0, [r4, #0x1c]
str r0, [r4, #0x20]
str r2, [r4, #0x24]
ldr r0, [r1, #0x20]
add r1, r4, #0
str r0, [r4, #0x28]
ldr r0, [r4]
add r1, #0x78
mov r2, #3
bl ov41_022499F0
add r4, #0x14
add r1, r4, #0
bl ov41_02249A50
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_02247F3C
thumb_func_start ov41_02247F90
ov41_02247F90: ; 0x02247F90
push {r4, lr}
add r4, r0, #0
bl ov41_02248038
add r0, r4, #0
bl ov41_022480E0
add r0, r4, #0
mov r1, #0
mov r2, #0x88
bl memset
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_02247F90
thumb_func_start ov41_02247FAC
ov41_02247FAC: ; 0x02247FAC
push {r3, r4, r5, r6, r7, lr}
add r4, r0, #0
ldr r0, [sp, #0x20]
add r6, r1, #0
str r0, [sp]
add r5, r2, #0
add r0, r4, #0
add r7, r3, #0
ldr r1, [r4, #0x3c]
add r0, #0x78
add r2, r6, #0
add r3, r5, #0
bl ov41_022495F0
add r0, r4, #0
ldr r1, [sp, #0x1c]
add r0, #0x78
bl ov41_02249700
add r4, #0x78
ldr r2, [sp, #0x18]
add r0, r4, #0
add r1, r7, #0
bl ov41_0224971C
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov41_02247FAC
thumb_func_start ov41_02247FE0
ov41_02247FE0: ; 0x02247FE0
push {r3, r4, r5, r6, lr}
sub sp, #4
add r6, r0, #0
str r3, [sp]
add r5, r1, #0
add r4, r2, #0
ldr r1, [r6, #0x3c]
add r0, #0x78
add r2, r5, #0
add r3, r4, #0
bl ov41_022495F0
add sp, #4
pop {r3, r4, r5, r6, pc}
thumb_func_end ov41_02247FE0
thumb_func_start ov41_02247FFC
ov41_02247FFC: ; 0x02247FFC
push {r4, r5, r6, lr}
sub sp, #8
add r6, r0, #0
str r3, [sp]
mov r0, #1
str r0, [sp, #4]
add r5, r1, #0
add r4, r2, #0
add r0, r6, #0
ldr r1, [r6, #0x3c]
add r0, #0x78
add r2, r5, #0
add r3, r4, #0
bl ov41_02249604
add sp, #8
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov41_02247FFC
thumb_func_start ov41_02248020
ov41_02248020: ; 0x02248020
ldr r3, _0224802C ; =ov41_02249A50
add r2, r0, #0
add r0, r1, #0
ldr r1, [r2, #0x20]
bx r3
nop
_0224802C: .word ov41_02249A50
thumb_func_end ov41_02248020
thumb_func_start ov41_02248030
ov41_02248030: ; 0x02248030
ldr r3, _02248034 ; =ov41_02249A60
bx r3
.balign 4, 0
_02248034: .word ov41_02249A60
thumb_func_end ov41_02248030
thumb_func_start ov41_02248038
ov41_02248038: ; 0x02248038
ldr r3, _02248040 ; =ov41_022496E8
add r0, #0x78
bx r3
nop
_02248040: .word ov41_022496E8
thumb_func_end ov41_02248038
thumb_func_start ov41_02248044
ov41_02248044: ; 0x02248044
push {r3, r4, r5, lr}
sub sp, #0x20
add r4, r0, #0
ldr r5, [r4, #0x24]
ldr r0, [r4, #0x28]
cmp r5, r0
bge _0224809E
ldr r0, [r4, #0x44]
str r0, [sp]
ldr r0, [r4, #0x2c]
str r0, [sp, #4]
ldr r5, [r4, #0x30]
lsl r0, r1, #2
ldr r0, [r5, r0]
str r0, [sp, #8]
ldr r0, [r4, #0x34]
ldr r0, [r0]
str r2, [sp, #0x10]
str r3, [sp, #0x14]
str r1, [sp, #0x18]
str r0, [sp, #0xc]
ldr r0, [r4, #0x38]
ldrb r0, [r0, r1]
str r0, [sp, #0x1c]
add r0, sp, #0
bl ov41_02245EE0
ldr r1, [sp, #0x30]
add r5, r0, #0
bl ov41_02246014
ldr r0, [r4]
add r1, r5, #0
mov r2, #0
bl ov41_022499F0
add r1, r4, #4
bl ov41_02249A50
ldr r0, [r4, #0x24]
add sp, #0x20
add r0, r0, #1
str r0, [r4, #0x24]
mov r0, #1
pop {r3, r4, r5, pc}
_0224809E:
mov r0, #0
add sp, #0x20
pop {r3, r4, r5, pc}
thumb_func_end ov41_02248044
thumb_func_start ov41_022480A4
ov41_022480A4: ; 0x022480A4
push {r3, r4, r5, lr}
add r4, r0, #0
add r3, r2, #0
ldr r5, [r4, #0x24]
ldr r2, [r4, #0x28]
cmp r5, r2
bge _022480C2
mov r2, #1
bl ov41_02248324
ldr r0, [r4, #0x24]
add r0, r0, #1
str r0, [r4, #0x24]
mov r0, #1
pop {r3, r4, r5, pc}
_022480C2:
mov r0, #0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_022480A4
thumb_func_start ov41_022480C8
ov41_022480C8: ; 0x022480C8
push {r4, lr}
add r4, r0, #0
add r0, r1, #0
bl ov41_02249A60
ldr r0, [r4, #0x24]
sub r0, r0, #1
str r0, [r4, #0x24]
bpl _022480DE
bl GF_AssertFail
_022480DE:
pop {r4, pc}
thumb_func_end ov41_022480C8
thumb_func_start ov41_022480E0
ov41_022480E0: ; 0x022480E0
push {r4, lr}
add r4, r0, #0
add r0, r4, #4
bl ov41_02249A70
add r0, r4, #0
add r0, #0x14
bl ov41_02249A70
mov r0, #0
str r0, [r4, #0x24]
pop {r4, pc}
thumb_func_end ov41_022480E0
thumb_func_start ov41_022480F8
ov41_022480F8: ; 0x022480F8
push {r4, r5, r6, lr}
add r5, r0, #0
add r0, r5, #4
add r4, r1, #0
add r6, r2, #0
bl ov41_02249BE8
add r5, #0x14
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
bl ov41_02249BE8
pop {r4, r5, r6, pc}
thumb_func_end ov41_022480F8
thumb_func_start ov41_02248114
ov41_02248114: ; 0x02248114
ldr r3, _0224811C ; =ov41_02249BE8
add r0, #0x14
bx r3
nop
_0224811C: .word ov41_02249BE8
thumb_func_end ov41_02248114
thumb_func_start ov41_02248120
ov41_02248120: ; 0x02248120
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
neg r4, r2
neg r7, r1
add r0, r5, #4
add r1, r7, #0
add r2, r4, #0
add r6, r3, #0
bl ov41_02249BE8
ldr r2, [sp, #0x18]
add r0, r5, #4
add r1, r6, #0
bl ov41_02249BE8
add r0, r5, #0
add r0, #0x14
add r1, r7, #0
add r2, r4, #0
bl ov41_02249BE8
add r5, #0x14
ldr r2, [sp, #0x18]
add r0, r5, #0
add r1, r6, #0
bl ov41_02249BE8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov41_02248120
thumb_func_start ov41_02248158
ov41_02248158: ; 0x02248158
ldr r3, _02248160 ; =ov41_02248164
mov r1, #0
mvn r1, r1
bx r3
.balign 4, 0
_02248160: .word ov41_02248164
thumb_func_end ov41_02248158
thumb_func_start ov41_02248164
ov41_02248164: ; 0x02248164
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
add r6, r7, #0
ldr r4, [r7, #0x1c]
add r6, #0x14
add r5, r1, #0
cmp r4, r6
beq _02248192
_02248174:
ldr r0, [r4, #4]
cmp r0, #0
ldr r0, [r4]
bne _02248184
add r1, r5, #0
bl ov41_02246014
b _0224818A
_02248184:
add r1, r5, #0
bl ov41_02249700
_0224818A:
ldr r4, [r4, #8]
sub r5, r5, #1
cmp r4, r6
bne _02248174
_02248192:
ldr r4, [r7, #0xc]
add r6, r7, #4
sub r5, #8
cmp r4, r6
beq _022481BA
_0224819C:
ldr r0, [r4, #4]
cmp r0, #0
ldr r0, [r4]
bne _022481AC
add r1, r5, #0
bl ov41_02246014
b _022481B2
_022481AC:
add r1, r5, #0
bl ov41_02249700
_022481B2:
ldr r4, [r4, #8]
sub r5, r5, #1
cmp r4, r6
bne _0224819C
_022481BA:
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov41_02248164
thumb_func_start ov41_022481BC
ov41_022481BC: ; 0x022481BC
push {r3, lr}
mov r1, #0x12
add r0, sp, #0
strb r1, [r0]
mov r1, #0x8f
strb r1, [r0, #1]
mov r1, #0x8a
strb r1, [r0, #2]
mov r1, #0xf6
strb r1, [r0, #3]
add r0, sp, #0
bl sub_020252F4
pop {r3, pc}
thumb_func_end ov41_022481BC
thumb_func_start ov41_022481D8
ov41_022481D8: ; 0x022481D8
push {r3, lr}
mov r3, #0x12
add r0, sp, #0
strb r3, [r0]
mov r3, #0x8f
strb r3, [r0, #1]
mov r3, #0x8a
strb r3, [r0, #2]
mov r3, #0xf6
strb r3, [r0, #3]
add r0, sp, #0
bl sub_020253F0
pop {r3, pc}
thumb_func_end ov41_022481D8
thumb_func_start ov41_022481F4
ov41_022481F4: ; 0x022481F4
push {r4, r5, r6, r7, lr}
sub sp, #0xc
ldr r5, [r0, #0x1c]
str r0, [sp]
str r0, [sp, #4]
add r0, #0x14
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
str r0, [sp, #4]
cmp r5, r0
beq _0224822A
_0224820C:
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
add r3, r7, #0
bl ov41_02249AA8
cmp r0, #1
bne _02248222
add sp, #0xc
add r0, r5, #0
pop {r4, r5, r6, r7, pc}
_02248222:
ldr r5, [r5, #8]
ldr r0, [sp, #4]
cmp r5, r0
bne _0224820C
_0224822A:
ldr r0, [sp]
ldr r5, [r0, #0xc]
add r0, r0, #4
str r0, [sp, #8]
cmp r5, r0
beq _02248254
_02248236:
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
add r3, r7, #0
bl ov41_02249AA8
cmp r0, #1
bne _0224824C
add sp, #0xc
add r0, r5, #0
pop {r4, r5, r6, r7, pc}
_0224824C:
ldr r5, [r5, #8]
ldr r0, [sp, #8]
cmp r5, r0
bne _02248236
_02248254:
mov r0, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_022481F4
thumb_func_start ov41_0224825C
ov41_0224825C: ; 0x0224825C
push {r3, r4, r5, lr}
sub sp, #0x30
add r5, r0, #0
ldr r0, [r5, #0x40]
add r4, r1, #0
str r0, [sp]
mov r0, #0x1a
lsl r1, r4, #2
str r0, [sp, #4]
add r0, r1, #0
add r0, #0x86
str r0, [sp, #8]
add r0, r1, #0
add r0, #0x87
str r0, [sp, #0xc]
mov r0, #0x88
str r0, [sp, #0x14]
mov r0, #0x10
str r0, [sp, #0x18]
mov r0, #2
str r0, [sp, #0x1c]
mov r0, #1
str r0, [sp, #0x20]
mov r0, #0xd
str r0, [sp, #0x24]
mov r0, #0
add r1, #0x88
str r0, [sp, #0x28]
add r0, r5, #0
str r1, [sp, #0x10]
add r0, #0x48
add r1, sp, #0
str r2, [sp, #0x2c]
bl ov41_02249C7C
str r4, [r5, #0x74]
add sp, #0x30
pop {r3, r4, r5, pc}
thumb_func_end ov41_0224825C
thumb_func_start ov41_022482A8
ov41_022482A8: ; 0x022482A8
ldr r3, _022482B0 ; =ov41_02249CC4
add r0, #0x48
bx r3
nop
_022482B0: .word ov41_02249CC4
thumb_func_end ov41_022482A8
thumb_func_start ov41_022482B4
ov41_022482B4: ; 0x022482B4
ldr r0, [r0, #0x24]
bx lr
thumb_func_end ov41_022482B4
thumb_func_start ov41_022482B8
ov41_022482B8: ; 0x022482B8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r7, r0, #0
ldr r6, [r7, #0x1c]
mov r4, #0
add r7, #0x14
str r1, [sp]
str r2, [sp, #4]
add r5, r4, #0
cmp r6, r7
beq _02248316
_022482CE:
add r0, r6, #0
add r1, sp, #0xc
add r2, sp, #8
bl ov41_02248400
cmp r4, #0
bge _022482E0
neg r1, r4
b _022482E2
_022482E0:
add r1, r4, #0
_022482E2:
ldr r0, [sp, #0xc]
cmp r0, #0
bge _022482EC
neg r2, r0
b _022482EE
_022482EC:
add r2, r0, #0
_022482EE:
cmp r2, r1
ble _022482F4
add r4, r0, #0
_022482F4:
cmp r5, #0
bge _022482FC
neg r1, r5
b _022482FE
_022482FC:
add r1, r5, #0
_022482FE:
ldr r0, [sp, #8]
cmp r0, #0
bge _02248308
neg r2, r0
b _0224830A
_02248308:
add r2, r0, #0
_0224830A:
cmp r2, r1
ble _02248310
add r5, r0, #0
_02248310:
ldr r6, [r6, #8]
cmp r6, r7
bne _022482CE
_02248316:
ldr r0, [sp]
str r4, [r0]
ldr r0, [sp, #4]
str r5, [r0]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_022482B8
thumb_func_start ov41_02248324
ov41_02248324: ; 0x02248324
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x58
str r0, [sp, #0xc]
str r2, [sp, #0x14]
str r1, [sp, #0x10]
add r0, r1, #0
add r1, sp, #0x54
add r2, sp, #0x50
add r4, r3, #0
bl ov41_02249B44
ldr r0, [sp, #0x10]
add r1, sp, #0x4c
add r2, sp, #0x48
bl ov41_02249B94
add r0, sp, #0x30
str r0, [sp]
ldr r0, [sp, #0x10]
add r1, sp, #0x44
add r2, sp, #0x34
add r3, sp, #0x40
bl ov41_02249BAC
mov r0, #0x76
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r5, #0
str r0, [sp, #0x20]
ldr r6, [sp, #0x54]
ldr r0, [sp, #0x4c]
ldr r7, [sp, #0x44]
add r1, r6, r0
ldr r0, [sp, #0x34]
add r4, r5, #0
sub r0, r1, r0
str r0, [sp, #0x1c]
ldr r0, [sp, #0x50]
ldr r1, [sp, #0x48]
str r0, [sp, #0x24]
add r1, r0, r1
ldr r0, [sp, #0x30]
sub r0, r1, r0
str r0, [sp, #0x18]
ldr r0, [sp, #0x40]
str r0, [sp, #0x28]
ldr r0, [sp, #0xc]
str r0, [sp, #0x2c]
add r0, #0x78
str r0, [sp, #0x2c]
_02248388:
str r4, [sp]
add r0, sp, #0x3c
str r0, [sp, #4]
add r0, sp, #0x38
str r0, [sp, #8]
ldr r1, [sp, #0x24]
ldr r0, [sp, #0x28]
ldr r3, [sp, #0x1c]
add r0, r1, r0
ldr r1, [sp, #0x18]
add r2, r6, r7
bl ov41_02247E34
ldr r0, [sp, #0x2c]
ldr r1, [sp, #0x3c]
ldr r2, [sp, #0x38]
ldr r3, [sp, #0x20]
bl ov41_02249820
add r4, r4, #1
orr r5, r0
cmp r4, #0x10
blt _02248388
cmp r5, #0
beq _022483DE
ldr r0, [sp, #0x14]
cmp r0, #0
beq _022483D0
ldr r1, [sp, #0xc]
ldr r0, [sp, #0x10]
add r1, #0x14
str r1, [sp, #0xc]
bl ov41_02249A50
add sp, #0x58
pop {r3, r4, r5, r6, r7, pc}
_022483D0:
ldr r1, [sp, #0xc]
ldr r0, [sp, #0x10]
ldr r1, [r1, #0x20]
bl ov41_02249A50
add sp, #0x58
pop {r3, r4, r5, r6, r7, pc}
_022483DE:
ldr r0, [sp, #0x14]
cmp r0, #0
beq _022483F2
ldr r1, [sp, #0xc]
ldr r0, [sp, #0x10]
add r1, r1, #4
bl ov41_02249A50
add sp, #0x58
pop {r3, r4, r5, r6, r7, pc}
_022483F2:
ldr r1, [sp, #0xc]
ldr r0, [sp, #0x10]
ldr r1, [r1, #0x10]
bl ov41_02249A50
add sp, #0x58
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov41_02248324
thumb_func_start ov41_02248400
ov41_02248400: ; 0x02248400
push {r3, r4, r5, r6, lr}
sub sp, #0x24
add r5, r1, #0
add r4, r2, #0
add r6, r0, #0
add r1, sp, #0x20
add r2, sp, #0x1c
bl ov41_02249B94
add r0, r6, #0
add r1, sp, #0x18
add r2, sp, #0x14
bl ov41_02249B44
add r0, sp, #4
str r0, [sp]
add r0, r6, #0
add r1, sp, #0x10
add r2, sp, #8
add r3, sp, #0xc
bl ov41_02249BAC
ldr r0, [sp, #0x18]
ldr r1, [sp, #0x10]
ldr r3, [sp, #0xc]
add r2, r0, r1
mov r1, #0x8a
sub r2, r1, r2
ldr r1, [sp, #0x20]
add r1, r0, r1
ldr r0, [sp, #8]
sub r1, r1, r0
ldr r0, [sp, #0x14]
sub r1, #0xf6
add r6, r0, r3
mov r3, #0x12
sub r3, r3, r6
ldr r6, [sp, #0x1c]
add r6, r0, r6
ldr r0, [sp, #4]
sub r6, r6, r0
sub r6, #0x8f
cmp r2, #0
ble _0224845C
str r2, [r5]
b _0224846A
_0224845C:
cmp r1, #0
ble _02248466
neg r0, r1
str r0, [r5]
b _0224846A
_02248466:
mov r0, #0
str r0, [r5]
_0224846A:
cmp r3, #0
ble _02248474
add sp, #0x24
str r3, [r4]
pop {r3, r4, r5, r6, pc}
_02248474:
cmp r6, #0
ble _02248480
neg r0, r6
add sp, #0x24
str r0, [r4]
pop {r3, r4, r5, r6, pc}
_02248480:
mov r0, #0
str r0, [r4]
add sp, #0x24
pop {r3, r4, r5, r6, pc}
thumb_func_end ov41_02248400
thumb_func_start ov41_02248488
ov41_02248488: ; 0x02248488
push {r3, r4, r5, lr}
add r4, r1, #0
ldr r1, [r4]
add r5, r0, #0
str r1, [r5, #0x44]
ldr r1, [r4, #4]
str r1, [r5, #0x48]
ldr r1, [r4, #8]
str r1, [r5, #0x4c]
ldr r1, [r4, #0xc]
str r1, [r5, #0x50]
ldr r1, [r4, #0x10]
str r1, [r5, #0x54]
ldr r1, [r4, #0x14]
str r1, [r5, #0x58]
ldr r1, [r4, #0x18]
str r1, [r5, #8]
ldr r1, [r4, #0x28]
str r1, [r5, #4]
mov r1, #0
bl ov41_0224888C
add r0, r5, #0
add r1, r4, #0
bl ov41_022489A8
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_02248488
thumb_func_start ov41_022484C0
ov41_022484C0: ; 0x022484C0
push {r4, r5, r6, lr}
add r6, r0, #0
bl ov41_022486F8
add r5, r6, #0
mov r4, #0
add r5, #0xc
_022484CE:
add r0, r5, #0
bl ov41_02248A6C
add r4, r4, #1
add r5, #0xc
cmp r4, #4
blt _022484CE
add r0, r6, #0
mov r1, #0
mov r2, #0x8c
bl memset
pop {r4, r5, r6, pc}
thumb_func_end ov41_022484C0
thumb_func_start ov41_022484E8
ov41_022484E8: ; 0x022484E8
push {r3, lr}
cmp r0, #0
beq _022484F8
cmp r0, #1
beq _02248568
cmp r0, #2
beq _02248576
pop {r3, pc}
_022484F8:
cmp r1, #5
bgt _02248500
mov r0, #0
pop {r3, pc}
_02248500:
cmp r1, #0xb
bgt _02248508
mov r0, #1
pop {r3, pc}
_02248508:
cmp r1, #0x11
bgt _02248510
mov r0, #2
pop {r3, pc}
_02248510:
cmp r1, #0x15
bgt _02248518
mov r0, #3
pop {r3, pc}
_02248518:
cmp r1, #0x1c
bgt _02248520
mov r0, #4
pop {r3, pc}
_02248520:
cmp r1, #0x21
bgt _02248528
mov r0, #5
pop {r3, pc}
_02248528:
cmp r1, #0x26
bgt _02248530
mov r0, #6
pop {r3, pc}
_02248530:
cmp r1, #0x2a
bgt _02248538
mov r0, #7
pop {r3, pc}
_02248538:
cmp r1, #0x31
bgt _02248540
mov r0, #8
pop {r3, pc}
_02248540:
cmp r1, #0x37
bgt _02248548
mov r0, #9
pop {r3, pc}
_02248548:
cmp r1, #0x3c
bgt _02248550
mov r0, #0xa
pop {r3, pc}
_02248550:
cmp r1, #0x47
bgt _02248558
mov r0, #0xb
pop {r3, pc}
_02248558:
cmp r1, #0x5b
bgt _02248560
mov r0, #0xc
pop {r3, pc}
_02248560:
cmp r1, #0x63
bgt _02248582
mov r0, #0xd
pop {r3, pc}
_02248568:
add r0, r2, #0
bl ov41_02248EF4
mov r1, #9
bl _s32_div_f
pop {r3, pc}
_02248576:
add r0, r2, #0
bl ov41_02248EF4
mov r1, #9
bl _s32_div_f
_02248582:
pop {r3, pc}
thumb_func_end ov41_022484E8
thumb_func_start ov41_02248584
ov41_02248584: ; 0x02248584
push {r3, r4, r5, lr}
add r5, r2, #0
add r4, r3, #0
cmp r0, #0
beq _02248598
cmp r0, #1
beq _022485CA
cmp r0, #2
beq _022485CA
pop {r3, r4, r5, pc}
_02248598:
mov r0, #0xa
str r0, [r5]
mov r0, #0x12
str r0, [r4]
bl MTRandom
ldr r2, [sp, #0x10]
mov r1, #0x6c
sub r1, r1, r2
bl _u32_div_f
ldr r0, [r5]
add r0, r0, r1
str r0, [r5]
bl MTRandom
ldr r2, [sp, #0x14]
mov r1, #0x7d
sub r1, r1, r2
bl _u32_div_f
ldr r0, [r4]
add r0, r0, r1
str r0, [r4]
pop {r3, r4, r5, pc}
_022485CA:
ldr r0, [sp, #0x18]
bl ov41_02248EF4
add r1, r5, #0
add r2, r4, #0
bl ov41_02248B48
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_02248584
thumb_func_start ov41_022485DC
ov41_022485DC: ; 0x022485DC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x48
add r5, r0, #0
ldr r0, [r5, #0x58]
add r4, r2, #0
str r4, [sp, #0x40]
str r0, [sp, #0x28]
ldr r0, [r5, #0x44]
add r6, r1, #0
mov r1, #0
str r0, [sp, #0x2c]
str r1, [sp, #0x38]
str r1, [sp, #0x3c]
cmp r6, #0
beq _02248604
cmp r6, #1
beq _02248610
cmp r6, #2
beq _0224861E
b _0224862C
_02248604:
ldr r0, [r5, #0x50]
str r4, [sp, #0xc]
ldrb r0, [r0, r4]
add r7, r1, #0
str r0, [sp, #0x44]
b _02248630
_02248610:
add r0, r4, #0
str r0, [sp, #0xc]
add r0, #0x64
str r0, [sp, #0xc]
add r7, r4, #1
str r1, [sp, #0x44]
b _02248630
_0224861E:
add r0, r4, #0
str r0, [sp, #0xc]
add r0, #0x64
str r0, [sp, #0xc]
add r7, r4, #1
str r1, [sp, #0x44]
b _02248630
_0224862C:
bl GF_AssertFail
_02248630:
ldr r0, [sp, #0xc]
ldr r1, [r5, #0x48]
lsl r0, r0, #2
ldr r0, [r1, r0]
lsl r1, r7, #2
str r0, [sp, #0x30]
ldr r2, [r5, #0x4c]
cmp r0, #0
ldr r1, [r2, r1]
str r1, [sp, #0x34]
bne _0224864A
bl GF_AssertFail
_0224864A:
ldr r0, [sp, #0x34]
cmp r0, #0
bne _02248654
bl GF_AssertFail
_02248654:
ldr r2, [r5, #4]
add r0, r6, #0
add r1, r4, #0
bl ov41_022484E8
add r7, r0, #0
add r0, sp, #0x28
bl ov41_02245EE0
str r0, [sp, #0x10]
ldr r0, [r5, #8]
ldr r1, [sp, #0x10]
add r2, r6, #0
bl ov41_022499F0
mov r1, #0xc
mul r1, r6
add r1, r5, r1
ldr r2, [r1, #0xc]
lsl r1, r7, #4
add r1, r2, r1
ldr r1, [r1, #0xc]
str r0, [sp, #0x14]
bl ov41_02249A50
ldr r0, [sp, #0x14]
add r1, sp, #0x1c
add r2, sp, #0x18
bl ov41_02249B94
ldr r0, [sp, #0x1c]
add r1, r4, #0
str r0, [sp]
ldr r0, [sp, #0x18]
add r2, sp, #0x24
str r0, [sp, #4]
ldr r0, [r5, #4]
add r3, sp, #0x20
str r0, [sp, #8]
add r0, r6, #0
bl ov41_02248584
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x24]
ldr r2, [sp, #0x20]
bl ov41_02249AF4
ldr r1, [sp, #0x10]
add r0, r5, #0
add r2, r6, #0
add r3, r7, #0
bl ov41_02248B20
add sp, #0x48
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_022485DC
thumb_func_start ov41_022486C4
ov41_022486C4: ; 0x022486C4
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
mov r1, #0xc
add r5, r0, #0
mul r1, r4
add r7, r3, #0
add r1, r5, r1
add r6, r2, #0
ldr r2, [r1, #0xc]
lsl r1, r6, #4
add r0, r7, #0
add r1, r2, r1
bl ov41_02249A50
ldr r1, [r7]
add r0, r5, #0
add r2, r4, #0
add r3, r6, #0
bl ov41_02248B20
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_022486C4
thumb_func_start ov41_022486F0
ov41_022486F0: ; 0x022486F0
ldr r3, _022486F4 ; =ov41_02249A60
bx r3
.balign 4, 0
_022486F4: .word ov41_02249A60
thumb_func_end ov41_022486F0
thumb_func_start ov41_022486F8
ov41_022486F8: ; 0x022486F8
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
mov r7, #0
_022486FE:
ldr r0, [r5, #0x10]
mov r6, #0
cmp r0, #0
ble _0224871A
add r4, r6, #0
_02248708:
ldr r0, [r5, #0xc]
add r0, r0, r4
bl ov41_02249A70
ldr r0, [r5, #0x10]
add r6, r6, #1
add r4, #0x10
cmp r6, r0
blt _02248708
_0224871A:
add r7, r7, #1
add r5, #0xc
cmp r7, #3
blt _022486FE
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov41_022486F8
thumb_func_start ov41_02248724
ov41_02248724: ; 0x02248724
push {r4, r5, r6, lr}
mov r5, #0
mvn r5, r5
bl ov41_02248A94
add r6, r0, #0
ldr r4, [r6, #8]
cmp r4, r6
beq _0224874C
_02248736:
ldr r0, [r4, #4]
cmp r0, #2
bhi _02248744
ldr r0, [r4]
add r1, r5, #0
bl ov41_02246014
_02248744:
ldr r4, [r4, #8]
sub r5, r5, #1
cmp r4, r6
bne _02248736
_0224874C:
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov41_02248724
thumb_func_start ov41_02248750
ov41_02248750: ; 0x02248750
push {r3, r4, r5, r6, lr}
sub sp, #4
add r5, r0, #0
add r6, r1, #0
ldr r1, [r5, #0x3c]
add r4, r2, #0
cmp r1, #0
bne _02248788
ldr r1, [r5]
mov r2, #0xc
mul r2, r1
str r4, [sp]
add r2, r5, r2
ldr r2, [r2, #0x14]
add r3, r6, #0
bl ov41_02248B84
mov r0, #0xc
mul r0, r6
str r6, [r5]
add r0, r5, r0
str r4, [r0, #0x14]
add r0, r5, #0
bl ov41_02248724
add sp, #4
mov r0, #1
pop {r3, r4, r5, r6, pc}
_02248788:
mov r0, #0
add sp, #4
pop {r3, r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov41_02248750
thumb_func_start ov41_02248790
ov41_02248790: ; 0x02248790
push {r4, r5, r6, r7, lr}
sub sp, #0xc
str r1, [sp, #4]
str r0, [sp]
str r2, [sp, #8]
bl ov41_0224895C
add r7, r0, #0
ldr r0, [sp, #4]
mov r1, #0xc
mul r1, r0
ldr r0, [sp]
mov r4, #1
add r6, r0, r1
ldr r0, [r6, #0x10]
cmp r0, #1
ble _022487F2
_022487B2:
ldr r0, [sp, #8]
cmp r0, #0
bne _022487C4
ldr r1, [r6, #0x10]
add r0, r4, r7
bl _s32_div_f
add r5, r1, #0
b _022487CC
_022487C4:
sub r5, r7, r4
bpl _022487CC
ldr r0, [r6, #0x10]
add r5, r5, r0
_022487CC:
ldr r0, [sp]
ldr r1, [sp, #4]
add r2, r5, #0
bl ov41_02248ABC
ldr r1, [r0, #8]
cmp r1, r0
beq _022487EA
ldr r0, [sp]
ldr r1, [sp, #4]
add r2, r5, #0
bl ov41_02248750
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_022487EA:
ldr r0, [r6, #0x10]
add r4, r4, #1
cmp r4, r0
blt _022487B2
_022487F2:
mov r0, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end ov41_02248790
thumb_func_start ov41_022487F8
ov41_022487F8: ; 0x022487F8
push {r4, r5, r6, lr}
add r4, r1, #0
mov r1, #0
add r5, r0, #0
add r6, r2, #0
bl ov41_02248A18
mov r0, #0xc
mul r0, r4
str r4, [r5]
add r0, r5, r0
str r6, [r0, #0x14]
add r0, r5, #0
mov r1, #1
bl ov41_02248A18
add r0, r5, #0
bl ov41_02248724
pop {r4, r5, r6, pc}
thumb_func_end ov41_022487F8
thumb_func_start ov41_02248820
ov41_02248820: ; 0x02248820
push {r3, lr}
mov r1, #0x12
add r0, sp, #0
strb r1, [r0]
mov r1, #0x8f
strb r1, [r0, #1]
mov r1, #0xa
strb r1, [r0, #2]
mov r1, #0x76
strb r1, [r0, #3]
add r0, sp, #0
bl sub_020252F4
pop {r3, pc}
thumb_func_end ov41_02248820
thumb_func_start ov41_0224883C
ov41_0224883C: ; 0x0224883C
push {r3, lr}
mov r3, #0x12
add r0, sp, #0
strb r3, [r0]
mov r3, #0x8f
strb r3, [r0, #1]
mov r3, #0xa
strb r3, [r0, #2]
mov r3, #0x76
strb r3, [r0, #3]
add r0, sp, #0
bl sub_020253F0
pop {r3, pc}
thumb_func_end ov41_0224883C
thumb_func_start ov41_02248858
ov41_02248858: ; 0x02248858
push {r3, r4, r5, r6, r7, lr}
add r6, r1, #0
add r7, r2, #0
str r3, [sp]
bl ov41_02248A94
add r5, r0, #0
ldr r4, [r5, #8]
cmp r4, r5
beq _02248886
_0224886C:
ldr r3, [sp]
add r0, r4, #0
add r1, r6, #0
add r2, r7, #0
bl ov41_02249AA8
cmp r0, #1
bne _02248880
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
_02248880:
ldr r4, [r4, #8]
cmp r4, r5
bne _0224886C
_02248886:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_02248858
thumb_func_start ov41_0224888C
ov41_0224888C: ; 0x0224888C
push {r3, r4, r5, lr}
sub sp, #0x30
add r5, r0, #0
ldr r0, [r5, #0x54]
add r4, r1, #0
str r0, [sp]
mov r0, #0x1a
lsl r1, r4, #1
str r0, [sp, #4]
add r0, r1, #0
add r0, #0x81
str r0, [sp, #8]
mov r0, #0x85
str r0, [sp, #0xc]
mov r0, #8
str r0, [sp, #0x14]
mov r0, #0x81
str r0, [sp, #0x18]
mov r0, #3
str r0, [sp, #0x1c]
mov r0, #1
str r0, [sp, #0x20]
mov r0, #2
str r0, [sp, #0x24]
mov r0, #0
str r0, [sp, #0x28]
mov r0, #0xe
add r1, #0x82
str r0, [sp, #0x2c]
add r0, r5, #0
str r1, [sp, #0x10]
add r0, #0x5c
add r1, sp, #0
bl ov41_02249C7C
str r4, [r5, #0x40]
add sp, #0x30
pop {r3, r4, r5, pc}
thumb_func_end ov41_0224888C
thumb_func_start ov41_022488D8
ov41_022488D8: ; 0x022488D8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
add r5, r0, #0
ldr r0, [r5, #0x54]
add r4, r1, #0
str r0, [sp, #8]
mov r0, #0x1a
lsl r1, r4, #1
str r0, [sp, #0xc]
add r0, r1, #0
add r0, #0x81
str r0, [sp, #0x10]
mov r0, #0x85
str r0, [sp, #0x14]
mov r0, #8
add r1, #0x82
str r0, [sp, #0x1c]
mov r0, #0x81
str r1, [sp, #0x18]
str r0, [sp, #0x20]
mov r0, #3
mov r1, #2
str r0, [sp, #0x24]
mov r0, #1
str r1, [sp, #0x2c]
mov r7, #0
mov r1, #0xe
str r0, [sp, #0x28]
str r7, [sp, #0x30]
str r1, [sp, #0x34]
tst r0, r2
beq _0224891A
mov r7, #0x70
_0224891A:
mov r0, #2
tst r0, r2
beq _02248924
mov r6, #0x81
b _02248926
_02248924:
mov r6, #0
_02248926:
ldr r0, [sp, #0x50]
str r3, [sp]
str r0, [sp, #4]
add r0, r5, #0
add r0, #0x5c
add r1, sp, #8
add r2, r7, #0
add r3, r6, #0
bl ov41_02249DB4
str r4, [r5, #0x40]
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov41_022488D8
thumb_func_start ov41_02248940
ov41_02248940: ; 0x02248940
ldr r3, _02248948 ; =ov41_02249CC4
add r0, #0x5c
bx r3
nop
_02248948: .word ov41_02249CC4
thumb_func_end ov41_02248940
thumb_func_start ov41_0224894C
ov41_0224894C: ; 0x0224894C
push {r4, lr}
add r4, r0, #0
bne _02248956
bl GF_AssertFail
_02248956:
ldr r0, [r4]
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_0224894C
thumb_func_start ov41_0224895C
ov41_0224895C: ; 0x0224895C
push {r4, r5, lr}
sub sp, #0xc
add r5, r0, #0
add r4, r1, #0
cmp r5, #0
bne _0224896C
bl GF_AssertFail
_0224896C:
mov r0, #0xc
mul r0, r4
add r3, r5, r0
add r3, #0xc
ldmia r3!, {r0, r1}
add r2, sp, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r0, [sp, #8]
add sp, #0xc
pop {r4, r5, pc}
thumb_func_end ov41_0224895C
thumb_func_start ov41_02248984
ov41_02248984: ; 0x02248984
push {r4, lr}
add r4, r3, #0
bl ov41_02248ABC
ldr r2, [sp, #8]
add r1, r4, #0
bl ov41_02249BE8
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_02248984
thumb_func_start ov41_02248998
ov41_02248998: ; 0x02248998
ldr r0, [r0, #0x3c]
cmp r0, #0
bne _022489A2
mov r0, #1
bx lr
_022489A2:
mov r0, #0
bx lr
.balign 4, 0
thumb_func_end ov41_02248998
thumb_func_start ov41_022489A8
ov41_022489A8: ; 0x022489A8
push {r3, r4, r5, lr}
add r4, r1, #0
ldr r1, [r4, #0x1c]
add r5, r0, #0
add r0, #0xc
bl ov41_02248A28
mov r0, #0
str r0, [r5]
ldr r0, [r5, #0xc]
mov r1, #1
bl ov41_022489E4
add r0, r5, #0
ldr r1, [r4, #0x20]
add r0, #0x18
bl ov41_02248A28
add r0, r5, #0
ldr r1, [r4, #0x24]
add r0, #0x24
bl ov41_02248A28
add r5, #0x30
add r0, r5, #0
mov r1, #1
bl ov41_02248A28
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_022489A8
thumb_func_start ov41_022489E4
ov41_022489E4: ; 0x022489E4
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r4, [r5, #8]
add r6, r1, #0
cmp r4, r5
beq _02248A04
_022489F0:
ldr r0, [r4, #4]
cmp r0, #2
bhi _022489FE
ldr r0, [r4]
add r1, r6, #0
bl ov41_02246008
_022489FE:
ldr r4, [r4, #8]
cmp r4, r5
bne _022489F0
_02248A04:
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov41_022489E4
thumb_func_start ov41_02248A08
ov41_02248A08: ; 0x02248A08
push {r4, lr}
add r4, r3, #0
bl ov41_02248ABC
add r1, r4, #0
bl ov41_022489E4
pop {r4, pc}
thumb_func_end ov41_02248A08
thumb_func_start ov41_02248A18
ov41_02248A18: ; 0x02248A18
push {r4, lr}
add r4, r1, #0
bl ov41_02248A94
add r1, r4, #0
bl ov41_022489E4
pop {r4, pc}
thumb_func_end ov41_02248A18
thumb_func_start ov41_02248A28
ov41_02248A28: ; 0x02248A28
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r5, r0, #0
mov r0, #0xe
lsl r1, r4, #4
bl AllocFromHeap
str r0, [r5]
str r4, [r5, #4]
mov r6, #0
str r6, [r5, #8]
ldr r0, [r5, #4]
cmp r0, #0
ble _02248A68
add r4, r6, #0
add r7, r6, #0
_02248A48:
ldr r0, [r5]
add r1, r7, #0
add r0, r0, r4
str r0, [r0, #8]
ldr r0, [r5]
add r0, r0, r4
str r0, [r0, #0xc]
ldr r0, [r5]
add r0, r0, r4
bl ov41_022489E4
ldr r0, [r5, #4]
add r6, r6, #1
add r4, #0x10
cmp r6, r0
blt _02248A48
_02248A68:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_02248A28
thumb_func_start ov41_02248A6C
ov41_02248A6C: ; 0x02248A6C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl FreeToHeap
mov r0, #0
str r0, [r4]
strb r0, [r4]
strb r0, [r4, #1]
strb r0, [r4, #2]
strb r0, [r4, #3]
strb r0, [r4, #4]
strb r0, [r4, #5]
strb r0, [r4, #6]
strb r0, [r4, #7]
strb r0, [r4, #8]
strb r0, [r4, #9]
strb r0, [r4, #0xa]
strb r0, [r4, #0xb]
pop {r4, pc}
thumb_func_end ov41_02248A6C
thumb_func_start ov41_02248A94
ov41_02248A94: ; 0x02248A94
push {r3}
sub sp, #0xc
ldr r2, [r0]
mov r1, #0xc
mul r1, r2
add r3, r0, r1
add r3, #0xc
ldmia r3!, {r0, r1}
add r2, sp, #0
stmia r2!, {r0, r1}
ldr r0, [r3]
str r0, [r2]
ldr r0, [sp, #8]
ldr r1, [sp]
lsl r0, r0, #4
add r0, r1, r0
add sp, #0xc
pop {r3}
bx lr
.balign 4, 0
thumb_func_end ov41_02248A94
thumb_func_start ov41_02248ABC
ov41_02248ABC: ; 0x02248ABC
push {r4}
sub sp, #0xc
mov r3, #0xc
mul r3, r1
add r4, r0, r3
add r4, #0xc
ldmia r4!, {r0, r1}
add r3, sp, #0
stmia r3!, {r0, r1}
ldr r0, [r4]
str r0, [r3]
ldr r1, [sp]
lsl r0, r2, #4
add r0, r1, r0
add sp, #0xc
pop {r4}
bx lr
.balign 4, 0
thumb_func_end ov41_02248ABC
thumb_func_start ov41_02248AE0
ov41_02248AE0: ; 0x02248AE0
push {r4, lr}
mov r4, #0
bl ov41_02248ABC
ldr r1, [r0, #8]
cmp r1, r0
beq _02248AF6
_02248AEE:
ldr r1, [r1, #8]
add r4, r4, #1
cmp r1, r0
bne _02248AEE
_02248AF6:
add r0, r4, #0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_02248AE0
thumb_func_start ov41_02248AFC
ov41_02248AFC: ; 0x02248AFC
push {r3, r4, r5, lr}
add r5, r3, #0
mov r4, #0
bl ov41_02248ABC
ldr r1, [r0, #8]
cmp r1, r0
beq _02248B1C
_02248B0C:
cmp r4, r5
bne _02248B14
add r0, r1, #0
pop {r3, r4, r5, pc}
_02248B14:
ldr r1, [r1, #8]
add r4, r4, #1
cmp r1, r0
bne _02248B0C
_02248B1C:
mov r0, #0
pop {r3, r4, r5, pc}
thumb_func_end ov41_02248AFC
thumb_func_start ov41_02248B20
ov41_02248B20: ; 0x02248B20
push {r4, lr}
ldr r4, [r0]
cmp r4, r2
bne _02248B34
mov r4, #0xc
mul r4, r2
add r0, r0, r4
ldr r0, [r0, #0x14]
cmp r3, r0
beq _02248B3E
_02248B34:
add r0, r1, #0
mov r1, #0
bl ov41_02246008
pop {r4, pc}
_02248B3E:
add r0, r1, #0
mov r1, #1
bl ov41_02246008
pop {r4, pc}
thumb_func_end ov41_02248B20
thumb_func_start ov41_02248B48
ov41_02248B48: ; 0x02248B48
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
mov r1, #9
add r4, r2, #0
bl _s32_div_f
add r7, r1, #0
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 r0, r6, #1
lsl r2, r0, #3
lsl r0, r6, #5
add r0, r2, r0
add r0, #0x10
str r0, [r4]
add r0, r1, #1
lsl r2, r0, #3
mov r0, #0x18
mul r0, r1
add r0, r2, r0
add r0, #8
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov41_02248B48
thumb_func_start ov41_02248B84
ov41_02248B84: ; 0x02248B84
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
add r7, r2, #0
str r3, [sp]
ldr r0, _02248BF8 ; =ov41_02248BFC
mov r1, #0x30
mov r2, #0
mov r3, #0xd
bl sub_02007200
bl sub_0201F988
add r4, r0, #0
str r5, [r4]
str r6, [r4, #4]
ldr r0, [sp]
str r7, [r4, #8]
str r0, [r4, #0xc]
ldr r0, [sp, #0x18]
add r1, r6, #0
str r0, [r4, #0x10]
mov r0, #0
str r0, [r4, #0x1c]
add r0, r5, #0
add r2, r7, #0
bl ov41_02248AE0
str r0, [r4, #0x20]
ldr r1, [sp]
ldr r2, [sp, #0x18]
add r0, r5, #0
bl ov41_02248AE0
str r0, [r4, #0x24]
ldr r1, [r4, #0x20]
add r2, r1, r0
mov r1, #0xc
mov r0, #0xd
mul r1, r2
str r2, [r4, #0x2c]
bl AllocFromHeap
str r0, [r4, #0x28]
cmp r0, #0
bne _02248BE4
bl GF_AssertFail
_02248BE4:
ldr r3, [r4, #0x2c]
mov r2, #0xc
ldr r0, [r4, #0x28]
mov r1, #0
mul r2, r3
bl memset
mov r0, #1
str r0, [r5, #0x3c]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02248BF8: .word ov41_02248BFC
thumb_func_end ov41_02248B84
thumb_func_start ov41_02248BFC
ov41_02248BFC: ; 0x02248BFC
push {r3, r4, r5, r6, lr}
sub sp, #4
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4, #0x1c]
cmp r0, #4
bls _02248C0C
b _02248D54
_02248C0C:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02248C18: ; jump table
.short _02248C22 - _02248C18 - 2 ; case 0
.short _02248C76 - _02248C18 - 2 ; case 1
.short _02248CC2 - _02248C18 - 2 ; case 2
.short _02248D08 - _02248C18 - 2 ; case 3
.short _02248D20 - _02248C18 - 2 ; case 4
_02248C22:
mov r0, #0x83
mvn r0, r0
str r0, [sp]
ldr r0, [r4]
ldr r1, [r4, #0xc]
ldr r2, [r4, #0x10]
mov r3, #0
bl ov41_02248984
ldr r0, [r4]
ldr r1, [r4, #0xc]
ldr r2, [r4, #0x10]
mov r3, #1
bl ov41_02248A08
mov r0, #0
str r0, [r4, #0x14]
add r1, r4, #0
ldr r0, [r4]
add r1, #0x14
str r1, [sp]
ldr r1, [r0, #0x40]
add r1, r1, #1
lsr r3, r1, #0x1f
lsl r2, r1, #0x1f
sub r2, r2, r3
mov r1, #0x1f
ror r2, r1
add r1, r3, r2
mov r2, #2
mov r3, #5
bl ov41_022488D8
ldr r0, [r4, #0x20]
mov r1, #1
bl ov41_02248E10
str r0, [r4, #0x18]
ldr r0, [r4, #0x1c]
add r0, r0, #1
str r0, [r4, #0x1c]
b _02248D58
_02248C76:
ldr r0, [r4, #0x18]
mov r6, #0
cmp r0, #0
ble _02248CAA
add r5, r4, #0
add r5, #0x20
_02248C82:
ldr r0, [r4, #0x20]
sub r0, r0, #1
bmi _02248CA2
ldr r0, [r5]
sub r0, r0, #1
str r0, [r5]
ldr r0, [r4]
ldr r1, [r4, #4]
ldr r2, [r4, #8]
ldr r3, [r4, #0x20]
bl ov41_02248AFC
ldr r1, [r4, #0x28]
ldr r2, [r4, #0x2c]
bl ov41_02248D64
_02248CA2:
ldr r0, [r4, #0x18]
add r6, r6, #1
cmp r6, r0
blt _02248C82
_02248CAA:
ldr r0, [r4, #0x20]
cmp r0, #0
bne _02248D58
ldr r0, [r4, #0x24]
mov r1, #2
bl ov41_02248E10
str r0, [r4, #0x18]
ldr r0, [r4, #0x1c]
add r0, r0, #1
str r0, [r4, #0x1c]
b _02248D58
_02248CC2:
ldr r0, [r4, #0x18]
mov r6, #0
cmp r0, #0
ble _02248CF6
add r5, r4, #0
add r5, #0x24
_02248CCE:
ldr r0, [r4, #0x24]
sub r0, r0, #1
bmi _02248CEE
ldr r0, [r5]
sub r0, r0, #1
str r0, [r5]
ldr r0, [r4]
ldr r1, [r4, #0xc]
ldr r2, [r4, #0x10]
ldr r3, [r4, #0x24]
bl ov41_02248AFC
ldr r1, [r4, #0x28]
ldr r2, [r4, #0x2c]
bl ov41_02248D64
_02248CEE:
ldr r0, [r4, #0x18]
add r6, r6, #1
cmp r6, r0
blt _02248CCE
_02248CF6:
ldr r0, [r4, #0x24]
cmp r0, #0
bne _02248D58
ldr r0, [r4, #0x1c]
add r0, r0, #1
str r0, [r4, #0x1c]
mov r0, #0
str r0, [r4, #0x18]
b _02248D58
_02248D08:
ldr r0, [r4, #0x18]
add r0, r0, #1
str r0, [r4, #0x18]
cmp r0, #3
ble _02248D58
ldr r0, [r4, #0x14]
cmp r0, #0
beq _02248D58
ldr r0, [r4, #0x1c]
add r0, r0, #1
str r0, [r4, #0x1c]
b _02248D58
_02248D20:
ldr r0, [r4]
ldr r1, [r4, #4]
ldr r2, [r4, #8]
mov r3, #0
bl ov41_02248A08
mov r0, #0x83
mvn r0, r0
str r0, [sp]
ldr r0, [r4]
ldr r1, [r4, #4]
ldr r2, [r4, #8]
mov r3, #0
bl ov41_02248984
ldr r0, [r4]
mov r1, #0
str r1, [r0, #0x3c]
ldr r0, [r4, #0x28]
bl FreeToHeap
add r0, r5, #0
bl sub_02007234
add sp, #4
pop {r3, r4, r5, r6, pc}
_02248D54:
bl GF_AssertFail
_02248D58:
ldr r0, [r4, #0x28]
ldr r1, [r4, #0x2c]
bl ov41_02248DA4
add sp, #4
pop {r3, r4, r5, r6, pc}
thumb_func_end ov41_02248BFC
thumb_func_start ov41_02248D64
ov41_02248D64: ; 0x02248D64
push {r4, lr}
add r4, r0, #0
add r0, r1, #0
add r1, r2, #0
bl ov41_02248D7C
str r4, [r0]
mov r1, #3
str r1, [r0, #4]
mov r1, #0x2c
str r1, [r0, #8]
pop {r4, pc}
thumb_func_end ov41_02248D64
thumb_func_start ov41_02248D7C
ov41_02248D7C: ; 0x02248D7C
push {r3, r4}
mov r3, #0
cmp r1, #0
ble _02248D9E
add r4, r0, #0
_02248D86:
ldr r2, [r4]
cmp r2, #0
bne _02248D96
mov r1, #0xc
mul r1, r3
add r0, r0, r1
pop {r3, r4}
bx lr
_02248D96:
add r3, r3, #1
add r4, #0xc
cmp r3, r1
blt _02248D86
_02248D9E:
mov r0, #0
pop {r3, r4}
bx lr
thumb_func_end ov41_02248D7C
thumb_func_start ov41_02248DA4
ov41_02248DA4: ; 0x02248DA4
push {r4, r5, r6, lr}
add r6, r1, #0
add r5, r0, #0
mov r4, #0
cmp r6, #0
ble _02248DC4
_02248DB0:
ldr r0, [r5]
cmp r0, #0
beq _02248DBC
add r0, r5, #0
bl ov41_02248DC8
_02248DBC:
add r4, r4, #1
add r5, #0xc
cmp r4, r6
blt _02248DB0
_02248DC4:
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov41_02248DA4
thumb_func_start ov41_02248DC8
ov41_02248DC8: ; 0x02248DC8
push {r4, lr}
sub sp, #8
add r4, r0, #0
ldr r0, [r4]
add r1, sp, #4
add r2, sp, #0
bl ov41_02249B44
ldr r1, [sp]
ldr r0, [r4, #8]
add r2, r1, r0
str r2, [sp]
ldr r0, [r4]
ldr r1, [sp, #4]
bl ov41_02249AF4
ldr r0, [r4, #4]
sub r0, r0, #1
str r0, [r4, #4]
cmp r0, #0
bgt _02248E0C
mov r0, #0
strb r0, [r4]
strb r0, [r4, #1]
strb r0, [r4, #2]
strb r0, [r4, #3]
strb r0, [r4, #4]
strb r0, [r4, #5]
strb r0, [r4, #6]
strb r0, [r4, #7]
strb r0, [r4, #8]
strb r0, [r4, #9]
strb r0, [r4, #0xa]
strb r0, [r4, #0xb]
_02248E0C:
add sp, #8
pop {r4, pc}
thumb_func_end ov41_02248DC8
thumb_func_start ov41_02248E10
ov41_02248E10: ; 0x02248E10
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
bl _s32_div_f
sub r0, r4, r1
add r0, r5, r0
add r1, r4, #0
bl _s32_div_f
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_02248E10
thumb_func_start ov41_02248E28
ov41_02248E28: ; 0x02248E28
add r3, r0, #0
mov r2, #0x1c
mov r1, #0
_02248E2E:
strb r1, [r3]
add r3, r3, #1
sub r2, r2, #1
bne _02248E2E
ldr r1, _02248E40 ; =ov41_02248E80
str r1, [r0, #4]
str r1, [r0, #8]
str r1, [r0, #0xc]
bx lr
.balign 4, 0
_02248E40: .word ov41_02248E80
thumb_func_end ov41_02248E28
thumb_func_start ov41_02248E44
ov41_02248E44: ; 0x02248E44
push {r4, lr}
ldr r1, _02248E7C ; =gSystem + 0x40
add r4, r0, #0
ldrh r2, [r1, #0x24]
cmp r2, #0
beq _02248E56
ldr r1, [r4, #4]
blx r1
b _02248E6C
_02248E56:
ldrh r1, [r1, #0x26]
cmp r1, #0
beq _02248E62
ldr r1, [r4, #0xc]
blx r1
b _02248E6C
_02248E62:
ldrb r1, [r4, #0x18]
cmp r1, #0
beq _02248E6C
ldr r1, [r4, #8]
blx r1
_02248E6C:
ldr r0, _02248E7C ; =gSystem + 0x40
ldrh r1, [r0, #0x20]
strh r1, [r4, #0x14]
ldrh r1, [r0, #0x22]
strh r1, [r4, #0x16]
ldrh r0, [r0, #0x26]
strb r0, [r4, #0x18]
pop {r4, pc}
.balign 4, 0
_02248E7C: .word gSystem + 0x40
thumb_func_end ov41_02248E44
thumb_func_start ov41_02248E80
ov41_02248E80: ; 0x02248E80
bx lr
.balign 4, 0
thumb_func_end ov41_02248E80
thumb_func_start ov41_02248E84
ov41_02248E84: ; 0x02248E84
push {r3, r4, r5, r6, r7, lr}
add r7, r1, #0
add r6, r0, #0
mov r4, #0
add r5, r7, #0
_02248E8E:
add r0, r6, #0
add r1, r4, #0
bl sub_0202BA70
add r4, r4, #1
stmia r5!, {r0}
cmp r4, #0x64
blt _02248E8E
mov r0, #0x19
mov r3, #0
add r2, r7, #0
mov r1, #0x12
lsl r0, r0, #4
_02248EA8:
add r3, r3, #1
str r1, [r2, r0]
add r2, r2, #4
cmp r3, #0x12
blt _02248EA8
mov r5, #0x19
mov r4, #0
lsl r5, r5, #4
_02248EB8:
add r0, r6, #0
add r1, r4, #0
bl sub_0202BAB0
cmp r0, #0x12
beq _02248ECA
lsl r0, r0, #2
add r0, r7, r0
str r4, [r0, r5]
_02248ECA:
add r4, r4, #1
cmp r4, #0x12
blt _02248EB8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_02248E84
thumb_func_start ov41_02248ED4
ov41_02248ED4: ; 0x02248ED4
push {r3, r4, r5, lr}
add r5, r1, #0
add r4, r0, #0
cmp r5, #0x64
blo _02248EE2
bl GF_AssertFail
_02248EE2:
lsl r0, r5, #2
ldr r0, [r4, r0]
pop {r3, r4, r5, pc}
thumb_func_end ov41_02248ED4
thumb_func_start ov41_02248EE8
ov41_02248EE8: ; 0x02248EE8
lsl r1, r1, #2
add r1, r0, r1
mov r0, #0x19
lsl r0, r0, #4
ldr r0, [r1, r0]
bx lr
thumb_func_end ov41_02248EE8
thumb_func_start ov41_02248EF4
ov41_02248EF4: ; 0x02248EF4
push {r3, r4}
mov r2, #0x19
mov r4, #0
lsl r2, r2, #4
_02248EFC:
ldr r3, [r0, r2]
cmp r1, r3
bne _02248F08
add r0, r4, #0
pop {r3, r4}
bx lr
_02248F08:
add r4, r4, #1
add r0, r0, #4
cmp r4, #0x12
blt _02248EFC
add r0, r4, #0
pop {r3, r4}
bx lr
.balign 4, 0
thumb_func_end ov41_02248EF4
thumb_func_start ov41_02248F18
ov41_02248F18: ; 0x02248F18
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
bl ov41_02248E28
mov r0, #0xd
mov r1, #0x34
bl AllocFromHeap
str r0, [r5]
mov r1, #0
mov r2, #0x34
bl memset
ldr r1, [r5]
ldr r0, [sp, #0x18]
str r4, [r1, #4]
str r6, [r1, #8]
str r7, [r1]
str r0, [r1, #0xc]
ldr r0, [sp, #0x1c]
str r0, [r1, #0x2c]
ldr r0, _02248F5C ; =ov41_02248F80
str r0, [r5, #4]
ldr r0, _02248F60 ; =ov41_022490F0
str r0, [r5, #8]
ldr r0, _02248F64 ; =ov41_02249280
str r0, [r5, #0xc]
ldr r0, _02248F68 ; =ov41_02248F6C
str r0, [r5, #0x10]
pop {r3, r4, r5, r6, r7, pc}
nop
_02248F5C: .word ov41_02248F80
_02248F60: .word ov41_022490F0
_02248F64: .word ov41_02249280
_02248F68: .word ov41_02248F6C
thumb_func_end ov41_02248F18
thumb_func_start ov41_02248F6C
ov41_02248F6C: ; 0x02248F6C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl FreeToHeap
add r0, r4, #0
bl ov41_02248E28
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_02248F6C
thumb_func_start ov41_02248F80
ov41_02248F80: ; 0x02248F80
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
ldr r4, [r5]
ldr r0, [r4, #4]
bl ov41_022481BC
cmp r0, #0
beq _02249002
ldr r3, [r4]
ldr r0, [r4, #4]
ldr r3, [r3, #0x38]
add r1, sp, #0xc
add r2, sp, #8
bl ov41_022481F4
add r6, r0, #0
beq _02248FB2
ldr r0, [r6, #4]
cmp r0, #3
bne _02248FB2
ldr r0, [r4, #0x2c]
cmp r0, #0
bne _02248FB2
mov r6, #0
_02248FB2:
cmp r6, #0
beq _0224903E
ldr r0, [r6, #4]
cmp r0, #0
bne _02248FC8
ldr r0, [r4, #4]
add r1, r6, #0
bl ov41_022480C8
mov r7, #0
b _02248FE4
_02248FC8:
add r0, r6, #0
bl ov41_02248030
ldr r0, [r6]
bl ov41_02249710
add r1, r4, #0
add r2, r4, #0
add r7, r0, #0
add r0, r6, #0
add r1, #0x24
add r2, #0x28
bl ov41_02249B44
_02248FE4:
ldr r0, [r4, #4]
bl ov41_02248158
ldr r0, [sp, #8]
add r1, r6, #0
str r0, [sp]
str r7, [sp, #4]
ldr r3, [sp, #0xc]
add r0, r4, #0
mov r2, #1
bl ov41_022493BC
bl ov41_0224642C
b _0224903E
_02249002:
ldr r0, [r4, #8]
bl ov41_02248820
cmp r0, #0
beq _0224903E
ldr r3, [r4]
ldr r0, [r4, #8]
ldr r3, [r3, #0x38]
add r1, sp, #0xc
add r2, sp, #8
bl ov41_02248858
add r6, r0, #0
beq _0224903E
bl ov41_022486F0
ldr r0, [r4, #8]
bl ov41_02248724
ldr r0, [sp, #8]
mov r2, #0
str r0, [sp]
str r2, [sp, #4]
ldr r3, [sp, #0xc]
add r0, r4, #0
add r1, r6, #0
bl ov41_022493BC
bl ov41_0224642C
_0224903E:
ldr r1, [r4, #0x10]
cmp r1, #0
beq _02249088
ldr r1, [r1, #4]
ldr r0, _0224908C ; =0x000005EB
cmp r1, #0
beq _02249056
cmp r1, #1
beq _02249060
cmp r1, #3
beq _02249072
b _0224907A
_02249056:
ldr r1, _02249090 ; =ov41_022490F0
str r1, [r5, #8]
ldr r1, _02249094 ; =ov41_02249280
str r1, [r5, #0xc]
b _0224907A
_02249060:
ldr r0, _02249098 ; =ov41_022490B0
str r0, [r5, #8]
ldr r0, _0224909C ; =ov41_022490AC
str r0, [r5, #0xc]
add r0, r5, #0
bl ov41_02249390
ldr r0, _022490A0 ; =0x0000067D
b _0224907A
_02249072:
ldr r1, _022490A4 ; =ov41_022492B0
str r1, [r5, #8]
ldr r1, _022490A8 ; =ov41_022492E0
str r1, [r5, #0xc]
_0224907A:
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl PlaySE
add r0, r4, #0
bl ov41_02249574
_02249088:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0224908C: .word 0x000005EB
_02249090: .word ov41_022490F0
_02249094: .word ov41_02249280
_02249098: .word ov41_022490B0
_0224909C: .word ov41_022490AC
_022490A0: .word 0x0000067D
_022490A4: .word ov41_022492B0
_022490A8: .word ov41_022492E0
thumb_func_end ov41_02248F80
thumb_func_start ov41_022490AC
ov41_022490AC: ; 0x022490AC
bx lr
.balign 4, 0
thumb_func_end ov41_022490AC
thumb_func_start ov41_022490B0
ov41_022490B0: ; 0x022490B0
push {r4, lr}
sub sp, #8
ldr r4, [r0]
ldr r0, [r4, #0x10]
cmp r0, #0
beq _022490EA
ldr r0, [r0, #4]
cmp r0, #1
beq _022490C6
bl GF_AssertFail
_022490C6:
ldr r0, [r4, #0x10]
mov r2, #0x1c
ldr r0, [r0, #4]
mov r3, #0x1e
str r0, [sp]
add r0, r4, #0
add r0, #0x21
ldrb r0, [r0]
mov r1, #4
str r0, [sp, #4]
ldrsh r2, [r4, r2]
ldrsh r3, [r4, r3]
add r0, r4, #0
bl ov41_02249480
add r0, r4, #0
bl ov41_02249418
_022490EA:
add sp, #8
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_022490B0
thumb_func_start ov41_022490F0
ov41_022490F0: ; 0x022490F0
push {r4, r5, r6, lr}
sub sp, #0x28
add r6, r0, #0
ldr r4, [r6]
ldr r1, [r4, #0x10]
cmp r1, #0
bne _02249100
b _0224926E
_02249100:
add r1, sp, #0x18
str r1, [sp]
add r1, sp, #0x24
add r2, sp, #0x20
add r3, sp, #0x1c
bl ov41_0224946C
ldr r0, [r4, #4]
ldr r1, [sp, #0x1c]
ldr r2, [sp, #0x24]
bl ov41_022481D8
add r5, r0, #0
ldr r0, [r4, #4]
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x24]
bl ov41_022481D8
add r5, r5, r0
ldr r0, [r4, #4]
ldr r1, [sp, #0x1c]
ldr r2, [sp, #0x20]
bl ov41_022481D8
add r5, r5, r0
ldr r0, [r4, #4]
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x20]
bl ov41_022481D8
add r0, r5, r0
cmp r0, #4
blt _022491A2
ldr r2, [r4]
ldr r0, [r4, #4]
ldr r1, [r4, #0x10]
ldr r2, [r2, #0x38]
bl ov41_022480A4
cmp r0, #0
bne _0224918C
mov r0, #0x1c
ldrsh r0, [r4, r0]
str r0, [sp, #0xc]
mov r0, #0x1e
ldrsh r0, [r4, r0]
str r0, [sp, #8]
ldr r0, _02249274 ; =0x00000682
bl PlaySE
ldr r0, [r4, #0xc]
mov r1, #0x1b
mov r2, #0xd7
mov r3, #3
bl ov41_0224AC08
ldr r0, [r4, #0x10]
mov r1, #4
ldr r0, [r0, #4]
str r0, [sp]
add r0, r4, #0
add r0, #0x21
ldrb r0, [r0]
str r0, [sp, #4]
ldr r2, [sp, #0xc]
ldr r3, [sp, #8]
add r0, r4, #0
bl ov41_02249480
b _02249268
_0224918C:
ldr r0, [r4, #4]
bl ov41_02248158
bl ov41_022463FC
mov r0, #0
str r0, [r4, #0x30]
ldr r0, _02249278 ; =0x000005EA
bl PlaySE
b _02249268
_022491A2:
ldr r0, [r4, #0x10]
add r1, sp, #0x24
ldr r5, [r0]
add r0, sp, #0x18
str r0, [sp]
add r0, r6, #0
add r2, sp, #0x20
add r3, sp, #0x1c
bl ov41_0224942C
ldr r0, [r4, #8]
ldr r1, [sp, #0x1c]
ldr r2, [sp, #0x24]
bl ov41_0224883C
add r6, r0, #0
ldr r0, [r4, #8]
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x20]
bl ov41_0224883C
add r0, r6, r0
cmp r0, #2
bge _02249220
add r0, r4, #0
add r0, #0x20
ldrb r0, [r0]
cmp r0, #1
bne _0224920C
ldr r0, [r4, #0x10]
add r1, sp, #0x14
add r2, sp, #0x10
bl ov41_02249B94
bl MTRandom
ldr r2, [sp, #0x14]
mov r1, #0x6c
sub r1, r1, r2
bl _u32_div_f
add r1, #0xa
str r1, [sp, #0xc]
bl MTRandom
ldr r2, [sp, #0x10]
mov r1, #0x7d
sub r1, r1, r2
bl _u32_div_f
add r1, #0x12
str r1, [sp, #8]
b _02249218
_0224920C:
mov r0, #0x1c
ldrsh r0, [r4, r0]
str r0, [sp, #0xc]
mov r0, #0x1e
ldrsh r0, [r4, r0]
str r0, [sp, #8]
_02249218:
ldr r0, _02249274 ; =0x00000682
bl PlaySE
b _02249230
_02249220:
ldr r0, [r4, #0x10]
add r1, sp, #0xc
add r2, sp, #8
bl ov41_02249B44
ldr r0, _0224927C ; =0x000005EB
bl PlaySE
_02249230:
add r0, r4, #0
add r0, #0x20
ldrb r0, [r0]
cmp r0, #1
bne _0224924E
ldr r0, [r4, #0x10]
ldr r2, [r4, #8]
ldr r0, [r0, #4]
ldr r1, [r5]
ldr r2, [r2, #4]
bl ov41_022484E8
add r1, r4, #0
add r1, #0x21
strb r0, [r1]
_0224924E:
ldr r0, [r4, #0x10]
mov r1, #4
ldr r0, [r0, #4]
str r0, [sp]
add r0, r4, #0
add r0, #0x21
ldrb r0, [r0]
str r0, [sp, #4]
ldr r2, [sp, #0xc]
ldr r3, [sp, #8]
add r0, r4, #0
bl ov41_02249480
_02249268:
add r0, r4, #0
bl ov41_02249418
_0224926E:
add sp, #0x28
pop {r4, r5, r6, pc}
nop
_02249274: .word 0x00000682
_02249278: .word 0x000005EA
_0224927C: .word 0x000005EB
thumb_func_end ov41_022490F0
thumb_func_start ov41_02249280
ov41_02249280: ; 0x02249280
push {r4, lr}
ldr r2, [r0]
ldr r0, [r2, #0x10]
cmp r0, #0
beq _022492A4
ldr r3, _022492A8 ; =gSystem + 0x40
ldr r1, _022492AC ; =0x0000FFFF
ldrh r4, [r3, #0x20]
cmp r4, r1
beq _022492A4
beq _022492A4
ldrh r3, [r3, #0x22]
ldr r1, [r2, #0x14]
ldr r2, [r2, #0x18]
sub r1, r4, r1
sub r2, r3, r2
bl ov41_02249AF4
_022492A4:
pop {r4, pc}
nop
_022492A8: .word gSystem + 0x40
_022492AC: .word 0x0000FFFF
thumb_func_end ov41_02249280
thumb_func_start ov41_022492B0
ov41_022492B0: ; 0x022492B0
push {r4, lr}
ldr r4, [r0]
ldr r1, [r4, #0x10]
cmp r1, #0
beq _022492DA
ldr r0, [r4, #4]
bl ov41_02248020
ldr r0, [r4, #4]
bl ov41_02248158
bl ov41_022463FC
mov r0, #0
str r0, [r4, #0x30]
ldr r0, _022492DC ; =0x000005EB
bl PlaySE
add r0, r4, #0
bl ov41_02249418
_022492DA:
pop {r4, pc}
.balign 4, 0
_022492DC: .word 0x000005EB
thumb_func_end ov41_022492B0
thumb_func_start ov41_022492E0
ov41_022492E0: ; 0x022492E0
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
ldr r4, [r0]
str r0, [sp, #4]
ldr r0, [r4, #0x10]
cmp r0, #0
beq _02249384
ldr r1, _02249388 ; =gSystem + 0x40
ldrh r2, [r1, #0x20]
ldr r1, _0224938C ; =0x0000FFFF
cmp r2, r1
beq _02249384
beq _02249384
add r1, sp, #8
str r1, [sp]
add r1, sp, #0x14
add r2, sp, #0xc
add r3, sp, #0x10
bl ov41_02249BAC
ldr r0, [r4, #0x10]
add r1, sp, #0x1c
add r2, sp, #0x18
bl ov41_02249B94
ldr r0, _02249388 ; =gSystem + 0x40
ldr r1, [r4, #0x14]
ldrh r2, [r0, #0x20]
ldr r3, [sp, #0x18]
sub r5, r2, r1
ldrh r1, [r0, #0x22]
ldr r0, [r4, #0x18]
ldr r2, [sp, #0x1c]
sub r6, r1, r0
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x10]
sub r0, r2, r0
ldr r2, [sp, #8]
add r7, r6, r1
sub r2, r3, r2
ldr r3, [sp, #0x14]
str r2, [sp, #0x18]
add r2, r5, r3
str r0, [sp, #0x1c]
cmp r2, #0x8a
bgt _02249342
mov r0, #0x8a
sub r5, r0, r3
b _0224934C
_02249342:
add r2, r5, r0
cmp r2, #0xf6
blt _0224934C
mov r2, #0xf6
sub r5, r2, r0
_0224934C:
cmp r7, #0x12
bgt _02249356
mov r0, #0x12
sub r6, r0, r1
b _02249362
_02249356:
ldr r1, [sp, #0x18]
add r0, r6, r1
cmp r0, #0x8f
blt _02249362
mov r0, #0x8f
sub r6, r0, r1
_02249362:
ldr r0, [sp, #4]
add r1, r5, #0
add r2, r6, #0
bl ov41_022495A4
ldr r0, [r4, #4]
add r1, sp, #0x14
add r2, sp, #0x10
bl ov41_022482B8
ldr r1, [sp, #0x14]
ldr r2, [sp, #0x10]
ldr r0, [sp, #4]
add r1, r5, r1
add r2, r6, r2
bl ov41_022495A4
_02249384:
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02249388: .word gSystem + 0x40
_0224938C: .word 0x0000FFFF
thumb_func_end ov41_022492E0
thumb_func_start ov41_02249390
ov41_02249390: ; 0x02249390
push {r3, r4, r5, lr}
ldr r4, [r0]
ldr r0, [r4, #0x10]
cmp r0, #0
beq _022493B8
ldr r0, [r0, #4]
cmp r0, #1
beq _022493A4
bl GF_AssertFail
_022493A4:
ldr r0, [r4, #0x10]
ldr r5, [r0]
ldr r0, [r4, #4]
bl ov41_022482A8
ldr r0, [r4, #4]
ldr r1, [r5]
mov r2, #0xe
bl ov41_0224825C
_022493B8:
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_02249390
thumb_func_start ov41_022493BC
ov41_022493BC: ; 0x022493BC
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r4, r1, #0
add r5, r0, #0
add r6, r2, #0
add r0, r4, #0
add r1, sp, #4
add r2, sp, #0
add r7, r3, #0
bl ov41_02249B44
str r4, [r5, #0x10]
ldr r0, [sp, #4]
strh r0, [r5, #0x1c]
ldr r0, [sp]
strh r0, [r5, #0x1e]
add r0, r5, #0
add r0, #0x20
strb r6, [r0]
ldr r0, [sp, #0x20]
str r7, [r5, #0x14]
str r0, [r5, #0x18]
cmp r6, #0
bne _022493FE
ldr r1, [r5, #0x10]
ldr r0, [r5, #8]
ldr r1, [r1, #4]
bl ov41_0224895C
add r1, r5, #0
add r1, #0x21
strb r0, [r1]
b _02249406
_022493FE:
add r0, r5, #0
mov r1, #0
add r0, #0x21
strb r1, [r0]
_02249406:
mov r0, #1
str r0, [r5, #0x30]
ldr r1, [sp, #0x24]
add r0, r4, #0
bl ov41_02249A90
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_022493BC
thumb_func_start ov41_02249418
ov41_02249418: ; 0x02249418
mov r2, #0
str r2, [r0, #0x10]
strh r2, [r0, #0x1c]
add r1, r0, #0
strh r2, [r0, #0x1e]
add r1, #0x20
strb r2, [r1]
add r0, #0x21
strb r2, [r0]
bx lr
thumb_func_end ov41_02249418
thumb_func_start ov41_0224942C
ov41_0224942C: ; 0x0224942C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
ldr r4, [r0]
add r5, r1, #0
ldr r0, [r4, #0x10]
add r6, r2, #0
add r1, sp, #0xc
add r2, sp, #8
add r7, r3, #0
bl ov41_02249B94
ldr r0, [r4, #0x10]
add r1, sp, #4
add r2, sp, #0
bl ov41_02249B44
ldr r0, [sp]
str r0, [r5]
ldr r1, [sp]
ldr r0, [sp, #8]
add r0, r1, r0
str r0, [r6]
ldr r0, [sp, #4]
str r0, [r7]
ldr r1, [sp, #4]
ldr r0, [sp, #0xc]
add r1, r1, r0
ldr r0, [sp, #0x28]
str r1, [r0]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_0224942C
thumb_func_start ov41_0224946C
ov41_0224946C: ; 0x0224946C
push {r3, r4, lr}
sub sp, #4
ldr r4, [sp, #0x10]
str r4, [sp]
ldr r0, [r0]
ldr r0, [r0, #0x10]
bl ov41_02249C20
add sp, #4
pop {r3, r4, pc}
thumb_func_end ov41_0224946C
thumb_func_start ov41_02249480
ov41_02249480: ; 0x02249480
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
add r6, r1, #0
add r7, r2, #0
str r3, [sp]
ldr r0, _022494F0 ; =ov41_022494F4
mov r1, #0x2c
mov r2, #0
mov r3, #0xd
bl sub_02007200
bl sub_0201F988
add r4, r0, #0
ldr r0, [r5, #8]
add r1, sp, #8
str r0, [r4]
ldr r0, [r5, #0x10]
add r2, sp, #4
str r0, [r4, #4]
str r6, [r4, #0x20]
ldr r0, [sp]
str r7, [r4, #0x10]
str r0, [r4, #0x14]
ldr r0, [sp, #0x20]
str r0, [r4, #0x18]
ldr r0, [sp, #0x24]
str r0, [r4, #0x1c]
ldr r0, [r5, #8]
add r0, #0x3c
str r0, [r4, #0x24]
add r0, r5, #0
add r0, #0x30
str r0, [r4, #0x28]
ldr r0, [r5, #0x10]
bl ov41_02249B44
ldr r1, [r4, #0x10]
ldr r0, [sp, #8]
sub r0, r1, r0
add r1, r6, #0
bl _s32_div_f
str r0, [r4, #8]
ldr r1, [r4, #0x14]
ldr r0, [sp, #4]
sub r0, r1, r0
add r1, r6, #0
bl _s32_div_f
str r0, [r4, #0xc]
mov r0, #0
str r0, [r5, #0x30]
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_022494F0: .word ov41_022494F4
thumb_func_end ov41_02249480
thumb_func_start ov41_022494F4
ov41_022494F4: ; 0x022494F4
push {r3, r4, r5, lr}
sub sp, #8
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4, #0x24]
ldr r0, [r0]
cmp r0, #1
beq _0224956E
ldr r0, [r4, #4]
add r1, sp, #4
add r2, sp, #0
bl ov41_02249B44
ldr r1, [sp, #4]
ldr r0, [r4, #8]
add r0, r1, r0
str r0, [sp, #4]
ldr r1, [sp]
ldr r0, [r4, #0xc]
add r0, r1, r0
str r0, [sp]
ldr r0, [r4, #0x20]
sub r0, r0, #1
str r0, [r4, #0x20]
bmi _02249532
ldr r0, [r4, #8]
cmp r0, #0
bne _02249564
ldr r0, [r4, #0xc]
cmp r0, #0
bne _02249564
_02249532:
ldr r0, [r4, #4]
ldr r1, [r4, #0x10]
ldr r2, [r4, #0x14]
bl ov41_02249AF4
ldr r0, [r4]
ldr r1, [r4, #0x18]
ldr r2, [r4, #0x1c]
ldr r3, [r4, #4]
bl ov41_022486C4
ldr r0, [r4]
bl ov41_02248724
ldr r0, [r4, #0x28]
ldr r0, [r0]
cmp r0, #0
bne _0224955A
bl ov41_022463FC
_0224955A:
add r0, r5, #0
bl sub_02007234
add sp, #8
pop {r3, r4, r5, pc}
_02249564:
ldr r0, [r4, #4]
ldr r1, [sp, #4]
ldr r2, [sp]
bl ov41_02249AF4
_0224956E:
add sp, #8
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_022494F4
thumb_func_start ov41_02249574
ov41_02249574: ; 0x02249574
push {r3, lr}
ldr r3, [r0, #0x10]
ldr r1, [r3, #4]
cmp r1, #0
bne _0224958E
ldr r3, [r3]
ldr r0, [r0, #0xc]
ldr r3, [r3]
mov r1, #0x1b
mov r2, #0xd8
bl ov41_0224AC08
pop {r3, pc}
_0224958E:
cmp r1, #1
bne _022495A0
ldr r3, [r3]
ldr r0, [r0, #0xc]
ldr r3, [r3]
mov r1, #0x1b
mov r2, #0xda
bl ov41_0224AC08
_022495A0:
pop {r3, pc}
.balign 4, 0
thumb_func_end ov41_02249574
thumb_func_start ov41_022495A4
ov41_022495A4: ; 0x022495A4
push {r4, r5, r6, lr}
ldr r4, [r0]
add r5, r1, #0
ldr r0, [r4, #0x10]
add r6, r2, #0
bl ov41_02249AF4
ldr r1, [r4, #0x24]
ldr r2, [r4, #0x28]
ldr r0, [r4, #4]
sub r1, r5, r1
sub r2, r6, r2
bl ov41_02248114
str r5, [r4, #0x24]
str r6, [r4, #0x28]
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov41_022495A4
thumb_func_start ov41_022495C8
ov41_022495C8: ; 0x022495C8
push {r3, r4, r5, lr}
mov r2, #0
add r4, r1, #0
str r2, [sp]
add r5, r0, #0
ldrh r0, [r4]
ldrh r1, [r4, #2]
mov r3, #0xe
bl GfGfxLoader_LoadFromNarc
add r1, r0, #0
add r0, r5, #0
mov r2, #0x76
bl ov41_022463DC
ldrh r1, [r4]
ldr r0, [r0, #0x14]
bl sub_02009D28
pop {r3, r4, r5, pc}
thumb_func_end ov41_022495C8
thumb_func_start ov41_022495F0
ov41_022495F0: ; 0x022495F0
push {r4, lr}
sub sp, #8
ldr r4, [sp, #0x10]
str r4, [sp]
mov r4, #0
str r4, [sp, #4]
bl ov41_02249604
add sp, #8
pop {r4, pc}
thumb_func_end ov41_022495F0
thumb_func_start ov41_02249604
ov41_02249604: ; 0x02249604
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
add r6, r2, #0
add r5, r0, #0
add r7, r1, #0
add r4, r3, #0
add r0, r6, #0
mov r1, #5
mov r2, #0
bl GetMonData
add r0, r4, #0
add r1, r6, #0
mov r2, #2
bl sub_02070130
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
str r0, [sp, #0xc]
add r0, r7, #0
add r1, r4, #0
mov r2, #0xc0
mov r3, #0x38
bl sub_020085EC
str r0, [r5]
add r0, r5, #0
add r1, sp, #0x1c
add r2, sp, #0x18
bl ov41_022497A0
ldr r1, [sp, #0x1c]
mov r2, #0x38
lsr r0, r1, #0x1f
add r0, r1, r0
asr r0, r0, #1
ldr r1, [sp, #0x18]
str r0, [sp, #0x1c]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r0, r0, #1
str r0, [sp, #0x18]
sub r0, r2, r0
strb r0, [r5, #4]
ldr r0, [sp, #0x18]
mov r1, #0xc0
add r0, #0x38
strb r0, [r5, #5]
ldr r0, [sp, #0x1c]
sub r0, r1, r0
strb r0, [r5, #6]
ldr r0, [sp, #0x1c]
add r0, #0xc0
strb r0, [r5, #7]
ldr r0, [sp, #0x18]
str r0, [sp]
ldr r3, [sp, #0x1c]
add r0, r5, #4
bl ov41_02249978
add r0, r6, #0
mov r1, #2
bl sub_02070848
mov r2, #0
str r2, [sp]
add r7, r0, #0
ldrh r0, [r4]
ldrh r1, [r4, #2]
ldr r3, [sp, #0x38]
bl GfGfxLoader_LoadFromNarc
add r1, sp, #0x14
str r0, [sp, #0x10]
bl NNS_G2dGetUnpackedCharacterData
ldr r0, [sp, #0x14]
ldrh r1, [r4]
ldr r0, [r0, #0x14]
bl sub_02009D28
ldr r0, [sp, #0x3c]
cmp r0, #0
bne _022496C6
ldr r2, [sp, #0x14]
add r3, r5, #0
ldrh r1, [r2, #2]
ldr r0, [r2, #0x14]
ldrh r2, [r2]
lsl r1, r1, #3
add r3, #8
lsl r2, r2, #3
bl ov41_022498E8
b _022496DC
_022496C6:
ldr r1, [sp, #0x14]
ldr r0, [r1, #0x14]
ldrh r1, [r1, #2]
lsl r1, r1, #3
bl ov41_0224989C
strb r0, [r5, #8]
ldrb r0, [r5, #8]
strb r0, [r5, #9]
strb r7, [r5, #0xb]
strb r7, [r5, #0xa]
_022496DC:
ldr r0, [sp, #0x10]
bl FreeToHeap
str r6, [r5, #0xc]
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov41_02249604
thumb_func_start ov41_022496E8
ov41_022496E8: ; 0x022496E8
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl sub_02008780
mov r1, #0x10
mov r0, #0
_022496F6:
strb r0, [r4]
add r4, r4, #1
sub r1, r1, #1
bne _022496F6
pop {r4, pc}
thumb_func_end ov41_022496E8
thumb_func_start ov41_02249700
ov41_02249700: ; 0x02249700
ldr r3, _0224970C ; =sub_020087A4
add r2, r1, #0
ldr r0, [r0]
mov r1, #2
bx r3
nop
_0224970C: .word sub_020087A4
thumb_func_end ov41_02249700
thumb_func_start ov41_02249710
ov41_02249710: ; 0x02249710
ldr r3, _02249718 ; =sub_02008A78
ldr r0, [r0]
mov r1, #2
bx r3
.balign 4, 0
_02249718: .word sub_02008A78
thumb_func_end ov41_02249710
thumb_func_start ov41_0224971C
ov41_0224971C: ; 0x0224971C
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r4, r1, #0
add r6, r2, #0
add r5, r0, #0
add r1, sp, #8
add r2, sp, #4
bl ov41_022497A0
ldr r0, [r5]
mov r1, #0
add r2, r4, #0
bl sub_020087A4
ldr r0, [r5]
mov r1, #1
add r2, r6, #0
bl sub_020087A4
ldr r1, [sp, #4]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r2, r0, #1
ldr r1, [sp, #8]
str r2, [sp, #4]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r0, r0, #1
str r0, [sp, #8]
str r2, [sp]
ldr r3, [sp, #8]
add r0, r5, #4
add r1, r4, #0
add r2, r6, #0
bl ov41_02249978
add sp, #0xc
pop {r3, r4, r5, r6, pc}
thumb_func_end ov41_0224971C
thumb_func_start ov41_02249768
ov41_02249768: ; 0x02249768
ldr r3, _02249770 ; =sub_020252F4
add r0, r0, #4
bx r3
nop
_02249770: .word sub_020252F4
thumb_func_end ov41_02249768
thumb_func_start ov41_02249774
ov41_02249774: ; 0x02249774
ldr r3, _0224977C ; =sub_020253F0
add r0, r0, #4
bx r3
nop
_0224977C: .word sub_020253F0
thumb_func_end ov41_02249774
thumb_func_start ov41_02249780
ov41_02249780: ; 0x02249780
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5]
add r4, r1, #0
mov r1, #0
add r6, r2, #0
bl sub_02008A78
str r0, [r4]
ldr r0, [r5]
mov r1, #1
bl sub_02008A78
str r0, [r6]
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov41_02249780
thumb_func_start ov41_022497A0
ov41_022497A0: ; 0x022497A0
mov r0, #0x50
str r0, [r1]
str r0, [r2]
bx lr
thumb_func_end ov41_022497A0
thumb_func_start ov41_022497A8
ov41_022497A8: ; 0x022497A8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
bl ov41_02249768
cmp r0, #0
bne _022497C2
add sp, #0x10
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_022497C2:
add r0, r5, #0
add r1, sp, #4
add r2, sp, #0
bl ov41_02249780
add r0, r5, #0
add r1, sp, #0xc
add r2, sp, #8
bl ov41_022497A0
ldr r1, [sp, #0xc]
ldr r2, [sp, #4]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r0, r0, #1
sub r1, r2, r0
ldr r3, [sp, #8]
ldr r0, [sp]
lsr r2, r3, #0x1f
add r2, r3, r2
asr r2, r2, #1
sub r0, r0, r2
str r0, [sp]
ldr r0, _0224981C ; =gSystem + 0x40
str r1, [sp, #4]
ldrh r2, [r0, #0x20]
mov r3, #0
sub r1, r2, r1
str r1, [r4]
ldrh r1, [r0, #0x22]
ldr r0, [sp]
sub r2, r1, r0
str r2, [r6]
ldr r1, [r4]
add r0, r7, #0
bl ov41_022464BC
cmp r0, #0
bne _02249816
add sp, #0x10
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02249816:
mov r0, #0
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0224981C: .word gSystem + 0x40
thumb_func_end ov41_022497A8
thumb_func_start ov41_02249820
ov41_02249820: ; 0x02249820
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
bl ov41_02249774
cmp r0, #0
bne _0224983A
add sp, #0x10
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_0224983A:
add r0, r5, #0
add r1, sp, #4
add r2, sp, #0
bl ov41_02249780
add r0, r5, #0
add r1, sp, #0xc
add r2, sp, #8
bl ov41_022497A0
ldr r1, [sp, #0xc]
ldr r2, [sp, #4]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r0, r0, #1
sub r1, r2, r0
ldr r3, [sp, #8]
str r1, [sp, #4]
lsr r2, r3, #0x1f
add r2, r3, r2
ldr r0, [sp]
asr r2, r2, #1
sub r0, r0, r2
str r0, [sp]
sub r2, r6, r0
sub r1, r4, r1
add r0, r7, #0
mov r3, #0
bl ov41_022464BC
cmp r0, #0
bne _02249880
add sp, #0x10
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_02249880:
mov r0, #0
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_02249820
thumb_func_start ov41_02249888
ov41_02249888: ; 0x02249888
ldrb r2, [r0, #8]
strb r2, [r1]
ldrb r2, [r0, #9]
strb r2, [r1, #1]
ldrb r2, [r0, #0xa]
strb r2, [r1, #2]
ldrb r0, [r0, #0xb]
strb r0, [r1, #3]
bx lr
.balign 4, 0
thumb_func_end ov41_02249888
thumb_func_start ov41_0224989C
ov41_0224989C: ; 0x0224989C
push {r4, r5, r6, r7}
mov ip, r0
add r7, r1, #0
mov r2, #0
_022498A4:
mov r3, #0
add r4, r3, #0
_022498A8:
add r1, r2, r4
lsr r0, r1, #0x1f
lsl r6, r1, #0x1f
sub r6, r6, r0
mov r5, #0x1f
ror r6, r5
add r5, r0, r6
lsl r6, r5, #2
mov r5, #0xf
add r0, r1, r0
lsl r5, r6
asr r1, r0, #1
mov r0, ip
lsl r5, r5, #0x18
ldrsb r0, [r0, r1]
lsr r5, r5, #0x18
tst r0, r5
beq _022498D2
add r0, r2, #0
pop {r4, r5, r6, r7}
bx lr
_022498D2:
add r3, r3, #1
add r4, r4, r7
cmp r3, #0x50
blt _022498A8
add r2, r2, #1
cmp r2, #0x50
blt _022498A4
mov r0, #0x50
pop {r4, r5, r6, r7}
bx lr
.balign 4, 0
thumb_func_end ov41_0224989C
thumb_func_start ov41_022498E8
ov41_022498E8: ; 0x022498E8
push {r4, r5, r6, r7, lr}
sub sp, #0xc
str r0, [sp]
str r1, [sp, #4]
add r1, r3, #0
mov r0, #0x28
strb r0, [r1]
strb r0, [r1, #1]
strb r0, [r1, #2]
strb r0, [r1, #3]
mov r6, #0
_022498FE:
mov r2, #0x50
sub r2, r2, r6
str r2, [sp, #8]
lsl r2, r6, #0x18
lsr r2, r2, #0x18
mov lr, r2
ldr r2, [sp, #8]
mov r0, #0
lsl r2, r2, #0x18
lsr r2, r2, #0x18
add r5, r0, #0
mov ip, r2
_02249916:
add r7, r6, r5
lsr r3, r7, #0x1f
lsl r4, r7, #0x1f
sub r4, r4, r3
mov r2, #0x1f
ror r4, r2
add r2, r3, r4
lsl r4, r2, #2
mov r2, #0xf
lsl r2, r4
lsl r2, r2, #0x18
lsr r4, r2, #0x18
add r3, r7, r3
ldr r2, [sp]
asr r3, r3, #1
ldrsb r2, [r2, r3]
tst r2, r4
beq _02249964
ldrb r2, [r1]
cmp r2, r6
ble _02249944
mov r2, lr
strb r2, [r1]
_02249944:
ldrb r3, [r1, #1]
ldr r2, [sp, #8]
cmp r3, r2
ble _02249950
mov r2, ip
strb r2, [r1, #1]
_02249950:
ldrb r2, [r1, #2]
cmp r2, r0
ble _02249958
strb r0, [r1, #2]
_02249958:
mov r2, #0x50
sub r3, r2, r0
ldrb r2, [r1, #3]
cmp r2, r3
ble _02249964
strb r3, [r1, #3]
_02249964:
ldr r2, [sp, #4]
add r0, r0, #1
add r5, r5, r2
cmp r0, #0x50
blt _02249916
add r6, r6, #1
cmp r6, #0x50
blt _022498FE
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end ov41_022498E8
thumb_func_start ov41_02249978
ov41_02249978: ; 0x02249978
push {r3, r4}
ldr r4, [sp, #8]
sub r4, r2, r4
bmi _02249982
b _02249984
_02249982:
mov r4, #0
_02249984:
strb r4, [r0]
ldr r4, [sp, #8]
add r2, r2, r4
cmp r2, #0xbf
bgt _02249990
b _02249992
_02249990:
mov r2, #0xbf
_02249992:
strb r2, [r0, #1]
sub r2, r1, r3
bmi _0224999A
b _0224999C
_0224999A:
mov r2, #0
_0224999C:
add r1, r1, r3
strb r2, [r0, #2]
cmp r1, #0xff
bgt _022499AA
strb r1, [r0, #3]
pop {r3, r4}
bx lr
_022499AA:
mov r1, #0xff
strb r1, [r0, #3]
pop {r3, r4}
bx lr
.balign 4, 0
thumb_func_end ov41_02249978
thumb_func_start ov41_022499B4
ov41_022499B4: ; 0x022499B4
push {r4, r5, r6, lr}
add r6, r1, #0
lsl r4, r6, #4
add r5, r0, #0
add r0, r2, #0
add r1, r4, #0
bl AllocFromHeap
str r0, [r5]
cmp r0, #0
bne _022499CE
bl GF_AssertFail
_022499CE:
ldr r0, [r5]
mov r1, #0
add r2, r4, #0
bl memset
str r6, [r5, #4]
pop {r4, r5, r6, pc}
thumb_func_end ov41_022499B4
thumb_func_start ov41_022499DC
ov41_022499DC: ; 0x022499DC
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl FreeToHeap
mov r0, #0
str r0, [r4]
str r0, [r4, #4]
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_022499DC
thumb_func_start ov41_022499F0
ov41_022499F0: ; 0x022499F0
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, [r5]
add r6, r1, #0
add r7, r2, #0
cmp r0, #0
bne _02249A02
bl GF_AssertFail
_02249A02:
ldr r0, [r5, #4]
cmp r0, #0
bne _02249A0C
bl GF_AssertFail
_02249A0C:
ldr r2, [r5, #4]
mov r4, #0
cmp r2, #0
ble _02249A24
ldr r1, [r5]
_02249A16:
ldr r0, [r1]
cmp r0, #0
beq _02249A24
add r4, r4, #1
add r1, #0x10
cmp r4, r2
blt _02249A16
_02249A24:
cmp r2, r4
bgt _02249A2C
bl GF_AssertFail
_02249A2C:
ldr r0, [r5]
lsl r1, r4, #4
str r6, [r0, r1]
ldr r0, [r5]
add r0, r0, r1
str r7, [r0, #4]
ldr r0, [r5]
add r0, r0, r1
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_022499F0
thumb_func_start ov41_02249A40
ov41_02249A40: ; 0x02249A40
mov r2, #0x10
mov r1, #0
_02249A44:
strb r1, [r0]
add r0, r0, #1
sub r2, r2, #1
bne _02249A44
bx lr
.balign 4, 0
thumb_func_end ov41_02249A40
thumb_func_start ov41_02249A50
ov41_02249A50: ; 0x02249A50
ldr r2, [r1, #8]
str r2, [r0, #8]
ldr r2, [r1, #8]
str r0, [r2, #0xc]
str r1, [r0, #0xc]
str r0, [r1, #8]
bx lr
.balign 4, 0
thumb_func_end ov41_02249A50
thumb_func_start ov41_02249A60
ov41_02249A60: ; 0x02249A60
ldr r2, [r0, #8]
ldr r1, [r0, #0xc]
str r2, [r1, #8]
ldr r1, [r0, #0xc]
ldr r0, [r0, #8]
str r1, [r0, #0xc]
bx lr
.balign 4, 0
thumb_func_end ov41_02249A60
thumb_func_start ov41_02249A70
ov41_02249A70: ; 0x02249A70
push {r4, r5, r6, lr}
add r6, r0, #0
ldr r4, [r6, #8]
cmp r4, r6
beq _02249A8E
_02249A7A:
add r0, r4, #0
ldr r5, [r4, #8]
bl ov41_02249A60
add r0, r4, #0
bl ov41_02249A40
add r4, r5, #0
cmp r5, r6
bne _02249A7A
_02249A8E:
pop {r4, r5, r6, pc}
thumb_func_end ov41_02249A70
thumb_func_start ov41_02249A90
ov41_02249A90: ; 0x02249A90
push {r3, lr}
ldr r2, [r0, #4]
ldr r0, [r0]
cmp r2, #3
bge _02249AA0
bl ov41_02246014
pop {r3, pc}
_02249AA0:
bl ov41_02249700
pop {r3, pc}
.balign 4, 0
thumb_func_end ov41_02249A90
thumb_func_start ov41_02249AA8
ov41_02249AA8: ; 0x02249AA8
push {r4, lr}
ldr r4, [r0, #4]
cmp r4, #0
bne _02249ABE
ldr r0, [r0]
ldr r4, [r0]
lsl r4, r4, #2
ldr r3, [r3, r4]
bl ov41_02245F14
pop {r4, pc}
_02249ABE:
cmp r4, #1
bne _02249AD2
ldr r0, [r0]
ldr r4, [r0]
add r4, #0x64
lsl r4, r4, #2
ldr r3, [r3, r4]
bl ov41_02245F14
pop {r4, pc}
_02249AD2:
cmp r4, #2
ldr r0, [r0]
bne _02249AE6
ldr r4, [r0]
add r4, #0x64
lsl r4, r4, #2
ldr r3, [r3, r4]
bl ov41_02245F14
pop {r4, pc}
_02249AE6:
mov r4, #0x76
lsl r4, r4, #2
ldr r3, [r3, r4]
bl ov41_022497A8
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_02249AA8
thumb_func_start ov41_02249AF4
ov41_02249AF4: ; 0x02249AF4
push {r4, r5, r6, lr}
sub sp, #8
add r5, r1, #0
ldr r1, [r0, #4]
add r4, r2, #0
cmp r1, #3
bge _02249B14
lsl r1, r5, #0x10
lsl r2, r4, #0x10
ldr r0, [r0]
asr r1, r1, #0x10
asr r2, r2, #0x10
bl ov41_02245F9C
add sp, #8
pop {r4, r5, r6, pc}
_02249B14:
ldr r6, [r0]
add r1, sp, #4
add r0, r6, #0
add r2, sp, #0
bl ov41_022497A0
ldr r1, [sp, #4]
ldr r2, [sp]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r1, r0, #1
lsr r0, r2, #0x1f
add r0, r2, r0
asr r2, r0, #1
str r1, [sp, #4]
str r2, [sp]
add r0, r6, #0
add r1, r5, r1
add r2, r4, r2
bl ov41_0224971C
add sp, #8
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov41_02249AF4
thumb_func_start ov41_02249B44
ov41_02249B44: ; 0x02249B44
push {r4, r5, r6, lr}
sub sp, #8
ldr r3, [r0, #4]
add r5, r1, #0
add r4, r2, #0
cmp r3, #3
bge _02249B5C
ldr r0, [r0]
bl ov41_02245FA8
add sp, #8
pop {r4, r5, r6, pc}
_02249B5C:
ldr r6, [r0]
add r0, r6, #0
bl ov41_02249780
add r0, r6, #0
add r1, sp, #4
add r2, sp, #0
bl ov41_022497A0
ldr r1, [sp, #4]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r2, r0, #1
ldr r1, [sp]
str r2, [sp, #4]
lsr r0, r1, #0x1f
add r0, r1, r0
asr r0, r0, #1
str r0, [sp]
ldr r0, [r5]
sub r0, r0, r2
str r0, [r5]
ldr r1, [r4]
ldr r0, [sp]
sub r0, r1, r0
str r0, [r4]
add sp, #8
pop {r4, r5, r6, pc}
thumb_func_end ov41_02249B44
thumb_func_start ov41_02249B94
ov41_02249B94: ; 0x02249B94
push {r3, lr}
ldr r3, [r0, #4]
ldr r0, [r0]
cmp r3, #3
bge _02249BA4
bl ov41_02245FD8
pop {r3, pc}
_02249BA4:
bl ov41_022497A0
pop {r3, pc}
.balign 4, 0
thumb_func_end ov41_02249B94
thumb_func_start ov41_02249BAC
ov41_02249BAC: ; 0x02249BAC
push {r3, r4, r5, r6, r7, lr}
add r7, r2, #0
ldr r2, [r0, #4]
add r6, r1, #0
add r5, r3, #0
ldr r4, [sp, #0x18]
cmp r2, #3
ldr r0, [r0]
bge _02249BCE
add r2, r5, #0
bl ov41_02246020
ldr r0, [r6]
str r0, [r7]
ldr r0, [r5]
str r0, [r4]
pop {r3, r4, r5, r6, r7, pc}
_02249BCE:
add r1, sp, #0
bl ov41_02249888
add r0, sp, #0
ldrb r1, [r0]
str r1, [r6]
ldrb r1, [r0, #1]
str r1, [r7]
ldrb r1, [r0, #2]
str r1, [r5]
ldrb r0, [r0, #3]
str r0, [r4]
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov41_02249BAC
thumb_func_start ov41_02249BE8
ov41_02249BE8: ; 0x02249BE8
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r5, r0, #0
ldr r4, [r5, #8]
add r6, r1, #0
add r7, r2, #0
cmp r4, r5
beq _02249C1A
_02249BF8:
add r0, r4, #0
add r1, sp, #4
add r2, sp, #0
bl ov41_02249B44
ldr r0, [sp, #4]
add r1, r0, r6
ldr r0, [sp]
str r1, [sp, #4]
add r2, r0, r7
str r2, [sp]
add r0, r4, #0
bl ov41_02249AF4
ldr r4, [r4, #8]
cmp r4, r5
bne _02249BF8
_02249C1A:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_02249BE8
thumb_func_start ov41_02249C20
ov41_02249C20: ; 0x02249C20
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r4, r1, #0
add r6, r2, #0
add r5, r0, #0
add r1, sp, #0x20
add r2, sp, #0x1c
add r7, r3, #0
bl ov41_02249B94
add r0, r5, #0
add r1, sp, #0x18
add r2, sp, #0x14
bl ov41_02249B44
add r0, sp, #4
str r0, [sp]
add r0, r5, #0
add r1, sp, #0x10
add r2, sp, #8
add r3, sp, #0xc
bl ov41_02249BAC
ldr r1, [sp, #0x14]
ldr r0, [sp, #0xc]
add r0, r1, r0
str r0, [r4]
ldr r1, [sp, #0x14]
ldr r0, [sp, #0x1c]
add r1, r1, r0
ldr r0, [sp, #4]
sub r0, r1, r0
str r0, [r6]
ldr r1, [sp, #0x18]
ldr r0, [sp, #0x10]
add r0, r1, r0
str r0, [r7]
ldr r1, [sp, #0x18]
ldr r0, [sp, #0x20]
add r1, r1, r0
ldr r0, [sp, #8]
sub r1, r1, r0
ldr r0, [sp, #0x38]
str r1, [r0]
add sp, #0x24
pop {r4, r5, r6, r7, pc}
thumb_func_end ov41_02249C20
thumb_func_start ov41_02249C7C
ov41_02249C7C: ; 0x02249C7C
add r2, r0, #0
ldr r0, [r1]
str r0, [r2]
ldr r3, [r1, #0x14]
asr r0, r3, #2
lsr r0, r0, #0x1d
add r0, r3, r0
asr r0, r0, #3
str r0, [r2, #0xc]
ldr r3, [r1, #0x18]
asr r0, r3, #2
lsr r0, r0, #0x1d
add r0, r3, r0
asr r0, r0, #3
str r0, [r2, #0x10]
ldr r0, [r1, #0x1c]
ldr r3, _02249CC0 ; =ov41_02249E60
str r0, [r2, #0x1c]
ldr r0, [r1, #0x24]
str r0, [r2, #0x20]
ldr r0, [r1, #0x20]
str r0, [r2, #0x24]
ldr r0, [r1, #0x28]
str r0, [r2, #0x28]
ldr r0, [r1, #4]
str r0, [r2, #4]
ldr r0, [r1, #0x10]
str r0, [r2, #8]
add r0, r1, #0
add r1, r2, #0
add r1, #0x14
add r2, #0x18
bx r3
nop
_02249CC0: .word ov41_02249E60
thumb_func_end ov41_02249C7C
thumb_func_start ov41_02249CC4
ov41_02249CC4: ; 0x02249CC4
push {r4, lr}
add r4, r0, #0
ldr r1, [r4, #0x1c]
ldr r0, [r4]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl BgClearTilemapBufferAndCommit
add r0, r4, #0
mov r1, #0
mov r2, #0x2c
bl memset
pop {r4, pc}
thumb_func_end ov41_02249CC4
thumb_func_start ov41_02249CE0
ov41_02249CE0: ; 0x02249CE0
ldr r2, [r1]
str r2, [r0]
ldr r2, [r1, #4]
str r2, [r0, #4]
ldr r2, [r1, #8]
str r2, [r0, #8]
mov r2, #0
str r2, [r0, #0xc]
str r2, [r0, #0x10]
ldr r1, [r1, #0xc]
str r1, [r0, #0x14]
bx lr
thumb_func_end ov41_02249CE0
thumb_func_start ov41_02249CF8
ov41_02249CF8: ; 0x02249CF8
push {r3, r4, r5, lr}
sub sp, #0x18
add r5, r0, #0
ldr r0, [r5, #0xc]
add r1, r0, r1
str r1, [r5, #0xc]
ldr r0, [r5, #8]
cmp r1, r0
ble _02249D5C
mov r2, #0
str r2, [r5, #0xc]
ldr r0, [r5, #0x10]
cmp r0, #0
bne _02249D1C
ldr r1, [r5, #4]
mov r0, #1
str r0, [r5, #0x10]
b _02249D22
_02249D1C:
ldr r0, [r5]
ldr r1, [r0, #8]
str r2, [r5, #0x10]
_02249D22:
ldr r0, [r5, #0x14]
mov r2, #0
str r0, [sp]
ldr r0, [r5]
add r3, sp, #0x14
ldr r0, [r0, #4]
bl GfGfxLoader_GetScrnData
ldr r3, [r5]
add r4, r0, #0
ldr r0, [r3, #0x18]
str r0, [sp]
ldr r0, [r3, #0xc]
str r0, [sp, #4]
ldr r0, [r3, #0x10]
str r0, [sp, #8]
ldr r0, [r3, #0x28]
str r0, [sp, #0xc]
ldr r0, [r3, #0x20]
str r0, [sp, #0x10]
ldr r0, [r3]
ldr r1, [r3, #0x1c]
ldr r2, [sp, #0x14]
ldr r3, [r3, #0x14]
bl ov41_02249F7C
add r0, r4, #0
bl FreeToHeap
_02249D5C:
add sp, #0x18
pop {r3, r4, r5, pc}
thumb_func_end ov41_02249CF8
thumb_func_start ov41_02249D60
ov41_02249D60: ; 0x02249D60
push {r3, r4, r5, lr}
sub sp, #0x18
add r5, r0, #0
ldr r1, [r5]
ldr r0, [r5, #0x14]
mov r2, #0
str r0, [sp]
ldr r0, [r1, #4]
ldr r1, [r1, #8]
add r3, sp, #0x14
bl GfGfxLoader_GetScrnData
ldr r3, [r5]
add r4, r0, #0
ldr r0, [r3, #0x18]
str r0, [sp]
ldr r0, [r3, #0xc]
str r0, [sp, #4]
ldr r0, [r3, #0x10]
str r0, [sp, #8]
ldr r0, [r3, #0x28]
str r0, [sp, #0xc]
ldr r0, [r3, #0x20]
str r0, [sp, #0x10]
ldr r0, [r3]
ldr r1, [r3, #0x1c]
ldr r2, [sp, #0x14]
ldr r3, [r3, #0x14]
bl ov41_02249F7C
add r0, r4, #0
bl FreeToHeap
mov r1, #0x18
mov r0, #0
_02249DA6:
strb r0, [r5]
add r5, r5, #1
sub r1, r1, #1
bne _02249DA6
add sp, #0x18
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_02249D60
thumb_func_start ov41_02249DB4
ov41_02249DB4: ; 0x02249DB4
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r6, r0, #0
add r5, r1, #0
str r2, [sp]
str r3, [sp, #4]
ldr r0, _02249E3C ; =ov41_02249F0C
mov r1, #0x4c
mov r2, #0
mov r3, #0xd
bl sub_02007200
bl sub_0201F988
add r4, r0, #0
str r6, [r4]
add r7, r5, #0
add r3, r4, #4
mov r2, #6
_02249DDA:
ldmia r7!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _02249DDA
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x20]
str r0, [r4, #0x34]
ldr r0, [sp]
str r1, [r4, #0x38]
bl _s32_div_f
str r0, [r4, #0x3c]
ldr r0, [sp, #4]
ldr r1, [sp, #0x20]
bl _s32_div_f
str r0, [r4, #0x40]
ldr r0, [r6]
ldr r1, [r6, #0x1c]
bl Bg_GetXpos
str r0, [r4, #0x44]
ldr r0, [r6]
ldr r1, [r6, #0x1c]
bl Bg_GetYpos
str r0, [r4, #0x48]
mov r0, #0x80
str r0, [r5, #0x28]
mov r0, #5
str r0, [r5, #0x24]
ldr r1, [r5, #0x14]
ldr r0, [sp]
sub r0, r1, r0
str r0, [r5, #0x14]
ldr r1, [r5, #0x18]
ldr r0, [sp, #4]
sub r0, r1, r0
str r0, [r5, #0x18]
mov r0, #0xe
mov r1, #0
str r0, [r5, #0x2c]
add r0, r5, #0
add r2, r1, #0
bl ov41_02249E60
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
nop
_02249E3C: .word ov41_02249F0C
thumb_func_end ov41_02249DB4
thumb_func_start ov41_02249E40
ov41_02249E40: ; 0x02249E40
push {r3, r4}
ldr r2, [r0, #8]
add r0, #0xc
lsr r4, r2, #1
mov r3, #0
cmp r4, #0
ble _02249E5C
_02249E4E:
ldrh r2, [r0]
add r3, r3, #1
add r2, r2, r1
strh r2, [r0]
add r0, r0, #2
cmp r3, r4
blt _02249E4E
_02249E5C:
pop {r3, r4}
bx lr
thumb_func_end ov41_02249E40
thumb_func_start ov41_02249E60
ov41_02249E60: ; 0x02249E60
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
add r5, r0, #0
add r4, r1, #0
ldr r1, [r5, #0x14]
add r6, r2, #0
asr r0, r1, #2
lsr r0, r0, #0x1d
add r0, r1, r0
asr r0, r0, #3
ldr r1, [r5, #0x18]
str r0, [sp, #0x18]
asr r0, r1, #2
lsr r0, r0, #0x1d
add r0, r1, r0
asr r0, r0, #3
str r0, [sp, #0x14]
ldr r0, [r5, #0x28]
str r0, [sp]
ldr r0, [r5, #0x2c]
str r0, [sp, #4]
ldr r0, [r5, #4]
ldr r1, [r5, #8]
ldr r2, [r5]
ldr r3, [r5, #0x1c]
bl ov41_02249FFC
ldr r0, [r5, #0x1c]
cmp r0, #4
bge _02249EA0
mov r2, #0
b _02249EA2
_02249EA0:
mov r2, #4
_02249EA2:
ldr r0, [r5, #0x20]
lsl r0, r0, #5
str r0, [sp]
ldr r0, [r5, #0x2c]
str r0, [sp, #4]
ldr r3, [r5, #0x24]
ldr r0, [r5, #4]
ldr r1, [r5, #0xc]
lsl r3, r3, #5
bl ov41_0224A04C
ldr r0, [r5, #0x2c]
mov r2, #0
str r0, [sp]
ldr r0, [r5, #4]
ldr r1, [r5, #0x10]
add r3, sp, #0x24
bl GfGfxLoader_GetScrnData
ldr r2, [sp, #0x24]
str r0, [sp, #0x20]
ldrh r0, [r2]
lsr r7, r0, #3
ldrh r0, [r2, #2]
add r3, r7, #0
lsr r0, r0, #3
str r0, [sp, #0x1c]
str r0, [sp]
ldr r0, [sp, #0x18]
str r0, [sp, #4]
ldr r0, [sp, #0x14]
str r0, [sp, #8]
ldr r0, [r5, #0x28]
str r0, [sp, #0xc]
ldr r0, [r5, #0x24]
str r0, [sp, #0x10]
ldr r0, [r5]
ldr r1, [r5, #0x1c]
bl ov41_02249F7C
ldr r0, [sp, #0x20]
bl FreeToHeap
cmp r4, #0
beq _02249EFE
str r7, [r4]
_02249EFE:
cmp r6, #0
beq _02249F06
ldr r0, [sp, #0x1c]
str r0, [r6]
_02249F06:
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_02249E60
thumb_func_start ov41_02249F0C
ov41_02249F0C: ; 0x02249F0C
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4, #0x38]
sub r0, r0, #1
str r0, [r4, #0x38]
ldr r1, [r4]
bmi _02249F40
ldr r0, [r1]
ldr r1, [r1, #0x1c]
ldr r3, [r4, #0x3c]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
mov r2, #2
bl ScheduleSetBgPosText
ldr r1, [r4]
ldr r3, [r4, #0x40]
ldr r0, [r1]
ldr r1, [r1, #0x1c]
mov r2, #5
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ScheduleSetBgPosText
pop {r3, r4, r5, pc}
_02249F40:
ldr r0, [r1]
ldr r1, [r1, #0x1c]
ldr r3, [r4, #0x44]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
mov r2, #0
bl ScheduleSetBgPosText
ldr r1, [r4]
ldr r3, [r4, #0x48]
ldr r0, [r1]
ldr r1, [r1, #0x1c]
mov r2, #3
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl ScheduleSetBgPosText
ldr r0, [r4]
add r1, r4, #4
bl ov41_02249C7C
ldr r1, [r4, #0x34]
cmp r1, #0
beq _02249F74
mov r0, #1
str r0, [r1]
_02249F74:
add r0, r5, #0
bl sub_02007234
pop {r3, r4, r5, pc}
thumb_func_end ov41_02249F0C
thumb_func_start ov41_02249F7C
ov41_02249F7C: ; 0x02249F7C
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r5, r1, #0
add r4, r2, #0
add r7, r0, #0
ldr r1, [sp, #0x3c]
add r0, r4, #0
add r6, r3, #0
bl ov41_02249E40
ldr r1, [sp, #0x30]
lsl r0, r6, #0x18
lsr r0, r0, #0x18
lsl r1, r1, #0x18
lsr r2, r1, #0x18
str r0, [sp]
ldr r3, [sp, #0x38]
str r2, [sp, #4]
add r4, #0xc
lsl r3, r3, #0x18
str r4, [sp, #8]
mov r1, #0
str r1, [sp, #0xc]
str r1, [sp, #0x10]
str r0, [sp, #0x14]
str r2, [sp, #0x18]
ldr r2, [sp, #0x34]
lsl r1, r5, #0x18
lsl r2, r2, #0x18
add r0, r7, #0
lsr r1, r1, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
bl CopyToBgTilemapRect
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp]
ldr r0, [sp, #0x30]
ldr r2, [sp, #0x34]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
ldr r0, [sp, #0x40]
ldr r3, [sp, #0x38]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
lsl r1, r5, #0x18
lsl r2, r2, #0x18
lsl r3, r3, #0x18
str r0, [sp, #8]
add r0, r7, #0
lsr r1, r1, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
bl BgTilemapRectChangePalette
lsl r1, r5, #0x18
add r0, r7, #0
lsr r1, r1, #0x18
bl ScheduleBgTilemapBufferTransfer
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
thumb_func_end ov41_02249F7C
thumb_func_start ov41_02249FFC
ov41_02249FFC: ; 0x02249FFC
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r7, r0, #0
str r1, [sp, #4]
ldr r0, [sp, #0x24]
mov r1, #0x14
add r5, r2, #0
add r6, r3, #0
bl AllocFromHeap
add r4, r0, #0
add r2, r4, #0
mov r1, #0x14
mov r0, #0
_0224A018:
strb r0, [r2]
add r2, r2, #1
sub r1, r1, #1
bne _0224A018
ldr r0, [sp, #0x24]
ldr r1, [sp, #4]
str r0, [sp]
add r0, r7, #0
mov r2, #0
add r3, r4, #4
bl GfGfxLoader_GetCharData
str r0, [r4, #8]
str r5, [r4]
ldr r0, [sp, #0x20]
str r6, [r4, #0xc]
str r0, [r4, #0x10]
ldr r0, _0224A048 ; =ov41_0224A094
add r1, r4, #0
mov r2, #0x80
bl sub_0200E374
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0224A048: .word ov41_0224A094
thumb_func_end ov41_02249FFC
thumb_func_start ov41_0224A04C
ov41_0224A04C: ; 0x0224A04C
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
str r1, [sp]
ldr r0, [sp, #0x1c]
mov r1, #0x14
add r5, r2, #0
add r6, r3, #0
bl AllocFromHeap
add r4, r0, #0
add r2, r4, #0
mov r1, #0x14
mov r0, #0
_0224A066:
strb r0, [r2]
add r2, r2, #1
sub r1, r1, #1
bne _0224A066
ldr r1, [sp]
ldr r3, [sp, #0x1c]
add r0, r7, #0
add r2, r4, #0
bl GfGfxLoader_GetPlttData
str r0, [r4, #4]
str r5, [r4, #8]
ldr r0, [sp, #0x18]
str r6, [r4, #0xc]
str r0, [r4, #0x10]
ldr r0, _0224A090 ; =ov41_0224A0D0
add r1, r4, #0
mov r2, #0x80
bl sub_0200E374
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0224A090: .word ov41_0224A0D0
thumb_func_end ov41_0224A04C
thumb_func_start ov41_0224A094
ov41_0224A094: ; 0x0224A094
push {r3, r4, r5, lr}
add r4, r1, #0
ldr r1, [r4, #4]
add r5, r0, #0
ldr r0, [r1, #0x14]
ldr r1, [r1, #0x10]
bl DC_FlushRange
ldr r3, [r4, #4]
ldr r0, [r4, #0x10]
str r0, [sp]
ldr r1, [r4, #0xc]
ldr r2, [r3, #0x14]
lsl r1, r1, #0x18
ldr r0, [r4]
ldr r3, [r3, #0x10]
lsr r1, r1, #0x18
bl BG_LoadCharTilesData
add r0, r5, #0
bl DestroySysTask
ldr r0, [r4, #8]
bl FreeToHeap
add r0, r4, #0
bl FreeToHeap
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_0224A094
thumb_func_start ov41_0224A0D0
ov41_0224A0D0: ; 0x0224A0D0
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4]
ldr r1, [r4, #0x10]
ldr r0, [r0, #0xc]
bl DC_FlushRange
ldr r0, [r4, #8]
cmp r0, #0
bne _0224A0F4
ldr r0, [r4]
ldr r1, [r4, #0xc]
ldr r0, [r0, #0xc]
ldr r2, [r4, #0x10]
bl GX_LoadBGPltt
b _0224A104
_0224A0F4:
cmp r0, #4
bne _0224A104
ldr r0, [r4]
ldr r1, [r4, #0xc]
ldr r0, [r0, #0xc]
ldr r2, [r4, #0x10]
bl GXS_LoadBGPltt
_0224A104:
add r0, r5, #0
bl DestroySysTask
ldr r0, [r4, #4]
bl FreeToHeap
add r0, r4, #0
bl FreeToHeap
pop {r3, r4, r5, pc}
thumb_func_end ov41_0224A0D0
thumb_func_start ov41_0224A118
ov41_0224A118: ; 0x0224A118
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
cmp r5, #0
bne _0224A126
bl GF_AssertFail
_0224A126:
cmp r4, #0
bne _0224A12E
bl GF_AssertFail
_0224A12E:
ldr r0, [r4]
bl CreateSprite
str r0, [r5]
cmp r0, #0
bne _0224A13E
bl GF_AssertFail
_0224A13E:
ldr r0, [r4, #0xc]
str r0, [r5, #4]
ldr r0, [r4, #8]
str r0, [r5, #8]
ldr r0, [r4, #4]
cmp r0, #0
beq _0224A150
str r0, [r5, #0xc]
pop {r3, r4, r5, pc}
_0224A150:
ldr r0, _0224A158 ; =ov41_0224A254
str r0, [r5, #0xc]
pop {r3, r4, r5, pc}
nop
_0224A158: .word ov41_0224A254
thumb_func_end ov41_0224A118
thumb_func_start ov41_0224A15C
ov41_0224A15C: ; 0x0224A15C
push {r3, r4, r5, lr}
sub sp, #0x30
add r4, r1, #0
add r5, r0, #0
bl ov41_0224A118
ldr r0, [r4, #0x14]
str r0, [sp]
ldr r0, [r4, #0x10]
str r0, [sp, #4]
ldr r0, [r4]
ldr r0, [r0]
str r0, [sp, #8]
ldr r0, [r4, #0x18]
str r0, [sp, #0xc]
ldr r0, [r5]
str r0, [sp, #0x10]
ldr r0, [r4, #0x24]
str r0, [sp, #0x14]
ldr r0, [r4, #0x1c]
str r0, [sp, #0x18]
ldr r0, [r4, #0x20]
str r0, [sp, #0x1c]
mov r0, #0
str r0, [sp, #0x20]
str r0, [sp, #0x24]
ldr r0, [r4]
ldr r0, [r0, #0x28]
str r0, [sp, #0x28]
ldr r0, [r4]
ldr r0, [r0, #0x2c]
str r0, [sp, #0x2c]
add r0, sp, #0
bl sub_020135D8
str r0, [r5, #0x10]
add sp, #0x30
pop {r3, r4, r5, pc}
thumb_func_end ov41_0224A15C
thumb_func_start ov41_0224A1A8
ov41_0224A1A8: ; 0x0224A1A8
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl Sprite_Delete
mov r1, #0x10
mov r0, #0
_0224A1B6:
strb r0, [r4]
add r4, r4, #1
sub r1, r1, #1
bne _0224A1B6
pop {r4, pc}
thumb_func_end ov41_0224A1A8
thumb_func_start ov41_0224A1C0
ov41_0224A1C0: ; 0x0224A1C0
push {r4, lr}
add r4, r0, #0
bl ov41_0224A1A8
ldr r0, [r4, #0x10]
bl sub_02013660
add r0, r4, #0
mov r1, #0
mov r2, #0x20
bl memset
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_0224A1C0
thumb_func_start ov41_0224A1DC
ov41_0224A1DC: ; 0x0224A1DC
push {r3, lr}
ldr r2, [r0, #4]
cmp r1, r2
bne _0224A1EA
ldr r1, [r0, #8]
ldr r2, [r0, #0xc]
blx r2
_0224A1EA:
pop {r3, pc}
thumb_func_end ov41_0224A1DC
thumb_func_start ov41_0224A1EC
ov41_0224A1EC: ; 0x0224A1EC
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r7, r1, #0
add r6, r2, #0
mov r4, #2
add r5, #0x20
_0224A1F8:
cmp r4, r7
beq _0224A204
add r0, r5, #0
bl ov41_0224A264
b _0224A228
_0224A204:
cmp r6, #0
bne _0224A216
add r0, r5, #0
bl ov41_0224A270
ldr r0, _0224A234 ; =0x0000067C
bl PlaySE
b _0224A228
_0224A216:
cmp r6, #2
bne _0224A222
add r0, r5, #0
bl ov41_0224A258
b _0224A228
_0224A222:
add r0, r5, #0
bl ov41_0224A270
_0224A228:
add r4, r4, #1
add r5, #0x10
cmp r4, #3
ble _0224A1F8
pop {r3, r4, r5, r6, r7, pc}
nop
_0224A234: .word 0x0000067C
thumb_func_end ov41_0224A1EC
thumb_func_start ov41_0224A238
ov41_0224A238: ; 0x0224A238
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 _0224A24A
bl GF_AssertFail
_0224A24A:
str r7, [r5, #4]
str r6, [r5, #8]
str r4, [r5, #0xc]
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_0224A238
thumb_func_start ov41_0224A254
ov41_0224A254: ; 0x0224A254
bx lr
.balign 4, 0
thumb_func_end ov41_0224A254
thumb_func_start ov41_0224A258
ov41_0224A258: ; 0x0224A258
ldr r3, _0224A260 ; =sub_020249D4
ldr r0, [r0]
mov r1, #2
bx r3
.balign 4, 0
_0224A260: .word sub_020249D4
thumb_func_end ov41_0224A258
thumb_func_start ov41_0224A264
ov41_0224A264: ; 0x0224A264
ldr r3, _0224A26C ; =sub_020249D4
ldr r0, [r0]
mov r1, #0
bx r3
.balign 4, 0
_0224A26C: .word sub_020249D4
thumb_func_end ov41_0224A264
thumb_func_start ov41_0224A270
ov41_0224A270: ; 0x0224A270
ldr r3, _0224A278 ; =sub_020249D4
ldr r0, [r0]
mov r1, #1
bx r3
.balign 4, 0
_0224A278: .word sub_020249D4
thumb_func_end ov41_0224A270
thumb_func_start ov41_0224A27C
ov41_0224A27C: ; 0x0224A27C
push {r3, r4, r5, r6, lr}
sub sp, #0x14
add r5, r0, #0
add r0, #0x80
add r4, r1, #0
str r2, [r0]
mov r0, #1
mov r1, #0xd
bl sub_02013534
str r0, [r5, #0x64]
add r0, r4, #0
bl ov41_0224A7F8
mov r0, #0x90
str r0, [sp]
mov r0, #0x28
str r0, [sp, #4]
mov r0, #0x20
str r0, [sp, #8]
add r0, r5, #0
mov r1, #0
add r2, r4, #0
mov r3, #0x30
bl ov41_0224A6C4
mov r0, #0x28
str r0, [sp]
mov r0, #0x18
str r0, [sp, #4]
add r0, r5, #0
add r0, #0x6c
mov r1, #0
mov r2, #0x30
mov r3, #0x98
bl ov41_0224A7E0
mov r0, #0x90
str r0, [sp]
mov r0, #0x28
str r0, [sp, #4]
mov r0, #0x20
str r0, [sp, #8]
add r0, r5, #0
add r0, #0x10
mov r1, #1
add r2, r4, #0
mov r3, #8
bl ov41_0224A6C4
mov r0, #0x28
str r0, [sp]
mov r0, #0x18
str r0, [sp, #4]
add r0, r5, #0
add r0, #0x6c
mov r1, #1
mov r2, #8
mov r3, #0x98
bl ov41_0224A7E0
mov r0, #0x90
str r0, [sp]
mov r0, #0x28
str r0, [sp, #4]
mov r0, #0x2a
str r0, [sp, #8]
add r0, r5, #0
add r0, #0x20
mov r1, #2
add r2, r4, #0
mov r3, #0x60
bl ov41_0224A6C4
mov r0, #0x28
str r0, [sp]
mov r0, #0x22
str r0, [sp, #4]
add r0, r5, #0
add r0, #0x6c
mov r1, #2
mov r2, #0x60
mov r3, #0x9c
bl ov41_0224A7E0
mov r0, #0x90
str r0, [sp]
mov r0, #0x28
str r0, [sp, #4]
mov r0, #0x2a
str r0, [sp, #8]
add r0, r5, #0
add r0, #0x30
mov r1, #3
add r2, r4, #0
mov r3, #0x88
bl ov41_0224A6C4
mov r0, #0x28
str r0, [sp]
mov r0, #0x22
str r0, [sp, #4]
add r0, r5, #0
add r0, #0x6c
mov r1, #3
mov r2, #0x88
mov r3, #0x9c
bl ov41_0224A7E0
mov r0, #2
mov r1, #0xe
bl FontID_Alloc
mov r0, #9
str r0, [sp]
mov r0, #5
str r0, [sp, #4]
add r0, r4, #0
mov r1, #0x1b
mov r2, #0xd7
mov r3, #0
bl ov41_0224A928
add r6, r0, #0
str r6, [sp]
mov r0, #0xb8
str r0, [sp, #4]
mov r0, #0x90
str r0, [sp, #8]
mov r0, #0x48
str r0, [sp, #0xc]
mov r0, #0x2a
str r0, [sp, #0x10]
add r0, r5, #0
ldr r3, [r5, #0x64]
add r0, #0x40
mov r1, #4
add r2, r4, #0
bl ov41_0224A734
mov r0, #0x48
str r0, [sp]
mov r0, #0x22
str r0, [sp, #4]
add r0, r5, #0
add r0, #0x6c
mov r1, #4
mov r2, #0xb8
mov r3, #0x9c
bl ov41_0224A7E0
add r0, r6, #0
bl ov41_0224A9B0
mov r0, #2
bl FontID_Release
mov r0, #1
str r0, [r5, #0x60]
add r0, r4, #0
bl ov41_0224A888
add r0, r5, #0
add r0, #0x20
bl ov41_0224A258
mov r0, #0xd
str r0, [sp]
add r0, r5, #0
ldr r2, _0224A3E0 ; =ov41_0224A60C
add r0, #0x6c
mov r1, #5
add r3, r5, #0
bl sub_02026C44
str r0, [r5, #0x68]
add sp, #0x14
pop {r3, r4, r5, r6, pc}
.balign 4, 0
_0224A3E0: .word ov41_0224A60C
thumb_func_end ov41_0224A27C
thumb_func_start ov41_0224A3E4
ov41_0224A3E4: ; 0x0224A3E4
push {r4, r5, r6, lr}
add r6, r0, #0
add r5, r1, #0
mov r4, #0
_0224A3EC:
add r0, r5, #0
add r1, r4, #0
bl ov41_02246388
add r0, r5, #0
add r1, r4, #0
bl ov41_0224639C
add r0, r4, #0
bl sub_02021884
add r4, r4, #1
cmp r4, #5
blt _0224A3EC
mov r0, #0
bl sub_02022744
mov r0, #1
bl sub_02022744
mov r5, #0
add r4, r6, #0
_0224A418:
add r0, r4, #0
bl ov41_0224A1A8
add r5, r5, #1
add r4, #0x10
cmp r5, #4
blt _0224A418
add r0, r6, #0
add r0, #0x54
bl sub_02021B5C
add r0, r6, #0
add r0, #0x40
bl ov41_0224A1C0
ldr r0, [r6, #0x64]
bl sub_020135AC
ldr r0, [r6, #0x68]
bl sub_02026CAC
mov r0, #0
str r0, [r6, #0x68]
pop {r4, r5, r6, pc}
thumb_func_end ov41_0224A3E4
thumb_func_start ov41_0224A448
ov41_0224A448: ; 0x0224A448
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #0x68]
mov r4, #0xff
cmp r0, #0
bne _0224A458
bl GF_AssertFail
_0224A458:
add r0, r5, #0
add r0, #0x84
ldrh r0, [r0]
cmp r0, #0
beq _0224A48C
add r0, r5, #0
add r0, #0x84
ldrh r0, [r0]
sub r1, r0, #1
add r0, r5, #0
add r0, #0x84
strh r1, [r0]
add r1, r5, #0
add r1, #0x84
ldrh r2, [r1]
mov r1, #1
add r0, r5, #0
eor r2, r1
ldr r1, _0224A4E4 ; =ov41_0224C094
add r0, #0x86
ldrb r1, [r1, r2]
ldrh r0, [r0]
add r2, r5, #0
bl ov41_0224A60C
pop {r3, r4, r5, pc}
_0224A48C:
ldr r0, _0224A4E8 ; =gSystem
ldr r1, [r0, #0x48]
mov r0, #3
add r2, r1, #0
tst r2, r0
beq _0224A49C
mov r4, #4
b _0224A4C2
_0224A49C:
mov r2, #0x40
tst r2, r1
beq _0224A4A6
mov r4, #1
b _0224A4C2
_0224A4A6:
mov r2, #0x80
tst r2, r1
beq _0224A4B0
mov r4, #0
b _0224A4C2
_0224A4B0:
mov r2, #0x20
tst r2, r1
beq _0224A4BA
mov r4, #2
b _0224A4C2
_0224A4BA:
mov r2, #0x10
tst r1, r2
beq _0224A4C2
add r4, r0, #0
_0224A4C2:
cmp r4, #0xff
beq _0224A4E2
add r0, r5, #0
add r0, #0x86
strh r4, [r0]
add r0, r5, #0
mov r1, #2
add r0, #0x84
strh r1, [r0]
add r0, r5, #0
add r0, #0x86
ldrh r0, [r0]
mov r1, #0
add r2, r5, #0
bl ov41_0224A60C
_0224A4E2:
pop {r3, r4, r5, pc}
.balign 4, 0
_0224A4E4: .word ov41_0224C094
_0224A4E8: .word gSystem
thumb_func_end ov41_0224A448
thumb_func_start ov41_0224A4EC
ov41_0224A4EC: ; 0x0224A4EC
push {r4, lr}
add r4, r0, #0
add r0, #0x84
ldrh r0, [r0]
cmp r0, #0
beq _0224A4FC
mov r0, #0
pop {r4, pc}
_0224A4FC:
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
ldr r0, [r0]
cmp r0, #1
bne _0224A526
bl System_GetTouchHeld
cmp r0, #0
beq _0224A514
mov r0, #0
pop {r4, pc}
_0224A514:
ldr r0, _0224A548 ; =gSystem
ldr r0, [r0, #0x44]
cmp r0, #0
beq _0224A542
add r4, #0x80
ldr r0, [r4]
mov r1, #0
str r1, [r0]
b _0224A542
_0224A526:
ldr r0, _0224A548 ; =gSystem
ldr r0, [r0, #0x44]
cmp r0, #0
beq _0224A532
mov r0, #0
pop {r4, pc}
_0224A532:
bl System_GetTouchHeld
cmp r0, #0
beq _0224A542
add r4, #0x80
ldr r0, [r4]
mov r1, #1
str r1, [r0]
_0224A542:
mov r0, #0
pop {r4, pc}
nop
_0224A548: .word gSystem
thumb_func_end ov41_0224A4EC
thumb_func_start ov41_0224A54C
ov41_0224A54C: ; 0x0224A54C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x68]
cmp r0, #0
bne _0224A55A
bl GF_AssertFail
_0224A55A:
add r0, r4, #0
bl ov41_0224A4EC
cmp r0, #0
bne _0224A57E
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
ldr r0, [r0]
cmp r0, #0
bne _0224A578
add r0, r4, #0
bl ov41_0224A448
pop {r4, pc}
_0224A578:
ldr r0, [r4, #0x68]
bl sub_02026CC4
_0224A57E:
pop {r4, pc}
thumb_func_end ov41_0224A54C
thumb_func_start ov41_0224A580
ov41_0224A580: ; 0x0224A580
push {r4, lr}
add r4, r0, #0
add r0, #0x40
mov r1, #3
bl ov41_0224A8B0
add r0, r4, #0
add r0, #0x40
mov r1, #3
bl ov41_0224A8D4
add r0, r4, #0
mov r1, #2
mov r2, #3
bl ov41_0224A1EC
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_0224A580
thumb_func_start ov41_0224A5A4
ov41_0224A5A4: ; 0x0224A5A4
push {r3, r4, r5, r6, r7, lr}
str r0, [sp]
add r6, r1, #0
add r7, r2, #0
mov r4, #0
add r5, r0, #0
_0224A5B0:
add r0, r5, #0
add r1, r6, #0
add r2, r7, #0
bl ov41_0224A9BC
add r4, r4, #1
add r5, #0x10
cmp r4, #4
blt _0224A5B0
ldr r0, [sp]
add r1, r6, #0
add r0, #0x40
add r2, r7, #0
str r0, [sp]
bl ov41_0224A9F8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_0224A5A4
thumb_func_start ov41_0224A5D4
ov41_0224A5D4: ; 0x0224A5D4
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 _0224A5E6
bl GF_AssertFail
_0224A5E6:
cmp r4, #4
bge _0224A5FA
lsl r0, r4, #4
ldr r3, [sp, #0x18]
add r0, r5, r0
add r1, r6, #0
add r2, r7, #0
bl ov41_0224A238
pop {r3, r4, r5, r6, r7, pc}
_0224A5FA:
add r5, #0x40
ldr r3, [sp, #0x18]
add r0, r5, #0
add r1, r6, #0
add r2, r7, #0
bl ov41_0224A238
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_0224A5D4
thumb_func_start ov41_0224A60C
ov41_0224A60C: ; 0x0224A60C
push {r4, r5, r6, lr}
add r6, r0, #0
add r5, r1, #0
add r4, r2, #0
cmp r6, #4
bhi _0224A6B8
add r0, r6, r6
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0224A624: ; jump table
.short _0224A62E - _0224A624 - 2 ; case 0
.short _0224A64C - _0224A624 - 2 ; case 1
.short _0224A670 - _0224A624 - 2 ; case 2
.short _0224A670 - _0224A624 - 2 ; case 3
.short _0224A686 - _0224A624 - 2 ; case 4
_0224A62E:
add r0, r4, #0
bl ov41_0224A8B0
mov r1, #0x1a
add r0, r4, #0
lsl r1, r1, #6
mov r2, #0
add r3, r5, #0
bl ov41_0224A918
add r0, r4, #0
add r1, r5, #0
bl ov41_0224A1DC
pop {r4, r5, r6, pc}
_0224A64C:
add r0, r4, #0
add r0, #0x10
bl ov41_0224A8B0
add r0, r4, #0
mov r1, #0x1a
add r0, #0x10
lsl r1, r1, #6
mov r2, #0
add r3, r5, #0
bl ov41_0224A918
add r4, #0x10
add r0, r4, #0
add r1, r5, #0
bl ov41_0224A1DC
pop {r4, r5, r6, pc}
_0224A670:
add r0, r4, #0
add r1, r6, #0
add r2, r5, #0
bl ov41_0224A1EC
lsl r0, r6, #4
add r0, r4, r0
add r1, r5, #0
bl ov41_0224A1DC
pop {r4, r5, r6, pc}
_0224A686:
ldr r0, [r4, #0x60]
cmp r0, #1
bne _0224A6BC
add r0, r4, #0
add r0, #0x40
bl ov41_0224A8B0
add r0, r4, #0
add r0, #0x40
add r1, r5, #0
bl ov41_0224A8D4
add r0, r4, #0
ldr r1, _0224A6C0 ; =0x000005E2
add r0, #0x40
mov r2, #0
add r3, r5, #0
bl ov41_0224A918
add r4, #0x40
add r0, r4, #0
add r1, r5, #0
bl ov41_0224A1DC
pop {r4, r5, r6, pc}
_0224A6B8:
bl GF_AssertFail
_0224A6BC:
pop {r4, r5, r6, pc}
nop
_0224A6C0: .word 0x000005E2
thumb_func_end ov41_0224A60C
thumb_func_start ov41_0224A6C4
ov41_0224A6C4: ; 0x0224A6C4
push {r4, r5, r6, lr}
sub sp, #0x90
add r6, r0, #0
mov r0, #0
str r1, [sp]
mvn r0, r0
str r0, [sp, #4]
add r5, r2, #0
str r0, [sp, #8]
mov r2, #0
str r2, [sp, #0xc]
str r2, [sp, #0x10]
ldr r0, [r5, #0x48]
add r4, r3, #0
str r0, [sp, #0x14]
ldr r0, [r5, #0x4c]
add r3, r1, #0
str r0, [sp, #0x18]
ldr r0, [r5, #0x50]
str r0, [sp, #0x1c]
ldr r0, [r5, #0x54]
str r0, [sp, #0x20]
str r2, [sp, #0x24]
str r2, [sp, #0x28]
add r0, sp, #0x5c
bl CreateSpriteResourcesHeader
ldr r0, [r5, #0x44]
mov r2, #0
mov r1, #1
str r0, [sp, #0x2c]
add r0, sp, #0x5c
str r0, [sp, #0x30]
lsl r0, r4, #0xc
str r0, [sp, #0x34]
ldr r0, [sp, #0xa0]
str r1, [sp, #0x54]
lsl r0, r0, #0xc
str r0, [sp, #0x38]
mov r0, #2
str r0, [sp, #0x50]
mov r0, #0xe
str r0, [sp, #0x58]
add r0, sp, #0x2c
str r0, [sp, #0x80]
str r1, [sp, #0x8c]
add r0, r6, #0
add r1, sp, #0x80
str r2, [sp, #0x3c]
str r2, [sp, #0x84]
str r2, [sp, #0x88]
bl ov41_0224A118
add sp, #0x90
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov41_0224A6C4
thumb_func_start ov41_0224A734
ov41_0224A734: ; 0x0224A734
push {r4, r5, r6, lr}
sub sp, #0xa8
add r5, r0, #0
mov r0, #0
str r1, [sp]
mvn r0, r0
str r0, [sp, #4]
add r4, r2, #0
str r0, [sp, #8]
mov r2, #0
str r2, [sp, #0xc]
str r2, [sp, #0x10]
ldr r0, [r4, #0x48]
add r6, r3, #0
str r0, [sp, #0x14]
ldr r0, [r4, #0x4c]
add r3, r1, #0
str r0, [sp, #0x18]
ldr r0, [r4, #0x50]
str r0, [sp, #0x1c]
ldr r0, [r4, #0x54]
str r0, [sp, #0x20]
str r2, [sp, #0x24]
str r2, [sp, #0x28]
add r0, sp, #0x5c
bl CreateSpriteResourcesHeader
ldr r0, [r4, #0x44]
mov r2, #0xe
str r0, [sp, #0x2c]
add r0, sp, #0x5c
str r0, [sp, #0x30]
ldr r0, [sp, #0xbc]
str r2, [sp, #0x58]
lsl r0, r0, #0xc
str r0, [sp, #0x34]
ldr r0, [sp, #0xc0]
add r2, sp, #0x2c
lsl r0, r0, #0xc
mov r1, #2
str r2, [sp, #0x80]
ldr r2, [sp, #0xb8]
str r0, [sp, #0x38]
mov r0, #0
str r1, [sp, #0x50]
mov r1, #1
str r0, [sp, #0x3c]
str r1, [sp, #0x54]
str r0, [sp, #0x84]
str r0, [sp, #0x88]
str r0, [sp, #0x9c]
mov r0, #0x13
str r1, [sp, #0x8c]
str r6, [sp, #0x94]
str r2, [sp, #0x90]
str r0, [sp, #0xa0]
ldr r0, [r4, #0x4c]
bl Get2DGfxResObjById
mov r1, #0
bl sub_0200B0F8
str r0, [sp, #0x98]
ldr r0, [sp, #0xb8]
mov r1, #1
mov r2, #0xd
bl sub_02013688
mov r1, #1
add r3, r5, #0
add r2, r1, #0
add r3, #0x14
bl sub_02021AC8
cmp r0, #0
bne _0224A7D0
bl GF_AssertFail
_0224A7D0:
ldr r0, [r5, #0x18]
add r1, sp, #0x80
str r0, [sp, #0xa4]
add r0, r5, #0
bl ov41_0224A15C
add sp, #0xa8
pop {r4, r5, r6, pc}
thumb_func_end ov41_0224A734
thumb_func_start ov41_0224A7E0
ov41_0224A7E0: ; 0x0224A7E0
lsl r1, r1, #2
strb r3, [r0, r1]
add r1, r0, r1
ldr r0, [sp, #4]
strb r2, [r1, #2]
add r0, r3, r0
strb r0, [r1, #1]
ldr r0, [sp]
add r0, r2, r0
strb r0, [r1, #3]
bx lr
.balign 4, 0
thumb_func_end ov41_0224A7E0
thumb_func_start ov41_0224A7F8
ov41_0224A7F8: ; 0x0224A7F8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
mov r0, #0x6b
mov r4, #0
str r0, [sp, #0xc]
mov r7, #0x6a
mov r6, #0x69
_0224A808:
mov r0, #1
str r0, [sp]
mov r1, #6
str r4, [sp, #4]
lsl r1, r1, #6
ldr r1, [r5, r1]
ldr r2, [sp, #0xc]
add r0, r5, #0
mov r3, #0
bl ov41_022462E4
mov r1, #6
str r4, [sp]
lsl r1, r1, #6
ldr r1, [r5, r1]
add r0, r5, #0
add r2, r7, #0
mov r3, #0
bl ov41_02246328
mov r1, #6
str r4, [sp]
lsl r1, r1, #6
ldr r1, [r5, r1]
add r0, r5, #0
add r2, r6, #0
mov r3, #0
bl ov41_02246344
ldr r0, [sp, #0xc]
add r4, r4, #1
add r0, r0, #3
str r0, [sp, #0xc]
add r7, r7, #3
add r6, r6, #3
cmp r4, #5
blt _0224A808
mov r0, #1
str r0, [sp]
mov r1, #3
str r1, [sp, #4]
mov r3, #0
str r3, [sp, #8]
lsl r1, r1, #7
ldr r1, [r5, r1]
add r0, r5, #0
mov r2, #0x68
bl ov41_02246304
mov r1, #1
str r1, [sp]
mov r0, #2
str r0, [sp, #4]
str r1, [sp, #8]
mov r1, #6
lsl r1, r1, #6
ldr r1, [r5, r1]
add r0, r5, #0
mov r2, #0x78
mov r3, #0
bl ov41_02246304
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov41_0224A7F8
thumb_func_start ov41_0224A888
ov41_0224A888: ; 0x0224A888
push {r3, r4, r5, lr}
add r5, r0, #0
mov r4, #0
_0224A88E:
add r0, r5, #0
add r1, r4, #0
bl ov41_02246360
add r4, r4, #1
cmp r4, #5
blt _0224A88E
add r0, r5, #0
mov r1, #0
bl ov41_02246374
add r0, r5, #0
mov r1, #1
bl ov41_02246374
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_0224A888
thumb_func_start ov41_0224A8B0
ov41_0224A8B0: ; 0x0224A8B0
push {r3, lr}
cmp r1, #0
bne _0224A8BC
bl ov41_0224A270
pop {r3, pc}
_0224A8BC:
cmp r1, #2
bne _0224A8C6
bl ov41_0224A258
pop {r3, pc}
_0224A8C6:
cmp r1, #1
beq _0224A8CE
cmp r1, #3
bne _0224A8D2
_0224A8CE:
bl ov41_0224A264
_0224A8D2:
pop {r3, pc}
thumb_func_end ov41_0224A8B0
thumb_func_start ov41_0224A8D4
ov41_0224A8D4: ; 0x0224A8D4
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
bne _0224A8F0
ldr r0, [r5, #0x10]
mov r1, #0
mov r2, #0xf
bl sub_020136B4
ldr r0, [r5, #0x10]
mov r1, #4
bl sub_02013850
pop {r3, r4, r5, pc}
_0224A8F0:
cmp r4, #1
bne _0224A8FE
ldr r0, [r5, #0x10]
mov r1, #0
mov r2, #0x13
bl sub_020136B4
_0224A8FE:
cmp r4, #3
bne _0224A914
ldr r0, [r5, #0x10]
mov r1, #0
mov r2, #0x13
bl sub_020136B4
ldr r0, [r5, #0x10]
mov r1, #3
bl sub_02013850
_0224A914:
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_0224A8D4
thumb_func_start ov41_0224A918
ov41_0224A918: ; 0x0224A918
push {r3, lr}
cmp r3, r2
bne _0224A926
lsl r0, r1, #0x10
lsr r0, r0, #0x10
bl PlaySE
_0224A926:
pop {r3, pc}
thumb_func_end ov41_0224A918
thumb_func_start ov41_0224A928
ov41_0224A928: ; 0x0224A928
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r6, r0, #0
add r4, r3, #0
mov r0, #0
mov r3, #0xd
bl NewMsgDataFromNarc
add r7, r0, #0
bne _0224A940
bl GF_AssertFail
_0224A940:
add r0, r7, #0
add r1, r4, #0
bl NewString_ReadMsgData
add r5, r0, #0
mov r0, #0xe
mov r1, #1
bl AllocWindows
add r4, r0, #0
bl InitWindow
mov r0, #0
ldr r2, [sp, #0x28]
ldr r3, [sp, #0x2c]
str r0, [sp]
str r0, [sp, #4]
lsl r2, r2, #0x18
lsl r3, r3, #0x18
ldr r0, [r6, #0x40]
add r1, r4, #0
lsr r2, r2, #0x18
lsr r3, r3, #0x18
bl AddTextWindowTopLeftCorner
ldr r3, [sp, #0x28]
mov r0, #2
add r1, r5, #0
mov r2, #0
lsl r3, r3, #3
bl FontID_String_GetCenterAlignmentX
mov r1, #0
add r3, r0, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _0224A9AC ; =0x00010203
add r2, r5, #0
str r0, [sp, #8]
str r1, [sp, #0xc]
add r0, r4, #0
mov r1, #2
bl AddTextPrinterParameterized2
add r0, r5, #0
bl String_dtor
add r0, r7, #0
bl DestroyMsgData
add r0, r4, #0
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0224A9AC: .word 0x00010203
thumb_func_end ov41_0224A928
thumb_func_start ov41_0224A9B0
ov41_0224A9B0: ; 0x0224A9B0
ldr r3, _0224A9B8 ; =WindowArray_dtor
mov r1, #1
bx r3
nop
_0224A9B8: .word WindowArray_dtor
thumb_func_end ov41_0224A9B0
thumb_func_start ov41_0224A9BC
ov41_0224A9BC: ; 0x0224A9BC
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
ldr r0, [r5]
add r4, r1, #0
add r6, r2, #0
bl sub_020248AC
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]
ldr r1, [sp]
lsl r0, r4, #0xc
add r0, r1, r0
str r0, [sp]
ldr r1, [sp, #4]
lsl r0, r6, #0xc
add r0, r1, r0
str r0, [sp, #4]
ldr r0, [r5]
add r1, r7, #0
bl sub_020247D4
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_0224A9BC
thumb_func_start ov41_0224A9F8
ov41_0224A9F8: ; 0x0224A9F8
push {r4, lr}
add r4, r0, #0
bl ov41_0224A9BC
ldr r0, [r4, #0x10]
bl sub_02013728
pop {r4, pc}
thumb_func_end ov41_0224A9F8
thumb_func_start ov41_0224AA08
ov41_0224AA08: ; 0x0224AA08
push {r4, r5, r6, lr}
sub sp, #0x10
add r4, r1, #0
add r6, r2, #0
mov r1, #1
add r5, r0, #0
tst r1, r6
beq _0224AA22
mov r2, #0x52
mov r1, #0
lsl r2, r2, #2
bl memset
_0224AA22:
mov r0, #2
tst r0, r6
beq _0224AA30
ldr r1, [r4]
add r0, r5, #0
bl ov41_0224ACA4
_0224AA30:
mov r0, #4
add r1, r6, #0
tst r1, r0
beq _0224AA54
mov r1, #0x1b
str r1, [sp]
str r0, [sp, #4]
mov r0, #0x1f
str r0, [sp, #8]
mov r0, #1
str r0, [sp, #0xc]
add r0, r5, #0
ldr r1, [r4]
add r0, #0x2c
mov r2, #2
mov r3, #0x13
bl ov41_0224AD0C
_0224AA54:
mov r0, #8
tst r0, r6
beq _0224AA6C
ldr r0, [r4, #0x24]
str r0, [sp]
add r0, r5, #0
ldr r1, [r4, #4]
ldr r2, [r4, #8]
ldr r3, [r4, #0x10]
add r0, #0x38
bl ov41_0224AED8
_0224AA6C:
mov r0, #0x10
tst r0, r6
beq _0224AA8C
ldr r0, [r4]
str r0, [sp]
ldr r0, [r4, #0x20]
str r0, [sp, #4]
ldr r0, [r4, #0x24]
str r0, [sp, #8]
add r0, r5, #0
ldr r1, [r4, #4]
ldr r2, [r4, #8]
ldr r3, [r4, #0x1c]
add r0, #0xa0
bl ov41_0224B118
_0224AA8C:
mov r0, #0x20
tst r0, r6
beq _0224AB02
mov r0, #0x1b
str r0, [sp]
mov r2, #2
str r2, [sp, #4]
mov r0, #0x8b
str r0, [sp, #8]
mov r3, #1
str r3, [sp, #0xc]
add r0, #0xa9
ldr r1, [r4]
add r0, r5, r0
bl ov41_0224AD0C
mov r0, #0x4d
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #0xf
bl FillWindowPixelBuffer
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
ldr r0, _0224AB3C ; =0x0001020F
mov r1, #0x1b
str r0, [sp, #8]
mov r0, #0xff
str r0, [sp, #0xc]
add r0, #0x35
ldr r0, [r5, r0]
ldr r2, [r4, #0x14]
mov r3, #6
bl ov41_0224AE24
mov r0, #0x48
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
ldr r0, _0224AB3C ; =0x0001020F
mov r1, #0x1b
str r0, [sp, #8]
mov r0, #0xff
str r0, [sp, #0xc]
add r0, #0x35
ldr r0, [r5, r0]
ldr r2, [r4, #0x14]
ldr r3, [r4, #0x18]
bl ov41_0224AE24
mov r0, #0x4d
lsl r0, r0, #2
mov r2, #1
ldr r0, [r5, r0]
mov r1, #0
add r3, r2, #0
bl DrawFrameAndWindow2
_0224AB02:
ldr r0, [r4, #4]
str r0, [r5, #0x30]
ldr r0, [r4, #8]
str r0, [r5, #0x34]
ldr r0, [r4]
ldr r1, [r4, #0xc]
bl ov41_0224ACDC
ldr r0, [r4, #0xc]
bl Options_GetFrame
mov r1, #0x4f
lsl r1, r1, #2
str r0, [r5, r1]
ldr r0, [r4, #0xc]
bl Options_GetTextFrameDelay
mov r1, #5
lsl r1, r1, #6
str r0, [r5, r1]
add r0, r1, #0
sub r0, #8
ldr r0, [r5, r0]
sub r1, #8
orr r0, r6
str r0, [r5, r1]
add sp, #0x10
pop {r4, r5, r6, pc}
nop
_0224AB3C: .word 0x0001020F
thumb_func_end ov41_0224AA08
thumb_func_start ov41_0224AB40
ov41_0224AB40: ; 0x0224AB40
push {r4, lr}
mov r1, #0x4e
add r4, r0, #0
lsl r1, r1, #2
ldr r2, [r4, r1]
mov r1, #2
tst r1, r2
beq _0224AB60
bl ov41_0224AD7C
mov r1, #0x4e
lsl r1, r1, #2
ldr r2, [r4, r1]
mov r0, #2
bic r2, r0
str r2, [r4, r1]
_0224AB60:
mov r0, #0x4e
lsl r0, r0, #2
ldr r1, [r4, r0]
mov r0, #4
tst r0, r1
beq _0224AB7E
ldr r0, [r4, #0x2c]
bl ov41_0224AD84
mov r1, #0x4e
lsl r1, r1, #2
ldr r2, [r4, r1]
mov r0, #4
bic r2, r0
str r2, [r4, r1]
_0224AB7E:
mov r0, #0x4e
lsl r0, r0, #2
ldr r1, [r4, r0]
mov r0, #8
tst r0, r1
beq _0224ABA0
add r0, r4, #0
ldr r1, [r4, #0x34]
add r0, #0x38
bl ov41_0224AFD4
mov r1, #0x4e
lsl r1, r1, #2
ldr r2, [r4, r1]
mov r0, #8
bic r2, r0
str r2, [r4, r1]
_0224ABA0:
mov r0, #0x4e
lsl r0, r0, #2
ldr r1, [r4, r0]
mov r0, #0x10
tst r0, r1
beq _0224ABC2
add r0, r4, #0
ldr r1, [r4, #0x34]
add r0, #0xa0
bl ov41_0224B21C
mov r1, #0x4e
lsl r1, r1, #2
ldr r2, [r4, r1]
mov r0, #0x10
bic r2, r0
str r2, [r4, r1]
_0224ABC2:
mov r0, #0x4e
lsl r0, r0, #2
ldr r2, [r4, r0]
mov r1, #0x20
tst r1, r2
beq _0224ABE2
sub r0, r0, #4
ldr r0, [r4, r0]
bl ov41_0224AD84
mov r1, #0x4e
lsl r1, r1, #2
ldr r2, [r4, r1]
mov r0, #0x20
bic r2, r0
str r2, [r4, r1]
_0224ABE2:
mov r2, #0x52
add r0, r4, #0
mov r1, #0
lsl r2, r2, #2
bl memset
pop {r4, pc}
thumb_func_end ov41_0224AB40
thumb_func_start ov41_0224ABF0
ov41_0224ABF0: ; 0x0224ABF0
push {r3, lr}
mov r1, #0x4e
lsl r1, r1, #2
ldr r2, [r0, r1]
mov r1, #0x10
tst r1, r2
beq _0224AC04
add r0, #0xa0
bl ov41_0224B250
_0224AC04:
pop {r3, pc}
.balign 4, 0
thumb_func_end ov41_0224ABF0
thumb_func_start ov41_0224AC08
ov41_0224AC08: ; 0x0224AC08
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
mov r0, #0x4e
lsl r0, r0, #2
add r4, r1, #0
ldr r1, [r5, r0]
mov r0, #4
add r6, r2, #0
add r7, r3, #0
tst r0, r1
bne _0224AC24
bl GF_AssertFail
_0224AC24:
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #0xff
str r0, [sp, #8]
ldr r0, [r5, #0x2c]
add r1, r4, #0
add r2, r6, #0
add r3, r7, #0
bl ov41_0224AD90
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_0224AC08
thumb_func_start ov41_0224AC40
ov41_0224AC40: ; 0x0224AC40
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
mov r0, #0x4e
lsl r0, r0, #2
add r4, r1, #0
ldr r1, [r5, r0]
mov r0, #4
add r6, r2, #0
add r7, r3, #0
tst r0, r1
bne _0224AC5C
bl GF_AssertFail
_0224AC5C:
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #5
lsl r0, r0, #6
ldr r1, [r5, r0]
add r0, r0, #4
str r1, [sp, #8]
add r0, r5, r0
str r0, [sp, #0xc]
ldr r0, [r5, #0x2c]
add r1, r4, #0
add r2, r6, #0
add r3, r7, #0
bl ov41_0224ADD8
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov41_0224AC40
thumb_func_start ov41_0224AC80
ov41_0224AC80: ; 0x0224AC80
push {r4, lr}
add r4, r0, #0
mov r0, #0x51
lsl r0, r0, #2
ldr r0, [r4, r0]
bl String_dtor
mov r0, #0x51
mov r1, #0
lsl r0, r0, #2
str r1, [r4, r0]
pop {r4, pc}
thumb_func_end ov41_0224AC80
thumb_func_start ov41_0224AC98
ov41_0224AC98: ; 0x0224AC98
ldr r3, _0224ACA0 ; =ov41_0224AF8C
add r0, #0x38
bx r3
nop
_0224ACA0: .word ov41_0224AF8C
thumb_func_end ov41_0224AC98
thumb_func_start ov41_0224ACA4
ov41_0224ACA4: ; 0x0224ACA4
push {r3, lr}
sub sp, #0x30
str r1, [sp]
mov r1, #0x1a
str r1, [sp, #4]
mov r1, #0xe0
str r1, [sp, #8]
mov r1, #0xe1
str r1, [sp, #0xc]
mov r2, #0
mov r1, #0xe2
str r1, [sp, #0x10]
mov r1, #4
str r1, [sp, #0x1c]
mov r1, #1
str r1, [sp, #0x20]
mov r1, #0xe
str r1, [sp, #0x2c]
add r1, sp, #0
str r2, [sp, #0x14]
str r2, [sp, #0x18]
str r2, [sp, #0x24]
str r2, [sp, #0x28]
bl ov41_02249C7C
add sp, #0x30
pop {r3, pc}
.balign 4, 0
thumb_func_end ov41_0224ACA4
thumb_func_start ov41_0224ACDC
ov41_0224ACDC: ; 0x0224ACDC
push {r4, lr}
sub sp, #8
add r4, r0, #0
add r0, r1, #0
bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
mov r0, #0xe
mov r2, #1
str r0, [sp, #4]
add r0, r4, #0
mov r1, #5
add r3, r2, #0
bl LoadUserFrameGfx2
mov r0, #4
mov r1, #0x40
mov r2, #0xe
bl LoadFontPal1
add sp, #8
pop {r4, pc}
thumb_func_end ov41_0224ACDC
thumb_func_start ov41_0224AD0C
ov41_0224AD0C: ; 0x0224AD0C
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
add r7, r1, #0
add r6, r3, #0
mov r0, #0xe
mov r1, #1
add r4, r2, #0
bl AllocWindows
str r0, [r5]
bl InitWindow
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp]
ldr r0, [sp, #0x28]
lsl r3, r4, #0x18
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
ldr r0, [sp, #0x2c]
mov r2, #5
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #8]
mov r0, #2
str r0, [sp, #0xc]
ldr r0, [sp, #0x30]
lsr r3, r3, #0x18
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
ldr r1, [r5]
add r0, r7, #0
bl AddWindowParameterized
ldr r0, [r5]
mov r1, #0xf
bl FillWindowPixelBuffer
ldr r0, [sp, #0x34]
cmp r0, #0
beq _0224AD70
mov r2, #1
ldr r0, [r5]
mov r1, #0
add r3, r2, #0
bl DrawFrameAndWindow2
_0224AD70:
ldr r0, [r5]
bl CopyWindowToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_0224AD0C
thumb_func_start ov41_0224AD7C
ov41_0224AD7C: ; 0x0224AD7C
ldr r3, _0224AD80 ; =ov41_02249CC4
bx r3
.balign 4, 0
_0224AD80: .word ov41_02249CC4
thumb_func_end ov41_0224AD7C
thumb_func_start ov41_0224AD84
ov41_0224AD84: ; 0x0224AD84
ldr r3, _0224AD8C ; =WindowArray_dtor
mov r1, #1
bx r3
nop
_0224AD8C: .word WindowArray_dtor
thumb_func_end ov41_0224AD84
thumb_func_start ov41_0224AD90
ov41_0224AD90: ; 0x0224AD90
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r4, r1, #0
mov r1, #0xf
add r5, r0, #0
add r6, r2, #0
add r7, r3, #0
bl FillWindowPixelBuffer
ldr r0, [sp, #0x28]
add r1, r4, #0
str r0, [sp]
ldr r0, [sp, #0x2c]
add r2, r6, #0
str r0, [sp, #4]
ldr r0, _0224ADD4 ; =0x0001020F
add r3, r7, #0
str r0, [sp, #8]
ldr r0, [sp, #0x30]
str r0, [sp, #0xc]
add r0, r5, #0
bl ov41_0224AE24
mov r2, #1
add r4, r0, #0
add r0, r5, #0
mov r1, #0
add r3, r2, #0
bl DrawFrameAndWindow2
add r0, r4, #0
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
_0224ADD4: .word 0x0001020F
thumb_func_end ov41_0224AD90
thumb_func_start ov41_0224ADD8
ov41_0224ADD8: ; 0x0224ADD8
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r4, r1, #0
mov r1, #0xf
add r5, r0, #0
add r6, r2, #0
add r7, r3, #0
bl FillWindowPixelBuffer
ldr r0, [sp, #0x28]
add r1, r4, #0
str r0, [sp]
ldr r0, [sp, #0x2c]
add r2, r6, #0
str r0, [sp, #4]
ldr r0, _0224AE20 ; =0x0001020F
add r3, r7, #0
str r0, [sp, #8]
ldr r0, [sp, #0x30]
str r0, [sp, #0xc]
ldr r0, [sp, #0x34]
str r0, [sp, #0x10]
add r0, r5, #0
bl ov41_0224AE78
mov r2, #1
add r4, r0, #0
add r0, r5, #0
mov r1, #0
add r3, r2, #0
bl DrawFrameAndWindow2
add r0, r4, #0
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
_0224AE20: .word 0x0001020F
thumb_func_end ov41_0224ADD8
thumb_func_start ov41_0224AE24
ov41_0224AE24: ; 0x0224AE24
push {r4, r5, r6, lr}
sub sp, #0x10
add r6, r0, #0
add r4, r3, #0
mov r0, #0
mov r3, #0xd
bl NewMsgDataFromNarc
add r5, r0, #0
bne _0224AE3C
bl GF_AssertFail
_0224AE3C:
add r0, r5, #0
add r1, r4, #0
bl NewString_ReadMsgData
add r4, r0, #0
ldr r0, [sp, #0x24]
ldr r3, [sp, #0x20]
str r0, [sp]
ldr r0, [sp, #0x2c]
mov r1, #1
str r0, [sp, #4]
ldr r0, [sp, #0x28]
add r2, r4, #0
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
add r0, r6, #0
bl AddTextPrinterParameterized2
add r6, r0, #0
add r0, r4, #0
bl String_dtor
add r0, r5, #0
bl DestroyMsgData
add r0, r6, #0
add sp, #0x10
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov41_0224AE24
thumb_func_start ov41_0224AE78
ov41_0224AE78: ; 0x0224AE78
push {r4, r5, r6, r7, lr}
sub sp, #0x14
ldr r4, [sp, #0x38]
add r7, r0, #0
ldr r0, [r4]
add r5, r1, #0
add r6, r2, #0
str r3, [sp, #0x10]
cmp r0, #0
beq _0224AE90
bl GF_AssertFail
_0224AE90:
mov r0, #0
add r1, r5, #0
add r2, r6, #0
mov r3, #0xd
bl NewMsgDataFromNarc
add r5, r0, #0
bne _0224AEA4
bl GF_AssertFail
_0224AEA4:
ldr r1, [sp, #0x10]
add r0, r5, #0
bl NewString_ReadMsgData
str r0, [r4]
ldr r0, [sp, #0x2c]
ldr r3, [sp, #0x28]
str r0, [sp]
ldr r0, [sp, #0x34]
mov r1, #1
str r0, [sp, #4]
ldr r0, [sp, #0x30]
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
ldr r2, [r4]
add r0, r7, #0
bl AddTextPrinterParameterized2
add r4, r0, #0
add r0, r5, #0
bl DestroyMsgData
add r0, r4, #0
add sp, #0x14
pop {r4, r5, r6, r7, pc}
thumb_func_end ov41_0224AE78
thumb_func_start ov41_0224AED8
ov41_0224AED8: ; 0x0224AED8
push {r4, r5, r6, r7, lr}
sub sp, #0x6c
add r5, r1, #0
mov r1, #0x67
str r1, [sp]
mov r1, #0xe1
str r1, [sp, #4]
mov r1, #0x66
str r1, [sp, #8]
mov r1, #0x65
str r1, [sp, #0xc]
mov r1, #2
str r1, [sp, #0x10]
mov r1, #0x7d
add r4, r2, #0
str r3, [sp, #0x1c]
lsl r1, r1, #4
str r1, [sp, #0x14]
ldr r3, [sp, #0x80]
str r0, [sp, #0x18]
add r1, r4, #0
mov r2, #0xe
bl ov41_0224AFF8
ldr r0, [sp, #0x18]
add r1, r4, #0
add r2, sp, #0x48
mov r3, #0
bl ov41_0224B0B8
add r0, sp, #0x48
str r0, [sp, #0x2c]
mov r0, #2
str r0, [sp, #0x40]
mov r0, #0
str r0, [sp, #0x24]
str r0, [sp, #0x3c]
mov r0, #0xe
str r0, [sp, #0x44]
mov r0, #0x68
ldr r7, [sp, #0x24]
str r5, [sp, #0x28]
str r0, [sp, #0x20]
_0224AF2E:
ldr r0, [sp, #0x20]
mov r6, #0
str r0, [sp, #0x34]
lsl r1, r0, #0xc
mov r0, #2
lsl r0, r0, #0x14
str r1, [sp, #0x34]
add r0, r1, r0
str r0, [sp, #0x34]
ldr r0, [sp, #0x18]
lsl r1, r7, #2
mov r4, #0x26
add r5, r0, r1
_0224AF48:
str r4, [sp, #0x30]
lsl r0, r4, #0xc
str r0, [sp, #0x30]
add r0, sp, #0x28
bl sub_02024714
mov r1, #1
str r0, [r5, #0x10]
bl Set2dSpriteAnimSeqNo
ldr r0, [sp, #0x1c]
add r1, r6, r7
cmp r1, r0
blt _0224AF6C
ldr r0, [r5, #0x10]
mov r1, #0
bl Set2dSpriteVisibleFlag
_0224AF6C:
add r6, r6, #1
add r4, #0x12
add r5, r5, #4
cmp r6, #0xa
blt _0224AF48
ldr r0, [sp, #0x20]
add r7, #0xa
add r0, #0x12
str r0, [sp, #0x20]
ldr r0, [sp, #0x24]
add r0, r0, #1
str r0, [sp, #0x24]
cmp r0, #2
blt _0224AF2E
add sp, #0x6c
pop {r4, r5, r6, r7, pc}
thumb_func_end ov41_0224AED8
thumb_func_start ov41_0224AF8C
ov41_0224AF8C: ; 0x0224AF8C
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
ldr r6, [r7, #0x60]
add r5, r1, #0
cmp r6, r5
bge _0224AFB2
cmp r6, r5
bge _0224AFD0
lsl r0, r6, #2
add r4, r7, r0
_0224AFA0:
ldr r0, [r4, #0x10]
mov r1, #0
bl Set2dSpriteAnimSeqNo
add r6, r6, #1
add r4, r4, #4
cmp r6, r5
blt _0224AFA0
b _0224AFD0
_0224AFB2:
cmp r6, r5
ble _0224AFD0
sub r6, r6, #1
cmp r6, r5
blt _0224AFD0
lsl r0, r6, #2
add r4, r7, r0
_0224AFC0:
ldr r0, [r4, #0x10]
mov r1, #1
bl Set2dSpriteAnimSeqNo
sub r6, r6, #1
sub r4, r4, #4
cmp r6, r5
bge _0224AFC0
_0224AFD0:
str r5, [r7, #0x60]
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov41_0224AF8C
thumb_func_start ov41_0224AFD4
ov41_0224AFD4: ; 0x0224AFD4
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
add r7, r1, #0
mov r4, #0
add r5, r6, #0
_0224AFDE:
ldr r0, [r5, #0x10]
bl Sprite_Delete
add r4, r4, #1
add r5, r5, #4
cmp r4, #0x14
blt _0224AFDE
add r0, r6, #0
add r1, r7, #0
bl ov41_0224B084
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_0224AFD4
thumb_func_start ov41_0224AFF8
ov41_0224AFF8: ; 0x0224AFF8
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r6, r2, #0
ldr r7, [sp, #0x3c]
ldr r2, [sp, #0x28]
add r5, r0, #0
add r0, r7, r2
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
add r4, r1, #0
str r6, [sp, #8]
ldr r0, [r4]
str r3, [sp, #0x10]
add r1, r3, #0
mov r3, #0
bl AddCharResObjFromOpenNarc
str r0, [r5]
bl sub_0200ADA4
ldr r0, [r5]
bl sub_0200A740
ldr r2, [sp, #0x2c]
ldr r1, [sp, #0x10]
add r0, r7, r2
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, [sp, #0x38]
mov r3, #0
str r0, [sp, #8]
str r6, [sp, #0xc]
ldr r0, [r4, #4]
bl AddPlttResObjFromOpenNarc
str r0, [r5, #4]
bl sub_0200B00C
ldr r0, [r5, #4]
bl sub_0200A740
ldr r2, [sp, #0x30]
ldr r1, [sp, #0x10]
add r0, r7, r2
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
str r6, [sp, #8]
ldr r0, [r4, #8]
mov r3, #0
bl AddCellOrAnimResObjFromOpenNarc
ldr r2, [sp, #0x34]
str r0, [r5, #8]
add r0, r7, r2
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
str r6, [sp, #8]
ldr r0, [r4, #0xc]
ldr r1, [sp, #0x10]
mov r3, #0
bl AddCellOrAnimResObjFromOpenNarc
str r0, [r5, #0xc]
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_0224AFF8
thumb_func_start ov41_0224B084
ov41_0224B084: ; 0x0224B084
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5]
add r4, r1, #0
bl sub_0200AEB0
ldr r0, [r5, #4]
bl sub_0200B0A8
ldr r0, [r4]
ldr r1, [r5]
bl DestroySingle2DGfxResObj
ldr r0, [r4, #4]
ldr r1, [r5, #4]
bl DestroySingle2DGfxResObj
ldr r0, [r4, #8]
ldr r1, [r5, #8]
bl DestroySingle2DGfxResObj
ldr r0, [r4, #0xc]
ldr r1, [r5, #0xc]
bl DestroySingle2DGfxResObj
pop {r3, r4, r5, pc}
thumb_func_end ov41_0224B084
thumb_func_start ov41_0224B0B8
ov41_0224B0B8: ; 0x0224B0B8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
add r5, r0, #0
ldr r0, [r5]
add r4, r1, #0
add r7, r2, #0
add r6, r3, #0
bl sub_0200A7FC
str r0, [sp, #0x2c]
ldr r0, [r5, #4]
bl sub_0200A7FC
str r0, [sp, #0x30]
ldr r0, [r5, #8]
bl sub_0200A7FC
str r0, [sp, #0x34]
ldr r0, [r5, #0xc]
bl sub_0200A7FC
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 r6, [sp, #0x10]
ldr r1, [r4]
ldr r2, [sp, #0x30]
str r1, [sp, #0x14]
ldr r1, [r4, #4]
ldr r3, [sp, #0x34]
str r1, [sp, #0x18]
ldr r1, [r4, #8]
str r1, [sp, #0x1c]
ldr r1, [r4, #0xc]
str r1, [sp, #0x20]
str r0, [sp, #0x24]
str r0, [sp, #0x28]
ldr r1, [sp, #0x2c]
add r0, r7, #0
bl CreateSpriteResourcesHeader
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_0224B0B8
thumb_func_start ov41_0224B118
ov41_0224B118: ; 0x0224B118
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x60
add r4, r1, #0
mov r1, #0xe5
str r1, [sp]
mov r1, #0xe6
str r1, [sp, #4]
mov r1, #0xe4
str r1, [sp, #8]
mov r1, #0xe3
str r1, [sp, #0xc]
mov r1, #2
str r1, [sp, #0x10]
ldr r1, _0224B214 ; =0x00000BB8
add r5, r2, #0
str r3, [sp, #0x18]
str r1, [sp, #0x14]
ldr r3, [sp, #0x80]
add r7, r0, #0
add r1, r5, #0
mov r2, #0xe
bl ov41_0224AFF8
add r0, r7, #0
add r1, r5, #0
add r2, sp, #0x3c
mov r3, #0
bl ov41_0224B0B8
add r0, sp, #0x3c
str r0, [sp, #0x20]
mov r2, #2
mov r0, #0xe
mov r1, #0x3a
str r0, [sp, #0x38]
lsl r1, r1, #0xc
lsl r0, r2, #0x14
mov r6, #0
str r4, [sp, #0x1c]
str r1, [sp, #0x28]
add r0, r1, r0
str r2, [sp, #0x34]
str r6, [sp, #0x30]
str r0, [sp, #0x28]
mov r4, #0x67
add r5, r7, #0
_0224B174:
str r4, [sp, #0x24]
lsl r0, r4, #0xc
str r0, [sp, #0x24]
add r0, sp, #0x1c
bl sub_02024714
str r0, [r5, #0x10]
add r6, r6, #1
add r4, #0x18
add r5, r5, #4
cmp r6, #2
blt _0224B174
ldr r0, [sp, #0x18]
mov r1, #0x1e
str r0, [r7, #0x1c]
mul r1, r0
str r1, [r7, #0x20]
ldr r1, [sp, #0x7c]
str r1, [r7, #0x2c]
str r0, [r1]
ldr r1, [r7, #0x2c]
str r0, [r1, #8]
add r0, r7, #0
mov r1, #0
add r0, #0x90
str r1, [r0]
add r0, r7, #0
bl ov41_0224B298
mov r0, #0xe
str r0, [sp]
mov r0, #4
str r0, [sp, #4]
mov r0, #0xc1
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
add r0, r7, #0
ldr r1, [sp, #0x78]
add r0, #0x18
mov r2, #0xa
mov r3, #8
bl ov41_0224AD0C
ldr r0, [r7, #0x18]
mov r1, #0
bl FillWindowPixelBuffer
mov r0, #0
str r0, [sp]
mov r3, #4
ldr r0, _0224B218 ; =0x00010200
str r3, [sp, #4]
str r0, [sp, #8]
mov r0, #0xff
str r0, [sp, #0xc]
ldr r0, [r7, #0x18]
mov r1, #0x1b
mov r2, #0xd7
bl ov41_0224AE24
mov r0, #0x48
str r0, [sp]
mov r0, #4
str r0, [sp, #4]
ldr r0, _0224B218 ; =0x00010200
mov r1, #0x1b
str r0, [sp, #8]
mov r0, #0xff
str r0, [sp, #0xc]
ldr r0, [r7, #0x18]
mov r2, #0xd7
mov r3, #5
bl ov41_0224AE24
ldr r0, [r7, #0x18]
bl CopyWindowToVram
add sp, #0x60
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0224B214: .word 0x00000BB8
_0224B218: .word 0x00010200
thumb_func_end ov41_0224B118
thumb_func_start ov41_0224B21C
ov41_0224B21C: ; 0x0224B21C
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #0x24]
add r4, r1, #0
cmp r0, #0
beq _0224B22C
bl DestroySysTask
_0224B22C:
ldr r0, [r5, #0x28]
cmp r0, #0
beq _0224B236
bl DestroySysTask
_0224B236:
add r0, r5, #0
add r1, r4, #0
bl ov41_0224B084
ldr r0, [r5, #0x18]
bl ov41_0224AD84
add r0, r5, #0
mov r1, #0
mov r2, #0x94
bl memset
pop {r3, r4, r5, pc}
thumb_func_end ov41_0224B21C
thumb_func_start ov41_0224B250
ov41_0224B250: ; 0x0224B250
push {r4, lr}
add r4, r0, #0
bl ov41_0224B310
add r0, r4, #0
bl ov41_0224B270
add r0, r4, #0
bl ov41_0224B298
add r4, #0x30
add r0, r4, #0
bl ov41_0224B450
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_0224B250
thumb_func_start ov41_0224B270
ov41_0224B270: ; 0x0224B270
push {r3, lr}
ldr r1, [r0, #0x2c]
ldr r2, [r1]
ldr r1, [r0, #0x1c]
cmp r1, r2
beq _0224B290
str r2, [r0, #0x1c]
cmp r2, #0xa
bgt _0224B290
add r1, r0, #0
add r1, #0x30
bl ov41_0224B374
ldr r0, _0224B294 ; =0x00000682
bl PlaySE
_0224B290:
pop {r3, pc}
nop
_0224B294: .word 0x00000682
thumb_func_end ov41_0224B270
thumb_func_start ov41_0224B298
ov41_0224B298: ; 0x0224B298
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r6, r0, #0
ldr r0, [r6, #0x1c]
mov r1, #1
str r0, [sp]
mov r0, #0xa
add r4, r1, #0
mul r4, r0
mov r7, #0
add r5, r6, #0
_0224B2AE:
ldr r0, [sp]
add r1, r4, #0
bl _s32_div_f
str r0, [sp, #4]
cmp r0, #0xa
ble _0224B2C0
bl GF_AssertFail
_0224B2C0:
ldr r0, [r5, #0x10]
ldr r1, [sp, #4]
bl Set2dSpriteAnimSeqNo
ldr r0, [sp, #4]
add r1, r0, #0
ldr r0, [sp]
mul r1, r4
sub r0, r0, r1
str r0, [sp]
add r0, r4, #0
mov r1, #0xa
bl _s32_div_f
add r4, r0, #0
add r0, r6, #0
add r0, #0x90
ldr r0, [r0]
cmp r0, #0
bne _0224B302
ldr r0, [r6, #0x1c]
cmp r0, #0xa
bgt _0224B302
ldr r0, [r5, #0x10]
mov r1, #1
bl sub_02024A48
cmp r7, #1
bne _0224B302
add r1, r6, #0
add r1, #0x90
mov r0, #1
str r0, [r1]
_0224B302:
add r7, r7, #1
add r5, r5, #4
cmp r7, #2
blt _0224B2AE
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_0224B298
thumb_func_start ov41_0224B310
ov41_0224B310: ; 0x0224B310
ldr r1, [r0, #0x20]
sub r1, r1, #1
bmi _0224B318
str r1, [r0, #0x20]
_0224B318:
bx lr
.balign 4, 0
thumb_func_end ov41_0224B310
thumb_func_start ov41_0224B31C
ov41_0224B31C: ; 0x0224B31C
str r1, [r0]
str r1, [r0, #4]
sub r1, r2, r1
str r1, [r0, #8]
str r3, [r0, #0x10]
mov r1, #0
str r1, [r0, #0xc]
bx lr
thumb_func_end ov41_0224B31C
thumb_func_start ov41_0224B32C
ov41_0224B32C: ; 0x0224B32C
push {r4, lr}
add r4, r0, #0
ldr r2, [r4, #0xc]
ldr r0, [r4, #8]
lsl r2, r2, #0xc
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, [r4, #0x10]
lsl r1, r1, #0xc
bl FX_Div
ldr r1, [r4, #4]
add r0, r0, r1
str r0, [r4]
ldr r0, [r4, #0xc]
ldr r1, [r4, #0x10]
add r0, r0, #1
cmp r0, r1
bgt _0224B36C
str r0, [r4, #0xc]
mov r0, #0
pop {r4, pc}
_0224B36C:
str r1, [r4, #0xc]
mov r0, #1
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_0224B32C
thumb_func_start ov41_0224B374
ov41_0224B374: ; 0x0224B374
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r0, [sp]
str r1, [sp, #4]
mov r1, #0x3a
mov r0, #2
lsl r1, r1, #0xc
lsl r0, r0, #0x14
ldr r4, [sp, #4]
str r1, [sp, #0x10]
add r0, r1, r0
str r0, [sp, #0x10]
add r0, r4, #0
ldr r6, [sp]
mov r7, #0
mov r5, #0x67
str r0, [sp, #8]
_0224B396:
ldr r0, [r6, #0x10]
mov r1, #2
str r0, [r4, #4]
bl sub_0202487C
ldr r2, [sp, #8]
str r5, [sp, #0xc]
lsl r0, r5, #0xc
add r2, #0xc
add r3, sp, #0xc
str r0, [sp, #0xc]
ldmia r3!, {r0, r1}
str r2, [sp, #8]
stmia r2!, {r0, r1}
ldr r0, [r3]
add r7, r7, #1
str r0, [r2]
add r6, r6, #4
add r4, r4, #4
add r5, #0x18
cmp r7, #2
blt _0224B396
ldr r0, [sp]
ldr r1, [r0, #0x1c]
mov r0, #0xa
sub r0, r0, r1
cmp r0, #0
ble _0224B3F0
lsl r0, r0, #0xc
ldr r2, _0224B44C ; =0x00000266
asr r1, r0, #0x1f
mov r3, #0
bl _ll_mul
mov r2, #2
mov r3, #0
lsl r2, r2, #0xa
add r4, r0, r2
adc r1, r3
lsl r0, r1, #0x14
lsr r1, r4, #0xc
orr r1, r0
lsl r0, r2, #1
add r4, r1, r0
b _0224B3F4
_0224B3F0:
mov r4, #1
lsl r4, r4, #0xc
_0224B3F4:
ldr r0, [sp, #4]
mov r2, #1
add r0, #0x24
add r1, r4, #0
lsl r2, r2, #0xc
mov r3, #0x10
bl ov41_0224B31C
mov r2, #6
asr r1, r4, #0x1f
add r0, r4, #0
lsl r2, r2, #0xe
mov r3, #0
bl _ll_mul
mov r3, #2
mov r2, #0
lsl r3, r3, #0xa
add r3, r0, r3
adc r1, r2
lsl r0, r1, #0x14
lsr r1, r3, #0xc
orr r1, r0
mov r0, #6
lsl r0, r0, #0xe
sub r4, r1, r0
ldr r0, [sp, #4]
add r1, r4, #0
add r0, #0x38
mov r3, #0x10
bl ov41_0224B31C
ldr r0, [sp, #4]
add r1, r4, #0
add r0, #0x4c
mov r2, #0
mov r3, #0x10
bl ov41_0224B31C
ldr r0, [sp, #4]
mov r1, #1
str r1, [r0]
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0224B44C: .word 0x00000266
thumb_func_end ov41_0224B374
thumb_func_start ov41_0224B450
ov41_0224B450: ; 0x0224B450
push {r4, r5, r6, lr}
sub sp, #0x18
add r5, r0, #0
ldr r0, [r5]
cmp r0, #0
beq _0224B4E2
add r0, r5, #0
add r0, #0x24
bl ov41_0224B32C
add r4, r0, #0
add r0, r5, #0
add r0, #0x38
bl ov41_0224B32C
add r0, r5, #0
add r0, #0x4c
bl ov41_0224B32C
ldr r0, [r5, #0x24]
add r1, sp, #0xc
str r0, [sp, #0xc]
ldr r0, [r5, #0x24]
str r0, [sp, #0x10]
ldr r0, [r5, #0x24]
str r0, [sp, #0x14]
ldr r0, [r5, #4]
bl sub_020247F4
ldr r0, [r5, #8]
add r1, sp, #0xc
bl sub_020247F4
add r6, r5, #0
add r6, #0xc
add r3, sp, #0
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
str r0, [r3]
ldr r1, [sp]
ldr r0, [r5, #0x38]
sub r0, r1, r0
str r0, [sp]
ldr r1, [sp, #4]
ldr r0, [r5, #0x4c]
sub r0, r1, r0
str r0, [sp, #4]
ldr r0, [r5, #4]
add r1, r2, #0
bl sub_020247D4
add r6, r5, #0
add r6, #0x18
add r3, sp, #0
ldmia r6!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldr r0, [r6]
str r0, [r3]
ldr r1, [sp, #4]
ldr r0, [r5, #0x4c]
sub r0, r1, r0
str r0, [sp, #4]
ldr r0, [r5, #8]
add r1, r2, #0
bl sub_020247D4
cmp r4, #0
beq _0224B4E2
mov r0, #0
str r0, [r5]
_0224B4E2:
add sp, #0x18
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov41_0224B450
thumb_func_start ov41_0224B4E8
ov41_0224B4E8: ; 0x0224B4E8
push {r3, lr}
sub sp, #0x10
add r3, r1, #0
stmia r0!, {r1}
add r3, #0x48
str r3, [sp]
ldr r1, [r1, #0x74]
lsl r1, r1, #2
add r1, #0x89
str r1, [sp, #4]
mov r1, #0x10
str r1, [sp, #8]
add r1, sp, #0
str r2, [sp, #0xc]
bl ov41_02249CE0
add sp, #0x10
pop {r3, pc}
thumb_func_end ov41_0224B4E8
thumb_func_start ov41_0224B50C
ov41_0224B50C: ; 0x0224B50C
ldr r3, _0224B514 ; =ov41_02249CF8
add r0, r0, #4
mov r1, #1
bx r3
.balign 4, 0
_0224B514: .word ov41_02249CF8
thumb_func_end ov41_0224B50C
thumb_func_start ov41_0224B518
ov41_0224B518: ; 0x0224B518
push {r4, lr}
add r4, r0, #0
add r0, r4, #4
bl ov41_02249D60
mov r1, #0x1c
mov r0, #0
_0224B526:
strb r0, [r4]
add r4, r4, #1
sub r1, r1, #1
bne _0224B526
pop {r4, pc}
thumb_func_end ov41_0224B518
thumb_func_start ov41_0224B530
ov41_0224B530: ; 0x0224B530
push {r3, r4, lr}
sub sp, #0x6c
add r2, r0, #0
add r4, r1, #0
add r0, sp, #0
add r1, r2, #0
bl ov41_0224B8DC
add r0, sp, #0
add r1, r4, #0
bl ov41_0224B8F0
add r0, sp, #0
bl ov41_0224B630
add sp, #0x6c
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov41_0224B530
thumb_func_start ov41_0224B554
ov41_0224B554: ; 0x0224B554
push {r4, lr}
add r4, r0, #0
mov r0, #0x26
lsl r0, r0, #4
ldr r1, [r4, r0]
cmp r1, #1
bne _0224B56A
sub r0, #0x48
add r0, r4, r0
bl ov41_0224B50C
_0224B56A:
mov r0, #0x99
lsl r0, r0, #2
ldr r0, [r4, r0]
cmp r0, #1
bne _0224B57A
add r0, r4, #0
bl ov41_0224B720
_0224B57A:
pop {r4, pc}
thumb_func_end ov41_0224B554
thumb_func_start ov41_0224B57C
ov41_0224B57C: ; 0x0224B57C
push {r4, lr}
mov r1, #0x26
add r4, r0, #0
lsl r1, r1, #4
ldr r1, [r4, r1]
cmp r1, #0
beq _0224B58E
bl ov41_0224B878
_0224B58E:
add r0, r4, #0
bl ov41_0224B85C
mov r0, #0x63
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ov41_02245ECC
mov r0, #0x63
mov r1, #0
lsl r0, r0, #2
str r1, [r4, r0]
sub r0, #8
add r0, r4, r0
bl ov41_022499DC
add r0, r4, #0
bl ov41_0224B754
mov r0, #0x8d
lsl r0, r0, #2
ldr r0, [r4, r0]
bl FreeToHeap
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_0224B57C
thumb_func_start ov41_0224B5C8
ov41_0224B5C8: ; 0x0224B5C8
ldr r3, _0224B5CC ; =ov41_022465CC
bx r3
.balign 4, 0
_0224B5CC: .word ov41_022465CC
thumb_func_end ov41_0224B5C8
thumb_func_start ov41_0224B5D0
ov41_0224B5D0: ; 0x0224B5D0
mov r2, #0x99
lsl r2, r2, #2
str r1, [r0, r2]
bx lr
thumb_func_end ov41_0224B5D0
thumb_func_start ov41_0224B5D8
ov41_0224B5D8: ; 0x0224B5D8
push {r3, r4, r5, r6, lr}
sub sp, #4
add r6, r2, #0
mov r2, #0x19
add r4, r1, #0
lsl r2, r2, #4
add r5, r0, #0
add r1, r2, #0
add r0, r5, r2
str r6, [sp]
add r1, #0xac
add r2, #0xb0
ldr r1, [r5, r1]
ldr r2, [r5, r2]
add r3, r4, #0
bl ov41_02248120
mov r0, #0x26
lsl r0, r0, #4
ldr r0, [r5, r0]
cmp r0, #0
beq _0224B620
mov r3, #0x88
ldr r0, [r5, #0x40]
mov r1, #2
mov r2, #0
sub r3, r3, r4
bl BgSetPosTextAndCommit
mov r3, #0x10
ldr r0, [r5, #0x40]
mov r1, #2
mov r2, #3
sub r3, r3, r6
bl BgSetPosTextAndCommit
_0224B620:
mov r0, #0x8f
lsl r0, r0, #2
str r4, [r5, r0]
add r0, r0, #4
str r6, [r5, r0]
add sp, #4
pop {r3, r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov41_0224B5D8
thumb_func_start ov41_0224B630
ov41_0224B630: ; 0x0224B630
push {r3, r4, r5, lr}
add r5, r0, #0
mov r1, #0x9a
ldr r0, [r5, #0x68]
lsl r1, r1, #2
bl AllocFromHeap
mov r2, #0x9a
mov r1, #0
lsl r2, r2, #2
add r4, r0, #0
bl memset
mov r0, #0x8e
ldr r1, [r5, #0x68]
lsl r0, r0, #2
str r1, [r4, r0]
ldr r0, [r5, #0x68]
bl AllocMonZeroed
mov r1, #0x8d
lsl r1, r1, #2
str r0, [r4, r1]
ldr r0, [r5]
ldr r1, [r4, r1]
bl sub_0202BEF4
add r0, r4, #0
add r1, r5, #0
bl ov41_0224B6CC
ldr r1, [r5, #0x58]
ldr r2, [r5, #0x68]
add r0, r4, #0
bl ov41_02246544
mov r0, #0x61
lsl r0, r0, #2
ldr r2, [r5, #0x68]
add r0, r4, r0
mov r1, #0x15
bl ov41_022499B4
ldr r1, [r5, #0x68]
mov r0, #0x14
bl ov41_02245EA0
mov r1, #0x63
lsl r1, r1, #2
str r0, [r4, r1]
add r0, r4, #0
add r1, r5, #0
bl ov41_0224B780
add r0, r4, #0
add r1, r5, #0
bl ov41_0224B848
mov r1, #0x86
lsl r1, r1, #2
add r0, r4, r1
sub r1, #0x88
ldr r2, [r5, #0x68]
add r1, r4, r1
bl ov41_0224B4E8
mov r0, #0x26
mov r1, #1
lsl r0, r0, #4
str r1, [r4, r0]
add r0, r0, #4
str r1, [r4, r0]
add r0, r4, #0
add r1, r5, #0
bl ov41_0224B888
add r0, r4, #0
pop {r3, r4, r5, pc}
thumb_func_end ov41_0224B630
thumb_func_start ov41_0224B6CC
ov41_0224B6CC: ; 0x0224B6CC
push {r3, r4, r5, lr}
sub sp, #0x28
add r4, r1, #0
ldr r1, [r4, #0x68]
add r5, r0, #0
mov r0, #0x1a
bl NARC_ctor
mov r1, #6
lsl r1, r1, #6
str r0, [r5, r1]
ldr r0, _0224B71C ; =0x000002CE
add r1, sp, #0
str r0, [sp]
mov r0, #0x76
str r0, [sp, #4]
mov r0, #0x13
str r0, [sp, #8]
ldr r0, [r4, #0x68]
str r0, [sp, #0xc]
ldr r2, [r4, #0x68]
add r0, r5, #0
bl ov41_02246518
ldr r3, [r4, #0x68]
add r0, r5, #0
add r1, sp, #0x10
add r2, r4, #0
bl ov41_0224B938
add r0, r5, #0
add r1, sp, #0x10
bl ov41_02246250
add r0, sp, #0x10
bl ov41_022463D4
add sp, #0x28
pop {r3, r4, r5, pc}
nop
_0224B71C: .word 0x000002CE
thumb_func_end ov41_0224B6CC
thumb_func_start ov41_0224B720
ov41_0224B720: ; 0x0224B720
push {r3, r4, lr}
sub sp, #4
mov r3, #0x25
lsl r3, r3, #4
add r1, r0, r3
str r1, [sp]
add r1, r3, #0
sub r1, #0x14
ldr r2, [r0, r1]
add r1, r3, #0
sub r1, #0xc
ldr r1, [r0, r1]
add r1, r2, r1
add r2, r3, #0
sub r2, #0x10
ldr r4, [r0, r2]
add r2, r3, #0
sub r2, #8
sub r3, r3, #4
ldr r2, [r0, r2]
ldrh r3, [r0, r3]
add r2, r4, r2
bl ov41_022465D8
add sp, #4
pop {r3, r4, pc}
thumb_func_end ov41_0224B720
thumb_func_start ov41_0224B754
ov41_0224B754: ; 0x0224B754
push {r4, lr}
add r4, r0, #0
bl ov41_0224626C
add r0, r4, #0
bl ov41_02246594
mov r0, #0x26
lsl r0, r0, #4
ldr r0, [r4, r0]
cmp r0, #0
beq _0224B772
add r0, r4, #0
bl ov41_022465C0
_0224B772:
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
bl NARC_dtor
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_0224B754
thumb_func_start ov41_0224B780
ov41_0224B780: ; 0x0224B780
push {r4, r5, r6, r7, lr}
sub sp, #0x4c
add r5, r0, #0
add r2, sp, #0x28
mov r0, #0
add r7, r1, #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}
str r0, [r3]
ldr r0, [r5]
str r0, [sp, #0x28]
ldr r0, [r5, #4]
str r0, [sp, #0x2c]
ldr r0, [r5, #0x10]
str r0, [sp, #0x30]
ldr r0, [r5, #0x30]
str r0, [sp, #0x34]
ldr r0, [r5, #0x20]
str r0, [sp, #0x38]
ldr r0, [r5, #0x40]
str r0, [sp, #0x3c]
mov r0, #0x63
lsl r0, r0, #2
ldr r1, [r5, r0]
str r1, [sp, #0x40]
add r1, r0, #0
sub r1, #8
add r1, r5, r1
str r1, [sp, #0x44]
mov r1, #0x15
add r0, r0, #4
str r1, [sp, #0x48]
add r0, r5, r0
add r1, r2, #0
bl ov41_02247F3C
ldr r0, [r7]
bl sub_0202BEE4
add r6, r0, #0
ldr r0, [r7]
bl sub_0202BEEC
add r4, r0, #0
ldr r0, [r7]
bl sub_0202BEDC
str r4, [sp]
str r0, [sp, #4]
ldr r0, [r7, #0x68]
mov r1, #0x19
lsl r1, r1, #4
str r0, [sp, #8]
add r0, r5, r1
add r1, #0xa4
ldr r1, [r5, r1]
add r2, sp, #0x18
add r3, r6, #0
bl ov41_02247FAC
ldr r0, [r7, #0x54]
mov r6, #0
cmp r0, #0
ble _0224B844
add r4, r7, #0
_0224B80A:
ldr r0, [r4, #4]
bl sub_0202BEFC
str r0, [sp, #0xc]
ldr r0, [r4, #4]
bl sub_0202BF00
str r0, [sp, #0x10]
ldr r0, [r4, #4]
bl sub_0202BF04
str r0, [sp, #0x14]
ldr r0, [r4, #4]
bl sub_0202BF08
str r0, [sp]
mov r0, #0x19
lsl r0, r0, #4
ldr r1, [sp, #0xc]
ldr r2, [sp, #0x10]
ldr r3, [sp, #0x14]
add r0, r5, r0
bl ov41_02248044
ldr r0, [r7, #0x54]
add r6, r6, #1
add r4, r4, #4
cmp r6, r0
blt _0224B80A
_0224B844:
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
thumb_func_end ov41_0224B780
thumb_func_start ov41_0224B848
ov41_0224B848: ; 0x0224B848
add r2, r1, #0
mov r1, #0x19
lsl r1, r1, #4
add r0, r0, r1
ldr r1, [r2, #0x5c]
ldr r3, _0224B858 ; =ov41_0224825C
ldr r2, [r2, #0x68]
bx r3
.balign 4, 0
_0224B858: .word ov41_0224825C
thumb_func_end ov41_0224B848
thumb_func_start ov41_0224B85C
ov41_0224B85C: ; 0x0224B85C
push {r4, lr}
add r4, r0, #0
mov r0, #0x19
lsl r0, r0, #4
add r0, r4, r0
bl ov41_022480E0
mov r0, #0x19
lsl r0, r0, #4
add r0, r4, r0
bl ov41_02247F90
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_0224B85C
thumb_func_start ov41_0224B878
ov41_0224B878: ; 0x0224B878
mov r1, #0x19
lsl r1, r1, #4
ldr r3, _0224B884 ; =ov41_022482A8
add r0, r0, r1
bx r3
nop
_0224B884: .word ov41_022482A8
thumb_func_end ov41_0224B878
thumb_func_start ov41_0224B888
ov41_0224B888: ; 0x0224B888
push {r3, r4, r5, lr}
add r3, r1, #0
mov r1, #0x8f
add r4, r0, #0
mov r2, #0x48
lsl r1, r1, #2
str r2, [r4, r1]
mov r5, #0x38
add r2, r1, #4
str r5, [r4, r2]
add r2, r1, #0
add r2, #8
str r5, [r4, r2]
add r2, r1, #0
mov r5, #0x40
add r2, #0xc
str r5, [r4, r2]
lsl r2, r5, #6
add r5, r1, #0
add r5, #0x14
str r2, [r4, r5]
add r5, r1, #0
add r5, #0x18
str r2, [r4, r5]
add r5, r1, #0
add r5, #0x1c
str r2, [r4, r5]
mov r2, #0
add r1, #0x10
strh r2, [r4, r1]
ldr r1, [r3, #0x60]
ldr r2, [r3, #0x64]
bl ov41_0224B5D8
mov r0, #0x97
ldr r1, _0224B8D8 ; =0x00007FFF
lsl r0, r0, #2
strh r1, [r4, r0]
pop {r3, r4, r5, pc}
nop
_0224B8D8: .word 0x00007FFF
thumb_func_end ov41_0224B888
thumb_func_start ov41_0224B8DC
ov41_0224B8DC: ; 0x0224B8DC
ldr r2, [r1]
str r2, [r0, #0x58]
ldr r2, [r1, #4]
str r2, [r0, #0x60]
ldr r2, [r1, #8]
str r2, [r0, #0x64]
ldr r1, [r1, #0xc]
str r1, [r0, #0x68]
bx lr
.balign 4, 0
thumb_func_end ov41_0224B8DC
thumb_func_start ov41_0224B8F0
ov41_0224B8F0: ; 0x0224B8F0
push {r3, r4, r5, r6, r7, lr}
add r7, r1, #0
add r5, r0, #0
add r0, r7, #0
bl sub_0202BE14
add r6, r5, #0
str r0, [r5]
mov r4, #0
str r4, [r5, #0x54]
add r6, #0x54
_0224B906:
add r0, r7, #0
add r1, r4, #0
bl sub_0202BDEC
cmp r0, #0
beq _0224B928
add r0, r7, #0
add r1, r4, #0
bl sub_0202BE2C
ldr r1, [r5, #0x54]
lsl r1, r1, #2
add r1, r5, r1
str r0, [r1, #4]
ldr r0, [r6]
add r0, r0, #1
str r0, [r6]
_0224B928:
add r4, r4, #1
cmp r4, #0xa
blt _0224B906
add r0, r7, #0
bl sub_0202BE80
str r0, [r5, #0x5c]
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov41_0224B8F0
thumb_func_start ov41_0224B938
ov41_0224B938: ; 0x0224B938
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
add r7, r3, #0
add r5, r0, #0
add r6, r2, #0
add r0, r4, #0
add r1, r7, #0
bl ov41_022464AC
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
add r3, r7, #0
bl ov41_0224B958
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov41_0224B938
thumb_func_start ov41_0224B958
ov41_0224B958: ; 0x0224B958
push {r4, r5, r6, r7, lr}
sub sp, #0x14
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #0x10]
add r0, r2, #0
ldr r0, [r0, #0x54]
add r4, r1, #0
str r2, [sp, #8]
str r3, [sp, #0xc]
cmp r0, #0
ble _0224B9D0
add r6, r2, #0
_0224B972:
ldr r0, [r6, #4]
bl sub_0202BEFC
add r5, r0, #0
ldr r0, [r4, #0x10]
add r1, r5, #0
bl sub_020255A0
cmp r0, #1
bne _0224B9BE
mov r0, #1
str r0, [sp]
mov r0, #6
ldr r1, [sp, #4]
lsl r0, r0, #6
ldr r0, [r1, r0]
ldr r3, [sp, #0xc]
add r1, r5, #1
mov r2, #0
bl GfGfxLoader_LoadFromOpenNarc
add r7, r0, #0
ldr r0, [r4, #0x10]
add r1, r7, #0
add r2, r5, #0
bl sub_020255C4
ldr r1, [r4]
lsl r5, r5, #3
add r1, r1, r5
add r0, r7, #0
add r1, r1, #4
bl NNS_G2dGetUnpackedCharacterData
ldr r0, [sp, #4]
ldr r1, [r0]
ldr r0, [r4]
str r1, [r0, r5]
_0224B9BE:
ldr r0, [sp, #0x10]
add r6, r6, #4
add r0, r0, #1
str r0, [sp, #0x10]
ldr r0, [sp, #8]
ldr r1, [r0, #0x54]
ldr r0, [sp, #0x10]
cmp r0, r1
blt _0224B972
_0224B9D0:
mov r0, #1
str r0, [sp]
mov r1, #6
ldr r0, [sp, #4]
lsl r1, r1, #6
ldr r0, [r0, r1]
mov r1, #0
ldr r3, [sp, #0xc]
add r2, r1, #0
bl GfGfxLoader_LoadFromOpenNarc
add r5, r0, #0
ldr r0, [r4, #0x14]
add r1, r5, #0
mov r2, #0
bl sub_020255C4
ldr r1, [r4, #8]
add r0, r5, #0
add r1, r1, #4
bl NNS_G2dGetUnpackedPaletteData
ldr r0, [sp, #4]
ldr r1, [r0]
ldr r0, [r4, #8]
str r1, [r0]
ldr r0, [r4, #8]
mov r1, #3
str r1, [r0, #8]
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov41_0224B958
thumb_func_start ov41_0224BA10
ov41_0224BA10: ; 0x0224BA10
push {r3, r4, r5, lr}
sub sp, #0x10
mov r2, #2
add r4, r0, #0
mov r0, #3
mov r1, #0xd
lsl r2, r2, #0x10
bl CreateHeap
mov r2, #1
mov r0, #3
mov r1, #0xe
lsl r2, r2, #0x12
bl CreateHeap
mov r1, #0x1a
add r0, r4, #0
lsl r1, r1, #4
mov r2, #0xd
bl OverlayManager_CreateAndGetData
mov r2, #0x1a
mov r1, #0
lsl r2, r2, #4
add r5, r0, #0
bl memset
ldr r0, _0224BAC4 ; =ov41_0224BBF0
add r1, r5, #0
bl Main_SetVBlankIntrCB
bl HBlankInterruptDisable
add r0, r4, #0
bl OverlayManager_GetArgs
add r4, r0, #0
ldr r0, [r4]
ldr r1, [r4, #4]
bl sub_0202B9B8
str r0, [r5]
ldr r0, [r4, #4]
str r0, [r5, #8]
ldr r0, [r4, #8]
str r0, [r5, #0xc]
bl ov41_02246130
ldr r0, _0224BAC8 ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GX_SwapDisplay
add r0, r5, #0
add r0, #0x14
mov r1, #0xe
bl ov41_02246670
ldr r0, [r5, #0x54]
str r0, [sp]
mov r0, #0x48
str r0, [sp, #4]
mov r0, #0x10
str r0, [sp, #8]
mov r0, #0xe
str r0, [sp, #0xc]
ldr r1, [r5]
add r0, sp, #0
bl ov41_0224B530
str r0, [r5, #0x10]
add r0, r5, #0
bl ov41_0224BC04
add r0, r5, #0
bl ov41_0224BCA4
add r0, r5, #0
bl ov41_0224BCF0
add r0, r5, #0
bl ov41_0224BDCC
add r0, r5, #0
bl ov41_0224BE5C
mov r0, #1
add sp, #0x10
pop {r3, r4, r5, pc}
nop
_0224BAC4: .word ov41_0224BBF0
_0224BAC8: .word gSystem + 0x60
thumb_func_end ov41_0224BA10
thumb_func_start ov41_0224BACC
ov41_0224BACC: ; 0x0224BACC
push {r4, r5, lr}
sub sp, #0xc
add r4, r1, #0
bl OverlayManager_GetData
add r5, r0, #0
bl Thunk_G3X_Reset
bl NNS_G2dSetupSoftwareSpriteCamera
ldr r0, [r5, #0x10]
bl ov41_0224B554
mov r0, #0
add r1, r0, #0
bl sub_02026E50
add r5, #0x14
add r0, r5, #0
bl ov41_022466C8
ldr r1, [r4]
cmp r1, #5
bhi _0224BB96
add r0, r1, r1
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0224BB08: ; jump table
.short _0224BB14 - _0224BB08 - 2 ; case 0
.short _0224BB1A - _0224BB08 - 2 ; case 1
.short _0224BB38 - _0224BB08 - 2 ; case 2
.short _0224BB48 - _0224BB08 - 2 ; case 3
.short _0224BB68 - _0224BB08 - 2 ; case 4
.short _0224BB88 - _0224BB08 - 2 ; case 5
_0224BB14:
add r0, r1, #1
str r0, [r4]
b _0224BB96
_0224BB1A:
mov r0, #6
str r0, [sp]
mov r2, #1
str r2, [sp, #4]
mov r0, #0xd
str r0, [sp, #8]
mov r0, #0
mov r1, #5
add r3, r0, #0
bl BeginNormalPaletteFade
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0224BB96
_0224BB38:
bl IsPaletteFadeFinished
cmp r0, #0
beq _0224BB96
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0224BB96
_0224BB48:
ldr r0, _0224BB9C ; =gSystem
ldr r1, [r0, #0x48]
mov r0, #3
tst r0, r1
bne _0224BB5A
bl System_GetTouchNew
cmp r0, #0
beq _0224BB96
_0224BB5A:
ldr r0, _0224BBA0 ; =0x000005DD
bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0224BB96
_0224BB68:
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #0xd
str r0, [sp, #8]
mov r0, #0
mov r1, #2
add r2, r0, #0
add r3, r0, #0
bl BeginNormalPaletteFade
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _0224BB96
_0224BB88:
bl IsPaletteFadeFinished
cmp r0, #0
beq _0224BB96
add sp, #0xc
mov r0, #1
pop {r4, r5, pc}
_0224BB96:
mov r0, #0
add sp, #0xc
pop {r4, r5, pc}
.balign 4, 0
_0224BB9C: .word gSystem
_0224BBA0: .word 0x000005DD
thumb_func_end ov41_0224BACC
thumb_func_start ov41_0224BBA4
ov41_0224BBA4: ; 0x0224BBA4
push {r3, r4, r5, lr}
add r5, r0, #0
bl OverlayManager_GetData
add r4, r0, #0
ldr r0, [r4, #0x10]
bl ov41_0224B57C
add r0, r4, #0
bl ov41_0224BD8C
add r0, r4, #0
bl ov41_0224BE34
add r4, #0x14
add r0, r4, #0
bl ov41_02246698
bl ov41_02246150
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
bl HBlankInterruptDisable
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0xd
bl DestroyHeap
mov r0, #0xe
bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov41_0224BBA4
thumb_func_start ov41_0224BBF0
ov41_0224BBF0: ; 0x0224BBF0
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x10]
bl ov41_0224B5C8
add r4, #0x14
add r0, r4, #0
bl ov41_022466B8
pop {r4, pc}
thumb_func_end ov41_0224BBF0
thumb_func_start ov41_0224BC04
ov41_0224BC04: ; 0x0224BC04
push {r4, r5, lr}
sub sp, #0x14
add r5, r0, #0
mov r0, #0x40
str r0, [sp]
mov r0, #0xe
str r0, [sp, #4]
mov r0, #0x65
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #0x7e
mov r2, #0
mov r3, #0x60
bl GfGfxLoader_GXLoadPalFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0xe
str r0, [sp, #0xc]
mov r0, #0x65
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r2, [r5, #0x54]
mov r1, #0x7d
mov r3, #1
bl GfGfxLoader_LoadCharDataFromOpenNarc
mov r0, #0xe
str r0, [sp]
mov r0, #0x1a
mov r1, #0x80
mov r2, #0
add r3, sp, #0x10
bl GfGfxLoader_GetScrnData
ldr r2, [sp, #0x10]
mov r3, #0
str r3, [sp]
add r4, r0, #0
ldrh r0, [r2]
mov r1, #1
lsl r0, r0, #0x15
lsr r0, r0, #0x18
str r0, [sp, #4]
ldrh r0, [r2, #2]
add r2, #0xc
lsl r0, r0, #0x15
lsr r0, r0, #0x18
str r0, [sp, #8]
ldr r0, [r5, #0x54]
bl LoadRectToBgTilemapRect
ldr r1, [sp, #0x10]
mov r2, #0
ldrh r0, [r1]
add r3, r2, #0
lsl r0, r0, #0x15
lsr r0, r0, #0x18
str r0, [sp]
ldrh r0, [r1, #2]
mov r1, #1
lsl r0, r0, #0x15
lsr r0, r0, #0x18
str r0, [sp, #4]
mov r0, #4
str r0, [sp, #8]
ldr r0, [r5, #0x54]
bl BgTilemapRectChangePalette
add r0, r4, #0
bl FreeToHeap
ldr r0, [r5, #0x54]
mov r1, #1
bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, pc}
thumb_func_end ov41_0224BC04
thumb_func_start ov41_0224BCA4
ov41_0224BCA4: ; 0x0224BCA4
push {r4, lr}
sub sp, #0x10
mov r1, #0
add r4, r0, #0
str r1, [sp]
mov r0, #0xe
str r0, [sp, #4]
mov r0, #0xef
mov r2, #4
add r3, r1, #0
bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0xe
str r0, [sp, #0xc]
ldr r2, [r4, #0x54]
mov r0, #0xef
mov r1, #9
mov r3, #4
bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0xe
str r0, [sp, #0xc]
ldr r2, [r4, #0x54]
mov r0, #0xef
mov r1, #1
mov r3, #4
bl GfGfxLoader_LoadCharData
add sp, #0x10
pop {r4, pc}
thumb_func_end ov41_0224BCA4
thumb_func_start ov41_0224BCF0
ov41_0224BCF0: ; 0x0224BCF0
push {r3, r4, lr}
sub sp, #0xc
add r4, r0, #0
mov r0, #1
str r0, [sp]
mov r0, #0xfa
lsl r0, r0, #2
mov r1, #0x65
str r0, [sp, #4]
lsl r1, r1, #2
add r0, r4, #0
ldr r1, [r4, r1]
add r0, #0x14
mov r2, #0xe9
mov r3, #0
bl ov41_022462E4
mov r0, #1
str r0, [sp]
mov r0, #6
str r0, [sp, #4]
mov r0, #0xfa
lsl r0, r0, #2
mov r1, #0x65
str r0, [sp, #8]
lsl r1, r1, #2
add r0, r4, #0
ldr r1, [r4, r1]
add r0, #0x14
mov r2, #0xea
mov r3, #0
bl ov41_02246304
mov r0, #0xfa
lsl r0, r0, #2
mov r1, #0x65
str r0, [sp]
lsl r1, r1, #2
add r0, r4, #0
ldr r1, [r4, r1]
add r0, #0x14
mov r2, #0xe8
mov r3, #0
bl ov41_02246328
mov r0, #0xfa
lsl r0, r0, #2
mov r1, #0x65
str r0, [sp]
lsl r1, r1, #2
add r0, r4, #0
ldr r1, [r4, r1]
add r0, #0x14
mov r2, #0xe7
mov r3, #0
bl ov41_02246344
mov r0, #0x64
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
add r0, r4, #0
mov r1, #0xfa
add r0, #0x14
lsl r1, r1, #2
mov r2, #0
mov r3, #0x90
bl ov41_02246280
mov r1, #0x66
lsl r1, r1, #2
str r0, [r4, r1]
ldr r0, [r4, r1]
mov r1, #1
bl sub_02024A04
add sp, #0xc
pop {r3, r4, pc}
thumb_func_end ov41_0224BCF0
thumb_func_start ov41_0224BD8C
ov41_0224BD8C: ; 0x0224BD8C
push {r4, lr}
mov r1, #0xfa
add r4, r0, #0
add r0, #0x14
lsl r1, r1, #2
bl ov41_02246360
add r0, r4, #0
mov r1, #0xfa
add r0, #0x14
lsl r1, r1, #2
bl ov41_02246374
add r0, r4, #0
mov r1, #0xfa
add r0, #0x14
lsl r1, r1, #2
bl ov41_02246388
add r0, r4, #0
mov r1, #0xfa
add r0, #0x14
lsl r1, r1, #2
bl ov41_0224639C
mov r0, #0x66
lsl r0, r0, #2
ldr r0, [r4, r0]
bl Sprite_Delete
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_0224BD8C
thumb_func_start ov41_0224BDCC
ov41_0224BDCC: ; 0x0224BDCC
push {r3, r4, lr}
sub sp, #0x14
add r4, r0, #0
mov r0, #0xe
mov r1, #1
bl AllocWindows
mov r1, #0x67
lsl r1, r1, #2
str r0, [r4, r1]
mov r0, #0x12
str r0, [sp]
mov r0, #0x20
str r0, [sp, #4]
mov r0, #6
str r0, [sp, #8]
mov r0, #5
str r0, [sp, #0xc]
mov r0, #1
str r0, [sp, #0x10]
ldr r0, [r4, #0x54]
ldr r1, [r4, r1]
mov r2, #3
mov r3, #0
bl AddWindowParameterized
mov r0, #0
mov r1, #0xa0
mov r2, #0xe
bl LoadFontPal0
mov r0, #3
mov r1, #0
bl SetBgPriority
mov r0, #0
mov r1, #2
bl SetBgPriority
mov r0, #1
add r1, r0, #0
bl SetBgPriority
mov r1, #3
ldr r0, [r4, #0x54]
add r2, r1, #0
mov r3, #0
bl BgSetPosTextAndCommit
add sp, #0x14
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov41_0224BDCC
thumb_func_start ov41_0224BE34
ov41_0224BE34: ; 0x0224BE34
push {r4, lr}
add r4, r0, #0
mov r0, #0x67
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ClearWindowTilemapAndCopyToVram
mov r0, #0x67
lsl r0, r0, #2
ldr r0, [r4, r0]
bl RemoveWindow
mov r0, #0x67
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #1
bl WindowArray_dtor
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_0224BE34
thumb_func_start ov41_0224BE5C
ov41_0224BE5C: ; 0x0224BE5C
push {r4, lr}
add r4, r0, #0
mov r0, #0x67
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0
bl FillWindowPixelBuffer
add r0, r4, #0
bl ov41_0224BE80
mov r0, #0x67
lsl r0, r0, #2
ldr r0, [r4, r0]
bl CopyWindowToVram
pop {r4, pc}
.balign 4, 0
thumb_func_end ov41_0224BE5C
thumb_func_start ov41_0224BE80
ov41_0224BE80: ; 0x0224BE80
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
add r5, r0, #0
mov r0, #0
mov r1, #0x1b
mov r2, #0xd7
mov r3, #0xd
bl NewMsgDataFromNarc
str r0, [sp, #0x10]
cmp r0, #0
bne _0224BE9C
bl GF_AssertFail
_0224BE9C:
mov r0, #0xd
bl MessageFormat_new
add r6, r0, #0
mov r0, #0x66
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #5
bl Set2dSpriteAnimSeqNo
mov r0, #3
lsl r0, r0, #0x10
str r0, [sp, #0x14]
mov r0, #9
lsl r0, r0, #0x10
str r0, [sp, #0x18]
mov r0, #0
str r0, [sp, #0x1c]
mov r0, #0x66
lsl r0, r0, #2
ldr r0, [r5, r0]
add r1, sp, #0x14
bl sub_020247D4
mov r0, #0xc
mov r1, #0xd
bl String_New
add r7, r0, #0
ldr r0, [r5]
add r1, r7, #0
bl sub_0202BE60
mov r0, #0
add r1, r7, #0
add r2, r0, #0
bl FontID_String_GetWidth
add r4, r0, #0
mov r0, #7
str r0, [sp]
mov r1, #0
lsr r3, r4, #0x1f
add r3, r4, r3
asr r4, r3, #1
mov r3, #0x80
ldr r0, _0224BF90 ; =0x00010200
str r1, [sp, #4]
str r0, [sp, #8]
mov r0, #0x67
str r1, [sp, #0xc]
lsl r0, r0, #2
ldr r0, [r5, r0]
add r2, r7, #0
sub r3, r3, r4
bl AddTextPrinterParameterized2
add r0, r7, #0
bl String_dtor
ldr r0, [r5]
bl sub_0202BE98
add r2, r0, #0
add r0, r6, #0
mov r1, #0
bl BufferECWord
mov r0, #0xc8
mov r1, #0xd
bl String_New
add r4, r0, #0
ldr r0, [sp, #0x10]
mov r1, #0x2d
bl NewString_ReadMsgData
add r7, r0, #0
add r0, r6, #0
add r1, r4, #0
add r2, r7, #0
bl StringExpandPlaceholders
mov r0, #0
add r1, r4, #0
add r2, r0, #0
bl FontID_String_GetWidth
add r3, r0, #0
mov r0, #0x1b
str r0, [sp]
mov r1, #0
ldr r0, _0224BF90 ; =0x00010200
str r1, [sp, #4]
str r0, [sp, #8]
mov r0, #0x67
str r1, [sp, #0xc]
lsl r0, r0, #2
ldr r0, [r5, r0]
lsr r5, r3, #0x1f
add r5, r3, r5
asr r5, r5, #1
mov r3, #0x80
add r2, r4, #0
sub r3, r3, r5
bl AddTextPrinterParameterized2
add r0, r4, #0
bl String_dtor
add r0, r7, #0
bl String_dtor
ldr r0, [sp, #0x10]
bl DestroyMsgData
add r0, r6, #0
bl MessageFormat_delete
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
nop
_0224BF90: .word 0x00010200
thumb_func_end ov41_0224BE80
.rodata
_0224BF94:
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00
ov41_0224BFA4: ; 0x0224BFA4
.byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00
.byte 0x0E, 0x00, 0x00, 0x00
ov41_0224BFB4: ; 0x0224BFB4
.byte 0xCE, 0x02, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00
.byte 0x0E, 0x00, 0x00, 0x00
ov41_0224BFC4: ; 0x0224BFC4
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0F, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov41_0224BFE0: ; 0x0224BFE0
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov41_0224BFFC: ; 0x0224BFFC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x01
.byte 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov41_0224C018: ; 0x0224C018
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x01, 0x00, 0x02, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov41_0224C034: ; 0x0224C034
.byte 0x00, 0x00, 0x00, 0x00, 0x6F, 0xFF, 0xFF, 0xFF, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1D, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov41_0224C050: ; 0x0224C050
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x0E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov41_0224C06C: ; 0x0224C06C
.byte 0x04, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
.byte 0x10, 0x00, 0x00, 0x00
ov41_0224C094: ; 0x0224C094
.byte 0x02, 0x01, 0x00, 0x00