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

4601 lines
87 KiB
ArmAsm

.include "asm/macros.inc"
.include "overlay_103.inc"
.include "global.inc"
.text
thumb_func_start ov103_021EC940
ov103_021EC940: ; 0x021EC940
push {r3, r4, r5, lr}
mov r2, #1
add r5, r0, #0
mov r0, #3
mov r1, #0x9c
lsl r2, r2, #0x10
bl CreateHeap
add r0, r5, #0
mov r1, #0x2c
mov r2, #0x9c
bl OverlayManager_CreateAndGetData
mov r1, #0
mov r2, #0x2c
add r4, r0, #0
bl MI_CpuFill8
add r0, r5, #0
bl OverlayManager_GetArgs
str r0, [r4, #8]
ldr r0, [r0]
bl Save_PlayerData_GetOptionsAddr
str r0, [r4]
ldr r0, [r4, #8]
ldr r0, [r0]
bl Save_Mailbox_Get
str r0, [r4, #4]
mov r0, #8
str r0, [r4, #0x28]
mov r0, #1
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov103_021EC940
thumb_func_start ov103_021EC988
ov103_021EC988: ; 0x021EC988
push {r4, lr}
add r4, r1, #0
bl OverlayManager_GetData
add r1, r4, #0
bl ov103_021ED2D4
cmp r0, #0
bne _021EC99E
mov r0, #1
pop {r4, pc}
_021EC99E:
mov r0, #0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021EC988
thumb_func_start ov103_021EC9A4
ov103_021EC9A4: ; 0x021EC9A4
push {r3, lr}
bl OverlayManager_FreeData
mov r0, #0x9c
bl DestroyHeap
mov r0, #1
pop {r3, pc}
thumb_func_end ov103_021EC9A4
thumb_func_start ov103_021EC9B4
ov103_021EC9B4: ; 0x021EC9B4
push {r3, lr}
ldr r0, [r0, #0xc]
ldr r0, [r0]
bl DoScheduledBgGpuUpdates
bl thunk_OamManager_ApplyAndResetBuffers
ldr r3, _021EC9D0 ; =0x027E0000
ldr r1, _021EC9D4 ; =0x00003FF8
mov r0, #1
ldr r2, [r3, r1]
orr r0, r2
str r0, [r3, r1]
pop {r3, pc}
.balign 4, 0
_021EC9D0: .word 0x027E0000
_021EC9D4: .word 0x00003FF8
thumb_func_end ov103_021EC9B4
thumb_func_start ov103_021EC9D8
ov103_021EC9D8: ; 0x021EC9D8
ldr r3, _021EC9E0 ; =GfGfx_SetBanks
ldr r0, _021EC9E4 ; =ov103_021EEC30
bx r3
nop
_021EC9E0: .word GfGfx_SetBanks
_021EC9E4: .word ov103_021EEC30
thumb_func_end ov103_021EC9D8
thumb_func_start ov103_021EC9E8
ov103_021EC9E8: ; 0x021EC9E8
push {r3, r4, r5, lr}
sub sp, #0xf0
add r4, r0, #0
mov r0, #0x9d
bl BgConfig_Alloc
ldr r1, [r4, #0xc]
add r3, sp, #0xe0
ldr r5, _021ECB98 ; =ov103_021EEB40
str r0, [r1]
add r2, r3, #0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
bl SetBothScreensModesAndDisable
ldr r5, _021ECB9C ; =ov103_021EEBC0
add r3, sp, #0xc4
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #4
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
ldr r0, [r0]
bl InitBgFromTemplate
ldr r0, [r4, #0xc]
mov r1, #4
ldr r0, [r0]
bl BgClearTilemapBufferAndCommit
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x9d
bl BG_ClearCharDataRange
ldr r5, _021ECBA0 ; =ov103_021EEBA4
add r3, sp, #0xa8
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #5
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
ldr r0, [r0]
bl InitBgFromTemplate
ldr r0, [r4, #0xc]
mov r1, #5
ldr r0, [r0]
bl BgClearTilemapBufferAndCommit
mov r0, #5
mov r1, #0x20
mov r2, #0
mov r3, #0x9d
bl BG_ClearCharDataRange
ldr r5, _021ECBA4 ; =ov103_021EEB88
add r3, sp, #0x8c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
str r0, [r3]
ldr r0, [r4, #0xc]
mov r1, #6
ldr r0, [r0]
mov r3, #0
bl InitBgFromTemplate
ldr r0, [r4, #0xc]
mov r1, #6
ldr r0, [r0]
bl BgClearTilemapBufferAndCommit
mov r0, #6
mov r1, #0x20
mov r2, #0
mov r3, #0x9d
bl BG_ClearCharDataRange
ldr r5, _021ECBA8 ; =ov103_021EEC14
add r3, sp, #0x70
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #7
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
ldr r0, [r0]
bl InitBgFromTemplate
ldr r5, _021ECBAC ; =ov103_021EEBDC
add r3, sp, #0x54
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #0
str r0, [r3]
ldr r0, [r4, #0xc]
add r3, r1, #0
ldr r0, [r0]
bl InitBgFromTemplate
ldr r0, [r4, #0xc]
mov r1, #0
ldr r0, [r0]
bl BgClearTilemapBufferAndCommit
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x9d
bl BG_ClearCharDataRange
ldr r5, _021ECBB0 ; =ov103_021EEB50
add r3, sp, #0x38
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #1
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
ldr r0, [r0]
bl InitBgFromTemplate
ldr r0, [r4, #0xc]
mov r1, #1
ldr r0, [r0]
bl BgClearTilemapBufferAndCommit
mov r0, #1
mov r1, #0x20
mov r2, #0
mov r3, #0x9d
bl BG_ClearCharDataRange
ldr r5, _021ECBB4 ; =ov103_021EEB6C
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #2
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
ldr r0, [r0]
bl InitBgFromTemplate
ldr r0, [r4, #0xc]
mov r1, #2
ldr r0, [r0]
bl BgClearTilemapBufferAndCommit
ldr r5, _021ECBB8 ; =ov103_021EEBF8
add r3, sp, #0
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
mov r1, #3
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
ldr r0, [r0]
bl InitBgFromTemplate
add sp, #0xf0
pop {r3, r4, r5, pc}
.balign 4, 0
_021ECB98: .word ov103_021EEB40
_021ECB9C: .word ov103_021EEBC0
_021ECBA0: .word ov103_021EEBA4
_021ECBA4: .word ov103_021EEB88
_021ECBA8: .word ov103_021EEC14
_021ECBAC: .word ov103_021EEBDC
_021ECBB0: .word ov103_021EEB50
_021ECBB4: .word ov103_021EEB6C
_021ECBB8: .word ov103_021EEBF8
thumb_func_end ov103_021EC9E8
thumb_func_start ov103_021ECBBC
ov103_021ECBBC: ; 0x021ECBBC
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0xc]
mov r1, #3
ldr r0, [r0]
bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #2
ldr r0, [r0]
bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #1
ldr r0, [r0]
bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #0
ldr r0, [r0]
bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #7
ldr r0, [r0]
bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #6
ldr r0, [r0]
bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #5
ldr r0, [r0]
bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #4
ldr r0, [r0]
bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
ldr r0, [r0]
bl FreeToHeap
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021ECBBC
thumb_func_start ov103_021ECC1C
ov103_021ECC1C: ; 0x021ECC1C
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
mov r0, #0xfc
mov r1, #0x9d
bl NARC_New
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
mov r1, #1
str r1, [sp, #8]
mov r1, #0x9d
str r1, [sp, #0xc]
ldr r2, [r5, #0xc]
mov r1, #5
ldr r2, [r2]
mov r3, #7
add r4, r0, #0
bl GfGfxLoader_LoadCharDataFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
mov r0, #0x9d
str r0, [sp, #0xc]
ldr r2, [r5, #0xc]
add r0, r4, #0
ldr r2, [r2]
mov r1, #4
mov r3, #7
bl GfGfxLoader_LoadScrnDataFromOpenNarc
mov r3, #0
str r3, [sp]
mov r0, #0x9d
str r0, [sp, #4]
add r0, r4, #0
mov r1, #6
mov r2, #4
bl GfGfxLoader_GXLoadPalFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r1, #1
str r1, [sp, #8]
mov r0, #0x9d
str r0, [sp, #0xc]
ldr r2, [r5, #0xc]
add r0, r4, #0
ldr r2, [r2]
mov r3, #3
bl GfGfxLoader_LoadCharDataFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r1, #1
str r1, [sp, #8]
mov r0, #0x9d
str r0, [sp, #0xc]
ldr r2, [r5, #0xc]
add r0, r4, #0
ldr r2, [r2]
add r3, r1, #0
bl GfGfxLoader_LoadCharDataFromOpenNarc
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
mov r0, #1
str r0, [sp, #8]
mov r0, #0x9d
str r0, [sp, #0xc]
ldr r2, [r5, #0xc]
add r0, r4, #0
ldr r2, [r2]
mov r3, #3
bl GfGfxLoader_LoadScrnDataFromOpenNarc
mov r2, #0
str r2, [sp]
mov r0, #0x9d
str r0, [sp, #4]
add r0, r4, #0
mov r1, #2
add r3, r2, #0
bl GfGfxLoader_GXLoadPalFromOpenNarc
mov r0, #0x9d
mov r1, #1
str r0, [sp]
add r0, r4, #0
add r2, r1, #0
add r3, sp, #0x10
bl GfGfxLoader_GetCharDataFromOpenNarc
add r7, r0, #0
ldr r0, [sp, #0x10]
ldr r1, [r5, #0xc]
ldr r6, [r0, #0x14]
add r1, #8
add r0, r6, #0
add r0, #0xe0
mov r2, #0x20
bl MIi_CpuCopy32
mov r0, #0x16
ldr r1, [r5, #0xc]
lsl r0, r0, #4
add r0, r6, r0
add r1, #0x28
mov r2, #0x20
bl MIi_CpuCopy32
add r0, r7, #0
bl FreeToHeap
add r0, r4, #0
bl NARC_Delete
add sp, #0x14
pop {r4, r5, r6, r7, pc}
thumb_func_end ov103_021ECC1C
thumb_func_start ov103_021ECD18
ov103_021ECD18: ; 0x021ECD18
push {r4, lr}
sub sp, #8
ldr r4, [r0, #0xc]
ldr r0, [r0]
bl Options_GetFrame
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp]
mov r0, #0x9d
str r0, [sp, #4]
ldr r0, [r4]
ldr r2, _021ECD64 ; =0x000003E2
mov r1, #0
mov r3, #0xd
bl LoadUserFrameGfx2
mov r1, #7
mov r0, #0
lsl r1, r1, #6
mov r2, #0x9d
bl LoadFontPal1
mov r1, #0x1e
mov r0, #0
lsl r1, r1, #4
mov r2, #0x9d
bl LoadFontPal0
mov r1, #0x1e
mov r0, #4
lsl r1, r1, #4
mov r2, #0x9d
bl LoadFontPal0
add sp, #8
pop {r4, pc}
nop
_021ECD64: .word 0x000003E2
thumb_func_end ov103_021ECD18
thumb_func_start ov103_021ECD68
ov103_021ECD68: ; 0x021ECD68
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, [r5, #0xc]
mov r1, #2
ldr r0, [r0]
mov r2, #0xb
mov r3, #0x9d
bl sub_0201956C
ldr r1, [r5, #0xc]
mov r4, #0
str r0, [r1, #4]
mov r6, #4
mov r7, #2
_021ECD84:
str r6, [sp]
ldr r0, [r5, #0xc]
add r1, r4, #0
ldr r0, [r0, #4]
add r2, r7, #0
mov r3, #0xe
bl sub_020195F4
add r4, r4, #1
cmp r4, #0xa
blo _021ECD84
mov r0, #4
str r0, [sp]
ldr r0, [r5, #0xc]
mov r1, #0xa
ldr r0, [r0, #4]
mov r2, #1
mov r3, #0xe
bl sub_020195F4
mov r0, #1
str r0, [sp]
ldr r0, [r5, #0xc]
mov r1, #0
ldr r0, [r0, #4]
mov r2, #0xfc
mov r3, #3
bl sub_02019688
ldr r0, [r5, #0xc]
mov r1, #0
ldr r0, [r0, #4]
bl sub_02019B08
add r6, r0, #0
mov r4, #1
mov r7, #0x70
_021ECDCE:
ldr r0, [r5, #0xc]
add r1, r4, #0
ldr r0, [r0, #4]
bl sub_02019B08
add r1, r0, #0
add r0, r6, #0
add r2, r7, #0
bl MI_CpuCopy8
add r4, r4, #1
cmp r4, #0xa
bls _021ECDCE
mov r4, #0
_021ECDEA:
lsl r2, r4, #0x1f
ldr r0, [r5, #0xc]
lsr r2, r2, #0x1b
add r2, r2, #1
lsr r3, r4, #1
lsl r2, r2, #0x18
lsl r3, r3, #0x1a
ldr r0, [r0, #4]
add r1, r4, #0
asr r2, r2, #0x18
asr r3, r3, #0x18
bl sub_020196E8
add r4, r4, #1
cmp r4, #0xa
blo _021ECDEA
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov103_021ECD68
thumb_func_start ov103_021ECE0C
ov103_021ECE0C: ; 0x021ECE0C
ldr r0, [r0, #0xc]
ldr r3, _021ECE14 ; =sub_020195C0
ldr r0, [r0, #4]
bx r3
.balign 4, 0
_021ECE14: .word sub_020195C0
thumb_func_end ov103_021ECE0C
thumb_func_start ov103_021ECE18
ov103_021ECE18: ; 0x021ECE18
push {r4, lr}
add r4, r0, #0
mov r0, #0
mov r1, #0x1b
mov r2, #0xe8
mov r3, #0x9d
bl NewMsgDataFromNarc
mov r1, #0x8a
lsl r1, r1, #2
str r0, [r4, r1]
mov r0, #0x9d
bl MessageFormat_New
mov r1, #0x8b
lsl r1, r1, #2
str r0, [r4, r1]
mov r0, #1
lsl r0, r0, #0xa
mov r1, #0x9d
bl String_New
mov r1, #0x23
lsl r1, r1, #4
str r0, [r4, r1]
mov r0, #1
bl sub_02002B8C
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021ECE18
thumb_func_start ov103_021ECE54
ov103_021ECE54: ; 0x021ECE54
push {r4, lr}
add r4, r0, #0
mov r0, #0
bl sub_02002B8C
mov r0, #0x23
lsl r0, r0, #4
ldr r0, [r4, r0]
bl String_Delete
mov r0, #0x8b
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MessageFormat_Delete
mov r0, #0x8a
lsl r0, r0, #2
ldr r0, [r4, r0]
bl DestroyMsgData
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021ECE54
thumb_func_start ov103_021ECE80
ov103_021ECE80: ; 0x021ECE80
push {r4, lr}
add r4, r0, #0
mov r0, #0x9d
bl YesNoPrompt_Create
mov r1, #0x8e
ldr r2, [r4, #0xc]
lsl r1, r1, #2
str r0, [r2, r1]
pop {r4, pc}
thumb_func_end ov103_021ECE80
thumb_func_start ov103_021ECE94
ov103_021ECE94: ; 0x021ECE94
ldr r1, [r0, #0xc]
mov r0, #0x8e
lsl r0, r0, #2
ldr r3, _021ECEA0 ; =YesNoPrompt_Destroy
ldr r0, [r1, r0]
bx r3
.balign 4, 0
_021ECEA0: .word YesNoPrompt_Destroy
thumb_func_end ov103_021ECE94
thumb_func_start ov103_021ECEA4
ov103_021ECEA4: ; 0x021ECEA4
push {r3, r4, lr}
sub sp, #0x14
ldr r1, [r0, #0xc]
ldr r2, _021ECEE8 ; =0x000003A6
ldr r1, [r1]
mov r4, #0xa
str r1, [sp]
mov r1, #0
str r2, [sp, #8]
str r1, [sp, #4]
str r4, [sp, #0xc]
mov r2, #0x19
add r3, sp, #0
strb r2, [r3, #0x10]
strb r4, [r3, #0x11]
ldrb r4, [r3, #0x12]
mov r2, #0xf
bic r4, r2
strb r4, [r3, #0x12]
ldrb r4, [r3, #0x12]
mov r2, #0xf0
bic r4, r2
strb r4, [r3, #0x12]
strb r1, [r3, #0x13]
ldr r1, [r0, #0xc]
mov r0, #0x8e
lsl r0, r0, #2
ldr r0, [r1, r0]
add r1, sp, #0
bl YesNoPrompt_InitFromTemplate
add sp, #0x14
pop {r3, r4, pc}
nop
_021ECEE8: .word 0x000003A6
thumb_func_end ov103_021ECEA4
thumb_func_start ov103_021ECEEC
ov103_021ECEEC: ; 0x021ECEEC
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
mov r0, #0x9d
mov r1, #0
bl sub_02018424
mov r1, #9
ldr r2, [r5, #0xc]
lsl r1, r1, #6
str r0, [r2, r1]
add r0, r5, #0
bl ov103_021ED2B8
mov r1, #0x9d
add r6, r0, #0
bl ListMenuItems_New
mov r1, #0x92
lsl r1, r1, #2
ldr r2, [r5, #0xc]
add r7, r1, #0
str r0, [r2, r1]
mov r4, #0
sub r7, #0x20
_021ECF1C:
cmp r6, #2
bne _021ECF28
cmp r4, #2
beq _021ECF3A
cmp r4, #1
beq _021ECF3A
_021ECF28:
mov r0, #0x92
ldr r1, [r5, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
ldr r1, [r1, r7]
add r2, r4, #5
add r3, r4, #0
bl ListMenuItems_AppendFromMsgData
_021ECF3A:
add r0, r4, #1
lsl r0, r0, #0x10
lsr r4, r0, #0x10
cmp r4, #4
blo _021ECF1C
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov103_021ECEEC
thumb_func_start ov103_021ECF48
ov103_021ECF48: ; 0x021ECF48
push {r4, lr}
add r4, r0, #0
mov r0, #0x92
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl ListMenuItems_Delete
mov r0, #9
ldr r1, [r4, #0xc]
lsl r0, r0, #6
ldr r0, [r1, r0]
bl sub_02018474
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021ECF48
thumb_func_start ov103_021ECF68
ov103_021ECF68: ; 0x021ECF68
push {r3, r4, lr}
sub sp, #0x24
ldr r2, _021ECFF8 ; =_021EEB34
add r1, sp, #0xc
ldrh r3, [r2]
add r4, r0, #0
strh r3, [r1]
ldrh r3, [r2, #2]
strh r3, [r1, #2]
ldrh r3, [r2, #4]
strh r3, [r1, #4]
ldrh r3, [r2, #6]
strh r3, [r1, #6]
ldrh r3, [r2, #8]
ldrh r2, [r2, #0xa]
strh r3, [r1, #8]
strh r2, [r1, #0xa]
mov r1, #0x92
ldr r2, [r4, #0xc]
lsl r1, r1, #2
ldr r1, [r2, r1]
str r1, [sp, #0x18]
ldr r1, [r4, #0xc]
ldr r1, [r1]
str r1, [sp, #0x1c]
bl ov103_021ED2B8
add r1, sp, #0xc
strb r0, [r1, #0x14]
ldrb r0, [r1, #0x14]
cmp r0, #4
bne _021ECFD0
mov r0, #5
str r0, [sp]
mov r0, #0xb
str r0, [sp, #4]
mov r2, #0
str r2, [sp, #8]
mov r0, #9
ldr r1, [r4, #0xc]
lsl r0, r0, #6
ldr r0, [r1, r0]
add r1, sp, #0xc
mov r3, #0x12
bl sub_020185FC
mov r1, #0x91
ldr r2, [r4, #0xc]
lsl r1, r1, #2
str r0, [r2, r1]
add sp, #0x24
pop {r3, r4, pc}
_021ECFD0:
mov r0, #0xb
str r0, [sp]
str r0, [sp, #4]
mov r2, #0
str r2, [sp, #8]
mov r0, #9
ldr r1, [r4, #0xc]
lsl r0, r0, #6
ldr r0, [r1, r0]
add r1, sp, #0xc
mov r3, #0x12
bl sub_020185FC
ldr r2, [r4, #0xc]
mov r1, #0x91
lsl r1, r1, #2
str r0, [r2, r1]
add sp, #0x24
pop {r3, r4, pc}
nop
_021ECFF8: .word _021EEB34
thumb_func_end ov103_021ECF68
thumb_func_start ov103_021ECFFC
ov103_021ECFFC: ; 0x021ECFFC
ldr r1, [r0, #0xc]
mov r0, #0x91
lsl r0, r0, #2
ldr r3, _021ED008 ; =sub_02018680
ldr r0, [r1, r0]
bx r3
.balign 4, 0
_021ED008: .word sub_02018680
thumb_func_end ov103_021ECFFC
thumb_func_start ov103_021ED00C
ov103_021ED00C: ; 0x021ED00C
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
mov r0, #0x2e
mov r4, #0
ldr r1, [r5, #0xc]
lsl r0, r0, #4
strh r4, [r1, r0]
add r6, r4, #0
mov r7, #0xff
_021ED01E:
ldr r0, [r5, #0xc]
add r2, r4, #0
add r1, r0, r4
mov r0, #0xb3
lsl r0, r0, #2
strb r7, [r1, r0]
ldr r0, [r5, #4]
mov r1, #0
mov r3, #0x9d
bl Mailbox_AllocAndFetchMailI
ldr r1, [r5, #0xc]
add r2, r1, r6
mov r1, #0x9f
lsl r1, r1, #2
str r0, [r2, r1]
ldr r0, [r5, #0xc]
add r1, r0, r6
mov r0, #0x9f
lsl r0, r0, #2
ldr r0, [r1, r0]
bl Mail_TypeIsValid
cmp r0, #1
bne _021ED070
mov r0, #0x2e
ldr r1, [r5, #0xc]
lsl r0, r0, #4
ldrh r0, [r1, r0]
add r1, r1, r0
mov r0, #0xb3
lsl r0, r0, #2
strb r4, [r1, r0]
mov r1, #0x2e
ldr r0, [r5, #0xc]
lsl r1, r1, #4
ldrh r1, [r0, r1]
add r2, r1, #1
mov r1, #0x2e
lsl r1, r1, #4
strh r2, [r0, r1]
_021ED070:
add r4, r4, #1
add r6, r6, #4
cmp r4, #0x14
blo _021ED01E
mov r0, #0x2e
ldr r4, [r5, #0xc]
lsl r0, r0, #4
ldrh r1, [r4, r0]
cmp r1, #0
bne _021ED08C
mov r1, #0
add r0, r0, #2
strh r1, [r4, r0]
pop {r3, r4, r5, r6, r7, pc}
_021ED08C:
sub r0, r1, #1
mov r1, #0xa
bl _s32_div_f
ldr r1, _021ED09C ; =0x000002E2
strh r0, [r4, r1]
pop {r3, r4, r5, r6, r7, pc}
nop
_021ED09C: .word 0x000002E2
thumb_func_end ov103_021ED00C
thumb_func_start ov103_021ED0A0
ov103_021ED0A0: ; 0x021ED0A0
push {r3, r4, r5, r6, r7, lr}
mov r4, #0
mov r7, #0x9f
add r6, r0, #0
add r5, r4, #0
lsl r7, r7, #2
_021ED0AC:
ldr r0, [r6, #0xc]
add r0, r0, r5
ldr r0, [r0, r7]
bl FreeToHeap
add r4, r4, #1
add r5, r5, #4
cmp r4, #0x14
blo _021ED0AC
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov103_021ED0A0
thumb_func_start ov103_021ED0C0
ov103_021ED0C0: ; 0x021ED0C0
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldrh r1, [r5, #0x1c]
mov r0, #0xa
mov r4, #0
mul r0, r1
lsl r0, r0, #0x10
lsr r2, r0, #0x10
mov r0, #0xb3
ldr r1, [r5, #0xc]
lsl r0, r0, #2
add r0, r1, r0
add r0, r0, r2
str r0, [sp]
lsl r0, r2, #0x10
lsr r7, r0, #0x10
add r6, r4, #0
_021ED0E2:
ldr r0, [sp]
ldrb r3, [r0, r6]
cmp r3, #0xff
bne _021ED0F6
ldr r0, [r5, #0xc]
add r1, r4, #0
ldr r0, [r0, #4]
bl sub_0201980C
b _021ED10A
_021ED0F6:
add r0, r5, #0
add r1, r4, #0
add r2, r7, #0
bl ov103_021EE468
ldr r0, [r5, #0xc]
add r1, r4, #0
ldr r0, [r0, #4]
bl sub_020197F4
_021ED10A:
add r0, r7, #1
lsl r0, r0, #0x10
lsr r7, r0, #0x10
add r0, r4, #1
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r6, #1
lsl r0, r0, #0x10
lsr r6, r0, #0x10
cmp r6, #0xa
blo _021ED0E2
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ov103_021ED0C0
thumb_func_start ov103_021ED124
ov103_021ED124: ; 0x021ED124
push {r4, lr}
add r4, r0, #0
ldrb r3, [r4, #0x1f]
mov r1, #0xa
mov r2, #0x14
bl ov103_021EE468
ldr r0, [r4, #0xc]
mov r1, #0xa
ldr r0, [r0, #4]
mov r2, #4
mov r3, #7
bl sub_020196E8
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021ED124
thumb_func_start ov103_021ED144
ov103_021ED144: ; 0x021ED144
push {r4, r5, lr}
sub sp, #0xc
add r5, r0, #0
mov r1, #0xb9
ldr r0, [r5, #0xc]
lsl r1, r1, #2
add r4, r0, r1
ldrb r2, [r4, #2]
cmp r2, #0
beq _021ED162
cmp r2, #1
beq _021ED1B8
cmp r2, #2
beq _021ED222
b _021ED234
_021ED162:
ldrb r2, [r4]
lsl r3, r2, #0x1f
lsr r3, r3, #0x1f
bne _021ED182
lsl r2, r2, #0x18
lsr r2, r2, #0x19
lsl r2, r2, #2
add r0, r0, r2
sub r1, #0x8c
ldr r0, [r0, r1]
ldrb r1, [r4, #1]
lsl r1, r1, #0x1c
lsr r1, r1, #0x1c
bl UnkImageStruct_SetSpritePalIndex
b _021ED1B0
_021ED182:
ldrb r1, [r4, #6]
str r1, [sp]
ldrb r1, [r4, #7]
str r1, [sp, #4]
ldrb r1, [r4, #1]
lsl r1, r1, #0x1c
lsr r1, r1, #0x1c
str r1, [sp, #8]
ldrb r1, [r4]
ldrb r2, [r4, #4]
ldrb r3, [r4, #5]
lsl r1, r1, #0x18
ldr r0, [r0]
lsr r1, r1, #0x19
bl BgTilemapRectChangePalette
ldrb r1, [r4]
ldr r0, [r5, #0xc]
lsl r1, r1, #0x18
ldr r0, [r0]
lsr r1, r1, #0x19
bl ScheduleBgTilemapBufferTransfer
_021ED1B0:
ldrb r0, [r4, #2]
add r0, r0, #1
strb r0, [r4, #2]
b _021ED234
_021ED1B8:
ldrb r0, [r4, #3]
add r0, r0, #1
strb r0, [r4, #3]
ldrb r0, [r4, #3]
cmp r0, #4
bne _021ED234
ldrb r0, [r4]
lsl r2, r0, #0x1f
lsr r2, r2, #0x1f
bne _021ED1E6
lsl r0, r0, #0x18
lsr r0, r0, #0x19
ldr r2, [r5, #0xc]
lsl r0, r0, #2
add r0, r2, r0
sub r1, #0x8c
ldr r0, [r0, r1]
ldrb r1, [r4, #1]
lsl r1, r1, #0x18
lsr r1, r1, #0x1c
bl UnkImageStruct_SetSpritePalIndex
b _021ED216
_021ED1E6:
ldrb r0, [r4, #6]
str r0, [sp]
ldrb r0, [r4, #7]
str r0, [sp, #4]
ldrb r0, [r4, #1]
lsl r0, r0, #0x18
lsr r0, r0, #0x1c
str r0, [sp, #8]
ldrb r1, [r4]
ldr r0, [r5, #0xc]
ldrb r2, [r4, #4]
lsl r1, r1, #0x18
ldrb r3, [r4, #5]
ldr r0, [r0]
lsr r1, r1, #0x19
bl BgTilemapRectChangePalette
ldrb r1, [r4]
ldr r0, [r5, #0xc]
lsl r1, r1, #0x18
ldr r0, [r0]
lsr r1, r1, #0x19
bl ScheduleBgTilemapBufferTransfer
_021ED216:
mov r0, #0
strb r0, [r4, #3]
ldrb r0, [r4, #2]
add r0, r0, #1
strb r0, [r4, #2]
b _021ED234
_021ED222:
ldrb r0, [r4, #3]
add r0, r0, #1
strb r0, [r4, #3]
ldrb r0, [r4, #3]
cmp r0, #2
bne _021ED234
add sp, #0xc
mov r0, #0
pop {r4, r5, pc}
_021ED234:
mov r0, #1
add sp, #0xc
pop {r4, r5, pc}
.balign 4, 0
thumb_func_end ov103_021ED144
thumb_func_start ov103_021ED23C
ov103_021ED23C: ; 0x021ED23C
push {r4, r5, r6, lr}
sub sp, #0x10
add r5, r0, #0
mov r0, #0x4f
mov r1, #0x9d
bl NARC_New
add r4, r0, #0
ldrb r0, [r5, #0x1f]
ldr r1, [r5, #0xc]
lsl r0, r0, #2
add r1, r1, r0
mov r0, #0x9f
lsl r0, r0, #2
ldr r0, [r1, r0]
bl Mail_GetType
add r6, r0, #0
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x9d
str r0, [sp, #0xc]
ldr r2, [r5, #0xc]
add r1, r6, #0
ldr r2, [r2]
add r0, r4, #0
add r1, #0xc
mov r3, #5
bl GfGfxLoader_LoadCharDataFromOpenNarc
mov r0, #0x40
str r0, [sp]
mov r0, #0x9d
str r0, [sp, #4]
add r0, r4, #0
add r1, r6, #0
mov r2, #4
mov r3, #0
bl GfGfxLoader_GXLoadPalFromOpenNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
mov r0, #0x9d
str r0, [sp, #0xc]
ldr r2, [r5, #0xc]
add r6, #0x18
ldr r2, [r2]
add r0, r4, #0
add r1, r6, #0
mov r3, #5
bl GfGfxLoader_LoadScrnDataFromOpenNarc
add r0, r4, #0
bl NARC_Delete
add sp, #0x10
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov103_021ED23C
thumb_func_start ov103_021ED2B8
ov103_021ED2B8: ; 0x021ED2B8
push {r3, lr}
ldr r0, [r0, #8]
ldr r0, [r0]
bl SaveArray_Party_Get
bl Party_GetCount
cmp r0, #0
ble _021ED2CE
mov r0, #4
pop {r3, pc}
_021ED2CE:
mov r0, #2
pop {r3, pc}
.balign 4, 0
thumb_func_end ov103_021ED2B8
thumb_func_start ov103_021ED2D4
ov103_021ED2D4: ; 0x021ED2D4
push {r3, r4, r5, lr}
add r4, r1, #0
ldr r1, [r4]
add r5, r0, #0
lsl r2, r1, #2
ldr r1, _021ED310 ; =ov103_021EECA8
ldr r1, [r1, r2]
blx r1
str r0, [r4]
cmp r0, #0x19
bne _021ED2EE
mov r0, #0
pop {r3, r4, r5, pc}
_021ED2EE:
ldr r0, [r5, #0xc]
cmp r0, #0
beq _021ED30C
ldr r0, [r0, #4]
bl sub_02019934
ldr r0, [r5, #0xc]
bl ov103_021EDF68
mov r0, #0x95
ldr r1, [r5, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_0200D020
_021ED30C:
mov r0, #1
pop {r3, r4, r5, pc}
.balign 4, 0
_021ED310: .word ov103_021EECA8
thumb_func_end ov103_021ED2D4
thumb_func_start ov103_021ED314
ov103_021ED314: ; 0x021ED314
push {r4, lr}
add r4, r0, #0
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
bl HBlankInterruptDisable
mov r0, #0
bl GfGfx_EngineASetPlanes
mov r0, #0
bl GfGfx_EngineBSetPlanes
ldr r0, _021ED3D4 ; =0x04000050
mov r1, #0
strh r1, [r0]
ldr r0, _021ED3D8 ; =0x04001050
strh r1, [r0]
bl sub_020210BC
mov r0, #4
bl sub_02021148
ldr r2, _021ED3DC ; =0x04000304
ldr r0, _021ED3E0 ; =0xFFFF7FFF
ldrh r1, [r2]
and r0, r1
strh r0, [r2]
mov r0, #3
mov r1, #0x9d
lsl r2, r0, #0x11
bl CreateHeap
mov r1, #0x2f
mov r0, #0x9d
lsl r1, r1, #4
bl AllocFromHeap
mov r2, #0x2f
mov r1, #0
lsl r2, r2, #4
str r0, [r4, #0xc]
bl MI_CpuFill8
add r0, r4, #0
bl ov103_021ED00C
bl ov103_021EC9D8
add r0, r4, #0
bl ov103_021EC9E8
add r0, r4, #0
bl ov103_021ECC1C
add r0, r4, #0
bl ov103_021ECD18
add r0, r4, #0
bl ov103_021EE390
add r0, r4, #0
bl ov103_021ECD68
add r0, r4, #0
bl ov103_021EDEA8
add r0, r4, #0
bl ov103_021ECE80
add r0, r4, #0
bl ov103_021EEA48
ldr r0, [r4, #0xc]
bl ov103_021ECE18
add r0, r4, #0
bl ov103_021EE550
add r0, r4, #0
bl ov103_021EE644
add r0, r4, #0
bl ov103_021ED0C0
add r0, r4, #0
bl ov103_021ECEEC
ldr r0, _021ED3E4 ; =ov103_021EC9B4
add r1, r4, #0
bl Main_SetVBlankIntrCB
ldr r0, [r4, #0x28]
pop {r4, pc}
nop
_021ED3D4: .word 0x04000050
_021ED3D8: .word 0x04001050
_021ED3DC: .word 0x04000304
_021ED3E0: .word 0xFFFF7FFF
_021ED3E4: .word ov103_021EC9B4
thumb_func_end ov103_021ED314
thumb_func_start ov103_021ED3E8
ov103_021ED3E8: ; 0x021ED3E8
push {r4, lr}
add r4, r0, #0
mov r0, #0
add r1, r0, #0
bl Main_SetVBlankIntrCB
add r0, r4, #0
bl ov103_021ECF48
ldr r0, [r4, #0xc]
bl ov103_021ECE54
add r0, r4, #0
bl ov103_021EEAA0
add r0, r4, #0
bl ov103_021ECE94
add r0, r4, #0
bl ov103_021EDF50
add r0, r4, #0
bl ov103_021ECE0C
add r0, r4, #0
bl ov103_021EE3C0
add r0, r4, #0
bl ov103_021ECBBC
add r0, r4, #0
bl ov103_021ED0A0
bl sub_02021238
ldr r1, _021ED458 ; =0x04000050
mov r0, #0
strh r0, [r1]
ldr r1, _021ED45C ; =0x04001050
strh r0, [r1]
bl GfGfx_EngineASetPlanes
mov r0, #0
bl GfGfx_EngineBSetPlanes
ldr r0, [r4, #0xc]
bl FreeToHeap
mov r0, #0
str r0, [r4, #0xc]
mov r0, #0x9d
bl DestroyHeap
ldr r0, [r4, #0x28]
pop {r4, pc}
nop
_021ED458: .word 0x04000050
_021ED45C: .word 0x04001050
thumb_func_end ov103_021ED3E8
thumb_func_start ov103_021ED460
ov103_021ED460: ; 0x021ED460
push {r4, lr}
add r4, r0, #0
bl IsPaletteFadeFinished
cmp r0, #1
bne _021ED476
mov r0, #0xbb
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
pop {r4, pc}
_021ED476:
mov r0, #2
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021ED460
thumb_func_start ov103_021ED47C
ov103_021ED47C: ; 0x021ED47C
push {r4, lr}
add r4, r0, #0
mov r0, #0x8d
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldrb r0, [r1, r0]
bl TextPrinterCheckActive
cmp r0, #0
bne _021ED4C4
ldr r1, [r4, #0xc]
ldr r0, _021ED4C8 ; =0x00000235
ldrb r0, [r1, r0]
cmp r0, #0
bne _021ED49E
ldr r0, [r4, #0x28]
pop {r4, pc}
_021ED49E:
bl System_GetTouchNew
cmp r0, #1
bne _021ED4B0
ldr r0, _021ED4CC ; =0x000005DC
bl PlaySE
ldr r0, [r4, #0x28]
pop {r4, pc}
_021ED4B0:
ldr r0, _021ED4D0 ; =gSystem
ldr r1, [r0, #0x48]
mov r0, #3
tst r0, r1
beq _021ED4C4
ldr r0, _021ED4CC ; =0x000005DC
bl PlaySE
ldr r0, [r4, #0x28]
pop {r4, pc}
_021ED4C4:
mov r0, #3
pop {r4, pc}
.balign 4, 0
_021ED4C8: .word 0x00000235
_021ED4CC: .word 0x000005DC
_021ED4D0: .word gSystem
thumb_func_end ov103_021ED47C
thumb_func_start ov103_021ED4D4
ov103_021ED4D4: ; 0x021ED4D4
push {r4, lr}
add r4, r0, #0
mov r0, #0x8e
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl YesNoPrompt_HandleInput
cmp r0, #1
beq _021ED4EE
cmp r0, #2
beq _021ED50E
b _021ED52E
_021ED4EE:
mov r0, #0x8e
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020169CC
mov r1, #0x8f
ldr r2, [r4, #0xc]
lsl r1, r1, #2
ldr r1, [r2, r1]
add r0, r4, #0
lsl r2, r1, #3
ldr r1, _021ED534 ; =ov103_021EEC68
ldr r1, [r1, r2]
blx r1
pop {r4, pc}
_021ED50E:
mov r0, #0x8e
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020169CC
mov r1, #0x8f
ldr r2, [r4, #0xc]
lsl r1, r1, #2
ldr r1, [r2, r1]
add r0, r4, #0
lsl r2, r1, #3
ldr r1, _021ED538 ; =ov103_021EEC68 + 4
ldr r1, [r1, r2]
blx r1
pop {r4, pc}
_021ED52E:
mov r0, #4
pop {r4, pc}
nop
_021ED534: .word ov103_021EEC68
_021ED538: .word ov103_021EEC68 + 4
thumb_func_end ov103_021ED4D4
thumb_func_start ov103_021ED53C
ov103_021ED53C: ; 0x021ED53C
push {r4, lr}
add r4, r0, #0
bl ov103_021ED144
cmp r0, #0
bne _021ED54C
ldr r0, [r4, #0x28]
pop {r4, pc}
_021ED54C:
mov r0, #5
pop {r4, pc}
thumb_func_end ov103_021ED53C
thumb_func_start ov103_021ED550
ov103_021ED550: ; 0x021ED550
push {r3, lr}
ldr r2, [r0, #0x18]
mov r1, #0xc
add r3, r2, #0
mul r3, r1
ldr r1, _021ED564 ; =ov103_021EEC78
ldr r1, [r1, r3]
blx r1
mov r0, #7
pop {r3, pc}
.balign 4, 0
_021ED564: .word ov103_021EEC78
thumb_func_end ov103_021ED550
thumb_func_start ov103_021ED568
ov103_021ED568: ; 0x021ED568
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x10]
bl OverlayManager_Run
cmp r0, #0
bne _021ED57A
mov r0, #7
pop {r4, pc}
_021ED57A:
ldr r0, [r4, #0x10]
bl OverlayManager_Delete
ldr r2, [r4, #0x18]
mov r1, #0xc
add r3, r2, #0
mul r3, r1
ldr r1, _021ED5A0 ; =ov103_021EEC78 + 4
add r0, r4, #0
ldr r1, [r1, r3]
blx r1
str r0, [r4, #0x28]
ldr r1, [r4, #0x18]
mov r0, #0xc
add r2, r1, #0
mul r2, r0
ldr r0, _021ED5A4 ; =ov103_021EEC78 + 8
ldr r0, [r0, r2]
pop {r4, pc}
.balign 4, 0
_021ED5A0: .word ov103_021EEC78 + 4
_021ED5A4: .word ov103_021EEC78 + 8
thumb_func_end ov103_021ED568
thumb_func_start ov103_021ED5A8
ov103_021ED5A8: ; 0x021ED5A8
ldr r3, _021ED5B0 ; =ov103_021EDA14
mov r1, #9
bx r3
nop
_021ED5B0: .word ov103_021EDA14
thumb_func_end ov103_021ED5A8
thumb_func_start ov103_021ED5B4
ov103_021ED5B4: ; 0x021ED5B4
push {r3, r4, r5, lr}
add r4, r0, #0
bl ov103_021EEA24
cmp r0, #0
beq _021ED5C6
cmp r0, #1
beq _021ED5E6
b _021ED60C
_021ED5C6:
ldrh r0, [r4, #0x1c]
cmp r0, #0
beq _021ED5E2
sub r0, r0, #1
strh r0, [r4, #0x1c]
ldr r0, _021ED740 ; =0x000005DC
bl PlaySE
add r0, r4, #0
mov r1, #0
mov r2, #0xb
bl ov103_021EDB18
pop {r3, r4, r5, pc}
_021ED5E2:
mov r0, #9
pop {r3, r4, r5, pc}
_021ED5E6:
ldr r1, [r4, #0xc]
ldr r0, _021ED744 ; =0x000002E2
ldrh r2, [r4, #0x1c]
ldrh r0, [r1, r0]
cmp r2, r0
beq _021ED608
add r0, r2, #1
strh r0, [r4, #0x1c]
ldr r0, _021ED740 ; =0x000005DC
bl PlaySE
add r0, r4, #0
mov r1, #1
mov r2, #0xb
bl ov103_021EDB18
pop {r3, r4, r5, pc}
_021ED608:
mov r0, #9
pop {r3, r4, r5, pc}
_021ED60C:
mov r0, #0x9e
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_02019BE4
mov r1, #2
add r5, r0, #0
mvn r1, r1
cmp r5, r1
bhi _021ED654
blo _021ED626
b _021ED734
_021ED626:
cmp r5, #0xa
bhi _021ED64C
add r0, r5, r5
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021ED636: ; jump table
.short _021ED666 - _021ED636 - 2 ; case 0
.short _021ED666 - _021ED636 - 2 ; case 1
.short _021ED666 - _021ED636 - 2 ; case 2
.short _021ED666 - _021ED636 - 2 ; case 3
.short _021ED666 - _021ED636 - 2 ; case 4
.short _021ED666 - _021ED636 - 2 ; case 5
.short _021ED666 - _021ED636 - 2 ; case 6
.short _021ED666 - _021ED636 - 2 ; case 7
.short _021ED666 - _021ED636 - 2 ; case 8
.short _021ED666 - _021ED636 - 2 ; case 9
.short _021ED6A0 - _021ED636 - 2 ; case 10
_021ED64C:
mov r0, #3
mvn r0, r0
cmp r5, r0
b _021ED73A
_021ED654:
add r0, r1, #1
cmp r5, r0
bhi _021ED65E
beq _021ED6A0
b _021ED73A
_021ED65E:
add r0, r1, #2
cmp r5, r0
beq _021ED6B2
b _021ED73A
_021ED666:
ldrh r1, [r4, #0x1c]
ldr r0, [r4, #0xc]
add r3, r0, r5
add r2, r1, #0
mov r0, #0xa
mul r2, r0
mov r1, #0xb3
add r2, r3, r2
lsl r1, r1, #2
ldrb r2, [r2, r1]
cmp r2, #0xff
beq _021ED73A
strb r5, [r4, #0x1e]
ldr r2, [r4, #0xc]
add r3, r2, r5
ldrh r2, [r4, #0x1c]
mul r0, r2
add r0, r3, r0
ldrb r0, [r0, r1]
strb r0, [r4, #0x1f]
ldr r0, _021ED748 ; =0x000005DD
bl PlaySE
add r0, r4, #0
add r1, r5, #0
mov r2, #0xc
bl ov103_021EDA98
pop {r3, r4, r5, pc}
_021ED6A0:
ldr r0, _021ED748 ; =0x000005DD
bl PlaySE
add r0, r4, #0
mov r1, #3
mov r2, #0xa
bl ov103_021EDB18
pop {r3, r4, r5, pc}
_021ED6B2:
mov r0, #0x9e
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_02019F74
ldr r1, _021ED74C ; =gSystem
mov r2, #0x10
ldr r1, [r1, #0x4c]
tst r2, r1
beq _021ED6FE
cmp r0, #1
beq _021ED6DC
cmp r0, #3
beq _021ED6DC
cmp r0, #5
beq _021ED6DC
cmp r0, #7
beq _021ED6DC
cmp r0, #9
bne _021ED6FE
_021ED6DC:
ldr r3, [r4, #0xc]
ldr r2, _021ED744 ; =0x000002E2
ldrh r5, [r4, #0x1c]
ldrh r2, [r3, r2]
cmp r5, r2
beq _021ED6FE
add r0, r5, #1
strh r0, [r4, #0x1c]
ldr r0, _021ED740 ; =0x000005DC
bl PlaySE
add r0, r4, #0
mov r1, #1
mov r2, #0xb
bl ov103_021EDB18
pop {r3, r4, r5, pc}
_021ED6FE:
mov r2, #0x20
tst r1, r2
beq _021ED73A
cmp r0, #0
beq _021ED718
cmp r0, #2
beq _021ED718
cmp r0, #4
beq _021ED718
cmp r0, #6
beq _021ED718
cmp r0, #8
bne _021ED73A
_021ED718:
ldrh r0, [r4, #0x1c]
cmp r0, #0
beq _021ED73A
sub r0, r0, #1
strh r0, [r4, #0x1c]
ldr r0, _021ED740 ; =0x000005DC
bl PlaySE
add r0, r4, #0
mov r1, #0
mov r2, #0xb
bl ov103_021EDB18
pop {r3, r4, r5, pc}
_021ED734:
ldr r0, _021ED740 ; =0x000005DC
bl PlaySE
_021ED73A:
mov r0, #9
pop {r3, r4, r5, pc}
nop
_021ED740: .word 0x000005DC
_021ED744: .word 0x000002E2
_021ED748: .word 0x000005DD
_021ED74C: .word gSystem
thumb_func_end ov103_021ED5B4
thumb_func_start ov103_021ED750
ov103_021ED750: ; 0x021ED750
ldr r3, _021ED75C ; =ov103_021EDA40
mov r1, #0x19
str r1, [r0, #0x28]
mov r1, #1
bx r3
nop
_021ED75C: .word ov103_021EDA40
thumb_func_end ov103_021ED750
thumb_func_start ov103_021ED760
ov103_021ED760: ; 0x021ED760
push {r4, lr}
add r4, r0, #0
ldrh r0, [r4, #0x1c]
cmp r0, #0
ldr r0, [r4, #0xc]
bne _021ED780
mov r1, #0
add r2, r1, #0
bl ov103_021EE0CC
mov r1, #1
ldr r0, [r4, #0xc]
add r2, r1, #0
bl ov103_021EE0CC
b _021ED792
_021ED780:
mov r1, #0
mov r2, #1
bl ov103_021EE0CC
ldr r0, [r4, #0xc]
mov r1, #1
mov r2, #0
bl ov103_021EE0CC
_021ED792:
add r0, r4, #0
bl ov103_021EE644
add r0, r4, #0
bl ov103_021ED0C0
mov r0, #9
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021ED760
thumb_func_start ov103_021ED7A4
ov103_021ED7A4: ; 0x021ED7A4
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0xc]
mov r1, #2
mov r2, #0
bl ov103_021EE0CC
ldr r0, [r4, #0xc]
mov r1, #1
bl ov103_021EDB60
add r0, r4, #0
bl ov103_021ED124
add r0, r4, #0
bl ov103_021EE860
add r0, r4, #0
bl ov103_021EE824
add r0, r4, #0
mov r1, #0
mov r2, #0xd
bl ov103_021EDA70
pop {r4, pc}
thumb_func_end ov103_021ED7A4
thumb_func_start ov103_021ED7D8
ov103_021ED7D8: ; 0x021ED7D8
push {r3, lr}
bl ov103_021ECF68
mov r0, #0xe
pop {r3, pc}
.balign 4, 0
thumb_func_end ov103_021ED7D8
thumb_func_start ov103_021ED7E4
ov103_021ED7E4: ; 0x021ED7E4
push {r4, lr}
add r4, r0, #0
mov r0, #0x91
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020186A4
mov r1, #1
mvn r1, r1
cmp r0, r1
bhi _021ED816
bhs _021ED89E
cmp r0, #3
bhi _021ED8CA
add r1, r0, r0
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021ED80E: ; jump table
.short _021ED81E - _021ED80E - 2 ; case 0
.short _021ED84A - _021ED80E - 2 ; case 1
.short _021ED864 - _021ED80E - 2 ; case 2
.short _021ED89E - _021ED80E - 2 ; case 3
_021ED816:
mov r1, #0
mvn r1, r1
cmp r0, r1
b _021ED8CA
_021ED81E:
add r0, r4, #0
bl ov103_021ECFFC
add r0, r4, #0
bl ov103_021EE888
ldr r0, [r4, #0xc]
mov r1, #2
mov r2, #1
bl ov103_021EE0CC
ldr r0, [r4, #0xc]
bl ov103_021EE60C
ldr r0, [r4, #0xc]
bl ov103_021EE374
add r0, r4, #0
bl ov103_021EDBB0
mov r0, #0xf
pop {r4, pc}
_021ED84A:
add r0, r4, #0
bl ov103_021ECFFC
add r0, r4, #0
mov r1, #0
bl ov103_021EE8A8
add r0, r4, #0
mov r1, #0
mov r2, #0x11
bl ov103_021EDA70
pop {r4, pc}
_021ED864:
add r0, r4, #0
bl ov103_021ECFFC
ldrb r0, [r4, #0x1f]
ldr r1, [r4, #0xc]
lsl r0, r0, #2
add r1, r1, r0
mov r0, #0x9f
lsl r0, r0, #2
ldr r0, [r1, r0]
bl Mail_GetType
bl MailToItemId
add r2, r0, #0
add r0, r4, #0
mov r1, #0xe
mov r3, #0
bl ov103_021EDC68
mov r0, #0
str r0, [r4, #0x18]
mov r0, #6
str r0, [r4, #0x28]
add r0, r4, #0
mov r1, #1
bl ov103_021EDA40
pop {r4, pc}
_021ED89E:
add r0, r4, #0
bl ov103_021ECFFC
add r0, r4, #0
bl ov103_021EE888
ldr r0, [r4, #0xc]
mov r1, #0xa
ldr r0, [r0, #4]
bl sub_0201980C
ldr r0, [r4, #0xc]
mov r1, #0
bl ov103_021EDB60
ldr r0, [r4, #0xc]
mov r1, #2
mov r2, #1
bl ov103_021EE0CC
mov r0, #9
pop {r4, pc}
_021ED8CA:
mov r0, #0xe
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021ED7E4
thumb_func_start ov103_021ED8D0
ov103_021ED8D0: ; 0x021ED8D0
push {r4, lr}
add r4, r0, #0
bl ov103_021EEB04
cmp r0, #1
bne _021ED8EE
ldr r0, _021ED8F4 ; =0x000005DD
bl PlaySE
add r0, r4, #0
mov r1, #3
mov r2, #0x10
bl ov103_021EDB18
pop {r4, pc}
_021ED8EE:
mov r0, #0xf
pop {r4, pc}
nop
_021ED8F4: .word 0x000005DD
thumb_func_end ov103_021ED8D0
thumb_func_start ov103_021ED8F8
ov103_021ED8F8: ; 0x021ED8F8
push {r4, lr}
add r4, r0, #0
bl ov103_021EDBC8
mov r0, #0x9e
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_02019F74
add r1, r0, #0
add r0, r4, #0
bl ov103_021EEAC8
ldr r0, [r4, #0xc]
bl ov103_021EE628
ldr r0, [r4, #0xc]
mov r1, #0xa
ldr r0, [r0, #4]
bl sub_0201980C
ldr r0, [r4, #0xc]
mov r1, #0
bl ov103_021EDB60
mov r0, #9
pop {r4, pc}
thumb_func_end ov103_021ED8F8
thumb_func_start ov103_021ED930
ov103_021ED930: ; 0x021ED930
ldr r3, _021ED938 ; =ov103_021EDA84
mov r1, #0
bx r3
nop
_021ED938: .word ov103_021EDA84
thumb_func_end ov103_021ED930
thumb_func_start ov103_021ED93C
ov103_021ED93C: ; 0x021ED93C
push {r4, lr}
add r4, r0, #0
mov r1, #2
bl ov103_021EE8A8
add r0, r4, #0
mov r1, #0
mov r2, #0x13
bl ov103_021EDA70
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021ED93C
thumb_func_start ov103_021ED954
ov103_021ED954: ; 0x021ED954
ldr r3, _021ED95C ; =ov103_021EDA84
mov r1, #1
bx r3
nop
_021ED95C: .word ov103_021EDA84
thumb_func_end ov103_021ED954
thumb_func_start ov103_021ED960
ov103_021ED960: ; 0x021ED960
add r1, r0, #0
add r1, #0x20
ldrb r1, [r1]
cmp r1, #6
beq _021ED972
mov r1, #0x15
str r1, [r0, #0x28]
mov r0, #0
bx lr
_021ED972:
mov r1, #2
str r1, [r0, #0x18]
mov r0, #6
bx lr
.balign 4, 0
thumb_func_end ov103_021ED960
thumb_func_start ov103_021ED97C
ov103_021ED97C: ; 0x021ED97C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0xc]
mov r1, #2
mov r2, #0
bl ov103_021EE0CC
ldr r0, [r4, #0xc]
mov r1, #1
bl ov103_021EDB60
add r0, r4, #0
mov r1, #0x16
bl ov103_021EDA14
pop {r4, pc}
thumb_func_end ov103_021ED97C
thumb_func_start ov103_021ED99C
ov103_021ED99C: ; 0x021ED99C
push {r4, lr}
add r4, r0, #0
bl ov103_021EE860
add r0, r4, #0
bl ov103_021EDE7C
pop {r4, pc}
thumb_func_end ov103_021ED99C
thumb_func_start ov103_021ED9AC
ov103_021ED9AC: ; 0x021ED9AC
push {r4, lr}
add r4, r0, #0
ldr r1, [r4, #0x24]
cmp r1, #0
bne _021ED9BE
mov r0, #0x15
str r0, [r4, #0x28]
mov r0, #0
pop {r4, pc}
_021ED9BE:
add r3, r4, #0
add r3, #0x21
ldrb r3, [r3]
ldrh r2, [r4, #0x22]
mov r1, #0xb
lsl r3, r3, #0x19
lsr r3, r3, #0x19
bl ov103_021EDC68
mov r0, #3
str r0, [r4, #0x18]
mov r0, #6
pop {r4, pc}
thumb_func_end ov103_021ED9AC
thumb_func_start ov103_021ED9D8
ov103_021ED9D8: ; 0x021ED9D8
push {r4, lr}
add r4, r0, #0
bl ov103_021EE888
ldr r0, [r4, #0xc]
mov r1, #0xa
ldr r0, [r0, #4]
bl sub_0201980C
mov r0, #0x9e
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_02019F74
add r1, r0, #0
add r0, r4, #0
bl ov103_021EEAC8
ldr r0, [r4, #0xc]
mov r1, #2
mov r2, #1
bl ov103_021EE0CC
ldr r0, [r4, #0xc]
mov r1, #0
bl ov103_021EDB60
mov r0, #9
pop {r4, pc}
thumb_func_end ov103_021ED9D8
thumb_func_start ov103_021EDA14
ov103_021EDA14: ; 0x021EDA14
push {r4, r5, lr}
sub sp, #0xc
add r5, r0, #0
mov r0, #6
add r4, r1, #0
str r0, [sp]
mov r1, #1
str r1, [sp, #4]
mov r0, #0x9d
str r0, [sp, #8]
mov r0, #0
add r2, r1, #0
add r3, r0, #0
bl BeginNormalPaletteFade
mov r0, #0xbb
ldr r1, [r5, #0xc]
lsl r0, r0, #2
str r4, [r1, r0]
mov r0, #2
add sp, #0xc
pop {r4, r5, pc}
thumb_func_end ov103_021EDA14
thumb_func_start ov103_021EDA40
ov103_021EDA40: ; 0x021EDA40
push {r4, r5, lr}
sub sp, #0xc
add r5, r0, #0
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #0x9d
str r0, [sp, #8]
mov r0, #0
add r4, r1, #0
add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
bl BeginNormalPaletteFade
mov r0, #0xbb
ldr r1, [r5, #0xc]
lsl r0, r0, #2
str r4, [r1, r0]
mov r0, #2
add sp, #0xc
pop {r4, r5, pc}
.balign 4, 0
thumb_func_end ov103_021EDA40
thumb_func_start ov103_021EDA70
ov103_021EDA70: ; 0x021EDA70
push {r3, r4}
ldr r4, [r0, #0xc]
ldr r3, _021EDA80 ; =0x00000235
strb r1, [r4, r3]
str r2, [r0, #0x28]
mov r0, #3
pop {r3, r4}
bx lr
.balign 4, 0
_021EDA80: .word 0x00000235
thumb_func_end ov103_021EDA70
thumb_func_start ov103_021EDA84
ov103_021EDA84: ; 0x021EDA84
push {r3, lr}
mov r2, #0x8f
ldr r3, [r0, #0xc]
lsl r2, r2, #2
str r1, [r3, r2]
bl ov103_021ECEA4
mov r0, #4
pop {r3, pc}
.balign 4, 0
thumb_func_end ov103_021EDA84
thumb_func_start ov103_021EDA98
ov103_021EDA98: ; 0x021EDA98
push {r4, r5, r6, lr}
sub sp, #8
add r5, r0, #0
ldr r0, [r5, #0xc]
add r4, r2, #0
add r2, sp, #0
ldr r0, [r0, #4]
add r2, #1
add r3, sp, #0
add r6, r1, #0
bl sub_02019B1C
ldr r0, [r5, #0xc]
add r3, sp, #0
ldr r0, [r0, #4]
add r1, r6, #0
add r2, sp, #4
add r3, #2
bl sub_02019B44
mov r0, #0xb9
ldr r1, [r5, #0xc]
lsl r0, r0, #2
add r1, r1, r0
ldrb r2, [r1]
mov r0, #1
bic r2, r0
mov r0, #1
orr r2, r0
strb r2, [r1]
ldrb r3, [r1]
mov r2, #0xfe
bic r3, r2
mov r2, #4
orr r2, r3
strb r2, [r1]
ldrb r3, [r1, #1]
mov r2, #0xf
bic r3, r2
mov r2, #2
orr r2, r3
strb r2, [r1, #1]
ldrb r3, [r1, #1]
mov r2, #0xf0
bic r3, r2
mov r2, #0x10
orr r2, r3
strb r2, [r1, #1]
mov r3, #0
strb r3, [r1, #2]
strb r3, [r1, #3]
add r2, sp, #0
ldrsb r0, [r2, r0]
strb r0, [r1, #4]
ldrsb r0, [r2, r3]
strb r0, [r1, #5]
ldrh r0, [r2, #4]
strb r0, [r1, #6]
ldrh r0, [r2, #2]
strb r0, [r1, #7]
str r4, [r5, #0x28]
mov r0, #5
add sp, #8
pop {r4, r5, r6, pc}
thumb_func_end ov103_021EDA98
thumb_func_start ov103_021EDB18
ov103_021EDB18: ; 0x021EDB18
push {r4, r5}
mov r3, #0xb9
ldr r4, [r0, #0xc]
lsl r3, r3, #2
add r4, r4, r3
ldrb r5, [r4]
mov r3, #1
lsl r1, r1, #0x18
bic r5, r3
strb r5, [r4]
lsr r1, r1, #0x18
lsl r1, r1, #0x19
ldrb r3, [r4]
mov r5, #0xfe
lsr r1, r1, #0x18
bic r3, r5
orr r1, r3
strb r1, [r4]
ldrb r3, [r4, #1]
mov r1, #0xf
bic r3, r1
mov r1, #1
orr r1, r3
strb r1, [r4, #1]
ldrb r3, [r4, #1]
mov r1, #0xf0
bic r3, r1
strb r3, [r4, #1]
mov r1, #0
strb r1, [r4, #2]
strb r1, [r4, #3]
str r2, [r0, #0x28]
mov r0, #5
pop {r4, r5}
bx lr
.balign 4, 0
thumb_func_end ov103_021EDB18
thumb_func_start ov103_021EDB60
ov103_021EDB60: ; 0x021EDB60
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
cmp r1, #1
bne _021EDB90
mov r1, #0
mov r2, #1
bl ov103_021EE110
mov r1, #1
add r0, r4, #0
add r2, r1, #0
bl ov103_021EE110
mov r0, #0xc
str r0, [sp]
mov r1, #4
ldr r0, _021EDBAC ; =0x04000050
mov r2, #8
add r3, r1, #0
bl G2x_SetBlendAlpha_
add sp, #4
pop {r3, r4, pc}
_021EDB90:
mov r1, #0
add r2, r1, #0
bl ov103_021EE110
add r0, r4, #0
mov r1, #1
mov r2, #0
bl ov103_021EE110
ldr r0, _021EDBAC ; =0x04000050
mov r1, #0
strh r1, [r0]
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
_021EDBAC: .word 0x04000050
thumb_func_end ov103_021EDB60
thumb_func_start ov103_021EDBB0
ov103_021EDBB0: ; 0x021EDBB0
push {r4, lr}
add r4, r0, #0
bl ov103_021ED23C
add r0, r4, #0
bl ov103_021EE930
add r0, r4, #0
bl ov103_021EE210
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021EDBB0
thumb_func_start ov103_021EDBC8
ov103_021EDBC8: ; 0x021EDBC8
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0xc]
mov r1, #4
mov r2, #0
bl ov103_021EE0CC
ldr r0, [r4, #0xc]
mov r1, #5
mov r2, #0
bl ov103_021EE0CC
ldr r0, [r4, #0xc]
mov r1, #6
mov r2, #0
bl ov103_021EE0CC
ldr r0, [r4, #0xc]
mov r1, #4
ldr r0, [r0]
bl BgClearTilemapBufferAndCommit
ldr r0, [r4, #0xc]
mov r1, #5
ldr r0, [r0]
bl BgClearTilemapBufferAndCommit
pop {r4, pc}
thumb_func_end ov103_021EDBC8
thumb_func_start ov103_021EDC00
ov103_021EDC00: ; 0x021EDC00
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #8]
ldr r0, [r0]
bl Save_Bag_Get
add r4, r0, #0
ldrb r0, [r5, #0x1f]
ldr r1, [r5, #0xc]
lsl r0, r0, #2
add r1, r1, r0
mov r0, #0x9f
lsl r0, r0, #2
ldr r0, [r1, r0]
bl Mail_GetType
bl MailToItemId
strh r0, [r5, #0x22]
ldrh r1, [r5, #0x22]
add r0, r4, #0
mov r2, #1
mov r3, #0x9d
bl Bag_AddItem
cmp r0, #1
bne _021EDC46
add r0, r5, #0
add r0, #0x21
ldrb r1, [r0]
mov r0, #0x80
add r5, #0x21
bic r1, r0
strb r1, [r5]
pop {r3, r4, r5, pc}
_021EDC46:
add r0, r5, #0
add r0, #0x21
ldrb r1, [r0]
mov r0, #0x80
add r5, #0x21
orr r0, r1
strb r0, [r5]
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov103_021EDC00
thumb_func_start ov103_021EDC58
ov103_021EDC58: ; 0x021EDC58
ldr r3, _021EDC64 ; =Mailbox_DeleteSlotI
add r2, r0, #0
ldr r0, [r2, #4]
mov r1, #0
ldrb r2, [r2, #0x1f]
bx r3
.balign 4, 0
_021EDC64: .word Mailbox_DeleteSlotI
thumb_func_end ov103_021EDC58
thumb_func_start ov103_021EDC68
ov103_021EDC68: ; 0x021EDC68
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
mov r0, #0x9c
mov r1, #0x44
add r7, r2, #0
str r3, [sp]
bl AllocFromHeap
mov r1, #0
mov r2, #0x44
add r4, r0, #0
bl MI_CpuFill8
ldr r0, [r5, #8]
ldr r0, [r0]
bl SaveArray_Party_Get
str r0, [r4]
ldr r0, [r5, #8]
ldr r0, [r0]
bl Save_Bag_Get
str r0, [r4, #4]
ldr r0, [r5]
mov r1, #0
str r0, [r4, #0xc]
ldr r0, [r5, #4]
str r0, [r4, #8]
add r0, r4, #0
add r0, #0x25
strb r1, [r0]
add r0, r4, #0
add r0, #0x24
strb r6, [r0]
strh r7, [r4, #0x28]
ldr r0, [r5, #8]
add r1, r4, #0
ldr r0, [r0, #4]
add r1, #0x26
str r0, [r4, #0x1c]
ldr r0, [r5, #8]
ldr r0, [r0, #8]
str r0, [r4, #0x20]
ldr r0, [sp]
strb r0, [r1]
str r4, [r5, #0x14]
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov103_021EDC68
thumb_func_start ov103_021EDCC8
ov103_021EDCC8: ; 0x021EDCC8
push {r4, lr}
add r4, r0, #0
ldr r0, _021EDCDC ; =_0210159C
ldr r1, [r4, #0x14]
mov r2, #0x9c
bl OverlayManager_New
str r0, [r4, #0x10]
mov r0, #0
pop {r4, pc}
.balign 4, 0
_021EDCDC: .word _0210159C
thumb_func_end ov103_021EDCC8
thumb_func_start ov103_021EDCE0
ov103_021EDCE0: ; 0x021EDCE0
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #0x14]
add r0, #0x26
ldrb r4, [r0]
cmp r4, #5
bhi _021EDD08
ldr r0, [r5, #8]
ldr r0, [r0]
bl SaveArray_Party_Get
add r1, r4, #0
bl Party_GetMonByIndex
add r2, r0, #0
ldrb r1, [r5, #0x1f]
ldr r0, [r5, #4]
mov r3, #0x9c
bl sub_02091004
_021EDD08:
ldr r0, [r5, #0x14]
bl FreeToHeap
mov r0, #8
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov103_021EDCE0
thumb_func_start ov103_021EDD14
ov103_021EDD14: ; 0x021EDD14
push {r4, lr}
add r1, r0, #0
add r1, #0x21
ldrb r1, [r1]
ldr r2, [r0, #0x14]
mov r3, #0x7f
bic r1, r3
add r3, r2, #0
add r3, #0x26
ldrb r4, [r3]
mov r3, #0x7f
add r2, #0x27
and r3, r4
orr r3, r1
add r1, r0, #0
add r1, #0x21
strb r3, [r1]
add r1, r0, #0
ldrb r2, [r2]
add r1, #0x20
strb r2, [r1]
ldr r0, [r0, #0x14]
bl FreeToHeap
mov r0, #0
pop {r4, pc}
thumb_func_end ov103_021EDD14
thumb_func_start ov103_021EDD48
ov103_021EDD48: ; 0x021EDD48
push {r3, lr}
ldr r0, [r0, #0x14]
bl FreeToHeap
mov r0, #8
pop {r3, pc}
thumb_func_end ov103_021EDD48
thumb_func_start ov103_021EDD54
ov103_021EDD54: ; 0x021EDD54
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
ldrh r0, [r4, #0x22]
bl ItemToMailId
add r3, r0, #0
mov r0, #0x9c
add r2, r4, #0
str r0, [sp]
add r2, #0x21
ldrb r2, [r2]
ldr r0, [r4, #8]
mov r1, #2
lsl r2, r2, #0x19
ldr r0, [r0]
lsr r2, r2, #0x19
bl sub_02090E68
ldr r1, [r4, #8]
mov r2, #0x9c
ldr r1, [r1, #8]
str r1, [r0, #0x1c]
str r0, [r4, #0x14]
ldr r0, _021EDD94 ; =ov103_021EEC58
ldr r1, [r4, #0x14]
bl OverlayManager_New
str r0, [r4, #0x10]
mov r0, #0
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
_021EDD94: .word ov103_021EEC58
thumb_func_end ov103_021EDD54
thumb_func_start ov103_021EDD98
ov103_021EDD98: ; 0x021EDD98
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x14]
bl sub_02090F6C
str r0, [r4, #0x24]
cmp r0, #1
bne _021EDDD8
ldr r0, [r4, #8]
ldr r0, [r0]
bl SaveArray_Party_Get
add r1, r4, #0
add r1, #0x21
ldrb r1, [r1]
lsl r1, r1, #0x19
lsr r1, r1, #0x19
bl Party_GetMonByIndex
add r1, r0, #0
ldr r0, [r4, #0x14]
bl sub_02090F70
ldr r0, [r4, #8]
ldr r0, [r0]
bl Save_Bag_Get
ldrh r1, [r4, #0x22]
mov r2, #1
mov r3, #0x9c
bl Bag_TakeItem
_021EDDD8:
ldr r0, [r4, #0x14]
bl sub_02090F90
mov r0, #0
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021EDD98
thumb_func_start ov103_021EDDE4
ov103_021EDDE4: ; 0x021EDDE4
push {r4, lr}
add r4, r0, #0
bl ov103_021EDC00
add r0, r4, #0
bl ov103_021EDC58
add r0, r4, #0
bl ov103_021ED0A0
add r0, r4, #0
bl ov103_021ED00C
mov r1, #0x2e
ldr r0, [r4, #0xc]
lsl r1, r1, #4
ldrh r1, [r0, r1]
cmp r1, #0xa
bhi _021EDE1C
mov r1, #0
add r2, r1, #0
bl ov103_021EE0CC
ldr r0, [r4, #0xc]
mov r1, #1
mov r2, #0
bl ov103_021EE0CC
_021EDE1C:
ldr r1, [r4, #0xc]
ldr r0, _021EDE58 ; =0x000002E2
ldrh r1, [r1, r0]
ldrh r0, [r4, #0x1c]
cmp r0, r1
bls _021EDE2E
strh r1, [r4, #0x1c]
mov r0, #0
strb r0, [r4, #0x1e]
_021EDE2E:
add r0, r4, #0
bl ov103_021EE644
add r0, r4, #0
bl ov103_021ED0C0
ldr r0, [r4, #0xc]
mov r1, #0xa
ldr r0, [r0, #4]
bl sub_0201980C
add r0, r4, #0
mov r1, #1
bl ov103_021EE8A8
add r0, r4, #0
mov r1, #1
mov r2, #0x12
bl ov103_021EDA70
pop {r4, pc}
.balign 4, 0
_021EDE58: .word 0x000002E2
thumb_func_end ov103_021EDDE4
thumb_func_start ov103_021EDE5C
ov103_021EDE5C: ; 0x021EDE5C
push {r4, lr}
add r4, r0, #0
ldrh r2, [r4, #0x22]
mov r1, #9
mov r3, #0
bl ov103_021EDC68
mov r1, #1
str r1, [r4, #0x18]
mov r0, #6
str r0, [r4, #0x28]
add r0, r4, #0
bl ov103_021EDA40
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021EDE5C
thumb_func_start ov103_021EDE7C
ov103_021EDE7C: ; 0x021EDE7C
push {r4, lr}
add r4, r0, #0
add r1, r4, #0
add r1, #0x21
ldrb r1, [r1]
lsl r1, r1, #0x18
lsr r1, r1, #0x1f
bne _021EDE94
mov r1, #3
bl ov103_021EE8A8
b _021EDE9A
_021EDE94:
mov r1, #4
bl ov103_021EE8A8
_021EDE9A:
add r0, r4, #0
mov r1, #1
mov r2, #0x18
bl ov103_021EDA70
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021EDE7C
thumb_func_start ov103_021EDEA8
ov103_021EDEA8: ; 0x021EDEA8
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineATogglePlanes
mov r0, #0x10
mov r1, #1
bl GfGfx_EngineBTogglePlanes
ldr r0, [r5, #0xc]
bl ov103_021EE13C
ldr r0, [r5, #0xc]
bl ov103_021EDF88
ldr r0, [r5, #0xc]
bl ov103_021EE2E0
ldr r0, [r5, #0xc]
bl ov103_021EE160
mov r7, #0
ldr r6, _021EDF4C ; =ov103_021EED58
add r4, r7, #0
_021EDEDA:
ldr r0, [r5, #0xc]
add r1, r6, #0
bl ov103_021EE048
ldr r1, [r5, #0xc]
add r7, r7, #1
add r2, r1, r4
mov r1, #0x96
lsl r1, r1, #2
str r0, [r2, r1]
add r6, #0x34
add r4, r4, #4
cmp r7, #7
blo _021EDEDA
ldr r0, [r5, #0xc]
add r1, #0x88
ldrh r1, [r0, r1]
cmp r1, #0xa
bhi _021EDF14
mov r1, #0
add r2, r1, #0
bl ov103_021EE0CC
ldr r0, [r5, #0xc]
mov r1, #1
mov r2, #0
bl ov103_021EE0CC
b _021EDF2C
_021EDF14:
ldrh r1, [r5, #0x1c]
cmp r1, #0
bne _021EDF24
mov r1, #0
add r2, r1, #0
bl ov103_021EE0CC
b _021EDF2C
_021EDF24:
mov r1, #1
mov r2, #0
bl ov103_021EE0CC
_021EDF2C:
ldr r0, [r5, #0xc]
mov r1, #4
mov r2, #0
bl ov103_021EE0CC
ldr r0, [r5, #0xc]
mov r1, #5
mov r2, #0
bl ov103_021EE0CC
ldr r0, [r5, #0xc]
mov r1, #6
mov r2, #0
bl ov103_021EE0CC
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021EDF4C: .word ov103_021EED58
thumb_func_end ov103_021EDEA8
thumb_func_start ov103_021EDF50
ov103_021EDF50: ; 0x021EDF50
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0xc]
bl ov103_021EE094
ldr r0, [r4, #0xc]
bl ov103_021EE028
ldr r0, [r4, #0xc]
bl ov103_021EE150
pop {r4, pc}
thumb_func_end ov103_021EDF50
thumb_func_start ov103_021EDF68
ov103_021EDF68: ; 0x021EDF68
push {r4, r5, r6, lr}
mov r6, #0x96
add r5, r0, #0
mov r4, #0
lsl r6, r6, #2
_021EDF72:
ldr r0, [r5, r6]
cmp r0, #0
beq _021EDF7C
bl UnkImageStruct_TickSpriteAnimation1Frame
_021EDF7C:
add r4, r4, #1
add r5, r5, #4
cmp r4, #7
blo _021EDF72
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov103_021EDF68
thumb_func_start ov103_021EDF88
ov103_021EDF88: ; 0x021EDF88
push {r4, r5, r6, r7, lr}
sub sp, #0x4c
add r4, r0, #0
mov r0, #0x9d
bl SpriteRenderer_Create
mov r1, #0x25
lsl r1, r1, #4
str r0, [r4, r1]
ldr r0, [r4, r1]
bl SpriteRenderer_CreateGfxHandler
mov r7, #0x95
lsl r7, r7, #2
add r2, sp, #0x2c
ldr r3, _021EE01C ; =ov103_021EED38
str r0, [r4, 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 r5, _021EE020 ; =ov103_021EED0C
stmia r2!, {r0, r1}
add r3, sp, #0x18
ldmia r5!, {r0, r1}
add r2, r3, #0
stmia r3!, {r0, r1}
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
ldr r0, [r5]
add r1, r6, #0
str r0, [r3]
sub r0, r7, #4
ldr r0, [r4, r0]
mov r3, #0x20
bl sub_0200CF70
ldr r3, _021EE024 ; =ov103_021EED20
add r2, sp, #0
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
sub r1, r7, #4
ldr r0, [r4, r1]
add r1, r1, #4
ldr r1, [r4, r1]
mov r2, #7
bl sub_0200CFF4
sub r1, r7, #4
ldr r0, [r4, r1]
add r1, r1, #4
ldr r1, [r4, r1]
add r2, sp, #0
bl SpriteRenderer_Init2DGfxResManagersFromCountsArray
sub r0, r7, #4
ldr r0, [r4, r0]
bl SpriteRenderer_GetG2dRendererPtr
mov r2, #2
mov r1, #0
lsl r2, r2, #0x14
bl G2dRenderer_SetSubSurfaceCoords
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_021EE01C: .word ov103_021EED38
_021EE020: .word ov103_021EED0C
_021EE024: .word ov103_021EED20
thumb_func_end ov103_021EDF88
thumb_func_start ov103_021EE028
ov103_021EE028: ; 0x021EE028
push {r4, lr}
mov r1, #0x25
add r4, r0, #0
lsl r1, r1, #4
ldr r0, [r4, r1]
add r1, r1, #4
ldr r1, [r4, r1]
bl SpriteRenderer_UnloadResourcesAndRemoveGfxHandler
mov r0, #0x25
lsl r0, r0, #4
ldr r0, [r4, r0]
bl SpriteRenderer_Delete
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021EE028
thumb_func_start ov103_021EE048
ov103_021EE048: ; 0x021EE048
push {r3, lr}
add r2, r1, #0
add r3, r0, #0
ldr r0, [r2, #0x10]
cmp r0, #1
bne _021EE064
mov r1, #0x25
lsl r1, r1, #4
ldr r0, [r3, r1]
add r1, r1, #4
ldr r1, [r3, r1]
bl SpriteRenderer_LoadResourcesAndCreateSprite
pop {r3, pc}
_021EE064:
mov r1, #0x25
lsl r1, r1, #4
ldr r0, [r3, r1]
add r1, r1, #4
ldr r1, [r3, r1]
mov r3, #2
lsl r3, r3, #0x14
bl SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset
pop {r3, pc}
thumb_func_end ov103_021EE048
thumb_func_start ov103_021EE078
ov103_021EE078: ; 0x021EE078
push {r3, r4, r5, lr}
lsl r5, r1, #2
mov r1, #0x96
lsl r1, r1, #2
add r4, r0, r1
ldr r0, [r4, r5]
cmp r0, #0
beq _021EE090
bl sub_0200D9DC
mov r0, #0
str r0, [r4, r5]
_021EE090:
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov103_021EE078
thumb_func_start ov103_021EE094
ov103_021EE094: ; 0x021EE094
push {r3, r4, r5, lr}
add r5, r0, #0
mov r4, #0
_021EE09A:
add r0, r5, #0
add r1, r4, #0
bl ov103_021EE078
add r4, r4, #1
cmp r4, #7
blo _021EE09A
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov103_021EE094
thumb_func_start ov103_021EE0AC
ov103_021EE0AC: ; 0x021EE0AC
push {r4, r5, r6, lr}
add r6, r2, #0
mov r2, #0x96
lsl r2, r2, #2
lsl r4, r1, #2
add r5, r0, r2
ldr r0, [r5, r4]
mov r1, #0
bl UnkImageStruct_SetSpriteAnimCtrlCurrentFrame
ldr r0, [r5, r4]
add r1, r6, #0
bl UnkImageStruct_SetSpriteAnimSeqNo
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov103_021EE0AC
thumb_func_start ov103_021EE0CC
ov103_021EE0CC: ; 0x021EE0CC
push {r3, lr}
cmp r2, #1
bne _021EE0E4
lsl r1, r1, #2
add r1, r0, r1
mov r0, #0x96
lsl r0, r0, #2
ldr r0, [r1, r0]
mov r1, #1
bl UnkImageStruct_SetSpriteVisibleFlag
pop {r3, pc}
_021EE0E4:
lsl r1, r1, #2
add r1, r0, r1
mov r0, #0x96
lsl r0, r0, #2
ldr r0, [r1, r0]
mov r1, #0
bl UnkImageStruct_SetSpriteVisibleFlag
pop {r3, pc}
.balign 4, 0
thumb_func_end ov103_021EE0CC
thumb_func_start ov103_021EE0F8
ov103_021EE0F8: ; 0x021EE0F8
lsl r1, r1, #2
add r1, r0, r1
mov r0, #0x96
lsl r0, r0, #2
ldr r0, [r1, r0]
add r1, r2, #0
add r2, r3, #0
ldr r3, _021EE10C ; =UnkImageStruct_SetSpritePositionXY
bx r3
nop
_021EE10C: .word UnkImageStruct_SetSpritePositionXY
thumb_func_end ov103_021EE0F8
thumb_func_start ov103_021EE110
ov103_021EE110: ; 0x021EE110
push {r3, lr}
cmp r2, #1
bne _021EE128
lsl r1, r1, #2
add r1, r0, r1
mov r0, #0x96
lsl r0, r0, #2
ldr r0, [r1, r0]
mov r1, #1
bl sub_0200E0FC
pop {r3, pc}
_021EE128:
lsl r1, r1, #2
add r1, r0, r1
mov r0, #0x96
lsl r0, r0, #2
ldr r0, [r1, r0]
mov r1, #0
bl sub_0200E0FC
pop {r3, pc}
.balign 4, 0
thumb_func_end ov103_021EE110
thumb_func_start ov103_021EE13C
ov103_021EE13C: ; 0x021EE13C
push {r4, lr}
add r4, r0, #0
mov r0, #0x14
mov r1, #0x9d
bl NARC_New
mov r1, #0x9d
lsl r1, r1, #2
str r0, [r4, r1]
pop {r4, pc}
thumb_func_end ov103_021EE13C
thumb_func_start ov103_021EE150
ov103_021EE150: ; 0x021EE150
mov r1, #0x9d
lsl r1, r1, #2
ldr r3, _021EE15C ; =NARC_Delete
ldr r0, [r0, r1]
bx r3
nop
_021EE15C: .word NARC_Delete
thumb_func_end ov103_021EE150
thumb_func_start ov103_021EE160
ov103_021EE160: ; 0x021EE160
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
ldr r4, _021EE208 ; =0x000037F0
add r5, r0, #0
mov r6, #0
mov r7, #2
_021EE16C:
mov r0, #0
add r1, r0, #0
add r2, r0, #0
bl GetMonIconNaixEx
str r6, [sp]
add r3, r0, #0
str r7, [sp, #4]
mov r0, #0x25
mov r1, #0x95
mov r2, #0x9d
str r4, [sp, #8]
lsl r0, r0, #4
lsl r1, r1, #2
lsl r2, r2, #2
ldr r0, [r5, r0]
ldr r1, [r5, r1]
ldr r2, [r5, r2]
bl SpriteRenderer_LoadCharResObjFromOpenNarc
ldr r0, _021EE20C ; =0x000037F2
add r4, r4, #1
cmp r4, r0
bls _021EE16C
bl sub_02074490
add r3, r0, #0
mov r0, #0
str r0, [sp]
mov r0, #3
str r0, [sp, #4]
mov r0, #2
str r0, [sp, #8]
ldr r0, _021EE208 ; =0x000037F0
mov r2, #0x25
lsl r2, r2, #4
str r0, [sp, #0xc]
add r1, r2, #4
ldr r0, [r5, r2]
add r2, #0x24
ldr r1, [r5, r1]
ldr r2, [r5, r2]
bl SpriteRenderer_LoadPlttResObjFromOpenNarc
bl sub_02074494
add r3, r0, #0
mov r0, #0
str r0, [sp]
ldr r0, _021EE208 ; =0x000037F0
mov r2, #0x25
lsl r2, r2, #4
str r0, [sp, #4]
add r1, r2, #4
ldr r0, [r5, r2]
add r2, #0x24
ldr r1, [r5, r1]
ldr r2, [r5, r2]
bl SpriteRenderer_LoadCellResObjFromOpenNarc
bl sub_02074498
add r3, r0, #0
mov r0, #0
str r0, [sp]
ldr r0, _021EE208 ; =0x000037F0
mov r2, #0x25
lsl r2, r2, #4
str r0, [sp, #4]
add r1, r2, #4
ldr r0, [r5, r2]
add r2, #0x24
ldr r1, [r5, r1]
ldr r2, [r5, r2]
bl SpriteRenderer_LoadAnimResObjFromOpenNarc
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021EE208: .word 0x000037F0
_021EE20C: .word 0x000037F2
thumb_func_end ov103_021EE160
thumb_func_start ov103_021EE210
ov103_021EE210: ; 0x021EE210
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r5, r0, #0
ldrb r0, [r5, #0x1f]
mov r4, #0
ldr r1, [r5, #0xc]
lsl r0, r0, #2
add r1, r1, r0
mov r0, #0x9f
lsl r0, r0, #2
ldr r7, [r1, r0]
add r6, r4, #0
_021EE228:
add r0, r7, #0
bl sub_0202B4E4
lsl r1, r4, #0x18
add r3, r0, #0
add r0, r7, #0
lsr r1, r1, #0x18
mov r2, #2
bl sub_0202B404
add r1, sp, #0x10
strh r0, [r1]
add r0, r1, #0
ldrh r1, [r0]
ldr r0, _021EE2DC ; =0x0000FFFF
cmp r1, r0
beq _021EE254
lsl r0, r1, #0x14
lsr r0, r0, #0x14
str r0, [sp, #4]
cmp r0, #7
bne _021EE260
_021EE254:
ldr r0, [r5, #0xc]
add r1, r4, #4
mov r2, #0
bl ov103_021EE0CC
b _021EE2CE
_021EE260:
ldr r0, [r5, #0xc]
add r1, r0, r6
mov r0, #0x9a
lsl r0, r0, #2
ldr r0, [r1, r0]
ldr r0, [r0]
bl sub_02024B1C
mov r1, #2
bl NNS_G2dGetImageLocation
str r0, [sp, #8]
mov r0, #0x9d
str r0, [sp]
ldr r1, [r5, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
ldr r1, [sp, #4]
mov r2, #0
add r3, sp, #0x14
bl GfGfxLoader_GetCharDataFromOpenNarc
str r0, [sp, #0xc]
ldr r0, [sp, #0x14]
mov r1, #2
ldr r0, [r0, #0x14]
lsl r1, r1, #8
bl DC_FlushRange
ldr r0, [sp, #0x14]
mov r2, #2
ldr r0, [r0, #0x14]
ldr r1, [sp, #8]
lsl r2, r2, #8
bl GXS_LoadOBJ
ldr r0, [sp, #0xc]
bl FreeToHeap
ldr r0, [r5, #0xc]
add r1, r0, r6
mov r0, #0x9a
lsl r0, r0, #2
ldr r0, [r1, r0]
add r1, sp, #0x10
ldrh r1, [r1]
lsl r1, r1, #0x10
lsr r1, r1, #0x1c
bl UnkImageStruct_SetSpritePalIndex
ldr r0, [r5, #0xc]
add r1, r4, #4
mov r2, #1
bl ov103_021EE0CC
_021EE2CE:
add r4, r4, #1
add r6, r6, #4
cmp r4, #3
blo _021EE228
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_021EE2DC: .word 0x0000FFFF
thumb_func_end ov103_021EE210
thumb_func_start ov103_021EE2E0
ov103_021EE2E0: ; 0x021EE2E0
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
mov r0, #0xfc
mov r1, #0x9d
bl NARC_New
add r4, r0, #0
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
ldr r0, _021EE36C ; =0x000037F3
mov r1, #0x25
lsl r1, r1, #4
str r0, [sp, #8]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r4, #0
mov r3, #7
bl SpriteRenderer_LoadCharResObjFromOpenNarc
mov r0, #0
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, _021EE370 ; =0x000037F1
mov r1, #0x25
lsl r1, r1, #4
str r0, [sp, #0xc]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r4, #0
mov r3, #0xa
bl SpriteRenderer_LoadPlttResObjFromOpenNarc
mov r0, #1
str r0, [sp]
ldr r0, _021EE370 ; =0x000037F1
mov r1, #0x25
lsl r1, r1, #4
str r0, [sp, #4]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r4, #0
mov r3, #8
bl SpriteRenderer_LoadCellResObjFromOpenNarc
mov r0, #1
str r0, [sp]
ldr r0, _021EE370 ; =0x000037F1
mov r1, #0x25
lsl r1, r1, #4
str r0, [sp, #4]
ldr r0, [r5, r1]
add r1, r1, #4
ldr r1, [r5, r1]
add r2, r4, #0
mov r3, #9
bl SpriteRenderer_LoadAnimResObjFromOpenNarc
add r0, r4, #0
bl NARC_Delete
add sp, #0x10
pop {r3, r4, r5, pc}
.balign 4, 0
_021EE36C: .word 0x000037F3
_021EE370: .word 0x000037F1
thumb_func_end ov103_021EE2E0
thumb_func_start ov103_021EE374
ov103_021EE374: ; 0x021EE374
push {r4, lr}
add r4, r0, #0
mov r1, #2
mov r2, #0xe0
mov r3, #0xb0
bl ov103_021EE0F8
add r0, r4, #0
mov r1, #2
mov r2, #4
bl ov103_021EE0AC
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021EE374
thumb_func_start ov103_021EE390
ov103_021EE390: ; 0x021EE390
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
mov r0, #4
mov r1, #0x9d
bl FontID_Alloc
mov r6, #0
ldr r4, _021EE3BC ; =ov103_021EEEC4
add r5, r6, #0
_021EE3A2:
ldr r1, [r7, #0xc]
add r2, r4, #0
ldr r0, [r1]
add r1, #0x48
add r1, r1, r5
bl AddWindow
add r6, r6, #1
add r4, #8
add r5, #0x10
cmp r6, #0x1e
blo _021EE3A2
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_021EE3BC: .word ov103_021EEEC4
thumb_func_end ov103_021EE390
thumb_func_start ov103_021EE3C0
ov103_021EE3C0: ; 0x021EE3C0
push {r4, r5, r6, lr}
mov r4, #0
add r6, r0, #0
add r5, r4, #0
_021EE3C8:
ldr r0, [r6, #0xc]
add r0, #0x48
add r0, r0, r5
bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #0x1e
blo _021EE3C8
mov r0, #4
bl FontID_Release
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov103_021EE3C0
thumb_func_start ov103_021EE3E4
ov103_021EE3E4: ; 0x021EE3E4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r6, r0, #0
ldr r0, [sp, #0x30]
add r7, r1, #0
add r5, r2, #0
add r4, r3, #0
cmp r0, #1
bne _021EE402
ldr r0, [sp, #0x28]
mov r2, #0
bl FontID_String_GetWidth
sub r5, r5, r0
b _021EE412
_021EE402:
cmp r0, #2
bne _021EE412
ldr r0, [sp, #0x28]
mov r2, #0
bl FontID_String_GetWidth
lsr r0, r0, #1
sub r5, r5, r0
_021EE412:
str r4, [sp]
mov r0, #0xff
str r0, [sp, #4]
ldr r0, [sp, #0x2c]
ldr r1, [sp, #0x28]
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
add r0, r6, #0
add r2, r7, #0
add r3, r5, #0
bl AddTextPrinterParameterizedWithColor
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end ov103_021EE3E4
thumb_func_start ov103_021EE430
ov103_021EE430: ; 0x021EE430
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r5, r0, #0
add r0, r1, #0
add r1, r3, #0
add r4, r2, #0
bl NewString_ReadMsgData
add r6, r0, #0
ldr r0, [sp, #0x28]
add r5, #0x48
str r0, [sp]
ldr r0, [sp, #0x2c]
ldr r2, [sp, #0x20]
str r0, [sp, #4]
ldr r0, [sp, #0x30]
ldr r3, [sp, #0x24]
str r0, [sp, #8]
lsl r0, r4, #4
add r0, r5, r0
add r1, r6, #0
bl ov103_021EE3E4
add r0, r6, #0
bl String_Delete
add sp, #0xc
pop {r3, r4, r5, r6, pc}
thumb_func_end ov103_021EE430
thumb_func_start ov103_021EE468
ov103_021EE468: ; 0x021EE468
push {r4, r5, r6, r7, lr}
sub sp, #0x24
add r5, r0, #0
str r1, [sp, #0x18]
ldr r1, [r5, #0xc]
lsl r0, r3, #2
add r6, r1, #0
add r1, r1, r0
mov r0, #0x9f
lsl r0, r0, #2
ldr r0, [r1, r0]
add r6, #0x48
lsl r7, r2, #4
str r0, [sp, #0x20]
bl Mail_GetAuthorNamePtr
add r1, r0, #0
mov r0, #0x23
ldr r2, [r5, #0xc]
lsl r0, r0, #4
ldr r0, [r2, r0]
bl CopyU16ArrayToString
mov r4, #0
str r4, [sp, #0x1c]
_021EE49A:
mov r0, #8
str r0, [sp]
str r0, [sp, #4]
lsl r0, r4, #0x10
lsr r0, r0, #0x10
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
mov r0, #8
str r0, [sp, #0x10]
str r0, [sp, #0x14]
ldr r1, [r5, #0xc]
mov r2, #0
add r0, r6, r7
add r1, #8
add r3, r2, #0
bl BlitBitmapRectToWindow
mov r0, #8
str r0, [sp]
str r0, [sp, #4]
lsl r0, r4, #0x10
lsr r0, r0, #0x10
str r0, [sp, #8]
mov r0, #8
str r0, [sp, #0xc]
str r0, [sp, #0x10]
str r0, [sp, #0x14]
ldr r1, [r5, #0xc]
mov r2, #0
add r0, r6, r7
add r1, #0x28
add r3, r2, #0
bl BlitBitmapRectToWindow
ldr r0, [sp, #0x1c]
add r4, #8
add r0, r0, #1
str r0, [sp, #0x1c]
cmp r0, #8
blo _021EE49A
ldr r0, [sp, #0x20]
bl Mail_GetAuthorGender
cmp r0, #0
bne _021EE514
mov r0, #4
str r0, [sp]
ldr r0, _021EE548 ; =0x00030200
mov r2, #0
str r0, [sp, #4]
str r2, [sp, #8]
mov r1, #0x23
ldr r3, [r5, #0xc]
lsl r1, r1, #4
ldr r1, [r3, r1]
add r0, r6, r7
add r3, r2, #0
bl ov103_021EE3E4
b _021EE530
_021EE514:
mov r0, #4
str r0, [sp]
ldr r0, _021EE54C ; =0x00050400
mov r2, #0
str r0, [sp, #4]
str r2, [sp, #8]
mov r1, #0x23
ldr r3, [r5, #0xc]
lsl r1, r1, #4
ldr r1, [r3, r1]
add r0, r6, r7
add r3, r2, #0
bl ov103_021EE3E4
_021EE530:
add r0, r6, r7
bl CopyWindowPixelsToVram_TextMode
ldr r0, [r5, #0xc]
ldr r1, [sp, #0x18]
ldr r0, [r0, #4]
add r2, r6, r7
bl sub_02019A60
add sp, #0x24
pop {r4, r5, r6, r7, pc}
nop
_021EE548: .word 0x00030200
_021EE54C: .word 0x00050400
thumb_func_end ov103_021EE468
thumb_func_start ov103_021EE550
ov103_021EE550: ; 0x021EE550
push {r3, r4, lr}
sub sp, #0x14
add r4, r0, #0
mov r0, #0x76
ldr r1, [r4, #0xc]
lsl r0, r0, #2
add r0, r1, r0
mov r1, #0
bl FillWindowPixelBuffer
ldr r0, [r4, #0xc]
mov r1, #0x2c
str r1, [sp]
mov r3, #0
str r3, [sp, #4]
ldr r1, _021EE604 ; =0x00010200
str r3, [sp, #8]
str r1, [sp, #0xc]
mov r1, #2
str r1, [sp, #0x10]
mov r1, #0x8a
lsl r1, r1, #2
ldr r1, [r0, r1]
mov r2, #0x19
bl ov103_021EE430
mov r0, #0x76
ldr r1, [r4, #0xc]
lsl r0, r0, #2
add r0, r1, r0
bl ScheduleWindowCopyToVram
mov r0, #0x66
ldr r1, [r4, #0xc]
lsl r0, r0, #2
add r0, r1, r0
mov r1, #0
bl FillWindowPixelBuffer
ldr r0, [r4, #0xc]
mov r1, #0x18
str r1, [sp]
mov r1, #0
str r1, [sp, #4]
mov r1, #4
str r1, [sp, #8]
ldr r1, _021EE608 ; =0x000F0100
mov r2, #0x15
str r1, [sp, #0xc]
mov r1, #2
str r1, [sp, #0x10]
mov r1, #0x8a
lsl r1, r1, #2
ldr r1, [r0, r1]
mov r3, #3
bl ov103_021EE430
mov r0, #0x66
ldr r1, [r4, #0xc]
lsl r0, r0, #2
add r0, r1, r0
bl ScheduleWindowCopyToVram
mov r0, #0x6a
ldr r1, [r4, #0xc]
lsl r0, r0, #2
add r0, r1, r0
mov r1, #0
bl FillWindowPixelBuffer
ldr r0, [r4, #0xc]
mov r1, #0x18
str r1, [sp]
mov r1, #0
str r1, [sp, #4]
mov r3, #4
ldr r1, _021EE608 ; =0x000F0100
str r3, [sp, #8]
str r1, [sp, #0xc]
mov r1, #2
str r1, [sp, #0x10]
mov r1, #0x8a
lsl r1, r1, #2
ldr r1, [r0, r1]
mov r2, #0x16
bl ov103_021EE430
add sp, #0x14
pop {r3, r4, pc}
nop
_021EE604: .word 0x00010200
_021EE608: .word 0x000F0100
thumb_func_end ov103_021EE550
thumb_func_start ov103_021EE60C
ov103_021EE60C: ; 0x021EE60C
push {r4, lr}
add r4, r0, #0
mov r0, #0x66
lsl r0, r0, #2
add r0, r4, r0
bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x6a
lsl r0, r0, #2
add r0, r4, r0
bl ScheduleWindowCopyToVram
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021EE60C
thumb_func_start ov103_021EE628
ov103_021EE628: ; 0x021EE628
push {r4, lr}
add r4, r0, #0
mov r0, #0x6a
lsl r0, r0, #2
add r0, r4, r0
bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x66
lsl r0, r0, #2
add r0, r4, r0
bl ScheduleWindowCopyToVram
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021EE628
thumb_func_start ov103_021EE644
ov103_021EE644: ; 0x021EE644
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r5, r0, #0
mov r0, #0x6e
ldr r1, [r5, #0xc]
lsl r0, r0, #2
add r0, r1, r0
mov r1, #0
bl FillWindowPixelBuffer
mov r2, #0x8a
ldr r3, [r5, #0xc]
lsl r2, r2, #2
ldr r0, [r3, r2]
add r2, #8
ldr r2, [r3, r2]
mov r1, #2
bl ReadMsgDataIntoString
mov r1, #0x6e
ldr r2, [r5, #0xc]
mov r3, #0
ldr r0, _021EE780 ; =0x00010200
str r3, [sp]
str r0, [sp, #4]
mov r0, #2
lsl r1, r1, #2
str r0, [sp, #8]
add r0, r2, r1
add r1, #0x78
ldr r1, [r2, r1]
mov r2, #0x14
bl ov103_021EE3E4
mov r1, #0x23
ldr r2, [r5, #0xc]
lsl r1, r1, #4
mov r0, #0
ldr r1, [r2, r1]
add r2, r0, #0
bl FontID_String_GetWidth
mov r1, #0
lsl r4, r0, #0x10
mov r0, #0x8b
str r1, [sp]
mov r3, #1
str r3, [sp, #4]
ldr r2, [r5, #0xc]
lsl r0, r0, #2
ldr r0, [r2, r0]
ldrh r2, [r5, #0x1c]
add r2, r2, #1
bl BufferIntegerAsString
mov r0, #0x8a
ldr r1, [r5, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
mov r1, #1
bl NewString_ReadMsgData
mov r1, #0x8b
ldr r2, [r5, #0xc]
lsl r1, r1, #2
add r6, r0, #0
ldr r0, [r2, r1]
add r1, r1, #4
ldr r1, [r2, r1]
add r2, r6, #0
bl StringExpandPlaceholders
add r0, r6, #0
bl String_Delete
mov r1, #0x23
ldr r2, [r5, #0xc]
lsl r1, r1, #4
mov r0, #0
ldr r1, [r2, r1]
add r2, r0, #0
bl FontID_String_GetWidth
lsl r0, r0, #0x10
lsr r2, r0, #0x10
mov r6, #0x6e
ldr r1, [r5, #0xc]
mov r3, #0
ldr r0, _021EE780 ; =0x00010200
str r3, [sp]
str r0, [sp, #4]
lsl r6, r6, #2
add r0, r1, r6
str r3, [sp, #8]
add r6, #0x78
ldr r1, [r1, r6]
lsr r4, r4, #0x11
mov r6, #0x14
sub r6, r6, r4
sub r2, r6, r2
bl ov103_021EE3E4
ldr r6, [r5, #0xc]
mov r1, #0
mov r2, #0x8b
str r1, [sp]
mov r3, #1
str r3, [sp, #4]
lsl r2, r2, #2
ldr r0, [r6, r2]
add r2, #0xb6
ldrh r2, [r6, r2]
add r2, r2, #1
bl BufferIntegerAsString
mov r0, #0x8a
ldr r1, [r5, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
mov r1, #1
bl NewString_ReadMsgData
mov r1, #0x8b
ldr r2, [r5, #0xc]
lsl r1, r1, #2
add r6, r0, #0
ldr r0, [r2, r1]
add r1, r1, #4
ldr r1, [r2, r1]
add r2, r6, #0
bl StringExpandPlaceholders
add r0, r6, #0
bl String_Delete
mov r1, #0x6e
ldr r2, [r5, #0xc]
mov r3, #0
ldr r0, _021EE780 ; =0x00010200
str r3, [sp]
str r0, [sp, #4]
lsl r1, r1, #2
add r0, r2, r1
str r3, [sp, #8]
add r1, #0x78
ldr r1, [r2, r1]
add r4, #0x14
add r2, r4, #0
bl ov103_021EE3E4
mov r0, #0x6e
ldr r1, [r5, #0xc]
lsl r0, r0, #2
add r0, r1, r0
bl ScheduleWindowCopyToVram
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
_021EE780: .word 0x00010200
thumb_func_end ov103_021EE644
thumb_func_start ov103_021EE784
ov103_021EE784: ; 0x021EE784
push {r4, r5, r6, lr}
sub sp, #8
add r6, r0, #0
ldrb r0, [r6, #0x1f]
ldr r1, [r6, #0xc]
lsl r0, r0, #2
add r1, r1, r0
mov r0, #0x9f
lsl r0, r0, #2
ldr r5, [r1, r0]
mov r0, #8
mov r1, #0x9d
bl String_New
add r4, r0, #0
add r0, r5, #0
bl Mail_GetAuthorNamePtr
add r1, r0, #0
add r0, r4, #0
bl CopyU16ArrayToString
add r0, r5, #0
bl Mail_GetAuthorGender
add r3, r0, #0
mov r0, #1
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
mov r0, #0x8b
ldr r1, [r6, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
mov r1, #0
add r2, r4, #0
bl BufferString
add r0, r4, #0
bl String_Delete
add sp, #8
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end ov103_021EE784
thumb_func_start ov103_021EE7DC
ov103_021EE7DC: ; 0x021EE7DC
push {r4, r5, r6, lr}
sub sp, #0x10
add r5, r0, #0
mov r6, #0x72
ldr r4, [r5, #0xc]
lsl r6, r6, #2
add r0, r4, r6
mov r1, #0xf
bl FillWindowPixelBuffer
ldr r0, [r5]
bl Options_GetTextFrameDelay
mov r3, #0
str r3, [sp]
str r0, [sp, #4]
ldr r0, _021EE820 ; =0x0001020F
add r2, r6, #0
str r0, [sp, #8]
str r3, [sp, #0xc]
add r0, r4, r6
ldr r4, [r5, #0xc]
add r2, #0x68
ldr r2, [r4, r2]
mov r1, #1
bl AddTextPrinterParameterizedWithColor
add r1, r6, #0
ldr r2, [r5, #0xc]
add r1, #0x6c
strb r0, [r2, r1]
add sp, #0x10
pop {r4, r5, r6, pc}
nop
_021EE820: .word 0x0001020F
thumb_func_end ov103_021EE7DC
thumb_func_start ov103_021EE824
ov103_021EE824: ; 0x021EE824
push {r3, r4, r5, lr}
add r5, r0, #0
mov r1, #0
bl ov103_021EE784
mov r0, #0x8a
ldr r1, [r5, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
mov r1, #9
bl NewString_ReadMsgData
mov r1, #0x8b
ldr r2, [r5, #0xc]
lsl r1, r1, #2
add r4, r0, #0
ldr r0, [r2, r1]
add r1, r1, #4
ldr r1, [r2, r1]
add r2, r4, #0
bl StringExpandPlaceholders
add r0, r4, #0
bl String_Delete
add r0, r5, #0
bl ov103_021EE7DC
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov103_021EE824
thumb_func_start ov103_021EE860
ov103_021EE860: ; 0x021EE860
push {r4, lr}
add r4, r0, #0
mov r0, #0x72
ldr r1, [r4, #0xc]
lsl r0, r0, #2
add r0, r1, r0
ldr r2, _021EE884 ; =0x000003E2
mov r1, #1
mov r3, #0xd
bl DrawFrameAndWindow2
mov r0, #0x72
ldr r1, [r4, #0xc]
lsl r0, r0, #2
add r0, r1, r0
bl ScheduleWindowCopyToVram
pop {r4, pc}
.balign 4, 0
_021EE884: .word 0x000003E2
thumb_func_end ov103_021EE860
thumb_func_start ov103_021EE888
ov103_021EE888: ; 0x021EE888
push {r4, lr}
add r4, r0, #0
mov r0, #0x72
ldr r1, [r4, #0xc]
lsl r0, r0, #2
add r0, r1, r0
mov r1, #1
bl ClearFrameAndWindow2
ldr r0, [r4, #0xc]
mov r1, #0
ldr r0, [r0]
bl ScheduleBgTilemapBufferTransfer
pop {r4, pc}
.balign 4, 0
thumb_func_end ov103_021EE888
thumb_func_start ov103_021EE8A8
ov103_021EE8A8: ; 0x021EE8A8
push {r4, lr}
add r4, r0, #0
cmp r1, #4
bhi _021EE928
add r0, r1, r1
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_021EE8BC: ; jump table
.short _021EE8C6 - _021EE8BC - 2 ; case 0
.short _021EE8DA - _021EE8BC - 2 ; case 1
.short _021EE8EE - _021EE8BC - 2 ; case 2
.short _021EE902 - _021EE8BC - 2 ; case 3
.short _021EE916 - _021EE8BC - 2 ; case 4
_021EE8C6:
mov r2, #0x8a
ldr r3, [r4, #0xc]
lsl r2, r2, #2
ldr r0, [r3, r2]
add r2, #8
ldr r2, [r3, r2]
mov r1, #0xa
bl ReadMsgDataIntoString
b _021EE928
_021EE8DA:
mov r2, #0x8a
ldr r3, [r4, #0xc]
lsl r2, r2, #2
ldr r0, [r3, r2]
add r2, #8
ldr r2, [r3, r2]
mov r1, #0xb
bl ReadMsgDataIntoString
b _021EE928
_021EE8EE:
mov r2, #0x8a
ldr r3, [r4, #0xc]
lsl r2, r2, #2
ldr r0, [r3, r2]
add r2, #8
ldr r2, [r3, r2]
mov r1, #0xc
bl ReadMsgDataIntoString
b _021EE928
_021EE902:
mov r2, #0x8a
ldr r3, [r4, #0xc]
lsl r2, r2, #2
ldr r0, [r3, r2]
add r2, #8
ldr r2, [r3, r2]
mov r1, #0xd
bl ReadMsgDataIntoString
b _021EE928
_021EE916:
mov r2, #0x8a
ldr r3, [r4, #0xc]
lsl r2, r2, #2
ldr r0, [r3, r2]
add r2, #8
ldr r2, [r3, r2]
mov r1, #0xe
bl ReadMsgDataIntoString
_021EE928:
add r0, r4, #0
bl ov103_021EE7DC
pop {r4, pc}
thumb_func_end ov103_021EE8A8
thumb_func_start ov103_021EE930
ov103_021EE930: ; 0x021EE930
push {r4, r5, r6, r7, lr}
sub sp, #0xc
mov r4, #0
add r5, r0, #0
add r7, r4, #0
_021EE93A:
add r0, r4, #0
add r0, #0x1a
lsl r6, r0, #4
ldr r0, [r5, #0xc]
add r1, r7, #0
add r0, #0x48
add r0, r0, r6
bl FillWindowPixelBuffer
add r1, r4, #0
add r0, r5, #0
add r1, #0x1a
add r2, r4, #0
bl ov103_021EE9C8
ldr r0, [r5, #0xc]
add r0, #0x48
add r0, r0, r6
bl ScheduleWindowCopyToVram
add r4, r4, #1
cmp r4, #3
blo _021EE93A
mov r0, #0x86
ldr r1, [r5, #0xc]
lsl r0, r0, #2
add r0, r1, r0
mov r1, #0
bl FillWindowPixelBuffer
ldrb r0, [r5, #0x1f]
ldr r1, [r5, #0xc]
lsl r0, r0, #2
add r1, r1, r0
mov r0, #0x9f
lsl r0, r0, #2
ldr r0, [r1, r0]
bl Mail_GetAuthorNamePtr
add r1, r0, #0
mov r0, #0x23
ldr r2, [r5, #0xc]
lsl r0, r0, #4
ldr r0, [r2, r0]
bl CopyU16ArrayToString
mov r1, #0x86
ldr r4, [r5, #0xc]
mov r3, #1
ldr r0, _021EE9C4 ; =0x00010200
str r3, [sp]
str r0, [sp, #4]
mov r2, #0
lsl r1, r1, #2
add r0, r4, r1
str r2, [sp, #8]
add r1, #0x18
ldr r1, [r4, r1]
bl ov103_021EE3E4
mov r0, #0x86
ldr r1, [r5, #0xc]
lsl r0, r0, #2
add r0, r1, r0
bl ScheduleWindowCopyToVram
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
_021EE9C4: .word 0x00010200
thumb_func_end ov103_021EE930
thumb_func_start ov103_021EE9C8
ov103_021EE9C8: ; 0x021EE9C8
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r5, r0, #0
ldrb r0, [r5, #0x1f]
add r4, r1, #0
ldr r1, [r5, #0xc]
lsl r0, r0, #2
add r1, r1, r0
mov r0, #0x9f
lsl r0, r0, #2
ldr r0, [r1, r0]
lsl r1, r2, #0x18
lsr r1, r1, #0x18
bl Mail_GetUnk20Array
add r6, r0, #0
bl MailMsg_IsInit
cmp r0, #0
beq _021EEA1C
add r0, r6, #0
mov r1, #0x9d
bl MailMsg_GetExpandedString
add r6, r0, #0
mov r0, #1
str r0, [sp]
ldr r0, _021EEA20 ; =0x00010200
mov r2, #0
str r0, [sp, #4]
str r2, [sp, #8]
ldr r1, [r5, #0xc]
lsl r0, r4, #4
add r1, #0x48
add r0, r1, r0
add r1, r6, #0
add r3, r2, #0
bl ov103_021EE3E4
add r0, r6, #0
bl String_Delete
_021EEA1C:
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.balign 4, 0
_021EEA20: .word 0x00010200
thumb_func_end ov103_021EE9C8
thumb_func_start ov103_021EEA24
ov103_021EEA24: ; 0x021EEA24
push {r3, lr}
ldr r1, [r0, #0xc]
ldr r0, _021EEA40 ; =0x000002E2
ldrh r0, [r1, r0]
cmp r0, #0
bne _021EEA36
mov r0, #0
mvn r0, r0
pop {r3, pc}
_021EEA36:
ldr r0, _021EEA44 ; =ov103_021EEFBC
bl TouchscreenHitbox_FindRectAtTouchNew
pop {r3, pc}
nop
_021EEA40: .word 0x000002E2
_021EEA44: .word ov103_021EEFBC
thumb_func_end ov103_021EEA24
thumb_func_start ov103_021EEA48
ov103_021EEA48: ; 0x021EEA48
push {r4, r5, lr}
sub sp, #0xc
add r5, r0, #0
ldr r1, [r5, #0xc]
ldr r0, _021EEA90 ; =0x000002E2
ldrh r1, [r1, r0]
ldrh r0, [r5, #0x1c]
cmp r0, r1
bls _021EEA60
strh r1, [r5, #0x1c]
mov r4, #0
b _021EEA62
_021EEA60:
ldrb r4, [r5, #0x1e]
_021EEA62:
mov r0, #1
str r0, [sp]
lsl r0, r4, #0x18
lsr r0, r0, #0x18
str r0, [sp, #4]
mov r0, #0x9d
str r0, [sp, #8]
ldr r0, _021EEA94 ; =ov103_021EEFD8
ldr r1, _021EEA98 ; =ov103_021EF008
ldr r2, _021EEA9C ; =ov103_021EEFC8
add r3, r5, #0
bl sub_02019BA4
mov r1, #0x9e
ldr r2, [r5, #0xc]
lsl r1, r1, #2
str r0, [r2, r1]
add r0, r5, #0
add r1, r4, #0
bl ov103_021EEAC8
add sp, #0xc
pop {r4, r5, pc}
.balign 4, 0
_021EEA90: .word 0x000002E2
_021EEA94: .word ov103_021EEFD8
_021EEA98: .word ov103_021EF008
_021EEA9C: .word ov103_021EEFC8
thumb_func_end ov103_021EEA48
thumb_func_start ov103_021EEAA0
ov103_021EEAA0: ; 0x021EEAA0
ldr r1, [r0, #0xc]
mov r0, #0x9e
lsl r0, r0, #2
ldr r3, _021EEAAC ; =sub_02019BDC
ldr r0, [r1, r0]
bx r3
.balign 4, 0
_021EEAAC: .word sub_02019BDC
thumb_func_end ov103_021EEAA0
thumb_func_start ov103_021EEAB0
ov103_021EEAB0: ; 0x021EEAB0
bx lr
.balign 4, 0
thumb_func_end ov103_021EEAB0
thumb_func_start ov103_021EEAB4
ov103_021EEAB4: ; 0x021EEAB4
bx lr
.balign 4, 0
thumb_func_end ov103_021EEAB4
thumb_func_start ov103_021EEAB8
ov103_021EEAB8: ; 0x021EEAB8
ldr r3, _021EEABC ; =ov103_021EEAC8
bx r3
.balign 4, 0
_021EEABC: .word ov103_021EEAC8
thumb_func_end ov103_021EEAB8
thumb_func_start ov103_021EEAC0
ov103_021EEAC0: ; 0x021EEAC0
ldr r3, _021EEAC4 ; =ov103_021EEAC8
bx r3
.balign 4, 0
_021EEAC4: .word ov103_021EEAC8
thumb_func_end ov103_021EEAC0
thumb_func_start ov103_021EEAC8
ov103_021EEAC8: ; 0x021EEAC8
push {r3, r4, r5, lr}
add r5, r0, #0
mov r0, #0x9e
ldr r2, [r5, #0xc]
lsl r0, r0, #2
ldr r0, [r2, r0]
add r4, r1, #0
bl sub_0201A018
add r3, r0, #0
ldrb r2, [r3]
ldrb r3, [r3, #1]
ldr r0, [r5, #0xc]
mov r1, #2
bl ov103_021EE0F8
cmp r4, #0xa
ldr r0, [r5, #0xc]
bne _021EEAF8
mov r1, #2
mov r2, #4
bl ov103_021EE0AC
pop {r3, r4, r5, pc}
_021EEAF8:
mov r1, #2
mov r2, #5
bl ov103_021EE0AC
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ov103_021EEAC8
thumb_func_start ov103_021EEB04
ov103_021EEB04: ; 0x021EEB04
push {r3, lr}
ldr r0, _021EEB2C ; =ov103_021EEFB4
bl TouchscreenHitbox_FindRectAtTouchNew
mov r1, #0
mvn r1, r1
cmp r0, r1
beq _021EEB18
mov r0, #1
pop {r3, pc}
_021EEB18:
ldr r0, _021EEB30 ; =gSystem
ldr r1, [r0, #0x48]
mov r0, #3
tst r0, r1
beq _021EEB26
mov r0, #1
pop {r3, pc}
_021EEB26:
mov r0, #0
pop {r3, pc}
nop
_021EEB2C: .word ov103_021EEFB4
_021EEB30: .word gSystem
thumb_func_end ov103_021EEB04
.rodata
_021EEB34:
.byte 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xFD, 0x02, 0xE2, 0x02, 0xA9, 0x00
ov103_021EEB40: ; 0x021EEB40
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov103_021EEB50: ; 0x021EEB50
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1E, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov103_021EEB6C: ; 0x021EEB6C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1D, 0x00
.byte 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov103_021EEB88: ; 0x021EEB88
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1D, 0x00, 0x00, 0x02, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov103_021EEBA4: ; 0x021EEBA4
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov103_021EEBC0: ; 0x021EEBC0
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1F, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov103_021EEBDC: ; 0x021EEBDC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0x06
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov103_021EEBF8: ; 0x021EEBF8
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0x00, 0x00, 0x03, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov103_021EEC14: ; 0x021EEC14
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov103_021EEC30: ; 0x021EEC30
.byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
ov103_021EEC58: ; 0x021EEC58
.word ov55_UnkApp_Init, ov55_UnkApp_Main, ov55_UnkApp_Exit, FS_OVERLAY_ID(OVY_55)
ov103_021EEC68: ; 0x021EEC68
.word ov103_021EDDE4, ov103_021ED9D8
.word ov103_021EDE5C, ov103_021EDE7C
ov103_021EEC78: ; 0x021EEC78
.word ov103_021EDCC8, ov103_021EDCE0, 0
.word ov103_021EDCC8, ov103_021EDD14, 20
.word ov103_021EDD54, ov103_021EDD98, 23
.word ov103_021EDCC8, ov103_021EDD48, 0
ov103_021EECA8: ; 0x021EECA8
.word ov103_021ED314
.word ov103_021ED3E8
.word ov103_021ED460
.word ov103_021ED47C
.word ov103_021ED4D4
.word ov103_021ED53C
.word ov103_021ED550
.word ov103_021ED568
.word ov103_021ED5A8
.word ov103_021ED5B4
.word ov103_021ED750
.word ov103_021ED760
.word ov103_021ED7A4
.word ov103_021ED7D8
.word ov103_021ED7E4
.word ov103_021ED8D0
.word ov103_021ED8F8
.word ov103_021ED930
.word ov103_021ED93C
.word ov103_021ED954
.word ov103_021ED960
.word ov103_021ED97C
.word ov103_021ED99C
.word ov103_021ED9AC
.word ov103_021ED9D8
ov103_021EED0C: ; 0x021EED0C
.byte 0x00, 0x04, 0x00, 0x00
.byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
ov103_021EED20: ; 0x021EED20
.byte 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
ov103_021EED38: ; 0x021EED38
.byte 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
ov103_021EED58: ; 0x021EED58
.byte 0x18, 0x00, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xF3, 0x37, 0x00, 0x00
.byte 0xF1, 0x37, 0x00, 0x00, 0xF1, 0x37, 0x00, 0x00, 0xF1, 0x37, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0xB0, 0x00
.byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0xF3, 0x37, 0x00, 0x00, 0xF1, 0x37, 0x00, 0x00, 0xF1, 0x37, 0x00, 0x00, 0xF1, 0x37, 0x00, 0x00
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x40, 0x00, 0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0xF3, 0x37, 0x00, 0x00, 0xF1, 0x37, 0x00, 0x00, 0xF1, 0x37, 0x00, 0x00
.byte 0xF1, 0x37, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0xB0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xF3, 0x37, 0x00, 0x00, 0xF1, 0x37, 0x00, 0x00
.byte 0xF1, 0x37, 0x00, 0x00, 0xF1, 0x37, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xF0, 0x37, 0x00, 0x00
.byte 0xF0, 0x37, 0x00, 0x00, 0xF0, 0x37, 0x00, 0x00, 0xF0, 0x37, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0xA0, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0xF1, 0x37, 0x00, 0x00, 0xF0, 0x37, 0x00, 0x00, 0xF0, 0x37, 0x00, 0x00, 0xF0, 0x37, 0x00, 0x00
.byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x30, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00, 0xF2, 0x37, 0x00, 0x00, 0xF0, 0x37, 0x00, 0x00, 0xF0, 0x37, 0x00, 0x00
.byte 0xF0, 0x37, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
ov103_021EEEC4: ; 0x021EEEC4
.byte 0x02, 0x04, 0x01, 0x08, 0x02, 0x01, 0xF0, 0x03, 0x02, 0x04, 0x01, 0x08
.byte 0x02, 0x01, 0xE0, 0x03, 0x02, 0x04, 0x01, 0x08, 0x02, 0x01, 0xD0, 0x03, 0x02, 0x04, 0x01, 0x08
.byte 0x02, 0x01, 0xC0, 0x03, 0x02, 0x04, 0x01, 0x08, 0x02, 0x01, 0xB0, 0x03, 0x02, 0x04, 0x01, 0x08
.byte 0x02, 0x01, 0xA0, 0x03, 0x02, 0x04, 0x01, 0x08, 0x02, 0x01, 0x90, 0x03, 0x02, 0x04, 0x01, 0x08
.byte 0x02, 0x01, 0x80, 0x03, 0x02, 0x04, 0x01, 0x08, 0x02, 0x01, 0x70, 0x03, 0x02, 0x04, 0x01, 0x08
.byte 0x02, 0x01, 0x60, 0x03, 0x02, 0x04, 0x01, 0x08, 0x02, 0x01, 0x50, 0x03, 0x02, 0x04, 0x01, 0x08
.byte 0x02, 0x01, 0x40, 0x03, 0x02, 0x04, 0x01, 0x08, 0x02, 0x01, 0x30, 0x03, 0x02, 0x04, 0x01, 0x08
.byte 0x02, 0x01, 0x20, 0x03, 0x02, 0x04, 0x01, 0x08, 0x02, 0x01, 0x10, 0x03, 0x02, 0x04, 0x01, 0x08
.byte 0x02, 0x01, 0x00, 0x03, 0x02, 0x04, 0x01, 0x08, 0x02, 0x01, 0xF0, 0x02, 0x02, 0x04, 0x01, 0x08
.byte 0x02, 0x01, 0xE0, 0x02, 0x02, 0x04, 0x01, 0x08, 0x02, 0x01, 0xD0, 0x02, 0x02, 0x04, 0x01, 0x08
.byte 0x02, 0x01, 0xC0, 0x02, 0x01, 0x04, 0x01, 0x08, 0x02, 0x01, 0xF0, 0x03, 0x01, 0x19, 0x15, 0x06
.byte 0x02, 0x0F, 0xE4, 0x03, 0x01, 0x19, 0x15, 0x06, 0x02, 0x0F, 0xD8, 0x03, 0x01, 0x0A, 0x15, 0x05
.byte 0x02, 0x0F, 0xCE, 0x03, 0x00, 0x02, 0x13, 0x1B, 0x04, 0x0E, 0x01, 0x00, 0x06, 0x01, 0x01, 0x0B
.byte 0x02, 0x0F, 0x01, 0x00, 0x04, 0x03, 0x03, 0x1A, 0x04, 0x01, 0x01, 0x00, 0x04, 0x03, 0x08, 0x1A
.byte 0x04, 0x01, 0x69, 0x00, 0x04, 0x03, 0x0D, 0x1A, 0x04, 0x01, 0xD1, 0x00, 0x04, 0x15, 0x14, 0x08
.byte 0x02, 0x01, 0x39, 0x01
ov103_021EEFB4: ; 0x021EEFB4
.byte 0xA0, 0xBF, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00
ov103_021EEFBC: ; 0x021EEFBC
.byte 0xA0, 0xBF, 0x08, 0x27
.byte 0xA0, 0xBF, 0x28, 0x47, 0xFF, 0x00, 0x00, 0x00
ov103_021EEFC8: ; 0x021EEFC8
.word ov103_021EEAB0
.word ov103_021EEAB4
.word ov103_021EEAB8
.word ov103_021EEAC0
ov103_021EEFD8: ; 0x021EEFD8
.byte 0x00, 0x1F, 0x08, 0x77, 0x00, 0x1F, 0x88, 0xF4
.byte 0x20, 0x3F, 0x08, 0x77, 0x20, 0x3F, 0x88, 0xF4, 0x40, 0x5F, 0x08, 0x77, 0x40, 0x5F, 0x88, 0xF4
.byte 0x60, 0x7F, 0x08, 0x77, 0x60, 0x7F, 0x88, 0xF4, 0x80, 0x9F, 0x08, 0x77, 0x80, 0x9F, 0x88, 0xF4
.byte 0xA0, 0xBF, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00
ov103_021EF008: ; 0x021EF008
.byte 0x40, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01
.byte 0xC0, 0x10, 0x00, 0x00, 0x01, 0x03, 0x00, 0x01, 0x40, 0x30, 0x00, 0x00, 0x00, 0x04, 0x02, 0x03
.byte 0xC0, 0x30, 0x00, 0x00, 0x01, 0x05, 0x02, 0x03, 0x40, 0x50, 0x00, 0x00, 0x02, 0x06, 0x04, 0x05
.byte 0xC0, 0x50, 0x00, 0x00, 0x03, 0x07, 0x04, 0x05, 0x40, 0x70, 0x00, 0x00, 0x04, 0x08, 0x06, 0x07
.byte 0xC0, 0x70, 0x00, 0x00, 0x05, 0x09, 0x06, 0x07, 0x40, 0x90, 0x00, 0x00, 0x06, 0x0A, 0x08, 0x09
.byte 0xC0, 0x90, 0x00, 0x00, 0x07, 0x0A, 0x08, 0x09, 0xE0, 0xB0, 0x00, 0x00, 0x89, 0x0A, 0x0A, 0x0A
; 0x021EF060