pokeheartgold/asm/overlay_88.s
2024-09-08 18:13:54 -04:00

2309 lines
41 KiB
ArmAsm

.include "asm/macros.inc"
.include "overlay_88.inc"
.include "global.inc"
.text
thumb_func_start ov88_02258800
ov88_02258800: ; 0x02258800
push {r4, r5, lr}
sub sp, #0xc
add r4, r0, #0
bl OverlayManager_GetArgs
mov r2, #5
add r5, r0, #0
mov r0, #3
mov r1, #0x72
lsl r2, r2, #0x10
bl CreateHeap
mov r1, #0x27
add r0, r4, #0
lsl r1, r1, #4
mov r2, #0x72
bl OverlayManager_CreateAndGetData
mov r2, #0x27
mov r1, #0
lsl r2, r2, #4
add r4, r0, #0
bl memset
ldr r0, [r5]
mov r1, #0x72
str r0, [r4]
ldr r0, [r5, #4]
str r0, [r4, #4]
add r0, r4, #0
add r0, #8
bl ov88_02258ABC
mov r0, #0x53
lsl r0, r0, #2
add r1, r4, #0
add r0, r4, r0
add r1, #8
mov r2, #0x72
bl ov88_02258D64
ldr r0, [r4, #4]
add r1, r4, #0
str r0, [sp]
ldr r0, [r5, #8]
mov r2, #0x72
str r0, [sp, #4]
str r2, [sp, #8]
add r0, r2, #0
add r0, #0xe2
add r2, #0xda
ldr r3, [r4]
add r0, r4, r0
add r1, #8
add r2, r4, r2
bl ov88_02258EA8
ldr r0, [r5, #8]
add r1, r4, #0
str r0, [sp]
mov r2, #0x72
str r2, [sp, #4]
add r0, r2, #0
add r0, #0xee
add r2, #0xda
ldr r3, [r4]
add r0, r4, r0
add r1, #8
add r2, r4, r2
bl ov88_022590C0
mov r0, #0x59
lsl r0, r0, #2
add r1, r4, #0
add r0, r4, r0
add r1, #8
mov r2, #0x72
bl ov88_022592EC
mov r0, #2
lsl r0, r0, #8
add r1, r4, #0
add r0, r4, r0
add r1, #8
mov r2, #0x72
bl ov88_0225967C
ldr r0, _022588C0 ; =ov88_02258A64
add r1, r4, #0
bl Main_SetVBlankIntrCB
bl HBlankInterruptDisable
mov r0, #1
add sp, #0xc
pop {r4, r5, pc}
.balign 4, 0
_022588C0: .word ov88_02258A64
thumb_func_end ov88_02258800
thumb_func_start ov88_022588C4
ov88_022588C4: ; 0x022588C4
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r6, r0, #0
add r5, r1, #0
bl OverlayManager_GetData
add r4, r0, #0
add r0, r6, #0
bl OverlayManager_GetArgs
add r6, r0, #0
ldr r0, [r5]
cmp r0, #4
bls _022588E2
b _022589EA
_022588E2:
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_022588EE: ; jump table
.short _022588F8 - _022588EE - 2 ; case 0
.short _0225891E - _022588EE - 2 ; case 1
.short _0225892E - _022588EE - 2 ; case 2
.short _022589BC - _022588EE - 2 ; case 3
.short _022589DC - _022588EE - 2 ; case 4
_022588F8:
mov r0, #6
str r0, [sp]
mov r1, #1
str r1, [sp, #4]
mov r0, #0x72
str r0, [sp, #8]
mov r0, #0
add r2, r1, #0
add r3, r0, #0
bl BeginNormalPaletteFade
ldr r0, [r6, #8]
mov r1, #1
bl ov45_0222A520
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _022589EA
_0225891E:
bl IsPaletteFadeFinished
cmp r0, #1
bne _022589EA
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _022589EA
_0225892E:
ldr r0, _022589F8 ; =gSystem
ldr r1, [r0, #0x48]
mov r0, #2
tst r0, r1
bne _0225894A
ldr r0, [r6, #8]
bl ov45_0222A330
cmp r0, #1
beq _0225894A
bl ov45_0222D844
cmp r0, #1
bne _02258960
_0225894A:
ldr r0, [r6, #8]
bl ov45_0222A330
cmp r0, #1
bne _0225895A
ldr r0, [r6, #8]
bl ov45_0222A4A8
_0225895A:
mov r0, #3
str r0, [r5]
b _022589EA
_02258960:
mov r0, #0x55
lsl r0, r0, #2
ldr r1, [r4]
ldr r2, [r4, #4]
add r0, r4, r0
bl ov88_02258EFC
cmp r0, #1
bne _0225897E
mov r0, #2
lsl r0, r0, #8
add r0, r4, r0
mov r1, #1
bl ov88_02259818
_0225897E:
mov r0, #0x16
lsl r0, r0, #4
ldr r1, [r4]
add r0, r4, r0
bl ov88_022590D8
cmp r0, #1
bne _0225899A
mov r0, #2
lsl r0, r0, #8
add r0, r4, r0
mov r1, #2
bl ov88_02259818
_0225899A:
mov r0, #0x59
lsl r0, r0, #2
ldr r1, [r4]
ldr r2, [r6, #8]
add r0, r4, r0
mov r3, #0x72
bl ov88_02259404
cmp r0, #1
bne _022589EA
mov r0, #2
lsl r0, r0, #8
add r0, r4, r0
mov r1, #3
bl ov88_02259818
b _022589EA
_022589BC:
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #0x72
str r0, [sp, #8]
mov r0, #0
add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
bl BeginNormalPaletteFade
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _022589EA
_022589DC:
bl IsPaletteFadeFinished
cmp r0, #1
bne _022589EA
add sp, #0xc
mov r0, #1
pop {r3, r4, r5, r6, pc}
_022589EA:
ldr r1, [r6, #8]
add r0, r4, #0
bl ov88_02258A70
mov r0, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
_022589F8: .word gSystem
thumb_func_end ov88_022588C4
thumb_func_start ov88_022589FC
ov88_022589FC: ; 0x022589FC
push {r3, r4, r5, lr}
add r5, r0, #0
bl OverlayManager_GetData
add r4, r0, #0
add r0, r5, #0
bl OverlayManager_GetArgs
mov r0, #2
lsl r0, r0, #8
add r0, r4, r0
bl ov88_022597DC
mov r0, #0x55
lsl r0, r0, #2
add r0, r4, r0
bl ov88_02258EF8
mov r0, #0x16
lsl r0, r0, #4
add r0, r4, r0
bl ov88_022590D4
mov r0, #0x59
lsl r0, r0, #2
add r0, r4, r0
bl ov88_022593D0
mov r0, #0x53
lsl r0, r0, #2
add r0, r4, r0
bl ov88_02258D84
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
bl HBlankInterruptDisable
add r4, #8
add r0, r4, #0
bl ov88_02258AF4
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x72
bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov88_022589FC
thumb_func_start ov88_02258A64
ov88_02258A64: ; 0x02258A64
ldr r3, _02258A6C ; =ov88_02258B20
add r0, #8
bx r3
nop
_02258A6C: .word ov88_02258B20
thumb_func_end ov88_02258A64
thumb_func_start ov88_02258A70
ov88_02258A70: ; 0x02258A70
push {r3, r4, r5, lr}
add r4, r1, #0
mov r1, #0x55
add r5, r0, #0
lsl r1, r1, #2
add r0, r5, r1
sub r1, #8
add r2, r5, #0
add r1, r5, r1
add r2, #8
bl ov88_02258F60
mov r1, #0x16
str r4, [sp]
lsl r1, r1, #4
add r0, r5, r1
sub r1, #0x14
add r2, r5, #0
ldr r3, [r5]
add r1, r5, r1
add r2, #8
bl ov88_02259104
mov r0, #0x59
lsl r0, r0, #2
add r0, r5, r0
bl ov88_022594E0
mov r0, #2
lsl r0, r0, #8
add r0, r5, r0
bl ov88_02259800
add r5, #8
add r0, r5, #0
bl ov88_02258B14
pop {r3, r4, r5, pc}
thumb_func_end ov88_02258A70
thumb_func_start ov88_02258ABC
ov88_02258ABC: ; 0x02258ABC
push {r3, r4, r5, lr}
add r5, r0, #0
mov r0, #0xc6
add r4, r1, #0
bl NARC_New
mov r1, #5
lsl r1, r1, #6
str r0, [r5, r1]
mov r0, #0x30
add r1, r4, #0
bl GF_CreateVramTransferManager
ldr r0, _02258AF0 ; =ov88_02259958
bl GfGfx_SetBanks
add r0, r5, #0
add r1, r4, #0
bl ov88_02258B34
add r0, r5, #0
add r1, r4, #0
bl ov88_02258C98
pop {r3, r4, r5, pc}
nop
_02258AF0: .word ov88_02259958
thumb_func_end ov88_02258ABC
thumb_func_start ov88_02258AF4
ov88_02258AF4: ; 0x02258AF4
push {r4, lr}
add r4, r0, #0
mov r0, #5
lsl r0, r0, #6
ldr r0, [r4, r0]
bl NARC_Delete
bl GF_DestroyVramTransferManager
add r0, r4, #0
bl ov88_02258C60
add r0, r4, #0
bl ov88_02258D38
pop {r4, pc}
thumb_func_end ov88_02258AF4
thumb_func_start ov88_02258B14
ov88_02258B14: ; 0x02258B14
ldr r3, _02258B1C ; =SpriteList_RenderAndAnimateSprites
ldr r0, [r0, #4]
bx r3
nop
_02258B1C: .word SpriteList_RenderAndAnimateSprites
thumb_func_end ov88_02258B14
thumb_func_start ov88_02258B20
ov88_02258B20: ; 0x02258B20
push {r3, lr}
ldr r0, [r0]
bl DoScheduledBgGpuUpdates
bl OamManager_ApplyAndResetBuffers
bl GF_RunVramTransferTasks
pop {r3, pc}
.balign 4, 0
thumb_func_end ov88_02258B20
thumb_func_start ov88_02258B34
ov88_02258B34: ; 0x02258B34
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
ldr r0, _02258C50 ; =ov88_02259934
add r7, r1, #0
bl SetBothScreensModesAndDisable
add r0, r7, #0
bl BgConfig_Alloc
str r0, [r5]
ldr r0, _02258C54 ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
mov r0, #0
ldr r6, _02258C58 ; =ov88_022599C0
ldr r4, _02258C5C ; =ov88_02259944
str r0, [sp, #0x10]
_02258B5C:
ldr r1, [r4]
ldr r0, [r5]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
add r2, r6, #0
mov r3, #0
bl InitBgFromTemplate
ldr r0, [r4]
mov r1, #0x20
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r2, #0
add r3, r7, #0
bl BG_ClearCharDataRange
ldr r1, [r4]
ldr r0, [r5]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl BgClearTilemapBufferAndCommit
ldr r0, [sp, #0x10]
add r6, #0x1c
add r0, r0, #1
add r4, r4, #4
str r0, [sp, #0x10]
cmp r0, #5
blt _02258B5C
mov r1, #0
str r1, [sp]
mov r0, #5
str r7, [sp, #4]
lsl r0, r0, #6
ldr r0, [r5, r0]
add r2, r1, #0
add r3, r1, #0
bl GfGfxLoader_GXLoadPalFromOpenNarc
mov r1, #5
mov r0, #0
lsl r1, r1, #6
add r2, r7, #0
bl LoadFontPal1
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #5
str r7, [sp, #0xc]
lsl r0, r0, #6
mov r1, #1
ldr r0, [r5, r0]
ldr r2, [r5]
add r3, r1, #0
bl GfGfxLoader_LoadCharDataFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #5
str r7, [sp, #0xc]
lsl r0, r0, #6
ldr r0, [r5, r0]
ldr r2, [r5]
mov r1, #3
mov r3, #1
bl GfGfxLoader_LoadScrnDataFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #5
str r7, [sp, #0xc]
lsl r0, r0, #6
ldr r0, [r5, r0]
ldr r2, [r5]
mov r1, #4
mov r3, #2
bl GfGfxLoader_LoadScrnDataFromOpenNarc
mov r1, #0
str r1, [sp]
mov r0, #5
str r7, [sp, #4]
lsl r0, r0, #6
ldr r0, [r5, r0]
mov r2, #4
add r3, r1, #0
bl GfGfxLoader_GXLoadPalFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #5
str r7, [sp, #0xc]
lsl r0, r0, #6
ldr r0, [r5, r0]
ldr r2, [r5]
mov r1, #2
mov r3, #4
bl GfGfxLoader_LoadCharDataFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #5
str r7, [sp, #0xc]
lsl r0, r0, #6
ldr r0, [r5, r0]
ldr r2, [r5]
mov r1, #6
mov r3, #4
bl GfGfxLoader_LoadScrnDataFromOpenNarc
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02258C50: .word ov88_02259934
_02258C54: .word gSystem + 0x60
_02258C58: .word ov88_022599C0
_02258C5C: .word ov88_02259944
thumb_func_end ov88_02258B34
thumb_func_start ov88_02258C60
ov88_02258C60: ; 0x02258C60
push {r4, r5, r6, lr}
ldr r5, _02258C90 ; =ov88_02259944
add r6, r0, #0
mov r4, #0
_02258C68:
ldr r1, [r5]
ldr r0, [r6]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
bl FreeBgTilemapBuffer
add r4, r4, #1
add r5, r5, #4
cmp r4, #5
blt _02258C68
ldr r0, [r6]
bl FreeToHeap
ldr r0, _02258C94 ; =gSystem + 0x60
mov r1, #0
strb r1, [r0, #9]
bl GfGfx_SwapDisplay
pop {r4, r5, r6, pc}
nop
_02258C90: .word ov88_02259944
_02258C94: .word gSystem + 0x60
thumb_func_end ov88_02258C60
thumb_func_start ov88_02258C98
ov88_02258C98: ; 0x02258C98
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
add r6, r1, #0
bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7e
str r1, [sp, #4]
str r0, [sp, #8]
mov r3, #0x1f
str r3, [sp, #0xc]
add r2, r0, #0
str r6, [sp, #0x10]
bl OamManager_Create
ldr r0, _02258D30 ; =ov88_02259914
ldr r1, _02258D34 ; =0x00200010
mov r2, #0x10
bl ObjCharTransfer_InitEx
mov r0, #0x20
add r1, r6, #0
bl ObjPlttTransfer_Init
bl ObjCharTransfer_ClearBuffers
bl ObjPlttTransfer_Reset
ldr r1, _02258D34 ; =0x00200010
mov r0, #1
bl G2dRenderer_SetObjCharTransferReservedRegion
mov r0, #1
bl G2dRenderer_SetPlttTransferReservedRegion
add r1, r5, #0
mov r0, #0x20
add r1, #8
add r2, r6, #0
bl G2dRenderer_Init
str r0, [r5, #4]
add r0, r5, #0
mov r2, #1
add r0, #8
mov r1, #0
lsl r2, r2, #0x14
bl G2dRenderer_SetSubSurfaceCoords
mov r7, #0x13
mov r4, #0
lsl r7, r7, #4
_02258D04:
mov r0, #0x20
add r1, r4, #0
add r2, r6, #0
bl Create2DGfxResObjMan
str r0, [r5, r7]
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
blt _02258D04
bl sub_0203A880
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineATogglePlanes
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineBTogglePlanes
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_02258D30: .word ov88_02259914
_02258D34: .word 0x00200010
thumb_func_end ov88_02258C98
thumb_func_start ov88_02258D38
ov88_02258D38: ; 0x02258D38
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5, #4]
bl SpriteList_Delete
mov r6, #0x13
mov r4, #0
lsl r6, r6, #4
_02258D48:
ldr r0, [r5, r6]
bl Destroy2DGfxResObjMan
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
blt _02258D48
bl ObjCharTransfer_Destroy
bl ObjPlttTransfer_Destroy
bl OamManager_Free
pop {r4, r5, r6, pc}
thumb_func_end ov88_02258D38
thumb_func_start ov88_02258D64
ov88_02258D64: ; 0x02258D64
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
mov r0, #5
str r2, [sp]
lsl r0, r0, #6
ldr r0, [r1, r0]
mov r1, #5
mov r2, #0
add r3, r4, #4
bl GfGfxLoader_GetScrnDataFromOpenNarc
str r0, [r4]
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov88_02258D64
thumb_func_start ov88_02258D84
ov88_02258D84: ; 0x02258D84
ldr r3, _02258D8C ; =FreeToHeap
ldr r0, [r0]
bx r3
nop
_02258D8C: .word FreeToHeap
thumb_func_end ov88_02258D84
thumb_func_start ov88_02258D90
ov88_02258D90: ; 0x02258D90
push {r3, r4, lr}
sub sp, #0x1c
ldr r0, [r0, #4]
add r4, r1, #0
mov r1, #1
str r1, [sp]
mov r1, #2
str r1, [sp, #4]
add r1, r0, #0
add r1, #0xc
str r1, [sp, #8]
add r1, r2, #6
lsl r1, r1, #0x18
lsr r1, r1, #0x18
str r1, [sp, #0xc]
mov r1, #0
str r1, [sp, #0x10]
ldrh r1, [r0]
add r2, r3, #5
lsl r2, r2, #0x18
lsl r1, r1, #0x15
lsr r1, r1, #0x18
str r1, [sp, #0x14]
ldrh r0, [r0, #2]
add r3, sp, #0x18
mov r1, #3
lsl r0, r0, #0x15
lsr r0, r0, #0x18
str r0, [sp, #0x18]
ldrb r3, [r3, #0x10]
ldr r0, [r4]
lsr r2, r2, #0x18
lsl r3, r3, #1
add r3, r3, #4
lsl r3, r3, #0x18
lsr r3, r3, #0x18
bl CopyToBgTilemapRect
ldr r0, [r4]
mov r1, #3
bl ScheduleBgTilemapBufferTransfer
add sp, #0x1c
pop {r3, r4, pc}
thumb_func_end ov88_02258D90
thumb_func_start ov88_02258DE8
ov88_02258DE8: ; 0x02258DE8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
add r4, r0, #0
add r5, r1, #0
ldr r0, [sp, #0x38]
mov r1, #3
add r7, r2, #0
add r6, r3, #0
bl _u32_div_f
str r1, [sp, #0x1c]
ldr r0, [sp, #0x38]
mov r1, #3
bl _u32_div_f
ldr r1, [sp, #0x44]
cmp r1, #0
beq _02258E0E
add r0, r0, #2
_02258E0E:
ldr r1, [sp, #0x3c]
cmp r1, #1
bne _02258E16
add r0, r0, #1
_02258E16:
ldr r1, [r4, #4]
lsl r2, r6, #1
add r6, r2, #4
mov r2, #2
str r2, [sp]
str r2, [sp, #4]
add r2, r1, #0
add r2, #0xc
str r2, [sp, #8]
ldr r2, [sp, #0x1c]
lsl r0, r0, #0x19
lsl r2, r2, #0x19
lsr r2, r2, #0x18
str r2, [sp, #0xc]
lsr r0, r0, #0x18
str r0, [sp, #0x10]
ldrh r0, [r1]
lsl r4, r7, #1
add r4, #0x15
lsl r0, r0, #0x15
lsr r0, r0, #0x18
str r0, [sp, #0x14]
ldrh r0, [r1, #2]
lsl r2, r4, #0x18
lsl r3, r6, #0x18
lsl r0, r0, #0x15
lsr r0, r0, #0x18
str r0, [sp, #0x18]
ldr r0, [r5]
mov r1, #3
lsr r2, r2, #0x18
lsr r3, r3, #0x18
bl CopyToBgTilemapRect
ldr r0, [sp, #0x48]
cmp r0, #0
beq _02258E7C
mov r0, #2
str r0, [sp]
str r0, [sp, #4]
mov r0, #4
str r0, [sp, #8]
lsl r2, r4, #0x18
lsl r3, r6, #0x18
ldr r0, [r5]
mov r1, #3
lsr r2, r2, #0x18
lsr r3, r3, #0x18
bl BgTilemapRectChangePalette
b _02258E9A
_02258E7C:
ldr r0, [sp, #0x40]
cmp r0, #0
beq _02258E9A
mov r0, #2
str r0, [sp]
str r0, [sp, #4]
mov r1, #3
str r1, [sp, #8]
lsl r2, r4, #0x18
lsl r3, r6, #0x18
ldr r0, [r5]
lsr r2, r2, #0x18
lsr r3, r3, #0x18
bl BgTilemapRectChangePalette
_02258E9A:
ldr r0, [r5]
mov r1, #3
bl ScheduleBgTilemapBufferTransfer
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov88_02258DE8
thumb_func_start ov88_02258EA8
ov88_02258EA8: ; 0x02258EA8
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, [sp, #0x1c]
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
bl ov45_0222AD4C
mov r1, #0
strb r1, [r5]
mov r1, #0x3c
str r0, [sp]
bl _u32_div_f
add r0, r0, #1
strb r0, [r5, #1]
mov r0, #0
strb r0, [r5, #2]
ldr r0, [sp]
mov r1, #0x28
bl _u32_div_f
str r0, [r5, #8]
mov r0, #1
strb r0, [r5, #4]
mov r0, #0
strh r0, [r5, #6]
strb r0, [r5, #5]
ldr r2, [sp, #0x18]
add r0, r5, #0
add r1, r7, #0
bl ov88_02258EFC
add r0, r5, #0
add r1, r6, #0
add r2, r4, #0
bl ov88_02258F60
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov88_02258EA8
thumb_func_start ov88_02258EF8
ov88_02258EF8: ; 0x02258EF8
bx lr
.balign 4, 0
thumb_func_end ov88_02258EF8
thumb_func_start ov88_02258EFC
ov88_02258EFC: ; 0x02258EFC
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r5, r0, #0
add r0, r1, #0
add r1, sp, #8
add r6, r2, #0
mov r4, #0
bl ov45_0222DCF4
cmp r0, #0
bne _02258F18
add sp, #0xc
add r0, r4, #0
pop {r3, r4, r5, r6, pc}
_02258F18:
ldrb r0, [r5, #4]
cmp r0, #1
bne _02258F26
add r0, r4, #0
strb r0, [r5, #4]
mov r4, #1
strb r4, [r5, #5]
_02258F26:
add r0, r6, #0
add r1, sp, #8
add r2, sp, #4
bl ov45_0222D594
add r0, sp, #4
add r1, r5, #0
add r2, sp, #0
bl ov45_0222D594
add r0, sp, #0
ldrb r2, [r0, #2]
ldr r1, [r5, #8]
cmp r2, r1
bhs _02258F50
ldrb r1, [r0, #1]
cmp r1, #0
bne _02258F50
ldrb r0, [r0]
cmp r0, #0
beq _02258F58
_02258F50:
mov r4, #1
strb r4, [r5, #5]
ldr r0, [sp, #4]
str r0, [r5]
_02258F58:
add r0, r4, #0
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov88_02258EFC
thumb_func_start ov88_02258F60
ov88_02258F60: ; 0x02258F60
push {r3, lr}
ldrb r3, [r0, #4]
cmp r3, #1
bne _02258F6E
bl ov88_02258F74
pop {r3, pc}
_02258F6E:
bl ov88_02258F88
pop {r3, pc}
thumb_func_end ov88_02258F60
thumb_func_start ov88_02258F74
ov88_02258F74: ; 0x02258F74
ldrh r1, [r0, #6]
add r1, r1, #1
strh r1, [r0, #6]
ldrh r1, [r0, #6]
cmp r1, #0x10
bls _02258F84
mov r1, #0
strh r1, [r0, #6]
_02258F84:
bx lr
.balign 4, 0
thumb_func_end ov88_02258F74
thumb_func_start ov88_02258F88
ov88_02258F88: ; 0x02258F88
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r4, r0, #0
str r1, [sp, #0x10]
str r2, [sp, #0x14]
ldrb r1, [r4, #1]
mov r0, #0x3c
ldrb r2, [r4, #2]
mul r0, r1
ldrb r1, [r4]
add r2, r2, r0
mov r0, #0xe1
lsl r0, r0, #4
mul r0, r1
ldr r1, [r4, #8]
add r0, r2, r0
bl _u32_div_f
ldrb r1, [r4, #5]
add r5, r0, #0
cmp r1, #0
beq _02259036
mov r2, #0
strh r2, [r4, #6]
strb r2, [r4, #5]
mov r0, #4
str r0, [sp]
mov r0, #0xa
str r0, [sp, #4]
mov r0, #8
str r0, [sp, #8]
ldr r0, [sp, #0x14]
str r2, [sp, #0xc]
ldr r0, [r0]
mov r1, #3
mov r3, #5
bl FillBgTilemapRect
ldr r0, [sp, #0x14]
mov r1, #3
ldr r0, [r0]
bl ScheduleBgTilemapBufferTransfer
mov r0, #0
str r0, [sp, #0x1c]
_02258FE2:
ldr r0, [sp, #0x1c]
mov r1, #3
sub r6, r1, r0
mov r0, #0xa
add r7, r6, #0
mul r7, r0
lsl r0, r6, #0x18
lsr r0, r0, #0x18
mov r4, #0
str r0, [sp, #0x20]
_02258FF6:
mov r0, #9
sub r3, r0, r4
add r0, r3, r7
cmp r0, r5
blo _02259022
cmp r0, r5
bne _02259008
mov r2, #1
b _02259012
_02259008:
cmp r6, #3
bne _02259010
mov r2, #2
b _02259012
_02259010:
mov r2, #0
_02259012:
ldr r0, [sp, #0x20]
lsl r3, r3, #0x18
str r0, [sp]
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x14]
lsr r3, r3, #0x18
bl ov88_02258D90
_02259022:
add r4, r4, #1
cmp r4, #0xa
blt _02258FF6
ldr r0, [sp, #0x1c]
add r0, r0, #1
str r0, [sp, #0x1c]
cmp r0, #4
blt _02258FE2
add sp, #0x24
pop {r4, r5, r6, r7, pc}
_02259036:
cmp r5, #0x28
bhs _022590B8
ldrh r1, [r4, #6]
add r1, r1, #1
strh r1, [r4, #6]
ldrh r6, [r4, #6]
mov r1, #0x1b
lsr r3, r6, #0x1f
lsl r2, r6, #0x1b
sub r2, r2, r3
ror r2, r1
mov r1, #0xa
add r7, r3, r2
bl _u32_div_f
str r1, [sp, #0x18]
add r0, r5, #0
mov r1, #0xa
bl _u32_div_f
cmp r7, #0
bne _0225909E
ldr r2, [r4, #8]
mov r1, #0x1e
mul r1, r2
lsr r4, r1, #2
mov r2, #6
mov r5, #0
_0225906E:
add r1, r5, #1
add r3, r4, #0
mul r3, r1
cmp r3, r6
bls _02259080
ldr r1, _022590BC ; =ov88_02259924
lsl r2, r5, #2
ldr r2, [r1, r2]
b _02259086
_02259080:
add r5, r1, #0
cmp r1, #4
blt _0225906E
_02259086:
lsl r0, r0, #0x18
ldr r3, [sp, #0x18]
lsr r0, r0, #0x18
str r0, [sp]
lsl r3, r3, #0x18
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x14]
lsr r3, r3, #0x18
bl ov88_02258D90
add sp, #0x24
pop {r4, r5, r6, r7, pc}
_0225909E:
cmp r7, #0x10
bne _022590B8
lsl r0, r0, #0x18
ldr r3, [sp, #0x18]
lsr r0, r0, #0x18
str r0, [sp]
lsl r3, r3, #0x18
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x14]
mov r2, #3
lsr r3, r3, #0x18
bl ov88_02258D90
_022590B8:
add sp, #0x24
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_022590BC: .word ov88_02259924
thumb_func_end ov88_02258F88
thumb_func_start ov88_022590C0
ov88_022590C0: ; 0x022590C0
push {r3, lr}
mov r0, #0
str r0, [sp]
add r0, r2, #0
add r2, r3, #0
ldr r3, [sp, #8]
bl ov88_0225918C
pop {r3, pc}
.balign 4, 0
thumb_func_end ov88_022590C0
thumb_func_start ov88_022590D4
ov88_022590D4: ; 0x022590D4
bx lr
.balign 4, 0
thumb_func_end ov88_022590D4
thumb_func_start ov88_022590D8
ov88_022590D8: ; 0x022590D8
push {r3, r4, r5, lr}
add r4, r0, #0
add r0, r1, #0
mov r5, #0
bl ov45_0222DD38
cmp r0, #0
beq _022590FE
cmp r0, #1
beq _022590F2
cmp r0, #2
beq _022590F8
b _022590FE
_022590F2:
mov r5, #1
strh r5, [r4, #2]
b _022590FE
_022590F8:
mov r0, #3
strh r0, [r4, #2]
mov r5, #1
_022590FE:
add r0, r5, #0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov88_022590D8
thumb_func_start ov88_02259104
ov88_02259104: ; 0x02259104
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
ldrh r0, [r4, #2]
cmp r0, #4
bhi _02259186
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0225911C: ; jump table
.short _02259186 - _0225911C - 2 ; case 0
.short _02259126 - _0225911C - 2 ; case 1
.short _02259132 - _0225911C - 2 ; case 2
.short _02259158 - _0225911C - 2 ; case 3
.short _02259164 - _0225911C - 2 ; case 4
_02259126:
mov r0, #2
strh r0, [r4, #2]
mov r0, #0
add sp, #4
strh r0, [r4]
pop {r3, r4, pc}
_02259132:
mov r0, #0
ldrsh r0, [r4, r0]
str r0, [sp]
add r0, r1, #0
add r1, r2, #0
add r2, r3, #0
ldr r3, [sp, #0x10]
bl ov88_02259244
mov r0, #0
ldrsh r1, [r4, r0]
add r1, r1, #1
strh r1, [r4]
ldrsh r1, [r4, r0]
cmp r1, #0x20
blt _02259186
add sp, #4
strh r0, [r4, #2]
pop {r3, r4, pc}
_02259158:
mov r0, #4
strh r0, [r4, #2]
mov r0, #0
add sp, #4
strh r0, [r4]
pop {r3, r4, pc}
_02259164:
mov r0, #0
ldrsh r0, [r4, r0]
str r0, [sp]
add r0, r1, #0
add r1, r2, #0
add r2, r3, #0
ldr r3, [sp, #0x10]
bl ov88_02259264
mov r0, #0
ldrsh r1, [r4, r0]
add r1, r1, #1
strh r1, [r4]
ldrsh r1, [r4, r0]
cmp r1, #0x20
blt _02259186
strh r0, [r4, #2]
_02259186:
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
thumb_func_end ov88_02259104
thumb_func_start ov88_0225918C
ov88_0225918C: ; 0x0225918C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
str r0, [sp, #0x14]
mov r0, #4
str r0, [sp]
mov r0, #0xa
str r0, [sp, #4]
mov r0, #8
add r6, r2, #0
str r0, [sp, #8]
mov r2, #0
str r3, [sp, #0x1c]
str r2, [sp, #0xc]
add r0, r1, #0
str r1, [sp, #0x18]
ldr r0, [r0]
mov r1, #3
mov r3, #0x15
ldr r7, [sp, #0x50]
bl FillBgTilemapRect
mov r5, #0
str r5, [sp, #0x2c]
_022591BA:
ldr r0, [sp, #0x2c]
mov r4, #0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x34]
_022591C4:
add r0, r6, #0
add r1, r4, r5
bl ov45_0222DCFC
cmp r0, #0
beq _0225922E
add r0, r6, #0
add r1, r4, r5
bl ov45_0222DD08
str r0, [sp, #0x28]
add r0, r6, #0
add r1, r4, r5
bl ov45_0222DD14
str r0, [sp, #0x24]
add r0, r6, #0
add r1, r4, r5
bl ov45_0222DD20
str r0, [sp, #0x20]
add r0, r6, #0
add r1, r4, r5
bl ov45_0222DD2C
str r0, [sp, #0x30]
ldr r0, [sp, #0x1c]
add r1, r4, r5
bl ov45_0222AB28
cmp r7, #2
bne _0225920E
ldr r1, [sp, #0x30]
cmp r1, #1
bne _0225920E
mov r1, #0
b _02259210
_0225920E:
add r1, r7, #0
_02259210:
str r1, [sp]
ldr r1, [sp, #0x28]
lsl r2, r4, #0x18
str r1, [sp, #4]
ldr r1, [sp, #0x24]
ldr r3, [sp, #0x34]
str r1, [sp, #8]
ldr r1, [sp, #0x20]
lsr r2, r2, #0x18
str r1, [sp, #0xc]
str r0, [sp, #0x10]
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x18]
bl ov88_02258DE8
_0225922E:
add r4, r4, #1
cmp r4, #5
blt _022591C4
ldr r0, [sp, #0x2c]
add r5, r5, #5
add r0, r0, #1
str r0, [sp, #0x2c]
cmp r0, #4
blt _022591BA
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov88_0225918C
thumb_func_start ov88_02259244
ov88_02259244: ; 0x02259244
push {r3, r4, r5, lr}
ldr r5, [sp, #0x10]
mov r4, #7
tst r4, r5
bne _02259262
lsr r5, r5, #3
mov r4, #1
tst r4, r5
bne _0225925A
mov r4, #2
b _0225925C
_0225925A:
mov r4, #0
_0225925C:
str r4, [sp]
bl ov88_0225918C
_02259262:
pop {r3, r4, r5, pc}
thumb_func_end ov88_02259244
thumb_func_start ov88_02259264
ov88_02259264: ; 0x02259264
push {r3, r4, r5, lr}
ldr r5, [sp, #0x10]
mov r4, #7
tst r4, r5
bne _0225927E
lsr r4, r5, #3
mov r5, #1
tst r4, r5
beq _02259278
mov r5, #0
_02259278:
str r5, [sp]
bl ov88_0225918C
_0225927E:
pop {r3, r4, r5, pc}
thumb_func_end ov88_02259264
thumb_func_start ov88_02259280
ov88_02259280: ; 0x02259280
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
add r7, r2, #0
str r3, [sp]
mov r4, #0
_0225928C:
add r0, r6, #0
add r1, r7, #0
add r2, r4, #0
bl ov45_0222DDE4
add r1, r0, #0
cmp r1, #0x14
beq _022592B0
ldr r0, [sp]
bl ov45_0222AB28
cmp r0, #1
bne _022592AC
mov r0, #9
strb r0, [r5, r4]
b _022592B0
_022592AC:
mov r0, #5
strb r0, [r5, r4]
_022592B0:
add r4, r4, #1
cmp r4, #4
blt _0225928C
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov88_02259280
thumb_func_start ov88_022592B8
ov88_022592B8: ; 0x022592B8
push {r3, r4, r5, r6, r7, lr}
mov r4, #0
lsl r6, r2, #5
ldr r7, [r1, #0xc]
str r0, [sp]
add r5, r4, #0
add r6, #0xa
_022592C6:
ldr r2, [sp]
mov r0, #0xf
ldrb r2, [r2, r4]
add r1, r6, r5
mov r3, #4
lsl r2, r2, #1
add r2, #0xe0
add r2, r7, r2
bl GF_CreateNewVramTransferTask
cmp r0, #0
bne _022592E2
bl GF_AssertFail
_022592E2:
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
blt _022592C6
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov88_022592B8
thumb_func_start ov88_022592EC
ov88_022592EC: ; 0x022592EC
push {r4, r5, r6, r7, lr}
sub sp, #0x24
mov r7, #3
add r5, r0, #0
ldr r6, _022593C4 ; =_02259904
str r0, [sp, #0x14]
str r1, [sp, #0x18]
str r2, [sp, #0x1c]
mov r4, #0
str r0, [sp, #0x20]
lsl r7, r7, #8
add r5, #0x60
_02259304:
ldr r0, [sp, #0x20]
ldr r1, [sp, #0x18]
ldr r3, [sp, #0x1c]
add r2, r4, #0
bl ov88_02259508
ldrb r0, [r6]
add r1, r5, #0
mov r2, #3
str r0, [sp]
mov r0, #0x1e
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
add r0, r4, #7
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xc]
lsl r0, r7, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
ldr r0, [sp, #0x18]
mov r3, #1
ldr r0, [r0]
bl AddWindowParameterized
add r0, r5, #0
mov r1, #0
bl FillWindowPixelBuffer
add r0, r5, #0
bl ScheduleWindowCopyToVram
ldr r0, [sp, #0x20]
add r4, r4, #1
add r0, #0x20
str r0, [sp, #0x20]
add r7, #0x3c
add r6, r6, #1
add r5, #0x10
cmp r4, #3
blt _02259304
mov r0, #1
ldr r1, [sp, #0x1c]
lsl r0, r0, #8
bl String_New
ldr r1, [sp, #0x14]
ldr r2, [sp, #0x14]
add r1, #0x90
str r0, [r1]
mov r1, #5
ldr r0, [sp, #0x18]
lsl r1, r1, #6
ldr r0, [r0, r1]
ldr r3, [sp, #0x1c]
mov r1, #0
add r2, #0x98
bl GfGfxLoader_GetPlttDataFromOpenNarc
ldr r1, [sp, #0x14]
mov r2, #4
add r1, #0x94
str r0, [r1]
ldr r1, [sp, #0x14]
mov r0, #0
add r1, #0x98
ldr r1, [r1]
mov r3, #0xfa
ldr r1, [r1, #0xc]
add r1, #0xee
bl BG_LoadPlttData
ldr r1, [sp, #0x14]
ldr r3, _022593C8 ; =0x0000011A
add r1, #0x98
ldr r1, [r1]
mov r0, #0
ldr r1, [r1, #0xc]
mov r2, #4
add r1, #0xee
bl BG_LoadPlttData
ldr r1, [sp, #0x14]
ldr r3, _022593CC ; =0x0000013A
add r1, #0x98
str r1, [sp, #0x14]
ldr r1, [r1]
mov r0, #0
ldr r1, [r1, #0xc]
mov r2, #4
add r1, #0xee
bl BG_LoadPlttData
add sp, #0x24
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_022593C4: .word _02259904
_022593C8: .word 0x0000011A
_022593CC: .word 0x0000013A
thumb_func_end ov88_022592EC
thumb_func_start ov88_022593D0
ov88_022593D0: ; 0x022593D0
push {r4, r5, r6, lr}
add r5, r0, #0
add r0, #0x94
ldr r0, [r0]
bl FreeToHeap
add r0, r5, #0
add r0, #0x90
ldr r0, [r0]
bl String_Delete
add r4, r5, #0
mov r6, #0
add r4, #0x60
_022593EC:
add r0, r4, #0
bl RemoveWindow
add r0, r5, #0
bl ov88_0225954C
add r6, r6, #1
add r4, #0x10
add r5, #0x20
cmp r6, #3
blt _022593EC
pop {r4, r5, r6, pc}
thumb_func_end ov88_022593D0
thumb_func_start ov88_02259404
ov88_02259404: ; 0x02259404
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
add r6, r0, #0
add r5, r1, #0
add r0, r2, #0
add r1, sp, #0x14
str r2, [sp, #4]
str r3, [sp, #8]
bl ov45_0222AB38
mov r0, #2
add r4, r6, #0
ldr r7, _022594DC ; =ov88_02259910
str r0, [sp, #0xc]
add r4, #0x40
_02259422:
ldrb r0, [r4]
cmp r0, #0
beq _02259458
add r0, r4, #0
bl ov88_022595E4
cmp r0, #1
bne _02259458
ldr r0, [sp, #0xc]
add r1, r0, #1
cmp r1, #3
bge _02259452
add r0, r6, #0
add r0, #0x98
ldr r0, [r0]
add r3, r4, #0
str r0, [sp]
lsl r0, r1, #5
ldr r1, [r4, #8]
ldr r2, [r7, #4]
add r0, r6, r0
add r3, #0x1c
bl ov88_02259560
_02259452:
add r0, r4, #0
bl ov88_022595DC
_02259458:
ldr r0, [sp, #0xc]
sub r4, #0x20
sub r7, r7, #4
sub r0, r0, #1
str r0, [sp, #0xc]
bpl _02259422
ldrb r0, [r6]
cmp r0, #0
bne _022594D6
add r0, r5, #0
bl ov45_0222DD44
cmp r0, #1
bne _022594D6
add r7, sp, #0x14
_02259476:
add r0, r5, #0
bl ov45_0222DD5C
add r4, r0, #0
ldr r0, [sp, #8]
add r3, r6, #0
str r0, [sp]
add r3, #0x90
ldr r3, [r3]
add r0, r5, #0
add r1, r7, #0
add r2, r4, #0
bl ov45_0222DD78
cmp r0, #1
bne _022594C6
ldr r3, [sp, #4]
add r0, sp, #0x10
add r1, r5, #0
add r2, r4, #0
bl ov88_02259280
add r0, r6, #0
add r0, #0x98
ldr r0, [r0]
mov r2, #0x15
str r0, [sp]
add r0, r6, #0
add r6, #0x90
ldr r1, [r6]
lsl r2, r2, #4
add r3, sp, #0x10
bl ov88_02259560
add r0, r5, #0
bl ov45_0222DCE8
add sp, #0x28
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_022594C6:
add r0, r5, #0
bl ov45_0222DCE8
add r0, r5, #0
bl ov45_0222DD44
cmp r0, #1
beq _02259476
_022594D6:
mov r0, #0
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_022594DC: .word ov88_02259910
thumb_func_end ov88_02259404
thumb_func_start ov88_022594E0
ov88_022594E0: ; 0x022594E0
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
add r4, r6, #0
mov r7, #0
add r4, #0x60
add r5, r6, #0
_022594EC:
ldrb r0, [r6]
cmp r0, #1
bne _022594FA
add r0, r5, #0
add r1, r4, #0
bl ov88_022595F8
_022594FA:
add r7, r7, #1
add r6, #0x20
add r4, #0x10
add r5, #0x20
cmp r7, #3
blt _022594EC
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov88_022594E0
thumb_func_start ov88_02259508
ov88_02259508: ; 0x02259508
push {r3, r4, r5, r6, lr}
sub sp, #0x14
add r5, r0, #0
mov r0, #0
strb r0, [r5]
strh r0, [r5, #2]
mov r0, #1
add r4, r1, #0
add r6, r2, #0
lsl r0, r0, #8
add r1, r3, #0
bl String_New
str r0, [r5, #8]
add r0, r6, #7
strb r0, [r5, #1]
mov r3, #0
add r5, #0xc
str r3, [sp]
mov r0, #0xb4
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
mov r0, #7
str r0, [sp, #0xc]
str r3, [sp, #0x10]
ldr r0, [r4]
add r1, r5, #0
mov r2, #3
bl AddWindowParameterized
add sp, #0x14
pop {r3, r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov88_02259508
thumb_func_start ov88_0225954C
ov88_0225954C: ; 0x0225954C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #8]
bl String_Delete
add r4, #0xc
add r0, r4, #0
bl RemoveWindow
pop {r4, pc}
thumb_func_end ov88_0225954C
thumb_func_start ov88_02259560
ov88_02259560: ; 0x02259560
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
ldr r0, [r5, #8]
add r7, r1, #0
add r6, r2, #0
add r4, r3, #0
bl String_Copy
mov r0, #1
strb r0, [r5]
mov r2, #0
strh r2, [r5, #2]
strh r6, [r5, #4]
add r1, r7, #0
bl FontID_String_GetWidth
strh r0, [r5, #6]
mov r0, #1
ldrh r1, [r5, #6]
lsl r0, r0, #8
add r0, r1, r0
strh r0, [r5, #6]
mov r0, #0x5a
ldrh r1, [r5, #6]
lsl r0, r0, #4
cmp r1, r0
bls _0225959C
bl GF_AssertFail
_0225959C:
add r0, r5, #0
add r0, #0xc
mov r1, #0
bl FillWindowPixelBuffer
mov r3, #0
str r3, [sp]
mov r0, #0xff
str r0, [sp, #4]
str r3, [sp, #8]
add r0, r5, #0
ldr r2, [r5, #8]
add r0, #0xc
mov r1, #1
bl AddTextPrinterParameterized
ldrb r0, [r4]
ldr r1, [sp, #0x20]
strb r0, [r5, #0x1c]
ldrb r0, [r4, #1]
strb r0, [r5, #0x1d]
ldrb r0, [r4, #2]
strb r0, [r5, #0x1e]
ldrb r0, [r4, #3]
strb r0, [r5, #0x1f]
add r0, r5, #0
ldrb r2, [r5, #1]
add r0, #0x1c
bl ov88_022592B8
add sp, #0xc
pop {r4, r5, r6, r7, pc}
thumb_func_end ov88_02259560
thumb_func_start ov88_022595DC
ov88_022595DC: ; 0x022595DC
mov r1, #0
strb r1, [r0]
bx lr
.balign 4, 0
thumb_func_end ov88_022595DC
thumb_func_start ov88_022595E4
ov88_022595E4: ; 0x022595E4
ldrh r1, [r0, #2]
mov r3, #1
add r2, r1, #1
ldrh r1, [r0, #4]
cmp r2, r1
bgt _022595F4
strh r2, [r0, #2]
mov r3, #0
_022595F4:
add r0, r3, #0
bx lr
thumb_func_end ov88_022595E4
thumb_func_start ov88_022595F8
ov88_022595F8: ; 0x022595F8
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r5, r0, #0
ldrh r0, [r5, #6]
str r1, [sp, #0x1c]
str r0, [sp, #0x20]
ldrh r1, [r5, #2]
ldr r0, [sp, #0x20]
mul r0, r1
ldrh r1, [r5, #4]
bl _s32_div_f
add r4, r0, #0
mov r0, #1
lsl r0, r0, #8
cmp r4, r0
bge _02259622
mov r0, #0xff
sub r7, r0, r4
mov r6, #0
b _02259630
_02259622:
sub r6, r4, r0
ldr r0, [sp, #0x20]
mov r7, #0
sub r4, r0, r4
cmp r4, #0xff
ble _02259630
mov r4, #0xff
_02259630:
mov r0, #0xff
str r0, [sp]
mov r1, #0
mov r0, #0x10
str r0, [sp, #4]
ldr r0, [sp, #0x1c]
add r2, r1, #0
add r3, r1, #0
bl FillWindowPixelRect
mov r0, #0x5a
lsl r0, r0, #4
str r0, [sp]
mov r0, #0x10
lsl r1, r7, #0x10
lsl r2, r6, #0x10
str r0, [sp, #4]
lsr r1, r1, #0x10
str r1, [sp, #8]
mov r3, #0
lsl r1, r4, #0x10
str r3, [sp, #0xc]
lsr r1, r1, #0x10
str r1, [sp, #0x10]
str r0, [sp, #0x14]
mov r0, #0xf
str r0, [sp, #0x18]
ldr r0, [sp, #0x1c]
ldr r1, [r5, #0x18]
lsr r2, r2, #0x10
bl BlitBitmapRect
ldr r0, [sp, #0x1c]
bl ScheduleWindowCopyToVram
add sp, #0x24
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov88_022595F8
thumb_func_start ov88_0225967C
ov88_0225967C: ; 0x0225967C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x40
str r1, [sp, #0x18]
str r2, [sp, #0x1c]
mov r1, #0
mov r2, #0x70
str r0, [sp, #0x14]
bl memset
ldr r2, _022597CC ; =0x000002F5
ldr r3, [sp, #0x1c]
mov r0, #0
mov r1, #0x1b
bl NewMsgDataFromNarc
str r0, [sp, #0x38]
ldr r1, [sp, #0x1c]
mov r0, #0x80
bl String_New
str r0, [sp, #0x34]
mov r0, #0
str r0, [sp, #0x3c]
ldr r0, _022597D0 ; =ov88_02259A68
ldr r5, _022597D4 ; =ov88_02259980
str r0, [sp, #0x28]
ldr r0, _022597D8 ; =_02259A60
str r0, [sp, #0x24]
ldr r0, [sp, #0x14]
str r0, [sp, #0x20]
add r0, #0x40
str r0, [sp, #0x20]
_022596BC:
ldr r1, [sp, #0x24]
ldr r2, [sp, #0x28]
ldrh r1, [r1]
ldr r0, [sp, #0x20]
ldr r2, [r2]
bl ov88_0225983C
ldrb r0, [r5, #1]
ldr r1, [sp, #0x14]
mov r2, #0
str r0, [sp]
ldrb r0, [r5, #2]
str r0, [sp, #4]
ldrb r0, [r5, #3]
str r0, [sp, #8]
ldrb r0, [r5, #6]
str r0, [sp, #0xc]
ldrh r0, [r5, #4]
str r0, [sp, #0x10]
ldr r0, [sp, #0x18]
ldrb r3, [r5]
ldr r0, [r0]
bl AddWindowParameterized
ldr r0, [sp, #0x14]
mov r1, #0
bl FillWindowPixelBuffer
ldr r0, [sp, #0x38]
ldr r1, [sp, #0x3c]
ldr r2, [sp, #0x34]
bl ReadMsgDataIntoString
ldr r0, [sp, #0x34]
bl String_CountLines
str r0, [sp, #0x30]
ldr r0, [sp, #0x34]
ldrb r6, [r5, #8]
bl String_GetLength
ldr r1, [sp, #0x1c]
add r0, r0, #1
bl String_New
add r4, r0, #0
ldr r0, [sp, #0x30]
mov r7, #0
cmp r0, #0
bls _0225978A
_02259720:
ldr r1, [sp, #0x34]
add r0, r4, #0
add r2, r7, #0
bl String_GetLineN
ldrb r0, [r5, #9]
cmp r0, #0
beq _0225973A
cmp r0, #1
beq _02259740
cmp r0, #2
beq _02259756
b _02259766
_0225973A:
ldrb r0, [r5, #7]
str r0, [sp, #0x2c]
b _02259766
_02259740:
mov r0, #0
add r1, r4, #0
add r2, r0, #0
bl FontID_String_GetWidthMultiline
add r0, r0, #1
ldrb r1, [r5, #7]
lsr r0, r0, #1
sub r0, r1, r0
str r0, [sp, #0x2c]
b _02259766
_02259756:
mov r0, #0
add r1, r4, #0
add r2, r0, #0
bl FontID_String_GetWidthMultiline
ldrb r1, [r5, #7]
sub r0, r1, r0
str r0, [sp, #0x2c]
_02259766:
str r6, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, [r5, #0xc]
ldr r3, [sp, #0x2c]
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
ldr r0, [sp, #0x14]
mov r1, #0
add r2, r4, #0
bl AddTextPrinterParameterizedWithColor
ldr r0, [sp, #0x30]
add r7, r7, #1
add r6, #0x10
cmp r7, r0
blo _02259720
_0225978A:
add r0, r4, #0
bl String_Delete
ldr r0, [sp, #0x14]
bl ScheduleWindowCopyToVram
ldr r0, [sp, #0x28]
add r5, #0x10
add r0, r0, #4
str r0, [sp, #0x28]
ldr r0, [sp, #0x24]
add r0, r0, #2
str r0, [sp, #0x24]
ldr r0, [sp, #0x20]
add r0, #0xc
str r0, [sp, #0x20]
ldr r0, [sp, #0x14]
add r0, #0x10
str r0, [sp, #0x14]
ldr r0, [sp, #0x3c]
add r0, r0, #1
str r0, [sp, #0x3c]
cmp r0, #4
blt _022596BC
ldr r0, [sp, #0x34]
bl String_Delete
ldr r0, [sp, #0x38]
bl DestroyMsgData
add sp, #0x40
pop {r3, r4, r5, r6, r7, pc}
nop
_022597CC: .word 0x000002F5
_022597D0: .word ov88_02259A68
_022597D4: .word ov88_02259980
_022597D8: .word _02259A60
thumb_func_end ov88_0225967C
thumb_func_start ov88_022597DC
ov88_022597DC: ; 0x022597DC
push {r4, r5, r6, lr}
add r5, r0, #0
add r4, r5, #0
mov r6, #0
add r4, #0x40
_022597E6:
add r0, r5, #0
bl RemoveWindow
add r0, r4, #0
bl ov88_0225985C
add r6, r6, #1
add r5, #0x10
add r4, #0xc
cmp r6, #4
blt _022597E6
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov88_022597DC
thumb_func_start ov88_02259800
ov88_02259800: ; 0x02259800
push {r3, r4, r5, lr}
add r5, r0, #0
mov r4, #0
add r5, #0x40
_02259808:
add r0, r5, #0
bl ov88_02259884
add r4, r4, #1
add r5, #0xc
cmp r4, #4
blt _02259808
pop {r3, r4, r5, pc}
thumb_func_end ov88_02259800
thumb_func_start ov88_02259818
ov88_02259818: ; 0x02259818
push {r3, r4, r5, lr}
add r4, r1, #0
add r5, r0, #0
cmp r4, #4
blo _02259826
bl GF_AssertFail
_02259826:
cmp r4, #0
bne _0225982E
bl GF_AssertFail
_0225982E:
mov r0, #0xc
add r5, #0x40
mul r0, r4
add r0, r5, r0
bl ov88_02259878
pop {r3, r4, r5, pc}
thumb_func_end ov88_02259818
thumb_func_start ov88_0225983C
ov88_0225983C: ; 0x0225983C
mov r3, #0
strb r3, [r0]
strb r3, [r0, #1]
strb r3, [r0, #2]
strb r3, [r0, #3]
strb r3, [r0, #4]
strb r3, [r0, #5]
strb r3, [r0, #6]
strb r3, [r0, #7]
strb r3, [r0, #8]
strb r3, [r0, #9]
strb r3, [r0, #0xa]
strb r3, [r0, #0xb]
strh r1, [r0, #6]
str r2, [r0, #8]
bx lr
thumb_func_end ov88_0225983C
thumb_func_start ov88_0225985C
ov88_0225985C: ; 0x0225985C
mov r1, #0
strb r1, [r0]
strb r1, [r0, #1]
strb r1, [r0, #2]
strb r1, [r0, #3]
strb r1, [r0, #4]
strb r1, [r0, #5]
strb r1, [r0, #6]
strb r1, [r0, #7]
strb r1, [r0, #8]
strb r1, [r0, #9]
strb r1, [r0, #0xa]
strb r1, [r0, #0xb]
bx lr
thumb_func_end ov88_0225985C
thumb_func_start ov88_02259878
ov88_02259878: ; 0x02259878
mov r1, #1
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bx lr
.balign 4, 0
thumb_func_end ov88_02259878
thumb_func_start ov88_02259884
ov88_02259884: ; 0x02259884
push {r4, lr}
sub sp, #8
add r4, r0, #0
ldrh r0, [r4, #2]
cmp r0, #0x1c
bls _02259894
mov r0, #0
strh r0, [r4]
_02259894:
ldrh r0, [r4]
cmp r0, #0
beq _02259900
ldrh r0, [r4, #2]
cmp r0, #0
bne _022598AA
ldr r0, [r4, #8]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl PlaySE
_022598AA:
ldrh r0, [r4, #2]
cmp r0, #2
bhs _022598BA
lsl r1, r0, #4
lsr r0, r1, #0x1f
add r0, r1, r0
asr r3, r0, #1
b _022598D0
_022598BA:
cmp r0, #0xe
bhs _022598C2
mov r3, #0x10
b _022598D0
_022598C2:
sub r0, #0xe
lsl r0, r0, #4
mov r1, #0xe
bl _s32_div_f
mov r1, #0x10
sub r3, r1, r0
_022598D0:
mov r1, #0xe
add r0, sp, #4
strh r1, [r0]
mov r0, #0x19
lsl r3, r3, #0x18
str r0, [sp]
add r0, sp, #4
add r1, r4, #4
mov r2, #1
lsr r3, r3, #0x18
bl BlendPalette
add r0, r4, #4
mov r1, #2
bl DC_FlushRange
ldrh r1, [r4, #6]
add r0, r4, #4
mov r2, #2
bl GX_LoadBGPltt
ldrh r0, [r4, #2]
add r0, r0, #1
strh r0, [r4, #2]
_02259900:
add sp, #8
pop {r4, pc}
thumb_func_end ov88_02259884
.rodata
_02259904:
.byte 0x0F, 0x12, 0x15, 0x00, 0x50, 0x01, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00
ov88_02259910: ; 0x02259910
.byte 0xF0, 0x00, 0x00, 0x00
ov88_02259914: ; 0x02259914
.byte 0x20, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00
.byte 0x72, 0x00, 0x00, 0x00
ov88_02259924: ; 0x02259924
.byte 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
.byte 0x06, 0x00, 0x00, 0x00
ov88_02259934: ; 0x02259934
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov88_02259944: ; 0x02259944
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
ov88_02259958: ; 0x02259958
.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov88_02259980: ; 0x02259980
.byte 0x06, 0x00, 0x14, 0x08, 0x01, 0x00, 0x0A, 0x50, 0x06, 0x01, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00
.byte 0x00, 0x06, 0x06, 0x03, 0xA1, 0x00, 0x07, 0x10, 0x04, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x0D, 0x00
.byte 0x0F, 0x06, 0x06, 0x05, 0xB3, 0x00, 0x07, 0x18, 0x04, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x0D, 0x00
.byte 0x04, 0x0C, 0x12, 0x03, 0xD1, 0x00, 0x07, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0D, 0x00
ov88_022599C0: ; 0x022599C0
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0x04
.byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1B, 0x04, 0x00, 0x03, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1A, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.data
_02259A60:
.byte 0x00, 0x00, 0x18, 0x00, 0x1A, 0x00, 0x1E, 0x00
ov88_02259A68: ; 0x02259A68
.byte 0x00, 0x00, 0x00, 0x00, 0xDD, 0x05, 0x00, 0x00
.byte 0xE4, 0x05, 0x00, 0x00, 0xE3, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
; 0x02259A80