pokeheartgold/asm/unk_0204F500.s
2023-06-21 19:41:52 +01:00

1943 lines
33 KiB
ArmAsm

.include "asm/macros.inc"
.include "unk_0204F500.inc"
.include "global.inc"
.rodata
_020FC22C:
.word 0x0000000A, 0x00000001
.word 0x0000001E, 0x00000003
.word 0x00000032, 0x00000005
.word 0x00000064, 0x00000005
.word 0x00000096, 0x00000005
.word 0x000000C8, 0x00000005
.word 0x000000FA, 0x00000005
.word 0x0000012C, 0x00000005
.word 0x0000015E, 0x00000005
.word 0x00000190, 0x00000005
.word 0x000001C2, 0x00000005
.word 0x000001F4, 0x0000000A
.word 0x00000258, 0x0000000A
.word 0x000002BC, 0x0000000A
.word 0x00000320, 0x0000000A
.word 0x00000384, 0x0000000A
.word 0x000003E8, 0x0000000A
.word 0x000004B0, 0x0000001E
.word 0x00000578, 0x0000001E
.word 0x00000640, 0x0000001E
.word 0x00000708, 0x0000001E
.word 0x000007D0, 0x00000032
.word 0x000009C4, 0x00000032
.word 0x00000BB8, 0x00000032
.word 0x00000DAC, 0x00000032
.word 0x00000FA0, 0x00000032
.word 0x00001194, 0x00000032
.word 0x00001388, 0x00000032
.word 0x0000157C, 0x00000032
.word 0x00001770, 0x00000032
.word 0x00001964, 0x00000032
.word 0x00001B58, 0x00000032
.word 0x00001D4C, 0x00000032
.word 0x00001F40, 0x00000032
.word 0x00002134, 0x00000032
.word 0x00002328, 0x00000032
.word 0x0000251C, 0x00000032
.word 0x00002710, 0x00000064
.word 0x00004E20, 0x000000C8
.word 0x00007530, 0x0000012C
.word 0x00009C40, 0x00000190
.word 0x0000C350, 0x000001F4
.word 0x0000EA60, 0x00000258
.word 0x00011170, 0x000002BC
.word 0x00013880, 0x00000320
.word 0x00015F90, 0x00000384
.word 0x000186A0, 0x000003E8
_020FC3A4:
.byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00
_020FC3AC:
.byte 0x00, 0x01, 0x02, 0x03
.byte 0x04, 0x00, 0x00, 0x00
.text
thumb_func_start ScrCmd_BufferBattleHallStreak
ScrCmd_BufferBattleHallStreak: ; 0x0204F500
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x30
str r0, [sp, #8]
add r0, #0x80
ldr r7, [r0]
mov r1, #0x10
add r0, r7, #0
bl FieldSysGetAttrAddr
str r0, [sp, #0x24]
ldr r0, [sp, #8]
ldr r1, [r0, #8]
add r2, r1, #1
str r2, [r0, #8]
ldrb r0, [r1]
add r1, r2, #1
str r0, [sp, #0x20]
ldr r0, [sp, #8]
str r1, [r0, #8]
ldrb r0, [r2]
add r2, r1, #1
str r0, [sp, #0x1c]
ldr r0, [sp, #8]
str r2, [r0, #8]
ldrb r0, [r1]
add r1, r2, #1
str r0, [sp, #0x18]
ldr r0, [sp, #8]
str r1, [r0, #8]
ldrb r0, [r2]
str r0, [sp, #0x14]
ldr r0, [sp, #8]
bl ScriptReadHalfword
add r1, r0, #0
ldr r0, [sp, #8]
add r0, #0x80
ldr r0, [r0]
bl GetVarPointer
add r5, r0, #0
ldr r0, [sp, #8]
bl ScriptReadHalfword
add r1, r0, #0
ldr r0, [sp, #8]
add r0, #0x80
ldr r0, [r0]
bl GetVarPointer
str r0, [sp, #0x10]
mov r0, #1
str r0, [sp, #0x2c]
ldr r0, [r7, #0xc]
mov r4, #0
bl Save_CheckExtraChunksExist
cmp r0, #0
bne _0204F580
ldr r1, [sp, #0x10]
add r0, r4, #0
strh r0, [r1]
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
_0204F580:
ldr r0, [r7, #0xc]
mov r1, #0x20
add r2, sp, #0x2c
bl sub_020312C4
str r0, [sp, #0x28]
ldr r0, [sp, #0x2c]
cmp r0, #1
bne _0204F5AA
add r6, r4, #0
_0204F594:
ldr r0, [r7, #0xc]
ldr r1, [sp, #0x28]
mov r2, #0
add r3, r6, #0
bl sub_020312E0
add r4, r4, r0
ldr r0, _0204F6C8 ; =0x000001ED
add r6, r6, #1
cmp r6, r0
blo _0204F594
_0204F5AA:
ldr r0, [sp, #0x28]
cmp r0, #0
beq _0204F5B4
bl FreeToHeap
_0204F5B4:
add r0, r4, #0
bl sub_0205BB1C
add r3, r0, #0
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x20]
ldr r0, [r0]
add r2, r4, #0
bl BufferIntegerAsString
ldrh r1, [r5]
mov r6, #0
add r7, r6, #0
str r1, [sp, #0xc]
ldr r0, [sp, #0xc]
cmp r0, #0x2f
bhs _0204F602
ldr r2, [sp, #0xc]
ldr r0, _0204F6CC ; =_020FC22C
lsl r2, r2, #3
add r0, r0, r2
_0204F5E4:
ldr r2, [r0]
cmp r2, r4
bhi _0204F5FA
ldr r2, [r0, #4]
add r7, r1, #0
add r2, r6, r2
lsl r2, r2, #0x10
lsr r6, r2, #0x10
ldrh r2, [r5]
add r2, r2, #1
strh r2, [r5]
_0204F5FA:
add r1, r1, #1
add r0, #8
cmp r1, #0x2f
blo _0204F5E4
_0204F602:
ldr r0, [sp, #8]
add r0, #0x80
ldr r0, [r0]
ldr r0, [r0, #0xc]
bl Save_GameStats_Get
mov r1, #0x45
add r2, r6, #0
bl GameStats_Add
cmp r6, #0
beq _0204F630
ldr r0, [sp, #8]
add r0, #0x80
str r0, [sp, #8]
ldr r0, [r0]
ldr r0, [r0, #0xc]
bl Save_FrontierData_Get
add r1, r6, #0
mov r2, #5
bl FrontierData_BattlePointAction
_0204F630:
cmp r4, #0
bne _0204F63C
ldr r0, [sp, #0x10]
mov r1, #0
strh r1, [r0]
b _0204F662
_0204F63C:
ldrh r1, [r5]
ldr r0, [sp, #0xc]
cmp r0, r1
beq _0204F64A
mov r1, #1
ldr r0, [sp, #0x10]
b _0204F64E
_0204F64A:
ldr r0, [sp, #0x10]
mov r1, #2
_0204F64E:
strh r1, [r0]
ldr r0, [sp, #0xc]
cmp r0, #0x2f
blo _0204F662
ldr r0, [sp, #0x10]
mov r1, #3
strh r1, [r0]
add sp, #0x30
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_0204F662:
ldr r0, _0204F6CC ; =_020FC22C
lsl r1, r7, #3
ldr r4, [r0, r1]
add r0, r4, #0
bl sub_0205BB1C
add r3, r0, #0
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x1c]
ldr r0, [r0]
add r2, r4, #0
bl BufferIntegerAsString
ldrh r0, [r5]
lsl r1, r0, #3
ldr r0, _0204F6CC ; =_020FC22C
ldr r0, [r0, r1]
bl sub_0205BB1C
add r3, r0, #0
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
ldrh r2, [r5]
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x18]
lsl r4, r2, #3
ldr r2, _0204F6CC ; =_020FC22C
ldr r0, [r0]
ldr r2, [r2, r4]
bl BufferIntegerAsString
add r0, r6, #0
bl sub_0205BB1C
add r3, r0, #0
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x14]
ldr r0, [r0]
add r2, r6, #0
bl BufferIntegerAsString
mov r0, #0
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0204F6C8: .word 0x000001ED
_0204F6CC: .word _020FC22C
thumb_func_end ScrCmd_BufferBattleHallStreak
thumb_func_start ScrCmd_BattleHallCountUsedSpecies
ScrCmd_BattleHallCountUsedSpecies: ; 0x0204F6D0
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r4, r0, #0
add r1, r4, #0
add r1, #0x80
ldr r5, [r1]
bl ScriptReadHalfword
add r4, #0x80
add r1, r0, #0
ldr r0, [r4]
bl GetVarPointer
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r5, #0xc]
bl Save_CheckExtraChunksExist
cmp r0, #0
bne _0204F708
ldr r1, [sp]
mov r0, #0
strh r0, [r1]
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_0204F708:
ldr r0, [r5, #0xc]
mov r1, #0x20
add r2, sp, #8
bl sub_020312C4
add r7, r0, #0
ldr r0, [sp, #8]
cmp r0, #1
beq _0204F720
mov r0, #0
str r0, [sp, #4]
b _0204F75E
_0204F720:
mov r4, #0
_0204F722:
ldr r0, [r5, #0xc]
add r1, r7, #0
mov r2, #0
add r3, r4, #0
bl sub_020312E0
mov r1, #0
add r6, r1, r0
ldr r0, [r5, #0xc]
add r1, r7, #0
mov r2, #1
add r3, r4, #0
bl sub_020312E0
add r6, r6, r0
ldr r0, [r5, #0xc]
add r1, r7, #0
mov r2, #2
add r3, r4, #0
bl sub_020312E0
add r0, r6, r0
beq _0204F756
ldr r0, [sp, #4]
add r0, r0, #1
str r0, [sp, #4]
_0204F756:
ldr r0, _0204F774 ; =0x000001ED
add r4, r4, #1
cmp r4, r0
blo _0204F722
_0204F75E:
cmp r7, #0
beq _0204F768
add r0, r7, #0
bl FreeToHeap
_0204F768:
ldr r1, [sp, #4]
ldr r0, [sp]
strh r1, [r0]
mov r0, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_0204F774: .word 0x000001ED
thumb_func_end ScrCmd_BattleHallCountUsedSpecies
thumb_func_start ScrCmd_BattleHallGetTotalStreak
ScrCmd_BattleHallGetTotalStreak: ; 0x0204F778
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r4, r0, #0
add r1, r4, #0
add r1, #0x80
ldr r6, [r1]
bl ScriptReadHalfword
add r4, #0x80
add r1, r0, #0
ldr r0, [r4]
bl GetVarPointer
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [r6, #0xc]
mov r4, #0
bl Save_CheckExtraChunksExist
cmp r0, #0
bne _0204F7AE
ldr r1, [sp]
add r0, r4, #0
strh r0, [r1]
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
_0204F7AE:
ldr r0, [r6, #0xc]
mov r1, #0x20
add r2, sp, #4
bl sub_020312C4
add r7, r0, #0
ldr r0, [sp, #4]
cmp r0, #1
bne _0204F7D8
add r5, r4, #0
_0204F7C2:
ldr r0, [r6, #0xc]
add r1, r7, #0
mov r2, #0
add r3, r5, #0
bl sub_020312E0
add r4, r4, r0
ldr r0, _0204F7F4 ; =0x000001ED
add r5, r5, #1
cmp r5, r0
blo _0204F7C2
_0204F7D8:
cmp r7, #0
beq _0204F7E2
add r0, r7, #0
bl FreeToHeap
_0204F7E2:
ldr r0, _0204F7F8 ; =0x00002710
cmp r4, r0
bls _0204F7EA
add r4, r0, #0
_0204F7EA:
ldr r0, [sp]
strh r4, [r0]
mov r0, #0
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0204F7F4: .word 0x000001ED
_0204F7F8: .word 0x00002710
thumb_func_end ScrCmd_BattleHallGetTotalStreak
thumb_func_start ScrCmd_697
ScrCmd_697: ; 0x0204F7FC
push {r4, r5, r6, lr}
add r5, r0, #0
bl ScriptReadHalfword
add r1, r0, #0
add r0, r5, #0
add r0, #0x80
ldr r0, [r0]
bl GetVarPointer
add r4, r0, #0
add r0, r5, #0
add r0, #0x80
ldr r0, [r0]
ldr r0, [r0, #0xc]
bl sub_0203107C
add r6, r0, #0
mov r0, #0
bl sub_0205C11C
add r1, r0, #0
add r0, r6, #0
mov r2, #0xff
bl sub_020310BC
add r5, #0x80
ldr r0, [r5]
ldr r0, [r0, #0xc]
bl sub_0203107C
add r5, r0, #0
mov r0, #0
bl sub_0205C0CC
add r1, r0, #0
add r0, r5, #0
mov r2, #0xff
bl sub_020310BC
mov r1, #0
strh r1, [r4]
cmp r0, #0x32
bne _0204F858
mov r0, #1
strh r0, [r4]
_0204F858:
mov r0, #0
pop {r4, r5, r6, pc}
thumb_func_end ScrCmd_697
thumb_func_start sub_0204F85C
sub_0204F85C: ; 0x0204F85C
push {r4, r5, r6, lr}
add r4, r3, #0
add r5, r0, #0
ldrb r0, [r4, #1]
add r6, r2, #0
add r0, r0, #1
strb r0, [r4, #1]
bl sub_0203769C
cmp r5, r0
beq _0204F876
ldrh r0, [r6, #4]
strh r0, [r4, #6]
_0204F876:
pop {r4, r5, r6, pc}
thumb_func_end sub_0204F85C
thumb_func_start sub_0204F878
sub_0204F878: ; 0x0204F878
push {r4, r5, r6, lr}
sub sp, #8
add r5, r0, #0
mov r3, #0
add r0, sp, #4
strb r3, [r0]
add r0, sp, #4
str r0, [sp]
add r0, r1, #0
mov r1, #5
add r4, r2, #0
bl sub_02030C6C
cmp r4, #3
bne _0204F8B0
add r0, r5, #0
bl sub_0203107C
add r6, r0, #0
mov r0, #0x6a
bl sub_0205C268
add r2, r0, #0
add r0, r6, #0
mov r1, #0x6a
mov r3, #0
bl sub_02031108
_0204F8B0:
add r0, r5, #0
bl sub_0203107C
add r5, r0, #0
add r0, r4, #0
bl sub_0205C0CC
add r6, r0, #0
add r0, r4, #0
bl sub_0205C0CC
bl sub_0205C268
add r2, r0, #0
add r0, r5, #0
add r1, r6, #0
mov r3, #0
bl sub_02031108
add sp, #8
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end sub_0204F878
thumb_func_start ScrCmd_637
ScrCmd_637: ; 0x0204F8DC
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r4, r0, #0
bl ScriptReadHalfword
add r7, r0, #0
add r0, r4, #0
bl ScriptReadHalfword
add r1, r0, #0
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
bl VarGet
add r5, r0, #0
add r0, r4, #0
bl ScriptReadHalfword
add r1, r0, #0
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
bl GetVarPointer
add r6, r0, #0
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
ldr r0, [r0, #0xc]
bl sub_02030CC8
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
ldr r0, [r0, #0xc]
bl sub_02030E08
str r0, [sp, #4]
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
mov r1, #0x14
bl FieldSysGetAttrAddr
add r1, r0, #0
cmp r7, #4
bhi _0204F9CC
add r0, r7, r7
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0204F948: ; jump table
.short _0204F952 - _0204F948 - 2 ; case 0
.short _0204F964 - _0204F948 - 2 ; case 1
.short _0204F9CC - _0204F948 - 2 ; case 2
.short _0204F99C - _0204F948 - 2 ; case 3
.short _0204F9AE - _0204F948 - 2 ; case 4
_0204F952:
add r4, #0x80
ldr r1, [r4]
add r0, r5, #0
ldr r1, [r1, #0xc]
mov r2, #0
bl sub_0204A5B0
strh r0, [r6]
b _0204F9D4
_0204F964:
cmp r5, #3
bne _0204F988
add r4, #0x80
ldr r0, [r4]
ldr r0, [r0, #0xc]
bl sub_0203107C
add r4, r0, #0
mov r0, #0x6c
bl sub_0205C268
add r2, r0, #0
add r0, r4, #0
mov r1, #0x6c
bl sub_020310BC
strh r0, [r6]
b _0204F9D4
_0204F988:
lsl r2, r5, #0x18
mov r3, #0
ldr r0, [sp, #4]
mov r1, #9
lsr r2, r2, #0x18
str r3, [sp]
bl sub_02030E58
strh r0, [r6]
b _0204F9D4
_0204F99C:
add r4, #0x80
ldr r0, [r4]
lsl r2, r5, #0x18
ldr r0, [r0, #0xc]
ldr r1, [sp, #4]
lsr r2, r2, #0x18
bl sub_0204FA14
b _0204F9D4
_0204F9AE:
cmp r5, #0
bne _0204F9B6
mov r2, #0
b _0204F9C0
_0204F9B6:
cmp r5, #1
bne _0204F9BE
mov r2, #1
b _0204F9C0
_0204F9BE:
mov r2, #2
_0204F9C0:
ldr r0, [r4, #0x74]
bl sub_0204FBDC
add sp, #8
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_0204F9CC:
bl GF_AssertFail
mov r0, #0
strh r0, [r6]
_0204F9D4:
mov r0, #0
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ScrCmd_637
thumb_func_start ScrCmd_640
ScrCmd_640: ; 0x0204F9DC
push {r3, r4, r5, lr}
add r5, r0, #0
bl ScriptReadHalfword
add r1, r0, #0
add r0, r5, #0
add r0, #0x80
ldr r0, [r0]
bl VarGet
add r4, r0, #0
add r0, r5, #0
add r0, #0x80
ldr r0, [r0]
ldr r0, [r0, #0xc]
bl sub_02030E08
lsl r2, r4, #0x18
add r5, #0x80
add r1, r0, #0
ldr r0, [r5]
lsr r2, r2, #0x18
ldr r0, [r0, #0xc]
bl sub_0204FA14
mov r0, #0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ScrCmd_640
thumb_func_start sub_0204FA14
sub_0204FA14: ; 0x0204FA14
push {r4, r5, r6, r7, lr}
sub sp, #0xc
str r0, [sp, #4]
mov r3, #0
add r0, sp, #8
strb r3, [r0]
add r0, sp, #8
str r0, [sp]
add r0, r1, #0
mov r1, #9
add r5, r2, #0
bl sub_02030E18
cmp r5, #3
bne _0204FA4C
ldr r0, [sp, #4]
bl sub_0203107C
add r4, r0, #0
mov r0, #0x6c
bl sub_0205C268
add r2, r0, #0
add r0, r4, #0
mov r1, #0x6c
mov r3, #0
bl sub_02031108
_0204FA4C:
ldr r0, [sp, #4]
bl sub_0203107C
add r4, r0, #0
add r0, r5, #0
bl sub_0205C1A0
add r6, r0, #0
add r0, r5, #0
bl sub_0205C1A0
bl sub_0205C268
add r2, r0, #0
add r0, r4, #0
add r1, r6, #0
mov r3, #0
bl sub_02031108
ldr r0, [sp, #4]
bl sub_0203107C
add r4, r0, #0
add r0, r5, #0
bl sub_0205C1F0
add r6, r0, #0
add r0, r5, #0
bl sub_0205C1F0
bl sub_0205C268
add r2, r0, #0
add r0, r4, #0
add r1, r6, #0
mov r3, #0
bl sub_02031108
mov r4, #0
_0204FA9A:
ldr r0, [sp, #4]
bl sub_0203107C
lsl r1, r4, #0x18
add r6, r0, #0
add r0, r5, #0
lsr r1, r1, #0x18
bl sub_0205C174
lsl r1, r4, #0x18
add r7, r0, #0
add r0, r5, #0
lsr r1, r1, #0x18
bl sub_0205C174
bl sub_0205C268
add r2, r0, #0
add r0, r6, #0
add r1, r7, #0
mov r3, #1
bl sub_02031108
add r4, r4, #1
cmp r4, #3
blt _0204FA9A
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end sub_0204FA14
thumb_func_start ScrCmd_638
ScrCmd_638: ; 0x0204FAD4
push {r4, r5, r6, lr}
add r5, r0, #0
bl ScriptReadHalfword
add r1, r0, #0
add r0, r5, #0
add r0, #0x80
ldr r0, [r0]
bl VarGet
add r4, r0, #0
add r0, r5, #0
bl ScriptReadHalfword
add r1, r0, #0
add r0, r5, #0
add r0, #0x80
ldr r0, [r0]
bl VarGet
add r6, r0, #0
add r0, r5, #0
bl ScriptReadHalfword
add r1, r0, #0
add r0, r5, #0
add r0, #0x80
ldr r0, [r0]
bl GetVarPointer
add r3, r0, #0
ldr r0, [r5, #0x74]
add r1, r4, #0
add r2, r6, #0
bl sub_0204FB20
mov r0, #1
pop {r4, r5, r6, pc}
thumb_func_end ScrCmd_638
thumb_func_start sub_0204FB20
sub_0204FB20: ; 0x0204FB20
push {r3, r4, r5, r6, r7, lr}
str r0, [sp]
add r5, r1, #0
mov r0, #0xb
mov r1, #0x10
add r6, r2, #0
add r7, r3, #0
bl AllocFromHeap
add r4, r0, #0
add r2, r4, #0
mov r1, #0x10
mov r0, #0
_0204FB3A:
strb r0, [r2]
add r2, r2, #1
sub r1, r1, #1
bne _0204FB3A
strh r5, [r4, #4]
strh r6, [r4, #6]
add r0, r4, #0
str r7, [r4, #0xc]
bl sub_02091574
ldr r0, [sp]
ldr r1, _0204FB5C ; =sub_0204FB60
add r2, r4, #0
bl TaskManager_Call
pop {r3, r4, r5, r6, r7, pc}
nop
_0204FB5C: .word sub_0204FB60
thumb_func_end sub_0204FB20
thumb_func_start sub_0204FB60
sub_0204FB60: ; 0x0204FB60
push {r4, lr}
bl TaskManager_GetEnv
add r4, r0, #0
ldrb r1, [r4]
cmp r1, #0
beq _0204FB78
cmp r1, #1
beq _0204FB8E
cmp r1, #2
beq _0204FBCE
b _0204FBD6
_0204FB78:
mov r0, #0x85
add r1, r4, #0
mov r2, #0x10
bl sub_02037030
cmp r0, #1
bne _0204FBD6
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _0204FBD6
_0204FB8E:
ldrb r0, [r4, #1]
cmp r0, #2
blo _0204FBD6
ldr r0, [r4, #0xc]
mov r1, #0
strh r1, [r0]
ldrh r1, [r4, #4]
ldrh r0, [r4, #8]
cmp r1, r0
beq _0204FBA8
ldrh r0, [r4, #0xa]
cmp r1, r0
bne _0204FBB0
_0204FBA8:
ldr r1, [r4, #0xc]
ldrh r0, [r1]
add r0, r0, #1
strh r0, [r1]
_0204FBB0:
ldrh r1, [r4, #6]
ldrh r0, [r4, #8]
cmp r1, r0
beq _0204FBBE
ldrh r0, [r4, #0xa]
cmp r1, r0
bne _0204FBC6
_0204FBBE:
ldr r1, [r4, #0xc]
ldrh r0, [r1]
add r0, r0, #2
strh r0, [r1]
_0204FBC6:
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _0204FBD6
_0204FBCE:
bl FreeToHeap
mov r0, #1
pop {r4, pc}
_0204FBD6:
mov r0, #0
pop {r4, pc}
.balign 4, 0
thumb_func_end sub_0204FB60
thumb_func_start sub_0204FBDC
sub_0204FBDC: ; 0x0204FBDC
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
add r6, r2, #0
bl TaskManager_GetFieldSystem
add r7, r0, #0
mov r0, #0xb
mov r1, #0x10
bl AllocFromHeap
add r4, r0, #0
mov r1, #0
mov r2, #0x10
bl MI_CpuFill8
strb r6, [r4, #4]
str r5, [r4, #0xc]
ldr r0, [r7, #0x10]
ldr r1, _0204FC0C ; =sub_0204FC10
add r2, r4, #0
bl TaskManager_Call
pop {r3, r4, r5, r6, r7, pc}
nop
_0204FC0C: .word sub_0204FC10
thumb_func_end sub_0204FBDC
thumb_func_start sub_0204FC10
sub_0204FC10: ; 0x0204FC10
push {r3, r4, r5, lr}
add r4, r0, #0
bl TaskManager_GetFieldSystem
add r5, r0, #0
add r0, r4, #0
bl TaskManager_GetEnv
add r4, r0, #0
ldr r1, [r4]
cmp r1, #4
bhi _0204FC72
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_0204FC34: ; jump table
.short _0204FC3E - _0204FC34 - 2 ; case 0
.short _0204FC4A - _0204FC34 - 2 ; case 1
.short _0204FC54 - _0204FC34 - 2 ; case 2
.short _0204FC60 - _0204FC34 - 2 ; case 3
.short _0204FC6A - _0204FC34 - 2 ; case 4
_0204FC3E:
add r1, r5, #0
mov r2, #0xb
bl sub_0204FC78
str r0, [r4]
b _0204FC72
_0204FC4A:
add r1, r5, #0
bl sub_0204FD50
str r0, [r4]
b _0204FC72
_0204FC54:
add r1, r5, #0
mov r2, #0xb
bl sub_0204FDA0
str r0, [r4]
b _0204FC72
_0204FC60:
add r1, r5, #0
bl sub_0204FE30
str r0, [r4]
b _0204FC72
_0204FC6A:
bl FreeToHeap
mov r0, #1
pop {r3, r4, r5, pc}
_0204FC72:
mov r0, #0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end sub_0204FC10
thumb_func_start sub_0204FC78
sub_0204FC78: ; 0x0204FC78
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
mov r0, #0xb
mov r1, #0x44
bl AllocFromHeap
add r4, r0, #0
mov r0, #0
add r1, r4, #0
mov r2, #0x44
bl MIi_CpuClearFast
ldr r0, [r6, #0xc]
bl SaveArray_PlayerParty_Get
str r0, [r4]
ldr r0, [r6, #0xc]
bl SaveGetBag
str r0, [r4, #4]
ldr r0, [r6, #0xc]
bl Save_Mailbox_Get
str r0, [r4, #8]
ldr r0, [r6, #0xc]
bl Save_PlayerData_GetOptionsAddr
add r1, r4, #0
str r0, [r4, #0xc]
mov r0, #0
add r1, #0x25
strb r0, [r1]
add r1, r4, #0
mov r2, #0x17
add r1, #0x24
strb r2, [r1]
str r6, [r4, #0x1c]
add r1, r4, #0
ldrb r2, [r5, #5]
add r1, #0x26
strb r2, [r1]
_0204FCCC:
add r1, r5, r0
ldrb r2, [r1, #6]
add r1, r4, r0
add r0, r0, #1
lsl r0, r0, #0x18
add r1, #0x30
lsr r0, r0, #0x18
strb r2, [r1]
cmp r0, #3
blo _0204FCCC
add r0, r4, #0
mov r1, #0x64
add r0, #0x37
strb r1, [r0]
add r0, r4, #0
add r0, #0x36
mov r1, #0xf
ldrb r0, [r0]
mov ip, r1
add r2, r4, #0
bic r0, r1
mov r1, #3
orr r1, r0
add r0, r4, #0
add r0, #0x36
strb r1, [r0]
add r0, r4, #0
add r0, #0x36
ldrb r0, [r0]
mov r7, #0xf0
mov r3, #0x30
bic r0, r7
add r1, r0, #0
add r0, r4, #0
orr r1, r3
add r0, #0x36
add r3, #0xdc
strb r1, [r0]
add r0, r6, r3
str r0, [r4, #0x20]
ldrb r0, [r5, #4]
add r2, #0x36
cmp r0, #2
bne _0204FD3A
ldrb r0, [r2]
mov r1, ip
bic r0, r1
mov r1, #2
orr r0, r1
strb r0, [r2]
ldrb r1, [r2]
mov r0, #0x20
bic r1, r7
orr r0, r1
strb r0, [r2]
_0204FD3A:
ldr r1, _0204FD4C ; =_0210159C
add r0, r6, #0
add r2, r4, #0
bl FieldSys_LaunchApplication
ldr r0, [r5, #0xc]
str r4, [r0]
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0204FD4C: .word _0210159C
thumb_func_end sub_0204FC78
thumb_func_start sub_0204FD50
sub_0204FD50: ; 0x0204FD50
push {r3, r4, r5, lr}
add r5, r0, #0
add r0, r1, #0
bl FieldSys_ApplicationIsRunning
cmp r0, #0
beq _0204FD62
mov r0, #1
pop {r3, r4, r5, pc}
_0204FD62:
ldr r0, [r5, #0xc]
ldr r4, [r0]
add r0, r4, #0
add r0, #0x26
ldrb r0, [r0]
cmp r0, #6
beq _0204FD78
cmp r0, #7
bne _0204FD7C
mov r0, #4
pop {r3, r4, r5, pc}
_0204FD78:
mov r0, #4
pop {r3, r4, r5, pc}
_0204FD7C:
add r0, r4, #0
add r0, #0x30
add r1, r5, #6
mov r2, #3
bl MI_CpuCopy8
add r0, r4, #0
add r0, #0x26
ldrb r0, [r0]
strb r0, [r5, #5]
add r0, r4, #0
bl FreeToHeap
ldr r0, [r5, #0xc]
mov r1, #0
str r1, [r0]
mov r0, #2
pop {r3, r4, r5, pc}
thumb_func_end sub_0204FD50
thumb_func_start sub_0204FDA0
sub_0204FDA0: ; 0x0204FDA0
push {r3, r4, r5, r6, r7, lr}
add r7, r1, #0
add r6, r0, #0
ldr r5, [r7, #0xc]
add r0, r2, #0
mov r1, #0x3c
bl AllocFromHeapAtEnd
mov r1, #0
mov r2, #0x3c
add r4, r0, #0
bl MI_CpuFill8
add r0, r5, #0
bl Save_PlayerData_GetOptionsAddr
str r0, [r4, #4]
add r0, r5, #0
bl SaveArray_PlayerParty_Get
str r0, [r4]
add r0, r5, #0
bl SaveArray_IsNatDexEnabled
str r0, [r4, #0x1c]
add r0, r5, #0
bl sub_02088288
str r0, [r4, #0x2c]
mov r0, #1
strb r0, [r4, #0x11]
ldrb r0, [r6, #5]
strb r0, [r4, #0x14]
ldr r0, [r4]
bl GetPartyCount
strb r0, [r4, #0x13]
mov r0, #0
strh r0, [r4, #0x18]
strb r0, [r4, #0x12]
add r0, r5, #0
bl Save_SpecialRibbons_Get
str r0, [r4, #0x20]
add r0, r5, #0
bl sub_0208828C
str r0, [r4, #0x34]
ldr r1, _0204FE28 ; =_020FC3A4
add r0, r4, #0
bl sub_02089D40
add r0, r5, #0
bl Save_PlayerData_GetProfileAddr
add r1, r0, #0
add r0, r4, #0
bl sub_0208AD34
ldr r1, _0204FE2C ; =_02103A1C
add r0, r7, #0
add r2, r4, #0
bl FieldSys_LaunchApplication
ldr r0, [r6, #0xc]
str r4, [r0]
mov r0, #3
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0204FE28: .word _020FC3A4
_0204FE2C: .word _02103A1C
thumb_func_end sub_0204FDA0
thumb_func_start sub_0204FE30
sub_0204FE30: ; 0x0204FE30
push {r4, lr}
add r4, r0, #0
add r0, r1, #0
bl FieldSys_ApplicationIsRunning
cmp r0, #0
beq _0204FE42
mov r0, #3
pop {r4, pc}
_0204FE42:
ldr r0, [r4, #0xc]
ldr r0, [r0]
ldrb r1, [r0, #0x14]
strb r1, [r4, #5]
bl FreeToHeap
ldr r1, [r4, #0xc]
mov r0, #0
str r0, [r1]
pop {r4, pc}
.balign 4, 0
thumb_func_end sub_0204FE30
thumb_func_start sub_0204FE58
sub_0204FE58: ; 0x0204FE58
push {r4, r5, r6, lr}
add r4, r3, #0
add r6, r0, #0
ldrb r0, [r4, #1]
add r5, r2, #0
add r0, r0, #1
strb r0, [r4, #1]
bl sub_0203769C
cmp r6, r0
beq _0204FE76
ldrh r0, [r5, #4]
strh r0, [r4, #8]
ldrh r0, [r5, #6]
strh r0, [r4, #0xa]
_0204FE76:
pop {r4, r5, r6, pc}
thumb_func_end sub_0204FE58
thumb_func_start ScrCmd_643
ScrCmd_643: ; 0x0204FE78
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
add r4, r0, #0
bl ScriptReadHalfword
add r7, r0, #0
add r0, r4, #0
bl ScriptReadHalfword
add r1, r0, #0
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
bl VarGet
add r5, r0, #0
add r0, r4, #0
bl ScriptReadHalfword
add r1, r0, #0
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
bl GetVarPointer
add r6, r0, #0
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
ldr r0, [r0, #0xc]
bl sub_02030E88
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
ldr r0, [r0, #0xc]
bl sub_02030FA0
str r0, [sp, #4]
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
mov r1, #0x14
bl FieldSysGetAttrAddr
add r1, r0, #0
cmp r7, #4
bhi _0204FF68
add r0, r7, r7
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0204FEE4: ; jump table
.short _0204FEEE - _0204FEE4 - 2 ; case 0
.short _0204FF00 - _0204FEE4 - 2 ; case 1
.short _0204FF68 - _0204FEE4 - 2 ; case 2
.short _0204FF38 - _0204FEE4 - 2 ; case 3
.short _0204FF4A - _0204FEE4 - 2 ; case 4
_0204FEEE:
add r4, #0x80
ldr r1, [r4]
add r0, r5, #0
ldr r1, [r1, #0xc]
mov r2, #0
bl sub_0204A5B0
strh r0, [r6]
b _0204FF70
_0204FF00:
cmp r5, #3
bne _0204FF24
add r4, #0x80
ldr r0, [r4]
ldr r0, [r0, #0xc]
bl sub_0203107C
add r4, r0, #0
mov r0, #0x6e
bl sub_0205C268
add r2, r0, #0
add r0, r4, #0
mov r1, #0x6e
bl sub_020310BC
strh r0, [r6]
b _0204FF70
_0204FF24:
lsl r2, r5, #0x18
mov r3, #0
ldr r0, [sp, #4]
mov r1, #8
lsr r2, r2, #0x18
str r3, [sp]
bl sub_02030FE4
strh r0, [r6]
b _0204FF70
_0204FF38:
add r4, #0x80
ldr r0, [r4]
lsl r2, r5, #0x18
ldr r0, [r0, #0xc]
ldr r1, [sp, #4]
lsr r2, r2, #0x18
bl sub_0204FFB0
b _0204FF70
_0204FF4A:
cmp r5, #0
bne _0204FF52
mov r2, #0
b _0204FF5C
_0204FF52:
cmp r5, #1
bne _0204FF5A
mov r2, #1
b _0204FF5C
_0204FF5A:
mov r2, #2
_0204FF5C:
ldr r0, [r4, #0x74]
bl sub_0205011C
add sp, #8
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_0204FF68:
bl GF_AssertFail
mov r0, #0
strh r0, [r6]
_0204FF70:
mov r0, #0
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
thumb_func_end ScrCmd_643
thumb_func_start ScrCmd_646
ScrCmd_646: ; 0x0204FF78
push {r3, r4, r5, lr}
add r5, r0, #0
bl ScriptReadHalfword
add r1, r0, #0
add r0, r5, #0
add r0, #0x80
ldr r0, [r0]
bl VarGet
add r4, r0, #0
add r0, r5, #0
add r0, #0x80
ldr r0, [r0]
ldr r0, [r0, #0xc]
bl sub_02030FA0
lsl r2, r4, #0x18
add r5, #0x80
add r1, r0, #0
ldr r0, [r5]
lsr r2, r2, #0x18
ldr r0, [r0, #0xc]
bl sub_0204FFB0
mov r0, #0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end ScrCmd_646
thumb_func_start sub_0204FFB0
sub_0204FFB0: ; 0x0204FFB0
push {r4, r5, r6, lr}
sub sp, #8
add r5, r0, #0
mov r3, #0
add r0, sp, #4
strb r3, [r0]
add r0, sp, #4
str r0, [sp]
add r0, r1, #0
mov r1, #8
add r4, r2, #0
bl sub_02030FB0
cmp r4, #3
bne _0204FFE8
add r0, r5, #0
bl sub_0203107C
add r6, r0, #0
mov r0, #0x6e
bl sub_0205C268
add r2, r0, #0
add r0, r6, #0
mov r1, #0x6e
mov r3, #0
bl sub_02031108
_0204FFE8:
add r0, r5, #0
bl sub_0203107C
add r5, r0, #0
add r0, r4, #0
bl sub_0205C2C0
add r6, r0, #0
add r0, r4, #0
bl sub_0205C2C0
bl sub_0205C268
add r2, r0, #0
add r0, r5, #0
add r1, r6, #0
mov r3, #0
bl sub_02031108
add sp, #8
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end sub_0204FFB0
thumb_func_start ScrCmd_644
ScrCmd_644: ; 0x02050014
push {r4, r5, r6, lr}
add r5, r0, #0
bl ScriptReadHalfword
add r1, r0, #0
add r0, r5, #0
add r0, #0x80
ldr r0, [r0]
bl VarGet
add r4, r0, #0
add r0, r5, #0
bl ScriptReadHalfword
add r1, r0, #0
add r0, r5, #0
add r0, #0x80
ldr r0, [r0]
bl VarGet
add r6, r0, #0
add r0, r5, #0
bl ScriptReadHalfword
add r1, r0, #0
add r0, r5, #0
add r0, #0x80
ldr r0, [r0]
bl GetVarPointer
add r3, r0, #0
ldr r0, [r5, #0x74]
add r1, r4, #0
add r2, r6, #0
bl sub_02050060
mov r0, #1
pop {r4, r5, r6, pc}
thumb_func_end ScrCmd_644
thumb_func_start sub_02050060
sub_02050060: ; 0x02050060
push {r3, r4, r5, r6, r7, lr}
str r0, [sp]
add r5, r1, #0
mov r0, #0xb
mov r1, #0x10
add r6, r2, #0
add r7, r3, #0
bl AllocFromHeap
add r4, r0, #0
add r2, r4, #0
mov r1, #0x10
mov r0, #0
_0205007A:
strb r0, [r2]
add r2, r2, #1
sub r1, r1, #1
bne _0205007A
strh r5, [r4, #4]
strh r6, [r4, #6]
add r0, r4, #0
str r7, [r4, #0xc]
bl sub_02091574
ldr r0, [sp]
ldr r1, _0205009C ; =sub_020500A0
add r2, r4, #0
bl TaskManager_Call
pop {r3, r4, r5, r6, r7, pc}
nop
_0205009C: .word sub_020500A0
thumb_func_end sub_02050060
thumb_func_start sub_020500A0
sub_020500A0: ; 0x020500A0
push {r4, lr}
bl TaskManager_GetEnv
add r4, r0, #0
ldrb r1, [r4]
cmp r1, #0
beq _020500B8
cmp r1, #1
beq _020500CE
cmp r1, #2
beq _0205010E
b _02050116
_020500B8:
mov r0, #0x86
add r1, r4, #0
mov r2, #0x10
bl sub_02037030
cmp r0, #1
bne _02050116
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _02050116
_020500CE:
ldrb r0, [r4, #1]
cmp r0, #2
blo _02050116
ldr r0, [r4, #0xc]
mov r1, #0
strh r1, [r0]
ldrh r1, [r4, #4]
ldrh r0, [r4, #8]
cmp r1, r0
beq _020500E8
ldrh r0, [r4, #0xa]
cmp r1, r0
bne _020500F0
_020500E8:
ldr r1, [r4, #0xc]
ldrh r0, [r1]
add r0, r0, #1
strh r0, [r1]
_020500F0:
ldrh r1, [r4, #6]
ldrh r0, [r4, #8]
cmp r1, r0
beq _020500FE
ldrh r0, [r4, #0xa]
cmp r1, r0
bne _02050106
_020500FE:
ldr r1, [r4, #0xc]
ldrh r0, [r1]
add r0, r0, #2
strh r0, [r1]
_02050106:
ldrb r0, [r4]
add r0, r0, #1
strb r0, [r4]
b _02050116
_0205010E:
bl FreeToHeap
mov r0, #1
pop {r4, pc}
_02050116:
mov r0, #0
pop {r4, pc}
.balign 4, 0
thumb_func_end sub_020500A0
thumb_func_start sub_0205011C
sub_0205011C: ; 0x0205011C
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
add r6, r2, #0
bl TaskManager_GetFieldSystem
add r7, r0, #0
mov r0, #0xb
mov r1, #0x10
bl AllocFromHeap
add r4, r0, #0
mov r1, #0
mov r2, #0x10
bl MI_CpuFill8
strb r6, [r4, #4]
str r5, [r4, #0xc]
ldr r0, [r7, #0x10]
ldr r1, _0205014C ; =sub_02050150
add r2, r4, #0
bl TaskManager_Call
pop {r3, r4, r5, r6, r7, pc}
nop
_0205014C: .word sub_02050150
thumb_func_end sub_0205011C
thumb_func_start sub_02050150
sub_02050150: ; 0x02050150
push {r3, r4, r5, lr}
add r4, r0, #0
bl TaskManager_GetFieldSystem
add r5, r0, #0
add r0, r4, #0
bl TaskManager_GetEnv
add r4, r0, #0
ldr r1, [r4]
cmp r1, #4
bhi _020501B2
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_02050174: ; jump table
.short _0205017E - _02050174 - 2 ; case 0
.short _0205018A - _02050174 - 2 ; case 1
.short _02050194 - _02050174 - 2 ; case 2
.short _020501A0 - _02050174 - 2 ; case 3
.short _020501AA - _02050174 - 2 ; case 4
_0205017E:
add r1, r5, #0
mov r2, #0xb
bl sub_020501B8
str r0, [r4]
b _020501B2
_0205018A:
add r1, r5, #0
bl sub_02050290
str r0, [r4]
b _020501B2
_02050194:
add r1, r5, #0
mov r2, #0xb
bl sub_020502E0
str r0, [r4]
b _020501B2
_020501A0:
add r1, r5, #0
bl sub_02050370
str r0, [r4]
b _020501B2
_020501AA:
bl FreeToHeap
mov r0, #1
pop {r3, r4, r5, pc}
_020501B2:
mov r0, #0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end sub_02050150
thumb_func_start sub_020501B8
sub_020501B8: ; 0x020501B8
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
mov r0, #0xb
mov r1, #0x44
bl AllocFromHeap
add r4, r0, #0
mov r0, #0
add r1, r4, #0
mov r2, #0x44
bl MIi_CpuClearFast
ldr r0, [r6, #0xc]
bl SaveArray_PlayerParty_Get
str r0, [r4]
ldr r0, [r6, #0xc]
bl SaveGetBag
str r0, [r4, #4]
ldr r0, [r6, #0xc]
bl Save_Mailbox_Get
str r0, [r4, #8]
ldr r0, [r6, #0xc]
bl Save_PlayerData_GetOptionsAddr
add r1, r4, #0
str r0, [r4, #0xc]
mov r0, #0
add r1, #0x25
strb r0, [r1]
add r1, r4, #0
mov r2, #0x17
add r1, #0x24
strb r2, [r1]
str r6, [r4, #0x1c]
add r1, r4, #0
ldrb r2, [r5, #5]
add r1, #0x26
strb r2, [r1]
_0205020C:
add r1, r5, r0
ldrb r2, [r1, #6]
add r1, r4, r0
add r0, r0, #1
lsl r0, r0, #0x18
add r1, #0x30
lsr r0, r0, #0x18
strb r2, [r1]
cmp r0, #3
blo _0205020C
add r0, r4, #0
mov r1, #0x64
add r0, #0x37
strb r1, [r0]
add r0, r4, #0
add r0, #0x36
mov r1, #0xf
ldrb r0, [r0]
mov ip, r1
add r2, r4, #0
bic r0, r1
mov r1, #3
orr r1, r0
add r0, r4, #0
add r0, #0x36
strb r1, [r0]
add r0, r4, #0
add r0, #0x36
ldrb r0, [r0]
mov r7, #0xf0
mov r3, #0x30
bic r0, r7
add r1, r0, #0
add r0, r4, #0
orr r1, r3
add r0, #0x36
add r3, #0xdc
strb r1, [r0]
add r0, r6, r3
str r0, [r4, #0x20]
ldrb r0, [r5, #4]
add r2, #0x36
cmp r0, #2
bne _0205027A
ldrb r0, [r2]
mov r1, ip
bic r0, r1
mov r1, #2
orr r0, r1
strb r0, [r2]
ldrb r1, [r2]
mov r0, #0x20
bic r1, r7
orr r0, r1
strb r0, [r2]
_0205027A:
ldr r1, _0205028C ; =_0210159C
add r0, r6, #0
add r2, r4, #0
bl FieldSys_LaunchApplication
ldr r0, [r5, #0xc]
str r4, [r0]
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_0205028C: .word _0210159C
thumb_func_end sub_020501B8
thumb_func_start sub_02050290
sub_02050290: ; 0x02050290
push {r3, r4, r5, lr}
add r5, r0, #0
add r0, r1, #0
bl FieldSys_ApplicationIsRunning
cmp r0, #0
beq _020502A2
mov r0, #1
pop {r3, r4, r5, pc}
_020502A2:
ldr r0, [r5, #0xc]
ldr r4, [r0]
add r0, r4, #0
add r0, #0x26
ldrb r0, [r0]
cmp r0, #6
beq _020502B8
cmp r0, #7
bne _020502BC
mov r0, #4
pop {r3, r4, r5, pc}
_020502B8:
mov r0, #4
pop {r3, r4, r5, pc}
_020502BC:
add r0, r4, #0
add r0, #0x30
add r1, r5, #6
mov r2, #3
bl MI_CpuCopy8
add r0, r4, #0
add r0, #0x26
ldrb r0, [r0]
strb r0, [r5, #5]
add r0, r4, #0
bl FreeToHeap
ldr r0, [r5, #0xc]
mov r1, #0
str r1, [r0]
mov r0, #2
pop {r3, r4, r5, pc}
thumb_func_end sub_02050290
thumb_func_start sub_020502E0
sub_020502E0: ; 0x020502E0
push {r3, r4, r5, r6, r7, lr}
add r7, r1, #0
add r6, r0, #0
ldr r5, [r7, #0xc]
add r0, r2, #0
mov r1, #0x3c
bl AllocFromHeapAtEnd
mov r1, #0
mov r2, #0x3c
add r4, r0, #0
bl MI_CpuFill8
add r0, r5, #0
bl Save_PlayerData_GetOptionsAddr
str r0, [r4, #4]
add r0, r5, #0
bl SaveArray_PlayerParty_Get
str r0, [r4]
add r0, r5, #0
bl SaveArray_IsNatDexEnabled
str r0, [r4, #0x1c]
add r0, r5, #0
bl sub_02088288
str r0, [r4, #0x2c]
mov r0, #1
strb r0, [r4, #0x11]
ldrb r0, [r6, #5]
strb r0, [r4, #0x14]
ldr r0, [r4]
bl GetPartyCount
strb r0, [r4, #0x13]
mov r0, #0
strh r0, [r4, #0x18]
strb r0, [r4, #0x12]
add r0, r5, #0
bl Save_SpecialRibbons_Get
str r0, [r4, #0x20]
add r0, r5, #0
bl sub_0208828C
str r0, [r4, #0x34]
ldr r1, _02050368 ; =_020FC3AC
add r0, r4, #0
bl sub_02089D40
add r0, r5, #0
bl Save_PlayerData_GetProfileAddr
add r1, r0, #0
add r0, r4, #0
bl sub_0208AD34
ldr r1, _0205036C ; =_02103A1C
add r0, r7, #0
add r2, r4, #0
bl FieldSys_LaunchApplication
ldr r0, [r6, #0xc]
str r4, [r0]
mov r0, #3
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
_02050368: .word _020FC3AC
_0205036C: .word _02103A1C
thumb_func_end sub_020502E0
thumb_func_start sub_02050370
sub_02050370: ; 0x02050370
push {r4, lr}
add r4, r0, #0
add r0, r1, #0
bl FieldSys_ApplicationIsRunning
cmp r0, #0
beq _02050382
mov r0, #3
pop {r4, pc}
_02050382:
ldr r0, [r4, #0xc]
ldr r0, [r0]
ldrb r1, [r0, #0x14]
strb r1, [r4, #5]
bl FreeToHeap
ldr r1, [r4, #0xc]
mov r0, #0
str r0, [r1]
pop {r4, pc}
.balign 4, 0
thumb_func_end sub_02050370
thumb_func_start sub_02050398
sub_02050398: ; 0x02050398
push {r4, r5, r6, lr}
add r4, r3, #0
add r6, r0, #0
ldrb r0, [r4, #1]
add r5, r2, #0
add r0, r0, #1
strb r0, [r4, #1]
bl sub_0203769C
cmp r6, r0
beq _020503B6
ldrh r0, [r5, #4]
strh r0, [r4, #8]
ldrh r0, [r5, #6]
strh r0, [r4, #0xa]
_020503B6:
pop {r4, r5, r6, pc}
thumb_func_end sub_02050398