pmd-sky/asm/main_0204B018.s
AnonymousRandomPerson 89acbf9b5c Decomped IsGameModeRescue
Decomped by ElectricGeorge
2025-06-15 17:48:07 -05:00

7847 lines
147 KiB
ArmAsm

.include "asm/macros.inc"
.include "main_0204B018.inc"
.text
arm_func_start sub_0204B018
sub_0204B018: ; 0x0204B018
ldr r1, _0204B024 ; =GAME_MODE
strb r0, [r1]
bx lr
.align 2, 0
_0204B024: .word GAME_MODE
arm_func_end sub_0204B018
arm_func_start sub_0204B028
sub_0204B028: ; 0x0204B028
ldr r1, _0204B040 ; =_0209DF70
ldr ip, _0204B044 ; =Debug_Print0
ldr r0, _0204B048 ; =_0209CF0C
ldrsh r1, [r1, #0x24]
mov r2, #0x400
bx ip
.align 2, 0
_0204B040: .word _0209DF70
_0204B044: .word Debug_Print0
_0204B048: .word _0209CF0C
arm_func_end sub_0204B028
arm_func_start InitScriptVariableValues
InitScriptVariableValues: ; 0x0204B04C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov r1, #0
ldr r0, _0204B2F8 ; =SCRIPT_VARS_VALUES
mov r7, r1
_0204B05C:
strb r7, [r0, r1]
add r1, r1, #1
cmp r1, #0x400
blt _0204B05C
mov r4, #0
ldr r6, _0204B2FC ; =SCRIPT_VARS
mov r5, r4
_0204B078:
mov r0, r7, lsl #4
ldrsh r0, [r6, r0]
add r8, r6, r7, lsl #4
cmp r0, #0
cmpne r0, #9
beq _0204B0C4
mov sb, r5
b _0204B0B8
_0204B098:
ldrsh r3, [r8, #0xa]
mov r0, r4
mov r1, r7
mov r2, sb
bl SaveScriptVariableValueAtIndex
add r0, sb, #1
mov r0, r0, lsl #0x10
mov sb, r0, lsr #0x10
_0204B0B8:
ldrsh r0, [r8, #8]
cmp sb, r0
blt _0204B098
_0204B0C4:
add r0, r7, #1
mov r0, r0, lsl #0x10
mov r7, r0, asr #0x10
cmp r7, #0x72
blt _0204B078
mov r0, #0
mov r2, r0
mov r1, #0x46
bl SaveScriptVariableValue
mov r0, #0
mov r1, #1
bl ZinitScriptVariable
bl InitEventFlagScriptVars
mov sl, #0
#ifdef JAPAN
mov sb, sl
mov r8, #0x21
mov r7, #0x13c
mov r6, sl
mov r5, #0x22
mov fp, sl
mvn r4, #0
#else
ldr r7, _0204B300 ; =0x00000137
mov sb, sl
#ifdef EUROPE
sub r4, r7, #0x144
#else
sub r4, r7, #0x138
#endif
mov r8, #0x21
mov r6, sl
mov r5, #0x22
mov fp, sl
#endif
_0204B118:
mov r2, sl, lsl #0x10
mov r0, sb
mov r1, r8
mov r2, r2, lsr #0x10
mov r3, r7
bl SaveScriptVariableValueAtIndex
mov r2, sl, lsl #0x10
mov r0, r6
mov r1, r5
mov r2, r2, lsr #0x10
mov r3, r6
bl SaveScriptVariableValueAtIndex
mov r2, sl, lsl #0x10
mov r0, fp
mov r1, #0x23
mov r2, r2, lsr #0x10
#ifdef JAPAN
mov r3, #0x13c
#else
mov r3, r7
#endif
bl SaveScriptVariableValueAtIndex
mov r2, sl, lsl #0x10
mov r0, #0
mov r1, #0x24
mov r2, r2, lsr #0x10
mov r3, r4
bl SaveScriptVariableValueAtIndex
mov r2, sl, lsl #0x10
mov r0, #0
mov r1, #0x25
mov r2, r2, lsr #0x10
mov r3, #0xbb
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r2, sl, lsl #0x10
mov r1, #0x2d
mov r2, r2, lsr #0x10
mov r3, r0
bl SaveScriptVariableValueAtIndex
mov r2, sl, lsl #0x10
mov r0, #0
mov r1, #0x2f
mov r2, r2, lsr #0x10
mov r3, r4
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r2, sl, lsl #0x10
mov r1, #0x31
mov r2, r2, lsr #0x10
mov r3, r0
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r2, sl, lsl #0x10
mov r1, #0x32
mov r2, r2, lsr #0x10
mov r3, r0
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r2, sl, lsl #0x10
mov r1, #0x37
mov r2, r2, lsr #0x10
mov r3, r0
bl SaveScriptVariableValueAtIndex
mov r2, sl, lsl #0x10
mov r0, #0
mov r1, #0x38
mov r2, r2, lsr #0x10
mov r3, #2
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r2, sl, lsl #0x10
mov r1, #0x39
mov r2, r2, lsr #0x10
mov r3, r0
bl SaveScriptVariableValueAtIndex
add sl, sl, #1
cmp sl, #4
blt _0204B118
mov r1, #0x26
sub r2, r1, #0x27
mov r0, #0
bl SaveScriptVariableValue
mov r0, #0
mov r2, r0
mov r1, #0x33
bl SaveScriptVariableValue
mov r0, #0
mov r2, r0
mov r1, #0x6e
bl SaveScriptVariableValue
mov r0, #0
mov r2, r0
mov r1, #0x3e
bl SaveScriptVariableValue
mov r0, #0
mov r2, r0
mov r1, #0x40
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x42
mov r2, #4
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x43
mov r2, #1
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x4a
sub r2, r1, #0x4b
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x4b
bl ZinitScriptVariable
mov r0, #0
mov r1, #0x4c
bl ZinitScriptVariable
mov r0, #0
mov r1, #0x4d
bl ZinitScriptVariable
bl InitScenarioScriptVars
bl InitWorldMapScriptVars
bl InitDungeonListScriptVars
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0204B2F8: .word SCRIPT_VARS_VALUES
_0204B2FC: .word SCRIPT_VARS
#if defined(EUROPE)
_0204B300: .word 0x00000143
#elif !defined(JAPAN)
_0204B300: .word 0x00000137
#endif
arm_func_end InitScriptVariableValues
arm_func_start InitEventFlagScriptVars
InitEventFlagScriptVars: ; 0x0204B304
stmdb sp!, {r3, lr}
#ifdef JAPAN
mov r0, #0
mov r1, #0x1c
mov r2, #0x13c
#else
ldr r2, _0204B3CC ; =0x00000137
mov r0, #0
mov r1, #0x1c
#endif
bl SaveScriptVariableValue
mov r0, #0
mov r2, r0
mov r1, #0x1d
bl SaveScriptVariableValue
#ifdef JAPAN
mov r0, #0
mov r1, #0x1e
mov r2, #0x13c
#else
ldr r2, _0204B3CC ; =0x00000137
mov r0, #0
mov r1, #0x1e
#endif
bl SaveScriptVariableValue
mov r1, #0x1f
sub r2, r1, #0x20
mov r0, #0
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x20
mov r2, #0xbb
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x27
mov r2, r0
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x29
sub r2, r1, #0x2a
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x2b
mov r2, r0
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x2c
mov r2, r0
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x34
mov r2, r0
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x35
mov r2, #2
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x36
mov r2, r0
bl SaveScriptVariableValue
ldmia sp!, {r3, pc}
.align 2, 0
#if defined(EUROPE)
_0204B3CC: .word 0x00000143
#elif !defined(JAPAN)
_0204B3CC: .word 0x00000137
#endif
arm_func_end InitEventFlagScriptVars
arm_func_start sub_0204B3D0
sub_0204B3D0: ; 0x0204B3D0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r4, r1
cmp r4, #0x400
mov r5, r0
ldrlt r0, _0204B42C ; =SCRIPT_VARS
ldrge r1, _0204B430 ; =SCRIPT_VARS_LOCALS
addlt r7, r0, r4, lsl #4
subge r0, r4, #0x400
addge r7, r1, r0, lsl #4
mov r6, #0
b _0204B41C
_0204B3FC:
ldrsh r3, [r7, #0xa]
mov r0, r5
mov r1, r4
mov r2, r6
bl SaveScriptVariableValueAtIndex
add r0, r6, #1
mov r0, r0, lsl #0x10
mov r6, r0, lsr #0x10
_0204B41C:
ldrsh r0, [r7, #8]
cmp r6, r0
blt _0204B3FC
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0204B42C: .word SCRIPT_VARS
_0204B430: .word SCRIPT_VARS_LOCALS
arm_func_end sub_0204B3D0
arm_func_start ZinitScriptVariable
ZinitScriptVariable: ; 0x0204B434
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r5, r1
cmp r5, #0x400
mov r6, r0
ldrlt r0, _0204B494 ; =SCRIPT_VARS
mov r8, #0
addlt r4, r0, r5, lsl #4
ldrge r1, _0204B498 ; =SCRIPT_VARS_LOCALS
subge r0, r5, #0x400
addge r4, r1, r0, lsl #4
mov r7, r8
b _0204B484
_0204B464:
mov r0, r6
mov r1, r5
mov r2, r8
mov r3, r7
bl SaveScriptVariableValueAtIndex
add r0, r8, #1
mov r0, r0, lsl #0x10
mov r8, r0, lsr #0x10
_0204B484:
ldrsh r0, [r4, #8]
cmp r8, r0
blt _0204B464
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_0204B494: .word SCRIPT_VARS
_0204B498: .word SCRIPT_VARS_LOCALS
arm_func_end ZinitScriptVariable
arm_func_start LoadScriptVariableRaw
LoadScriptVariableRaw: ; 0x0204B49C
cmp r2, #0x400
bge _0204B4C0
ldr r1, _0204B4E0 ; =SCRIPT_VARS
ldr r3, _0204B4E4 ; =SCRIPT_VARS_VALUES
add r1, r1, r2, lsl #4
str r1, [r0]
ldrsh r1, [r1, #4]
add r1, r3, r1
b _0204B4D8
_0204B4C0:
ldr r3, _0204B4E8 ; =SCRIPT_VARS_LOCALS
sub r2, r2, #0x400
add r2, r3, r2, lsl #4
str r2, [r0]
ldrsh r2, [r2, #4]
add r1, r1, r2, lsl #2
_0204B4D8:
str r1, [r0, #4]
bx lr
.align 2, 0
_0204B4E0: .word SCRIPT_VARS
_0204B4E4: .word SCRIPT_VARS_VALUES
_0204B4E8: .word SCRIPT_VARS_LOCALS
arm_func_end LoadScriptVariableRaw
arm_func_start LoadScriptVariableValue
LoadScriptVariableValue: ; 0x0204B4EC
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r2, r0
mov r4, r1
mov r1, r2
add r0, sp, #0
mov r2, r4
bl LoadScriptVariableRaw
ldr r1, [sp]
ldrsh r0, [r1]
cmp r0, #9
addls pc, pc, r0, lsl #2
b _0204B66C
_0204B520: ; jump table
b _0204B66C ; case 0
b _0204B548 ; case 1
b _0204B56C ; case 2
b _0204B56C ; case 3
b _0204B578 ; case 4
b _0204B584 ; case 5
b _0204B590 ; case 6
b _0204B59C ; case 7
b _0204B59C ; case 8
b _0204B5A8 ; case 9
_0204B548:
ldrsh r1, [r1, #6]
ldr r2, [sp, #4]
mov r0, #1
mov r1, r0, lsl r1
ldrb r2, [r2]
and r1, r1, #0xff
tst r2, r1
moveq r0, #0
b _0204B670
_0204B56C:
ldr r0, [sp, #4]
ldrb r0, [r0]
b _0204B670
_0204B578:
ldr r0, [sp, #4]
ldrsb r0, [r0]
b _0204B670
_0204B584:
ldr r0, [sp, #4]
ldrh r0, [r0]
b _0204B670
_0204B590:
ldr r0, [sp, #4]
ldrsh r0, [r0]
b _0204B670
_0204B59C:
ldr r0, [sp, #4]
ldr r0, [r0]
b _0204B670
_0204B5A8:
cmp r4, #0x48
bgt _0204B5E4
bge _0204B62C
cmp r4, #0x3d
bgt _0204B5D8
subs r0, r4, #0x3a
addpl pc, pc, r0, lsl #2
b _0204B66C
_0204B5C8: ; jump table
b _0204B600 ; case 0
b _0204B608 ; case 1
b _0204B614 ; case 2
b _0204B61C ; case 3
_0204B5D8:
cmp r4, #0x47
beq _0204B624
b _0204B66C
_0204B5E4:
cmp r4, #0x49
bgt _0204B5F4
beq _0204B634
b _0204B66C
_0204B5F4:
cmp r4, #0x70
beq _0204B664
b _0204B66C
_0204B600:
mov r0, #1
b _0204B670
_0204B608:
mov r0, #0
bl GetPartyMembers
b _0204B670
_0204B614:
bl GetMoneyCarried
b _0204B670
_0204B61C:
bl GetMoneyStored
b _0204B670
_0204B624:
bl GetLanguageType
b _0204B670
_0204B62C:
bl GetGameMode
b _0204B670
_0204B634:
bl GetGameMode
cmp r0, #1
beq _0204B64C
cmp r0, #3
beq _0204B654
b _0204B65C
_0204B64C:
bl sub_0204C918
b _0204B670
_0204B654:
bl GetSpecialEpisodeType
b _0204B670
_0204B65C:
mvn r0, #0
b _0204B670
_0204B664:
bl GetNotifyNote
b _0204B670
_0204B66C:
mov r0, #0
_0204B670:
add sp, sp, #8
ldmia sp!, {r4, pc}
arm_func_end LoadScriptVariableValue
arm_func_start LoadScriptVariableValueAtIndex
LoadScriptVariableValueAtIndex: ; 0x0204B678
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r3, r0
mov r5, r1
mov r4, r2
add r0, sp, #0
mov r1, r3
mov r2, r5
bl LoadScriptVariableRaw
ldr r1, [sp]
ldrsh r0, [r1]
cmp r0, #9
addls pc, pc, r0, lsl #2
b _0204B814
_0204B6B0: ; jump table
b _0204B814 ; case 0
b _0204B6D8 ; case 1
b _0204B70C ; case 2
b _0204B70C ; case 3
b _0204B718 ; case 4
b _0204B724 ; case 5
b _0204B734 ; case 6
b _0204B744 ; case 7
b _0204B744 ; case 8
b _0204B750 ; case 9
_0204B6D8:
ldrsh r1, [r1, #6]
ldr r2, [sp, #4]
mov r0, #1
add r1, r4, r1
mov r1, r1, lsl #0x10
mov r3, r1, lsr #0x10
and r1, r3, #7
mov r1, r0, lsl r1
ldrb r2, [r2, r3, lsr #3]
and r1, r1, #0xff
tst r2, r1
moveq r0, #0
b _0204B818
_0204B70C:
ldr r0, [sp, #4]
ldrb r0, [r0, r4]
b _0204B818
_0204B718:
ldr r0, [sp, #4]
ldrsb r0, [r0, r4]
b _0204B818
_0204B724:
ldr r1, [sp, #4]
mov r0, r4, lsl #1
ldrh r0, [r1, r0]
b _0204B818
_0204B734:
ldr r1, [sp, #4]
mov r0, r4, lsl #1
ldrsh r0, [r1, r0]
b _0204B818
_0204B744:
ldr r0, [sp, #4]
ldr r0, [r0, r4, lsl #2]
b _0204B818
_0204B750:
cmp r5, #0x48
bgt _0204B78C
bge _0204B7D4
cmp r5, #0x3d
bgt _0204B780
subs r0, r5, #0x3a
addpl pc, pc, r0, lsl #2
b _0204B814
_0204B770: ; jump table
b _0204B7A8 ; case 0
b _0204B7B0 ; case 1
b _0204B7BC ; case 2
b _0204B7C4 ; case 3
_0204B780:
cmp r5, #0x47
beq _0204B7CC
b _0204B814
_0204B78C:
cmp r5, #0x49
bgt _0204B79C
beq _0204B7DC
b _0204B814
_0204B79C:
cmp r5, #0x70
beq _0204B80C
b _0204B814
_0204B7A8:
mov r0, #1
b _0204B818
_0204B7B0:
mov r0, #0
bl GetPartyMembers
b _0204B818
_0204B7BC:
bl GetMoneyCarried
b _0204B818
_0204B7C4:
bl GetMoneyStored
b _0204B818
_0204B7CC:
bl GetLanguageType
b _0204B818
_0204B7D4:
bl GetGameMode
b _0204B818
_0204B7DC:
bl GetGameMode
cmp r0, #1
beq _0204B7F4
cmp r0, #3
beq _0204B7FC
b _0204B804
_0204B7F4:
bl sub_0204C918
b _0204B818
_0204B7FC:
bl GetSpecialEpisodeType
b _0204B818
_0204B804:
mvn r0, #0
b _0204B818
_0204B80C:
bl GetNotifyNote
b _0204B818
_0204B814:
mov r0, #0
_0204B818:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
arm_func_end LoadScriptVariableValueAtIndex
arm_func_start SaveScriptVariableValue
SaveScriptVariableValue: ; 0x0204B820
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r3, r0
mov r5, r1
mov r4, r2
add r0, sp, #0
mov r1, r3
mov r2, r5
bl LoadScriptVariableRaw
ldr r1, [sp]
ldrsh r0, [r1]
cmp r0, #9
addls pc, pc, r0, lsl #2
b _0204B980
_0204B858: ; jump table
b _0204B980 ; case 0
b _0204B880 ; case 1
b _0204B8C0 ; case 2
b _0204B8C0 ; case 3
b _0204B8CC ; case 4
b _0204B8D8 ; case 5
b _0204B8E4 ; case 6
b _0204B8F0 ; case 7
b _0204B8F0 ; case 8
b _0204B8FC ; case 9
_0204B880:
ldrsh r0, [r1, #6]
mov r1, #1
cmp r4, #0
mov r0, r1, lsl r0
ldrne r1, [sp, #4]
and r2, r0, #0xff
ldrneb r0, [r1]
orrne r0, r0, r2
strneb r0, [r1]
bne _0204B980
ldr r1, [sp, #4]
ldrb r0, [r1]
orr r0, r0, r2
eor r0, r2, r0
strb r0, [r1]
b _0204B980
_0204B8C0:
ldr r0, [sp, #4]
strb r4, [r0]
b _0204B980
_0204B8CC:
ldr r0, [sp, #4]
strb r4, [r0]
b _0204B980
_0204B8D8:
ldr r0, [sp, #4]
strh r4, [r0]
b _0204B980
_0204B8E4:
ldr r0, [sp, #4]
strh r4, [r0]
b _0204B980
_0204B8F0:
ldr r0, [sp, #4]
str r4, [r0]
b _0204B980
_0204B8FC:
cmp r5, #0x49
bgt _0204B928
bge _0204B954
cmp r5, #0x3d
bgt _0204B980
cmp r5, #0x3c
blt _0204B980
beq _0204B934
cmp r5, #0x3d
beq _0204B948
b _0204B980
_0204B928:
cmp r5, #0x70
beq _0204B96C
b _0204B980
_0204B934:
mov r0, r4
bl SetMoneyCarried
mov r0, #0
bl AddMoneyCarried
b _0204B980
_0204B948:
mov r0, r4
bl SetMoneyStored
b _0204B980
_0204B954:
bl GetGameMode
cmp r0, #1
bne _0204B980
mov r0, r4
bl sub_0204C928
b _0204B980
_0204B96C:
cmp r4, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bl SetNotifyNote
_0204B980:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
arm_func_end SaveScriptVariableValue
arm_func_start SaveScriptVariableValueAtIndex
SaveScriptVariableValueAtIndex: ; 0x0204B988
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r4, r0
mov r6, r1
mov r5, r2
mov r1, r4
add r0, sp, #0
mov r2, r6
mov r4, r3
bl LoadScriptVariableRaw
ldr r1, [sp]
ldrsh r0, [r1]
cmp r0, #9
addls pc, pc, r0, lsl #2
b _0204BAF8
_0204B9C4: ; jump table
b _0204BAF8 ; case 0
b _0204B9EC ; case 1
b _0204BA30 ; case 2
b _0204BA30 ; case 3
b _0204BA3C ; case 4
b _0204BA48 ; case 5
b _0204BA58 ; case 6
b _0204BA68 ; case 7
b _0204BA68 ; case 8
b _0204BA74 ; case 9
_0204B9EC:
ldrsh r0, [r1, #6]
mov r1, #1
ldr r2, [sp, #4]
add r0, r5, r0
mov r0, r0, lsl #0x10
mov r3, r0, lsr #0x10
and r0, r3, #7
mov r0, r1, lsl r0
and r1, r0, #0xff
ldrb r0, [r2, r3, lsr #3]
cmp r4, #0
orrne r0, r0, r1
strneb r0, [r2, r3, lsr #3]
orreq r0, r0, r1
eoreq r0, r1, r0
streqb r0, [r2, r3, lsr #3]
b _0204BAF8
_0204BA30:
ldr r0, [sp, #4]
strb r4, [r0, r5]
b _0204BAF8
_0204BA3C:
ldr r0, [sp, #4]
strb r4, [r0, r5]
b _0204BAF8
_0204BA48:
ldr r1, [sp, #4]
mov r0, r5, lsl #1
strh r4, [r1, r0]
b _0204BAF8
_0204BA58:
ldr r1, [sp, #4]
mov r0, r5, lsl #1
strh r4, [r1, r0]
b _0204BAF8
_0204BA68:
ldr r0, [sp, #4]
str r4, [r0, r5, lsl #2]
b _0204BAF8
_0204BA74:
cmp r6, #0x49
bgt _0204BAA0
bge _0204BACC
cmp r6, #0x3d
bgt _0204BAF8
cmp r6, #0x3c
blt _0204BAF8
beq _0204BAAC
cmp r6, #0x3d
beq _0204BAC0
b _0204BAF8
_0204BAA0:
cmp r6, #0x70
beq _0204BAE4
b _0204BAF8
_0204BAAC:
mov r0, r4
bl SetMoneyCarried
mov r0, #0
bl AddMoneyCarried
b _0204BAF8
_0204BAC0:
mov r0, r4
bl SetMoneyStored
b _0204BAF8
_0204BACC:
bl GetGameMode
cmp r0, #1
bne _0204BAF8
mov r0, r4
bl sub_0204C928
b _0204BAF8
_0204BAE4:
cmp r4, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bl SetNotifyNote
_0204BAF8:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
arm_func_end SaveScriptVariableValueAtIndex
arm_func_start LoadScriptVariableValueSum
LoadScriptVariableValueSum: ; 0x0204BB00
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #8
mov r6, r1
mov r4, #0
mov r7, r0
add r0, sp, #0
mov r1, r4
mov r2, r6
bl LoadScriptVariableRaw
mov r5, r4
b _0204BB48
_0204BB2C:
mov r2, r5, lsl #0x10
mov r0, r7
mov r1, r6
mov r2, r2, lsr #0x10
bl LoadScriptVariableValueAtIndex
add r4, r4, r0
add r5, r5, #1
_0204BB48:
ldr r0, [sp]
ldrsh r0, [r0, #8]
cmp r5, r0
blt _0204BB2C
mov r0, r4
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end LoadScriptVariableValueSum
arm_func_start LoadScriptVariableValueBytes
LoadScriptVariableValueBytes: ; 0x0204BB64
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r3, r0
mov r5, r1
mov r4, r2
add r0, sp, #0
mov r2, r3
mov r1, #0
bl LoadScriptVariableRaw
ldr r2, [sp, #4]
mov r1, #0
b _0204BBA0
_0204BB94:
ldrb r0, [r2], #1
add r1, r1, #1
strb r0, [r5], #1
_0204BBA0:
cmp r1, r4
blt _0204BB94
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
arm_func_end LoadScriptVariableValueBytes
arm_func_start sub_0204BBB0
sub_0204BBB0: ; 0x0204BBB0
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
mov r4, r2
bl LoadScriptVariableValueBytes
mov r0, #0
strb r0, [r5, r4]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0204BBB0
arm_func_start SaveScriptVariableValueBytes
SaveScriptVariableValueBytes: ; 0x0204BBCC
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r3, r0
mov r5, r1
mov r4, r2
add r0, sp, #0
mov r2, r3
mov r1, #0
bl LoadScriptVariableRaw
ldr r2, [sp, #4]
mov r1, #0
b _0204BC08
_0204BBFC:
ldrb r0, [r5], #1
add r1, r1, #1
strb r0, [r2], #1
_0204BC08:
cmp r1, r4
blt _0204BBFC
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
arm_func_end SaveScriptVariableValueBytes
arm_func_start ScriptVariablesEqual
ScriptVariablesEqual: ; 0x0204BC18
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x10
mov r8, r0
mov r7, r1
mov r6, r2
add r0, sp, #8
mov r1, r8
mov r2, r7
bl LoadScriptVariableRaw
add r0, sp, #0
mov r1, r8
mov r2, r6
bl LoadScriptVariableRaw
ldr r0, [sp, #8]
mov r5, #0
ldrsh r4, [r0, #8]
b _0204BC98
_0204BC5C:
mov r2, r5, lsl #0x10
mov r0, r8
mov r1, r7
mov r2, r2, lsr #0x10
bl LoadScriptVariableValueAtIndex
mov r2, r5, lsl #0x10
mov sb, r0
mov r0, r8
mov r1, r6
mov r2, r2, lsr #0x10
bl LoadScriptVariableValueAtIndex
cmp sb, r0
movne r0, #0
bne _0204BCA4
add r5, r5, #1
_0204BC98:
cmp r5, r4
blt _0204BC5C
mov r0, #1
_0204BCA4:
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end ScriptVariablesEqual
arm_func_start sub_0204BCAC
sub_0204BCAC: ; 0x0204BCAC
stmdb sp!, {r3, lr}
sub sp, sp, #8
cmp r2, #0xb
addls pc, pc, r2, lsl #2
b _0204BD68
_0204BCC0: ; jump table
b _0204BCF0 ; case 0
b _0204BCF8 ; case 1
b _0204BD00 ; case 2
b _0204BD08 ; case 3
b _0204BD14 ; case 4
b _0204BD1C ; case 5
b _0204BD28 ; case 6
b _0204BD30 ; case 7
b _0204BD38 ; case 8
b _0204BD40 ; case 9
b _0204BD4C ; case 10
b _0204BD5C ; case 11
_0204BCF0:
mov r0, r1
b _0204BD88
_0204BCF8:
sub r0, r0, r1
b _0204BD88
_0204BD00:
add r0, r0, r1
b _0204BD88
_0204BD08:
mul r1, r0, r1
mov r0, r1
b _0204BD88
_0204BD14:
bl _s32_div_f
b _0204BD88
_0204BD1C:
bl _s32_div_f
mov r0, r1
b _0204BD88
_0204BD28:
and r0, r0, r1
b _0204BD88
_0204BD30:
orr r0, r0, r1
b _0204BD88
_0204BD38:
eor r0, r0, r1
b _0204BD88
_0204BD40:
mov r2, #1
orr r0, r0, r2, lsl r1
b _0204BD88
_0204BD4C:
mov r2, #1
mvn r1, r2, lsl r1
and r0, r0, r1
b _0204BD88
_0204BD5C:
mov r0, r1
bl RandInt
b _0204BD88
_0204BD68:
ldr r1, _0204BD90 ; =_0209CEAC
add r0, sp, #0
ldr r3, [r1, #4]
ldr ip, [r1]
ldr r1, _0204BD94 ; =_0209CF28
str ip, [sp]
str r3, [sp, #4]
bl Debug_FatalError
_0204BD88:
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
_0204BD90: .word _0209CEAC
_0204BD94: .word _0209CF28
arm_func_end sub_0204BCAC
arm_func_start sub_0204BD98
sub_0204BD98: ; 0x0204BD98
stmdb sp!, {r3, lr}
sub sp, sp, #8
cmp r2, #0xa
addls pc, pc, r2, lsl #2
b _0204BE9C
_0204BDAC: ; jump table
b _0204BDD8 ; case 0
b _0204BDE0 ; case 1
b _0204BDE8 ; case 2
b _0204BE10 ; case 3
b _0204BE38 ; case 4
b _0204BE24 ; case 5
b _0204BE4C ; case 6
b _0204BDFC ; case 7
b _0204BE60 ; case 8
b _0204BE74 ; case 9
b _0204BE88 ; case 10
_0204BDD8:
mov r0, #1
b _0204BEBC
_0204BDE0:
mov r0, #0
b _0204BEBC
_0204BDE8:
cmp r0, r1
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
b _0204BEBC
_0204BDFC:
cmp r0, r1
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
b _0204BEBC
_0204BE10:
cmp r0, r1
movgt r0, #1
movle r0, #0
and r0, r0, #0xff
b _0204BEBC
_0204BE24:
cmp r0, r1
movge r0, #1
movlt r0, #0
and r0, r0, #0xff
b _0204BEBC
_0204BE38:
cmp r0, r1
movlt r0, #1
movge r0, #0
and r0, r0, #0xff
b _0204BEBC
_0204BE4C:
cmp r0, r1
movle r0, #1
movgt r0, #0
and r0, r0, #0xff
b _0204BEBC
_0204BE60:
tst r0, r1
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
b _0204BEBC
_0204BE74:
teq r0, r1
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
b _0204BEBC
_0204BE88:
mov r2, #1
tst r0, r2, lsl r1
moveq r2, #0
and r0, r2, #0xff
b _0204BEBC
_0204BE9C:
ldr r1, _0204BEC4 ; =_0209CEAC
add r0, sp, #0
ldr r3, [r1, #0xc]
ldr ip, [r1, #8]
ldr r1, _0204BEC8 ; =_0209CF48
str ip, [sp]
str r3, [sp, #4]
bl Debug_FatalError
_0204BEBC:
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
_0204BEC4: .word _0209CEAC
_0204BEC8: .word _0209CF48
arm_func_end sub_0204BD98
arm_func_start sub_0204BECC
sub_0204BECC: ; 0x0204BECC
ldr ip, _0204BED4 ; =sub_0204BCAC
bx ip
.align 2, 0
_0204BED4: .word sub_0204BCAC
arm_func_end sub_0204BECC
arm_func_start sub_0204BED8
sub_0204BED8: ; 0x0204BED8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r5, r2
mov r4, r3
mov r7, r0
mov r6, r1
bl LoadScriptVariableValue
mov r1, r5
mov r2, r4
bl sub_0204BCAC
mov r2, r0
mov r0, r7
mov r1, r6
bl SaveScriptVariableValue
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_0204BED8
arm_func_start sub_0204BF10
sub_0204BF10: ; 0x0204BF10
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
mov r6, r2
mov r7, r1
mov r5, r3
bl LoadScriptVariableValue
mov r4, r0
mov r0, r8
mov r1, r6
bl LoadScriptVariableValue
mov r1, r0
mov r0, r4
mov r2, r5
bl sub_0204BCAC
mov r2, r0
mov r0, r8
mov r1, r7
bl SaveScriptVariableValue
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end sub_0204BF10
arm_func_start sub_0204BF5C
sub_0204BF5C: ; 0x0204BF5C
ldr ip, _0204BF64 ; =sub_0204BD98
bx ip
.align 2, 0
_0204BF64: .word sub_0204BD98
arm_func_end sub_0204BF5C
arm_func_start sub_0204BF68
sub_0204BF68: ; 0x0204BF68
stmdb sp!, {r3, r4, r5, lr}
mov r5, r2
mov r4, r3
bl LoadScriptVariableValue
mov r1, r5
mov r2, r4
bl sub_0204BD98
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0204BF68
arm_func_start sub_0204BF88
sub_0204BF88: ; 0x0204BF88
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r2
mov r5, r3
bl LoadScriptVariableValue
mov r4, r0
mov r0, r7
mov r1, r6
bl LoadScriptVariableValue
mov r1, r0
mov r0, r4
mov r2, r5
bl sub_0204BD98
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_0204BF88
arm_func_start EventFlagResume
EventFlagResume: ; 0x0204BFC0
stmdb sp!, {r4, lr}
bl GetGameMode
cmp r0, #1
ldmlsia sp!, {r4, pc}
sub r4, r0, #2
ldr r0, _0204C1E0 ; =_0209CF64
mov r1, r4
bl Debug_Print0
mov r0, r4, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x21
bl LoadScriptVariableValueAtIndex
mov r2, r0
mov r0, #0
mov r1, #0x1c
bl SaveScriptVariableValue
mov r0, r4, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x22
bl LoadScriptVariableValueAtIndex
mov r2, r0
mov r0, #0
mov r1, #0x1d
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x23
mov r2, r4, lsl #0x10
mov r2, r2, lsr #0x10
bl LoadScriptVariableValueAtIndex
mov r2, r0
mov r0, #0
mov r1, #0x1e
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x24
mov r2, r4, lsl #0x10
mov r2, r2, lsr #0x10
bl LoadScriptVariableValueAtIndex
mov r2, r0
mov r0, #0
mov r1, #0x1f
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x25
mov r2, r4, lsl #0x10
mov r2, r2, lsr #0x10
bl LoadScriptVariableValueAtIndex
mov r2, r0
mov r0, #0
mov r1, #0x20
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x2d
mov r2, r4, lsl #0x10
mov r2, r2, lsr #0x10
bl LoadScriptVariableValueAtIndex
mov r2, r0
mov r0, #0
mov r1, #0x27
bl SaveScriptVariableValue
mov r0, r4, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x2e
bl LoadScriptVariableValueAtIndex
mov r2, r0
mov r0, #0
mov r1, #0x28
bl SaveScriptVariableValue
mov r0, r4, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x2f
bl LoadScriptVariableValueAtIndex
mov r2, r0
mov r0, #0
mov r1, #0x29
bl SaveScriptVariableValue
mov r0, r4, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x30
bl LoadScriptVariableValueAtIndex
mov r2, r0
mov r0, #0
mov r1, #0x2a
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x31
mov r2, r4, lsl #0x10
mov r2, r2, lsr #0x10
bl LoadScriptVariableValueAtIndex
mov r2, r0
mov r0, #0
mov r1, #0x2b
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x32
mov r2, r4, lsl #0x10
mov r2, r2, lsr #0x10
bl LoadScriptVariableValueAtIndex
mov r2, r0
mov r0, #0
mov r1, #0x2c
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x37
mov r2, r4, lsl #0x10
mov r2, r2, lsr #0x10
bl LoadScriptVariableValueAtIndex
mov r2, r0
mov r0, #0
mov r1, #0x34
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x38
mov r2, r4, lsl #0x10
mov r2, r2, lsr #0x10
bl LoadScriptVariableValueAtIndex
mov r2, r0
mov r0, #0
mov r1, #0x35
bl SaveScriptVariableValue
mov r0, r4, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x39
bl LoadScriptVariableValueAtIndex
mov r2, r0
mov r0, #0
mov r1, #0x36
bl SaveScriptVariableValue
bl sub_0204CBE8
ldmia sp!, {r4, pc}
.align 2, 0
_0204C1E0: .word _0209CF64
arm_func_end EventFlagResume
arm_func_start EventFlagBackup
EventFlagBackup: ; 0x0204C1E4
stmdb sp!, {r4, lr}
bl GetGameMode
cmp r0, #1
ldmlsia sp!, {r4, pc}
sub r4, r0, #2
ldr r0, _0204C404 ; =_0209CF84
mov r1, r4
bl Debug_Print0
mov r0, #0
mov r1, #0x1c
bl LoadScriptVariableValue
mov r1, r4, lsl #0x10
mov r3, r0
mov r2, r1, lsr #0x10
mov r0, #0
mov r1, #0x21
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r1, #0x1d
bl LoadScriptVariableValue
mov r3, r0
mov r0, #0
mov r1, #0x22
mov r2, r4, lsl #0x10
mov r2, r2, lsr #0x10
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r1, #0x1e
bl LoadScriptVariableValue
mov r3, r0
mov r0, #0
mov r1, #0x23
mov r2, r4, lsl #0x10
mov r2, r2, lsr #0x10
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r1, #0x1f
bl LoadScriptVariableValue
mov r3, r0
mov r0, #0
mov r1, #0x24
mov r2, r4, lsl #0x10
mov r2, r2, lsr #0x10
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r1, #0x20
bl LoadScriptVariableValue
mov r3, r0
mov r0, #0
mov r1, #0x25
mov r2, r4, lsl #0x10
mov r2, r2, lsr #0x10
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r1, #0x27
bl LoadScriptVariableValue
mov r3, r0
mov r0, #0
mov r1, #0x2d
mov r2, r4, lsl #0x10
mov r2, r2, lsr #0x10
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r1, #0x28
bl LoadScriptVariableValue
mov r1, r4, lsl #0x10
mov r3, r0
mov r2, r1, lsr #0x10
mov r0, #0
mov r1, #0x2e
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r1, #0x29
bl LoadScriptVariableValue
mov r1, r4, lsl #0x10
mov r2, r1, lsr #0x10
mov r3, r0
mov r0, #0
mov r1, #0x2f
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r1, #0x2a
bl LoadScriptVariableValue
mov r3, r0
mov r0, #0
mov r1, #0x30
mov r2, r4, lsl #0x10
mov r2, r2, lsr #0x10
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r1, #0x2b
bl LoadScriptVariableValue
mov r3, r0
mov r0, #0
mov r1, #0x31
mov r2, r4, lsl #0x10
mov r2, r2, lsr #0x10
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r1, #0x2c
bl LoadScriptVariableValue
mov r3, r0
mov r0, #0
mov r1, #0x32
mov r2, r4, lsl #0x10
mov r2, r2, lsr #0x10
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r1, #0x34
bl LoadScriptVariableValue
mov r3, r0
mov r0, #0
mov r1, #0x37
mov r2, r4, lsl #0x10
mov r2, r2, lsr #0x10
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r1, #0x35
bl LoadScriptVariableValue
mov r3, r0
mov r0, r4, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x38
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r1, #0x36
bl LoadScriptVariableValue
mov r1, r4, lsl #0x10
mov r3, r0
mov r2, r1, lsr #0x10
mov r0, #0
mov r1, #0x39
bl SaveScriptVariableValueAtIndex
bl ScenarioFlagBackup
ldmia sp!, {r4, pc}
.align 2, 0
_0204C404: .word _0209CF84
arm_func_end EventFlagBackup
arm_func_start DumpScriptVariableValues
DumpScriptVariableValues: ; 0x0204C408
stmdb sp!, {r4, lr}
mov r4, r0
bl EventFlagBackup
ldr r1, _0204C42C ; =SCRIPT_VARS_VALUES
mov r0, r4
mov r2, #0x400
bl MemcpySimple
mov r0, #1
ldmia sp!, {r4, pc}
.align 2, 0
_0204C42C: .word SCRIPT_VARS_VALUES
arm_func_end DumpScriptVariableValues
arm_func_start RestoreScriptVariableValues
RestoreScriptVariableValues: ; 0x0204C430
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r1, #0
mov r4, r0
add r0, sp, #0
mov r2, r1
bl LoadScriptVariableRaw
ldr r0, _0204C484 ; =SCRIPT_VARS_VALUES
mov r1, r4
mov r2, #0x400
bl MemcpySimple
ldr r1, [sp]
ldr r0, [sp, #4]
ldrsh r1, [r1, #0xa]
ldr r0, [r0]
cmp r1, r0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
_0204C484: .word SCRIPT_VARS_VALUES
arm_func_end RestoreScriptVariableValues
arm_func_start InitScenarioScriptVars
InitScenarioScriptVars: ; 0x0204C488
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r1, #0
mov r2, r1
mov r0, #2
bl SetScenarioScriptVar
mov r1, #0
mov r2, r1
mov r0, #3
bl SetScenarioScriptVar
mov r1, #0
mov r2, r1
mov r0, #4
bl SetScenarioScriptVar
mov r1, #0
mov r2, r1
mov r0, #5
bl SetScenarioScriptVar
mov r1, #0
mov r2, r1
mov r0, #6
bl SetScenarioScriptVar
mov r1, #0
mov r0, #7
mov r2, r1
bl SetScenarioScriptVar
mov r1, #0
mov r0, #8
mov r2, r1
bl SetScenarioScriptVar
mov r1, #0
mov r0, #9
mov r2, r1
bl SetScenarioScriptVar
mov r1, #0
mov r0, #0xa
mov r2, r1
bl SetScenarioScriptVar
mov r1, #0
mov r0, #0xb
mov r2, r1
bl SetScenarioScriptVar
mov r1, #0
mov r0, #0xc
mov r2, r1
bl SetScenarioScriptVar
mov r0, #0
mov r1, #0x11
bl ZinitScriptVariable
mov r0, #0
mov r1, #0x1b
bl ZinitScriptVariable
mov r8, #0
mov r6, #0x1a
mov r7, r8
mov r5, r8
mov r4, r6
_0204C568:
mov r2, r8, lsl #0x10
mov r0, r7
mov r1, r6
mov r3, r7
mov r2, r2, lsr #0x10
bl SaveScriptVariableValueAtIndex
add r0, r8, #4
mov r2, r0, lsl #0x10
mov r0, r5
mov r1, r4
mov r3, r5
mov r2, r2, lsr #0x10
bl SaveScriptVariableValueAtIndex
add r8, r8, #1
cmp r8, #4
blt _0204C568
mov r0, #0
mov r2, r0
mov r1, #0x13
bl SaveScriptVariableValue
mov r1, #0x14
sub r2, r1, #0x15
mov r0, #0
bl SaveScriptVariableValue
mov r0, #0
mov r2, r0
mov r1, #0x6f
bl SaveScriptVariableValue
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end InitScenarioScriptVars
arm_func_start sub_0204C5DC
sub_0204C5DC: ; 0x0204C5DC
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r0, #0
mov r4, r2
mov r1, r6
mov r2, r0
bl LoadScriptVariableValueAtIndex
str r0, [r5]
mov r1, r6
mov r0, #0
mov r2, #1
bl LoadScriptVariableValueAtIndex
str r0, [r4]
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0204C5DC
arm_func_start SetScenarioScriptVar
SetScenarioScriptVar: ; 0x0204C618
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0xc
mov r8, r0
mov r7, r1
mov r0, #0
mov r6, r2
mov r1, r8
mov r2, r0
bl LoadScriptVariableValueAtIndex
mov r5, r0
mov r1, r8
mov r0, #0
mov r2, #1
bl LoadScriptVariableValueAtIndex
mov r4, r0
stmia sp, {r4, r7}
ldr r1, _0204C6C4 ; =_0209DFA0
mov r0, #9
mov r2, r8
mov r3, r5
str r6, [sp, #8]
bl Debug_Print
cmp r8, #3
bne _0204C694
cmp r7, r5
cmpeq r6, r4
beq _0204C694
mov r0, #0
mov r2, r0
mov r1, #0x33
bl SaveScriptVariableValue
_0204C694:
mov r0, #0
mov r1, r8
mov r2, r0
mov r3, r7
bl SaveScriptVariableValueAtIndex
mov r1, r8
mov r3, r6
mov r0, #0
mov r2, #1
bl SaveScriptVariableValueAtIndex
add sp, sp, #0xc
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_0204C6C4: .word _0209DFA0
arm_func_end SetScenarioScriptVar
arm_func_start sub_0204C6C8
sub_0204C6C8: ; 0x0204C6C8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r0, #0
mov r5, r2
mov r1, r7
mov r2, r0
bl LoadScriptVariableValueAtIndex
mov r4, r0
mov r1, r7
mov r0, #0
mov r2, #1
bl LoadScriptVariableValueAtIndex
cmp r4, #0x35
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
cmp r4, r6
movlt r0, #1
ldmltia sp!, {r3, r4, r5, r6, r7, pc}
bne _0204C72C
cmp r5, #0
blt _0204C72C
cmp r0, r5
movlt r0, #1
ldmltia sp!, {r3, r4, r5, r6, r7, pc}
_0204C72C:
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_0204C6C8
arm_func_start sub_0204C734
sub_0204C734: ; 0x0204C734
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r0, #0
mov r5, r2
mov r1, r7
mov r2, r0
bl LoadScriptVariableValueAtIndex
mov r4, r0
mov r1, r7
mov r0, #0
mov r2, #1
bl LoadScriptVariableValueAtIndex
cmp r4, #0x35
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
cmp r4, r6
movlt r0, #1
ldmltia sp!, {r3, r4, r5, r6, r7, pc}
bne _0204C7A4
cmp r5, #0
blt _0204C79C
cmp r0, r5
bgt _0204C7A4
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_0204C79C:
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_0204C7A4:
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_0204C734
arm_func_start sub_0204C7AC
sub_0204C7AC: ; 0x0204C7AC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r0, #0
mov r5, r2
mov r1, r7
mov r2, r0
bl LoadScriptVariableValueAtIndex
mov r4, r0
mov r1, r7
mov r0, #0
mov r2, #1
bl LoadScriptVariableValueAtIndex
cmp r4, r6
bne _0204C800
cmp r5, #0
movlt r0, #1
ldmltia sp!, {r3, r4, r5, r6, r7, pc}
cmp r0, r5
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
_0204C800:
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_0204C7AC
arm_func_start sub_0204C808
sub_0204C808: ; 0x0204C808
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r0, #0
mov r5, r2
mov r1, r7
mov r2, r0
bl LoadScriptVariableValueAtIndex
mov r4, r0
mov r1, r7
mov r0, #0
mov r2, #1
bl LoadScriptVariableValueAtIndex
cmp r4, #0x35
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
cmp r4, r6
movgt r0, #1
ldmgtia sp!, {r3, r4, r5, r6, r7, pc}
bne _0204C878
cmp r5, #0
blt _0204C870
cmp r0, r5
blt _0204C878
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_0204C870:
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_0204C878:
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_0204C808
arm_func_start sub_0204C880
sub_0204C880: ; 0x0204C880
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r0, #0
mov r5, r2
mov r1, r7
mov r2, r0
bl LoadScriptVariableValueAtIndex
mov r4, r0
mov r1, r7
mov r0, #0
mov r2, #1
bl LoadScriptVariableValueAtIndex
cmp r4, #0x35
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
cmp r4, r6
movgt r0, #1
ldmgtia sp!, {r3, r4, r5, r6, r7, pc}
bne _0204C8E4
cmp r5, #0
blt _0204C8E4
cmp r0, r5
movgt r0, #1
ldmgtia sp!, {r3, r4, r5, r6, r7, pc}
_0204C8E4:
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_0204C880
arm_func_start GetSpecialEpisodeType
GetSpecialEpisodeType: ; 0x0204C8EC
ldr ip, _0204C8FC ; =LoadScriptVariableValue
mov r0, #0
mov r1, #0x4a
bx ip
.align 2, 0
_0204C8FC: .word LoadScriptVariableValue
arm_func_end GetSpecialEpisodeType
arm_func_start SetSpecialEpisodeType
SetSpecialEpisodeType: ; 0x0204C900
ldr ip, _0204C914 ; =SaveScriptVariableValue
mov r2, r0
mov r0, #0
mov r1, #0x4a
bx ip
.align 2, 0
_0204C914: .word SaveScriptVariableValue
arm_func_end SetSpecialEpisodeType
arm_func_start sub_0204C918
sub_0204C918: ; 0x0204C918
ldr r0, _0204C924 ; =DEBUG_SPECIAL_EPISODE_NUMBER
ldr r0, [r0]
bx lr
.align 2, 0
_0204C924: .word DEBUG_SPECIAL_EPISODE_NUMBER
arm_func_end sub_0204C918
arm_func_start sub_0204C928
sub_0204C928: ; 0x0204C928
ldr r1, _0204C934 ; =DEBUG_SPECIAL_EPISODE_NUMBER
str r0, [r1]
bx lr
.align 2, 0
_0204C934: .word DEBUG_SPECIAL_EPISODE_NUMBER
arm_func_end sub_0204C928
arm_func_start GetExecuteSpecialEpisodeType
GetExecuteSpecialEpisodeType: ; 0x0204C938
ldr ip, _0204C948 ; =LoadScriptVariableValue
mov r0, #0
mov r1, #0x49
bx ip
.align 2, 0
_0204C948: .word LoadScriptVariableValue
arm_func_end GetExecuteSpecialEpisodeType
arm_func_start IsSpecialEpisodeOpen
IsSpecialEpisodeOpen: ; 0x0204C94C
stmdb sp!, {r3, lr}
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x4b
bl LoadScriptVariableValueAtIndex
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end IsSpecialEpisodeOpen
arm_func_start sub_0204C978
sub_0204C978: ; 0x0204C978
ldr ip, _0204C99C ; =SaveScriptVariableValueAtIndex
cmp r1, #0
movne r3, #1
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
moveq r3, #0
mov r0, #0
mov r1, #0x4b
bx ip
.align 2, 0
_0204C99C: .word SaveScriptVariableValueAtIndex
arm_func_end sub_0204C978
arm_func_start sub_0204C9A0
sub_0204C9A0: ; 0x0204C9A0
stmdb sp!, {r3, lr}
mov r0, #0
mov r1, #0x4b
mov r2, #0x4c
bl ScriptVariablesEqual
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end sub_0204C9A0
arm_func_start sub_0204C9C8
sub_0204C9C8: ; 0x0204C9C8
stmdb sp!, {r3, lr}
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x4c
bl LoadScriptVariableValueAtIndex
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end sub_0204C9C8
arm_func_start sub_0204C9F4
sub_0204C9F4: ; 0x0204C9F4
ldr ip, _0204CA18 ; =SaveScriptVariableValueAtIndex
cmp r1, #0
movne r3, #1
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
moveq r3, #0
mov r0, #0
mov r1, #0x4c
bx ip
.align 2, 0
_0204CA18: .word SaveScriptVariableValueAtIndex
arm_func_end sub_0204C9F4
arm_func_start sub_0204CA1C
sub_0204CA1C: ; 0x0204CA1C
stmdb sp!, {r3, lr}
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x4d
bl LoadScriptVariableValueAtIndex
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end sub_0204CA1C
arm_func_start sub_0204CA48
sub_0204CA48: ; 0x0204CA48
ldr ip, _0204CA6C ; =SaveScriptVariableValueAtIndex
cmp r1, #0
movne r3, #1
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
moveq r3, #0
mov r0, #0
mov r1, #0x4d
bx ip
.align 2, 0
_0204CA6C: .word SaveScriptVariableValueAtIndex
arm_func_end sub_0204CA48
arm_func_start HasPlayedOldGame
HasPlayedOldGame: ; 0x0204CA70
stmdb sp!, {r3, lr}
mov r0, #0
mov r1, #0x6f
bl LoadScriptVariableValue
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end HasPlayedOldGame
arm_func_start GetPerformanceFlagWithChecks
GetPerformanceFlagWithChecks: ; 0x0204CA94
stmdb sp!, {r4, lr}
mov r4, r0
cmp r4, #7
addls pc, pc, r4, lsl #2
b _0204CB10
_0204CAA8: ; jump table
b _0204CAC8 ; case 0
b _0204CB00 ; case 1
b _0204CB00 ; case 2
b _0204CAEC ; case 3
b _0204CAEC ; case 4
b _0204CAEC ; case 5
b _0204CAEC ; case 6
b _0204CAEC ; case 7
_0204CAC8:
mov r0, #0
mov r2, r0
mov r1, #3
bl LoadScriptVariableValueAtIndex
cmp r0, #0x35
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r4, pc}
_0204CAEC:
bl GetGameMode
cmp r0, #3
bne _0204CB10
mov r0, #0
ldmia sp!, {r4, pc}
_0204CB00:
bl GetGameMode
cmp r0, #3
moveq r0, #1
ldmeqia sp!, {r4, pc}
_0204CB10:
mov r0, r4, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x4e
bl LoadScriptVariableValueAtIndex
and r0, r0, #0xff
ldmia sp!, {r4, pc}
arm_func_end GetPerformanceFlagWithChecks
arm_func_start sub_0204CB2C
sub_0204CB2C: ; 0x0204CB2C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
cmp r5, #7
addls pc, pc, r5, lsl #2
b _0204CB70
_0204CB44: ; jump table
b _0204CB70 ; case 0
b _0204CB64 ; case 1
b _0204CB64 ; case 2
b _0204CB64 ; case 3
b _0204CB64 ; case 4
b _0204CB64 ; case 5
b _0204CB64 ; case 6
b _0204CB64 ; case 7
_0204CB64:
bl GetGameMode
cmp r0, #3
ldmeqia sp!, {r3, r4, r5, pc}
_0204CB70:
cmp r4, #0
movne r3, #1
mov r0, r5, lsl #0x10
mov r2, r0, lsr #0x10
moveq r3, #0
mov r0, #0
mov r1, #0x4e
bl SaveScriptVariableValueAtIndex
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0204CB2C
arm_func_start GetScenarioBalance
GetScenarioBalance: ; 0x0204CB94
stmdb sp!, {r3, lr}
mov r0, #0
mov r1, #0x49
bl LoadScriptVariableValue
mvn r1, #0
cmp r0, r1
bne _0204CBD8
mov r0, #0
mov r1, #0x14
bl LoadScriptVariableValue
cmp r0, #0
bge _0204CBD0
mov r0, #0
mov r1, #0x13
bl LoadScriptVariableValue
_0204CBD0:
and r0, r0, #0xff
ldmia sp!, {r3, pc}
_0204CBD8:
cmp r0, #0
moveq r0, #1
movne r0, #3
ldmia sp!, {r3, pc}
arm_func_end GetScenarioBalance
arm_func_start sub_0204CBE8
sub_0204CBE8: ; 0x0204CBE8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bl GetGameMode
cmp r0, #1
ldmlsia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
sub r4, r0, #2
ldr r0, _0204CCB4 ; =_0209DFC8
mov r1, r4
bl Debug_Print0
mov r0, r4, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x1a
bl LoadScriptVariableValueAtIndex
mov r3, r0
mov r0, #0
mov r2, r0
mov r1, #2
bl SaveScriptVariableValueAtIndex
add r2, r4, #4
mov r2, r2, lsl #0x10
mov r0, #0
mov r1, #0x1a
mov r2, r2, lsr #0x10
bl LoadScriptVariableValueAtIndex
mov r3, r0
mov r0, #0
mov r1, #2
mov r2, #1
bl SaveScriptVariableValueAtIndex
mov r8, #0
mov sb, r4, lsl #7
mov r7, r8
mov r6, #0x1b
mov r5, r8
mov r4, #0x11
_0204CC74:
mov r2, sb, lsl #0x10
mov r0, r7
mov r1, r6
mov r2, r2, lsr #0x10
bl LoadScriptVariableValueAtIndex
mov r2, r8, lsl #0x10
mov r3, r0
mov r0, r5
mov r1, r4
mov r2, r2, lsr #0x10
bl SaveScriptVariableValueAtIndex
add r8, r8, #1
cmp r8, #0x80
add sb, sb, #1
blt _0204CC74
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0204CCB4: .word _0209DFC8
arm_func_end sub_0204CBE8
arm_func_start ScenarioFlagBackup
ScenarioFlagBackup: ; 0x0204CCB8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
bl GetGameMode
cmp r0, #1
ldmlsia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
sub r4, r0, #2
ldr r0, _0204CD84 ; =_0209DFE8
mov r1, r4
bl Debug_Print0
mov r0, #0
mov r2, r0
mov r1, #2
bl LoadScriptVariableValueAtIndex
mov r1, r4, lsl #0x10
mov r3, r0
mov r2, r1, lsr #0x10
mov r0, #0
mov r1, #0x1a
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r1, #2
mov r2, #1
bl LoadScriptVariableValueAtIndex
add r2, r4, #4
mov r2, r2, lsl #0x10
mov r3, r0
mov r0, #0
mov r1, #0x1a
mov r2, r2, lsr #0x10
bl SaveScriptVariableValueAtIndex
mov r8, #0
mov sb, r4, lsl #7
mov r7, r8
mov r6, #0x11
mov r5, r8
mov r4, #0x1b
_0204CD44:
mov r2, r8, lsl #0x10
mov r0, r7
mov r1, r6
mov r2, r2, lsr #0x10
bl LoadScriptVariableValueAtIndex
mov r2, sb, lsl #0x10
mov r3, r0
mov r0, r5
mov r1, r4
mov r2, r2, lsr #0x10
bl SaveScriptVariableValueAtIndex
add r8, r8, #1
cmp r8, #0x80
add sb, sb, #1
blt _0204CD44
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0204CD84: .word _0209DFE8
arm_func_end ScenarioFlagBackup
arm_func_start InitWorldMapScriptVars
InitWorldMapScriptVars: ; 0x0204CD88
stmdb sp!, {r3, lr}
mov r0, #0
mov r1, #0x55
bl ZinitScriptVariable
mov r0, #0
mov r1, #0x56
bl ZinitScriptVariable
mov r0, #0
mov r1, #0x57
mov r2, #1
bl SaveScriptVariableValue
ldmia sp!, {r3, pc}
arm_func_end InitWorldMapScriptVars
arm_func_start sub_0204CDB8
sub_0204CDB8: ; 0x0204CDB8
ldr ip, _0204CDC8 ; =ZinitScriptVariable
mov r0, #0
mov r1, #0x56
bx ip
.align 2, 0
_0204CDC8: .word ZinitScriptVariable
arm_func_end sub_0204CDB8
arm_func_start sub_0204CDCC
sub_0204CDCC: ; 0x0204CDCC
stmdb sp!, {r3, lr}
mov r0, #0
mov r1, #0x57
bl LoadScriptVariableValue
mov r0, r0, lsl #0x18
mov r0, r0, asr #0x18
ldmia sp!, {r3, pc}
arm_func_end sub_0204CDCC
arm_func_start sub_0204CDE8
sub_0204CDE8: ; 0x0204CDE8
ldr ip, _0204CDFC ; =SaveScriptVariableValue
mov r2, r0
mov r0, #0
mov r1, #0x57
bx ip
.align 2, 0
_0204CDFC: .word SaveScriptVariableValue
arm_func_end sub_0204CDE8
arm_func_start sub_0204CE00
sub_0204CE00: ; 0x0204CE00
stmdb sp!, {r4, lr}
mov r4, r0
bl GetGameMode
cmp r0, #3
mov r0, r4, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
bne _0204CE2C
mov r1, #0x56
bl LoadScriptVariableValueAtIndex
b _0204CE34
_0204CE2C:
mov r1, #0x55
bl LoadScriptVariableValueAtIndex
_0204CE34:
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r4, pc}
arm_func_end sub_0204CE00
arm_func_start sub_0204CE48
sub_0204CE48: ; 0x0204CE48
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl GetGameMode
cmp r0, #3
mov r0, r5, lsl #0x10
mov r3, r4
bne _0204CE7C
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x56
bl SaveScriptVariableValueAtIndex
ldmia sp!, {r3, r4, r5, pc}
_0204CE7C:
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x55
bl SaveScriptVariableValueAtIndex
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0204CE48
arm_func_start InitDungeonListScriptVars
InitDungeonListScriptVars: ; 0x0204CE90
stmdb sp!, {r3, lr}
mov r0, #0
mov r1, #0x4f
bl ZinitScriptVariable
mov r0, #0
mov r1, #0x54
bl ZinitScriptVariable
mov r0, #0
mov r1, #0x50
bl ZinitScriptVariable
mov r0, #0
mov r1, #0x51
bl ZinitScriptVariable
mov r0, #0
mov r1, #0x52
bl ZinitScriptVariable
mov r0, #0
mov r1, #0x53
bl ZinitScriptVariable
ldmia sp!, {r3, pc}
arm_func_end InitDungeonListScriptVars
arm_func_start sub_0204CEE0
sub_0204CEE0: ; 0x0204CEE0
stmdb sp!, {r3, lr}
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x50
bl LoadScriptVariableValueAtIndex
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end sub_0204CEE0
arm_func_start sub_0204CF0C
sub_0204CF0C: ; 0x0204CF0C
stmdb sp!, {r3, lr}
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x52
bl LoadScriptVariableValueAtIndex
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end sub_0204CF0C
arm_func_start SetDungeonConquest
SetDungeonConquest: ; 0x0204CF38
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r0, r0, lsl #0x10
mov r3, r1
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x52
bl SaveScriptVariableValueAtIndex
mov r7, #0
ldr r6, _0204CF98 ; =_0209E008
mov r5, r7
mov r4, #0x52
_0204CF64:
ldrb r2, [r6, r7]
add r7, r7, #1
cmp r2, #0xff
bne _0204CF80
mov r0, #0x23
bl SetAdventureLogCompleted
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_0204CF80:
mov r0, r5
mov r1, r4
bl LoadScriptVariableValueAtIndex
cmp r0, #0
bne _0204CF64
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0204CF98: .word _0209E008
arm_func_end SetDungeonConquest
arm_func_start GetDungeonMode
GetDungeonMode: ; 0x0204CF9C
stmdb sp!, {r4, lr}
mov r0, r0, lsl #0x10
mov r4, r0, lsr #0x10
mov r2, r4
mov r0, #0
mov r1, #0x4f
bl LoadScriptVariableValueAtIndex
cmp r0, #0
movne r0, #1
moveq r0, #0
tst r0, #0xff
mov r2, r4
mov r0, #0
mov r1, #0x54
beq _0204CFF8
bl LoadScriptVariableValueAtIndex
cmp r0, #0
movne r0, #1
moveq r0, #0
tst r0, #0xff
movne r0, #3
moveq r0, #1
ldmia sp!, {r4, pc}
_0204CFF8:
bl LoadScriptVariableValueAtIndex
cmp r0, #0
movne r0, #1
moveq r0, #0
tst r0, #0xff
movne r0, #2
moveq r0, #0
ldmia sp!, {r4, pc}
arm_func_end GetDungeonMode
arm_func_start sub_0204D018
sub_0204D018: ; 0x0204D018
stmdb sp!, {r4, lr}
cmp r1, #3
addls pc, pc, r1, lsl #2
ldmia sp!, {r4, pc}
_0204D028: ; jump table
b _0204D038 ; case 0
b _0204D06C ; case 1
b _0204D0A0 ; case 2
b _0204D0D4 ; case 3
_0204D038:
mov r0, r0, lsl #0x10
mov r4, r0, lsr #0x10
mov r0, #0
mov r2, r4
mov r3, r0
mov r1, #0x4f
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r2, r4
mov r3, r0
mov r1, #0x54
bl SaveScriptVariableValueAtIndex
ldmia sp!, {r4, pc}
_0204D06C:
mov r0, r0, lsl #0x10
mov r4, r0, lsr #0x10
mov r2, r4
mov r0, #0
mov r1, #0x4f
mov r3, #1
bl SaveScriptVariableValueAtIndex
mov r0, #0
mov r2, r4
mov r3, r0
mov r1, #0x54
bl SaveScriptVariableValueAtIndex
ldmia sp!, {r4, pc}
_0204D0A0:
mov r0, r0, lsl #0x10
mov r4, r0, lsr #0x10
mov r0, #0
mov r2, r4
mov r3, r0
mov r1, #0x4f
bl SaveScriptVariableValueAtIndex
mov r2, r4
mov r0, #0
mov r1, #0x54
mov r3, #1
bl SaveScriptVariableValueAtIndex
ldmia sp!, {r4, pc}
_0204D0D4:
mov r0, r0, lsl #0x10
mov r4, r0, lsr #0x10
mov r2, r4
mov r0, #0
mov r1, #0x4f
mov r3, #1
bl SaveScriptVariableValueAtIndex
mov r2, r4
mov r0, #0
mov r1, #0x54
mov r3, #1
bl SaveScriptVariableValueAtIndex
ldmia sp!, {r4, pc}
arm_func_end sub_0204D018
arm_func_start GlobalProgressAlloc
GlobalProgressAlloc: ; 0x0204D108
stmdb sp!, {r3, lr}
mov r0, #0x20c
mov r1, #0
bl MemAlloc
ldr r2, _0204D12C ; =GLOBAL_PROGRESS_PTR
mov r1, #0x20c
str r0, [r2]
bl MemZero
ldmia sp!, {r3, pc}
.align 2, 0
_0204D12C: .word GLOBAL_PROGRESS_PTR
arm_func_end GlobalProgressAlloc
arm_func_start ResetGlobalProgress
ResetGlobalProgress: ; 0x0204D130
ldr r0, _0204D144 ; =GLOBAL_PROGRESS_PTR
ldr ip, _0204D148 ; =MemZero
mov r1, #0x20c
ldr r0, [r0]
bx ip
.align 2, 0
_0204D144: .word GLOBAL_PROGRESS_PTR
_0204D148: .word MemZero
arm_func_end ResetGlobalProgress
arm_func_start SetMonsterFlag1
SetMonsterFlag1: ; 0x0204D14C
stmdb sp!, {r3, lr}
ldr r3, _0204D184 ; =GLOBAL_PROGRESS_PTR
mov r1, r0, asr #4
add r1, r0, r1, lsr #27
mov r2, r0, lsr #0x1f
rsb r0, r2, r0, lsl #27
ldr lr, [r3]
mov ip, r1, asr #5
ldr r3, [lr, ip, lsl #2]
add r0, r2, r0, ror #27
mov r1, #1
orr r0, r3, r1, lsl r0
str r0, [lr, ip, lsl #2]
ldmia sp!, {r3, pc}
.align 2, 0
_0204D184: .word GLOBAL_PROGRESS_PTR
arm_func_end SetMonsterFlag1
arm_func_start GetMonsterFlag1
GetMonsterFlag1: ; 0x0204D188
ldr r3, _0204D1C0 ; =GLOBAL_PROGRESS_PTR
mov r1, r0, asr #4
add r2, r0, r1, lsr #27
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #27
add r0, r1, r0, ror #27
ldr r3, [r3]
mov r2, r2, asr #5
ldr r2, [r3, r2, lsl #2]
mov r1, #1
tst r2, r1, lsl r0
moveq r1, #0
and r0, r1, #0xff
bx lr
.align 2, 0
_0204D1C0: .word GLOBAL_PROGRESS_PTR
arm_func_end GetMonsterFlag1
arm_func_start SetMonsterFlag2
SetMonsterFlag2: ; 0x0204D1C4
stmdb sp!, {r3, lr}
bl FemaleToMaleForm
ldr r2, _0204D204 ; =GLOBAL_PROGRESS_PTR
mov r1, r0, asr #4
ldr r3, [r2]
add r1, r0, r1, lsr #27
mov r2, r0, lsr #0x1f
rsb r0, r2, r0, lsl #27
add lr, r3, #0x98
mov ip, r1, asr #5
ldr r3, [lr, ip, lsl #2]
add r0, r2, r0, ror #27
mov r1, #1
orr r0, r3, r1, lsl r0
str r0, [lr, ip, lsl #2]
ldmia sp!, {r3, pc}
.align 2, 0
_0204D204: .word GLOBAL_PROGRESS_PTR
arm_func_end SetMonsterFlag2
arm_func_start HasMonsterBeenAttackedInDungeons
HasMonsterBeenAttackedInDungeons: ; 0x0204D208
stmdb sp!, {r3, lr}
bl FemaleToMaleForm
ldr r3, _0204D24C ; =GLOBAL_PROGRESS_PTR
mov r1, r0, asr #4
add r2, r0, r1, lsr #27
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #27
add r0, r1, r0, ror #27
ldr r3, [r3]
mov r2, r2, asr #5
add r2, r3, r2, lsl #2
ldr r2, [r2, #0x98]
mov r1, #1
tst r2, r1, lsl r0
moveq r1, #0
and r0, r1, #0xff
ldmia sp!, {r3, pc}
.align 2, 0
_0204D24C: .word GLOBAL_PROGRESS_PTR
arm_func_end HasMonsterBeenAttackedInDungeons
arm_func_start SetDungeonTipShown
SetDungeonTipShown: ; 0x0204D250
stmdb sp!, {r3, lr}
ldr r2, _0204D28C ; =GLOBAL_PROGRESS_PTR
mov r1, r0, asr #4
ldr r3, [r2]
add r1, r0, r1, lsr #27
mov r2, r0, lsr #0x1f
rsb r0, r2, r0, lsl #27
add lr, r3, #0x94
mov ip, r1, asr #5
ldr r3, [lr, ip, lsl #2]
add r0, r2, r0, ror #27
mov r1, #1
orr r0, r3, r1, lsl r0
str r0, [lr, ip, lsl #2]
ldmia sp!, {r3, pc}
.align 2, 0
_0204D28C: .word GLOBAL_PROGRESS_PTR
arm_func_end SetDungeonTipShown
arm_func_start GetDungeonTipShown
GetDungeonTipShown: ; 0x0204D290
cmp r0, #0x1f
movge r0, #0
bxge lr
ldr r2, _0204D2D8 ; =GLOBAL_PROGRESS_PTR
mov r1, r0, asr #4
add r1, r0, r1, lsr #27
ldr r3, [r2]
mov r2, r1, asr #5
mov r1, r0, lsr #0x1f
add r2, r3, r2, lsl #2
rsb r0, r1, r0, lsl #27
add r0, r1, r0, ror #27
ldr r2, [r2, #0x94]
mov r1, #1
tst r2, r1, lsl r0
moveq r1, #0
and r0, r1, #0xff
bx lr
.align 2, 0
_0204D2D8: .word GLOBAL_PROGRESS_PTR
arm_func_end GetDungeonTipShown
arm_func_start SetMaxReachedFloor
SetMaxReachedFloor: ; 0x0204D2DC
cmp r0, #0xb4
ldrlo r2, _0204D2F4 ; =GLOBAL_PROGRESS_PTR
ldrlo r2, [r2]
addlo r0, r2, r0
strlob r1, [r0, #0x143]
bx lr
.align 2, 0
_0204D2F4: .word GLOBAL_PROGRESS_PTR
arm_func_end SetMaxReachedFloor
arm_func_start GetMaxReachedFloor
GetMaxReachedFloor: ; 0x0204D2F8
cmp r0, #0xb4
ldrlo r1, _0204D314 ; =GLOBAL_PROGRESS_PTR
movhs r0, #0
ldrlo r1, [r1]
addlo r0, r1, r0
ldrlob r0, [r0, #0x143]
bx lr
.align 2, 0
_0204D314: .word GLOBAL_PROGRESS_PTR
arm_func_end GetMaxReachedFloor
arm_func_start IncrementNbAdventures
IncrementNbAdventures: ; 0x0204D318
ldr r0, _0204D344 ; =GLOBAL_PROGRESS_PTR
ldr r1, _0204D348 ; =0x000F423F
ldr r3, [r0]
ldr r2, [r3, #0x1f8]
add r2, r2, #1
str r2, [r3, #0x1f8]
ldr r2, [r0]
ldr r0, [r2, #0x1f8]
cmp r0, r1
strhi r1, [r2, #0x1f8]
bx lr
.align 2, 0
_0204D344: .word GLOBAL_PROGRESS_PTR
_0204D348: .word 0x000F423F
arm_func_end IncrementNbAdventures
arm_func_start GetNbAdventures
GetNbAdventures: ; 0x0204D34C
ldr r0, _0204D35C ; =GLOBAL_PROGRESS_PTR
ldr r0, [r0]
ldr r0, [r0, #0x1f8]
bx lr
.align 2, 0
_0204D35C: .word GLOBAL_PROGRESS_PTR
arm_func_end GetNbAdventures
arm_func_start CanMonsterSpawn
CanMonsterSpawn: ; 0x0204D360
mov r0, #1
bx lr
arm_func_end CanMonsterSpawn
arm_func_start IncrementExclusiveMonsterCounts
IncrementExclusiveMonsterCounts: ; 0x0204D368
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r4, _0204D3B8 ; =VERSION_EXCLUSIVE_MONSTERS
ldr r7, _0204D3BC ; =GLOBAL_PROGRESS_PTR
mov r6, r0
mov r5, #0
mov r8, #1
_0204D380:
mov r0, r5, lsl #2
ldrsh r0, [r4, r0]
bl GetDexNumber
mov sb, r0
mov r0, r6
bl GetDexNumber
cmp sb, r0
ldreq r0, [r7]
addeq r0, r0, r5
add r5, r5, #1
streqb r8, [r0, #0x12c]
cmp r5, #0x17
blt _0204D380
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0204D3B8: .word VERSION_EXCLUSIVE_MONSTERS
_0204D3BC: .word GLOBAL_PROGRESS_PTR
arm_func_end IncrementExclusiveMonsterCounts
arm_func_start CopyProgressInfoTo
CopyProgressInfoTo: ; 0x0204D3C0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r4, _0204D538 ; =0x00000483
mov r5, r0
mov r8, #0
add r7, sp, #0
mov r6, #1
_0204D3D8:
mov r0, r8, lsl #0x10
mov r0, r0, asr #0x10
bl GetMonsterFlag1
strb r0, [sp]
mov r0, r5
mov r1, r7
mov r2, r6
bl CopyBitsTo
add r8, r8, #1
cmp r8, r4
blt _0204D3D8
mov r7, #0
add r6, sp, #0
mov r4, #1
_0204D410:
mov r0, r7
bl GetDungeonTipShown
strb r0, [sp]
mov r0, r5
mov r1, r6
mov r2, r4
bl CopyBitsTo
add r7, r7, #1
cmp r7, #0x1f
blt _0204D410
ldr r4, _0204D538 ; =0x00000483
mov r8, #0
add r7, sp, #0
mov r6, #1
_0204D448:
mov r0, r8, lsl #0x10
mov r0, r0, asr #0x10
bl HasMonsterBeenAttackedInDungeons
strb r0, [sp]
mov r0, r5
mov r1, r7
mov r2, r6
bl CopyBitsTo
add r8, r8, #1
cmp r8, r4
blt _0204D448
ldr r8, _0204D53C ; =_0209E011
ldr sb, _0204D540 ; =_0209E010
ldr r6, _0204D544 ; =GLOBAL_PROGRESS_PTR
mov r4, #0
mov r7, #1
_0204D488:
ldr r0, [r6]
mov r2, r7
add r0, r0, r4
ldrb r0, [r0, #0x12c]
cmp r0, #0
movne r1, sb
moveq r1, r8
mov r0, r5
bl CopyBitsTo
add r4, r4, #1
cmp r4, #0x17
blt _0204D488
ldr r4, _0204D544 ; =GLOBAL_PROGRESS_PTR
mov r7, #0
mov r6, #7
_0204D4C4:
ldr r1, [r4]
mov r0, r5
add r1, r1, #0x43
add r1, r1, #0x100
mov r2, r6
add r1, r1, r7
bl CopyBitsTo
add r7, r7, #1
cmp r7, #0xb4
blt _0204D4C4
ldr r1, _0204D544 ; =GLOBAL_PROGRESS_PTR
mov r0, r5
ldr r1, [r1]
mov r2, #0x20
add r1, r1, #0x1f8
bl CopyBitsTo
ldr r4, _0204D544 ; =GLOBAL_PROGRESS_PTR
mov r7, #0
mov r6, #8
_0204D510:
ldr r1, [r4]
mov r0, r5
add r1, r1, #0x1fc
mov r2, r6
add r1, r1, r7
bl CopyBitsTo
add r7, r7, #1
cmp r7, #0x10
blt _0204D510
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0204D538: .word 0x00000483
_0204D53C: .word _0209E011
_0204D540: .word _0209E010
_0204D544: .word GLOBAL_PROGRESS_PTR
arm_func_end CopyProgressInfoTo
arm_func_start CopyProgressInfoFromScratchTo
CopyProgressInfoFromScratchTo: ; 0x0204D548
stmdb sp!, {r3, lr}
sub sp, sp, #0x10
mov r3, r0
mov r2, r1
add r0, sp, #0
mov r1, r3
bl sub_02050990
add r0, sp, #0
bl CopyProgressInfoTo
add r0, sp, #0
bl sub_020509BC
ldr r0, [sp, #8]
add sp, sp, #0x10
ldmia sp!, {r3, pc}
arm_func_end CopyProgressInfoFromScratchTo
arm_func_start CopyProgressInfoFrom
CopyProgressInfoFrom: ; 0x0204D580
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #4
ldr r1, _0204D740 ; =GLOBAL_PROGRESS_PTR
mov r4, r0
ldr r0, [r1]
mov r1, #0x20c
bl MemZero
ldr r5, _0204D744 ; =0x00000483
mov r8, #0
add r7, sp, #0
mov r6, #1
_0204D5AC:
mov r0, r4
mov r1, r7
mov r2, r6
bl CopyBitsFrom
ldrb r0, [sp]
cmp r0, #0
beq _0204D5D4
mov r0, r8, lsl #0x10
mov r0, r0, asr #0x10
bl SetMonsterFlag1
_0204D5D4:
add r8, r8, #1
cmp r8, r5
blt _0204D5AC
mov r7, #0
add r6, sp, #0
mov r5, #1
_0204D5EC:
mov r0, r4
mov r1, r6
mov r2, r5
bl CopyBitsFrom
ldrb r0, [sp]
cmp r0, #0
beq _0204D610
mov r0, r7
bl SetDungeonTipShown
_0204D610:
add r7, r7, #1
cmp r7, #0x1f
blt _0204D5EC
ldr r5, _0204D744 ; =0x00000483
mov r8, #0
add r7, sp, #0
mov r6, #1
_0204D62C:
mov r0, r4
mov r1, r7
mov r2, r6
bl CopyBitsFrom
ldrb r0, [sp]
cmp r0, #0
beq _0204D654
mov r0, r8, lsl #0x10
mov r0, r0, asr #0x10
bl SetMonsterFlag2
_0204D654:
add r8, r8, #1
cmp r8, r5
blt _0204D62C
mov sb, #0
mov r6, #1
ldr sl, _0204D740 ; =GLOBAL_PROGRESS_PTR
mov r5, sb
add r8, sp, #1
mov r7, r6
_0204D678:
mov r0, r4
mov r1, r8
mov r2, r7
bl CopyBitsFrom
ldrb r0, [sp, #1]
tst r0, #1
ldr r0, [sl]
movne r1, r6
add r0, r0, sb
moveq r1, r5
add sb, sb, #1
strb r1, [r0, #0x12c]
cmp sb, #0x17
blt _0204D678
ldr r8, _0204D740 ; =GLOBAL_PROGRESS_PTR
mov r7, #0
add r6, sp, #1
mov r5, #7
_0204D6C0:
mov r0, r4
mov r1, r6
mov r2, r5
bl CopyBitsFrom
ldrb r1, [sp, #1]
ldr r0, [r8]
add r0, r0, r7
and r1, r1, #0x7f
add r7, r7, #1
strb r1, [r0, #0x143]
cmp r7, #0xb4
blt _0204D6C0
ldr r1, _0204D740 ; =GLOBAL_PROGRESS_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x20
add r1, r1, #0x1f8
bl CopyBitsFrom
ldr r5, _0204D740 ; =GLOBAL_PROGRESS_PTR
mov r7, #0
mov r6, #8
_0204D714:
ldr r1, [r5]
mov r0, r4
add r1, r1, #0x1fc
mov r2, r6
add r1, r1, r7
bl CopyBitsFrom
add r7, r7, #1
cmp r7, #0x10
blt _0204D714
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_0204D740: .word GLOBAL_PROGRESS_PTR
_0204D744: .word 0x00000483
arm_func_end CopyProgressInfoFrom
arm_func_start CopyProgressInfoFromScratchFrom
CopyProgressInfoFromScratchFrom: ; 0x0204D748
stmdb sp!, {r3, lr}
sub sp, sp, #0x10
mov r3, r0
mov r2, r1
add r0, sp, #0
mov r1, r3
bl sub_02050974
add r0, sp, #0
bl CopyProgressInfoFrom
add r0, sp, #0
bl sub_020509BC
ldr r0, [sp, #8]
add sp, sp, #0x10
ldmia sp!, {r3, pc}
arm_func_end CopyProgressInfoFromScratchFrom
arm_func_start InitKaomadoStream
InitKaomadoStream: ; 0x0204D780
stmdb sp!, {r3, lr}
bl FileRom_InitDataTransfer
ldr r0, _0204D798 ; =KAOMADO_STREAM
bl FileRom_Veneer_FileInit
bl FileRom_StopDataTransfer
ldmia sp!, {r3, pc}
.align 2, 0
_0204D798: .word KAOMADO_STREAM
arm_func_end InitKaomadoStream
arm_func_start InitPortraitParams
InitPortraitParams: ; 0x0204D79C
mov r2, #0
strh r2, [r0]
sub r1, r2, #2
strb r1, [r0, #2]
strb r2, [r0, #3]
mov r1, #2
str r1, [r0, #4]
mov r1, #9
str r1, [r0, #8]
strb r2, [r0, #0xc]
strb r2, [r0, #0xd]
strb r2, [r0, #0xe]
strb r2, [r0, #0xf]
bx lr
arm_func_end InitPortraitParams
arm_func_start InitPortraitParamsWithMonsterId
InitPortraitParamsWithMonsterId: ; 0x0204D7D4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl InitPortraitParams
strh r4, [r5]
mov r0, #0
strb r0, [r5, #2]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end InitPortraitParamsWithMonsterId
arm_func_start SetPortraitEmotion
SetPortraitEmotion: ; 0x0204D7F4
ldrsh r2, [r0]
cmp r2, #0
strneb r1, [r0, #2]
bx lr
arm_func_end SetPortraitEmotion
arm_func_start SetPortraitLayout
SetPortraitLayout: ; 0x0204D804
ldrsh r2, [r0]
cmp r2, #0
cmpne r1, #0x20
bxeq lr
mov r2, #6
mul r2, r1, r2
ldr r3, _0204D844 ; =PORTRAIT_LAYOUTS
strb r1, [r0, #3]
ldrsh r1, [r3, r2]
add r2, r3, r2
str r1, [r0, #4]
ldrsh r1, [r2, #2]
str r1, [r0, #8]
ldrb r1, [r2, #4]
strb r1, [r0, #0xc]
bx lr
.align 2, 0
_0204D844: .word PORTRAIT_LAYOUTS
arm_func_end SetPortraitLayout
arm_func_start SetPortraitOffset
SetPortraitOffset: ; 0x0204D848
stmdb sp!, {r3, lr}
ldrsh r2, [r0]
cmp r2, #0
ldmeqia sp!, {r3, pc}
ldrb r3, [r0, #3]
mov r2, #6
ldr lr, _0204D890 ; =PORTRAIT_LAYOUTS
smulbb ip, r3, r2
ldrsh r3, [lr, ip]
ldr r2, [r1]
add ip, lr, ip
add r2, r3, r2
str r2, [r0, #4]
ldrsh r2, [ip, #2]
ldr r1, [r1, #4]
add r1, r2, r1
str r1, [r0, #8]
ldmia sp!, {r3, pc}
.align 2, 0
_0204D890: .word PORTRAIT_LAYOUTS
arm_func_end SetPortraitOffset
arm_func_start AllowPortraitDefault
AllowPortraitDefault: ; 0x0204D894
strb r1, [r0, #0xf]
bx lr
arm_func_end AllowPortraitDefault
arm_func_start IsValidPortrait
IsValidPortrait: ; 0x0204D89C
ldrsh r1, [r0]
cmp r1, #0
ldrnesb r1, [r0, #2]
mvnne r0, #1
cmpne r1, r0
movne r0, #1
moveq r0, #0
bx lr
arm_func_end IsValidPortrait
arm_func_start LoadPortrait
LoadPortrait: ; 0x0204D8BC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
mov sl, r0
mov sb, r1
ldrsh r7, [sl]
ldrsb r8, [sl, #2]
bl FileRom_InitDataTransfer
ldr r0, _0204DA14 ; =KAOMADO_STREAM
ldr r1, _0204DA18 ; =KAOMADO_FILEPATH
bl FileRom_HandleOpen
mov fp, #0
mov r4, fp
mov r5, #1
b _0204D9DC
_0204D8F4:
mov r0, #0x28
mul r0, r7, r0
add r0, r0, r8, lsl #1
mov r1, r0, lsl #2
ldr r0, _0204DA14 ; =KAOMADO_STREAM
mov r2, #0
sub r7, r7, #0x258
bl FileRom_HandleSeek
ldr r0, _0204DA14 ; =KAOMADO_STREAM
add r1, sp, #0
mov r2, #0xc
bl FileRom_HandleRead
ldr r0, [sp, #4]
cmp r0, #0
movge r0, #1
movlt r0, #0
strb r0, [sl, #0xd]
ldrb r0, [sl, #0xc]
cmp r0, #0
beq _0204D984
ldr r0, [sp, #4]
cmp r0, #0
mov r1, r0
bge _0204D96C
ldr r1, [sp]
cmp r0, #0
rsblt r0, r0, #0
sub r6, r0, r1
strb r5, [sl, #0xe]
b _0204D99C
_0204D96C:
ldr r2, [sp, #8]
cmp r2, #0
rsblt r2, r2, #0
sub r6, r2, r0
strb r4, [sl, #0xe]
b _0204D99C
_0204D984:
ldr r0, [sp, #4]
ldr r1, [sp]
cmp r0, #0
rsblt r0, r0, #0
sub r6, r0, r1
strb fp, [sl, #0xe]
_0204D99C:
cmp r1, #0
ble _0204D9DC
cmp sb, #0
beq _0204D9C8
ldr r0, _0204DA14 ; =KAOMADO_STREAM
mov r2, #0
bl FileRom_HandleSeek
ldr r0, _0204DA14 ; =KAOMADO_STREAM
mov r1, sb
mov r2, r6
bl FileRom_HandleRead
_0204D9C8:
ldr r0, _0204DA14 ; =KAOMADO_STREAM
bl FileClose
bl FileRom_StopDataTransfer
mov r0, #1
b _0204DA0C
_0204D9DC:
cmp r7, #0
bgt _0204D8F4
ldrb r0, [sl, #0xf]
cmp r0, #0
cmpne r8, #0
movne r8, #0
ldrnesh r7, [sl]
bne _0204D9DC
ldr r0, _0204DA14 ; =KAOMADO_STREAM
bl FileClose
bl FileRom_StopDataTransfer
mov r0, #0
_0204DA0C:
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0204DA14: .word KAOMADO_STREAM
_0204DA18: .word KAOMADO_FILEPATH
arm_func_end LoadPortrait
arm_func_start sub_0204DA1C
sub_0204DA1C: ; 0x0204DA1C
ldr r1, _0204DA28 ; =ARM9_UNKNOWN_TABLE__NA_209E164
ldrb r0, [r1, r0]
bx lr
.align 2, 0
_0204DA28: .word ARM9_UNKNOWN_TABLE__NA_209E164
arm_func_end sub_0204DA1C
arm_func_start sub_0204DA2C
sub_0204DA2C: ; 0x0204DA2C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x68
mov r4, r2
mov r2, #0
mov r5, r1
mov r6, r2
add r1, sp, #0
_0204DA48:
strb r6, [r1, r2]
add r2, r2, #1
cmp r2, #0x22
blt _0204DA48
add r3, sp, #0x22
ldr r2, _0204DB04 ; =ARM9_UNKNOWN_TABLE__NA_209E164
b _0204DA84
_0204DA64:
ldrb r1, [r0]
ldrb r1, [r2, r1]
cmp r1, #0xff
strb r1, [r3, r6]
moveq r0, #0
beq _0204DAFC
add r0, r0, #1
add r6, r6, #1
_0204DA84:
cmp r6, r4
blt _0204DA64
add r1, r4, r4, lsl #2
and r0, r1, #7
add r0, r0, #7
mov r0, r0, asr #3
add sl, r0, r1, asr #3
add r0, sp, #0x58
add r1, sp, #0
mov r2, sl
bl sub_02050990
mov sb, #0
add r8, sp, #0x58
add r7, sp, #0x22
mov r6, #5
b _0204DAD8
_0204DAC4:
mov r0, r8
mov r2, r6
add r1, r7, sb
bl CopyBitsTo
add sb, sb, #1
_0204DAD8:
cmp sb, r4
blt _0204DAC4
add r0, sp, #0x58
bl sub_020509BC
add r1, sp, #0
mov r0, r5
mov r2, sl
bl MemcpySimple
mov r0, #1
_0204DAFC:
add sp, sp, #0x68
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_0204DB04: .word ARM9_UNKNOWN_TABLE__NA_209E164
arm_func_end sub_0204DA2C
arm_func_start sub_0204DB08
sub_0204DB08: ; 0x0204DB08
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x48
mov r4, r2
add r3, r4, r4, lsl #2
and r2, r3, #7
add r2, r2, #7
mov r2, r2, asr #3
mov r5, r0
add r0, sp, #0x38
add r2, r2, r3, asr #3
bl sub_02050974
mov sb, #0
add r8, sp, #0x38
add r7, sp, #0
mov r6, #5
b _0204DB5C
_0204DB48:
mov r0, r8
mov r2, r6
add r1, r7, sb
bl CopyBitsFrom
add sb, sb, #1
_0204DB5C:
cmp sb, r4
blt _0204DB48
add r0, sp, #0x38
bl sub_020509BC
mov r3, #0
add r2, sp, #0
ldr r1, _0204DB9C ; =WONDER_MAIL_BITS_MAP
b _0204DB8C
_0204DB7C:
ldrb r0, [r2, r3]
add r3, r3, #1
ldrb r0, [r1, r0]
strb r0, [r5], #1
_0204DB8C:
cmp r3, r4
blt _0204DB7C
add sp, sp, #0x48
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0204DB9C: .word WONDER_MAIL_BITS_MAP
arm_func_end sub_0204DB08
arm_func_start sub_0204DBA0
sub_0204DBA0: ; 0x0204DBA0
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0xa0
mov r2, r0
mov r5, r1
mov r1, r2
add r0, sp, #0x10
mov r2, #0x36
mov r4, #0
bl MemcpySimple
ldr r3, _0204DC9C ; =ARM9_UNKNOWN_TABLE__NA_209E12C
mov r6, r4
add r2, sp, #0x10
add r0, sp, #0x46
mov ip, r4
_0204DBD8:
mov lr, ip
ldrb r1, [r3, r6]
b _0204DBF0
_0204DBE4:
cmp lr, r1
beq _0204DBF8
add lr, lr, #1
_0204DBF0:
cmp lr, #0x36
blt _0204DBE4
_0204DBF8:
ldrb r1, [r2, lr]
strb r1, [r0, r6]
add r6, r6, #1
cmp r6, #0x36
blt _0204DBD8
add r1, sp, #0x7c
mov r2, #0x36
bl sub_0204DA2C
cmp r0, #0
moveq r0, #0
beq _0204DC94
ldrb r0, [sp, #0x7c]
add r1, sp, #0x7d
mov r2, #0x20
bl sub_0204E0A0
mov r3, #1
add r2, sp, #0x7c
_0204DC3C:
ldrb r1, [r2, r3]
and r0, r3, #0xff
add r3, r3, #1
add r0, r1, r0
add r0, r4, r0
cmp r3, #0x21
and r4, r0, #0xff
blt _0204DC3C
ldrb r0, [sp, #0x7c]
cmp r0, r4
movne r0, #0
bne _0204DC94
add r0, sp, #0
add r1, sp, #0x7d
mov r2, #0x20
bl sub_02050974
add r0, sp, #0
mov r1, r5
bl sub_0205C2A4
add r0, sp, #0
bl sub_020509BC
mov r0, #1
_0204DC94:
add sp, sp, #0xa0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0204DC9C: .word ARM9_UNKNOWN_TABLE__NA_209E12C
arm_func_end sub_0204DBA0
arm_func_start sub_0204DCA0
sub_0204DCA0: ; 0x0204DCA0
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0xa0
mov r4, #0
mov r5, r0
mov r6, r1
mov r2, r4
mov r1, r4
add r0, sp, #0x7c
_0204DCC0:
strb r1, [r0, r2]
add r2, r2, #1
cmp r2, #0x22
blt _0204DCC0
add r0, sp, #0
add r1, sp, #0x7d
mov r2, #0x20
bl sub_02050990
add r0, sp, #0
mov r1, r6
bl sub_0205C548
add r0, sp, #0
bl sub_020509BC
mov r3, #1
add r2, sp, #0x7c
_0204DCFC:
ldrb r1, [r2, r3]
and r0, r3, #0xff
add r3, r3, #1
add r0, r1, r0
add r0, r4, r0
cmp r3, #0x21
and r4, r0, #0xff
blt _0204DCFC
add r1, sp, #0x7d
mov r0, r4
mov r2, #0x20
strb r4, [sp, #0x7c]
bl sub_0204E02C
add r0, sp, #0x46
add r1, sp, #0x7c
mov r2, #0x36
bl sub_0204DB08
ldr r2, _0204DD7C ; =ARM9_UNKNOWN_TABLE__NA_209E12C
mov ip, #0
add r4, sp, #0x46
add r1, sp, #0x10
_0204DD50:
ldrb r3, [r4, ip]
ldrb r0, [r2, ip]
add ip, ip, #1
cmp ip, #0x36
strb r3, [r1, r0]
blt _0204DD50
mov r0, r5
mov r2, #0x36
bl MemcpySimple
add sp, sp, #0xa0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0204DD7C: .word ARM9_UNKNOWN_TABLE__NA_209E12C
arm_func_end sub_0204DCA0
arm_func_start WonderMailPasswordToMission
WonderMailPasswordToMission: ; 0x0204DD80
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x6c
mov r2, r0
mov r4, r1
mov r1, r2
add r0, sp, #0x10
mov r2, #0x22
bl MemcpySimple
mov lr, #0
ldr r3, _0204DE74 ; =WONDER_MAIL_BITS_SWAP
add r2, sp, #0x10
add r0, sp, #0x32
mov r5, lr
_0204DDB4:
mov ip, r5
ldrb r1, [r3, lr]
b _0204DDCC
_0204DDC0:
cmp ip, r1
beq _0204DDD4
add ip, ip, #1
_0204DDCC:
cmp ip, #0x22
blt _0204DDC0
_0204DDD4:
ldrb r1, [r2, ip]
strb r1, [r0, lr]
add lr, lr, #1
cmp lr, #0x22
blt _0204DDB4
add r1, sp, #0x54
mov r2, #0x22
bl sub_0204DA2C
cmp r0, #0
moveq r0, #0
beq _0204DE6C
ldrb r0, [sp, #0x54]
add r1, sp, #0x58
mov r2, #0x11
bl sub_0204E0A0
add r0, sp, #0x58
mov r1, #0x11
bl sub_02004F80
mov r5, r0
ldrb r2, [sp, #0x54]
ldr r0, _0204DE78 ; =_0209E264
mov r1, r5
bl Debug_Print0
ldr r0, [sp, #0x54]
cmp r0, r5
movne r0, #0
bne _0204DE6C
add r0, sp, #0
add r1, sp, #0x58
mov r2, #0x11
bl sub_02050974
add r0, sp, #0
mov r1, r4
mov r2, #1
bl sub_0205FD88
add r0, sp, #0
bl sub_020509BC
mov r0, #1
_0204DE6C:
add sp, sp, #0x6c
ldmia sp!, {r4, r5, pc}
.align 2, 0
_0204DE74: .word WONDER_MAIL_BITS_SWAP
_0204DE78: .word _0209E264
arm_func_end WonderMailPasswordToMission
arm_func_start MissionToWonderMailPassword
MissionToWonderMailPassword: ; 0x0204DE7C
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x6c
mov r2, #0
mov r4, r0
mov r5, r1
mov r1, r2
add r0, sp, #0x54
_0204DE98:
strb r1, [r0, r2]
add r2, r2, #1
cmp r2, #0x16
blt _0204DE98
add r0, sp, #0
add r1, sp, #0x58
mov r2, #0x11
bl sub_02050990
add r0, sp, #0
mov r1, r5
mov r2, #1
bl sub_0205FE80
add r0, sp, #0
bl sub_020509BC
add r0, sp, #0x58
mov r1, #0x11
bl sub_02004F80
mov r1, r0
str r1, [sp, #0x54]
ldrb r2, [sp, #0x54]
ldr r0, _0204DF4C ; =_0209E264
bl Debug_Print0
ldrb r0, [sp, #0x54]
add r1, sp, #0x58
mov r2, #0x11
bl sub_0204E02C
add r0, sp, #0x32
add r1, sp, #0x54
mov r2, #0x22
bl sub_0204DB08
ldr r2, _0204DF50 ; =WONDER_MAIL_BITS_SWAP
mov lr, #0
add ip, sp, #0x32
add r1, sp, #0x10
_0204DF20:
ldrb r3, [ip, lr]
ldrb r0, [r2, lr]
add lr, lr, #1
cmp lr, #0x22
strb r3, [r1, r0]
blt _0204DF20
mov r0, r4
mov r2, #0x22
bl MemcpySimple
add sp, sp, #0x6c
ldmia sp!, {r4, r5, pc}
.align 2, 0
_0204DF4C: .word _0209E264
_0204DF50: .word WONDER_MAIL_BITS_SWAP
arm_func_end MissionToWonderMailPassword
arm_func_start sub_0204DF54
sub_0204DF54: ; 0x0204DF54
stmdb sp!, {r4, r5, r6, r7, r8, lr}
tst r2, #0x1f
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
mov r5, #0
ldr ip, _0204DFAC ; =ARM9_UNKNOWN_TABLE__NA_209E280
mov r4, r5
b _0204DF9C
_0204DF74:
mov r6, r4
add r7, r1, r5
add r8, r0, r5
_0204DF80:
ldrb lr, [r7, r6]
ldrb r3, [ip, r6]
add r6, r6, #1
cmp r6, #0x20
strb lr, [r8, r3]
blt _0204DF80
add r5, r5, #0x20
_0204DF9C:
cmp r5, r2
blo _0204DF74
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_0204DFAC: .word ARM9_UNKNOWN_TABLE__NA_209E280
arm_func_end sub_0204DF54
arm_func_start sub_0204DFB0
sub_0204DFB0: ; 0x0204DFB0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
tst r2, #0x1f
movne r0, #0
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
mov r5, #0
mov lr, r5
ldr ip, _0204E028 ; =ARM9_UNKNOWN_TABLE__NA_209E280
mov r4, r5
b _0204E018
_0204DFD4:
mov sb, r4
add r7, r1, r5
add r8, r0, r5
_0204DFE0:
mov r6, lr
ldrb r3, [ip, sb]
b _0204DFF8
_0204DFEC:
cmp r6, r3
beq _0204E000
add r6, r6, #1
_0204DFF8:
cmp r6, #0x20
blt _0204DFEC
_0204E000:
ldrb r3, [r7, r6]
strb r3, [r8, sb]
add sb, sb, #1
cmp sb, #0x20
blt _0204DFE0
add r5, r5, #0x20
_0204E018:
cmp r5, r2
blo _0204DFD4
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0204E028: .word ARM9_UNKNOWN_TABLE__NA_209E280
arm_func_end sub_0204DFB0
arm_func_start sub_0204E02C
sub_0204E02C: ; 0x0204E02C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov sl, r0
and r0, sl, #0xf
add r0, r0, sl, asr #4
add r0, r0, #8
tst sl, #1
movne r7, #1
mov r5, #0
mov sb, r1
mov r8, r2
and r6, r0, #0xff
mvneq r7, #0
mov r1, r5
ldr r4, _0204E09C ; =WONDER_MAIL_ENCRYPTION_TABLE
b _0204E090
_0204E068:
mla r0, r1, r7, sl
and r0, r0, #0xff
ldrb r3, [sb, r5]
ldrb r2, [r4, r0]
add r0, r1, #1
mov r1, r6
add r2, r3, r2
strb r2, [sb, r5]
bl _s32_div_f
add r5, r5, #1
_0204E090:
cmp r5, r8
blo _0204E068
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_0204E09C: .word WONDER_MAIL_ENCRYPTION_TABLE
arm_func_end sub_0204E02C
arm_func_start sub_0204E0A0
sub_0204E0A0: ; 0x0204E0A0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov sl, r0
and r0, sl, #0xf
add r0, r0, sl, asr #4
add r0, r0, #8
tst sl, #1
movne r7, #1
mov r5, #0
mov sb, r1
mov r8, r2
and r6, r0, #0xff
mvneq r7, #0
mov r1, r5
ldr r4, _0204E110 ; =WONDER_MAIL_ENCRYPTION_TABLE
b _0204E104
_0204E0DC:
mla r0, r1, r7, sl
and r0, r0, #0xff
ldrb r3, [sb, r5]
ldrb r2, [r4, r0]
add r0, r1, #1
mov r1, r6
sub r2, r3, r2
strb r2, [sb, r5]
bl _s32_div_f
add r5, r5, #1
_0204E104:
cmp r5, r8
blo _0204E0DC
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_0204E110: .word WONDER_MAIL_ENCRYPTION_TABLE
arm_func_end sub_0204E0A0
arm_func_start sub_0204E114
sub_0204E114: ; 0x0204E114
stmdb sp!, {r4, lr}
mov r4, r0
bl GetDungeonModeSpecial
cmp r0, #3
#ifdef JAPAN
moveq r0, #0x37c
#else
ldreq r0, _0204E14C ; =0x00000B2C
#endif
beq _0204E144
cmp r4, #0xd4
ldreq r0, _0204E150 ; =0x00000B2D
#ifdef JAPAN
addne r0, r4, #0x2c8
#else
addne r0, r4, #0x278
addne r0, r0, #0x800
#endif
movne r0, r0, lsl #0x10
movne r0, r0, lsr #0x10
_0204E144:
bl StringFromId
ldmia sp!, {r4, pc}
.align 2, 0
#ifdef JAPAN
_0204E150: .word 0x0000037D
#else
_0204E14C: .word 0x00000B2C
_0204E150: .word 0x00000B2D
#endif
arm_func_end sub_0204E114
arm_func_start sub_0204E154
sub_0204E154: ; 0x0204E154
stmdb sp!, {r3, lr}
sub sp, sp, #0x10
mov r3, r0
mov r2, r1
add r0, sp, #0
mov r1, r3
bl sub_02050990
add r0, sp, #0
bl sub_0204ABB8
add r0, sp, #0
bl sub_0204F9F4
add r0, sp, #0
bl CopyLogTo
add r0, sp, #0
bl sub_020509BC
ldr r0, [sp, #8]
add sp, sp, #0x10
ldmia sp!, {r3, pc}
arm_func_end sub_0204E154
arm_func_start sub_0204E19C
sub_0204E19C: ; 0x0204E19C
stmdb sp!, {r3, lr}
sub sp, sp, #0x10
mov r3, r0
mov r2, r1
add r0, sp, #0
mov r1, r3
bl sub_02050974
add r0, sp, #0
bl sub_0204ACDC
add r0, sp, #0
bl sub_0204FA0C
add r0, sp, #0
bl CopyLogFrom
add r0, sp, #0
bl sub_020509BC
ldr r0, [sp, #8]
add sp, sp, #0x10
ldmia sp!, {r3, pc}
arm_func_end sub_0204E19C
arm_func_start sub_0204E1E4
sub_0204E1E4: ; 0x0204E1E4
stmdb sp!, {r3, lr}
mov r0, #0
bl sub_0204E8EC
ldr r1, _0204E208 ; =_022AB4F8
mov r2, #0
ldr r0, _0204E20C ; =_022AB5AC
strb r2, [r1, #1]
bl sub_0200C4CC
ldmia sp!, {r3, pc}
.align 2, 0
_0204E208: .word _022AB4F8
_0204E20C: .word _022AB5AC
arm_func_end sub_0204E1E4
arm_func_start sub_0204E210
sub_0204E210: ; 0x0204E210
stmdb sp!, {r3, lr}
bl GetGameMode
cmp r0, #1
mov r0, #0
bhi _0204E2AC
mov r2, r0
mov r1, #0x32
bl LoadScriptVariableValueAtIndex
cmp r0, #6
cmpne r0, #0xa
mov r0, #0
bne _0204E258
mov r2, r0
mov r1, #0x2e
bl LoadScriptVariableValueAtIndex
mov r0, r0, lsl #0x18
mov r0, r0, asr #0x18
ldmia sp!, {r3, pc}
_0204E258:
mov r1, #0x32
mov r2, #1
bl LoadScriptVariableValueAtIndex
cmp r0, #6
cmpne r0, #0xa
mov r0, #0
bne _0204E28C
mov r1, #0x2e
mov r2, #1
bl LoadScriptVariableValueAtIndex
mov r0, r0, lsl #0x18
mov r0, r0, asr #0x18
ldmia sp!, {r3, pc}
_0204E28C:
mov r1, #0x32
mov r2, #2
bl LoadScriptVariableValueAtIndex
cmp r0, #6
cmpne r0, #0xa
bne _0204E2D4
mov r0, #2
ldmia sp!, {r3, pc}
_0204E2AC:
mov r1, #0x2c
bl LoadScriptVariableValue
cmp r0, #6
bne _0204E2D4
mov r0, #0
mov r1, #0x28
bl LoadScriptVariableValue
mov r0, r0, lsl #0x18
mov r0, r0, asr #0x18
ldmia sp!, {r3, pc}
_0204E2D4:
mvn r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_0204E210
arm_func_start sub_0204E2DC
sub_0204E2DC: ; 0x0204E2DC
stmdb sp!, {r4, lr}
mov r4, r0
bl GetGameMode
strb r0, [r4]
cmp r0, #1
mov r0, #0
bhi _0204E398
mov r2, r0
mov r1, #0x32
bl LoadScriptVariableValueAtIndex
cmp r0, #6
cmpne r0, #0xa
mov r0, #0
bne _0204E334
mov r3, #2
mov r2, r0
mov r1, #0x2e
strb r3, [r4]
bl LoadScriptVariableValueAtIndex
mov r0, r0, lsl #0x18
mov r0, r0, asr #0x18
ldmia sp!, {r4, pc}
_0204E334:
mov r1, #0x32
mov r2, #1
bl LoadScriptVariableValueAtIndex
cmp r0, #6
cmpne r0, #0xa
mov r0, #0
bne _0204E370
mov r3, #3
mov r1, #0x2e
mov r2, #1
strb r3, [r4]
bl LoadScriptVariableValueAtIndex
mov r0, r0, lsl #0x18
mov r0, r0, asr #0x18
ldmia sp!, {r4, pc}
_0204E370:
mov r1, #0x32
mov r2, #2
bl LoadScriptVariableValueAtIndex
cmp r0, #6
cmpne r0, #0xa
bne _0204E3C0
mov r0, #4
strb r0, [r4]
mov r0, #2
ldmia sp!, {r4, pc}
_0204E398:
mov r1, #0x2c
bl LoadScriptVariableValue
cmp r0, #6
bne _0204E3C0
mov r0, #0
mov r1, #0x28
bl LoadScriptVariableValue
mov r0, r0, lsl #0x18
mov r0, r0, asr #0x18
ldmia sp!, {r4, pc}
_0204E3C0:
mvn r0, #0
ldmia sp!, {r4, pc}
arm_func_end sub_0204E2DC
arm_func_start sub_0204E3C8
sub_0204E3C8: ; 0x0204E3C8
stmdb sp!, {r3, lr}
bl sub_02048BFC
cmp r0, #2
bne _0204E400
bl sub_02048CB8
ldr r1, _0204E408 ; =0x000F1207
cmp r0, r1
bne _0204E400
mov r0, #1
mov r1, #0
bl GetSosMailCount
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r3, pc}
_0204E400:
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_0204E408: .word 0x000F1207
arm_func_end sub_0204E3C8
arm_func_start sub_0204E40C
sub_0204E40C: ; 0x0204E40C
stmdb sp!, {r3, lr}
bl sub_02048BFC
cmp r0, #2
bne _0204E458
bl sub_02048CB8
ldr r1, _0204E460 ; =0x000F1207
cmp r0, r1
bne _0204E458
mov r0, #1
mov r1, #0
bl GetSosMailCount
cmp r0, #0
bne _0204E458
mov r0, #7
mov r1, #0
bl GetSosMailCount
cmp r0, #0
movne r0, #1
ldmneia sp!, {r3, pc}
_0204E458:
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_0204E460: .word 0x000F1207
arm_func_end sub_0204E40C
arm_func_start sub_0204E464
sub_0204E464: ; 0x0204E464
stmdb sp!, {r3, lr}
bl sub_02048BFC
cmp r0, #2
bne _0204E4B0
bl sub_02048CB8
ldr r1, _0204E4B8 ; =0x000F1207
cmp r0, r1
bne _0204E4B0
mov r0, #1
mov r1, #0
bl GetSosMailCount
cmp r0, #0
beq _0204E4B0
mov r0, #7
mov r1, #0
bl GetSosMailCount
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r3, pc}
_0204E4B0:
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_0204E4B8: .word 0x000F1207
arm_func_end sub_0204E464
arm_func_start sub_0204E4BC
sub_0204E4BC: ; 0x0204E4BC
stmdb sp!, {r3, lr}
bl sub_02048BFC
cmp r0, #2
bne _0204E4E0
bl sub_02048CB8
ldr r1, _0204E4E8 ; =0x000F1207
cmp r0, r1
moveq r0, #0
ldmeqia sp!, {r3, pc}
_0204E4E0:
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_0204E4E8: .word 0x000F1207
arm_func_end sub_0204E4BC
arm_func_start sub_0204E4EC
sub_0204E4EC: ; 0x0204E4EC
stmdb sp!, {r4, lr}
bl sub_02048CB8
mov r4, r0
bl sub_02048BFC
cmp r0, #2
bne _0204E524
ldr r1, _0204E52C ; =0x000F1207
cmp r4, r1
addne r0, r1, #1
cmpne r4, r0
addne r0, r1, #3
cmpne r4, r0
movne r0, #1
ldmneia sp!, {r4, pc}
_0204E524:
mov r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
_0204E52C: .word 0x000F1207
arm_func_end sub_0204E4EC
arm_func_start sub_0204E530
sub_0204E530: ; 0x0204E530
stmdb sp!, {r3, lr}
bl sub_02048BFC
cmp r0, #1
bne _0204E57C
mov r0, #1
mov r1, #0
bl GetSosMailCount
cmp r0, #0
bne _0204E57C
mov r0, #7
mov r1, #0
bl GetSosMailCount
cmp r0, #0
bne _0204E57C
bl sub_0204E210
mvn r1, #0
cmp r0, r1
moveq r0, #1
ldmeqia sp!, {r3, pc}
_0204E57C:
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_0204E530
arm_func_start sub_0204E584
sub_0204E584: ; 0x0204E584
stmdb sp!, {r3, lr}
bl sub_02048BFC
cmp r0, #1
bne _0204E5DC
mov r0, #1
mov r1, #0
bl GetSosMailCount
cmp r0, #0
bne _0204E5DC
mov r0, #7
mov r1, #0
bl GetSosMailCount
cmp r0, #0
bne _0204E5DC
bl sub_0204E210
mvn r1, #0
cmp r0, r1
bne _0204E5DC
bl sub_0205633C
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r3, pc}
_0204E5DC:
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_0204E584
arm_func_start sub_0204E5E4
sub_0204E5E4: ; 0x0204E5E4
stmdb sp!, {r3, lr}
bl sub_02048BFC
cmp r0, #1
bne _0204E63C
mov r0, #1
mov r1, #0
bl GetSosMailCount
cmp r0, #0
bne _0204E63C
mov r0, #7
mov r1, #0
bl GetSosMailCount
cmp r0, #0
bne _0204E63C
bl sub_0204E210
mvn r1, #0
cmp r0, r1
bne _0204E63C
bl sub_02056360
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r3, pc}
_0204E63C:
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_0204E5E4
arm_func_start sub_0204E644
sub_0204E644: ; 0x0204E644
stmdb sp!, {r3, lr}
mov r0, #4
bl GetPerformanceFlagWithChecks
cmp r0, #0
beq _0204E69C
bl sub_02048BFC
cmp r0, #1
bne _0204E69C
mov r0, #1
mov r1, #0
bl GetSosMailCount
cmp r0, #0
bne _0204E69C
mov r0, #7
mov r1, #0
bl GetSosMailCount
cmp r0, #0
bne _0204E69C
bl sub_0205633C
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r3, pc}
_0204E69C:
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_0204E644
arm_func_start sub_0204E6A4
sub_0204E6A4: ; 0x0204E6A4
stmdb sp!, {r3, lr}
bl sub_02048BFC
cmp r0, #2
bne _0204E6F0
bl sub_02048CB8
ldr r1, _0204E6F8 ; =0x000F1207
cmp r0, r1
bne _0204E6F0
mov r0, #1
mov r1, #0
bl GetSosMailCount
cmp r0, #0
beq _0204E6F0
mov r0, #7
mov r1, #0
bl GetSosMailCount
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r3, pc}
_0204E6F0:
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_0204E6F8: .word 0x000F1207
arm_func_end sub_0204E6A4
arm_func_start sub_0204E6FC
sub_0204E6FC: ; 0x0204E6FC
ldr r0, _0204E708 ; =PENDING_DUNGEON_ID
ldrsb r0, [r0, #0xd]
bx lr
.align 2, 0
_0204E708: .word PENDING_DUNGEON_ID
arm_func_end sub_0204E6FC
arm_func_start sub_0204E70C
sub_0204E70C: ; 0x0204E70C
stmdb sp!, {r4, lr}
ldr r0, _0204E75C ; =PENDING_DUNGEON_ID
ldrsb r4, [r0, #0xd]
and r1, r4, #0xff
cmp r1, #1
bhi _0204E754
ldrsh r0, [r0, #2]
bl GetDungeonModeSpecial
cmp r0, #1
beq _0204E744
cmp r0, #2
beq _0204E74C
cmp r0, #3
bne _0204E754
_0204E744:
mov r0, #0
ldmia sp!, {r4, pc}
_0204E74C:
mov r0, #1
ldmia sp!, {r4, pc}
_0204E754:
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_0204E75C: .word PENDING_DUNGEON_ID
arm_func_end sub_0204E70C
arm_func_start sub_0204E760
sub_0204E760: ; 0x0204E760
ldr r0, _0204E76C ; =PENDING_DUNGEON_ID
ldrsh r0, [r0, #2]
bx lr
.align 2, 0
_0204E76C: .word PENDING_DUNGEON_ID
arm_func_end sub_0204E760
arm_func_start sub_0204E770
sub_0204E770: ; 0x0204E770
ldr r0, _0204E77C ; =PENDING_DUNGEON_ID
ldrb r0, [r0]
bx lr
.align 2, 0
_0204E77C: .word PENDING_DUNGEON_ID
arm_func_end sub_0204E770
arm_func_start sub_0204E780
sub_0204E780: ; 0x0204E780
ldr r0, _0204E78C ; =PENDING_DUNGEON_ID
ldrb r0, [r0, #0x14]
bx lr
.align 2, 0
_0204E78C: .word PENDING_DUNGEON_ID
arm_func_end sub_0204E780
arm_func_start sub_0204E790
sub_0204E790: ; 0x0204E790
stmdb sp!, {r4, lr}
ldr lr, _0204E7B4 ; =PENDING_DUNGEON_ID
mov r4, r0
mov ip, #0xb
_0204E7A0:
ldmia lr!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _0204E7A0
ldmia sp!, {r4, pc}
.align 2, 0
_0204E7B4: .word PENDING_DUNGEON_ID
arm_func_end sub_0204E790
arm_func_start sub_0204E7B8
sub_0204E7B8: ; 0x0204E7B8
stmdb sp!, {r3, lr}
ldr r1, _0204E8E0 ; =PENDING_DUNGEON_ID
mov r0, #0
ldrsb r2, [r1, #0xd]
mov r1, #0x28
bl SaveScriptVariableValue
ldr r1, _0204E8E0 ; =PENDING_DUNGEON_ID
mov r0, #0
ldrsh r2, [r1, #2]
mov r1, #0x27
bl SaveScriptVariableValue
ldr r1, _0204E8E0 ; =PENDING_DUNGEON_ID
mov r0, #0
ldrsh r2, [r1, #2]
mov r1, #0x29
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x2c
mov r2, #6
bl SaveScriptVariableValue
mov r0, #0
mov r1, #0x2b
mov r2, #6
bl SaveScriptVariableValue
ldr r0, _0204E8E0 ; =PENDING_DUNGEON_ID
ldrsb r0, [r0, #0xd]
cmp r0, #3
addls pc, pc, r0, lsl #2
b _0204E8D4
_0204E82C: ; jump table
b _0204E8D4 ; case 0
b _0204E83C ; case 1
b _0204E8B0 ; case 2
b _0204E8D4 ; case 3
_0204E83C:
mov r0, #0
mov r1, #0x27
mov r2, #0xd7
bl SaveScriptVariableValue
ldr r0, _0204E8E0 ; =PENDING_DUNGEON_ID
ldr r1, _0204E8E4 ; =_022AB518
ldrb r0, [r0]
bl sub_0205F00C
cmp r0, #0
beq _0204E8D4
ldr r1, _0204E8E0 ; =PENDING_DUNGEON_ID
ldrb r1, [r1, #0x1d]
cmp r1, #0
beq _0204E8A0
add r0, r0, #4
bl sub_0204F7A8
ldr r1, _0204E8E8 ; =CLIENT_LEVEL_TABLE
mov r0, r0, lsl #1
ldrsh r1, [r1, r0]
ldr r3, _0204E8E0 ; =PENDING_DUNGEON_ID
mov ip, #1
ldr r0, _0204E8E4 ; =_022AB518
mov r2, #0
strb ip, [r3, #0x1d]
bl ApplyLevelUpBoostsToGroundMonster
_0204E8A0:
ldr r0, _0204E8E0 ; =PENDING_DUNGEON_ID
mov r1, #1
strb r1, [r0, #0xf]
b _0204E8D4
_0204E8B0:
mov r0, #0
mov r1, #0x27
mov r2, #0xd6
bl SaveScriptVariableValue
ldr r1, _0204E8E0 ; =PENDING_DUNGEON_ID
mov r0, #0
ldrsb r2, [r1, #0x12]
mov r1, #0x29
bl SaveScriptVariableValue
_0204E8D4:
ldr r0, _0204E8E0 ; =PENDING_DUNGEON_ID
ldrsb r0, [r0, #0xd]
ldmia sp!, {r3, pc}
.align 2, 0
_0204E8E0: .word PENDING_DUNGEON_ID
_0204E8E4: .word _022AB518
_0204E8E8: .word CLIENT_LEVEL_TABLE
arm_func_end sub_0204E7B8
arm_func_start sub_0204E8EC
sub_0204E8EC: ; 0x0204E8EC
stmdb sp!, {r4, lr}
movs r4, r0
beq _0204E920
ldr lr, _0204E944 ; =PENDING_DUNGEON_ID
mov ip, #0xb
_0204E900:
ldmia r4!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _0204E900
ldr r0, _0204E948 ; =_022AB4F8
mov r1, #1
strb r1, [r0]
ldmia sp!, {r4, pc}
_0204E920:
mov r3, #0
ldr r0, _0204E944 ; =PENDING_DUNGEON_ID
sub r2, r3, #1
strb r2, [r0, #0xd]
ldr r1, _0204E948 ; =_022AB4F8
strb r2, [r0, #0xe]
strb r3, [r1]
strh r2, [r0, #2]
ldmia sp!, {r4, pc}
.align 2, 0
_0204E944: .word PENDING_DUNGEON_ID
_0204E948: .word _022AB4F8
arm_func_end sub_0204E8EC
arm_func_start SetEnterDungeon
SetEnterDungeon: ; 0x0204E94C
stmdb sp!, {r3, lr}
mov r1, r0
ldr r0, _0204E96C ; =PENDING_DUNGEON_ID
bl InitDungeonInit
ldr r0, _0204E970 ; =_022AB4F8
mov r1, #1
strb r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0204E96C: .word PENDING_DUNGEON_ID
_0204E970: .word _022AB4F8
arm_func_end SetEnterDungeon
arm_func_start sub_0204E974
sub_0204E974: ; 0x0204E974
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_0205B77C
ldr r2, _0204EA4C ; =PENDING_DUNGEON_ID
mov r1, #2
mov r4, r0
strb r1, [r2, #0xd]
sub r0, r1, #3
strb r0, [r2, #0xe]
mov r0, #0xd6
strh r0, [r2, #2]
ldr r0, _0204EA50 ; =_022AB510
mov r1, r5
strb r5, [r2, #0x12]
bl sub_0205BB7C
ldr r0, _0204EA54 ; =_022AB5A8
mov r1, r5
bl sub_0205BD14
ldr r1, _0204EA4C ; =PENDING_DUNGEON_ID
mov r2, #0
strb r2, [r1, #0xf]
strb r2, [r1, #0x10]
strb r2, [r1, #4]
mov r0, #7
strb r2, [r1, #0x11]
bl GetPerformanceFlagWithChecks
ldr r1, _0204EA4C ; =PENDING_DUNGEON_ID
mov r2, #0
strb r0, [r1, #5]
mov r0, #6
strb r2, [r1, #6]
bl GetPerformanceFlagWithChecks
ldr r1, _0204EA4C ; =PENDING_DUNGEON_ID
strb r0, [r1, #8]
mov r0, #1
bl GetPerformanceFlagWithChecks
ldr r1, _0204EA4C ; =PENDING_DUNGEON_ID
mov r2, #0
strb r0, [r1, #9]
strb r2, [r1, #0xa]
strb r2, [r1, #0xb]
strb r2, [r1, #7]
strb r2, [r1, #0xc]
ldrb r0, [r4, #4]
add r0, r0, #0xda
and r0, r0, #0xff
cmp r0, #5
strlsb r2, [r1, #5]
movls r0, #1
strlsb r0, [r1, #7]
ldr r0, _0204EA58 ; =_022AB4F8
mov r1, #1
strb r1, [r0]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0204EA4C: .word PENDING_DUNGEON_ID
_0204EA50: .word _022AB510
_0204EA54: .word _022AB5A8
_0204EA58: .word _022AB4F8
arm_func_end sub_0204E974
arm_func_start InitDungeonInit
InitDungeonInit: ; 0x0204EA5C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
bl GetGameMode
mov r4, r0
mov r0, r6
strh r6, [r7, #2]
bl DungeonSwapIdxToId
strb r0, [r7]
mov r1, #1
strb r1, [r7, #1]
sub r1, r1, #2
strb r1, [r7, #0x12]
mov r0, #0
str r0, [r7, #0xac]
strb r0, [r7, #0xd]
strb r1, [r7, #0xe]
strb r0, [r7, #4]
strb r0, [r7, #0xf]
strb r0, [r7, #0x10]
strb r0, [r7, #0x11]
cmp r4, #2
strneb r0, [r7, #5]
strneb r0, [r7, #6]
strneb r0, [r7, #8]
bne _0204EAF0
mov r0, #7
bl GetPerformanceFlagWithChecks
strb r0, [r7, #5]
mov r0, #5
bl GetPerformanceFlagWithChecks
strb r0, [r7, #6]
mov r0, #6
bl GetPerformanceFlagWithChecks
strb r0, [r7, #8]
mov r0, #1
bl GetPerformanceFlagWithChecks
_0204EAF0:
strb r0, [r7, #9]
mov r3, #0
strb r3, [r7, #0xa]
strb r3, [r7, #0xb]
strb r3, [r7, #7]
strb r3, [r7, #0xc]
mov r1, r3
mov r0, #0x44
_0204EB10:
mla r2, r3, r0, r7
strb r1, [r2, #0x1c]
add r3, r3, #1
strh r1, [r2, #0x20]
cmp r3, #2
blt _0204EB10
cmp r4, #5
bne _0204EB88
mov r0, #1
strb r0, [r7, #5]
strb r1, [r7, #6]
strb r1, [r7, #8]
strb r1, [r7, #9]
strb r1, [r7, #0xb]
mov r0, #3
strb r0, [r7, #0xd]
strb r1, [r7, #4]
sub r0, r6, #0x26
strb r1, [r7, #0x11]
cmp r0, #5
addls pc, pc, r0, lsl #2
b _0204EB84
_0204EB68: ; jump table
b _0204EB80 ; case 0
b _0204EB80 ; case 1
b _0204EB80 ; case 2
b _0204EB80 ; case 3
b _0204EB80 ; case 4
b _0204EB80 ; case 5
_0204EB80:
strb r1, [r7, #5]
_0204EB84:
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_0204EB88:
mov r0, r6
bl GetDungeonModeSpecial
cmp r0, #1
beq _0204EBB0
cmp r0, #2
beq _0204EF50
cmp r0, #3
moveq r0, #0
streqb r0, [r7, #0xd]
b _0204EF88
_0204EBB0:
mov r4, #0
mov r0, r6
strb r4, [r7, #0xd]
mov r5, r4
bl IsNoLossPenaltyDungeon
strb r0, [r7, #0xc]
cmp r6, #0x44
bgt _0204ECA4
bge _0204EE70
cmp r6, #0x3e
bgt _0204EC60
bge _0204EE68
cmp r6, #0x21
bgt _0204EC1C
bge _0204EDEC
cmp r6, #0xb
bgt _0204EC10
subs r0, r6, #8
addpl pc, pc, r0, lsl #2
b _0204EF34
_0204EC00: ; jump table
b _0204ED88 ; case 0
b _0204ED9C ; case 1
b _0204EDB0 ; case 2
b _0204EDC4 ; case 3
_0204EC10:
cmp r6, #0x20
beq _0204EDD8
b _0204EF34
_0204EC1C:
cmp r6, #0x22
bgt _0204EC2C
beq _0204EE10
b _0204EF34
_0204EC2C:
sub r0, r6, #0x23
cmp r0, #8
addls pc, pc, r0, lsl #2
b _0204EF34
_0204EC3C: ; jump table
b _0204EE24 ; case 0
b _0204EF34 ; case 1
b _0204EF34 ; case 2
b _0204EE48 ; case 3
b _0204EE48 ; case 4
b _0204EE48 ; case 5
b _0204EE60 ; case 6
b _0204EE60 ; case 7
b _0204EE60 ; case 8
_0204EC60:
cmp r6, #0x41
bgt _0204EC88
bge _0204EE68
cmp r6, #0x3f
bgt _0204EC7C
beq _0204EE68
b _0204EF34
_0204EC7C:
cmp r6, #0x40
beq _0204EE68
b _0204EF34
_0204EC88:
cmp r6, #0x42
bgt _0204EC98
beq _0204EE68
b _0204EF34
_0204EC98:
cmp r6, #0x43
beq _0204EE70
b _0204EF34
_0204ECA4:
cmp r6, #0x73
bgt _0204ECF4
bge _0204EE88
cmp r6, #0x70
bgt _0204ECD8
bge _0204EE88
cmp r6, #0x45
bgt _0204ECCC
beq _0204EE70
b _0204EF34
_0204ECCC:
cmp r6, #0x6f
beq _0204EE88
b _0204EF34
_0204ECD8:
cmp r6, #0x71
bgt _0204ECE8
beq _0204EE88
b _0204EF34
_0204ECE8:
cmp r6, #0x72
beq _0204EE88
b _0204EF34
_0204ECF4:
cmp r6, #0x76
bgt _0204ED1C
bge _0204EE88
cmp r6, #0x74
bgt _0204ED10
beq _0204EE88
b _0204EF34
_0204ED10:
cmp r6, #0x75
beq _0204EE88
b _0204EF34
_0204ED1C:
cmp r6, #0x87
bgt _0204ED7C
subs r0, r6, #0x78
addpl pc, pc, r0, lsl #2
b _0204ED70
_0204ED30: ; jump table
b _0204EE88 ; case 0
b _0204EE88 ; case 1
b _0204EE88 ; case 2
b _0204EE9C ; case 3
b _0204EEC4 ; case 4
b _0204EF34 ; case 5
b _0204EF34 ; case 6
b _0204EF34 ; case 7
b _0204EEEC ; case 8
b _0204EF34 ; case 9
b _0204EF34 ; case 10
b _0204EF34 ; case 11
b _0204EF34 ; case 12
b _0204EF34 ; case 13
b _0204EF34 ; case 14
b _0204EF10 ; case 15
_0204ED70:
cmp r6, #0x77
beq _0204EE88
b _0204EF34
_0204ED7C:
cmp r6, #0xa4
beq _0204EF24
b _0204EF34
_0204ED88:
ldr r2, _0204EF98 ; =_020A2904
mov r0, r7
mov r1, r4
bl AddGuestMonster
b _0204EF34
_0204ED9C:
ldr r2, _0204EF9C ; =_020A2AD8
mov r0, r7
mov r1, r4
bl AddGuestMonster
b _0204EF34
_0204EDB0:
ldr r2, _0204EFA0 ; =_020A2AB4
mov r0, r7
mov r1, r4
bl AddGuestMonster
b _0204EF34
_0204EDC4:
ldr r2, _0204EFA4 ; =_020A294C
mov r0, r7
mov r1, r4
bl AddGuestMonster
b _0204EF34
_0204EDD8:
ldr r2, _0204EFA8 ; =_020A2970
mov r0, r7
mov r1, #0
bl AddGuestMonster
b _0204EF34
_0204EDEC:
ldr r2, _0204EFAC ; =_020A2A48
mov r0, r7
mov r1, r4
bl AddGuestMonster
ldr r2, _0204EFB0 ; =_020A2A24
mov r0, r7
mov r1, #1
bl AddGuestMonster
b _0204EF34
_0204EE10:
ldr r2, _0204EFB4 ; =_020A29DC
mov r0, r7
mov r1, r4
bl AddGuestMonster
b _0204EF34
_0204EE24:
mov r0, #0x19
bl GetPerformanceFlagWithChecks
cmp r0, #0
bne _0204EF34
ldr r2, _0204EFB8 ; =_020A2A00
mov r0, r7
mov r1, r4
bl AddGuestMonster
b _0204EF34
_0204EE48:
ldr r2, _0204EFBC ; =_020A2A6C
mov r0, r7
mov r1, r4
mov r5, #1
bl AddGuestMonster
b _0204EF34
_0204EE60:
mov r4, #1
b _0204EF34
_0204EE68:
mov r4, #1
b _0204EF34
_0204EE70:
ldr r2, _0204EFC0 ; =_020A2A90
mov r0, r7
mov r1, #0
bl AddGuestMonster
mov r4, #1
b _0204EF34
_0204EE88:
ldr r2, _0204EFC4 ; =_020A2AFC
mov r0, r7
mov r1, #0
bl AddGuestMonster
b _0204EF34
_0204EE9C:
mov r0, r4
mov r1, #0x10
bl LoadScriptVariableValue
cmp r0, #0
bne _0204EF34
ldr r2, _0204EFC8 ; =_020A2B20
mov r0, r7
mov r1, r4
bl AddGuestMonster
b _0204EF34
_0204EEC4:
mov r0, r4
mov r1, #0x10
bl LoadScriptVariableValue
cmp r0, #0
bne _0204EF34
ldr r2, _0204EFCC ; =_020A2928
mov r0, r7
mov r1, r4
bl AddGuestMonster
b _0204EF34
_0204EEEC:
ldr r2, _0204EFD0 ; =GUEST_MONSTER_DATA
mov r0, r7
mov r1, r4
bl AddGuestMonster
ldr r2, _0204EFD4 ; =_020A28E0
mov r0, r7
mov r1, #1
bl AddGuestMonster
b _0204EF34
_0204EF10:
ldr r2, _0204EFD8 ; =_020A29B8
mov r0, r7
mov r1, r4
bl AddGuestMonster
b _0204EF34
_0204EF24:
ldr r2, _0204EFDC ; =_020A2994
mov r0, r7
mov r1, r4
bl AddGuestMonster
_0204EF34:
cmp r4, #0
movne r0, #1
strneb r0, [r7, #0xb]
cmp r5, #0
movne r0, #1
strneb r0, [r7, #7]
b _0204EF88
_0204EF50:
sub r0, r6, #0x26
cmp r0, #5
addls pc, pc, r0, lsl #2
b _0204EF80
_0204EF60: ; jump table
b _0204EF78 ; case 0
b _0204EF78 ; case 1
b _0204EF78 ; case 2
b _0204EF78 ; case 3
b _0204EF78 ; case 4
b _0204EF78 ; case 5
_0204EF78:
mov r0, #1
strb r0, [r7, #0xb]
_0204EF80:
mov r0, #1
strb r0, [r7, #0xd]
_0204EF88:
mov r0, #0
strb r0, [r7, #4]
strb r0, [r7, #0x11]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0204EF98: .word _020A2904
_0204EF9C: .word _020A2AD8
_0204EFA0: .word _020A2AB4
_0204EFA4: .word _020A294C
_0204EFA8: .word _020A2970
_0204EFAC: .word _020A2A48
_0204EFB0: .word _020A2A24
_0204EFB4: .word _020A29DC
_0204EFB8: .word _020A2A00
_0204EFBC: .word _020A2A6C
_0204EFC0: .word _020A2A90
_0204EFC4: .word _020A2AFC
_0204EFC8: .word _020A2B20
_0204EFCC: .word _020A2928
_0204EFD0: .word GUEST_MONSTER_DATA
_0204EFD4: .word _020A28E0
_0204EFD8: .word _020A29B8
_0204EFDC: .word _020A2994
arm_func_end InitDungeonInit
arm_func_start IsNoLossPenaltyDungeon
IsNoLossPenaltyDungeon: ; 0x0204EFE0
stmdb sp!, {r4, lr}
cmp r0, #0x1a
mov r4, #0
cmpne r0, #0x79
beq _0204F000
cmp r0, #0x7d
beq _0204F008
b _0204F01C
_0204F000:
mov r4, #1
b _0204F01C
_0204F008:
mov r0, r4
mov r1, #0x10
bl LoadScriptVariableValue
cmp r0, #0
moveq r4, #1
_0204F01C:
mov r0, r4
ldmia sp!, {r4, pc}
arm_func_end IsNoLossPenaltyDungeon
arm_func_start sub_0204F024
sub_0204F024: ; 0x0204F024
ldr r1, _0204F030 ; =PENDING_DUNGEON_ID
strb r0, [r1, #0xe]
bx lr
.align 2, 0
_0204F030: .word PENDING_DUNGEON_ID
arm_func_end sub_0204F024
arm_func_start sub_0204F034
sub_0204F034: ; 0x0204F034
stmdb sp!, {r3, lr}
mov r0, #0
mov r1, #0x28
bl LoadScriptVariableValue
mov r0, r0, lsl #0x18
mov r0, r0, asr #0x18
ldmia sp!, {r3, pc}
arm_func_end sub_0204F034
arm_func_start sub_0204F050
sub_0204F050: ; 0x0204F050
stmdb sp!, {r3, lr}
mov r0, #0
mov r1, #0x27
bl LoadScriptVariableValue
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
mvn r1, #0
cmp r0, r1
cmpne r0, #0xd6
ldmeqia sp!, {r3, pc}
cmp r0, #0xd7
cmpeq r0, #0xd9
cmpeq r0, #0xd8
ldmeqia sp!, {r3, pc}
mov r0, #0
mov r1, #0x29
bl LoadScriptVariableValue
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r3, pc}
arm_func_end sub_0204F050
arm_func_start sub_0204F0A0
sub_0204F0A0: ; 0x0204F0A0
stmdb sp!, {r3, lr}
mov r0, #0
mov r1, #0x27
bl LoadScriptVariableValue
mov r0, r0, lsl #0x10
mvn r1, #0
cmp r1, r0, asr #16
mov r0, r0, asr #0x10
moveq r0, #0xff
ldmeqia sp!, {r3, pc}
cmp r0, #0xd6
moveq r0, #0xd4
ldmeqia sp!, {r3, pc}
sub r1, r0, #0xd7
mov r1, r1, lsl #0x10
mov r1, r1, asr #0x10
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
cmp r1, #2
bhi _0204F104
mov r0, #0
mov r1, #0x29
bl LoadScriptVariableValue
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
_0204F104:
bl DungeonSwapIdxToId
ldmia sp!, {r3, pc}
arm_func_end sub_0204F0A0
arm_func_start sub_0204F10C
sub_0204F10C: ; 0x0204F10C
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0
mov r1, #0x27
bl LoadScriptVariableValue
mov r0, r0, lsl #0x10
mov r1, r0, asr #0x10
mvn r0, #0
cmp r1, r0
cmpne r1, #0xd6
cmpne r1, #0xd7
cmpne r1, #0xd8
cmpne r1, #0xd9
movne r0, #1
strneh r1, [r4]
mvneq r0, #0
streqh r0, [r4]
moveq r0, #0
ldmia sp!, {r4, pc}
arm_func_end sub_0204F10C
arm_func_start sub_0204F158
sub_0204F158: ; 0x0204F158
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0
mov r1, #0x27
bl LoadScriptVariableValue
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
cmp r0, #0xd7
bne _0204F1AC
mov r0, #0
mov r1, #0x29
bl LoadScriptVariableValue
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl DungeonSwapIdxToId
cmp r0, #0xff
beq _0204F1AC
cmp r0, #0xb4
strlob r0, [r4]
movlo r0, #1
ldmloia sp!, {r4, pc}
_0204F1AC:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end sub_0204F158
arm_func_start sub_0204F1B4
sub_0204F1B4: ; 0x0204F1B4
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0
mov r1, #0x27
bl LoadScriptVariableValue
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
cmp r0, #0xd6
mov r0, #0
ldmneia sp!, {r4, pc}
mov r1, #0x29
bl LoadScriptVariableValue
strb r0, [r4]
mov r0, #1
ldmia sp!, {r4, pc}
arm_func_end sub_0204F1B4
arm_func_start sub_0204F1F0
sub_0204F1F0: ; 0x0204F1F0
stmdb sp!, {r3, r4, r5, lr}
movs r5, r0
mov r4, r1
beq _0204F22C
ldr lr, _0204F23C ; =_022AB5AC
mov ip, #0xe
_0204F208:
ldmia r5!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _0204F208
ldmia r5, {r0, r1}
ldr r2, _0204F240 ; =_022AB4F8
stmia lr, {r0, r1}
strb r4, [r2, #1]
ldmia sp!, {r3, r4, r5, pc}
_0204F22C:
ldr r0, _0204F240 ; =_022AB4F8
mov r1, #0
strb r1, [r0, #1]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0204F23C: .word _022AB5AC
_0204F240: .word _022AB4F8
arm_func_end sub_0204F1F0
arm_func_start sub_0204F244
sub_0204F244: ; 0x0204F244
stmdb sp!, {r4, lr}
movs r4, r0
beq _0204F270
ldr lr, _0204F27C ; =_022AB5AC
mov ip, #0xe
_0204F258:
ldmia lr!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _0204F258
ldmia lr, {r0, r1}
stmia r4, {r0, r1}
_0204F270:
ldr r0, _0204F280 ; =_022AB4F8
ldrb r0, [r0, #1]
ldmia sp!, {r4, pc}
.align 2, 0
_0204F27C: .word _022AB5AC
_0204F280: .word _022AB4F8
arm_func_end sub_0204F244
arm_func_start sub_0204F284
sub_0204F284: ; 0x0204F284
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #8
mov sl, r0
add r0, sp, #0
mov sb, r1
bl GetPartyMembers
mov r6, r0
mov r0, sl
bl GetMaxMembersAllowed
cmp r6, r0
ble _0204F2C0
cmp r0, #1
ldreq r0, _0204F354 ; =0x00000301
ldrne r0, _0204F358 ; =0x00000101
b _0204F34C
_0204F2C0:
cmp sb, #0
beq _0204F2D8
add r0, r6, #1
cmp r0, #4
ldrgt r0, _0204F358 ; =0x00000101
bgt _0204F34C
_0204F2D8:
mov r7, #0
mov r8, r7
add r5, sp, #0
ldr r4, _0204F35C ; =TEAM_MEMBER_TABLE_PTR
mov fp, #0x44
b _0204F310
_0204F2F0:
mov r0, r8, lsl #1
ldrsh r0, [r5, r0]
ldr r1, [r4]
smlabb r0, r0, fp, r1
ldrsh r0, [r0, #4]
bl GetBodySize
add r7, r7, r0
add r8, r8, #1
_0204F310:
cmp r8, r6
blt _0204F2F0
cmp sb, #0
beq _0204F32C
mov r0, sb
bl GetBodySize
add r7, r7, r0
_0204F32C:
cmp r7, #6
movgt r0, #0x81
bgt _0204F34C
mov r0, sl
bl IsLevelResetDungeon
cmp r0, #0
ldrne r0, _0204F360 ; =0x00002002
moveq r0, #0
_0204F34C:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0204F354: .word 0x00000301
_0204F358: .word 0x00000101
_0204F35C: .word TEAM_MEMBER_TABLE_PTR
_0204F360: .word 0x00002002
arm_func_end sub_0204F284
arm_func_start sub_0204F364
sub_0204F364: ; 0x0204F364
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, #0
bl GetMaxItemsAllowed
mov r4, r0
bl GetNbItemsInBag
cmp r4, #0
ble _0204F39C
cmp r4, r0
bge _0204F39C
orr r5, r5, #2
cmp r4, #0
orreq r5, r5, #0x800
orrne r5, r5, #0x400
_0204F39C:
mov r0, r6
bl IsMoneyAllowed
cmp r0, #0
bne _0204F3BC
bl GetMoneyCarried
cmp r0, #0
orrgt r5, r5, #2
orrgt r5, r5, #0x1000
_0204F3BC:
mov r0, r5
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0204F364
arm_func_start CheckMissionRestrictions
CheckMissionRestrictions: ; 0x0204F3C4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetGameMode
cmp r0, #2
bne _0204F424
mov r0, r5
bl DungeonSwapIdToIdx
bl GetDungeonModeSpecial
cmp r0, #2
bne _0204F424
add r1, sp, #2
add r2, sp, #0
mov r0, r5
bl sub_0205EE40
cmp r0, #0
beq _0204F424
ldrsh r0, [sp]
cmp r0, #0
movne r0, #0x21
ldmneia sp!, {r3, r4, r5, pc}
ldrh r0, [sp, #2]
cmp r0, #0
movne r0, #0x41
ldmneia sp!, {r3, r4, r5, pc}
_0204F424:
cmp r5, #0x26
cmpne r5, #0x29
cmpne r5, #0x3f
cmpne r5, #0x63
cmpne r5, #0x64
cmpne r5, #0x65
cmpne r5, #0x66
cmpne r5, #0x67
cmpne r5, #0x68
cmpne r5, #0x6b
cmpne r5, #0x6c
cmpne r5, #0x6d
cmpne r5, #0x6e
cmpne r5, #0xae
ldreq r0, _0204F484 ; =0x00004001
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, r5
mov r1, #0
bl sub_0204F284
mov r4, r0
mov r0, r5
bl sub_0204F364
orr r0, r4, r0
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0204F484: .word 0x00004001
arm_func_end CheckMissionRestrictions
arm_func_start sub_0204F488
sub_0204F488: ; 0x0204F488
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov sb, r0
mov r8, r1
mov r7, r2
bl DungeonSwapIdToIdx
mov r5, r0
mov r0, sb
bl GetMaxReachedFloor
mov r6, r0
mov r0, r5
bl GetDungeonMode
mov r4, r0
cmp r4, #1
moveq r0, #0x11
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
cmp r6, #1
bge _0204F4EC
mov r0, r5
bl sub_0204CEE0
cmp r0, #0
bne _0204F4EC
cmp r4, #3
movne r0, #5
moveq r0, #9
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_0204F4EC:
cmp r8, r6
movgt r0, #9
ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
cmp sb, #0x26
cmpne sb, #0x29
cmpne sb, #0x3f
cmpne sb, #0x63
cmpne sb, #0x64
cmpne sb, #0x65
cmpne sb, #0x66
cmpne sb, #0x67
cmpne sb, #0x68
cmpne sb, #0x6b
cmpne sb, #0x6c
cmpne sb, #0x6d
cmpne sb, #0x6e
cmpne sb, #0xae
ldreq r0, _0204F558 ; =0x00004001
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
mov r0, sb
mov r1, r7
bl sub_0204F284
mov r4, r0
mov r0, sb
bl sub_0204F364
orr r0, r4, r0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0204F558: .word 0x00004001
arm_func_end sub_0204F488
arm_func_start sub_0204F55C
sub_0204F55C: ; 0x0204F55C
ldr r1, _0204F578 ; =SECONDARY_TERRAIN_TYPES
ldrb r0, [r1, r0]
cmp r0, #2
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_0204F578: .word SECONDARY_TERRAIN_TYPES
arm_func_end sub_0204F55C
arm_func_start GetNbFloors
GetNbFloors: ; 0x0204F57C
cmp r0, #0xb4
blo _0204F590
cmp r0, #0xbd
movls r0, #5
bxls lr
_0204F590:
cmp r0, #0xbe
moveq r0, #1
bxeq lr
cmp r0, #0xbf
ldrlo r1, _0204F5B0 ; =DUNGEON_DATA_LIST
movhs r0, #0x30
ldrlob r0, [r1, r0, lsl #2]
bx lr
.align 2, 0
_0204F5B0: .word DUNGEON_DATA_LIST
arm_func_end GetNbFloors
arm_func_start GetNbFloorsPlusOne
GetNbFloorsPlusOne: ; 0x0204F5B4
stmdb sp!, {r3, lr}
bl GetNbFloors
add r0, r0, #1
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end GetNbFloorsPlusOne
arm_func_start GetDungeonGroup
GetDungeonGroup: ; 0x0204F5C8
cmp r0, #0xb4
ldrlo r1, _0204F5DC ; =_0209E3A1
movhs r0, #0x35
ldrlob r0, [r1, r0, lsl #2]
bx lr
.align 2, 0
_0204F5DC: .word _0209E3A1
arm_func_end GetDungeonGroup
arm_func_start GetNbPrecedingFloors
GetNbPrecedingFloors: ; 0x0204F5E0
cmp r0, #0xb4
ldrlo r1, _0204F5F4 ; =_0209E3A2
movhs r0, #0
ldrlob r0, [r1, r0, lsl #2]
bx lr
.align 2, 0
_0204F5F4: .word _0209E3A2
arm_func_end GetNbPrecedingFloors
arm_func_start GetNbFloorsDungeonGroup
GetNbFloorsDungeonGroup: ; 0x0204F5F8
cmp r0, #0xb4
ldrlo r1, _0204F60C ; =_0209E3A3
movhs r0, #0
ldrlob r0, [r1, r0, lsl #2]
bx lr
.align 2, 0
_0204F60C: .word _0209E3A3
arm_func_end GetNbFloorsDungeonGroup
arm_func_start sub_0204F610
sub_0204F610: ; 0x0204F610
stmdb sp!, {r4, lr}
mov r4, r0
cmp r4, #0xb4
movhs r0, #0
ldmhsia sp!, {r4, pc}
bl GetMaxMembersAllowed
cmp r0, #1
bne _0204F644
mov r0, r4
bl IsRecruitingAllowed
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r4, pc}
_0204F644:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end sub_0204F610
arm_func_start DungeonFloorToGroupFloor
DungeonFloorToGroupFloor: ; 0x0204F64C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
mov r4, r0
ldrb r0, [r5]
cmp r0, #0xb4
blo _0204F690
cmp r0, #0xbd
bhi _0204F690
mov r0, #0x35
strb r0, [r4]
ldrb r0, [r5]
ldrb r1, [r5, #1]
sub r0, r0, #0xb4
add r0, r0, r0, lsl #2
add r0, r1, r0
strb r0, [r4, #1]
ldmia sp!, {r3, r4, r5, pc}
_0204F690:
cmp r0, #0xbe
bne _0204F6B0
mov r0, #0x35
strb r0, [r4]
ldrb r0, [r5, #1]
add r0, r0, #0x32
strb r0, [r4, #1]
ldmia sp!, {r3, r4, r5, pc}
_0204F6B0:
cmp r0, #0xbf
blo _0204F6D8
cmp r0, #0xd3
bhi _0204F6D8
mov r0, #0x35
strb r0, [r4]
ldrb r0, [r5, #1]
add r0, r0, #0x33
strb r0, [r4, #1]
ldmia sp!, {r3, r4, r5, pc}
_0204F6D8:
bl GetDungeonGroup
strb r0, [r4]
ldrb r0, [r5]
bl GetNbPrecedingFloors
ldrb r1, [r5, #1]
add r0, r1, r0
strb r0, [r4, #1]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end DungeonFloorToGroupFloor
arm_func_start sub_0204F6F8
sub_0204F6F8: ; 0x0204F6F8
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r0, r1
mov r1, r2
bl sub_0204F77C
cmp r5, #3
addls pc, pc, r5, lsl #2
b _0204F770
_0204F718: ; jump table
b _0204F728 ; case 0
b _0204F734 ; case 1
b _0204F74C ; case 2
b _0204F760 ; case 3
_0204F728:
bl GetGroundNameId
mov r4, r0
b _0204F770
_0204F734:
bl GetGroundNameId
#ifdef JAPAN
add r0, r0, #3
add r0, r0, #0x100
#else
ldr r1, _0204F778 ; =0xFFFFFEFD
add r0, r0, r1
#endif
mov r0, r0, lsl #0x10
mov r4, r0, lsr #0x10
b _0204F770
_0204F74C:
#if defined(EUROPE)
add r0, r0, #0xbe
add r0, r0, #0x4300
#elif defined(JAPAN)
add r0, r0, #0x26c
add r0, r0, #0x400
#else
add r0, r0, #0x3bc
add r0, r0, #0x4000
#endif
mov r0, r0, lsl #0x10
mov r4, r0, lsr #0x10
b _0204F770
_0204F760:
#if defined(EUROPE)
add r0, r0, #0xbd
add r0, r0, #0x4200
#elif defined(JAPAN)
add r0, r0, #0x6f
add r0, r0, #0x700
#else
add r0, r0, #0xbb
add r0, r0, #0x4200
#endif
mov r0, r0, lsl #0x10
mov r4, r0, lsr #0x10
_0204F770:
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
#ifndef JAPAN
_0204F778: .word 0xFFFFFEFD
#endif
arm_func_end sub_0204F6F8
arm_func_start sub_0204F77C
sub_0204F77C: ; 0x0204F77C
stmdb sp!, {r3, r4, r5, lr}
movs r4, r1
mov r5, r0
beq _0204F7A0
cmp r5, #0xae
bne _0204F7A0
bl GetNbFloorsDungeonGroup
cmp r4, r0
moveq r5, #0x7f
_0204F7A0:
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0204F77C
arm_func_start sub_0204F7A8
sub_0204F7A8: ; 0x0204F7A8
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
ldrb r0, [r4]
cmp r0, #0xb4
movhs r0, #1
bhs _0204F808
bl GetNbFloors
add r1, r0, #1
ldrb r0, [r4, #1]
and r1, r1, #0xff
cmp r0, r1
movhs r0, #1
bhs _0204F808
add r0, sp, #0
mov r1, r4
bl DungeonFloorToGroupFloor
ldrb r2, [sp]
cmp r2, #0x64
movhs r0, #1
ldrlo r1, _0204F810 ; =MISSION_FLOOR_RANKS_PTRS
ldrlob r0, [sp, #1]
ldrlo r1, [r1, r2, lsl #2]
ldrlob r0, [r1, r0]
_0204F808:
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
_0204F810: .word MISSION_FLOOR_RANKS_PTRS
arm_func_end sub_0204F7A8
arm_func_start GetMissionRank
GetMissionRank: ; 0x0204F814
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
ldrb r0, [r4]
cmp r0, #0xb4
movhs r0, #1
bhs _0204F880
bl GetNbFloors
add r1, r0, #1
ldrb r0, [r4, #1]
and r1, r1, #0xff
cmp r0, r1
movhs r0, #1
bhs _0204F880
add r0, sp, #0
mov r1, r4
bl DungeonFloorToGroupFloor
ldrb r2, [sp]
cmp r2, #0x64
movhs r0, #1
bhs _0204F880
ldrb r1, [sp, #1]
ldr r0, _0204F888 ; =MISSION_FLOOR_RANKS_PTRS
cmp r1, #1
ldr r0, [r0, r2, lsl #2]
movle r1, #2
ldrb r0, [r0, r1]
_0204F880:
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
_0204F888: .word MISSION_FLOOR_RANKS_PTRS
arm_func_end GetMissionRank
arm_func_start GetOutlawLevel
GetOutlawLevel: ; 0x0204F88C
stmdb sp!, {r3, lr}
bl GetMissionRank
ldr r1, _0204F8A4 ; =OUTLAW_LEVEL_TABLE
mov r0, r0, lsl #1
ldrsh r0, [r1, r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0204F8A4: .word OUTLAW_LEVEL_TABLE
arm_func_end GetOutlawLevel
arm_func_start GetOutlawLeaderLevel
GetOutlawLeaderLevel: ; 0x0204F8A8
stmdb sp!, {r3, lr}
bl GetMissionRank
ldr r1, _0204F8C0 ; =OUTLAW_LEVEL_TABLE
mov r0, r0, lsl #1
ldrsh r0, [r1, r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0204F8C0: .word OUTLAW_LEVEL_TABLE
arm_func_end GetOutlawLeaderLevel
arm_func_start GetOutlawMinionLevel
GetOutlawMinionLevel: ; 0x0204F8C4
stmdb sp!, {r3, lr}
bl GetMissionRank
ldr r1, _0204F8DC ; =OUTLAW_MINION_LEVEL_TABLE
mov r0, r0, lsl #1
ldrsh r0, [r1, r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0204F8DC: .word OUTLAW_MINION_LEVEL_TABLE
arm_func_end GetOutlawMinionLevel
arm_func_start AddGuestMonster
AddGuestMonster: ; 0x0204F8E0
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0x3c
add lr, sp, #0x18
mov r5, r0
mov r4, r1
mov r6, r2
mov ip, #2
_0204F8FC:
ldmia r6!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _0204F8FC
ldr r1, [r6]
mov r0, #1
str r1, [lr]
strb r0, [r5, #0xf]
ldrsh r0, [sp, #0x1c]
bl GetNameString
mov r1, r0
add r0, sp, #0
mov r2, #0xa
bl StrncpyName
add r2, sp, #0
add r1, r5, #0x1c
mov r0, #0x44
mla r0, r4, r0, r1
add r1, sp, #0x18
str r2, [sp, #0x18]
bl GuestMonsterToGroundMonster
add sp, sp, #0x3c
ldmia sp!, {r3, r4, r5, r6, pc}
arm_func_end AddGuestMonster
arm_func_start GetGroundNameId
GetGroundNameId: ; 0x0204F958
stmdb sp!, {r4, lr}
mov r4, r0
cmp r4, #6
bne _0204F980
mov r0, #0x1b
bl GetPerformanceFlagWithChecks
cmp r0, #0
bne _0204F99C
ldr r0, _0204F9B0 ; =0x000042B9
ldmia sp!, {r4, pc}
_0204F980:
cmp r4, #0x15
bne _0204F99C
mov r0, #0x1c
bl GetPerformanceFlagWithChecks
cmp r0, #0
#ifdef JAPAN
moveq r0, #0x1c4
#else
ldreq r0, _0204F9B4 ; =0x000042BA
#endif
ldmeqia sp!, {r4, pc}
_0204F99C:
#if defined(EUROPE)
add r0, r4, #0xba
add r0, r0, #0x4100
#elif defined(JAPAN)
add r0, r4, #0xc2
#else
add r0, r4, #0x1b8
add r0, r0, #0x4000
#endif
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
ldmia sp!, {r4, pc}
.align 2, 0
#if defined(EUROPE)
_0204F9B0: .word 0x000042BB
_0204F9B4: .word 0x000042BC
#elif defined(JAPAN)
_0204F9B0: .word 0x000001C3
#else
_0204F9B0: .word 0x000042B9
_0204F9B4: .word 0x000042BA
#endif
arm_func_end GetGroundNameId
arm_func_start sub_0204F9B8
sub_0204F9B8: ; 0x0204F9B8
ldr ip, _0204F9C4 ; =ResetPlayTimer
ldr r0, _0204F9C8 ; =PLAY_TIME_SECONDS
bx ip
.align 2, 0
_0204F9C4: .word ResetPlayTimer
_0204F9C8: .word PLAY_TIME_SECONDS
arm_func_end sub_0204F9B8
arm_func_start sub_0204F9CC
sub_0204F9CC: ; 0x0204F9CC
ldr ip, _0204F9D8 ; =PlayTimerTick
ldr r0, _0204F9DC ; =PLAY_TIME_SECONDS
bx ip
.align 2, 0
_0204F9D8: .word PlayTimerTick
_0204F9DC: .word PLAY_TIME_SECONDS
arm_func_end sub_0204F9CC
arm_func_start sub_0204F9E0
sub_0204F9E0: ; 0x0204F9E0
ldr ip, _0204F9EC ; =GetPlayTimeSeconds
ldr r0, _0204F9F0 ; =PLAY_TIME_SECONDS
bx ip
.align 2, 0
_0204F9EC: .word GetPlayTimeSeconds
_0204F9F0: .word PLAY_TIME_SECONDS
arm_func_end sub_0204F9E0
arm_func_start sub_0204F9F4
sub_0204F9F4: ; 0x0204F9F4
ldr ip, _0204FA04 ; =sub_02050E5C
mov r1, r0
ldr r0, _0204FA08 ; =PLAY_TIME_SECONDS
bx ip
.align 2, 0
_0204FA04: .word sub_02050E5C
_0204FA08: .word PLAY_TIME_SECONDS
arm_func_end sub_0204F9F4
arm_func_start sub_0204FA0C
sub_0204FA0C: ; 0x0204FA0C
ldr ip, _0204FA1C ; =sub_02050E8C
mov r1, r0
ldr r0, _0204FA20 ; =PLAY_TIME_SECONDS
bx ip
.align 2, 0
_0204FA1C: .word sub_02050E8C
_0204FA20: .word PLAY_TIME_SECONDS
arm_func_end sub_0204FA0C
arm_func_start SetAdventureLogStructLocation
SetAdventureLogStructLocation: ; 0x0204FA24
ldr r1, _0204FA34 ; =_022AB69C
ldr r0, _0204FA38 ; =ADVENTURE_LOG_PTR
str r1, [r0]
bx lr
.align 2, 0
_0204FA34: .word _022AB69C
_0204FA38: .word ADVENTURE_LOG_PTR
arm_func_end SetAdventureLogStructLocation
arm_func_start SetAdventureLogDungeonFloor
SetAdventureLogDungeonFloor: ; 0x0204FA3C
ldr r1, _0204FA58 ; =ADVENTURE_LOG_PTR
ldrb r2, [r0]
ldr r1, [r1]
strb r2, [r1, #0x278]
ldrb r0, [r0, #1]
strb r0, [r1, #0x279]
bx lr
.align 2, 0
_0204FA58: .word ADVENTURE_LOG_PTR
arm_func_end SetAdventureLogDungeonFloor
arm_func_start GetAdventureLogDungeonFloor
GetAdventureLogDungeonFloor: ; 0x0204FA5C
ldr r0, _0204FA6C ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
add r0, r0, #0x278
bx lr
.align 2, 0
_0204FA6C: .word ADVENTURE_LOG_PTR
arm_func_end GetAdventureLogDungeonFloor
arm_func_start ClearAdventureLogStruct
ClearAdventureLogStruct: ; 0x0204FA70
mov r3, #0
ldr r1, _0204FB98 ; =ADVENTURE_LOG_PTR
mov r0, r3
_0204FA7C:
ldr r2, [r1]
str r0, [r2, r3, lsl #2]
add r3, r3, #1
cmp r3, #4
blt _0204FA7C
ldr r1, _0204FB98 ; =ADVENTURE_LOG_PTR
mov r3, #0
ldr r2, [r1]
str r0, [r2, #0x2c]
ldr r2, [r1]
str r0, [r2, #0x30]
ldr r2, [r1]
str r0, [r2, #0x34]
ldr r2, [r1]
str r0, [r2, #0x28]
ldr r2, [r1]
str r0, [r2, #0x10]
ldr r2, [r1]
str r0, [r2, #0x14]
ldr r2, [r1]
str r0, [r2, #0x18]
ldr r2, [r1]
str r0, [r2, #0x1c]
ldr r2, [r1]
str r0, [r2, #0x20]
ldr r2, [r1]
str r0, [r2, #0x24]
ldr r2, [r1]
str r0, [r2, #0x38]
ldr r2, [r1]
str r0, [r2, #0x3c]
ldr r2, [r1]
str r0, [r2, #0x40]
_0204FB00:
ldr r2, [r1]
add r2, r2, r0, lsl #2
str r3, [r2, #0x44]
ldr r2, [r1]
add r2, r2, r0, lsl #2
add r0, r0, #1
str r3, [r2, #0xd8]
cmp r0, #0x25
blt _0204FB00
ldr r0, _0204FB98 ; =ADVENTURE_LOG_PTR
mov r2, #0
_0204FB2C:
ldr r1, [r0]
add r1, r1, r3, lsl #2
add r3, r3, #1
str r2, [r1, #0x16c]
cmp r3, #0x11
blt _0204FB2C
ldr r0, _0204FB98 ; =ADVENTURE_LOG_PTR
mov ip, #0
_0204FB4C:
ldr r1, [r0]
add r1, r1, r2, lsl #2
add r2, r2, #1
str ip, [r1, #0x1b0]
cmp r2, #0x2c
blt _0204FB4C
ldr r1, _0204FB98 ; =ADVENTURE_LOG_PTR
ldr r0, [r1]
str ip, [r0, #0x260]
mov r0, #0x3e8
_0204FB74:
rsb r2, ip, #5
mul r3, r2, r0
ldr r2, [r1]
add r2, r2, ip, lsl #2
add ip, ip, #1
str r3, [r2, #0x264]
cmp ip, #5
blt _0204FB74
bx lr
.align 2, 0
_0204FB98: .word ADVENTURE_LOG_PTR
arm_func_end ClearAdventureLogStruct
arm_func_start SetAdventureLogCompleted
SetAdventureLogCompleted: ; 0x0204FB9C
ldr r1, _0204FBC0 ; =ADVENTURE_LOG_PTR
mov r3, r0, asr #5
ldr ip, [r1]
and r0, r0, #0x1f
ldr r2, [ip, r3, lsl #2]
mov r1, #1
orr r0, r2, r1, lsl r0
str r0, [ip, r3, lsl #2]
bx lr
.align 2, 0
_0204FBC0: .word ADVENTURE_LOG_PTR
arm_func_end SetAdventureLogCompleted
arm_func_start IsAdventureLogNotEmpty
IsAdventureLogNotEmpty: ; 0x0204FBC4
ldr r0, _0204FBF8 ; =ADVENTURE_LOG_PTR
mov r1, #0
ldr r2, [r0]
b _0204FBE8
_0204FBD4:
ldr r0, [r2, r1, lsl #2]
cmp r0, #0
movne r0, #1
bxne lr
add r1, r1, #1
_0204FBE8:
cmp r1, #4
blt _0204FBD4
mov r0, #0
bx lr
.align 2, 0
_0204FBF8: .word ADVENTURE_LOG_PTR
arm_func_end IsAdventureLogNotEmpty
arm_func_start GetAdventureLogCompleted
GetAdventureLogCompleted: ; 0x0204FBFC
ldr r1, _0204FC24 ; =ADVENTURE_LOG_PTR
mov r2, r0, asr #5
ldr r1, [r1]
and r3, r0, #0x1f
ldr r0, [r1, r2, lsl #2]
mov r1, #1
tst r0, r1, lsl r3
moveq r1, #0
and r0, r1, #0xff
bx lr
.align 2, 0
_0204FC24: .word ADVENTURE_LOG_PTR
arm_func_end GetAdventureLogCompleted
arm_func_start IncrementNbDungeonsCleared
IncrementNbDungeonsCleared: ; 0x0204FC28
ldr r0, _0204FC64 ; =ADVENTURE_LOG_PTR
ldr r1, _0204FC68 ; =0x000F423F
ldr r3, [r0]
ldr r2, [r3, #0x10]
add r2, r2, #1
str r2, [r3, #0x10]
ldr r3, [r0]
ldr r2, [r3]
orr r2, r2, #0x10
str r2, [r3]
ldr r2, [r0]
ldr r0, [r2, #0x10]
cmp r0, r1
strgt r1, [r2, #0x10]
bx lr
.align 2, 0
_0204FC64: .word ADVENTURE_LOG_PTR
_0204FC68: .word 0x000F423F
arm_func_end IncrementNbDungeonsCleared
arm_func_start GetNbDungeonsCleared
GetNbDungeonsCleared: ; 0x0204FC6C
ldr r0, _0204FC7C ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x10]
bx lr
.align 2, 0
_0204FC7C: .word ADVENTURE_LOG_PTR
arm_func_end GetNbDungeonsCleared
arm_func_start IncrementNbFriendRescues
IncrementNbFriendRescues: ; 0x0204FC80
ldr r0, _0204FCC0 ; =ADVENTURE_LOG_PTR
ldr r1, _0204FCC4 ; =0x000F423F
ldr r3, [r0]
ldr r2, [r3, #0x14]
add r2, r2, #1
str r2, [r3, #0x14]
ldr r2, [r0]
ldr r0, [r2, #0x14]
cmp r0, r1
ldr r0, _0204FCC0 ; =ADVENTURE_LOG_PTR
strgt r1, [r2, #0x14]
ldr r1, [r0]
ldr r0, [r1]
orr r0, r0, #0x40
str r0, [r1]
bx lr
.align 2, 0
_0204FCC0: .word ADVENTURE_LOG_PTR
_0204FCC4: .word 0x000F423F
arm_func_end IncrementNbFriendRescues
arm_func_start GetNbFriendRescues
GetNbFriendRescues: ; 0x0204FCC8
ldr r0, _0204FCD8 ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x14]
bx lr
.align 2, 0
_0204FCD8: .word ADVENTURE_LOG_PTR
arm_func_end GetNbFriendRescues
arm_func_start IncrementNbEvolutions
IncrementNbEvolutions: ; 0x0204FCDC
ldr r0, _0204FD1C ; =ADVENTURE_LOG_PTR
ldr r1, _0204FD20 ; =0x000F423F
ldr r3, [r0]
ldr r2, [r3, #0x18]
add r2, r2, #1
str r2, [r3, #0x18]
ldr r2, [r0]
ldr r0, [r2, #0x18]
cmp r0, r1
ldr r0, _0204FD1C ; =ADVENTURE_LOG_PTR
strgt r1, [r2, #0x18]
ldr r1, [r0]
ldr r0, [r1]
orr r0, r0, #0x80
str r0, [r1]
bx lr
.align 2, 0
_0204FD1C: .word ADVENTURE_LOG_PTR
_0204FD20: .word 0x000F423F
arm_func_end IncrementNbEvolutions
arm_func_start GetNbEvolutions
GetNbEvolutions: ; 0x0204FD24
ldr r0, _0204FD34 ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x18]
bx lr
.align 2, 0
_0204FD34: .word ADVENTURE_LOG_PTR
arm_func_end GetNbEvolutions
arm_func_start IncrementNbSteals
IncrementNbSteals: ; 0x0204FD38
bx lr
arm_func_end IncrementNbSteals
arm_func_start IncrementNbEggsHatched
IncrementNbEggsHatched: ; 0x0204FD3C
ldr r1, _0204FD70 ; =ADVENTURE_LOG_PTR
ldr r0, _0204FD74 ; =0x000F423F
ldr r2, [r1]
ldr r1, [r2, #0x1c]
cmp r1, r0
addlt r0, r1, #1
strlt r0, [r2, #0x1c]
ldr r0, _0204FD70 ; =ADVENTURE_LOG_PTR
ldr r1, [r0]
ldr r0, [r1]
orr r0, r0, #0x100
str r0, [r1]
bx lr
.align 2, 0
_0204FD70: .word ADVENTURE_LOG_PTR
_0204FD74: .word 0x000F423F
arm_func_end IncrementNbEggsHatched
arm_func_start GetNbEggsHatched
GetNbEggsHatched: ; 0x0204FD78
ldr r0, _0204FD88 ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x1c]
bx lr
.align 2, 0
_0204FD88: .word ADVENTURE_LOG_PTR
arm_func_end GetNbEggsHatched
arm_func_start GetNbPokemonJoined
GetNbPokemonJoined: ; 0x0204FD8C
ldr r0, _0204FD9C ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x2c]
bx lr
.align 2, 0
_0204FD9C: .word ADVENTURE_LOG_PTR
arm_func_end GetNbPokemonJoined
arm_func_start GetNbMovesLearned
GetNbMovesLearned: ; 0x0204FDA0
ldr r0, _0204FDB0 ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x34]
bx lr
.align 2, 0
_0204FDB0: .word ADVENTURE_LOG_PTR
arm_func_end GetNbMovesLearned
arm_func_start SetVictoriesOnOneFloor
SetVictoriesOnOneFloor: ; 0x0204FDB4
ldr r1, _0204FDE0 ; =0x000F423F
cmp r0, r1
movgt r0, r1
ldr r1, _0204FDE4 ; =ADVENTURE_LOG_PTR
ldr r2, [r1]
str r0, [r2, #0x28]
ldr r1, [r1]
ldr r0, [r1]
orr r0, r0, #0x200
str r0, [r1]
bx lr
.align 2, 0
_0204FDE0: .word 0x000F423F
_0204FDE4: .word ADVENTURE_LOG_PTR
arm_func_end SetVictoriesOnOneFloor
arm_func_start GetVictoriesOnOneFloor
GetVictoriesOnOneFloor: ; 0x0204FDE8
ldr r0, _0204FDF8 ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x28]
bx lr
.align 2, 0
_0204FDF8: .word ADVENTURE_LOG_PTR
arm_func_end GetVictoriesOnOneFloor
arm_func_start SetPokemonJoined
SetPokemonJoined: ; 0x0204FDFC
stmdb sp!, {r3, lr}
bl GetDexNumberVeneer
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldr r3, _0204FE54 ; =ADVENTURE_LOG_PTR
mov r1, r0, asr #4
ldr lr, [r3]
add r1, r0, r1, lsr #27
ldr ip, [lr]
mov r2, r0, lsr #0x1f
orr ip, ip, #1
str ip, [lr]
ldr r3, [r3]
rsb r0, r2, r0, lsl #27
add lr, r3, #0x44
mov ip, r1, asr #5
ldr r3, [lr, ip, lsl #2]
add r0, r2, r0, ror #27
mov r1, #1
orr r0, r3, r1, lsl r0
str r0, [lr, ip, lsl #2]
ldmia sp!, {r3, pc}
.align 2, 0
_0204FE54: .word ADVENTURE_LOG_PTR
arm_func_end SetPokemonJoined
arm_func_start SetPokemonBattled
SetPokemonBattled: ; 0x0204FE58
stmdb sp!, {r3, lr}
bl GetDexNumberVeneer
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldr r3, _0204FEB0 ; =ADVENTURE_LOG_PTR
mov r1, r0, asr #4
ldr lr, [r3]
add r1, r0, r1, lsr #27
ldr ip, [lr]
mov r2, r0, lsr #0x1f
orr ip, ip, #2
str ip, [lr]
ldr r3, [r3]
rsb r0, r2, r0, lsl #27
add lr, r3, #0xd8
mov ip, r1, asr #5
ldr r3, [lr, ip, lsl #2]
add r0, r2, r0, ror #27
mov r1, #1
orr r0, r3, r1, lsl r0
str r0, [lr, ip, lsl #2]
ldmia sp!, {r3, pc}
.align 2, 0
_0204FEB0: .word ADVENTURE_LOG_PTR
arm_func_end SetPokemonBattled
arm_func_start GetNbPokemonBattled
GetNbPokemonBattled: ; 0x0204FEB4
ldr r0, _0204FEC4 ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x30]
bx lr
.align 2, 0
_0204FEC4: .word ADVENTURE_LOG_PTR
arm_func_end GetNbPokemonBattled
arm_func_start IncrementNbBigTreasureWins
IncrementNbBigTreasureWins: ; 0x0204FEC8
ldr r0, _0204FEE0 ; =ADVENTURE_LOG_PTR
ldr ip, _0204FEE4 ; =SetNbBigTreasureWins
ldr r0, [r0]
ldr r0, [r0, #0x38]
add r0, r0, #1
bx ip
.align 2, 0
_0204FEE0: .word ADVENTURE_LOG_PTR
_0204FEE4: .word SetNbBigTreasureWins
arm_func_end IncrementNbBigTreasureWins
arm_func_start SetNbBigTreasureWins
SetNbBigTreasureWins: ; 0x0204FEE8
ldr r2, _0204FF18 ; =ADVENTURE_LOG_PTR
ldr r1, _0204FF1C ; =0x000F423F
ldr r3, [r2]
cmp r0, r1
ldr r2, [r3]
movgt r0, r1
orr r2, r2, #0x400
ldr r1, _0204FF18 ; =ADVENTURE_LOG_PTR
str r2, [r3]
ldr r1, [r1]
str r0, [r1, #0x38]
bx lr
.align 2, 0
_0204FF18: .word ADVENTURE_LOG_PTR
_0204FF1C: .word 0x000F423F
arm_func_end SetNbBigTreasureWins
arm_func_start GetNbBigTreasureWins
GetNbBigTreasureWins: ; 0x0204FF20
ldr r0, _0204FF30 ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x38]
bx lr
.align 2, 0
_0204FF30: .word ADVENTURE_LOG_PTR
arm_func_end GetNbBigTreasureWins
arm_func_start SetNbRecycled
SetNbRecycled: ; 0x0204FF34
ldr r2, _0204FF64 ; =ADVENTURE_LOG_PTR
ldr r1, _0204FF68 ; =0x000F423F
ldr r3, [r2]
cmp r0, r1
ldr r2, [r3]
movgt r0, r1
orr r2, r2, #0x800
ldr r1, _0204FF64 ; =ADVENTURE_LOG_PTR
str r2, [r3]
ldr r1, [r1]
str r0, [r1, #0x3c]
bx lr
.align 2, 0
_0204FF64: .word ADVENTURE_LOG_PTR
_0204FF68: .word 0x000F423F
arm_func_end SetNbRecycled
arm_func_start GetNbRecycled
GetNbRecycled: ; 0x0204FF6C
ldr r0, _0204FF7C ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x3c]
bx lr
.align 2, 0
_0204FF7C: .word ADVENTURE_LOG_PTR
arm_func_end GetNbRecycled
arm_func_start IncrementNbSkyGiftsSent
IncrementNbSkyGiftsSent: ; 0x0204FF80
ldr r0, _0204FF98 ; =ADVENTURE_LOG_PTR
ldr ip, _0204FF9C ; =SetNbSkyGiftsSent
ldr r0, [r0]
ldr r0, [r0, #0x40]
add r0, r0, #1
bx ip
.align 2, 0
_0204FF98: .word ADVENTURE_LOG_PTR
_0204FF9C: .word SetNbSkyGiftsSent
arm_func_end IncrementNbSkyGiftsSent
arm_func_start SetNbSkyGiftsSent
SetNbSkyGiftsSent: ; 0x0204FFA0
ldr r2, _0204FFD0 ; =ADVENTURE_LOG_PTR
ldr r1, _0204FFD4 ; =0x000F423F
ldr r3, [r2]
cmp r0, r1
ldr r2, [r3]
movgt r0, r1
orr r2, r2, #0x1000
ldr r1, _0204FFD0 ; =ADVENTURE_LOG_PTR
str r2, [r3]
ldr r1, [r1]
str r0, [r1, #0x40]
bx lr
.align 2, 0
_0204FFD0: .word ADVENTURE_LOG_PTR
_0204FFD4: .word 0x000F423F
arm_func_end SetNbSkyGiftsSent
arm_func_start GetNbSkyGiftsSent
GetNbSkyGiftsSent: ; 0x0204FFD8
ldr r0, _0204FFE8 ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x40]
bx lr
.align 2, 0
_0204FFE8: .word ADVENTURE_LOG_PTR
arm_func_end GetNbSkyGiftsSent
arm_func_start ComputeSpecialCounters
ComputeSpecialCounters: ; 0x0204FFEC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov r4, #0
mov r8, r4
_0204FFF8:
mov r0, #0x44
mul sl, r8, r0
ldr r0, _0205022C ; =TEAM_MEMBER_TABLE_PTR
ldr r0, [r0]
ldrb r0, [r0, sl]
tst r0, #1
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _0205009C
mov sb, #0
mov r7, #1
ldr r3, _02050230 ; =ADVENTURE_LOG_PTR
ldr ip, _0205022C ; =TEAM_MEMBER_TABLE_PTR
mov fp, sb
mov lr, r7
mov r2, #6
_0205003C:
mul r1, sb, r2
ldr r0, [ip]
add r0, r0, sl
add r5, r0, #0x22
ldrb r0, [r5, r1]
add r1, r5, r1
tst r0, #1
movne r0, r7
moveq r0, fp
tst r0, #0xff
beq _02050090
ldrh r0, [r1, #2]
ldr r5, [r3]
mov r1, r0, lsr #5
add r6, r5, r1, lsl #2
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #27
ldr r5, [r6, #0x16c]
add r0, r1, r0, ror #27
orr r0, r5, lr, lsl r0
str r0, [r6, #0x16c]
_02050090:
add sb, sb, #1
cmp sb, #4
blt _0205003C
_0205009C:
ldr r0, _02050234 ; =0x0000022B
add r8, r8, #1
cmp r8, r0
blt _0204FFF8
mov r6, #0
add r5, r0, #0x258
_020500B4:
mov r0, r6, lsl #0x10
mov r0, r0, asr #0x10
bl GetDexNumberVeneer
add r6, r6, #1
cmp r6, r5
blt _020500B4
mov r7, #0
ldr r5, _02050230 ; =ADVENTURE_LOG_PTR
ldr sb, _02050238 ; =0x0000021F
mov r8, r7
mov r6, #1
_020500E0:
mov r0, r8, lsl #0x10
mov r0, r0, lsr #0x10
bl IsRealMove
cmp r0, #0
beq _02050120
mov r0, r8, asr #4
add r0, r8, r0, lsr #27
ldr r2, [r5]
mov r0, r0, asr #5
add r2, r2, r0, lsl #2
mov r1, r8, lsr #0x1f
rsb r0, r1, r8, lsl #27
ldr r2, [r2, #0x16c]
add r0, r1, r0, ror #27
tst r2, r6, lsl r0
addne r7, r7, #1
_02050120:
add r8, r8, #1
cmp r8, sb
blt _020500E0
cmp r7, #0
ble _02050150
ldr r0, _02050230 ; =ADVENTURE_LOG_PTR
ldr r1, [r0]
str r7, [r1, #0x34]
ldr r1, [r0]
ldr r0, [r1]
orr r0, r0, #4
str r0, [r1]
_02050150:
mov sb, #1
ldr r5, _02050230 ; =ADVENTURE_LOG_PTR
ldr sl, _0205023C ; =0x00000483
mov r8, #0
mov r6, sb
_02050164:
mov r0, sb, lsl #0x10
mov r0, r0, asr #0x10
bl GetBaseFormCastformCherrimDeoxys
mov r7, r0
bl GetDexNumberVeneer
cmp r0, #0
beq _020501B4
mov r1, r0, asr #4
add r1, r0, r1, lsr #27
ldr r3, [r5]
mov r2, r1, asr #5
mov r1, r0, lsr #0x1f
add r2, r3, r2, lsl #2
rsb r0, r1, r0, lsl #27
ldr r2, [r2, #0x44]
add r0, r1, r0, ror #27
tst r2, r6, lsl r0
beq _020501B4
mov r0, r7
bl RecruitSpecialPokemonLog
_020501B4:
add sb, sb, #1
cmp sb, sl
blt _02050164
ldr r0, _02050230 ; =ADVENTURE_LOG_PTR
mov r2, #1
ldr r1, [r0]
ldr r3, _02050240 ; =0x000001ED
mov r0, r2
_020501D4:
mov r5, r2, asr #4
add r5, r2, r5, lsr #27
mov sb, r5, asr #5
mov r6, r2, lsr #0x1f
rsb r5, r6, r2, lsl #27
add r7, r1, sb, lsl #2
add r6, r6, r5, ror #27
add r5, r1, sb, lsl #2
ldr r7, [r7, #0x44]
ldr r5, [r5, #0xd8]
tst r7, r0, lsl r6
addne r8, r8, #1
tst r5, r0, lsl r6
add r2, r2, #1
addne r4, r4, #1
cmp r2, r3
blt _020501D4
ldr r0, _02050230 ; =ADVENTURE_LOG_PTR
str r8, [r1, #0x2c]
ldr r0, [r0]
str r4, [r0, #0x30]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0205022C: .word TEAM_MEMBER_TABLE_PTR
_02050230: .word ADVENTURE_LOG_PTR
_02050234: .word 0x0000022B
_02050238: .word 0x0000021F
_0205023C: .word 0x00000483
_02050240: .word 0x000001ED
arm_func_end ComputeSpecialCounters
arm_func_start RecruitSpecialPokemonLog
RecruitSpecialPokemonLog: ; 0x02050244
stmdb sp!, {r3, lr}
cmp r0, #0x258
subge r0, r0, #0x258
movge r0, r0, lsl #0x10
ldr r2, _020502AC ; =ADVENTURE_LOG_ENCOUNTERS_MONSTER_IDS
mov r3, #0
movge r0, r0, asr #0x10
_02050260:
mov r1, r3, lsl #1
ldrsh r1, [r2, r1]
cmp r1, #0
ldmeqia sp!, {r3, pc}
cmp r1, #0xc9
bne _0205028C
cmp r0, #0xc9
blt _02050294
cmp r0, #0xe4
ble _0205029C
b _02050294
_0205028C:
cmp r1, r0
beq _0205029C
_02050294:
add r3, r3, #1
b _02050260
_0205029C:
add r0, r3, #0x24
and r0, r0, #0xff
bl SetAdventureLogCompleted
ldmia sp!, {r3, pc}
.align 2, 0
_020502AC: .word ADVENTURE_LOG_ENCOUNTERS_MONSTER_IDS
arm_func_end RecruitSpecialPokemonLog
arm_func_start IncrementNbFainted
IncrementNbFainted: ; 0x020502B0
ldr r1, _020502E4 ; =ADVENTURE_LOG_PTR
ldr r0, _020502E8 ; =0x000F423F
ldr r2, [r1]
ldr r1, [r2, #0x24]
cmp r1, r0
addlt r0, r1, #1
strlt r0, [r2, #0x24]
ldr r0, _020502E4 ; =ADVENTURE_LOG_PTR
ldr r1, [r0]
ldr r0, [r1]
orr r0, r0, #0x20
str r0, [r1]
bx lr
.align 2, 0
_020502E4: .word ADVENTURE_LOG_PTR
_020502E8: .word 0x000F423F
arm_func_end IncrementNbFainted
arm_func_start GetNbFainted
GetNbFainted: ; 0x020502EC
ldr r0, _020502FC ; =ADVENTURE_LOG_PTR
ldr r0, [r0]
ldr r0, [r0, #0x24]
bx lr
.align 2, 0
_020502FC: .word ADVENTURE_LOG_PTR
arm_func_end GetNbFainted
arm_func_start SetItemAcquired
SetItemAcquired: ; 0x02050300
stmdb sp!, {r4, r5, r6, lr}
ldrsh r0, [r0, #4]
bl NormalizeTreasureBox
mov r4, r0
mov r0, r4, lsl #0x10
mov r0, r0, asr #0x10
bl IsItemValidVeneer
cmp r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
cmp r4, #0x3b
blt _02050380
cmp r4, #0x41
bgt _02050380
sub r0, r4, #0x21
and r0, r0, #0xff
mov r5, #1
bl SetAdventureLogCompleted
mov r6, #0x1a
b _02050364
_0205034C:
and r0, r6, #0xff
bl GetAdventureLogCompleted
cmp r0, #0
moveq r5, #0
beq _0205036C
add r6, r6, #1
_02050364:
cmp r6, #0x20
ble _0205034C
_0205036C:
cmp r5, #0
beq _02050380
mov r0, #0x15
mov r1, #1
bl sub_0204CB2C
_02050380:
ldr r3, _020503C8 ; =ADVENTURE_LOG_PTR
mov r0, r4, asr #4
ldr ip, [r3]
add r0, r4, r0, lsr #27
mov r2, r4, lsr #0x1f
rsb r1, r2, r4, lsl #27
add lr, ip, #0x1b0
mov ip, r0, asr #5
ldr r4, [lr, ip, lsl #2]
add r0, r2, r1, ror #27
mov r1, #1
orr r0, r4, r1, lsl r0
str r0, [lr, ip, lsl #2]
ldr r1, [r3]
ldr r0, [r1]
orr r0, r0, #8
str r0, [r1]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020503C8: .word ADVENTURE_LOG_PTR
arm_func_end SetItemAcquired
arm_func_start GetNbItemAcquired
GetNbItemAcquired: ; 0x020503CC
stmdb sp!, {r4, lr}
ldr r1, _0205041C ; =ADVENTURE_LOG_PTR
mov r0, #0
ldr r4, [r1]
mov lr, r0
mov ip, #1
_020503E4:
mov r1, lr, asr #4
add r1, lr, r1, lsr #27
mov r1, r1, asr #5
add r3, r4, r1, lsl #2
mov r2, lr, lsr #0x1f
rsb r1, r2, lr, lsl #27
ldr r3, [r3, #0x1b0]
add r1, r2, r1, ror #27
tst r3, ip, lsl r1
add lr, lr, #1
addne r0, r0, #1
cmp lr, #0x580
blt _020503E4
ldmia sp!, {r4, pc}
.align 2, 0
_0205041C: .word ADVENTURE_LOG_PTR
arm_func_end GetNbItemAcquired
arm_func_start SetChallengeLetterCleared
SetChallengeLetterCleared: ; 0x02050420
stmdb sp!, {r4, lr}
ldr r3, _020504A0 ; =ADVENTURE_LOG_PTR
mov r2, r0, lsr #0x1f
ldr ip, [r3]
rsb r1, r2, r0, lsl #27
mov lr, r0, lsr #5
add r4, ip, #0x260
ldr ip, [r4, lr, lsl #2]
add r1, r2, r1, ror #27
mov r0, #1
orr r1, ip, r0, lsl r1
str r1, [r4, lr, lsl #2]
ldr r4, [r3]
mov ip, r0
b _02050488
_0205045C:
mov r1, r0, asr #4
add r1, r0, r1, lsr #27
mov r1, r1, asr #5
add r3, r4, r1, lsl #2
mov r2, r0, lsr #0x1f
rsb r1, r2, r0, lsl #27
ldr r3, [r3, #0x260]
add r1, r2, r1, ror #27
tst r3, ip, lsl r1
ldmeqia sp!, {r4, pc}
add r0, r0, #1
_02050488:
cmp r0, #6
blt _0205045C
ldr r0, [r4, #4]
orr r0, r0, #4
str r0, [r4, #4]
ldmia sp!, {r4, pc}
.align 2, 0
_020504A0: .word ADVENTURE_LOG_PTR
arm_func_end SetChallengeLetterCleared
arm_func_start GetSentryDutyGamePoints
GetSentryDutyGamePoints: ; 0x020504A4
ldr r1, _020504B8 ; =ADVENTURE_LOG_PTR
ldr r1, [r1]
add r0, r1, r0, lsl #2
ldr r0, [r0, #0x264]
bx lr
.align 2, 0
_020504B8: .word ADVENTURE_LOG_PTR
arm_func_end GetSentryDutyGamePoints
arm_func_start SetSentryDutyGamePoints
SetSentryDutyGamePoints: ; 0x020504BC
stmdb sp!, {r3, lr}
ldr r1, _02050548 ; =ADVENTURE_LOG_PTR
mov lr, #0
ldr r2, [r1]
b _020504EC
_020504D0:
add r1, r2, lr, lsl #2
ldr r1, [r1, #0x264]
cmp r0, r1
bhi _020504F4
add r1, lr, #1
mov r1, r1, lsl #0x10
mov lr, r1, asr #0x10
_020504EC:
cmp lr, #5
blt _020504D0
_020504F4:
cmp lr, #5
mvnge r0, #0
ldmgeia sp!, {r3, pc}
mov ip, #4
ldr r2, _02050548 ; =ADVENTURE_LOG_PTR
b _02050528
_0205050C:
ldr r3, [r2]
sub r1, ip, #1
add ip, r3, ip, lsl #2
ldr r3, [ip, #0x260]
mov r1, r1, lsl #0x10
str r3, [ip, #0x264]
mov ip, r1, asr #0x10
_02050528:
cmp ip, lr
bgt _0205050C
ldr r1, _02050548 ; =ADVENTURE_LOG_PTR
ldr r1, [r1]
add r1, r1, lr, lsl #2
str r0, [r1, #0x264]
mov r0, lr
ldmia sp!, {r3, pc}
.align 2, 0
_02050548: .word ADVENTURE_LOG_PTR
arm_func_end SetSentryDutyGamePoints
arm_func_start CopyLogTo
CopyLogTo: ; 0x0205054C
stmdb sp!, {r4, lr}
mov r4, r0
bl ComputeSpecialCounters
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x14
add r1, r1, #0x10
bl CopyBitsTo
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x14
add r1, r1, #0x14
bl CopyBitsTo
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x14
add r1, r1, #0x18
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x80
ldr r1, [r1]
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0xe
ldr r1, [r1]
add r1, r1, #0x2c
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0xe
ldr r1, [r1]
add r1, r1, #0x30
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #9
ldr r1, [r1]
add r1, r1, #0x34
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x28
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x24
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x1c
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x38
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x3c
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x40
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x4a0
ldr r1, [r1]
add r1, r1, #0x44
bl CopyBitsTo
mov r0, r4
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r2, #0x4a0
ldr r1, [r1]
add r1, r1, #0xd8
bl CopyBitsTo
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x220
add r1, r1, #0x16c
bl CopyBitsTo
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x580
add r1, r1, #0x1b0
bl CopyBitsTo
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x20
add r1, r1, #0x260
bl CopyBitsTo
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0xa0
add r1, r1, #0x264
bl CopyBitsTo
ldr r1, _02050734 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
add r1, r1, #0x278
bl sub_020515C4
ldmia sp!, {r4, pc}
.align 2, 0
_02050734: .word ADVENTURE_LOG_PTR
arm_func_end CopyLogTo
arm_func_start CopyLogFrom
CopyLogFrom: ; 0x02050738
stmdb sp!, {r4, lr}
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
mov r4, r0
add r1, r1, #0x10
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x14
add r1, r1, #0x14
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x14
add r1, r1, #0x18
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x80
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0xe
add r1, r1, #0x2c
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0xe
ldr r1, [r1]
add r1, r1, #0x30
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #9
ldr r1, [r1]
add r1, r1, #0x34
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x28
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x24
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x1c
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x38
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x3c
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x14
ldr r1, [r1]
add r1, r1, #0x40
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x4a0
ldr r1, [r1]
add r1, r1, #0x44
bl CopyBitsFrom
mov r0, r4
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r2, #0x4a0
ldr r1, [r1]
add r1, r1, #0xd8
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x220
add r1, r1, #0x16c
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x580
add r1, r1, #0x1b0
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0x20
add r1, r1, #0x260
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
mov r2, #0xa0
add r1, r1, #0x264
bl CopyBitsFrom
ldr r1, _02050918 ; =ADVENTURE_LOG_PTR
mov r0, r4
ldr r1, [r1]
add r1, r1, #0x278
bl Copy16BitsFrom
ldmia sp!, {r4, pc}
.align 2, 0
_02050918: .word ADVENTURE_LOG_PTR
arm_func_end CopyLogFrom
arm_func_start GetAbilityString
GetAbilityString: ; 0x0205091C
#if defined(EUROPE)
add r1, r1, #0x5e0
add r1, r1, #0x3000
#elif defined(JAPAN)
add r1, r1, #0x81
add r1, r1, #0x4800
#else
add r1, r1, #0xde
add r1, r1, #0x3500
#endif
mov r1, r1, lsl #0x10
ldr ip, _02050938 ; =CopyNStringFromId
mov r1, r1, lsr #0x10
mov r2, #0x50
bx ip
.align 2, 0
_02050938: .word CopyNStringFromId
arm_func_end GetAbilityString
arm_func_start GetAbilityDescStringId
GetAbilityDescStringId: ; 0x0205093C
#if defined(EUROPE)
add r0, r0, #0x25c
add r0, r0, #0x3400
#elif defined(JAPAN)
add r0, r0, #0xfd
add r0, r0, #0x4800
#else
add r0, r0, #0x5a
add r0, r0, #0x3600
#endif
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bx lr
arm_func_end GetAbilityDescStringId
arm_func_start GetTypeStringId
GetTypeStringId: ; 0x02050950
#if defined(EUROPE)
add r0, r0, #0xcd
add r0, r0, #0x3500
#elif defined(JAPAN)
add r0, r0, #0x6e
add r0, r0, #0x4800
#else
add r0, r0, #0xcb
add r0, r0, #0x3500
#endif
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bx lr
arm_func_end GetTypeStringId
arm_func_start GetConversion2ConvertToType
GetConversion2ConvertToType: ; 0x02050964
ldr r1, _02050970 ; =_020A192C
ldrb r0, [r1, r0]
bx lr
.align 2, 0
_02050970: .word _020A192C
arm_func_end GetConversion2ConvertToType
arm_func_start sub_02050974
sub_02050974: ; 0x02050974
str r1, [r0]
mov r3, #0
str r3, [r0, #8]
str r3, [r0, #0xc]
add r1, r1, r2
str r1, [r0, #4]
bx lr
arm_func_end sub_02050974
arm_func_start sub_02050990
sub_02050990: ; 0x02050990
str r1, [r0]
mov r3, #0
str r3, [r0, #8]
str r3, [r0, #0xc]
add r3, r1, r2
str r3, [r0, #4]
mov r0, r1
ldr ip, _020509B8 ; =MemZero
mov r1, r2
bx ip
.align 2, 0
_020509B8: .word MemZero
arm_func_end sub_02050990
arm_func_start sub_020509BC
sub_020509BC: ; 0x020509BC
bx lr
arm_func_end sub_020509BC
arm_func_start CopyBitsTo
CopyBitsTo: ; 0x020509C0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov ip, #0
mov r3, #1
mov r5, ip
mov r4, ip
b _02050A34
_020509D8:
ldrb r6, [r1]
sub r2, r2, #1
tst r6, r3, lsl ip
ldrne r7, [r0]
ldrne lr, [r0, #8]
ldrneb r6, [r7]
add ip, ip, #1
orrne r6, r6, r3, lsl lr
strneb r6, [r7]
ldr lr, [r0, #8]
cmp ip, #8
add lr, lr, #1
moveq ip, r5
addeq r1, r1, #1
str lr, [r0, #8]
cmp lr, #8
ldreq lr, [r0]
addeq lr, lr, #1
streq lr, [r0]
streq r4, [r0, #8]
ldr lr, [r0, #0xc]
add lr, lr, #1
str lr, [r0, #0xc]
_02050A34:
cmp r2, #0
bne _020509D8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end CopyBitsTo
arm_func_start CopyBitsFrom
CopyBitsFrom: ; 0x02050A40
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov lr, #0
mov ip, lr
mov r3, #1
mov r6, lr
mov r5, lr
b _02050AC0
_02050A5C:
cmp lr, #0
streqb ip, [r1]
ldr r7, [r0]
ldr r4, [r0, #8]
ldrb r7, [r7]
sub r2, r2, #1
tst r7, r3, lsl r4
ldrneb r4, [r1]
orrne r4, r4, r3, lsl lr
strneb r4, [r1]
ldr r4, [r0, #8]
add lr, lr, #1
cmp lr, #8
add r4, r4, #1
moveq lr, r6
addeq r1, r1, #1
str r4, [r0, #8]
cmp r4, #8
ldreq r4, [r0]
addeq r4, r4, #1
streq r4, [r0]
streq r5, [r0, #8]
ldr r4, [r0, #0xc]
add r4, r4, #1
str r4, [r0, #0xc]
_02050AC0:
cmp r2, #0
bne _02050A5C
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end CopyBitsFrom
arm_func_start StoreDefaultTeamData
StoreDefaultTeamData: ; 0x02050ACC
stmdb sp!, {lr}
sub sp, sp, #0x14
#ifdef JAPAN
ldr r1, _02050E54 ; =0x000004C5
add r0, sp, #0
#else
add r0, sp, #0
mov r1, #0x234
#endif
bl GetStringFromFileVeneer
ldr r0, _02050B08 ; =TEAM_NAME
add r1, sp, #0
#ifdef JAPAN
mov r2, #5
#else
mov r2, #0xa
#endif
bl StrncpyName
ldr r0, _02050B0C ; =TEAM_NAME
mov r1, #0
#ifdef JAPAN
str r1, [r0, #8]
strb r1, [r0, #0xc]
#else
str r1, [r0, #0xc]
strb r1, [r0, #0x10]
#endif
add sp, sp, #0x14
ldmia sp!, {pc}
.align 2, 0
#ifdef JAPAN
_02050E54: .word 0x000004C5
#endif
_02050B08: .word TEAM_NAME
_02050B0C: .word TEAM_NAME
arm_func_end StoreDefaultTeamData
arm_func_start GetMainTeamNameWithCheck
GetMainTeamNameWithCheck: ; 0x02050B10
stmdb sp!, {r4, lr}
sub sp, sp, #0x40
mov r4, r0
mov r0, #1
bl GetPerformanceFlagWithChecks
cmp r0, #0
ldrne r0, _02050B70 ; =TEAM_NAME
ldrneb r0, [r0]
cmpne r0, #0
beq _02050B4C
ldr r1, _02050B74 ; =TEAM_NAME
mov r0, r4
#ifdef JAPAN
mov r2, #5
#else
mov r2, #0xa
#endif
bl StrncpySimpleNoPad
b _02050B68
_02050B4C:
ldr r1, _02050B78 ; =0x00000237
add r0, sp, #0
bl GetStringFromFileVeneer
add r1, sp, #0
mov r0, r4
#ifdef JAPAN
mov r2, #5
#else
mov r2, #0xa
#endif
bl StrncpyName
_02050B68:
add sp, sp, #0x40
ldmia sp!, {r4, pc}
.align 2, 0
_02050B70: .word TEAM_NAME
_02050B74: .word TEAM_NAME
#ifdef JAPAN
_02050B78: .word 0x000004C8
#else
_02050B78: .word 0x00000237
#endif
arm_func_end GetMainTeamNameWithCheck
arm_func_start GetMainTeamName
GetMainTeamName: ; 0x02050B7C
ldr ip, _02050B8C ; =StrncpySimpleNoPadSafe
ldr r1, _02050B90 ; =TEAM_NAME
#ifdef JAPAN
mov r2, #5
#else
mov r2, #0xa
#endif
bx ip
.align 2, 0
_02050B8C: .word StrncpySimpleNoPadSafe
_02050B90: .word TEAM_NAME
arm_func_end GetMainTeamName
arm_func_start SetMainTeamName
SetMainTeamName: ; 0x02050B94
ldr r1, _02050BB4 ; =TEAM_NAME
mov r3, #0
_02050B9C:
ldrb r2, [r0], #1
strb r2, [r1, r3]
add r3, r3, #1
#ifdef JAPAN
cmp r3, #5
#else
cmp r3, #0xa
#endif
blt _02050B9C
bx lr
.align 2, 0
_02050BB4: .word TEAM_NAME
arm_func_end SetMainTeamName
arm_func_start GetRankupPoints
GetRankupPoints: ; 0x02050BB8
stmdb sp!, {r4, lr}
bl GetRank
mov r4, r0
mov r0, #0x16
bl GetPerformanceFlagWithChecks
cmp r0, #0
beq _02050BE4
cmp r4, #0xc
bne _02050BF0
mov r0, #0
ldmia sp!, {r4, pc}
_02050BE4:
cmp r4, #8
movhs r0, #0
ldmhsia sp!, {r4, pc}
_02050BF0:
mov r0, r4
bl GetRankUpEntry
ldr r1, _02050C0C ; =TEAM_NAME
ldr r2, [r0, #4]
#ifdef JAPAN
ldr r0, [r1, #8]
#else
ldr r0, [r1, #0xc]
#endif
sub r0, r2, r0
ldmia sp!, {r4, pc}
.align 2, 0
_02050C0C: .word TEAM_NAME
arm_func_end GetRankupPoints
arm_func_start sub_02050C10
sub_02050C10: ; 0x02050C10
#ifdef JAPAN
#define SUB_02050C10_OFFSET #8
#else
#define SUB_02050C10_OFFSET #0xc
#endif
stmdb sp!, {r3, lr}
ldr r1, _02050C6C ; =TEAM_NAME
ldr r2, [r1, SUB_02050C10_OFFSET]
add r2, r2, r0
mov r0, #0x16
str r2, [r1, SUB_02050C10_OFFSET]
bl GetPerformanceFlagWithChecks
cmp r0, #0
beq _02050C4C
ldr r0, _02050C6C ; =TEAM_NAME
ldr r1, _02050C70 ; =0x05F5E0FF
ldr r2, [r0, SUB_02050C10_OFFSET]
cmp r2, r1
strgt r1, [r0, SUB_02050C10_OFFSET]
ldmia sp!, {r3, pc}
_02050C4C:
mov r0, #7
bl GetRankUpEntry
ldr r1, _02050C6C ; =TEAM_NAME
ldr r2, [r0, #4]
ldr r0, [r1, SUB_02050C10_OFFSET]
cmp r0, r2
strgt r2, [r1, SUB_02050C10_OFFSET]
ldmia sp!, {r3, pc}
.align 2, 0
_02050C6C: .word TEAM_NAME
_02050C70: .word 0x05F5E0FF
arm_func_end sub_02050C10
arm_func_start GetRank
GetRank: ; 0x02050C74
stmdb sp!, {r3, r4, r5, lr}
mov r5, #0
ldr r4, _02050CCC ; =TEAM_NAME
b _02050CA4
_02050C84:
mov r0, r5
bl GetRankUpEntry
#ifdef JAPAN
ldr r1, [r4, #8]
#else
ldr r1, [r4, #0xc]
#endif
ldr r0, [r0, #4]
cmp r1, r0
blt _02050CAC
add r0, r5, #1
and r5, r0, #0xff
_02050CA4:
cmp r5, #0xc
blo _02050C84
_02050CAC:
mov r0, #0x16
bl GetPerformanceFlagWithChecks
cmp r0, #0
bne _02050CC4
cmp r5, #8
movhi r5, #8
_02050CC4:
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02050CCC: .word TEAM_NAME
arm_func_end GetRank
arm_func_start sub_02050CD0
sub_02050CD0: ; 0x02050CD0
stmdb sp!, {r3, lr}
bl GetRank
cmp r0, #8
movhi r0, #8
ldmia sp!, {r3, pc}
arm_func_end sub_02050CD0
arm_func_start GetRankStorageSize
GetRankStorageSize: ; 0x02050CE4
stmdb sp!, {r3, lr}
bl GetRank
bl GetRankUpEntry
ldr r0, [r0, #8]
ldmia sp!, {r3, pc}
arm_func_end GetRankStorageSize
arm_func_start sub_02050CF8
sub_02050CF8: ; 0x02050CF8
stmdb sp!, {r3, lr}
sub sp, sp, #0x10
mov r3, r0
mov r2, r1
add r0, sp, #0
mov r1, r3
bl sub_02050990
ldr r1, _02050D70 ; =TEAM_NAME
add r0, sp, #0
#ifdef JAPAN
mov r2, #0x28
#else
mov r2, #0x50
#endif
bl CopyBitsTo
ldr r1, _02050D74 ; =_022AB924
add r0, sp, #0
mov r2, #0x20
bl CopyBitsTo
mov r0, #1
bl GetPerformanceFlagWithChecks
ldr r1, _02050D78 ; =TEAM_NAME
tst r0, #0xff
#ifdef JAPAN
strb r0, [r1, #0xc]
#else
strb r0, [r1, #0x10]
#endif
ldrne r1, _02050D7C ; =ARM9_UNKNOWN_DATA__NA_209E6BC
add r0, sp, #0
ldreq r1, _02050D80 ; =_0209E6BD
mov r2, #1
bl CopyBitsTo
add r0, sp, #0
bl sub_020509BC
ldr r0, [sp, #8]
add sp, sp, #0x10
ldmia sp!, {r3, pc}
.align 2, 0
_02050D70: .word TEAM_NAME
_02050D74: .word _022AB924
_02050D78: .word TEAM_NAME
_02050D7C: .word ARM9_UNKNOWN_DATA__NA_209E6BC
_02050D80: .word _0209E6BD
arm_func_end sub_02050CF8
arm_func_start sub_02050D84
sub_02050D84: ; 0x02050D84
stmdb sp!, {lr}
sub sp, sp, #0x14
mov r3, r0
mov r2, r1
add r0, sp, #4
mov r1, r3
bl sub_02050974
ldr r1, _02050DFC ; =TEAM_NAME
add r0, sp, #4
#ifdef JAPAN
mov r2, #0x28
#else
mov r2, #0x50
#endif
bl CopyBitsFrom
ldr r1, _02050E00 ; =_022AB924
add r0, sp, #4
mov r2, #0x20
bl CopyBitsFrom
add r0, sp, #4
add r1, sp, #0
mov r2, #1
bl CopyBitsFrom
ldrb r0, [sp]
ldr r1, _02050E04 ; =TEAM_NAME
tst r0, #1
movne r2, #1
moveq r2, #0
add r0, sp, #4
#ifdef JAPAN
strb r2, [r1, #0xc]
#else
strb r2, [r1, #0x10]
#endif
bl sub_020509BC
ldr r0, [sp, #0xc]
add sp, sp, #0x14
ldmia sp!, {pc}
.align 2, 0
_02050DFC: .word TEAM_NAME
_02050E00: .word _022AB924
_02050E04: .word TEAM_NAME
arm_func_end sub_02050D84
arm_func_start ResetPlayTimer
ResetPlayTimer: ; 0x02050E08
mov r1, #0
strb r1, [r0, #4]
str r1, [r0]
bx lr
arm_func_end ResetPlayTimer
arm_func_start PlayTimerTick
PlayTimerTick: ; 0x02050E18
ldrb r1, [r0, #4]
add r2, r1, #1
and r1, r2, #0xff
strb r2, [r0, #4]
cmp r1, #0x3c
bxlo lr
mov r1, #0
strb r1, [r0, #4]
ldr r2, [r0]
ldr r1, _02050E50 ; =0x022550FF
cmp r2, r1
addlo r1, r2, #1
strlo r1, [r0]
bx lr
.align 2, 0
_02050E50: .word 0x022550FF
arm_func_end PlayTimerTick
arm_func_start GetPlayTimeSeconds
GetPlayTimeSeconds: ; 0x02050E54
ldr r0, [r0]
bx lr
arm_func_end GetPlayTimeSeconds
arm_func_start sub_02050E5C
sub_02050E5C: ; 0x02050E5C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
mov r0, r4
add r1, r5, #4
mov r2, #6
bl CopyBitsTo
mov r0, r4
mov r1, r5
mov r2, #0x20
bl CopyBitsTo
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02050E5C
arm_func_start sub_02050E8C
sub_02050E8C: ; 0x02050E8C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
mov r0, r4
add r1, r5, #4
mov r2, #6
bl CopyBitsFrom
mov r0, r4
mov r1, r5
mov r2, #0x20
bl CopyBitsFrom
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02050E8C
arm_func_start sub_02050EBC
sub_02050EBC: ; 0x02050EBC
stmdb sp!, {r0, r1, r2, r3}
ldrsh r3, [sp, #2]
ldrsh r0, [sp, #6]
ldrsh r2, [sp]
ldrsh r1, [sp, #4]
add r0, r3, r0
strh r0, [sp, #2]
ldrsh r0, [sp, #2]
add r1, r2, r1
strh r1, [sp]
cmp r0, #0x3e8
subge r0, r0, #0x3e8
ldrgesh r1, [sp]
strgeh r0, [sp, #2]
addge r0, r1, #1
strgeh r0, [sp]
ldrh r1, [sp, #2]
ldrh r0, [sp]
orr r0, r0, r1, lsl #16
add sp, sp, #0x10
bx lr
arm_func_end sub_02050EBC
arm_func_start SubFixedPoint
SubFixedPoint: ; 0x02050F10
stmdb sp!, {r0, r1, r2, r3}
ldrsh r3, [sp, #2]
ldrsh r0, [sp, #6]
ldrsh r2, [sp]
ldrsh r1, [sp, #4]
sub r0, r3, r0
strh r0, [sp, #2]
ldrsh r0, [sp, #2]
sub r1, r2, r1
strh r1, [sp]
cmp r0, #0
addlt r0, r0, #0x3e8
ldrltsh r1, [sp]
strlth r0, [sp, #2]
sublt r0, r1, #1
strlth r0, [sp]
ldrsh r0, [sp]
cmp r0, #0
movlt r0, #0
strlth r0, [sp, #2]
strlth r0, [sp]
ldrh r1, [sp, #2]
ldrh r0, [sp]
orr r0, r0, r1, lsl #16
add sp, sp, #0x10
bx lr
arm_func_end SubFixedPoint
arm_func_start sub_02050F78
sub_02050F78: ; 0x02050F78
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3}
sub sp, sp, #4
ldrsh r1, [sp, #8]
ldrsh r0, [sp, #0xc]
cmp r1, r0
ldrgth r1, [sp, #0xe]
ldrgth r0, [sp, #0xc]
orrgt r0, r0, r1, lsl #16
bgt _02050FE8
ldrlth r1, [sp, #0xa]
ldrlth r0, [sp, #8]
orrlt r0, r0, r1, lsl #16
blt _02050FE8
ldrsh r1, [sp, #0xa]
ldrsh r0, [sp, #0xe]
cmp r1, r0
ldrgth r1, [sp, #0xc]
ldrgth r0, [sp, #0xe]
strgth r1, [sp]
strgth r0, [sp, #2]
ldrleh r1, [sp, #8]
ldrleh r0, [sp, #0xa]
strleh r1, [sp]
strleh r0, [sp, #2]
ldrh r1, [sp, #2]
ldrh r0, [sp]
orr r0, r0, r1, lsl #16
_02050FE8:
add sp, sp, #4
ldmia sp!, {r3}
add sp, sp, #0x10
bx lr
arm_func_end sub_02050F78
arm_func_start sub_02050FF8
sub_02050FF8: ; 0x02050FF8
stmdb sp!, {r3}
sub sp, sp, #4
strh r0, [sp]
ldrh r0, [sp]
mov r1, #0
strh r1, [sp, #2]
orr r0, r0, r1, lsl #16
add sp, sp, #4
ldmia sp!, {r3}
bx lr
arm_func_end sub_02050FF8
arm_func_start BinToDecFixedPoint
BinToDecFixedPoint: ; 0x02051020
stmdb sp!, {r3}
sub sp, sp, #4
ldr r2, [r0, #4]
mov r1, #0x3e8
mov r0, r2, lsl #0x10
mov r0, r0, lsr #0x10
mul r1, r0, r1
mov r2, r2, lsr #0x10
mov r0, r1, lsr #0x10
strh r2, [sp]
strh r0, [sp, #2]
ldrh r1, [sp, #2]
ldrh r0, [sp]
orr r0, r0, r1, lsl #16
add sp, sp, #4
ldmia sp!, {r3}
bx lr
arm_func_end BinToDecFixedPoint