pokediamond/arm9/asm/unk_02052EE8.s

963 lines
17 KiB
ArmAsm

.include "asm/macros.inc"
.include "global.inc"
.extern UNK_020F58D4
.section .bss
.global UNK_021C5ABC
UNK_021C5ABC: ; 0x021C5ABC
.space 0x4
.text
thumb_func_start sub_02052EE8
sub_02052EE8: ; 0x02052EE8
push {r3-r5, lr}
ldr r1, _02052F58 ; =0x000004E8
add r5, r0, #0x0
mov r0, #0x1f
bl Heap_Alloc
add r4, r0, #0x0
ldr r2, _02052F58 ; =0x000004E8
mov r0, #0x0
add r1, r4, #0x0
bl MIi_CpuClearFast
mov r0, #0x4e
str r5, [r4, #0x0]
mov r1, #0x1
lsl r0, r0, #0x4
str r1, [r4, r0]
ldr r0, _02052F5C ; =sub_02052FC8
add r1, r4, #0x0
mov r2, #0xb
bl SysTask_CreateOnMainQueue
str r0, [r4, #0x4]
add r0, r5, #0x0
bl sub_020524BC
ldr r1, _02052F60 ; =0x000004D4
str r0, [r4, r1]
ldr r0, [r4, r1]
mov r1, #0x9
ldr r0, [r0, #0xc]
bl SaveArray_Get
ldr r1, _02052F64 ; =0x000004D8
ldr r2, _02052F68 ; =0x00002710
str r0, [r4, r1]
sub r0, r1, #0x4
ldr r0, [r4, r0]
mov r1, #0x59
ldr r0, [r0, #0x38]
str r0, [r4, #0x8]
mov r0, #0xb
bl Heap_CreateAtEnd
mov r0, #0x59
bl sub_02053618
ldr r1, _02052F6C ; =0x000004DC
str r0, [r4, r1]
add r0, r4, #0x0
bl sub_02052F8C
ldr r0, _02052F70 ; =UNK_021C5ABC
str r4, [r0, #0x0]
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
_02052F58: .word 0x000004E8
_02052F5C: .word sub_02052FC8
_02052F60: .word 0x000004D4
_02052F64: .word 0x000004D8
_02052F68: .word 0x00002710
_02052F6C: .word 0x000004DC
_02052F70: .word UNK_021C5ABC
thumb_func_start sub_02052F74
sub_02052F74: ; 0x02052F74
mov r3, #0x0
mov r1, #0x3
_02052F78:
ldrb r2, [r0, #0xd]
cmp r2, #0x0
beq _02052F80
strb r1, [r0, #0xc]
_02052F80:
add r3, r3, #0x1
add r0, #0x18
cmp r3, #0x33
blt _02052F78
bx lr
.balign 4
thumb_func_start sub_02052F8C
sub_02052F8C: ; 0x02052F8C
mov r2, #0x0
add r1, r2, #0x0
_02052F90:
strb r1, [r0, #0xc]
strb r1, [r0, #0xd]
strb r1, [r0, #0xe]
strb r1, [r0, #0xf]
add r2, r2, #0x1
add r0, #0x18
cmp r2, #0x33
blt _02052F90
bx lr
.balign 4
thumb_func_start sub_02052FA4
sub_02052FA4: ; 0x02052FA4
push {r4, lr}
add r4, r0, #0x0
ldr r0, [r4, #0x4]
bl SysTask_Destroy
ldr r0, _02052FC4 ; =0x000004DC
ldr r0, [r4, r0]
bl sub_0205362C
mov r0, #0x59
bl Heap_Destroy
add r0, r4, #0x0
bl Heap_Free
pop {r4, pc}
.balign 4
_02052FC4: .word 0x000004DC
thumb_func_start sub_02052FC8
sub_02052FC8: ; 0x02052FC8
push {r3-r5, lr}
ldr r0, _02052FFC ; =0x000004D4
add r5, r1, #0x0
ldr r0, [r5, r0]
ldr r4, [r5, #0x0]
bl sub_0204646C
cmp r0, #0x0
bne _02052FF8
ldr r3, _02052FFC ; =0x000004D4
add r0, r5, #0x0
ldr r2, [r5, r3]
add r3, r3, #0x4
ldr r2, [r2, #0x34]
ldr r3, [r5, r3]
add r1, r4, #0x0
bl sub_0205312C
ldr r1, _02052FFC ; =0x000004D4
add r0, r5, #0x0
ldr r1, [r5, r1]
ldr r1, [r1, #0x34]
bl sub_020531E4
_02052FF8:
pop {r3-r5, pc}
nop
_02052FFC: .word 0x000004D4
thumb_func_start sub_02053000
sub_02053000: ; 0x02053000
push {r4-r7, lr}
sub sp, #0x14
mov r5, #0x0
str r0, [sp, #0x0]
str r3, [sp, #0x4]
cmp r2, #0x0
bne _02053034
ldr r0, _02053100 ; =UNK_020F58D4
lsl r1, r1, #0x1
ldrh r4, [r0, r1]
ldr r0, [sp, #0x0]
mov r6, #0x3
add r0, #0xc
str r0, [sp, #0x0]
_0205301C:
ldr r0, [sp, #0x0]
add r1, r4, #0x0
add r2, r6, #0x0
bl sub_02053104
add r5, r5, #0x1
add r4, r4, #0x1
cmp r5, #0x4
blt _0205301C
add sp, #0x14
mov r0, #0x0
pop {r4-r7, pc}
_02053034:
add r0, r2, #0x0
str r0, [sp, #0xc]
add r0, #0x50
str r0, [sp, #0xc]
add r0, #0x30
str r0, [sp, #0xc]
ldr r0, [r2, #0x50]
mov r2, #0x18
add r3, r1, #0x0
mul r3, r2
ldr r2, [sp, #0x0]
add r2, r2, r3
ldr r2, [r2, #0x18]
cmp r0, r2
beq _02053078
ldr r0, _02053100 ; =UNK_020F58D4
lsl r1, r1, #0x1
ldrh r4, [r0, r1]
ldr r0, [sp, #0x0]
mov r6, #0x3
add r0, #0xc
str r0, [sp, #0x0]
_02053060:
ldr r0, [sp, #0x0]
add r1, r4, #0x0
add r2, r6, #0x0
bl sub_02053104
add r5, r5, #0x1
add r4, r4, #0x1
cmp r5, #0x4
blt _02053060
add sp, #0x14
mov r0, #0x0
pop {r4-r7, pc}
_02053078:
ldr r0, _02053100 ; =UNK_020F58D4
lsl r1, r1, #0x1
ldrh r7, [r0, r1]
ldr r0, [sp, #0xc]
add r6, r5, #0x0
str r0, [sp, #0x8]
ldr r0, [sp, #0x0]
str r0, [sp, #0x10]
add r0, #0xc
str r0, [sp, #0x10]
_0205308C:
mov r0, #0x18
add r1, r7, #0x0
mul r1, r0
ldr r0, [sp, #0x0]
add r4, r0, r1
ldrb r0, [r4, #0xd]
cmp r0, #0x0
beq _020530A6
cmp r0, #0x2
beq _020530CC
cmp r0, #0x4
beq _020530E6
b _020530EA
_020530A6:
ldr r0, [sp, #0xc]
add r1, r0, r6
ldrb r0, [r1, #0x18]
cmp r0, #0x0
beq _020530EA
mov r0, #0x2
strb r0, [r4, #0xc]
ldrb r1, [r1, #0x18]
mov r0, #0x7f
and r0, r1
strb r0, [r4, #0x14]
ldr r1, [sp, #0x8]
ldr r0, [sp, #0x4]
ldr r1, [r1, #0x0]
bl sub_02025614
strb r0, [r4, #0xe]
mov r5, #0x1
b _020530EA
_020530CC:
ldr r0, [sp, #0xc]
add r0, r0, r6
ldrb r0, [r0, #0x18]
cmp r0, #0x0
bne _020530E2
ldr r0, [sp, #0x10]
add r1, r7, #0x0
mov r2, #0x3
bl sub_02053104
b _020530EA
_020530E2:
mov r5, #0x1
b _020530EA
_020530E6:
mov r0, #0x0
strb r0, [r4, #0xc]
_020530EA:
ldr r0, [sp, #0x8]
add r6, r6, #0x1
add r0, r0, #0x4
add r7, r7, #0x1
str r0, [sp, #0x8]
cmp r6, #0x4
blt _0205308C
add r0, r5, #0x0
add sp, #0x14
pop {r4-r7, pc}
nop
_02053100: .word UNK_020F58D4
thumb_func_start sub_02053104
sub_02053104: ; 0x02053104
push {r4-r6, lr}
ldr r6, _02053124 ; =UNK_021C5ABC
mov r4, #0x18
ldr r3, [r6, #0x0]
ldr r5, _02053128 ; =0x000004D4
mul r4, r1
ldr r3, [r3, r5]
strb r2, [r0, r4]
ldr r0, [r6, #0x0]
ldr r0, [r0, r5]
cmp r3, r0
beq _02053120
bl GF_AssertFail
_02053120:
pop {r4-r6, pc}
nop
_02053124: .word UNK_021C5ABC
_02053128: .word 0x000004D4
thumb_func_start sub_0205312C
sub_0205312C: ; 0x0205312C
push {r4-r7, lr}
sub sp, #0x14
str r0, [sp, #0x0]
add r5, r0, #0x0
str r0, [sp, #0x10]
add r0, #0xc
str r1, [sp, #0x4]
str r3, [sp, #0x8]
mov r4, #0x0
str r0, [sp, #0x10]
_02053140:
ldr r0, [sp, #0x4]
add r1, r4, #0x0
bl sub_020524C0
add r6, r0, #0x0
add r7, r6, #0x0
add r7, #0x50
add r0, r7, #0x0
str r0, [sp, #0xc]
add r0, #0x10
str r0, [sp, #0xc]
ldrb r0, [r5, #0xd]
cmp r0, #0x0
beq _02053166
cmp r0, #0x2
beq _020531A2
cmp r0, #0x4
beq _020531D4
b _020531D8
_02053166:
cmp r6, #0x0
beq _020531D8
ldr r0, [sp, #0xc]
bl PlayerProfile_GetAvatar
strb r0, [r5, #0x14]
ldr r0, [sp, #0xc]
bl PlayerProfile_GetTrainerID
add r1, r0, #0x0
ldr r0, [sp, #0x8]
bl sub_02025614
strb r0, [r5, #0xe]
ldr r0, [r7, #0x0]
ldr r3, [sp, #0x8]
str r0, [r5, #0x18]
ldr r0, [sp, #0x0]
add r1, r4, #0x0
add r2, r6, #0x0
bl sub_02053000
cmp r0, #0x0
beq _0205319C
mov r0, #0x2
strb r0, [r5, #0xc]
b _020531D8
_0205319C:
mov r0, #0x1
strb r0, [r5, #0xc]
b _020531D8
_020531A2:
cmp r6, #0x0
beq _020531AE
ldr r1, [r7, #0x0]
ldr r0, [r5, #0x18]
cmp r1, r0
beq _020531B8
_020531AE:
ldr r0, [sp, #0x10]
add r1, r4, #0x0
mov r2, #0x3
bl sub_02053104
_020531B8:
ldr r0, [sp, #0x0]
ldr r3, [sp, #0x8]
add r1, r4, #0x0
add r2, r6, #0x0
bl sub_02053000
cmp r0, #0x0
beq _020531D8
ldrb r0, [r5, #0x15]
cmp r0, #0x1
bne _020531D8
mov r0, #0x3
strb r0, [r5, #0xc]
b _020531D8
_020531D4:
mov r0, #0x0
strb r0, [r5, #0xc]
_020531D8:
add r4, r4, #0x1
add r5, #0x18
cmp r4, #0xa
blt _02053140
add sp, #0x14
pop {r4-r7, pc}
thumb_func_start sub_020531E4
sub_020531E4: ; 0x020531E4
push {r3-r7, lr}
sub sp, #0x10
str r0, [sp, #0x0]
ldr r0, [r0, #0x8]
str r1, [sp, #0x4]
bl PlayerAvatar_GetXCoord
str r0, [sp, #0xc]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0x8]
bl PlayerAvatar_GetZCoord
ldr r4, [sp, #0x0]
str r0, [sp, #0x8]
add r6, r4, #0x0
mov r7, #0x0
add r6, #0xc
_02053206:
ldr r0, [sp, #0x4]
add r1, r7, #0x1
bl MapObjectManager_GetFirstActiveObjectByID
add r5, r0, #0x0
bne _02053216
bl GF_AssertFail
_02053216:
ldrb r0, [r4, #0xd]
cmp r0, #0x4
bhi _0205330A
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #0x6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02053228: ; jump table (using 16-bit offset)
.short _02053232 - _02053228 - 2; case 0
.short _02053252 - _02053228 - 2; case 1
.short _020532B2 - _02053228 - 2; case 2
.short _020532DA - _02053228 - 2; case 3
.short _02053306 - _02053228 - 2; case 4
_02053232:
add r0, r5, #0x0
bl sub_0205AD98
cmp r0, #0x1
bne _0205330A
ldrb r0, [r4, #0xc]
sub r0, r0, #0x1
cmp r0, #0x1
bhi _0205330A
ldr r2, [sp, #0xc]
ldr r3, [sp, #0x8]
add r0, r6, #0x0
add r1, r5, #0x0
bl sub_0205339C
b _0205330A
_02053252:
add r0, r5, #0x0
bl sub_0205AD98
cmp r0, #0x1
bne _0205330A
ldrb r0, [r4, #0xc]
cmp r0, #0x3
bne _02053272
mov r0, #0x0
strb r0, [r4, #0xd]
strb r0, [r4, #0xc]
add r0, r6, #0x0
mov r1, #0x1
bl sub_0205333C
b _0205330A
_02053272:
add r0, r5, #0x0
bl sub_0205AE50
add r0, r5, #0x0
mov r1, #0x0
bl MapObject_SetFlag19
ldrb r0, [r4, #0xc]
cmp r0, #0x1
bne _020532A8
ldrb r0, [r4, #0x15]
cmp r0, #0x0
bne _020532A8
add r0, r5, #0x0
mov r1, #0x3
bl sub_02058E90
add r0, r5, #0x0
mov r1, #0x1
bl MapObject_SetXRange
add r0, r5, #0x0
mov r1, #0x1
bl MapObject_SetYRange
mov r0, #0x1
strb r0, [r4, #0x15]
_020532A8:
mov r0, #0x2
strb r0, [r4, #0xd]
mov r0, #0x0
strb r0, [r4, #0xc]
b _0205330A
_020532B2:
add r0, r5, #0x0
bl sub_0205AD98
cmp r0, #0x1
bne _0205330A
add r0, r6, #0x0
add r1, r5, #0x0
bl sub_02053478
ldrb r0, [r4, #0xc]
cmp r0, #0x3
bne _020532D2
add r0, r6, #0x0
add r1, r5, #0x0
bl sub_02053444
_020532D2:
add r0, r6, #0x0
bl sub_02053378
b _0205330A
_020532DA:
add r0, r5, #0x0
bl sub_0205AD98
cmp r0, #0x1
bne _0205330A
add r0, r5, #0x0
bl sub_0205AE50
mov r0, #0x4
strb r0, [r4, #0xd]
mov r0, #0x0
strb r0, [r4, #0xc]
strb r0, [r4, #0x15]
add r0, r5, #0x0
mov r1, #0x1
bl MapObject_SetVisible
add r0, r5, #0x0
mov r1, #0x0
bl MapObject_ClearFlag18
b _0205330A
_02053306:
mov r0, #0x0
strb r0, [r4, #0xd]
_0205330A:
add r7, r7, #0x1
add r4, #0x18
add r6, #0x18
cmp r7, #0x32
bge _02053316
b _02053206
_02053316:
ldr r0, [sp, #0x0]
ldr r0, [r0, #0x8]
bl PlayerAvatar_GetMapObject
add r1, r0, #0x0
ldr r2, _02053338 ; =0x000004BC
ldr r0, [sp, #0x0]
add r0, r0, r2
bl sub_02053478
ldr r1, _02053338 ; =0x000004BC
ldr r0, [sp, #0x0]
add r0, r0, r1
bl sub_02053378
add sp, #0x10
pop {r3-r7, pc}
.balign 4
_02053338: .word 0x000004BC
thumb_func_start sub_0205333C
sub_0205333C: ; 0x0205333C
push {r3-r5, lr}
add r5, r0, #0x0
ldr r0, [r5, #0x10]
add r4, r1, #0x0
cmp r0, #0x0
beq _0205335A
bl sub_020646A0
cmp r0, #0x0
beq _02053356
ldr r0, [r5, #0x10]
bl sub_02064520
_02053356:
mov r0, #0x0
str r0, [r5, #0x10]
_0205335A:
cmp r4, #0x0
beq _02053376
ldr r0, [r5, #0x14]
cmp r0, #0x0
beq _02053376
bl sub_020646A0
cmp r0, #0x0
beq _02053372
ldr r0, [r5, #0x14]
bl sub_02064520
_02053372:
mov r0, #0x0
str r0, [r5, #0x14]
_02053376:
pop {r3-r5, pc}
thumb_func_start sub_02053378
sub_02053378: ; 0x02053378
push {r4, lr}
add r4, r0, #0x0
ldrb r1, [r4, #0x4]
cmp r1, #0x0
beq _02053398
ldrh r1, [r4, #0x6]
sub r1, r1, #0x1
strh r1, [r4, #0x6]
ldrh r1, [r4, #0x6]
cmp r1, #0x0
bne _02053398
mov r1, #0x0
bl sub_0205333C
mov r0, #0x0
strb r0, [r4, #0x4]
_02053398:
pop {r4, pc}
.balign 4
thumb_func_start sub_0205339C
sub_0205339C: ; 0x0205339C
push {r3-r7, lr}
sub sp, #0x10
add r4, r1, #0x0
add r5, r0, #0x0
add r0, r4, #0x0
str r2, [sp, #0x4]
str r3, [sp, #0x8]
bl MapObject_GetInitialX
add r7, r0, #0x0
add r0, r4, #0x0
bl MapObject_GetInitialY
str r0, [sp, #0xc]
add r0, r4, #0x0
bl MapObject_GetInitialZ
add r6, r0, #0x0
ldr r0, [sp, #0x4]
cmp r7, r0
bne _020533CC
ldr r0, [sp, #0x8]
cmp r6, r0
beq _0205343C
_020533CC:
ldr r0, _02053440 ; =0x0000064F
bl PlaySE
ldrb r1, [r5, #0x8]
add r0, r4, #0x0
bl sub_02057634
add r0, r5, #0x0
mov r1, #0x0
bl sub_0205333C
mov r0, #0x1
str r0, [sp, #0x0]
ldr r2, [sp, #0xc]
add r0, r4, #0x0
add r1, r7, #0x0
add r3, r6, #0x0
bl MapObject_SetPositionFromXYZAndDirection
add r0, r4, #0x0
mov r1, #0x1
bl MapObject_SetFacingDirectionDirect
add r0, r4, #0x0
mov r1, #0x44
bl sub_0205ADDC
add r0, r4, #0x0
mov r1, #0x0
bl MapObject_SetVisible
add r0, r4, #0x0
mov r1, #0x1
bl MapObject_ClearFlag18
mov r1, #0x1
strb r1, [r5, #0x1]
ldrb r0, [r5, #0x2]
cmp r0, #0x0
beq _0205343C
cmp r0, #0x1
bne _0205342A
add r0, r4, #0x0
bl ov06_02249668
str r0, [r5, #0x14]
b _02053438
_0205342A:
cmp r0, #0x2
blo _02053438
add r0, r4, #0x0
mov r1, #0x2
bl ov06_02249668
str r0, [r5, #0x14]
_02053438:
mov r0, #0x0
strb r0, [r5, #0x2]
_0205343C:
add sp, #0x10
pop {r3-r7, pc}
.balign 4
_02053440: .word 0x0000064F
thumb_func_start sub_02053444
sub_02053444: ; 0x02053444
push {r3-r5, lr}
add r5, r1, #0x0
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x43
bl sub_0205ADDC
add r0, r5, #0x0
mov r1, #0x1
bl MapObject_SetFlag19
add r0, r5, #0x0
mov r1, #0x0
bl sub_02058E90
add r0, r4, #0x0
mov r1, #0x1
bl sub_0205333C
mov r0, #0x0
strb r0, [r4, #0x4]
strh r0, [r4, #0x6]
mov r0, #0x3
strb r0, [r4, #0x1]
pop {r3-r5, pc}
.balign 4
thumb_func_start sub_02053478
sub_02053478: ; 0x02053478
push {r4, lr}
add r4, r0, #0x0
ldrb r0, [r4, #0x3]
cmp r0, #0x1
bne _0205349C
ldrb r0, [r4, #0x4]
cmp r0, #0x0
bne _0205349C
add r0, r1, #0x0
bl ov05_021EDA48
str r0, [r4, #0x10]
mov r0, #0x1e
strh r0, [r4, #0x6]
mov r0, #0x0
strb r0, [r4, #0x3]
mov r0, #0x1
strb r0, [r4, #0x4]
_0205349C:
pop {r4, pc}
.balign 4
thumb_func_start sub_020534A0
sub_020534A0: ; 0x020534A0
push {r3-r7, lr}
add r5, r1, #0x0
add r6, r2, #0x0
add r7, r0, #0x0
cmp r5, r6
bge _020534DA
_020534AC:
add r0, r7, #0x0
add r1, r5, #0x0
bl MapObjectManager_GetFirstActiveObjectByID
add r4, r0, #0x0
bne _020534BC
bl GF_AssertFail
_020534BC:
add r0, r4, #0x0
mov r1, #0x1
bl MapObject_SetVisible
add r0, r4, #0x0
mov r1, #0x0
bl MapObject_ClearFlag18
add r0, r4, #0x0
mov r1, #0x1
bl MapObject_SetFlag19
add r5, r5, #0x1
cmp r5, r6
blt _020534AC
_020534DA:
pop {r3-r7, pc}
thumb_func_start sub_020534DC
sub_020534DC: ; 0x020534DC
push {r3-r7, lr}
add r5, r1, #0x0
mov r1, #0x0
add r7, r0, #0x0
bl MapObjectManager_GetFirstActiveObjectByID
add r4, r0, #0x0
bne _020534F0
bl GF_AssertFail
_020534F0:
add r0, r4, #0x0
bl sub_0205AD98
cmp r0, #0x1
bne _02053596
bl sub_02031B2C
cmp r0, #0x0
bne _0205350A
bl sub_02031AF4
cmp r0, #0x0
beq _0205358C
_0205350A:
mov r6, #0x0
add r5, #0xc
_0205350E:
ldrb r0, [r5, #0x1]
cmp r0, #0x1
bne _02053578
add r0, r7, #0x0
add r1, r6, #0x1
bl MapObjectManager_GetFirstActiveObjectByID
add r4, r0, #0x0
bne _02053524
bl GF_AssertFail
_02053524:
ldrb r1, [r5, #0x8]
add r0, r4, #0x0
bl sub_02057634
add r0, r4, #0x0
mov r1, #0x1
bl MapObject_SetFacingDirectionDirect
add r0, r4, #0x0
mov r1, #0x44
bl sub_0205ADDC
add r0, r4, #0x0
mov r1, #0x0
bl MapObject_SetVisible
add r0, r4, #0x0
mov r1, #0x1
bl MapObject_ClearFlag18
mov r0, #0x1
strb r0, [r5, #0x1]
ldrb r0, [r5, #0x2]
cmp r0, #0x0
beq _02053578
cmp r0, #0x1
bne _02053566
add r0, r4, #0x0
mov r1, #0x1
bl ov06_02249668
str r0, [r5, #0x14]
b _02053574
_02053566:
cmp r0, #0x2
blo _02053574
add r0, r4, #0x0
mov r1, #0x2
bl ov06_02249668
str r0, [r5, #0x14]
_02053574:
mov r0, #0x0
strb r0, [r5, #0x2]
_02053578:
add r6, r6, #0x1
add r5, #0x18
cmp r6, #0xa
blt _0205350E
add r0, r7, #0x0
mov r1, #0xb
mov r2, #0x33
bl sub_020534A0
pop {r3-r7, pc}
_0205358C:
add r0, r7, #0x0
mov r1, #0x1
mov r2, #0x33
bl sub_020534A0
_02053596:
pop {r3-r7, pc}
thumb_func_start sub_02053598
sub_02053598: ; 0x02053598
push {r4, lr}
add r4, r0, #0x0
mov r0, #0x8
mov r1, #0x59
bl String_New
str r0, [r4, #0x0]
mov r1, #0x0
add r0, r4, #0x0
str r1, [r4, #0x4]
add r0, #0x14
str r1, [r4, #0x8]
bl MailMsg_Init_WithBank
mov r0, #0x0
str r0, [r4, #0x10]
str r0, [r4, #0xc]
pop {r4, pc}
thumb_func_start sub_020535BC
sub_020535BC: ; 0x020535BC
push {r4-r6, lr}
add r6, r0, #0x0
mov r4, #0x0
add r5, r6, #0x0
_020535C4:
add r0, r5, #0x0
bl sub_02053598
add r4, r4, #0x1
add r5, #0x1c
cmp r4, #0x1e
blt _020535C4
mov r0, #0xd2
mov r1, #0x0
lsl r0, r0, #0x2
str r1, [r6, r0]
add r0, r0, #0x4
str r1, [r6, r0]
pop {r4-r6, pc}
thumb_func_start sub_020535E0
sub_020535E0: ; 0x020535E0
push {r4, lr}
add r4, r0, #0x0
ldr r0, [r4, #0x0]
bl Heap_Free
ldr r0, [r4, #0x4]
cmp r0, #0x0
beq _020535F4
bl String_Delete
_020535F4:
ldr r0, [r4, #0x8]
cmp r0, #0x0
beq _020535FE
bl String_Delete
_020535FE:
pop {r4, pc}
thumb_func_start sub_02053600
sub_02053600: ; 0x02053600
push {r3-r5, lr}
add r5, r0, #0x0
mov r4, #0x0
_02053606:
add r0, r5, #0x0
bl sub_020535E0
add r4, r4, #0x1
add r5, #0x1c
cmp r4, #0x1e
blt _02053606
pop {r3-r5, pc}
.balign 4
thumb_func_start sub_02053618
sub_02053618: ; 0x02053618
push {r4, lr}
mov r1, #0x35
lsl r1, r1, #0x4
bl Heap_Alloc
add r4, r0, #0x0
bl sub_020535BC
add r0, r4, #0x0
pop {r4, pc}
thumb_func_start sub_0205362C
sub_0205362C: ; 0x0205362C
push {r4, lr}
add r4, r0, #0x0
bl sub_02053600
add r0, r4, #0x0
bl Heap_Free
pop {r4, pc}