pokeheartgold/asm/overlay_64.s
2023-06-06 13:26:55 +02:00

2815 lines
56 KiB
ArmAsm

.include "asm/macros.inc"
.include "overlay_64.inc"
.include "global.inc"
.text
thumb_func_start ov64_021E5900
ov64_021E5900: ; 0x021E5900
push {r3, r4, r5, lr}
add r5, r0, #0
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
bl HBlankInterruptDisable
mov r0, #0
bl GX_EngineASetLayers
mov r0, #0
bl GX_EngineBSetLayers
ldr r0, _021E59B4 ; =0x04000050
mov r1, #0
strh r1, [r0]
ldr r0, _021E59B8 ; =0x04001050
strh r1, [r0]
bl sub_020210BC
mov r0, #4
bl sub_02021148
ldr r2, _021E59BC ; =0x04000304
ldr r0, _021E59C0 ; =0xFFFF7FFF
ldrh r1, [r2]
and r0, r1
strh r0, [r2]
mov r2, #1
mov r0, #3
mov r1, #0x3b
lsl r2, r2, #0x12
bl CreateHeap
mov r1, #0x1d
add r0, r5, #0
lsl r1, r1, #4
mov r2, #0x3b
bl OverlayManager_CreateAndGetData
mov r2, #0x1d
mov r1, #0
lsl r2, r2, #4
add r4, r0, #0
bl MI_CpuFill8
add r0, r5, #0
bl OverlayManager_GetArgs
str r0, [r4]
bl Save_HOF_GetNumRecords
mov r1, #0x6e
lsl r1, r1, #2
str r0, [r4, r1]
mov r0, #0xb4
mov r1, #0x3b
bl NARC_New
mov r1, #0x61
lsl r1, r1, #2
str r0, [r4, r1]
bl ov64_021E5B00
add r0, r4, #0
bl ov64_021E5B10
add r0, r4, #0
bl ov64_021E5CD0
add r0, r4, #0
bl ov64_021E607C
add r0, r4, #0
bl ov64_021E6170
add r0, r4, #0
bl ov64_021E622C
add r0, r4, #0
mov r1, #0
bl ov64_021E652C
ldr r0, _021E59C4 ; =ov64_021E5A88
add r1, r4, #0
bl Main_SetVBlankIntrCB
mov r0, #1
pop {r3, r4, r5, pc}
.balign 4, 0
_021E59B4: .word 0x04000050
_021E59B8: .word 0x04001050
_021E59BC: .word 0x04000304
_021E59C0: .word 0xFFFF7FFF
_021E59C4: .word ov64_021E5A88
thumb_func_end ov64_021E5900
thumb_func_start ov64_021E59C8
ov64_021E59C8: ; 0x021E59C8
push {r3, r4, r5, lr}
add r5, r0, #0
bl OverlayManager_GetData
add r4, r0, #0
mov r0, #0
add r1, r4, #0
bl Main_SetVBlankIntrCB
add r0, r4, #0
bl ov64_021E6260
add r0, r4, #0
bl ov64_021E620C
add r0, r4, #0
bl ov64_021E6118
add r0, r4, #0
bl ov64_021E602C
add r0, r4, #0
bl ov64_021E5CA4
mov r0, #0x61
lsl r0, r0, #2
ldr r0, [r4, r0]
bl NARC_dtor
bl sub_02021238
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x3b
bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov64_021E59C8
thumb_func_start ov64_021E5A18
ov64_021E5A18: ; 0x021E5A18
push {r3, r4, r5, lr}
add r4, r1, #0
bl OverlayManager_GetData
ldr r1, [r4]
add r5, r0, #0
cmp r1, #3
bhi _021E5A74
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021E5A34: ; jump table
.short _021E5A3C - _021E5A34 - 2 ; case 0
.short _021E5A48 - _021E5A34 - 2 ; case 1
.short _021E5A58 - _021E5A34 - 2 ; case 2
.short _021E5A68 - _021E5A34 - 2 ; case 3
_021E5A3C:
bl ov64_021E6288
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021E5A74
_021E5A48:
bl IsPaletteFadeFinished
cmp r0, #1
bne _021E5A74
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021E5A74
_021E5A58:
bl ov64_021E62C8
cmp r0, #0
bne _021E5A74
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021E5A74
_021E5A68:
bl IsPaletteFadeFinished
cmp r0, #1
bne _021E5A74
mov r0, #1
pop {r3, r4, r5, pc}
_021E5A74:
add r0, r5, #0
bl ov64_021E605C
mov r0, #0x4d
lsl r0, r0, #2
ldr r0, [r5, r0]
bl sub_0200D020
mov r0, #0
pop {r3, r4, r5, pc}
thumb_func_end ov64_021E5A18
thumb_func_start ov64_021E5A88
ov64_021E5A88: ; 0x021E5A88
push {r3, lr}
ldr r0, [r0, #4]
bl BgConfig_HandleScheduledScrollAndTransferOps
bl sub_0200D034
ldr r3, _021E5AA4 ; =0x027E0000
ldr r1, _021E5AA8 ; =0x00003FF8
mov r0, #1
ldr r2, [r3, r1]
orr r0, r2
str r0, [r3, r1]
pop {r3, pc}
nop
_021E5AA4: .word 0x027E0000
_021E5AA8: .word 0x00003FF8
thumb_func_end ov64_021E5A88
thumb_func_start ov64_021E5AAC
ov64_021E5AAC: ; 0x021E5AAC
push {r4, r5, r6, lr}
add r6, r2, #0
add r4, r1, #0
add r5, r0, #0
add r1, r6, #0
bl DC_FlushRange
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
bl GX_LoadOBJ
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov64_021E5AAC
thumb_func_start ov64_021E5AC8
ov64_021E5AC8: ; 0x021E5AC8
push {r4, r5, r6, lr}
add r6, r2, #0
add r4, r1, #0
add r5, r0, #0
add r1, r6, #0
bl DC_FlushRange
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
bl GXS_LoadOBJ
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov64_021E5AC8
thumb_func_start ov64_021E5AE4
ov64_021E5AE4: ; 0x021E5AE4
push {r4, r5, r6, lr}
add r6, r2, #0
add r4, r1, #0
add r5, r0, #0
add r1, r6, #0
bl DC_FlushRange
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
bl GX_LoadOBJPltt
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov64_021E5AE4
thumb_func_start ov64_021E5B00
ov64_021E5B00: ; 0x021E5B00
ldr r3, _021E5B08 ; =GX_SetBanks
ldr r0, _021E5B0C ; =ov64_021E6FAC
bx r3
nop
_021E5B08: .word GX_SetBanks
_021E5B0C: .word ov64_021E6FAC
thumb_func_end ov64_021E5B00
thumb_func_start ov64_021E5B10
ov64_021E5B10: ; 0x021E5B10
push {r3, r4, r5, lr}
sub sp, #0x90
add r5, r0, #0
mov r0, #0x3b
bl BgConfig_Alloc
add r3, sp, #0x80
ldr r4, _021E5C90 ; =ov64_021E6E88
str r0, [r5, #4]
add r2, r3, #0
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl SetBothScreensModesAndDisable
ldr r4, _021E5C94 ; =ov64_021E6F50
add r3, sp, #0x64
ldmia r4!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r4]
mov r1, #0
str r0, [r3]
ldr r0, [r5, #4]
add r3, r1, #0
bl InitBgFromTemplate
ldr r0, [r5, #4]
mov r1, #0
bl BgClearTilemapBufferAndCommit
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x3b
bl BG_ClearCharDataRange
ldr r4, _021E5C98 ; =ov64_021E6EFC
add r3, sp, #0x48
ldmia r4!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r4]
mov r1, #1
str r0, [r3]
ldr r0, [r5, #4]
mov r3, #0
bl InitBgFromTemplate
ldr r4, _021E5C9C ; =ov64_021E6F18
add r3, sp, #0x2c
ldmia r4!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r4]
mov r1, #4
str r0, [r3]
ldr r0, [r5, #4]
mov r3, #0
bl InitBgFromTemplate
ldr r0, [r5, #4]
mov r1, #4
bl BgClearTilemapBufferAndCommit
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x3b
bl BG_ClearCharDataRange
ldr r4, _021E5CA0 ; =ov64_021E6F34
add r3, sp, #0x10
ldmia r4!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r4]
mov r1, #5
str r0, [r3]
ldr r0, [r5, #4]
mov r3, #0
bl InitBgFromTemplate
mov r0, #0x61
mov r1, #0x3b
bl NARC_New
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
mov r3, #1
str r3, [sp, #8]
mov r2, #0x3b
str r2, [sp, #0xc]
ldr r2, [r5, #4]
add r4, r0, #0
bl GfGfxLoader_LoadScrnDataFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r1, #1
str r1, [sp, #8]
mov r0, #0x3b
str r0, [sp, #0xc]
ldr r2, [r5, #4]
add r0, r4, #0
add r3, r1, #0
bl GfGfxLoader_LoadCharDataFromOpenNarc
mov r0, #0x20
str r0, [sp]
mov r0, #0x3b
mov r2, #0
str r0, [sp, #4]
add r0, r4, #0
mov r1, #2
add r3, r2, #0
bl GfGfxLoader_GXLoadPalFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
mov r0, #0x3b
str r0, [sp, #0xc]
ldr r2, [r5, #4]
add r0, r4, #0
mov r1, #3
mov r3, #5
bl GfGfxLoader_LoadScrnDataFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
mov r0, #0x3b
str r0, [sp, #0xc]
ldr r2, [r5, #4]
add r0, r4, #0
mov r1, #4
mov r3, #5
bl GfGfxLoader_LoadCharDataFromOpenNarc
mov r0, #0x20
str r0, [sp]
mov r0, #0x3b
str r0, [sp, #4]
add r0, r4, #0
mov r1, #5
mov r2, #4
mov r3, #0
bl GfGfxLoader_GXLoadPalFromOpenNarc
add r0, r4, #0
bl NARC_dtor
mov r1, #0x1e
mov r0, #0
lsl r1, r1, #4
mov r2, #0x3b
bl LoadFontPal0
mov r1, #0x1e
mov r0, #4
lsl r1, r1, #4
mov r2, #0x3b
bl LoadFontPal0
add sp, #0x90
pop {r3, r4, r5, pc}
nop
_021E5C90: .word ov64_021E6E88
_021E5C94: .word ov64_021E6F50
_021E5C98: .word ov64_021E6EFC
_021E5C9C: .word ov64_021E6F18
_021E5CA0: .word ov64_021E6F34
thumb_func_end ov64_021E5B10
thumb_func_start ov64_021E5CA4
ov64_021E5CA4: ; 0x021E5CA4
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #4]
mov r1, #5
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #4
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #1
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #0
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
bl FreeToHeap
pop {r4, pc}
thumb_func_end ov64_021E5CA4
thumb_func_start ov64_021E5CD0
ov64_021E5CD0: ; 0x021E5CD0
push {r4, r5, r6, r7, lr}
sub sp, #0x5c
add r5, r0, #0
mov r0, #0x3b
bl sub_0200CF18
mov r1, #0x13
lsl r1, r1, #4
str r0, [r5, r1]
ldr r0, [r5, r1]
bl sub_0200CF38
mov r7, #0x4d
lsl r7, r7, #2
add r2, sp, #0x3c
ldr r3, _021E5FD4 ; =ov64_021E6F8C
str r0, [r5, r7]
ldmia r3!, {r0, r1}
add r6, r2, #0
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
ldr r4, _021E5FD8 ; =ov64_021E6EB8
stmia r2!, {r0, r1}
add r3, sp, #0x28
ldmia r4!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r4]
add r1, r6, #0
str r0, [r3]
sub r0, r7, #4
ldr r0, [r5, r0]
mov r3, #0x20
bl sub_0200CF70
ldr r3, _021E5FDC ; =ov64_021E6EE4
add r2, sp, #0x10
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
sub r1, r7, #4
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
mov r2, #0x12
bl sub_0200CFF4
sub r1, r7, #4
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, sp, #0x10
bl sub_0200D3F8
sub r0, r7, #4
ldr r0, [r5, r0]
bl sub_0200CF6C
mov r2, #2
mov r1, #0
lsl r2, r2, #0x14
bl G2dRenderer_SetSubSurfaceCoords
mov r0, #8
mov r1, #0x3b
bl NARC_New
add r4, r0, #0
mov r0, #0
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, _021E5FE0 ; =0x0000DCC0
sub r1, r7, #4
str r0, [sp, #8]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r4, #0
mov r3, #0x4c
bl sub_0200D504
mov r0, #0
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
ldr r0, _021E5FE4 ; =0x0000DCC1
sub r1, r7, #4
str r0, [sp, #8]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r4, #0
mov r3, #0x4c
bl sub_0200D504
mov r0, #0
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
ldr r0, _021E5FE0 ; =0x0000DCC0
sub r1, r7, #4
str r0, [sp, #0xc]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r4, #0
mov r3, #0x4b
bl sub_0200D5D4
mov r0, #0
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
ldr r0, _021E5FE4 ; =0x0000DCC1
sub r1, r7, #4
str r0, [sp, #0xc]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r4, #0
mov r3, #0x4b
bl sub_0200D5D4
mov r0, #0
str r0, [sp]
ldr r0, _021E5FE0 ; =0x0000DCC0
sub r1, r7, #4
str r0, [sp, #4]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r4, #0
mov r3, #0x4d
bl sub_0200D6EC
mov r0, #0
str r0, [sp]
ldr r0, _021E5FE0 ; =0x0000DCC0
sub r1, r7, #4
str r0, [sp, #4]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r4, #0
mov r3, #0x4e
bl sub_0200D71C
add r0, r4, #0
bl NARC_dtor
mov r0, #0x61
mov r1, #0x3b
bl NARC_New
add r6, r0, #0
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
ldr r0, _021E5FE8 ; =0x0000DCCE
sub r1, r7, #4
str r0, [sp, #8]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r6, #0
mov r3, #6
bl sub_0200D504
mov r0, #1
str r0, [sp]
ldr r0, _021E5FEC ; =0x0000DCC3
sub r1, r7, #4
str r0, [sp, #4]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r6, #0
mov r3, #7
bl sub_0200D6EC
mov r0, #1
str r0, [sp]
ldr r0, _021E5FEC ; =0x0000DCC3
sub r1, r7, #4
str r0, [sp, #4]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r6, #0
mov r3, #8
bl sub_0200D71C
mov r0, #0
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, _021E5FE8 ; =0x0000DCCE
sub r1, r7, #4
str r0, [sp, #0xc]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r6, #0
mov r3, #9
bl sub_0200D5D4
mov r0, #1
str r0, [sp]
ldr r0, _021E5FE4 ; =0x0000DCC1
sub r1, r7, #4
str r0, [sp, #4]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r6, #0
mov r3, #0xb
bl sub_0200D6EC
mov r0, #1
str r0, [sp]
ldr r0, _021E5FE4 ; =0x0000DCC1
sub r1, r7, #4
str r0, [sp, #4]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r6, #0
mov r3, #0xc
bl sub_0200D71C
mov r0, #1
str r0, [sp]
ldr r0, _021E5FF0 ; =0x0000DCC2
sub r1, r7, #4
str r0, [sp, #4]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r6, #0
mov r3, #0xe
bl sub_0200D6EC
mov r0, #1
str r0, [sp]
ldr r0, _021E5FF0 ; =0x0000DCC2
sub r1, r7, #4
str r0, [sp, #4]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r6, #0
mov r3, #0xf
bl sub_0200D71C
ldr r4, _021E5FF0 ; =0x0000DCC2
mov r7, #0
_021E5EF0:
str r7, [sp]
mov r0, #1
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x13
mov r1, #0x4d
str r4, [sp, #0xc]
lsl r0, r0, #4
lsl r1, r1, #2
ldr r0, [r5, r0]
ldr r1, [r5, r1]
add r2, r6, #0
mov r3, #0x10
bl sub_0200D5D4
ldr r0, _021E5FF4 ; =0x0000DCCD
add r4, r4, #1
cmp r4, r0
bls _021E5EF0
add r0, r6, #0
bl NARC_dtor
mov r1, #0x13
lsl r1, r1, #4
ldr r0, [r5, r1]
add r1, r1, #4
mov r3, #2
ldr r1, [r5, r1]
ldr r2, _021E5FF8 ; =ov64_021E70C8
lsl r3, r3, #0x14
bl sub_0200D740
mov r1, #0x4e
lsl r1, r1, #2
str r0, [r5, r1]
add r0, r1, #0
sub r0, #8
sub r1, r1, #4
mov r3, #2
ldr r0, [r5, r0]
ldr r1, [r5, r1]
ldr r2, _021E5FFC ; =ov64_021E70FC
lsl r3, r3, #0x14
bl sub_0200D740
mov r1, #0x4f
lsl r1, r1, #2
str r0, [r5, r1]
sub r0, r1, #4
ldr r0, [r5, r0]
mov r1, #0
bl sub_0200DCE8
mov r0, #0x4f
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #0
bl sub_0200DCE8
mov r1, #0x13
lsl r1, r1, #4
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
ldr r2, _021E6000 ; =ov64_021E73A0
bl sub_0200D734
mov r1, #0x17
lsl r1, r1, #4
str r0, [r5, r1]
add r0, r1, #0
sub r0, #0x40
sub r1, #0x3c
ldr r0, [r5, r0]
ldr r1, [r5, r1]
ldr r2, _021E6004 ; =ov64_021E73D4
bl sub_0200D734
mov r1, #0x5d
lsl r1, r1, #2
str r0, [r5, r1]
add r0, r1, #0
sub r0, #0x44
sub r1, #0x40
ldr r0, [r5, r0]
ldr r1, [r5, r1]
ldr r2, _021E6008 ; =ov64_021E7408
bl sub_0200D734
mov r1, #0x5e
lsl r1, r1, #2
str r0, [r5, r1]
add r0, r1, #0
sub r0, #0x48
sub r1, #0x44
ldr r0, [r5, r0]
ldr r1, [r5, r1]
ldr r2, _021E600C ; =ov64_021E743C
bl sub_0200D734
mov r1, #0x5f
lsl r1, r1, #2
str r0, [r5, r1]
mov r0, #0x10
mov r1, #1
bl GX_EngineAToggleLayers
mov r0, #0x10
mov r1, #1
bl GX_EngineBToggleLayers
add sp, #0x5c
pop {r4, r5, r6, r7, pc}
nop
_021E5FD4: .word ov64_021E6F8C
_021E5FD8: .word ov64_021E6EB8
_021E5FDC: .word ov64_021E6EE4
_021E5FE0: .word 0x0000DCC0
_021E5FE4: .word 0x0000DCC1
_021E5FE8: .word 0x0000DCCE
_021E5FEC: .word 0x0000DCC3
_021E5FF0: .word 0x0000DCC2
_021E5FF4: .word 0x0000DCCD
_021E5FF8: .word ov64_021E70C8
_021E5FFC: .word ov64_021E70FC
_021E6000: .word ov64_021E73A0
_021E6004: .word ov64_021E73D4
_021E6008: .word ov64_021E7408
_021E600C: .word ov64_021E743C
thumb_func_end ov64_021E5CD0
thumb_func_start ov64_021E6010
ov64_021E6010: ; 0x021E6010
push {r3, r4, r5, lr}
lsl r5, r1, #2
mov r1, #0x4e
lsl r1, r1, #2
add r4, r0, r1
ldr r0, [r4, r5]
cmp r0, #0
beq _021E6028
bl sub_0200D9DC
mov r0, #0
str r0, [r4, r5]
_021E6028:
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov64_021E6010
thumb_func_start ov64_021E602C
ov64_021E602C: ; 0x021E602C
push {r3, r4, r5, lr}
add r4, r0, #0
mov r5, #0
_021E6032:
add r0, r4, #0
add r1, r5, #0
bl ov64_021E6010
add r5, r5, #1
cmp r5, #0x12
blo _021E6032
mov r1, #0x13
lsl r1, r1, #4
ldr r0, [r4, r1]
add r1, r1, #4
ldr r1, [r4, r1]
bl sub_0200D998
mov r0, #0x13
lsl r0, r0, #4
ldr r0, [r4, r0]
bl sub_0200D108
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov64_021E602C
thumb_func_start ov64_021E605C
ov64_021E605C: ; 0x021E605C
push {r4, r5, r6, lr}
mov r6, #0x4e
add r5, r0, #0
mov r4, #0
lsl r6, r6, #2
_021E6066:
ldr r0, [r5, r6]
cmp r0, #0
beq _021E6070
bl sub_0200DC18
_021E6070:
add r4, r4, #1
add r5, r5, #4
cmp r4, #0x12
blo _021E6066
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov64_021E605C
thumb_func_start ov64_021E607C
ov64_021E607C: ; 0x021E607C
push {r4, lr}
add r4, r0, #0
mov r0, #0
mov r1, #0x1b
mov r2, #0xb5
mov r3, #0x3b
bl NewMsgDataFromNarc
mov r1, #0x46
lsl r1, r1, #2
str r0, [r4, r1]
mov r0, #1
mov r1, #0x1b
mov r2, #0xed
mov r3, #0x3b
bl NewMsgDataFromNarc
mov r1, #0x47
lsl r1, r1, #2
str r0, [r4, r1]
ldr r2, _021E6114 ; =0x000002EE
mov r0, #1
mov r1, #0x1b
mov r3, #0x3b
bl NewMsgDataFromNarc
mov r1, #0x12
lsl r1, r1, #4
str r0, [r4, r1]
mov r0, #0x3b
bl MessageFormat_new
mov r1, #0x49
lsl r1, r1, #2
str r0, [r4, r1]
sub r1, #0x24
add r0, r1, #0
mov r1, #0x3b
bl String_New
mov r1, #0x4a
lsl r1, r1, #2
str r0, [r4, r1]
sub r1, #0x28
add r0, r1, #0
mov r1, #0x3b
bl String_New
mov r1, #0x4b
lsl r1, r1, #2
str r0, [r4, r1]
sub r1, #0x2c
add r0, r1, #0
mov r1, #0x3b
bl String_New
mov r1, #0x69
lsl r1, r1, #2
str r0, [r4, r1]
sub r1, #0xa4
add r0, r1, #0
mov r1, #0x3b
bl String_New
mov r1, #0x6a
lsl r1, r1, #2
str r0, [r4, r1]
sub r0, r1, #4
ldr r2, [r4, r0]
add r0, r1, #0
sub r0, #0x20
str r2, [r4, r0]
ldr r0, [r4, r1]
sub r1, #0x1c
str r0, [r4, r1]
pop {r4, pc}
.balign 4, 0
_021E6114: .word 0x000002EE
thumb_func_end ov64_021E607C
thumb_func_start ov64_021E6118
ov64_021E6118: ; 0x021E6118
push {r4, lr}
add r4, r0, #0
mov r0, #0x6a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl String_dtor
mov r0, #0x69
lsl r0, r0, #2
ldr r0, [r4, r0]
bl String_dtor
mov r0, #0x4b
lsl r0, r0, #2
ldr r0, [r4, r0]
bl String_dtor
mov r0, #0x4a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl String_dtor
mov r0, #0x49
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MessageFormat_delete
mov r0, #0x12
lsl r0, r0, #4
ldr r0, [r4, r0]
bl DestroyMsgData
mov r0, #0x47
lsl r0, r0, #2
ldr r0, [r4, r0]
bl DestroyMsgData
mov r0, #0x46
lsl r0, r0, #2
ldr r0, [r4, r0]
bl DestroyMsgData
pop {r4, pc}
.balign 4, 0
thumb_func_end ov64_021E6118
thumb_func_start ov64_021E6170
ov64_021E6170: ; 0x021E6170
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r6, r0, #0
mov r0, #4
mov r1, #0x3b
bl FontID_Alloc
add r5, r6, #0
ldr r4, _021E6204 ; =ov64_021E7040
mov r7, #0
add r5, #8
_021E6186:
ldr r0, [r6, #4]
add r1, r5, #0
add r2, r4, #0
bl AddWindow
add r7, r7, #1
add r4, #8
add r5, #0x10
cmp r7, #0x11
blo _021E6186
mov r0, #0x42
lsl r0, r0, #2
add r0, r6, r0
mov r1, #0
bl FillWindowPixelBuffer
mov r2, #0x46
lsl r2, r2, #2
ldr r0, [r6, r2]
add r2, #0x10
ldr r2, [r6, r2]
mov r1, #6
bl ReadMsgDataIntoString
mov r1, #0x4a
lsl r1, r1, #2
ldr r1, [r6, r1]
mov r0, #4
mov r2, #0
bl FontID_String_GetWidth
add r3, r0, #0
mov r1, #0
lsr r4, r3, #1
mov r3, #0x18
str r1, [sp]
mov r2, #0xff
ldr r0, _021E6208 ; =0x000F0100
str r2, [sp, #4]
str r0, [sp, #8]
add r0, r2, #0
str r1, [sp, #0xc]
add r2, #0x29
add r0, #9
ldr r2, [r6, r2]
add r0, r6, r0
mov r1, #4
sub r3, r3, r4
bl AddTextPrinterParameterized2
mov r0, #0x42
lsl r0, r0, #2
add r0, r6, r0
bl CopyWindowPixelsToVram_TextMode
mov r0, #0x42
lsl r0, r0, #2
add r0, r6, r0
bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
_021E6204: .word ov64_021E7040
_021E6208: .word 0x000F0100
thumb_func_end ov64_021E6170
thumb_func_start ov64_021E620C
ov64_021E620C: ; 0x021E620C
push {r3, r4, r5, lr}
add r5, r0, #0
mov r4, #0
add r5, #8
_021E6214:
add r0, r5, #0
bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #0x11
blo _021E6214
mov r0, #4
bl FontID_Release
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov64_021E620C
thumb_func_start ov64_021E622C
ov64_021E622C: ; 0x021E622C
push {r3, r4, lr}
sub sp, #0xc
add r4, r0, #0
mov r0, #1
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
mov r0, #0x3b
str r0, [sp, #8]
ldr r0, _021E6254 ; =ov64_021E6F6C
ldr r1, _021E6258 ; =ov64_021E7008
ldr r2, _021E625C ; =ov64_021E6EA8
add r3, r4, #0
bl sub_02019BA4
mov r1, #6
lsl r1, r1, #6
str r0, [r4, r1]
add sp, #0xc
pop {r3, r4, pc}
.balign 4, 0
_021E6254: .word ov64_021E6F6C
_021E6258: .word ov64_021E7008
_021E625C: .word ov64_021E6EA8
thumb_func_end ov64_021E622C
thumb_func_start ov64_021E6260
ov64_021E6260: ; 0x021E6260
mov r1, #6
lsl r1, r1, #6
ldr r3, _021E626C ; =sub_02019BDC
ldr r0, [r0, r1]
bx r3
nop
_021E626C: .word sub_02019BDC
thumb_func_end ov64_021E6260
thumb_func_start ov64_021E6270
ov64_021E6270: ; 0x021E6270
bx lr
.balign 4, 0
thumb_func_end ov64_021E6270
thumb_func_start ov64_021E6274
ov64_021E6274: ; 0x021E6274
bx lr
.balign 4, 0
thumb_func_end ov64_021E6274
thumb_func_start ov64_021E6278
ov64_021E6278: ; 0x021E6278
ldr r3, _021E627C ; =ov64_021E6BD8
bx r3
.balign 4, 0
_021E627C: .word ov64_021E6BD8
thumb_func_end ov64_021E6278
thumb_func_start ov64_021E6280
ov64_021E6280: ; 0x021E6280
ldr r3, _021E6284 ; =ov64_021E6BD8
bx r3
.balign 4, 0
_021E6284: .word ov64_021E6BD8
thumb_func_end ov64_021E6280
thumb_func_start ov64_021E6288
ov64_021E6288: ; 0x021E6288
push {lr}
sub sp, #0xc
mov r0, #6
str r0, [sp]
mov r1, #1
str r1, [sp, #4]
mov r0, #0x3b
str r0, [sp, #8]
mov r0, #0
add r2, r1, #0
add r3, r0, #0
bl BeginNormalPaletteFade
add sp, #0xc
pop {pc}
.balign 4, 0
thumb_func_end ov64_021E6288
thumb_func_start ov64_021E62A8
ov64_021E62A8: ; 0x021E62A8
push {lr}
sub sp, #0xc
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #0x3b
str r0, [sp, #8]
mov r0, #0
add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
bl BeginNormalPaletteFade
add sp, #0xc
pop {pc}
thumb_func_end ov64_021E62A8
thumb_func_start ov64_021E62C8
ov64_021E62C8: ; 0x021E62C8
push {r3, r4, r5, lr}
mov r1, #0x72
add r4, r0, #0
lsl r1, r1, #2
ldr r1, [r4, r1]
cmp r1, #4
bhi _021E63A2
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021E62E2: ; jump table
.short _021E62EC - _021E62E2 - 2 ; case 0
.short _021E649E - _021E62E2 - 2 ; case 1
.short _021E64B2 - _021E62E2 - 2 ; case 2
.short _021E64C4 - _021E62E2 - 2 ; case 3
.short _021E64D4 - _021E62E2 - 2 ; case 4
_021E62EC:
ldr r0, _021E64E8 ; =_021E6E7C
bl sub_02025224
cmp r0, #0
bne _021E6324
mov r1, #0x6d
lsl r1, r1, #2
ldr r0, [r4, r1]
cmp r0, #0
ble _021E63A2
add r0, r1, #0
mov r2, #0xf
add r0, #8
str r2, [r4, r0]
add r0, r1, #0
mov r2, #2
add r0, #0x18
str r2, [r4, r0]
mov r0, #1
add r1, #0x14
str r0, [r4, r1]
add r0, r4, #0
bl ov64_021E64F8
ldr r0, _021E64EC ; =0x000005DC
bl PlaySE
b _021E64E2
_021E6324:
cmp r0, #1
bne _021E635E
mov r1, #0x6e
lsl r1, r1, #2
ldr r3, [r4, r1]
cmp r3, #1
blt _021E63A2
sub r0, r1, #4
ldr r2, [r4, r0]
sub r0, r3, #1
cmp r2, r0
beq _021E63A2
mov r2, #0x10
add r0, r1, #4
str r2, [r4, r0]
add r0, r1, #0
mov r2, #3
add r0, #0x14
str r2, [r4, r0]
mov r0, #1
add r1, #0x10
str r0, [r4, r1]
add r0, r4, #0
bl ov64_021E64F8
ldr r0, _021E64EC ; =0x000005DC
bl PlaySE
b _021E64E2
_021E635E:
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
bl sub_02019D18
mov r1, #2
add r5, r0, #0
mvn r1, r1
cmp r5, r1
bhi _021E639A
bhs _021E63F6
cmp r5, #6
bhi _021E6392
add r0, r5, r5
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021E6384: ; jump table
.short _021E63AC - _021E6384 - 2 ; case 0
.short _021E63AC - _021E6384 - 2 ; case 1
.short _021E63AC - _021E6384 - 2 ; case 2
.short _021E63AC - _021E6384 - 2 ; case 3
.short _021E63AC - _021E6384 - 2 ; case 4
.short _021E63AC - _021E6384 - 2 ; case 5
.short _021E63D2 - _021E6384 - 2 ; case 6
_021E6392:
mov r0, #3
mvn r0, r0
cmp r5, r0
b _021E64E2
_021E639A:
add r0, r1, #1
cmp r5, r0
bhi _021E63A4
beq _021E63D2
_021E63A2:
b _021E64E2
_021E63A4:
add r0, r1, #2
cmp r5, r0
beq _021E6410
b _021E64E2
_021E63AC:
add r0, r4, #0
add r1, r5, #0
bl ov64_021E677C
ldr r0, _021E64F0 ; =gSystem
ldr r1, [r0, #0x48]
mov r0, #1
tst r0, r1
bne _021E63C8
mov r0, #0x6b
lsl r0, r0, #2
ldr r0, [r4, r0]
cmp r5, r0
blo _021E63CA
_021E63C8:
b _021E64E2
_021E63CA:
ldr r0, _021E64EC ; =0x000005DC
bl PlaySE
b _021E64E2
_021E63D2:
ldr r0, _021E64EC ; =0x000005DC
bl PlaySE
mov r1, #0x6f
mov r0, #0x11
lsl r1, r1, #2
str r0, [r4, r1]
add r0, r1, #0
mov r2, #4
add r0, #0x10
str r2, [r4, r0]
add r0, r1, #0
add r0, #0xc
ldr r0, [r4, r0]
add r1, #0xc
add r0, r0, #1
str r0, [r4, r1]
b _021E64E2
_021E63F6:
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
bl sub_02019F74
add r1, r0, #0
add r0, r4, #0
bl ov64_021E677C
ldr r0, _021E64EC ; =0x000005DC
bl PlaySE
b _021E64E2
_021E6410:
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
bl sub_02019F74
ldr r1, _021E64F0 ; =gSystem
ldr r2, [r1, #0x4c]
mov r1, #0x10
tst r1, r2
beq _021E6462
cmp r0, #2
beq _021E642C
cmp r0, #5
bne _021E64E2
_021E642C:
mov r1, #0x6e
lsl r1, r1, #2
ldr r3, [r4, r1]
cmp r3, #1
blt _021E64E2
sub r0, r1, #4
ldr r2, [r4, r0]
sub r0, r3, #1
cmp r2, r0
beq _021E64E2
mov r2, #0x10
add r0, r1, #4
str r2, [r4, r0]
add r0, r1, #0
mov r2, #3
add r0, #0x14
str r2, [r4, r0]
mov r0, #1
add r1, #0x10
str r0, [r4, r1]
add r0, r4, #0
bl ov64_021E64F8
ldr r0, _021E64EC ; =0x000005DC
bl PlaySE
b _021E64E2
_021E6462:
mov r1, #0x20
tst r1, r2
beq _021E64E2
cmp r0, #0
beq _021E6470
cmp r0, #3
bne _021E64E2
_021E6470:
mov r1, #0x6d
lsl r1, r1, #2
ldr r0, [r4, r1]
cmp r0, #0
ble _021E64E2
add r0, r1, #0
mov r2, #0xf
add r0, #8
str r2, [r4, r0]
add r0, r1, #0
mov r2, #2
add r0, #0x18
str r2, [r4, r0]
mov r0, #1
add r1, #0x14
str r0, [r4, r1]
add r0, r4, #0
bl ov64_021E64F8
ldr r0, _021E64EC ; =0x000005DC
bl PlaySE
b _021E64E2
_021E649E:
bl ov64_021E6B84
cmp r0, #0
bne _021E64E2
mov r0, #0x73
lsl r0, r0, #2
ldr r1, [r4, r0]
sub r0, r0, #4
str r1, [r4, r0]
b _021E64E2
_021E64B2:
mov r1, #0
mvn r1, r1
bl ov64_021E652C
mov r0, #0x72
mov r1, #0
lsl r0, r0, #2
str r1, [r4, r0]
b _021E64E2
_021E64C4:
mov r1, #1
bl ov64_021E652C
mov r0, #0x72
mov r1, #0
lsl r0, r0, #2
str r1, [r4, r0]
b _021E64E2
_021E64D4:
bl ov64_021E62A8
ldr r0, _021E64F4 ; =0x0000060D
bl PlaySE
mov r0, #0
pop {r3, r4, r5, pc}
_021E64E2:
mov r0, #1
pop {r3, r4, r5, pc}
nop
_021E64E8: .word _021E6E7C
_021E64EC: .word 0x000005DC
_021E64F0: .word gSystem
_021E64F4: .word 0x0000060D
thumb_func_end ov64_021E62C8
thumb_func_start ov64_021E64F8
ov64_021E64F8: ; 0x021E64F8
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
mov r4, #2
_021E64FE:
add r0, r5, #0
add r1, r4, #0
bl ov64_021E6010
add r4, r4, #1
cmp r4, #0xd
bls _021E64FE
ldr r4, _021E6528 ; =0x0000DCC2
mov r7, #0x4d
add r6, r4, #0
lsl r7, r7, #2
add r6, #0xb
_021E6516:
ldr r0, [r5, r7]
add r1, r4, #0
bl sub_0200D958
add r4, r4, #1
cmp r4, r6
bls _021E6516
pop {r3, r4, r5, r6, r7, pc}
nop
_021E6528: .word 0x0000DCC2
thumb_func_end ov64_021E64F8
thumb_func_start ov64_021E652C
ov64_021E652C: ; 0x021E652C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x28
mov r2, #0x6d
add r5, r0, #0
lsl r2, r2, #2
ldr r0, [r5, r2]
add r0, r0, r1
str r0, [r5, r2]
ldr r1, [r5, r2]
cmp r1, #0
bge _021E6548
mov r0, #0
str r0, [r5, r2]
b _021E6554
_021E6548:
add r0, r2, #4
ldr r0, [r5, r0]
cmp r1, r0
blt _021E6554
sub r0, r0, #1
str r0, [r5, r2]
_021E6554:
mov r1, #0x6e
lsl r1, r1, #2
ldr r0, [r5, r1]
cmp r0, #1
bne _021E6576
sub r1, #0x44
ldr r0, [r5, r1]
mov r1, #0
bl sub_0200DCE8
mov r0, #0x5e
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #0
bl sub_0200DCE8
b _021E65BA
_021E6576:
sub r0, r1, #4
ldr r0, [r5, r0]
cmp r0, #0
bne _021E658A
sub r1, #0x44
ldr r0, [r5, r1]
mov r1, #0
bl sub_0200DCE8
b _021E6594
_021E658A:
sub r1, #0x44
ldr r0, [r5, r1]
mov r1, #1
bl sub_0200DCE8
_021E6594:
mov r0, #0x6d
lsl r0, r0, #2
add r1, r0, #4
ldr r1, [r5, r1]
ldr r2, [r5, r0]
sub r1, r1, #1
cmp r2, r1
bne _021E65B0
sub r0, #0x3c
ldr r0, [r5, r0]
mov r1, #0
bl sub_0200DCE8
b _021E65BA
_021E65B0:
sub r0, #0x3c
ldr r0, [r5, r0]
mov r1, #1
bl sub_0200DCE8
_021E65BA:
mov r1, #0x6d
lsl r1, r1, #2
ldr r0, [r5]
ldr r1, [r5, r1]
bl Save_HOF_TranslateRecordIdx
mov r1, #0x1b
lsl r1, r1, #4
str r0, [r5, r1]
add r1, r1, #4
ldr r0, [r5]
ldr r1, [r5, r1]
bl Save_HOF_RecordCountMons
mov r1, #0x6b
lsl r1, r1, #2
str r0, [r5, r1]
add r1, #0x1a
ldrh r0, [r5, r1]
cmp r0, #0
bne _021E65F0
ldr r0, _021E6744 ; =0x0000DCC2
mov r7, #2
str r0, [sp, #0x14]
mov r0, #7
str r0, [sp, #0x10]
b _021E65FA
_021E65F0:
ldr r0, _021E6748 ; =0x0000DCC8
mov r7, #8
str r0, [sp, #0x14]
mov r0, #0xf
str r0, [sp, #0x10]
_021E65FA:
mov r0, #0x6b
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r4, #0
cmp r0, #0
bls _021E6656
lsl r0, r7, #2
add r6, r5, r0
_021E660A:
mov r1, #0x6d
lsl r1, r1, #2
mov r3, #0x62
lsl r3, r3, #2
ldr r0, [r5]
ldr r1, [r5, r1]
add r2, r4, #0
add r3, r5, r3
bl Save_HOF_GetMonStatsByIndexPair
ldr r0, [sp, #0x14]
add r1, r7, #0
add r3, r0, r4
add r0, r5, #0
add r2, r4, #0
str r3, [sp]
bl ov64_021E6C1C
mov r0, #0x4e
lsl r0, r0, #2
ldr r0, [r6, r0]
mov r1, #0
bl sub_0200DCC0
mov r0, #0x4e
lsl r0, r0, #2
ldr r0, [r6, r0]
mov r1, #0
bl sub_0200DC4C
mov r0, #0x6b
lsl r0, r0, #2
ldr r0, [r5, r0]
add r4, r4, #1
add r7, r7, #1
add r6, r6, #4
cmp r4, r0
blo _021E660A
_021E6656:
mov r0, #6
lsl r0, r0, #6
ldr r0, [r5, r0]
bl sub_02019F74
add r1, r0, #0
add r0, r5, #0
bl ov64_021E677C
ldr r0, [sp, #0x10]
add r4, r5, #0
add r4, #8
lsl r6, r0, #4
add r0, r4, r6
mov r1, #0
bl FillWindowPixelBuffer
mov r2, #0x46
lsl r2, r2, #2
ldr r0, [r5, r2]
add r2, #0x10
ldr r2, [r5, r2]
mov r1, #0
bl ReadMsgDataIntoString
mov r1, #0x6d
lsl r1, r1, #2
ldr r0, [r5]
ldr r1, [r5, r1]
bl Save_HOF_TranslateRecordIdx
mov r1, #0
add r2, r0, #0
str r1, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #0x49
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r3, #4
bl BufferIntegerAsString
mov r1, #0x6d
lsl r1, r1, #2
ldr r0, [r5]
ldr r1, [r5, r1]
add r2, sp, #0x18
bl Save_HOF_GetClearDate
mov r0, #0
str r0, [sp]
mov r1, #1
str r1, [sp, #4]
mov r0, #0x49
lsl r0, r0, #2
mov r2, #0x7d
ldr r3, [sp, #0x18]
lsl r2, r2, #4
add r2, r3, r2
ldr r0, [r5, r0]
mov r3, #4
bl BufferIntegerAsString
mov r0, #0x49
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r2, [sp, #0x1c]
mov r1, #2
bl BufferMonthNameAbbr
mov r0, #0
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #0x49
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r2, [sp, #0x20]
mov r1, #3
mov r3, #2
bl BufferIntegerAsString
mov r2, #0x49
lsl r2, r2, #2
add r1, r2, #0
ldr r0, [r5, r2]
add r1, #8
add r2, r2, #4
ldr r1, [r5, r1]
ldr r2, [r5, r2]
bl StringExpandPlaceholders
mov r1, #0
str r1, [sp]
mov r2, #0xff
str r2, [sp, #4]
ldr r0, _021E674C ; =0x000F0200
add r2, #0x2d
str r0, [sp, #8]
str r1, [sp, #0xc]
ldr r2, [r5, r2]
add r0, r4, r6
add r3, r1, #0
bl AddTextPrinterParameterized2
add r0, r4, r6
bl CopyWindowPixelsToVram_TextMode
add r0, r4, r6
bl ScheduleWindowCopyToVram
ldr r1, _021E6750 ; =0x000001C6
mov r0, #1
ldrh r2, [r5, r1]
eor r0, r2
strh r0, [r5, r1]
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
nop
_021E6744: .word 0x0000DCC2
_021E6748: .word 0x0000DCC8
_021E674C: .word 0x000F0200
_021E6750: .word 0x000001C6
thumb_func_end ov64_021E652C
thumb_func_start ov64_021E6754
ov64_021E6754: ; 0x021E6754
push {r4, lr}
add r4, r0, #0
mov r0, #0x4e
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0
bl sub_0200DCE8
mov r0, #0x4f
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0
bl sub_0200DCE8
ldr r0, [r4, #4]
mov r1, #4
mov r2, #0
bl BgFillTilemapBufferAndSchedule
pop {r4, pc}
thumb_func_end ov64_021E6754
thumb_func_start ov64_021E677C
ov64_021E677C: ; 0x021E677C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x60
ldr r3, _021E6AC0 ; =ov64_021E6E98
add r2, sp, #0x40
add r5, r0, #0
add r6, r1, #0
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
mov r0, #0x6b
lsl r0, r0, #2
ldr r1, [r5, r0]
cmp r6, r1
blo _021E67A4
add r0, r5, #0
bl ov64_021E6754
add sp, #0x60
pop {r3, r4, r5, r6, r7, pc}
_021E67A4:
sub r0, #0x74
ldr r0, [r5, r0]
mov r1, #0
bl sub_0200DCE8
mov r0, #0x4f
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #0
bl sub_0200DCE8
mov r0, #0x71
lsl r0, r0, #2
ldrh r0, [r5, r0]
cmp r0, #0
bne _021E67CA
mov r4, #0
str r4, [sp, #0x1c]
b _021E67D0
_021E67CA:
mov r0, #1
str r0, [sp, #0x1c]
mov r4, #8
_021E67D0:
mov r3, #0x6d
lsl r3, r3, #2
ldr r1, [r5, r3]
sub r3, #0x2c
ldr r0, [r5]
add r2, r6, #0
add r3, r5, r3
bl Save_HOF_GetMonStatsByIndexPair
mov r1, #0x66
lsl r1, r1, #2
ldrh r0, [r5, r1]
sub r1, #8
ldr r1, [r5, r1]
bl GetGenderBySpeciesAndPersonality
mov r2, #0x61
lsl r2, r2, #2
str r0, [sp, #0x20]
ldr r0, [r5, r2]
add r2, #0x14
ldrh r2, [r5, r2]
add r1, sp, #0x3c
bl sub_020729D8
mov r3, #0x19
lsl r3, r3, #4
ldr r0, [r5, r3]
ldr r1, [sp, #0x20]
str r0, [sp]
add r0, r3, #0
add r0, #8
add r3, #0xb
lsl r1, r1, #0x18
ldrh r0, [r5, r0]
ldrb r3, [r5, r3]
lsr r1, r1, #0x18
mov r2, #2
bl sub_020708D8
add r7, r0, #0
ldr r0, [sp, #0x1c]
add r3, sp, #0x3c
mov r2, #0
lsl r6, r0, #2
mov r0, #0x4e
lsl r0, r0, #2
add r0, r5, r0
str r0, [sp, #0x24]
ldrsb r2, [r3, r2]
add r7, #0x40
mov r1, #0x40
sub r2, r7, r2
lsl r2, r2, #0x10
ldr r0, [r0, r6]
asr r2, r2, #0x10
lsl r3, r1, #0xf
bl sub_0200DDF4
mov r1, #0x65
lsl r1, r1, #2
ldr r0, [r5, r1]
sub r1, r1, #4
ldr r1, [r5, r1]
bl CalcShininessByOtIdAndPersonality
cmp r0, #0
beq _021E685C
mov r7, #1
b _021E685E
_021E685C:
mov r7, #0
_021E685E:
mov r1, #0x32
mov r0, #0x3b
lsl r1, r1, #6
bl AllocFromHeapAtEnd
mov r1, #0x19
lsl r1, r1, #4
str r0, [sp, #0x28]
ldr r0, [r5, r1]
add r1, #8
str r0, [sp, #0x18]
ldrh r0, [r5, r1]
ldr r1, [sp, #0x18]
bl GetGenderBySpeciesAndPersonality
add r2, r0, #0
lsl r0, r7, #0x18
lsr r0, r0, #0x18
ldr r1, _021E6AC4 ; =0x0000019B
str r0, [sp]
ldrb r0, [r5, r1]
sub r1, r1, #3
mov r3, #2
str r0, [sp, #4]
ldr r0, [sp, #0x18]
str r0, [sp, #8]
ldrh r1, [r5, r1]
add r0, sp, #0x50
bl GetMonSpriteCharAndPlttNarcIdsEx
ldr r0, [sp, #0x28]
mov r2, #0x3b
str r0, [sp]
mov r0, #0x19
lsl r0, r0, #4
ldr r1, [r5, r0]
add r0, #8
str r1, [sp, #4]
mov r1, #0
str r1, [sp, #8]
mov r1, #2
str r1, [sp, #0xc]
ldrh r0, [r5, r0]
add r1, sp, #0x3c
add r3, sp, #0x40
str r0, [sp, #0x10]
ldrh r0, [r1, #0x14]
ldrh r1, [r1, #0x16]
bl sub_02014510
ldr r0, [sp, #0x24]
ldr r0, [r0, r6]
ldr r0, [r0]
bl sub_02024B1C
mov r1, #2
bl NNS_G2dGetImageLocation
add r1, r0, #0
mov r2, #0x32
ldr r0, [sp, #0x28]
lsl r2, r2, #6
bl ov64_021E5AC8
ldr r0, [sp, #0x28]
bl FreeToHeap
ldr r0, [sp, #0x24]
ldr r0, [r0, r6]
ldr r0, [r0]
bl sub_02024B34
mov r1, #2
bl NNS_G2dGetImagePaletteLocation
add r3, r0, #0
mov r0, #0x20
str r0, [sp]
mov r0, #0x3b
str r0, [sp, #4]
add r1, sp, #0x3c
ldrh r0, [r1, #0x14]
ldrh r1, [r1, #0x18]
mov r2, #5
bl GfGfxLoader_GXLoadPal
ldr r0, [sp, #0x24]
mov r1, #1
ldr r0, [r0, r6]
bl sub_0200DCE8
add r0, r5, #0
str r0, [sp, #0x2c]
add r0, #8
mov r7, #0
add r6, r4, #0
str r0, [sp, #0x2c]
_021E6920:
ldr r0, [sp, #0x2c]
lsl r1, r6, #4
add r0, r0, r1
mov r1, #0
bl FillWindowPixelBuffer
add r7, r7, #1
add r6, r6, #1
cmp r7, #7
blo _021E6920
mov r1, #0
str r1, [sp]
mov r2, #0xff
str r2, [sp, #4]
ldr r0, _021E6AC8 ; =0x000F0200
add r3, r5, #0
str r0, [sp, #8]
str r1, [sp, #0xc]
add r2, #0x89
add r3, #8
lsl r0, r4, #4
add r0, r3, r0
ldr r2, [r5, r2]
add r3, r1, #0
bl AddTextPrinterParameterized2
mov r2, #0x47
lsl r2, r2, #2
add r1, r2, #0
add r1, #0x7c
ldr r0, [r5, r2]
add r2, #0xc
ldrh r1, [r5, r1]
ldr r2, [r5, r2]
bl ReadMsgDataIntoString
mov r1, #0
add r0, r4, #1
lsl r7, r0, #4
add r6, r5, #0
str r1, [sp]
mov r2, #0xff
str r2, [sp, #4]
ldr r0, _021E6AC8 ; =0x000F0200
add r2, #0x29
str r0, [sp, #8]
str r1, [sp, #0xc]
add r6, #8
ldr r2, [r5, r2]
add r0, r6, r7
add r3, r1, #0
bl AddTextPrinterParameterized2
mov r2, #0x66
lsl r2, r2, #2
ldrh r0, [r5, r2]
cmp r0, #0x1d
beq _021E6A18
cmp r0, #0x20
beq _021E6A18
ldr r0, [sp, #0x20]
cmp r0, #0
bne _021E69DA
add r0, r2, #0
sub r0, #0x80
sub r2, #0x6c
ldr r0, [r5, r0]
ldr r2, [r5, r2]
mov r1, #3
bl ReadMsgDataIntoString
mov r1, #0x4a
lsl r1, r1, #2
mov r0, #0
ldr r1, [r5, r1]
add r2, r0, #0
bl FontID_String_GetWidth
add r3, r0, #0
mov r1, #0
str r1, [sp]
mov r2, #0xff
str r2, [sp, #4]
ldr r0, _021E6AC8 ; =0x000F0200
add r2, #0x2d
str r0, [sp, #8]
str r1, [sp, #0xc]
ldr r2, [r5, r2]
add r0, r6, r7
add r3, #8
bl AddTextPrinterParameterized2
b _021E6A18
_021E69DA:
cmp r0, #1
bne _021E6A18
add r0, r2, #0
sub r0, #0x80
sub r2, #0x6c
ldr r0, [r5, r0]
ldr r2, [r5, r2]
mov r1, #4
bl ReadMsgDataIntoString
mov r1, #0x4a
lsl r1, r1, #2
mov r0, #0
ldr r1, [r5, r1]
add r2, r0, #0
bl FontID_String_GetWidth
add r3, r0, #0
mov r1, #0
str r1, [sp]
mov r2, #0xff
str r2, [sp, #4]
ldr r0, _021E6AC8 ; =0x000F0200
add r2, #0x2d
str r0, [sp, #8]
str r1, [sp, #0xc]
ldr r2, [r5, r2]
add r0, r6, r7
add r3, #8
bl AddTextPrinterParameterized2
_021E6A18:
mov r2, #0x46
lsl r2, r2, #2
ldr r0, [r5, r2]
add r2, #0x10
ldr r2, [r5, r2]
mov r1, #1
bl ReadMsgDataIntoString
mov r1, #0
mov r2, #0x49
str r1, [sp]
mov r0, #1
lsl r2, r2, #2
str r0, [sp, #4]
ldr r0, [r5, r2]
add r2, #0x76
ldrb r2, [r5, r2]
mov r3, #3
bl BufferIntegerAsString
mov r2, #0x49
lsl r2, r2, #2
add r1, r2, #0
ldr r0, [r5, r2]
add r1, #8
add r2, r2, #4
ldr r1, [r5, r1]
ldr r2, [r5, r2]
bl StringExpandPlaceholders
mov r0, #0x10
str r0, [sp]
mov r2, #0xff
str r2, [sp, #4]
ldr r0, _021E6AC8 ; =0x000F0200
mov r1, #0
str r0, [sp, #8]
str r1, [sp, #0xc]
add r2, #0x2d
ldr r2, [r5, r2]
add r0, r6, r7
add r3, r1, #0
bl AddTextPrinterParameterized2
mov r2, #0x46
lsl r2, r2, #2
ldr r0, [r5, r2]
add r2, #0x10
ldr r2, [r5, r2]
mov r1, #2
bl ReadMsgDataIntoString
mov r1, #0
add r0, r4, #2
lsl r7, r0, #4
add r6, r5, #0
str r1, [sp]
mov r2, #0xff
str r2, [sp, #4]
ldr r0, _021E6AC8 ; =0x000F0200
add r2, #0x29
str r0, [sp, #8]
str r1, [sp, #0xc]
add r6, #8
ldr r2, [r5, r2]
add r0, r6, r7
add r3, r1, #0
bl AddTextPrinterParameterized2
mov r1, #0x4a
lsl r1, r1, #2
mov r0, #0
ldr r1, [r5, r1]
add r2, r0, #0
bl FontID_String_GetWidth
mov r1, #0
add r3, r0, #0
str r1, [sp]
mov r2, #0xff
str r2, [sp, #4]
ldr r0, _021E6AC8 ; =0x000F0200
b _021E6ACC
nop
_021E6AC0: .word ov64_021E6E98
_021E6AC4: .word 0x0000019B
_021E6AC8: .word 0x000F0200
_021E6ACC:
add r2, #0x8d
str r0, [sp, #8]
str r1, [sp, #0xc]
ldr r2, [r5, r2]
add r0, r6, r7
bl AddTextPrinterParameterized2
mov r0, #0
str r0, [sp, #0x14]
add r0, r5, #0
str r0, [sp, #0x30]
add r0, #8
str r5, [sp, #0x38]
add r7, r4, #3
str r0, [sp, #0x30]
_021E6AEA:
mov r1, #0x67
ldr r0, [sp, #0x38]
lsl r1, r1, #2
ldrh r1, [r0, r1]
cmp r1, #0
beq _021E6B3E
mov r0, #0x12
mov r2, #0x4a
lsl r0, r0, #4
lsl r2, r2, #2
ldr r0, [r5, r0]
ldr r2, [r5, r2]
bl ReadMsgDataIntoString
mov r1, #0x4a
lsl r1, r1, #2
mov r0, #0
ldr r1, [r5, r1]
add r2, r0, #0
bl FontID_String_GetWidth
add r3, r0, #0
mov r0, #0
str r0, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, _021E6B80 ; =0x000F0200
mov r2, #0x4a
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
lsl r2, r2, #2
lsr r6, r3, #1
mov r3, #0x38
ldr r0, [sp, #0x30]
lsl r1, r7, #4
add r0, r0, r1
ldr r2, [r5, r2]
mov r1, #0
sub r3, r3, r6
bl AddTextPrinterParameterized2
_021E6B3E:
ldr r0, [sp, #0x38]
add r7, r7, #1
add r0, r0, #2
str r0, [sp, #0x38]
ldr r0, [sp, #0x14]
add r0, r0, #1
str r0, [sp, #0x14]
cmp r0, #4
blo _021E6AEA
add r6, r5, #0
mov r7, #0
add r6, #8
_021E6B56:
lsl r0, r4, #4
str r0, [sp, #0x34]
add r0, r6, r0
bl CopyWindowPixelsToVram_TextMode
ldr r0, [sp, #0x34]
add r0, r6, r0
bl ScheduleWindowCopyToVram
add r7, r7, #1
add r4, r4, #1
cmp r7, #7
blo _021E6B56
mov r1, #0x71
lsl r1, r1, #2
ldrh r2, [r5, r1]
mov r0, #1
eor r0, r2
strh r0, [r5, r1]
add sp, #0x60
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021E6B80: .word 0x000F0200
thumb_func_end ov64_021E677C
thumb_func_start ov64_021E6B84
ov64_021E6B84: ; 0x021E6B84
push {r4, lr}
mov r1, #7
add r4, r0, #0
lsl r1, r1, #6
ldr r0, [r4, r1]
cmp r0, #0
bne _021E6BA6
sub r0, r1, #4
ldr r0, [r4, r0]
sub r1, #0x88
lsl r0, r0, #2
add r0, r4, r0
ldr r0, [r0, r1]
mov r1, #1
bl sub_0200DD10
b _021E6BC8
_021E6BA6:
cmp r0, #4
bne _021E6BBE
sub r0, r1, #4
ldr r0, [r4, r0]
sub r1, #0x88
lsl r0, r0, #2
add r0, r4, r0
ldr r0, [r0, r1]
mov r1, #0
bl sub_0200DD10
b _021E6BC8
_021E6BBE:
cmp r0, #6
bne _021E6BC8
mov r0, #0
str r0, [r4, r1]
pop {r4, pc}
_021E6BC8:
mov r0, #7
lsl r0, r0, #6
ldr r1, [r4, r0]
add r1, r1, #1
str r1, [r4, r0]
mov r0, #1
pop {r4, pc}
.balign 4, 0
thumb_func_end ov64_021E6B84
thumb_func_start ov64_021E6BD8
ov64_021E6BD8: ; 0x021E6BD8
push {r3, r4, r5, lr}
add r4, r0, #0
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
add r5, r1, #0
bl sub_0201A018
add r2, r0, #0
mov r0, #0x17
lsl r0, r0, #4
ldrb r1, [r2]
ldrb r2, [r2, #1]
ldr r0, [r4, r0]
bl sub_0200DDB8
cmp r5, #6
bne _021E6C00
mov r5, #4
b _021E6C02
_021E6C00:
mov r5, #3
_021E6C02:
mov r0, #0x17
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #0
bl sub_0200DCC0
mov r0, #0x17
lsl r0, r0, #4
ldr r0, [r4, r0]
add r1, r5, #0
bl sub_0200DC4C
pop {r3, r4, r5, pc}
thumb_func_end ov64_021E6BD8
thumb_func_start ov64_021E6C1C
ov64_021E6C1C: ; 0x021E6C1C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x68
add r5, r0, #0
mov r0, #0x66
lsl r0, r0, #2
ldrh r0, [r5, r0]
str r1, [sp, #0xc]
str r2, [sp, #0x10]
add r7, r3, #0
bl SpeciesToOverworldModelIndexOffset
add r2, r0, #0
add r0, sp, #0x30
mov r1, #0x8d
bl ReadWholeNarcMemberByIdPair
mov r0, #0x61
mov r1, #0x3b
bl NARC_New
add r4, r0, #0
add r0, sp, #0x30
ldrb r0, [r0, #1]
cmp r0, #0
beq _021E6C58
ldr r0, _021E6E18 ; =0x0000DCC2
mov r3, #0xd
str r0, [sp, #0x20]
mov r6, #8
b _021E6C60
_021E6C58:
ldr r0, _021E6E1C ; =0x0000DCC1
mov r3, #0xa
str r0, [sp, #0x20]
mov r6, #4
_021E6C60:
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
mov r1, #0x13
str r7, [sp, #8]
lsl r1, r1, #4
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r4, #0
bl sub_0200D504
add r0, r4, #0
bl NARC_dtor
ldr r4, _021E6E20 ; =ov64_021E6FD4
add r3, sp, #0x34
mov r2, #6
_021E6C84:
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
sub r2, r2, #1
bne _021E6C84
ldr r0, [r4]
str r0, [r3]
ldr r0, [sp, #0x80]
str r7, [sp, #0x48]
str r0, [sp, #0x4c]
ldr r0, [sp, #0x20]
str r0, [sp, #0x50]
str r0, [sp, #0x54]
ldr r0, [sp, #0x10]
lsl r2, r0, #2
ldr r0, _021E6E24 ; =ov64_021E6ECC
ldrsh r1, [r0, r2]
add r0, sp, #0x30
strh r1, [r0, #4]
ldr r1, _021E6E28 ; =ov64_021E6ECE
ldrsh r1, [r1, r2]
add r2, sp, #0x34
strh r1, [r0, #6]
mov r1, #0x4e
lsl r1, r1, #2
add r0, r5, r1
str r0, [sp, #0x24]
ldr r0, [sp, #0xc]
lsl r0, r0, #2
str r0, [sp, #0x28]
add r0, r1, #0
sub r0, #8
sub r1, r1, #4
ldr r0, [r5, r0]
ldr r1, [r5, r1]
bl sub_0200D734
ldr r2, [sp, #0x24]
ldr r1, [sp, #0x28]
str r0, [r2, r1]
ldr r0, [sp, #0x28]
add r1, r2, #0
ldr r0, [r1, r0]
ldr r0, [r0]
bl sub_02024B1C
mov r1, #1
bl NNS_G2dGetImageLocation
mov r1, #0x66
str r0, [sp, #0x2c]
lsl r0, r6, #5
add r4, r6, #0
lsl r1, r1, #2
mul r4, r0
ldrh r0, [r5, r1]
sub r1, #8
ldr r1, [r5, r1]
bl GetGenderBySpeciesAndPersonality
mov r1, #0x66
lsl r1, r1, #2
add r2, r0, #0
ldrh r0, [r5, r1]
add r1, r1, #3
ldrb r1, [r5, r1]
bl ov64_021E6E30
lsl r0, r0, #0x10
lsr r1, r0, #0x10
mov r0, #0x51
mov r2, #0x3b
bl AllocAndReadWholeNarcMemberByIdPair
str r0, [sp, #0x1c]
bl NNS_G3dGetTex
ldr r1, [r0, #0x14]
str r0, [sp, #0x18]
add r0, r0, r1
str r0, [sp, #0x14]
mov r0, #0x3b
add r1, r4, #0
bl AllocFromHeap
add r7, r0, #0
mov r0, #0x66
lsl r0, r0, #2
ldrh r1, [r5, r0]
ldr r0, _021E6E2C ; =0x0000FF9E
add r0, r1, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
cmp r0, #1
str r6, [sp]
bhi _021E6D8C
mov r0, #6
add r1, r4, #0
mul r1, r0
ldr r0, [sp, #0x14]
mov r2, #0
str r6, [sp, #4]
add r0, r0, r1
add r1, r6, #0
add r3, r2, #0
str r7, [sp, #8]
bl sub_020145B4
ldr r1, [sp, #0x2c]
add r0, r7, #0
add r2, r4, #0
bl ov64_021E5AAC
str r6, [sp]
mov r2, #0
str r6, [sp, #4]
mov r0, #7
add r1, r4, #0
mul r1, r0
ldr r0, [sp, #0x14]
add r3, r2, #0
add r0, r0, r1
add r1, r6, #0
str r7, [sp, #8]
bl sub_020145B4
ldr r1, [sp, #0x2c]
add r0, r7, #0
add r1, r1, r4
add r2, r4, #0
bl ov64_021E5AAC
b _021E6DCE
_021E6D8C:
ldr r0, [sp, #0x14]
lsl r1, r4, #1
mov r2, #0
str r6, [sp, #4]
add r0, r0, r1
add r1, r6, #0
add r3, r2, #0
str r7, [sp, #8]
bl sub_020145B4
ldr r1, [sp, #0x2c]
add r0, r7, #0
add r2, r4, #0
bl ov64_021E5AAC
lsl r0, r4, #1
add r1, r4, r0
ldr r0, [sp, #0x14]
str r6, [sp]
mov r2, #0
str r6, [sp, #4]
add r0, r0, r1
add r1, r6, #0
add r3, r2, #0
str r7, [sp, #8]
bl sub_020145B4
ldr r1, [sp, #0x2c]
add r0, r7, #0
add r1, r1, r4
add r2, r4, #0
bl ov64_021E5AAC
_021E6DCE:
add r0, r7, #0
bl FreeToHeap
ldr r1, [sp, #0x24]
ldr r0, [sp, #0x28]
ldr r0, [r1, r0]
ldr r0, [r0]
bl sub_02024B34
mov r1, #1
bl NNS_G2dGetImagePaletteLocation
add r6, r0, #0
ldr r0, [sp, #0x18]
ldr r1, [r0, #0x38]
add r4, r0, r1
mov r1, #0x65
lsl r1, r1, #2
ldr r0, [r5, r1]
sub r1, r1, #4
ldr r1, [r5, r1]
bl CalcShininessByOtIdAndPersonality
cmp r0, #0
beq _021E6E02
add r4, #0x20
_021E6E02:
add r0, r4, #0
add r1, r6, #0
mov r2, #0x20
bl ov64_021E5AE4
ldr r0, [sp, #0x1c]
bl FreeToHeap
add sp, #0x68
pop {r3, r4, r5, r6, r7, pc}
nop
_021E6E18: .word 0x0000DCC2
_021E6E1C: .word 0x0000DCC1
_021E6E20: .word ov64_021E6FD4
_021E6E24: .word ov64_021E6ECC
_021E6E28: .word ov64_021E6ECE
_021E6E2C: .word 0x0000FF9E
thumb_func_end ov64_021E6C1C
thumb_func_start ov64_021E6E30
ov64_021E6E30: ; 0x021E6E30
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
add r7, r2, #0
cmp r5, #0
ble _021E6E42
ldr r1, _021E6E74 ; =0x000001ED
cmp r5, r1
ble _021E6E46
_021E6E42:
mov r4, #1
b _021E6E6E
_021E6E46:
bl SpeciesToOverworldModelIndexOffset
ldr r1, _021E6E78 ; =0x00000129
add r4, r0, r1
add r0, r5, #0
bl OverworldModelLookupHasFemaleForme
cmp r0, #0
beq _021E6E60
cmp r7, #1
bne _021E6E6E
add r4, r4, #1
b _021E6E6E
_021E6E60:
add r0, r5, #0
bl OverworldModelLookupFormeCount
cmp r6, r0
ble _021E6E6C
mov r6, #0
_021E6E6C:
add r4, r4, r6
_021E6E6E:
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
nop
_021E6E74: .word 0x000001ED
_021E6E78: .word 0x00000129
thumb_func_end ov64_021E6E30
.rodata
_021E6E7C:
.byte 0x58, 0x77, 0x00, 0x17
.byte 0x58, 0x77, 0xE8, 0xFF, 0xFF, 0x00, 0x00, 0x00
ov64_021E6E88: ; 0x021E6E88
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov64_021E6E98: ; 0x021E6E98
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
ov64_021E6EA8: ; 0x021E6EA8
.word ov64_021E6270
.word ov64_021E6274
.word ov64_021E6280
.word ov64_021E6278
ov64_021E6EB8: ; 0x021E6EB8
.byte 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00
.byte 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00
ov64_021E6ECC: ; 0x021E6ECC
.byte 0x38, 0x00
ov64_021E6ECE: ; 0x021E6ECE
.byte 0x48, 0x00
.byte 0x80, 0x00, 0x48, 0x00, 0xC8, 0x00, 0x48, 0x00, 0x38, 0x00, 0x88, 0x00, 0x80, 0x00, 0x88, 0x00
.byte 0xC8, 0x00, 0x88, 0x00
ov64_021E6EE4: ; 0x021E6EE4
.byte 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov64_021E6EFC: ; 0x021E6EFC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x00
.byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov64_021E6F18: ; 0x021E6F18
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov64_021E6F34: ; 0x021E6F34
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov64_021E6F50: ; 0x021E6F50
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov64_021E6F6C: ; 0x021E6F6C
.byte 0xFE, 0x38, 0x40, 0x20
.byte 0xFE, 0x80, 0x40, 0x20, 0xFE, 0xC8, 0x40, 0x20, 0xFE, 0x38, 0x80, 0x20, 0xFE, 0x80, 0x80, 0x20
.byte 0xFE, 0xC8, 0x80, 0x20, 0xA0, 0xBF, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00
ov64_021E6F8C: ; 0x021E6F8C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
ov64_021E6FAC: ; 0x021E6FAC
.byte 0x02, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0x60, 0x00, 0x00, 0x00
ov64_021E6FD4: ; 0x021E6FD4
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov64_021E7008: ; 0x021E7008
.byte 0x38, 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01
.byte 0x80, 0x48, 0x00, 0x00, 0x01, 0x04, 0x00, 0x02, 0xC8, 0x48, 0x00, 0x00, 0x02, 0x05, 0x01, 0x02
.byte 0x38, 0x88, 0x00, 0x00, 0x00, 0x06, 0x03, 0x04, 0x80, 0x88, 0x00, 0x00, 0x01, 0x06, 0x03, 0x05
.byte 0xC8, 0x88, 0x00, 0x00, 0x02, 0x06, 0x04, 0x05, 0xE0, 0xB0, 0x00, 0x00, 0x85, 0x06, 0x06, 0x06
ov64_021E7040: ; 0x021E7040
.byte 0x04, 0x12, 0x02, 0x0E, 0x02, 0x0F, 0x01, 0x00, 0x04, 0x12, 0x07, 0x0E, 0x04, 0x0F, 0x39, 0x00
.byte 0x04, 0x12, 0x0E, 0x0E, 0x02, 0x0F, 0xA9, 0x00, 0x04, 0x01, 0x12, 0x0E, 0x02, 0x0F, 0xE1, 0x00
.byte 0x04, 0x11, 0x12, 0x0E, 0x02, 0x0F, 0x19, 0x01, 0x04, 0x01, 0x15, 0x0E, 0x02, 0x0F, 0x51, 0x01
.byte 0x04, 0x11, 0x15, 0x0E, 0x02, 0x0F, 0x89, 0x01, 0x00, 0x01, 0x00, 0x1E, 0x02, 0x0F, 0x01, 0x00
.byte 0x04, 0x12, 0x02, 0x0E, 0x02, 0x0F, 0x1D, 0x00, 0x04, 0x12, 0x07, 0x0E, 0x04, 0x0F, 0x71, 0x00
.byte 0x04, 0x12, 0x0E, 0x0E, 0x02, 0x0F, 0xC5, 0x00, 0x04, 0x01, 0x12, 0x0E, 0x02, 0x0F, 0xFD, 0x00
.byte 0x04, 0x11, 0x12, 0x0E, 0x02, 0x0F, 0x35, 0x01, 0x04, 0x01, 0x15, 0x0E, 0x02, 0x0F, 0x6D, 0x01
.byte 0x04, 0x11, 0x15, 0x0E, 0x02, 0x0F, 0xA5, 0x01, 0x00, 0x01, 0x00, 0x1E, 0x02, 0x0F, 0x3D, 0x00
.byte 0x00, 0x19, 0x15, 0x06, 0x02, 0x0F, 0x79, 0x00
ov64_021E70C8: ; 0x021E70C8
.byte 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xC0, 0xDC, 0x00, 0x00
.byte 0xC0, 0xDC, 0x00, 0x00, 0xC0, 0xDC, 0x00, 0x00, 0xC0, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov64_021E70FC: ; 0x021E70FC
.byte 0x40, 0x00, 0x40, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0xC1, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00, 0xC0, 0xDC, 0x00, 0x00, 0xC0, 0xDC, 0x00, 0x00
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x02, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0xC2, 0xDC, 0x00, 0x00, 0xC2, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00
.byte 0xC1, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC3, 0xDC, 0x00, 0x00, 0xC3, 0xDC, 0x00, 0x00
.byte 0xC1, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC4, 0xDC, 0x00, 0x00
.byte 0xC4, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xE0, 0x01
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0xC5, 0xDC, 0x00, 0x00, 0xC5, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x02, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0xC6, 0xDC, 0x00, 0x00, 0xC6, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00
.byte 0xC1, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC7, 0xDC, 0x00, 0x00, 0xC7, 0xDC, 0x00, 0x00
.byte 0xC1, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC8, 0xDC, 0x00, 0x00
.byte 0xC8, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xE0, 0x01
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0xC9, 0xDC, 0x00, 0x00, 0xC9, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x02, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0xCA, 0xDC, 0x00, 0x00, 0xCA, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00
.byte 0xC1, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xCB, 0xDC, 0x00, 0x00, 0xCB, 0xDC, 0x00, 0x00
.byte 0xC1, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xCC, 0xDC, 0x00, 0x00
.byte 0xCC, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xE0, 0x01
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0xCD, 0xDC, 0x00, 0x00, 0xCD, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00, 0xC1, 0xDC, 0x00, 0x00
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov64_021E73A0: ; 0x021E73A0
.byte 0x38, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0xCE, 0xDC, 0x00, 0x00, 0xCE, 0xDC, 0x00, 0x00, 0xC3, 0xDC, 0x00, 0x00
.byte 0xC3, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov64_021E73D4: ; 0x021E73D4
.byte 0x0C, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xCE, 0xDC, 0x00, 0x00, 0xCE, 0xDC, 0x00, 0x00
.byte 0xC3, 0xDC, 0x00, 0x00, 0xC3, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov64_021E7408: ; 0x021E7408
.byte 0xF4, 0x00, 0x68, 0x00, 0x00, 0x00, 0x01, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xCE, 0xDC, 0x00, 0x00
.byte 0xCE, 0xDC, 0x00, 0x00, 0xC3, 0xDC, 0x00, 0x00, 0xC3, 0xDC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov64_021E743C: ; 0x021E743C
.byte 0xE0, 0x00, 0xB0, 0x00
.byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0xCE, 0xDC, 0x00, 0x00, 0xCE, 0xDC, 0x00, 0x00, 0xC3, 0xDC, 0x00, 0x00, 0xC3, 0xDC, 0x00, 0x00
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
; 0x021E7470