pokeheartgold/asm/unk_0205AC88.s

985 lines
17 KiB
ArmAsm

.include "asm/macros.inc"
.include "unk_0205AC88.inc"
.include "global.inc"
.public _020FC824
.text
thumb_func_start sub_0205AC88
sub_0205AC88: ; 0x0205AC88
push {r3, r4, r5, lr}
ldr r1, _0205ACF4 ; =0x000004E8
add r5, r0, #0
mov r0, #0x1f
bl AllocFromHeap
add r4, r0, #0
ldr r2, _0205ACF4 ; =0x000004E8
mov r0, #0
add r1, r4, #0
bl MIi_CpuClearFast
mov r0, #0x4e
str r5, [r4]
mov r1, #1
lsl r0, r0, #4
str r1, [r4, r0]
ldr r0, _0205ACF8 ; =sub_0205AD60
add r1, r4, #0
mov r2, #0xb
bl SysTask_CreateOnMainQueue
str r0, [r4, #4]
add r0, r5, #0
bl sub_0205A1F0
ldr r1, _0205ACFC ; =0x000004D4
str r0, [r4, r1]
ldr r0, [r4, r1]
mov r1, #8
ldr r0, [r0, #0xc]
bl SaveArray_Get
ldr r1, _0205AD00 ; =0x000004D8
ldr r2, _0205AD04 ; =0x00002710
str r0, [r4, r1]
sub r0, r1, #4
ldr r0, [r4, r0]
mov r1, #0x57
ldr r0, [r0, #0x40]
str r0, [r4, #8]
mov r0, #0xb
bl CreateHeapAtEnd
mov r0, #0x57
bl sub_0205B3B8
ldr r1, _0205AD08 ; =0x000004DC
str r0, [r4, r1]
add r0, r4, #0
bl sub_0205AD24
add r0, r4, #0
pop {r3, r4, r5, pc}
.balign 4, 0
_0205ACF4: .word 0x000004E8
_0205ACF8: .word sub_0205AD60
_0205ACFC: .word 0x000004D4
_0205AD00: .word 0x000004D8
_0205AD04: .word 0x00002710
_0205AD08: .word 0x000004DC
thumb_func_end sub_0205AC88
thumb_func_start sub_0205AD0C
sub_0205AD0C: ; 0x0205AD0C
mov r3, #0
mov r1, #3
_0205AD10:
ldrb r2, [r0, #0xd]
cmp r2, #0
beq _0205AD18
strb r1, [r0, #0xc]
_0205AD18:
add r3, r3, #1
add r0, #0x18
cmp r3, #0x33
blt _0205AD10
bx lr
.balign 4, 0
thumb_func_end sub_0205AD0C
thumb_func_start sub_0205AD24
sub_0205AD24: ; 0x0205AD24
mov r2, #0
add r1, r2, #0
_0205AD28:
strb r1, [r0, #0xc]
strb r1, [r0, #0xd]
strb r1, [r0, #0xe]
strb r1, [r0, #0xf]
add r2, r2, #1
add r0, #0x18
cmp r2, #0x33
blt _0205AD28
bx lr
.balign 4, 0
thumb_func_end sub_0205AD24
thumb_func_start sub_0205AD3C
sub_0205AD3C: ; 0x0205AD3C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #4]
bl SysTask_Destroy
ldr r0, _0205AD5C ; =0x000004DC
ldr r0, [r4, r0]
bl sub_0205B3CC
mov r0, #0x57
bl DestroyHeap
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
.balign 4, 0
_0205AD5C: .word 0x000004DC
thumb_func_end sub_0205AD3C
thumb_func_start sub_0205AD60
sub_0205AD60: ; 0x0205AD60
push {r3, r4, r5, lr}
ldr r0, _0205AD98 ; =0x000004D4
add r5, r1, #0
ldr r0, [r5, r0]
ldr r4, [r5]
bl FieldSystem_TaskIsRunning
cmp r0, #0
bne _0205AD96
ldr r3, _0205AD98 ; =0x000004D4
add r1, r4, #0
ldr r0, [r5, r3]
ldr r0, [r0, #0x40]
str r0, [r5, #8]
ldr r2, [r5, r3]
add r3, r3, #4
ldr r2, [r2, #0x3c]
ldr r3, [r5, r3]
add r0, r5, #0
bl sub_0205AEA8
ldr r1, _0205AD98 ; =0x000004D4
add r0, r5, #0
ldr r1, [r5, r1]
ldr r1, [r1, #0x3c]
bl sub_0205AF78
_0205AD96:
pop {r3, r4, r5, pc}
.balign 4, 0
_0205AD98: .word 0x000004D4
thumb_func_end sub_0205AD60
thumb_func_start sub_0205AD9C
sub_0205AD9C: ; 0x0205AD9C
push {r4, r5, r6, r7, lr}
sub sp, #0x14
mov r5, #0
str r0, [sp]
str r3, [sp, #4]
cmp r2, #0
bne _0205ADD0
ldr r0, _0205AE9C ; =_020FC824
lsl r1, r1, #1
ldrh r4, [r0, r1]
ldr r0, [sp]
mov r6, #3
add r0, #0xc
str r0, [sp]
_0205ADB8:
ldr r0, [sp]
add r1, r4, #0
add r2, r6, #0
bl sub_0205AEA0
add r5, r5, #1
add r4, r4, #1
cmp r5, #4
blt _0205ADB8
add sp, #0x14
mov r0, #0
pop {r4, r5, r6, r7, pc}
_0205ADD0:
add r0, r2, #0
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, #0
mul r3, r2
ldr r2, [sp]
add r2, r2, r3
ldr r2, [r2, #0x18]
cmp r0, r2
beq _0205AE14
ldr r0, _0205AE9C ; =_020FC824
lsl r1, r1, #1
ldrh r4, [r0, r1]
ldr r0, [sp]
mov r6, #3
add r0, #0xc
str r0, [sp]
_0205ADFC:
ldr r0, [sp]
add r1, r4, #0
add r2, r6, #0
bl sub_0205AEA0
add r5, r5, #1
add r4, r4, #1
cmp r5, #4
blt _0205ADFC
add sp, #0x14
mov r0, #0
pop {r4, r5, r6, r7, pc}
_0205AE14:
ldr r0, _0205AE9C ; =_020FC824
lsl r1, r1, #1
ldrh r7, [r0, r1]
ldr r0, [sp, #0xc]
add r6, r5, #0
str r0, [sp, #8]
ldr r0, [sp]
str r0, [sp, #0x10]
add r0, #0xc
str r0, [sp, #0x10]
_0205AE28:
mov r0, #0x18
add r1, r7, #0
mul r1, r0
ldr r0, [sp]
add r4, r0, r1
ldrb r0, [r4, #0xd]
cmp r0, #0
beq _0205AE42
cmp r0, #2
beq _0205AE68
cmp r0, #4
beq _0205AE82
b _0205AE86
_0205AE42:
ldr r0, [sp, #0xc]
add r1, r0, r6
ldrb r0, [r1, #0x18]
cmp r0, #0
beq _0205AE86
mov r0, #2
strb r0, [r4, #0xc]
ldrb r1, [r1, #0x18]
mov r0, #0x7f
and r0, r1
strb r0, [r4, #0x14]
ldr r1, [sp, #8]
ldr r0, [sp, #4]
ldr r1, [r1]
bl PalPad_PlayerIdIsFriendOrMutual
strb r0, [r4, #0xe]
mov r5, #1
b _0205AE86
_0205AE68:
ldr r0, [sp, #0xc]
add r0, r0, r6
ldrb r0, [r0, #0x18]
cmp r0, #0
bne _0205AE7E
ldr r0, [sp, #0x10]
add r1, r7, #0
mov r2, #3
bl sub_0205AEA0
b _0205AE86
_0205AE7E:
mov r5, #1
b _0205AE86
_0205AE82:
mov r0, #0
strb r0, [r4, #0xc]
_0205AE86:
ldr r0, [sp, #8]
add r6, r6, #1
add r0, r0, #4
add r7, r7, #1
str r0, [sp, #8]
cmp r6, #4
blt _0205AE28
add r0, r5, #0
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
_0205AE9C: .word _020FC824
thumb_func_end sub_0205AD9C
thumb_func_start sub_0205AEA0
sub_0205AEA0: ; 0x0205AEA0
mov r3, #0x18
mul r3, r1
strb r2, [r0, r3]
bx lr
thumb_func_end sub_0205AEA0
thumb_func_start sub_0205AEA8
sub_0205AEA8: ; 0x0205AEA8
push {r4, r5, r6, r7, lr}
sub sp, #0x14
str r0, [sp]
add r5, r0, #0
str r0, [sp, #0x10]
add r0, #0xc
str r1, [sp, #4]
str r3, [sp, #8]
mov r4, #0
str r0, [sp, #0x10]
_0205AEBC:
ldr r0, [sp, #4]
add r1, r4, #0
bl sub_0205A1F4
add r6, r0, #0
beq _0205AED6
add r7, r6, #0
add r7, #0x50
add r0, r7, #0
str r0, [sp, #0xc]
add r0, #0x10
str r0, [sp, #0xc]
b _0205AEDC
_0205AED6:
mov r7, #0
add r0, r7, #0
str r0, [sp, #0xc]
_0205AEDC:
ldrb r0, [r5, #0xd]
cmp r0, #0
beq _0205AEEC
cmp r0, #2
beq _0205AF28
cmp r0, #4
beq _0205AF66
b _0205AF6A
_0205AEEC:
cmp r6, #0
beq _0205AF6A
ldr r0, [sp, #0xc]
bl PlayerProfile_GetAvatar
strb r0, [r5, #0x14]
ldr r0, [sp, #0xc]
bl PlayerProfile_GetTrainerID
add r1, r0, #0
ldr r0, [sp, #8]
bl PalPad_PlayerIdIsFriendOrMutual
strb r0, [r5, #0xe]
ldr r0, [r7]
ldr r3, [sp, #8]
str r0, [r5, #0x18]
ldr r0, [sp]
add r1, r4, #0
add r2, r6, #0
bl sub_0205AD9C
cmp r0, #0
beq _0205AF22
mov r0, #2
strb r0, [r5, #0xc]
b _0205AF6A
_0205AF22:
mov r0, #1
strb r0, [r5, #0xc]
b _0205AF6A
_0205AF28:
cmp r6, #0
bne _0205AF38
ldr r0, [sp, #0x10]
add r1, r4, #0
mov r2, #3
bl sub_0205AEA0
b _0205AF4A
_0205AF38:
ldr r1, [r7]
ldr r0, [r5, #0x18]
cmp r1, r0
beq _0205AF4A
ldr r0, [sp, #0x10]
add r1, r4, #0
mov r2, #3
bl sub_0205AEA0
_0205AF4A:
ldr r0, [sp]
ldr r3, [sp, #8]
add r1, r4, #0
add r2, r6, #0
bl sub_0205AD9C
cmp r0, #0
beq _0205AF6A
ldrb r0, [r5, #0x15]
cmp r0, #1
bne _0205AF6A
mov r0, #3
strb r0, [r5, #0xc]
b _0205AF6A
_0205AF66:
mov r0, #0
strb r0, [r5, #0xc]
_0205AF6A:
add r4, r4, #1
add r5, #0x18
cmp r4, #0xa
blt _0205AEBC
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end sub_0205AEA8
thumb_func_start sub_0205AF78
sub_0205AF78: ; 0x0205AF78
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
str r0, [sp]
ldr r0, [r0, #8]
str r1, [sp, #4]
cmp r0, #0
bne _0205AF8A
bl GF_AssertFail
_0205AF8A:
ldr r0, [sp]
ldr r0, [r0, #8]
bl GetPlayerXCoord
str r0, [sp, #0xc]
ldr r0, [sp]
ldr r0, [r0, #8]
bl GetPlayerYCoord
ldr r4, [sp]
str r0, [sp, #8]
add r6, r4, #0
mov r7, #0
add r6, #0xc
_0205AFA6:
ldr r0, [sp, #4]
add r1, r7, #1
bl GetMapObjectByID
add r5, r0, #0
bne _0205AFB6
bl GF_AssertFail
_0205AFB6:
ldrb r0, [r4, #0xd]
cmp r0, #4
bhi _0205B0AA
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0205AFC8: ; jump table
.short _0205AFD2 - _0205AFC8 - 2 ; case 0
.short _0205AFF2 - _0205AFC8 - 2 ; case 1
.short _0205B052 - _0205AFC8 - 2 ; case 2
.short _0205B07A - _0205AFC8 - 2 ; case 3
.short _0205B0A6 - _0205AFC8 - 2 ; case 4
_0205AFD2:
add r0, r5, #0
bl MapObject_AreBitsSetForMovementScriptInit
cmp r0, #1
bne _0205B0AA
ldrb r0, [r4, #0xc]
sub r0, r0, #1
cmp r0, #1
bhi _0205B0AA
ldr r2, [sp, #0xc]
ldr r3, [sp, #8]
add r0, r6, #0
add r1, r5, #0
bl sub_0205B13C
b _0205B0AA
_0205AFF2:
add r0, r5, #0
bl MapObject_AreBitsSetForMovementScriptInit
cmp r0, #1
bne _0205B0AA
ldrb r0, [r4, #0xc]
cmp r0, #3
bne _0205B012
mov r0, #0
strb r0, [r4, #0xd]
strb r0, [r4, #0xc]
add r0, r6, #0
mov r1, #1
bl sub_0205B0DC
b _0205B0AA
_0205B012:
add r0, r5, #0
bl MapObject_ClearHeldMovementIfActive
add r0, r5, #0
mov r1, #0
bl MapObject_SetFlag19
ldrb r0, [r4, #0xc]
cmp r0, #1
bne _0205B048
ldrb r0, [r4, #0x15]
cmp r0, #0
bne _0205B048
add r0, r5, #0
mov r1, #3
bl sub_0205FC94
add r0, r5, #0
mov r1, #1
bl MapObject_SetXRange
add r0, r5, #0
mov r1, #1
bl MapObject_SetYRange
mov r0, #1
strb r0, [r4, #0x15]
_0205B048:
mov r0, #2
strb r0, [r4, #0xd]
mov r0, #0
strb r0, [r4, #0xc]
b _0205B0AA
_0205B052:
add r0, r5, #0
bl MapObject_AreBitsSetForMovementScriptInit
cmp r0, #1
bne _0205B0AA
add r0, r6, #0
add r1, r5, #0
bl sub_0205B218
ldrb r0, [r4, #0xc]
cmp r0, #3
bne _0205B072
add r0, r6, #0
add r1, r5, #0
bl sub_0205B1E4
_0205B072:
add r0, r6, #0
bl sub_0205B118
b _0205B0AA
_0205B07A:
add r0, r5, #0
bl MapObject_AreBitsSetForMovementScriptInit
cmp r0, #1
bne _0205B0AA
add r0, r5, #0
bl MapObject_ClearHeldMovementIfActive
mov r0, #4
strb r0, [r4, #0xd]
mov r0, #0
strb r0, [r4, #0xc]
strb r0, [r4, #0x15]
add r0, r5, #0
mov r1, #1
bl MapObject_SetVisible
add r0, r5, #0
mov r1, #0
bl MapObject_ClearFlag18
b _0205B0AA
_0205B0A6:
mov r0, #0
strb r0, [r4, #0xd]
_0205B0AA:
add r7, r7, #1
add r4, #0x18
add r6, #0x18
cmp r7, #0x32
bge _0205B0B6
b _0205AFA6
_0205B0B6:
ldr r0, [sp]
ldr r0, [r0, #8]
bl PlayerAvatar_GetMapObject
add r1, r0, #0
ldr r2, _0205B0D8 ; =0x000004BC
ldr r0, [sp]
add r0, r0, r2
bl sub_0205B218
ldr r1, _0205B0D8 ; =0x000004BC
ldr r0, [sp]
add r0, r0, r1
bl sub_0205B118
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0205B0D8: .word 0x000004BC
thumb_func_end sub_0205AF78
thumb_func_start sub_0205B0DC
sub_0205B0DC: ; 0x0205B0DC
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #0x10]
add r4, r1, #0
cmp r0, #0
beq _0205B0FA
bl sub_02068CCC
cmp r0, #0
beq _0205B0F6
ldr r0, [r5, #0x10]
bl sub_02068B48
_0205B0F6:
mov r0, #0
str r0, [r5, #0x10]
_0205B0FA:
cmp r4, #0
beq _0205B116
ldr r0, [r5, #0x14]
cmp r0, #0
beq _0205B116
bl sub_02068CCC
cmp r0, #0
beq _0205B112
ldr r0, [r5, #0x14]
bl sub_02068B48
_0205B112:
mov r0, #0
str r0, [r5, #0x14]
_0205B116:
pop {r3, r4, r5, pc}
thumb_func_end sub_0205B0DC
thumb_func_start sub_0205B118
sub_0205B118: ; 0x0205B118
push {r4, lr}
add r4, r0, #0
ldrb r1, [r4, #4]
cmp r1, #0
beq _0205B138
ldrh r1, [r4, #6]
sub r1, r1, #1
strh r1, [r4, #6]
ldrh r1, [r4, #6]
cmp r1, #0
bne _0205B138
mov r1, #0
bl sub_0205B0DC
mov r0, #0
strb r0, [r4, #4]
_0205B138:
pop {r4, pc}
.balign 4, 0
thumb_func_end sub_0205B118
thumb_func_start sub_0205B13C
sub_0205B13C: ; 0x0205B13C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r4, r1, #0
add r5, r0, #0
add r0, r4, #0
str r2, [sp, #4]
str r3, [sp, #8]
bl MapObject_GetInitialX
add r7, r0, #0
add r0, r4, #0
bl MapObject_GetInitialHeight
str r0, [sp, #0xc]
add r0, r4, #0
bl MapObject_GetInitialY
add r6, r0, #0
ldr r0, [sp, #4]
cmp r7, r0
bne _0205B16C
ldr r0, [sp, #8]
cmp r6, r0
beq _0205B1DC
_0205B16C:
ldr r0, _0205B1E0 ; =0x0000064E
bl PlaySE
ldrb r1, [r5, #8]
add r0, r4, #0
bl sub_0205E3AC
add r0, r5, #0
mov r1, #0
bl sub_0205B0DC
mov r0, #1
str r0, [sp]
ldr r2, [sp, #0xc]
add r0, r4, #0
add r1, r7, #0
add r3, r6, #0
bl sub_0205FC2C
add r0, r4, #0
mov r1, #1
bl MapObject_ForceSetFacingDirection
add r0, r4, #0
mov r1, #0x44
bl MapObject_SetHeldMovement
add r0, r4, #0
mov r1, #0
bl MapObject_SetVisible
add r0, r4, #0
mov r1, #1
bl MapObject_ClearFlag18
mov r1, #1
strb r1, [r5, #1]
ldrb r0, [r5, #2]
cmp r0, #0
beq _0205B1DC
cmp r0, #1
bne _0205B1CA
add r0, r4, #0
bl ov01_021FD8E8
str r0, [r5, #0x14]
b _0205B1D8
_0205B1CA:
cmp r0, #2
blo _0205B1D8
add r0, r4, #0
mov r1, #2
bl ov01_021FD8E8
str r0, [r5, #0x14]
_0205B1D8:
mov r0, #0
strb r0, [r5, #2]
_0205B1DC:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0205B1E0: .word 0x0000064E
thumb_func_end sub_0205B13C
thumb_func_start sub_0205B1E4
sub_0205B1E4: ; 0x0205B1E4
push {r3, r4, r5, lr}
add r5, r1, #0
add r4, r0, #0
add r0, r5, #0
mov r1, #0x43
bl MapObject_SetHeldMovement
add r0, r5, #0
mov r1, #1
bl MapObject_SetFlag19
add r0, r5, #0
mov r1, #0
bl sub_0205FC94
add r0, r4, #0
mov r1, #1
bl sub_0205B0DC
mov r0, #0
strb r0, [r4, #4]
strh r0, [r4, #6]
mov r0, #3
strb r0, [r4, #1]
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end sub_0205B1E4
thumb_func_start sub_0205B218
sub_0205B218: ; 0x0205B218
push {r4, lr}
add r4, r0, #0
ldrb r0, [r4, #3]
cmp r0, #1
bne _0205B23C
ldrb r0, [r4, #4]
cmp r0, #0
bne _0205B23C
add r0, r1, #0
bl ov01_02200730
str r0, [r4, #0x10]
mov r0, #0x1e
strh r0, [r4, #6]
mov r0, #0
strb r0, [r4, #3]
mov r0, #1
strb r0, [r4, #4]
_0205B23C:
pop {r4, pc}
.balign 4, 0
thumb_func_end sub_0205B218
thumb_func_start sub_0205B240
sub_0205B240: ; 0x0205B240
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
add r6, r2, #0
add r7, r0, #0
cmp r5, r6
bge _0205B27A
_0205B24C:
add r0, r7, #0
add r1, r5, #0
bl GetMapObjectByID
add r4, r0, #0
bne _0205B25C
bl GF_AssertFail
_0205B25C:
add r0, r4, #0
mov r1, #1
bl MapObject_SetVisible
add r0, r4, #0
mov r1, #0
bl MapObject_ClearFlag18
add r0, r4, #0
mov r1, #1
bl MapObject_SetFlag19
add r5, r5, #1
cmp r5, r6
blt _0205B24C
_0205B27A:
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end sub_0205B240
thumb_func_start sub_0205B27C
sub_0205B27C: ; 0x0205B27C
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
mov r1, #0
add r7, r0, #0
bl GetMapObjectByID
add r4, r0, #0
bne _0205B290
bl GF_AssertFail
_0205B290:
add r0, r4, #0
bl MapObject_AreBitsSetForMovementScriptInit
cmp r0, #1
bne _0205B336
bl sub_02037FCC
cmp r0, #0
bne _0205B2AA
bl sub_02037F94
cmp r0, #0
beq _0205B32C
_0205B2AA:
mov r6, #0
add r5, #0xc
_0205B2AE:
ldrb r0, [r5, #1]
cmp r0, #1
bne _0205B318
add r0, r7, #0
add r1, r6, #1
bl GetMapObjectByID
add r4, r0, #0
bne _0205B2C4
bl GF_AssertFail
_0205B2C4:
ldrb r1, [r5, #8]
add r0, r4, #0
bl sub_0205E3AC
add r0, r4, #0
mov r1, #1
bl MapObject_ForceSetFacingDirection
add r0, r4, #0
mov r1, #0x44
bl MapObject_SetHeldMovement
add r0, r4, #0
mov r1, #0
bl MapObject_SetVisible
add r0, r4, #0
mov r1, #1
bl MapObject_ClearFlag18
mov r0, #1
strb r0, [r5, #1]
ldrb r0, [r5, #2]
cmp r0, #0
beq _0205B318
cmp r0, #1
bne _0205B306
add r0, r4, #0
mov r1, #1
bl ov01_021FD8E8
str r0, [r5, #0x14]
b _0205B314
_0205B306:
cmp r0, #2
blo _0205B314
add r0, r4, #0
mov r1, #2
bl ov01_021FD8E8
str r0, [r5, #0x14]
_0205B314:
mov r0, #0
strb r0, [r5, #2]
_0205B318:
add r6, r6, #1
add r5, #0x18
cmp r6, #0xa
blt _0205B2AE
add r0, r7, #0
mov r1, #0xb
mov r2, #0x33
bl sub_0205B240
pop {r3, r4, r5, r6, r7, pc}
_0205B32C:
add r0, r7, #0
mov r1, #1
mov r2, #0x33
bl sub_0205B240
_0205B336:
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end sub_0205B27C
thumb_func_start sub_0205B338
sub_0205B338: ; 0x0205B338
push {r4, lr}
add r4, r0, #0
mov r0, #8
mov r1, #0x57
bl String_New
str r0, [r4]
mov r1, #0
add r0, r4, #0
str r1, [r4, #4]
add r0, #0x14
str r1, [r4, #8]
bl MailMsg_Init_WithBank
mov r0, #0
str r0, [r4, #0x10]
str r0, [r4, #0xc]
pop {r4, pc}
thumb_func_end sub_0205B338
thumb_func_start sub_0205B35C
sub_0205B35C: ; 0x0205B35C
push {r4, r5, r6, lr}
add r6, r0, #0
mov r4, #0
add r5, r6, #0
_0205B364:
add r0, r5, #0
bl sub_0205B338
add r4, r4, #1
add r5, #0x1c
cmp r4, #0x1e
blt _0205B364
mov r0, #0xd2
mov r1, #0
lsl r0, r0, #2
str r1, [r6, r0]
add r0, r0, #4
str r1, [r6, r0]
pop {r4, r5, r6, pc}
thumb_func_end sub_0205B35C
thumb_func_start sub_0205B380
sub_0205B380: ; 0x0205B380
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
bl FreeToHeap
ldr r0, [r4, #4]
cmp r0, #0
beq _0205B394
bl String_Delete
_0205B394:
ldr r0, [r4, #8]
cmp r0, #0
beq _0205B39E
bl String_Delete
_0205B39E:
pop {r4, pc}
thumb_func_end sub_0205B380
thumb_func_start sub_0205B3A0
sub_0205B3A0: ; 0x0205B3A0
push {r3, r4, r5, lr}
add r5, r0, #0
mov r4, #0
_0205B3A6:
add r0, r5, #0
bl sub_0205B380
add r4, r4, #1
add r5, #0x1c
cmp r4, #0x1e
blt _0205B3A6
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end sub_0205B3A0
thumb_func_start sub_0205B3B8
sub_0205B3B8: ; 0x0205B3B8
push {r4, lr}
mov r1, #0x35
lsl r1, r1, #4
bl AllocFromHeap
add r4, r0, #0
bl sub_0205B35C
add r0, r4, #0
pop {r4, pc}
thumb_func_end sub_0205B3B8
thumb_func_start sub_0205B3CC
sub_0205B3CC: ; 0x0205B3CC
push {r4, lr}
add r4, r0, #0
bl sub_0205B3A0
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
thumb_func_end sub_0205B3CC