pmd-sky/asm/main_0203C774.s
2025-12-18 13:09:43 +00:00

18070 lines
334 KiB
ArmAsm

.include "asm/macros.inc"
.include "main_0203C774.inc"
.text
arm_func_start sub_0203C774
sub_0203C774: ; 0x0203C774
cmp r0, #0
movne r0, #7
moveq r0, #8
bx lr
arm_func_end sub_0203C774
arm_func_start sub_0203C784
sub_0203C784: ; 0x0203C784
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0x54
mov r4, r0
bl sub_02027B1C
ldr r0, _0203C7DC ; =_020AFE5C
ldr r1, _0203C7E0 ; =_0209C60C
ldr r0, [r0, #0xc]
mov r0, r0, lsl #1
ldrh r0, [r1, r0]
bl StringFromId
str r0, [sp, #0x3c]
add ip, sp, #4
#ifdef JAPAN
ldr r3, _0203CBC8 ; =0x000023B4
#endif
mov r0, r4
mov r1, #0xa
mov r2, #2
#ifndef JAPAN
mov r3, #0x30c
#endif
str ip, [sp]
bl sub_020262E0
mov r0, r4
bl UpdateWindow
add sp, sp, #0x54
ldmia sp!, {r3, r4, pc}
.align 2, 0
_0203C7DC: .word _020AFE5C
_0203C7E0: .word _0209C60C
#ifdef JAPAN
_0203CBC8: .word 0x000023B4
#endif
arm_func_end sub_0203C784
arm_func_start sub_0203C7E4
sub_0203C7E4: ; 0x0203C7E4
stmdb sp!, {r4, lr}
ldr r1, _0203C870 ; =_020AFE70
mov r4, r0
ldr r0, [r1]
cmp r0, #0
bne _0203C810
mov r0, #0x10
mov r1, #8
bl MemAlloc
ldr r1, _0203C870 ; =_020AFE70
str r0, [r1]
_0203C810:
ldr r1, _0203C870 ; =_020AFE70
mvn r3, #0
ldr r2, [r1]
mov r0, r4
strh r3, [r2, #6]
ldr r1, [r1]
strh r3, [r1, #4]
bl sub_0203C9A0
ldr r0, _0203C870 ; =_020AFE70
mvn r2, #1
ldr r1, [r0]
strb r2, [r1]
ldr r1, [r0]
strb r2, [r1, #1]
ldr r0, [r0]
strb r2, [r0, #2]
bl sub_0203C984
ldr r0, _0203C870 ; =_020AFE70
mov r2, #0
ldr r1, [r0]
strb r2, [r1, #0xa]
ldr r0, [r0]
str r2, [r0, #0xc]
ldmia sp!, {r4, pc}
.align 2, 0
_0203C870: .word _020AFE70
arm_func_end sub_0203C7E4
arm_func_start sub_0203C874
sub_0203C874: ; 0x0203C874
ldr r0, _0203C8DC ; =_020AFE70
mov r2, #1
ldr r1, [r0]
strb r2, [r1, #0xa]
ldr r1, [r0]
ldr r0, [r1, #0xc]
cmp r0, #4
addls pc, pc, r0, lsl #2
bx lr
_0203C898: ; jump table
b _0203C8AC ; case 0
b _0203C8B8 ; case 1
b _0203C8C4 ; case 2
bx lr ; case 3
b _0203C8D0 ; case 4
_0203C8AC:
mov r0, #7
str r0, [r1, #0xc]
bx lr
_0203C8B8:
mov r0, #7
str r0, [r1, #0xc]
bx lr
_0203C8C4:
mov r0, #7
str r0, [r1, #0xc]
bx lr
_0203C8D0:
mov r0, #5
str r0, [r1, #0xc]
bx lr
.align 2, 0
_0203C8DC: .word _020AFE70
arm_func_end sub_0203C874
arm_func_start sub_0203C8E0
sub_0203C8E0: ; 0x0203C8E0
ldr r0, _0203C90C ; =_020AFE70
ldr r0, [r0]
cmp r0, #0
moveq r0, #0
bxeq lr
ldr r0, [r0, #0xc]
cmp r0, #0xa
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_0203C90C: .word _020AFE70
arm_func_end sub_0203C8E0
arm_func_start sub_0203C910
sub_0203C910: ; 0x0203C910
ldr r0, _0203C93C ; =_020AFE70
ldr r0, [r0]
cmp r0, #0
moveq r0, #0
bxeq lr
ldr r0, [r0, #0xc]
cmp r0, #4
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_0203C93C: .word _020AFE70
arm_func_end sub_0203C910
arm_func_start sub_0203C940
sub_0203C940: ; 0x0203C940
stmdb sp!, {r3, lr}
ldr r0, _0203C980 ; =_020AFE70
ldr r0, [r0]
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r3, pc}
ldr r1, [r0, #0xc]
cmp r1, #0xa
movne r0, #0
ldmneia sp!, {r3, pc}
bl MemFree
ldr r0, _0203C980 ; =_020AFE70
mov r1, #0
str r1, [r0]
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_0203C980: .word _020AFE70
arm_func_end sub_0203C940
arm_func_start sub_0203C984
sub_0203C984: ; 0x0203C984
ldr r0, _0203C99C ; =_020AFE70
ldr r1, [r0]
cmp r1, #0
movne r0, #0
strneh r0, [r1, #8]
bx lr
.align 2, 0
_0203C99C: .word _020AFE70
arm_func_end sub_0203C984
arm_func_start sub_0203C9A0
sub_0203C9A0: ; 0x0203C9A0
ldr r1, _0203C9C0 ; =_020AFE70
ldr r2, [r1]
ldrsh r1, [r2, #4]
cmp r0, r1
moveq r0, #0
strneh r0, [r2, #4]
movne r0, #1
bx lr
.align 2, 0
_0203C9C0: .word _020AFE70
arm_func_end sub_0203C9A0
arm_func_start sub_0203C9C4
sub_0203C9C4: ; 0x0203C9C4
ldr r0, _0203C9E0 ; =_020AFE70
mvn r2, #0
ldr r1, [r0]
strh r2, [r1, #6]
ldr r0, [r0]
strh r2, [r0, #4]
bx lr
.align 2, 0
_0203C9E0: .word _020AFE70
arm_func_end sub_0203C9C4
arm_func_start sub_0203C9E4
sub_0203C9E4: ; 0x0203C9E4
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x2c
ldr r0, _0203CA38 ; =_020AFE70
ldr r5, [r0]
cmp r5, #0
beq _0203CA30
ldr r4, _0203CA3C ; =_0209C7F4
add lr, sp, #0
mov ip, #2
_0203CA08:
ldmia r4!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _0203CA08
ldmia r4, {r0, r1, r2}
stmia lr, {r0, r1, r2}
ldr r1, [r5, #0xc]
add r0, sp, #0
ldr r0, [r0, r1, lsl #2]
blx r0
_0203CA30:
add sp, sp, #0x2c
ldmia sp!, {r4, r5, pc}
.align 2, 0
_0203CA38: .word _020AFE70
_0203CA3C: .word _0209C7F4
arm_func_end sub_0203C9E4
arm_func_start sub_0203CA40
sub_0203CA40: ; 0x0203CA40
stmdb sp!, {r3, lr}
bl ov11_0230D220
cmp r0, #0
ldmneia sp!, {r3, pc}
bl ov11_0230D92C
ldr r0, _0203CA68 ; =_020AFE70
mov r1, #1
ldr r0, [r0]
str r1, [r0, #0xc]
ldmia sp!, {r3, pc}
.align 2, 0
_0203CA68: .word _020AFE70
arm_func_end sub_0203CA40
arm_func_start sub_0203CA6C
sub_0203CA6C: ; 0x0203CA6C
stmdb sp!, {r3, lr}
bl ov11_0230D220
cmp r0, #0
ldreq r0, _0203CA8C ; =_020AFE70
moveq r1, #2
ldreq r0, [r0]
streq r1, [r0, #0xc]
ldmia sp!, {r3, pc}
.align 2, 0
_0203CA8C: .word _020AFE70
arm_func_end sub_0203CA6C
arm_func_start sub_0203CA90
sub_0203CA90: ; 0x0203CA90
stmdb sp!, {r3, lr}
bl ov11_0230D220
cmp r0, #0
ldmneia sp!, {r3, pc}
ldr r0, _0203CAC8 ; =_020AFE70
ldr r0, [r0]
ldrsh r0, [r0, #4]
bl sub_0203CCD8
bl ov11_02310C18
ldr r0, _0203CAC8 ; =_020AFE70
mov r1, #3
ldr r0, [r0]
str r1, [r0, #0xc]
ldmia sp!, {r3, pc}
.align 2, 0
_0203CAC8: .word _020AFE70
arm_func_end sub_0203CA90
arm_func_start sub_0203CACC
sub_0203CACC: ; 0x0203CACC
stmdb sp!, {r3, lr}
bl ov11_0230D220
cmp r0, #0
ldreq r0, _0203CAEC ; =_020AFE70
moveq r1, #4
ldreq r0, [r0]
streq r1, [r0, #0xc]
ldmia sp!, {r3, pc}
.align 2, 0
_0203CAEC: .word _020AFE70
arm_func_end sub_0203CACC
arm_func_start sub_0203CAF0
sub_0203CAF0: ; 0x0203CAF0
stmdb sp!, {r3, lr}
ldr r0, _0203CB54 ; =_020AFE70
ldr r2, [r0]
ldrb r1, [r2, #0xa]
cmp r1, #0
movne r0, #5
strne r0, [r2, #0xc]
ldmneia sp!, {r3, pc}
ldrh r1, [r2, #8]
add r1, r1, #1
strh r1, [r2, #8]
ldr r3, [r0]
ldrh r1, [r3, #8]
cmp r1, #0x1e
ldmloia sp!, {r3, pc}
ldrsh r2, [r3, #4]
ldrsh r1, [r3, #6]
cmp r2, r1
ldmeqia sp!, {r3, pc}
mov r1, #0
strh r1, [r3, #8]
ldr r0, [r0]
ldrsh r0, [r0, #4]
bl sub_0203CCD8
ldmia sp!, {r3, pc}
.align 2, 0
_0203CB54: .word _020AFE70
arm_func_end sub_0203CAF0
arm_func_start sub_0203CB58
sub_0203CB58: ; 0x0203CB58
stmdb sp!, {r3, lr}
bl ov11_0230D220
cmp r0, #0
ldmneia sp!, {r3, pc}
bl ov11_0230D92C
ldr r0, _0203CB80 ; =_020AFE70
mov r1, #6
ldr r0, [r0]
str r1, [r0, #0xc]
ldmia sp!, {r3, pc}
.align 2, 0
_0203CB80: .word _020AFE70
arm_func_end sub_0203CB58
arm_func_start sub_0203CB84
sub_0203CB84: ; 0x0203CB84
stmdb sp!, {r3, lr}
bl ov11_0230D220
cmp r0, #0
ldmneia sp!, {r3, pc}
ldr r0, _0203CC5C ; =_020AFE70
mvn r1, #1
ldr r0, [r0]
ldrsb r0, [r0]
cmp r0, r1
beq _0203CBD0
bl HidePortraitBox
ldr r0, _0203CC5C ; =_020AFE70
ldr r0, [r0]
ldrsb r0, [r0]
bl ClosePortraitBox
ldr r0, _0203CC5C ; =_020AFE70
mvn r1, #1
ldr r0, [r0]
strb r1, [r0]
_0203CBD0:
ldr r0, _0203CC5C ; =_020AFE70
mvn r1, #1
ldr r0, [r0]
ldrsb r0, [r0, #2]
cmp r0, r1
beq _0203CC0C
bl sub_0202F954
ldr r0, _0203CC5C ; =_020AFE70
ldr r0, [r0]
ldrsb r0, [r0, #2]
bl CloseTextBox
ldr r0, _0203CC5C ; =_020AFE70
mvn r1, #1
ldr r0, [r0]
strb r1, [r0, #2]
_0203CC0C:
ldr r0, _0203CC5C ; =_020AFE70
mvn r1, #1
ldr r0, [r0]
ldrsb r0, [r0, #1]
cmp r0, r1
beq _0203CC48
bl sub_0202F954
ldr r0, _0203CC5C ; =_020AFE70
ldr r0, [r0]
ldrsb r0, [r0, #1]
bl CloseTextBox
ldr r0, _0203CC5C ; =_020AFE70
mvn r1, #1
ldr r0, [r0]
strb r1, [r0, #1]
_0203CC48:
ldr r0, _0203CC5C ; =_020AFE70
mov r1, #0xa
ldr r0, [r0]
str r1, [r0, #0xc]
ldmia sp!, {r3, pc}
.align 2, 0
_0203CC5C: .word _020AFE70
arm_func_end sub_0203CB84
arm_func_start sub_0203CC60
sub_0203CC60: ; 0x0203CC60
stmdb sp!, {r3, lr}
bl ov11_0230D220
cmp r0, #0
ldreq r0, _0203CC80 ; =_020AFE70
moveq r1, #0xa
ldreq r0, [r0]
streq r1, [r0, #0xc]
ldmia sp!, {r3, pc}
.align 2, 0
_0203CC80: .word _020AFE70
arm_func_end sub_0203CC60
arm_func_start sub_0203CC84
sub_0203CC84: ; 0x0203CC84
stmdb sp!, {r3, lr}
bl ov11_0230D220
cmp r0, #0
ldmneia sp!, {r3, pc}
bl ov11_0230D000
ldr r0, _0203CCAC ; =_020AFE70
mov r1, #9
ldr r0, [r0]
str r1, [r0, #0xc]
ldmia sp!, {r3, pc}
.align 2, 0
_0203CCAC: .word _020AFE70
arm_func_end sub_0203CC84
arm_func_start sub_0203CCB0
sub_0203CCB0: ; 0x0203CCB0
stmdb sp!, {r3, lr}
bl ov11_0230D220
cmp r0, #0
ldreq r0, _0203CCD0 ; =_020AFE70
moveq r1, #0xa
ldreq r0, [r0]
streq r1, [r0, #0xc]
ldmia sp!, {r3, pc}
.align 2, 0
_0203CCD0: .word _020AFE70
arm_func_end sub_0203CCB0
arm_func_start sub_0203CCD4
sub_0203CCD4: ; 0x0203CCD4
bx lr
arm_func_end sub_0203CCD4
arm_func_start sub_0203CCD8
sub_0203CCD8: ; 0x0203CCD8
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r1, _0203CE00 ; =TEAM_MEMBER_TABLE_PTR
ldr r2, _0203CE04 ; =_020AFE70
ldr r4, [r1]
ldr r3, [r2]
mov r1, #0x44
strh r0, [r3, #6]
ldr r3, [r2]
sub r2, r1, #0x46
ldrsb r3, [r3]
smlabb r4, r0, r1, r4
cmp r3, r2
bne _0203CD2C
mov r0, #1
mov r1, #3
mov r2, #0
bl CreatePortraitBox
ldr r1, _0203CE04 ; =_020AFE70
ldr r1, [r1]
strb r0, [r1]
_0203CD2C:
ldr r1, _0203CE04 ; =_020AFE70
mvn r0, #1
ldr r1, [r1]
ldrsb r1, [r1, #1]
cmp r1, r0
bne _0203CD5C
ldr r0, _0203CE08 ; =_0209C7E4
ldr r1, _0203CE0C ; =sub_0203CE1C
bl CreateTextBox
ldr r1, _0203CE04 ; =_020AFE70
ldr r1, [r1]
strb r0, [r1, #1]
_0203CD5C:
ldr r1, _0203CE04 ; =_020AFE70
mvn r0, #1
ldr r1, [r1]
ldrsb r1, [r1, #2]
cmp r1, r0
bne _0203CD8C
ldr r0, _0203CE10 ; =_0209C7D4
ldr r1, _0203CE14 ; =sub_0203CFCC
bl CreateTextBox
ldr r1, _0203CE04 ; =_020AFE70
ldr r1, [r1]
strb r0, [r1, #2]
_0203CD8C:
add r0, sp, #0
bl InitPortraitParams
ldrsh r1, [r4, #4]
add r0, sp, #0
bl InitPortraitParamsWithMonsterId
add r0, sp, #0
mov r1, #2
bl SetPortraitLayout
ldr r1, _0203CE18 ; =_0209C7CC
add r0, sp, #0
bl SetPortraitOffset
add r0, sp, #0
mov r1, #0
bl SetPortraitEmotion
ldr r0, _0203CE04 ; =_020AFE70
add r1, sp, #0
ldr r0, [r0]
ldrsb r0, [r0]
bl ShowPortraitInPortraitBox
ldr r0, _0203CE04 ; =_020AFE70
ldr r0, [r0]
ldrsb r0, [r0, #1]
bl sub_0202F9B8
ldr r0, _0203CE04 ; =_020AFE70
ldr r0, [r0]
ldrsb r0, [r0, #2]
bl sub_0202F9B8
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_0203CE00: .word TEAM_MEMBER_TABLE_PTR
_0203CE04: .word _020AFE70
_0203CE08: .word _0209C7E4
_0203CE0C: .word sub_0203CE1C
_0203CE10: .word _0209C7D4
_0203CE14: .word sub_0203CFCC
_0203CE18: .word _0209C7CC
arm_func_end sub_0203CCD8
arm_func_start sub_0203CE1C
sub_0203CE1C: ; 0x0203CE1C
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0x1d4
mov r5, r0
mvn r1, #1
cmp r5, r1
beq _0203CF84
ldr r1, _0203CF8C ; =_020AFE70
ldr r2, _0203CF90 ; =TEAM_MEMBER_TABLE_PTR
ldr r1, [r1]
ldr r3, [r2]
ldrsh r2, [r1, #6]
mov r1, #0x44
smlabb r4, r2, r1, r3
bl ClearWindow
ldrsh r0, [r4, #4]
bl GetDexNumber
str r0, [sp, #0xa8]
add r1, sp, #0x84
str r1, [sp]
ldr r2, _0203CF94 ; =_0209C820
ldr r3, _0203CF98 ; =0x0000C402
add r0, sp, #0xd4
mov r1, #0x100
bl PreprocessString
mov r0, r5
mov r1, #0x20
mov r2, #0
add r3, sp, #0xd4
bl DrawTextInWindow
ldr r0, _0203CF8C ; =_020AFE70
ldr r0, [r0]
ldrsh r0, [r0, #6]
bl sub_02056410
cmp r0, #0
beq _0203CEC8
ldr r0, _0203CF8C ; =_020AFE70
ldr r0, [r0]
ldrsh r0, [r0, #6]
bl sub_020564B0
cmp r0, #0
movne r0, #0x59
moveq r0, #0x46
b _0203CEE4
_0203CEC8:
ldr r0, _0203CF8C ; =_020AFE70
ldr r0, [r0]
ldrsh r0, [r0, #6]
bl sub_02056F60
cmp r0, #0
movne r0, #0x44
moveq r0, #0x57
_0203CEE4:
mov r0, r0, lsl #0x10
mov r6, r0, asr #0x10
add r0, sp, #0xd4
add r1, r4, #0x3a
mov r2, #0xa
bl StrncpySimpleNoPadSafe
ldr r1, _0203CF9C ; =_0209C82C
add r0, sp, #0x44
add r3, sp, #0xd4
mov r2, r6
bl SprintfStatic__0203CFA4
ldrsh r1, [r4, #4]
add r0, sp, #0xd4
bl GetSpeciesString
ldr r1, _0203CF9C ; =_0209C82C
add r0, sp, #4
mov r2, #0x4b
add r3, sp, #0xd4
bl SprintfStatic__0203CFA4
ldr r1, _0203CFA0 ; =_0209C83C
add r0, sp, #0xd4
add r2, sp, #0x44
add r3, sp, #4
bl SprintfStatic__0203CFA4
mov r0, r5
mov r1, #0x4c
mov r2, #0
add r3, sp, #0xd4
bl DrawTextInWindow
ldrsh r1, [r4, #4]
add r0, sp, #0xd4
orr r1, r1, #0x10000
bl sub_02024D7C
mov r0, r5
mov r1, #0xd0
mov r2, #0
add r3, sp, #0xd4
bl DrawTextInWindow
mov r0, r5
bl UpdateWindow
_0203CF84:
add sp, sp, #0x1d4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_0203CF8C: .word _020AFE70
_0203CF90: .word TEAM_MEMBER_TABLE_PTR
_0203CF94: .word _0209C820
_0203CF98: .word 0x0000C402
_0203CF9C: .word _0209C82C
_0203CFA0: .word _0209C83C
arm_func_end sub_0203CE1C
arm_func_start SprintfStatic__0203CFA4
SprintfStatic__0203CFA4: ; 0x0203CFA4
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, lr}
add r2, sp, #0xc
bic r2, r2, #3
ldr r1, [sp, #0xc]
add r2, r2, #4
bl vsprintf
ldmia sp!, {r3, lr}
add sp, sp, #0x10
bx lr
arm_func_end SprintfStatic__0203CFA4
arm_func_start sub_0203CFCC
sub_0203CFCC: ; 0x0203CFCC
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0xcc
sub sp, sp, #0x400
mov r5, #4
mov r6, r0
sub r0, r5, #6
cmp r6, r0
beq _0203D3F4
ldr r1, _0203D400 ; =_020AFE70
add r0, sp, #4
ldr r1, [r1]
ldrsh r1, [r1, #6]
bl sub_0205B028
ldr r0, _0203D400 ; =_020AFE70
ldr r1, _0203D404 ; =TEAM_MEMBER_TABLE_PTR
ldr r0, [r0]
ldr r3, [r1]
ldrsh r2, [r0, #6]
mov r1, #0x44
mov r0, r6
smlabb r4, r2, r1, r3
bl ClearWindow
ldrsh r0, [sp, #4]
mov r1, #0
bl GetType
mov r8, r0
ldrsh r0, [sp, #4]
mov r1, #1
bl GetType
mov r1, r5
mov r7, r0
ldr r3, _0203D408 ; =0x00000976
mov r0, r6
mov r2, r1
bl sub_02026268
mov r0, r8
bl GetTypeStringId
mov r3, r0
mov r0, r6
mov r1, #0x38
mov r2, r5
bl sub_02026268
cmp r7, #0
beq _0203D098
mov r0, r7
bl GetTypeStringId
mov r3, r0
mov r0, r6
mov r1, #0x68
mov r2, r5
bl sub_02026268
_0203D098:
add r0, r5, #0xc
mov r1, r0, lsl #0x10
ldr r2, [sp, #0x30]
ldr r0, _0203D40C ; =0x00000977
str r2, [sp, #0xa0]
mov r5, r1, asr #0x10
bl StringFromId
mov r2, r0
add ip, sp, #0x7c
add r0, sp, #0xcc
mov r1, #0x400
mov r3, #0
str ip, [sp]
bl PreprocessString
add r3, sp, #0xcc
mov r0, r6
mov r1, #4
mov r2, r5
bl DrawTextInWindow
add r0, r5, #0xc
mov r0, r0, lsl #0x10
mov r5, r0, asr #0x10
ldr r0, [sp, #0x2c]
ldr r1, [sp, #0x28]
str r0, [sp, #0xa4]
ldr r0, _0203D410 ; =0x00000978
str r1, [sp, #0xa0]
bl StringFromId
add r1, sp, #0x7c
mov r2, r0
str r1, [sp]
add r0, sp, #0xcc
mov r1, #0x400
mov r3, #0
bl PreprocessString
mov r0, r6
mov r1, #4
mov r2, r5
add r3, sp, #0xcc
bl DrawTextInWindow
add r0, r5, #0xc
mov r0, r0, lsl #0x10
mov r5, r0, asr #0x10
ldr r0, _0203D414 ; =0x00000979
bl StringFromId
add r1, sp, #0x7c
mov r2, r0
str r1, [sp]
add r0, sp, #0xcc
mov r1, #0x400
mov r3, #0
bl PreprocessString
mov r0, r6
mov r1, #4
mov r2, r5
add r3, sp, #0xcc
bl DrawTextInWindow
ldrb r2, [sp, #0x38]
ldrb r1, [sp, #0x3d]
ldr r0, _0203D418 ; =0x0000097B
str r2, [sp, #0xa0]
cmp r1, #0
addne r1, r2, r1
addne r0, r0, #1
strne r1, [sp, #0xa0]
bl StringFromId
mov r2, r0
add ip, sp, #0x7c
add r0, sp, #0xcc
mov r1, #0x400
mov r3, #0
str ip, [sp]
bl PreprocessString
add r3, sp, #0xcc
mov r0, r6
mov r2, r5
mov r1, #4
bl DrawTextInWindow
ldrb r2, [sp, #0x3a]
ldrb r1, [sp, #0x3f]
ldr r0, _0203D41C ; =0x0000097F
str r2, [sp, #0xa0]
cmp r1, #0
#ifdef JAPAN
addne r1, r2, r1
strne r1, [sp, #0xa0]
addne r0, r0, #1
#else
addne r0, r2, r1
strne r0, [sp, #0xa0]
movne r0, #0x980
#endif
bl StringFromId
mov r2, r0
add ip, sp, #0x7c
add r0, sp, #0xcc
mov r1, #0x400
mov r3, #0
str ip, [sp]
bl PreprocessString
add r3, sp, #0xcc
mov r0, r6
mov r2, r5
mov r1, #4
bl DrawTextInWindow
add r0, r5, #0xc
mov r0, r0, lsl #0x10
mov r5, r0, asr #0x10
ldr r0, _0203D420 ; =0x0000097A
bl StringFromId
add r1, sp, #0x7c
mov r2, r0
str r1, [sp]
add r0, sp, #0xcc
mov r1, #0x400
mov r3, #0
bl PreprocessString
mov r0, r6
mov r1, #4
mov r2, r5
add r3, sp, #0xcc
bl DrawTextInWindow
ldrb r2, [sp, #0x39]
ldrb r1, [sp, #0x3e]
ldr r0, _0203D424 ; =0x0000097D
str r2, [sp, #0xa0]
cmp r1, #0
addne r1, r2, r1
addne r0, r0, #1
strne r1, [sp, #0xa0]
bl StringFromId
mov r2, r0
add ip, sp, #0x7c
add r0, sp, #0xcc
mov r1, #0x400
mov r3, #0
str ip, [sp]
bl PreprocessString
add r3, sp, #0xcc
mov r0, r6
mov r2, r5
mov r1, #4
bl DrawTextInWindow
ldrb r2, [sp, #0x3b]
ldrb r1, [sp, #0x40]
ldr r0, _0203D428 ; =0x00000981
str r2, [sp, #0xa0]
cmp r1, #0
addne r1, r2, r1
addne r0, r0, #1
strne r1, [sp, #0xa0]
bl StringFromId
mov r2, r0
add ip, sp, #0x7c
add r0, sp, #0xcc
mov r1, #0x400
mov r3, #0
str ip, [sp]
bl PreprocessString
add r3, sp, #0xcc
mov r0, r6
mov r2, r5
mov r1, #4
bl DrawTextInWindow
ldrsh r0, [sp, #0x42]
mov r1, #0xa
str r0, [sp, #0xa0]
bl _s32_div_f
mov r0, r0, lsl #0x10
movs r0, r0, asr #0x10
movmi r0, #0
bmi _0203D338
cmp r0, #0x63
movge r0, #0x63
_0203D338:
bl sub_0205B0A0
str r0, [sp, #0xb4]
ldr r0, _0203D42C ; =0x00000983
bl StringFromId
add r1, sp, #0x7c
mov r2, r0
str r1, [sp]
add r0, sp, #0xcc
mov r1, #0x400
mov r3, #0
bl PreprocessString
add r0, r5, #0xc
mov r0, r0, lsl #0x10
mov r5, r0, asr #0x10
mov r0, r6
mov r1, #4
mov r2, r5
add r3, sp, #0xcc
bl DrawTextInWindow
ldrsh r0, [r4, #4]
ldrsh r1, [sp, #0x42]
bl GetNextIqSkill
cmp r0, #0
add r4, sp, #0x7c
mov r1, #0x400
bne _0203D3B8
ldr r2, _0203D430 ; =0x00000986
add r0, sp, #0xcc
mov r3, #0
str r4, [sp]
bl PreprocessStringFromId
b _0203D3D0
_0203D3B8:
ldr r2, _0203D434 ; =0x00000985
str r0, [sp, #0x8c]
add r0, sp, #0xcc
mov r3, #0
str r4, [sp]
bl PreprocessStringFromId
_0203D3D0:
add r0, r5, #0xc
mov r1, r0, lsl #0x10
mov r2, r1, asr #0x10
add r3, sp, #0xcc
mov r0, r6
mov r1, #4
bl DrawTextInWindow
mov r0, r6
bl UpdateWindow
_0203D3F4:
add sp, sp, #0xcc
add sp, sp, #0x400
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
#ifdef JAPAN
#define SUB_0203CFCC_OFFSET 0x19D0
#else
#define SUB_0203CFCC_OFFSET 0
#endif
_0203D400: .word _020AFE70
_0203D404: .word TEAM_MEMBER_TABLE_PTR
_0203D408: .word 0x00000976 + SUB_0203CFCC_OFFSET
_0203D40C: .word 0x00000977 + SUB_0203CFCC_OFFSET
_0203D410: .word 0x00000978 + SUB_0203CFCC_OFFSET
_0203D414: .word 0x00000979 + SUB_0203CFCC_OFFSET
_0203D418: .word 0x0000097B + SUB_0203CFCC_OFFSET
_0203D41C: .word 0x0000097F + SUB_0203CFCC_OFFSET
_0203D420: .word 0x0000097A + SUB_0203CFCC_OFFSET
_0203D424: .word 0x0000097D + SUB_0203CFCC_OFFSET
_0203D428: .word 0x00000981 + SUB_0203CFCC_OFFSET
_0203D42C: .word 0x00000983 + SUB_0203CFCC_OFFSET
_0203D430: .word 0x00000986 + SUB_0203CFCC_OFFSET
_0203D434: .word 0x00000985 + SUB_0203CFCC_OFFSET
arm_func_end sub_0203CFCC
arm_func_start sub_0203D438
sub_0203D438: ; 0x0203D438
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r0
mov r5, r1
mov r0, #0x3c0
mov r1, #8
mov r4, r2
bl MemAlloc
ldr r2, _0203D534 ; =_020AFE74
mov r1, #0x3c0
str r0, [r2]
bl MemZero
ldr r0, _0203D534 ; =_020AFE74
mov ip, #2
ldr r7, [r0]
add lr, r7, #0x14
_0203D474:
ldmia r6!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _0203D474
ldmia r6, {r0, r1, r2}
stmia lr, {r0, r1, r2}
mov r1, #0
ldr r0, _0203D534 ; =_020AFE74
str r1, [r7, #0x10]
ldr r1, [r0]
str r5, [r1, #8]
ldr r1, [r0]
str r4, [r1, #0xe4]
ldr r0, [r0]
add r0, r0, #0x8c
bl InitPreprocessorArgs
ldr r0, _0203D534 ; =_020AFE74
mov r2, #0x70000
ldr r1, [r0]
str r2, [r1, #0xd8]
ldr r2, [r0]
ldrsh r1, [r2, #0x14]
str r1, [r2, #0x8c]
ldr r0, [r0]
add r0, r0, #0x190
bl InitPortraitParams
ldr r0, _0203D534 ; =_020AFE74
ldr r0, [r0]
ldrsh r1, [r0, #0x14]
cmp r1, #0
beq _0203D4F8
add r0, r0, #0x190
bl InitPortraitParamsWithMonsterId
_0203D4F8:
ldr r1, _0203D534 ; =_020AFE74
mvn r4, #1
ldr r0, [r1]
mov r3, #0
strb r4, [r0, #4]
ldr r2, [r1]
mov r0, #1
strb r4, [r2, #5]
ldr r2, [r1]
strb r4, [r2, #6]
ldr r2, [r1]
str r3, [r2]
ldr r1, [r1]
strb r4, [r1, #0x1a0]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0203D534: .word _020AFE74
arm_func_end sub_0203D438
arm_func_start sub_0203D538
sub_0203D538: ; 0x0203D538
#ifdef JAPAN
#define SUB_0203D538_STACK_OFFSET -6
#define SUB_0203D538_STACK_OFFSET_2 -8
#else
#define SUB_0203D538_STACK_OFFSET 0
#define SUB_0203D538_STACK_OFFSET_2 0
#endif
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x11c + SUB_0203D538_STACK_OFFSET_2
ldr r1, _0203E4B0 ; =_020AFE74
ldr r4, [r1]
ldr r0, [r4]
cmp r0, #0x4c
addls pc, pc, r0, lsl #2
b _0203EF9C
_0203D558: ; jump table
b _0203D68C ; case 0
b _0203D7D4 ; case 1
b _0203D89C ; case 2
b _0203D8CC ; case 3
b _0203D8EC ; case 4
b _0203D954 ; case 5
b _0203D984 ; case 6
b _0203D9A4 ; case 7
b _0203DA64 ; case 8
b _0203DAA0 ; case 9
b _0203DAEC ; case 10
b _0203DB20 ; case 11
b _0203DBB0 ; case 12
b _0203DC68 ; case 13
b _0203DC98 ; case 14
b _0203DCB8 ; case 15
b _0203DD68 ; case 16
b _0203DDAC ; case 17
b _0203DE38 ; case 18
b _0203DE50 ; case 19
b _0203DE6C ; case 20
b _0203DEA0 ; case 21
b _0203DEBC ; case 22
b _0203DF1C ; case 23
b _0203DF40 ; case 24
b _0203DF5C ; case 25
b _0203DF74 ; case 26
b _0203DF90 ; case 27
b _0203DFB0 ; case 28
b _0203DFD8 ; case 29
b _0203E10C ; case 30
b _0203E150 ; case 31
b _0203E038 ; case 32
b _0203E0BC ; case 33
b _0203E0EC ; case 34
b _0203E198 ; case 35
b _0203E1DC ; case 36
b _0203E20C ; case 37
b _0203E22C ; case 38
b _0203E274 ; case 39
b _0203E2A4 ; case 40
b _0203E2C4 ; case 41
b _0203E460 ; case 42
b _0203E490 ; case 43
b _0203E518 ; case 44
b _0203E8E8 ; case 45
b _0203E934 ; case 46
b _0203E964 ; case 47
b _0203E984 ; case 48
b _0203E9A8 ; case 49
b _0203E9D8 ; case 50
b _0203E9F8 ; case 51
b _0203E5B4 ; case 52
b _0203E61C ; case 53
b _0203E6B8 ; case 54
b _0203E6D8 ; case 55
b _0203E7EC ; case 56
b _0203E80C ; case 57
b _0203EA24 ; case 58
b _0203EAB8 ; case 59
b _0203EAE8 ; case 60
b _0203EB08 ; case 61
b _0203EB64 ; case 62
b _0203EB94 ; case 63
b _0203EBB4 ; case 64
b _0203EC28 ; case 65
b _0203EC5C ; case 66
b _0203ECA8 ; case 67
b _0203ECC4 ; case 68
b _0203ED34 ; case 69
b _0203ED50 ; case 70
b _0203EE14 ; case 71
b _0203EE30 ; case 72
b _0203EE68 ; case 73
b _0203EEBC ; case 74
b _0203EF78 ; case 75
b _0203EF94 ; case 76
_0203D68C:
ldrb r0, [r4, #0x36]
cmp r0, #0
beq _0203D6E4
bl sub_0201077C
cmp r0, #0
bne _0203D6B4
mov r0, #0x1e
bl GetResolvedPerformanceProgressFlag
cmp r0, #0
bne _0203D73C
_0203D6B4:
ldr r1, _0203E4B0 ; =_020AFE74
mvn r0, #0
ldr r4, [r1]
mov r2, #0
ldr r3, [r4, #0x1c]
mul r0, r3, r0
str r0, [r4, #0x1c]
ldr r0, [r1]
strb r2, [r0, #0x36]
ldr r0, [r1]
strh r2, [r0, #0x38]
b _0203D73C
_0203D6E4:
ldrsh r0, [r4, #0x38]
cmp r0, #0
beq _0203D73C
mov r0, #0x1d
bl GetResolvedPerformanceProgressFlag
cmp r0, #0
beq _0203D718
ldr r0, _0203E4B0 ; =_020AFE74
ldr r0, [r0]
ldrsh r0, [r0, #0x38]
bl IsMonsterIllegalForMissions
cmp r0, #0
beq _0203D73C
_0203D718:
ldr r1, _0203E4B0 ; =_020AFE74
mov r3, #0
ldr r2, [r1]
sub r0, r3, #1
strh r3, [r2, #0x38]
ldr r2, [r1]
ldr r1, [r2, #0x1c]
mul r0, r1, r0
str r0, [r2, #0x1c]
_0203D73C:
ldr r0, _0203E4B0 ; =_020AFE74
ldr r0, [r0]
ldr r0, [r0, #0xe4]
tst r0, #0x10
bne _0203D7C0
mov r0, #0x1f
bl GetResolvedPerformanceProgressFlag
cmp r0, #0
bne _0203D7C0
mov r5, #0
mov r4, r5
ldr sb, _0203E4B0 ; =_020AFE74
mvn r7, #0
mov r8, #6
b _0203D7B0
_0203D778:
mul r6, r5, r8
add r0, r1, r6
ldrsh r0, [r0, #0x28]
bl GetItemCategory
cmp r0, #0xf
bne _0203D7AC
ldr r0, [sb]
add r0, r0, r6
strh r4, [r0, #0x28]
ldr r2, [sb]
ldr r0, [r2, #0x1c]
mul r1, r0, r7
str r1, [r2, #0x1c]
_0203D7AC:
add r5, r5, #1
_0203D7B0:
ldr r1, [sb]
ldr r0, [r1, #0x20]
cmp r5, r0
blt _0203D778
_0203D7C0:
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #1
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203D7D4:
ldr r0, [r4, #0x1c]
cmp r0, #0
movle r0, #7
strle r0, [r4]
ble _0203EF9C
str r0, [r4, #0xb0]
#ifdef JAPAN
ldr r3, [r1]
mov r0, #0xa
ldr r2, [r3, #0x1c]
mul r0, r2, r0
str r0, [r3, #0xb4]
ldr r1, [r1]
ldr r0, [r1, #8]
cmp r0, #0
beq _0203D890
cmp r0, #2
bne _0203DC0C
ldr r4, _0203E4B4 ; =0x0000245D
bl sub_0203F00C
b _0203D864
_0203DC0C:
cmp r0, #3
bne _0203DC20
ldr r4, _0203E89C ; =0x0000245E
bl sub_0203F00C
b _0203D864
_0203DC20:
cmp r0, #4
ldrne r4, _0203E8A0 ; =0x0000245C
#else
ldr r4, [r1]
mov r0, #0xa
ldr r2, [r4, #0x1c]
mul r3, r2, r0
str r3, [r4, #0xb4]
ldr r2, [r1]
ldr r1, [r2, #8]
cmp r1, #0
beq _0203D890
cmp r1, #2
bne _0203D824
ldr r4, _0203E4B4 ; =0x00000289
bl sub_0203F00C
b _0203D864
_0203D824:
cmp r1, #3
bne _0203D838
add r4, r0, #0x280
bl sub_0203F00C
b _0203D864
_0203D838:
cmp r1, #4
movne r4, #0x288
#endif
bne _0203D864
mov r0, #0
mov r1, #0x69
bl LoadScriptVariableValue
#ifdef JAPAN
add r0, r0, #0x5f
add r0, r0, #0x2400
#else
add r0, r0, #0x8b
add r0, r0, #0x200
#endif
mov r0, r0, lsl #0x10
mov r4, r0, lsr #0x10
bl sub_0203F00C
_0203D864:
ldr r1, _0203E4B0 ; =_020AFE74
ldr r0, _0203E4B8 ; =0x0000101C
ldr r2, [r1]
mov r1, r4
add r2, r2, #0x8c
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #2
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203D890:
mov r0, #4
#ifdef JAPAN
str r0, [r1]
#else
str r0, [r2]
#endif
b _0203EF9C
_0203D89C:
bl sub_02046C78
cmp r0, #0
beq _0203EF9C
bl sub_0203F05C
ldr r0, _0203E4B0 ; =_020AFE74
mov r3, #0xa
ldr r2, [r0]
mov r1, #3
str r3, [r2, #0x188]
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203D8CC:
ldr r2, [r4, #0x188]
sub r0, r2, #1
str r0, [r4, #0x188]
cmp r2, #0
ldrle r0, [r1]
movle r1, #4
strle r1, [r0]
b _0203EF9C
_0203D8EC:
mov r0, #4
bl sub_02017C50
ldr r0, _0203E4B0 ; =_020AFE74
ldr r0, [r0]
ldr r0, [r0, #0x1c]
bl AddMoneyCarried
ldr r0, _0203E4B0 ; =_020AFE74
ldr r2, [r0]
ldr r0, [r2, #8]
cmp r0, #2
ldreq r1, _0203E4BC ; =0x0000026F
beq _0203D934
cmp r0, #3
#ifdef JAPAN
ldreq r1, _0203E8AC ; =0x00002444
#else
moveq r1, #0x270
#endif
beq _0203D934
cmp r0, #4
ldreq r1, _0203E4C0 ; =0x00000271
ldrne r1, _0203E4C4 ; =0x0000026E
_0203D934:
ldr r0, _0203E4B8 ; =0x0000101C
add r2, r2, #0x8c
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #5
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203D954:
bl sub_02046C78
cmp r0, #0
beq _0203EF9C
bl sub_0203F05C
ldr r0, _0203E4B0 ; =_020AFE74
mov r3, #0xa
ldr r2, [r0]
mov r1, #6
str r3, [r2, #0x188]
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203D984:
ldr r2, [r4, #0x188]
sub r0, r2, #1
str r0, [r4, #0x188]
cmp r2, #0
ldrle r0, [r1]
movle r1, #7
strle r1, [r0]
b _0203EF9C
_0203D9A4:
ldrsh r0, [r4, #0x38]
cmp r0, #0
beq _0203D9BC
ldrb r0, [r4, #0x36]
cmp r0, #0
beq _0203D9C8
_0203D9BC:
mov r0, #0x29
str r0, [r4]
b _0203EF9C
_0203D9C8:
ldrsh r0, [r4, #0x14]
str r0, [r4, #0x8c]
ldr r2, [r1]
ldrsh r0, [r2, #0x38]
str r0, [r2, #0x90]
ldr r1, [r1]
ldr r0, [r1, #8]
cmp r0, #0
beq _0203DA58
cmp r0, #2
bne _0203DA00
ldr r4, _0203E4C8 ; =0x0000029A
bl sub_0203F00C
b _0203DA2C
_0203DA00:
cmp r0, #4
ldrne r4, _0203E4CC ; =0x00000299
bne _0203DA2C
mov r0, #0
mov r1, #0x69
bl LoadScriptVariableValue
#ifdef JAPAN
add r0, r0, #0x6f
add r0, r0, #0x2400
#else
add r0, r0, #0x9b
add r0, r0, #0x200
#endif
mov r0, r0, lsl #0x10
mov r4, r0, lsr #0x10
bl sub_0203F00C
_0203DA2C:
ldr r1, _0203E4B0 ; =_020AFE74
ldr r0, _0203E4D0 ; =0x00003008
ldr r2, [r1]
mov r1, r4
add r2, r2, #0x8c
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #8
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203DA58:
mov r0, #0xb
str r0, [r1]
b _0203EF9C
_0203DA64:
bl sub_02046C78
cmp r0, #0
beq _0203EF9C
mov r0, #0
ldr r3, _0203E4D4 ; =_0209C884
mov r2, r0
mov r1, #0x11
bl CreateParentMenuFromStringIds
ldr r1, _0203E4B0 ; =_020AFE74
mov r2, #9
ldr r3, [r1]
strb r0, [r3, #4]
ldr r0, [r1]
str r2, [r0]
b _0203EF9C
_0203DAA0:
ldrsb r0, [r4, #4]
bl IsParentMenuActive
cmp r0, #0
bne _0203EF9C
ldr r0, _0203E4B0 ; =_020AFE74
ldr r0, [r0]
ldrsb r0, [r0, #4]
bl GetSimpleMenuResult__0202AEA4
ldr r1, _0203E4B0 ; =_020AFE74
ldr r1, [r1]
str r0, [r1, #0x18c]
bl sub_0203F05C
ldr r0, _0203E4B0 ; =_020AFE74
mov r2, #0xa
ldr r1, [r0]
str r2, [r1, #0x188]
ldr r0, [r0]
str r2, [r0]
b _0203EF9C
_0203DAEC:
ldr r2, [r4, #0x188]
sub r0, r2, #1
str r0, [r4, #0x188]
cmp r2, #0
bgt _0203EF9C
ldr r1, [r1]
ldr r0, [r1, #0x18c]
cmp r0, #0
moveq r0, #0xb
streq r0, [r1]
movne r0, #0x23
strne r0, [r1]
b _0203EF9C
_0203DB20:
ldr r3, _0203E4D8 ; =_0209C846
add r2, sp, #0x22 + SUB_0203D538_STACK_OFFSET
mov r1, #4
_0203DB2C:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _0203DB2C
ldrsh r1, [r4, #0x38]
add r0, sp, #0x22 + SUB_0203D538_STACK_OFFSET
mov r2, #1
mov r3, #0
bl sub_02053A0C
ldr r0, _0203E4B0 ; =_020AFE74
add r1, sp, #0x22 + SUB_0203D538_STACK_OFFSET
ldr r0, [r0]
ldr r3, _0203E4DC ; =_0209C844
str r1, [sp]
ldrsh r1, [r0, #0x38]
add r0, r0, #0x40
mov r2, #0
bl sub_02052E2C
ldr r0, _0203E4B0 ; =_020AFE74
ldr r0, [r0]
add r0, r0, #0x40
bl sub_02055D4C
ldr r1, _0203E4B0 ; =_020AFE74
ldr r2, [r1]
str r0, [r2, #0x3b8]
ldr r1, [r1]
ldr r0, [r1, #0x3b8]
cmp r0, #0
movne r0, #0xc
strne r0, [r1]
moveq r0, #0x1e
streq r0, [r1]
b _0203EF9C
_0203DBB0:
ldr r0, [r4, #0x18]
cmp r0, #1
ble _0203DBD0
mov r1, r0, lsl #0x10
ldr r0, [r4, #0x3b8]
mov r1, r1, asr #0x10
mov r2, #1
bl ApplyLevelUpBoostsToGroundMonster
_0203DBD0:
ldr r0, _0203E4B0 ; =_020AFE74
ldr r2, [r0]
ldrsh r1, [r2, #0x38]
str r1, [r2, #0x8c]
ldr r4, [r0]
ldr r0, [r4, #8]
cmp r0, #2
bne _0203DC18
ldr r0, _0203E4B8 ; =0x0000101C
ldr r1, _0203E4E0 ; =0x0000027A
add r2, r4, #0x8c
bl sub_02046BE8
bl sub_0203F00C
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0xd
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203DC18:
cmp r0, #4
movne r0, #0xf
strne r0, [r4]
bne _0203EF9C
mov r0, #0
mov r1, #0x69
bl LoadScriptVariableValue
#ifdef JAPAN
add r0, r0, #0x4f
add r0, r0, #0x2400
#else
add r0, r0, #0x7b
add r0, r0, #0x200
#endif
mov r1, r0, lsl #0x10
ldr r0, _0203E4B8 ; =0x0000101C
mov r1, r1, lsr #0x10
add r2, r4, #0x8c
bl sub_02046BE8
bl sub_0203F00C
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0xd
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203DC68:
bl sub_02046C78
cmp r0, #0
beq _0203EF9C
bl sub_0203F05C
ldr r0, _0203E4B0 ; =_020AFE74
mov r3, #0xa
ldr r2, [r0]
mov r1, #0xe
str r3, [r2, #0x188]
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203DC98:
ldr r2, [r4, #0x188]
sub r0, r2, #1
str r0, [r4, #0x188]
cmp r2, #0
ldrle r0, [r1]
movle r1, #0xf
strle r1, [r0]
b _0203EF9C
_0203DCB8:
ldrsh r1, [r4, #0x38]
add r0, r4, #0xb5
add r0, r0, #0x200
mov r2, #0x4e
bl GetNameWithGender
ldr r3, _0203E4B0 ; =_020AFE74
ldr r0, _0203E4E4 ; =0x0000100C
ldr r4, [r3]
ldr r1, _0203E4E8 ; =0x000002A6
add r2, r4, #0xb5
add r2, r2, #0x200
str r2, [r4, #0xc4]
ldr r2, [r3]
add r2, r2, #0x8c
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
#ifndef JAPAN
mov r2, #0xa
#endif
ldr r0, [r0]
ldr r1, [r0, #0x3b8]
add r0, r0, #0xa1
add r0, r0, #0x100
add r1, r1, #0x3a
#ifdef JAPAN
bl StrcpySimple
#else
bl StrncpySimple
#endif
ldr r0, _0203E4B0 ; =_020AFE74
mov r2, #0xa
ldr r0, [r0]
ldr r1, [r0, #0x3b8]
add r0, r0, #0xab
add r0, r0, #0x100
add r1, r1, #0x3a
bl MemcpySimple
ldr r0, _0203E4B0 ; =_020AFE74
mov r2, #0xa
ldr r1, [r0]
add r0, r1, #0xb5
add r0, r0, #0x100
add r1, r1, #0xab
add r1, r1, #0x100
bl StrncpySimpleNoPadSafe
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x10
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203DD68:
bl sub_02046C78
cmp r0, #0
beq _0203EF9C
ldr r0, _0203E4EC ; =_0209C85C
mov r4, #2
ldr r1, _0203E4F0 ; =0x00300011
ldr r3, _0203E4F4 ; =_0209C86C
mov r2, #0
str r4, [sp]
bl CreateSimpleMenuFromStringIds
ldr r1, _0203E4B0 ; =_020AFE74
mov r2, #0x11
ldr r3, [r1]
strb r0, [r3, #0x1a0]
ldr r0, [r1]
str r2, [r0]
b _0203EF9C
_0203DDAC:
add r0, r4, #0x100
ldrsb r0, [r0, #0xa0]
bl IsSimpleMenuActive
cmp r0, #0
bne _0203EF9C
ldr r0, _0203E4B0 ; =_020AFE74
ldr r0, [r0]
add r0, r0, #0x100
ldrsb r0, [r0, #0xa0]
bl GetSimpleMenuResult__0202B870
ldr r1, _0203E4B0 ; =_020AFE74
mov r4, r0
ldr r0, [r1]
add r0, r0, #0x100
ldrsb r0, [r0, #0xa0]
bl CloseSimpleMenu
ldr r0, _0203E4B0 ; =_020AFE74
mvn r1, #1
ldr r0, [r0]
strb r1, [r0, #0x1a0]
bl sub_02046D20
cmp r4, #0
beq _0203DE10
cmp r4, #1
b _0203DE24
_0203DE10:
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x12
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203DE24:
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x20
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203DE38:
bl ov11_0230D92C
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x13
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203DE50:
bl ov11_0230D220
cmp r0, #0
ldreq r0, _0203E4B0 ; =_020AFE74
moveq r1, #0x14
ldreq r0, [r0]
streq r1, [r0]
b _0203EF9C
_0203DE6C:
add r0, r4, #0xab
add r2, r4, #0xa1
add r1, r0, #0x100
add r3, r2, #0x100
mov r0, #2
mov r2, #0
bl ShowKeyboard
bl ov11_02310BDC
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x15
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203DEA0:
bl ov11_0230D220
cmp r0, #0
ldreq r0, _0203E4B0 ; =_020AFE74
moveq r1, #0x16
ldreq r0, [r0]
streq r1, [r0]
b _0203EF9C
_0203DEBC:
bl GetKeyboardStatus
cmp r0, #3
bne _0203EF9C
bl GetKeyboardStringResult
ldr r2, _0203E4B0 ; =_020AFE74
mov r1, r0
ldr r0, [r2]
mov r2, #0xa
add r0, r0, #0xab
add r0, r0, #0x100
bl MemcpySimple
ldr r0, _0203E4B0 ; =_020AFE74
mov r2, #0xa
ldr r1, [r0]
add r0, r1, #0xb5
add r1, r1, #0xab
add r0, r0, #0x100
add r1, r1, #0x100
bl StrncpySimpleNoPadSafe
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x17
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203DF1C:
bl sub_02037468
cmp r0, #0
beq _0203EF9C
bl ov11_0230D92C
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x18
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203DF40:
bl ov11_0230D220
cmp r0, #0
ldreq r0, _0203E4B0 ; =_020AFE74
moveq r1, #0x19
ldreq r0, [r0]
streq r1, [r0]
b _0203EF9C
_0203DF5C:
bl ov11_0230D92C
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x1a
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203DF74:
bl ov11_0230D220
cmp r0, #0
ldreq r0, _0203E4B0 ; =_020AFE74
moveq r1, #0x1b
ldreq r0, [r0]
streq r1, [r0]
b _0203EF9C
_0203DF90:
add r0, r4, #0xb5
add r0, r0, #0x100
bl sub_0203909C
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x1c
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203DFB0:
bl sub_0203931C
ldr r1, _0203E4B0 ; =_020AFE74
ldr r2, [r1]
str r0, [r2, #0x3bc]
ldr r1, [r1]
ldr r0, [r1, #0x3bc]
cmp r0, #0
movge r0, #0x1d
strge r0, [r1]
b _0203EF9C
_0203DFD8:
bl sub_02039218
cmp r0, #0
beq _0203EF9C
ldr r0, _0203E4B0 ; =_020AFE74
ldr r1, [r0]
ldr r0, [r1, #0x3bc]
cmp r0, #0
beq _0203E000
cmp r0, #1
b _0203E02C
_0203E000:
ldr r0, [r1, #0x3b8]
add r1, r1, #0xab
add r0, r0, #0x3a
add r1, r1, #0x100
mov r2, #0xa
bl MemcpySimple
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x20
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E02C:
mov r0, #0x12
str r0, [r1]
b _0203EF9C
_0203E038:
ldrsh r0, [r4, #0x38]
mov r2, #0xa
orr r0, r0, #0x80000
str r0, [r4, #0x8c]
ldr r1, [r1]
add r0, r1, #0xb5
add r1, r1, #0xab
add r0, r0, #0x100
add r1, r1, #0x100
bl StrncpySimpleNoPadSafe
ldr r1, _0203E4B0 ; =_020AFE74
ldr r2, [r1]
add r0, r2, #0xb5
add r0, r0, #0x100
str r0, [r2, #0xc4]
ldr r0, [r1]
ldr r0, [r0, #8]
cmp r0, #2
ldreq r4, _0203E4F8 ; =0x00000283
mov r0, #5
ldrne r4, _0203E4FC ; =0x00000281
bl sub_02017C50
ldr r1, _0203E4B0 ; =_020AFE74
ldr r0, _0203E4B8 ; =0x0000101C
ldr r2, [r1]
mov r1, r4
add r2, r2, #0x8c
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x21
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E0BC:
bl sub_02046C78
cmp r0, #0
beq _0203EF9C
bl sub_0203F05C
ldr r0, _0203E4B0 ; =_020AFE74
mov r3, #0xa
ldr r2, [r0]
mov r1, #0x22
str r3, [r2, #0x188]
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E0EC:
ldr r2, [r4, #0x188]
sub r0, r2, #1
str r0, [r4, #0x188]
cmp r2, #0
ldrle r0, [r1]
movle r1, #0x29
strle r1, [r0]
b _0203EF9C
_0203E10C:
bl sub_02046D20
ldr r0, _0203E4B0 ; =_020AFE74
ldr r1, [r0]
ldr r0, [r1, #8]
sub r0, r0, #2
cmp r0, #1
add r0, r1, #0x40
bhi _0203E138
mov r1, #1
bl ov11_023061E4
b _0203E13C
_0203E138:
bl ov11_023061CC
_0203E13C:
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x1f
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E150:
bl ov11_02306C9C
cmp r0, #3
cmpne r0, #4
bne _0203EF9C
bl ov11_02306C64
cmp r0, #0
ldreq r0, _0203E4B0 ; =_020AFE74
moveq r1, #0x23
ldreq r0, [r0]
streq r1, [r0]
beq _0203EF9C
ldr r1, _0203E4B0 ; =_020AFE74
mov r2, #0xc
ldr r3, [r1]
str r0, [r3, #0x3b8]
ldr r0, [r1]
str r2, [r0]
b _0203EF9C
_0203E198:
ldrsh r1, [r4, #0x38]
add r0, r4, #0xe8
bl GetNameRaw
ldr r2, _0203E4B0 ; =_020AFE74
ldr r0, _0203E4B8 ; =0x0000101C
ldr r4, [r2]
#ifdef JAPAN
ldr r1, _0203E8F0 ; =0x00002458
#else
mov r1, #0x284
#endif
add r3, r4, #0xe8
str r3, [r4, #0xc4]
ldr r2, [r2]
add r2, r2, #0x8c
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x24
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E1DC:
bl sub_02046C78
cmp r0, #0
beq _0203EF9C
bl sub_0203F05C
ldr r0, _0203E4B0 ; =_020AFE74
mov r3, #0xa
ldr r2, [r0]
mov r1, #0x25
str r3, [r2, #0x188]
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E20C:
ldr r2, [r4, #0x188]
sub r0, r2, #1
str r0, [r4, #0x188]
cmp r2, #0
ldrle r0, [r1]
movle r1, #0x26
strle r1, [r0]
b _0203EF9C
_0203E22C:
mov r0, #4
bl sub_02017C50
mov r0, #0x3e8
bl AddMoneyCarried
ldr r1, _0203E4B0 ; =_020AFE74
mov r3, #0x3e8
ldr r2, [r1]
ldr r0, _0203E4B8 ; =0x0000101C
str r3, [r2, #0xb0]
ldr r2, [r1]
ldr r1, _0203E500 ; =0x00000285
add r2, r2, #0x8c
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x27
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E274:
bl sub_02046C78
cmp r0, #0
beq _0203EF9C
bl sub_0203F05C
ldr r0, _0203E4B0 ; =_020AFE74
mov r3, #0xa
ldr r2, [r0]
mov r1, #0x28
str r3, [r2, #0x188]
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E2A4:
ldr r2, [r4, #0x188]
sub r0, r2, #1
str r0, [r4, #0x188]
cmp r2, #0
ldrle r0, [r1]
movle r1, #0x29
strle r1, [r0]
b _0203EF9C
_0203E2C4:
ldr r1, [r4, #0x10]
ldr r0, [r4, #0x20]
cmp r1, r0
movge r0, #0x3a
strge r0, [r4]
bge _0203EF9C
mov r0, #6
mla r0, r1, r0, r4
ldrsh r0, [r0, #0x28]
mov r1, #0
strh r0, [sp, #0x20 + SUB_0203D538_STACK_OFFSET]
strb r1, [sp, #0x1c + SUB_0203D538_STACK_OFFSET]
bl IsStorableItem
cmp r0, #0
beq _0203E44C
ldrsh r0, [sp, #0x20 + SUB_0203D538_STACK_OFFSET]
bl IsThrownItem
cmp r0, #0
bne _0203E328
ldrsh r1, [sp, #0x20 + SUB_0203D538_STACK_OFFSET]
cmp r1, #0x16c
blt _0203E348
ldr r0, _0203E504 ; =0x0000018F
cmp r1, r0
bgt _0203E348
_0203E328:
ldr r1, _0203E4B0 ; =_020AFE74
mov r0, #6
ldr r2, [r1]
ldr r1, [r2, #0x10]
mla r0, r1, r0, r2
ldrh r0, [r0, #0x26]
strh r0, [sp, #0x1e + SUB_0203D538_STACK_OFFSET]
b _0203E350
_0203E348:
mov r0, #0
strh r0, [sp, #0x1e + SUB_0203D538_STACK_OFFSET]
_0203E350:
ldr r3, _0203E4B0 ; =_020AFE74
mov r0, #1
ldr r6, [r3]
strb r0, [sp, #0x1c + SUB_0203D538_STACK_OFFSET]
ldr r1, [r6, #0x10]
mov r0, #6
mla r5, r1, r0, r6
ldrh r0, [sp, #0x1c + SUB_0203D538_STACK_OFFSET]
mov r4, #0
ldr r2, _0203E508 ; =_0209C850
strh r0, [r5, #0x24]
ldrh r0, [sp, #0x1e + SUB_0203D538_STACK_OFFSET]
add r1, sp, #0x1c + SUB_0203D538_STACK_OFFSET
strh r0, [r5, #0x26]
ldrh r0, [sp, #0x20 + SUB_0203D538_STACK_OFFSET]
strh r0, [r5, #0x28]
ldrsh r0, [sp, #0x20 + SUB_0203D538_STACK_OFFSET]
str r0, [r6, #0x9c]
ldr r0, [r3]
str r4, [r0, #0xb0]
ldr r0, [r3]
add r0, r0, #0xe8
bl sub_0200D670
ldr r0, _0203E4B0 ; =_020AFE74
ldr r2, [r0]
add r1, r2, #0xe8
str r1, [r2, #0xc4]
ldr r2, [r0]
ldrsh r1, [r2, #0x14]
str r1, [r2, #0x8c]
ldr r1, [r0]
ldr r0, [r1, #8]
cmp r0, #0
beq _0203E440
cmp r0, #2
bne _0203E3EC
ldr r4, _0203E50C ; =0x00000296
bl sub_0203F00C
b _0203E414
_0203E3EC:
cmp r0, #3
bne _0203E400
ldr r4, _0203E510 ; =0x00000297
bl sub_0203F00C
b _0203E414
_0203E400:
cmp r0, #4
ldrne r4, _0203E514 ; =0x00000295
bne _0203E414
#ifdef JAPAN
ldr r4, _0203E90C ; =0x0000246C
#else
mov r4, #0x298
#endif
bl sub_0203F00C
_0203E414:
ldr r1, _0203E4B0 ; =_020AFE74
ldr r0, _0203E4B8 ; =0x0000101C
ldr r2, [r1]
mov r1, r4
add r2, r2, #0x8c
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x2a
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E440:
mov r0, #0x2c
str r0, [r1]
b _0203EF9C
_0203E44C:
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x33
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E460:
bl sub_02046C78
cmp r0, #0
beq _0203EF9C
bl sub_0203F05C
ldr r0, _0203E4B0 ; =_020AFE74
mov r3, #0xa
ldr r2, [r0]
mov r1, #0x2b
str r3, [r2, #0x188]
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E490:
ldr r2, [r4, #0x188]
sub r0, r2, #1
str r0, [r4, #0x188]
cmp r2, #0
ldrle r0, [r1]
movle r1, #0x2c
strle r1, [r0]
b _0203EF9C
.align 2, 0
#ifdef JAPAN
#define SUB_0203D538_DATA_OFFSET 0x21D4
#else
#define SUB_0203D538_DATA_OFFSET 0
#endif
_0203E4B0: .word _020AFE74
_0203E4B4: .word 0x00000289 + SUB_0203D538_DATA_OFFSET
#ifdef JAPAN
_0203E89C: .word 0x0000245E
_0203E8A0: .word 0x0000245C
#endif
_0203E4B8: .word 0x0000101C
_0203E4BC: .word 0x0000026F + SUB_0203D538_DATA_OFFSET
#ifdef JAPAN
_0203E8AC: .word 0x00002444
#endif
_0203E4C0: .word 0x00000271 + SUB_0203D538_DATA_OFFSET
_0203E4C4: .word 0x0000026E + SUB_0203D538_DATA_OFFSET
_0203E4C8: .word 0x0000029A + SUB_0203D538_DATA_OFFSET
_0203E4CC: .word 0x00000299 + SUB_0203D538_DATA_OFFSET
_0203E4D0: .word 0x00003008
_0203E4D4: .word _0209C884
_0203E4D8: .word _0209C846
_0203E4DC: .word _0209C844
_0203E4E0: .word 0x0000027A + SUB_0203D538_DATA_OFFSET
_0203E4E4: .word 0x0000100C
_0203E4E8: .word 0x000002A6 + SUB_0203D538_DATA_OFFSET
_0203E4EC: .word _0209C85C
_0203E4F0: .word 0x00300011
_0203E4F4: .word _0209C86C
_0203E4F8: .word 0x00000283 + SUB_0203D538_DATA_OFFSET
_0203E4FC: .word 0x00000281 + SUB_0203D538_DATA_OFFSET
#ifdef JAPAN
_0203E8F0: .word 0x00002458
#endif
_0203E500: .word 0x00000285 + SUB_0203D538_DATA_OFFSET
_0203E504: .word 0x0000018F
_0203E508: .word _0209C850
_0203E50C: .word 0x00000296 + SUB_0203D538_DATA_OFFSET
_0203E510: .word 0x00000297 + SUB_0203D538_DATA_OFFSET
_0203E514: .word 0x00000295 + SUB_0203D538_DATA_OFFSET
#ifdef JAPAN
_0203E90C: .word 0x0000246C
#endif
_0203E518:
ldr r1, [r4, #0x10]
add r2, r4, #0x24
mov r0, #6
mla r0, r1, r0, r2
bl AddItemToStorage
cmp r0, #0
beq _0203E5A0
ldr r0, _0203E4B0 ; =_020AFE74
ldr r0, [r0]
ldr r0, [r0, #0xe4]
tst r0, #2
bne _0203E550
mov r0, #4
bl sub_02017C50
_0203E550:
ldr r0, _0203E4B0 ; =_020AFE74
ldr r2, [r0]
ldr r0, [r2, #0xe4]
tst r0, #4
bne _0203E588
ldr r1, _0203EFA8 ; =0x00000273
add r2, r2, #0x8c
mov r0, #0x1c
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x2e
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E588:
tst r0, #8
movne r0, #0x30
strne r0, [r2]
moveq r0, #0x33
streq r0, [r2]
b _0203EF9C
_0203E5A0:
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x34
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E5B4:
ldr r2, [r4, #0x10]
mov r0, #6
mla r1, r2, r0, r4
ldrsh r2, [r1, #0x28]
mov r1, #0
strh r2, [sp, #0x1a + SUB_0203D538_STACK_OFFSET]
ldr r2, [r4, #0x10]
mla r0, r2, r0, r4
ldrh r0, [r0, #0x26]
strh r0, [sp, #0x18 + SUB_0203D538_STACK_OFFSET]
strb r1, [sp, #0x16 + SUB_0203D538_STACK_OFFSET]
bl sub_02046D20
ldr r0, _0203E4B0 ; =_020AFE74
ldr r0, [r0]
ldr r0, [r0, #0xe4]
tst r0, #1
moveq r1, #1
movne r1, #0
add r0, sp, #0x16 + SUB_0203D538_STACK_OFFSET
and r1, r1, #0xff
bl sub_020453F8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x35
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E61C:
bl sub_02046028
cmp r0, #2
beq _0203E658
cmp r0, #3
beq _0203E688
cmp r0, #4
bne _0203EF9C
ldr r0, _0203E4B0 ; =_020AFE74
mov r3, #0xa
ldr r2, [r0]
mov r1, #0x2d
str r3, [r2, #0x188]
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E658:
ldr r0, _0203E4B0 ; =_020AFE74
ldr r0, [r0]
add r0, r0, #0xde
bl sub_02045FD0
ldr r0, _0203E4B0 ; =_020AFE74
mov r3, #0xa
ldr r2, [r0]
mov r1, #0x36
str r3, [r2, #0x188]
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E688:
ldr r0, _0203E4B0 ; =_020AFE74
ldr r0, [r0]
add r0, r0, #0xde
bl sub_02045FD0
ldr r0, _0203E4B0 ; =_020AFE74
mov r3, #0xa
ldr r2, [r0]
mov r1, #0x38
str r3, [r2, #0x188]
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E6B8:
ldr r2, [r4, #0x188]
sub r0, r2, #1
str r0, [r4, #0x188]
cmp r2, #0
ldrle r0, [r1]
movle r1, #0x37
strle r1, [r0]
b _0203EF9C
_0203E6D8:
ldr r1, [r4, #0x10]
add r2, r4, #0x24
mov r0, #6
mla r0, r1, r0, r2
bl AddItemToStorage
cmp r0, #0
beq _0203E7D8
ldr r0, _0203E4B0 ; =_020AFE74
ldr r0, [r0]
ldr r0, [r0, #0xe4]
tst r0, #2
bne _0203E710
mov r0, #4
bl sub_02017C50
_0203E710:
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #6
ldr r5, [r0]
mov r6, #0
ldr r4, [r5, #0x10]
ldr r2, _0203E508 ; =_0209C850
mla r3, r4, r1, r5
ldrsh r3, [r3, #0x28]
str r3, [r5, #0x9c]
ldr r3, [r0]
str r6, [r3, #0xb0]
ldr r4, [r0]
ldrsh r3, [r4, #0xdc]
str r3, [r4, #0xa4]
ldr r3, [r0]
str r6, [r3, #0xb8]
ldr r5, [r0]
ldrsh r3, [r5, #0xe2]
add r4, r5, #0x24
add r0, r5, #0xe8
strh r3, [sp, #0x14 + SUB_0203D538_STACK_OFFSET]
ldrh r3, [r5, #0xe0]
strb r6, [sp, #0x10 + SUB_0203D538_STACK_OFFSET]
strh r3, [sp, #0x12 + SUB_0203D538_STACK_OFFSET]
ldr r3, [r5, #0x10]
mla r1, r3, r1, r4
bl sub_0200D670
ldr r0, _0203E4B0 ; =_020AFE74
ldr r2, _0203E508 ; =_0209C850
ldr r0, [r0]
add r1, sp, #0x10 + SUB_0203D538_STACK_OFFSET
add r0, r0, #0x138
bl sub_0200D670
ldr r2, _0203E4B0 ; =_020AFE74
ldr r0, _0203E4B8 ; =0x0000101C
ldr r4, [r2]
ldr r1, _0203EFAC ; =0x00000275
add r3, r4, #0x138
str r3, [r4, #0xcc]
ldr r4, [r2]
add r3, r4, #0xe8
str r3, [r4, #0xc4]
ldr r2, [r2]
add r2, r2, #0x8c
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x2e
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E7D8:
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x34
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E7EC:
ldr r2, [r4, #0x188]
sub r0, r2, #1
str r0, [r4, #0x188]
cmp r2, #0
ldrle r0, [r1]
movle r1, #0x39
strle r1, [r0]
b _0203EF9C
_0203E80C:
ldr r1, [r4, #0x10]
add r2, r4, #0x24
mov r0, #6
mla r0, r1, r0, r2
bl AddItemToStorage
cmp r0, #0
beq _0203E8D4
ldr r0, _0203E4B0 ; =_020AFE74
ldr r0, [r0]
ldr r0, [r0, #0xe4]
tst r0, #2
bne _0203E844
mov r0, #4
bl sub_02017C50
_0203E844:
ldr r1, _0203E4B0 ; =_020AFE74
mov r0, #6
ldr r6, [r1]
mov r5, #0
ldr r4, [r6, #0x10]
ldr r2, _0203E508 ; =_0209C850
mla r3, r4, r0, r6
ldrsh r3, [r3, #0x28]
str r3, [r6, #0x9c]
ldr r3, [r1]
str r5, [r3, #0xb0]
ldr r4, [r1]
ldrsh r3, [r4, #0xdc]
str r3, [r4, #0xa4]
ldr r3, [r1]
str r5, [r3, #0xb8]
ldr r4, [r1]
ldr r3, [r4, #0x10]
add r1, r4, #0x24
mla r1, r3, r0, r1
add r0, r4, #0xe8
bl sub_0200D670
ldr r2, _0203E4B0 ; =_020AFE74
ldr r0, _0203E4B8 ; =0x0000101C
ldr r4, [r2]
ldr r1, _0203EFB0 ; =0x00000277
add r3, r4, #0xe8
str r3, [r4, #0xc4]
ldr r2, [r2]
add r2, r2, #0x8c
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x2e
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E8D4:
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x34
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E8E8:
ldr r2, [r4, #0x188]
sub r0, r2, #1
str r0, [r4, #0x188]
cmp r2, #0
bgt _0203EF9C
ldr r2, [r1]
ldr r0, _0203E4B8 ; =0x0000101C
ldr r1, _0203EFB4 ; =0x00000286
add r2, r2, #0x8c
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
ldr r0, [r0]
add r0, r0, #0xde
bl sub_02045FD0
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x2e
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E934:
bl sub_02046C78
cmp r0, #0
beq _0203EF9C
bl sub_0203F05C
ldr r0, _0203E4B0 ; =_020AFE74
mov r3, #0xa
ldr r2, [r0]
mov r1, #0x2f
str r3, [r2, #0x188]
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E964:
ldr r2, [r4, #0x188]
sub r0, r2, #1
str r0, [r4, #0x188]
cmp r2, #0
ldrle r0, [r1]
movle r1, #0x33
strle r1, [r0]
b _0203EF9C
_0203E984:
ldr r0, _0203E4B8 ; =0x0000101C
#ifdef JAPAN
ldr r1, _0203F34C_JP ; =0x00002FEC
add r2, r4, #0x8c
#else
add r2, r4, #0x8c
mov r1, #0x2cc
#endif
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x31
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E9A8:
bl sub_02046C78
cmp r0, #0
beq _0203EF9C
bl sub_0203F05C
ldr r0, _0203E4B0 ; =_020AFE74
mov r3, #0xa
ldr r2, [r0]
mov r1, #0x32
str r3, [r2, #0x188]
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203E9D8:
ldr r2, [r4, #0x188]
sub r0, r2, #1
str r0, [r4, #0x188]
cmp r2, #0
ldrle r0, [r1]
movle r1, #0x33
strle r1, [r0]
b _0203EF9C
_0203E9F8:
ldr r0, [r4, #0x10]
add r0, r0, #1
str r0, [r4, #0x10]
ldr r1, [r1]
ldr r0, [r1, #0x10]
cmp r0, #3
movlt r0, #0x29
strlt r0, [r1]
movge r0, #0x3a
strge r0, [r1]
b _0203EF9C
_0203EA24:
ldrb r0, [r4, #0x36]
cmp r0, #0
moveq r0, #0x40
streq r0, [r4]
beq _0203EF9C
ldr r0, [r4, #8]
cmp r0, #0
beq _0203EAAC
cmp r0, #2
bne _0203EA58
ldr r4, _0203EFB8 ; =0x00000292
bl sub_0203F00C
b _0203EA80
_0203EA58:
cmp r0, #3
bne _0203EA6C
ldr r4, _0203EFBC ; =0x00000293
bl sub_0203F00C
b _0203EA80
_0203EA6C:
cmp r0, #4
ldrne r4, _0203EFC0 ; =0x00000291
bne _0203EA80
#ifdef JAPAN
ldr r4, _0203F35C_JP ; =0x00002468
#else
mov r4, #0x294
#endif
bl sub_0203F00C
_0203EA80:
ldr r1, _0203E4B0 ; =_020AFE74
ldr r0, _0203E4B8 ; =0x0000101C
ldr r2, [r1]
mov r1, r4
add r2, r2, #0x8c
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x3b
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203EAAC:
mov r0, #0x3d
str r0, [r4]
b _0203EF9C
_0203EAB8:
bl sub_02046C78
cmp r0, #0
beq _0203EF9C
bl sub_0203F05C
ldr r0, _0203E4B0 ; =_020AFE74
mov r3, #0xa
ldr r2, [r0]
mov r1, #0x3c
str r3, [r2, #0x188]
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203EAE8:
ldr r2, [r4, #0x188]
sub r0, r2, #1
str r0, [r4, #0x188]
cmp r2, #0
ldrle r0, [r1]
movle r1, #0x3d
strle r1, [r0]
b _0203EF9C
_0203EB08:
mov r0, #5
bl sub_02017C50
ldr r0, _0203E4B0 ; =_020AFE74
ldr r0, [r0]
ldrsh r0, [r0, #0x38]
bl sub_02010794
mov r0, #4
bl RandIntSafe
add r0, r0, #6
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_020107F4
ldr r1, _0203E4B0 ; =_020AFE74
ldr r0, _0203E4B8 ; =0x0000101C
ldr r2, [r1]
ldr r1, _0203EFC4 ; =0x00000272
add r2, r2, #0x8c
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x3e
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203EB64:
bl sub_02046C78
cmp r0, #0
beq _0203EF9C
bl sub_0203F05C
ldr r0, _0203E4B0 ; =_020AFE74
mov r3, #0xa
ldr r2, [r0]
mov r1, #0x3f
str r3, [r2, #0x188]
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203EB94:
ldr r2, [r4, #0x188]
sub r0, r2, #1
str r0, [r4, #0x188]
cmp r2, #0
ldrle r0, [r1]
movle r1, #0x40
strle r1, [r0]
b _0203EF9C
_0203EBB4:
ldr r0, [r4, #0x3c]
cmp r0, #0
moveq r0, #0x4c
streq r0, [r4]
beq _0203EF9C
add r0, sp, #0xcc + SUB_0203D538_STACK_OFFSET_2
bl InitPreprocessorArgs
bl GetRank
ldr r1, _0203E4B0 ; =_020AFE74
ldr r2, [r1]
strb r0, [r2, #0xc]
ldr r0, [r1]
ldr r0, [r0, #0x3c]
bl sub_02050C10
mov r0, #4
bl sub_02017C50
ldr r1, _0203E4B0 ; =_020AFE74
ldr r0, _0203E4B8 ; =0x0000101C
ldr r2, [r1]
ldr r1, _0203EFC8 ; =0x000002A1
ldr r3, [r2, #0x3c]
add r2, sp, #0xcc + SUB_0203D538_STACK_OFFSET_2
str r3, [sp, #0xf0 + SUB_0203D538_STACK_OFFSET_2]
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x41
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203EC28:
bl sub_02046C78
cmp r0, #0
beq _0203EF9C
ldr r0, _0203E4B0 ; =_020AFE74
ldr r4, [r0]
bl GetRank
ldrb r1, [r4, #0xc]
cmp r1, r0
movne r0, #0x42
strne r0, [r4]
moveq r0, #0x4c
streq r0, [r4]
b _0203EF9C
_0203EC5C:
mov r0, #2
bl sub_02017C50
add r0, sp, #0x7c + SUB_0203D538_STACK_OFFSET_2
bl InitPreprocessorArgs
ldr r0, _0203E4B0 ; =_020AFE74
ldr r0, [r0]
ldrb r0, [r0, #0xc]
str r0, [sp, #0x94 + SUB_0203D538_STACK_OFFSET_2]
bl GetRank
str r0, [sp, #0x98 + SUB_0203D538_STACK_OFFSET_2]
ldr r0, _0203E4B8 ; =0x0000101C
ldr r1, _0203EFCC ; =0x000002A2
add r2, sp, #0x7c + SUB_0203D538_STACK_OFFSET_2
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x43
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203ECA8:
bl sub_02046C78
cmp r0, #0
ldrne r0, _0203E4B0 ; =_020AFE74
movne r1, #0x44
ldrne r0, [r0]
strne r1, [r0]
b _0203EF9C
_0203ECC4:
add r0, sp, #0x2c + SUB_0203D538_STACK_OFFSET_2
bl InitPreprocessorArgs
ldr r0, _0203E4B0 ; =_020AFE74
ldr r0, [r0]
ldrb r0, [r0, #0xc]
bl GetRankUpEntry
ldr r0, [r0, #8]
str r0, [sp, #0x50 + SUB_0203D538_STACK_OFFSET_2]
bl GetRank
bl GetRankUpEntry
ldr r1, [r0, #8]
ldr r0, [sp, #0x50 + SUB_0203D538_STACK_OFFSET_2]
str r1, [sp, #0x54 + SUB_0203D538_STACK_OFFSET_2]
cmp r0, r1
ldreq r0, _0203E4B0 ; =_020AFE74
moveq r1, #0x46
ldreq r0, [r0]
streq r1, [r0]
beq _0203EF9C
ldr r0, _0203E4B8 ; =0x0000101C
ldr r1, _0203EFD0 ; =0x000002A3
add r2, sp, #0x2c + SUB_0203D538_STACK_OFFSET_2
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x45
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203ED34:
bl sub_02046C78
cmp r0, #0
ldrne r0, _0203E4B0 ; =_020AFE74
movne r1, #0x46
ldrne r0, [r0]
strne r1, [r0]
b _0203EF9C
_0203ED50:
bl GetRank
bl GetRankUpEntry
ldrsh r0, [r0, #0xc]
strh r0, [r4, #0x88]
cmp r0, #0
bne _0203ED80
bl sub_02046D20
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x4c
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203ED80:
bl IsStorableItem
cmp r0, #0
beq _0203EDFC
ldrsh r0, [r4, #0x88]
bl IsThrownItem
cmp r0, #0
movne r0, #1
moveq r0, #0
strh r0, [r4, #0x86]
mov r0, #1
strb r0, [r4, #0x84]
ldr r0, _0203E4B0 ; =_020AFE74
ldrsh r3, [r4, #0x88]
ldr r1, [r0]
mov r2, #0
str r3, [r1, #0x9c]
ldr r1, [r0]
mov r0, #4
str r2, [r1, #0xb0]
bl sub_02017C50
ldr r1, _0203E4B0 ; =_020AFE74
ldr r0, _0203E4B8 ; =0x0000101C
ldr r2, [r1]
#ifdef JAPAN
ldr r1, _0203F370 ; =0x00002478
#else
mov r1, #0x2a4
#endif
add r2, r2, #0x8c
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x47
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203EDFC:
bl sub_02046D20
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x4c
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203EE14:
bl sub_02046C78
cmp r0, #0
ldrne r0, _0203E4B0 ; =_020AFE74
movne r1, #0x48
ldrne r0, [r0]
strne r1, [r0]
b _0203EF9C
_0203EE30:
add r0, r4, #0x84
bl AddItemToStorage
cmp r0, #0
ldreq r0, _0203E4B0 ; =_020AFE74
moveq r1, #0x49
ldreq r0, [r0]
streq r1, [r0]
beq _0203EF9C
bl sub_02046D20
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x4c
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203EE68:
ldrsh r1, [r4, #0x88]
mov r0, #0
strh r1, [sp, #0xe + SUB_0203D538_STACK_OFFSET]
ldrh r1, [r4, #0x86]
strh r1, [sp, #0xc + SUB_0203D538_STACK_OFFSET]
strb r0, [sp, #0xa + SUB_0203D538_STACK_OFFSET]
bl sub_02046D20
ldr r0, _0203E4B0 ; =_020AFE74
ldr r0, [r0]
ldr r0, [r0, #0xe4]
tst r0, #1
moveq r1, #1
movne r1, #0
add r0, sp, #0xa + SUB_0203D538_STACK_OFFSET
and r1, r1, #0xff
bl sub_020453F8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x4a
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203EEBC:
bl sub_02046028
#ifdef JAPAN
cmp r0, #2
cmpne r0, #3
beq _0203EF64
cmp r0, #4
bne _0203EF9C
ldr r1, _0203E4B0 ; =_020AFE74
ldr r0, _0203E4B8 ; =0x0000101C
ldr r2, [r1]
ldr r1, _0203EFB4 ; =0x0000245A
#else
mov r4, r0
cmp r4, #1
beq _0203EF9C
add r0, sp, #4
bl sub_02045FD0
ldrsh r0, [sp, #8]
cmp r0, #0
bne _0203EF00
ldr r0, _0203E4B0 ; =_020AFE74
ldr r1, [r0]
ldrh r0, [r1, #0x84]
strh r0, [sp, #4]
ldrh r0, [r1, #0x86]
strh r0, [sp, #6]
ldrh r0, [r1, #0x88]
strh r0, [sp, #8]
_0203EF00:
cmp r4, #2
cmpne r4, #3
beq _0203EF64
cmp r4, #4
bne _0203EF9C
ldr r0, _0203E4B0 ; =_020AFE74
ldr r2, _0203E508 ; =_0209C850
ldr r0, [r0]
add r1, sp, #4
add r0, r0, #0xe8
bl sub_0200D670
ldr r2, _0203E4B0 ; =_020AFE74
ldr r0, _0203E4B8 ; =0x0000101C
ldr r4, [r2]
ldr r1, _0203EFB4 ; =0x00000286
add r3, r4, #0xe8
str r3, [r4, #0xc4]
ldr r2, [r2]
#endif
add r2, r2, #0x8c
bl sub_02046BE8
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x4b
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203EF64:
ldr r0, _0203E4B0 ; =_020AFE74
mov r1, #0x48
ldr r0, [r0]
str r1, [r0]
b _0203EF9C
_0203EF78:
bl sub_02046C78
cmp r0, #0
ldrne r0, _0203E4B0 ; =_020AFE74
movne r1, #0x4c
ldrne r0, [r0]
strne r1, [r0]
b _0203EF9C
_0203EF94:
mov r0, #1
b _0203EFA0
_0203EF9C:
mov r0, #0
_0203EFA0:
add sp, sp, #0x11c + SUB_0203D538_STACK_OFFSET_2
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0203EFA8: .word 0x00000273 + SUB_0203D538_DATA_OFFSET
_0203EFAC: .word 0x00000275 + SUB_0203D538_DATA_OFFSET
_0203EFB0: .word 0x00000277 + SUB_0203D538_DATA_OFFSET
_0203EFB4: .word 0x00000286 + SUB_0203D538_DATA_OFFSET
#ifdef JAPAN
_0203F34C_JP: .word 0x00002FEC
#endif
_0203EFB8: .word 0x00000292 + SUB_0203D538_DATA_OFFSET
_0203EFBC: .word 0x00000293 + SUB_0203D538_DATA_OFFSET
_0203EFC0: .word 0x00000291 + SUB_0203D538_DATA_OFFSET
#ifdef JAPAN
_0203F35C_JP: .word 0x00002468
#endif
_0203EFC4: .word 0x00000272 + SUB_0203D538_DATA_OFFSET
_0203EFC8: .word 0x000002A1 + SUB_0203D538_DATA_OFFSET
_0203EFCC: .word 0x000002A2 + SUB_0203D538_DATA_OFFSET
_0203EFD0: .word 0x000002A3 + SUB_0203D538_DATA_OFFSET
#ifdef JAPAN
_0203F370: .word 0x00002478
#endif
arm_func_end sub_0203D538
arm_func_start sub_0203EFD4
sub_0203EFD4: ; 0x0203EFD4
stmdb sp!, {r3, lr}
ldr r0, _0203F008 ; =_020AFE74
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl sub_0203F05C
ldr r0, _0203F008 ; =_020AFE74
ldr r0, [r0]
bl MemFree
ldr r0, _0203F008 ; =_020AFE74
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0203F008: .word _020AFE74
arm_func_end sub_0203EFD4
arm_func_start sub_0203F00C
sub_0203F00C: ; 0x0203F00C
stmdb sp!, {r3, lr}
ldr r1, _0203F058 ; =_020AFE74
mvn r0, #1
ldr r1, [r1]
ldrsb r1, [r1, #6]
cmp r1, r0
ldmneia sp!, {r3, pc}
mov r0, #0
mov r1, #3
mov r2, #1
bl CreatePortraitBox
ldr r1, _0203F058 ; =_020AFE74
ldr r2, [r1]
strb r0, [r2, #6]
ldr r1, [r1]
ldrsb r0, [r1, #6]
add r1, r1, #0x190
bl ShowPortraitInPortraitBox
ldmia sp!, {r3, pc}
.align 2, 0
_0203F058: .word _020AFE74
arm_func_end sub_0203F00C
arm_func_start sub_0203F05C
sub_0203F05C: ; 0x0203F05C
stmdb sp!, {r3, lr}
ldr r0, _0203F0EC ; =_020AFE74
mvn r1, #1
ldr r0, [r0]
ldrsb r0, [r0, #4]
cmp r0, r1
beq _0203F08C
bl CloseParentMenu
ldr r0, _0203F0EC ; =_020AFE74
mvn r1, #1
ldr r0, [r0]
strb r1, [r0, #4]
_0203F08C:
ldr r0, _0203F0EC ; =_020AFE74
mvn r1, #1
ldr r0, [r0]
ldrsb r0, [r0, #5]
cmp r0, r1
beq _0203F0B8
bl CloseDialogueBox
ldr r0, _0203F0EC ; =_020AFE74
mvn r1, #1
ldr r0, [r0]
strb r1, [r0, #5]
_0203F0B8:
ldr r0, _0203F0EC ; =_020AFE74
mvn r1, #1
ldr r0, [r0]
ldrsb r0, [r0, #6]
cmp r0, r1
beq _0203F0E4
bl ClosePortraitBox
ldr r0, _0203F0EC ; =_020AFE74
mvn r1, #1
ldr r0, [r0]
strb r1, [r0, #6]
_0203F0E4:
bl sub_02046D20
ldmia sp!, {r3, pc}
.align 2, 0
_0203F0EC: .word _020AFE74
arm_func_end sub_0203F05C
arm_func_start sub_0203F0F0
sub_0203F0F0: ; 0x0203F0F0
stmdb sp!, {r4, lr}
ldr r1, _0203F148 ; =_020AFE78
ldr r2, _0203F14C ; =_0209C89C
ldr r3, [r1]
mov r4, r0
ldrsh r1, [r3, #0xc]
add r0, r3, #0xdc
add r1, r3, r1, lsl #2
ldr r1, [r1, #0x14]
mov r1, r1, lsl #1
ldrh r1, [r2, r1]
bl GetStringFromFileVeneer
ldr r0, _0203F148 ; =_020AFE78
mov r3, r4
ldr r4, [r0]
ldrsh r0, [r4, #0xc]
add r1, r4, #0x64
add r2, r4, #0x30
add r0, r4, r0, lsl #2
ldr r0, [r0, #0x14]
bl sub_0205A4B4
ldmia sp!, {r4, pc}
.align 2, 0
_0203F148: .word _020AFE78
_0203F14C: .word _0209C89C
arm_func_end sub_0203F0F0
arm_func_start sub_0203F150
sub_0203F150: ; 0x0203F150
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0xa0
mov r6, r0
mov r5, r1
mov r0, #0xfc
mov r1, #8
bl MemAlloc
ldr r2, _0203F340 ; =_020AFE78
mvn r1, #1
str r0, [r2]
mov ip, #0
strb r1, [r0]
mov r0, ip
_0203F184:
add r1, ip, #1
ldr r3, [r2]
mov r1, r1, lsl #0x10
add r3, r3, ip, lsl #2
mov ip, r1, asr #0x10
str r0, [r3, #0x14]
cmp ip, #6
blt _0203F184
ldr r3, _0203F344 ; =_0209C8C8
ldr r2, _0203F340 ; =_020AFE78
mov r1, #0x18
ldr ip, [r2]
mla r1, r5, r1, r3
strh r0, [ip, #0xe]
b _0203F1E0
_0203F1C0:
ldr r0, [r2]
ldr r3, [r1, lr, lsl #2]
add r0, r0, lr, lsl #2
str r3, [r0, #0x14]
ldr r3, [r2]
ldrsh r0, [r3, #0xe]
add r0, r0, #1
strh r0, [r3, #0xe]
_0203F1E0:
ldr ip, [r2]
ldrsh lr, [ip, #0xe]
cmp lr, #6
bge _0203F1FC
ldr r0, [r1, lr, lsl #2]
cmp r0, #0
bne _0203F1C0
_0203F1FC:
mov r3, #0
strh r3, [ip, #0xc]
ldr r0, _0203F340 ; =_020AFE78
sub r2, r3, #1
ldr r1, [r0]
mov ip, #1
strh r2, [r1, #0x10]
ldr r1, [r0]
strh r3, [r1, #0x12]
ldr r2, [r0]
mov r1, r6
strb ip, [r2, #0x2c]
ldr r3, [r0]
mov r2, #0x78
str r5, [r3, #4]
ldr r3, [r0]
str ip, [r3, #8]
ldr r0, [r0]
add r0, r0, #0x64
bl memcpy
ldr r0, _0203F340 ; =_020AFE78
ldr r1, _0203F348 ; =0x00000975
ldr r3, [r0]
mov r0, #0x10
str r0, [sp, #0x14]
strh r1, [sp, #0x10]
ldrsh r2, [r3, #0xc]
add r0, r3, #0xdc
mov r1, #0xc
str r1, [sp, #0xc]
str r0, [sp, #0x50]
str r2, [sp, #8]
ldrsh r2, [r3, #0xc]
ldr r1, _0203F34C ; =_0209C89C
add r2, r3, r2, lsl #2
ldr r2, [r2, #0x14]
mov r2, r2, lsl #1
ldrh r1, [r1, r2]
bl GetStringFromFileVeneer
ldr r0, _0203F340 ; =_020AFE78
ldr r2, [r0]
ldr r0, [r2, #4]
cmp r0, #3
addls pc, pc, r0, lsl #2
b _0203F324
_0203F2B0: ; jump table
b _0203F2C0 ; case 0
b _0203F2C0 ; case 1
b _0203F2FC ; case 2
b _0203F2FC ; case 3
_0203F2C0:
cmp r0, #1
ldrsh r4, [r2, #0xe]
ldreq r1, _0203F350 ; =0x60481C3B
ldr r0, _0203F354 ; =_0209C8A8
str r4, [sp]
mov r4, #1
ldrne r1, _0203F358 ; =0x60489C3B
ldr r3, _0203F35C ; =sub_0203F0F0
add r2, sp, #8
str r4, [sp, #4]
bl CreateAdvancedTextBox
ldr r1, _0203F360 ; =sub_0203F928
mov r4, r0
bl SetUnkAdvancedTextBoxWindowFn
b _0203F324
_0203F2FC:
ldrsh r4, [r2, #0xe]
ldr r0, _0203F354 ; =_0209C8A8
ldr r1, _0203F364 ; =0x60089C3B
str r4, [sp]
mov r4, #1
ldr r3, _0203F35C ; =sub_0203F0F0
add r2, sp, #8
str r4, [sp, #4]
bl CreateAdvancedTextBox
mov r4, r0
_0203F324:
ldr r0, _0203F340 ; =_020AFE78
ldr r1, [r0]
strb r4, [r1]
ldr r0, [r0]
ldrsb r0, [r0]
add sp, sp, #0xa0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0203F340: .word _020AFE78
_0203F344: .word _0209C8C8
#ifdef JAPAN
_0203F348: .word 0x00002345
#else
_0203F348: .word 0x00000975
#endif
_0203F34C: .word _0209C89C
_0203F350: .word 0x60481C3B
_0203F354: .word _0209C8A8
_0203F358: .word 0x60489C3B
_0203F35C: .word sub_0203F0F0
_0203F360: .word sub_0203F928
_0203F364: .word 0x60089C3B
arm_func_end sub_0203F150
arm_func_start sub_0203F368
sub_0203F368: ; 0x0203F368
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _0203F394 ; =_020AFE78
mov r5, r0
ldr r0, [r2]
mov r4, r1
add r0, r0, #0x64
bl sub_0205B0B8
str r0, [r5]
mov r0, #0xc
str r0, [r4]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0203F394: .word _020AFE78
arm_func_end sub_0203F368
arm_func_start sub_0203F398
sub_0203F398: ; 0x0203F398
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x10
ldr r0, _0203F8D4 ; =_020AFE78
ldr r4, [r0]
cmp r4, #0
moveq r0, #1
beq _0203F8CC
ldr r0, [r4, #8]
cmp r0, #4
addls pc, pc, r0, lsl #2
b _0203F8C8
_0203F3C4: ; jump table
b _0203F3D8 ; case 0
b _0203F404 ; case 1
b _0203F8C8 ; case 2
b _0203F83C ; case 3
b _0203F898 ; case 4
_0203F3D8:
ldrsb r0, [r4]
bl sub_020307EC
ldr r0, _0203F8D4 ; =_020AFE78
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_0202810C
ldr r0, _0203F8D4 ; =_020AFE78
mov r1, #1
ldr r0, [r0]
str r1, [r0, #8]
b _0203F8C8
_0203F404:
ldrsb r0, [r4]
mov r1, #0
bl SetUnkAdvancedTextBoxFn
ldr r0, _0203F8D4 ; =_020AFE78
#ifdef JAPAN
ldr r1, [r0]
ldrb r0, [r1, #0x2c]
cmp r0, #0
beq _0203F464
ldrsb r0, [r1]
ldrsh r1, [r1, #0x12]
#else
ldr r2, [r0]
ldrb r0, [r2, #0x2c]
cmp r0, #0
beq _0203F464
ldrsh r0, [r2, #0xc]
add r0, r2, r0, lsl #2
ldr r0, [r0, #0x14]
cmp r0, #1
ldreqsh r1, [r2, #0x12]
ldrsb r0, [r2]
movne r1, #0
#endif
bl sub_02030A50
ldr r0, _0203F8D4 ; =_020AFE78
ldr r0, [r0]
ldrsb r0, [r0]
bl SetAdvancedTextBoxField0x1C2
ldr r0, _0203F8D4 ; =_020AFE78
mov r1, #0
ldr r0, [r0]
strb r1, [r0, #0x2c]
_0203F464:
add r1, sp, #0xc
mov r0, #0
bl sub_02006498
ldr r0, _0203F8D4 ; =_020AFE78
ldr r0, [r0]
ldrsb r0, [r0]
bl GetWindowIdPageStart
ldr r1, _0203F8D4 ; =_020AFE78
ldr r2, [r1]
strh r0, [r2, #0xc]
ldr r3, [r1]
ldrsh r2, [r3, #0xc]
ldrsh r0, [r3, #0x10]
cmp r0, r2
strneh r2, [r3, #0x10]
ldrne r0, [r1]
movne r1, #1
strneb r1, [r0, #0x2c]
bne _0203F8C8
add r0, r3, r2, lsl #2
ldr r0, [r0, #0x14]
cmp r0, #1
ldrsb r0, [r3]
bne _0203F7EC
ldr r1, _0203F8D8 ; =sub_0203F368
bl SetUnkAdvancedTextBoxFn
ldr r0, _0203F8D4 ; =_020AFE78
ldr r0, [r0]
ldrsb r0, [r0]
bl GetAdvancedTextBoxFlags2
ldr r1, _0203F8D4 ; =_020AFE78
mov r4, r0
ldr r0, [r1]
ldrsb r0, [r0]
bl sub_02028354
cmp r0, #3
beq _0203F508
bl sub_0203F8EC
cmp r0, #0
movne r1, #1
bne _0203F50C
_0203F508:
mov r1, #0
_0203F50C:
ldr r0, _0203F8D4 ; =_020AFE78
and r5, r1, #0xff
ldr r0, [r0]
ldrsb r0, [r0]
bl IsAdvancedTextBoxActive
cmp r0, #0
bne _0203F588
ldr r0, _0203F8D4 ; =_020AFE78
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_02030908
cmp r0, #0
blt _0203F558
bl sub_0203F8EC
cmp r0, #0
beq _0203F558
bl sub_02001808
cmp r0, #0xa000
bge _0203F560
_0203F558:
mov r0, #1
b _0203F8CC
_0203F560:
ldr r0, _0203F8D4 ; =_020AFE78
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_0202812C
ldr r0, _0203F8D4 ; =_020AFE78
mov r1, #3
ldr r0, [r0]
mov r5, #0
str r1, [r0, #8]
b _0203F748
_0203F588:
ldrh r0, [sp, #0xc]
tst r0, #8
cmpne r5, #0
beq _0203F5FC
bl sub_0203F8EC
cmp r0, #0
beq _0203F748
ldr r0, _0203F8D4 ; =_020AFE78
mov r1, #0
ldr r0, [r0]
ldrsb r0, [r0]
bl PlayAdvancedTextBoxInputSound
bl sub_02001808
cmp r0, #0xa000
blt _0203F748
ldr r0, _0203F8D4 ; =_020AFE78
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_02030EF0
ldr r0, _0203F8D4 ; =_020AFE78
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_0202812C
ldr r0, _0203F8D4 ; =_020AFE78
mov r1, #3
ldr r0, [r0]
mov r5, #0
str r1, [r0, #8]
b _0203F748
_0203F5FC:
tst r0, #0x40
bne _0203F60C
tst r4, #0x40000
beq _0203F698
_0203F60C:
cmp r5, #0
beq _0203F698
ldr r0, _0203F8D4 ; =_020AFE78
ldr r2, [r0]
ldrsh r1, [r2, #0x12]
cmp r1, #0
bne _0203F660
ldrsh r1, [r2, #0xba]
cmp r1, #0
beq _0203F748
sub r1, r1, #1
strh r1, [r2, #0xba]
ldr r0, [r0]
mov r1, #1
strb r1, [r0, #0x2c]
ldrh r0, [sp, #0xc]
tst r0, #0x40
beq _0203F748
mov r0, #3
bl PlaySeVolumeWrapper
b _0203F748
_0203F660:
ldrsb r0, [r2]
bl sub_02030A64
cmp r0, #0
bne _0203F680
tst r4, #0x40000
bne _0203F680
mov r0, #3
bl PlaySeVolumeWrapper
_0203F680:
ldr r0, _0203F8D4 ; =_020AFE78
ldr r1, [r0]
ldrsh r0, [r1, #0x12]
sub r0, r0, #1
strh r0, [r1, #0x12]
b _0203F748
_0203F698:
tst r0, #0x80
bne _0203F6A8
tst r4, #0x80000
beq _0203F748
_0203F6A8:
cmp r5, #0
beq _0203F748
ldr r0, _0203F8D4 ; =_020AFE78
ldr r3, [r0]
ldrsh r1, [r3, #0x12]
cmp r1, #8
bne _0203F708
ldrsh r2, [r3, #0xba]
add r1, r2, #9
add r1, r3, r1
ldrb r1, [r1, #0xbc]
cmp r1, #0
beq _0203F748
add r1, r2, #1
strh r1, [r3, #0xba]
ldr r0, [r0]
mov r1, #1
strb r1, [r0, #0x2c]
ldrh r0, [sp, #0xc]
tst r0, #0x80
beq _0203F748
mov r0, #3
bl PlaySeVolumeWrapper
b _0203F748
_0203F708:
ldrsb r0, [r3]
bl sub_02030A64
cmp r0, #8
bne _0203F728
tst r4, #0x80000
bne _0203F728
mov r0, #3
bl PlaySeVolumeWrapper
_0203F728:
ldr r0, _0203F8D4 ; =_020AFE78
ldr r2, [r0]
ldrsh r0, [r2, #0x12]
add r1, r0, #1
add r0, r2, r1
ldrb r0, [r0, #0xbc]
cmp r0, #0
strneh r1, [r2, #0x12]
_0203F748:
ldr r0, _0203F8D4 ; =_020AFE78
ldr r1, [r0]
ldrsh r0, [r1, #0xba]
add r0, r0, #9
add r0, r1, r0
ldrb r0, [r0, #0xbc]
cmp r0, #0
ldrsb r0, [r1]
mov r1, #0x40000000
beq _0203F778
bl sub_02030A90
b _0203F77C
_0203F778:
bl sub_02030A74
_0203F77C:
ldr r0, _0203F8D4 ; =_020AFE78
ldr r1, [r0]
ldrsh r0, [r1, #0xba]
cmp r0, #0
ldrsb r0, [r1]
mov r1, #0x20000000
bne _0203F7A0
bl sub_02030A74
b _0203F7A4
_0203F7A0:
bl sub_02030A90
_0203F7A4:
cmp r5, #0
beq _0203F7D8
ldr r0, _0203F8D4 ; =_020AFE78
mov r3, #0xc
ldr r0, [r0]
mov r1, #1
ldrsh r4, [r0, #0x12]
ldrsb r0, [r0]
mov r2, #3
smulbb r3, r4, r3
add r3, r3, #0x11
bl sub_02030978
b _0203F8C8
_0203F7D8:
ldr r0, _0203F8D4 ; =_020AFE78
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_020288DC
b _0203F8C8
_0203F7EC:
mov r1, #0x20000000
bl sub_02030A74
ldr r0, _0203F8D4 ; =_020AFE78
mov r1, #0x40000000
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_02030A74
ldr r0, _0203F8D4 ; =_020AFE78
ldr r0, [r0]
ldrsb r0, [r0]
bl IsAdvancedTextBoxActive
cmp r0, #0
beq _0203F834
ldr r0, _0203F8D4 ; =_020AFE78
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_020288DC
b _0203F8C8
_0203F834:
mov r0, #1
b _0203F8CC
_0203F83C:
ldrsh r2, [r4, #0xba]
ldrsh r0, [r4, #0x12]
ldr r3, _0203F8DC ; =_0209E912
ldr r1, _0203F8E0 ; =STATUSES_FULL_DESCRIPTION_STRING_IDS
add r0, r2, r0
add r0, r4, r0
ldrb r4, [r0, #0xbc]
mov r2, #0
ldr r0, _0203F8E4 ; =_0209C8B8
mov r5, r4, lsl #2
ldrh r4, [r3, r5]
ldrh r3, [r1, r5]
ldr r1, _0203F8E8 ; =0x00001013
stmia sp, {r2, r4}
str r2, [sp, #8]
bl CreateScrollBoxSingle
ldr r1, _0203F8D4 ; =_020AFE78
mov r2, #4
ldr r3, [r1]
strb r0, [r3, #1]
ldr r0, [r1]
str r2, [r0, #8]
b _0203F8C8
_0203F898:
ldrsb r0, [r4, #1]
bl IsScrollBoxActive
cmp r0, #0
bne _0203F8C8
ldr r0, _0203F8D4 ; =_020AFE78
ldr r0, [r0]
ldrsb r0, [r0, #1]
bl CloseScrollBox
ldr r0, _0203F8D4 ; =_020AFE78
mov r1, #0
ldr r0, [r0]
str r1, [r0, #8]
_0203F8C8:
mov r0, #0
_0203F8CC:
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0203F8D4: .word _020AFE78
_0203F8D8: .word sub_0203F368
_0203F8DC: .word _0209E912
_0203F8E0: .word STATUSES_FULL_DESCRIPTION_STRING_IDS
_0203F8E4: .word _0209C8B8
_0203F8E8: .word 0x00001013
arm_func_end sub_0203F398
arm_func_start sub_0203F8EC
sub_0203F8EC: ; 0x0203F8EC
ldr r0, _0203F924 ; =_020AFE78
mov r1, #0
ldr r2, [r0]
b _0203F914
_0203F8FC:
add r0, r2, r1
ldrb r0, [r0, #0xbc]
cmp r0, #0
movne r0, #1
bxne lr
add r1, r1, #1
_0203F914:
cmp r1, #0x1e
blt _0203F8FC
mov r0, #0
bx lr
.align 2, 0
_0203F924: .word _020AFE78
arm_func_end sub_0203F8EC
arm_func_start sub_0203F928
sub_0203F928: ; 0x0203F928
stmdb sp!, {r4, lr}
mov r4, r0
cmp r1, #0
ldmeqia sp!, {r4, pc}
bl sub_02030908
ldr r2, _0203F970 ; =_020AFE78
mov r3, #0xc
ldr ip, [r2]
mov r1, #1
strh r0, [ip, #0x12]
ldr r2, [r2]
mov r0, r4
ldrsh ip, [r2, #0x12]
mov r2, #3
smulbb r3, ip, r3
add r3, r3, #0x11
bl sub_02030978
ldmia sp!, {r4, pc}
.align 2, 0
_0203F970: .word _020AFE78
arm_func_end sub_0203F928
arm_func_start sub_0203F974
sub_0203F974: ; 0x0203F974
ldr r0, _0203F988 ; =_020AFE78
ldr ip, _0203F98C ; =SetAdvancedTextBoxState5
ldr r0, [r0]
ldrsb r0, [r0]
bx ip
.align 2, 0
_0203F988: .word _020AFE78
_0203F98C: .word SetAdvancedTextBoxState5
arm_func_end sub_0203F974
arm_func_start sub_0203F990
sub_0203F990: ; 0x0203F990
stmdb sp!, {r3, lr}
ldr r0, _0203F9C8 ; =_020AFE78
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0]
bl CloseAdvancedTextBox
ldr r0, _0203F9C8 ; =_020AFE78
ldr r0, [r0]
bl MemFree
ldr r0, _0203F9C8 ; =_020AFE78
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0203F9C8: .word _020AFE78
arm_func_end sub_0203F990
arm_func_start sub_0203F9CC
sub_0203F9CC: ; 0x0203F9CC
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _0203FA50 ; =_022AADFC
mov r2, #0
mov r5, r0
str r2, [r1]
ldr r4, [r5, #0xb4]
ldr r0, _0203FA54 ; =_022AAE00
mov r1, r4
bl GetMonsterName
ldr r0, _0203FA58 ; =_022AAE2A
#ifdef JAPAN
add r1, r4, #0x120
#else
add r1, r4, #0x124
#endif
mov r2, #0x22
bl memcpy
ldrb r2, [r4, #7]
ldr r1, _0203FA50 ; =_022AADFC
mov r0, #0
strb r2, [r1, #0x2c]
str r5, [r1]
strb r0, [r1, #0x58]
ldrsh r2, [r4, #4]
ldr r0, _0203FA5C ; =0x000001A2
ldr r3, _0203FA60 ; =_022AAE58
cmp r2, r0
moveq r0, #1
streqb r0, [r1, #0x58]
ldrsh r1, [r4, #2]
ldr r0, _0203FA50 ; =_022AADFC
strh r1, [r0, #0x5a]
add r0, r4, #0x9c
ldmia r0, {r0, r1, r2}
stmia r3, {r0, r1, r2}
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0203FA50: .word _022AADFC
_0203FA54: .word _022AAE00
_0203FA58: .word _022AAE2A
_0203FA5C: .word 0x000001A2
_0203FA60: .word _022AAE58
arm_func_end sub_0203F9CC
arm_func_start sub_0203FA64
sub_0203FA64: ; 0x0203FA64
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x14
ldr r1, _0203FBBC ; =TEAM_MEMBER_TABLE_PTR
mov sl, r0
mov r0, #0x44
smulbb r2, sl, r0
ldr r1, [r1]
mov r4, #0x46
ldrb r0, [r1, r2]
add r8, r1, r2
tst r0, #1
movne r0, #1
moveq r0, #0
tst r0, #0xff
moveq r0, #0
beq _0203FBB4
ldr r1, _0203FBC0 ; =_022AADFC
mov r2, #0
mov r0, sl
str r2, [r1]
bl sub_02056410
cmp r0, #0
mov r0, sl
beq _0203FAD4
bl sub_020564B0
cmp r0, #0
movne r4, #0x59
b _0203FAE4
_0203FAD4:
bl sub_02056F60
cmp r0, #0
movne r4, #0x44
moveq r4, #0x57
_0203FAE4:
add r0, sp, #0
add r1, r8, #0x3a
mov r2, #0xa
bl StrncpySimpleNoPadSafe
ldr r0, _0203FBC4 ; =_022AAE00
ldr r1, _0203FBC8 ; =_0209C96C
add r3, sp, #0
and r2, r4, #0xff
bl SprintfStatic__0204174C
ldrsh r1, [r8, #4]
ldr r0, _0203FBC0 ; =_022AADFC
ldr r3, _0203FBCC ; =_022AAE58
strh r1, [r0, #0x5a]
add r4, r8, #0x14
ldmia r4, {r0, r1, r2}
stmia r3, {r0, r1, r2}
ldrsh r0, [r8, #4]
mov r1, r4
bl GetPpIncrease
mov r6, #0
ldr r5, _0203FBD0 ; =_022AAE2A
ldr r4, _0203FBC0 ; =_022AADFC
mov r7, r0
mov fp, r6
_0203FB44:
mov r0, #6
mla sb, r6, r0, r8
ldrh r1, [sb, #0x24]
add r0, r5, r6, lsl #3
bl InitMove
ldrb r1, [sb, #0x22]
add r2, r4, r6, lsl #3
add r0, r5, r6, lsl #3
strb r1, [r2, #0x2e]
strh r7, [r2, #0x30]
strb fp, [r2, #0x34]
ldrb r1, [sb, #0x26]
strb r1, [r2, #0x35]
bl GetMaxPp
add r1, r6, #1
add r2, r4, r6, lsl #3
mov r1, r1, lsl #0x10
mov r6, r1, lsr #0x10
strb r0, [r2, #0x34]
cmp r6, #4
blo _0203FB44
mov r0, sl
bl sub_020564B0
ldr r1, _0203FBC0 ; =_022AADFC
strb r0, [r1, #0x2c]
ldrsh r0, [r8, #4]
bl sub_02041724
mov r0, #1
_0203FBB4:
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0203FBBC: .word TEAM_MEMBER_TABLE_PTR
_0203FBC0: .word _022AADFC
_0203FBC4: .word _022AAE00
_0203FBC8: .word _0209C96C
_0203FBCC: .word _022AAE58
_0203FBD0: .word _022AAE2A
arm_func_end sub_0203FA64
arm_func_start sub_0203FBD4
sub_0203FBD4: ; 0x0203FBD4
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x14
ldr r1, _0203FCFC ; =TEAM_MEMBER_TABLE_PTR
mov r2, #0x68
ldr r1, [r1]
ldr r3, _0203FD00 ; =_022AADFC
add r1, r1, #0x9000
ldr r1, [r1, #0x84c]
mov r4, #0
smlabb r8, r0, r2, r1
str r4, [r3]
ldrsh r0, [r8, #8]
sub r1, r4, #1
cmp r0, r1
streqb r4, [r3, #0x2c]
beq _0203FC20
bl sub_020564B0
ldr r1, _0203FD00 ; =_022AADFC
strb r0, [r1, #0x2c]
_0203FC20:
ldr r0, _0203FD00 ; =_022AADFC
add r1, r8, #0x5e
ldrb r0, [r0, #0x2c]
mov r2, #0xa
cmp r0, #0
movne r4, #0x59
add r0, sp, #0
moveq r4, #0x46
bl StrncpySimpleNoPadSafe
ldr r0, _0203FD04 ; =_022AAE00
ldr r1, _0203FD08 ; =_0209C96C
add r3, sp, #0
and r2, r4, #0xff
bl SprintfStatic__0204174C
ldrsh r0, [r8, #0xc]
add r1, r8, #0x4c
bl GetPpIncrease
ldr r5, _0203FD0C ; =_022AAE2A
ldr r4, _0203FD00 ; =_022AADFC
mov r7, r0
mov r6, #0
_0203FC74:
add r0, r8, r6, lsl #3
ldrh r1, [r0, #0x20]
add r0, r5, r6, lsl #3
bl InitMove
add r3, r8, r6, lsl #3
ldrb r1, [r3, #0x1c]
add r2, r4, r6, lsl #3
add r0, r5, r6, lsl #3
strb r1, [r2, #0x2e]
strh r7, [r2, #0x30]
ldrb r1, [r3, #0x22]
strb r1, [r2, #0x34]
ldrb r1, [r3, #0x23]
strb r1, [r2, #0x35]
bl GetMaxPp
add r1, r6, #1
add r2, r4, r6, lsl #3
mov r1, r1, lsl #0x10
mov r6, r1, lsr #0x10
strb r0, [r2, #0x34]
cmp r6, #4
blo _0203FC74
ldrsh r0, [r8, #0xc]
bl sub_02041724
ldrsh r1, [r8, #0xc]
ldr r0, _0203FD00 ; =_022AADFC
ldr r3, _0203FD10 ; =_022AAE58
strh r1, [r0, #0x5a]
add r0, r8, #0x4c
ldmia r0, {r0, r1, r2}
stmia r3, {r0, r1, r2}
mov r0, #1
add sp, sp, #0x14
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_0203FCFC: .word TEAM_MEMBER_TABLE_PTR
_0203FD00: .word _022AADFC
_0203FD04: .word _022AAE00
_0203FD08: .word _0209C96C
_0203FD0C: .word _022AAE2A
_0203FD10: .word _022AAE58
arm_func_end sub_0203FBD4
arm_func_start sub_0203FD14
sub_0203FD14: ; 0x0203FD14
ldr ip, _0203FD24 ; =InitMove
mov r1, r0
ldr r0, _0203FD28 ; =LAST_NEW_MOVE
bx ip
.align 2, 0
_0203FD24: .word InitMove
_0203FD28: .word LAST_NEW_MOVE
arm_func_end sub_0203FD14
arm_func_start sub_0203FD2C
sub_0203FD2C: ; 0x0203FD2C
ldr r0, _0203FD34 ; =LAST_NEW_MOVE
bx lr
.align 2, 0
_0203FD34: .word LAST_NEW_MOVE
arm_func_end sub_0203FD2C
arm_func_start sub_0203FD38
sub_0203FD38: ; 0x0203FD38
ldr r0, _0203FD40 ; =_022AAE2A
bx lr
.align 2, 0
_0203FD40: .word _022AAE2A
arm_func_end sub_0203FD38
arm_func_start sub_0203FD44
sub_0203FD44: ; 0x0203FD44
stmdb sp!, {r4, lr}
ldr r4, [r0, #0xb4]
ldr r1, _0203FD74 ; =_022AAE2A
#ifdef JAPAN
add r0, r4, #0x120
#else
add r0, r4, #0x124
#endif
mov r2, #0x22
bl memcpy
ldr r1, _0203FD78 ; =_022AADFC
ldr r0, _0203FD7C ; =_020AFE7C
ldrb r1, [r1, #0x2c]
strb r1, [r4, #7]
ldrsh r0, [r0, #2]
ldmia sp!, {r4, pc}
.align 2, 0
_0203FD74: .word _022AAE2A
_0203FD78: .word _022AADFC
_0203FD7C: .word _020AFE7C
arm_func_end sub_0203FD44
arm_func_start sub_0203FD80
sub_0203FD80: ; 0x0203FD80
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _0203FDE0 ; =TEAM_MEMBER_TABLE_PTR
mov r1, #0x44
ldr r2, [r2]
ldr ip, _0203FDE4 ; =_022AADFC
mla r5, r0, r1, r2
mov r4, #0
mov r0, #6
_0203FDA0:
mla lr, r4, r0, r5
add r3, ip, r4, lsl #3
ldrb r2, [r3, #0x2e]
add r1, r4, #1
mov r1, r1, lsl #0x10
strb r2, [lr, #0x22]
ldrh r2, [r3, #0x32]
mov r4, r1, lsr #0x10
cmp r4, #4
strh r2, [lr, #0x24]
ldrb r1, [r3, #0x35]
strb r1, [lr, #0x26]
blo _0203FDA0
ldr r0, _0203FDE8 ; =_020AFE7C
ldrsh r0, [r0, #2]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0203FDE0: .word TEAM_MEMBER_TABLE_PTR
_0203FDE4: .word _022AADFC
_0203FDE8: .word _020AFE7C
arm_func_end sub_0203FD80
arm_func_start sub_0203FDEC
sub_0203FDEC: ; 0x0203FDEC
stmdb sp!, {r4, lr}
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl GetActiveTeamMember
ldr lr, _0203FE54 ; =_022AADFC
mov r4, #0
_0203FE04:
add ip, lr, r4, lsl #3
ldrb r2, [ip, #0x2e]
add r3, r0, r4, lsl #3
add r1, r4, #1
strb r2, [r3, #0x1c]
ldrh r2, [ip, #0x30]
mov r1, r1, lsl #0x10
mov r4, r1, lsr #0x10
strh r2, [r3, #0x1e]
ldrh r1, [ip, #0x32]
cmp r4, #4
strh r1, [r3, #0x20]
ldrb r1, [ip, #0x34]
strb r1, [r3, #0x22]
ldrb r1, [ip, #0x35]
strb r1, [r3, #0x23]
blo _0203FE04
ldr r0, _0203FE58 ; =_020AFE7C
ldrsh r0, [r0, #2]
ldmia sp!, {r4, pc}
.align 2, 0
_0203FE54: .word _022AADFC
_0203FE58: .word _020AFE7C
arm_func_end sub_0203FDEC
arm_func_start sub_0203FE5C
sub_0203FE5C: ; 0x0203FE5C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #8
mov r7, r0
mov r6, r1
mov r0, #0x3fc
mov r1, #8
mov r5, r2
mov r4, r3
bl MemAlloc
ldr r1, _02040154 ; =_020AFE7C
mvn r2, #1
str r0, [r1, #8]
strb r2, [r0]
ldr r0, [r1, #0xc]
ldr r2, _02040154 ; =_020AFE7C
cmp r0, r7
strne r7, [r1, #0xc]
movne r0, #0
strneh r0, [r1, #2]
ldr r0, _02040154 ; =_020AFE7C
ldr r3, _02040158 ; =0x00000A3E
ldrsh r1, [r0, #4]
mov r7, #0x17
cmp r1, r6
strneh r6, [r0, #4]
movne r1, #0
strneh r1, [r0, #2]
ldr r0, [r2, #8]
mov r1, #0x10
str r1, [r0, #0x10]
ldr r0, [r2, #8]
str r1, [r0, #8]
ldr r0, [r2, #8]
mov r1, #0
strh r3, [r0, #0xc]
ldr r0, [r2, #8]
ldr r3, _0204015C ; =_022AAE00
str r7, [r0, #0x98]
ldr r0, [r2, #8]
str r1, [r0, #0x64]
ldr r0, [r2, #8]
str r3, [r0, #0x4c]
ldr r0, [r2, #8]
strb r1, [r0, #0x3f8]
ldr r0, [r2, #8]
str r4, [r0, #0x3f4]
ldr r0, [r2, #0xc]
cmp r0, #7
addls pc, pc, r0, lsl #2
b _0203FF44
_0203FF24: ; jump table
b _02040084 ; case 0
b _0203FF44 ; case 1
b _0203FFAC ; case 2
b _0204003C ; case 3
b _0203FF44 ; case 4
b _0203FF44 ; case 5
b _0203FFF4 ; case 6
b _0203FF7C ; case 7
_0203FF44:
mov r1, #0
str r1, [sp]
ldr r0, _02040154 ; =_020AFE7C
str r1, [sp, #4]
ldr r2, [r0, #8]
ldr r0, _02040160 ; =_0209C93C
ldr r1, _02040164 ; =0x00401803
ldr r3, _02040168 ; =sub_020401A8
add r2, r2, #4
bl CreateAdvancedTextBox
ldr r1, _02040154 ; =_020AFE7C
ldr r1, [r1, #8]
strb r0, [r1]
b _020400FC
_0203FF7C:
str r1, [sp]
str r1, [sp, #4]
ldr r2, [r2, #8]
ldr r0, _0204016C ; =_0209C94C
ldr r1, _02040170 ; =0x00400800
ldr r3, _02040168 ; =sub_020401A8
add r2, r2, #4
bl CreateAdvancedTextBox
ldr r1, _02040154 ; =_020AFE7C
ldr r1, [r1, #8]
strb r0, [r1]
b _020400FC
_0203FFAC:
ldr r0, [r2, #8]
mov r3, #1
strb r3, [r0, #0x3f8]
ldr r4, [r2, #8]
ldr r0, _02040174 ; =_0209C92C
add r3, r4, #0x3e0
str r3, [r4, #0x64]
str r1, [sp]
str r1, [sp, #4]
ldr r2, [r2, #8]
ldr r1, _02040164 ; =0x00401803
ldr r3, _02040168 ; =sub_020401A8
add r2, r2, #4
bl CreateAdvancedTextBox
ldr r1, _02040154 ; =_020AFE7C
ldr r1, [r1, #8]
strb r0, [r1]
b _020400FC
_0203FFF4:
ldr r0, [r2, #8]
mov r3, #1
strb r3, [r0, #0x3f8]
ldr r4, [r2, #8]
ldr r0, _02040174 ; =_0209C92C
add r3, r4, #0x3e0
str r3, [r4, #0x64]
str r1, [sp]
str r1, [sp, #4]
ldr r2, [r2, #8]
ldr r1, _02040178 ; =0x00401A03
ldr r3, _02040168 ; =sub_020401A8
add r2, r2, #4
bl CreateAdvancedTextBox
ldr r1, _02040154 ; =_020AFE7C
ldr r1, [r1, #8]
strb r0, [r1]
b _020400FC
_0204003C:
ldr r0, [r2, #8]
mov r3, #1
strb r3, [r0, #0x3f8]
ldr r4, [r2, #8]
ldr r0, _0204017C ; =_0209C95C
add r3, r4, #0x3e0
str r3, [r4, #0x64]
str r1, [sp]
str r1, [sp, #4]
ldr r2, [r2, #8]
ldr r1, _02040180 ; =0x00400A00
ldr r3, _02040168 ; =sub_020401A8
add r2, r2, #4
bl CreateAdvancedTextBox
ldr r1, _02040154 ; =_020AFE7C
ldr r1, [r1, #8]
strb r0, [r1]
b _020400FC
_02040084:
cmp r6, #1
ble _020400C8
ldr r1, [r2, #8]
mov r0, #1
str r5, [r1, #4]
str r6, [sp]
str r0, [sp, #4]
ldr r2, [r2, #8]
ldr r0, _02040160 ; =_0209C93C
ldr r1, _02040184 ; =0x00409823
ldr r3, _02040168 ; =sub_020401A8
add r2, r2, #4
bl CreateAdvancedTextBox
ldr r1, _02040154 ; =_020AFE7C
ldr r1, [r1, #8]
strb r0, [r1]
b _020400FC
_020400C8:
ldr r3, [r2, #8]
ldr r0, _02040160 ; =_0209C93C
str r1, [r3, #4]
str r1, [sp]
str r1, [sp, #4]
ldr r2, [r2, #8]
ldr r1, _02040188 ; =0x00401823
ldr r3, _02040168 ; =sub_020401A8
add r2, r2, #4
bl CreateAdvancedTextBox
ldr r1, _02040154 ; =_020AFE7C
ldr r1, [r1, #8]
strb r0, [r1]
_020400FC:
ldr r0, _02040154 ; =_020AFE7C
ldr r0, [r0, #8]
ldrsb r0, [r0]
bl GetWindowIdPageStart
ldr r1, _02040154 ; =_020AFE7C
ldr r1, [r1, #8]
add r1, r1, #0x300
strh r0, [r1, #0xe8]
mov r0, #1
bl sub_0204027C
bl PrintMoveOptionMenu
ldr r1, _02040154 ; =_020AFE7C
mov r2, #0
ldr r0, [r1, #8]
strb r2, [r0, #0x3e5]
ldr r0, [r1, #8]
add r0, r0, #0x300
strh r2, [r0, #0xe6]
ldr r0, [r1, #8]
ldrsb r0, [r0]
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02040154: .word _020AFE7C
#ifdef JAPAN
_02040158: .word 0x00000879
#else
_02040158: .word 0x00000A3E
#endif
_0204015C: .word _022AAE00
_02040160: .word _0209C93C
_02040164: .word 0x00401803
_02040168: .word sub_020401A8
_0204016C: .word _0209C94C
_02040170: .word 0x00400800
_02040174: .word _0209C92C
_02040178: .word 0x00401A03
_0204017C: .word _0209C95C
_02040180: .word 0x00400A00
_02040184: .word 0x00409823
_02040188: .word 0x00401823
arm_func_end sub_0203FE5C
arm_func_start sub_0204018C
sub_0204018C: ; 0x0204018C
ldr ip, _02040198 ; =sub_0203FE5C
mov r3, #0
bx ip
.align 2, 0
_02040198: .word sub_0203FE5C
arm_func_end sub_0204018C
arm_func_start sub_0204019C
sub_0204019C: ; 0x0204019C
ldr ip, _020401A4 ; =sub_0203FE5C
bx ip
.align 2, 0
_020401A4: .word sub_0203FE5C
arm_func_end sub_0204019C
arm_func_start sub_020401A8
sub_020401A8: ; 0x020401A8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
bl sub_02027B1C
ldr r4, _02040274 ; =_020AFE7C
mov sb, #0
ldr r0, [r4, #8]
ldr r7, _02040278 ; =_022AADFC
ldr r0, [r0, #0x10]
mov fp, #8
mov r0, r0, lsl #0x10
mov r8, r0, asr #0x10
mov r6, #0xd
mov r5, #0x17
b _02040250
_020401E0:
add r0, r7, sb, lsl #3
ldrb r0, [r0, #0x2e]
tst r0, #2
add r0, r2, sb, lsl #3
movne r1, r6
ldr r3, [r0, #0xa8]
moveq r1, fp
mov r0, sl
add r2, r8, #2
bl DrawTextInWindow
cmp sb, #0
ble _02040238
add r0, r7, sb, lsl #3
ldrb r0, [r0, #0x2e]
tst r0, #2
bne _02040238
mov r0, sl
mov r1, #0x10
mov r2, r8
mov r3, #0x7e
str r5, [sp]
bl sub_02025D50
_02040238:
add r0, r8, #0x10
add r1, sb, #1
mov r0, r0, lsl #0x10
mov r1, r1, lsl #0x10
mov r8, r0, asr #0x10
mov sb, r1, asr #0x10
_02040250:
ldr r2, [r4, #8]
ldrsh r0, [r2, #0xa4]
cmp sb, r0
blt _020401E0
mov r0, #1
bl sub_0204027C
mov r0, sl
bl UpdateWindow
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02040274: .word _020AFE7C
_02040278: .word _022AADFC
arm_func_end sub_020401A8
arm_func_start sub_0204027C
sub_0204027C: ; 0x0204027C
cmp r0, #0
ldrne r0, _020402BC ; =_020AFE7C
movne r3, #2
ldrne r2, [r0, #8]
ldreq r0, _020402BC ; =_020AFE7C
moveq r3, #1
ldreq r2, [r0, #8]
movne r1, #1
str r3, [r2, #0x3ec]
ldr r0, [r0, #8]
moveq r1, #2
str r1, [r0, #0x3f0]
ldr r0, _020402BC ; =_020AFE7C
ldr r0, [r0, #0xc]
cmp r0, #7
bx lr
.align 2, 0
_020402BC: .word _020AFE7C
arm_func_end sub_0204027C
arm_func_start PrintMoveOptionMenu
PrintMoveOptionMenu: ; 0x020402C0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x5c
ldr r0, _020407AC ; =_020AFE7C
ldr r2, _020407B0 ; =_022AAE00
ldr r1, [r0, #8]
str r2, [r1, #0x4c]
ldr r1, [r0, #0xc]
cmp r1, #2
cmpne r1, #3
cmpne r1, #6
beq _020402FC
ldrsh r1, [r0, #2]
cmp r1, #4
movge r1, #0
strgeh r1, [r0, #2]
_020402FC:
ldr r0, _020407AC ; =_020AFE7C
ldrsh r0, [r0, #2]
bl sub_020410A4
ldr r1, _020407AC ; =_020AFE7C
mov r0, #0
ldr r1, [r1, #8]
strh r0, [r1, #0xa4]
_02040318:
ldr r1, _020407AC ; =_020AFE7C
ldr r2, _020407B4 ; =_022AAE2A
ldr r1, [r1, #8]
mov r3, #0
add r1, r1, r0
strb r3, [r1, #0x3e0]
ldrb r1, [r2, r0, lsl #3]
add r4, r2, r0, lsl #3
tst r1, #1
movne r3, #1
tst r3, #0xff
beq _020403B4
ldr r1, _020407AC ; =_020AFE7C
ldr r3, [r1, #8]
ldrsh r2, [r3, #0xa4]
add r2, r2, #1
strh r2, [r3, #0xa4]
ldr r5, [r1, #8]
ldrb r1, [r5, #0x3f8]
cmp r1, #0
ldrne r2, [r5, #0x3f4]
cmpne r2, #0
beq _020403C8
ldrh r1, [r4, #4]
b _02040388
_0204037C:
cmp r3, r1
beq _02040394
add r2, r2, #2
_02040388:
ldrh r3, [r2]
cmp r3, #0
bne _0204037C
_02040394:
cmp r3, #0
movne r1, #1
moveq r1, #0
tst r1, #0xff
addne r1, r5, r0
movne r2, #3
strneb r2, [r1, #0x3e0]
b _020403C8
_020403B4:
ldr r1, _020407AC ; =_020AFE7C
ldrsh r2, [r1, #2]
cmp r0, r2
moveq r2, #0
streqh r2, [r1, #2]
_020403C8:
add r0, r0, #1
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
cmp r0, #4
blt _02040318
ldr r1, _020407AC ; =_020AFE7C
mov r0, #0
ldr r2, [r1, #8]
strb r0, [r2, #0x3e4]
ldr r2, [r1, #8]
ldrb r1, [r2, #0x3f8]
cmp r1, #0
ldrne r1, [r2, #0x3f4]
cmpne r1, #0
beq _020404B4
_02040404:
ldr r1, _020407AC ; =_020AFE7C
ldr r3, _020407B4 ; =_022AAE2A
ldr r2, [r1, #8]
add r2, r2, r0
ldrb r2, [r2, #0x3e0]
tst r2, #1
beq _020404A0
ldrb r2, [r3, r0, lsl #3]
tst r2, #2
beq _02040464
sub r6, r0, #1
mov r5, #3
ldr r3, _020407B8 ; =_022AADFC
b _0204045C
_0204043C:
ldr r4, [r1, #8]
add r2, r3, r6, lsl #3
add r4, r4, r6
strb r5, [r4, #0x3e0]
ldrb r2, [r2, #0x2e]
tst r2, #2
beq _02040464
sub r6, r6, #1
_0204045C:
cmp r6, #0
bge _0204043C
_02040464:
add r5, r0, #1
ldr r4, _020407B8 ; =_022AADFC
mov r3, #3
ldr r1, _020407AC ; =_020AFE7C
b _02040498
_02040478:
add r2, r4, r5, lsl #3
ldrb r2, [r2, #0x2e]
tst r2, #2
beq _020404A0
ldr r2, [r1, #8]
add r2, r2, r5
strb r3, [r2, #0x3e0]
add r5, r5, #1
_02040498:
cmp r5, #4
blt _02040478
_020404A0:
add r0, r0, #1
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
cmp r0, #4
blt _02040404
_020404B4:
ldr r0, _020407AC ; =_020AFE7C
mov r8, #0
ldr r0, [r0, #0xc]
ldr fp, _020407B4 ; =_022AAE2A
cmp r0, #2
cmpne r0, #3
cmpne r0, #6
ldreq r0, _020407AC ; =_020AFE7C
ldr r5, _020407B8 ; =_022AADFC
ldreq r1, [r0, #8]
ldr r4, _020407AC ; =_020AFE7C
ldreqsh r0, [r1, #0xa4]
mov sb, r8
mov r7, r8
addeq r0, r0, #1
streqh r0, [r1, #0xa4]
mov r6, #0x6a
_020404F8:
ldrb r0, [fp, sb, lsl #3]
str r7, [sp]
str r6, [sp, #4]
tst r0, #1
movne r0, #1
moveq r0, r7
strb r7, [sp, #8]
strb r7, [sp, #9]
add sl, fp, sb, lsl #3
tst r0, #0xff
beq _02040634
ldrb r0, [r5, #0x2c]
cmp r0, #0
movne r0, #2
strne r0, [sp]
moveq r0, #4
streq r0, [sp]
ldr r0, [r4, #0xc]
cmp r0, #1
cmpne r0, #5
bne _02040574
ldrh r0, [sl, #4]
bl Is2TurnsMove
cmp r0, #0
movne r0, #1
strneb r0, [sp, #9]
bne _02040574
ldrh r0, [sl, #4]
cmp r0, #0x8a
moveq r0, #1
streqb r0, [sp, #8]
_02040574:
ldr r0, [r4, #0xc]
cmp r0, #0
cmpne r0, #1
bne _020405A4
ldr r0, [r5]
mov r1, sl
mov r2, #1
bl CanMonsterUseMove
cmp r0, #0
moveq r0, #1
streqb r0, [sp, #8]
b _020405B4
_020405A4:
ldrb r0, [sl, #6]
cmp r0, #0
moveq r0, #1
streqb r0, [sp, #8]
_020405B4:
ldr r1, [r4, #8]
ldrb r0, [r1, #0x3f8]
cmp r0, #0
beq _020405D8
add r0, r1, sb
ldrb r0, [r0, #0x3e0]
tst r0, #2
movne r0, #1
strneb r0, [sp, #8]
_020405D8:
mov r2, sl
add r0, sp, #0xc
mov r1, #0
add r3, sp, #0
bl FormatMoveStringMore
mov r0, #0
bl GetDungeonResultString
mov r1, r0
ldr r0, [r4, #8]
add r0, r0, #0xe0
add r0, r0, r8, lsl #7
bl strcpy
ldr r3, [r4, #8]
add r0, r8, #1
add r1, r3, #0xe0
add r2, r1, r8, lsl #7
add r1, r3, r8, lsl #3
str r2, [r1, #0xa8]
ldr r1, [r4, #8]
mov r0, r0, lsl #0x10
add r1, r1, r8, lsl #3
str r8, [r1, #0xac]
mov r8, r0, asr #0x10
_02040634:
add r0, sb, #1
mov r0, r0, lsl #0x10
mov sb, r0, asr #0x10
cmp sb, #4
blt _020404F8
cmp r8, #4
bne _02040710
ldr r0, _020407AC ; =_020AFE7C
ldr r0, [r0, #0xc]
cmp r0, #2
cmpne r0, #3
cmpne r0, #6
bne _02040710
ldr r0, _020407B8 ; =_022AADFC
mov r2, #0
ldrb r0, [r0, #0x2c]
str r2, [sp]
strb r2, [sp, #8]
strb r2, [sp, #9]
ldr r2, _020407BC ; =LAST_NEW_MOVE
cmp r0, #0
ldrb r0, [r2]
mov r1, #0x6a
str r1, [sp, #4]
movne r1, #2
bicne r0, r0, #8
strne r1, [sp]
moveq r1, #4
biceq r0, r0, #4
streq r1, [sp]
strb r0, [r2]
add r0, sp, #0xc
add r3, sp, #0
mov r1, #0
bl FormatMoveStringMore
mov r0, #0
bl GetDungeonResultString
ldr r2, _020407AC ; =_020AFE7C
mov r1, r0
ldr r0, [r2, #8]
add r0, r0, #0xe0
add r0, r0, r8, lsl #7
bl strcpy
ldr r1, _020407AC ; =_020AFE7C
add r0, r8, #1
ldr r4, [r1, #8]
mov r0, r0, lsl #0x10
add r2, r4, #0xe0
add r3, r2, r8, lsl #7
add r2, r4, r8, lsl #3
str r3, [r2, #0xa8]
ldr r1, [r1, #8]
add r1, r1, r8, lsl #3
str r8, [r1, #0xac]
mov r8, r0, asr #0x10
_02040710:
ldr r0, _020407AC ; =_020AFE7C
mov r4, #0
ldr r1, [r0, #8]
sub r3, r4, #1
add r1, r1, r8, lsl #3
str r4, [r1, #0xa8]
ldr r2, [r0, #8]
sub r1, r4, #2
add r2, r2, r8, lsl #3
str r3, [r2, #0xac]
ldr r0, [r0, #8]
ldrsb r0, [r0]
cmp r0, r1
beq _0204075C
bl sub_020307EC
ldr r0, _020407AC ; =_020AFE7C
ldr r0, [r0, #8]
ldrsb r0, [r0]
bl SetAdvancedTextBoxField0x1C2
_0204075C:
ldr r0, _020407AC ; =_020AFE7C
ldr r1, [r0, #0xc]
cmp r1, #7
ldrne r3, [r0, #8]
ldrne r2, [r3, #0x3ec]
ldrne r1, [r3, #0x3f0]
cmpne r2, r1
beq _020407A4
str r1, [r3, #0x3ec]
ldr r3, [r0, #8]
ldrsh r1, [r0, #2]
ldr r2, [r3, #0x10]
ldrsb r0, [r3]
add r2, r2, r1, lsl #4
ldr r1, [r3, #0x3ec]
add r3, r2, #4
mov r2, #0
bl sub_02030978
_020407A4:
add sp, sp, #0x5c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020407AC: .word _020AFE7C
_020407B0: .word _022AAE00
_020407B4: .word _022AAE2A
_020407B8: .word _022AADFC
_020407BC: .word LAST_NEW_MOVE
arm_func_end PrintMoveOptionMenu
arm_func_start sub_020407C0
sub_020407C0: ; 0x020407C0
stmdb sp!, {r3, lr}
ldr r0, _020407E8 ; =_020AFE7C
ldr r0, [r0, #8]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl MemFree
ldr r0, _020407E8 ; =_020AFE7C
mov r1, #0
str r1, [r0, #8]
ldmia sp!, {r3, pc}
.align 2, 0
_020407E8: .word _020AFE7C
arm_func_end sub_020407C0
arm_func_start sub_020407EC
sub_020407EC: ; 0x020407EC
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x34
add r1, sp, #0xc
mov r0, #0
bl GetHeldButtons
add r1, sp, #0xa
mov r0, #0
bl GetPressedButtons
add r1, sp, #8
mov r0, #0
bl sub_020063F4
ldrh r0, [sp, #0xc]
ldr r5, _02040F90 ; =_022AAE2A
tst r0, #0x200
movne r1, #1
moveq r1, #0
and r6, r1, #0xff
ldr r1, _02040F94 ; =_020AFE7C
tst r0, #0x100
movne r0, #1
moveq r0, #0
ldr r3, [r1, #8]
and r7, r0, #0xff
add r0, r3, #0x300
ldrsh r2, [r0, #0xe6]
cmp r2, #0
ble _0204087C
sub r2, r2, #1
strh r2, [r0, #0xe6]
ldr r0, [r1, #8]
add r0, r0, #0x300
ldrsh r0, [r0, #0xe6]
cmp r0, #0
moveq r0, #2
movne r0, #0
b _02040F88
_0204087C:
ldrsb r0, [r3]
bl IsAdvancedTextBoxActive
cmp r0, #0
bne _020408B8
ldr r0, _02040F94 ; =_020AFE7C
ldr r0, [r0, #8]
ldrsb r0, [r0]
bl sub_02030940
mvn r1, #0
cmp r0, r1
bne _020408B8
mov r0, #1
bl PlaySeVolumeWrapper
mov r0, #1
b _02040F88
_020408B8:
ldr r0, _02040F94 ; =_020AFE7C
ldr r0, [r0, #0xc]
cmp r0, #9
addls pc, pc, r0, lsl #2
b _02040958
_020408CC: ; jump table
b _02040958 ; case 0
b _0204094C ; case 1
b _0204090C ; case 2
b _020408F4 ; case 3
b _02040958 ; case 4
b _02040958 ; case 5
b _0204090C ; case 6
b _0204093C ; case 7
b _02040924 ; case 8
b _0204090C ; case 9
_020408F4:
ldrh r0, [sp, #0xa]
mov r6, #0
mov r7, r6
bic r0, r0, #6
strh r0, [sp, #0xa]
b _02040958
_0204090C:
ldrh r0, [sp, #0xa]
mov r6, #0
mov r7, r6
bic r0, r0, #4
strh r0, [sp, #0xa]
b _02040958
_02040924:
ldrh r0, [sp, #0xa]
mov r6, #0
mov r7, r6
bic r0, r0, #4
strh r0, [sp, #0xa]
b _02040958
_0204093C:
mov r6, #0
mov r7, r6
strh r6, [sp, #0xa]
b _02040958
_0204094C:
ldrh r0, [sp, #8]
bic r0, r0, #0x30
strh r0, [sp, #8]
_02040958:
ldr r0, _02040F94 ; =_020AFE7C
ldr r0, [r0, #8]
ldrb r0, [r0, #0x3e5]
cmp r0, #0
beq _02040980
bl PrintMoveOptionMenu
ldr r0, _02040F94 ; =_020AFE7C
mov r1, #0
ldr r0, [r0, #8]
strb r1, [r0, #0x3e5]
_02040980:
ldrh r0, [sp, #8]
tst r0, #0x80
beq _02040A44
bl sub_02041178
cmp r7, #0
beq _020409E4
ldr r1, _02040F94 ; =_020AFE7C
ldr r0, _02040F90 ; =_022AAE2A
ldrsh r1, [r1, #2]
bl sub_02013E54
ldr r1, _02040F94 ; =_020AFE7C
mov r0, r0, lsl #0x10
ldrsh r1, [r1, #2]
mov r4, r0, asr #0x10
cmp r1, r0, asr #16
beq _020409D8
mov r0, #3
bl PlaySeVolumeWrapper
ldr r1, _02040F94 ; =_020AFE7C
mov r0, #3
strh r4, [r1, #2]
b _02040F88
_020409D8:
mov r0, #2
bl PlaySeVolumeWrapper
b _02040A44
_020409E4:
mov r0, #3
bl PlaySeVolumeWrapper
ldr r0, _02040F94 ; =_020AFE7C
ldr r1, [r0, #8]
ldrsh r2, [r0, #2]
ldrsh r1, [r1, #0xa4]
add r0, r2, #1
mov r0, r0, lsl #0x10
mov r3, r0, asr #0x10
b _02040A24
_02040A0C:
ldrb r0, [r5, r3, lsl #3]
tst r0, #2
beq _02040A2C
add r0, r3, #1
mov r0, r0, lsl #0x10
mov r3, r0, asr #0x10
_02040A24:
cmp r2, r1
blt _02040A0C
_02040A2C:
cmp r3, r1
ldr r1, _02040F94 ; =_020AFE7C
movge r3, #0
mov r0, #9
strh r3, [r1, #2]
b _02040F88
_02040A44:
ldrh r0, [sp, #8]
tst r0, #0x40
beq _02040B10
bl sub_02041178
cmp r7, #0
beq _02040AA8
ldr r1, _02040F94 ; =_020AFE7C
ldr r0, _02040F90 ; =_022AAE2A
ldrsh r1, [r1, #2]
bl sub_02013F58
ldr r1, _02040F94 ; =_020AFE7C
mov r0, r0, lsl #0x10
ldrsh r1, [r1, #2]
mov r4, r0, asr #0x10
cmp r1, r0, asr #16
beq _02040A9C
mov r0, #3
bl PlaySeVolumeWrapper
ldr r1, _02040F94 ; =_020AFE7C
mov r0, #4
strh r4, [r1, #2]
b _02040F88
_02040A9C:
mov r0, #2
bl PlaySeVolumeWrapper
b _02040B10
_02040AA8:
mov r0, #3
bl PlaySeVolumeWrapper
ldr r0, _02040F94 ; =_020AFE7C
ldrsh r1, [r0, #2]
cmp r1, #0
subgt r0, r1, #1
ldrle r0, [r0, #8]
ldrlesh r0, [r0, #0xa4]
suble r0, r0, #1
mov r0, r0, lsl #0x10
mov r2, r0, asr #0x10
b _02040AF0
_02040AD8:
ldrb r0, [r5, r2, lsl #3]
tst r0, #2
beq _02040AF8
sub r0, r2, #1
mov r0, r0, lsl #0x10
mov r2, r0, asr #0x10
_02040AF0:
cmp r1, #0
bge _02040AD8
_02040AF8:
ldr r1, _02040F94 ; =_020AFE7C
cmp r2, #0
movlt r2, #0
mov r0, #9
strh r2, [r1, #2]
b _02040F88
_02040B10:
mov r4, #0
bl sub_0204AE60
cmp r0, #0
add r0, sp, #0x10
beq _02040B2C
bl GetReleasedStylus
b _02040B30
_02040B2C:
bl sub_02006BFC
_02040B30:
ldrh r0, [sp, #0x10]
tst r0, #0x40
beq _02040C38
tst r0, #2
ldrne r0, _02040F94 ; =_020AFE7C
ldrne r0, [r0, #0xc]
cmpne r0, #7
beq _02040C38
cmp r0, #2
cmpne r0, #3
cmpne r0, #6
bne _02040B68
mov r1, #0x70
b _02040B6C
_02040B68:
mov r1, #0x60
_02040B6C:
ldr r0, [sp, #0x14]
cmp r0, #0x10
blt _02040C38
cmp r0, #0xa0
bge _02040C38
ldr r0, [sp, #0x18]
cmp r0, #0x20
blt _02040C38
cmp r0, r1
bge _02040C38
sub r1, r0, #0x20
mov r0, r1, asr #3
add r0, r1, r0, lsr #28
mov r0, r0, lsl #0xc
ldr r2, _02040F94 ; =_020AFE7C
mov r1, r0, asr #0x10
ldr r5, [r2, #8]
add r7, r1, #1
mov r3, #0
mvn r2, #0
b _02040BDC
_02040BC0:
add r0, r5, r3, lsl #3
ldr r0, [r0, #0xac]
cmp r0, r2
beq _02040BE4
add r0, r3, #1
mov r0, r0, lsl #0x10
mov r3, r0, asr #0x10
_02040BDC:
cmp r3, r7
blt _02040BC0
_02040BE4:
cmp r3, r1
ble _02040C38
ldr r0, _02040F90 ; =_022AAE2A
ldrb r0, [r0, r1, lsl #3]
tst r0, #2
bne _02040C38
mov r0, r1, lsl #4
ldr r3, _02040F94 ; =_020AFE7C
add r0, r0, #0x20
mov r2, r0, lsl #0x10
mov r0, #0x10
ldr r4, _02040F98 ; =_0209C928
strh r1, [r3, #2]
mov r3, r0
str r4, [sp]
mov r4, #0x40
mov r1, r2, asr #0x10
mov r2, #0x90
str r4, [sp, #4]
mov r4, #1
bl sub_0202A2A4
_02040C38:
ldr r0, _02040F94 ; =_020AFE7C
ldr r5, [r0, #8]
ldrsb r0, [r5]
bl GetWindowIdPageStart
add r1, r5, #0x300
ldrsh r1, [r1, #0xe8]
cmp r1, r0
beq _02040C90
mov r0, #4
bl PlaySeVolumeWrapper
ldr r0, _02040F94 ; =_020AFE7C
mov r1, #0
strh r1, [r0, #2]
ldr r0, [r0, #8]
ldrsb r0, [r0]
bl GetWindowIdPageStart
ldr r1, _02040F94 ; =_020AFE7C
ldr r1, [r1, #8]
add r1, r1, #0x300
strh r0, [r1, #0xe8]
mov r0, #5
b _02040F88
_02040C90:
ldrh r0, [sp, #0xa]
tst r0, #2
beq _02040CAC
mov r0, #1
bl PlaySeVolumeWrapper
mov r0, #1
b _02040F88
_02040CAC:
tst r0, #4
beq _02040D0C
ldr r0, _02040F9C ; =0x00003F07
mov r1, #0x100
bl sub_02017C74
ldr r0, _02040F94 ; =_020AFE7C
ldr r1, [r0, #0xc]
cmp r1, #3
addls pc, pc, r1, lsl #2
b _02040CF4
_02040CD4: ; jump table
b _02040CE4 ; case 0
b _02040CE4 ; case 1
b _02040CE4 ; case 2
b _02040CE4 ; case 3
_02040CE4:
ldr r0, [r0, #8]
ldrsb r0, [r0]
bl sub_02030EF0
b _02040D04
_02040CF4:
bl sub_02041178
ldr r0, _02040F94 ; =_020AFE7C
ldrsh r0, [r0, #2]
bl sub_02041000
_02040D04:
mov r0, #6
b _02040F88
_02040D0C:
tst r0, #8
beq _02040D28
ldr r0, _02040FA0 ; =0x00003F04
mov r1, #0x100
bl sub_02017C74
mov r0, #7
b _02040F88
_02040D28:
#ifndef JAPAN
ldrsb r0, [r5]
bl sub_020308E4
cmp r0, #0
bne _02040F84
ldrh r0, [sp, #0xa]
#endif
tst r0, #0x400
bne _02040D50
tst r0, #1
cmpeq r4, #0
beq _02040F84
_02040D50:
#ifdef JAPAN
ldrb r0, [r5, #0x3f8]
cmp r0, #0
beq _020410EC
ldr r0, _02040F94 ; =_020AFE7C
ldrsh r0, [r0, #2]
add r0, r5, r0
ldrb r0, [r0, #0x3e0]
tst r0, #1
bne _02040F70
_020410EC:
cmp r4, #0
addne r0, r5, #0x300
#else
ldr r0, _02040F94 ; =_020AFE7C
mov r2, #0
ldr r3, [r0, #8]
ldrb r1, [r3, #0x3f8]
cmp r1, #0
beq _02040D7C
ldrsh r0, [r0, #2]
add r0, r3, r0
ldrb r0, [r0, #0x3e0]
tst r0, #1
movne r2, #1
_02040D7C:
cmp r2, #0
bne _02040F70
cmp r4, #0
addne r0, r3, #0x300
#endif
movne r1, #6
strneh r1, [r0, #0xe6]
cmp r6, #0
beq _02040EC8
ldr r0, _02040F94 ; =_020AFE7C
ldr r0, [r0, #0xc]
cmp r0, #1
cmpne r0, #5
bne _02040EC8
cmp r4, #0
ldrne r0, _02040F94 ; =_020AFE7C
movne r1, #0
ldrne r0, [r0, #8]
addne r0, r0, #0x300
strneh r1, [r0, #0xe6]
ldr r0, _02040F94 ; =_020AFE7C
ldr r1, [r0, #0xc]
cmp r1, #3
addls pc, pc, r1, lsl #2
b _02040E34
_02040DDC: ; jump table
b _02040DEC ; case 0
b _02040DEC ; case 1
b _02040DEC ; case 2
b _02040DEC ; case 3
_02040DEC:
ldrsh r0, [r0, #2]
bl sub_02041194
cmp r0, #0
bne _02040E10
ldr r0, _02040F94 ; =_020AFE7C
ldrsh r0, [r0, #2]
bl sub_02041364
cmp r0, #0
beq _02040E34
_02040E10:
ldr r0, _02040F9C ; =0x00003F07
mov r1, #0x100
bl sub_02017C74
ldr r0, _02040F94 ; =_020AFE7C
ldr r0, [r0, #8]
ldrsb r0, [r0]
bl sub_02030EF0
mov r0, #8
b _02040F88
_02040E34:
ldr r0, _02040F94 ; =_020AFE7C
ldrsh r0, [r0, #2]
bl sub_02041194
cmp r0, #0
beq _02040E88
ldr r0, _02040F94 ; =_020AFE7C
ldr r1, [r0, #0xc]
cmp r1, #5
ldreqb r0, [r0]
cmpeq r0, #0
bne _02040E6C
ldr r0, _02040FA4 ; =0x00001308
bl PlaySeByIdVolumeWrapper
b _02040E78
_02040E6C:
ldr r0, _02040F9C ; =0x00003F07
mov r1, #0x100
bl sub_02017C74
_02040E78:
ldr r0, _02040F94 ; =_020AFE7C
ldrsh r0, [r0, #2]
bl sub_020412B0
b _02040EC0
_02040E88:
ldr r0, _02040F94 ; =_020AFE7C
ldrsh r0, [r0, #2]
bl sub_02041364
cmp r0, #0
beq _02040EB8
ldr r0, _02040F9C ; =0x00003F07
mov r1, #0x100
bl sub_02017C74
ldr r0, _02040F94 ; =_020AFE7C
ldrsh r0, [r0, #2]
bl sub_02041394
b _02040EC0
_02040EB8:
mov r0, #2
bl PlaySeVolumeWrapper
_02040EC0:
bl sub_02041178
b _02040F84
_02040EC8:
cmp r4, #0
beq _02040EEC
mov r0, #0
bl PlaySeVolumeWrapper
ldr r0, _02040F94 ; =_020AFE7C
ldr r0, [r0, #8]
ldrsb r0, [r0]
bl sub_02030EF0
b _02040F18
_02040EEC:
ldrh r0, [sp, #0xa]
tst r0, #0x400
mov r0, #0
beq _02040F14
bl PlaySeVolumeWrapper
ldr r0, _02040F94 ; =_020AFE7C
ldr r0, [r0, #8]
ldrsb r0, [r0]
bl sub_02030EF0
b _02040F18
_02040F14:
bl PlaySeVolumeWrapper
_02040F18:
ldr r0, _02040F94 ; =_020AFE7C
mov r1, #2
ldr r3, [r0, #8]
mov r2, #0
str r1, [r3, #0x3ec]
ldr r3, [r0, #8]
str r1, [r3, #0x3f0]
ldr r6, [r0, #8]
ldrsh r3, [r0, #2]
ldr r5, [r6, #0x10]
ldrsb r0, [r6]
add r3, r5, r3, lsl #4
add r3, r3, #4
bl sub_02030978
ldr r0, _02040F94 ; =_020AFE7C
ldr r0, [r0, #8]
ldrsb r0, [r0]
bl UpdateWindow
cmp r4, #0
bne _02040F84
mov r0, #2
b _02040F88
_02040F70:
mov r0, #2
bl PlaySeVolumeWrapper
cmp r4, #0
beq _02040F84
bl sub_02041178
_02040F84:
mov r0, #0
_02040F88:
add sp, sp, #0x34
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_02040F90: .word _022AAE2A
_02040F94: .word _020AFE7C
_02040F98: .word _0209C928
_02040F9C: .word 0x00003F07
_02040FA0: .word 0x00003F04
_02040FA4: .word 0x00001308
arm_func_end sub_020407EC
arm_func_start sub_02040FA8
sub_02040FA8: ; 0x02040FA8
ldr r0, _02040FF4 ; =_022AADFC
ldrb r0, [r0, #0x2c]
cmp r0, #0
beq _02040FD0
ldr r0, _02040FF8 ; =_020AFE7C
ldr r1, _02040FFC ; =_022AAE2A
ldrsh r0, [r0, #2]
ldrb r0, [r1, r0, lsl #3]
tst r0, #8
b _02040FE4
_02040FD0:
ldr r0, _02040FF8 ; =_020AFE7C
ldr r1, _02040FFC ; =_022AAE2A
ldrsh r0, [r0, #2]
ldrb r0, [r1, r0, lsl #3]
tst r0, #4
_02040FE4:
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_02040FF4: .word _022AADFC
_02040FF8: .word _020AFE7C
_02040FFC: .word _022AAE2A
arm_func_end sub_02040FA8
arm_func_start sub_02041000
sub_02041000: ; 0x02041000
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02041178
ldr r2, _0204108C ; =_022AADFC
ldrb r0, [r2, #0x2c]
cmp r0, #0
beq _02041078
ldr r1, _02041090 ; =_022AAE2A
ldrb r0, [r1, r4, lsl #3]
tst r0, #8
eorne r0, r0, #8
strneb r0, [r1, r4, lsl #3]
ldmneia sp!, {r4, pc}
mov r3, #0
_02041038:
add r0, r2, r3, lsl #3
ldrb r0, [r0, #0x2e]
tst r0, #8
bne _02041050
cmp r3, r4
bne _02041060
_02041050:
add r1, r2, r3, lsl #3
ldrb r0, [r1, #0x2e]
eor r0, r0, #8
strb r0, [r1, #0x2e]
_02041060:
add r0, r3, #1
mov r0, r0, lsl #0x10
mov r3, r0, asr #0x10
cmp r3, #4
blt _02041038
ldmia sp!, {r4, pc}
_02041078:
ldr r1, _02041090 ; =_022AAE2A
ldrb r0, [r1, r4, lsl #3]
eor r0, r0, #4
strb r0, [r1, r4, lsl #3]
ldmia sp!, {r4, pc}
.align 2, 0
_0204108C: .word _022AADFC
_02041090: .word _022AAE2A
arm_func_end sub_02041000
arm_func_start sub_02041094
sub_02041094: ; 0x02041094
ldr r0, _020410A0 ; =_020AFE7C
ldrsh r0, [r0, #2]
bx lr
.align 2, 0
_020410A0: .word _020AFE7C
arm_func_end sub_02041094
arm_func_start sub_020410A4
sub_020410A4: ; 0x020410A4
ldr r1, _0204114C ; =_020AFE7C
cmp r0, #0
strh r0, [r1, #2]
movlt r0, #0
strlth r0, [r1, #2]
ldr r0, _0204114C ; =_020AFE7C
ldrsh r2, [r0, #2]
cmp r2, #4
blt _02041100
ldr r1, [r0, #0xc]
cmp r1, #2
cmpne r1, #3
arm_func_end sub_020410A4
arm_func_start sub_020410D4
sub_020410D4: ; 0x020410D4
cmpne r1, #6
arm_func_end sub_020410D4
arm_func_start sub_020410D8
sub_020410D8: ; 0x020410D8
bne _020410F8
arm_func_end sub_020410D8
arm_func_start sub_020410DC
sub_020410DC: ; 0x020410DC
cmp r2, #4
ldreq r0, _0204114C ; =_020AFE7C
moveq r1, #4
ldrne r0, _0204114C ; =_020AFE7C
movne r1, #0
strh r1, [r0, #2]
bx lr
_020410F8:
mov r1, #3
strh r1, [r0, #2]
_02041100:
ldr r2, _02041150 ; =_022AADFC
ldr r0, _0204114C ; =_020AFE7C
_02041108:
ldrsh r1, [r0, #2]
cmp r1, #0
ldrlt r0, _0204114C ; =_020AFE7C
movlt r1, #0
strlth r1, [r0, #2]
bxlt lr
add r1, r2, r1, lsl #3
ldrb r1, [r1, #0x2e]
tst r1, #1
beq _02041138
tst r1, #2
bxeq lr
_02041138:
ldrsh r1, [r0, #2]
sub r1, r1, #1
strh r1, [r0, #2]
b _02041108
_02041148:
bx lr
.align 2, 0
_0204114C: .word _020AFE7C
_02041150: .word _022AADFC
arm_func_end sub_020410DC
arm_func_start sub_02041154
sub_02041154: ; 0x02041154
cmp r0, #4
ldreq r0, _02041170 ; =_022AADFC
ldrne r1, _02041174 ; =_022AAE2E
ldreqh r0, [r0, #0x54]
movne r0, r0, lsl #3
ldrneh r0, [r1, r0]
bx lr
.align 2, 0
_02041170: .word _022AADFC
_02041174: .word _022AAE2E
arm_func_end sub_02041154
arm_func_start sub_02041178
sub_02041178: ; 0x02041178
ldr r0, _02041190 ; =_020AFE7C
ldr r1, [r0, #8]
cmp r1, #0
movne r0, #1
strneb r0, [r1, #0x3e5]
bx lr
.align 2, 0
_02041190: .word _020AFE7C
arm_func_end sub_02041178
arm_func_start sub_02041194
sub_02041194: ; 0x02041194
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r4, _020412AC ; =_022AAE2A
mov r6, r0
add r0, r4, r6, lsl #3
ldrh r0, [r0, #4]
bl IsNot2TurnsMoveOrSketch
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
add r5, r6, #1
mov r7, #0
mov r8, #1
b _0204129C
_020411C8:
ldrb r0, [r4, r5, lsl #3]
tst r0, #1
movne r0, r8
moveq r0, r7
tst r0, #0xff
beq _020412A4
add r0, r4, r5, lsl #3
ldrh r0, [r0, #4]
bl IsNot2TurnsMoveOrSketch
cmp r0, #0
beq _020412A4
ldrb r0, [r4, r5, lsl #3]
tst r0, #2
bne _02041298
add r0, r5, #1
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
b _02041228
_02041210:
ldrb r1, [r4, r0, lsl #3]
tst r1, #2
beq _02041230
add r0, r0, #1
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
_02041228:
cmp r0, #4
blt _02041210
_02041230:
mov r1, r6, lsl #0x10
mov r5, r1, asr #0x10
b _02041288
_0204123C:
add r1, r5, #1
mov r1, r1, lsl #0x10
mov r3, r1, asr #0x10
add r1, r4, r5, lsl #3
ldrh r2, [r1, #4]
b _02041274
_02041254:
add r1, r4, r3, lsl #3
ldrh r1, [r1, #4]
cmp r2, r1
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
add r1, r3, #1
mov r1, r1, lsl #0x10
mov r3, r1, asr #0x10
_02041274:
cmp r3, r0
blt _02041254
add r1, r5, #1
mov r1, r1, lsl #0x10
mov r5, r1, asr #0x10
_02041288:
cmp r5, r0
blt _0204123C
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_02041298:
add r5, r5, #1
_0204129C:
cmp r5, #4
blt _020411C8
_020412A4:
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_020412AC: .word _022AAE2A
arm_func_end sub_02041194
arm_func_start sub_020412B0
sub_020412B0: ; 0x020412B0
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02041194
cmp r0, #0
ldmeqia sp!, {r4, pc}
add r1, r4, #1
ldr r0, _02041358 ; =_022AAE2A
mov r3, #0
mov ip, #1
b _0204133C
_020412D8:
ldrb r2, [r0, r1, lsl #3]
tst r2, #1
movne r2, ip
moveq r2, r3
tst r2, #0xff
beq _02041344
ldrb r2, [r0, r1, lsl #3]
tst r2, #2
bne _02041338
ldr r2, _0204135C ; =_022AADFC
ldr lr, _02041358 ; =_022AAE2A
ldrb r2, [r2, #0x2c]
cmp r2, #0
ldrne r3, _02041358 ; =_022AAE2A
ldrneb r2, [r3, r1, lsl #3]
bicne r2, r2, #8
strneb r2, [r3, r1, lsl #3]
ldrb ip, [lr, r1, lsl #3]
ldr r2, _02041360 ; =_020AFE7C
mov r3, #1
strb r3, [r2]
bic r2, ip, #4
strb r2, [lr, r1, lsl #3]
b _02041344
_02041338:
add r1, r1, #1
_0204133C:
cmp r1, #4
blt _020412D8
_02041344:
ldrb r2, [r0, r1, lsl #3]
orr r2, r2, #2
strb r2, [r0, r1, lsl #3]
bl sub_02041178
ldmia sp!, {r4, pc}
.align 2, 0
_02041358: .word _022AAE2A
_0204135C: .word _022AADFC
_02041360: .word _020AFE7C
arm_func_end sub_020412B0
arm_func_start sub_02041364
sub_02041364: ; 0x02041364
cmp r0, #3
ldr r1, _02041390 ; =_022AAE2A
moveq r0, #0
bxeq lr
add r0, r0, #1
ldrb r0, [r1, r0, lsl #3]
tst r0, #2
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_02041390: .word _022AAE2A
arm_func_end sub_02041364
arm_func_start sub_02041394
sub_02041394: ; 0x02041394
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02041364
cmp r0, #0
ldmeqia sp!, {r4, pc}
add ip, r4, #1
ldr r3, _020413FC ; =_022AAE2A
mov r1, #0
mov r2, #1
b _020413EC
_020413BC:
ldrb r0, [r3, ip, lsl #3]
tst r0, #1
movne r0, r2
moveq r0, r1
tst r0, #0xff
beq _020413F4
ldrb r0, [r3, ip, lsl #3]
tst r0, #2
beq _020413F4
eor r0, r0, #2
strb r0, [r3, ip, lsl #3]
add ip, ip, #1
_020413EC:
cmp ip, #4
blt _020413BC
_020413F4:
bl sub_02041178
ldmia sp!, {r4, pc}
.align 2, 0
_020413FC: .word _022AAE2A
arm_func_end sub_02041394
arm_func_start sub_02041400
sub_02041400: ; 0x02041400
ldr r0, _02041410 ; =_020AFE7C
mov r1, #0
strb r1, [r0]
bx lr
.align 2, 0
_02041410: .word _020AFE7C
arm_func_end sub_02041400
arm_func_start sub_02041414
sub_02041414: ; 0x02041414
ldr r0, _02041420 ; =_020AFE7C
ldrb r0, [r0]
bx lr
.align 2, 0
_02041420: .word _020AFE7C
arm_func_end sub_02041414
arm_func_start sub_02041424
sub_02041424: ; 0x02041424
cmp r0, #0
movgt r0, #1
bxgt lr
mov ip, #1
ldr r3, _02041480 ; =_022AAE2A
mov r1, #0
mov r2, ip
b _02041470
_02041444:
ldrb r0, [r3, ip, lsl #3]
tst r0, #1
movne r0, r2
moveq r0, r1
tst r0, #0xff
beq _02041478
ldrb r0, [r3, ip, lsl #3]
tst r0, #2
moveq r0, #1
bxeq lr
add ip, ip, #1
_02041470:
cmp ip, #4
blt _02041444
_02041478:
mov r0, #0
bx lr
.align 2, 0
_02041480: .word _022AAE2A
arm_func_end sub_02041424
arm_func_start sub_02041484
sub_02041484: ; 0x02041484
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x20
ldr r1, _02041594 ; =_020AFE7C
ldr r0, _02041598 ; =_022AAE2A
ldrsh r2, [r1, #2]
mov r1, #0
mov r3, r1
strb r1, [r0, r2, lsl #3]
add r5, r2, #1
mov r4, #1
b _020414DC
_020414B0:
ldrb r2, [r0, r5, lsl #3]
tst r2, #1
movne r2, r4
moveq r2, r3
tst r2, #0xff
beq _020414E4
ldrb r2, [r0, r5, lsl #3]
tst r2, #2
beq _020414E4
strb r1, [r0, r5, lsl #3]
add r5, r5, #1
_020414DC:
cmp r5, #4
blt _020414B0
_020414E4:
mov r6, #0
mov r7, r6
mov r4, r6
mov r5, #1
add lr, sp, #0
_020414F8:
ldrb r1, [r0, r7, lsl #3]
tst r1, #1
movne r1, r5
moveq r1, r4
tst r1, #0xff
beq _02041530
add ip, r0, r7, lsl #3
add r3, lr, r6, lsl #3
mov r2, #4
_0204151C:
ldrh r1, [ip], #2
subs r2, r2, #1
strh r1, [r3], #2
bne _0204151C
add r6, r6, #1
_02041530:
add r7, r7, #1
cmp r7, #4
blt _020414F8
mov r2, #0
add r1, sp, #0
b _02041550
_02041548:
strb r2, [r1, r6, lsl #3]
add r6, r6, #1
_02041550:
cmp r6, #4
blt _02041548
mov r4, #0
add lr, sp, #0
_02041560:
add ip, lr, r4, lsl #3
add r3, r0, r4, lsl #3
mov r2, #4
_0204156C:
ldrh r1, [ip], #2
subs r2, r2, #1
strh r1, [r3], #2
bne _0204156C
add r4, r4, #1
cmp r4, #4
blt _02041560
bl sub_02041178
add sp, sp, #0x20
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02041594: .word _020AFE7C
_02041598: .word _022AAE2A
arm_func_end sub_02041484
arm_func_start sub_0204159C
sub_0204159C: ; 0x0204159C
ldr r0, _020415B8 ; =_022AADFC
ldrb r0, [r0, #0x58]
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_020415B8: .word _022AADFC
arm_func_end sub_0204159C
arm_func_start sub_020415BC
sub_020415BC: ; 0x020415BC
mov r3, #0
ldr ip, _02041610 ; =_022AAE2A
mov r1, r3
mov r2, #1
b _020415F4
_020415D0:
ldrb r0, [ip, r3, lsl #3]
tst r0, #1
movne r0, r2
moveq r0, r1
tst r0, #0xff
beq _020415FC
add r0, r3, #1
mov r0, r0, lsl #0x10
mov r3, r0, asr #0x10
_020415F4:
cmp r3, #4
blt _020415D0
_020415FC:
cmp r3, #4
movge r0, #1
movlt r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_02041610: .word _022AAE2A
arm_func_end sub_020415BC
arm_func_start sub_02041614
sub_02041614: ; 0x02041614
stmdb sp!, {r3, r4, r5, lr}
mov r5, #0
ldr r4, _020416B0 ; =_022AAE2A
mov r2, r5
mov r3, #1
b _02041694
_0204162C:
ldrb r1, [r4, r5, lsl #3]
tst r1, #1
movne r1, r3
moveq r1, r2
tst r1, #0xff
bne _02041688
mov r1, #5
strb r1, [r4, r5, lsl #3]
add r2, r4, r5, lsl #3
strh r0, [r2, #4]
mov r1, #0
ldr r0, _020416B4 ; =_022AADFC
strb r1, [r2, #7]
ldrsh r0, [r0, #0x5a]
ldr r1, _020416B8 ; =_022AAE58
bl GetPpIncrease
add r1, r4, r5, lsl #3
strh r0, [r1, #2]
mov r0, r1
bl GetMaxPp
add r1, r4, r5, lsl #3
strb r0, [r1, #6]
b _0204169C
_02041688:
add r1, r5, #1
mov r1, r1, lsl #0x10
mov r5, r1, asr #0x10
_02041694:
cmp r5, #4
blt _0204162C
_0204169C:
cmp r5, #4
mvnge r5, #0
mov r0, r5, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020416B0: .word _022AAE2A
_020416B4: .word _022AADFC
_020416B8: .word _022AAE58
arm_func_end sub_02041614
arm_func_start sub_020416BC
sub_020416BC: ; 0x020416BC
stmdb sp!, {r3, lr}
mov r1, r0
ldr r0, _020416D8 ; =_022AAE2A
bl sub_02013F58
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r3, pc}
.align 2, 0
_020416D8: .word _022AAE2A
arm_func_end sub_020416BC
arm_func_start sub_020416DC
sub_020416DC: ; 0x020416DC
stmdb sp!, {r3, lr}
mov r1, r0
ldr r0, _020416F8 ; =_022AAE2A
bl sub_02013E54
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r3, pc}
.align 2, 0
_020416F8: .word _022AAE2A
arm_func_end sub_020416DC
arm_func_start sub_020416FC
sub_020416FC: ; 0x020416FC
stmdb sp!, {r3, lr}
ldr r0, _02041720 ; =_020AFE7C
ldr r0, [r0, #8]
ldrsb r0, [r0]
bl sub_020307EC
mov r0, #1
bl sub_0204027C
bl sub_02041178
ldmia sp!, {r3, pc}
.align 2, 0
_02041720: .word _020AFE7C
arm_func_end sub_020416FC
arm_func_start sub_02041724
sub_02041724: ; 0x02041724
stmdb sp!, {r3, lr}
bl IsDeoxys
cmp r0, #0
ldrne r0, _02041748 ; =_022AADFC
movne r1, #1
ldreq r0, _02041748 ; =_022AADFC
moveq r1, #0
strb r1, [r0, #0x58]
ldmia sp!, {r3, pc}
.align 2, 0
_02041748: .word _022AADFC
arm_func_end sub_02041724
arm_func_start SprintfStatic__0204174C
SprintfStatic__0204174C: ; 0x0204174C
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, lr}
add r2, sp, #0xc
bic r2, r2, #3
ldr r1, [sp, #0xc]
add r2, r2, #4
bl vsprintf
ldmia sp!, {r3, lr}
add sp, sp, #0x10
bx lr
arm_func_end SprintfStatic__0204174C
arm_func_start sub_02041774
sub_02041774: ; 0x02041774
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x2bc
mov r1, #8
bl MemAlloc
ldr r1, _020417A4 ; =_020AFE8C
mvn r2, #1
str r0, [r1]
str r4, [r0, #4]
ldr r0, [r1]
strb r2, [r0]
ldmia sp!, {r4, pc}
.align 2, 0
_020417A4: .word _020AFE8C
arm_func_end sub_02041774
arm_func_start sub_020417A8
sub_020417A8: ; 0x020417A8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r6, r1
mov r4, r2
mov r7, r0
cmp r4, r6
mvnge r0, #1
ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
ldrb r0, [r7, r4, lsl #3]
tst r0, #1
mvneq r0, #1
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
mov r0, r3
bl sub_02041774
ldr r0, _0204185C ; =_020AFE8C
add r1, r7, r4, lsl #3
ldr r0, [r0]
mov r2, #8
add r0, r0, #8
bl memcpy
add r5, r4, #1
mov r4, #1
mov sb, #8
ldr r8, _0204185C ; =_020AFE8C
b _02041840
_02041808:
ldrb r0, [r7, r5, lsl #3]
mov r1, r5, lsl #3
tst r0, #1
beq _0204183C
tst r0, #2
beq _02041848
ldr r0, [r8]
mov r2, sb
add r0, r0, #8
add r0, r0, r4, lsl #3
add r1, r7, r1
bl memcpy
add r4, r4, #1
_0204183C:
add r5, r5, #1
_02041840:
cmp r5, r6
blt _02041808
_02041848:
ldr r0, _0204185C ; =_020AFE8C
ldr r0, [r0]
strh r4, [r0, #0x28]
bl sub_020418A4
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0204185C: .word _020AFE8C
arm_func_end sub_020417A8
arm_func_start sub_02041860
sub_02041860: ; 0x02041860
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, r1
bl sub_02041774
ldr r0, _020418A0 ; =_020AFE8C
mov r1, r4
ldr r0, [r0]
mov r2, #8
add r0, r0, #8
bl memcpy
ldr r0, _020418A0 ; =_020AFE8C
mov r1, #1
ldr r0, [r0]
strh r1, [r0, #0x28]
bl sub_020418A4
ldmia sp!, {r4, pc}
.align 2, 0
_020418A0: .word _020AFE8C
arm_func_end sub_02041860
arm_func_start sub_020418A4
sub_020418A4: ; 0x020418A4
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
mov r7, #0
ldr r6, _020419F0 ; =0x000008D4
ldr r5, _020419F4 ; =_020AFE8C
mov r4, #0x50
b _02041950
_020418C0:
ldr r1, [r5]
mul r8, r7, r4
add r0, r1, r7, lsl #3
ldrh r0, [r0, #0xc]
add r1, r1, r7, lsl #1
add r1, r1, #0x200
strh r6, [r1, #0xac]
ldr r2, [r5]
#if defined(EUROPE)
add r1, r0, #0x3a4
#elif defined(JAPAN)
add r1, r0, #0x9f
#else
add r1, r0, #0xa2
#endif
add r2, r2, r8
str r0, [r2, #0x3c]
ldr r2, [r5]
#if defined(EUROPE)
add r3, r1, #0x2400
#elif defined(JAPAN)
add r3, r1, #0x3f00
#else
add r3, r1, #0x2700
#endif
add r1, r2, r7, lsl #1
add r1, r1, #0x200
strh r3, [r1, #0xb4]
ldr r1, [r5]
add r1, r1, r8
str r0, [r1, #0x17c]
ldr r0, [r5]
add r0, r0, #8
add r0, r0, r7, lsl #3
bl GetMoveRangeId
ldr r1, [r5]
add r1, r1, r8
str r0, [r1, #0x180]
ldr r0, [r5]
add r0, r0, #8
add r0, r0, r7, lsl #3
bl GetMoveType
ldr r2, [r5]
add r1, r7, #1
add r2, r2, r8
mov r1, r1, lsl #0x10
str r0, [r2, #0x184]
mov r7, r1, asr #0x10
_02041950:
ldr r2, [r5]
ldrsh r3, [r2, #0x28]
cmp r7, r3
blt _020418C0
cmp r3, #1
ble _020419A0
add r0, r2, #0x2ac
str r0, [sp]
add r0, r2, #0x2c
str r0, [sp, #4]
add r4, r2, #0x2b4
str r4, [sp, #8]
add r4, r2, #0x16c
ldr r0, _020419F8 ; =_0209C97C
ldr r1, _020419FC ; =0x00001013
mov r2, #0
str r4, [sp, #0xc]
bl CreateScrollBoxMulti
ldr r1, _020419F4 ; =_020AFE8C
b _020419D4
_020419A0:
add r0, r2, #0x2c
str r0, [sp]
add r1, r2, #0x200
ldrh r3, [r1, #0xb4]
add r2, r2, #0x16c
ldr r0, _020419F8 ; =_0209C97C
str r3, [sp, #4]
str r2, [sp, #8]
ldrh r3, [r1, #0xac]
ldr r1, _020419FC ; =0x00001013
mov r2, #0
bl CreateScrollBoxSingle
ldr r1, _020419F4 ; =_020AFE8C
_020419D4:
ldr r1, [r1]
strb r0, [r1]
ldr r0, _020419F4 ; =_020AFE8C
ldr r0, [r0]
ldrsb r0, [r0]
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
#ifdef JAPAN
_020419F0: .word 0x00001D2C
#else
_020419F0: .word 0x000008D4
#endif
_020419F4: .word _020AFE8C
_020419F8: .word _0209C97C
_020419FC: .word 0x00001013
arm_func_end sub_020418A4
arm_func_start sub_02041A00
sub_02041A00: ; 0x02041A00
ldr r0, _02041A10 ; =_020AFE8C
ldr ip, _02041A14 ; =MemFree
ldr r0, [r0]
bx ip
.align 2, 0
_02041A10: .word _020AFE8C
_02041A14: .word MemFree
arm_func_end sub_02041A00
arm_func_start sub_02041A18
sub_02041A18: ; 0x02041A18
stmdb sp!, {r3, lr}
ldr r0, _02041A3C ; =_020AFE8C
ldr r0, [r0]
ldrsb r0, [r0]
bl IsScrollBoxActive
cmp r0, #0
movne r0, #0
moveq r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_02041A3C: .word _020AFE8C
arm_func_end sub_02041A18
arm_func_start PrintIqSkillsMenu
PrintIqSkillsMenu: ; 0x02041A40
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0xa0
mov r7, r0
mov r6, r1
add r0, sp, #8
mov r1, #0x98
mov r5, r2
mov r4, r3
bl MemZero
mov r1, #0xd
#ifdef JAPAN
ldr r0, _02041ED4 ; =0x00001586
#else
rsb r0, r1, #0xa80
#endif
str r1, [sp, #0xc]
mov r1, #0
str r1, [sp, #8]
mov r1, #0x10
strh r0, [sp, #0x10]
str r1, [sp, #0x14]
mov r0, #0x840
mov r1, #8
bl MemAlloc
ldr r2, _02041B6C ; =_020AFE90
mov r1, #0x840
str r0, [r2, #4]
bl MemZero
ldr r3, _02041B6C ; =_020AFE90
mov r1, r7
ldr r0, [r3, #4]
mov r2, r5
str r6, [r0, #0x790]
ldr r0, [r3, #4]
add r0, r0, #0x700
strh r7, [r0, #0x94]
ldr r0, [r3, #4]
str r5, [r0, #0x798]
ldr r0, [r3, #4]
add r0, r0, #0x64
bl GetLearnableIqSkills
ldr r3, _02041B6C ; =_020AFE90
ldr r1, _02041B70 ; =0x80401C33
ldr r2, [r3, #4]
mov r5, #8
add r2, r2, #0x700
strh r0, [r2, #0x8c]
ldr r2, [r3, #4]
ldr r0, _02041B74 ; =_0209C98C
add r2, r2, #0x700
ldrsh r6, [r2, #0x8c]
ldr r3, _02041B78 ; =GetCheckIqMenuSkillString
add r2, sp, #8
str r6, [sp]
str r5, [sp, #4]
bl CreateAdvancedMenu
ldr r1, _02041B6C ; =_020AFE90
mov r2, #0
ldr r3, [r1, #4]
strb r0, [r3]
ldr r0, [r1, #4]
str r2, [r0, #0x6f0]
ldr r0, [r1, #4]
str r2, [r0, #0x6ec]
ldr r0, [r1, #4]
strb r4, [r0, #0x83c]
ldr r0, [r1, #4]
add r0, r0, #0x700
strh r2, [r0, #0x8e]
ldr r0, [r1, #4]
add r0, r0, #0x14
bl InitPreprocessorArgs
ldr r0, _02041B6C ; =_020AFE90
ldr r1, [r0, #4]
add r0, r1, #0x34
add r0, r0, #0x800
str r0, [r1, #0x7fc]
add sp, sp, #0xa0
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
#ifdef JAPAN
_02041ED4: .word 0x00001586
#endif
_02041B6C: .word _020AFE90
_02041B70: .word 0x80401C33
_02041B74: .word _0209C98C
_02041B78: .word GetCheckIqMenuSkillString
arm_func_end PrintIqSkillsMenu
arm_func_start sub_02041B7C
sub_02041B7C: ; 0x02041B7C
stmdb sp!, {r4, lr}
sub sp, sp, #0xf8
ldr r1, _020420BC ; =_020AFE90
ldr r3, [r1, #4]
ldr r0, [r3, #0x6f0]
cmp r0, #8
addls pc, pc, r0, lsl #2
b _020420B0
_02041B9C: ; jump table
b _02041BC0 ; case 0
b _02041DB0 ; case 1
b _02041E40 ; case 2
b _02041EBC ; case 3
b _02041F30 ; case 4
b _02041EE4 ; case 5
b _02041FA4 ; case 6
b _02041FE8 ; case 7
b _020420A0 ; case 8
_02041BC0:
ldrsb r0, [r3]
bl IsAdvancedMenuActive2
cmp r0, #0
bne _02041CF8
ldr r0, _020420BC ; =_020AFE90
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl GetAdvancedMenuResult
ldr r2, _020420BC ; =_020AFE90
mvn r1, #0
ldr r3, [r2, #4]
str r0, [r3, #0x838]
ldr r2, [r2, #4]
ldr r0, [r2, #0x838]
cmp r0, r1
moveq r0, #8
streq r0, [r2, #0x6f0]
beq _020420B0
mov r0, #0
bl PlaySeVolumeWrapper
ldr r0, _020420BC ; =_020AFE90
ldr r2, _020420C0 ; =_0209C9B0
ldrsb r3, [r0]
ldr r1, [r0, #4]
ldr r2, [r2, r3, lsl #3]
str r2, [r1, #0x79c]
ldr r3, [r0, #4]
ldr r2, [r3, #0x838]
ldrb r1, [r3, #0x83c]
add r2, r3, r2
ldrb r2, [r2, #0x64]
cmp r1, #0
bne _02041C60
cmp r2, #0x18
cmpne r2, #0x1b
beq _02041C60
add r1, r2, #0xc8
and r1, r1, #0xff
cmp r1, #1
bhi _02041C7C
_02041C60:
mov r1, #3
ldr r0, _020420BC ; =_020AFE90
strb r1, [r3, #0x834]
ldr r0, [r0, #4]
mov r1, #0
strb r1, [r0, #0x835]
b _02041C8C
_02041C7C:
mov r1, #0
strb r1, [r3, #0x834]
ldr r0, [r0, #4]
strb r1, [r0, #0x835]
_02041C8C:
ldr r0, _020420BC ; =_020AFE90
mov r1, #0x98
ldr r0, [r0, #4]
add r0, r0, #0x39c
add r0, r0, #0x400
bl MemZero
ldr r2, _020420BC ; =_020AFE90
ldr r3, _020420C4 ; =_0209C9AC
ldr r4, [r2, #4]
mov r1, #0
add r0, r4, #0x34
add r0, r0, #0x800
str r0, [r4, #0x7fc]
str r3, [sp]
str r1, [sp, #4]
str r1, [sp, #8]
ldr r2, [r2, #4]
ldr r0, _020420C8 ; =_0209C99C
add r3, r2, #0x39c
ldr r2, _020420CC ; =0x80000233
add r3, r3, #0x400
bl sub_02046A20
ldr r0, _020420BC ; =_020AFE90
mov r1, #1
ldr r0, [r0, #4]
str r1, [r0, #0x6f0]
b _020420B0
_02041CF8:
add r1, sp, #0xc
mov r0, #0
bl GetPressedButtons
ldrh r0, [sp, #0xc]
tst r0, #8
beq _02041D54
ldr r0, _020420D0 ; =0x00003F04
bl PlaySeByIdVolumeWrapper
ldr r0, _020420BC ; =_020AFE90
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl sub_0202C1E4
ldr r0, _020420BC ; =_020AFE90
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl GetAdvancedMenuResult
ldr r1, _020420BC ; =_020AFE90
mov r2, #3
ldr r3, [r1, #4]
str r0, [r3, #0x838]
ldr r0, [r1, #4]
str r2, [r0, #0x6f0]
b _020420B0
_02041D54:
tst r0, #4
beq _020420B0
ldr r0, _020420BC ; =_020AFE90
ldr r1, [r0, #4]
ldrb r0, [r1, #0x83c]
cmp r0, #0
beq _02041D7C
ldr r0, _020420D4 ; =0x00003F03
bl PlaySeByIdVolumeWrapper
b _020420B0
_02041D7C:
ldrsb r0, [r1]
bl sub_0202C1E4
ldr r0, _020420BC ; =_020AFE90
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl GetAdvancedMenuResult
ldr r1, _020420BC ; =_020AFE90
mov r2, #2
ldr r3, [r1, #4]
str r0, [r3, #0x838]
ldr r0, [r1, #4]
str r2, [r0, #0x6f0]
b _020420B0
_02041DB0:
bl sub_02046B04
mov r4, r0
bl sub_02046BA0
ldr r1, _020420BC ; =_020AFE90
add r2, r4, #2
strb r0, [r1]
cmp r2, #4
addls pc, pc, r2, lsl #2
b _020420B0
_02041DD4: ; jump table
b _02041DF0 ; case 0
b _020420B0 ; case 1
b _02041E14 ; case 2
b _02041E24 ; case 3
b _02041DE8 ; case 4
_02041DE8:
mov r0, #0
bl PlaySeVolumeWrapper
_02041DF0:
ldr r0, _020420BC ; =_020AFE90
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl ResumeAdvancedMenu
ldr r0, _020420BC ; =_020AFE90
mov r1, #0
ldr r0, [r0, #4]
str r1, [r0, #0x6f0]
b _020420B0
_02041E14:
ldr r0, [r1, #4]
mov r1, #2
str r1, [r0, #0x6f0]
b _020420B0
_02041E24:
mov r0, #0
bl PlaySeVolumeWrapper
ldr r0, _020420BC ; =_020AFE90
mov r1, #3
ldr r0, [r0, #4]
str r1, [r0, #0x6f0]
b _020420B0
_02041E40:
ldr r1, [r3, #0x838]
add r2, r3, #0x64
ldrb r0, [r2, r1]
cmp r0, #0x18
bne _02041E60
mov r0, #2
bl PlaySeVolumeWrapper
b _02041E98
_02041E60:
cmp r0, #0x1b
beq _02041E78
add r0, r0, #0xc8
and r0, r0, #0xff
cmp r0, #1
bhi _02041E84
_02041E78:
mov r0, #2
bl PlaySeVolumeWrapper
b _02041E98
_02041E84:
ldrb r1, [r2, r1]
ldr r0, [r3, #0x790]
bl DisableIqSkill
ldr r0, _020420D8 ; =0x00003F07
bl PlaySeByIdVolumeWrapper
_02041E98:
ldr r0, _020420BC ; =_020AFE90
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl ResumeAdvancedMenu
ldr r0, _020420BC ; =_020AFE90
mov r1, #0
ldr r0, [r0, #4]
str r1, [r0, #0x6f0]
b _020420B0
_02041EBC:
ldrsb r0, [r3]
bl sub_0202812C
ldr r1, _020420BC ; =_020AFE90
mov r2, #5
ldr r0, [r1, #4]
add r0, r0, #0x700
strh r2, [r0, #0x8e]
ldr r0, [r1, #4]
str r2, [r0, #0x6f0]
b _020420B0
_02041EE4:
add r0, r3, #0x700
ldrsh r2, [r0, #0x8e]
sub r2, r2, #1
strh r2, [r0, #0x8e]
ldr r2, [r1, #4]
add r0, r2, #0x700
ldrsh r0, [r0, #0x8e]
cmp r0, #0
bge _020420B0
mov r0, #4
str r0, [r2, #0x6f0]
ldr r0, [r1, #4]
ldrsb r0, [r0]
bl CloseAdvancedMenu
ldr r0, _020420BC ; =_020AFE90
mvn r1, #1
ldr r0, [r0, #4]
strb r1, [r0]
b _020420B0
_02041F30:
add r0, sp, #0xa8
bl InitPreprocessorArgs
ldr r0, _020420BC ; =_020AFE90
add ip, sp, #0xa8
ldr r3, [r0, #4]
ldr r0, _020420DC ; =_020AFE98
ldr r2, [r3, #0x838]
ldr r1, _020420E0 ; =0x00001013
add r2, r3, r2
ldrb lr, [r2, #0x64]
ldr r3, _020420E4 ; =0x00000A77
mov r2, #0
str lr, [sp, #0xb8]
str ip, [sp]
ldr ip, [sp, #0xb8]
#if defined(EUROPE)
add ip, ip, #0x32c
add ip, ip, #0x2400
#elif defined(JAPAN)
add ip, ip, #0x358
add ip, ip, #0x3c00
#else
add ip, ip, #0x2a
add ip, ip, #0x2700
#endif
mov ip, ip, lsl #0x10
mov ip, ip, lsr #0x10
str ip, [sp, #4]
str r2, [sp, #8]
bl CreateScrollBoxSingle
ldr r1, _020420BC ; =_020AFE90
mov r2, #6
ldr r3, [r1, #4]
strb r0, [r3, #1]
ldr r0, [r1, #4]
str r2, [r0, #0x6f0]
b _020420B0
_02041FA4:
ldrsb r0, [r3, #1]
bl IsScrollBoxActive
cmp r0, #0
bne _020420B0
ldr r0, _020420BC ; =_020AFE90
ldr r0, [r0, #4]
ldrsb r0, [r0, #1]
bl CloseScrollBox
ldr r0, _020420BC ; =_020AFE90
mov r3, #7
ldr r2, [r0, #4]
mov r1, #8
str r3, [r2, #0x6f0]
ldr r0, [r0, #4]
add r0, r0, #0x700
strh r1, [r0, #0x8e]
b _020420B0
_02041FE8:
add r0, r3, #0x700
ldrsh r2, [r0, #0x8e]
sub r2, r2, #1
strh r2, [r0, #0x8e]
ldr r0, [r1, #4]
add r0, r0, #0x700
ldrsh r2, [r0, #0x8e]
cmp r2, #0
bge _020420B0
mov r3, #0
strh r3, [r0, #0x8e]
ldr r2, [r1, #4]
mov r0, #0xd
str r3, [r2, #0x6f0]
ldr r3, [r1, #4]
str r0, [sp, #0x14]
ldr r2, [r3, #0x838]
#ifdef JAPAN
ldr r1, _02042454 ; =0x00001586
#else
rsb r1, r0, #0xa80
#endif
mov r0, #0x10
str r0, [sp, #0x1c]
str r2, [sp, #0x10]
strh r1, [sp, #0x18]
add r0, r3, #0x700
ldrsh r1, [r0, #0x94]
ldr r2, [r3, #0x798]
add r0, r3, #0x64
bl GetLearnableIqSkills
ldr ip, _020420BC ; =_020AFE90
ldr r1, _020420E8 ; =0x80401C33
ldr r3, [ip, #4]
add r2, sp, #0x10
add r3, r3, #0x700
strh r0, [r3, #0x8c]
ldr r3, [ip, #4]
ldr r0, _020420EC ; =_0209C98C
add r3, r3, #0x700
ldrsh lr, [r3, #0x8c]
ldr r3, _020420F0 ; =GetCheckIqMenuSkillString
mov ip, #8
str lr, [sp]
str ip, [sp, #4]
bl CreateAdvancedMenu
ldr r1, _020420BC ; =_020AFE90
ldr r1, [r1, #4]
strb r0, [r1]
b _020420B0
_020420A0:
mov r0, #9
str r0, [r3, #0x6f0]
mov r0, #1
b _020420B4
_020420B0:
mov r0, #0
_020420B4:
add sp, sp, #0xf8
ldmia sp!, {r4, pc}
.align 2, 0
_020420BC: .word _020AFE90
_020420C0: .word _0209C9B0
_020420C4: .word _0209C9AC
_020420C8: .word _0209C99C
_020420CC: .word 0x80000233
_020420D0: .word 0x00003F04
_020420D4: .word 0x00003F03
_020420D8: .word 0x00003F07
_020420DC: .word _020AFE98
_020420E0: .word 0x00001013
#ifdef JAPAN
_020420E4: .word 0x0000158A
_02042454: .word 0x00001586
#else
_020420E4: .word 0x00000A77
#endif
_020420E8: .word 0x80401C33
_020420EC: .word _0209C98C
_020420F0: .word GetCheckIqMenuSkillString
arm_func_end sub_02041B7C
arm_func_start sub_020420F4
sub_020420F4: ; 0x020420F4
stmdb sp!, {r3, lr}
ldr r0, _02042138 ; =_020AFE90
ldr r0, [r0, #4]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0]
mvn r1, #1
cmp r0, r1
beq _0204211C
bl CloseAdvancedMenu
_0204211C:
ldr r0, _02042138 ; =_020AFE90
ldr r0, [r0, #4]
bl MemFree
ldr r0, _02042138 ; =_020AFE90
mov r1, #0
str r1, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_02042138: .word _020AFE90
arm_func_end sub_020420F4
arm_func_start GetCheckIqMenuSkillString
GetCheckIqMenuSkillString: ; 0x0204213C
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0x84
ldr r2, _02042248 ; =_020AFE90
mov r4, r0
ldr r2, [r2, #4]
mov r6, #0
add r0, r2, r1
ldrb r5, [r0, #0x64]
ldr r0, [r2, #0x790]
cmp r5, #0x18
bne _02042174
mov r0, #3
bl GetResolvedPerformanceProgressFlag
b _0204217C
_02042174:
mov r1, r5
bl IqSkillFlagTest
_0204217C:
cmp r0, #0
movne r6, #1
cmp r6, #0
beq _020421DC
cmp r5, #0x38
bgt _020421B4
bge _020421BC
cmp r5, #0x1b
bgt _020421CC
cmp r5, #0x18
blt _020421CC
cmpne r5, #0x1b
beq _020421BC
b _020421CC
_020421B4:
cmp r5, #0x39
bne _020421CC
_020421BC:
ldr r1, _0204224C ; =_0209C9CC
add r0, sp, #0x44
bl strcpy
b _020421E8
_020421CC:
ldr r1, _02042250 ; =_0209C9D4
add r0, sp, #0x44
bl strcpy
b _020421E8
_020421DC:
ldr r1, _02042254 ; =_0209C9DC
add r0, sp, #0x44
bl strcpy
_020421E8:
ldr r1, _02042248 ; =_020AFE90
mov r0, r5
ldr r1, [r1, #4]
str r5, [r1, #0x24]
bl GetIqSkillStringId
mov r1, r0
add r0, sp, #4
mov r2, #0x40
bl CopyNStringFromId
add r0, sp, #0x44
add r1, sp, #4
bl strcat
ldr r1, _02042248 ; =_020AFE90
mov r0, r4
ldr r2, [r1, #4]
mov r1, #0x40
add r2, r2, #0x14
str r2, [sp]
add r2, sp, #0x44
mov r3, #0
bl PreprocessString
mov r0, r4
add sp, sp, #0x84
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02042248: .word _020AFE90
_0204224C: .word _0209C9CC
_02042250: .word _0209C9D4
_02042254: .word _0209C9DC
arm_func_end GetCheckIqMenuSkillString
arm_func_start sub_02042258
sub_02042258: ; 0x02042258
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0xc
mov r6, r0
mov r0, #0xa0
mov r1, #8
mov r5, r2
mov r4, r3
bl MemAlloc
ldr r1, _020423B4 ; =_020AFEA8
str r0, [r1, #4]
str r6, [r0]
bl RemoveEmptyItemsInBag
mov r0, #0x14
bl Arm9LoadUnkFieldNa0x2029EC8
ldr r1, _020423B4 ; =_020AFEA8
cmp r4, #0
ldr r3, [r1, #4]
ldrne r4, _020423B8 ; =sub_020423D8
str r0, [r3, #8]
ldr r2, _020423BC ; =0x0000032F
ldr r0, [r1, #4]
mov ip, #0x10
strh r2, [r0, #0x10]
ldr r0, [r1, #4]
mov r3, #0xd
str ip, [r0, #0x14]
ldr r0, [r1, #4]
ldr r2, _020423C0 ; =sub_0204261C
str r3, [r0, #0xc]
ldr r0, [r1, #4]
moveq r4, #0
str r2, [r0, #0x7c]
bl GetNbItemsInBag
str r4, [sp]
str r0, [sp, #4]
ldr r0, _020423B4 ; =_020AFEA8
str r5, [sp, #8]
ldr r2, [r0, #4]
ldr r0, _020423C4 ; =_0209C9E4
ldr r1, _020423C8 ; =0x00443C33
ldr r3, _020423CC ; =sub_02042760
add r2, r2, #8
bl CreateCollectionMenu
ldr r2, _020423B4 ; =_020AFEA8
ldr r1, _020423D0 ; =sub_0204262C
ldr r3, [r2, #4]
strb r0, [r3, #4]
ldr r0, [r2, #4]
ldrsb r0, [r0, #4]
bl sub_0202D068
ldr r0, _020423B4 ; =_020AFEA8
ldr r1, _020423D4 ; =sub_0204263C
ldr r0, [r0, #4]
ldrsb r0, [r0, #4]
bl SetCollectionMenuVoidFn
ldr r0, _020423B4 ; =_020AFEA8
mov r1, #0xd
ldr r0, [r0, #4]
ldrsb r0, [r0, #4]
bl SetCollectionMenuField0x1BC
ldr r0, _020423B4 ; =_020AFEA8
ldr r1, [r0, #4]
ldr r0, [r1]
cmp r0, #3
beq _02042368
cmp r0, #4
beq _0204237C
b _020423A0
_02042368:
#ifdef EUROPE
ldrsb r0, [r1, #4]
mov r1, #9
bl SetCollectionMenuField0x1BC
#endif
mov r0, #0
bl sub_0204440C
mov r0, #2
bl sub_0204426C
b _020423A0
_0204237C:
ldrsb r0, [r1, #4]
#ifdef EUROPE
mov r1, #9
bl SetCollectionMenuField0x1BC
ldr r0, _020423B4 ; =_020AFEA8
#endif
mov r1, #0x76
#ifdef EUROPE
ldr r0, [r0, #4]
ldrsb r0, [r0, #4]
#endif
bl SetCollectionMenuWidth
mov r0, #0
bl sub_0204440C
mov r0, #0
bl sub_0204426C
mov r0, #0
bl sub_02044568
_020423A0:
ldr r0, _020423B4 ; =_020AFEA8
ldr r0, [r0, #4]
ldrsb r0, [r0, #4]
add sp, sp, #0xc
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_020423B4: .word _020AFEA8
_020423B8: .word sub_020423D8
#ifdef JAPAN
_020423BC: .word 0x000031F4
#else
_020423BC: .word 0x0000032F
#endif
_020423C0: .word sub_0204261C
_020423C4: .word _0209C9E4
_020423C8: .word 0x00443C33
_020423CC: .word sub_02042760
_020423D0: .word sub_0204262C
_020423D4: .word sub_0204263C
arm_func_end sub_02042258
arm_func_start sub_020423D8
sub_020423D8: ; 0x020423D8
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r1, _02042618 ; =_020AFEA8
mov r5, #0
ldr r2, [r1, #4]
ldr r1, [r2]
cmp r1, #3
bne _02042498
tst r0, #0x800
beq _02042498
bl sub_02042B20
cmp r0, #0
ble _0204241C
bl sub_02042AF8
mov r0, #6
bl PlaySeVolumeWrapper
mov r5, #1
b _020425D8
_0204241C:
bl sub_0200FD48
mov r4, r0
bl CountNbOfItemsInStorage
sub r7, r4, r0
mov r8, r5
mov r6, #1
ldr r4, _02042618 ; =_020AFEA8
b _02042470
_0204243C:
cmp r7, #0
ble _02042478
mov r0, r8, lsl #0x10
mov r0, r0, asr #0x10
bl GetItemAtIdx
ldrsh r0, [r0, #4]
bl IsStorableItem
cmp r0, #0
ldrne r0, [r4, #8]
movne r5, r6
strne r6, [r0, r8, lsl #2]
subne r7, r7, #1
add r8, r8, #1
_02042470:
cmp r8, #0x32
blt _0204243C
_02042478:
cmp r5, #0
beq _0204248C
mov r0, #6
bl PlaySeVolumeWrapper
b _020425D8
_0204248C:
mov r0, #2
bl PlaySeVolumeWrapper
b _020425D8
_02042498:
tst r0, #0x400
beq _020425D8
ldrsb r0, [r2, #4]
bl sub_0202D0EC
ldr r1, _02042618 ; =_020AFEA8
mov r4, r0
ldr r0, [r1, #4]
ldr r0, [r0]
cmp r0, #3
beq _020424CC
cmp r0, #4
beq _02042570
b _020425D8
_020424CC:
mov r0, r4, lsl #0x10
mov r0, r0, asr #0x10
bl GetItemAtIdx
ldrsh r0, [r0, #4]
bl IsStorableItem
cmp r0, #0
beq _02042560
ldr r0, _02042618 ; =_020AFEA8
ldr r2, [r0, #8]
ldr r0, [r2, r4, lsl #2]
tst r0, #1
beq _02042514
mov r1, #0
mov r0, #6
str r1, [r2, r4, lsl #2]
bl PlaySeVolumeWrapper
mov r5, #1
b _020425D8
_02042514:
bl CountNbOfItemsInStorage
mov r6, r0
bl sub_02042B20
mov r5, r0
bl sub_0200FD48
add r1, r6, r5
cmp r1, r0
bge _02042550
mov r0, #6
bl PlaySeVolumeWrapper
ldr r0, _02042618 ; =_020AFEA8
mov r5, #1
ldr r0, [r0, #8]
str r5, [r0, r4, lsl #2]
b _020425D8
_02042550:
mov r0, #2
bl PlaySeVolumeWrapper
mov r5, #0
b _020425D8
_02042560:
mov r0, #2
bl PlaySeVolumeWrapper
mov r5, #0
b _020425D8
_02042570:
mov r0, r4, lsl #0x10
mov r0, r0, asr #0x10
bl GetItemAtIdx
ldrsh r0, [r0, #4]
bl IsShoppableItem
cmp r0, #0
beq _020425CC
ldr r0, _02042618 ; =_020AFEA8
mov r5, #1
ldr r2, [r0, #8]
ldr r0, [r2, r4, lsl #2]
tst r0, #1
mov r0, #6
beq _020425B8
mov r1, #0
str r1, [r2, r4, lsl #2]
bl PlaySeVolumeWrapper
b _020425D8
_020425B8:
bl PlaySeVolumeWrapper
ldr r0, _02042618 ; =_020AFEA8
ldr r0, [r0, #8]
str r5, [r0, r4, lsl #2]
b _020425D8
_020425CC:
mov r0, #2
bl PlaySeVolumeWrapper
mov r5, #0
_020425D8:
bl sub_02042B20
cmp r0, #0
beq _020425FC
ldr r0, _02042618 ; =_020AFEA8
mov r1, #1
ldr r0, [r0, #4]
ldrsb r0, [r0, #4]
bl sub_0202D16C
b _02042610
_020425FC:
ldr r0, _02042618 ; =_020AFEA8
mov r1, #0
ldr r0, [r0, #4]
ldrsb r0, [r0, #4]
bl sub_0202D16C
_02042610:
mov r0, r5
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02042618: .word _020AFEA8
arm_func_end sub_020423D8
arm_func_start sub_0204261C
sub_0204261C: ; 0x0204261C
stmdb sp!, {r3, lr}
bl sub_02042BE0
bl sub_02044308
ldmia sp!, {r3, pc}
arm_func_end sub_0204261C
arm_func_start sub_0204262C
sub_0204262C: ; 0x0204262C
stmdb sp!, {r3, lr}
bl sub_02042BE0
bl sub_02044308
ldmia sp!, {r3, pc}
arm_func_end sub_0204262C
arm_func_start sub_0204263C
sub_0204263C: ; 0x0204263C
ldr r2, _0204265C ; =BAG_ITEMS_PTR_MIRROR
mov r1, #6
ldr r2, [r2]
ldr ip, _02042660 ; =sub_020444B0
ldr r2, [r2, #0x384]
mla r1, r0, r1, r2
ldrsh r0, [r1, #4]
bx ip
.align 2, 0
_0204265C: .word BAG_ITEMS_PTR_MIRROR
_02042660: .word sub_020444B0
arm_func_end sub_0204263C
arm_func_start sub_02042664
sub_02042664: ; 0x02042664
stmdb sp!, {r3, lr}
ldr r0, _020426B0 ; =_020AFEA8
ldr r0, [r0, #4]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl sub_02044474
bl sub_020442CC
bl sub_020445C8
ldr r0, _020426B0 ; =_020AFEA8
ldr r0, [r0, #4]
ldrsb r0, [r0, #4]
bl CloseCollectionMenu
ldr r0, _020426B0 ; =_020AFEA8
ldr r0, [r0, #4]
bl MemFree
ldr r0, _020426B0 ; =_020AFEA8
mov r1, #0
str r1, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_020426B0: .word _020AFEA8
arm_func_end sub_02042664
arm_func_start sub_020426B4
sub_020426B4: ; 0x020426B4
stmdb sp!, {r3, lr}
ldr r0, _0204272C ; =_020AFEA8
ldr r0, [r0, #4]
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0, #4]
bl IsCollectionMenuActive
cmp r0, #0
bne _02042708
ldr r0, _0204272C ; =_020AFEA8
ldr r0, [r0, #4]
ldrsb r0, [r0, #4]
bl sub_0202C75C
mvn r1, #0
cmp r0, r1
ldrne r1, _0204272C ; =_020AFEA8
moveq r0, #2
strneh r0, [r1]
movne r0, #3
ldmia sp!, {r3, pc}
_02042708:
ldr r0, _0204272C ; =_020AFEA8
ldr r0, [r0, #4]
ldrsb r0, [r0, #4]
bl sub_0202C748
and r1, r0, #0xff
mov r0, #0x14
bl Arm9StoreUnkFieldNa0x2029ED8
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_0204272C: .word _020AFEA8
arm_func_end sub_020426B4
arm_func_start sub_02042730
sub_02042730: ; 0x02042730
ldr r0, _02042740 ; =_020AFEA8
mov r1, #0
strh r1, [r0]
bx lr
.align 2, 0
_02042740: .word _020AFEA8
arm_func_end sub_02042730
arm_func_start sub_02042744
sub_02042744: ; 0x02042744
ldr r0, _02042758 ; =_020AFEA8
ldr ip, _0204275C ; =sub_0202C620
ldr r0, [r0, #4]
ldrsb r0, [r0, #4]
bx ip
.align 2, 0
_02042758: .word _020AFEA8
_0204275C: .word sub_0202C620
arm_func_end sub_02042744
arm_func_start sub_02042760
sub_02042760: ; 0x02042760
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x64
mov r5, r1
mov r1, #6
ldr r3, _02042A64 ; =BAG_ITEMS_PTR_MIRROR
mul r4, r5, r1
ldr r1, [r3]
ldr r3, _02042A68 ; =_020AFEA8
ldr r6, [r1, #0x384]
ldr r7, [r3, #4]
ldrh r1, [r6, r4]
add lr, r6, r4
mov r4, r2
strh r1, [sp]
ldrh ip, [lr, #2]
mov r6, r0
add r1, sp, #0
strh ip, [sp, #2]
ldrh r2, [lr, #4]
strh r2, [sp, #4]
ldr r2, [r7]
cmp r2, #5
addls pc, pc, r2, lsl #2
b _02042A3C
_020427C0: ; jump table
b _020427D8 ; case 0
b _020427E4 ; case 1
b _020427E4 ; case 2
b _02042808 ; case 3
b _020428D4 ; case 4
b _020429E8 ; case 5
_020427D8:
mov r2, #0
bl sub_0200D670
b _02042A3C
_020427E4:
mov r7, #0
mov r3, #1
add r2, sp, #8
str r7, [sp, #8]
strb r7, [sp, #0xc]
strb r3, [sp, #0x10]
strb r3, [sp]
bl sub_0200D670
b _02042A3C
_02042808:
mov r1, #0
mov r0, #1
str r1, [sp, #8]
strb r1, [sp, #0xc]
strb r0, [sp, #0x10]
strb r0, [sp]
ldr r0, [r3, #8]
ldr r0, [r0, r5, lsl #2]
tst r0, #1
bne _0204284C
mov r0, r5, lsl #0x10
mov r0, r0, asr #0x10
bl GetItemAtIdx
ldrsh r0, [r0, #4]
bl IsStorableItem
cmp r0, #0
beq _02042890
_0204284C:
add r0, sp, #0x14
add r1, sp, #0
add r2, sp, #8
bl sub_0200D670
ldrb r2, [sp, #1]
cmp r2, #0
beq _0204287C
ldr r1, _02042A6C ; =_0209C9F4
add r3, sp, #0x14
mov r0, r6
bl SprintfStatic__02042A84
b _02042A3C
_0204287C:
ldr r1, _02042A70 ; =_0209C9FC
add r2, sp, #0x14
mov r0, r6
bl SprintfStatic__02042A84
b _02042A3C
_02042890:
add r0, sp, #0x14
add r1, sp, #0
add r2, sp, #8
bl sub_0200D65C
ldrb r2, [sp, #1]
cmp r2, #0
beq _020428C0
ldr r1, _02042A74 ; =_0209CA08
add r3, sp, #0x14
mov r0, r6
bl SprintfStatic__02042A84
b _02042A3C
_020428C0:
ldr r1, _02042A78 ; =_0209CA18
add r2, sp, #0x14
mov r0, r6
bl SprintfStatic__02042A84
b _02042A3C
_020428D4:
ldrsh r0, [sp, #4]
bl IsShoppableItem
cmp r0, #0
beq _020429A4
mov r7, #3
mov r3, #0
mov r2, #0x6a
mov r1, #1
add r0, sp, #0
str r7, [sp, #8]
strb r3, [sp, #0xc]
strh r2, [sp, #0xe]
strb r1, [sp, #0x10]
strb r7, [sp]
bl GetActualSellPrice
mov r7, r0
bl GetMoneyCarried
ldr r1, _02042A7C ; =0x0001869F
add r0, r7, r0
cmp r0, r1
add r0, sp, #0x14
add r1, sp, #0
add r2, sp, #8
bgt _0204296C
bl sub_0200D670
ldrb r2, [sp, #1]
cmp r2, #0
beq _02042958
ldr r1, _02042A6C ; =_0209C9F4
add r3, sp, #0x14
mov r0, r6
bl SprintfStatic__02042A84
b _02042A3C
_02042958:
ldr r1, _02042A70 ; =_0209C9FC
add r2, sp, #0x14
mov r0, r6
bl SprintfStatic__02042A84
b _02042A3C
_0204296C:
bl sub_0200D65C
ldrb r2, [sp, #1]
cmp r2, #0
beq _02042990
ldr r1, _02042A74 ; =_0209CA08
add r3, sp, #0x14
mov r0, r6
bl SprintfStatic__02042A84
b _02042A3C
_02042990:
ldr r1, _02042A78 ; =_0209CA18
add r2, sp, #0x14
mov r0, r6
bl SprintfStatic__02042A84
b _02042A3C
_020429A4:
add r0, sp, #0x14
add r1, sp, #0
mov r2, #0
bl sub_0200D65C
ldrb r2, [sp, #1]
cmp r2, #0
beq _020429D4
ldr r1, _02042A74 ; =_0209CA08
add r3, sp, #0x14
mov r0, r6
bl SprintfStatic__02042A84
b _02042A3C
_020429D4:
ldr r1, _02042A78 ; =_0209CA18
add r2, sp, #0x14
mov r0, r6
bl SprintfStatic__02042A84
b _02042A3C
_020429E8:
ldrsh r0, [sp, #4]
mov r2, #0
mov r1, #1
str r2, [sp, #8]
strb r2, [sp, #0xc]
strb r1, [sp, #0x10]
strb r1, [sp]
bl IsGummi
cmp r0, #0
add r1, sp, #0
add r2, sp, #8
beq _02042A24
mov r0, r6
bl sub_0200D670
b _02042A3C
_02042A24:
add r0, sp, #0x14
bl sub_0200D65C
ldr r1, _02042A80 ; =_0209CA2C
add r2, sp, #0x14
mov r0, r6
bl SprintfStatic__02042A84
_02042A3C:
ldr r0, _02042A68 ; =_020AFEA8
ldr r0, [r0, #8]
ldr r0, [r0, r5, lsl #2]
tst r0, #1
movne r0, #1
moveq r0, #0
str r0, [r4]
mov r0, r6
add sp, sp, #0x64
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_02042A64: .word BAG_ITEMS_PTR_MIRROR
_02042A68: .word _020AFEA8
_02042A6C: .word _0209C9F4
_02042A70: .word _0209C9FC
_02042A74: .word _0209CA08
_02042A78: .word _0209CA18
_02042A7C: .word 0x0001869F
_02042A80: .word _0209CA2C
arm_func_end sub_02042760
arm_func_start SprintfStatic__02042A84
SprintfStatic__02042A84: ; 0x02042A84
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, lr}
add r2, sp, #0xc
bic r2, r2, #3
ldr r1, [sp, #0xc]
add r2, r2, #4
bl vsprintf
ldmia sp!, {r3, lr}
add sp, sp, #0x10
bx lr
arm_func_end SprintfStatic__02042A84
arm_func_start sub_02042AAC
sub_02042AAC: ; 0x02042AAC
stmdb sp!, {r3, lr}
ldr r0, _02042AD8 ; =_020AFEA8
ldr r0, [r0, #4]
cmp r0, #0
ldrnesb r0, [r0, #4]
mvnne r1, #1
cmpne r0, r1
moveq r0, #0
ldmeqia sp!, {r3, pc}
bl IsCollectionMenuState3
ldmia sp!, {r3, pc}
.align 2, 0
_02042AD8: .word _020AFEA8
arm_func_end sub_02042AAC
arm_func_start sub_02042ADC
sub_02042ADC: ; 0x02042ADC
ldr r0, _02042AF0 ; =_020AFEA8
ldr ip, _02042AF4 ; =sub_0202D0EC
ldr r0, [r0, #4]
ldrsb r0, [r0, #4]
bx ip
.align 2, 0
_02042AF0: .word _020AFEA8
_02042AF4: .word sub_0202D0EC
arm_func_end sub_02042ADC
arm_func_start sub_02042AF8
sub_02042AF8: ; 0x02042AF8
mov r3, #0
ldr r0, _02042B1C ; =_020AFEA8
mov r2, r3
_02042B04:
ldr r1, [r0, #8]
str r2, [r1, r3, lsl #2]
add r3, r3, #1
cmp r3, #0x32
blt _02042B04
bx lr
.align 2, 0
_02042B1C: .word _020AFEA8
arm_func_end sub_02042AF8
arm_func_start sub_02042B20
sub_02042B20: ; 0x02042B20
ldr r1, _02042B4C ; =_020AFEA8
mov r0, #0
ldr r3, [r1, #8]
mov r2, r0
_02042B30:
ldr r1, [r3, r2, lsl #2]
add r2, r2, #1
tst r1, #1
addne r0, r0, #1
cmp r2, #0x32
blt _02042B30
bx lr
.align 2, 0
_02042B4C: .word _020AFEA8
arm_func_end sub_02042B20
arm_func_start sub_02042B50
sub_02042B50: ; 0x02042B50
ldr r1, _02042B80 ; =_020AFEA8
mov r0, #0
ldr r2, [r1, #8]
b _02042B70
_02042B60:
ldr r1, [r2, r0, lsl #2]
tst r1, #1
bxne lr
add r0, r0, #1
_02042B70:
cmp r0, #0x32
blt _02042B60
mvn r0, #0
bx lr
.align 2, 0
_02042B80: .word _020AFEA8
arm_func_end sub_02042B50
arm_func_start sub_02042B84
sub_02042B84: ; 0x02042B84
ldr r1, _02042B94 ; =_020AFEA8
ldr r1, [r1, #8]
ldr r0, [r1, r0, lsl #2]
bx lr
.align 2, 0
_02042B94: .word _020AFEA8
arm_func_end sub_02042B84
arm_func_start sub_02042B98
sub_02042B98: ; 0x02042B98
stmdb sp!, {r3, lr}
mov r0, #0xc8
mov r1, #8
bl MemAlloc
ldr r1, _02042BB8 ; =_020AFEA8
str r0, [r1, #8]
bl sub_02042AF8
ldmia sp!, {r3, pc}
.align 2, 0
_02042BB8: .word _020AFEA8
arm_func_end sub_02042B98
arm_func_start sub_02042BBC
sub_02042BBC: ; 0x02042BBC
stmdb sp!, {r3, lr}
ldr r0, _02042BDC ; =_020AFEA8
ldr r0, [r0, #8]
bl MemFree
ldr r0, _02042BDC ; =_020AFEA8
mov r1, #0
str r1, [r0, #8]
ldmia sp!, {r3, pc}
.align 2, 0
_02042BDC: .word _020AFEA8
arm_func_end sub_02042BBC
arm_func_start sub_02042BE0
sub_02042BE0: ; 0x02042BE0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
bl GetNbItemsInBag
mov r1, #6
mov r4, r0
mov r0, #0
ldr ip, _02042CE8 ; =_020AFEA8
ldr r3, _02042CEC ; =BAG_ITEMS_PTR_MIRROR
mov r2, r1
b _02042C44
_02042C04:
ldr r5, [ip, #8]
ldr r5, [r5, r0, lsl #2]
tst r5, #1
muleq r6, r0, r1
ldreq r5, [r3]
ldreq r7, [r5, #0x384]
ldreqb r5, [r7, r6]
biceq r5, r5, #0x80
beq _02042C3C
mul r6, r0, r2
ldr r5, [r3]
ldr r7, [r5, #0x384]
ldrb r5, [r7, r6]
orr r5, r5, #0x80
_02042C3C:
strb r5, [r7, r6]
add r0, r0, #1
_02042C44:
cmp r0, r4
blt _02042C04
bl SortItemsInBag
mov r2, #0
mov r7, r2
mov r0, #1
mov r3, #6
ldr lr, _02042CEC ; =BAG_ITEMS_PTR_MIRROR
ldr ip, _02042CE8 ; =_020AFEA8
b _02042CA4
_02042C6C:
mul r1, r2, r3
ldr r5, [lr]
ldr r5, [r5, #0x384]
ldrb r5, [r5, r1]
tst r5, #0x80
ldr r5, [ip, #8]
strne r0, [r5, r2, lsl #2]
streq r7, [r5, r2, lsl #2]
ldr r5, [lr]
add r2, r2, #1
ldr r6, [r5, #0x384]
ldrb r5, [r6, r1]
bic r5, r5, #0x80
strb r5, [r6, r1]
_02042CA4:
cmp r2, r4
blt _02042C6C
ldr r1, _02042CE8 ; =_020AFEA8
mvn r0, #1
ldr r1, [r1, #4]
ldrsb r1, [r1, #4]
cmp r1, r0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
bl GetNbItemsInBag
ldr r2, _02042CE8 ; =_020AFEA8
mov r1, r0
ldr r0, [r2, #4]
mov r2, #8
ldrsb r0, [r0, #4]
mov r3, #0
bl sub_0202C654
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02042CE8: .word _020AFEA8
_02042CEC: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02042BE0
arm_func_start sub_02042CF0
sub_02042CF0: ; 0x02042CF0
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
mov r5, r0
mov r0, #0x18c0
mov r1, #8
mov r4, r2
bl MemAlloc
ldr r2, _02042F88 ; =_020AFEB4
mvn r3, #1
str r0, [r2, #4]
str r5, [r0]
ldr r0, [r2, #4]
mov r1, #0
strb r3, [r0, #0x7d5]
ldr r0, [r2, #4]
strb r3, [r0, #0x7d6]
ldr r0, [r2, #4]
strb r3, [r0, #0x7d7]
ldr r0, [r2, #4]
strb r3, [r0, #0x7d8]
ldr r0, [r2, #4]
strb r3, [r0, #0x7d9]
ldr r0, [r2, #4]
str r1, [r0, #0x90c]
ldr r0, [r2, #4]
add r0, r0, #0x900
strh r1, [r0, #0x10]
ldr r0, [r2, #0x10]
bl sub_02043BFC
ldr r2, _02042F88 ; =_020AFEB4
ldr r1, [r2, #4]
add r1, r1, #0x900
strh r0, [r1, #0x10]
ldr r0, [r2, #4]
add r0, r0, #0x900
ldrsh r0, [r0, #0x10]
cmp r0, #0
ble _02042DB4
ldr r0, [r2, #0x10]
cmp r0, #5
bne _02042DB4
ldrsh r0, [r2]
cmp r0, #0
beq _02042DB4
bl sub_020440F8
ldr r1, _02042F88 ; =_020AFEB4
ldr r1, [r1, #4]
add r1, r1, #0x900
strh r0, [r1, #0x10]
_02042DB4:
ldr r0, _02042F88 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x900
ldrsh r0, [r0, #0x10]
cmp r0, #0
bgt _02042DF0
mov r0, #9
mov r1, #0
bl sub_02043BFC
ldr r2, _02042F88 ; =_020AFEB4
mov r3, #9
ldr r1, [r2, #4]
add r1, r1, #0x900
strh r0, [r1, #0x10]
str r3, [r2, #0x10]
_02042DF0:
ldr r1, _02042F88 ; =_020AFEB4
sub r2, r5, #2
ldr r0, [r1, #4]
ldr r5, _02042F8C ; =0x000002F3
add r0, r0, #0x1000
str r4, [r0, #0x8bc]
ldrsh ip, [r1, #2]
ldr r0, [r1, #4]
mov r3, #0x10
str ip, [r0, #0x7dc]
ldr r0, [r1, #4]
mov ip, #0xd
add r0, r0, #0x700
strh r5, [r0, #0xe4]
ldr r0, [r1, #4]
ldr r5, _02042F90 ; =_0204357C
str r3, [r0, #0x7e8]
ldr r0, [r1, #4]
ldr r3, _02042F94 ; =_020441BC
str ip, [r0, #0x7e0]
ldr r0, [r1, #4]
cmp r2, #5
str r5, [r0, #0x858]
ldr r0, [r1, #4]
mov r5, #0
str r3, [r0, #0x850]
bhi _02042E6C
mov r0, #1
mov r1, r0, lsl r2
tst r1, #0x2b
movne r5, r0
_02042E6C:
ldr r1, _02042F88 ; =_020AFEB4
cmp r5, #0
movne r2, #0
ldr r3, [r1, #4]
ldreq r2, _02042F98 ; =sub_02042FB8
ldr r0, _02042F9C ; =_0209CA58
str r2, [sp]
add r2, r3, #0x900
ldrsh r5, [r2, #0x10]
add r2, r3, #0x3dc
ldr r1, _02042FA0 ; =0x00447C33
str r5, [sp, #4]
ldr r3, _02042FA4 ; =_020432B4
add r2, r2, #0x400
str r4, [sp, #8]
bl CreateCollectionMenu
ldr r2, _02042F88 ; =_020AFEB4
ldr r1, _02042FA8 ; =sub_020430F4
ldr r3, [r2, #4]
strb r0, [r3, #0x7d4]
ldr r0, [r2, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd4]
bl sub_0202D068
ldr r0, _02042F88 ; =_020AFEB4
ldr r1, _02042FAC ; =sub_02043148
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd4]
bl SetCollectionMenuVoidFn
ldr r0, _02042F88 ; =_020AFEB4
ldr r0, [r0, #4]
ldr r0, [r0]
cmp r0, #7
addls pc, pc, r0, lsl #2
b _02042F70
_02042EFC: ; jump table
b _02042F70 ; case 0
b _02042F28 ; case 1
b _02042F28 ; case 2
b _02042F1C ; case 3
b _02042F28 ; case 4
b _02042F60 ; case 5
b _02042F3C ; case 6
b _02042F60 ; case 7
_02042F1C:
mov r0, #0
bl sub_0204440C
b _02042F70
_02042F28:
mov r0, #0
bl sub_0204440C
mov r0, #2
bl sub_0204426C
b _02042F70
_02042F3C:
ldr r0, _02042FB0 ; =_0209CA48
ldr r1, _02042FB4 ; =sub_02044210
bl CreateTextBox
ldr r1, _02042F88 ; =_020AFEB4
ldr r1, [r1, #4]
strb r0, [r1, #0x7d5]
mov r0, #1
bl sub_0204426C
b _02042F70
_02042F60:
mov r0, #0
bl sub_0204440C
mov r0, #1
bl sub_0204426C
_02042F70:
ldr r0, _02042F88 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd4]
add sp, sp, #0xc
ldmia sp!, {r4, r5, pc}
.align 2, 0
_02042F88: .word _020AFEB4
#ifdef JAPAN
_02042F8C: .word 0x0000239B
#else
_02042F8C: .word 0x000002F3
#endif
_02042F90: .word sub_0204357C
_02042F94: .word sub_020441BC
_02042F98: .word sub_02042FB8
_02042F9C: .word _0209CA58
_02042FA0: .word 0x00447C33
_02042FA4: .word sub_020432B4
_02042FA8: .word sub_020430F4
_02042FAC: .word sub_02043148
_02042FB0: .word _0209CA48
_02042FB4: .word sub_02044210
arm_func_end sub_02042CF0
arm_func_start sub_02042FB8
sub_02042FB8: ; 0x02042FB8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
tst r0, #0x400
mov r4, #0
beq _020430A8
ldr r0, _020430F0 ; =_020AFEB4
ldr r0, [r0, #4]
ldr r0, [r0]
cmp r0, #1
cmpne r0, #4
cmpne r0, #6
bne _020430A8
bl sub_02043468
ldr r1, _020430F0 ; =_020AFEB4
mov r5, r0
ldr r0, [r1, #8]
ldrb r0, [r0, r5]
tst r0, #1
movne r4, #1
bne _0204303C
ldr r0, [r1, #4]
ldr r0, [r0]
cmp r0, #1
bne _02043038
bl GetNbItemsInBag
mov r7, r0
bl sub_020434FC
mov r6, r0
bl GetCurrentBagCapacity
add r1, r7, r6
cmp r1, r0
movlt r4, #1
b _0204303C
_02043038:
mov r4, #1
_0204303C:
cmp r4, #0
beq _020430A0
mov r0, #6
bl PlaySeVolumeWrapper
ldr r0, _020430F0 ; =_020AFEB4
mvn r1, #1
ldr r3, [r0, #8]
ldrb r2, [r3, r5]
eor r2, r2, #1
strb r2, [r3, r5]
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd6]
cmp r0, r1
beq _0204307C
bl sub_0202F9B8
_0204307C:
ldr r0, _020430F0 ; =_020AFEB4
ldr r1, [r0, #4]
ldr r0, [r1]
cmp r0, #6
bne _020430A8
add r0, r1, #0x700
ldrsb r0, [r0, #0xd5]
bl sub_0202F9B8
b _020430A8
_020430A0:
mov r0, #2
bl PlaySeVolumeWrapper
_020430A8:
bl sub_020434FC
cmp r0, #0
ble _020430D0
ldr r0, _020430F0 ; =_020AFEB4
mov r1, #1
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd4]
bl sub_0202D16C
b _020430E8
_020430D0:
ldr r0, _020430F0 ; =_020AFEB4
mov r1, #0
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd4]
bl sub_0202D16C
_020430E8:
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020430F0: .word _020AFEB4
arm_func_end sub_02042FB8
arm_func_start sub_020430F4
sub_020430F4: ; 0x020430F4
stmdb sp!, {r3, lr}
ldr r0, _02043144 ; =_020AFEB4
mov r1, #1
ldr r0, [r0, #0x10]
bl sub_02043BFC
ldr r2, _02043144 ; =_020AFEB4
mov r3, #0
ldr r1, [r2, #4]
add r1, r1, #0x900
strh r0, [r1, #0x10]
ldr r2, [r2, #4]
add r0, r2, #0x700
add r1, r2, #0x900
add r2, r2, #0x1000
ldrsb r0, [r0, #0xd4]
ldrsh r1, [r1, #0x10]
ldr r2, [r2, #0x8bc]
bl sub_0202C654
bl sub_02044308
ldmia sp!, {r3, pc}
.align 2, 0
_02043144: .word _020AFEB4
arm_func_end sub_020430F4
arm_func_start sub_02043148
sub_02043148: ; 0x02043148
stmdb sp!, {r3, lr}
ldr r1, _02043168 ; =_020AFEB4
ldr r1, [r1, #4]
add r0, r1, r0, lsl #1
ldrsh r0, [r0, #4]
bl sub_02010044
bl sub_020444B0
ldmia sp!, {r3, pc}
.align 2, 0
_02043168: .word _020AFEB4
arm_func_end sub_02043148
arm_func_start sub_0204316C
sub_0204316C: ; 0x0204316C
cmp r0, #0
movne r0, #5
moveq r0, #7
bx lr
arm_func_end sub_0204316C
arm_func_start sub_0204317C
sub_0204317C: ; 0x0204317C
stmdb sp!, {r3, lr}
ldr r0, _02043214 ; =_020AFEB4
ldr r0, [r0, #4]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl sub_02044474
bl sub_020442CC
bl sub_020445C8
ldr r0, _02043214 ; =_020AFEB4
ldr r1, [r0, #4]
ldr r0, [r1]
cmp r0, #6
bne _020431BC
add r0, r1, #0x700
ldrsb r0, [r0, #0xd5]
bl CloseTextBox
_020431BC:
ldr r0, _02043214 ; =_020AFEB4
mvn r1, #1
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd6]
cmp r0, r1
beq _020431DC
bl CloseTextBox
_020431DC:
ldr r1, _02043214 ; =_020AFEB4
ldr r0, [r1, #4]
ldr r2, [r0]
add r0, r0, #0x700
str r2, [r1, #0xc]
ldrsb r0, [r0, #0xd4]
bl CloseCollectionMenu
ldr r0, _02043214 ; =_020AFEB4
ldr r0, [r0, #4]
bl MemFree
ldr r0, _02043214 ; =_020AFEB4
mov r1, #0
str r1, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_02043214: .word _020AFEB4
arm_func_end sub_0204317C
arm_func_start sub_02043218
sub_02043218: ; 0x02043218
ldr r0, _02043228 ; =_020AFEB4
mov r1, #0
strh r1, [r0, #2]
bx lr
.align 2, 0
_02043228: .word _020AFEB4
arm_func_end sub_02043218
arm_func_start sub_0204322C
sub_0204322C: ; 0x0204322C
ldr r1, _02043238 ; =_020AFEB4
strh r0, [r1, #2]
bx lr
.align 2, 0
_02043238: .word _020AFEB4
arm_func_end sub_0204322C
arm_func_start sub_0204323C
sub_0204323C: ; 0x0204323C
stmdb sp!, {r3, lr}
bl sub_02043254
ldr r1, _02043250 ; =_020AFEB4
strh r0, [r1, #2]
ldmia sp!, {r3, pc}
.align 2, 0
_02043250: .word _020AFEB4
arm_func_end sub_0204323C
arm_func_start sub_02043254
sub_02043254: ; 0x02043254
ldr r1, _02043298 ; =_020AFEB4
mov r3, #0
ldr ip, [r1, #4]
mvn r1, #0
b _02043278
_02043268:
cmp r0, r2
moveq r0, r3
bxeq lr
add r3, r3, #1
_02043278:
cmp r3, #0x3e8
bge _02043290
add r2, ip, r3, lsl #1
ldrsh r2, [r2, #4]
cmp r2, r1
bne _02043268
_02043290:
mov r0, #0
bx lr
.align 2, 0
_02043298: .word _020AFEB4
arm_func_end sub_02043254
arm_func_start sub_0204329C
sub_0204329C: ; 0x0204329C
ldr r1, _020432B0 ; =_020AFEB4
ldr r1, [r1, #4]
add r0, r1, r0, lsl #1
ldrsh r0, [r0, #4]
bx lr
.align 2, 0
_020432B0: .word _020AFEB4
arm_func_end sub_0204329C
arm_func_start sub_020432B4
sub_020432B4: ; 0x020432B4
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
ldr r3, _02043318 ; =_020AFEB4
mov r5, r0
ldr r0, [r3, #4]
mov r4, r2
add r0, r0, r1, lsl #1
ldrsh r6, [r0, #4]
add r1, sp, #0
mov r0, r6
bl ConvertStorageItemAtIdxToItem
ldr r2, _0204331C ; =_0209CA3C
add r1, sp, #0
mov r0, r5
bl sub_0200D670
ldr r0, _02043318 ; =_020AFEB4
ldr r0, [r0, #8]
ldrb r0, [r0, r6]
tst r0, #1
movne r0, #1
moveq r0, #0
str r0, [r4]
mov r0, r5
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02043318: .word _020AFEB4
_0204331C: .word _0209CA3C
arm_func_end sub_020432B4
arm_func_start sub_02043320
sub_02043320: ; 0x02043320
stmdb sp!, {r3, lr}
cmp r0, #7
bne _02043344
bl CountNbOfValidItemsInTimeDarknessInStorage
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
_02043344:
sub r0, r0, #5
cmp r0, #1
bhi _02043368
bl CountNbOfValidItemsInStorage
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
_02043368:
bl CountNbOfItemsInStorage
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end sub_02043320
arm_func_start sub_02043380
sub_02043380: ; 0x02043380
stmdb sp!, {r3, lr}
cmp r0, #8
moveq r0, #0
ldmeqia sp!, {r3, pc}
bl IsStorageFull
ldmia sp!, {r3, pc}
arm_func_end sub_02043380
arm_func_start sub_02043398
sub_02043398: ; 0x02043398
stmdb sp!, {r3, lr}
ldr r0, _020433BC ; =_020AFEB4
ldr r0, [r0, #4]
cmp r0, #0
ldmeqia sp!, {r3, pc}
add r0, r0, #0x700
ldrsb r0, [r0, #0xd4]
bl sub_0202D134
ldmia sp!, {r3, pc}
.align 2, 0
_020433BC: .word _020AFEB4
arm_func_end sub_02043398
arm_func_start sub_020433C0
sub_020433C0: ; 0x020433C0
ldr r0, _020433D8 ; =_020AFEB4
ldr ip, _020433DC ; =sub_0202C620
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd4]
bx ip
.align 2, 0
_020433D8: .word _020AFEB4
_020433DC: .word sub_0202C620
arm_func_end sub_020433C0
arm_func_start sub_020433E0
sub_020433E0: ; 0x020433E0
ldr r0, _020433FC ; =_020AFEB4
ldr r0, [r0, #4]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_020433FC: .word _020AFEB4
arm_func_end sub_020433E0
arm_func_start sub_02043400
sub_02043400: ; 0x02043400
stmdb sp!, {r3, lr}
ldr r0, _02043430 ; =_020AFEB4
ldr r0, [r0, #4]
cmp r0, #0
addne r0, r0, #0x700
ldrnesb r0, [r0, #0xd4]
mvnne r1, #1
cmpne r0, r1
moveq r0, #0
ldmeqia sp!, {r3, pc}
bl IsCollectionMenuActive
ldmia sp!, {r3, pc}
.align 2, 0
_02043430: .word _020AFEB4
arm_func_end sub_02043400
arm_func_start sub_02043434
sub_02043434: ; 0x02043434
stmdb sp!, {r3, lr}
ldr r0, _02043464 ; =_020AFEB4
ldr r0, [r0, #4]
cmp r0, #0
addne r0, r0, #0x700
ldrnesb r0, [r0, #0xd4]
mvnne r1, #1
cmpne r0, r1
moveq r0, #0
ldmeqia sp!, {r3, pc}
bl IsCollectionMenuState3
ldmia sp!, {r3, pc}
.align 2, 0
_02043464: .word _020AFEB4
arm_func_end sub_02043434
arm_func_start sub_02043468
sub_02043468: ; 0x02043468
stmdb sp!, {r3, lr}
ldr r0, _020434D0 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd4]
bl IsCollectionMenuActive
cmp r0, #0
beq _020434A0
ldr r0, _020434D0 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd4]
bl sub_0202C748
b _020434B4
_020434A0:
ldr r0, _020434D0 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd4]
bl sub_0202C75C
_020434B4:
cmp r0, #0
ldrge r1, _020434D0 ; =_020AFEB4
mvnlt r0, #0
ldrge r1, [r1, #4]
addge r0, r1, r0, lsl #1
ldrgesh r0, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_020434D0: .word _020AFEB4
arm_func_end sub_02043468
arm_func_start sub_020434D4
sub_020434D4: ; 0x020434D4
mov r3, #0
ldr r0, _020434F8 ; =_020AFEB4
mov r2, r3
_020434E0:
ldr r1, [r0, #8]
strb r2, [r1, r3]
add r3, r3, #1
cmp r3, #0x3e8
blt _020434E0
bx lr
.align 2, 0
_020434F8: .word _020AFEB4
arm_func_end sub_020434D4
arm_func_start sub_020434FC
sub_020434FC: ; 0x020434FC
ldr r1, _02043528 ; =_020AFEB4
mov r0, #0
ldr r3, [r1, #8]
mov r2, r0
_0204350C:
ldrb r1, [r3, r2]
add r2, r2, #1
tst r1, #1
addne r0, r0, #1
cmp r2, #0x3e8
blt _0204350C
bx lr
.align 2, 0
_02043528: .word _020AFEB4
arm_func_end sub_020434FC
arm_func_start sub_0204352C
sub_0204352C: ; 0x0204352C
ldr r0, _02043564 ; =_020AFEB4
mov r1, #0
ldr r2, [r0, #8]
b _02043554
_0204353C:
ldrb r0, [r2, r1]
tst r0, #1
movne r0, r1, lsl #0x10
movne r0, r0, asr #0x10
bxne lr
add r1, r1, #1
_02043554:
cmp r1, #0x3e8
blt _0204353C
mvn r0, #0
bx lr
.align 2, 0
_02043564: .word _020AFEB4
arm_func_end sub_0204352C
arm_func_start sub_02043568
sub_02043568: ; 0x02043568
ldr r1, _02043578 ; =_020AFEB4
ldr r1, [r1, #8]
ldrb r0, [r1, r0]
bx lr
.align 2, 0
_02043578: .word _020AFEB4
arm_func_end sub_02043568
arm_func_start sub_0204357C
sub_0204357C: ; 0x0204357C
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0x1c
ldr r4, _020435C4 ; =_0209CA98
add lr, sp, #0
ldmia r4!, {r0, r1, r2, r3}
mov ip, lr
stmia lr!, {r0, r1, r2, r3}
ldmia r4, {r0, r1, r2}
ldr r3, _020435C8 ; =_020AFEB4
stmia lr, {r0, r1, r2}
ldr r0, [r3, #4]
ldr r0, [r0, #0x90c]
cmp r0, #7
bge _020435BC
ldr r0, [ip, r0, lsl #2]
blx r0
_020435BC:
add sp, sp, #0x1c
ldmia sp!, {r3, r4, pc}
.align 2, 0
_020435C4: .word _0209CA98
_020435C8: .word _020AFEB4
arm_func_end sub_0204357C
arm_func_start sub_020435CC
sub_020435CC: ; 0x020435CC
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r0, _02043760 ; =_020AFEB4
mvn r1, #1
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd8]
cmp r0, r1
bne _0204361C
ldr r0, _02043764 ; =_0209CA68
mov r4, #0xa
ldr r3, _02043768 ; =_0209CAB4
mov r1, #0x13
mov r2, #0
str r4, [sp]
bl CreateSimpleMenuFromStringIds
ldr r1, _02043760 ; =_020AFEB4
ldr r1, [r1, #4]
strb r0, [r1, #0x7d8]
b _02043758
_0204361C:
bl IsSimpleMenuActive
cmp r0, #0
bne _02043758
ldr r0, _02043760 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd8]
bl GetSimpleMenuResult__0202B870
ldr r1, _02043760 ; =_020AFEB4
mov r4, r0
ldr r0, [r1, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd8]
bl CloseSimpleMenu
ldr r0, _02043760 ; =_020AFEB4
mvn r2, #1
ldr r1, [r0, #4]
cmp r4, #8
strb r2, [r1, #0x7d8]
ldreq r0, [r0, #4]
mov r1, #0
streq r1, [r0, #0x90c]
beq _02043744
mov r0, r4
bl sub_02043BFC
mvn r1, #0
cmp r0, r1
bne _020436F4
ldr r0, _02043760 ; =_020AFEB4
sub r1, r1, #1
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd5]
cmp r0, r1
beq _020436AC
bl sub_0202812C
_020436AC:
ldr r0, _02043760 ; =_020AFEB4
mvn r1, #1
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd6]
cmp r0, r1
beq _020436CC
bl sub_0202812C
_020436CC:
ldr r0, _02043760 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd4]
bl sub_0202812C
ldr r0, _02043760 ; =_020AFEB4
mov r1, #1
ldr r0, [r0, #4]
str r1, [r0, #0x90c]
b _02043758
_020436F4:
ldr r2, _02043760 ; =_020AFEB4
ldr r1, [r2, #4]
add r1, r1, #0x900
strh r0, [r1, #0x10]
ldr r1, [r2, #4]
add r0, r1, #0x700
add r1, r1, #0x900
ldrsb r0, [r0, #0xd4]
ldrsh r1, [r1, #0x10]
bl sub_0202C6D4
cmp r4, #5
ldreq r0, _02043760 ; =_020AFEB4
moveq r1, #4
ldreq r0, [r0, #4]
streq r1, [r0, #0x90c]
beq _02043758
ldr r0, _02043760 ; =_020AFEB4
mov r1, #0
ldr r0, [r0, #4]
str r1, [r0, #0x90c]
_02043744:
ldr r0, _02043760 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd4]
bl sub_0202C620
_02043758:
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
_02043760: .word _020AFEB4
_02043764: .word _0209CA68
_02043768: .word _0209CAB4
arm_func_end sub_020435CC
arm_func_start sub_0204376C
sub_0204376C: ; 0x0204376C
stmdb sp!, {r3, lr}
ldr r0, _020437B4 ; =_0209CA88
bl CreateDialogueBox
ldr r3, _020437B8 ; =_020AFEB4
ldr r1, _020437BC ; =0x00000418
ldr ip, [r3, #4]
ldr r2, _020437C0 ; =0x000002FF
strb r0, [ip, #0x7d7]
ldr r0, [r3, #4]
mov r3, #0
add r0, r0, #0x700
ldrsb r0, [r0, #0xd7]
bl ShowStringIdInDialogueBox
ldr r0, _020437B8 ; =_020AFEB4
mov r1, #2
ldr r0, [r0, #4]
str r1, [r0, #0x90c]
ldmia sp!, {r3, pc}
.align 2, 0
_020437B4: .word _0209CA88
_020437B8: .word _020AFEB4
_020437BC: .word 0x00000418
#ifdef JAPAN
_020437C0: .word 0x000023A7
#else
_020437C0: .word 0x000002FF
#endif
arm_func_end sub_0204376C
arm_func_start sub_020437C4
sub_020437C4: ; 0x020437C4
stmdb sp!, {r3, lr}
ldr r0, _02043840 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd7]
bl IsDialogueBoxActive
cmp r0, #0
ldmneia sp!, {r3, pc}
mov r0, #9
mov r1, #0
bl sub_02043BFC
ldr r2, _02043840 ; =_020AFEB4
ldr r1, [r2, #4]
add r1, r1, #0x900
strh r0, [r1, #0x10]
ldr r1, [r2, #4]
add r0, r1, #0x700
add r1, r1, #0x900
ldrsb r0, [r0, #0xd4]
ldrsh r1, [r1, #0x10]
bl sub_0202C6D4
ldr r0, _02043840 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd7]
bl sub_0202F2C4
ldr r0, _02043840 ; =_020AFEB4
mov r1, #3
ldr r0, [r0, #4]
str r1, [r0, #0x90c]
ldmia sp!, {r3, pc}
.align 2, 0
_02043840: .word _020AFEB4
arm_func_end sub_020437C4
arm_func_start sub_02043844
sub_02043844: ; 0x02043844
stmdb sp!, {r3, lr}
ldr r0, _02043940 ; =_020AFEB4
mvn r1, #1
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd7]
cmp r0, r1
ldmeqia sp!, {r3, pc}
bl CloseDialogueBox
ldr r0, _02043940 ; =_020AFEB4
mvn r2, #1
ldr r1, [r0, #4]
strb r2, [r1, #0x7d7]
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd5]
cmp r0, r2
beq _020438AC
bl sub_02028354
cmp r0, #3
bne _020438AC
ldr r0, _02043940 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd5]
bl sub_0202810C
_020438AC:
ldr r0, _02043940 ; =_020AFEB4
mvn r1, #1
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd6]
cmp r0, r1
beq _020438E8
bl sub_02028354
cmp r0, #3
bne _020438E8
ldr r0, _02043940 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd6]
bl sub_0202810C
_020438E8:
ldr r0, _02043940 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd4]
bl sub_02028354
cmp r0, #3
bne _02043918
ldr r0, _02043940 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd4]
bl sub_0202810C
_02043918:
ldr r0, _02043940 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd4]
bl sub_0202C620
ldr r0, _02043940 ; =_020AFEB4
mov r1, #0
ldr r0, [r0, #4]
str r1, [r0, #0x90c]
ldmia sp!, {r3, pc}
.align 2, 0
_02043940: .word _020AFEB4
arm_func_end sub_02043844
arm_func_start sub_02043944
sub_02043944: ; 0x02043944
stmdb sp!, {r3, lr}
sub sp, sp, #8
ldr r0, _020439E8 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0xb4
add r0, r0, #0x1800
bl sub_020547C8
ldr r0, _020439E8 ; =_020AFEB4
mov r1, #0
ldr r0, [r0, #4]
add r0, r0, #0xb4
add r0, r0, #0x1800
bl sub_02054804
ldr r1, _020439E8 ; =_020AFEB4
ldr r2, _020439EC ; =0x000002FE
ldr r0, [r1, #4]
mov r3, #0x10
add r0, r0, #0x800
strh r2, [r0, #0x7c]
ldr r2, [r1, #4]
ldr r0, _020439F0 ; =_0209CA78
str r3, [r2, #0x880]
ldr r3, [r1, #4]
ldr r1, _020439F4 ; =0x00481813
add r2, r3, #0x1800
ldrsh ip, [r2, #0xb4]
add r2, r3, #0x74
ldr r3, _020439F8 ; =sub_02043BAC
str ip, [sp]
mov ip, #9
add r2, r2, #0x800
str ip, [sp, #4]
bl CreateAdvancedMenu
ldr r1, _020439E8 ; =_020AFEB4
mov r2, #5
ldr r3, [r1, #4]
strb r0, [r3, #0x7d9]
ldr r0, [r1, #4]
str r2, [r0, #0x90c]
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
_020439E8: .word _020AFEB4
#ifdef JAPAN
_020439EC: .word 0x000023A6
#else
_020439EC: .word 0x000002FE
#endif
_020439F0: .word _0209CA78
_020439F4: .word 0x00481813
_020439F8: .word sub_02043BAC
arm_func_end sub_02043944
arm_func_start sub_020439FC
sub_020439FC: ; 0x020439FC
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _02043B78 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd9]
bl IsAdvancedMenuActive2
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
ldr r0, _02043B78 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd9]
bl GetAdvancedMenuCurrentOption
ldr r1, _02043B78 ; =_020AFEB4
mov r4, r0, lsl #0x10
ldr r0, [r1, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd9]
bl GetAdvancedMenuResult
ldr r1, _02043B78 ; =_020AFEB4
mov r5, r0, lsl #0x10
ldr r0, [r1, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd9]
bl CloseAdvancedMenu
ldr r0, _02043B78 ; =_020AFEB4
mvn r3, #1
ldr r1, [r0, #4]
mov r2, r4, asr #0xf
strb r3, [r1, #0x7d9]
ldr r1, [r0, #4]
add r0, r1, #0x1000
add r1, r1, #0xb4
ldr r3, [r0, #0x8b8]
add r0, r1, #0x1800
ldrsh r4, [r3, r2]
bl sub_020547D8
mvn r0, #0
cmp r0, r5, asr #16
bne _02043AB8
ldr r0, _02043B78 ; =_020AFEB4
mov r1, #0
strh r1, [r0]
ldr r0, [r0, #4]
mov r1, #6
str r1, [r0, #0x90c]
ldmia sp!, {r3, r4, r5, pc}
_02043AB8:
mov r0, r4
bl sub_020440F8
cmp r0, #0
bgt _02043B38
ldr r0, _02043B78 ; =_020AFEB4
mov r1, #0
strh r1, [r0]
ldr r0, [r0, #4]
sub r1, r1, #2
add r0, r0, #0x700
ldrsb r0, [r0, #0xd5]
cmp r0, r1
beq _02043AF0
bl sub_0202812C
_02043AF0:
ldr r0, _02043B78 ; =_020AFEB4
mvn r1, #1
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd6]
cmp r0, r1
beq _02043B10
bl sub_0202812C
_02043B10:
ldr r0, _02043B78 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd4]
bl sub_0202812C
ldr r0, _02043B78 ; =_020AFEB4
mov r1, #1
ldr r0, [r0, #4]
str r1, [r0, #0x90c]
ldmia sp!, {r3, r4, r5, pc}
_02043B38:
ldr r2, _02043B78 ; =_020AFEB4
strh r4, [r2]
ldr r1, [r2, #4]
add r1, r1, #0x900
strh r0, [r1, #0x10]
ldr r1, [r2, #4]
add r0, r1, #0x700
add r1, r1, #0x900
ldrsb r0, [r0, #0xd4]
ldrsh r1, [r1, #0x10]
bl sub_0202C6D4
ldr r0, _02043B78 ; =_020AFEB4
mov r1, #6
ldr r0, [r0, #4]
str r1, [r0, #0x90c]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02043B78: .word _020AFEB4
arm_func_end sub_020439FC
arm_func_start sub_02043B7C
sub_02043B7C: ; 0x02043B7C
stmdb sp!, {r3, lr}
ldr r0, _02043BA8 ; =_020AFEB4
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd4]
bl sub_0202C620
ldr r0, _02043BA8 ; =_020AFEB4
mov r1, #0
ldr r0, [r0, #4]
str r1, [r0, #0x90c]
ldmia sp!, {r3, pc}
.align 2, 0
_02043BA8: .word _020AFEB4
arm_func_end sub_02043B7C
arm_func_start sub_02043BAC
sub_02043BAC: ; 0x02043BAC
stmdb sp!, {r4, lr}
mov r4, r0
cmp r1, #0
blt _02043BD4
ldr r2, _02043BF8 ; =_020AFEB4
ldr r3, [r2, #4]
add r2, r3, #0x1800
ldrsh r2, [r2, #0xb4]
cmp r1, r2
blt _02043BDC
_02043BD4:
mov r0, #0
ldmia sp!, {r4, pc}
_02043BDC:
add r2, r3, #0x1000
ldr r2, [r2, #0x8b8]
mov r1, r1, lsl #1
ldrsh r1, [r2, r1]
bl GetNameRaw
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_02043BF8: .word _020AFEB4
arm_func_end sub_02043BAC
arm_func_start sub_02043BFC
sub_02043BFC: ; 0x02043BFC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r2, _0204408C ; =_020AFEB4
mov sb, r0
ldr r0, [r2, #4]
mov r4, r1
ldr r6, [r0]
bl sub_0200FD48
sub r1, r6, #5
mov r5, r0
cmp r1, #2
mov r7, #0
movls r0, #1
movhi r0, r7
cmp r4, #0
and r4, r0, #0xff
beq _02043D0C
mov r0, #0x3e8
mov r1, #8
bl MemAlloc
mov r8, r0
mov sl, #0
ldr r0, _0204408C ; =_020AFEB4
mov r1, sl
mov r2, #1
_02043C5C:
ldr r3, [r0, #8]
ldrb r3, [r3, sl]
cmp r3, #1
moveq r3, r2
movne r3, r1
strb r3, [r8, sl]
add sl, sl, #1
cmp sl, #0x3e8
blt _02043C5C
bl sub_0200FD48
mov r1, r0
mov r0, r8
bl SortItemsInStorage
mov sl, #0
ldr r0, _0204408C ; =_020AFEB4
mov r2, sl
mov r3, #1
_02043CA0:
ldrb r1, [r8, sl]
cmp r1, #0
movne fp, r3
ldr r1, [r0, #8]
moveq fp, r2
strb fp, [r1, sl]
add sl, sl, #1
cmp sl, #0x3e8
blt _02043CA0
mov r0, r8
bl MemFree
ldr r0, _0204408C ; =_020AFEB4
mvn r1, #1
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd5]
cmp r0, r1
beq _02043CEC
bl sub_0202F9B8
_02043CEC:
ldr r0, _0204408C ; =_020AFEB4
mvn r1, #1
ldr r0, [r0, #4]
add r0, r0, #0x700
ldrsb r0, [r0, #0xd6]
cmp r0, r1
beq _02043D0C
bl sub_0202F9B8
_02043D0C:
mov r8, #0
b _02043DE4
_02043D14:
ldr r0, _02044090 ; =BAG_ITEMS_PTR_MIRROR
ldr r0, [r0]
add r0, r0, r8, lsl #1
add r0, r0, #0x300
ldrsh r1, [r0, #0x8a]
cmp r1, #0
beq _02043DEC
cmp r4, #0
beq _02043D48
ldrsh r0, [r0, #0x8a]
bl IsItemValidVeneer
cmp r0, #0
beq _02043DD8
_02043D48:
cmp r6, #7
bne _02043DBC
ldr r0, _02044090 ; =BAG_ITEMS_PTR_MIRROR
ldr r0, [r0]
add r1, r0, r8, lsl #1
add r0, r1, #0x300
ldrsh sl, [r0, #0x8a]
add r0, r1, #0xb00
ldrh fp, [r0, #0x5a]
mov r0, sl
bl IsItemInTimeDarkness
cmp r0, #0
beq _02043DB0
mov r0, sl
bl IsTreasureBox
cmp r0, #0
beq _02043DA8
mov r0, fp, lsl #0x10
mov r0, r0, asr #0x10
bl IsItemInTimeDarkness
cmp r0, #0
beq _02043DB0
mov r0, #1
b _02043DB4
_02043DA8:
mov r0, #1
b _02043DB4
_02043DB0:
mov r0, #0
_02043DB4:
cmp r0, #0
beq _02043DD8
_02043DBC:
ldr r0, _0204408C ; =_020AFEB4
add r2, r7, #1
ldr r0, [r0, #4]
add r1, r0, r7, lsl #1
mov r0, r2, lsl #0x10
strh r8, [r1, #4]
mov r7, r0, asr #0x10
_02043DD8:
add r0, r8, #1
mov r0, r0, lsl #0x10
mov r8, r0, asr #0x10
_02043DE4:
cmp r8, r5
blt _02043D14
_02043DEC:
mov r4, r7
mvn r3, #0
ldr r1, _0204408C ; =_020AFEB4
b _02043E14
_02043DFC:
ldr r2, [r1, #4]
add r0, r4, #1
add r2, r2, r4, lsl #1
mov r0, r0, lsl #0x10
strh r3, [r2, #4]
mov r4, r0, asr #0x10
_02043E14:
cmp r4, r5
blt _02043DFC
mov r0, r7, lsl #0x10
ldr r4, _0204408C ; =_020AFEB4
mov r5, r0, asr #0x10
cmp r5, #0
str sb, [r4, #0x10]
movle r0, #9
strle r0, [r4, #0x10]
suble r0, r0, #0xa
ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
cmp sb, #9
moveq r0, r5
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
mov r8, #0
mov r7, r8
mov fp, #1
ldr sl, _02044090 ; =BAG_ITEMS_PTR_MIRROR
b _02044070
_02043E60:
ldr r1, [r4, #4]
ldr r0, [sl]
add r1, r1, r7, lsl #1
ldrsh r6, [r1, #4]
add r0, r0, r6, lsl #1
add r0, r0, #0x300
ldrsh r0, [r0, #0x8a]
bl GetItemCategoryVeneer
ldr r1, [sl]
add r1, r1, r6, lsl #1
add r1, r1, #0x300
ldrsh r1, [r1, #0x8a]
cmp r1, #0x5c
bgt _02043EA0
beq _02043F20
b _02043F24
_02043EA0:
sub r1, r1, #0x190
cmp r1, #0x1b
addls pc, pc, r1, lsl #2
b _02043F24
_02043EB0: ; jump table
b _02043F20 ; case 0
b _02043F20 ; case 1
b _02043F20 ; case 2
b _02043F20 ; case 3
b _02043F20 ; case 4
b _02043F20 ; case 5
b _02043F20 ; case 6
b _02043F20 ; case 7
b _02043F20 ; case 8
b _02043F20 ; case 9
b _02043F20 ; case 10
b _02043F20 ; case 11
b _02043F20 ; case 12
b _02043F20 ; case 13
b _02043F20 ; case 14
b _02043F20 ; case 15
b _02043F20 ; case 16
b _02043F20 ; case 17
b _02043F20 ; case 18
b _02043F20 ; case 19
b _02043F20 ; case 20
b _02043F20 ; case 21
b _02043F20 ; case 22
b _02043F20 ; case 23
b _02043F20 ; case 24
b _02043F20 ; case 25
b _02043F20 ; case 26
b _02043F20 ; case 27
_02043F20:
mov r0, #7
_02043F24:
cmp sb, #9
addls pc, pc, sb, lsl #2
b _0204402C
_02043F30: ; jump table
b _02043F58 ; case 0
b _02043F70 ; case 1
b _02043F88 ; case 2
b _02043F9C ; case 3
b _02043FB4 ; case 4
b _02043FC8 ; case 5
b _02043FDC ; case 6
b _02043FF8 ; case 7
b _0204402C ; case 8
b _0204402C ; case 9
_02043F58:
cmp r0, #0
cmpne r0, #1
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
b _02044030
_02043F70:
cmp r0, #2
cmpne r0, #3
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
b _02044030
_02043F88:
cmp r0, #4
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
b _02044030
_02043F9C:
cmp r0, #5
cmpne r0, #0xb
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
b _02044030
_02043FB4:
cmp r0, #9
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
b _02044030
_02043FC8:
cmp r0, #0xf
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
b _02044030
_02043FDC:
add r0, r0, #0xf4
and r0, r0, #0xff
cmp r0, #2
movls r0, #1
movhi r0, #0
and r0, r0, #0xff
b _02044030
_02043FF8:
add r0, r0, #0xfa
and r0, r0, #0xff
cmp r0, #4
mov r1, #0
bhi _02044018
mov r0, fp, lsl r0
tst r0, #0x17
movne r1, fp
_02044018:
cmp r1, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
b _02044030
_0204402C:
mov r0, #1
_02044030:
cmp r0, #0
beq _02044064
ldr r0, [r4, #4]
add r1, r8, #1
mov r1, r1, lsl #0x10
add r2, r0, r8, lsl #1
ldrsh r2, [r2, #4]
add r0, r0, r7, lsl #1
strh r2, [r0, #4]
ldr r0, [r4, #4]
add r0, r0, r8, lsl #1
strh r6, [r0, #4]
mov r8, r1, asr #0x10
_02044064:
add r0, r7, #1
mov r0, r0, lsl #0x10
mov r7, r0, asr #0x10
_02044070:
cmp r7, r5
blt _02043E60
cmp r8, #0
mvnle r8, #0
mov r0, r8, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0204408C: .word _020AFEB4
_02044090: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_02043BFC
arm_func_start sub_02044094
sub_02044094: ; 0x02044094
stmdb sp!, {r3, lr}
mov r0, #0x3e8
mov r1, #8
bl MemAlloc
ldr r1, _020440B4 ; =_020AFEB4
str r0, [r1, #8]
bl sub_020434D4
ldmia sp!, {r3, pc}
.align 2, 0
_020440B4: .word _020AFEB4
arm_func_end sub_02044094
arm_func_start sub_020440B8
sub_020440B8: ; 0x020440B8
stmdb sp!, {r3, lr}
ldr r0, _020440D8 ; =_020AFEB4
ldr r0, [r0, #8]
bl MemFree
ldr r0, _020440D8 ; =_020AFEB4
mov r1, #0
str r1, [r0, #8]
ldmia sp!, {r3, pc}
.align 2, 0
_020440D8: .word _020AFEB4
arm_func_end sub_020440B8
arm_func_start sub_020440DC
sub_020440DC: ; 0x020440DC
ldr r0, _020440F4 ; =_020AFEB4
mov r1, #9
str r1, [r0, #0x10]
mov r1, #0
strh r1, [r0]
bx lr
.align 2, 0
_020440F4: .word _020AFEB4
arm_func_end sub_020440DC
arm_func_start sub_020440F8
sub_020440F8: ; 0x020440F8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sb, #0
mov sl, r0
mov r1, sb
bl GetType
mov r6, r0
mov r0, sl
mov r1, #1
bl GetType
mov r7, r0
mov r8, sb
ldr r4, _020441B4 ; =_020AFEB4
ldr fp, _020441B8 ; =BAG_ITEMS_PTR_MIRROR
b _02044198
_02044130:
add r0, r1, r8, lsl #1
ldrsh r5, [r0, #4]
ldr r0, [fp]
mov r1, sl
add r0, r0, r5, lsl #1
add r0, r0, #0x300
ldrsh r0, [r0, #0x8a]
mov r2, r6
mov r3, r7
bl IsExclusiveItemIdForMonster
cmp r0, #0
beq _0204418C
ldr r3, [r4, #4]
add r0, sb, #1
add r1, r3, sb, lsl #1
ldrsh r2, [r1, #4]
add r1, r3, r8, lsl #1
mov r0, r0, lsl #0x10
strh r2, [r1, #4]
ldr r1, [r4, #4]
add r1, r1, sb, lsl #1
strh r5, [r1, #4]
mov sb, r0, asr #0x10
_0204418C:
add r0, r8, #1
mov r0, r0, lsl #0x10
mov r8, r0, asr #0x10
_02044198:
ldr r1, [r4, #4]
add r0, r1, #0x900
ldrsh r0, [r0, #0x10]
cmp r8, r0
blt _02044130
mov r0, sb
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020441B4: .word _020AFEB4
_020441B8: .word BAG_ITEMS_PTR_MIRROR
arm_func_end sub_020440F8
arm_func_start sub_020441BC
sub_020441BC: ; 0x020441BC
stmdb sp!, {r3, lr}
ldr r0, _0204420C ; =_020AFEB4
mov r1, #1
ldr r0, [r0, #0x10]
bl sub_02043BFC
ldr r2, _0204420C ; =_020AFEB4
mov r3, #0
ldr r1, [r2, #4]
add r1, r1, #0x900
strh r0, [r1, #0x10]
ldr r2, [r2, #4]
add r0, r2, #0x700
add r1, r2, #0x900
add r2, r2, #0x1000
ldrsb r0, [r0, #0xd4]
ldrsh r1, [r1, #0x10]
ldr r2, [r2, #0x8bc]
bl sub_0202C654
bl sub_02044308
ldmia sp!, {r3, pc}
.align 2, 0
_0204420C: .word _020AFEB4
arm_func_end sub_020441BC
arm_func_start sub_02044210
sub_02044210: ; 0x02044210
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0x54
mov r4, r0
bl sub_02027B1C
#ifdef JAPAN
ldr r3, _020445D8 ; =0x000023A8
#endif
mov r0, r4
mov r1, #0xa
mov r2, #2
#ifndef JAPAN
mov r3, #0x300
#endif
bl sub_02026268
bl sub_020434FC
str r0, [sp, #0x28]
add r1, sp, #4
str r1, [sp]
ldr r3, _02044268 ; =0x00000301
mov r0, r4
mov r1, #0x66
mov r2, #2
bl sub_020262E0
mov r0, r4
bl UpdateWindow
add sp, sp, #0x54
ldmia sp!, {r3, r4, pc}
.align 2, 0
#ifdef JAPAN
_020445D8: .word 0x000023A8
_02044268: .word 0x000023A9
#else
_02044268: .word 0x00000301
#endif
arm_func_end sub_02044210
arm_func_start sub_0204426C
sub_0204426C: ; 0x0204426C
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #8
mov r1, r0
bl MemAlloc
ldr r1, _020442C0 ; =_020AFEC8
mov r3, #1
str r0, [r1]
str r4, [r0]
ldr r0, [r1]
ldr r2, _020442C4 ; =_0209CB0C
strb r3, [r0, #4]
ldr r0, [r1]
ldr r1, _020442C8 ; =sub_02044338
ldr r0, [r0]
add r0, r2, r0, lsl #4
bl CreateTextBox
ldr r1, _020442C0 ; =_020AFEC8
ldr r1, [r1]
strb r0, [r1, #5]
ldmia sp!, {r4, pc}
.align 2, 0
_020442C0: .word _020AFEC8
_020442C4: .word _0209CB0C
_020442C8: .word sub_02044338
arm_func_end sub_0204426C
arm_func_start sub_020442CC
sub_020442CC: ; 0x020442CC
stmdb sp!, {r3, lr}
ldr r0, _02044304 ; =_020AFEC8
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0, #5]
bl CloseTextBox2
ldr r0, _02044304 ; =_020AFEC8
ldr r0, [r0]
bl MemFree
ldr r0, _02044304 ; =_020AFEC8
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_02044304: .word _020AFEC8
arm_func_end sub_020442CC
arm_func_start sub_02044308
sub_02044308: ; 0x02044308
stmdb sp!, {r3, lr}
ldr r0, _02044334 ; =_020AFEC8
ldr r2, [r0]
cmp r2, #0
ldmeqia sp!, {r3, pc}
mov r1, #1
strb r1, [r2, #4]
ldr r0, [r0]
ldrsb r0, [r0, #5]
bl sub_0202F9B8
ldmia sp!, {r3, pc}
.align 2, 0
_02044334: .word _020AFEC8
arm_func_end sub_02044308
arm_func_start sub_02044338
sub_02044338: ; 0x02044338
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x54
ldr r1, _02044404 ; =_020AFEC8
mov r5, r0
ldr r2, [r1]
ldrb r1, [r2, #4]
cmp r1, #0
beq _020443FC
mov r1, #0
strb r1, [r2, #4]
mov r4, #2
bl sub_02027B1C
ldr r0, _02044404 ; =_020AFEC8
ldr r0, [r0]
ldr r0, [r0]
cmp r0, #0
cmpne r0, #2
bne _020443B0
bl GetNbItemsInBag
str r0, [sp, #0x28]
bl GetCurrentBagCapacity
#ifdef JAPAN
str r0, [sp, #0x2c]
add r2, sp, #4
str r2, [sp]
ldr r3, _0204477C ; =0x000031F7
mov r0, r5
mov r1, #0
mov r2, #2
#else
mov r2, #2
str r0, [sp, #0x2c]
add r1, sp, #4
str r1, [sp]
mov r0, r5
add r3, r2, #0x330
mov r1, #0
#endif
bl sub_020262E0
add r4, r4, #0x10
_020443B0:
ldr r0, _02044404 ; =_020AFEC8
ldr r0, [r0]
ldr r0, [r0]
sub r0, r0, #1
cmp r0, #1
bhi _020443F4
bl CountNbOfItemsInStorage
str r0, [sp, #0x28]
bl sub_0200FD48
str r0, [sp, #0x2c]
add ip, sp, #4
ldr r3, _02044408 ; =0x00000333
mov r0, r5
mov r2, r4
mov r1, #0
str ip, [sp]
bl sub_020262E0
_020443F4:
mov r0, r5
bl UpdateWindow
_020443FC:
add sp, sp, #0x54
ldmia sp!, {r4, r5, pc}
.align 2, 0
_02044404: .word _020AFEC8
#ifdef JAPAN
_0204477C: .word 0x000031F7
_02044408: .word 0x000031F8
#else
_02044408: .word 0x00000333
#endif
arm_func_end sub_02044338
arm_func_start sub_0204440C
sub_0204440C: ; 0x0204440C
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0xc
mov r1, #8
bl MemAlloc
ldr r2, _02044468 ; =_020AFECC
mov ip, #0
str r0, [r2]
str r4, [r0]
ldr r1, [r2]
ldr r0, _0204446C ; =_0209CB3C
strh ip, [r1, #6]
ldr r3, [r2]
ldr r1, _02044470 ; =sub_020444F0
strh ip, [r3, #8]
ldr r2, [r2]
mov r3, #1
strb r3, [r2, #4]
bl CreateTextBox
ldr r1, _02044468 ; =_020AFECC
ldr r1, [r1]
strb r0, [r1, #0xa]
ldmia sp!, {r4, pc}
.align 2, 0
_02044468: .word _020AFECC
_0204446C: .word _0209CB3C
_02044470: .word sub_020444F0
arm_func_end sub_0204440C
arm_func_start sub_02044474
sub_02044474: ; 0x02044474
stmdb sp!, {r3, lr}
ldr r0, _020444AC ; =_020AFECC
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0, #0xa]
bl CloseTextBox2
ldr r0, _020444AC ; =_020AFECC
ldr r0, [r0]
bl MemFree
ldr r0, _020444AC ; =_020AFECC
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_020444AC: .word _020AFECC
arm_func_end sub_02044474
arm_func_start sub_020444B0
sub_020444B0: ; 0x020444B0
stmdb sp!, {r3, lr}
ldr r1, _020444EC ; =_020AFECC
ldr r3, [r1]
cmp r3, #0
ldrnesh r2, [r3, #6]
cmpne r2, r0
ldmeqia sp!, {r3, pc}
strh r0, [r3, #6]
ldr r0, [r1]
mov r2, #1
strb r2, [r0, #4]
ldr r0, [r1]
ldrsb r0, [r0, #0xa]
bl sub_0202F9B8
ldmia sp!, {r3, pc}
.align 2, 0
_020444EC: .word _020AFECC
arm_func_end sub_020444B0
arm_func_start sub_020444F0
sub_020444F0: ; 0x020444F0
stmdb sp!, {r4, lr}
ldr r1, _02044564 ; =_020AFECC
mov r4, r0
ldr r2, [r1]
ldrb r1, [r2, #4]
cmp r1, #0
ldmeqia sp!, {r4, pc}
mov r1, #0
strb r1, [r2, #4]
bl sub_02027B1C
ldr r0, _02044564 ; =_020AFECC
ldr r2, [r0]
ldrsh r1, [r2, #6]
strh r1, [r2, #8]
ldr r0, [r0]
ldrsh r0, [r0, #8]
cmp r0, #0
beq _02044558
#if defined(EUROPE)
add r0, r0, #0x4b
add r0, r0, #0x2f00
#elif defined(JAPAN)
add r0, r0, #0x41
add r0, r0, #0x1d00
#else
add r0, r0, #0x49
add r0, r0, #0x2f00
#endif
mov r3, r0, lsl #0x10
mov r1, #2
mov r0, r4
mov r2, r1
mov r3, r3, lsr #0x10
bl sub_02026268
_02044558:
mov r0, r4
bl UpdateWindow
ldmia sp!, {r4, pc}
.align 2, 0
_02044564: .word _020AFECC
arm_func_end sub_020444F0
arm_func_start sub_02044568
sub_02044568: ; 0x02044568
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #8
mov r1, r0
bl MemAlloc
ldr r1, _020445BC ; =_020AFED0
mov r3, #1
str r0, [r1]
str r4, [r0]
ldr r0, [r1]
ldr r2, _020445C0 ; =_0209CB4C
strb r3, [r0, #4]
ldr r0, [r1]
ldr r1, _020445C4 ; =sub_02044604
ldr r0, [r0]
add r0, r2, r0, lsl #4
bl CreateTextBox
ldr r1, _020445BC ; =_020AFED0
ldr r1, [r1]
strb r0, [r1, #5]
ldmia sp!, {r4, pc}
.align 2, 0
_020445BC: .word _020AFED0
_020445C0: .word _0209CB4C
_020445C4: .word sub_02044604
arm_func_end sub_02044568
arm_func_start sub_020445C8
sub_020445C8: ; 0x020445C8
stmdb sp!, {r3, lr}
ldr r0, _02044600 ; =_020AFED0
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0, #5]
bl CloseTextBox2
ldr r0, _02044600 ; =_020AFED0
ldr r0, [r0]
bl MemFree
ldr r0, _02044600 ; =_020AFED0
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_02044600: .word _020AFED0
arm_func_end sub_020445C8
arm_func_start sub_02044604
sub_02044604: ; 0x02044604
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0x54
ldr r1, _02044680 ; =_020AFED0
mov r4, r0
ldr r2, [r1]
ldrb r1, [r2, #4]
cmp r1, #0
beq _02044678
mov r1, #0
strb r1, [r2, #4]
bl sub_02027B1C
#ifdef JAPAN
ldr r3, _020449FC ; =0x000031F9
#endif
mov r0, r4
mov r1, #4
mov r2, #0
#ifndef JAPAN
mov r3, #0x334
#endif
bl sub_02026268
bl GetMoneyCarried
mov r1, #0x18
str r1, [sp, #0x2c]
str r0, [sp, #0x28]
add r1, sp, #4
str r1, [sp]
ldr r3, _02044684 ; =0x00000335
mov r0, r4
mov r1, #0x10
mov r2, #0xc
bl sub_020262E0
mov r0, r4
bl UpdateWindow
_02044678:
add sp, sp, #0x54
ldmia sp!, {r3, r4, pc}
.align 2, 0
_02044680: .word _020AFED0
#ifdef JAPAN
_020449FC: .word 0x000031F9
_02044684: .word 0x000031FA
#else
_02044684: .word 0x00000335
#endif
arm_func_end sub_02044604
arm_func_start sub_02044688
sub_02044688: ; 0x02044688
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0xa4
mov r6, r0
mov r5, r1
ldr r0, _020447E8 ; =0x00000944
mov r1, #8
mov r8, r2
mov r7, r3
bl MemAlloc
ldr r1, _020447E8 ; =0x00000944
mov r4, r0
bl MemZero
mov r1, r8
mov r2, r7
mov r3, #0
strb r3, [r4, #0x72e]
strb r3, [r4, #0x82e]
str r3, [r4, #0x940]
sub r0, r3, #1
str r0, [r4, #0x930]
str r3, [r4, #0x940]
ldr r3, [sp, #0xc4]
add r0, r4, #4
str r3, [sp]
ldrb r3, [sp, #0xc0]
bl sub_02044BF8
ldr r0, _020447EC ; =_0209CB78
ldr r1, _020447F0 ; =sub_02044964
mov r2, r4
bl CreateTextBoxWithArg
strb r0, [r4, #0x72c]
cmp r5, #3
mov r0, #0x10
str r0, [sp, #0x18]
ldr r1, _020447F4 ; =0x00000A36
add r0, r4, #0x2e
add r0, r0, #0x700
str r0, [sp, #0x54]
strh r1, [sp, #0x14]
bne _02044760
add r1, r1, #3
add r0, r4, #0x900
strh r1, [r0, #0x2e]
str r4, [sp]
mov r1, #0
str r1, [sp, #4]
str r1, [sp, #8]
ldr r0, _020447F8 ; =_0209CB88
ldr r3, _020447FC ; =sub_02044990
add r2, sp, #0xc
mov r1, #0x800
bl CreateAdvancedTextBoxWithArg
strb r0, [r4, #0x72d]
b _020447A8
_02044760:
cmp r5, #2
addne r1, r1, #3
addne r0, r4, #0x900
strneh r1, [r0, #0x2e]
bne _020447A8
add r1, r1, #2
add r0, r4, #0x900
strh r1, [r0, #0x2e]
str r4, [sp]
mov r1, #0
str r1, [sp, #4]
str r1, [sp, #8]
ldr r0, _020447F8 ; =_0209CB88
ldr r3, _020447FC ; =sub_02044990
add r2, sp, #0xc
mov r1, #0x800
bl CreateAdvancedTextBoxWithArg
strb r0, [r4, #0x72d]
_020447A8:
mov r0, r6
str r6, [r4, #0x934]
bl GetItemAtIdx
ldrh r2, [r0]
add r1, r4, #0x900
strh r2, [r1, #0x38]
ldrh r2, [r0, #2]
strh r2, [r1, #0x3a]
ldrh r2, [r0, #4]
mov r0, r4
strh r2, [r1, #0x3c]
str r5, [r4]
bl sub_02044AEC
mov r0, r4
add sp, sp, #0xa4
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_020447E8: .word 0x00000944
_020447EC: .word _0209CB78
_020447F0: .word sub_02044964
#ifdef JAPAN
_020447F4: .word 0x00000871
#else
_020447F4: .word 0x00000A36
#endif
_020447F8: .word _0209CB88
_020447FC: .word sub_02044990
arm_func_end sub_02044688
arm_func_start sub_02044800
sub_02044800: ; 0x02044800
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r0, [r5, #0x940]
cmp r0, #3
addls pc, pc, r0, lsl #2
b _020448E4
_02044818: ; jump table
b _02044828 ; case 0
b _02044830 ; case 1
b _020448B8 ; case 2
b _020448DC ; case 3
_02044828:
mov r0, #1
str r0, [r5, #0x940]
_02044830:
add r0, r5, #4
bl sub_020451D8
mov r4, r0
mov r0, r5
bl sub_02044AEC
cmp r4, #0
beq _020448E4
mov r0, #2
str r0, [r5, #0x940]
cmp r4, #2
bne _020448E4
add r0, r5, #4
bl sub_020452A0
cmp r0, #3
addls pc, pc, r0, lsl #2
b _020448A0
_02044870: ; jump table
b _02044880 ; case 0
b _02044888 ; case 1
b _02044890 ; case 2
b _02044898 ; case 3
_02044880:
mov r1, #1
b _020448A4
_02044888:
mov r1, #2
b _020448A4
_02044890:
mov r1, #3
b _020448A4
_02044898:
mov r1, #4
b _020448A4
_020448A0:
mov r1, #0
_020448A4:
ldr r0, [r5, #0x934]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02058460
b _020448E4
_020448B8:
add r0, r5, #4
bl sub_020452B8
cmp r0, #0
beq _020448E4
mov r0, r5
bl sub_02044918
mov r0, #3
str r0, [r5, #0x940]
b _020448E4
_020448DC:
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
_020448E4:
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02044800
arm_func_start sub_020448EC
sub_020448EC: ; 0x020448EC
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4]
cmp r0, #0
ldmeqia sp!, {r4, pc}
bl sub_02044918
ldr r0, [r4]
bl MemFree
mov r0, #0
str r0, [r4]
ldmia sp!, {r4, pc}
arm_func_end sub_020448EC
arm_func_start sub_02044918
sub_02044918: ; 0x02044918
stmdb sp!, {r4, lr}
mov r4, r0
add r0, r4, #0x700
ldrsb r0, [r0, #0x2d]
mvn r1, #1
cmp r0, r1
beq _02044940
bl CloseAdvancedTextBox
mvn r0, #1
strb r0, [r4, #0x72d]
_02044940:
add r0, r4, #0x700
ldrsb r0, [r0, #0x2c]
mvn r1, #1
cmp r0, r1
ldmeqia sp!, {r4, pc}
bl CloseTextBox
mvn r0, #1
strb r0, [r4, #0x72c]
ldmia sp!, {r4, pc}
arm_func_end sub_02044918
arm_func_start sub_02044964
sub_02044964: ; 0x02044964
stmdb sp!, {r4, lr}
add r1, r1, #0x900
mov r4, r0
ldrh r0, [r1, #0x2e]
bl StringFromId
mov r1, #2
mov r3, r0
mov r0, r4
mov r2, r1
bl DrawTextInWindow
ldmia sp!, {r4, pc}
arm_func_end sub_02044964
arm_func_start sub_02044990
sub_02044990: ; 0x02044990
ldr ip, _020449A8 ; =DrawTextInWindow
add r1, r1, #0x2e
add r3, r1, #0x800
mov r1, #2
mov r2, #0x10
bx ip
.align 2, 0
_020449A8: .word DrawTextInWindow
arm_func_end sub_02044990
arm_func_start sub_020449AC
sub_020449AC: ; 0x020449AC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r0
add r0, r6, #4
mov r5, r1
mov r4, #0
bl sub_02045298
cmp r0, #0
#ifdef JAPAN
beq _02044A30
#else
bne _020449E8
mov r0, r5
bl sub_02045330
add r2, r6, #0x2e
mov r1, r0
add r0, r2, #0x700
bl sub_020584FC
b _02044A30
_020449E8:
#endif
ldr r1, _02044ADC ; =DUNGEON_PTR
add r0, r6, #0x2e
ldr r1, [r1]
add r0, r0, #0x700
add r1, r1, r5, lsl #2
add r1, r1, #0x12000
#ifdef JAPAN
ldr r1, [r1, #0xa84]
#else
ldr r1, [r1, #0xb28]
#endif
mov r2, r4
ldr r7, [r1, #0xb4]
bl ov29_022E2A78
ldrb r0, [r7, #0xbc]
cmp r0, #7
beq _02044A2C
mov r0, r7
bl IsExperienceLocked
cmp r0, #0
beq _02044A30
_02044A2C:
mov r4, #1
_02044A30:
cmp r4, #0
beq _02044A4C
add r0, r6, #0x2e
ldr r1, _02044AE0 ; =0x00000A3D
add r0, r0, #0x800
bl GetStringFromFileVeneer
b _02044ACC
_02044A4C:
add r0, r6, #4
bl sub_02045298
cmp r0, #0
bne _02044A70
mov r0, r5
bl sub_02045330
bl GetActiveTeamMember
add r1, r0, #0x3e
b _02044A8C
_02044A70:
ldr r0, _02044ADC ; =DUNGEON_PTR
ldr r0, [r0]
add r0, r0, r5, lsl #2
add r0, r0, #0x12000
#ifdef JAPAN
ldr r0, [r0, #0xa84]
#else
ldr r0, [r0, #0xb28]
#endif
ldr r0, [r0, #0xb4]
add r1, r0, #0x62
_02044A8C:
ldrb r0, [r1]
tst r0, #1
movne r0, #1
moveq r0, #0
tst r0, #0xff
add r0, r6, #0x2e
bne _02044AB8
ldr r1, _02044AE4 ; =0x00000A37
add r0, r0, #0x800
bl GetStringFromFileVeneer
b _02044ACC
_02044AB8:
ldr r2, _02044AE8 ; =_0209CB6C
mov r3, #1
add r0, r0, #0x800
str r3, [sp]
bl sub_0200D310
_02044ACC:
add r0, r6, #0x700
ldrsb r0, [r0, #0x2d]
bl SetAdvancedTextBoxField0x1C2
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02044ADC: .word DUNGEON_PTR
#ifdef JAPAN
_02044AE0: .word 0x00000878
_02044AE4: .word 0x00000872
#else
_02044AE0: .word 0x00000A3D
_02044AE4: .word 0x00000A37
#endif
_02044AE8: .word _0209CB6C
arm_func_end sub_020449AC
arm_func_start sub_02044AEC
sub_02044AEC: ; 0x02044AEC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
add r0, r7, #4
bl sub_020452A0
mov r4, r0
mvn r0, #0
cmp r4, r0
ldrne r0, [r7, #0x930]
ldr r5, [r7]
cmpne r0, r4
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
add r0, r7, #4
bl sub_02045298
cmp r0, #0
bne _02044B5C
cmp r5, #1
addne r0, r7, #0x700
ldrnesb r1, [r0, #0x2d]
mvnne r0, #1
cmpne r1, r0
beq _02044BEC
sub r0, r5, #2
cmp r0, #1
bhi _02044BEC
mov r0, r7
mov r1, r4
bl sub_020449AC
b _02044BEC
_02044B5C:
ldr r0, _02044BF4 ; =DUNGEON_PTR
ldr r0, [r0]
add r0, r0, r4, lsl #2
add r0, r0, #0x12000
#ifdef JAPAN
ldr r6, [r0, #0xa84]
#else
ldr r6, [r0, #0xb28]
#endif
cmp r6, #0
moveq r0, #0
beq _02044B90
ldr r0, [r6]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
_02044B90:
cmp r0, #0
cmpne r5, #1
beq _02044BC8
sub r0, r5, #2
cmp r0, #1
bhi _02044BC8
add r0, r7, #0x700
ldrsb r1, [r0, #0x2d]
mvn r0, #1
cmp r1, r0
beq _02044BC8
mov r0, r7
mov r1, r4
bl sub_020449AC
_02044BC8:
mov r0, r6
mov r1, #0
mov r2, #1
bl TryPointCameraToMonster
mov r2, #1
mov r3, r2
add r0, r6, #4
mov r1, #0
bl DrawTileGrid
_02044BEC:
str r4, [r7, #0x930]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02044BF4: .word DUNGEON_PTR
arm_func_end sub_02044AEC
arm_func_start sub_02044BF8
sub_02044BF8: ; 0x02044BF8
#ifdef JAPAN
#define SUB_02044BF8_LOAD_OFFSET #0xa84
#else
#define SUB_02044BF8_LOAD_OFFSET #0xb28
#endif
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xbc
mov fp, r1
str r2, [sp, #4]
ldr r1, _0204519C ; =0x00000728
mov sl, r0
str r3, [sp, #8]
bl MemZero
ldr sb, [sp, #0xe0]
add r0, sl, #0x20c
mov r4, #0
str r4, [sl]
cmp sb, #0
add r7, r0, #0x400
bne _02044CD8
mov r8, r4
mov fp, r4
mov r6, #1
mov r5, r4
_02044C44:
mov r0, r8
bl GetActiveTeamMember
ldrb r0, [r0]
tst r0, #1
movne r1, r6
moveq r1, fp
tst r1, #0xff
beq _02044C88
tst r0, #2
movne r0, #1
moveq r0, #0
tst r0, #0xff
addne r1, r7, r4, lsl #2
addne r0, r7, r4
strne r8, [r1, #8]
strneb r5, [r0, #0x18]
addne r4, r4, #1
_02044C88:
add r0, r8, #1
mov r0, r0, lsl #0x10
mov r8, r0, asr #0x10
cmp r8, #4
blt _02044C44
mov r0, r4, lsl #0x10
mov r5, r0, asr #0x10
mvn r3, #0
mov r2, #0
b _02044CCC
_02044CB0:
add r1, r7, r5, lsl #2
add r0, r5, #1
str r3, [r1, #8]
add r1, r7, r5
mov r0, r0, lsl #0x10
strb r2, [r1, #0x18]
mov r5, r0, asr #0x10
_02044CCC:
cmp r5, #4
blt _02044CB0
b _02044D78
_02044CD8:
mov r5, r4
_02044CDC:
ldr r0, _020451A0 ; =DUNGEON_PTR
ldr r0, [r0]
add r0, r0, r5, lsl #2
add r0, r0, #0x12000
ldr r6, [r0, SUB_02044BF8_LOAD_OFFSET]
mov r0, r6
bl sub_0204533C
cmp r0, #0
beq _02044D40
cmp fp, #0
beq _02044D18
mov r0, r6
ldr r8, [r6, #0xb4]
bl ov29_02347100
#ifdef JAPAN
strb r0, [r8, #0x15d]
#else
strb r0, [r8, #0x161]
#endif
_02044D18:
add r0, r7, r4, lsl #2
str r5, [r0, #8]
ldr r0, [r6, #0xb4]
#ifdef JAPAN
ldrb r0, [r0, #0x15d]
#else
ldrb r0, [r0, #0x161]
#endif
cmp r0, #0
movne r1, #0
add r0, r7, r4
moveq r1, #3
strb r1, [r0, #0x18]
add r4, r4, #1
_02044D40:
add r5, r5, #1
cmp r5, #4
blt _02044CDC
mov r5, r4
mvn r3, #0
mov r1, #0
b _02044D70
_02044D5C:
add r2, r7, r5, lsl #2
add r0, r7, r5
str r3, [r2, #8]
strb r1, [r0, #0x18]
add r5, r5, #1
_02044D70:
cmp r5, #4
blt _02044D5C
_02044D78:
ldr r0, [sp, #0xe0]
str r4, [r7, #0x1c]
str r0, [r7]
cmp sb, #0
moveq r0, #0
beq _02044D98
mov r0, #0xb
bl Arm9LoadUnkFieldNa0x2029EC8
_02044D98:
str r0, [sl, #0x6e8]
str r4, [sl, #0x6ec]
str r4, [sl, #0x6f0]
mov sb, #0
str sb, [sl, #0x6f4]
str sb, [sl, #0x6f8]
add r0, sl, #0x18c
str sb, [sl, #0x6dc]
add r2, sl, #0x20c
add r0, r0, #0x400
mov r1, #0x40
str sb, [sl, #0x6e0]
add r5, r2, #0x400
bl MemZero
add r0, sl, #0x1cc
add r0, r0, #0x400
mov r1, #0x40
bl MemZero
add r0, sl, #0x18c
add r0, r0, #0x400
str r0, [sp, #0x14]
add r0, sl, #0x3c
add r1, sl, #0x1cc
add r2, sl, #0x13c
str r0, [sp, #0x10]
add r0, r2, #0x400
str r0, [sp, #0x18]
ldr r0, _020451A4 ; =0x000003E7
mov r6, sb
sub r0, r0, #0x3e8
str r0, [sp, #0x20]
ldr r0, _020451A4 ; =0x000003E7
add r4, r1, #0x400
sub r0, r0, #0x3e8
str r0, [sp, #0x1c]
b _020450F8
_02044E28:
mov r0, r5
mov r1, r6
bl sub_02045360
mov fp, r0
ldr r0, [sp, #0x1c]
cmp fp, r0
beq _020450F4
ldr r0, [sp, #0x10]
mov r1, r6
add r0, r0, sb, lsl #8
str r0, [sp, #0xc]
mov r0, r5
bl sub_02045360
mov r1, r0
ldr r0, [sp, #0x20]
cmp r1, r0
beq _02044EC4
ldr r0, [r5]
cmp r0, #0
bne _02044E8C
mov r0, r1, lsl #0x10
mov r1, r0, asr #0x10
ldr r0, [sp, #0x14]
bl sub_020584FC
b _02044EC4
_02044E8C:
ldr r3, _020451A0 ; =DUNGEON_PTR
add r0, r5, r6
ldr r3, [r3]
ldrb r0, [r0, #0x18]
add r1, r3, r1, lsl #2
add r1, r1, #0x12000
cmp r0, #0
movne r0, #0x57
ldr r1, [r1, SUB_02044BF8_LOAD_OFFSET]
moveq r0, #0x44
and r2, r0, #0xff
ldr r0, [sp, #0x14]
ldr r1, [r1, #0xb4]
bl ov29_023002F0
_02044EC4:
ldr r0, [sp, #0x14]
str r0, [sl, #0x574]
ldr r0, [r5]
cmp r0, #0
bne _02044EE8
ldr r1, _020451A8 ; =_0209CBA8
mov r0, r4
bl strcpy
b _020450A8
_02044EE8:
ldr r0, _020451A0 ; =DUNGEON_PTR
ldr r0, [r0]
add r0, r0, fp, lsl #2
add r0, r0, #0x12000
ldr r0, [r0, SUB_02044BF8_LOAD_OFFSET]
bl sub_0204533C
cmp r0, #0
beq _020450F4
ldr r0, _020451A0 ; =DUNGEON_PTR
ldr r2, [r0]
ldr r0, _020451AC ; =TEAM_MEMBER_TABLE_PTR
ldr r1, [r0]
add r0, r2, fp, lsl #2
add r0, r0, #0x12000
ldr r2, [r0, SUB_02044BF8_LOAD_OFFSET]
add r0, r1, #0x9000
ldr r8, [r2, #0xb4]
ldr r2, [r0, #0x84c]
ldrsh r1, [r8, #0xc]
mov r0, #0x68
smlabb r0, r1, r0, r2
ldrsh r0, [r0, #8]
bl sub_02056228
cmp r0, #0
ldrsh r1, [r8, #0x12]
ldrsh r0, [r8, #0x16]
beq _02045000
add r1, r1, r0
ldr r0, _020451A4 ; =0x000003E7
cmp r1, r0
movgt r3, r0
movle r3, r1
mov r2, r3, asr #1
ldrsh r0, [r8, #0x10]
add r2, r3, r2, lsr #30
cmp r0, r2, asr #2
bgt _02044F8C
ldr r1, _020451B0 ; =_0209CBB0
mov r0, r4
bl strcpy
b _020450A8
_02044F8C:
ldr r2, _020451A4 ; =0x000003E7
cmp r1, r2
movgt r3, r2
movle r3, r1
mov r2, r3, asr #1
add r2, r3, r2, lsr #30
mov r2, r2, asr #2
cmp r0, r2, lsl #1
bgt _02044FC0
ldr r1, _020451B4 ; =_0209CBB8
mov r0, r4
bl strcpy
b _020450A8
_02044FC0:
ldr r2, _020451A4 ; =0x000003E7
cmp r1, r2
movgt r1, r2
mov r2, r1, asr #1
add r1, r1, r2, lsr #30
mov r1, r1, asr #2
add r1, r1, r1, lsl #1
cmp r0, r1
mov r0, r4
bgt _02044FF4
ldr r1, _020451B8 ; =_0209CBC0
bl strcpy
b _020450A8
_02044FF4:
ldr r1, _020451BC ; =_0209CBC8
bl strcpy
b _020450A8
_02045000:
add r1, r1, r0
ldr r0, _020451A4 ; =0x000003E7
cmp r1, r0
movgt r3, r0
movle r3, r1
mov r2, r3, asr #1
ldrsh r0, [r8, #0x10]
add r2, r3, r2, lsr #30
cmp r0, r2, asr #2
bgt _02045038
ldr r1, _020451C0 ; =_0209CBD0
mov r0, r4
bl strcpy
b _020450A8
_02045038:
ldr r2, _020451A4 ; =0x000003E7
cmp r1, r2
movgt r3, r2
movle r3, r1
mov r2, r3, asr #1
add r2, r3, r2, lsr #30
mov r2, r2, asr #2
cmp r0, r2, lsl #1
bgt _0204506C
ldr r1, _020451C4 ; =_0209CBD8
mov r0, r4
bl strcpy
b _020450A8
_0204506C:
ldr r2, _020451A4 ; =0x000003E7
cmp r1, r2
movgt r1, r2
mov r2, r1, asr #1
add r1, r1, r2, lsr #30
mov r1, r1, asr #2
add r1, r1, r1, lsl #1
cmp r0, r1
mov r0, r4
bgt _020450A0
ldr r1, _020451C8 ; =_0209CBE0
bl strcpy
b _020450A8
_020450A0:
ldr r1, _020451A8 ; =_0209CBA8
bl strcpy
_020450A8:
str r4, [sl, #0x578]
ldr r0, [r5]
cmp r0, #0
bne _020450C4
mov r0, fp, lsl #0x10
mov r0, r0, asr #0x10
bl GetActiveTeamMember
_020450C4:
ldr r0, [sp, #0x18]
ldr r2, _020451CC ; =_0209CBE8
str r0, [sp]
ldr r0, [sp, #0xc]
mov r1, #0x100
mov r3, #0
bl PreprocessString
add r1, sl, sb, lsl #3
ldr r0, [sp, #0xc]
add sb, sb, #1
str r0, [r1, #0xc]
str sb, [r1, #0x10]
_020450F4:
add r6, r6, #1
_020450F8:
ldr r0, [r5, #0x1c]
cmp r6, r0
blt _02044E28
mov r0, #0
add r1, sl, sb, lsl #3
str r0, [r1, #0xc]
sub r0, r0, #1
str r0, [r1, #0x10]
ldr r0, [sp, #4]
add r2, sp, #0x24
cmp r0, #0
ldrne r1, _020451D0 ; =0x00000A3A
movne r0, #0x10
strne r0, [sp, #0x30]
strneh r1, [sp, #0x2c]
ldr r1, [sl, #0x6e8]
add r0, r7, #0x18
add r1, r1, #1
str r1, [sp, #0x24]
str r0, [sp, #0x84]
ldr r0, [sp, #4]
add r3, sl, #0xc
cmp r0, #0
movne r1, #0x800
ldr r0, [sp, #8]
moveq r1, #0
cmp r0, #0
movne r0, #0x400000
moveq r0, #0
orr r0, r0, #0x33
orr r1, r0, r1
ldr r0, _020451D4 ; =_0209CB98
orr r1, r1, #0x1200
bl CreateParentMenu
ldr r1, [sp, #0xe0]
strb r0, [sl, #8]
cmp r1, #1
bne _02045194
bl ov29_022EA62C
_02045194:
add sp, sp, #0xbc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0204519C: .word 0x00000728
_020451A0: .word DUNGEON_PTR
_020451A4: .word 0x000003E7
_020451A8: .word _0209CBA8
_020451AC: .word TEAM_MEMBER_TABLE_PTR
_020451B0: .word _0209CBB0
_020451B4: .word _0209CBB8
_020451B8: .word _0209CBC0
_020451BC: .word _0209CBC8
_020451C0: .word _0209CBD0
_020451C4: .word _0209CBD8
_020451C8: .word _0209CBE0
_020451CC: .word _0209CBE8
#ifdef JAPAN
_020451D0: .word 0x00000875
#else
_020451D0: .word 0x00000A3A
#endif
_020451D4: .word _0209CB98
arm_func_end sub_02044BF8
arm_func_start sub_020451D8
sub_020451D8: ; 0x020451D8
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
ldr r1, [r4]
add r0, r4, #0x20c
cmp r1, #0
add r5, r0, #0x400
beq _02045208
cmp r1, #1
beq _02045220
cmp r1, #2
beq _02045288
b _02045290
_02045208:
ldrsb r0, [r4, #8]
bl IsParentMenuActive
cmp r0, #0
beq _02045290
mov r0, #1
str r0, [r4]
_02045220:
ldrsb r0, [r4, #8]
bl IsParentMenuActive
cmp r0, #0
bne _02045278
mov r0, #2
str r0, [r4]
ldrsb r0, [r4, #8]
bl GetSimpleMenuResult__0202AEA4
subs r0, r0, #1
bmi _0204526C
str r0, [r4, #0x6e8]
add r0, r5, r0
ldrb r0, [r0, #0x18]
cmp r0, #0
moveq r0, #2
streq r0, [r4, #0x724]
movne r0, #1
strne r0, [r4, #0x724]
b _02045290
_0204526C:
mov r0, #1
str r0, [r4, #0x724]
b _02045290
_02045278:
ldrsb r0, [r4, #8]
bl GetWindowIdSelectedItemOnPage
str r0, [r4, #0x6e8]
b _02045290
_02045288:
ldr r0, [r4, #0x724]
ldmia sp!, {r3, r4, r5, pc}
_02045290:
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020451D8
arm_func_start sub_02045298
sub_02045298: ; 0x02045298
ldr r0, [r0, #0x60c]
bx lr
arm_func_end sub_02045298
arm_func_start sub_020452A0
sub_020452A0: ; 0x020452A0
ldr ip, _020452B4 ; =sub_02045360
add r2, r0, #0x20c
ldr r1, [r0, #0x6e8]
add r0, r2, #0x400
bx ip
.align 2, 0
_020452B4: .word sub_02045360
arm_func_end sub_020452A0
arm_func_start sub_020452B8
sub_020452B8: ; 0x020452B8
stmdb sp!, {r4, lr}
movs r4, r0
ldrnesb r0, [r4, #8]
mvnne r1, #1
cmpne r0, r1
moveq r0, #1
ldmeqia sp!, {r4, pc}
bl sub_0202AAE8
cmp r0, #0
ldrsb r0, [r4, #8]
beq _02045310
bl sub_020282F4
add r0, r0, #5
cmp r0, #1
movhi r0, #0
bhi _02045320
ldrsb r0, [r4, #8]
bl CloseParentMenu
mvn r0, #1
strb r0, [r4, #8]
mov r0, #1
b _02045320
_02045310:
bl CloseParentMenu
mvn r0, #1
strb r0, [r4, #8]
mov r0, #1
_02045320:
cmp r0, #0
movne r0, #2
moveq r0, #0
ldmia sp!, {r4, pc}
arm_func_end sub_020452B8
arm_func_start sub_02045330
sub_02045330: ; 0x02045330
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bx lr
arm_func_end sub_02045330
arm_func_start sub_0204533C
sub_0204533C: ; 0x0204533C
cmp r0, #0
moveq r0, #0
bxeq lr
ldr r0, [r0]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
arm_func_end sub_0204533C
arm_func_start sub_02045360
sub_02045360: ; 0x02045360
stmdb sp!, {r4, lr}
add r1, r0, r1, lsl #2
ldr r4, [r1, #8]
mvn r1, #0
cmp r4, r1
moveq r0, r1
ldmeqia sp!, {r4, pc}
ldr r0, [r0]
cmp r0, #0
bne _020453C8
mov r0, r4, lsl #0x10
mov r0, r0, asr #0x10
bl GetActiveTeamMember
ldrb r0, [r0]
tst r0, #1
movne r1, #1
moveq r1, #0
tst r1, #0xff
beq _020453C0
tst r0, #2
movne r0, #1
moveq r0, #0
tst r0, #0xff
bne _020453EC
_020453C0:
mvn r0, #0
ldmia sp!, {r4, pc}
_020453C8:
ldr r0, _020453F4 ; =DUNGEON_PTR
ldr r0, [r0]
add r0, r0, r4, lsl #2
add r0, r0, #0x12000
#ifdef JAPAN
ldr r0, [r0, #0xa84]
#else
ldr r0, [r0, #0xb28]
#endif
bl sub_0204533C
cmp r0, #0
mvneq r0, #0
ldmeqia sp!, {r4, pc}
_020453EC:
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_020453F4: .word DUNGEON_PTR
arm_func_end sub_02045360
arm_func_start sub_020453F8
sub_020453F8: ; 0x020453F8
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _020454DC ; =_020AFED4
mov r5, r0
ldr r0, [r2]
mov r4, r1
cmp r0, #0
bne _02045428
mov r0, #0x410
mov r1, #8
bl MemAlloc
ldr r1, _020454DC ; =_020AFED4
str r0, [r1]
_02045428:
bl sub_02044094
bl sub_020440DC
ldr r1, _020454DC ; =_020AFED4
mov r2, #0
ldr r0, [r1]
strb r4, [r0, #0x386]
ldr r0, [r1]
add r0, r0, #0x300
strh r2, [r0, #0x88]
ldr r0, [r1]
str r2, [r0, #0x38c]
ldr r0, [r1]
add r0, r0, #0x1c
bl InitPreprocessorArgs
ldr r1, _020454DC ; =_020AFED4
mov r0, #0
ldr r2, [r1]
sub r3, r0, #2
str r0, [r2, #0x68]
ldr r2, [r1]
cmp r4, #0
str r0, [r2, #0x1c]
ldr r2, [r1]
str r0, [r2, #0x18]
ldr r2, [r1]
strb r3, [r2, #0x14]
ldr r2, [r1]
strb r3, [r2, #0x16]
ldr r2, [r1]
strb r3, [r2, #0x15]
ldr r2, [r1]
strb r3, [r2, #0x17]
ldr r3, [r1]
ldrh r2, [r5]
add r1, r3, #0x300
strh r2, [r1, #0x80]
ldrh r2, [r5, #2]
strh r2, [r1, #0x82]
ldrh r2, [r5, #4]
strh r2, [r1, #0x84]
str r0, [r3, #0x6c]
moveq r0, #0x13
bl sub_020454E0
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020454DC: .word _020AFED4
arm_func_end sub_020453F8
arm_func_start sub_020454E0
sub_020454E0: ; 0x020454E0
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x194
ldr r1, _02045A1C ; =_020AFED4
ldr r2, [r1]
str r0, [r2, #4]
ldr r4, [r1]
ldr r0, [r4, #4]
cmp r0, #0x13
addls pc, pc, r0, lsl #2
b _02045A14
_02045508: ; jump table
b _02045558 ; case 0
b _02045584 ; case 1
b _020455CC ; case 2
b _02045A14 ; case 3
b _02045A14 ; case 4
b _02045A14 ; case 5
b _020458C0 ; case 6
b _02045914 ; case 7
b _02045844 ; case 8
b _02045948 ; case 9
b _02045984 ; case 10
b _020459C0 ; case 11
b _02045A14 ; case 12
b _02045A14 ; case 13
b _02045958 ; case 14
b _02045798 ; case 15
b _02045688 ; case 16
b _02045764 ; case 17
b _02045A14 ; case 18
b _020459E0 ; case 19
_02045558:
mov r0, #2
str r0, [r4, #8]
bl sub_02046624
ldr r0, _02045A1C ; =_020AFED4
ldr r2, _02045A20 ; =0x000002CD
ldr r3, [r0]
mov r1, #8
ldrsb r0, [r3, #0x14]
add r3, r3, #0x1c
bl ShowStringIdInDialogueBox
b _02045A14
_02045584:
mov r0, #2
str r0, [r4, #8]
bl sub_02046624
ldr r0, _02045A1C ; =_020AFED4
ldr r0, [r0]
ldrsb r0, [r0, #0x14]
bl ShowDialogueBox
ldr r0, _02045A1C ; =_020AFED4
mov r3, #2
ldr r1, [r0]
ldr r2, _02045A24 ; =0x000002D5
str r3, [r1, #8]
ldr r3, [r0]
mov r1, #8
ldrsb r0, [r3, #0x14]
add r3, r3, #0x1c
bl ShowStringIdInDialogueBox
b _02045A14
_020455CC:
ldr r1, _02045A28 ; =0x000002CE
add r0, r4, #0x70
bl GetStringFromFileVeneer
mov r1, #2
add r0, sp, #0x14
str r1, [r4, #0x170]
bl InitPreprocessorArgs
ldr r0, _02045A1C ; =_020AFED4
ldr r2, _02045A2C ; =_0209CC0C
ldr r1, [r0]
add r0, r1, #0x390
add r1, r1, #0x380
bl sub_0200D670
ldr r0, _02045A1C ; =_020AFED4
ldr r2, _02045A30 ; =0x000002CF
ldr r5, [r0]
add ip, sp, #0x14
add r3, r5, #0x300
ldrsh lr, [r3, #0x84]
add r0, r4, #0x174
mov r1, #0x100
orr lr, lr, #0x10000
str lr, [sp, #0x24]
ldrh lr, [r3, #0x82]
mov r3, #0
str lr, [sp, #0x38]
ldrb lr, [r5, #0x380]
str lr, [sp, #0x3c]
str ip, [sp]
bl PreprocessStringFromId
mov r1, #3
str r1, [r4, #0x274]
mov r2, #0
strb r2, [r4, #0x278]
mov r0, #1
str r0, [r4, #0x378]
str r1, [sp]
ldr r3, _02045A1C ; =_020AFED4
ldr r0, _02045A34 ; =_0209CC38
ldr r3, [r3]
ldr r1, _02045A38 ; =0x00300011
add r3, r3, #0x70
bl CreateSimpleMenu
ldr r1, _02045A1C ; =_020AFED4
ldr r1, [r1]
strb r0, [r1, #0x16]
b _02045A14
_02045688:
mov r0, #0x11
str r0, [r4, #8]
ldr r0, [r1]
ldr r0, [r0]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02010044
ldr r2, _02045A1C ; =_020AFED4
ldr r1, [r2]
add r1, r1, #0x300
strh r0, [r1, #0x88]
ldr r1, [r2]
add r0, r1, #0x300
ldrsh r0, [r0, #0x88]
strh r0, [sp, #0x10]
ldr r0, [r1]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02010060
ldr r3, _02045A1C ; =_020AFED4
ldr r2, _02045A2C ; =_0209CC0C
ldr r4, [r3]
add r1, sp, #0xc
str r0, [r4, #0x38c]
ldr r0, [r3]
mov r3, #0
ldr r4, [r0, #0x38c]
add r0, r0, #0x390
strh r4, [sp, #0xe]
strb r3, [sp, #0xc]
bl sub_0200D670
ldr r0, _02045A1C ; =_020AFED4
ldr r2, [r0]
add r1, r2, #0x390
str r1, [r2, #0x54]
ldr r1, [r0]
add r0, r1, #0x300
ldrsh r0, [r0, #0x88]
str r0, [r1, #0x2c]
bl sub_02046624
ldr r0, _02045A1C ; =_020AFED4
ldr r0, [r0]
ldrsb r0, [r0, #0x14]
bl ShowDialogueBox
ldr r0, _02045A1C ; =_020AFED4
mov r4, #0x11
ldr r3, [r0]
#ifdef JAPAN
ldr r2, _02045D9C ; =0x00002FC5
str r4, [r3, #8]
ldr r3, [r0]
mov r1, #8
#else
mov r1, #8
str r4, [r3, #8]
ldr r3, [r0]
add r2, r4, #0x2c0
#endif
ldrsb r0, [r3, #0x14]
add r3, r3, #0x1c
bl ShowStringIdInDialogueBox
b _02045A14
_02045764:
mov r4, #3
str r4, [sp, #0x64]
mov r4, #2
ldr r0, _02045A34 ; =_0209CC38
ldr r1, _02045A3C ; =0x00300033
ldr r3, _02045A40 ; =_0209CC48
add r2, sp, #0x64
str r4, [sp]
bl CreateSimpleMenuFromStringIds
ldr r1, _02045A1C ; =_020AFED4
ldr r1, [r1]
strb r0, [r1, #0x16]
b _02045A14
_02045798:
ldr r0, [r4]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02010044
ldr r2, _02045A1C ; =_020AFED4
ldr r1, [r2]
add r1, r1, #0x300
strh r0, [r1, #0x88]
ldr r0, [r2]
ldr r0, [r0]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02010060
ldr r4, _02045A1C ; =_020AFED4
ldr r1, _02045A44 ; =0x00001013
ldr r2, [r4]
ldr r3, _02045A48 ; =0x000008E4
str r0, [r2, #0x38c]
ldr lr, [r4]
ldr r0, _02045A4C ; =_0209CC28
add r2, lr, #0x300
ldrsh ip, [r2, #0x88]
mov r2, #0
str ip, [lr, #0x2c]
ldr lr, [r4]
ldr ip, [lr, #0x38c]
add ip, ip, #0xbc
str ip, [lr, #0x34]
ldr r4, [r4]
add ip, r4, #0x1c
add r4, r4, #0x300
str ip, [sp]
ldrsh r4, [r4, #0x88]
#if defined(EUROPE)
add r4, r4, #0xd3
add r4, r4, #0x2900
#elif defined(JAPAN)
add r4, r4, #0xce
add r4, r4, #0x4100
#else
add r4, r4, #0xd1
add r4, r4, #0x2900
#endif
mov r4, r4, lsl #0x10
mov r4, r4, lsr #0x10
stmib sp, {r4, ip}
bl CreateScrollBoxSingle
ldr r1, _02045A1C ; =_020AFED4
ldr r1, [r1]
strb r0, [r1, #0x17]
b _02045A14
_02045844:
ldr r0, [r4]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02010044
ldr r2, _02045A1C ; =_020AFED4
ldr r1, [r2]
add r1, r1, #0x300
strh r0, [r1, #0x88]
ldr r0, [r2]
ldr r0, [r0]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02010060
ldr r1, _02045A1C ; =_020AFED4
mov r2, #3
ldr r3, [r1]
str r0, [r3, #0x38c]
ldr r3, [r1]
add r0, r3, #0x300
ldrsh r0, [r0, #0x88]
str r0, [r3, #0x2c]
ldr r0, [r1]
str r2, [r0, #4]
bl sub_02045A5C
ldr r0, _02045A1C ; =_020AFED4
ldr r0, [r0]
ldr r0, [r0]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02010154
b _02045A14
_020458C0:
add r0, r4, #0x390
str r0, [r4, #0x5c]
ldr r0, [r1]
mov r1, #7
str r1, [r0, #8]
bl sub_02046624
ldr r0, _02045A1C ; =_020AFED4
ldr r0, [r0]
ldrsb r0, [r0, #0x14]
bl ShowDialogueBox
ldr r0, _02045A1C ; =_020AFED4
mov r3, #7
ldr r1, [r0]
ldr r2, _02045A50 ; =0x000002D6
str r3, [r1, #8]
ldr r3, [r0]
mov r1, #8
ldrsb r0, [r3, #0x14]
add r3, r3, #0x1c
bl ShowStringIdInDialogueBox
b _02045A14
_02045914:
mov r4, #3
str r4, [sp, #0xfc]
mov r4, #2
ldr r0, _02045A34 ; =_0209CC38
ldr r1, _02045A3C ; =0x00300033
ldr r3, _02045A40 ; =_0209CC48
add r2, sp, #0xfc
str r4, [sp]
bl CreateSimpleMenuFromStringIds
ldr r1, _02045A1C ; =_020AFED4
ldr r1, [r1]
strb r0, [r1, #0x16]
b _02045A14
_02045948:
mov r0, #4
str r0, [r4, #4]
bl sub_02045A5C
b _02045A14
_02045958:
ldr r0, _02045A54 ; =_0209CC18
mov r4, #3
ldr r3, _02045A58 ; =_0209CC60
mov r1, #0x13
mov r2, #0
str r4, [sp]
bl CreateSimpleMenuFromStringIds
ldr r1, _02045A1C ; =_020AFED4
ldr r1, [r1]
strb r0, [r1, #0x16]
b _02045A14
_02045984:
ldrsb r0, [r4, #0x14]
bl CloseDialogueBox
ldr r0, _02045A1C ; =_020AFED4
mvn r1, #1
ldr r0, [r0]
strb r1, [r0, #0x14]
bl sub_02043218
mov r0, #2
mov r1, #0
mov r2, #8
bl sub_02042CF0
ldr r1, _02045A1C ; =_020AFED4
ldr r1, [r1]
strb r0, [r1, #0x15]
b _02045A14
_020459C0:
mov r0, #2
mov r1, #0
mov r2, #8
bl sub_02042CF0
ldr r1, _02045A1C ; =_020AFED4
ldr r1, [r1]
strb r0, [r1, #0x15]
b _02045A14
_020459E0:
mov r0, #0xa
str r0, [r4, #8]
ldr r0, [r1]
mov r1, #0x12
str r1, [r0, #4]
bl sub_02046624
ldr r0, _02045A1C ; =_020AFED4
#ifdef JAPAN
ldr r2, _02045DC0 ; =0x00002FC4
ldr r3, [r0]
mov r1, #0x18
#else
mov r1, #0x18
ldr r3, [r0]
mov r2, #0x2d0
#endif
ldrsb r0, [r3, #0x14]
add r3, r3, #0x1c
bl ShowStringIdInDialogueBox
_02045A14:
add sp, sp, #0x194
ldmia sp!, {r4, r5, pc}
.align 2, 0
#ifdef JAPAN
#define SUB_020454E0_OFFSET 0x2CF4
#else
#define SUB_020454E0_OFFSET 0
#endif
_02045A1C: .word _020AFED4
_02045A20: .word 0x000002CD + SUB_020454E0_OFFSET
_02045A24: .word 0x000002D5 + SUB_020454E0_OFFSET
_02045A28: .word 0x000002CE + SUB_020454E0_OFFSET
_02045A2C: .word _0209CC0C
_02045A30: .word 0x000002CF + SUB_020454E0_OFFSET
_02045A34: .word _0209CC38
_02045A38: .word 0x00300011
#ifdef JAPAN
_02045D9C: .word 0x00002FC5
#endif
_02045A3C: .word 0x00300033
_02045A40: .word _0209CC48
_02045A44: .word 0x00001013
#ifdef JAPAN
_02045A48: .word 0x00001D3C
#else
_02045A48: .word 0x000008E4
#endif
_02045A4C: .word _0209CC28
_02045A50: .word 0x000002D6 + SUB_020454E0_OFFSET
_02045A54: .word _0209CC18
_02045A58: .word _0209CC60
#ifdef JAPAN
_02045DC0: .word 0x00002FC4
#endif
arm_func_end sub_020454E0
arm_func_start sub_02045A5C
sub_02045A5C: ; 0x02045A5C
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x194
ldr r0, _02045F90 ; =_020AFED4
ldr r4, [r0]
ldr r1, [r4, #4]
cmp r1, #0x13
addls pc, pc, r1, lsl #2
b _02045F88
_02045A7C: ; jump table
b _02045ACC ; case 0
b _02045AF8 ; case 1
b _02045B40 ; case 2
b _02045F88 ; case 3
b _02045F88 ; case 4
b _02045F88 ; case 5
b _02045E34 ; case 6
b _02045E88 ; case 7
b _02045DB8 ; case 8
b _02045EBC ; case 9
b _02045EF8 ; case 10
b _02045F34 ; case 11
b _02045F88 ; case 12
b _02045F88 ; case 13
b _02045ECC ; case 14
b _02045D0C ; case 15
b _02045BFC ; case 16
b _02045CD8 ; case 17
b _02045F88 ; case 18
b _02045F54 ; case 19
_02045ACC:
mov r0, #2
str r0, [r4, #8]
bl sub_02046624
ldr r0, _02045F90 ; =_020AFED4
ldr r2, _02045F94 ; =0x000002CD
ldr r3, [r0]
mov r1, #8
ldrsb r0, [r3, #0x14]
add r3, r3, #0x1c
bl ShowStringIdInDialogueBox
b _02045F88
_02045AF8:
mov r0, #2
str r0, [r4, #8]
bl sub_02046624
ldr r0, _02045F90 ; =_020AFED4
ldr r0, [r0]
ldrsb r0, [r0, #0x14]
bl ShowDialogueBox
ldr r0, _02045F90 ; =_020AFED4
mov r3, #2
ldr r1, [r0]
ldr r2, _02045F98 ; =0x000002D5
str r3, [r1, #8]
ldr r3, [r0]
mov r1, #8
ldrsb r0, [r3, #0x14]
add r3, r3, #0x1c
bl ShowStringIdInDialogueBox
b _02045F88
_02045B40:
ldr r1, _02045F9C ; =0x000002CE
add r0, r4, #0x70
bl GetStringFromFileVeneer
mov r1, #2
add r0, sp, #0x144
str r1, [r4, #0x170]
bl InitPreprocessorArgs
ldr r0, _02045F90 ; =_020AFED4
ldr r2, _02045FA0 ; =_0209CC0C
ldr r1, [r0]
add r0, r1, #0x390
add r1, r1, #0x380
bl sub_0200D670
ldr r0, _02045F90 ; =_020AFED4
ldr r2, _02045FA4 ; =0x000002CF
ldr r5, [r0]
add ip, sp, #0x144
add r3, r5, #0x300
ldrsh lr, [r3, #0x84]
add r0, r4, #0x174
mov r1, #0x100
orr lr, lr, #0x10000
str lr, [sp, #0x154]
ldrh lr, [r3, #0x82]
mov r3, #0
str lr, [sp, #0x168]
ldrb lr, [r5, #0x380]
str lr, [sp, #0x16c]
str ip, [sp]
bl PreprocessStringFromId
mov r1, #3
str r1, [r4, #0x274]
mov r2, #0
strb r2, [r4, #0x278]
mov r0, #1
str r0, [r4, #0x378]
str r1, [sp]
ldr r3, _02045F90 ; =_020AFED4
ldr r0, _02045FA8 ; =_0209CC38
ldr r3, [r3]
ldr r1, _02045FAC ; =0x00300011
add r3, r3, #0x70
bl CreateSimpleMenu
ldr r1, _02045F90 ; =_020AFED4
ldr r1, [r1]
strb r0, [r1, #0x16]
b _02045F88
_02045BFC:
mov r1, #0x11
str r1, [r4, #8]
ldr r0, [r0]
ldr r0, [r0]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02010044
ldr r2, _02045F90 ; =_020AFED4
ldr r1, [r2]
add r1, r1, #0x300
strh r0, [r1, #0x88]
ldr r1, [r2]
add r0, r1, #0x300
ldrsh r0, [r0, #0x88]
strh r0, [sp, #0x10]
ldr r0, [r1]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02010060
ldr r3, _02045F90 ; =_020AFED4
ldr r2, _02045FA0 ; =_0209CC0C
ldr r4, [r3]
add r1, sp, #0xc
str r0, [r4, #0x38c]
ldr r0, [r3]
mov r3, #0
ldr r4, [r0, #0x38c]
add r0, r0, #0x390
strh r4, [sp, #0xe]
strb r3, [sp, #0xc]
bl sub_0200D670
ldr r0, _02045F90 ; =_020AFED4
ldr r2, [r0]
add r1, r2, #0x390
str r1, [r2, #0x54]
ldr r1, [r0]
add r0, r1, #0x300
ldrsh r0, [r0, #0x88]
str r0, [r1, #0x2c]
bl sub_02046624
ldr r0, _02045F90 ; =_020AFED4
ldr r0, [r0]
ldrsb r0, [r0, #0x14]
bl ShowDialogueBox
ldr r0, _02045F90 ; =_020AFED4
mov r4, #0x11
ldr r3, [r0]
#ifdef JAPAN
ldr r2, _02046318 ; =0x00002FC5
str r4, [r3, #8]
ldr r3, [r0]
mov r1, #8
#else
mov r1, #8
str r4, [r3, #8]
ldr r3, [r0]
add r2, r4, #0x2c0
#endif
ldrsb r0, [r3, #0x14]
add r3, r3, #0x1c
bl ShowStringIdInDialogueBox
b _02045F88
_02045CD8:
mov r4, #3
str r4, [sp, #0xac]
mov r4, #2
ldr r0, _02045FA8 ; =_0209CC38
ldr r1, _02045FB0 ; =0x00300033
ldr r3, _02045FB4 ; =_0209CC48
add r2, sp, #0xac
str r4, [sp]
bl CreateSimpleMenuFromStringIds
ldr r1, _02045F90 ; =_020AFED4
ldr r1, [r1]
strb r0, [r1, #0x16]
b _02045F88
_02045D0C:
ldr r0, [r4]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02010044
ldr r2, _02045F90 ; =_020AFED4
ldr r1, [r2]
add r1, r1, #0x300
strh r0, [r1, #0x88]
ldr r0, [r2]
ldr r0, [r0]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02010060
ldr r4, _02045F90 ; =_020AFED4
ldr r1, _02045FB8 ; =0x00001013
ldr r2, [r4]
ldr r3, _02045FBC ; =0x000008E4
str r0, [r2, #0x38c]
ldr lr, [r4]
ldr r0, _02045FC0 ; =_0209CC28
add r2, lr, #0x300
ldrsh ip, [r2, #0x88]
mov r2, #0
str ip, [lr, #0x2c]
ldr lr, [r4]
ldr ip, [lr, #0x38c]
add ip, ip, #0xbc
str ip, [lr, #0x34]
ldr r4, [r4]
add ip, r4, #0x1c
add r4, r4, #0x300
str ip, [sp]
ldrsh r4, [r4, #0x88]
#if defined(EUROPE)
add r4, r4, #0xd3
add r4, r4, #0x2900
#elif defined(JAPAN)
add r4, r4, #0xce
add r4, r4, #0x4100
#else
add r4, r4, #0xd1
add r4, r4, #0x2900
#endif
mov r4, r4, lsl #0x10
mov r4, r4, lsr #0x10
stmib sp, {r4, ip}
bl CreateScrollBoxSingle
ldr r1, _02045F90 ; =_020AFED4
ldr r1, [r1]
strb r0, [r1, #0x17]
b _02045F88
_02045DB8:
ldr r0, [r4]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02010044
ldr r2, _02045F90 ; =_020AFED4
ldr r1, [r2]
add r1, r1, #0x300
strh r0, [r1, #0x88]
ldr r0, [r2]
ldr r0, [r0]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02010060
ldr r1, _02045F90 ; =_020AFED4
mov r2, #3
ldr r3, [r1]
str r0, [r3, #0x38c]
ldr r3, [r1]
add r0, r3, #0x300
ldrsh r0, [r0, #0x88]
str r0, [r3, #0x2c]
ldr r0, [r1]
str r2, [r0, #4]
bl sub_02045A5C
ldr r0, _02045F90 ; =_020AFED4
ldr r0, [r0]
ldr r0, [r0]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02010154
b _02045F88
_02045E34:
add r1, r4, #0x390
str r1, [r4, #0x5c]
ldr r0, [r0]
mov r1, #7
str r1, [r0, #8]
bl sub_02046624
ldr r0, _02045F90 ; =_020AFED4
ldr r0, [r0]
ldrsb r0, [r0, #0x14]
bl ShowDialogueBox
ldr r0, _02045F90 ; =_020AFED4
mov r3, #7
ldr r1, [r0]
ldr r2, _02045FC4 ; =0x000002D6
str r3, [r1, #8]
ldr r3, [r0]
mov r1, #8
ldrsb r0, [r3, #0x14]
add r3, r3, #0x1c
bl ShowStringIdInDialogueBox
b _02045F88
_02045E88:
mov r4, #3
str r4, [sp, #0x14]
mov r4, #2
ldr r0, _02045FA8 ; =_0209CC38
ldr r1, _02045FB0 ; =0x00300033
ldr r3, _02045FB4 ; =_0209CC48
add r2, sp, #0x14
str r4, [sp]
bl CreateSimpleMenuFromStringIds
ldr r1, _02045F90 ; =_020AFED4
ldr r1, [r1]
strb r0, [r1, #0x16]
b _02045F88
_02045EBC:
mov r0, #4
str r0, [r4, #4]
bl sub_02045A5C
b _02045F88
_02045ECC:
ldr r0, _02045FC8 ; =_0209CC18
mov r4, #3
ldr r3, _02045FCC ; =_0209CC60
mov r1, #0x13
mov r2, #0
str r4, [sp]
bl CreateSimpleMenuFromStringIds
ldr r1, _02045F90 ; =_020AFED4
ldr r1, [r1]
strb r0, [r1, #0x16]
b _02045F88
_02045EF8:
ldrsb r0, [r4, #0x14]
bl CloseDialogueBox
ldr r0, _02045F90 ; =_020AFED4
mvn r1, #1
ldr r0, [r0]
strb r1, [r0, #0x14]
bl sub_02043218
mov r0, #2
mov r1, #0
mov r2, #8
bl sub_02042CF0
ldr r1, _02045F90 ; =_020AFED4
ldr r1, [r1]
strb r0, [r1, #0x15]
b _02045F88
_02045F34:
mov r0, #2
mov r1, #0
mov r2, #8
bl sub_02042CF0
ldr r1, _02045F90 ; =_020AFED4
ldr r1, [r1]
strb r0, [r1, #0x15]
b _02045F88
_02045F54:
mov r1, #0xa
str r1, [r4, #8]
ldr r0, [r0]
mov r1, #0x12
str r1, [r0, #4]
bl sub_02046624
ldr r0, _02045F90 ; =_020AFED4
#ifdef JAPAN
ldr r2, _0204633C ; =0x00002FC4
ldr r3, [r0]
mov r1, #0x18
#else
mov r1, #0x18
ldr r3, [r0]
mov r2, #0x2d0
#endif
ldrsb r0, [r3, #0x14]
add r3, r3, #0x1c
bl ShowStringIdInDialogueBox
_02045F88:
add sp, sp, #0x194
ldmia sp!, {r4, r5, pc}
.align 2, 0
#ifdef JAPAN
#define SUB_02045A5C_OFFSET 0x2CF4
#else
#define SUB_02045A5C_OFFSET 0
#endif
_02045F90: .word _020AFED4
_02045F94: .word 0x000002CD + SUB_02045A5C_OFFSET
_02045F98: .word 0x000002D5 + SUB_02045A5C_OFFSET
_02045F9C: .word 0x000002CE + SUB_02045A5C_OFFSET
_02045FA0: .word _0209CC0C
_02045FA4: .word 0x000002CF + SUB_02045A5C_OFFSET
_02045FA8: .word _0209CC38
_02045FAC: .word 0x00300011
#ifdef JAPAN
_02046318: .word 0x00002FC5
#endif
_02045FB0: .word 0x00300033
_02045FB4: .word _0209CC48
_02045FB8: .word 0x00001013
#ifdef JAPAN
_02045FBC: .word 0x00001D3C
#else
_02045FBC: .word 0x000008E4
#endif
_02045FC0: .word _0209CC28
_02045FC4: .word 0x000002D6 + SUB_02045A5C_OFFSET
_02045FC8: .word _0209CC18
_02045FCC: .word _0209CC60
#ifdef JAPAN
_0204633C: .word 0x00002FC4
#endif
arm_func_end sub_02045A5C
arm_func_start sub_02045FD0
sub_02045FD0: ; 0x02045FD0
stmdb sp!, {r3, lr}
ldr r2, _02046024 ; =_020AFED4
ldr r1, [r2]
cmp r1, #0
moveq r1, #0
streqh r1, [r0, #4]
ldmeqia sp!, {r3, pc}
add r1, r1, #0x300
ldrsh r1, [r1, #0x88]
strh r1, [r0, #4]
ldr r1, [r2]
ldr r1, [r1, #0x38c]
strh r1, [r0, #2]
bl sub_020440B8
ldr r0, _02046024 ; =_020AFED4
ldr r0, [r0]
bl MemFree
ldr r0, _02046024 ; =_020AFED4
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_02046024: .word _020AFED4
arm_func_end sub_02045FD0
arm_func_start sub_02046028
sub_02046028: ; 0x02046028
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r0, _020465D8 ; =_020AFED4
ldr r2, [r0]
ldr r1, [r2, #0x18]
cmp r1, #3
addls pc, pc, r1, lsl #2
b _020465CC
_02046048: ; jump table
b _02046058 ; case 0
b _02046064 ; case 1
b _02046590 ; case 2
b _020465C4 ; case 3
_02046058:
mov r0, #1
str r0, [r2, #0x18]
b _020465CC
_02046064:
ldr r1, [r2, #4]
cmp r1, #0x12
addls pc, pc, r1, lsl #2
b _0204650C
_02046074: ; jump table
b _0204650C ; case 0
b _0204650C ; case 1
b _020460C0 ; case 2
b _020464B4 ; case 3
b _020464BC ; case 4
b _020464C4 ; case 5
b _0204650C ; case 6
b _02046168 ; case 7
b _0204650C ; case 8
b _0204650C ; case 9
b _020461BC ; case 10
b _020461BC ; case 11
b _02046334 ; case 12
b _02046364 ; case 13
b _020463B4 ; case 14
b _02046478 ; case 15
b _0204650C ; case 16
b _02046114 ; case 17
b _020464CC ; case 18
_020460C0:
ldrsb r0, [r2, #0x16]
bl GetSimpleMenuResult__0202B870
cmp r0, #1
ldrne r1, _020465D8 ; =_020AFED4
ldrne r1, [r1]
strne r0, [r1, #0x10]
cmp r0, #1
beq _02046104
cmp r0, #2
beq _020460F4
cmp r0, #3
beq _02046104
b _0204653C
_020460F4:
bl sub_020465DC
mov r0, #0x13
bl sub_020454E0
b _0204653C
_02046104:
bl sub_020465DC
mov r0, #6
bl sub_020454E0
b _0204653C
_02046114:
ldrsb r0, [r2, #0x16]
bl GetSimpleMenuResult__0202B870
cmp r0, #1
ldrne r1, _020465D8 ; =_020AFED4
ldrne r1, [r1]
strne r0, [r1, #0x10]
cmp r0, #1
beq _02046158
cmp r0, #2
beq _02046148
cmp r0, #3
beq _02046158
b _0204653C
_02046148:
bl sub_020465DC
mov r0, #8
bl sub_020454E0
b _0204653C
_02046158:
bl sub_020465DC
mov r0, #0x13
bl sub_020454E0
b _0204653C
_02046168:
ldrsb r0, [r2, #0x16]
bl GetSimpleMenuResult__0202B870
cmp r0, #1
ldrne r1, _020465D8 ; =_020AFED4
ldrne r1, [r1]
strne r0, [r1, #0x10]
cmp r0, #1
beq _020461AC
cmp r0, #2
beq _0204619C
cmp r0, #3
beq _020461AC
b _0204653C
_0204619C:
bl sub_020465DC
mov r0, #9
bl sub_020454E0
b _0204653C
_020461AC:
bl sub_020465DC
mov r0, #0
bl sub_020454E0
b _0204653C
_020461BC:
bl sub_02043468
mov r4, r0
bl sub_02043400
cmp r0, #0
bne _02046234
mvn r0, #0
cmp r4, r0
bne _02046214
bl sub_0204317C
ldr r0, _020465D8 ; =_020AFED4
mvn r2, #1
ldr r1, [r0]
mov r3, #2
strb r2, [r1, #0x15]
ldr r1, [r0]
mov r2, #1
str r3, [r1, #0xc]
ldr r1, [r0]
mov r0, #0xc
str r2, [r1, #8]
bl sub_020454E0
b _0204653C
_02046214:
ldr r1, _020465D8 ; =_020AFED4
mov r0, r4
ldr r1, [r1]
str r4, [r1]
bl sub_0204323C
mov r0, #0xe
bl sub_020454E0
b _0204653C
_02046234:
bl sub_02043434
cmp r0, #0
beq _0204653C
add r1, sp, #0
mov r0, #0
bl GetPressedButtons
ldrh r0, [sp]
tst r0, #8
beq _020462F4
mov r0, #0
bl PlaySeVolumeWrapper
ldr r1, _020465D8 ; =_020AFED4
mov r0, r4
ldr r1, [r1]
str r4, [r1]
bl sub_0204323C
ldr r0, _020465D8 ; =_020AFED4
ldr r0, [r0]
ldr r0, [r0]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02010044
ldr r2, _020465D8 ; =_020AFED4
ldr r1, [r2]
add r1, r1, #0x300
strh r0, [r1, #0x88]
ldr r0, [r2]
ldr r0, [r0]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02010060
ldr r1, _020465D8 ; =_020AFED4
ldr r1, [r1]
str r0, [r1, #0x38c]
bl sub_020465DC
bl sub_0204317C
ldr r0, _020465D8 ; =_020AFED4
mvn r2, #1
ldr r1, [r0]
mov r3, #2
strb r2, [r1, #0x15]
ldr r1, [r0]
mov r2, #0xf
str r3, [r1, #0xc]
ldr r1, [r0]
mov r0, #0xc
str r2, [r1, #8]
bl sub_020454E0
_020462F4:
bl CountNbOfItemsInStorage
mov r4, r0
bl sub_0200FD48
cmp r4, r0
bge _0204653C
bl sub_02043398
ldr r0, _020465D8 ; =_020AFED4
mov r3, #0xa
ldr r1, [r0]
mov r2, #5
str r3, [r1, #0xc]
ldr r1, [r0]
mov r0, #0xd
str r2, [r1, #8]
bl sub_020454E0
b _0204653C
_02046334:
mvn r1, #1
strb r1, [r2, #0x15]
ldr r3, [r0]
ldr r2, [r3, #0xc]
sub r1, r2, #1
str r1, [r3, #0xc]
cmp r2, #0
bne _0204653C
ldr r0, [r0]
ldr r0, [r0, #8]
bl sub_020454E0
b _0204653C
_02046364:
ldr r1, [r2, #0xc]
sub r1, r1, #1
str r1, [r2, #0xc]
ldr r0, [r0]
ldr r0, [r0, #0xc]
cmp r0, #1
bgt _02046394
bl sub_0204317C
ldr r0, _020465D8 ; =_020AFED4
mvn r1, #1
ldr r0, [r0]
strb r1, [r0, #0x15]
_02046394:
ldr r0, _020465D8 ; =_020AFED4
ldr r1, [r0]
ldr r0, [r1, #0xc]
cmp r0, #0
bgt _0204653C
ldr r0, [r1, #8]
bl sub_020454E0
b _0204653C
_020463B4:
ldrsb r0, [r2, #0x16]
bl GetSimpleMenuResult__0202B870
cmp r0, #6
addls pc, pc, r0, lsl #2
b _0204653C
_020463C8: ; jump table
b _0204653C ; case 0
b _0204645C ; case 1
b _0204653C ; case 2
b _0204653C ; case 3
b _020463E4 ; case 4
b _02046420 ; case 5
b _0204645C ; case 6
_020463E4:
bl sub_020465DC
bl sub_0204317C
ldr r0, _020465D8 ; =_020AFED4
mvn r2, #1
ldr r1, [r0]
mov r3, #2
strb r2, [r1, #0x15]
ldr r1, [r0]
mov r2, #0x10
str r3, [r1, #0xc]
ldr r1, [r0]
mov r0, #0xc
str r2, [r1, #8]
bl sub_020454E0
b _0204653C
_02046420:
bl sub_020465DC
bl sub_0204317C
ldr r0, _020465D8 ; =_020AFED4
mvn r2, #1
ldr r1, [r0]
mov r3, #2
strb r2, [r1, #0x15]
ldr r1, [r0]
mov r2, #0xf
str r3, [r1, #0xc]
ldr r1, [r0]
mov r0, #0xc
str r2, [r1, #8]
bl sub_020454E0
b _0204653C
_0204645C:
bl sub_020465DC
bl sub_020433C0
ldr r0, _020465D8 ; =_020AFED4
mov r1, #0xa
ldr r0, [r0]
str r1, [r0, #4]
b _0204653C
_02046478:
ldrsb r0, [r2, #0x17]
bl IsScrollBoxActive
cmp r0, #0
bne _0204653C
ldr r0, _020465D8 ; =_020AFED4
ldr r0, [r0]
ldrsb r0, [r0, #0x17]
bl CloseScrollBox
ldr r0, _020465D8 ; =_020AFED4
mvn r2, #1
ldr r1, [r0]
mov r0, #0xb
strb r2, [r1, #0x17]
bl sub_020454E0
b _0204653C
_020464B4:
mov r2, #2
b _02046540
_020464BC:
mov r2, #4
b _02046540
_020464C4:
mov r2, #3
b _02046540
_020464CC:
ldrsb r0, [r2, #0x14]
bl IsDialogueBoxActive
cmp r0, #0
bne _0204653C
ldr r0, _020465D8 ; =_020AFED4
ldr r0, [r0]
ldrsb r0, [r0, #0x14]
bl ShowDialogueBox
ldr r0, _020465D8 ; =_020AFED4
mov r2, #0x14
ldr r1, [r0]
str r2, [r1, #4]
ldr r0, [r0]
ldrsb r0, [r0, #0x14]
bl sub_0202F2C4
b _0204653C
_0204650C:
ldrsb r0, [r2, #0x14]
bl IsDialogueBoxActive
cmp r0, #0
bne _0204653C
ldr r0, _020465D8 ; =_020AFED4
ldr r0, [r0]
ldrsb r0, [r0, #0x14]
bl ShowDialogueBox
ldr r0, _020465D8 ; =_020AFED4
ldr r0, [r0]
ldr r0, [r0, #8]
bl sub_020454E0
_0204653C:
mov r2, #1
_02046540:
ldr r0, _020465D8 ; =_020AFED4
ldr r1, [r0]
str r2, [r1, #0x6c]
ldr r2, [r0]
ldr r1, [r2, #0x6c]
cmp r1, #1
beq _020465CC
mov r1, #2
str r1, [r2, #0x18]
ldr r0, [r0]
sub r1, r1, #4
ldrsb r0, [r0, #0x14]
cmp r0, r1
beq _020465CC
bl sub_0202836C
ldr r0, _020465D8 ; =_020AFED4
ldr r0, [r0]
ldrsb r0, [r0, #0x14]
bl sub_0202F2C4
b _020465CC
_02046590:
mov r1, #3
str r1, [r2, #0x18]
ldr r0, [r0]
sub r1, r1, #5
ldrsb r0, [r0, #0x14]
cmp r0, r1
beq _020465CC
bl CloseDialogueBox
ldr r0, _020465D8 ; =_020AFED4
mvn r1, #1
ldr r0, [r0]
strb r1, [r0, #0x14]
b _020465CC
_020465C4:
ldr r0, [r2, #0x6c]
b _020465D0
_020465CC:
mov r0, #1
_020465D0:
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
_020465D8: .word _020AFED4
arm_func_end sub_02046028
arm_func_start sub_020465DC
sub_020465DC: ; 0x020465DC
stmdb sp!, {r3, lr}
ldr r0, _02046620 ; =_020AFED4
mvn r1, #1
ldr r0, [r0]
ldrsb r0, [r0, #0x16]
cmp r0, r1
ldmeqia sp!, {r3, pc}
bl sub_0202836C
ldr r0, _02046620 ; =_020AFED4
ldr r0, [r0]
ldrsb r0, [r0, #0x16]
bl CloseSimpleMenu
ldr r0, _02046620 ; =_020AFED4
mvn r1, #1
ldr r0, [r0]
strb r1, [r0, #0x16]
ldmia sp!, {r3, pc}
.align 2, 0
_02046620: .word _020AFED4
arm_func_end sub_020465DC
arm_func_start sub_02046624
sub_02046624: ; 0x02046624
stmdb sp!, {r3, lr}
ldr r1, _02046658 ; =_020AFED4
mvn r0, #1
ldr r1, [r1]
ldrsb r1, [r1, #0x14]
cmp r1, r0
ldmneia sp!, {r3, pc}
mov r0, #0
bl CreateDialogueBox
ldr r1, _02046658 ; =_020AFED4
ldr r1, [r1]
strb r0, [r1, #0x14]
ldmia sp!, {r3, pc}
.align 2, 0
_02046658: .word _020AFED4
arm_func_end sub_02046624
arm_func_start sub_0204665C
sub_0204665C: ; 0x0204665C
stmdb sp!, {r3, lr}
ldr r0, _02046694 ; =_020AFED8
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0]
bl CloseAdvancedTextBox
ldr r0, _02046694 ; =_020AFED8
ldr r0, [r0]
bl MemFree
ldr r0, _02046694 ; =_020AFED8
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_02046694: .word _020AFED8
arm_func_end sub_0204665C
arm_func_start sub_02046698
sub_02046698: ; 0x02046698
stmdb sp!, {r4, lr}
sub sp, sp, #0xa0
mov r4, r0
mov r0, #0xec
mov r1, #0
bl MemAlloc
ldr r2, _0204672C ; =_020AFED8
mov r1, #0xec
str r0, [r2]
bl MemZero
ldr r0, _0204672C ; =_020AFED8
mov ip, #0xe
ldr r0, [r0]
add lr, r0, #4
_020466D0:
ldmia r4!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _020466D0
ldmia r4, {r0, r1}
stmia lr, {r0, r1}
ldr r1, _02046730 ; =0x00000A43
mov r0, #0x10
strh r1, [sp, #0x10]
str r0, [sp, #0x14]
mov ip, #0
str ip, [sp]
ldr r0, _02046734 ; =_0209CC80
ldr r1, _02046738 ; =0x00001815
ldr r3, _0204673C ; =sub_02046798
add r2, sp, #8
str ip, [sp, #4]
bl CreateAdvancedTextBox
ldr r1, _0204672C ; =_020AFED8
ldr r1, [r1]
strb r0, [r1]
add sp, sp, #0xa0
ldmia sp!, {r4, pc}
.align 2, 0
_0204672C: .word _020AFED8
#ifdef JAPAN
_02046730: .word 0x00000B8A
#else
_02046730: .word 0x00000A43
#endif
_02046734: .word _0209CC80
_02046738: .word 0x00001815
_0204673C: .word sub_02046798
arm_func_end sub_02046698
arm_func_start sub_02046740
sub_02046740: ; 0x02046740
stmdb sp!, {r3, lr}
ldr r1, _02046774 ; =_020AFED8
ldr r0, _02046778 ; =0x00000279
ldr r1, [r1]
ldrsh r1, [r1, #0x5e]
cmp r1, r0
blt _02046768
mov r0, #0x14
bl PlayBgmByIdVeneer
ldmia sp!, {r3, pc}
_02046768:
mov r0, #0x13
bl PlayBgmByIdVeneer
ldmia sp!, {r3, pc}
.align 2, 0
_02046774: .word _020AFED8
_02046778: .word 0x00000279
arm_func_end sub_02046740
arm_func_start sub_0204677C
sub_0204677C: ; 0x0204677C
ldr r0, _02046790 ; =_020AFED8
ldr ip, _02046794 ; =IsAdvancedTextBoxActive
ldr r0, [r0]
ldrsb r0, [r0]
bx ip
.align 2, 0
_02046790: .word _020AFED8
_02046794: .word IsAdvancedTextBoxActive
arm_func_end sub_0204677C
arm_func_start sub_02046798
sub_02046798: ; 0x02046798
ldr r1, _020467AC ; =_020AFED8
ldr ip, _020467B0 ; =sub_0200C5DC
ldr r1, [r1]
add r1, r1, #4
bx ip
.align 2, 0
_020467AC: .word _020AFED8
_020467B0: .word sub_0200C5DC
arm_func_end sub_02046798
arm_func_start sub_020467B4
sub_020467B4: ; 0x020467B4
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0x24
mov r4, r0
bl sub_0204AE60
cmp r0, #0
moveq r0, #0
beq _020467E8
add r0, sp, #0
bl GetReleasedStylus
add r0, sp, #0
mov r2, r4
mov r1, #2
bl sub_02006C8C
_020467E8:
add sp, sp, #0x24
ldmia sp!, {r3, r4, pc}
arm_func_end sub_020467B4
arm_func_start sub_020467F0
sub_020467F0: ; 0x020467F0
ldr ip, _020467FC ; =sub_020467B4
ldr r0, _02046800 ; =_0209CC90
bx ip
.align 2, 0
_020467FC: .word sub_020467B4
_02046800: .word _0209CC90
arm_func_end sub_020467F0
arm_func_start sub_02046804
sub_02046804: ; 0x02046804
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, _02046824 ; =_0209CCA0
bl InitMenuWithWindowExtraInfo
cmp r0, #0
ldrne r0, _02046828 ; =_022AAE64
strneh r4, [r0]
ldmia sp!, {r4, pc}
.align 2, 0
_02046824: .word _0209CCA0
_02046828: .word _022AAE64
arm_func_end sub_02046804
arm_func_start sub_0204682C
sub_0204682C: ; 0x0204682C
stmdb sp!, {r3, lr}
mov r0, #0xa8
mov r1, #8
bl MemAlloc
ldr r1, _02046890 ; =_020AFEDC
str r0, [r1]
add r0, r0, #0x10
bl CopyMenuControlWindowExtraInfo
ldr r2, _02046890 ; =_020AFEDC
ldr r1, _02046894 ; =_022AAE64
ldr r3, [r2]
str r0, [r3, #0xc]
ldrh r3, [r1]
ldr r1, [r2]
mov r0, #0
strh r3, [r1, #8]
bl CreateDialogueBox
ldr r1, _02046890 ; =_020AFEDC
mov r2, #0
ldr r3, [r1]
strb r0, [r3]
ldr r1, [r1]
mov r0, #1
str r2, [r1, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_02046890: .word _020AFEDC
_02046894: .word _022AAE64
arm_func_end sub_0204682C
arm_func_start sub_02046898
sub_02046898: ; 0x02046898
stmdb sp!, {r3, lr}
ldr r0, _020468D0 ; =_020AFEDC
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0]
bl CloseDialogueBox
ldr r0, _020468D0 ; =_020AFEDC
ldr r0, [r0]
bl MemFree
ldr r0, _020468D0 ; =_020AFEDC
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_020468D0: .word _020AFEDC
arm_func_end sub_02046898
arm_func_start sub_020468D4
sub_020468D4: ; 0x020468D4
stmdb sp!, {r3, lr}
ldr r0, _020469B4 ; =_020AFEDC
ldr r2, [r0]
ldr r1, [r2, #4]
cmp r1, #3
addls pc, pc, r1, lsl #2
b _020469AC
_020468F0: ; jump table
b _02046900 ; case 0
b _02046928 ; case 1
b _0204695C ; case 2
b _0204697C ; case 3
_02046900:
ldrsb r0, [r2]
ldrh r2, [r2, #8]
ldr r1, _020469B8 ; =0x00000618
mov r3, #0
bl ShowStringIdInDialogueBox
ldr r0, _020469B4 ; =_020AFEDC
mov r1, #1
ldr r0, [r0]
str r1, [r0, #4]
b _020469AC
_02046928:
ldrsb r0, [r2]
bl IsDialogueBoxActive
cmp r0, #0
bne _020469AC
ldr r0, _020469B4 ; =_020AFEDC
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_0202F334
ldr r0, _020469B4 ; =_020AFEDC
mov r1, #2
ldr r0, [r0]
str r1, [r0, #4]
b _020469AC
_0204695C:
ldrsb r0, [r2]
bl IsDialogueBoxActive
cmp r0, #0
ldreq r0, _020469B4 ; =_020AFEDC
moveq r1, #3
ldreq r0, [r0]
streq r1, [r0, #4]
b _020469AC
_0204697C:
mov r1, #4
str r1, [r2, #4]
ldr r1, [r0]
ldr r0, [r1, #0xc]
tst r0, #0x100
beq _020469A4
ldr r0, [r1, #0x98]
ldr r2, [r1, #0x94]
mov r1, #0
blx r2
_020469A4:
mov r0, #4
ldmia sp!, {r3, pc}
_020469AC:
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_020469B4: .word _020AFEDC
_020469B8: .word 0x00000618
arm_func_end sub_020468D4
arm_func_start sub_020469BC
sub_020469BC: ; 0x020469BC
stmdb sp!, {r3, lr}
mov r0, #0x2c
mov r1, #8
bl MemAlloc
ldr r2, _020469E4 ; =_020AFEE0
mov r1, #0x2c
str r0, [r2]
bl MemZero
bl sub_020471AC
ldmia sp!, {r3, pc}
.align 2, 0
_020469E4: .word _020AFEE0
arm_func_end sub_020469BC
arm_func_start sub_020469E8
sub_020469E8: ; 0x020469E8
stmdb sp!, {r3, lr}
ldr r0, _02046A1C ; =_020AFEE0
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl sub_020471E8
ldr r0, _02046A1C ; =_020AFEE0
ldr r0, [r0]
bl MemFree
ldr r0, _02046A1C ; =_020AFEE0
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_02046A1C: .word _020AFEE0
arm_func_end sub_020469E8
arm_func_start sub_02046A20
sub_02046A20: ; 0x02046A20
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
ldr r4, _02046A98 ; =_020AFEE0
mov r6, r1
ldr r4, [r4]
mov r7, r0
mov r0, r4
mov r1, #0x2c
mov r5, r2
mov r8, r3
bl MemZero
ldr r0, [sp, #0x28]
str r8, [sp]
ldrh r1, [sp, #0x2c]
str r0, [sp, #4]
ldr r0, [sp, #0x30]
str r1, [sp, #8]
mov r1, r7
mov r2, r6
mov r3, r5
str r0, [sp, #0xc]
add r0, r4, #0x10
bl sub_02046D50
mov r0, #1
str r0, [r4, #0x14]
str r5, [r4, #0x24]
mov r0, #0
str r0, [r4, #0x28]
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02046A98: .word _020AFEE0
arm_func_end sub_02046A20
arm_func_start sub_02046A9C
sub_02046A9C: ; 0x02046A9C
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0xa4
mov r7, r0
mov r6, r1
add r0, sp, #0xc
mov r1, #0x98
mov r5, r2
mov r4, r3
bl MemZero
ldrsb r0, [sp, #0xb8]
add r3, sp, #0xc
mov r1, r6
cmp r0, #0
addge r0, r5, r0, lsl #3
ldrge r0, [r0, #4]
mov ip, #0
movlt r0, #0
str r0, [sp, #0xc]
str r5, [sp]
str r4, [sp, #4]
mov r0, r7
mov r2, #0x33
str ip, [sp, #8]
bl sub_02046A20
add sp, sp, #0xa4
ldmia sp!, {r4, r5, r6, r7, pc}
arm_func_end sub_02046A9C
arm_func_start sub_02046B04
sub_02046B04: ; 0x02046B04
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _02046B9C ; =_020AFEE0
ldr r5, [r0]
ldr r0, [r5, #0x14]
cmp r0, #0
beq _02046B94
cmp r0, #1
beq _02046B30
cmp r0, #9
beq _02046B64
b _02046B94
_02046B30:
ldr r0, [r5, #0x10]
bl sub_02046F40
ldr r0, [r5, #0x10]
bl sub_02047030
mov r4, r0
ldr r0, [r5, #0x10]
bl sub_02047038
mvn r1, #0
str r0, [r5, #0x28]
cmp r4, r1
movne r0, #9
strne r0, [r5, #0x14]
b _02046B94
_02046B64:
ldr r0, [r5, #0x10]
bl sub_02047030
str r0, [r5, #0x20]
ldr r0, [r5, #0x24]
tst r0, #0x400000
bne _02046B8C
add r0, r5, #0x10
bl sub_02047040
mov r0, #0
str r0, [r5, #0x14]
_02046B8C:
ldr r0, [r5, #0x20]
ldmia sp!, {r3, r4, r5, pc}
_02046B94:
mvn r0, #0
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02046B9C: .word _020AFEE0
arm_func_end sub_02046B04
arm_func_start sub_02046BA0
sub_02046BA0: ; 0x02046BA0
ldr r0, _02046BB0 ; =_020AFEE0
ldr r0, [r0]
ldr r0, [r0, #0x28]
bx lr
.align 2, 0
_02046BB0: .word _020AFEE0
arm_func_end sub_02046BA0
arm_func_start sub_02046BB4
sub_02046BB4: ; 0x02046BB4
stmdb sp!, {r4, lr}
ldr r0, _02046BE4 ; =_020AFEE0
ldr r4, [r0]
add r0, r4, #0x10
bl sub_02047040
mov r1, #0
ldr r0, _02046BE4 ; =_020AFEE0
str r1, [r4, #0x14]
ldr r0, [r0]
sub r1, r1, #2
str r1, [r0, #0x20]
ldmia sp!, {r4, pc}
.align 2, 0
_02046BE4: .word _020AFEE0
arm_func_end sub_02046BB4
arm_func_start sub_02046BE8
sub_02046BE8: ; 0x02046BE8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r3, _02046C2C ; =_020AFEE0
mov r6, r1
ldr r4, [r3]
mov r7, r0
mov r5, r2
mov r0, r4
mov r1, #0x2c
bl MemZero
mov r0, r7
mov r1, r6
mov r2, r5
bl sub_020472A4
mov r0, #1
str r0, [r4, #0x14]
strh r7, [r4, #0x18]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02046C2C: .word _020AFEE0
arm_func_end sub_02046BE8
arm_func_start sub_02046C30
sub_02046C30: ; 0x02046C30
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r3, _02046C74 ; =_020AFEE0
mov r6, r1
ldr r4, [r3]
mov r7, r0
mov r5, r2
mov r0, r4
mov r1, #0x2c
bl MemZero
mov r0, r7
mov r1, r6
mov r2, r5
bl sub_02047358
mov r0, #1
str r0, [r4, #0x14]
strh r7, [r4, #0x18]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02046C74: .word _020AFEE0
arm_func_end sub_02046C30
arm_func_start sub_02046C78
sub_02046C78: ; 0x02046C78
stmdb sp!, {r4, lr}
ldr r0, _02046D1C ; =_020AFEE0
ldr r4, [r0]
ldr r0, [r4, #0x14]
cmp r0, #9
bgt _02046CB4
bge _02046CF0
cmp r0, #1
bgt _02046D14
cmp r0, #0
blt _02046D14
beq _02046D14
cmp r0, #1
beq _02046CC0
b _02046D14
_02046CB4:
cmp r0, #0xa
beq _02046D00
b _02046D14
_02046CC0:
bl sub_020473FC
cmp r0, #2
bne _02046D14
ldrh r0, [r4, #0x18]
tst r0, #0x400
movne r0, #0xa
strne r0, [r4, #0x14]
movne r0, #0x3c
strne r0, [r4, #0x1c]
moveq r0, #9
streq r0, [r4, #0x14]
b _02046D14
_02046CF0:
mov r0, #0
str r0, [r4, #0x14]
mov r0, #1
ldmia sp!, {r4, pc}
_02046D00:
ldr r0, [r4, #0x1c]
subs r0, r0, #1
str r0, [r4, #0x1c]
movmi r0, #9
strmi r0, [r4, #0x14]
_02046D14:
mov r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
_02046D1C: .word _020AFEE0
arm_func_end sub_02046C78
arm_func_start sub_02046D20
sub_02046D20: ; 0x02046D20
ldr ip, _02046D28 ; =sub_020473A4
bx ip
.align 2, 0
_02046D28: .word sub_020473A4
arm_func_end sub_02046D20
arm_func_start sub_02046D2C
sub_02046D2C: ; 0x02046D2C
ldr r1, _02046D40 ; =_020AFEE0
ldr r2, [r1]
str r0, [r1]
mov r0, r2
bx lr
.align 2, 0
_02046D40: .word _020AFEE0
arm_func_end sub_02046D2C
arm_func_start sub_02046D44
sub_02046D44: ; 0x02046D44
ldr ip, _02046D4C ; =sub_020474B8
bx ip
.align 2, 0
_02046D4C: .word sub_020474B8
arm_func_end sub_02046D44
arm_func_start sub_02046D50
sub_02046D50: ; 0x02046D50
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x410
mov r4, r0
mov r5, r1
mov r0, #0xcc
mov r1, #8
mov sb, r2
mov r8, r3
ldr r7, [sp, #0x434]
bl MemAlloc
mov r1, #0xcc
mov r6, r0
str r0, [r4]
bl MemZero
cmp r5, #0
bne _02046E48
mov r5, #0
sub r0, r5, #1
str r5, [sp]
strb r0, [sp, #9]
cmp r7, #0
beq _02046E54
mov r4, r5
add sl, sp, #0x10
b _02046DE0
_02046DB4:
mov r0, r4, lsl #3
ldrh r1, [r7, r0]
cmp r1, #0
beq _02046DE8
mov r0, sl
bl GetStringFromFileVeneer
mov r0, sl
bl sub_020265A8
cmp r0, r5
movgt r5, r0
add r4, r4, #1
_02046DE0:
cmp r4, #0x64
blt _02046DB4
_02046DE8:
mov r0, #0xe
mul r1, r4, r0
add r3, r5, #7
mov r0, r3, asr #2
add r2, r1, #7
add r0, r3, r0, lsr #29
mov r0, r0, asr #3
add r3, r0, #2
mov r1, r2, asr #2
add r0, r2, r1, lsr #29
mov r5, r0, asr #3
rsb r4, r3, #0x1e
rsb r2, r5, #0xf
mov r1, #0
strb r4, [sp, #4]
add r0, sp, #0
strb r5, [sp, #7]
add r4, r6, #4
strb r2, [sp, #5]
strb r3, [sp, #6]
str r1, [sp, #0xc]
ldmia r0, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
b _02046E54
_02046E48:
add r4, r6, #4
ldmia r5, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
_02046E54:
add r0, sp, #0x420
ldrh r1, [r0, #0x18]
ldr ip, [sp, #0x430]
ldr r0, [sp, #0x43c]
strh r1, [r6, #0x20]
strh sb, [r6, #0x22]
str r0, [r6, #0x24]
str r7, [r6, #0x1c]
mvn r0, #0
str r0, [r6, #0x14]
str r8, [r6, #0x28]
mov r0, #0
str r0, [r6, #0x18]
cmp ip, #0
streqb r0, [r6, #0xc4]
beq _02046EBC
add r5, r6, #0x2c
mov r4, #9
_02046E9C:
ldmia ip!, {r0, r1, r2, r3}
stmia r5!, {r0, r1, r2, r3}
subs r4, r4, #1
bne _02046E9C
ldmia ip, {r0, r1}
stmia r5, {r0, r1}
mov r0, #1
strb r0, [r6, #0xc4]
_02046EBC:
mvn r0, #1
strb r0, [r6]
ldrh r0, [r6, #0x20]
cmp r0, #0
moveq r0, #0
beq _02046EF8
bl sub_020473FC
cmp r0, #1
bne _02046EE4
bl sub_02047220
_02046EE4:
ldrh r0, [r6, #0x22]
ldrh r1, [r6, #0x20]
ldr r2, [r6, #0x24]
bl sub_02047244
mov r0, #1
_02046EF8:
cmp r0, #0
bne _02046F2C
ldrb r0, [r6, #0xc4]
ldr r1, [r6, #0x28]
ldr r3, [r6, #0x1c]
cmp r0, #0
addne r2, r6, #0x2c
moveq r2, #0
add r0, r6, #4
bl CreateParentMenuFromStringIds
strb r0, [r6]
mov r0, #1
b _02046F30
_02046F2C:
mov r0, #6
_02046F30:
str r0, [r6, #0xc8]
mov r0, #1
add sp, sp, #0x410
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
arm_func_end sub_02046D50
arm_func_start sub_02046F40
sub_02046F40: ; 0x02046F40
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
ldr r0, [r4, #0xc8]
cmp r0, #9
addls pc, pc, r0, lsl #2
ldmia sp!, {r3, r4, r5, pc}
_02046F58: ; jump table
ldmia sp!, {r3, r4, r5, pc} ; case 0
b _02046FBC ; case 1
ldmia sp!, {r3, r4, r5, pc} ; case 2
ldmia sp!, {r3, r4, r5, pc} ; case 3
ldmia sp!, {r3, r4, r5, pc} ; case 4
ldmia sp!, {r3, r4, r5, pc} ; case 5
b _02046F80 ; case 6
ldmia sp!, {r3, r4, r5, pc} ; case 7
ldmia sp!, {r3, r4, r5, pc} ; case 8
b _02047024 ; case 9
_02046F80:
bl sub_020473FC
cmp r0, #2
ldmneia sp!, {r3, r4, r5, pc}
ldrb r0, [r4, #0xc4]
ldr r1, [r4, #0x28]
ldr r3, [r4, #0x1c]
cmp r0, #0
addne r2, r4, #0x2c
moveq r2, #0
add r0, r4, #4
bl CreateParentMenuFromStringIds
strb r0, [r4]
mov r0, #1
str r0, [r4, #0xc8]
ldmia sp!, {r3, r4, r5, pc}
_02046FBC:
ldrsb r0, [r4]
bl sub_020282F4
mov r5, r0
ldrsb r0, [r4]
bl GetWindowIdSelectedItemOnPage
str r0, [r4, #0x18]
ldrsb r0, [r4]
bl IsParentMenuActive
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
mvn r1, #3
cmp r5, r1
bne _02047008
ldrsb r0, [r4]
bl GetSimpleMenuResult__0202AEA4
str r0, [r4, #0x14]
mov r0, #9
str r0, [r4, #0xc8]
ldmia sp!, {r3, r4, r5, pc}
_02047008:
sub r0, r1, #1
cmp r5, r0
addeq r0, r1, #2
streq r0, [r4, #0x14]
moveq r0, #9
streq r0, [r4, #0xc8]
ldmia sp!, {r3, r4, r5, pc}
_02047024:
mov r0, #0xa
str r0, [r4, #0xc8]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02046F40
arm_func_start sub_02047030
sub_02047030: ; 0x02047030
ldr r0, [r0, #0x14]
bx lr
arm_func_end sub_02047030
arm_func_start sub_02047038
sub_02047038: ; 0x02047038
ldr r0, [r0, #0x18]
bx lr
arm_func_end sub_02047038
arm_func_start sub_02047040
sub_02047040: ; 0x02047040
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r4, [r5]
cmp r4, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldrsb r0, [r4]
mvn r1, #1
cmp r0, r1
beq _02047068
bl CloseParentMenu
_02047068:
mov r0, r4
bl MemFree
mov r0, #0
str r0, [r5]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02047040
arm_func_start sub_0204707C
sub_0204707C: ; 0x0204707C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r0, #0xc
mov r1, #8
mov r5, r2
bl MemAlloc
mov r1, #0xc
mov r4, r0
str r0, [r7]
bl MemZero
mov r0, r6
mov r1, r5
bl CreateTextBox
strb r0, [r4]
mov r0, #3
str r0, [r4, #8]
sub r0, r0, #4
str r0, [r4, #4]
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_0204707C
arm_func_start sub_020470D0
sub_020470D0: ; 0x020470D0
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #8]
cmp r0, #0
beq _020470FC
cmp r0, #3
beq _02047108
cmp r0, #4
moveq r0, #8
streq r0, [r4, #8]
ldmia sp!, {r4, pc}
_020470FC:
mov r0, #3
str r0, [r4, #8]
ldmia sp!, {r4, pc}
_02047108:
ldrsb r0, [r4]
bl sub_020282F4
mvn r2, #3
cmp r0, r2
addeq r0, r2, #1
streq r0, [r4, #4]
moveq r0, #4
streq r0, [r4, #8]
ldmeqia sp!, {r4, pc}
sub r1, r2, #1
cmp r0, r1
addeq r0, r2, #2
streq r0, [r4, #4]
moveq r0, #4
streq r0, [r4, #8]
ldmia sp!, {r4, pc}
arm_func_end sub_020470D0
arm_func_start sub_02047148
sub_02047148: ; 0x02047148
ldr r0, [r0, #4]
bx lr
arm_func_end sub_02047148
arm_func_start sub_02047150
sub_02047150: ; 0x02047150
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r4, [r5]
cmp r4, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldrsb r0, [r4]
bl sub_0202812C
ldrsb r0, [r4]
bl CloseTextBox2
mov r0, r4
bl MemFree
mov r0, #0
str r0, [r5]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02047150
arm_func_start sub_02047188
sub_02047188: ; 0x02047188
stmdb sp!, {r4, lr}
ldr r4, [r0]
cmp r4, #0
ldmeqia sp!, {r4, pc}
ldrsb r0, [r4]
bl sub_02027B1C
ldrsb r0, [r4]
bl sub_0202F9B8
ldmia sp!, {r4, pc}
arm_func_end sub_02047188
arm_func_start sub_020471AC
sub_020471AC: ; 0x020471AC
stmdb sp!, {r3, lr}
mov r0, #0x70
mov r1, #8
bl MemAlloc
ldr r2, _020471E4 ; =_020AFEE4
mov r1, #0x70
str r0, [r2]
bl MemZero
ldr r0, _020471E4 ; =_020AFEE4
mvn r2, #1
ldr r1, [r0]
mov r0, #1
strb r2, [r1]
ldmia sp!, {r3, pc}
.align 2, 0
_020471E4: .word _020AFEE4
arm_func_end sub_020471AC
arm_func_start sub_020471E8
sub_020471E8: ; 0x020471E8
stmdb sp!, {r3, lr}
ldr r0, _0204721C ; =_020AFEE4
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl sub_020473A4
ldr r0, _0204721C ; =_020AFEE4
ldr r0, [r0]
bl MemFree
ldr r0, _0204721C ; =_020AFEE4
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0204721C: .word _020AFEE4
arm_func_end sub_020471E8
arm_func_start sub_02047220
sub_02047220: ; 0x02047220
stmdb sp!, {r3, lr}
mov r0, #0
bl CreateDialogueBox
ldr r1, _02047240 ; =_020AFEE4
ldr r1, [r1]
strb r0, [r1]
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_02047240: .word _020AFEE4
arm_func_end sub_02047220
arm_func_start sub_02047244
sub_02047244: ; 0x02047244
stmdb sp!, {r4, lr}
ldr r3, _020472A0 ; =_020AFEE4
mov r4, r2
ldr r2, [r3]
strh r1, [r2, #0x14]
ldr r1, [r3]
strh r0, [r1, #0x68]
ldr r0, [r3]
ldrsb r0, [r0]
bl sub_020288DC
ldr r0, _020472A0 ; =_020AFEE4
ldr r0, [r0]
ldrsb r0, [r0]
bl ShowDialogueBox
ldr r0, _020472A0 ; =_020AFEE4
mov r3, r4
ldr r2, [r0]
ldrsb r0, [r2]
ldrh r1, [r2, #0x68]
ldrh r2, [r2, #0x14]
bl ShowStringIdInDialogueBox
mov r0, #1
ldmia sp!, {r4, pc}
.align 2, 0
_020472A0: .word _020AFEE4
arm_func_end sub_02047244
arm_func_start sub_020472A4
sub_020472A4: ; 0x020472A4
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl sub_020473FC
cmp r0, #1
bne _020472D4
mov r0, #0
bl CreateDialogueBox
ldr r1, _020472EC ; =_020AFEE4
ldr r1, [r1]
strb r0, [r1]
_020472D4:
mov r0, r6
mov r1, r5
mov r2, r4
bl sub_02047244
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020472EC: .word _020AFEE4
arm_func_end sub_020472A4
arm_func_start sub_020472F0
sub_020472F0: ; 0x020472F0
stmdb sp!, {r3, r4, r5, lr}
ldr r3, _02047354 ; =_020AFEE4
mov ip, #0
ldr r4, [r3]
mov r5, r1
strh ip, [r4, #0x14]
ldr r1, [r3]
mov r4, r2
strh r0, [r1, #0x68]
ldr r0, [r3]
ldrsb r0, [r0]
bl sub_020288DC
ldr r0, _02047354 ; =_020AFEE4
ldr r0, [r0]
ldrsb r0, [r0]
bl ShowDialogueBox
ldr r0, _02047354 ; =_020AFEE4
mov r2, r5
ldr r1, [r0]
mov r3, r4
ldrsb r0, [r1]
ldrh r1, [r1, #0x68]
bl ShowStringInDialogueBox
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02047354: .word _020AFEE4
arm_func_end sub_020472F0
arm_func_start sub_02047358
sub_02047358: ; 0x02047358
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl sub_020473FC
cmp r0, #1
bne _02047388
mov r0, #0
bl CreateDialogueBox
ldr r1, _020473A0 ; =_020AFEE4
ldr r1, [r1]
strb r0, [r1]
_02047388:
mov r0, r6
mov r1, r5
mov r2, r4
bl sub_020472F0
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020473A0: .word _020AFEE4
arm_func_end sub_02047358
arm_func_start sub_020473A4
sub_020473A4: ; 0x020473A4
stmdb sp!, {r3, lr}
ldr r0, _020473F8 ; =_020AFEE4
mvn r1, #1
ldr r0, [r0]
ldrsb r0, [r0]
cmp r0, r1
ldmeqia sp!, {r3, pc}
bl sub_0202836C
ldr r0, _020473F8 ; =_020AFEE4
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_0202F2C4
ldr r0, _020473F8 ; =_020AFEE4
ldr r0, [r0]
ldrsb r0, [r0]
bl CloseDialogueBox
ldr r0, _020473F8 ; =_020AFEE4
mvn r1, #1
ldr r0, [r0]
strb r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_020473F8: .word _020AFEE4
arm_func_end sub_020473A4
arm_func_start sub_020473FC
sub_020473FC: ; 0x020473FC
stmdb sp!, {r4, lr}
ldr r0, _0204749C ; =_020AFEE4
mov r4, #0
ldr r0, [r0]
sub r1, r4, #2
ldrsb r0, [r0]
cmp r0, r1
moveq r0, #1
ldmeqia sp!, {r4, pc}
bl IsDialogueBoxActive
cmp r0, #0
movne r0, #4
bne _02047440
ldr r0, _0204749C ; =_020AFEE4
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_0202F16C
_02047440:
cmp r0, #0xa
addls pc, pc, r0, lsl #2
b _02047494
_0204744C: ; jump table
b _02047494 ; case 0
b _02047490 ; case 1
b _02047494 ; case 2
b _02047494 ; case 3
b _02047488 ; case 4
b _02047494 ; case 5
b _02047494 ; case 6
b _02047494 ; case 7
b _02047478 ; case 8
b _02047478 ; case 9
b _02047480 ; case 10
_02047478:
mov r4, #4
b _02047494
_02047480:
mov r4, #5
b _02047494
_02047488:
mov r4, #3
b _02047494
_02047490:
mov r4, #2
_02047494:
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_0204749C: .word _020AFEE4
arm_func_end sub_020473FC
arm_func_start sub_020474A0
sub_020474A0: ; 0x020474A0
ldr r1, _020474B4 ; =_020AFEE4
ldr r2, [r1]
str r0, [r1]
mov r0, r2
bx lr
.align 2, 0
_020474B4: .word _020AFEE4
arm_func_end sub_020474A0
arm_func_start sub_020474B8
sub_020474B8: ; 0x020474B8
ldr r2, _020474D8 ; =_020AFEE4
mov r3, r0
ldr r0, [r2]
ldr ip, _020474DC ; =ReadStringFromDialogueBox
mov r2, r1
ldrsb r0, [r0]
mov r1, r3
bx ip
.align 2, 0
_020474D8: .word _020AFEE4
_020474DC: .word ReadStringFromDialogueBox
arm_func_end sub_020474B8
arm_func_start sub_020474E0
sub_020474E0: ; 0x020474E0
stmdb sp!, {r3, lr}
ldr r0, _02047574 ; =_022AAE68
ldr r2, [r0]
cmp r2, #0
beq _0204756C
ldr r1, [r2, #0x10]
cmp r1, #2
bgt _02047520
cmp r1, #0
blt _0204756C
beq _02047528
cmp r1, #1
beq _02047534
cmp r1, #2
beq _02047554
b _0204756C
_02047520:
cmp r1, #0xff
b _0204756C
_02047528:
add r0, r1, #1
str r0, [r2, #0x10]
b _0204756C
_02047534:
mov r0, #0
bl sub_02047C40
cmp r0, #0
ldrne r0, _02047574 ; =_022AAE68
movne r1, #2
ldrne r0, [r0]
strne r1, [r0, #0x10]
b _0204756C
_02047554:
mov r1, #1
str r1, [r0, #4]
mov r0, #0xff
str r0, [r2, #0x10]
mov r0, #4
ldmia sp!, {r3, pc}
_0204756C:
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_02047574: .word _022AAE68
arm_func_end sub_020474E0
arm_func_start sub_02047578
sub_02047578: ; 0x02047578
stmdb sp!, {r3, lr}
ldr r0, _020475B0 ; =_022AAE68
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
mov r0, #0
bl sub_02047EF4
ldr r0, _020475B0 ; =_022AAE68
ldr r0, [r0]
bl MemFree
ldr r0, _020475B0 ; =_022AAE68
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_020475B0: .word _022AAE68
arm_func_end sub_02047578
arm_func_start sub_020475B4
sub_020475B4: ; 0x020475B4
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
mov r6, r0
ldr r3, _02047658 ; =_022AAE68
mov ip, #0
ldr r0, _0204765C ; =_0209CCB0
mov r5, r1
mov r4, r2
str ip, [r3, #4]
bl InitMenu
cmp r0, #0
beq _02047650
mov r0, #0x14
mov r1, #8
bl MemAlloc
ldr r2, _02047658 ; =_022AAE68
mov r1, #0x14
str r0, [r2]
bl MemZero
ldr r2, _02047658 ; =_022AAE68
mov r1, #0
str r1, [r2, #4]
ldr r3, [r2]
mov r0, r5
str r6, [r3, #4]
ldr r3, [r2]
strh r1, [r3, #0xa]
ldr r2, [r2]
strh r5, [r2, #0xc]
bl sub_02047760
ldr r0, _02047658 ; =_022AAE68
mov r2, #0
ldr r5, [r0]
mov r1, r4
str r2, [sp]
ldrsh r3, [r5, #0xc]
ldr r0, [r5, #4]
add r2, r5, #0xa
bl sub_02047F38
_02047650:
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02047658: .word _022AAE68
_0204765C: .word _0209CCB0
arm_func_end sub_020475B4
arm_func_start sub_02047660
sub_02047660: ; 0x02047660
ldr r0, _0204766C ; =_022AAE68
ldr r0, [r0, #4]
bx lr
.align 2, 0
_0204766C: .word _022AAE68
arm_func_end sub_02047660
arm_func_start sub_02047670
sub_02047670: ; 0x02047670
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
mov r0, #0x60
mov r1, #8
bl MemAlloc
ldr r2, _020476E8 ; =_020AFEE8
mov r1, #0x60
str r0, [r2]
bl MemZero
ldr r0, _020476E8 ; =_020AFEE8
ldr r0, [r0]
bl InitPreprocessorArgs
ldr r1, _020476E8 ; =_020AFEE8
mov r0, r4
ldr r2, [r1]
mov r3, #0
mov r1, #1
str r3, [r2, #0x4c]
bl sub_02047760
ldr r1, _020476E8 ; =_020AFEE8
mov r3, #0
ldr r2, [r1]
mov r0, #1
strh r3, [r2, #0x58]
ldr r2, [r1]
strh r4, [r2, #0x56]
ldr r1, [r1]
str r5, [r1, #0x50]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020476E8: .word _020AFEE8
arm_func_end sub_02047670
arm_func_start sub_020476EC
sub_020476EC: ; 0x020476EC
stmdb sp!, {r3, lr}
ldr r1, _02047718 ; =_020AFEE8
mov r2, #1
ldr ip, [r1]
mov r1, r0
str r2, [sp]
ldrsh r3, [ip, #0x56]
ldr r0, [ip, #0x50]
add r2, ip, #0x58
bl sub_02047F38
ldmia sp!, {r3, pc}
.align 2, 0
_02047718: .word _020AFEE8
arm_func_end sub_020476EC
arm_func_start sub_0204771C
sub_0204771C: ; 0x0204771C
stmdb sp!, {r3, lr}
ldr r0, _0204775C ; =_020AFEE8
ldr r0, [r0]
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r3, pc}
mov r0, #1
bl sub_02047EF4
ldr r0, _0204775C ; =_020AFEE8
ldr r0, [r0]
bl MemFree
ldr r0, _0204775C ; =_020AFEE8
mov r1, #0
str r1, [r0]
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_0204775C: .word _020AFEE8
arm_func_end sub_0204771C
arm_func_start sub_02047760
sub_02047760: ; 0x02047760
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x18
ldr r2, _02047920 ; =_020AFEEC
mov r5, r1
ldr r1, [r2, r5, lsl #2]
mov r6, r0
cmp r1, #0
movne r0, #0
bne _02047918
ldr r0, _02047924 ; =0x00002020
mov r1, #8
bl MemAlloc
ldr r1, _02047924 ; =0x00002020
mov r4, r0
bl MemZero
cmp r5, #0
bne _02047850
ldr r0, _02047928 ; =_0209CCC0
add lr, sp, #8
ldmia r0, {r0, r1, r2, r3}
stmia lr, {r0, r1, r2, r3}
mov ip, #0
add r2, r4, #0x384
str ip, [sp, #8]
str r4, [sp, #0x14]
strb ip, [sp, #0x10]
add r0, r4, #0x1000
#ifdef JAPAN
mov r1, #0x10
str r1, [r0, #0xf90]
add r0, r4, #0x1f00
mov r1, #0x1540
#else
mov r3, #0x10
str r3, [r0, #0xf90]
ldr r1, _0204792C ; =0x00000A44
add r0, r4, #0x1f00
#endif
strh r1, [r0, #0x8c]
str ip, [sp]
ldr r1, _02047930 ; =0x0040180A
ldr r3, _02047934 ; =sub_02047AB4
mov r0, lr
add r2, r2, #0x1c00
str ip, [sp, #4]
bl CreateAdvancedTextBox
add r1, r4, #0x100
strb r0, [r4, #0x120]
ldrsb r0, [r1, #0x20]
mov r1, #1
bl SetAdvancedTextBoxPartialMenu
add r0, r4, #0x100
ldrsb r0, [r0, #0x20]
mov r1, #1
bl sub_02030AAC
add r0, r4, #0x1f00
mov r1, #0x14
strh r1, [r0, #0x80]
add r0, r4, #0x100
ldrsb r0, [r0, #0x20]
mov r1, #0x20000000
bl sub_02030A90
add r0, r4, #0x100
ldrsb r0, [r0, #0x20]
mov r1, #0x40000000
bl sub_02030A74
b _020478A0
_02047850:
ldr r0, _02047938 ; =_0209CCD0
add ip, sp, #8
ldmia r0, {r0, r1, r2, r3}
stmia ip, {r0, r1, r2, r3}
mov r1, #0
mov r0, #1
add r2, r4, #0x384
strb r0, [sp, #0x10]
str r1, [sp, #8]
str r4, [sp, #0x14]
str r1, [sp]
ldr r3, _02047934 ; =sub_02047AB4
mov r0, ip
add r2, r2, #0x1c00
str r1, [sp, #4]
bl CreateAdvancedTextBox
strb r0, [r4, #0x120]
add r0, r4, #0x1f00
mov r1, #8
strh r1, [r0, #0x80]
_020478A0:
add r0, r4, #0x1000
strb r5, [r0, #0xf7c]
add r0, r4, #0x100
ldrsb r1, [r0, #0x20]
mov r0, r4
bl sub_02025E84
mov ip, #0
str ip, [r4, #0x11c]
add r2, r4, #0x1f00
strh r6, [r2, #0x72]
strb ip, [r4, #0x128]
ldrb r1, [sp, #0xe]
mov r3, #0x3c
add r0, r4, #0x2000
mov r1, r1, lsl #3
strh r1, [r2, #0x78]
strb ip, [r0, #0x1c]
add r0, r4, #0x1000
mov r1, #0x80
str r1, [r0, #0xf6c]
add r0, r4, #0x12c
add r1, r3, #0x1e00
strh r3, [r2, #0x68]
bl MemZero
add r0, r4, #0x1000
mov r2, #0
ldr r1, _02047920 ; =_020AFEEC
strb r2, [r0, #0xf82]
str r4, [r1, r5, lsl #2]
mov r0, #1
_02047918:
add sp, sp, #0x18
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02047920: .word _020AFEEC
_02047924: .word 0x00002020
_02047928: .word _0209CCC0
#ifndef JAPAN
_0204792C: .word 0x00000A44
#endif
_02047930: .word 0x0040180A
_02047934: .word sub_02047AB4
_02047938: .word _0209CCD0
arm_func_end sub_02047760
arm_func_start sub_0204793C
sub_0204793C: ; 0x0204793C
ldr r1, _0204795C ; =_020AFEEC
mov r2, #0
ldr r3, [r1, r0, lsl #2]
mov r1, #1
add r0, r3, #0x1f00
strh r2, [r0, #0x70]
strb r1, [r3, #0x128]
bx lr
.align 2, 0
_0204795C: .word _020AFEEC
arm_func_end sub_0204793C
arm_func_start sub_02047960
sub_02047960: ; 0x02047960
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _02047A0C ; =_020AFEEC
mov r5, r0
ldr r4, [r1, r5, lsl #2]
add r0, r4, #0x1f00
ldrsh r1, [r0, #0x70]
cmp r1, #0
addle r0, r4, #0x2000
movle r1, #1
strleb r1, [r0, #0x1c]
movle r2, #0
ble _020479B0
ldrsh r0, [r0, #0x72]
sub r0, r1, r0
mov r0, r0, lsl #0x10
movs r2, r0, asr #0x10
addmi r0, r4, #0x2000
movmi r1, #1
strmib r1, [r0, #0x1c]
movmi r2, #0
_020479B0:
add r0, r4, #0x1f00
strh r2, [r0, #0x74]
mov r1, #0
strb r1, [r4, #0x128]
strh r2, [r0, #0x7e]
add r0, r4, #0x100
ldrsb r0, [r0, #0x20]
bl SetAdvancedTextBoxField0x1C2
cmp r5, #0
ldmneia sp!, {r3, r4, r5, pc}
add r0, r4, #0x2000
ldrb r0, [r0, #0x1c]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
add r0, r4, #0x100
ldrsb r0, [r0, #0x20]
mov r1, #0x20000000
bl sub_02030A74
add r0, r4, #0x100
ldrsb r0, [r0, #0x20]
mov r1, #0x40000000
bl sub_02030A74
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02047A0C: .word _020AFEEC
arm_func_end sub_02047960
arm_func_start sub_02047A10
sub_02047A10: ; 0x02047A10
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
ldr r4, _02047AB0 ; =_020AFEEC
mov r6, r0
ldr r4, [r4, r3, lsl #2]
mov r5, r2
ldrb r0, [r4, #0x128]
cmp r0, #0
beq _02047AA8
add r0, r4, #0x1f00
ldrsh r3, [r0, #0x70]
ldrsh r2, [r0, #0x68]
cmp r3, r2
bge _02047AA8
add r2, r3, r3, lsl #7
add r2, r4, r2
strb r1, [r2, #0x1ac]
ldrsh r0, [r0, #0x70]
add r2, r4, #0x12c
mov r1, r6
add r0, r0, r0, lsl #7
add r0, r2, r0
bl strcpy
str r5, [sp]
add r0, r4, #0x1f00
ldrsh r1, [r0, #0x70]
add r0, r4, #0x1000
add r5, r4, #0x12c
add r3, r1, r1, lsl #7
ldr r1, [r0, #0xf6c]
mov r2, r6
add r0, r5, r3
mov r3, #0x400
bl PreprocessString
add r0, r4, #0x1f00
ldrsh r1, [r0, #0x70]
add r1, r1, #1
strh r1, [r0, #0x70]
_02047AA8:
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02047AB0: .word _020AFEEC
arm_func_end sub_02047A10
arm_func_start sub_02047AB4
sub_02047AB4: ; 0x02047AB4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #8
mov sl, r0
bl sub_02028324
cmp r0, #0
moveq r1, #0
beq _02047ADC
cmp r0, #1
moveq r1, #1
bne _02047C34
_02047ADC:
ldr r0, _02047C3C ; =_020AFEEC
ldr r5, [r0, r1, lsl #2]
add r0, r5, #0x100
ldrsb r0, [r0, #0x20]
bl sub_02027B1C
ldr r0, [r5, #0x11c]
cmp r0, #2
beq _02047B0C
mov r0, r5
bl sub_0202613C
mov r0, #1
str r0, [r5, #0x11c]
_02047B0C:
add r4, r5, #0x1f00
ldrsh r0, [r4, #0x70]
ldrsh r7, [r4, #0x7e]
cmp r7, r0
bge _02047C34
ldr r1, [r5, #0x18]
ldr r2, [r5, #4]
mov r1, r1, lsl #0x10
mov r2, r2, lsl #0x10
mov r8, r1, asr #0x10
mov r1, r2, asr #0x10
str r1, [sp, #4]
mov r6, #0
add fp, r5, #0x12c
b _02047BBC
_02047B48:
add sb, r7, r7, lsl #7
add r0, r5, sb
ldrb r0, [r0, #0x1ac]
cmp r0, #0
beq _02047B80
mov r0, #0x17
str r0, [sp]
ldrsh r1, [r4, #0x80]
ldrsh r3, [r4, #0x78]
mov r0, sl
mla r1, r6, r8, r1
sub r2, r1, #2
mov r1, #0
bl sub_02025D50
_02047B80:
ldrsh r2, [r4, #0x80]
ldr r1, [sp, #4]
mov r0, sl
mla r2, r6, r8, r2
add r3, fp, sb
bl sub_020264A4
add r0, r7, #1
mov r1, r0, lsl #0x10
ldrsh r0, [r4, #0x70]
mov r7, r1, asr #0x10
cmp r0, r1, asr #16
ble _02047BC8
add r1, r6, #1
mov r1, r1, lsl #0x10
mov r6, r1, asr #0x10
_02047BBC:
ldrsh r1, [r4, #0x72]
cmp r6, r1
blt _02047B48
_02047BC8:
add r1, r5, #0x1f00
ldrsh r2, [r1, #0x72]
cmp r0, r2
ble _02047C18
sub r0, r0, r2
sub r0, r0, #1
ldrsh r1, [r1, #0x74]
mov r0, r0, lsl #0x10
cmp r1, r0, asr #16
addeq r0, r5, #0x1000
moveq r1, #1
streqb r1, [r0, #0xf82]
beq _02047C2C
cmp r1, #0
add r0, r5, #0x1000
moveq r1, #2
streqb r1, [r0, #0xf82]
movne r1, #3
strneb r1, [r0, #0xf82]
b _02047C2C
_02047C18:
add r0, r5, #0x1000
mov r1, #0
strb r1, [r0, #0xf82]
strb r1, [r0, #0xf7a]
strb r1, [r0, #0xf7b]
_02047C2C:
mov r0, sl
bl UpdateWindow
_02047C34:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02047C3C: .word _020AFEEC
arm_func_end sub_02047AB4
arm_func_start sub_02047C40
sub_02047C40: ; 0x02047C40
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #4
ldr r1, _02047EF0 ; =_020AFEEC
mov r6, #0
ldr r5, [r1, r0, lsl #2]
add r1, sp, #0
mov r0, r6
bl sub_020063F4
add r0, r5, #0x100
ldrsb r0, [r0, #0x20]
bl GetAdvancedTextBoxFlags2
ldr r1, [r5, #0x11c]
mov r4, r0
cmp r1, #4
addls pc, pc, r1, lsl #2
b _02047EE4
_02047C80: ; jump table
b _02047C94 ; case 0
b _02047CAC ; case 1
b _02047CB8 ; case 2
b _02047EC0 ; case 3
b _02047ECC ; case 4
_02047C94:
mov r0, r5
bl sub_020261D4
cmp r0, #0
beq _02047EE4
mov r0, #1
str r0, [r5, #0x11c]
_02047CAC:
mov r0, #2
str r0, [r5, #0x11c]
b _02047EE4
_02047CB8:
mov r0, r5
bl sub_02026204
add r1, r5, #0x1000
ldrb r1, [r1, #0xf7c]
mov r7, r0
cmp r1, #1
beq _02047EE4
add r0, r5, #0x100
ldrsb r0, [r0, #0x20]
bl IsAdvancedTextBoxActive
cmp r0, #0
beq _02047CF0
ands r8, r4, #2
beq _02047D0C
_02047CF0:
mov r0, #1
bl PlaySeVolumeWrapper
mov r0, #3
str r0, [r5, #0x11c]
mov r0, #1
str r0, [r5, #0x124]
b _02047EE4
_02047D0C:
add r0, r5, #0x1f00
ldrsh r3, [r0, #0x72]
ldrsh ip, [r0, #0x70]
cmp ip, r3
ble _02047E9C
ldrh r0, [sp]
tst r0, #0x40
bne _02047D34
tst r4, #0x40000
beq _02047D7C
_02047D34:
add r0, r5, #0x1f00
ldrsh r1, [r0, #0x74]
sub r1, r1, #1
strh r1, [r0, #0x74]
ldrsh r1, [r0, #0x74]
cmp r1, #0
bge _02047D6C
mov r1, #0
strh r1, [r0, #0x74]
add r0, r5, #0x100
ldrsb r0, [r0, #0x20]
mov r1, #0x20000000
bl sub_02030A74
b _02047D74
_02047D6C:
mov r0, #3
bl PlaySeVolumeWrapper
_02047D74:
mov r6, #1
b _02047DC4
_02047D7C:
tst r0, #0x80
bne _02047D8C
tst r4, #0x80000
beq _02047DC4
_02047D8C:
add r1, r5, #0x1f00
ldrsh r2, [r1, #0x74]
sub r0, ip, r3
mov r0, r0, lsl #0x10
add r2, r2, #1
strh r2, [r1, #0x74]
ldrsh r2, [r1, #0x74]
mov r3, r0, asr #0x10
cmp r2, r0, asr #16
strgth r3, [r1, #0x74]
bgt _02047DC0
mov r0, #3
bl PlaySeVolumeWrapper
_02047DC0:
mov r6, #1
_02047DC4:
add r0, r5, #0x1f00
ldrsh r2, [r0, #0x74]
cmp r2, #1
blt _02047E0C
ldrsh r1, [r0, #0x70]
ldrsh r0, [r0, #0x72]
sub r0, r1, r0
cmp r2, r0
bge _02047E0C
add r0, r5, #0x100
ldrsb r0, [r0, #0x20]
mov r1, #0x20000000
bl sub_02030A90
add r0, r5, #0x100
ldrsb r0, [r0, #0x20]
mov r1, #0x40000000
bl sub_02030A90
b _02047E70
_02047E0C:
cmp r2, #0
bne _02047E38
add r0, r5, #0x100
ldrsb r0, [r0, #0x20]
mov r1, #0x20000000
bl sub_02030A74
add r0, r5, #0x100
ldrsb r0, [r0, #0x20]
mov r1, #0x40000000
bl sub_02030A90
b _02047E70
_02047E38:
add r0, r5, #0x1f00
ldrsh r1, [r0, #0x70]
ldrsh r0, [r0, #0x72]
sub r0, r1, r0
cmp r2, r0
bne _02047E70
add r0, r5, #0x100
ldrsb r0, [r0, #0x20]
mov r1, #0x20000000
bl sub_02030A90
add r0, r5, #0x100
ldrsb r0, [r0, #0x20]
mov r1, #0x40000000
bl sub_02030A74
_02047E70:
ldrb r0, [r5, #0x129]
cmp r0, #0
bne _02047E9C
cmp r6, #0
beq _02047E9C
add r0, r5, #0x1f00
ldrsh r2, [r0, #0x74]
add r1, r5, #0x100
strh r2, [r0, #0x7e]
ldrsb r0, [r1, #0x20]
bl SetAdvancedTextBoxField0x1C2
_02047E9C:
cmp r8, #0
bne _02047EAC
cmp r7, #0x10
bne _02047EE4
_02047EAC:
mov r1, #3
mov r0, #1
str r1, [r5, #0x11c]
bl PlaySeVolumeWrapper
b _02047EE4
_02047EC0:
mov r0, #4
str r0, [r5, #0x11c]
b _02047EE4
_02047ECC:
mov r1, r6
mov r0, r5
str r1, [r5, #0x11c]
bl sub_0202613C
mov r0, #1
b _02047EE8
_02047EE4:
mov r0, #0
_02047EE8:
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_02047EF0: .word _020AFEEC
arm_func_end sub_02047C40
arm_func_start sub_02047EF4
sub_02047EF4: ; 0x02047EF4
stmdb sp!, {r4, lr}
ldr r1, _02047F34 ; =_020AFEEC
mov r4, r0
ldr r0, [r1, r4, lsl #2]
cmp r0, #0
ldmeqia sp!, {r4, pc}
add r0, r0, #0x100
ldrsb r0, [r0, #0x20]
bl CloseAdvancedTextBox2
ldr r0, _02047F34 ; =_020AFEEC
ldr r0, [r0, r4, lsl #2]
bl MemFree
ldr r0, _02047F34 ; =_020AFEEC
mov r1, #0
str r1, [r0, r4, lsl #2]
ldmia sp!, {r4, pc}
.align 2, 0
_02047F34: .word _020AFEEC
arm_func_end sub_02047EF4
arm_func_start sub_02047F38
sub_02047F38: ; 0x02047F38
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sb, r1
mov sl, r0
ldr r6, [sp, #0x28]
mov r0, sb
mov r1, #0x3c
mov r8, r2
mov r7, r3
bl _s32_div_f
mov r1, r1, lsl #0x10
mov r2, #0
mov r0, r6
strh r2, [r8]
mov sb, r1, asr #0x10
bl sub_0204793C
mov r5, #0
mov fp, #0x3c
mov r4, #0xd4
_02047F80:
smulbb r1, sb, r4
ldrb r0, [sl, r1]
add r2, sl, r1
cmp r0, #0
beq _02047FB4
ldrb r1, [r2, #1]
mov r3, r6
add r0, r2, #3
add r2, r2, #0x84
bl sub_02047A10
ldrsh r0, [r8]
add r0, r0, #1
strh r0, [r8]
_02047FB4:
add r0, sb, #1
mov r0, r0, lsl #0x10
mov r1, fp
mov r0, r0, asr #0x10
bl _s32_div_f
add r0, r5, #1
mov r2, r0, lsl #0x10
mov r0, r1, lsl #0x10
mov r5, r2, asr #0x10
cmp r5, #0x3c
mov sb, r0, asr #0x10
blt _02047F80
ldrsh r0, [r8]
cmp r0, r7
mov r0, r6
strlth r7, [r8]
bl sub_02047960
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_02047F38
arm_func_start sub_02047FFC
sub_02047FFC: ; 0x02047FFC
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x39c0
mov r1, #0
bl MemAlloc
ldr r2, _02048048 ; =_020AFEF4
mov r1, #0x39c0
str r0, [r2]
bl MemZero
ldr r1, _02048048 ; =_020AFEF4
mov r2, #1
ldr r0, [r1]
add r0, r0, #0x3000
str r4, [r0, #0x1bc]
ldr r0, [r1]
add r0, r0, #0x3000
strb r2, [r0, #0x1b3]
bl sub_020480CC
ldmia sp!, {r4, pc}
.align 2, 0
_02048048: .word _020AFEF4
arm_func_end sub_02047FFC
arm_func_start sub_0204804C
sub_0204804C: ; 0x0204804C
stmdb sp!, {r3, lr}
ldr r0, _02048074 ; =_020AFEF4
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl MemFree
ldr r0, _02048074 ; =_020AFEF4
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_02048074: .word _020AFEF4
arm_func_end sub_0204804C
arm_func_start sub_02048078
sub_02048078: ; 0x02048078
ldr r1, _0204809C ; =_020AFEF4
ldr r1, [r1]
cmp r1, #0
movne r2, #1
moveq r2, #0
tst r2, #0xff
addne r1, r1, #0x3000
strneb r0, [r1, #0x1b3]
bx lr
.align 2, 0
_0204809C: .word _020AFEF4
arm_func_end sub_02048078
arm_func_start sub_020480A0
sub_020480A0: ; 0x020480A0
ldr r0, _020480C8 ; =_020AFEF4
ldr r0, [r0]
cmp r0, #0
movne r1, #1
moveq r1, #0
tst r1, #0xff
addne r0, r0, #0x3000
ldrneb r0, [r0, #0x1b3]
moveq r0, #0
bx lr
.align 2, 0
_020480C8: .word _020AFEF4
arm_func_end sub_020480A0
arm_func_start sub_020480CC
sub_020480CC: ; 0x020480CC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r6, _02048130 ; =_020AFEF4
mov r7, #0xd4
ldr r0, [r6]
mov r4, #0
add r0, r0, #0x3100
strh r4, [r0, #0xb8]
ldr r0, [r6]
mov r1, #1
add r0, r0, #0x3000
strb r1, [r0, #0x1b0]
mov r5, r7
_020480FC:
mul r8, r4, r5
ldr r0, [r6]
mov r1, r7
add r0, r0, r8
bl MemZero
ldr r0, [r6]
add r0, r0, r8
add r0, r0, #0x84
bl InitPreprocessorArgs
add r4, r4, #1
cmp r4, #0x3c
blt _020480FC
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02048130: .word _020AFEF4
arm_func_end sub_020480CC
arm_func_start sub_02048134
sub_02048134: ; 0x02048134
ldr r0, _0204814C ; =_020AFEF4
mov r1, #1
ldr r0, [r0]
add r0, r0, #0x3000
strb r1, [r0, #0x1b0]
bx lr
.align 2, 0
_0204814C: .word _020AFEF4
arm_func_end sub_02048134
arm_func_start sub_02048150
sub_02048150: ; 0x02048150
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl sub_020480A0
cmp r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
ldr r2, _0204823C ; =_020AFEF4
mov r1, #0xd4
ldr lr, [r2]
mov r3, #1
add r0, lr, #0x3100
ldrsh r0, [r0, #0xb8]
smulbb ip, r0, r1
strb r3, [lr, ip]
ldr r0, [r2]
add r1, lr, ip
add r0, r0, ip
strb r5, [r0, #1]
ldr r0, [r2]
add r2, r1, #3
add r0, r0, ip
strb r4, [r0, #2]
add r1, r1, #0x82
_020481B0:
ldrb r0, [r6]
cmp r0, #0
cmpne r0, #0xd
beq _020481D0
cmp r2, r1
strlob r0, [r2], #1
add r6, r6, #1
b _020481B0
_020481D0:
mov r3, #0
ldr r1, _0204823C ; =_020AFEF4
strb r3, [r2]
ldr r0, [r1]
add r0, r0, #0x3100
ldrsh r2, [r0, #0xb8]
add r2, r2, #1
strh r2, [r0, #0xb8]
ldr r0, [r1]
mov r2, #1
add r0, r0, #0x3100
ldrsh r1, [r0, #0xb8]
cmp r1, #0x3c
ldr r1, _0204823C ; =_020AFEF4
strgeh r3, [r0, #0xb8]
ldr r0, [r1]
add r0, r0, #0x3000
strb r2, [r0, #0x1b0]
ldr r1, [r1]
add r0, r1, #0x3000
ldrb r0, [r0, #0x1b2]
cmp r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
add r0, r1, #0x3100
ldrsh r0, [r0, #0xb8]
bl sub_020476EC
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0204823C: .word _020AFEF4
arm_func_end sub_02048150
arm_func_start sub_02048240
sub_02048240: ; 0x02048240
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r2, _02048334 ; =_020AFEF4
mov r1, r0
ldr r0, [r2]
cmp r0, #0
movne r2, #1
moveq r2, #0
tst r2, #0xff
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
add r0, r0, #0x31c0
mov r8, #0
bl strcpy
ldr r4, _02048334 ; =_020AFEF4
mov r7, r8
mov r6, #0x400
mov fp, #0x440
mov r5, r8
_02048284:
ldr sb, [r4]
add r0, sb, r8
add r0, r0, #0x3000
ldrb r0, [r0, #0x1c0]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
add r2, sb, #0x31c0
mov r1, r6
mov r3, fp
str r7, [sp]
add r0, sb, #0x35c0
add r2, r2, r8
bl PreprocessString
ldr r1, [r4]
add r8, r8, r0
add r0, r1, r0
add r0, r0, #0x3000
strb r5, [r0, #0x5c0]
ldr sl, [r4]
add r0, sl, r8
add r0, r0, #0x3000
ldrb sb, [r0, #0x1c0]
cmp sb, #0
beq _0204831C
add r0, sl, #0x31c0
ldr r1, _02048338 ; =_0209CCE0
mov r2, #3
add r0, r0, r8
bl strncmp
cmp r0, #0
bne _02048310
ldr r0, _02048338 ; =_0209CCE0
bl strlen
add r8, r8, r0
b _0204831C
_02048310:
cmp sb, #0xd
cmpne sb, #0xa
addeq r8, r8, #1
_0204831C:
mov r1, #0
mov r2, r1
add r0, sl, #0x35c0
bl sub_02048150
b _02048284
_02048330:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02048334: .word _020AFEF4
_02048338: .word _0209CCE0
arm_func_end sub_02048240
arm_func_start sub_0204833C
sub_0204833C: ; 0x0204833C
ldr r0, _02048358 ; =_020AFEF4
ldr ip, _0204835C ; =sub_020475B4
ldr r0, [r0]
mov r1, #9
add r2, r0, #0x3100
ldrsh r2, [r2, #0xb8]
bx ip
.align 2, 0
_02048358: .word _020AFEF4
_0204835C: .word sub_020475B4
arm_func_end sub_0204833C
arm_func_start sub_02048360
sub_02048360: ; 0x02048360
stmdb sp!, {r3, lr}
bl sub_02047660
cmp r0, #1
moveq r0, #1
ldmeqia sp!, {r3, pc}
cmp r0, #2
moveq r0, #2
movne r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_02048360
arm_func_start sub_02048384
sub_02048384: ; 0x02048384
stmdb sp!, {r3, lr}
ldr r0, _020483B4 ; =_020AFEF4
mov r1, #0xb
ldr r0, [r0]
bl sub_02047670
cmp r0, #0
ldrne r1, _020483B4 ; =_020AFEF4
movne r2, #1
ldrne r1, [r1]
addne r1, r1, #0x3000
strneb r2, [r1, #0x1b2]
ldmia sp!, {r3, pc}
.align 2, 0
_020483B4: .word _020AFEF4
arm_func_end sub_02048384
arm_func_start sub_020483B8
sub_020483B8: ; 0x020483B8
ldr r0, _020483D0 ; =_020AFEF4
ldr ip, _020483D4 ; =sub_020476EC
ldr r0, [r0]
add r0, r0, #0x3100
ldrsh r0, [r0, #0xb8]
bx ip
.align 2, 0
_020483D0: .word _020AFEF4
_020483D4: .word sub_020476EC
arm_func_end sub_020483B8
arm_func_start sub_020483D8
sub_020483D8: ; 0x020483D8
stmdb sp!, {r3, lr}
bl sub_0204771C
cmp r0, #0
ldrne r1, _020483FC ; =_020AFEF4
movne r2, #0
ldrne r1, [r1]
addne r1, r1, #0x3000
strneb r2, [r1, #0x1b2]
ldmia sp!, {r3, pc}
.align 2, 0
_020483FC: .word _020AFEF4
arm_func_end sub_020483D8
arm_func_start sub_02048400
sub_02048400: ; 0x02048400
ldr r0, _0204841C ; =_020AFEF4
ldr r0, [r0]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_0204841C: .word _020AFEF4
arm_func_end sub_02048400
arm_func_start sub_02048420
sub_02048420: ; 0x02048420
stmdb sp!, {r3, lr}
bl DebugPrintEventFlagSize
bl sub_02048B74
ldmia sp!, {r3, pc}
arm_func_end sub_02048420
arm_func_start sub_02048430
sub_02048430: ; 0x02048430
stmdb sp!, {r3, lr}
bl sub_0206637C
mov r0, #0
bl sub_02048C0C
mvn r0, #0
bl sub_02048C4C
bl sub_0204F9B8
bl sub_02048B48
ldmia sp!, {r3, pc}
arm_func_end sub_02048430
arm_func_start sub_02048454
sub_02048454: ; 0x02048454
stmdb sp!, {r3, lr}
bl ClearAdventureLogStruct
bl sub_0206637C
mov r0, #0
bl sub_02048C0C
mvn r0, #0
bl sub_02048C4C
bl sub_0204F9B8
bl sub_02048B48
bl sub_02048C5C
ldmia sp!, {r3, pc}
arm_func_end sub_02048454
arm_func_start sub_02048480
sub_02048480: ; 0x02048480
stmdb sp!, {r3, lr}
bl sub_02048C3C
mvn r1, #0
cmp r0, r1
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end sub_02048480
arm_func_start GetNotifyNote
GetNotifyNote: ; 0x020484A0
ldr r0, _020484AC ; =NOTIFY_NOTE
ldrb r0, [r0]
bx lr
.align 2, 0
_020484AC: .word NOTIFY_NOTE
arm_func_end GetNotifyNote
arm_func_start SetNotifyNote
SetNotifyNote: ; 0x020484B0
ldr r1, _020484BC ; =NOTIFY_NOTE
strb r0, [r1]
bx lr
.align 2, 0
_020484BC: .word NOTIFY_NOTE
arm_func_end SetNotifyNote
arm_func_start sub_020484C0
sub_020484C0: ; 0x020484C0
stmdb sp!, {r3, lr}
bl sub_0206637C
mov r0, #0
bl sub_02048C0C
mvn r0, #0
bl sub_02048C4C
bl sub_0204F9B8
bl sub_02048B48
bl sub_02048C5C
ldmia sp!, {r3, pc}
arm_func_end sub_020484C0
arm_func_start InitSpecialEpisodeHero
InitSpecialEpisodeHero: ; 0x020484E8
stmdb sp!, {r4, lr}
bl GetSpecialEpisodeType
mov r4, r0
bl sub_02052CD8
bl sub_0200CAD4
bl sub_0204CDB8
mov r0, r4
mov r1, #1
bl SetSpecialEpisodeOpenOld
cmp r4, #4
addls pc, pc, r4, lsl #2
b _02048578
_02048518: ; jump table
b _0204852C ; case 0
b _0204853C ; case 1
b _0204854C ; case 2
b _0204855C ; case 3
b _0204856C ; case 4
_0204852C:
ldr r1, _020485AC ; =_020A2830
mov r0, #2
bl sub_02048AC4
b _02048578
_0204853C:
ldr r1, _020485B0 ; =_020A2808
mov r0, #2
bl sub_02048AC4
b _02048578
_0204854C:
ldr r1, _020485B4 ; =_020A2844
mov r0, #2
bl sub_02048AC4
b _02048578
_0204855C:
ldr r1, _020485B8 ; =_020A2880
mov r0, #2
bl sub_02048AC4
b _02048578
_0204856C:
ldr r1, _020485BC ; =_020A2894
mov r0, #2
bl sub_02048AC4
_02048578:
mov r0, #2
bl GetTeamMember
mov r4, r0
mov r0, #2
bl GetTeamMember
ldr r1, _020485C0 ; =FORBIDDEN_FORGOT_MOVE_LIST
bl sub_02053628
mov r1, r0
mov r0, r4
mov r2, #1
bl sub_02053660
bl SetTeamSetupHeroAndPartnerOnly
ldmia sp!, {r4, pc}
.align 2, 0
_020485AC: .word _020A2830
_020485B0: .word _020A2808
_020485B4: .word _020A2844
_020485B8: .word _020A2880
_020485BC: .word _020A2894
_020485C0: .word FORBIDDEN_FORGOT_MOVE_LIST
arm_func_end InitSpecialEpisodeHero
arm_func_start sub_020485C4
sub_020485C4: ; 0x020485C4
stmdb sp!, {r3, lr}
bl sub_02052CE8
bl sub_0200CAE4
bl sub_02056B58
ldmia sp!, {r3, pc}
arm_func_end sub_020485C4
arm_func_start sub_020485D8
sub_020485D8: ; 0x020485D8
stmdb sp!, {r3, lr}
bl sub_02052CE8
bl sub_0200CAE4
bl sub_02056BD4
ldmia sp!, {r3, pc}
arm_func_end sub_020485D8
arm_func_start sub_020485EC
sub_020485EC: ; 0x020485EC
stmdb sp!, {r3, lr}
bl sub_0206637C
mov r0, #0
bl sub_02048C0C
mvn r0, #0
bl sub_02048C4C
bl sub_0204F9B8
bl sub_02048B48
bl sub_02048C5C
ldmia sp!, {r3, pc}
arm_func_end sub_020485EC
arm_func_start sub_02048614
sub_02048614: ; 0x02048614
stmdb sp!, {r3, lr}
bl sub_02048B48
bl InitMainTeamAfterQuiz
ldmia sp!, {r3, pc}
arm_func_end sub_02048614
arm_func_start sub_02048624
sub_02048624: ; 0x02048624
stmdb sp!, {r3, lr}
mov r0, #0
bl SetActiveInventory
mov r0, #0
bl SetActiveKecleonShop
mov r0, #0
bl SetActiveTeam
ldmia sp!, {r3, pc}
arm_func_end sub_02048624
arm_func_start sub_02048644
sub_02048644: ; 0x02048644
stmdb sp!, {r4, lr}
bl GetGameMode
mov r4, r0
bl EventFlagResume
cmp r4, #4
bne _02048678
mov r0, #2
bl SetActiveInventory
mov r0, #0
bl SetActiveKecleonShop
mov r0, #2
bl SetActiveTeam
b _020486D8
_02048678:
cmp r4, #5
bne _0204869C
mov r0, #2
bl SetActiveInventory
mov r0, #0
bl SetActiveKecleonShop
mov r0, #2
bl SetActiveTeam
b _020486D8
_0204869C:
cmp r4, #3
bne _020486C0
mov r0, #1
bl SetActiveInventory
mov r0, #1
bl SetActiveKecleonShop
mov r0, #1
bl SetActiveTeam
b _020486D8
_020486C0:
mov r0, #0
bl SetActiveInventory
mov r0, #0
bl SetActiveKecleonShop
mov r0, #0
bl SetActiveTeam
_020486D8:
cmp r4, #3
bne _020486EC
mov r0, #2
bl SetBothScreensWindowsColor
ldmia sp!, {r4, pc}
_020486EC:
bl GetHeroMemberIdx
mvn r1, #0
cmp r0, r1
beq _02048720
mov r0, #0
mov r1, #0x42
bl LoadScriptVariableValue
cmp r0, #5
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bl SetBothScreensWindowsColor
ldmia sp!, {r4, pc}
_02048720:
mov r0, #2
bl SetBothScreensWindowsColor
ldmia sp!, {r4, pc}
arm_func_end sub_02048644
arm_func_start sub_0204872C
sub_0204872C: ; 0x0204872C
stmdb sp!, {r3, lr}
bl EventFlagBackup
mov r0, #2
bl SetBothScreensWindowsColor
mov r0, #0
bl SetActiveInventory
mov r0, #0
bl SetActiveKecleonShop
mov r0, #0
bl SetActiveTeam
ldmia sp!, {r3, pc}
arm_func_end sub_0204872C
arm_func_start EventFlagBackupVeneer
EventFlagBackupVeneer: ; 0x02048758
ldr ip, _02048760 ; =EventFlagBackup
bx ip
.align 2, 0
_02048760: .word EventFlagBackup
arm_func_end EventFlagBackupVeneer
arm_func_start sub_02048764
sub_02048764: ; 0x02048764
stmdb sp!, {r4, lr}
ldr lr, _02048790 ; =DEFAULT_HERO_ID
mov r4, r0
mov ip, #3
_02048774:
ldmia lr!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _02048774
ldmia lr, {r0, r1, r2}
stmia r4, {r0, r1, r2}
ldmia sp!, {r4, pc}
.align 2, 0
_02048790: .word DEFAULT_HERO_ID
arm_func_end sub_02048764
arm_func_start sub_02048794
sub_02048794: ; 0x02048794
stmdb sp!, {r4, lr}
ldr lr, _020487C0 ; =DEFAULT_HERO_ID
mov r4, r0
mov ip, #3
_020487A4:
ldmia r4!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _020487A4
ldmia r4, {r0, r1, r2}
stmia lr, {r0, r1, r2}
ldmia sp!, {r4, pc}
.align 2, 0
_020487C0: .word DEFAULT_HERO_ID
arm_func_end sub_02048794
arm_func_start InitMainTeamAfterQuiz
InitMainTeamAfterQuiz: ; 0x020487C4
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0x14
ldr r0, _020489F4 ; =NOTIFY_NOTE
mov r4, #0
ldrb r0, [r0, #8]
cmp r0, #0
bne _020487FC
ldr r1, _020489F8 ; =0x00000232
add r0, sp, #0
bl GetStringFromFileVeneer
ldr r0, _020489FC ; =_020AFF00
add r1, sp, #0
mov r2, #0xa
bl StrncpyName
_020487FC:
ldr r0, _020489F4 ; =NOTIFY_NOTE
ldrb r0, [r0, #0x1c]
cmp r0, #0
bne _02048828
ldr r1, _02048A00 ; =0x00000233
add r0, sp, #0
bl GetStringFromFileVeneer
ldr r0, _02048A04 ; =_020AFF14
add r1, sp, #0
mov r2, #0xa
bl StrncpyName
_02048828:
bl GetHeroMemberIdx
mvn r1, #0
cmp r0, r1
bne _02048898
ldr r0, _020489F4 ; =NOTIFY_NOTE
ldr r3, _020489FC ; =_020AFF00
ldrsh r1, [r0, #4]
mov r0, #0
mov r2, #0xd6
bl sub_02055B78
bl GetHero
ldr r1, _020489F4 ; =NOTIFY_NOTE
mov r4, r0
ldrsh r2, [r1, #4]
mov r0, #0
mov r1, #0x3e
bl SaveScriptVariableValue
add r1, r4, #0x3a
mov r0, #0x3f
mov r2, #0xa
bl SaveScriptVariableValueBytes
mov r0, r4
mov r1, #5
mov r2, #0
bl ApplyLevelUpBoostsToGroundMonster
mov r0, r4
bl sub_02053568
mov r4, #1
_02048898:
bl GetPartnerMemberIdx
mvn r1, #0
cmp r0, r1
bne _02048908
ldr r0, _020489F4 ; =NOTIFY_NOTE
ldr r3, _02048A04 ; =_020AFF14
ldrsh r1, [r0, #6]
mov r0, #1
mov r2, #0xd7
bl sub_02055B78
bl GetPartner
ldr r1, _020489F4 ; =NOTIFY_NOTE
mov r4, r0
ldrsh r2, [r1, #6]
mov r0, #0
mov r1, #0x40
bl SaveScriptVariableValue
add r1, r4, #0x3a
mov r0, #0x41
mov r2, #0xa
bl SaveScriptVariableValueBytes
mov r0, r4
mov r1, #5
mov r2, #0
bl ApplyLevelUpBoostsToGroundMonster
mov r0, r4
bl sub_02053568
mov r4, #1
_02048908:
cmp r4, #0
beq _02048914
bl SetTeamSetupHeroAndPartnerOnly
_02048914:
ldr r0, _020489F4 ; =NOTIFY_NOTE
ldrsh r0, [r0, #4]
cmp r0, #0
beq _02048940
bl GetMonsterGenderVeneer
cmp r0, #2
moveq r2, #5
movne r2, #4
mov r0, #0
mov r1, #0x42
bl SaveScriptVariableValue
_02048940:
ldr r0, _020489F4 ; =NOTIFY_NOTE
ldrsh r1, [r0, #6]
cmp r1, #0
beq _02048980
ldr r0, _02048A08 ; =PARTNER_TALK_KIND_TABLE
b _02048964
_02048958:
cmp r1, r2
beq _02048970
add r0, r0, #8
_02048964:
ldrsh r2, [r0, #4]
cmp r2, #0
bne _02048958
_02048970:
ldr r2, [r0]
mov r0, #0
mov r1, #0x43
bl SaveScriptVariableValue
_02048980:
ldr r1, _020489F4 ; =NOTIFY_NOTE
mov r0, #0
ldr r2, [r1, #0x30]
mov r1, #0x45
bl SaveScriptVariableValue
mov r0, #1
bl sub_02048C0C
bl sub_02048C3C
mvn r1, #0
cmp r0, r1
bne _020489B4
bl Rand32Bit
bl sub_02048C4C
_020489B4:
bl GetGameMode
cmp r0, #1
bhi _020489CC
mov r0, #2
bl SetBothScreensWindowsColor
b _020489EC
_020489CC:
mov r0, #0
mov r1, #0x42
bl LoadScriptVariableValue
cmp r0, #5
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bl SetBothScreensWindowsColor
_020489EC:
add sp, sp, #0x14
ldmia sp!, {r3, r4, pc}
.align 2, 0
_020489F4: .word NOTIFY_NOTE
#ifdef JAPAN
_020489F8: .word 0x000004C3
_020489FC: .word _020AFF00
_02048A00: .word 0x000004C4
#else
_020489F8: .word 0x00000232
_020489FC: .word _020AFF00
_02048A00: .word 0x00000233
#endif
_02048A04: .word _020AFF14
_02048A08: .word PARTNER_TALK_KIND_TABLE
arm_func_end InitMainTeamAfterQuiz
arm_func_start InitSpecialEpisodePartners
InitSpecialEpisodePartners: ; 0x02048A0C
stmdb sp!, {r3, lr}
bl GetExecuteSpecialEpisodeType
cmp r0, #4
addls pc, pc, r0, lsl #2
b _02048A6C
_02048A20: ; jump table
b _02048A6C ; case 0
b _02048A34 ; case 1
b _02048A6C ; case 2
b _02048A44 ; case 3
b _02048A60 ; case 4
_02048A34:
ldr r1, _02048A74 ; =_020A28A8
mov r0, #3
bl sub_02048AC4
b _02048A6C
_02048A44:
ldr r1, _02048A78 ; =_020A2858
mov r0, #3
bl sub_02048AC4
ldr r1, _02048A7C ; =_020A281C
mov r0, #4
bl sub_02048AC4
b _02048A6C
_02048A60:
ldr r1, _02048A80 ; =_020A286C
mov r0, #3
bl sub_02048AC4
_02048A6C:
bl SetTeamSetupHeroAndPartnerOnly
ldmia sp!, {r3, pc}
.align 2, 0
_02048A74: .word _020A28A8
_02048A78: .word _020A2858
_02048A7C: .word _020A281C
_02048A80: .word _020A286C
arm_func_end InitSpecialEpisodePartners
arm_func_start InitSpecialEpisodeExtraPartner
InitSpecialEpisodeExtraPartner: ; 0x02048A84
stmdb sp!, {r3, lr}
bl GetExecuteSpecialEpisodeType
cmp r0, #4
addls pc, pc, r0, lsl #2
b _02048AB8
_02048A98: ; jump table
b _02048AB8 ; case 0
b _02048AB8 ; case 1
b _02048AB8 ; case 2
b _02048AB8 ; case 3
b _02048AAC ; case 4
_02048AAC:
ldr r1, _02048AC0 ; =SPECIAL_EPISODE_MAIN_CHARACTERS
mov r0, #4
bl sub_02048AC4
_02048AB8:
bl SetTeamSetupHeroAndPartnerOnly
ldmia sp!, {r3, pc}
.align 2, 0
_02048AC0: .word SPECIAL_EPISODE_MAIN_CHARACTERS
arm_func_end InitSpecialEpisodeExtraPartner
arm_func_start sub_02048AC4
sub_02048AC4: ; 0x02048AC4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
ldrsh r1, [r5]
ldrb r2, [r5, #2]
mov r4, r0
mov r3, #0
bl sub_02055B78
mov r0, r4
bl GetTeamMember
ldrsh r1, [r5, #0xe]
ldrb r2, [r5, #0xc]
mov r4, r0
bl ApplyLevelUpBoostsToGroundMonster
ldrsh r0, [r5, #0x12]
cmp r0, #0
strneh r0, [r4, #0xa]
ldrsh r2, [r5, #0x10]
add r0, r4, #0x14
strh r2, [r4, #8]
ldrsh r1, [r4, #4]
bl EnableAllLearnableIqSkills
ldrh r0, [r5, #4]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldrb r0, [r5, #0xc]
add r1, r5, #4
cmp r0, #0
add r0, r4, #0x22
beq _02048B40
bl LearnMoves
ldmia sp!, {r3, r4, r5, pc}
_02048B40:
bl GetInfoGroundMoveset
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02048AC4
arm_func_start sub_02048B48
sub_02048B48: ; 0x02048B48
stmdb sp!, {r3, lr}
bl sub_0204AB24
bl InitScriptVariableValues
bl sub_02052C74
bl sub_0200CABC
bl StoreDefaultTeamData
bl ResetGlobalProgress
bl sub_0205B478
bl sub_0205C75C
bl sub_02012AB8
ldmia sp!, {r3, pc}
arm_func_end sub_02048B48
arm_func_start sub_02048B74
sub_02048B74: ; 0x02048B74
stmdb sp!, {r3, lr}
ldr r1, _02048BA8 ; =_020AFF38
ldr r0, _02048BAC ; =_0209CD4C
ldr r1, [r1, #4]
mov r2, #0
bl Debug_Print0
mov r3, #0
ldr r1, _02048BA8 ; =_020AFF38
ldr r0, _02048BB0 ; =_022AAE70
sub r2, r3, #1
str r3, [r1, #4]
str r2, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_02048BA8: .word _020AFF38
_02048BAC: .word _0209CD4C
_02048BB0: .word _022AAE70
arm_func_end sub_02048B74
arm_func_start ReadStringSave
ReadStringSave: ; 0x02048BB4
ldr r1, _02048BC8 ; =_020AFF38
ldr ip, _02048BCC ; =strncpy
mov r2, #0x20
ldr r1, [r1]
bx ip
.align 2, 0
_02048BC8: .word _020AFF38
_02048BCC: .word strncpy
arm_func_end ReadStringSave
arm_func_start CheckStringSave
CheckStringSave: ; 0x02048BD0
stmdb sp!, {r3, lr}
ldr r1, _02048BF8 ; =_020AFF38
mov r2, #0x20
ldr r1, [r1]
bl strncmp
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
.align 2, 0
_02048BF8: .word _020AFF38
arm_func_end CheckStringSave
arm_func_start sub_02048BFC
sub_02048BFC: ; 0x02048BFC
ldr r0, _02048C08 ; =_020AFF38
ldr r0, [r0, #4]
bx lr
.align 2, 0
_02048C08: .word _020AFF38
arm_func_end sub_02048BFC
arm_func_start sub_02048C0C
sub_02048C0C: ; 0x02048C0C
stmdb sp!, {r4, lr}
ldr r1, _02048C34 ; =_020AFF38
mov r4, r0
ldr r1, [r1, #4]
ldr r0, _02048C38 ; =_0209CD4C
mov r2, r4
bl Debug_Print0
ldr r0, _02048C34 ; =_020AFF38
str r4, [r0, #4]
ldmia sp!, {r4, pc}
.align 2, 0
_02048C34: .word _020AFF38
_02048C38: .word _0209CD4C
arm_func_end sub_02048C0C
arm_func_start sub_02048C3C
sub_02048C3C: ; 0x02048C3C
ldr r0, _02048C48 ; =_022AAE70
ldr r0, [r0]
bx lr
.align 2, 0
_02048C48: .word _022AAE70
arm_func_end sub_02048C3C
arm_func_start sub_02048C4C
sub_02048C4C: ; 0x02048C4C
ldr r1, _02048C58 ; =_022AAE70
str r0, [r1]
bx lr
.align 2, 0
_02048C58: .word _022AAE70
arm_func_end sub_02048C4C
arm_func_start sub_02048C5C
sub_02048C5C: ; 0x02048C5C
stmdb sp!, {r3, lr}
ldr r0, _02048CA4 ; =_022AAE74
mov r1, #0
mov r2, #0x30
bl MemsetSimple
ldr r2, _02048CA8 ; =0x09011416
ldr r1, _02048CAC ; =_022AAE74
ldr r0, _02048CB0 ; =_022AAE78
str r2, [r1, #0x24]
bl ReadStringSave
ldr r2, _02048CB4 ; =0x000F1206
ldr r0, _02048CAC ; =_022AAE74
mov r1, #0xff
str r2, [r0, #0x28]
strb r1, [r0, #0x2c]
mov r1, #0
strb r1, [r0, #0x2d]
ldmia sp!, {r3, pc}
.align 2, 0
_02048CA4: .word _022AAE74
_02048CA8: .word 0x09011416
_02048CAC: .word _022AAE74
_02048CB0: .word _022AAE78
_02048CB4: .word 0x000F1206
arm_func_end sub_02048C5C
arm_func_start sub_02048CB8
sub_02048CB8: ; 0x02048CB8
stmdb sp!, {r3, lr}
mov r0, #9
bl Debug_GetDebugFlag
cmp r0, #0
beq _02048CE4
ldr r1, _02048CF0 ; =_022AAE74
ldr r0, _02048CF4 ; =0x000F1208
ldr r1, [r1, #0x28]
cmp r1, r0
subeq r0, r0, #1
ldmeqia sp!, {r3, pc}
_02048CE4:
ldr r0, _02048CF0 ; =_022AAE74
ldr r0, [r0, #0x28]
ldmia sp!, {r3, pc}
.align 2, 0
_02048CF0: .word _022AAE74
_02048CF4: .word 0x000F1208
arm_func_end sub_02048CB8
arm_func_start sub_02048CF8
sub_02048CF8: ; 0x02048CF8
stmdb sp!, {r3, r4, r5, lr}
mov r0, #0x100
mov r1, #5
bl MemAlloc
mov r4, r0
ldr r3, _02048DB0 ; =0x000001EA
add r0, sp, #0
mov r1, r4
mov r2, #0x100
str r3, [sp]
bl ReadSaveFile
movs r5, r0
cmpne r5, #2
bne _02048D54
add r0, r4, #4
bl CheckStringSave
cmp r0, #0
moveq r5, #5
beq _02048D54
ldr r1, [r4, #0x24]
ldr r0, _02048DB4 ; =0x09011416
cmp r1, r0
movne r5, #4
_02048D54:
bl sub_02048C5C
cmp r5, #0
bne _02048D80
ldr r1, [r4, #0x28]
ldr r0, _02048DB8 ; =_022AAE74
str r1, [r0, #0x28]
ldrb r1, [r4, #0x2c]
strb r1, [r0, #0x2c]
ldrb r1, [r4, #0x2d]
strb r1, [r0, #0x2d]
b _02048DA0
_02048D80:
sub r0, r5, #4
cmp r0, #1
ldrls r1, _02048DBC ; =0x000F1206
ldrls r0, _02048DB8 ; =_022AAE74
strls r1, [r0, #0x28]
ldrhi r1, _02048DC0 ; =0x000F1209
ldrhi r0, _02048DB8 ; =_022AAE74
strhi r1, [r0, #0x28]
_02048DA0:
mov r0, r4
bl MemFree
bl sub_02048CB8
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02048DB0: .word 0x000001EA
_02048DB4: .word 0x09011416
_02048DB8: .word _022AAE74
_02048DBC: .word 0x000F1206
_02048DC0: .word 0x000F1209
arm_func_end sub_02048CF8
arm_func_start sub_02048DC4
sub_02048DC4: ; 0x02048DC4
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
mov r6, r0
mov r0, #0x100
mov r1, #5
bl MemAlloc
mov r4, r0
bl sub_02048C5C
ldr r5, _02048E68 ; =_022AAE74
mov lr, r4
mov ip, #3
_02048DF0:
ldmia r5!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _02048DF0
str r6, [r4, #0x28]
bl GetAdventureLogDungeonFloor
ldrb r2, [r0]
ldr r3, _02048E6C ; =0x000001EA
mov r1, r4
strb r2, [r4, #0x2c]
ldrb ip, [r0, #1]
add r0, sp, #0
mov r2, #0x100
strb ip, [r4, #0x2d]
str r3, [sp]
bl WriteSaveFile
movs r5, r0
bne _02048E54
ldr r1, [r4, #0x28]
ldr r0, _02048E70 ; =_022AAE74
str r1, [r0, #0x28]
ldrb r1, [r4, #0x2c]
strb r1, [r0, #0x2c]
ldrb r1, [r4, #0x2d]
strb r1, [r0, #0x2d]
_02048E54:
mov r0, r4
bl MemFree
mov r0, r5
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02048E68: .word _022AAE74
_02048E6C: .word 0x000001EA
_02048E70: .word _022AAE74
arm_func_end sub_02048DC4
arm_func_start WriteSaveFile
WriteSaveFile: ; 0x02048E74
stmdb sp!, {r4, r5, r6, lr}
mov r5, r2
add r3, r5, #0xff
mov r2, r3, asr #7
ldr r4, [r0]
add r2, r3, r2, lsr #24
mov r6, r1
add r1, r4, r2, asr #8
str r1, [r0]
mov r0, r6
mov r1, r5
bl CalcChecksum
mov r0, r4
mov r1, r6
mov r2, r5
bl sub_0204A9C8
cmp r0, #4
moveq r0, #1
ldmeqia sp!, {r4, r5, r6, pc}
cmp r0, #0
movne r0, #2
moveq r0, #0
ldmia sp!, {r4, r5, r6, pc}
arm_func_end WriteSaveFile
arm_func_start ReadSaveFile
ReadSaveFile: ; 0x02048ED0
stmdb sp!, {r3, r4, r5, lr}
mov r4, r2
add ip, r4, #0xff
mov r3, ip, asr #7
ldr lr, [r0]
add r3, ip, r3, lsr #24
add r3, lr, r3, asr #8
str r3, [r0]
mov r0, lr
mov r5, r1
bl sub_0204A8E0
cmp r0, #0
movne r0, #1
ldmneia sp!, {r3, r4, r5, pc}
mov r0, r5
mov r1, r4
bl CheckChecksumInvalid
cmp r0, #0
movne r0, #2
moveq r0, #0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ReadSaveFile
arm_func_start CalcChecksum
CalcChecksum: ; 0x02048F24
mov r3, #0
mov ip, #1
b _02048F3C
_02048F30:
ldr r2, [r0, ip, lsl #2]
add ip, ip, #1
add r3, r3, r2
_02048F3C:
cmp ip, r1, lsr #2
blt _02048F30
str r3, [r0]
bx lr
arm_func_end CalcChecksum
arm_func_start CheckChecksumInvalid
CheckChecksumInvalid: ; 0x02048F4C
mov r3, #0
mov ip, #1
b _02048F64
_02048F58:
ldr r2, [r0, ip, lsl #2]
add ip, ip, #1
add r3, r3, r2
_02048F64:
cmp ip, r1, lsr #2
blt _02048F58
ldr r0, [r0]
cmp r0, r3
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
arm_func_end CheckChecksumInvalid
arm_func_start NoteSaveBase
NoteSaveBase: ; 0x02048F84
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov sb, r0
ldr r0, _02049218 ; =0x0000B65C
mov r1, #5
bl MemAlloc
mov r4, r0
add r0, r4, #0x64
add r5, r0, #0x400
bl sub_02048BFC
mov r2, r0
ldr r0, _0204921C ; =_0209CD6C
mov r1, sb
bl Debug_Print0
mov r0, #0
bl SetNotifyNote
bl GetTime
mov r7, r0
bl EventFlagBackupVeneer
cmp sb, #3
bne _02048FE0
bl sub_02048BFC
mov sb, r0
b _02048FE8
_02048FE0:
mov r0, sb
bl sub_02048C0C
_02048FE8:
str sb, [r4, #0x2c]
bl sub_02048C3C
str r0, [r4, #0x28]
bl GetRngSeed
str r0, [r4, #0x30]
cmp sb, #0
mvneq r0, #0
beq _0204900C
bl GetLanguageType
_0204900C:
ldr r1, _02049220 ; =0x09011416
strb r0, [r4, #0x34]
add r0, r4, #4
str r1, [r4, #0x24]
bl ReadStringSave
add r0, r4, #0x38
bl DumpScriptVariableValues
ldr r1, _02049224 ; =0x00007F6B
mov r0, r5
bl WriteMonsterInfoToSave
str r0, [r4, #0x438]
add r0, r5, #0x6b
ldr r1, _02049228 ; =0x000005DC
add r0, r0, #0x7f00
bl sub_020597B0
str r0, [r4, #0x43c]
add r0, r5, #0x47
ldr r1, _0204922C ; =0x000001F7
add r0, r0, #0x8500
bl CopyProgressInfoFromScratchTo
str r0, [r4, #0x440]
add r0, r5, #0x3e
ldr r1, _02049230 ; =0x00000DAC
add r0, r0, #0x8700
bl WriteItemsToSave
str r0, [r4, #0x444]
add r0, r5, #0xea
add r0, r0, #0x9400
mov r1, #0x10
bl sub_02050CF8
str r0, [r4, #0x448]
add r0, r5, #0xfa
add r0, r0, #0x9400
mov r1, #0x340
bl sub_0204E154
str r0, [r4, #0x450]
add r0, r5, #0x3a
ldr r1, _02049234 ; =0x000015A0
add r0, r0, #0x9800
bl sub_0205BFB0
str r0, [r4, #0x454]
add r0, r5, #0xda
ldr r1, _02049238 ; =0x00000237
add r0, r0, #0xad00
bl sub_0205FC20
str r0, [r4, #0x458]
add r0, r5, #0x11
add r0, r0, #0xb000
mov r1, #0xb
bl sub_020131F0
add r1, r5, #0x1c
str r0, [r4, #0x45c]
add r0, r1, #0xb000
#ifdef JAPAN
mov r1, #0x18c
#else
mov r1, #0x1dc
#endif
bl sub_0204A3E4
str r0, [r4, #0x460]
bl GetTime
mov r1, r7
mov r7, r0
bl _fsub
bl _f2d
mov r3, r0
mov r2, r1
ldr r0, _0204923C ; =_0209CD84
mov r1, r3
bl Debug_Print0
cmp sb, #2
moveq r5, #0
beq _0204912C
ldr r0, _02049240 ; =0x000F1206
bl sub_02048DC4
mov r5, r0
_0204912C:
cmp r5, #0
bne _020491C4
bl sub_02049350
cmp r0, #1
add r0, sp, #0
ldr r2, _02049218 ; =0x0000B65C
bne _02049188
mov r3, #0
mov r1, r4
str r3, [sp]
bl WriteSaveFile
movs r6, r0
bne _02049168
mov r0, #0
bl sub_02049360
_02049168:
ldr r2, _02049218 ; =0x0000B65C
mov r3, #0xc8
add r0, sp, #0
mov r1, r4
str r3, [sp]
bl WriteSaveFile
mov r8, r0
b _020491C4
_02049188:
mov r3, #0xc8
mov r1, r4
str r3, [sp]
bl WriteSaveFile
movs r8, r0
bne _020491A8
mov r0, #1
bl sub_02049360
_020491A8:
ldr r2, _02049218 ; =0x0000B65C
mov r3, #0
add r0, sp, #0
mov r1, r4
str r3, [sp]
bl WriteSaveFile
mov r6, r0
_020491C4:
bl GetTime
mov r1, r7
bl _fsub
bl _f2d
mov r3, r0
mov r2, r1
ldr r0, _02049244 ; =_0209CD94
mov r1, r3
bl Debug_Print0
mov r0, r4
bl MemFree
cmp r5, #0
movne r0, r5
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
cmp r6, #0
movne r0, r6
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
cmp r8, #0
moveq r8, #0
mov r0, r8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
#ifdef JAPAN
_02049218: .word 0x0000B60C
#else
_02049218: .word 0x0000B65C
#endif
_0204921C: .word _0209CD6C
_02049220: .word 0x09011416
_02049224: .word 0x00007F6B
_02049228: .word 0x000005DC
_0204922C: .word 0x000001F7
_02049230: .word 0x00000DAC
_02049234: .word 0x000015A0
_02049238: .word 0x00000237
_0204923C: .word _0209CD84
_02049240: .word 0x000F1206
_02049244: .word _0209CD94
arm_func_end NoteSaveBase
arm_func_start WriteQuickSaveInfo
WriteQuickSaveInfo: ; 0x02049248
stmdb sp!, {r3, lr}
mov ip, r0
mov r2, r1
mov r3, #0x190
add r0, sp, #0
mov r1, ip
str r3, [sp]
bl WriteSaveFile
ldmia sp!, {r3, pc}
arm_func_end WriteQuickSaveInfo
arm_func_start ReadSaveHeader
ReadSaveHeader: ; 0x0204926C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r0, _0204932C ; =0x0000B65C
mov r1, #5
bl MemAlloc
mov r4, r0
ldr r3, _02049330 ; =_020AFF40
mov r0, #0
mov r1, r4
mov r2, #0x38
str r0, [r3]
bl sub_0204A8E0
cmp r0, #0
beq _020492B4
mov r1, r4
mov r0, #0xc8
mov r2, #0x38
bl sub_0204A8E0
_020492B4:
cmp r0, #0
ldrne r0, _02049330 ; =_020AFF40
movne r1, #1
strne r1, [r0, #4]
bne _02049310
add r0, r4, #4
bl CheckStringSave
cmp r0, #0
ldreq r0, _02049330 ; =_020AFF40
moveq r1, #5
streq r1, [r0, #4]
beq _02049310
ldr r1, [r4, #0x24]
ldr r0, _02049334 ; =0x09011416
cmp r1, r0
ldrne r0, _02049330 ; =_020AFF40
movne r1, #4
strne r1, [r0, #4]
#ifdef EUROPE
bne _02049310
ldr r1, [r4, #0x2c]
ldr r0, _02049330 ; =_020AFF40
mov r2, #0
stmia r0, {r1, r2}
ldr r1, [r4, #0x28]
sub r0, r2, #1
cmp r1, r0
beq _02049310
ldrsb r0, [r4, #0x34]
bl sub_020205C0
bl sub_0202059C
#else
ldreq r2, [r4, #0x2c]
ldreq r0, _02049330 ; =_020AFF40
moveq r1, #0
streq r2, [r0]
streq r1, [r0, #4]
#endif
_02049310:
mov r0, r4
bl MemFree
ldr r0, _02049330 ; =_020AFF40
ldr r1, [r0]
str r1, [r5]
ldr r0, [r0, #4]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
#ifdef JAPAN
_0204932C: .word 0x0000B60C
#else
_0204932C: .word 0x0000B65C
#endif
_02049330: .word _020AFF40
_02049334: .word 0x09011416
arm_func_end ReadSaveHeader
arm_func_start sub_02049338
sub_02049338: ; 0x02049338
ldr r1, _0204934C ; =_020AFF40
ldr r2, [r1]
str r2, [r0]
ldr r0, [r1, #4]
bx lr
.align 2, 0
_0204934C: .word _020AFF40
arm_func_end sub_02049338
arm_func_start sub_02049350
sub_02049350: ; 0x02049350
ldr r0, _0204935C ; =_020AFF40
ldr r0, [r0, #8]
bx lr
.align 2, 0
_0204935C: .word _020AFF40
arm_func_end sub_02049350
arm_func_start sub_02049360
sub_02049360: ; 0x02049360
ldr r1, _0204936C ; =_020AFF40
str r0, [r1, #8]
bx lr
.align 2, 0
_0204936C: .word _020AFF40
arm_func_end sub_02049360
arm_func_start NoteLoadBase
NoteLoadBase: ; 0x02049370
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
ldr r0, _020495FC ; =0x0000B65C
mov r1, #5
bl MemAlloc
mov r4, r0
add r0, r4, #0x64
add r6, r0, #0x400
bl sub_02048BFC
mov r1, r0
ldr r0, _02049600 ; =_0209CDA4
bl Debug_Print0
mov r0, #0
bl SetNotifyNote
mov r0, #0
str r0, [sp]
ldr r2, _020495FC ; =0x0000B65C
add r0, sp, #0
mov r1, r4
bl ReadSaveFile
movs r5, r0
beq _02049400
ldr r2, _020495FC ; =0x0000B65C
mov r3, #0xc8
add r0, sp, #0
mov r1, r4
str r3, [sp]
bl ReadSaveFile
movs r5, r0
ldrne r0, _02049604 ; =_020AFF40
mvnne r1, #0
strne r1, [r0, #8]
ldreq r0, _02049604 ; =_020AFF40
moveq r1, #1
streq r1, [r0, #8]
b _0204940C
_02049400:
ldr r0, _02049604 ; =_020AFF40
mov r1, #0
str r1, [r0, #8]
_0204940C:
cmp r5, #0
cmpne r5, #2
bne _0204943C
add r0, r4, #4
bl CheckStringSave
cmp r0, #0
moveq r5, #5
beq _0204943C
ldr r1, [r4, #0x24]
ldr r0, _02049608 ; =0x09011416
cmp r1, r0
movne r5, #4
_0204943C:
cmp r5, #0
bne _020494A0
ldr r1, [r4, #0x2c]
ldr r0, _0204960C ; =_0209CDB8
bl Debug_Print0
ldr r0, [r4, #0x2c]
bl sub_02048C0C
ldr r0, [r4, #0x28]
bl sub_02048C4C
ldr r0, [r4, #0x30]
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl SetRngSeed
ldr r0, [r4, #0x2c]
cmp r0, #0
mvneq r0, #0
streqb r0, [r4, #0x34]
beq _020494A0
ldr r1, [r4, #0x28]
mvn r0, #0
cmp r1, r0
beq _020494A0
ldrsb r0, [r4, #0x34]
bl sub_020205C0
bl sub_0202059C
_020494A0:
cmp r5, #0
bne _020494B8
add r0, r4, #0x38
bl RestoreScriptVariableValues
cmp r0, #0
moveq r5, #4
_020494B8:
cmp r5, #0
bne _020495D4
ldr r1, _02049610 ; =0x00007F6B
mov r0, r6
bl ReadMonsterInfoFromSave
ldr r1, [r4, #0x438]
cmp r0, r1
add r0, r6, #0x6b
ldr r1, _02049614 ; =0x000005DC
add r0, r0, #0x7f00
movne r5, #3
bl sub_02059A74
ldr r1, [r4, #0x43c]
cmp r0, r1
add r0, r6, #0x47
ldr r1, _02049618 ; =0x000001F7
add r0, r0, #0x8500
movne r5, #3
bl CopyProgressInfoFromScratchFrom
ldr r1, [r4, #0x440]
cmp r0, r1
add r0, r6, #0x3e
ldr r1, _0204961C ; =0x00000DAC
add r0, r0, #0x8700
movne r5, #3
bl ReadItemsFromSave
ldr r1, [r4, #0x444]
cmp r0, r1
add r0, r6, #0xea
add r0, r0, #0x9400
mov r1, #0x10
movne r5, #3
bl sub_02050D84
ldr r1, [r4, #0x448]
cmp r0, r1
add r0, r6, #0xfa
add r0, r0, #0x9400
mov r1, #0x340
movne r5, #3
bl sub_0204E19C
ldr r1, [r4, #0x450]
cmp r0, r1
add r0, r6, #0x3a
ldr r1, _02049620 ; =0x000015A0
add r0, r0, #0x9800
movne r5, #3
bl sub_0205BD9C
ldr r1, [r4, #0x454]
cmp r0, r1
add r0, r6, #0xda
ldr r1, _02049624 ; =0x00000237
add r0, r0, #0xad00
movne r5, #3
bl sub_0205FAB0
ldr r1, [r4, #0x458]
cmp r0, r1
add r0, r6, #0x11
add r0, r0, #0xb000
mov r1, #0xb
movne r5, #3
bl sub_02013190
ldr r1, [r4, #0x45c]
cmp r0, r1
add r0, r6, #0x1c
add r0, r0, #0xb000
#ifdef JAPAN
mov r1, #0x18c
#else
mov r1, #0x1dc
#endif
movne r5, #3
bl sub_0204A1DC
ldr r1, [r4, #0x460]
cmp r0, r1
movne r5, #3
_020495D4:
cmp r5, #0
bne _020495E4
bl sub_02048CF8
b _020495E8
_020495E4:
bl sub_02048C5C
_020495E8:
mov r0, r4
bl MemFree
mov r0, r5
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
#ifdef JAPAN
_020495FC: .word 0x0000B60C
#else
_020495FC: .word 0x0000B65C
#endif
_02049600: .word _0209CDA4
_02049604: .word _020AFF40
_02049608: .word 0x09011416
_0204960C: .word _0209CDB8
_02049610: .word 0x00007F6B
_02049614: .word 0x000005DC
_02049618: .word 0x000001F7
_0204961C: .word 0x00000DAC
_02049620: .word 0x000015A0
_02049624: .word 0x00000237
arm_func_end NoteLoadBase
arm_func_start ReadQuickSaveInfo
ReadQuickSaveInfo: ; 0x02049628
stmdb sp!, {r3, lr}
mov ip, r0
mov r2, r1
mov r3, #0x190
add r0, sp, #0
mov r1, ip
str r3, [sp]
bl ReadSaveFile
ldmia sp!, {r3, pc}
arm_func_end ReadQuickSaveInfo
arm_func_start sub_0204964C
sub_0204964C: ; 0x0204964C
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, _02049678 ; =_0209CDD0
bl InitMenuWithWindowExtraInfo
cmp r0, #0
ldrne r1, _0204967C ; =_022AAEA4
ldrne r0, _02049680 ; =_020AFF4C
movne r2, #0
strne r4, [r1]
strne r2, [r0, #4]
ldmia sp!, {r4, pc}
.align 2, 0
_02049678: .word _0209CDD0
_0204967C: .word _022AAEA4
_02049680: .word _020AFF4C
arm_func_end sub_0204964C
arm_func_start sub_02049684
sub_02049684: ; 0x02049684
stmdb sp!, {r3, lr}
mov r0, #0xb4
mov r1, #8
bl MemAlloc
ldr r1, _020496EC ; =_020AFF4C
str r0, [r1]
add r0, r0, #0x1c
bl CopyMenuControlWindowExtraInfo
ldr r2, _020496EC ; =_020AFF4C
ldr r1, _020496F0 ; =_022AAEA4
ldr r3, [r2]
str r0, [r3, #0x18]
ldr r3, [r1]
ldr r1, [r2]
mov r0, #0
str r3, [r1, #8]
bl CreateDialogueBox
ldr r1, _020496EC ; =_020AFF4C
mov r3, #0
ldr r2, [r1]
strb r0, [r2]
ldr r2, [r1]
mov r0, #1
str r3, [r2, #4]
str r3, [r1, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_020496EC: .word _020AFF4C
_020496F0: .word _022AAEA4
arm_func_end sub_02049684
arm_func_start sub_020496F4
sub_020496F4: ; 0x020496F4
stmdb sp!, {r3, lr}
ldr r0, _0204972C ; =_020AFF4C
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0]
bl CloseDialogueBox
ldr r0, _0204972C ; =_020AFF4C
ldr r0, [r0]
bl MemFree
ldr r0, _0204972C ; =_020AFF4C
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0204972C: .word _020AFF4C
arm_func_end sub_020496F4
arm_func_start sub_02049730
sub_02049730: ; 0x02049730
stmdb sp!, {r3, lr}
ldr r1, _02049A18 ; =_020AFF4C
ldr r3, [r1]
ldr r0, [r3, #4]
cmp r0, #8
addls pc, pc, r0, lsl #2
b _02049A10
_0204974C: ; jump table
b _02049770 ; case 0
b _020497A4 ; case 1
b _020497C4 ; case 2
b _020497E8 ; case 3
b _020498C8 ; case 4
b _0204996C ; case 5
b _020499A0 ; case 6
b _020499CC ; case 7
b _020499FC ; case 8
_02049770:
ldr r0, [r3, #8]
ldr r1, _02049A1C ; =_0209CDE0
mov r2, r0, lsl #1
ldrsb r0, [r3]
ldrh r2, [r1, r2]
ldr r1, _02049A20 ; =0x00000408
mov r3, #0
bl ShowStringIdInDialogueBox
ldr r0, _02049A18 ; =_020AFF4C
mov r1, #1
ldr r0, [r0]
str r1, [r0, #4]
b _02049A10
_020497A4:
ldrsb r0, [r3]
bl IsDialogueBoxActive
cmp r0, #0
ldreq r0, _02049A18 ; =_020AFF4C
moveq r1, #2
ldreq r0, [r0]
streq r1, [r0, #4]
b _02049A10
_020497C4:
mov r0, #0xe0
mov r1, #0x88
mov r2, #1
bl sub_02029F88
ldr r0, _02049A18 ; =_020AFF4C
mov r1, #3
ldr r0, [r0]
str r1, [r0, #4]
b _02049A10
_020497E8:
bl sub_02003B94
ldr r0, _02049A18 ; =_020AFF4C
ldr r1, _02049A24 ; =_0209CE10
ldr r3, [r0]
ldr r2, [r3, #8]
ldr r1, [r1, r2, lsl #2]
str r1, [r3, #0x10]
ldr r0, [r0]
ldr r0, [r0, #0x10]
cmp r0, #4
bne _02049834
ldr r0, _02049A28 ; =0x000F120A
bl sub_02048DC4
mov r0, #2
bl NoteSaveBase
ldr r1, _02049A18 ; =_020AFF4C
ldr r1, [r1]
str r0, [r1, #0xc]
b _020498B0
_02049834:
cmp r0, #2
bne _020498A0
bl sub_02048CB8
ldr r2, _02049A18 ; =_020AFF4C
ldr r1, _02049A2C ; =0x000F1207
ldr r3, [r2]
str r0, [r3, #0x14]
ldr r0, [r2]
ldr r0, [r0, #0x14]
cmp r0, r1
bne _02049868
add r0, r1, #1
bl sub_02048DC4
_02049868:
mov r0, #2
bl NoteSaveBase
ldr r1, _02049A18 ; =_020AFF4C
ldr r2, [r1]
str r0, [r2, #0xc]
ldr r1, [r1]
ldr r0, [r1, #0xc]
cmp r0, #0
ldreq r0, [r1, #0x14]
ldreq r1, _02049A2C ; =0x000F1207
cmpeq r0, r1
bne _020498B0
bl sub_02048DC4
b _020498B0
_020498A0:
bl NoteSaveBase
ldr r1, _02049A18 ; =_020AFF4C
ldr r1, [r1]
str r0, [r1, #0xc]
_020498B0:
bl sub_02003BC8
ldr r0, _02049A18 ; =_020AFF4C
mov r1, #4
ldr r0, [r0]
str r1, [r0, #4]
b _02049A10
_020498C8:
bl sub_02029FBC
ldr r0, _02049A18 ; =_020AFF4C
ldr r3, [r0]
ldr r0, [r3, #0xc]
cmp r0, #1
bne _02049908
#ifdef JAPAN
ldr r1, _02049A30 ; =0x0000040C
ldrsb r0, [r3]
add r2, r1, #0xbd
#else
ldrsb r0, [r3]
ldr r1, _02049A30 ; =0x0000040C
mov r2, #0x238
#endif
mov r3, #0
bl ShowStringIdInDialogueBox
ldr r0, _02049A18 ; =_020AFF4C
mov r1, #8
ldr r0, [r0]
str r1, [r0, #4]
b _02049A10
_02049908:
cmp r0, #0
bne _02049944
ldr r0, [r3, #8]
ldr r1, _02049A34 ; =_0209CDF8
mov r2, r0, lsl #1
ldrsb r0, [r3]
ldrh r2, [r1, r2]
ldr r1, _02049A38 ; =0x0000061C
mov r3, #0
bl ShowStringIdInDialogueBox
ldr r0, _02049A18 ; =_020AFF4C
mov r1, #5
ldr r0, [r0]
str r1, [r0, #4]
b _02049A10
_02049944:
ldrsb r0, [r3]
ldr r1, _02049A38 ; =0x0000061C
ldr r2, _02049A3C ; =0x00000239
mov r3, #0
bl ShowStringIdInDialogueBox
ldr r0, _02049A18 ; =_020AFF4C
mov r1, #5
ldr r0, [r0]
str r1, [r0, #4]
b _02049A10
_0204996C:
ldrsb r0, [r3]
bl IsDialogueBoxActive
cmp r0, #0
bne _02049A10
ldr r0, _02049A18 ; =_020AFF4C
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_0202F334
ldr r0, _02049A18 ; =_020AFF4C
mov r1, #6
ldr r0, [r0]
str r1, [r0, #4]
b _02049A10
_020499A0:
ldrsb r0, [r3]
bl IsDialogueBoxActive
cmp r0, #0
bne _02049A10
ldr r0, _02049A18 ; =_020AFF4C
mov r1, #2
str r1, [r0, #4]
ldr r0, [r0]
mov r1, #7
str r1, [r0, #4]
b _02049A10
_020499CC:
mov r0, #9
str r0, [r3, #4]
ldr r2, [r1]
ldr r0, [r2, #0x18]
tst r0, #0x100
beq _020499F4
ldr r0, [r2, #0xa4]
ldr r1, [r1, #4]
ldr r2, [r2, #0xa0]
blx r2
_020499F4:
mov r0, #4
ldmia sp!, {r3, pc}
_020499FC:
ldrsb r0, [r3]
bl IsDialogueBoxActive
cmp r0, #0
bne _02049A10
bl CardBackupError
_02049A10:
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_02049A18: .word _020AFF4C
_02049A1C: .word _0209CDE0
_02049A20: .word 0x00000408
_02049A24: .word _0209CE10
_02049A28: .word 0x000F120A
_02049A2C: .word 0x000F1207
_02049A30: .word 0x0000040C
_02049A34: .word _0209CDF8
_02049A38: .word 0x0000061C
#ifdef JAPAN
_02049A3C: .word 0x000004CA
#else
_02049A3C: .word 0x00000239
#endif
arm_func_end sub_02049730
arm_func_start sub_02049A40
sub_02049A40: ; 0x02049A40
stmdb sp!, {r3, lr}
mov r3, r0
mov r2, r1
ldr r0, _02049A6C ; =_0209CE40
mov r1, r3
bl InitMenuWithWindowExtraInfo
cmp r0, #0
ldrne r0, _02049A70 ; =_020AFF54
movne r1, #0
strne r1, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_02049A6C: .word _0209CE40
_02049A70: .word _020AFF54
arm_func_end sub_02049A40
arm_func_start sub_02049A74
sub_02049A74: ; 0x02049A74
stmdb sp!, {r3, lr}
mov r0, #0xa8
mov r1, #8
bl MemAlloc
ldr r1, _02049ACC ; =_020AFF54
str r0, [r1]
add r0, r0, #0x10
bl CopyMenuControlWindowExtraInfo
ldr r1, _02049ACC ; =_020AFF54
ldr r1, [r1]
str r0, [r1, #0xc]
mov r0, #0
bl CreateDialogueBox
ldr r1, _02049ACC ; =_020AFF54
mov r3, #0
ldr r2, [r1]
strb r0, [r2]
ldr r2, [r1]
mov r0, #1
str r3, [r2, #4]
str r3, [r1, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_02049ACC: .word _020AFF54
arm_func_end sub_02049A74
arm_func_start sub_02049AD0
sub_02049AD0: ; 0x02049AD0
stmdb sp!, {r3, lr}
ldr r0, _02049B08 ; =_020AFF54
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0]
bl CloseDialogueBox
ldr r0, _02049B08 ; =_020AFF54
ldr r0, [r0]
bl MemFree
ldr r0, _02049B08 ; =_020AFF54
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_02049B08: .word _020AFF54
arm_func_end sub_02049AD0
arm_func_start sub_02049B0C
sub_02049B0C: ; 0x02049B0C
stmdb sp!, {r3, lr}
ldr r0, _02049D34 ; =_020AFF54
ldr r2, [r0]
ldr r0, [r2, #4]
cmp r0, #8
addls pc, pc, r0, lsl #2
b _02049D2C
_02049B28: ; jump table
b _02049B4C ; case 0
b _02049B74 ; case 1
b _02049B94 ; case 2
b _02049BB8 ; case 3
b _02049BEC ; case 4
b _02049C74 ; case 5
b _02049CA8 ; case 6
b _02049CD4 ; case 7
b _02049D18 ; case 8
_02049B4C:
ldrsb r0, [r2]
ldr r1, _02049D38 ; =0x00000408
#ifdef JAPAN
mov r2, #0x4e0
#else
ldr r2, _02049D3C ; =0x0000024F
#endif
mov r3, #0
bl ShowStringIdInDialogueBox
ldr r0, _02049D34 ; =_020AFF54
mov r1, #1
ldr r0, [r0]
str r1, [r0, #4]
b _02049D2C
_02049B74:
ldrsb r0, [r2]
bl IsDialogueBoxActive
cmp r0, #0
ldreq r0, _02049D34 ; =_020AFF54
moveq r1, #2
ldreq r0, [r0]
streq r1, [r0, #4]
b _02049D2C
_02049B94:
mov r0, #0xe0
mov r1, #0x88
mov r2, #1
bl sub_02029F88
ldr r0, _02049D34 ; =_020AFF54
mov r1, #3
ldr r0, [r0]
str r1, [r0, #4]
b _02049D2C
_02049BB8:
bl sub_02003B94
bl sub_02048454
mov r0, #0
bl NoteSaveBase
ldr r1, _02049D34 ; =_020AFF54
ldr r1, [r1]
str r0, [r1, #8]
bl sub_02003BC8
ldr r0, _02049D34 ; =_020AFF54
mov r1, #4
ldr r0, [r0]
str r1, [r0, #4]
b _02049D2C
_02049BEC:
bl sub_02029FBC
ldr r0, _02049D34 ; =_020AFF54
mov r3, #0
#ifdef JAPAN
ldr r2, [r0]
ldr r0, [r2, #8]
cmp r0, #1
bne _02049C2C
ldr r1, _02049D40 ; =0x0000040C
ldrsb r0, [r2]
add r2, r1, #0xbd
#else
ldr r1, [r0]
ldr r0, [r1, #8]
cmp r0, #1
bne _02049C2C
ldrsb r0, [r1]
ldr r1, _02049D40 ; =0x0000040C
mov r2, #0x238
#endif
bl ShowStringIdInDialogueBox
ldr r0, _02049D34 ; =_020AFF54
mov r1, #8
ldr r0, [r0]
str r1, [r0, #4]
b _02049D2C
_02049C2C:
cmp r0, #0
#ifdef JAPAN
ldrsb r0, [r2]
ldr r1, _02049D44 ; =0x0000061C
bne _02049C58
ldr r2, _0204A0B0 ; =0x000004E1
#else
ldrsb r0, [r1]
ldr r1, _02049D44 ; =0x0000061C
bne _02049C58
mov r2, #0x250
#endif
bl ShowStringIdInDialogueBox
ldr r0, _02049D34 ; =_020AFF54
mov r1, #5
ldr r0, [r0]
str r1, [r0, #4]
b _02049D2C
_02049C58:
ldr r2, _02049D48 ; =0x0000023A
bl ShowStringIdInDialogueBox
ldr r0, _02049D34 ; =_020AFF54
mov r1, #5
ldr r0, [r0]
str r1, [r0, #4]
b _02049D2C
_02049C74:
ldrsb r0, [r2]
bl IsDialogueBoxActive
cmp r0, #0
bne _02049D2C
ldr r0, _02049D34 ; =_020AFF54
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_0202F334
ldr r0, _02049D34 ; =_020AFF54
mov r1, #6
ldr r0, [r0]
str r1, [r0, #4]
b _02049D2C
_02049CA8:
ldrsb r0, [r2]
bl IsDialogueBoxActive
cmp r0, #0
bne _02049D2C
ldr r0, _02049D34 ; =_020AFF54
mov r1, #2
str r1, [r0, #4]
ldr r0, [r0]
mov r1, #7
str r1, [r0, #4]
b _02049D2C
_02049CD4:
mov r1, #9
add r0, sp, #0
str r1, [r2, #4]
bl sub_0204AF98
ldrb r0, [sp]
bl sub_02027180
ldr r0, _02049D34 ; =_020AFF54
ldr r1, [r0]
ldr r0, [r1, #0xc]
tst r0, #0x100
beq _02049D10
ldr r0, [r1, #0x98]
ldr r2, [r1, #0x94]
mov r1, #8
blx r2
_02049D10:
mov r0, #4
ldmia sp!, {r3, pc}
_02049D18:
ldrsb r0, [r2]
bl IsDialogueBoxActive
cmp r0, #0
bne _02049D2C
bl CardBackupError
_02049D2C:
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_02049D34: .word _020AFF54
_02049D38: .word 0x00000408
#ifdef JAPAN
_02049D40: .word 0x0000040C
_02049D44: .word 0x0000061C
_0204A0B0: .word 0x000004E1
_02049D48: .word 0x000004CB
#else
_02049D3C: .word 0x0000024F
_02049D40: .word 0x0000040C
_02049D44: .word 0x0000061C
_02049D48: .word 0x0000023A
#endif
arm_func_end sub_02049B0C
arm_func_start sub_02049D4C
sub_02049D4C: ; 0x02049D4C
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, _02049D78 ; =_0209CE58
bl InitMenuWithWindowExtraInfo
cmp r0, #0
ldrne r1, _02049D7C ; =_022AAEA8
ldrne r0, _02049D80 ; =_020AFF5C
movne r2, #0
strne r4, [r1]
strne r2, [r0]
ldmia sp!, {r4, pc}
.align 2, 0
_02049D78: .word _0209CE58
_02049D7C: .word _022AAEA8
_02049D80: .word _020AFF5C
arm_func_end sub_02049D4C
arm_func_start sub_02049D84
sub_02049D84: ; 0x02049D84
stmdb sp!, {r3, lr}
mov r0, #0xa8
mov r1, #8
bl MemAlloc
ldr r1, _02049DEC ; =_020AFF5C
str r0, [r1, #4]
add r0, r0, #0x10
bl CopyMenuControlWindowExtraInfo
ldr r2, _02049DEC ; =_020AFF5C
ldr r1, _02049DF0 ; =_022AAEA8
ldr r3, [r2, #4]
str r0, [r3, #0xc]
ldr r3, [r1]
ldr r1, [r2, #4]
mov r0, #0
str r3, [r1, #8]
bl CreateDialogueBox
ldr r1, _02049DEC ; =_020AFF5C
mov r3, #0
ldr r2, [r1, #4]
strb r0, [r2]
ldr r2, [r1, #4]
mov r0, #1
str r3, [r2, #4]
str r3, [r1]
ldmia sp!, {r3, pc}
.align 2, 0
_02049DEC: .word _020AFF5C
_02049DF0: .word _022AAEA8
arm_func_end sub_02049D84
arm_func_start sub_02049DF4
sub_02049DF4: ; 0x02049DF4
stmdb sp!, {r3, lr}
ldr r0, _02049E2C ; =_020AFF5C
ldr r0, [r0, #4]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0]
bl CloseDialogueBox
ldr r0, _02049E2C ; =_020AFF5C
ldr r0, [r0, #4]
bl MemFree
ldr r0, _02049E2C ; =_020AFF5C
mov r1, #0
str r1, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_02049E2C: .word _020AFF5C
arm_func_end sub_02049DF4
arm_func_start sub_02049E30
sub_02049E30: ; 0x02049E30
stmdb sp!, {r3, lr}
ldr r1, _0204A004 ; =_020AFF5C
ldr r3, [r1, #4]
ldr r0, [r3, #4]
cmp r0, #7
addls pc, pc, r0, lsl #2
b _02049FFC
_02049E4C: ; jump table
b _02049E6C ; case 0
b _02049EA0 ; case 1
b _02049EC0 ; case 2
b _02049EE4 ; case 3
b _02049F2C ; case 4
b _02049F6C ; case 5
b _02049FA0 ; case 6
b _02049FCC ; case 7
_02049E6C:
ldr r0, [r3, #8]
ldr r1, _0204A008 ; =_0209CE54
mov r2, r0, lsl #1
ldrsb r0, [r3]
ldrh r2, [r1, r2]
ldr r1, _0204A00C ; =0x00000408
mov r3, #0
bl ShowStringIdInDialogueBox
ldr r0, _0204A004 ; =_020AFF5C
mov r1, #1
ldr r0, [r0, #4]
str r1, [r0, #4]
b _02049FFC
_02049EA0:
ldrsb r0, [r3]
bl IsDialogueBoxActive
cmp r0, #0
ldreq r0, _0204A004 ; =_020AFF5C
moveq r1, #2
ldreq r0, [r0, #4]
streq r1, [r0, #4]
b _02049FFC
_02049EC0:
mov r0, #0xe0
mov r1, #0x88
mov r2, #1
bl sub_02029F88
ldr r0, _0204A004 ; =_020AFF5C
mov r1, #3
ldr r0, [r0, #4]
str r1, [r0, #4]
b _02049FFC
_02049EE4:
bl sub_02003B94
ldr r0, _0204A004 ; =_020AFF5C
ldr r0, [r0, #4]
ldr r0, [r0, #8]
cmp r0, #0
beq _02049F08
cmp r0, #1
beq _02049F10
b _02049F14
_02049F08:
bl sub_0204A624
b _02049F14
_02049F10:
bl sub_0204A72C
_02049F14:
bl sub_02003BC8
ldr r0, _0204A004 ; =_020AFF5C
mov r1, #4
ldr r0, [r0, #4]
str r1, [r0, #4]
b _02049FFC
_02049F2C:
bl sub_02029FBC
ldr r0, _0204A004 ; =_020AFF5C
ldr r2, _0204A010 ; =_0209CE50
ldr r0, [r0, #4]
ldr r1, _0204A014 ; =0x0000061C
ldr r3, [r0, #8]
ldrsb r0, [r0]
mov r3, r3, lsl #1
ldrh r2, [r2, r3]
mov r3, #0
bl ShowStringIdInDialogueBox
ldr r0, _0204A004 ; =_020AFF5C
mov r1, #5
ldr r0, [r0, #4]
str r1, [r0, #4]
b _02049FFC
_02049F6C:
ldrsb r0, [r3]
bl IsDialogueBoxActive
cmp r0, #0
bne _02049FFC
ldr r0, _0204A004 ; =_020AFF5C
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl sub_0202F334
ldr r0, _0204A004 ; =_020AFF5C
mov r1, #6
ldr r0, [r0, #4]
str r1, [r0, #4]
b _02049FFC
_02049FA0:
ldrsb r0, [r3]
bl IsDialogueBoxActive
cmp r0, #0
bne _02049FFC
ldr r0, _0204A004 ; =_020AFF5C
mov r1, #2
str r1, [r0]
ldr r0, [r0, #4]
mov r1, #7
str r1, [r0, #4]
b _02049FFC
_02049FCC:
mov r0, #8
str r0, [r3, #4]
ldr r2, [r1, #4]
ldr r0, [r2, #0xc]
tst r0, #0x100
beq _02049FF4
ldr r0, [r2, #0x98]
ldr r1, [r1]
ldr r2, [r2, #0x94]
blx r2
_02049FF4:
mov r0, #4
ldmia sp!, {r3, pc}
_02049FFC:
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_0204A004: .word _020AFF5C
_0204A008: .word _0209CE54
_0204A00C: .word 0x00000408
_0204A010: .word _0209CE50
_0204A014: .word 0x0000061C
arm_func_end sub_02049E30
arm_func_start sub_0204A018
sub_0204A018: ; 0x0204A018
ldr ip, _0204A024 ; =InitMenu
ldr r0, _0204A028 ; =_0209CE68
bx ip
.align 2, 0
_0204A024: .word InitMenu
_0204A028: .word _0209CE68
arm_func_end sub_0204A018
arm_func_start sub_0204A02C
sub_0204A02C: ; 0x0204A02C
stmdb sp!, {r3, lr}
mov r0, #1
mov r1, #8
bl MemAlloc
ldr r1, _0204A078 ; =_020AFF64
str r0, [r1]
mov r0, #0
bl CreateDialogueBox
ldr r3, _0204A078 ; =_020AFF64
ldr r1, _0204A07C ; =0x00000408
ldr ip, [r3]
#ifdef JAPAN
add r2, r1, #0xc1
#else
mov r2, #0x238
#endif
strb r0, [ip]
ldr r0, [r3]
mov r3, #0
ldrsb r0, [r0]
bl ShowStringIdInDialogueBox
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_0204A078: .word _020AFF64
_0204A07C: .word 0x00000408
arm_func_end sub_0204A02C
arm_func_start sub_0204A080
sub_0204A080: ; 0x0204A080
stmdb sp!, {r3, lr}
ldr r0, _0204A0B8 ; =_020AFF64
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0]
bl CloseDialogueBox
ldr r0, _0204A0B8 ; =_020AFF64
ldr r0, [r0]
bl MemFree
ldr r0, _0204A0B8 ; =_020AFF64
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0204A0B8: .word _020AFF64
arm_func_end sub_0204A080
arm_func_start sub_0204A0BC
sub_0204A0BC: ; 0x0204A0BC
stmdb sp!, {r3, lr}
ldr r0, _0204A0E4 ; =_020AFF64
ldr r0, [r0]
ldrsb r0, [r0]
bl IsDialogueBoxActive
cmp r0, #0
bne _0204A0DC
bl CardBackupError
_0204A0DC:
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_0204A0E4: .word _020AFF64
arm_func_end sub_0204A0BC
arm_func_start sub_0204A0E8
sub_0204A0E8: ; 0x0204A0E8
ldr ip, _0204A0F4 ; =InitMenu
ldr r0, _0204A0F8 ; =_0209CE78
bx ip
.align 2, 0
_0204A0F4: .word InitMenu
_0204A0F8: .word _0209CE78
arm_func_end sub_0204A0E8
arm_func_start sub_0204A0FC
sub_0204A0FC: ; 0x0204A0FC
stmdb sp!, {r3, lr}
mov r0, #1
mov r1, #8
bl MemAlloc
ldr r1, _0204A148 ; =_020AFF68
str r0, [r1]
mov r0, #0
bl CreateDialogueBox
ldr r3, _0204A148 ; =_020AFF68
ldr r1, _0204A14C ; =0x00000408
ldr ip, [r3]
#ifdef JAPAN
add r2, r1, #0xd0
#else
ldr r2, _0204A150 ; =0x00000247
#endif
strb r0, [ip]
ldr r0, [r3]
mov r3, #0
ldrsb r0, [r0]
bl ShowStringIdInDialogueBox
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_0204A148: .word _020AFF68
_0204A14C: .word 0x00000408
#ifndef JAPAN
_0204A150: .word 0x00000247
#endif
arm_func_end sub_0204A0FC
arm_func_start sub_0204A154
sub_0204A154: ; 0x0204A154
stmdb sp!, {r3, lr}
ldr r0, _0204A18C ; =_020AFF68
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0]
bl CloseDialogueBox
ldr r0, _0204A18C ; =_020AFF68
ldr r0, [r0]
bl MemFree
ldr r0, _0204A18C ; =_020AFF68
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0204A18C: .word _020AFF68
arm_func_end sub_0204A154
arm_func_start sub_0204A190
sub_0204A190: ; 0x0204A190
mov r0, #1
bx lr
arm_func_end sub_0204A190
arm_func_start sub_0204A198
sub_0204A198: ; 0x0204A198
ldr ip, _0204A1A0 ; =sub_0207B9EC
bx ip
.align 2, 0
_0204A1A0: .word sub_0207B9EC
arm_func_end sub_0204A198
arm_func_start sub_0204A1A4
sub_0204A1A4: ; 0x0204A1A4
stmdb sp!, {r3, lr}
ldr r0, _0204A1C4 ; =_022AAEAC
#ifdef JAPAN
mov r1, #0x1a0
#else
mov r1, #0x1f0
#endif
bl MemZero
ldr r1, _0204A1C4 ; =_022AAEAC
ldr r0, _0204A1C8 ; =_020AFF6C
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0204A1C4: .word _022AAEAC
_0204A1C8: .word _020AFF6C
arm_func_end sub_0204A1A4
arm_func_start sub_0204A1CC
sub_0204A1CC: ; 0x0204A1CC
ldr r0, _0204A1D8 ; =_020AFF6C
ldr r0, [r0]
bx lr
.align 2, 0
_0204A1D8: .word _020AFF6C
arm_func_end sub_0204A1CC
arm_func_start sub_0204A1DC
sub_0204A1DC: ; 0x0204A1DC
#ifdef JAPAN
#define SUB_0204A1DC_OFFSET -0x50
#else
#define SUB_0204A1DC_OFFSET 0
#endif
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x14
mov r3, r0
mov r2, r1
add r0, sp, #4
mov r1, r3
bl sub_02050974
ldr r1, _0204A3E0 ; =_020AFF6C
add r0, sp, #4
ldr r1, [r1]
mov r2, #0x200
bl CopyBitsFrom
#ifdef JAPAN
ldr r4, _0204A3E0 ; =_020AFF6C
mov r7, #0
add r6, sp, #4
mov r5, #0x28
_0204A220:
ldr r0, [r4]
add r1, r7, r7, lsl #2
add r3, r0, #0x40
mov r0, r6
mov r2, r5
add r1, r3, r1
bl CopyBitsFrom
add r7, r7, #1
cmp r7, #0x10
#else
ldr r5, _0204A3E0 ; =_020AFF6C
mov r8, #0
add r7, sp, #4
mov r6, #0x50
mov r4, #0xa
_0204A220:
ldr r1, [r5]
mov r0, r7
add r1, r1, #0x40
mla r1, r8, r4, r1
mov r2, r6
bl CopyBitsFrom
add r8, r8, #1
cmp r8, #0x10
#endif
blt _0204A220
ldr r5, _0204A3E0 ; =_020AFF6C
mov r8, #0
add r7, sp, #4
mov r6, #0x60
mov r4, #0xc
_0204A258:
ldr r1, [r5]
mov r0, r7
add r1, r1, #0xe0 + SUB_0204A1DC_OFFSET
mla r1, r8, r4, r1
mov r2, r6
bl CopyBitsFrom
add r8, r8, #1
cmp r8, #0x10
blt _0204A258
mov sb, #0
mov r5, #1
ldr sl, _0204A3E0 ; =_020AFF6C
mov r4, sb
add r8, sp, #4
add r7, sp, #0
mov r6, r5
_0204A298:
mov r0, r8
mov r1, r7
mov r2, r6
bl CopyBitsFrom
ldrb r0, [sp]
cmp r0, #0
ldr r0, [sl]
movne r1, r5
add r0, r0, sb
moveq r1, r4
add sb, sb, #1
strb r1, [r0, #0x1a0 + SUB_0204A1DC_OFFSET]
cmp sb, #0x10
blt _0204A298
ldr r1, _0204A3E0 ; =_020AFF6C
add r0, sp, #4
ldr r1, [r1]
mov r2, #0x1b0
add r1, r1, #0x1b0 + SUB_0204A1DC_OFFSET
bl CopyBitsFrom
ldr r1, _0204A3E0 ; =_020AFF6C
add r0, sp, #4
ldr r1, [r1]
mov r2, #0xe
add r1, r1, #0xe6 + SUB_0204A1DC_OFFSET
add r1, r1, #0x100
bl CopyBitsFrom
ldr r1, _0204A3E0 ; =_020AFF6C
add r0, sp, #4
ldr r1, [r1]
mov r2, #0xe
add r1, r1, #0x1e8 + SUB_0204A1DC_OFFSET
bl CopyBitsFrom
add r0, sp, #4
add r1, sp, #0
mov r2, #1
bl CopyBitsFrom
ldrb r0, [sp]
ldr r1, _0204A3E0 ; =_020AFF6C
cmp r0, #0
movne r3, #1
ldr r2, [r1]
moveq r3, #0
strb r3, [r2, #0x1ea + SUB_0204A1DC_OFFSET]
add r0, sp, #4
add r1, sp, #0
mov r2, #1
bl CopyBitsFrom
ldrb r0, [sp]
ldr r1, _0204A3E0 ; =_020AFF6C
cmp r0, #0
movne r3, #1
ldr r2, [r1]
moveq r3, #0
strb r3, [r2, #0x1eb + SUB_0204A1DC_OFFSET]
add r0, sp, #4
add r1, sp, #0
mov r2, #1
bl CopyBitsFrom
ldrb r0, [sp]
ldr r1, _0204A3E0 ; =_020AFF6C
cmp r0, #0
movne r3, #1
ldr r2, [r1]
moveq r3, #0
strb r3, [r2, #0x1ec + SUB_0204A1DC_OFFSET]
add r0, sp, #4
add r1, sp, #0
mov r2, #1
bl CopyBitsFrom
ldrb r0, [sp]
ldr r1, _0204A3E0 ; =_020AFF6C
cmp r0, #0
movne r2, #1
ldr r1, [r1]
moveq r2, #0
add r0, sp, #4
strb r2, [r1, #0x1ed + SUB_0204A1DC_OFFSET]
bl sub_020509BC
ldr r0, [sp, #0xc]
add sp, sp, #0x14
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_0204A3E0: .word _020AFF6C
arm_func_end sub_0204A1DC
arm_func_start sub_0204A3E4
sub_0204A3E4: ; 0x0204A3E4
#ifdef JAPAN
#define SUB_0204A3E4_OFFSET -0x50
#else
#define SUB_0204A3E4_OFFSET 0
#endif
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x14
mov r5, r0
mov r2, r1
mov r4, #0xff
mov r3, #0
add r0, sp, #4
mov r1, r5
strb r4, [sp, #1]
strb r3, [sp]
bl sub_02050990
ldr r1, _0204A5CC ; =_020AFF6C
add r0, sp, #4
ldr r1, [r1]
mov r2, #0x200
bl CopyBitsTo
#ifdef JAPAN
ldr r4, _0204A5CC ; =_020AFF6C
mov r7, #0
add r6, sp, #4
mov r5, #0x28
_0204A438:
ldr r0, [r4]
add r1, r7, r7, lsl #2
add r3, r0, #0x40
mov r0, r6
mov r2, r5
add r1, r3, r1
bl CopyBitsTo
add r7, r7, #1
cmp r7, #0x10
#else
ldr r5, _0204A5CC ; =_020AFF6C
mov r8, #0
add r7, sp, #4
mov r6, #0x50
mov r4, #0xa
_0204A438:
ldr r1, [r5]
mov r0, r7
add r1, r1, #0x40
mla r1, r8, r4, r1
mov r2, r6
bl CopyBitsTo
add r8, r8, #1
cmp r8, #0x10
#endif
blt _0204A438
ldr r5, _0204A5CC ; =_020AFF6C
mov r8, #0
add r7, sp, #4
mov r6, #0x60
mov r4, #0xc
_0204A470:
ldr r1, [r5]
mov r0, r7
add r1, r1, #0xe0 + SUB_0204A3E4_OFFSET
mla r1, r8, r4, r1
mov r2, r6
bl CopyBitsTo
add r8, r8, #1
cmp r8, #0x10
blt _0204A470
ldr r5, _0204A5CC ; =_020AFF6C
mov r4, #0
add r8, sp, #0
add sb, sp, #1
add r7, sp, #4
mov r6, #1
_0204A4AC:
ldr r0, [r5]
mov r2, r6
add r0, r0, r4
ldrb r0, [r0, #0x1a0 + SUB_0204A3E4_OFFSET]
cmp r0, #0
movne r1, sb
moveq r1, r8
mov r0, r7
bl CopyBitsTo
add r4, r4, #1
cmp r4, #0x10
blt _0204A4AC
ldr r1, _0204A5CC ; =_020AFF6C
add r0, sp, #4
ldr r1, [r1]
mov r2, #0x1b0
add r1, r1, #0x1b0 + SUB_0204A3E4_OFFSET
bl CopyBitsTo
ldr r1, _0204A5CC ; =_020AFF6C
add r0, sp, #4
ldr r1, [r1]
mov r2, #0xe
add r1, r1, #0xe6 + SUB_0204A3E4_OFFSET
add r1, r1, #0x100
bl CopyBitsTo
ldr r1, _0204A5CC ; =_020AFF6C
add r0, sp, #4
ldr r1, [r1]
mov r2, #0xe
add r1, r1, #0x1e8 + SUB_0204A3E4_OFFSET
bl CopyBitsTo
ldr r0, _0204A5CC ; =_020AFF6C
mov r2, #1
ldr r0, [r0]
ldrb r0, [r0, #0x1ea + SUB_0204A3E4_OFFSET]
cmp r0, #0
addne r1, sp, #1
addeq r1, sp, #0
add r0, sp, #4
bl CopyBitsTo
ldr r0, _0204A5CC ; =_020AFF6C
mov r2, #1
ldr r0, [r0]
ldrb r0, [r0, #0x1eb + SUB_0204A3E4_OFFSET]
cmp r0, #0
addne r1, sp, #1
addeq r1, sp, #0
add r0, sp, #4
bl CopyBitsTo
ldr r0, _0204A5CC ; =_020AFF6C
mov r2, #1
ldr r0, [r0]
ldrb r0, [r0, #0x1ec + SUB_0204A3E4_OFFSET]
cmp r0, #0
addne r1, sp, #1
addeq r1, sp, #0
add r0, sp, #4
bl CopyBitsTo
ldr r0, _0204A5CC ; =_020AFF6C
mov r2, #1
ldr r0, [r0]
ldrb r0, [r0, #0x1ed + SUB_0204A3E4_OFFSET]
cmp r0, #0
addne r1, sp, #1
addeq r1, sp, #0
add r0, sp, #4
bl CopyBitsTo
add r0, sp, #4
bl sub_020509BC
ldr r0, [sp, #0xc]
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0204A5CC: .word _020AFF6C
arm_func_end sub_0204A3E4
arm_func_start sub_0204A5D0
sub_0204A5D0: ; 0x0204A5D0
stmdb sp!, {r4, lr}
bl sub_02084304
bl OS_GetLockID
mov r4, r0
mov r0, r4, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0208346C
ldr r0, _0204A61C ; =0x00001101
bl sub_02083B3C
bl sub_02083B14
ldr r2, _0204A620 ; =_022AB09C
mov r1, r4, lsl #0x10
str r0, [r2]
mov r0, r1, lsr #0x10
bl sub_0208347C
mov r0, r4, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_02079094
ldmia sp!, {r4, pc}
.align 2, 0
_0204A61C: .word 0x00001101
_0204A620: .word _022AB09C
arm_func_end sub_0204A5D0
arm_func_start sub_0204A624
sub_0204A624: ; 0x0204A624
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x14
sub sp, sp, #0x400
bl sub_02083B00
and r0, r0, #0xff
cmp r0, #1
bne _0204A720
mov r1, #0
mov r0, #0xff
add r8, sp, #0x14
_0204A64C:
strb r0, [r8, r1]
add r1, r1, #1
cmp r1, #0x400
blt _0204A64C
mov r7, #0
mov fp, r7
_0204A664:
mov r6, #0
mov sb, r7, lsl #8
b _0204A70C
_0204A670:
bl OS_GetLockID
mov r5, r0
bl sub_02002580
mov r4, r0
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0208346C
mov r0, r4
mov r1, #0x13
bl sub_020027F8
str fp, [sp]
mov sl, r0
str fp, [sp, #4]
mov r1, #8
str r1, [sp, #8]
mov r1, #0xa
str r1, [sp, #0xc]
mov r1, #2
str r1, [sp, #0x10]
mov r0, r8
mov r1, sb
mov r2, #0x400
mov r3, fp
bl sub_02083A18
mov r1, sl
mov sl, r0
mov r0, r4
bl sub_020027F8
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0208347C
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_02079094
cmp sl, #0
bne _0204A714
mov r0, #0
bl CardPullOutWithStatus
add r6, r6, #1
_0204A70C:
cmp r6, #4
blt _0204A670
_0204A714:
add r7, r7, #1
cmp r7, #0x100
blt _0204A664
_0204A720:
add sp, sp, #0x14
add sp, sp, #0x400
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_0204A624
arm_func_start sub_0204A72C
sub_0204A72C: ; 0x0204A72C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x18
sub sp, sp, #0x400
mov r0, #0x400
bl RandInt
str r0, [sp, #0x14]
bl sub_02083B00
and r0, r0, #0xff
cmp r0, #1
bne _0204A8D4
mov r2, #0
mov r1, #0xff
_0204A75C:
add r0, sp, #0x18
strb r1, [r0, r2]
add r2, r2, #1
cmp r2, #0x400
blt _0204A75C
mov r5, #0
_0204A774:
mov r1, r5, lsr #0x1f
rsb r0, r1, r5, lsl #22
mov r8, r5, lsl #8
add sb, r1, r0, ror #22
mov r4, #0
b _0204A8C0
_0204A78C:
bl OS_GetLockID
mov r6, r0
bl sub_02002580
mov r7, r0
mov r0, r6, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0208346C
mov r0, r7
mov r1, #0x13
bl sub_020027F8
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
mov r1, #6
str r1, [sp, #8]
mov r1, #1
str r1, [sp, #0xc]
mov r1, #0
str r1, [sp, #0x10]
mov fp, r0
mov r0, r8
add r1, sp, #0x18
mov r2, #0x400
mov r3, #0
bl sub_02083A18
cmp r0, #0
beq _0204A820
mov r0, r7
mov r1, fp
bl sub_020027F8
mov r0, r6, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0208347C
mov r0, r6, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_02079094
b _0204A8C8
_0204A820:
ldr r0, [sp, #0x14]
cmp sb, r0
bne _0204A84C
mov sl, #0
_0204A830:
mov r0, #0x100
bl RandInt
add r1, sp, #0x18
strb r0, [r1, sl]
add sl, sl, #1
cmp sl, #0x400
blt _0204A830
_0204A84C:
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #8
str r0, [sp, #8]
mov r0, #0xa
str r0, [sp, #0xc]
mov r0, #2
str r0, [sp, #0x10]
add r0, sp, #0x18
mov r1, r8
mov r2, #0x400
mov r3, #0
bl sub_02083A18
mov sl, r0
mov r1, fp
mov r0, r7
bl sub_020027F8
mov r0, r6, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0208347C
mov r0, r6, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_02079094
cmp sl, #0
bne _0204A8C8
mov r0, #0
bl CardPullOutWithStatus
add r4, r4, #1
_0204A8C0:
cmp r4, #4
blt _0204A78C
_0204A8C8:
add r5, r5, #1
cmp r5, #0x100
blt _0204A774
_0204A8D4:
add sp, sp, #0x18
add sp, sp, #0x400
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_0204A72C
arm_func_start sub_0204A8E0
sub_0204A8E0: ; 0x0204A8E0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x14
mov r4, r0
mov sb, r1
mov r8, r2
bl sub_02083B00
and r0, r0, #0xff
cmp r0, #1
movne r0, #3
bne _0204A9C0
mov r6, #0
mov r7, r4, lsl #8
mov fp, r6
b _0204A9B4
_0204A918:
bl OS_GetLockID
mov r5, r0
bl sub_02002580
mov r4, r0
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0208346C
mov r0, r4
mov r1, #0x13
bl sub_020027F8
str fp, [sp]
mov sl, r0
str fp, [sp, #4]
mov r1, #6
str r1, [sp, #8]
mov r1, #1
str r1, [sp, #0xc]
mov r0, r7
mov r1, sb
mov r2, r8
mov r3, fp
str fp, [sp, #0x10]
bl sub_02083A18
mov r1, sl
mov sl, r0
mov r0, r4
bl sub_020027F8
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0208347C
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_02079094
cmp sl, #0
movne r0, #0
bne _0204A9C0
mov r0, #0
bl CardPullOutWithStatus
add r6, r6, #1
_0204A9B4:
cmp r6, #4
blt _0204A918
mov r0, #3
_0204A9C0:
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_0204A8E0
arm_func_start sub_0204A9C8
sub_0204A9C8: ; 0x0204A9C8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x214
mov r4, r0
mov sb, r1
mov r8, r2
bl sub_02083B00
and r0, r0, #0xff
cmp r0, #1
movne r0, #3
bne _0204AB10
mov r7, r4, lsl #8
mov r6, #0
mov fp, #6
b _0204AB04
_0204AA00:
bl OS_GetLockID
mov r5, r0
bl sub_02002580
mov r1, #0x13
mov r4, r0
bl sub_020027F8
mov sl, r0
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0208346C
mov r0, #0
str r0, [sp]
stmib sp, {r0, fp}
mov r0, #1
str r0, [sp, #0xc]
mov r0, #0
str r0, [sp, #0x10]
mov r0, r7
add r1, sp, #0x14
mov r2, #0x80
mov r3, #0
bl sub_02083A18
cmp r0, #0
bne _0204AA8C
mov r0, r4
mov r1, sl
bl sub_020027F8
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0208347C
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_02079094
mov r0, #4
b _0204AB10
_0204AA8C:
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r0, #8
str r0, [sp, #8]
mov r0, #0xa
str r0, [sp, #0xc]
mov r0, #2
str r0, [sp, #0x10]
mov r0, sb
mov r1, r7
mov r2, r8
mov r3, #0
bl sub_02083A18
mov r1, sl
mov sl, r0
mov r0, r4
bl sub_020027F8
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_0208347C
mov r0, r5, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_02079094
cmp sl, #0
movne r0, #0
bne _0204AB10
mov r0, #0
bl CardPullOutWithStatus
add r6, r6, #1
_0204AB04:
cmp r6, #4
blt _0204AA00
mov r0, #3
_0204AB10:
add sp, sp, #0x214
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_0204A9C8
arm_func_start sub_0204AB18
sub_0204AB18: ; 0x0204AB18
ldr ip, _0204AB20 ; =sub_0204AB24
bx ip
.align 2, 0
_0204AB20: .word sub_0204AB24
arm_func_end sub_0204AB18
arm_func_start sub_0204AB24
sub_0204AB24: ; 0x0204AB24
stmdb sp!, {r3}
sub sp, sp, #4
ldr r0, _0204AB74 ; =_022AB0A0
mov r1, #2
mov r2, #0
strb r1, [r0]
strb r2, [r0, #2]
mov r1, #1
strb r1, [r0, #1]
strb r1, [r0, #3]
strb r2, [r0, #4]
strb r1, [r0, #5]
strb r1, [r0, #6]
strb r2, [r0, #7]
strb r2, [r0, #8]
strb r2, [sp]
strb r2, [r0, #9]
add sp, sp, #4
ldmia sp!, {r3}
bx lr
.align 2, 0
_0204AB74: .word _022AB0A0
arm_func_end sub_0204AB24
arm_func_start sub_0204AB78
sub_0204AB78: ; 0x0204AB78
ldr r3, _0204AB94 ; =_022AB0A0
mov r2, #0xa
_0204AB80:
ldrb r1, [r3], #1
subs r2, r2, #1
strb r1, [r0], #1
bne _0204AB80
bx lr
.align 2, 0
_0204AB94: .word _022AB0A0
arm_func_end sub_0204AB78
arm_func_start sub_0204AB98
sub_0204AB98: ; 0x0204AB98
ldr r3, _0204ABB4 ; =_022AB0A0
mov r2, #0xa
_0204ABA0:
ldrb r1, [r0], #1
subs r2, r2, #1
strb r1, [r3], #1
bne _0204ABA0
bx lr
.align 2, 0
_0204ABB4: .word _022AB0A0
arm_func_end sub_0204AB98
arm_func_start sub_0204ABB8
sub_0204ABB8: ; 0x0204ABB8
stmdb sp!, {r4, lr}
ldr r1, _0204ACC0 ; =_022AB0A0
mov r2, #2
mov r4, r0
bl CopyBitsTo
ldr r1, _0204ACC4 ; =_022AB0A2
mov r0, r4
mov r2, #3
bl CopyBitsTo
ldr r1, _0204ACC8 ; =_022AB0A1
mov r0, r4
mov r2, #2
bl CopyBitsTo
ldr r0, _0204ACCC ; =_022AB0A0
mov r2, #1
ldrb r0, [r0, #3]
cmp r0, #0
ldrne r1, _0204ACD0 ; =_0209CE88
mov r0, r4
ldreq r1, _0204ACD4 ; =_0209CE89
bl CopyBitsTo
ldr r0, _0204ACCC ; =_022AB0A0
mov r2, #1
ldrb r0, [r0, #4]
cmp r0, #0
ldrne r1, _0204ACD0 ; =_0209CE88
mov r0, r4
ldreq r1, _0204ACD4 ; =_0209CE89
bl CopyBitsTo
ldr r0, _0204ACCC ; =_022AB0A0
mov r2, #1
ldrb r0, [r0, #5]
cmp r0, #0
ldrne r1, _0204ACD0 ; =_0209CE88
mov r0, r4
ldreq r1, _0204ACD4 ; =_0209CE89
bl CopyBitsTo
ldr r0, _0204ACCC ; =_022AB0A0
mov r2, #1
ldrb r0, [r0, #6]
cmp r0, #0
ldrne r1, _0204ACD0 ; =_0209CE88
mov r0, r4
ldreq r1, _0204ACD4 ; =_0209CE89
bl CopyBitsTo
ldr r0, _0204ACCC ; =_022AB0A0
mov r2, #1
ldrb r0, [r0, #7]
cmp r0, #0
ldrne r1, _0204ACD0 ; =_0209CE88
mov r0, r4
ldreq r1, _0204ACD4 ; =_0209CE89
bl CopyBitsTo
ldr r0, _0204ACCC ; =_022AB0A0
mov r2, #1
ldrb r0, [r0, #8]
cmp r0, #0
ldrne r1, _0204ACD0 ; =_0209CE88
mov r0, r4
ldreq r1, _0204ACD4 ; =_0209CE89
bl CopyBitsTo
ldr r1, _0204ACD8 ; =_022AB0A9
mov r0, r4
mov r2, #3
bl CopyBitsTo
ldmia sp!, {r4, pc}
.align 2, 0
_0204ACC0: .word _022AB0A0
_0204ACC4: .word _022AB0A2
_0204ACC8: .word _022AB0A1
_0204ACCC: .word _022AB0A0
_0204ACD0: .word _0209CE88
_0204ACD4: .word _0209CE89
_0204ACD8: .word _022AB0A9
arm_func_end sub_0204ABB8
arm_func_start sub_0204ACDC
sub_0204ACDC: ; 0x0204ACDC
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
add r1, sp, #0
mov r2, #2
mov r4, r0
bl CopyBitsFrom
ldrb r0, [sp]
ldr r3, _0204AE5C ; =_022AB0A0
add r1, sp, #0
and ip, r0, #3
mov r0, r4
mov r2, #3
strb ip, [r3]
bl CopyBitsFrom
ldrb r0, [sp]
ldr r3, _0204AE5C ; =_022AB0A0
add r1, sp, #0
and ip, r0, #7
mov r0, r4
mov r2, #2
strb ip, [r3, #2]
bl CopyBitsFrom
ldrb r0, [sp]
ldr r2, _0204AE5C ; =_022AB0A0
add r1, sp, #0
and r3, r0, #3
strb r3, [r2, #1]
mov r0, r4
mov r2, #1
bl CopyBitsFrom
ldrb r0, [sp]
ldr r3, _0204AE5C ; =_022AB0A0
add r1, sp, #0
tst r0, #1
movne ip, #1
moveq ip, #0
mov r0, r4
mov r2, #1
strb ip, [r3, #3]
bl CopyBitsFrom
ldrb r0, [sp]
ldr r3, _0204AE5C ; =_022AB0A0
add r1, sp, #0
tst r0, #1
movne ip, #1
moveq ip, #0
mov r0, r4
mov r2, #1
strb ip, [r3, #4]
bl CopyBitsFrom
ldrb r0, [sp]
ldr r2, _0204AE5C ; =_022AB0A0
add r1, sp, #0
tst r0, #1
movne r3, #1
moveq r3, #0
strb r3, [r2, #5]
mov r0, r4
mov r2, #1
bl CopyBitsFrom
ldrb r0, [sp]
ldr r2, _0204AE5C ; =_022AB0A0
add r1, sp, #0
tst r0, #1
movne r3, #1
moveq r3, #0
strb r3, [r2, #6]
mov r0, r4
mov r2, #1
bl CopyBitsFrom
ldrb r0, [sp]
ldr r2, _0204AE5C ; =_022AB0A0
add r1, sp, #0
tst r0, #1
movne r3, #1
moveq r3, #0
strb r3, [r2, #7]
mov r0, r4
mov r2, #1
bl CopyBitsFrom
ldrb r0, [sp]
ldr r2, _0204AE5C ; =_022AB0A0
add r1, sp, #0
tst r0, #1
movne r3, #1
moveq r3, #0
strb r3, [r2, #8]
mov r0, r4
mov r2, #3
bl CopyBitsFrom
ldrb r1, [sp]
ldr r0, _0204AE5C ; =_022AB0A0
and r1, r1, #7
strb r1, [r0, #9]
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
_0204AE5C: .word _022AB0A0
arm_func_end sub_0204ACDC
arm_func_start sub_0204AE60
sub_0204AE60: ; 0x0204AE60
ldr r0, _0204AE7C ; =_022AB0A0
ldrb r0, [r0]
cmp r0, #1
movhs r0, #1
movlo r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_0204AE7C: .word _022AB0A0
arm_func_end sub_0204AE60
arm_func_start sub_0204AE80
sub_0204AE80: ; 0x0204AE80
ldr r0, _0204AE9C ; =_022AB0A0
ldrb r0, [r0]
cmp r0, #2
movhs r0, #1
movlo r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_0204AE9C: .word _022AB0A0
arm_func_end sub_0204AE80
arm_func_start sub_0204AEA0
sub_0204AEA0: ; 0x0204AEA0
ldr r0, _0204AEAC ; =_022AB0A0
ldrb r0, [r0, #2]
bx lr
.align 2, 0
_0204AEAC: .word _022AB0A0
arm_func_end sub_0204AEA0
arm_func_start sub_0204AEB0
sub_0204AEB0: ; 0x0204AEB0
ldr r1, _0204AEBC ; =_022AB0A0
strb r0, [r1, #2]
bx lr
.align 2, 0
_0204AEBC: .word _022AB0A0
arm_func_end sub_0204AEB0
arm_func_start sub_0204AEC0
sub_0204AEC0: ; 0x0204AEC0
ldr r0, _0204AECC ; =_022AB0A0
ldrb r0, [r0, #1]
bx lr
.align 2, 0
_0204AECC: .word _022AB0A0
arm_func_end sub_0204AEC0
arm_func_start sub_0204AED0
sub_0204AED0: ; 0x0204AED0
ldr r0, _0204AEDC ; =_022AB0A0
ldrb r0, [r0, #3]
bx lr
.align 2, 0
_0204AEDC: .word _022AB0A0
arm_func_end sub_0204AED0
arm_func_start sub_0204AEE0
sub_0204AEE0: ; 0x0204AEE0
ldr r0, _0204AEEC ; =_022AB0A0
ldrb r0, [r0, #4]
bx lr
.align 2, 0
_0204AEEC: .word _022AB0A0
arm_func_end sub_0204AEE0
arm_func_start sub_0204AEF0
sub_0204AEF0: ; 0x0204AEF0
ldr r0, _0204AEFC ; =_022AB0A0
ldrb r0, [r0, #5]
bx lr
.align 2, 0
_0204AEFC: .word _022AB0A0
arm_func_end sub_0204AEF0
arm_func_start sub_0204AF00
sub_0204AF00: ; 0x0204AF00
ldr r0, _0204AF0C ; =_022AB0A0
ldrb r0, [r0, #6]
bx lr
.align 2, 0
_0204AF0C: .word _022AB0A0
arm_func_end sub_0204AF00
arm_func_start sub_0204AF10
sub_0204AF10: ; 0x0204AF10
ldr r0, _0204AF1C ; =_022AB0A0
ldrb r0, [r0, #7]
bx lr
.align 2, 0
_0204AF1C: .word _022AB0A0
arm_func_end sub_0204AF10
arm_func_start sub_0204AF20
sub_0204AF20: ; 0x0204AF20
ldr r0, _0204AF2C ; =_022AB0A0
ldrb r0, [r0, #8]
bx lr
.align 2, 0
_0204AF2C: .word _022AB0A0
arm_func_end sub_0204AF20
arm_func_start sub_0204AF30
sub_0204AF30: ; 0x0204AF30
ldr r0, _0204AF54 ; =_022AB0A0
ldrb r1, [r0, #1]
cmp r1, #1
cmpne r1, #2
ldrneb r0, [r0, #2]
cmpne r0, #3
moveq r0, #1
movne r0, #0
bx lr
.align 2, 0
_0204AF54: .word _022AB0A0
arm_func_end sub_0204AF30
arm_func_start sub_0204AF58
sub_0204AF58: ; 0x0204AF58
ldr r0, _0204AF74 ; =_022AB0A0
ldrb r0, [r0, #2]
cmp r0, #1
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_0204AF74: .word _022AB0A0
arm_func_end sub_0204AF58
arm_func_start sub_0204AF78
sub_0204AF78: ; 0x0204AF78
ldr r0, _0204AF94 ; =_022AB0A0
ldrb r0, [r0, #2]
cmp r0, #2
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_0204AF94: .word _022AB0A0
arm_func_end sub_0204AF78
arm_func_start sub_0204AF98
sub_0204AF98: ; 0x0204AF98
ldr r1, _0204AFA8 ; =_022AB0A0
ldrb r1, [r1, #9]
strb r1, [r0]
bx lr
.align 2, 0
_0204AFA8: .word _022AB0A0
arm_func_end sub_0204AF98
arm_func_start sub_0204AFAC
sub_0204AFAC: ; 0x0204AFAC
ldrb r1, [r0]
ldr r0, _0204AFBC ; =_022AB0A0
strb r1, [r0, #9]
bx lr
.align 2, 0
_0204AFBC: .word _022AB0A0
arm_func_end sub_0204AFAC
arm_func_start GetGameMode
GetGameMode: ; 0x0204AFC0
ldr r0, _0204AFCC ; =GAME_MODE
ldrb r0, [r0]
bx lr
.align 2, 0
_0204AFCC: .word GAME_MODE
arm_func_end GetGameMode