pmd-sky/asm/main_02034974.s
2025-10-22 21:15:44 -04:00

10173 lines
185 KiB
ArmAsm

.include "asm/macros.inc"
.include "main_02034974.inc"
.text
arm_func_start InitMenuWithWindowExtraInfo
InitMenuWithWindowExtraInfo: ; 0x02034974
stmdb sp!, {r4, r5, r6, lr}
ldr r3, _02034A34 ; =_020AFDB8
mov r5, r1
ldr r1, [r3]
mov r6, r0
add r1, r1, #0xc4
mov r4, r2
bl OverlayLoadEntriesEqual
cmp r0, #0
bne _02034A2C
ldr r0, _02034A34 ; =_020AFDB8
ldr r1, [r0]
ldrb r0, [r1, #0x10]
cmp r0, #0
beq _020349C8
mov r0, r6
add r1, r1, #0x14
bl OverlayLoadEntriesEqual
cmp r0, #0
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
_020349C8:
ldr ip, _02034A34 ; =_020AFDB8
mov r2, #1
ldr r0, [ip]
mov r1, #0
strb r2, [r0, #0x10]
ldr r0, [ip]
cmp r4, #0
strb r1, [r0, #0xc0]
ldr lr, [ip]
ldmia r6, {r0, r1, r2, r3}
add r6, lr, #0x14
stmia r6, {r0, r1, r2, r3}
str r5, [lr, #0x24]
beq _02034A24
ldr r0, [ip]
mov r5, #9
add r6, r0, #0x28
_02034A0C:
ldmia r4!, {r0, r1, r2, r3}
stmia r6!, {r0, r1, r2, r3}
subs r5, r5, #1
bne _02034A0C
ldmia r4, {r0, r1}
stmia r6, {r0, r1}
_02034A24:
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
_02034A2C:
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02034A34: .word _020AFDB8
arm_func_end InitMenuWithWindowExtraInfo
arm_func_start CopyMenuControlWindowExtraInfo
CopyMenuControlWindowExtraInfo: ; 0x02034A38
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _02034A7C ; =_020AFDB8
mov r5, r0
ldr r4, [r1]
ldr r0, [r4, #0x24]
cmp r0, #0
beq _02034A74
add lr, r4, #0x28
mov ip, #9
_02034A5C:
ldmia lr!, {r0, r1, r2, r3}
stmia r5!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _02034A5C
ldmia lr, {r0, r1}
stmia r5, {r0, r1}
_02034A74:
ldr r0, [r4, #0x24]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02034A7C: .word _020AFDB8
arm_func_end CopyMenuControlWindowExtraInfo
arm_func_start HandleMenus
HandleMenus: ; 0x02034A80
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x10
ldr r0, _02034C9C ; =_020AFDB8
ldr ip, [r0]
ldr r0, [ip, #0xd4]
add r4, ip, #0xc4
cmp r0, #1
beq _02034AAC
cmp r0, #2
beq _02034B6C
b _02034BE4
_02034AAC:
ldrb r0, [ip, #0x10]
cmp r0, #0
beq _02034AD8
add r6, ip, #0x14
ldmia r6, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
ldr r0, _02034CA0 ; =NULL_OVERLAY_LOAD_ENTRY
mov r5, #0
ldmia r0, {r0, r1, r2, r3}
stmia r6, {r0, r1, r2, r3}
strb r5, [ip, #0x10]
_02034AD8:
ldr ip, _02034C9C ; =_020AFDB8
ldr r6, [ip]
ldrb r0, [r6, #0xc0]
cmp r0, #0
beq _02034B0C
ldr r0, _02034CA0 ; =NULL_OVERLAY_LOAD_ENTRY
mov r5, #0
ldmia r0, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
strb r5, [r6, #0xc0]
ldr r0, [ip]
str r5, [r0, #0xd4]
b _02034C94
_02034B0C:
ldr r0, [r4]
bl OverlayIsLoaded
cmp r0, #0
bne _02034B34
ldr r0, [r4]
bl LoadOverlay
ldr r0, _02034C9C ; =_020AFDB8
mov r1, #1
ldr r0, [r0]
strb r1, [r0, #0xd8]
_02034B34:
ldr r0, [r4, #4]
cmp r0, #0
beq _02034B5C
blx r0
cmp r0, #0
ldreq r0, _02034C9C ; =_020AFDB8
moveq r1, #3
ldreq r0, [r0]
streq r1, [r0, #0xd4]
beq _02034C94
_02034B5C:
ldr r0, _02034C9C ; =_020AFDB8
mov r1, #2
ldr r0, [r0]
str r1, [r0, #0xd4]
_02034B6C:
add r5, sp, #0
ldmia r4, {r0, r1, r2, r3}
stmia r5, {r0, r1, r2, r3}
ldr r0, [r4, #0xc]
blx r0
mov r5, r0
sub r0, r5, #3
cmp r0, #1
bhi _02034BE4
add r1, sp, #0
mov r0, r4
bl OverlayLoadEntriesEqual
cmp r0, #0
beq _02034BE4
ldr r0, _02034C9C ; =_020AFDB8
mov r1, #3
ldr r0, [r0]
cmp r5, #4
str r1, [r0, #0xd4]
bne _02034BE4
bl FreeActiveMenu
ldr r0, _02034CA0 ; =NULL_OVERLAY_LOAD_ENTRY
ldr ip, _02034C9C ; =_020AFDB8
ldmia r0, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
ldr r0, [ip]
mov r1, #0
strb r1, [r0, #0xc0]
ldr r0, [ip]
str r1, [r0, #0xd4]
_02034BE4:
ldr r0, _02034C9C ; =_020AFDB8
ldr r1, [r0]
ldrb r0, [r1, #0x10]
cmp r0, #0
beq _02034C4C
ldr r0, _02034CA0 ; =NULL_OVERLAY_LOAD_ENTRY
mov r1, r4
bl OverlayLoadEntriesEqual
cmp r0, #0
bne _02034C10
bl FreeActiveMenu
_02034C10:
ldr ip, _02034C9C ; =_020AFDB8
mov r5, #0
ldr r6, [ip]
ldr lr, _02034CA0 ; =NULL_OVERLAY_LOAD_ENTRY
add r0, r6, #0x14
ldmia r0, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
strb r5, [r6, #0x10]
ldr ip, [ip]
ldmia lr, {r0, r1, r2, r3}
add r4, ip, #0x14
stmia r4, {r0, r1, r2, r3}
mov r0, #1
str r0, [ip, #0xd4]
b _02034C94
_02034C4C:
ldrb r0, [r1, #0xc0]
cmp r0, #0
beq _02034C94
ldr r0, _02034CA0 ; =NULL_OVERLAY_LOAD_ENTRY
mov r1, r4
bl OverlayLoadEntriesEqual
cmp r0, #0
bne _02034C70
bl FreeActiveMenu
_02034C70:
ldr r0, _02034CA0 ; =NULL_OVERLAY_LOAD_ENTRY
ldr ip, _02034C9C ; =_020AFDB8
ldmia r0, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
ldr r0, [ip]
mov r1, #0
strb r1, [r0, #0xc0]
ldr r0, [ip]
str r1, [r0, #0xd4]
_02034C94:
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02034C9C: .word _020AFDB8
_02034CA0: .word NULL_OVERLAY_LOAD_ENTRY
arm_func_end HandleMenus
arm_func_start sub_02034CA4
sub_02034CA4: ; 0x02034CA4
stmdb sp!, {r3, lr}
ldr r0, _02034D08 ; =_020AFDBC
ldr r1, [r0, #8]
cmp r1, #0
beq _02034CE4
ldr r1, [r0, #0xc]
ldrb r0, [r1, #0x480]
cmp r0, #0
bne _02034D00
ldr r0, [r1, #0x10]
cmp r0, #0
moveq r0, #3
streq r0, [r1, #0x10]
beq _02034D00
mov r0, #0
ldmia sp!, {r3, pc}
_02034CE4:
ldr r0, [r0, #0xc]
cmp r0, #0
beq _02034D00
bl MemFree
ldr r0, _02034D08 ; =_020AFDBC
mov r1, #0
str r1, [r0, #0xc]
_02034D00:
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_02034D08: .word _020AFDBC
arm_func_end sub_02034CA4
arm_func_start sub_02034D0C
sub_02034D0C: ; 0x02034D0C
stmdb sp!, {r3, lr}
ldr r0, _02034D4C ; =_020AFDBC
ldr r1, [r0, #8]
ldr r0, [r0, #0xc]
cmp r1, #0
movne r1, #1
strneb r1, [r0, #0x480]
bne _02034D44
cmp r0, #0
beq _02034D44
bl MemFree
ldr r0, _02034D4C ; =_020AFDBC
mov r1, #0
str r1, [r0, #0xc]
_02034D44:
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_02034D4C: .word _020AFDBC
arm_func_end sub_02034D0C
arm_func_start sub_02034D50
sub_02034D50: ; 0x02034D50
stmdb sp!, {r3, lr}
ldr r0, _02034DA0 ; =_020AFDBC
ldr r0, [r0, #0xc]
cmp r0, #0
ldmneia sp!, {r3, pc}
ldr r0, _02034DA4 ; =0x00000484
mov r1, #8
bl MemAlloc
ldr r1, _02034DA0 ; =_020AFDBC
str r0, [r1, #0xc]
bl InitPortraitParams
ldr r0, _02034DA0 ; =_020AFDBC
mov r2, #0
ldr r1, [r0, #0xc]
str r2, [r1, #0x10]
ldr r1, [r0, #0xc]
str r2, [r1, #0x468]
ldr r0, [r0, #0xc]
strb r2, [r0, #0x480]
ldmia sp!, {r3, pc}
.align 2, 0
_02034DA0: .word _020AFDBC
_02034DA4: .word 0x00000484
arm_func_end sub_02034D50
arm_func_start sub_02034DA8
sub_02034DA8: ; 0x02034DA8
stmdb sp!, {r3, lr}
ldr r0, _02034E20 ; =_020AFDBC
ldr r2, [r0, #8]
cmp r2, #0
beq _02034DE4
ldr r1, [r0, #0xc]
ldrb r0, [r1, #0x480]
cmp r0, #0
movne r0, #1
ldmneia sp!, {r3, pc}
ldr r0, [r1, #0x10]
cmp r0, #0
movne r0, #1
ldreqb r0, [r2, #8]
ldmia sp!, {r3, pc}
_02034DE4:
ldr r0, [r0, #0xc]
cmp r0, #0
beq _02034E04
ldr r0, [r0, #0x10]
cmp r0, #0
beq _02034E18
mov r0, #1
ldmia sp!, {r3, pc}
_02034E04:
ldr r0, _02034E24 ; =_0209B09C
bl sub_02034840
cmp r0, #0
movne r0, #1
ldmneia sp!, {r3, pc}
_02034E18:
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_02034E20: .word _020AFDBC
_02034E24: .word _0209B09C
arm_func_end sub_02034DA8
arm_func_start sub_02034E28
sub_02034E28: ; 0x02034E28
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02034D50
cmp r4, #0
ldrne ip, _02034E5C ; =_020AFDBC
ldmneia r4, {r0, r1, r2, r3}
ldrne ip, [ip, #0xc]
stmneia ip, {r0, r1, r2, r3}
ldmneia sp!, {r4, pc}
ldr r0, _02034E5C ; =_020AFDBC
ldr r0, [r0, #0xc]
bl InitPortraitParams
ldmia sp!, {r4, pc}
.align 2, 0
_02034E5C: .word _020AFDBC
arm_func_end sub_02034E28
arm_func_start sub_02034E60
sub_02034E60: ; 0x02034E60
ldr r2, _02034E6C ; =_020AFDBC
stmia r2, {r0, r1}
bx lr
.align 2, 0
_02034E6C: .word _020AFDBC
arm_func_end sub_02034E60
arm_func_start sub_02034E70
sub_02034E70: ; 0x02034E70
ldr r0, _02034EB0 ; =_020AFDBC
ldr r1, [r0, #0xc]
cmp r1, #0
beq _02034EA8
ldrb r0, [r1, #0x480]
cmp r0, #0
bne _02034EA8
ldr r0, [r1, #0x10]
cmp r0, #0
moveq r0, #4
streq r0, [r1, #0x10]
beq _02034EA8
mov r0, #0
bx lr
_02034EA8:
mov r0, #1
bx lr
.align 2, 0
_02034EB0: .word _020AFDBC
arm_func_end sub_02034E70
arm_func_start sub_02034EB4
sub_02034EB4: ; 0x02034EB4
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl sub_02034D50
ldr r0, _02034F18 ; =_020AFDBC
mov r1, r4
ldr r2, [r0, #0xc]
strh r6, [r2, #0x14]
ldr r2, [r0, #0xc]
strh r5, [r2, #0x16]
ldr r0, [r0, #0xc]
add r0, r0, #0x18
bl sub_020236FC
ldr r1, _02034F18 ; =_020AFDBC
ldr r0, _02034F1C ; =_0209B09C
ldr r1, [r1, #0xc]
mov r2, #1
str r2, [r1, #0x10]
bl sub_02034840
cmp r0, #0
ldmneia sp!, {r4, r5, r6, pc}
ldr r0, _02034F1C ; =_0209B09C
bl InitMenu
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02034F18: .word _020AFDBC
_02034F1C: .word _0209B09C
arm_func_end sub_02034EB4
arm_func_start sub_02034F20
sub_02034F20: ; 0x02034F20
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
bl sub_02034D50
ldr r0, _02034F90 ; =_020AFDBC
mov r1, r5
ldr r2, [r0, #0xc]
strh r6, [r2, #0x14]
ldr r0, [r0, #0xc]
add r0, r0, #0x68
bl strcpy
ldr r0, _02034F90 ; =_020AFDBC
mov r1, r4
ldr r0, [r0, #0xc]
add r0, r0, #0x18
bl sub_020236FC
ldr r1, _02034F90 ; =_020AFDBC
ldr r0, _02034F94 ; =_0209B09C
ldr r1, [r1, #0xc]
mov r2, #2
str r2, [r1, #0x10]
bl sub_02034840
cmp r0, #0
ldmneia sp!, {r4, r5, r6, pc}
ldr r0, _02034F94 ; =_0209B09C
bl InitMenu
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02034F90: .word _020AFDBC
_02034F94: .word _0209B09C
arm_func_end sub_02034F20
arm_func_start sub_02034F98
sub_02034F98: ; 0x02034F98
stmdb sp!, {r3, lr}
ldr r0, _0203501C ; =_020AFDBC
ldr r2, [r0, #8]
cmp r2, #0
beq _02034FE8
ldr r1, [r0, #0xc]
ldrb r0, [r1, #0x480]
cmp r0, #0
movne r0, #1
ldmneia sp!, {r3, pc}
ldr r0, [r1, #0x468]
cmp r0, #0
movne r0, #1
ldmneia sp!, {r3, pc}
ldrsb r1, [r2]
mvn r0, #1
cmp r1, r0
moveq r0, #0
ldrneb r0, [r2, #9]
ldmia sp!, {r3, pc}
_02034FE8:
ldr r0, _02035020 ; =_0209B09C
bl sub_02034840
cmp r0, #0
movne r0, #1
ldmneia sp!, {r3, pc}
ldr r0, _0203501C ; =_020AFDBC
ldr r0, [r0, #0xc]
cmp r0, #0
ldrne r0, [r0, #0x468]
cmpne r0, #0
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_0203501C: .word _020AFDBC
_02035020: .word _0209B09C
arm_func_end sub_02034F98
arm_func_start sub_02035024
sub_02035024: ; 0x02035024
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl sub_02034D50
ldr r1, _02035090 ; =_020AFDBC
mov r0, #0
str r0, [r1, #0x10]
ldr r0, [r1, #0xc]
mov r3, #2
str r7, [r0, #0x46c]
ldr r2, [r1, #0xc]
ldr r0, _02035094 ; =_0209B09C
str r6, [r2, #0x474]
ldr r2, [r1, #0xc]
str r5, [r2, #0x478]
ldr r2, [r1, #0xc]
str r3, [r2, #0x468]
ldr r1, [r1, #0xc]
str r4, [r1, #0x47c]
bl sub_02034840
cmp r0, #0
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
ldr r0, _02035094 ; =_0209B09C
bl InitMenu
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02035090: .word _020AFDBC
_02035094: .word _0209B09C
arm_func_end sub_02035024
arm_func_start sub_02035098
sub_02035098: ; 0x02035098
stmdb sp!, {r3, lr}
ldr r0, _020350D0 ; =_020AFDBC
ldr r0, [r0, #8]
cmp r0, #0
ldrnesb r0, [r0]
mvnne r1, #1
cmpne r0, r1
beq _020350C4
bl GetSimpleMenuResult__0202B870
ldr r1, _020350D0 ; =_020AFDBC
str r0, [r1, #0x10]
_020350C4:
ldr r0, _020350D0 ; =_020AFDBC
ldr r0, [r0, #0x10]
ldmia sp!, {r3, pc}
.align 2, 0
_020350D0: .word _020AFDBC
arm_func_end sub_02035098
arm_func_start sub_020350D4
sub_020350D4: ; 0x020350D4
stmdb sp!, {r3, lr}
mov r0, #0xc
mov r1, #8
bl MemAlloc
ldr r2, _02035150 ; =_020AFDBC
mov ip, #0
str r0, [r2, #8]
str ip, [r0, #4]
ldr r1, [r2, #8]
mov r0, ip
strb ip, [r1, #8]
ldr r3, [r2, #8]
mov r1, #3
strb ip, [r3, #9]
ldr r3, [r2, #8]
mov r2, #1
strb ip, [r3, #0xa]
bl CreatePortraitBox
ldr r1, _02035150 ; =_020AFDBC
ldr r1, [r1, #8]
strb r0, [r1, #2]
mov r0, #0
bl CreateDialogueBox
ldr r1, _02035150 ; =_020AFDBC
mvn r2, #1
ldr r3, [r1, #8]
strb r0, [r3, #1]
ldr r1, [r1, #8]
mov r0, #1
strb r2, [r1]
ldmia sp!, {r3, pc}
.align 2, 0
_02035150: .word _020AFDBC
arm_func_end sub_020350D4
arm_func_start sub_02035154
sub_02035154: ; 0x02035154
stmdb sp!, {r3, lr}
ldr r0, _020351D8 ; =_020AFDBC
ldr r0, [r0, #8]
cmp r0, #0
beq _020351B4
ldrsb r0, [r0]
mvn r1, #1
cmp r0, r1
beq _0203517C
bl CloseSimpleMenu
_0203517C:
ldr r0, _020351D8 ; =_020AFDBC
ldr r0, [r0, #8]
ldrsb r0, [r0, #1]
bl CloseDialogueBox
ldr r0, _020351D8 ; =_020AFDBC
ldr r0, [r0, #8]
ldrsb r0, [r0, #2]
bl ClosePortraitBox
ldr r0, _020351D8 ; =_020AFDBC
ldr r0, [r0, #8]
bl MemFree
ldr r0, _020351D8 ; =_020AFDBC
mov r1, #0
str r1, [r0, #8]
_020351B4:
ldr r0, _020351D8 ; =_020AFDBC
ldr r0, [r0, #0xc]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl MemFree
ldr r0, _020351D8 ; =_020AFDBC
mov r1, #0
str r1, [r0, #0xc]
ldmia sp!, {r3, pc}
.align 2, 0
_020351D8: .word _020AFDBC
arm_func_end sub_02035154
arm_func_start sub_020351DC
sub_020351DC: ; 0x020351DC
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0x9c
ldr r0, _02035598 ; =_020AFDBC
ldr r2, [r0, #8]
ldr r1, [r2, #4]
cmp r1, #0
beq _02035204
cmp r1, #1
beq _02035574
b _0203558C
_02035204:
ldr r3, [r0, #0xc]
ldr r0, [r3, #0x10]
cmp r0, #0
beq _020352E0
cmp r0, #4
addls pc, pc, r0, lsl #2
b _02035290
_02035220: ; jump table
b _02035290 ; case 0
b _02035234 ; case 1
b _0203525C ; case 2
b _02035290 ; case 3
b _02035284 ; case 4
_02035234:
ldrsb r0, [r2, #1]
ldrh r1, [r3, #0x14]
ldrh r2, [r3, #0x16]
add r3, r3, #0x18
bl ShowStringIdInDialogueBox
ldr r0, _02035598 ; =_020AFDBC
mov r1, #1
ldr r0, [r0, #8]
strb r1, [r0, #0xa]
b _02035298
_0203525C:
ldrsb r0, [r2, #1]
ldrh r1, [r3, #0x14]
add r2, r3, #0x68
add r3, r3, #0x18
bl ShowStringInDialogueBox
ldr r0, _02035598 ; =_020AFDBC
mov r1, #1
ldr r0, [r0, #8]
strb r1, [r0, #0xa]
b _02035298
_02035284:
ldrsb r0, [r2, #1]
bl sub_0202F3F8
b _02035298
_02035290:
ldrsb r0, [r2, #1]
bl sub_0202F2C4
_02035298:
ldr r2, _02035598 ; =_020AFDBC
ldr r1, [r2, #8]
ldrb r0, [r1, #0xa]
cmp r0, #0
beq _020352C8
ldr r0, [r2, #0xc]
ldrh r0, [r0, #0x14]
tst r0, #0x20
beq _020352C8
ldrsb r0, [r1, #1]
ldmia r2, {r1, r2}
bl sub_0202F190
_020352C8:
ldr r0, _02035598 ; =_020AFDBC
mov r1, #0
ldr r0, [r0, #0xc]
mov r4, #1
str r1, [r0, #0x10]
b _020352EC
_020352E0:
ldrsb r0, [r2, #1]
bl IsDialogueBoxActive
mov r4, r0
_020352EC:
ldr r0, _02035598 ; =_020AFDBC
ldr r1, [r0, #8]
strb r4, [r1, #8]
ldr r2, [r0, #0xc]
ldr r1, [r2, #0x468]
cmp r1, #0
beq _02035408
ldr r1, [r2, #0x478]
str r1, [sp, #4]
ldr r1, [r2, #0x46c]
orr r1, r1, #0x20
str r1, [r2, #0x46c]
ldr r1, [r0, #0xc]
ldr r0, [r1, #0x46c]
tst r0, #0x8000
moveq r4, #8
beq _02035350
orr r0, r0, #0x1800
orr r0, r0, #0x40000
str r0, [r1, #0x46c]
mov r1, #0
mov r0, #0x10
strh r1, [sp, #0xc]
str r0, [sp, #0x10]
mov r4, #5
_02035350:
ldr r0, _02035598 ; =_020AFDBC
mvn r1, #1
ldr r0, [r0, #8]
ldrsb r0, [r0]
cmp r0, r1
beq _0203536C
bl CloseSimpleMenu
_0203536C:
ldr r0, _02035598 ; =_020AFDBC
ldr r2, [r0, #0xc]
ldr r0, [r2, #0x468]
str r4, [sp]
cmp r0, #1
mov r0, #0
ldr r1, [r2, #0x46c]
bne _020353A0
ldr r3, [r2, #0x470]
add r2, sp, #4
bl CreateSimpleMenuFromStringIds
ldr r1, _02035598 ; =_020AFDBC
b _020353B0
_020353A0:
ldr r3, [r2, #0x474]
add r2, sp, #4
bl CreateSimpleMenu
ldr r1, _02035598 ; =_020AFDBC
_020353B0:
ldr r1, [r1, #8]
strb r0, [r1]
ldr r0, _02035598 ; =_020AFDBC
ldr r0, [r0, #8]
ldrsb r0, [r0, #1]
bl ShowDialogueBox
ldr r0, _02035598 ; =_020AFDBC
ldr r1, [r0, #0xc]
ldr r1, [r1, #0x47c]
cmp r1, #0
ble _020353E8
ldr r0, [r0, #8]
ldrsb r0, [r0]
bl SetSimpleMenuField0x1AC
_020353E8:
ldr r0, _02035598 ; =_020AFDBC
mov r2, #0
ldr r1, [r0, #0xc]
mov r4, #1
str r2, [r1, #0x468]
ldr r0, [r0, #8]
strb r4, [r0, #9]
b _02035468
_02035408:
ldr r0, [r0, #8]
mvn r1, #1
ldrsb r0, [r0]
cmp r0, r1
beq _02035468
bl GetSimpleMenuResult__0202B870
ldr r1, _02035598 ; =_020AFDBC
mov r4, #1
str r0, [r1, #0x10]
ldr r0, [r1, #8]
strb r4, [r0, #9]
ldr r0, [r1, #8]
ldrsb r0, [r0]
bl IsSimpleMenuActive
cmp r0, #0
bne _02035468
ldr r0, _02035598 ; =_020AFDBC
ldr r0, [r0, #8]
ldrsb r0, [r0]
bl CloseSimpleMenu
ldr r0, _02035598 ; =_020AFDBC
mvn r1, #1
ldr r0, [r0, #8]
strb r1, [r0]
_02035468:
ldr r0, _02035598 ; =_020AFDBC
ldr r1, [r0, #0xc]
ldrb r1, [r1, #0x480]
cmp r1, #0
beq _020354AC
ldr r0, [r0, #8]
ldrsb r0, [r0, #1]
bl sub_0202F334
ldr r0, _02035598 ; =_020AFDBC
ldr r0, [r0, #8]
ldrsb r0, [r0, #2]
bl HidePortraitBox
ldr r0, _02035598 ; =_020AFDBC
mov r1, #1
ldr r0, [r0, #8]
str r1, [r0, #4]
b _0203558C
_020354AC:
cmp r4, #0
bne _020354F8
ldr r0, [r0, #8]
ldrsb r0, [r0, #1]
bl sub_0202F16C
cmp r0, #0x10
cmpne r0, #0
bne _0203558C
ldr r0, _02035598 ; =_020AFDBC
ldr r0, [r0, #8]
ldrsb r0, [r0, #2]
bl HidePortraitBox
ldr r0, _02035598 ; =_020AFDBC
mov r2, #1
ldr r1, [r0, #8]
str r2, [r1, #4]
ldr r0, [r0, #8]
strb r2, [r0, #8]
b _0203558C
_020354F8:
ldr r1, [r0, #8]
ldrb r0, [r1, #0xa]
cmp r0, #0
beq _0203558C
ldrsb r0, [r1, #1]
bl sub_0202F16C
cmp r0, #0xc
beq _0203558C
ldr r0, _02035598 ; =_020AFDBC
ldr r0, [r0, #0xc]
bl IsValidPortrait
cmp r0, #0
beq _02035544
ldr r0, _02035598 ; =_020AFDBC
ldr r2, [r0, #8]
ldr r1, [r0, #0xc]
ldrsb r0, [r2, #2]
bl ShowPortraitInPortraitBox
b _02035554
_02035544:
ldr r0, _02035598 ; =_020AFDBC
ldr r0, [r0, #8]
ldrsb r0, [r0, #2]
bl HidePortraitBox
_02035554:
ldr r0, _02035598 ; =_020AFDBC
mov r3, #1
ldr r2, [r0, #8]
mov r1, #0
strb r3, [r2, #8]
ldr r0, [r0, #8]
strb r1, [r0, #0xa]
b _0203558C
_02035574:
ldrsb r0, [r2, #1]
bl sub_020282F4
mvn r1, #5
cmp r0, r1
moveq r0, #4
beq _02035590
_0203558C:
mov r0, #1
_02035590:
add sp, sp, #0x9c
ldmia sp!, {r3, r4, pc}
.align 2, 0
_02035598: .word _020AFDBC
arm_func_end sub_020351DC
arm_func_start sub_0203559C
sub_0203559C: ; 0x0203559C
stmdb sp!, {r3, lr}
mov lr, r0
mov r2, r1
ldr r3, _020355D4 ; =_020AFDD0
mov ip, #0
ldr r0, _020355D8 ; =_0209B0FC
mov r1, lr
strb ip, [r3]
bl InitMenuWithWindowExtraInfo
cmp r0, #0
ldrne r0, _020355D4 ; =_020AFDD0
movne r1, #0
strneb r1, [r0, #1]
ldmia sp!, {r3, pc}
.align 2, 0
_020355D4: .word _020AFDD0
_020355D8: .word _0209B0FC
arm_func_end sub_0203559C
arm_func_start sub_020355DC
sub_020355DC: ; 0x020355DC
stmdb sp!, {r3, r4, r5, lr}
ldr r3, _02035638 ; =_020AFDD0
mov r5, r0
mov lr, r1
mov ip, #0
mov r4, r2
ldr r0, _0203563C ; =_0209B10C
mov r1, r5
mov r2, lr
strb ip, [r3]
bl InitMenuWithWindowExtraInfo
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldr r0, _02035638 ; =_020AFDD0
mov r1, #1
strb r1, [r0]
bl sub_02035640
ldr r0, _02035638 ; =_020AFDD0
mov r1, #0
ldr r2, [r0, #4]
str r4, [r2, #0xf8]
strb r1, [r0, #1]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02035638: .word _020AFDD0
_0203563C: .word _0209B10C
arm_func_end sub_020355DC
arm_func_start sub_02035640
sub_02035640: ; 0x02035640
stmdb sp!, {r3, lr}
ldr r0, _02035764 ; =_020AFDD0
ldrb r0, [r0]
cmp r0, #0
movne r1, #0x300
moveq r1, #8
mov r0, #0xfc
bl MemAlloc
ldr r1, _02035764 ; =_020AFDD0
str r0, [r1, #4]
add r0, r0, #0xc
bl CopyMenuControlWindowExtraInfo
ldr r1, _02035764 ; =_020AFDD0
ldr r1, [r1, #4]
str r0, [r1, #8]
mov r0, #0
bl sub_02048078
ldr r0, _02035764 ; =_020AFDD0
ldr r0, [r0, #4]
add r0, r0, #0xa4
bl sub_0204AB78
ldr r1, _02035764 ; =_020AFDD0
mov r0, #0
ldr r3, [r1, #4]
ldrb r2, [r3, #0xa4]
str r2, [r3, #0xb0]
ldr r3, [r1, #4]
ldrb r2, [r3, #0xa6]
str r2, [r3, #0xb4]
ldr r3, [r1, #4]
ldrb r2, [r3, #0xa5]
str r2, [r3, #0xb8]
ldr r3, [r1, #4]
ldrb r2, [r3, #0xa7]
str r2, [r3, #0xbc]
ldr r3, [r1, #4]
ldrb r2, [r3, #0xa8]
str r2, [r3, #0xc0]
ldr r3, [r1, #4]
ldrb r2, [r3, #0xa9]
str r2, [r3, #0xc4]
ldr r3, [r1, #4]
ldrb r2, [r3, #0xaa]
str r2, [r3, #0xc8]
ldr r3, [r1, #4]
ldrb r2, [r3, #0xab]
str r2, [r3, #0xcc]
ldr r3, [r1, #4]
ldrb r2, [r3, #0xac]
str r2, [r3, #0xd0]
_02035708:
ldr r2, [r1, #4]
add r3, r2, r0, lsl #2
ldr r2, [r3, #0xb0]
add r0, r0, #1
str r2, [r3, #0xd4]
cmp r0, #9
blt _02035708
ldr r1, _02035764 ; =_020AFDD0
mvn ip, #1
ldr r0, [r1, #4]
mov r3, #0
strb ip, [r0]
ldr r2, [r1, #4]
mov r0, #1
strb ip, [r2, #1]
ldr r2, [r1, #4]
strb ip, [r2, #2]
ldr r2, [r1, #4]
str r3, [r2, #4]
ldr r2, [r1, #4]
str r3, [r2, #0xf8]
strb r3, [r1, #1]
ldmia sp!, {r3, pc}
.align 2, 0
_02035764: .word _020AFDD0
arm_func_end sub_02035640
arm_func_start sub_02035768
sub_02035768: ; 0x02035768
stmdb sp!, {r3, lr}
ldr r0, _020357EC ; =_020AFDD0
ldr r0, [r0, #4]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0]
mvn r1, #1
cmp r0, r1
beq _02035790
bl CloseOptionsMenu
_02035790:
ldr r0, _020357EC ; =_020AFDD0
mvn r1, #1
ldr r0, [r0, #4]
ldrsb r0, [r0, #1]
cmp r0, r1
beq _020357AC
bl CloseDialogueBox
_020357AC:
ldr r0, _020357EC ; =_020AFDD0
mvn r1, #1
ldr r0, [r0, #4]
ldrsb r0, [r0, #2]
cmp r0, r1
beq _020357C8
bl CloseParentMenu
_020357C8:
mov r0, #1
bl sub_02048078
ldr r0, _020357EC ; =_020AFDD0
ldr r0, [r0, #4]
bl MemFree
ldr r0, _020357EC ; =_020AFDD0
mov r1, #0
str r1, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_020357EC: .word _020AFDD0
arm_func_end sub_02035768
arm_func_start sub_020357F0
sub_020357F0: ; 0x020357F0
stmdb sp!, {r4, lr}
sub sp, sp, #8
ldr r2, _02035CCC ; =_020AFDD0
ldr r3, [r2, #4]
ldr r0, [r3, #4]
cmp r0, #6
addls pc, pc, r0, lsl #2
b _02035CC0
_02035810: ; jump table
b _0203582C ; case 0
b _02035920 ; case 1
b _020359BC ; case 2
b _02035A80 ; case 3
b _02035AE8 ; case 4
b _02035BC0 ; case 5
b _02035C94 ; case 6
_0203582C:
ldrsb r0, [r3, #1]
mvn r1, #1
cmp r0, r1
beq _0203586C
bl IsDialogueBoxActive
cmp r0, #0
bne _02035CC0
ldr r0, _02035CCC ; =_020AFDD0
ldr r0, [r0, #4]
ldrsb r0, [r0, #1]
bl CloseDialogueBox
ldr r0, _02035CCC ; =_020AFDD0
mvn r1, #1
ldr r0, [r0, #4]
strb r1, [r0, #1]
b _02035CC0
_0203586C:
ldrsb r0, [r3, #2]
cmp r0, r1
beq _020358A8
bl IsParentMenuActive
cmp r0, #0
bne _02035CC0
ldr r0, _02035CCC ; =_020AFDD0
ldr r0, [r0, #4]
ldrsb r0, [r0, #2]
bl CloseParentMenu
ldr r0, _02035CCC ; =_020AFDD0
mvn r1, #1
ldr r0, [r0, #4]
strb r1, [r0, #2]
b _02035CC0
_020358A8:
ldrsb r0, [r3]
cmp r0, r1
bne _02035910
mov r0, #0
str r0, [r3, #0xc]
ldr r0, [r2, #4]
#ifdef JAPAN
mov r1, #0x38c
#else
mov r1, #0x184
#endif
strh r1, [r0, #0x14]
ldr r0, [r2, #4]
mov r1, #0x10
str r1, [r0, #0x18]
ldr r2, [r2, #4]
mov r0, #9
str r0, [sp]
add r0, r2, #0xb0
str r0, [sp, #4]
ldr r1, [r2, #8]
ldr r0, _02035CD0 ; =_0209B0EC
orr r1, r1, #0x33
ldr r3, _02035CD4 ; =_0209B134
orr r1, r1, #0x1800
add r2, r2, #0xc
bl CreateOptionsMenu
ldr r1, _02035CCC ; =_020AFDD0
ldr r1, [r1, #4]
strb r0, [r1]
_02035910:
ldr r0, _02035CCC ; =_020AFDD0
mov r1, #1
ldr r0, [r0, #4]
str r1, [r0, #4]
_02035920:
ldr r0, _02035CCC ; =_020AFDD0
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl CheckOptionsMenuField0x1A4
cmp r0, #0
bne _02035CC0
ldr r0, _02035CCC ; =_020AFDD0
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl GetOptionsMenuResult
ldr r1, _02035CCC ; =_020AFDD0
tst r0, #0xff
strb r0, [r1, #1]
beq _02035998
mov r3, #0
ldr ip, [r1, #4]
mov r4, r3
mov r0, #1
_02035968:
add r1, ip, r4, lsl #2
ldr r2, [r1, #0xd4]
ldr r1, [r1, #0xb0]
add r4, r4, #1
cmp r2, r1
movne r3, r0
cmp r4, #9
blt _02035968
cmp r3, #0
ldreq r0, _02035CCC ; =_020AFDD0
moveq r1, #0
streqb r1, [r0, #1]
_02035998:
ldr r0, _02035CCC ; =_020AFDD0
ldrb r1, [r0, #1]
ldr r0, [r0, #4]
cmp r1, #0
moveq r1, #4
streq r1, [r0, #4]
movne r1, #2
strne r1, [r0, #4]
b _02035CC0
_020359BC:
ldrsb r0, [r3]
mvn r1, #1
cmp r0, r1
beq _020359FC
bl IsOptionsMenuActive
cmp r0, #0
bne _02035CC0
ldr r0, _02035CCC ; =_020AFDD0
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl CloseOptionsMenu
ldr r0, _02035CCC ; =_020AFDD0
mvn r1, #1
ldr r0, [r0, #4]
strb r1, [r0]
b _02035CC0
_020359FC:
ldrsb r0, [r3, #1]
cmp r0, r1
bne _02035A34
mov r0, #0
bl CreateDialogueBox
ldr r3, _02035CCC ; =_020AFDD0
ldr r1, _02035CD8 ; =0x00000408
ldr r4, [r3, #4]
#ifdef JAPAN
sub r2, r1, #0x5b
#else
ldr r2, _02035CDC ; =0x000001A5
#endif
strb r0, [r4, #1]
ldr r0, [r3, #4]
mov r3, #0
ldrsb r0, [r0, #1]
bl ShowStringIdInDialogueBox
_02035A34:
ldr r1, _02035CCC ; =_020AFDD0
mvn r0, #1
ldr r1, [r1, #4]
ldrsb r1, [r1, #2]
cmp r1, r0
bne _02035A6C
mov r0, #0
ldr r3, _02035CE0 ; =_0209B11C
mov r2, r0
mov r1, #0x13
bl CreateParentMenuFromStringIds
ldr r1, _02035CCC ; =_020AFDD0
ldr r1, [r1, #4]
strb r0, [r1, #2]
_02035A6C:
ldr r0, _02035CCC ; =_020AFDD0
mov r1, #3
ldr r0, [r0, #4]
str r1, [r0, #4]
b _02035CC0
_02035A80:
ldrsb r0, [r3, #2]
bl CheckParentMenuField0x1A0
cmp r0, #0
bne _02035CC0
ldr r0, _02035CCC ; =_020AFDD0
ldr r0, [r0, #4]
ldrsb r0, [r0, #2]
bl GetSimpleMenuResult__0202AEA4
ldr r1, _02035CCC ; =_020AFDD0
mov r4, r0
ldr r0, [r1, #4]
ldrsb r0, [r0, #1]
bl sub_0202F334
cmp r4, #1
ldreq r0, _02035CCC ; =_020AFDD0
moveq r1, #0
ldreq r0, [r0, #4]
streq r1, [r0, #4]
beq _02035CC0
mov r0, #1
bl SetNotifyNote
ldr r0, _02035CCC ; =_020AFDD0
mov r1, #4
ldr r0, [r0, #4]
str r1, [r0, #4]
b _02035CC0
_02035AE8:
ldrsb r0, [r3]
mvn r1, #1
cmp r0, r1
beq _02035B24
bl IsOptionsMenuActive
cmp r0, #0
bne _02035CC0
ldr r0, _02035CCC ; =_020AFDD0
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl CloseOptionsMenu
ldr r0, _02035CCC ; =_020AFDD0
mvn r1, #1
ldr r0, [r0, #4]
strb r1, [r0]
_02035B24:
ldr r0, _02035CCC ; =_020AFDD0
mvn r1, #1
ldr r0, [r0, #4]
ldrsb r0, [r0, #1]
cmp r0, r1
beq _02035B68
bl IsDialogueBoxActive
cmp r0, #0
bne _02035CC0
ldr r0, _02035CCC ; =_020AFDD0
ldr r0, [r0, #4]
ldrsb r0, [r0, #1]
bl CloseDialogueBox
ldr r0, _02035CCC ; =_020AFDD0
mvn r1, #1
ldr r0, [r0, #4]
strb r1, [r0, #1]
_02035B68:
ldr r0, _02035CCC ; =_020AFDD0
mvn r1, #1
ldr r0, [r0, #4]
ldrsb r0, [r0, #2]
cmp r0, r1
beq _02035BAC
bl IsParentMenuActive
cmp r0, #0
bne _02035CC0
ldr r0, _02035CCC ; =_020AFDD0
ldr r0, [r0, #4]
ldrsb r0, [r0, #2]
bl CloseParentMenu
ldr r0, _02035CCC ; =_020AFDD0
mvn r1, #1
ldr r0, [r0, #4]
strb r1, [r0, #2]
_02035BAC:
ldr r0, _02035CCC ; =_020AFDD0
mov r1, #5
ldr r0, [r0, #4]
str r1, [r0, #4]
b _02035CC0
_02035BC0:
mov r0, #7
str r0, [r3, #4]
ldrb r0, [r2, #1]
cmp r0, #0
beq _02035C4C
ldr r1, [r2, #4]
ldr r0, [r1, #0xb0]
strb r0, [r1, #0xa4]
ldr r1, [r2, #4]
ldr r0, [r1, #0xb4]
strb r0, [r1, #0xa6]
ldr r1, [r2, #4]
ldr r0, [r1, #0xb8]
strb r0, [r1, #0xa5]
ldr r1, [r2, #4]
ldr r0, [r1, #0xbc]
strb r0, [r1, #0xa7]
ldr r1, [r2, #4]
ldr r0, [r1, #0xc0]
strb r0, [r1, #0xa8]
ldr r1, [r2, #4]
ldr r0, [r1, #0xc4]
strb r0, [r1, #0xa9]
ldr r1, [r2, #4]
ldr r0, [r1, #0xc8]
strb r0, [r1, #0xaa]
ldr r1, [r2, #4]
ldr r0, [r1, #0xcc]
strb r0, [r1, #0xab]
ldr r1, [r2, #4]
ldr r0, [r1, #0xd0]
strb r0, [r1, #0xac]
ldr r0, [r2, #4]
add r0, r0, #0xa4
bl sub_0204AB98
_02035C4C:
ldr r0, _02035CCC ; =_020AFDD0
ldr r2, [r0, #4]
ldr r1, [r2, #8]
tst r1, #0x100
beq _02035C70
ldrb r1, [r0, #1]
ldr r0, [r2, #0x94]
ldr r2, [r2, #0x90]
blx r2
_02035C70:
ldr r0, _02035CCC ; =_020AFDD0
ldr r1, [r0, #4]
ldr r0, [r1, #0xf8]
cmp r0, #0
movne r0, #6
strne r0, [r1, #4]
bne _02035CC0
mov r0, #4
b _02035CC4
_02035C94:
ldr r0, [r3, #0x94]
ldr r1, [r3, #0xf8]
blx r1
cmp r0, #0
beq _02035CC0
ldr r0, _02035CCC ; =_020AFDD0
mov r2, #7
ldr r1, [r0, #4]
mov r0, #4
str r2, [r1, #4]
b _02035CC4
_02035CC0:
mov r0, #1
_02035CC4:
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
_02035CCC: .word _020AFDD0
_02035CD0: .word _0209B0EC
_02035CD4: .word _0209B134
_02035CD8: .word 0x00000408
#ifndef JAPAN
_02035CDC: .word 0x000001A5
#endif
_02035CE0: .word _0209B11C
arm_func_end sub_020357F0
arm_func_start sub_02035CE4
sub_02035CE4: ; 0x02035CE4
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, _02035DA8 ; =_0209B1B8
bl InitMenuWithWindowExtraInfo
cmp r0, #0
ldmeqia sp!, {r4, pc}
ldr r2, _02035DAC ; =_020AFDD8
mov r3, #0
mov r0, #0xb8
mov r1, #8
strb r3, [r2]
bl MemAlloc
ldr r1, _02035DAC ; =_020AFDD8
str r0, [r1, #4]
add r0, r0, #0xc
bl CopyMenuControlWindowExtraInfo
ldr r1, _02035DAC ; =_020AFDD8
ldr r1, [r1, #4]
str r0, [r1, #8]
mov r0, #0
bl sub_02048078
ldr r0, _02035DAC ; =_020AFDD8
ldr r0, [r0, #4]
add r0, r0, #0xa4
bl sub_0204AF98
ldr r0, _02035DAC ; =_020AFDD8
mvn r3, #1
ldr ip, [r0, #4]
mov r2, #0
ldrb r1, [ip, #0xa4]
str r1, [ip, #0xb0]
ldr ip, [r0, #4]
ldr r1, [ip, #0xb0]
str r1, [ip, #0xb4]
ldr ip, [r0, #4]
ldr r1, [ip, #0xb0]
str r1, [ip, #0xac]
ldr r1, [r0, #4]
strb r3, [r1]
ldr r1, [r0, #4]
strb r3, [r1, #1]
ldr r1, [r0, #4]
strb r3, [r1, #2]
ldr r1, [r0, #4]
str r2, [r1, #4]
ldr r1, [r0, #4]
str r4, [r1, #0xa8]
strb r2, [r0]
ldmia sp!, {r4, pc}
.align 2, 0
_02035DA8: .word _0209B1B8
_02035DAC: .word _020AFDD8
arm_func_end sub_02035CE4
arm_func_start sub_02035DB0
sub_02035DB0: ; 0x02035DB0
stmdb sp!, {r3, lr}
ldr r0, _02035E34 ; =_020AFDD8
ldr r0, [r0, #4]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0]
mvn r1, #1
cmp r0, r1
beq _02035DD8
bl CloseOptionsMenu
_02035DD8:
ldr r0, _02035E34 ; =_020AFDD8
mvn r1, #1
ldr r0, [r0, #4]
ldrsb r0, [r0, #1]
cmp r0, r1
beq _02035DF4
bl CloseDialogueBox
_02035DF4:
ldr r0, _02035E34 ; =_020AFDD8
mvn r1, #1
ldr r0, [r0, #4]
ldrsb r0, [r0, #2]
cmp r0, r1
beq _02035E10
bl CloseParentMenu
_02035E10:
mov r0, #1
bl sub_02048078
ldr r0, _02035E34 ; =_020AFDD8
ldr r0, [r0, #4]
bl MemFree
ldr r0, _02035E34 ; =_020AFDD8
mov r1, #0
str r1, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_02035E34: .word _020AFDD8
arm_func_end sub_02035DB0
arm_func_start sub_02035E38
sub_02035E38: ; 0x02035E38
stmdb sp!, {r4, lr}
sub sp, sp, #8
ldr r2, _0203630C ; =_020AFDD8
ldr r3, [r2, #4]
ldr r0, [r3, #4]
cmp r0, #5
addls pc, pc, r0, lsl #2
b _02036300
_02035E58: ; jump table
b _02035E70 ; case 0
b _02035F64 ; case 1
b _0203604C ; case 2
b _02036110 ; case 3
b _02036178 ; case 4
b _02036250 ; case 5
_02035E70:
ldrsb r0, [r3, #1]
mvn r1, #1
cmp r0, r1
beq _02035EB0
bl IsDialogueBoxActive
cmp r0, #0
bne _02036300
ldr r0, _0203630C ; =_020AFDD8
ldr r0, [r0, #4]
ldrsb r0, [r0, #1]
bl CloseDialogueBox
ldr r0, _0203630C ; =_020AFDD8
mvn r1, #1
ldr r0, [r0, #4]
strb r1, [r0, #1]
b _02036300
_02035EB0:
ldrsb r0, [r3, #2]
cmp r0, r1
beq _02035EEC
bl IsParentMenuActive
cmp r0, #0
bne _02036300
ldr r0, _0203630C ; =_020AFDD8
ldr r0, [r0, #4]
ldrsb r0, [r0, #2]
bl CloseParentMenu
ldr r0, _0203630C ; =_020AFDD8
mvn r1, #1
ldr r0, [r0, #4]
strb r1, [r0, #2]
b _02036300
_02035EEC:
ldrsb r0, [r3]
cmp r0, r1
bne _02035F54
mov r0, #0
str r0, [r3, #0xc]
ldr r0, [r2, #4]
#ifdef JAPAN
mov r1, #0x3b0
#else
mov r1, #0x1a8
#endif
strh r1, [r0, #0x14]
ldr r0, [r2, #4]
mov r1, #0x10
str r1, [r0, #0x18]
ldr r2, [r2, #4]
mov r0, #9
str r0, [sp]
add r0, r2, #0xb0
str r0, [sp, #4]
ldr r1, [r2, #8]
ldr r0, _02036310 ; =_0209B1C8
orr r1, r1, #0x33
ldr r3, _02036314 ; =_0209B1F0
orr r1, r1, #0x1800
add r2, r2, #0xc
bl CreateOptionsMenu
ldr r1, _0203630C ; =_020AFDD8
ldr r1, [r1, #4]
strb r0, [r1]
_02035F54:
ldr r0, _0203630C ; =_020AFDD8
mov r1, #1
ldr r0, [r0, #4]
str r1, [r0, #4]
_02035F64:
ldr r0, _0203630C ; =_020AFDD8
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl CheckOptionsMenuField0x1A4
cmp r0, #0
bne _02035FE8
ldr r0, _0203630C ; =_020AFDD8
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl GetOptionsMenuResult
ldr r1, _0203630C ; =_020AFDD8
tst r0, #0xff
strb r0, [r1]
beq _02035FC4
ldr r0, [r1, #4]
mov r2, #0
ldr r1, [r0, #0xb4]
ldr r0, [r0, #0xb0]
cmp r1, r0
movne r2, #1
cmp r2, #0
ldreq r0, _0203630C ; =_020AFDD8
moveq r1, #0
streqb r1, [r0]
_02035FC4:
ldr r0, _0203630C ; =_020AFDD8
ldrb r1, [r0]
ldr r0, [r0, #4]
cmp r1, #0
moveq r1, #4
streq r1, [r0, #4]
movne r1, #2
strne r1, [r0, #4]
b _02036300
_02035FE8:
ldr r0, _0203630C ; =_020AFDD8
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl sub_0202D59C
movs r4, r0
bne _02036300
ldr r0, _0203630C ; =_020AFDD8
ldr r1, [r0, #4]
ldrsb r0, [r1], #0xb0
bl GetOptionsMenuStates
ldr r0, _0203630C ; =_020AFDD8
ldr r0, [r0, #4]
add r0, r0, r4, lsl #2
ldr r1, [r0, #0xb0]
ldr r0, [r0, #0xac]
cmp r1, r0
beq _02036300
and r0, r1, #0xff
bl sub_02027180
ldr r0, _0203630C ; =_020AFDD8
ldr r0, [r0, #4]
add r1, r0, r4, lsl #2
ldr r0, [r1, #0xb0]
str r0, [r1, #0xac]
b _02036300
_0203604C:
ldrsb r0, [r3]
mvn r1, #1
cmp r0, r1
beq _0203608C
bl IsOptionsMenuActive
cmp r0, #0
bne _02036300
ldr r0, _0203630C ; =_020AFDD8
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl CloseOptionsMenu
ldr r0, _0203630C ; =_020AFDD8
mvn r1, #1
ldr r0, [r0, #4]
strb r1, [r0]
b _02036300
_0203608C:
ldrsb r0, [r3, #1]
cmp r0, r1
bne _020360C4
mov r0, #0
bl CreateDialogueBox
ldr r3, _0203630C ; =_020AFDD8
ldr r1, _02036318 ; =0x00000408
ldr r4, [r3, #4]
#ifdef JAPAN
sub r2, r1, #0x5b
#else
ldr r2, _0203631C ; =0x000001A5
#endif
strb r0, [r4, #1]
ldr r0, [r3, #4]
mov r3, #0
ldrsb r0, [r0, #1]
bl ShowStringIdInDialogueBox
_020360C4:
ldr r1, _0203630C ; =_020AFDD8
mvn r0, #1
ldr r1, [r1, #4]
ldrsb r1, [r1, #2]
cmp r1, r0
bne _020360FC
mov r0, #0
ldr r3, _02036320 ; =_0209B1D8
mov r2, r0
mov r1, #0x13
bl CreateParentMenuFromStringIds
ldr r1, _0203630C ; =_020AFDD8
ldr r1, [r1, #4]
strb r0, [r1, #2]
_020360FC:
ldr r0, _0203630C ; =_020AFDD8
mov r1, #3
ldr r0, [r0, #4]
str r1, [r0, #4]
b _02036300
_02036110:
ldrsb r0, [r3, #2]
bl CheckParentMenuField0x1A0
cmp r0, #0
bne _02036300
ldr r0, _0203630C ; =_020AFDD8
ldr r0, [r0, #4]
ldrsb r0, [r0, #2]
bl GetSimpleMenuResult__0202AEA4
ldr r1, _0203630C ; =_020AFDD8
mov r4, r0
ldr r0, [r1, #4]
ldrsb r0, [r0, #1]
bl sub_0202F334
cmp r4, #1
ldreq r0, _0203630C ; =_020AFDD8
moveq r1, #0
ldreq r0, [r0, #4]
streq r1, [r0, #4]
beq _02036300
mov r0, #1
bl SetNotifyNote
ldr r0, _0203630C ; =_020AFDD8
mov r1, #4
ldr r0, [r0, #4]
str r1, [r0, #4]
b _02036300
_02036178:
ldrsb r0, [r3]
mvn r1, #1
cmp r0, r1
beq _020361B4
bl IsOptionsMenuActive
cmp r0, #0
bne _02036300
ldr r0, _0203630C ; =_020AFDD8
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl CloseOptionsMenu
ldr r0, _0203630C ; =_020AFDD8
mvn r1, #1
ldr r0, [r0, #4]
strb r1, [r0]
_020361B4:
ldr r0, _0203630C ; =_020AFDD8
mvn r1, #1
ldr r0, [r0, #4]
ldrsb r0, [r0, #1]
cmp r0, r1
beq _020361F8
bl IsDialogueBoxActive
cmp r0, #0
bne _02036300
ldr r0, _0203630C ; =_020AFDD8
ldr r0, [r0, #4]
ldrsb r0, [r0, #1]
bl CloseDialogueBox
ldr r0, _0203630C ; =_020AFDD8
mvn r1, #1
ldr r0, [r0, #4]
strb r1, [r0, #1]
_020361F8:
ldr r0, _0203630C ; =_020AFDD8
mvn r1, #1
ldr r0, [r0, #4]
ldrsb r0, [r0, #2]
cmp r0, r1
beq _0203623C
bl IsParentMenuActive
cmp r0, #0
bne _02036300
ldr r0, _0203630C ; =_020AFDD8
ldr r0, [r0, #4]
ldrsb r0, [r0, #2]
bl CloseParentMenu
ldr r0, _0203630C ; =_020AFDD8
mvn r1, #1
ldr r0, [r0, #4]
strb r1, [r0, #2]
_0203623C:
ldr r0, _0203630C ; =_020AFDD8
mov r1, #5
ldr r0, [r0, #4]
str r1, [r0, #4]
b _02036300
_02036250:
mov r0, #6
str r0, [r3, #4]
ldrb r0, [r2]
mov r4, #0
ldr r1, [r2, #4]
cmp r0, #0
beq _02036298
ldr r0, [r1, #0xb0]
strb r0, [r1, #0xa4]
ldr r0, [r2, #4]
add r0, r0, #0xa4
bl sub_0204AFAC
ldr r0, _0203630C ; =_020AFDD8
ldr r0, [r0, #4]
ldr r0, [r0, #0xa8]
cmp r0, #1
moveq r4, #1
b _020362A0
_02036298:
ldr r0, [r1, #0xb4]
strb r0, [r1, #0xa4]
_020362A0:
ldr r0, _0203630C ; =_020AFDD8
ldr r0, [r0, #4]
ldrb r0, [r0, #0xa4]
bl sub_02027180
cmp r4, #0
beq _020362D4
ldr r1, _0203630C ; =_020AFDD8
mov r0, #2
ldr r2, [r1, #4]
mov r1, #0x100
add r2, r2, #0xc
bl sub_0204964C
b _020362F8
_020362D4:
ldr r0, _0203630C ; =_020AFDD8
ldr r2, [r0, #4]
ldr r1, [r2, #8]
tst r1, #0x100
beq _020362F8
ldrb r1, [r0]
ldr r0, [r2, #0x94]
ldr r2, [r2, #0x90]
blx r2
_020362F8:
mov r0, #4
b _02036304
_02036300:
mov r0, #1
_02036304:
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
_0203630C: .word _020AFDD8
_02036310: .word _0209B1C8
_02036314: .word _0209B1F0
_02036318: .word 0x00000408
#ifndef JAPAN
_0203631C: .word 0x000001A5
#endif
_02036320: .word _0209B1D8
arm_func_end sub_02035E38
arm_func_start sub_02036324
sub_02036324: ; 0x02036324
stmdb sp!, {r3, lr}
mov r3, r0
mov r2, r1
ldr r0, _02036350 ; =_0209B218
mov r1, r3
bl InitMenuWithWindowExtraInfo
cmp r0, #0
ldrne r0, _02036354 ; =_020AFDE0
movne r1, #0
strneb r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_02036350: .word _0209B218
_02036354: .word _020AFDE0
arm_func_end sub_02036324
arm_func_start sub_02036358
sub_02036358: ; 0x02036358
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r0, #0xb0
mov r1, #8
bl MemAlloc
ldr r1, _0203642C ; =_020AFDE0
str r0, [r1, #4]
add r0, r0, #0xc
bl CopyMenuControlWindowExtraInfo
ldr r4, _0203642C ; =_020AFDE0
mov r5, #0
ldr r1, [r4, #4]
str r0, [r1, #8]
_0203638C:
and r0, r5, #0xff
bl Debug_GetDebugFlag
ldr r1, [r4, #4]
add r1, r1, r5
add r5, r5, #1
strb r0, [r1, #0xa4]
cmp r5, #0xc
blt _0203638C
ldr r0, _0203642C ; =_020AFDE0
mov r3, #0
ldr r1, [r0, #4]
ldr r2, _02036430 ; =0x00003C64
str r3, [r1, #0xc]
ldr r1, [r0, #4]
mov r3, #0x10
strh r2, [r1, #0x14]
ldr r2, [r0, #4]
mov r1, #8
str r3, [r2, #0x18]
ldr r2, [r0, #4]
ldr r0, _02036434 ; =_0209B208
str r1, [sp]
add r1, r2, #0xa4
str r1, [sp, #4]
ldr r1, [r2, #8]
ldr r3, _02036438 ; =_0209B228
orr r1, r1, #0x33
orr r1, r1, #0x9800
add r2, r2, #0xc
bl CreateDebugMenu
ldr r1, _0203642C ; =_020AFDE0
mov r3, #0
ldr r2, [r1, #4]
strb r0, [r2]
ldr r2, [r1, #4]
mov r0, #1
str r3, [r2, #4]
strb r3, [r1]
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0203642C: .word _020AFDE0
#if defined(EUROPE)
_02036430: .word 0x00003C66
#elif defined(JAPAN)
_02036430: .word 0x000003BB
#else
_02036430: .word 0x00003C64
#endif
_02036434: .word _0209B208
_02036438: .word _0209B228
arm_func_end sub_02036358
arm_func_start sub_0203643C
sub_0203643C: ; 0x0203643C
stmdb sp!, {r3, lr}
ldr r0, _02036474 ; =_020AFDE0
ldr r0, [r0, #4]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0]
bl CloseDebugMenu
ldr r0, _02036474 ; =_020AFDE0
ldr r0, [r0, #4]
bl MemFree
ldr r0, _02036474 ; =_020AFDE0
mov r1, #0
str r1, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_02036474: .word _020AFDE0
arm_func_end sub_0203643C
arm_func_start sub_02036478
sub_02036478: ; 0x02036478
stmdb sp!, {r3, r4, r5, lr}
ldr r4, _02036568 ; =_020AFDE0
ldr r1, [r4, #4]
ldr r0, [r1, #4]
cmp r0, #0
beq _020364A4
cmp r0, #1
beq _020364C4
cmp r0, #2
beq _020364FC
b _02036560
_020364A4:
ldrsb r0, [r1]
bl CheckDebugMenuField0x1A4
cmp r0, #0
moveq r0, r4
ldreq r0, [r0, #4]
moveq r1, #1
streq r1, [r0, #4]
b _02036560
_020364C4:
ldrsb r0, [r1]
bl IsDebugMenuActive
cmp r0, #0
bne _02036560
mov r0, r4
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl sub_0202DF64
mov r1, r4
strb r0, [r1]
ldr r0, [r1, #4]
mov r2, #2
str r2, [r0, #4]
b _02036560
_020364FC:
mov r0, #3
str r0, [r1, #4]
ldrb r0, [r4]
cmp r0, #0
beq _02036534
mov r5, #0
_02036514:
ldr r1, [r4, #4]
and r0, r5, #0xff
add r1, r1, r5
ldrb r1, [r1, #0xa4]
bl Debug_SetDebugFlag
add r5, r5, #1
cmp r5, #0xc
blt _02036514
_02036534:
ldr r0, _02036568 ; =_020AFDE0
ldr r2, [r0, #4]
ldr r1, [r2, #8]
tst r1, #0x100
beq _02036558
ldrb r1, [r0]
ldr r0, [r2, #0x94]
ldr r2, [r2, #0x90]
blx r2
_02036558:
mov r0, #4
ldmia sp!, {r3, r4, r5, pc}
_02036560:
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02036568: .word _020AFDE0
arm_func_end sub_02036478
arm_func_start sub_0203656C
sub_0203656C: ; 0x0203656C
stmdb sp!, {r3, lr}
mov r3, r0
mov r2, r1
ldr r0, _02036598 ; =_0209B254
mov r1, r3
bl InitMenuWithWindowExtraInfo
cmp r0, #0
ldrne r0, _0203659C ; =_020AFDE8
movne r1, #0
strneb r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_02036598: .word _0209B254
_0203659C: .word _020AFDE8
arm_func_end sub_0203656C
arm_func_start sub_020365A0
sub_020365A0: ; 0x020365A0
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r0, #0xb4
mov r1, #8
bl MemAlloc
ldr r1, _02036674 ; =_020AFDE8
str r0, [r1, #4]
add r0, r0, #0xc
bl CopyMenuControlWindowExtraInfo
ldr r4, _02036674 ; =_020AFDE8
mov r5, #0
ldr r1, [r4, #4]
str r0, [r1, #8]
_020365D4:
and r0, r5, #0xff
bl Debug_GetLogFlag
ldr r1, [r4, #4]
add r1, r1, r5
add r5, r5, #1
strb r0, [r1, #0xa4]
cmp r5, #0x10
blt _020365D4
ldr r0, _02036674 ; =_020AFDE8
mov r3, #0
ldr r1, [r0, #4]
ldr r2, _02036678 ; =0x00003C73
str r3, [r1, #0xc]
ldr r1, [r0, #4]
mov r3, #0x10
strh r2, [r1, #0x14]
ldr r2, [r0, #4]
mov r1, #8
str r3, [r2, #0x18]
ldr r2, [r0, #4]
ldr r0, _0203667C ; =_0209B244
str r1, [sp]
add r1, r2, #0xa4
str r1, [sp, #4]
ldr r1, [r2, #8]
ldr r3, _02036680 ; =_0209B264
orr r1, r1, #0x33
orr r1, r1, #0x9800
add r2, r2, #0xc
bl CreateDebugMenu
ldr r1, _02036674 ; =_020AFDE8
mov r3, #0
ldr r2, [r1, #4]
strb r0, [r2]
ldr r2, [r1, #4]
mov r0, #1
str r3, [r2, #4]
strb r3, [r1]
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02036674: .word _020AFDE8
#if defined(EUROPE)
_02036678: .word 0x00003C75
#elif defined(JAPAN)
_02036678: .word 0x000003CA
#else
_02036678: .word 0x00003C73
#endif
_0203667C: .word _0209B244
_02036680: .word _0209B264
arm_func_end sub_020365A0
arm_func_start sub_02036684
sub_02036684: ; 0x02036684
stmdb sp!, {r3, lr}
ldr r0, _020366BC ; =_020AFDE8
ldr r0, [r0, #4]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0]
bl CloseDebugMenu
ldr r0, _020366BC ; =_020AFDE8
ldr r0, [r0, #4]
bl MemFree
ldr r0, _020366BC ; =_020AFDE8
mov r1, #0
str r1, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_020366BC: .word _020AFDE8
arm_func_end sub_02036684
arm_func_start sub_020366C0
sub_020366C0: ; 0x020366C0
stmdb sp!, {r3, r4, r5, lr}
ldr r4, _020367B0 ; =_020AFDE8
ldr r1, [r4, #4]
ldr r0, [r1, #4]
cmp r0, #0
beq _020366EC
cmp r0, #1
beq _0203670C
cmp r0, #2
beq _02036744
b _020367A8
_020366EC:
ldrsb r0, [r1]
bl CheckDebugMenuField0x1A4
cmp r0, #0
moveq r0, r4
ldreq r0, [r0, #4]
moveq r1, #1
streq r1, [r0, #4]
b _020367A8
_0203670C:
ldrsb r0, [r1]
bl IsDebugMenuActive
cmp r0, #0
bne _020367A8
mov r0, r4
ldr r0, [r0, #4]
ldrsb r0, [r0]
bl sub_0202DF64
mov r1, r4
strb r0, [r1]
ldr r0, [r1, #4]
mov r2, #2
str r2, [r0, #4]
b _020367A8
_02036744:
mov r0, #3
str r0, [r1, #4]
ldrb r0, [r4]
cmp r0, #0
beq _0203677C
mov r5, #0
_0203675C:
ldr r1, [r4, #4]
and r0, r5, #0xff
add r1, r1, r5
ldrb r1, [r1, #0xa4]
bl Debug_SetLogFlag
add r5, r5, #1
cmp r5, #0x10
blt _0203675C
_0203677C:
ldr r0, _020367B0 ; =_020AFDE8
ldr r2, [r0, #4]
ldr r1, [r2, #8]
tst r1, #0x100
beq _020367A0
ldrb r1, [r0]
ldr r0, [r2, #0x94]
ldr r2, [r2, #0x90]
blx r2
_020367A0:
mov r0, #4
ldmia sp!, {r3, r4, r5, pc}
_020367A8:
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020367B0: .word _020AFDE8
arm_func_end sub_020366C0
arm_func_start SetupAndShowKeyboard
SetupAndShowKeyboard: ; 0x020367B4
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r0, _020367EC ; =_0209B298
mov r5, r1
mov r4, r2
bl InitMenu
cmp r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, r6
mov r1, r5
mov r3, r4
mov r2, #0
bl ShowKeyboard
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020367EC: .word _0209B298
arm_func_end SetupAndShowKeyboard
arm_func_start ShowKeyboard
ShowKeyboard: ; 0x020367F0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r0
mov r5, r1
mov r0, #0x1e8
mov r1, #8
mov r4, r2
mov r7, r3
bl MemAlloc
ldr r2, _02036CB0 ; =_020AFDF0
mov r1, #0x1e8
str r0, [r2]
bl MemZero
cmp r7, #0
ldreq r0, _02036CB0 ; =_020AFDF0
moveq r1, #0
ldreq r0, [r0]
streqb r1, [r0, #0x16e]
beq _02036850
ldr r0, _02036CB0 ; =_020AFDF0
mov r1, r7
ldr r0, [r0]
add r0, r0, #0x6e
add r0, r0, #0x100
bl StrcpySimple
_02036850:
ldr r0, _02036CB0 ; =_020AFDF0
#ifdef JAPAN
cmp r4, #0
ldr r1, [r0]
mov r2, #0
#else
mov r2, #0
ldr r1, [r0]
cmp r4, #0
#endif
strb r2, [r1, #0x11]
ldr r1, [r0]
and r3, r6, #0xff
strb r2, [r1, #0x12]
ldrne r1, [r0]
movne r2, #1
strneb r2, [r1, #0x11]
ldrne r0, [r0]
#ifdef JAPAN
mov r4, #0
#endif
strneb r2, [r0, #0x12]
ldr r0, _02036CB0 ; =_020AFDF0
mov r2, #0
ldr r1, [r0]
str r3, [r1, #0xc]
ldr r1, [r0]
#ifdef JAPAN
ldr r3, _02036CB0 ; =_020AFDF0
#endif
strb r2, [r1, #0x1d]
ldr r1, [r0]
strb r2, [r1, #0x1e]
#if defined(EUROPE)
ldr r2, [r0]
ldr r1, [r2, #0xc]
cmp r1, #0xa
addne r1, r1, #0x118
addne r0, r2, #0x100
bne _02036BC4
mov r1, #1
str r1, [r2, #0xc]
ldr r0, [r0]
mov r1, #0x120
add r0, r0, #0x100
_02036BC4:
strh r1, [r0, #0xa6]
ldr r0, _02036CB0 ; =_020AFDF0
mov r2, #0
ldr r1, [r0]
strb r2, [r1, #0x16]
ldr r1, [r0]
strb r2, [r1, #0x15]
ldr r1, [r0]
strh r2, [r1, #8]
ldr r1, [r0]
strb r2, [r1, #0x10]
ldr r3, [r0]
ldr r1, [r3, #0xc]
cmp r1, #9
addls pc, pc, r1, lsl #2
b _02036A40
_02036C04: ; jump table
b _02036A40 ; case 0
b _02036CEC ; case 1
b _02036A40 ; case 2
b _02036A40 ; case 3
b _02036A20 ; case 4
b _02036C2C ; case 5
b _02036C9C ; case 6
b _02036CCC_EU ; case 7
b _02036C5C ; case 8
b _02036D04 ; case 9
_02036C2C:
mov r1, #9
strb r1, [r3, #0x18]
ldr r1, [r0]
mov r2, #1
strb r2, [r1, #0x10]
ldr r1, [r0]
mov r2, #0x36
strb r2, [r1, #0x1b]
ldr r0, [r0]
mov r1, #2
strb r1, [r0, #0x16]
b _02036A58
_02036C5C:
mov r1, #6
strb r1, [r3, #0x18]
ldr r1, [r0]
mov r2, #3
strb r2, [r1, #0x16]
ldr r1, [r0]
mov r2, #1
strb r2, [r1, #0x10]
ldr r1, [r0]
mov r2, #0x36
strb r2, [r1, #0x1b]
ldr r0, [r0]
add r1, r2, #0xe9
add r0, r0, #0x100
strh r1, [r0, #0xa6]
b _02036A58
_02036C9C:
mov r1, #9
strb r1, [r3, #0x18]
ldr r1, [r0]
mov r2, #1
strb r2, [r1, #0x10]
ldr r1, [r0]
mov r2, #0x22
strb r2, [r1, #0x1b]
ldr r0, [r0]
mov r1, #2
strb r1, [r0, #0x16]
b _02036A58
_02036CCC_EU:
strb r2, [r3, #0x16]
ldr r1, [r0]
mov r2, #6
strb r2, [r1, #0x18]
ldr r0, [r0]
mov r1, #0x36
strb r1, [r0, #0x1b]
b _02036A58
_02036CEC:
mov r1, #6
strb r1, [r3, #0x18]
ldr r0, [r0]
mov r1, #0xa
strb r1, [r0, #0x1b]
b _02036A58
_02036D04:
mov r1, #4
strb r1, [r3, #0x16]
ldr r0, [r0]
mov r1, #0x11c
#elif defined(JAPAN)
ldr r1, [r0]
ldr r0, [r1, #0xc]
cmp r0, #0xa
moveq r0, #1
streq r0, [r1, #0xc]
ldr r2, [r3]
mov r0, #1
ldr r1, [r2, #0xc]
add r2, r2, #0x100
add r1, r1, #0xca
add r1, r1, #0x3100
strh r1, [r2, #0xa6]
ldr r1, [r3]
strb r0, [r1, #0x16]
ldr r1, [r3]
strb r4, [r1, #0x15]
ldr r1, [r3]
strh r4, [r1, #8]
ldr r1, [r3]
strb r4, [r1, #0x10]
ldr r1, [r3]
ldr r2, [r1, #0xc]
cmp r2, #9
addls pc, pc, r2, lsl #2
b _02036A40
_02036C28: ; jump table
b _02036A40 ; case 0
b _02036D04 ; case 1
b _02036A40 ; case 2
b _02036A40 ; case 3
b _02036A20 ; case 4
b _02036C50 ; case 5
b _02036CB8_JP ; case 6
b _02036CE4 ; case 7
b _02036C7C ; case 8
b _02036D1C ; case 9
_02036C50:
mov r2, #9
strb r2, [r1, #0x18]
ldr r1, [r3]
mov r2, #0x36
strb r0, [r1, #0x10]
ldr r0, [r3]
mov r1, #3
strb r2, [r0, #0x1b]
ldr r0, [r3]
strb r1, [r0, #0x16]
b _02036A58
_02036C7C:
mov r2, #6
strb r2, [r1, #0x18]
ldr r1, [r3]
mov r2, #4
strb r2, [r1, #0x16]
ldr r1, [r3]
mov r2, #0x36
strb r0, [r1, #0x10]
ldr r0, [r3]
ldr r1, _02036FC8 ; =0x000031D1
strb r2, [r0, #0x1b]
ldr r0, [r3]
add r0, r0, #0x100
strh r1, [r0, #0xa6]
b _02036A58
_02036CB8_JP:
mov r2, #9
strb r2, [r1, #0x18]
ldr r1, [r3]
mov r2, #0x22
strb r0, [r1, #0x10]
ldr r0, [r3]
mov r1, #3
strb r2, [r0, #0x1b]
ldr r0, [r3]
strb r1, [r0, #0x16]
b _02036A58
_02036CE4:
strb r4, [r1, #0x16]
ldr r0, [r3]
mov r1, #6
strb r1, [r0, #0x18]
ldr r0, [r3]
mov r1, #0x36
strb r1, [r0, #0x1b]
b _02036A58
_02036D04:
mov r0, #6
strb r0, [r1, #0x18]
ldr r0, [r3]
mov r1, #5
strb r1, [r0, #0x1b]
b _02036A58
_02036D1C:
mov r0, #5
strb r0, [r1, #0x16]
ldr r0, [r3]
ldr r1, _02036FCC ; =0x000031CE
#else
ldr r1, [r0]
mov r2, #0
ldr r0, [r1, #0xc]
cmp r0, #0xa
moveq r0, #1
streq r0, [r1, #0xc]
ldr r1, _02036CB0 ; =_020AFDF0
ldr r0, [r1]
ldr r3, [r0, #0xc]
add r0, r0, #0x100
add r3, r3, #0x118
strh r3, [r0, #0xa6]
ldr r0, [r1]
strb r2, [r0, #0x16]
ldr r0, [r1]
strb r2, [r0, #0x15]
ldr r0, [r1]
strh r2, [r0, #8]
ldr r0, [r1]
strb r2, [r0, #0x10]
ldr r3, [r1]
ldr r0, [r3, #0xc]
cmp r0, #9
addls pc, pc, r0, lsl #2
b _02036A40
_02036908: ; jump table
b _02036A40 ; case 0
b _020369F0 ; case 1
b _02036A40 ; case 2
b _02036A40 ; case 3
b _02036A20 ; case 4
b _02036930 ; case 5
b _020369A0 ; case 6
b _020369D0 ; case 7
b _02036960 ; case 8
b _02036A08 ; case 9
_02036930:
mov r0, #9
strb r0, [r3, #0x18]
ldr r0, [r1]
mov r2, #1
strb r2, [r0, #0x10]
ldr r0, [r1]
mov r2, #0x36
strb r2, [r0, #0x1b]
ldr r0, [r1]
mov r1, #2
strb r1, [r0, #0x16]
b _02036A58
_02036960:
mov r0, #6
strb r0, [r3, #0x18]
ldr r0, [r1]
mov r2, #3
strb r2, [r0, #0x16]
ldr r0, [r1]
mov r2, #1
strb r2, [r0, #0x10]
ldr r0, [r1]
mov r2, #0x36
strb r2, [r0, #0x1b]
ldr r0, [r1]
add r1, r2, #0xe9
add r0, r0, #0x100
strh r1, [r0, #0xa6]
b _02036A58
_020369A0:
mov r0, #9
strb r0, [r3, #0x18]
ldr r0, [r1]
mov r2, #1
strb r2, [r0, #0x10]
ldr r0, [r1]
mov r2, #0x22
strb r2, [r0, #0x1b]
ldr r0, [r1]
mov r1, #2
strb r1, [r0, #0x16]
b _02036A58
_020369D0:
strb r2, [r3, #0x16]
ldr r0, [r1]
mov r2, #6
strb r2, [r0, #0x18]
ldr r0, [r1]
mov r1, #0x36
strb r1, [r0, #0x1b]
b _02036A58
_020369F0:
mov r0, #6
strb r0, [r3, #0x18]
ldr r0, [r1]
mov r1, #0xa
strb r1, [r0, #0x1b]
b _02036A58
_02036A08:
mov r0, #4
strb r0, [r3, #0x16]
ldr r0, [r1]
mov r1, #0x11c
#endif
add r0, r0, #0x100
strh r1, [r0, #0xa6]
_02036A20:
ldr r0, _02036CB0 ; =_020AFDF0
mov r3, #6
ldr r2, [r0]
mov r1, #1
strb r3, [r2, #0x18]
ldr r0, [r0]
strb r1, [r0, #0x1b]
b _02036A58
_02036A40:
#ifdef JAPAN
mov r2, #6
ldr r0, _02036CB0 ; =_020AFDF0
strb r2, [r1, #0x18]
ldr r0, [r0]
mov r1, #5
#else
mov r1, #6
ldr r0, _02036CB0 ; =_020AFDF0
strb r1, [r3, #0x18]
ldr r0, [r0]
mov r1, #0xa
#endif
strb r1, [r0, #0x1b]
_02036A58:
ldr r0, _02036CB0 ; =_020AFDF0
mov r3, #0
ldr r2, [r0]
add r1, r2, #0xfc
str r1, [r2, #0xf8]
mov r2, r3
_02036A70:
ldr r1, [r0]
ldr r1, [r1, #0xf8]
strb r2, [r1, r3]
add r3, r3, #1
cmp r3, #0x36
blt _02036A70
cmp r5, #0
ldreq r0, _02036CB0 ; =_020AFDF0
ldreq r1, [r0]
addeq r0, r1, #0x138
streq r0, [r1, #0x134]
beq _02036AE4
ldr r0, _02036CB0 ; =_020AFDF0
ldr r1, [r0]
str r5, [r1, #0x134]
ldr r1, [r0]
ldrb r2, [r1, #0x1b]
ldr r0, [r1, #0xf8]
ldr r1, [r1, #0x134]
bl MemcpySimple
ldr r0, _02036CB0 ; =_020AFDF0
ldr r2, [r0]
add r1, r2, #0x138
str r1, [r2, #0x134]
ldr r1, [r0]
ldrb r2, [r1, #0x1b]
ldr r0, [r1, #0x134]
ldr r1, [r1, #0xf8]
bl MemcpySimple
_02036AE4:
ldr r0, _02036CB0 ; =_020AFDF0
mov r4, #0
ldr r2, [r0]
ldrb r1, [r2, #0x1b]
b _02036B0C
_02036AF8:
ldr r0, [r2, #0xf8]
ldrb r0, [r0, r4]
cmp r0, #0
beq _02036B14
add r4, r4, #1
_02036B0C:
cmp r4, r1
blt _02036AF8
_02036B14:
mov r2, #0
ldr r0, _02036CB0 ; =_020AFDF0
b _02036B2C
_02036B20:
ldr r1, [r3, #0xf8]
strb r2, [r1, r4]
add r4, r4, #1
_02036B2C:
ldr r3, [r0]
ldrb r1, [r3, #0x1b]
cmp r4, r1
blt _02036B20
bl sub_02038A54
ldr r1, _02036CB0 ; =_020AFDF0
ldr r2, [r1]
strb r0, [r2, #0x1c]
ldr r2, [r1]
ldrb r1, [r2, #0x1c]
ldrb r0, [r2, #0x1b]
cmp r1, r0
subeq r0, r1, #1
streqb r0, [r2, #0x1c]
ldr r0, _02036CB0 ; =_020AFDF0
mvn r1, #1
ldr r3, [r0]
ldrb r2, [r3, #0x16]
strb r2, [r3, #0x17]
ldr r0, [r0]
strb r1, [r0, #2]
bl sub_02038ADC
ldr r0, _02036CB0 ; =_020AFDF0
ldr r0, [r0]
ldr r0, [r0, #0xc]
sub r0, r0, #5
cmp r0, #3
addls pc, pc, r0, lsl #2
b _02036C30
_02036BA0: ; jump table
b _02036BB0 ; case 0
b _02036BB0 ; case 1
b _02036BB0 ; case 2
b _02036BB0 ; case 3
_02036BB0:
ldr r0, _02036CB4 ; =_0209B2FC
ldr r1, _02036CB8 ; =sub_02037F58
bl CreateTextBox
ldr r1, _02036CB0 ; =_020AFDF0
ldr r2, [r1]
strb r0, [r2]
ldr r1, [r1]
ldrb r0, [r1, #0x12]
cmp r0, #1
mvneq r0, #1
streqb r0, [r1, #2]
beq _02036C84
ldr r0, [r1, #0xc]
cmp r0, #8
beq _02036BF8
sub r0, r0, #5
cmp r0, #1
bhi _02036C14
_02036BF8:
ldr r0, _02036CBC ; =_0209B31C
ldr r1, _02036CC0 ; =sub_02037CA8
bl CreateTextBox
ldr r1, _02036CB0 ; =_020AFDF0
ldr r1, [r1]
strb r0, [r1, #2]
b _02036C84
_02036C14:
ldr r0, _02036CBC ; =_0209B31C
ldr r1, _02036CC4 ; =sub_02037C78
bl CreateTextBox
ldr r1, _02036CB0 ; =_020AFDF0
ldr r1, [r1]
strb r0, [r1, #2]
b _02036C84
_02036C30:
ldr r0, _02036CC8 ; =_0209B2EC
ldr r1, _02036CB8 ; =sub_02037F58
bl CreateTextBox
ldr r1, _02036CB0 ; =_020AFDF0
ldr r2, [r1]
strb r0, [r2]
ldr r1, [r1]
ldr r0, [r1, #0xc]
cmp r0, #4
cmpne r0, #9
ldrneb r0, [r1, #0x12]
cmpne r0, #1
mvneq r0, #1
streqb r0, [r1, #2]
beq _02036C84
ldr r0, _02036CBC ; =_0209B31C
ldr r1, _02036CC4 ; =sub_02037C78
bl CreateTextBox
ldr r1, _02036CB0 ; =_020AFDF0
ldr r1, [r1]
strb r0, [r1, #2]
_02036C84:
ldr r0, _02036CCC ; =_0209B2DC
ldr r1, _02036CD0 ; =sub_02037CD8
bl CreateTextBox
ldr r1, _02036CB0 ; =_020AFDF0
mov r2, #0
ldr r3, [r1]
strb r0, [r3, #1]
ldr r1, [r1]
mov r0, #1
str r2, [r1, #4]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02036CB0: .word _020AFDF0
#ifdef JAPAN
_02036FC8: .word 0x000031D1
_02036FCC: .word 0x000031CE
#endif
_02036CB4: .word _0209B2FC
_02036CB8: .word sub_02037F58
_02036CBC: .word _0209B31C
_02036CC0: .word sub_02037CA8
_02036CC4: .word sub_02037C78
_02036CC8: .word _0209B2EC
_02036CCC: .word _0209B2DC
_02036CD0: .word sub_02037CD8
arm_func_end ShowKeyboard
arm_func_start GetKeyboardStatus
GetKeyboardStatus: ; 0x02036CD4
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x5c
ldr r0, _02037444 ; =_020AFDF0
ldr r4, [r0]
ldr r0, [r4, #0xc]
sub r1, r0, #4
cmp r1, #5
addls pc, pc, r1, lsl #2
b _02036DE8
_02036CF8: ; jump table
b _02036DB8 ; case 0
b _02036D10 ; case 1
b _02036D40 ; case 2
b _02036D70 ; case 3
b _02036D10 ; case 4
b _02036DB8 ; case 5
_02036D10:
ldrb r2, [r4, #0x1c]
ldr r1, _02037448 ; =_0209B3B4
ldr r0, _0203744C ; =_0209B3B6
mov r3, r2, lsl #2
ldrsh r2, [r1, r3]
ldrsh r1, [r0, r3]
ldrsb r0, [r4, #1]
add r2, r2, #0xc
add r3, r1, #0x24
mov r1, #5
bl sub_020288FC
b _02036E30
_02036D40:
ldrb r2, [r4, #0x1c]
ldr r1, _02037450 ; =_0209B32C
ldr r0, _02037454 ; =_0209B32E
mov r3, r2, lsl #2
ldrsh r2, [r1, r3]
ldrsh r1, [r0, r3]
ldrsb r0, [r4, #1]
add r2, r2, #0xc
add r3, r1, #0x24
mov r1, #5
bl sub_020288FC
b _02036E30
_02036D70:
ldrb r5, [r4, #0x1c]
mov r1, #0x12
mov r0, r5
bl _s32_div_f
mov r1, #0x12
mul r1, r0, r1
ldr r0, _02037448 ; =_0209B3B4
mov r2, r5, lsl #2
ldrsh r2, [r0, r2]
ldr r0, _0203744C ; =_0209B3B6
mov r1, r1, lsl #2
ldrsh r1, [r0, r1]
ldrsb r0, [r4, #1]
add r2, r2, #0xc
add r3, r1, #0x24
mov r1, #5
bl sub_020288FC
b _02036E30
_02036DB8:
ldr r2, _02037458 ; =_0209B2C4
ldr r1, _0203745C ; =_0209B2D0
ldrsh r3, [r4, #0x20]
ldrb r1, [r1, r0]
ldrb r2, [r2, r0]
add r3, r3, #0x25
ldrsb r0, [r4, #1]
add r2, r3, r2
add r3, r1, #0x24
mov r1, #5
bl sub_020288FC
b _02036E30
_02036DE8:
ldr r1, _02037444 ; =_020AFDF0
ldr r2, _02037458 ; =_0209B2C4
ldr ip, [r1]
ldr r1, _0203745C ; =_0209B2D0
ldrb r5, [ip, #0x1c]
ldrb r3, [r1, r0]
ldrb r4, [r2, r0]
add r0, ip, r5, lsl #1
ldrsh r2, [r0, #0x20]
ldrsh r1, [r0, #0x8c]
ldrsb r0, [ip, #1]
add r2, r2, #0x1f
add r2, r4, r2
add r1, r1, r1, lsr #31
add r2, r2, r1, asr #1
add r3, r3, #0x24
mov r1, #5
bl sub_020288FC
_02036E30:
ldr r1, _02037444 ; =_020AFDF0
add r0, sp, #0x38
ldr r3, [r1]
mov r1, #1
ldrb r2, [r3, #0x14]
add r2, r2, #1
strb r2, [r3, #0x14]
bl sub_02031914
ldr r0, [sp, #0x3c]
ldr r1, [sp, #0x40]
mov r0, r0, lsl #0x10
mov r1, r1, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, r1, lsr #0x10
mov r2, #0
bl sub_02038B80
cmp r0, #0x64
blt _02036EB4
ldr r1, _02037444 ; =_020AFDF0
sub r0, r0, #0x64
ldr r2, [r1]
and r1, r0, #0xff
ldrb r0, [r2, #0x1c]
cmp r0, r1
beq _02036EE0
mov r0, #3
strb r1, [r2, #0x1c]
bl PlaySeVolumeWrapper
ldr r0, _02037444 ; =_020AFDF0
mov r1, #8
ldr r0, [r0]
strb r1, [r0, #0x14]
b _02036EE0
_02036EB4:
cmp r0, #0
blt _02036EE0
ldr r1, _02037444 ; =_020AFDF0
and r0, r0, #0xff
ldr r3, [r1]
ldrb r2, [r3, #0x18]
cmp r2, r0
strneb r0, [r3, #0x18]
ldrne r0, [r1]
movne r1, #8
strneb r1, [r0, #0x14]
_02036EE0:
ldr r0, _02037444 ; =_020AFDF0
ldr r1, [r0]
ldrb r0, [r1, #0x1e]
cmp r0, #0
subne r0, r0, #1
strneb r0, [r1, #0x1e]
add r1, sp, #8
mov r0, #0
bl sub_020063F4
add r1, sp, #0xa
mov r0, #0
bl GetHeldButtons
ldrh r0, [sp, #0xa]
tst r0, #0x100
beq _02036F5C
ldr r0, _02037444 ; =_020AFDF0
mov r2, #0xa
ldr r5, [r0]
#ifdef JAPAN
ldr r3, [r0, #4]
#else
ldr r3, [r0, #8]
#endif
ldrb r1, [r5, #0x16]
ldrb r4, [r5, #0x18]
ldrsb r0, [r5]
ldr r3, [r3, r1, lsl #2]
mov r1, #3
mla r3, r4, r2, r3
ldrb r2, [r3, #4]
ldrb r3, [r3, #5]
add r2, r2, #2
add r3, r3, #0x61
bl sub_020288FC
b _020370A4
_02036F5C:
ldrh r0, [sp, #8]
cmp r0, #0x20
bgt _02036F78
bge _02036FE4
cmp r0, #0x10
beq _0203700C
b _02037034
_02036F78:
cmp r0, #0x40
bgt _02036F88
beq _02036F94
b _02037034
_02036F88:
cmp r0, #0x80
beq _02036FBC
b _02037034
_02036F94:
ldr r0, _02037444 ; =_020AFDF0
mov r2, #0xa
#ifdef JAPAN
ldmia r0, {r1, r4}
#else
ldr r1, [r0]
ldr r4, [r0, #8]
#endif
ldrb r0, [r1, #0x18]
ldrb r3, [r1, #0x16]
smulbb r2, r0, r2
ldr r3, [r4, r3, lsl #2]
ldrb r2, [r3, r2]
b _02037044
_02036FBC:
ldr r0, _02037444 ; =_020AFDF0
mov r2, #0xa
#ifdef JAPAN
ldmia r0, {r1, r4}
#else
ldr r1, [r0]
ldr r4, [r0, #8]
#endif
ldrb r3, [r1, #0x16]
ldrb r0, [r1, #0x18]
ldr r3, [r4, r3, lsl #2]
mla r2, r0, r2, r3
ldrb r2, [r2, #1]
b _02037044
_02036FE4:
ldr r0, _02037444 ; =_020AFDF0
mov r2, #0xa
#ifdef JAPAN
ldmia r0, {r1, r4}
#else
ldr r1, [r0]
ldr r4, [r0, #8]
#endif
ldrb r3, [r1, #0x16]
ldrb r0, [r1, #0x18]
ldr r3, [r4, r3, lsl #2]
mla r2, r0, r2, r3
ldrb r2, [r2, #2]
b _02037044
_0203700C:
ldr r0, _02037444 ; =_020AFDF0
mov r2, #0xa
#ifdef JAPAN
ldmia r0, {r1, r4}
#else
ldr r1, [r0]
ldr r4, [r0, #8]
#endif
ldrb r3, [r1, #0x16]
ldrb r0, [r1, #0x18]
ldr r3, [r4, r3, lsl #2]
mla r2, r0, r2, r3
ldrb r2, [r2, #3]
b _02037044
_02037034:
ldr r0, _02037444 ; =_020AFDF0
ldr r1, [r0]
ldrb r0, [r1, #0x18]
mov r2, r0
_02037044:
cmp r2, r0
beq _02037068
mov r0, #3
strb r2, [r1, #0x18]
bl PlaySeVolumeWrapper
ldr r0, _02037444 ; =_020AFDF0
mov r1, #8
ldr r0, [r0]
strb r1, [r0, #0x14]
_02037068:
ldr r0, _02037444 ; =_020AFDF0
mov r2, #0xa
ldr r5, [r0]
#ifdef JAPAN
ldr r3, [r0, #4]
#else
ldr r3, [r0, #8]
#endif
ldrb r1, [r5, #0x16]
ldrb r4, [r5, #0x18]
ldrsb r0, [r5]
ldr r3, [r3, r1, lsl #2]
mov r1, #3
mla r3, r4, r2, r3
ldrb r2, [r3, #4]
ldrb r3, [r3, #5]
add r2, r2, #2
add r3, r3, #0x61
bl sub_020288FC
_020370A4:
add r0, sp, #0x14
mov r1, #1
bl sub_02031914
ldrh r0, [sp, #0x14]
tst r0, #2
beq _020371C0
ldr r0, _02037444 ; =_020AFDF0
ldr r0, [r0]
ldrb r0, [r0, #0x1e]
cmp r0, #0
bne _020371C0
ldr r0, [sp, #0x18]
ldr r1, [sp, #0x1c]
mov r0, r0, lsl #0x10
mov r1, r1, lsl #0x10
mov r0, r0, lsr #0x10
mov r1, r1, lsr #0x10
mov r2, #1
bl sub_02038B80
mov r4, r0
cmp r4, #0x64
bge _02037108
mvn r0, #0
cmp r4, r0
bne _02037110
_02037108:
mvn r4, #0
b _020371C4
_02037110:
ldr r0, _02037444 ; =_020AFDF0
ldr r0, [r0]
ldrsb r0, [r0, #1]
bl GetWindow
ldr r3, _02037444 ; =_020AFDF0
mov r1, #0xa
ldr ip, [r3]
mul r5, r4, r1
ldrb r1, [ip, #0x16]
#ifdef JAPAN
ldr ip, [r3, #4]
#else
ldr ip, [r3, #8]
#endif
ldr r3, _02037460 ; =_0209B28C
ldr ip, [ip, r1, lsl #2]
mov r1, #0x40
str r3, [sp]
str r1, [sp, #4]
add r1, ip, r5
ldrb ip, [r1, #4]
ldrb lr, [r0, #4]
ldrb r3, [r0, #5]
ldrb r1, [r1, #5]
add r0, ip, lr, lsl #3
mov r0, r0, lsl #0x10
add r1, r1, r3, lsl #3
mov r1, r1, lsl #0x10
mov r2, #0xc
cmp r4, #5
movle r2, #0x24
mov r2, r2, lsl #0x10
mov r0, r0, asr #0x10
mov r1, r1, asr #0x10
mov r2, r2, asr #0x10
mov r3, #0xc
bl sub_0202A2A4
ldr r0, _02037444 ; =_020AFDF0
ldr r2, [r0]
#ifdef JAPAN
ldr r1, [r0, #4]
#else
ldr r1, [r0, #8]
#endif
ldrb r0, [r2, #0x16]
ldr r0, [r1, r0, lsl #2]
add r0, r0, r5
ldrh r0, [r0, #8]
cmp r0, #0x108
movne r0, #5
strneb r0, [r2, #0x1e]
b _020371C4
_020371C0:
mvn r4, #0
_020371C4:
mvn r0, #0
cmp r4, r0
beq _020371D8
bl sub_020384B0
b _0203743C
_020371D8:
add r1, sp, #0x10
mov r0, #0
bl GetPressedButtons
add r1, sp, #0xe
mov r0, #0
bl GetHeldButtons
add r1, sp, #0xc
mov r0, #0
bl sub_020063F4
ldrh r0, [sp, #0xe]
tst r0, #0x100
beq _02037374
ldrh r0, [sp, #0xc]
cmp r0, #0x20
bgt _02037224
bge _02037240
cmp r0, #0x10
beq _02037274
b _02037374
_02037224:
cmp r0, #0x40
bgt _02037234
beq _020372C0
b _02037374
_02037234:
cmp r0, #0x80
beq _02037308
b _02037374
_02037240:
ldr r0, _02037444 ; =_020AFDF0
ldr r2, [r0]
ldrb r0, [r2, #0x1c]
cmp r0, #0
beq _02037268
sub r1, r0, #1
mov r0, #3
strb r1, [r2, #0x1c]
bl PlaySeVolumeWrapper
b _02037374
_02037268:
mov r0, #2
bl PlaySeVolumeWrapper
b _02037374
_02037274:
ldr r0, _02037444 ; =_020AFDF0
ldr r4, [r0]
ldrb r0, [r4, #0x1b]
ldrb r1, [r4, #0x1c]
sub r0, r0, #1
cmp r1, r0
beq _020372B4
bl sub_02038A54
ldrb r1, [r4, #0x1c]
cmp r1, r0
bge _020372B4
add r1, r1, #1
mov r0, #3
strb r1, [r4, #0x1c]
bl PlaySeVolumeWrapper
b _02037374
_020372B4:
mov r0, #2
bl PlaySeVolumeWrapper
b _02037374
_020372C0:
ldr r0, _02037444 ; =_020AFDF0
ldr r1, _02037464 ; =_0209B2B8
ldr r2, [r0]
ldr r0, [r2, #0xc]
ldrsb r1, [r1, r0]
cmp r1, #0
beq _02037374
ldrb r0, [r2, #0x1c]
cmp r0, r1
blt _020372FC
sub r1, r0, r1
mov r0, #3
strb r1, [r2, #0x1c]
bl PlaySeVolumeWrapper
b _02037374
_020372FC:
mov r0, #2
bl PlaySeVolumeWrapper
b _02037374
_02037308:
ldr r0, _02037444 ; =_020AFDF0
ldr r1, _02037464 ; =_0209B2B8
ldr r4, [r0]
ldr r0, [r4, #0xc]
ldrsb r5, [r1, r0]
cmp r5, #0
beq _02037374
ldrb r0, [r4, #0x1b]
ldrb r1, [r4, #0x1c]
sub r0, r0, #1
cmp r1, r0
beq _0203736C
bl sub_02038A54
ldrb r1, [r4, #0x1c]
add r1, r1, r5
cmp r1, r0
bge _0203736C
ldr r1, _02037444 ; =_020AFDF0
mov r0, #3
ldr r2, [r1]
ldrb r1, [r2, #0x1c]
add r1, r1, r5
strb r1, [r2, #0x1c]
bl PlaySeVolumeWrapper
b _02037374
_0203736C:
mov r0, #2
bl PlaySeVolumeWrapper
_02037374:
ldrh r0, [sp, #0x10]
cmp r0, #8
#ifdef JAPAN
bgt _020376BC
cmp r0, #0
addge pc, pc, r0, lsl #2
#else
addls pc, pc, r0, lsl #2
#endif
b _02037438
_02037384: ; jump table
b _02037438 ; case 0
b _020373A8 ; case 1
b _020373B0 ; case 2
b _02037438 ; case 3
b _020373E0 ; case 4
b _02037438 ; case 5
b _02037438 ; case 6
b _02037438 ; case 7
b _020373C4 ; case 8
#ifdef JAPAN
_020376BC:
cmp r0, #0x400
beq _02037760
b _02037438
#endif
_020373A8:
bl sub_020384B0
b _0203743C
_020373B0:
bl sub_02038904
cmp r0, #0
beq _02037438
mov r0, #2
b _0203743C
_020373C4:
mov r0, #3
bl PlaySeVolumeWrapper
ldr r0, _02037444 ; =_020AFDF0
mov r1, #5
ldr r0, [r0]
strb r1, [r0, #0x18]
b _02037438
_020373E0:
ldr r0, _02037444 ; =_020AFDF0
ldr r2, [r0]
ldrb r1, [r2, #0x10]
cmp r1, #0
bne _02037438
ldrb r1, [r2, #0x16]
#ifdef JAPAN
cmp r1, #3
#else
cmp r1, #2
#endif
bhi _02037438
add r1, r1, #1
strb r1, [r2, #0x16]
#ifdef JAPAN
ldr r4, [r0]
mov r1, #3
ldrb r0, [r4, #0x16]
bl _s32_div_f
mov r0, #4
strb r1, [r4, #0x16]
#else
ldr r2, [r0]
mov r0, #4
ldrb r1, [r2, #0x16]
and r1, r1, #1
strb r1, [r2, #0x16]
#endif
bl PlaySeVolumeWrapper
ldr r0, _02037444 ; =_020AFDF0
ldr r0, [r0]
ldrsb r0, [r0, #1]
bl sub_02037CD8
mov r0, #1
bl sub_020383FC
#ifdef JAPAN
b _02037438
_02037760:
mov r0, #2
bl sub_0203935C
ldr r0, _02037444 ; =_020AFDF0
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_02037F58
#endif
_02037438:
mov r0, #0
_0203743C:
add sp, sp, #0x5c
ldmia sp!, {r4, r5, pc}
.align 2, 0
_02037444: .word _020AFDF0
_02037448: .word _0209B3B4
_0203744C: .word _0209B3B6
_02037450: .word _0209B32C
_02037454: .word _0209B32E
_02037458: .word _0209B2C4
_0203745C: .word _0209B2D0
_02037460: .word _0209B28C
_02037464: .word _0209B2B8
arm_func_end GetKeyboardStatus
arm_func_start sub_02037468
sub_02037468: ; 0x02037468
stmdb sp!, {r3, lr}
ldr r0, _02037558 ; =_020AFDF0
ldr r0, [r0]
cmp r0, #0
beq _02037550
ldrsh r1, [r0, #8]
cmp r1, #3
beq _0203749C
cmp r1, #4
beq _020374D4
cmp r1, #5
beq _0203751C
b _02037534
_0203749C:
ldrsb r0, [r0]
bl sub_0202F954
ldr r0, _02037558 ; =_020AFDF0
ldr r0, [r0]
ldrsb r0, [r0, #1]
bl sub_0202F954
ldr r0, _02037558 ; =_020AFDF0
mvn r1, #1
ldr r0, [r0]
ldrsb r0, [r0, #2]
cmp r0, r1
beq _02037534
bl sub_0202F954
b _02037534
_020374D4:
ldrsb r0, [r0]
bl CloseTextBox
ldr r0, _02037558 ; =_020AFDF0
ldr r0, [r0]
ldrsb r0, [r0, #1]
bl CloseTextBox
ldr r0, _02037558 ; =_020AFDF0
mvn r1, #1
ldr r0, [r0]
ldrsb r0, [r0, #2]
cmp r0, r1
beq _02037534
bl CloseTextBox
ldr r0, _02037558 ; =_020AFDF0
mvn r1, #1
ldr r0, [r0]
strb r1, [r0, #2]
b _02037534
_0203751C:
bl MemFree
ldr r0, _02037558 ; =_020AFDF0
mov r1, #0
str r1, [r0]
mov r0, #1
ldmia sp!, {r3, pc}
_02037534:
ldr r1, _02037558 ; =_020AFDF0
mov r0, #0
ldr r2, [r1]
ldrsh r1, [r2, #8]
add r1, r1, #1
strh r1, [r2, #8]
ldmia sp!, {r3, pc}
_02037550:
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_02037558: .word _020AFDF0
arm_func_end sub_02037468
arm_func_start GetKeyboardStringResult
GetKeyboardStringResult: ; 0x0203755C
ldr r0, _0203756C ; =_020AFDF0
ldr r0, [r0]
ldr r0, [r0, #0xf8]
bx lr
.align 2, 0
_0203756C: .word _020AFDF0
arm_func_end GetKeyboardStringResult
arm_func_start sub_02037570
sub_02037570: ; 0x02037570
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r0, #0x1e8
mov r1, #8
mov r4, r3
bl MemAlloc
ldr r2, _020376E0 ; =_020AFDF0
mov r1, #0x1e8
str r0, [r2]
bl MemZero
ldr r0, _020376E0 ; =_020AFDF0
mov r2, #1
ldr r1, [r0]
cmp r5, #0
strb r2, [r1, #0x1a4]
bne _020375DC
ldr r1, [r0]
mov r2, #5
str r2, [r1, #0xc]
ldr r1, [r0]
mov r2, #0x36
strb r2, [r1, #0x1b]
ldr r0, [r0]
ldrh r1, [sp, #0x10]
add r0, r0, #0x100
strh r1, [r0, #0xa6]
b _0203760C
_020375DC:
cmp r5, #1
bne _0203760C
ldr r1, [r0]
mov r2, #6
str r2, [r1, #0xc]
ldr r1, [r0]
mov r2, #0x22
strb r2, [r1, #0x1b]
ldr r0, [r0]
ldrh r1, [sp, #0x10]
add r0, r0, #0x100
strh r1, [r0, #0xa6]
_0203760C:
ldr r0, _020376E0 ; =_020AFDF0
mov r3, #0
ldr r1, [r0]
str r3, [r1, #0x134]
ldr r2, [r0]
add r1, r2, #0xfc
str r1, [r2, #0xf8]
mov r2, r3
_0203762C:
ldr r1, [r0]
ldr r1, [r1, #0xf8]
strb r2, [r1, r3]
add r3, r3, #1
cmp r3, #0x36
blt _0203762C
ldr r0, _020376E0 ; =_020AFDF0
mov r1, r4
ldr r0, [r0]
ldrb r2, [r0, #0x1b]
ldr r0, [r0, #0xf8]
bl MemcpySimple
ldr r0, _020376E0 ; =_020AFDF0
mov r4, #0
ldr r2, [r0]
ldrb r1, [r2, #0x1b]
b _02037684
_02037670:
ldr r0, [r2, #0xf8]
ldrb r0, [r0, r4]
cmp r0, #0
beq _0203768C
add r4, r4, #1
_02037684:
cmp r4, r1
blt _02037670
_0203768C:
mov r2, #0
ldr r0, _020376E0 ; =_020AFDF0
b _020376A4
_02037698:
ldr r1, [r3, #0xf8]
strb r2, [r1, r4]
add r4, r4, #1
_020376A4:
ldr r3, [r0]
ldrb r1, [r3, #0x1b]
cmp r4, r1
blt _02037698
ldr r0, _020376E4 ; =_0209B30C
ldr r1, _020376E8 ; =sub_02037F58
bl CreateTextBox
ldr r1, _020376E0 ; =_020AFDF0
mov r2, #0
ldr r3, [r1]
strb r0, [r3]
ldr r1, [r1]
mov r0, #1
str r2, [r1, #4]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020376E0: .word _020AFDF0
_020376E4: .word _0209B30C
_020376E8: .word sub_02037F58
arm_func_end sub_02037570
arm_func_start sub_020376EC
sub_020376EC: ; 0x020376EC
stmdb sp!, {r3, lr}
ldr r0, _02037774 ; =_020AFDF0
ldr r0, [r0]
cmp r0, #0
beq _0203776C
ldrsh r1, [r0, #8]
cmp r1, #0
beq _02037720
cmp r1, #1
beq _0203772C
cmp r1, #0xc
beq _02037738
b _02037750
_02037720:
ldrsb r0, [r0]
bl sub_0202F954
b _02037750
_0203772C:
ldrsb r0, [r0]
bl CloseTextBox
b _02037750
_02037738:
bl MemFree
ldr r0, _02037774 ; =_020AFDF0
mov r1, #0
str r1, [r0]
mov r0, #1
ldmia sp!, {r3, pc}
_02037750:
ldr r1, _02037774 ; =_020AFDF0
mov r0, #0
ldr r2, [r1]
ldrsh r1, [r2, #8]
add r1, r1, #1
strh r1, [r2, #8]
ldmia sp!, {r3, pc}
_0203776C:
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_02037774: .word _020AFDF0
arm_func_end sub_020376EC
arm_func_start sub_02037778
sub_02037778: ; 0x02037778
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x40
ldr r0, _02037C28 ; =_020AFDF0
ldr r3, [r0]
#ifdef JAPAN
ldr r1, [r0, #8]
#else
ldr r1, [r0, #4]
#endif
ldr r2, [r3, #4]
cmp r2, r1
beq _020377B0
ldr r0, _02037C2C ; =_0209B48C
bl Debug_Print0
ldr r0, _02037C28 ; =_020AFDF0
ldr r3, [r0]
ldr r1, [r3, #4]
#ifdef JAPAN
str r1, [r0, #8]
#else
str r1, [r0, #4]
#endif
_020377B0:
ldr r0, [r3, #4]
cmp r0, #9
addls pc, pc, r0, lsl #2
b _02037C1C
_020377C0: ; jump table
b _020377E8 ; case 0
b _020377F4 ; case 1
b _02037858 ; case 2
b _0203799C ; case 3
b _02037C1C ; case 4
b _02037A5C ; case 5
b _02037AA0 ; case 6
b _02037C1C ; case 7
b _02037AEC ; case 8
b _02037B24 ; case 9
_020377E8:
mov r0, #1
str r0, [r3, #4]
b _02037C1C
_020377F4:
bl GetKeyboardStatus
cmp r0, #3
bne _02037C1C
ldr r0, _02037C28 ; =_020AFDF0
ldr r1, [r0]
ldr r0, [r1, #0xc]
cmp r0, #9
addls pc, pc, r0, lsl #2
b _0203784C
_02037818: ; jump table
b _02037840 ; case 0
b _02037840 ; case 1
b _02037840 ; case 2
b _02037840 ; case 3
b _02037840 ; case 4
b _02037840 ; case 5
b _02037840 ; case 6
b _02037840 ; case 7
b _0203784C ; case 8
b _02037840 ; case 9
_02037840:
mov r0, #2
str r0, [r1, #4]
b _02037C1C
_0203784C:
mov r0, #2
str r0, [r1, #4]
b _02037C1C
_02037858:
cmp r3, #0
beq _02037924
ldrsh r0, [r3, #8]
cmp r0, #3
beq _02037880
cmp r0, #4
beq _020378B8
cmp r0, #5
beq _02037900
b _02037908
_02037880:
ldrsb r0, [r3]
bl sub_0202F954
ldr r0, _02037C28 ; =_020AFDF0
ldr r0, [r0]
ldrsb r0, [r0, #1]
bl sub_0202F954
ldr r0, _02037C28 ; =_020AFDF0
mvn r1, #1
ldr r0, [r0]
ldrsb r0, [r0, #2]
cmp r0, r1
beq _02037908
bl sub_0202F954
b _02037908
_020378B8:
ldrsb r0, [r3]
bl CloseTextBox
ldr r0, _02037C28 ; =_020AFDF0
ldr r0, [r0]
ldrsb r0, [r0, #1]
bl CloseTextBox
ldr r0, _02037C28 ; =_020AFDF0
mvn r1, #1
ldr r0, [r0]
ldrsb r0, [r0, #2]
cmp r0, r1
beq _02037908
bl CloseTextBox
ldr r0, _02037C28 ; =_020AFDF0
mvn r1, #1
ldr r0, [r0]
strb r1, [r0, #2]
b _02037908
_02037900:
mov r2, #1
b _02037928
_02037908:
ldr r0, _02037C28 ; =_020AFDF0
mov r2, #0
ldr r1, [r0]
ldrsh r0, [r1, #8]
add r0, r0, #1
strh r0, [r1, #8]
b _02037928
_02037924:
mov r2, #1
_02037928:
cmp r2, #0
beq _02037C1C
ldr r0, _02037C28 ; =_020AFDF0
ldr r2, [r0]
ldr r1, [r2, #4]
add r1, r1, #1
str r1, [r2, #4]
ldr r1, [r0]
ldr r0, [r1, #0xc]
cmp r0, #9
addls pc, pc, r0, lsl #2
b _0203798C
_02037958: ; jump table
b _02037980 ; case 0
b _02037980 ; case 1
b _02037980 ; case 2
b _02037980 ; case 3
b _02037980 ; case 4
b _02037980 ; case 5
b _02037980 ; case 6
b _02037980 ; case 7
b _0203798C ; case 8
b _02037980 ; case 9
_02037980:
mov r0, #5
str r0, [r1, #4]
b _02037C1C
_0203798C:
ldr r0, [r1, #4]
add r0, r0, #1
str r0, [r1, #4]
b _02037C1C
_0203799C:
ldr r0, [r3, #0xc]
cmp r0, #9
addls pc, pc, r0, lsl #2
b _02037A54
_020379AC: ; jump table
b _020379D4 ; case 0
b _02037A40 ; case 1
b _02037A54 ; case 2
b _02037A54 ; case 3
b _02037A54 ; case 4
b _02037A54 ; case 5
b _02037A54 ; case 6
b _02037A54 ; case 7
b _02037A54 ; case 8
b _02037A54 ; case 9
_020379D4:
bl GetMainCharacter1MemberIdx
mov r5, r0
bl GetActiveRosterIndex
mov r4, r0
mov r0, r5
bl GetTeamMember
mov r5, r0
mov r0, r4
bl GetActiveTeamMember
ldr r1, _02037C28 ; =_020AFDF0
mov r4, r0
ldr r1, [r1]
add r0, r5, #0x3a
add r1, r1, #0xfc
mov r2, #0xa
bl StrncpySimple
mov r0, #0x3f
add r1, r5, #0x3a
mov r2, #0xa
bl SaveScriptVariableValueBytes
cmp r4, #0
beq _02037A54
add r0, r4, #0x5e
add r1, r5, #0x3a
mov r2, #0xa
bl StrncpySimple
b _02037A54
_02037A40:
bl ov11_0230D71C
ldr r0, _02037C28 ; =_020AFDF0
ldr r0, [r0]
add r0, r0, #0xfc
bl SetMainTeamName
_02037A54:
mov r0, #4
b _02037C20
_02037A5C:
add r0, sp, #0
add r1, r3, #0xfc
mov r2, #0x40
bl StrncpySimpleNoPadSafe
add r0, sp, #0
bl sub_0203909C
ldr r0, _02037C28 ; =_020AFDF0
ldr r0, [r0]
ldr r0, [r0, #0xc]
cmp r0, #1
bne _02037A8C
bl sub_02039304
_02037A8C:
ldr r0, _02037C28 ; =_020AFDF0
mov r1, #6
ldr r0, [r0]
str r1, [r0, #4]
b _02037C1C
_02037AA0:
bl sub_0203931C
cmp r0, #0
beq _02037AB8
cmp r0, #1
beq _02037ACC
b _02037C1C
_02037AB8:
ldr r0, _02037C28 ; =_020AFDF0
mov r1, #8
ldr r0, [r0]
str r1, [r0, #4]
b _02037C1C
_02037ACC:
ldr r0, _02037C28 ; =_020AFDF0
mov r3, #9
ldr r2, [r0]
mov r1, #0
str r3, [r2, #4]
ldr r0, [r0]
strh r1, [r0, #8]
b _02037C1C
_02037AEC:
bl sub_02039218
cmp r0, #0
beq _02037C1C
ldr r0, _02037C28 ; =_020AFDF0
ldr r0, [r0]
ldrb r0, [r0, #0x11]
cmp r0, #0
bne _02037B10
bl ov11_022E6E68
_02037B10:
ldr r0, _02037C28 ; =_020AFDF0
mov r1, #3
ldr r0, [r0]
str r1, [r0, #4]
b _02037C1C
_02037B24:
bl sub_02039218
cmp r0, #0
beq _02037C1C
ldr r2, _02037C28 ; =_020AFDF0
ldr r3, [r2]
ldr r0, [r3, #0xc]
cmp r0, #5
cmpne r0, #6
bne _02037B64
ldr r0, _02037C30 ; =_0209B2FC
ldr r1, _02037C34 ; =sub_02037F58
bl CreateTextBox
ldr r1, _02037C28 ; =_020AFDF0
ldr r1, [r1]
strb r0, [r1]
b _02037BF8
_02037B64:
ldrb r1, [r3, #0x17]
mov ip, #6
ldr r0, _02037C38 ; =_0209B2EC
strb r1, [r3, #0x16]
ldr r3, [r2]
ldr r1, _02037C34 ; =sub_02037F58
strb ip, [r3, #0x18]
ldr r2, [r2]
mov r3, #0
strb r3, [r2, #0x15]
bl CreateTextBox
ldr r1, _02037C28 ; =_020AFDF0
ldr r2, [r1]
strb r0, [r2]
ldr r1, [r1]
ldr r0, [r1, #0xc]
cmp r0, #4
cmpne r0, #9
mvneq r0, #1
streqb r0, [r1, #2]
beq _02037BD0
ldr r0, _02037C3C ; =_0209B31C
ldr r1, _02037C40 ; =sub_02037C78
bl CreateTextBox
ldr r1, _02037C28 ; =_020AFDF0
ldr r1, [r1]
strb r0, [r1, #2]
_02037BD0:
bl sub_02038A54
ldr r1, _02037C28 ; =_020AFDF0
ldr r2, [r1]
strb r0, [r2, #0x1c]
ldr r2, [r1]
ldrb r1, [r2, #0x1c]
ldrb r0, [r2, #0x1b]
cmp r1, r0
subeq r0, r1, #1
streqb r0, [r2, #0x1c]
_02037BF8:
ldr r0, _02037C44 ; =_0209B2DC
ldr r1, _02037C48 ; =sub_02037CD8
bl CreateTextBox
ldr r1, _02037C28 ; =_020AFDF0
mov r2, #0
ldr r3, [r1]
strb r0, [r3, #1]
ldr r0, [r1]
str r2, [r0, #4]
_02037C1C:
mov r0, #1
_02037C20:
add sp, sp, #0x40
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02037C28: .word _020AFDF0
_02037C2C: .word _0209B48C
_02037C30: .word _0209B2FC
_02037C34: .word sub_02037F58
_02037C38: .word _0209B2EC
_02037C3C: .word _0209B31C
_02037C40: .word sub_02037C78
_02037C44: .word _0209B2DC
_02037C48: .word sub_02037CD8
arm_func_end sub_02037778
arm_func_start sub_02037C4C
sub_02037C4C: ; 0x02037C4C
stmdb sp!, {r3, lr}
ldr r0, _02037C74 ; =_020AFDF0
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl MemFree
ldr r0, _02037C74 ; =_020AFDF0
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_02037C74: .word _020AFDF0
arm_func_end sub_02037C4C
arm_func_start sub_02037C78
sub_02037C78: ; 0x02037C78
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02027B1C
mov r1, #0
ldr r3, _02037CA4 ; =0x00000122
mov r0, r4
mov r2, r1
bl sub_02026268
mov r0, r4
bl UpdateWindow
ldmia sp!, {r4, pc}
.align 2, 0
#ifdef JAPAN
_02037CA4: .word 0x000031D4
#else
_02037CA4: .word 0x00000122
#endif
arm_func_end sub_02037C78
arm_func_start sub_02037CA8
sub_02037CA8: ; 0x02037CA8
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02027B1C
mov r1, #0
ldr r3, _02037CD4 ; =0x00000123
mov r0, r4
mov r2, r1
bl sub_02026268
mov r0, r4
bl UpdateWindow
ldmia sp!, {r4, pc}
.align 2, 0
#ifdef JAPAN
_02037CD4: .word 0x000031D5
#else
_02037CD4: .word 0x00000123
#endif
arm_func_end sub_02037CA8
arm_func_start sub_02037CD8
sub_02037CD8: ; 0x02037CD8
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x40
#ifdef JAPAN
mov r7, r0
bl sub_02027B1C
mov r4, #0
#else
ldr r1, _02037F10 ; =_020AFDF0
mov r7, r0
ldr r0, [r1]
mov r4, #0
ldrb r0, [r0, #0x16]
cmp r0, #0
moveq r4, #1
beq _02037D14
cmp r0, #1
moveq r4, #1
beq _02037D14
cmp r0, #2
moveq r4, #3
_02037D14:
mov r0, r7
bl sub_02027B1C
b _02037EF8
#endif
_02037D20:
ldr r2, _02037F10 ; =_020AFDF0
mov r0, #0xa
ldr r1, [r2]
mul r6, r4, r0
ldrb r0, [r1, #0x16]
#ifdef JAPAN
ldr r2, [r2, #4]
#else
ldr r2, [r2, #8]
#endif
ldr r3, _02037F14 ; =0x00000111
ldr r2, [r2, r0, lsl #2]
add r2, r2, r6
ldrh r5, [r2, #8]
cmp r5, r3
cmpne r5, #0x110
beq _02037EF4
add r2, r5, #0xfe
add r2, r2, #0xfe00
mov r2, r2, lsl #0x10
mov r2, r2, lsr #0x10
cmp r2, #7
bhi _02037E0C
#ifdef JAPAN
cmp r0, #2
#else
cmp r0, #0
#endif
moveq ip, #0x104
beq _02037D84
cmp r0, #1
#ifdef JAPAN
subeq ip, r3, #0xe
beq _02037D84
cmp r0, #0
subeq ip, r3, #0xf
#else
subeq ip, r3, #0xc
#endif
movne ip, #0
_02037D84:
cmp r5, #0x100
blo _02037EA8
ldr r0, _02037F18 ; =0x00000109
cmp r5, r0
bhi _02037EA8
mov lr, #0
ldr r3, _02037F1C ; =KEYBOARD_STRING_IDS
mov r0, #6
b _02037DF4
_02037DA8:
cmp r5, r8
bne _02037DE8
ldr r0, _02037F18 ; =0x00000109
cmp r5, r0
bne _02037DD0
#ifdef JAPAN
ldrb r0, [r1, #0x15]
cmp r0, #0
ldrne r1, _020381EC ; =0x000031D8
ldreq r1, _020381F0 ; =0x000031D9
#else
ldrb r1, [r1, #0x15]
cmp r1, #0
addne r1, r0, #0x1d
addeq r1, r0, #0x1e
#endif
b _02037DDC
_02037DD0:
cmp ip, r5
ldreqh r1, [r2, #4]
ldrneh r1, [r2, #2]
_02037DDC:
add r0, sp, #0
bl GetStringFromFileVeneer
b _02037EA8
_02037DE8:
add r2, lr, #1
mov r2, r2, lsl #0x10
mov lr, r2, asr #0x10
_02037DF4:
smulbb r2, lr, r0
ldrh r8, [r3, r2]
add r2, r3, r2
cmp r8, #0
bne _02037DA8
b _02037EA8
_02037E0C:
ldr r1, [r1, #0xc]
cmp r1, #8
beq _02037E38
#ifdef JAPAN
cmp r0, #3
#else
cmp r0, #2
#endif
bne _02037E38
cmp r4, #5
ble _02037E38
and r0, r5, #0xff
bl sub_0204DA1C
cmp r0, #0xff
#ifdef JAPAN
bne _02037E38
ldr r1, _020381F4 ; =_020B12A0_JP
add r0, sp, #0
ldr r2, [r1, r5, lsl #2]
ldr r1, _020381F8 ; =_0209B4A4
bl SprintfStatic__02037F30
b _02037EA8
_02037E38:
ldr r1, _020381F4 ; =_020B12A0_JP
add r0, sp, #0
ldr r1, [r1, r5, lsl #2]
bl strcpy
#else
beq _02037E5C
_02037E38:
ldr r0, _02037F10 ; =_020AFDF0
ldr r0, [r0]
ldr r0, [r0, #0xc]
cmp r0, #9
bne _02037E84
cmp r5, #0x41
blo _02037E5C
cmp r5, #0x5a
bls _02037E84
_02037E5C:
cmp r5, #0x20
add r0, sp, #0
bne _02037E74
ldr r1, _02037F20 ; =_0209B4A4
bl SprintfStatic__02037F30
b _02037EA8
_02037E74:
ldr r1, _02037F24 ; =_0209B4AC
mov r2, r5
bl SprintfStatic__02037F30
b _02037EA8
_02037E84:
cmp r5, #0x20
add r0, sp, #0
bne _02037E9C
ldr r1, _02037F28 ; =_0209B4B8
bl SprintfStatic__02037F30
b _02037EA8
_02037E9C:
ldr r1, _02037F2C ; =_0209B4C0
mov r2, r5
bl SprintfStatic__02037F30
#endif
_02037EA8:
add r0, sp, #0
bl sub_020265A8
cmp r0, #0xc
rsble r0, r0, #0xc
movgt r1, #0
addle r0, r0, r0, lsr #31
movle r1, r0, asr #1
ldr r0, _02037F10 ; =_020AFDF0
add r3, sp, #0
#ifdef JAPAN
ldmia r0, {r2, r5}
#else
ldr r2, [r0]
ldr r5, [r0, #8]
#endif
ldrb r2, [r2, #0x16]
mov r0, r7
ldr r2, [r5, r2, lsl #2]
add r2, r2, r6
ldrb r5, [r2, #4]
ldrb r2, [r2, #5]
add r1, r1, r5
bl DrawTextInWindow
_02037EF4:
add r4, r4, #1
_02037EF8:
cmp r4, #0x54
#ifdef JAPAN
blt _02037D20
#else
bne _02037D20
#endif
mov r0, r7
bl UpdateWindow
add sp, sp, #0x40
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02037F10: .word _020AFDF0
_02037F14: .word 0x00000111
_02037F18: .word 0x00000109
_02037F1C: .word KEYBOARD_STRING_IDS
#ifdef JAPAN
_020381EC: .word 0x000031D8
_020381F0: .word 0x000031D9
_020381F4: .word _020B12A0_JP
_020381F8: .word _0209B4A4
#else
_02037F20: .word _0209B4A4
_02037F24: .word _0209B4AC
_02037F28: .word _0209B4B8
_02037F2C: .word _0209B4C0
#endif
arm_func_end sub_02037CD8
arm_func_start SprintfStatic__02037F30
SprintfStatic__02037F30: ; 0x02037F30
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__02037F30
arm_func_start sub_02037F58
sub_02037F58: ; 0x02037F58
#ifdef JAPAN
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x108
#else
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x114
#endif
ldr r1, _020383DC ; =_0209B288
mov sb, r0
ldrb r2, [r1]
ldrb r0, [r1, #1]
#ifdef JAPAN
strb r2, [sp, #4]
strb r0, [sp, #5]
#else
mov sl, #0
strb r2, [sp, #0x10]
strb r0, [sp, #0x11]
#endif
bl sub_02038ADC
mov r0, sb
bl sub_02027B1C
ldr r0, _020383E0 ; =_020AFDF0
ldr r1, [r0]
ldr r0, [r1, #0xc]
cmp r0, #7
addeq r0, r1, #0x100
#ifdef JAPAN
moveq r1, #0
#else
moveq r1, sl
#endif
streqh r1, [r0, #0xa6]
ldr r0, _020383E0 ; =_020AFDF0
ldr r0, [r0]
add r0, r0, #0x100
ldrh r1, [r0, #0xa6]
cmp r1, #0
beq _02037FF8
#ifdef JAPAN
add r0, sp, #6
#else
add r0, sp, #0x12
#endif
bl GetStringFromFileVeneer
mov r0, sb
bl GetWindow
mov r4, r0
#ifdef JAPAN
add r0, sp, #6
#else
add r0, sp, #0x12
#endif
bl sub_020265A8
ldrb r1, [r4, #6]
mov r2, #0
#ifdef JAPAN
add r3, sp, #6
#else
add r3, sp, #0x12
#endif
rsb r0, r0, r1, lsl #3
add r0, r0, r0, lsr #31
mov r1, r0, asr #1
mov r0, sb
bl DrawTextInWindow
_02037FF8:
ldr r0, _020383E0 ; =_020AFDF0
ldr r0, [r0]
ldr r0, [r0, #0xc]
cmp r0, #5
moveq r8, #0x36
movne r8, #0x22
cmp r0, #7
moveq r8, #0x36
cmp r0, #8
ldr r0, _020383E0 ; =_020AFDF0
moveq r8, #0x36
ldr r0, [r0]
ldrb r5, [r0, #0x1b]
ldr r4, [r0, #0xf8]
bl sub_02038B5C
cmp r0, #0
beq _02038054
mov r0, r4
mov r1, r5
bl sub_02038A8C
#ifdef JAPAN
_02038054:
#else
cmp r0, #0x3c
movgt r0, #1
bgt _02038058
_02038054:
mov r0, #0
_02038058:
cmp r0, #0
movne sl, #1
#endif
mov r6, #0
ldr r4, _020383E4 ; =_0209B3B4
ldr fp, _020383E0 ; =_020AFDF0
b _02038394
_02038070:
ldr r1, [fp]
add r0, r1, r6
ldr r7, [r1, #0xc]
ldrb r5, [r0, #0xfc]
sub r0, r7, #4
cmp r0, #5
addls pc, pc, r0, lsl #2
b _020382E8
_02038090: ; jump table
b _0203825C ; case 0
b _020380A8 ; case 1
b _02038148 ; case 2
b _020381FC ; case 3
b _020380A8 ; case 4
b _0203825C ; case 5
_020380A8:
mov r0, r6
mov r1, #0x12
bl _s32_div_f
cmp r1, #5
ble _020380D0
cmp r1, #0xc
#ifdef JAPAN
movlt sl, #0x43
#else
movlt r0, #0x43
strlt r0, [sp, #8]
#endif
movlt r7, #1
blt _020380DC
_020380D0:
#ifdef JAPAN
mov sl, #0x44
#else
mov r0, #0x44
str r0, [sp, #8]
#endif
mov r7, #0
_020380DC:
cmp r5, #0
beq _02038114
mov r0, r5
bl sub_020251F0
#ifdef JAPAN
and r1, sl, #0xff
str r1, [sp]
mov r3, r0
mov r0, sb
mov r1, r6, lsl #2
ldrsh r1, [r4, r1]
add r2, r4, r6, lsl #2
ldrsh r2, [r2, #2]
bl sub_020264F8
_02038114:
add r0, sp, #4
#else
ldr r1, [sp, #8]
add r2, r4, r6, lsl #2
and r1, r1, #0xff
str r1, [sp]
mov r1, r6, lsl #2
mov r3, r0
ldrsh r1, [r4, r1]
ldrsh r2, [r2, #2]
mov r0, sb
bl sub_020264F8
_02038114:
add r0, sp, #0x10
#endif
ldrsb r2, [r0, r7]
mov r1, r6, lsl #2
mov r0, sb
str r2, [sp]
ldrsh r3, [r4, r1]
add r1, r4, r6, lsl #2
ldrsh r2, [r1, #2]
sub r1, r3, #1
mov r3, #0xc
add r2, r2, #0xc
bl sub_02025D50
b _02038390
_02038148:
mov r0, r6
#ifdef JAPAN
cmp r5, #2
#else
cmp r5, #0x20
#endif
mov r1, #0x11
moveq r5, #0
bl _s32_div_f
cmp r1, #5
blt _02038178
cmp r1, #0xc
#ifdef JAPAN
movlt sl, #0x43
#else
movlt r0, #0x43
strlt r0, [sp, #4]
#endif
movlt r7, #1
blt _02038184
_02038178:
#ifdef JAPAN
mov sl, #0x44
#else
mov r0, #0x44
str r0, [sp, #4]
#endif
mov r7, #0
_02038184:
cmp r5, #0
beq _020381C4
mov r0, r5
bl sub_020251F0
#ifdef JAPAN
and r1, sl, #0xff
str r1, [sp]
ldr r1, _020383E8 ; =_0209B32C
mov r2, r6, lsl #2
ldrsh r1, [r1, r2]
ldr r2, _020383E8 ; =_0209B32C
mov r3, r0
add r2, r2, r6, lsl #2
ldrsh r2, [r2, #2]
mov r0, sb
bl sub_020264F8
_020381C4:
add r0, sp, #4
#else
ldr r1, [sp, #4]
mov r2, r6, lsl #2
and r1, r1, #0xff
str r1, [sp]
ldr r1, _020383E8 ; =_0209B32C
mov r3, r0
ldrsh r1, [r1, r2]
ldr r2, _020383E8 ; =_0209B32C
mov r0, sb
add r2, r2, r6, lsl #2
ldrsh r2, [r2, #2]
bl sub_020264F8
_020381C4:
add r0, sp, #0x10
#endif
ldrsb r1, [r0, r7]
mov r2, r6, lsl #2
mov r0, sb
str r1, [sp]
ldr r1, _020383E8 ; =_0209B32C
ldrsh r3, [r1, r2]
add r1, r1, r6, lsl #2
ldrsh r2, [r1, #2]
sub r1, r3, #1
mov r3, #0xc
add r2, r2, #0xc
bl sub_02025D50
b _02038390
_020381FC:
cmp r5, #0
#ifdef JAPAN
moveq r5, #0xa
cmp r5, #2
#else
moveq r5, #0x2a
cmp r5, #0x20
#endif
moveq r5, #0
cmp r5, #0
beq _02038390
mov r0, r5
bl sub_020251F0
mov r5, r0
mov r0, r6
mov r1, #0x12
bl _s32_div_f
mov r1, #0x44
str r1, [sp]
mov r1, #0x12
mul r1, r0, r1
add r0, r4, r1, lsl #2
mov r1, r6, lsl #2
ldrsh r2, [r0, #2]
ldrsh r1, [r4, r1]
mov r3, r5
mov r0, sb
bl sub_020264F8
b _02038390
_0203825C:
#ifdef JAPAN
cmp r5, #2
#else
cmp r5, #0x20
#endif
moveq r5, #0
cmp r5, #0
beq _020382AC
ldr r1, _020383EC ; =_0209B2C4
ldr r2, [fp]
#ifdef JAPAN
mov r0, r5
ldrb sl, [r1, r7]
ldrsh r5, [r2, #0x20]
bl sub_020251F0
ldr r2, _020383F0 ; =_0209B2D0
#else
ldrb r1, [r1, r7]
mov r0, r5
ldrsh r5, [r2, #0x20]
str r1, [sp, #0xc]
bl sub_020251F0
ldr r2, _020383F0 ; =_0209B2D0
ldr r1, [sp, #0xc]
#endif
mov r3, #0x44
str r3, [sp]
mov r3, r0
ldrb r2, [r2, r7]
#ifdef JAPAN
add r1, sl, r5
#else
add r1, r1, r5
#endif
mov r0, sb
bl sub_020264F8
_020382AC:
#ifdef JAPAN
ldr r5, [fp]
mov r2, #0x17
ldr r1, [r5, #0xc]
mov r0, sb
str r2, [sp]
ldr r2, _020383EC ; =_0209B2C4
ldrsh r5, [r5, #0x20]
ldrb r7, [r2, r1]
ldr r2, _020383F0 ; =_0209B2D0
mov r3, #0xc
ldrb r2, [r2, r1]
add r1, r7, r5
add r2, r2, #0xc
bl sub_02025D50
b _02038390
_020382E8:
ldr r1, [fp]
ldr r0, _0203864C_JP ; =_020B12A0
cmp r5, #2
moveq r5, #0
ldr r3, [r0, r5, lsl #2]
add r1, r1, r6, lsl #1
ldrsh r5, [r1, #0x20]
ldr r1, _020383EC ; =_0209B2C4
mov r0, sb
ldrb sl, [r1, r7]
ldr r1, _020383F0 ; =_0209B2D0
ldrb r2, [r1, r7]
add r1, sl, r5
bl DrawTextInWindow
ldr r5, [fp]
mov r2, #0x17
ldr r1, [r5, #0xc]
mov r0, sb
str r2, [sp]
ldr r2, _020383EC ; =_0209B2C4
ldrsh r5, [r5, #0x20]
ldrb r7, [r2, r1]
ldr r2, _020383F0 ; =_0209B2D0
mov r3, #0x32
ldrb r2, [r2, r1]
add r1, r7, r5
add r2, r2, #0xc
#else
ldr r2, [fp]
mov r1, #0x17
ldr r5, [r2, #0xc]
ldr r7, _020383F0 ; =_0209B2D0
str r1, [sp]
ldrsh r1, [r2, #0x20]
ldr r2, _020383EC ; =_0209B2C4
mov r0, sb
ldrb r2, [r2, r5]
ldrb r5, [r7, r5]
mov r3, #0xc
add r1, r2, r1
add r2, r5, #0xc
bl sub_02025D50
b _02038390
_020382E8:
cmp r5, #0x20
moveq r5, #0
cmp sl, #0
mov r0, r5
beq _02038314
bl sub_020251F0
mov r2, r0
ldr r1, _020383F4 ; =_0209B4C4
add r0, sp, #0x12
bl SprintfStatic__02037F30
b _02038328
_02038314:
bl sub_020251F0
mov r2, r0
ldr r1, _020383F8 ; =_0209B4C0
add r0, sp, #0x12
bl sprintf
_02038328:
ldr r1, [fp]
ldr r3, _020383EC ; =_0209B2C4
ldr r2, [r1, #0xc]
add r1, r1, r6, lsl #1
ldrb r5, [r3, r2]
ldr r3, _020383F0 ; =_0209B2D0
ldrsh r1, [r1, #0x20]
ldrb r2, [r3, r2]
mov r0, sb
add r3, sp, #0x12
add r1, r5, r1
bl DrawTextInWindow
ldr r2, [fp]
mov r1, #0x17
ldr r5, [r2, #0xc]
ldr r7, _020383F0 ; =_0209B2D0
str r1, [sp]
ldrsh r1, [r2, #0x20]
ldr r2, _020383EC ; =_0209B2C4
mov r0, sb
ldrb r2, [r2, r5]
ldrb r5, [r7, r5]
mov r3, #0x3c
add r1, r2, r1
add r2, r5, #0xc
#endif
bl sub_02025D50
_02038390:
add r6, r6, #1
_02038394:
cmp r6, r8
blt _02038070
ldr r0, _020383E0 ; =_020AFDF0
ldr r0, [r0]
ldr r0, [r0, #0xc]
cmp r0, #7
bne _020383CC
#ifdef JAPAN
ldrsb r4, [sp, #4]
#else
ldrsb r4, [sp, #0x10]
#endif
mov r0, sb
mov r1, #3
mov r2, #0x1d
mov r3, #0xea
str r4, [sp]
bl sub_02025D50
_020383CC:
mov r0, sb
bl UpdateWindow
#ifdef JAPAN
add sp, sp, #0x108
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
#else
add sp, sp, #0x114
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
#endif
.align 2, 0
_020383DC: .word _0209B288
_020383E0: .word _020AFDF0
_020383E4: .word _0209B3B4
_020383E8: .word _0209B32C
_020383EC: .word _0209B2C4
_020383F0: .word _0209B2D0
#ifdef JAPAN
_0203864C_JP: .word _020B12A0_JP
#else
_020383F4: .word _0209B4C4
_020383F8: .word _0209B4C0
#endif
arm_func_end sub_02037F58
arm_func_start sub_020383FC
sub_020383FC: ; 0x020383FC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _020384A8 ; =_020AFDF0
mov r4, #0
ldr r2, [r1]
ldrb r1, [r2, #0x10]
cmp r1, #0
bne _02038444
cmp r0, #0
beq _02038444
ldrb r0, [r2, #0x16]
cmp r0, #0
beq _0203843C
cmp r0, #1
#ifdef JAPAN
beq _020386A0
cmp r0, #2
#endif
moveq r0, #2
streqb r0, [r2, #0x18]
b _02038444
_0203843C:
#ifdef JAPAN
strb r4, [r2, #0x18]
b _02038444
_020386A0:
#endif
mov r0, #1
strb r0, [r2, #0x18]
_02038444:
ldr r7, _020384A8 ; =_020AFDF0
mov r5, #0xa
ldr r6, _020384AC ; =0x00000111
b _02038484
_02038454:
ldrb r0, [r0, #6]
cmp r0, #1
cmpne r0, #2
cmpne r0, #3
ldrneb r0, [r2, #0x10]
cmpne r0, #0
beq _02038480
cmp r1, #0x100
bge _02038480
and r0, r1, #0xff
bl sub_0204DA1C
_02038480:
add r4, r4, #1
_02038484:
ldr r2, [r7]
#ifdef JAPAN
ldr r1, [r7, #4]
#else
ldr r1, [r7, #8]
#endif
ldrb r0, [r2, #0x16]
ldr r0, [r1, r0, lsl #2]
mla r0, r4, r5, r0
ldrh r1, [r0, #8]
cmp r1, r6
bne _02038454
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020384A8: .word _020AFDF0
_020384AC: .word 0x00000111
arm_func_end sub_020383FC
arm_func_start sub_020384B0
sub_020384B0: ; 0x020384B0
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _02038900 ; =_020AFDF0
mov r0, #0xa
#ifdef JAPAN
ldmia r2, {r1, r3}
#else
ldr r1, [r2]
ldr r3, [r2, #8]
#endif
ldrb ip, [r1, #0x16]
ldrb r2, [r1, #0x18]
ldr r3, [r3, ip, lsl #2]
mla r0, r2, r0, r3
ldrh r4, [r0, #8]
#ifdef JAPAN
sub r0, r4, #0x100
cmp r0, #9
#else
sub r0, r4, #0x104
cmp r0, #5
#endif
addls pc, pc, r0, lsl #2
b _020387B4
_020384E8: ; jump table
#ifdef JAPAN
b _02038770 ; case 0
b _0203878C ; case 1
b _02038500 ; case 2
b _02038544 ; case 3
b _02038830 ; case 4
b _020387B4 ; case 5
b _020387B4 ; case 6
b _020385C0 ; case 7
b _020385F0 ; case 8
b _02038588 ; case 9
_02038770:
mov r0, #0
bl sub_0203935C
ldr r0, _02038900 ; =_020AFDF0
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_02037F58
b _020388F8
_0203878C:
mov r0, #1
bl sub_0203935C
ldr r0, _02038900 ; =_020AFDF0
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_02037F58
b _020388F8
#else
b _02038500 ; case 0
b _02038544 ; case 1
b _020387B4 ; case 2
b _020385C0 ; case 3
b _020385F0 ; case 4
b _02038588 ; case 5
#endif
_02038500:
cmp ip, #0
bne _02038514
mov r0, #2
bl PlaySeVolumeWrapper
b _020388F8
_02038514:
mov r0, #0
bl PlaySeVolumeWrapper
ldr r0, _02038900 ; =_020AFDF0
mov r2, #0
ldr r1, [r0]
strb r2, [r1, #0x16]
ldr r0, [r0]
ldrsb r0, [r0, #1]
bl sub_02037CD8
mov r0, #1
bl sub_020383FC
b _020388F8
_02038544:
cmp ip, #1
bne _02038558
mov r0, #2
bl PlaySeVolumeWrapper
b _020388F8
_02038558:
mov r0, #0
bl PlaySeVolumeWrapper
ldr r0, _02038900 ; =_020AFDF0
mov r2, #1
ldr r1, [r0]
strb r2, [r1, #0x16]
ldr r0, [r0]
ldrsb r0, [r0, #1]
bl sub_02037CD8
mov r0, #1
bl sub_020383FC
b _020388F8
#ifdef JAPAN
_02038830:
cmp ip, #2
bne _02038844
mov r0, #2
bl PlaySeVolumeWrapper
b _020388F8
_02038844:
mov r0, #0
bl PlaySeVolumeWrapper
ldr r0, _02038900 ; =_020AFDF0
mov r2, #2
ldr r1, [r0]
strb r2, [r1, #0x16]
ldr r0, [r0]
ldrsb r0, [r0, #1]
bl sub_02037CD8
mov r0, #1
bl sub_020383FC
b _020388F8
#endif
_02038588:
ldrb r0, [r1, #0x15]
cmp r0, #0
moveq r2, #1
movne r2, #0
mov r0, #4
strb r2, [r1, #0x15]
bl PlaySeVolumeWrapper
mov r0, #0
bl sub_020383FC
ldr r0, _02038900 ; =_020AFDF0
ldr r0, [r0]
ldrsb r0, [r0, #1]
bl sub_02037CD8
b _020388F8
_020385C0:
ldrsb r0, [r1]
bl sub_02037F58
bl sub_02038904
cmp r0, #0
beq _020388F8
ldr r0, _02038900 ; =_020AFDF0
ldr r0, [r0]
ldr r0, [r0, #0xc]
cmp r0, #8
bne _020388F8
mov r0, #2
ldmia sp!, {r3, r4, r5, pc}
_020385F0:
ldrb r0, [r1, #0x1e]
cmp r0, #0
movne r0, #0
ldmneia sp!, {r3, r4, r5, pc}
ldr r0, [r1, #0xc]
cmp r0, #7
bne _02038680
bl sub_02038A54
movs r4, r0
beq _02038680
cmp r4, #0x12
bge _02038680
mov r0, #2
bl PlaySeVolumeWrapper
#ifdef JAPAN
mov r1, #2
#else
mov r1, #0x20
#endif
ldr r0, _02038900 ; =_020AFDF0
b _0203864C
_02038634:
ldr r2, [r0]
ldr r3, [r2, #0xf8]
ldrb r2, [r3, r4]
cmp r2, #0
streqb r1, [r3, r4]
add r4, r4, #1
_0203864C:
cmp r4, #0x12
bne _02038634
ldr r0, _02038900 ; =_020AFDF0
mov r1, #0x12
ldr r0, [r0]
strb r1, [r0, #0x1c]
bl sub_02038ADC
ldr r0, _02038900 ; =_020AFDF0
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_02037F58
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
_02038680:
ldr r0, _02038900 ; =_020AFDF0
ldr r1, [r0]
ldrb r0, [r1, #0x16e]
ldrb r5, [r1, #0x10]
cmp r0, #0
movne r2, #1
moveq r2, #0
ldr r0, [r1, #0xc]
and r4, r2, #0xff
cmp r0, #8
moveq r5, #0
bl sub_02038A54
cmp r0, #0
beq _020386E8
cmp r5, #1
bne _020386E8
bl sub_02038A54
ldr r1, _02038900 ; =_020AFDF0
ldr r1, [r1]
ldrb r1, [r1, #0x1b]
cmp r1, r0
beq _020386E8
mov r0, #2
bl PlaySeVolumeWrapper
mov r0, #3
ldmia sp!, {r3, r4, r5, pc}
_020386E8:
cmp r4, #0
bne _020386FC
bl sub_02038A54
cmp r0, #0
beq _0203871C
_020386FC:
cmp r5, #0
beq _0203872C
bl sub_02038A54
ldr r1, _02038900 ; =_020AFDF0
ldr r1, [r1]
ldrb r1, [r1, #0x1b]
cmp r1, r0
beq _0203872C
_0203871C:
mov r0, #2
bl PlaySeVolumeWrapper
mov r0, #2
ldmia sp!, {r3, r4, r5, pc}
_0203872C:
bl sub_02038B5C
cmp r0, #0
beq _02038760
ldr r0, _02038900 ; =_020AFDF0
ldr r0, [r0]
ldrb r1, [r0, #0x1b]
ldr r0, [r0, #0xf8]
bl sub_02038A8C
cmp r0, #0x3c
ble _02038760
mov r0, #2
bl PlaySeVolumeWrapper
b _020388F8
_02038760:
mov r0, #0
bl PlaySeVolumeWrapper
cmp r4, #0
beq _02038794
bl sub_02038A54
cmp r0, #0
bne _02038794
ldr r0, _02038900 ; =_020AFDF0
ldr r0, [r0]
add r1, r0, #0x6e
ldr r0, [r0, #0xf8]
add r1, r1, #0x100
bl StrcpySimple
_02038794:
ldr r0, _02038900 ; =_020AFDF0
ldr r1, [r0]
ldrb r2, [r1, #0x1b]
ldr r0, [r1, #0x134]
ldr r1, [r1, #0xf8]
bl MemcpySimple
mov r0, #3
ldmia sp!, {r3, r4, r5, pc}
_020387B4:
ldrb r0, [r1, #0x10]
cmp r0, #0
ldrne r0, [r1, #0xc]
cmpne r0, #8
beq _020387E4
and r0, r4, #0xff
bl sub_0204DA1C
cmp r0, #0xff
bne _02038810
mov r0, #2
bl PlaySeVolumeWrapper
b _020388F8
_020387E4:
#ifndef JAPAN
ldr r0, [r1, #0xc]
cmp r0, #9
bne _02038810
and r0, r4, #0xff
cmp r0, #0x41
blo _02038804
cmp r0, #0x5a
bls _02038810
_02038804:
mov r0, #2
bl PlaySeVolumeWrapper
b _020388F8
#endif
_02038810:
ldr r0, _02038900 ; =_020AFDF0
ldr r2, [r0]
ldrb r1, [r2, #0x15]
cmp r1, #1
bne _020388A4
ldr r1, [r2, #0xc]
cmp r1, #7
bne _02038870
ldrb r1, [r2, #0x1c]
cmp r1, #0x11
bhi _02038870
beq _020388A4
mov r3, #0x10
b _0203885C
_02038848:
ldr r2, [r2, #0xf8]
ldrb r1, [r2, r3]
add r2, r2, r3
sub r3, r3, #1
strb r1, [r2, #1]
_0203885C:
ldr r2, [r0]
ldrb r1, [r2, #0x1c]
cmp r3, r1
bge _02038848
b _020388A4
_02038870:
ldrb r0, [r2, #0x1b]
sub r3, r0, #2
ldr r0, _02038900 ; =_020AFDF0
b _02038894
_02038880:
ldr r2, [r2, #0xf8]
ldrb r1, [r2, r3]
add r2, r2, r3
sub r3, r3, #1
strb r1, [r2, #1]
_02038894:
ldr r2, [r0]
ldrb r1, [r2, #0x1c]
cmp r3, r1
bge _02038880
_020388A4:
ldr r0, _02038900 ; =_020AFDF0
ldr r2, [r0]
ldrb r1, [r2, #0x1c]
ldr r2, [r2, #0xf8]
strb r4, [r2, r1]
ldr r2, [r0]
ldrb r0, [r2, #0x1b]
ldrb r1, [r2, #0x1c]
sub r0, r0, #1
cmp r1, r0
addlt r0, r1, #1
strltb r0, [r2, #0x1c]
movge r0, #5
strgeb r0, [r2, #0x18]
mov r0, #0
bl PlaySeVolumeWrapper
bl sub_02038ADC
ldr r0, _02038900 ; =_020AFDF0
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_02037F58
_020388F8:
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02038900: .word _020AFDF0
arm_func_end sub_020384B0
arm_func_start sub_02038904
sub_02038904: ; 0x02038904
stmdb sp!, {r3, lr}
ldr r0, _02038A50 ; =_020AFDF0
ldr r3, [r0]
ldrb r2, [r3, #0x1c]
ldr r1, [r3, #0xf8]
ldrb r1, [r1, r2]
cmp r1, #0
bne _02038978
cmp r2, #0
bne _0203893C
mov r0, #2
bl PlaySeVolumeWrapper
mov r0, #1
ldmia sp!, {r3, pc}
_0203893C:
sub r1, r2, #1
strb r1, [r3, #0x1c]
ldr r0, [r0]
mov r3, #0
ldrb r1, [r0, #0x1c]
ldr r2, [r0, #0xf8]
mov r0, #1
strb r3, [r2, r1]
bl PlaySeVolumeWrapper
ldr r0, _02038A50 ; =_020AFDF0
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_02037F58
bl sub_02038ADC
b _02038A48
_02038978:
bl sub_02038A54
ldr r1, _02038A50 ; =_020AFDF0
sub r0, r0, #1
ldr r2, [r1]
mov ip, #0
ldr r1, [r2, #0xc]
cmp r1, #7
bne _020389EC
ldrb lr, [r2, #0x1c]
cmp lr, #0x11
bhi _020389EC
cmp r0, #0x11
movge r0, #0x11
#ifdef JAPAN
movge ip, #2
#else
movge ip, #0x20
#endif
ldr r1, _02038A50 ; =_020AFDF0
b _020389D0
_020389B8:
ldr r2, [r1]
ldr r3, [r2, #0xf8]
add r2, r3, lr
ldrb r2, [r2, #1]
strb r2, [r3, lr]
add lr, lr, #1
_020389D0:
cmp lr, r0
blt _020389B8
ldr r1, _02038A50 ; =_020AFDF0
ldr r1, [r1]
ldr r1, [r1, #0xf8]
strb ip, [r1, r0]
b _02038A2C
_020389EC:
ldrb ip, [r2, #0x1c]
ldr r1, _02038A50 ; =_020AFDF0
b _02038A10
_020389F8:
ldr r2, [r1]
ldr r3, [r2, #0xf8]
add r2, r3, ip
ldrb r2, [r2, #1]
strb r2, [r3, ip]
add ip, ip, #1
_02038A10:
cmp ip, r0
blt _020389F8
ldr r1, _02038A50 ; =_020AFDF0
mov r2, #0
ldr r1, [r1]
ldr r1, [r1, #0xf8]
strb r2, [r1, r0]
_02038A2C:
mov r0, #1
bl PlaySeVolumeWrapper
ldr r0, _02038A50 ; =_020AFDF0
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_02037F58
bl sub_02038ADC
_02038A48:
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_02038A50: .word _020AFDF0
arm_func_end sub_02038904
arm_func_start sub_02038A54
sub_02038A54: ; 0x02038A54
ldr r1, _02038A88 ; =_020AFDF0
mov r0, #0
ldr r2, [r1]
ldrb r3, [r2, #0x1b]
b _02038A7C
_02038A68:
ldr r1, [r2, #0xf8]
ldrb r1, [r1, r0]
cmp r1, #0
bxeq lr
add r0, r0, #1
_02038A7C:
cmp r0, r3
blt _02038A68
bx lr
.align 2, 0
_02038A88: .word _020AFDF0
arm_func_end sub_02038A54
arm_func_start sub_02038A8C
sub_02038A8C: ; 0x02038A8C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r4, #0
mov r7, r0
mov r6, r1
mov r5, r4
b _02038ACC
_02038AA4:
ldrb r0, [r7, r5]
cmp r0, #0
beq _02038AD4
bl sub_020251F0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_02025C7C
#ifdef JAPAN
ldrsh r0, [r0, #6]
#else
ldrb r0, [r0, #2]
#endif
add r5, r5, #1
add r4, r4, r0
_02038ACC:
cmp r5, r6
blt _02038AA4
_02038AD4:
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_02038A8C
arm_func_start sub_02038ADC
sub_02038ADC: ; 0x02038ADC
stmdb sp!, {r4, r5, r6, lr}
mov r4, #0
mov r5, r4
ldr r6, _02038B58 ; =_020AFDF0
b _02038B44
_02038AF0:
add r0, r1, r5, lsl #1
strh r4, [r0, #0x20]
ldr r1, [r6]
ldr r0, [r1, #0xf8]
ldrb r0, [r0, r5]
cmp r0, #0
addeq r0, r1, r5, lsl #1
moveq r1, #8
streqh r1, [r0, #0x8c]
ldmeqia sp!, {r4, r5, r6, pc}
bl sub_020251F0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_02025C7C
ldr r1, [r6]
#ifdef JAPAN
ldrsh r2, [r0, #6]
#else
ldrb r2, [r0, #2]
#endif
add r1, r1, r5, lsl #1
add r5, r5, #1
strh r2, [r1, #0x8c]
#ifdef JAPAN
ldrsh r0, [r0, #6]
#else
ldrb r0, [r0, #2]
#endif
add r4, r4, r0
_02038B44:
ldr r1, [r6]
ldrb r0, [r1, #0x1b]
cmp r5, r0
blt _02038AF0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02038B58: .word _020AFDF0
arm_func_end sub_02038ADC
arm_func_start sub_02038B5C
sub_02038B5C: ; 0x02038B5C
ldr r0, _02038B7C ; =_020AFDF0
ldr r0, [r0]
ldr r0, [r0, #0xc]
cmp r0, #3
movls r0, #1
movhi r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_02038B7C: .word _020AFDF0
arm_func_end sub_02038B5C
arm_func_start sub_02038B80
sub_02038B80: ; 0x02038B80
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #8
ldr r2, _02039068 ; =_020AFDF0
mov sb, r0
ldr r7, [r2]
mov r8, r1
ldrb r3, [r7, #0x10]
ldr ip, [r7, #0xc]
mov r2, #1
cmp ip, #7
moveq r3, r2
cmp r3, #0
ldr r4, _0203906C ; =_0209B2E0
movne r2, #2
ldr r1, _02039070 ; =_0209B2E1
ldr r0, _02039074 ; =_0209B2E2
ldrb r4, [r4, r2, lsl #4]
ldr lr, _02039078 ; =0x0000FFFF
ldr r5, _0203907C ; =_0209B2E3
cmp sb, lr
ldrb r1, [r1, r2, lsl #4]
ldrb r0, [r0, r2, lsl #4]
ldrb r2, [r5, r2, lsl #4]
mov r4, r4, lsl #3
mov r5, r1, lsl #3
add r0, r4, r0, lsl #3
cmpne r8, lr
add r1, r5, r2, lsl #3
mvneq r0, #0
beq _02039060
add r2, r1, #8
cmp r8, r2
bge _02038FA0
cmp r3, #0
beq _02038CEC
add r1, r5, #8
cmp r8, r1
sublt r0, lr, #0x10000
blt _02039060
cmp r8, r2
subgt r0, lr, #0x10000
bgt _02039060
sub r1, r4, #4
cmp sb, r1
sublt r0, lr, #0x10000
blt _02039060
add r0, r0, #4
cmp sb, r0
subgt r0, lr, #0x10000
bgt _02039060
cmp ip, #5
beq _02038C5C
sub r0, ip, #7
cmp r0, #1
bhi _02038CA0
_02038C5C:
add r0, r4, #3
sub sb, sb, r0
cmp sb, #0
movle sb, #1
cmp sb, #0xea
movge sb, #0xe9
mov r0, sb
mov r1, #0xd
bl _s32_div_f
add r1, r5, #0x1e
mov r6, r0
cmp r8, r1
addgt r6, r6, #0x12
add r0, r5, #0x2d
cmp r8, r0
addgt r6, r6, #0x12
b _02038D88
_02038CA0:
add r0, r4, #6
sub sb, sb, r0
cmp sb, #0
movle sb, #1
cmp sb, #0xe5
movge sb, #0xe4
cmp sb, #0xaa
subgt sb, sb, #8
bgt _02038CCC
cmp sb, #0x4b
subgt sb, sb, #4
_02038CCC:
mov r0, sb
mov r1, #0xd
bl _s32_div_f
add r1, r5, #0x24
mov r6, r0
cmp r8, r1
addgt r6, r6, #0x11
b _02038D88
_02038CEC:
bl sub_02038A54
ldr r1, _02039068 ; =_020AFDF0
ldr r3, _02039080 ; =_0209B2C4
ldr r1, [r1]
ldr r7, [r1, #0xc]
ldrb r2, [r1, #0x1b]
ldrb r3, [r3, r7]
cmp r0, r2
subeq r0, r0, #1
add r2, r5, #0x16
cmp r8, r2
add r2, r2, #0x20
add r3, r4, r3
mvnlt r0, #0
blt _02039060
cmp r8, r2
mvngt r0, #0
bgt _02039060
sub r2, r3, #4
cmp sb, r2
mvnlt r0, #0
blt _02039060
add r2, r3, #0x68
cmp sb, r2
mvngt r0, #0
bgt _02039060
sub r5, sb, r3
mov r4, #0
b _02038D80
_02038D60:
add r2, r1, r4, lsl #1
ldrsh r3, [r2, #0x20]
ldrsh r2, [r2, #0x8c]
mov r6, r4
add r2, r3, r2
cmp r5, r2
blt _02038D88
add r4, r4, #1
_02038D80:
cmp r4, r0
ble _02038D60
_02038D88:
bl sub_02038A54
cmp r6, r0
bgt _02038F98
ldr r0, _02039068 ; =_020AFDF0
ldr r1, [r0]
strb r6, [r1, #0x1d]
ldr r0, [r0]
ldrsb r0, [r0]
bl GetWindow
mov r4, r0
bl sub_02038ADC
ldr r0, _02039068 ; =_020AFDF0
ldr r3, [r0]
ldr r1, [r3, #0xc]
sub r0, r1, #4
cmp r0, #5
addls pc, pc, r0, lsl #2
b _02038F30
_02038DD0: ; jump table
b _02038ED8 ; case 0
b _02038DE8 ; case 1
b _02038E60 ; case 2
b _02038DE8 ; case 3
b _02038DE8 ; case 4
b _02038ED8 ; case 5
_02038DE8:
ldr r0, _02039084 ; =_0209B28C
ldr r5, _02039088 ; =_0209B2D0
str r0, [sp]
mov r0, #0x40
str r0, [sp, #4]
ldr sb, _02039080 ; =_0209B2C4
ldrb r2, [r4, #5]
ldrb r0, [r4, #4]
ldr r3, _0203908C ; =_0209B3B6
mov r8, r6, lsl #2
ldr r7, _02039090 ; =_0209B3B4
ldrb r4, [r5, r1]
ldrsh r3, [r3, r8]
ldrb r1, [sb, r1]
ldrsh r5, [r7, r8]
add r3, r4, r3
sub r2, r2, #1
add r2, r3, r2, lsl #3
sub r2, r2, #0xe
mov r2, r2, lsl #0x10
add r1, r1, r5
sub r0, r0, #1
add r0, r1, r0, lsl #3
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
mov r1, r2, asr #0x10
mov r2, #0xc
mov r3, #0xb
bl sub_0202A2A4
b _02038F90
_02038E60:
ldr r0, _02039084 ; =_0209B28C
ldr r5, _02039088 ; =_0209B2D0
str r0, [sp]
mov r0, #0x40
str r0, [sp, #4]
ldr sb, _02039080 ; =_0209B2C4
ldrb r2, [r4, #5]
ldrb r0, [r4, #4]
ldr r3, _02039094 ; =_0209B32E
mov r8, r6, lsl #2
ldr r7, _02039098 ; =_0209B32C
ldrb r4, [r5, r1]
ldrsh r3, [r3, r8]
ldrb r1, [sb, r1]
ldrsh r5, [r7, r8]
add r3, r4, r3
sub r2, r2, #1
add r2, r3, r2, lsl #3
sub r2, r2, #0xe
mov r2, r2, lsl #0x10
add r1, r1, r5
sub r0, r0, #1
add r0, r1, r0, lsl #3
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
mov r1, r2, asr #0x10
mov r2, #0xc
mov r3, #0xb
bl sub_0202A2A4
b _02038F90
_02038ED8:
ldr r0, _02039084 ; =_0209B28C
ldr r2, _02039080 ; =_0209B2C4
str r0, [sp]
mov r0, #0x40
str r0, [sp, #4]
ldr r0, _02039088 ; =_0209B2D0
ldrb r5, [r2, r1]
ldrsh r3, [r3, #0x20]
ldrb r2, [r4, #4]
ldrb r1, [r0, r1]
ldrb r0, [r4, #5]
add r3, r5, r3
add r2, r3, r2, lsl #3
add r1, r1, r0, lsl #3
mov r0, r2, lsl #0x10
mov r1, r1, lsl #0x10
mov r0, r0, asr #0x10
mov r1, r1, asr #0x10
mov r2, #0xc
mov r3, #0xb
bl sub_0202A2A4
b _02038F90
_02038F30:
ldr r0, _02039068 ; =_020AFDF0
ldr r2, _02039080 ; =_0209B2C4
ldr r5, [r0]
ldr r3, _02039084 ; =_0209B28C
mov r0, #0x40
str r3, [sp]
str r0, [sp, #4]
add r5, r5, r6, lsl #1
ldr r0, _02039088 ; =_0209B2D0
ldrb r7, [r2, r1]
ldrsh r3, [r5, #0x20]
ldrb r2, [r4, #4]
ldrb r1, [r0, r1]
ldrb r0, [r4, #5]
add r3, r7, r3
add r2, r3, r2, lsl #3
add r1, r1, r0, lsl #3
mov r0, r2, lsl #0x10
mov r1, r1, lsl #0x10
ldrsh r2, [r5, #0x8c]
mov r0, r0, asr #0x10
mov r1, r1, asr #0x10
mov r3, #0xb
bl sub_0202A2A4
_02038F90:
add r0, r6, #0x64
b _02039060
_02038F98:
mvn r0, #0
b _02039060
_02038FA0:
cmp r8, #0x60
blt _02038FB0
cmp r8, #0xb8
ble _02038FB8
_02038FB0:
mvn r0, #0
b _02039060
_02038FB8:
cmp r8, #8
sublt r0, lr, #0x10000
blt _02039060
cmp r8, #0xf8
subgt r0, lr, #0x10000
bgt _02039060
cmp sb, #8
sublt r0, lr, #0x10000
blt _02039060
cmp sb, #0xf8
subgt r0, lr, #0x10000
bgt _02039060
cmp sb, #0x23
movle sb, #0x24
cmp sb, #0xf5
movge sb, #0xf4
cmp r8, #0x63
movle r8, #0x64
cmp r8, #0xb1
movge r8, #0xb0
sub r0, r8, #0x63
mov r1, #0xd
bl _s32_div_f
mov r4, r0
sub r0, sb, #0x23
mov r1, #0xf
bl _s32_div_f
mov r1, #6
ldr r2, _02039068 ; =_020AFDF0
mla r0, r1, r0, r4
ldrb r3, [r7, #0x16]
#ifdef JAPAN
ldr r2, [r2, #4]
#else
ldr r2, [r2, #8]
#endif
mov r1, #0xa
ldr r2, [r2, r3, lsl #2]
mla r2, r0, r1, r2
ldrh r2, [r2, #8]
cmp r2, #0x110
subeq r0, r1, #0xb
beq _02039060
ldrb r2, [r7, #0x1e]
cmp r2, #0
subne r0, r1, #0xb
_02039060:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_02039068: .word _020AFDF0
_0203906C: .word _0209B2E0
_02039070: .word _0209B2E1
_02039074: .word _0209B2E2
_02039078: .word 0x0000FFFF
_0203907C: .word _0209B2E3
_02039080: .word _0209B2C4
_02039084: .word _0209B28C
_02039088: .word _0209B2D0
_0203908C: .word _0209B3B6
_02039090: .word _0209B3B4
_02039094: .word _0209B32E
_02039098: .word _0209B32C
arm_func_end sub_02038B80
#ifdef JAPAN
arm_func_start sub_0203935C
sub_0203935C: ; 0x0203935C
stmdb sp!, {r3, lr}
ldr r1, _0203942C_JP ; =_020AFDF0
ldr r2, [r1]
ldrb r1, [r2, #0x10]
cmp r1, #0
beq _02039380
mov r0, #2
bl PlaySeVolumeWrapper
ldmia sp!, {r3, pc}
_02039380:
ldrb r3, [r2, #0x1c]
ldr r2, [r2, #0xf8]
ldrb r1, [r2, r3]
cmp r1, #0
bne _020393F0
cmp r3, #0
bne _020393A8
mov r0, #2
bl PlaySeVolumeWrapper
ldmia sp!, {r3, pc}
_020393A8:
add r1, r2, r3
ldrb r1, [r1, #-1]
bl sub_02039430
ldr r1, _0203942C_JP ; =_020AFDF0
ldr r2, [r1]
ldr r1, [r2, #0xf8]
ldrb r2, [r2, #0x1c]
sub r3, r1, #1
ldrb r1, [r3, r2]
cmp r0, r1
beq _020393E4
strb r0, [r3, r2]
mov r0, #0
bl PlaySeVolumeWrapper
ldmia sp!, {r3, pc}
_020393E4:
mov r0, #2
bl PlaySeVolumeWrapper
ldmia sp!, {r3, pc}
_020393F0:
bl sub_02039430
ldr r1, _0203942C_JP ; =_020AFDF0
ldr r1, [r1]
ldrb r2, [r1, #0x1c]
ldr r3, [r1, #0xf8]
ldrb r1, [r3, r2]
cmp r0, r1
beq _02039420
strb r0, [r3, r2]
mov r0, #0
bl PlaySeVolumeWrapper
ldmia sp!, {r3, pc}
_02039420:
mov r0, #2
bl PlaySeVolumeWrapper
ldmia sp!, {r3, pc}
.align 2, 0
_0203942C_JP: .word _020AFDF0
arm_func_end sub_0203935C
arm_func_start sub_02039430
sub_02039430: ; 0x02039430
cmp r0, #0
beq _02039454
cmp r0, #1
beq _02039464
cmp r0, #2
ldreq r0, _02039474 ; =_0209C29E_JP
addeq r1, r1, r1, lsl #1
ldreqb r0, [r0, r1]
bx lr
_02039454:
ldr r0, _02039478 ; =_0209C29C_JP
add r1, r1, r1, lsl #1
ldrb r0, [r0, r1]
bx lr
_02039464:
ldr r0, _0203947C ; =_0209C29D_JP
add r1, r1, r1, lsl #1
ldrb r0, [r0, r1]
bx lr
.align 2, 0
_02039474: .word _0209C29E_JP
_02039478: .word _0209C29C_JP
_0203947C: .word _0209C29D_JP
arm_func_end sub_02039430
#endif
arm_func_start sub_0203909C
sub_0203909C: ; 0x0203909C
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0x9c
mov r6, r0
mov r4, #0
mov r0, #0x4c
mov r1, #8
mov r5, r4
bl MemAlloc
#ifdef JAPAN
ldr r2, _02039208 ; =_020AFE40
mov r1, r4
str r0, [r2]
str r1, [r0, #8]
ldr r0, [r2]
sub r3, r1, #2
strb r1, [r0, #0xc]
ldr r0, [r2]
strb r3, [r0]
ldr r0, [r2]
strb r3, [r0, #1]
ldr r0, [r2]
strb r3, [r0, #2]
ldr r0, [r2]
str r1, [r0, #0x10]
ldr r0, _02039608 ; =0x00008140
b _02039118
_020394E4:
add r2, r6, r1
ldrb r3, [r6, r1]
ldrb r2, [r2, #1]
cmp r3, #0
orr r2, r2, r3, lsl #8
mov r2, r2, lsl #0x10
mov r2, r2, lsr #0x10
beq _02039120
cmp r2, r0
addeq r4, r4, #1
add r5, r5, #1
add r1, r1, #2
_02039118:
cmp r1, #0x36
bne _020394E4
#else
ldr r1, _02039208 ; =_020AFE40
mov r3, r4
str r0, [r1]
str r3, [r0, #8]
ldr r0, [r1]
sub r2, r3, #2
strb r3, [r0, #0xc]
ldr r0, [r1]
strb r2, [r0]
ldr r0, [r1]
strb r2, [r0, #1]
ldr r0, [r1]
strb r2, [r0, #2]
ldr r0, [r1]
str r3, [r0, #0x10]
b _02039118
_020390FC:
ldrb r0, [r6, r3]
cmp r0, #0
beq _02039120
cmp r0, #0x20
addeq r4, r4, #1
add r5, r5, #1
add r3, r3, #1
_02039118:
cmp r3, #0x36
blt _020390FC
#endif
_02039120:
cmp r5, r4
ldreq r0, _02039208 ; =_020AFE40
moveq r1, #1
ldreq r0, [r0]
mov r3, #0
streqb r1, [r0, #0xc]
ldr r0, _02039208 ; =_020AFE40
_0203913C:
ldr r1, [r0]
ldrb r2, [r6, r3]
add r1, r1, r3
add r3, r3, #1
strb r2, [r1, #0x14]
cmp r3, #0x36
blt _0203913C
ldr r0, _02039208 ; =_020AFE40
ldr r0, [r0]
ldrb r0, [r0, #0xc]
cmp r0, #0
bne _020391C0
ldr r0, _0203920C ; =_0209B4D4
mov r2, #1
ldr r1, _02039210 ; =sub_0203939C
str r2, [sp, #4]
bl CreateTextBox
ldr r1, _02039208 ; =_020AFE40
ldr r3, _02039214 ; =_0209B4E4
ldr r1, [r1]
add r2, sp, #4
strb r0, [r1]
mov r0, #0
mov r1, #0x31
str r0, [sp]
bl CreateSimpleMenuFromStringIds
ldr r1, _02039208 ; =_020AFE40
mov r2, #0
ldr r3, [r1]
strb r0, [r3, #1]
ldr r0, [r1]
str r2, [r0, #4]
b _020391FC
_020391C0:
mov r0, #0
bl CreateDialogueBox
ldr r3, _02039208 ; =_020AFE40
#ifdef JAPAN
ldr r2, _02039618 ; =0x000031D7
ldr r4, [r3]
mov r1, #0x218
#else
mov r1, #0x218
ldr r4, [r3]
sub r2, r1, #0xf3
#endif
strb r0, [r4, #2]
ldr r0, [r3]
mov r3, #0
ldrsb r0, [r0, #2]
bl ShowStringIdInDialogueBox
ldr r0, _02039208 ; =_020AFE40
mov r1, #1
ldr r0, [r0]
str r1, [r0, #4]
_020391FC:
mov r0, #1
add sp, sp, #0x9c
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02039208: .word _020AFE40
#ifdef JAPAN
_02039608: .word 0x00008140
#endif
_0203920C: .word _0209B4D4
_02039210: .word sub_0203939C
_02039214: .word _0209B4E4
#ifdef JAPAN
_02039618: .word 0x000031D7
#endif
arm_func_end sub_0203909C
arm_func_start sub_02039218
sub_02039218: ; 0x02039218
stmdb sp!, {r3, lr}
ldr r0, _02039300 ; =_020AFE40
ldr r0, [r0]
cmp r0, #0
beq _020392F8
ldr r1, [r0, #8]
cmp r1, #0
beq _0203924C
cmp r1, #1
beq _02039290
cmp r1, #0xb
beq _020392C4
b _020392DC
_0203924C:
ldrsb r0, [r0]
mvn r1, #1
cmp r0, r1
beq _02039270
bl sub_0202F954
ldr r0, _02039300 ; =_020AFE40
ldr r0, [r0]
ldrsb r0, [r0]
bl sub_0202836C
_02039270:
ldr r0, _02039300 ; =_020AFE40
mvn r1, #1
ldr r0, [r0]
ldrsb r0, [r0, #1]
cmp r0, r1
beq _020392DC
bl CloseSimpleMenu
b _020392DC
_02039290:
ldrsb r0, [r0]
mvn r1, #1
cmp r0, r1
beq _020392A4
bl CloseTextBox
_020392A4:
ldr r0, _02039300 ; =_020AFE40
mvn r1, #1
ldr r0, [r0]
ldrsb r0, [r0, #2]
cmp r0, r1
beq _020392DC
bl CloseDialogueBox
b _020392DC
_020392C4:
bl MemFree
ldr r0, _02039300 ; =_020AFE40
mov r1, #0
str r1, [r0]
mov r0, #1
ldmia sp!, {r3, pc}
_020392DC:
ldr r1, _02039300 ; =_020AFE40
mov r0, #0
ldr r2, [r1]
ldr r1, [r2, #8]
add r1, r1, #1
str r1, [r2, #8]
ldmia sp!, {r3, pc}
_020392F8:
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_02039300: .word _020AFE40
arm_func_end sub_02039218
arm_func_start sub_02039304
sub_02039304: ; 0x02039304
ldr r0, _02039318 ; =_020AFE40
mov r1, #1
ldr r0, [r0]
str r1, [r0, #0x10]
bx lr
.align 2, 0
_02039318: .word _020AFE40
arm_func_end sub_02039304
arm_func_start sub_0203931C
sub_0203931C: ; 0x0203931C
stmdb sp!, {r3, lr}
ldr r0, _02039398 ; =_020AFE40
ldr r1, [r0]
ldr r0, [r1, #4]
cmp r0, #1
bne _0203934C
ldrsb r0, [r1, #2]
bl IsDialogueBoxActive
cmp r0, #0
bne _02039390
mov r0, #1
ldmia sp!, {r3, pc}
_0203934C:
ldrb r0, [r1, #0xc]
cmp r0, #0
bne _0203937C
ldrsb r0, [r1, #1]
bl IsSimpleMenuActive
cmp r0, #0
bne _02039390
ldr r0, _02039398 ; =_020AFE40
ldr r0, [r0]
ldrsb r0, [r0, #1]
bl GetSimpleMenuResult__0202B870
ldmia sp!, {r3, pc}
_0203937C:
ldrsb r0, [r1, #2]
bl IsDialogueBoxActive
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r3, pc}
_02039390:
mvn r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_02039398: .word _020AFE40
arm_func_end sub_0203931C
arm_func_start sub_0203939C
sub_0203939C: ; 0x0203939C
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0x254
mov r4, r0
bl sub_02027B1C
ldr r0, _02039428 ; =_020AFE40
ldr r2, [r0]
ldr r0, [r2, #0x10]
cmp r0, #0
add r0, sp, #0x54
bne _020393D4
ldr r1, _0203942C ; =_0209B4FC
add r2, r2, #0x14
bl SprintfStatic__02039438
b _020393E0
_020393D4:
ldr r1, _02039430 ; =_0209B50C
add r2, r2, #0x14
bl SprintfStatic__02039438
_020393E0:
add r0, sp, #0x54
str r0, [sp, #0x3c]
add ip, sp, #4
#ifdef JAPAN
ldr r2, _02039838 ; =0x000031D6
#endif
ldr r3, _02039434 ; =0x0000C402
add r0, sp, #0x154
mov r1, #0x400
#ifndef JAPAN
mov r2, #0x124
#endif
str ip, [sp]
bl PreprocessStringFromId
add r3, sp, #0x154
mov r0, r4
mov r1, #4
mov r2, #3
bl DrawTextInWindow
mov r0, r4
bl UpdateWindow
add sp, sp, #0x254
ldmia sp!, {r3, r4, pc}
.align 2, 0
_02039428: .word _020AFE40
_0203942C: .word _0209B4FC
_02039430: .word _0209B50C
#ifdef JAPAN
_02039838: .word 0x000031D6
#endif
_02039434: .word 0x0000C402
arm_func_end sub_0203939C
arm_func_start SprintfStatic__02039438
SprintfStatic__02039438: ; 0x02039438
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__02039438
arm_func_start sub_02039460
sub_02039460: ; 0x02039460
stmdb sp!, {r4, lr}
sub sp, sp, #0x18
ldr r1, _02039514 ; =_020AFE58
mov r4, r0
str r4, [r1]
ldr r0, [r4, #0x10]
add ip, sp, #8
cmp r0, #0x10
blt _020394C8
and r1, r0, #0xf
ldr r0, _02039518 ; =_0209C5C0
str r1, [r4, #0x10]
ldmia r0, {r0, r1, r2, r3}
stmia ip, {r0, r1, r2, r3}
ldr r0, [r4, #0x18]
mov r2, #0
strb r0, [sp, #0xc]
ldr r0, [r4, #0x1c]
ldr r1, _0203951C ; =0x00001007
strb r0, [sp, #0xd]
str r2, [sp]
ldr r3, _02039520 ; =sub_02039C14
mov r0, ip
str r2, [sp, #4]
bl CreateAdvancedTextBox
b _02039500
_020394C8:
ldr r0, _02039524 ; =_0209C5D0
ldmia r0, {r0, r1, r2, r3}
stmia ip, {r0, r1, r2, r3}
ldr r0, [r4, #0x18]
mov r2, #0
strb r0, [sp, #0xc]
ldr r0, [r4, #0x1c]
ldr r1, _0203951C ; =0x00001007
strb r0, [sp, #0xd]
str r2, [sp]
ldr r3, _02039520 ; =sub_02039C14
mov r0, ip
str r2, [sp, #4]
bl CreateAdvancedTextBox
_02039500:
strb r0, [r4, #0x14]
mov r0, r4
bl sub_020395CC
add sp, sp, #0x18
ldmia sp!, {r4, pc}
.align 2, 0
_02039514: .word _020AFE58
_02039518: .word _0209C5C0
_0203951C: .word 0x00001007
_02039520: .word sub_02039C14
_02039524: .word _0209C5D0
arm_func_end sub_02039460
arm_func_start sub_02039528
sub_02039528: ; 0x02039528
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r4, [r5]
ldr r1, _020395C8 ; =_020AFE58
str r5, [r1]
bl sub_020396E4
cmp r0, #3
addls pc, pc, r0, lsl #2
b _020395AC
_0203954C: ; jump table
b _020395AC ; case 0
b _020395AC ; case 1
b _02039584 ; case 2
b _0203955C ; case 3
_0203955C:
mov r0, #0
bl PlaySeVolumeWrapper
ldrsb r0, [r5, #0x14]
bl sub_0202836C
ldrsb r0, [r5, #0x14]
bl SetAdvancedTextBoxState5
ldrsb r0, [r5, #0x14]
bl CloseAdvancedTextBox
ldr r0, [r5]
ldmia sp!, {r3, r4, r5, pc}
_02039584:
ldrsb r0, [r5, #0x14]
bl sub_0202836C
ldrsb r0, [r5, #0x14]
bl SetAdvancedTextBoxState5
ldrsb r0, [r5, #0x14]
bl CloseAdvancedTextBox
mov r0, #1
bl PlaySeVolumeWrapper
mvn r0, #0
ldmia sp!, {r3, r4, r5, pc}
_020395AC:
ldr r0, [r5]
cmp r4, r0
beq _020395C0
ldrsb r0, [r5, #0x14]
bl SetAdvancedTextBoxField0x1C2
_020395C0:
mvn r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020395C8: .word _020AFE58
arm_func_end sub_02039528
arm_func_start sub_020395CC
sub_020395CC: ; 0x020395CC
stmdb sp!, {r4, lr}
sub sp, sp, #0x28
ldr r1, _0203967C ; =_020AFE58
mov r4, r0
str r4, [r1]
ldr r1, [r4, #0xc]
ldr r2, [r4, #0x10]
add r0, sp, #0
bl sub_02039680
ldr r0, [r4, #0x10]
add r1, sp, #0
strb r0, [r4, #0x29]
b _0203960C
_02039600:
ldrb r0, [r4, #0x29]
sub r0, r0, #1
strb r0, [r4, #0x29]
_0203960C:
ldrb r2, [r4, #0x29]
add r0, r1, r2, lsl #2
ldr r0, [r0, #-4]
cmp r0, #0
bne _02039628
cmp r2, #1
bhi _02039600
_02039628:
ldr r1, [r4, #4]
add r0, sp, #0
str r1, [r4]
ldr r2, [r4, #0x10]
bl sub_02039680
ldrb r0, [r4, #0x29]
add r1, sp, #0
sub r0, r0, #1
strb r0, [r4, #0x28]
b _0203965C
_02039650:
ldrb r0, [r4, #0x28]
sub r0, r0, #1
strb r0, [r4, #0x28]
_0203965C:
ldrb r2, [r4, #0x28]
ldr r0, [r1, r2, lsl #2]
cmp r0, #0
bne _02039674
cmp r2, #0
bne _02039650
_02039674:
add sp, sp, #0x28
ldmia sp!, {r4, pc}
.align 2, 0
_0203967C: .word _020AFE58
arm_func_end sub_020395CC
arm_func_start sub_02039680
sub_02039680: ; 0x02039680
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov sb, r1
cmp sb, #0
movgt r6, #1
mov r5, #0xa
mov sl, r0
mov r8, r2
rsble sb, sb, #0
mvnle r6, #0
mov r7, #0
mov r4, r5
b _020396D4
_020396B0:
mov r0, sb
mov r1, r5
bl _s32_div_f
str r1, [sl, r7, lsl #2]
mov r0, sb
mov r1, r4
bl _s32_div_f
mov sb, r0
add r7, r7, #1
_020396D4:
cmp r7, r8
blt _020396B0
mov r0, r6
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
arm_func_end sub_02039680
arm_func_start sub_020396E4
sub_020396E4: ; 0x020396E4
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x34
mov r4, r0
add r1, sp, #0xc
mov r0, #0
bl GetPressedButtons
ldrsb r0, [r4, #0x14]
bl IsAdvancedTextBoxActive
cmp r0, #0
bne _02039730
ldrsb r0, [r4, #0x14]
bl sub_02030940
mvn r1, #0
cmp r0, r1
bne _02039728
mov r0, #2
b _02039940
_02039728:
mov r0, #3
b _02039940
_02039730:
add r1, sp, #0xa
mov r0, #0
ldrb r5, [r4, #0x28]
bl sub_020063F4
ldrh r0, [sp, #0xa]
cmp r0, #0x10
beq _02039774
cmp r0, #0x20
bne _02039788
ldrb r0, [r4, #0x29]
ldrb r1, [r4, #0x28]
sub r0, r0, #1
cmp r1, r0
movge r0, #0
addlt r0, r1, #1
and r5, r0, #0xff
b _02039788
_02039774:
ldrb r0, [r4, #0x28]
cmp r0, #0
ldreqb r0, [r4, #0x29]
sub r0, r0, #1
and r5, r0, #0xff
_02039788:
ldrb r0, [r4, #0x28]
cmp r5, r0
beq _020397A0
mov r0, #3
strb r5, [r4, #0x28]
bl PlaySeVolumeWrapper
_020397A0:
ldrb r1, [r4, #0x28]
mov r0, #0xc
ldr r3, [r4, #0x24]
add r1, r1, #1
mul r2, r1, r0
ldr r1, [r4, #0x20]
add r0, r3, #0xf
sub r1, r1, r2
add r2, r1, #3
str r2, [sp]
str r0, [sp, #4]
ldrsb r0, [r4, #0x14]
sub r3, r3, #1
mov r1, #7
bl sub_020309B8
add r1, sp, #8
mov r0, #0
bl sub_020063F4
mov r0, r4
bl sub_0203994C
cmp r0, #0
ldreqh r0, [sp, #8]
cmp r0, #0x40
beq _0203980C
cmp r0, #0x80
beq _0203985C
b _020398AC
_0203980C:
ldr r3, [r4]
ldr r0, [r4, #0xc]
cmp r3, r0
bne _0203982C
mov r0, #2
bl PlaySeVolumeWrapper
mov r0, #0
b _020398B0
_0203982C:
ldrb r2, [r4, #0x28]
ldr r1, _02039948 ; =_0209C5E0
mov r0, #3
ldr r1, [r1, r2, lsl #2]
add r5, r3, r1
bl PlaySeVolumeWrapper
ldr r0, [r4, #0xc]
cmp r5, r0
strgt r0, [r4]
strle r5, [r4]
mov r0, #1
b _020398B0
_0203985C:
ldr r3, [r4]
ldr r0, [r4, #8]
cmp r3, r0
bne _0203987C
mov r0, #2
bl PlaySeVolumeWrapper
mov r0, #0
b _020398B0
_0203987C:
ldrb r2, [r4, #0x28]
ldr r1, _02039948 ; =_0209C5E0
mov r0, #3
ldr r1, [r1, r2, lsl #2]
sub r5, r3, r1
bl PlaySeVolumeWrapper
ldr r0, [r4, #8]
cmp r5, r0
strlt r0, [r4]
strge r5, [r4]
mov r0, #1
b _020398B0
_020398AC:
mov r0, #0
_020398B0:
cmp r0, #0
movne r0, #1
bne _02039940
mov r0, r4
bl sub_0203994C
cmp r0, #0
ldreqh r0, [sp, #0xc]
cmp r0, #1
beq _020398E4
cmp r0, #2
bne _020398EC
mov r0, #2
b _02039940
_020398E4:
mov r0, #3
b _02039940
_020398EC:
add r0, sp, #0x10
mov r1, #1
bl sub_02031914
ldr r1, [sp, #0x14]
ldr r0, [sp, #0x18]
mov r1, r1, lsl #0x10
mov r2, r0, lsl #0x10
mov r0, r4
mov r1, r1, lsr #0x10
mov r2, r2, lsr #0x10
bl sub_020399FC
cmp r0, #0
blt _0203993C
ldrb r1, [r4, #0x28]
and r2, r0, #0xff
cmp r2, r1
beq _0203993C
mov r0, #3
strb r2, [r4, #0x28]
bl PlaySeVolumeWrapper
_0203993C:
mov r0, #0
_02039940:
add sp, sp, #0x34
ldmia sp!, {r4, r5, pc}
.align 2, 0
_02039948: .word _0209C5E0
arm_func_end sub_020396E4
arm_func_start sub_0203994C
sub_0203994C: ; 0x0203994C
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0x24
mov r4, r0
add r0, sp, #0
mov r1, #1
bl sub_02031914
ldrh r0, [sp]
tst r0, #2
moveq r0, #0
beq _020399F0
ldr r2, [sp, #4]
ldr r0, _020399F8 ; =0x0000FFFF
cmp r2, r0
ldreq r1, [sp, #8]
cmpeq r1, r0
moveq r0, #0
beq _020399F0
ldr r0, [sp, #8]
mov r1, r2, lsl #0x10
mov r2, r0, lsl #0x10
mov r0, r4
mov r1, r1, lsr #0x10
mov r2, r2, lsr #0x10
bl sub_020399FC
ldrb r1, [r4, #0x28]
cmp r1, r0
movne r0, #0
bne _020399F0
ldrsb r0, [r4, #0x14]
bl GetWindow
ldrb r1, [r0, #5]
ldr r2, [r4, #0x24]
ldr r0, [sp, #8]
add r1, r2, r1, lsl #3
cmp r0, r1
add r1, r1, #0xc
movlt r0, #0x40
blt _020399F0
cmp r0, r1
movgt r0, #0x80
movle r0, #0
_020399F0:
add sp, sp, #0x24
ldmia sp!, {r3, r4, pc}
.align 2, 0
_020399F8: .word 0x0000FFFF
arm_func_end sub_0203994C
arm_func_start sub_020399FC
sub_020399FC: ; 0x020399FC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r6, r0
ldrsb r0, [r6, #0x14]
mov r5, r1
mov r4, r2
bl GetWindow
ldrb r1, [r0, #5]
ldr r3, [r6, #0x24]
ldr ip, _02039B08 ; =0x0000FFFF
add r3, r3, r1, lsl #3
cmp r5, ip
ldrb r7, [r6, #0x29]
ldr r8, [r6, #0x20]
ldrb r2, [r0, #4]
mov r6, #0xc
ldrb sb, [r0, #6]
sub lr, r3, #0xa
ldrb r0, [r0, #7]
smulbb r7, r7, r6
add r8, r8, r2, lsl #3
mov r3, r2, lsl #3
mov r1, r1, lsl #3
add r2, r3, sb, lsl #3
add sb, r1, r0, lsl #3
sub r7, r8, r7
add r0, lr, #0x20
cmpne r4, ip
mvneq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
sub r3, r3, #6
cmp r5, r3
sublt r0, r6, #0xe
ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
sub r1, r1, #6
cmp r4, r1
sublt r0, r6, #0xe
ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
add r1, r2, #6
cmp r5, r1
subgt r0, r6, #0xe
ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
add r1, sb, #6
cmp r4, r1
subgt r0, r6, #0xe
ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
cmp r4, lr
sublt r0, ip, #0x10000
ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
cmp r4, r0
subgt r0, ip, #0x10000
ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
sub r0, r7, #4
cmp r5, r0
sublt r0, ip, #0x10000
ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
add r0, r8, #4
cmp r5, r0
subgt r0, ip, #0x10000
ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
cmp r5, r7
addle r5, r7, #1
cmp r5, r8
subge r5, r8, #1
sub r0, r8, r5
mov r1, #0xc
bl _s32_div_f
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_02039B08: .word 0x0000FFFF
arm_func_end sub_020399FC
arm_func_start sub_02039B0C
sub_02039B0C: ; 0x02039B0C
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x2c
mov r8, r0
ldr r1, [r8]
ldr r2, [r8, #0x10]
add r0, sp, #4
bl sub_02039680
ldr r0, [r8, #0x10]
add r2, sp, #4
sub r3, r0, #1
mov r0, #0xff
b _02039B50
_02039B3C:
ldr r1, [r2, r3, lsl #2]
cmp r1, #0
bne _02039B58
str r0, [r2, r3, lsl #2]
sub r3, r3, #1
_02039B50:
cmp r3, #0
bgt _02039B3C
_02039B58:
mov r7, #0
add r6, sp, #4
#ifdef JAPAN
mov r5, #0xa
#else
mov r5, #0x2a
#endif
mov r4, #0x44
mov sb, #0xc
b _02039BB0
_02039B70:
ldr r0, [r6, r7, lsl #2]
cmp r0, #0xff
moveq r0, r5
#ifdef JAPAN
addne r0, r0, #0x1e
#else
addne r0, r0, #0x30
#endif
andne r0, r0, #0xff
bl sub_020251F0
add r1, r7, #1
mul r2, r1, sb
str r4, [sp]
ldr r1, [r8, #0x20]
mov r3, r0
sub r1, r1, r2
ldrsb r0, [r8, #0x14]
ldr r2, [r8, #0x24]
bl sub_020264F8
add r7, r7, #1
_02039BB0:
ldr r0, [r8, #0x10]
cmp r7, r0
blt _02039B70
mov r5, #0
mov r4, #0x17
mov r7, #0xb
mov r6, #0xc
b _02039C00
_02039BD0:
add r0, r5, #1
mul r1, r0, r6
str r4, [sp]
ldr r0, [r8, #0x20]
ldr r2, [r8, #0x24]
sub r1, r0, r1
ldrsb r0, [r8, #0x14]
mov r3, r7
sub r1, r1, #1
add r2, r2, #0xc
bl sub_02025D50
add r5, r5, #1
_02039C00:
ldr r0, [r8, #0x10]
cmp r5, r0
blt _02039BD0
add sp, sp, #0x2c
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
arm_func_end sub_02039B0C
arm_func_start sub_02039C14
sub_02039C14: ; 0x02039C14
ldr r0, _02039C24 ; =_020AFE58
ldr ip, _02039C28 ; =sub_02039B0C
ldr r0, [r0]
bx ip
.align 2, 0
_02039C24: .word _020AFE58
_02039C28: .word sub_02039B0C
arm_func_end sub_02039C14
arm_func_start sub_02039C2C
sub_02039C2C: ; 0x02039C2C
ldr ip, _02039C38 ; =sub_02039C64
mov r2, #0
bx ip
.align 2, 0
_02039C38: .word sub_02039C64
arm_func_end sub_02039C2C
arm_func_start sub_02039C3C
sub_02039C3C: ; 0x02039C3C
stmdb sp!, {r4, lr}
mov r2, #2
bl sub_02039C64
ldr r1, _02039C60 ; =sub_0203BA80
mov r2, #0
mov r4, r0
bl sub_0203189C
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_02039C60: .word sub_0203BA80
arm_func_end sub_02039C3C
arm_func_start sub_02039C64
sub_02039C64: ; 0x02039C64
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x4c
mov r5, r0
mov r4, r2
bl sub_0203AD68
cmp r0, #0
mvnne r0, #1
bne _0203A4CC
ldr r0, _0203A4D4 ; =_020AFE5C
ldr r0, [r0, #0x10]
cmp r0, #0
bne _02039CA8
mov r0, #0x8a0
mov r1, #8
bl MemAlloc
ldr r1, _0203A4D4 ; =_020AFE5C
str r0, [r1, #0x10]
_02039CA8:
ldr r1, _0203A4D4 ; =_020AFE5C
ldr r0, _0203A4D8 ; =_0209C764
ldrsh r6, [r1, #2]
mov r2, r5
mov r3, r4
str r6, [sp]
ldr r1, [r1, #4]
bl Debug_Print0
ldr r0, _0203A4D4 ; =_020AFE5C
ldr r1, [r0, #4]
cmp r1, r5
beq _02039CF0
mov r1, #1
str r1, [r0, #0xc]
mov r1, #0
str r1, [r0, #8]
str r5, [r0, #4]
strh r1, [r0, #2]
_02039CF0:
ldr r2, _0203A4D4 ; =_020AFE5C
mov r0, #0
ldrsh r1, [r2, #2]
sub r3, r0, #2
strh r1, [r2]
ldr r1, [r2, #0x10]
str r4, [r1]
ldr r1, [r2, #0x10]
strb r0, [r1, #8]
ldr r1, [r2, #0x10]
strb r0, [r1, #9]
ldr r1, [r2, #0x10]
strb r0, [r1, #0xa]
ldr r1, [r2, #0x10]
strb r0, [r1, #0xb]
ldr r1, [r2, #0x10]
strb r0, [r1, #0xc]
ldr r1, [r2, #0x10]
strb r0, [r1, #0xd]
ldr r1, [r2, #0x10]
strb r0, [r1, #0xe]
ldr r1, [r2, #0x10]
strb r0, [r1, #0x10]
ldr r1, [r2, #0x10]
strb r3, [r1, #0x468]
ldr r1, [r2, #0x10]
strb r3, [r1, #0x469]
ldr r1, [r2, #0x10]
strb r3, [r1, #0x505]
ldr r1, [r2, #0x10]
strb r3, [r1, #0x506]
ldr r1, [r2, #0x10]
strb r3, [r1, #0x507]
ldr r1, [r2, #0x10]
strb r3, [r1, #0x50c]
ldr r1, [r2, #0x10]
strb r3, [r1, #0x5bc]
ldr r1, [r2, #0x10]
add r1, r1, #0x600
strh r0, [r1, #0x70]
ldr r1, [r2, #0x10]
strb r0, [r1, #0x46a]
ldr r1, [r2, #0x10]
strb r0, [r1, #0xf]
ldr r1, [r2, #4]
cmp r1, #0xc
addls pc, pc, r1, lsl #2
b _02039E94
_02039DB0: ; jump table
b _02039E94 ; case 0
b _02039DE4 ; case 1
b _02039DF4 ; case 2
b _02039E54 ; case 3
b _02039E44 ; case 4
b _02039E94 ; case 5
b _02039E78 ; case 6
b _02039E10 ; case 7
b _02039E04 ; case 8
b _02039E78 ; case 9
b _02039E78 ; case 10
b _02039E78 ; case 11
b _02039E78 ; case 12
_02039DE4:
ldr r0, [r2, #0x10]
mov r1, #1
strb r1, [r0, #0xe]
b _02039E94
_02039DF4:
ldr r0, [r2, #0x10]
mov r1, #1
strb r1, [r0, #8]
b _02039E94
_02039E04:
ldr r0, [r2, #0x10]
mov r1, #1
strb r1, [r0, #0x10]
_02039E10:
ldr r0, _0203A4D4 ; =_020AFE5C
mov r1, #1
ldr r0, [r0, #0x10]
strb r1, [r0, #0xd]
bl sub_0204E210
cmp r0, #2
bne _02039E44
bl sub_0204E3C8
cmp r0, #0
ldrne r0, _0203A4D4 ; =_020AFE5C
movne r1, #1
ldrne r0, [r0, #0x10]
strneb r1, [r0, #0xf]
_02039E44:
ldr r0, _0203A4D4 ; =_020AFE5C
mov r1, #1
ldr r0, [r0, #0x10]
strb r1, [r0, #0xc]
_02039E54:
ldr r0, _0203A4D4 ; =_020AFE5C
mov r2, #1
ldr r1, [r0, #0x10]
strb r2, [r1, #0xb]
ldr r1, [r0, #0x10]
strb r2, [r1, #9]
ldr r0, [r0, #0x10]
strb r2, [r0, #0xa]
b _02039E94
_02039E78:
ldr r1, [r2, #0x10]
mov r3, #1
strb r3, [r1, #8]
ldr r1, [r2, #0x10]
strb r0, [r1, #9]
ldr r1, [r2, #0x10]
strb r0, [r1, #0xa]
_02039E94:
ldr r2, _0203A4D4 ; =_020AFE5C
mvn r4, #0
ldr r0, [r2, #0x10]
mov r5, #0
str r5, [r0, #4]
add r1, r4, #0x22c
_02039EAC:
ldr r3, [r2, #0x10]
add r0, r5, #1
add r3, r3, r5, lsl #1
mov r0, r0, lsl #0x10
strh r4, [r3, #0x12]
cmp r1, r0, asr #16
mov r5, r0, asr #0x10
bgt _02039EAC
ldr r0, _0203A4D4 ; =_020AFE5C
ldr r0, [r0, #4]
sub r0, r0, #5
cmp r0, #7
addls pc, pc, r0, lsl #2
b _0203A144
_02039EE4: ; jump table
b _02039F04 ; case 0
b _0203A034 ; case 1
b _0203A144 ; case 2
b _0203A144 ; case 3
b _0203A034 ; case 4
b _0203A034 ; case 5
b _0203A034 ; case 6
b _0203A034 ; case 7
_02039F04:
bl sub_02059B08
cmp r0, #0
beq _02039FA8
bl GetHero
mov r5, r0
bl GetPartner
mov r4, r0
cmp r5, #0
beq _02039F64
add r1, sp, #0x10
mov r0, r5
bl GetEvolutionPossibilities
ldrsh r0, [sp, #0x18]
cmp r0, #0
beq _02039F64
bl GetHeroMemberIdx
ldr r1, _0203A4D4 ; =_020AFE5C
ldr r5, [r1, #0x10]
ldr r3, [r5, #4]
add r2, r3, #1
str r2, [r5, #4]
ldr r1, [r1, #0x10]
add r1, r1, r3, lsl #1
strh r0, [r1, #0x12]
_02039F64:
cmp r4, #0
beq _02039FA8
add r1, sp, #0x10
mov r0, r4
bl GetEvolutionPossibilities
ldrsh r0, [sp, #0x18]
cmp r0, #0
beq _02039FA8
bl GetPartnerMemberIdx
ldr r1, _0203A4D4 ; =_020AFE5C
ldr r4, [r1, #0x10]
ldr r3, [r4, #4]
add r2, r3, #1
str r2, [r4, #4]
ldr r1, [r1, #0x10]
add r1, r1, r3, lsl #1
strh r0, [r1, #0x12]
_02039FA8:
ldr r6, _0203A4D4 ; =_020AFE5C
ldr r4, _0203A4DC ; =0x0000022B
ldr r7, _0203A4E0 ; =TEAM_MEMBER_TABLE_PTR
mov sb, #5
mov sl, #0
mov r8, #1
add fp, sp, #0x10
mov r5, #0x44
_02039FC8:
smulbb r2, sb, r5
ldr r3, [r7]
ldrb r0, [r3, r2]
tst r0, #1
movne r0, r8
moveq r0, sl
tst r0, #0xff
beq _0203A01C
mov r1, fp
add r0, r3, r2
bl GetEvolutionPossibilities
ldrsh r0, [sp, #0x18]
cmp r0, #0
beq _0203A01C
ldr r2, [r6, #0x10]
ldr r1, [r2, #4]
add r0, r1, #1
str r0, [r2, #4]
ldr r0, [r6, #0x10]
add r0, r0, r1, lsl #1
strh sb, [r0, #0x12]
_0203A01C:
add r0, sb, #1
mov r0, r0, lsl #0x10
cmp r4, r0, asr #16
mov sb, r0, asr #0x10
bgt _02039FC8
b _0203A278
_0203A034:
bl GetMainCharacter1MemberIdx
mvn r1, #0
cmp r0, r1
beq _0203A064
ldr r1, _0203A4D4 ; =_020AFE5C
ldr r4, [r1, #0x10]
ldr r3, [r4, #4]
add r2, r3, #1
str r2, [r4, #4]
ldr r1, [r1, #0x10]
add r1, r1, r3, lsl #1
strh r0, [r1, #0x12]
_0203A064:
bl GetMainCharacter2MemberIdx
mvn r1, #0
cmp r0, r1
beq _0203A094
ldr r1, _0203A4D4 ; =_020AFE5C
ldr r4, [r1, #0x10]
ldr r3, [r4, #4]
add r2, r3, #1
str r2, [r4, #4]
ldr r1, [r1, #0x10]
add r1, r1, r3, lsl #1
strh r0, [r1, #0x12]
_0203A094:
bl GetMainCharacter3MemberIdx
mvn r1, #0
cmp r0, r1
beq _0203A0C4
ldr r1, _0203A4D4 ; =_020AFE5C
ldr r4, [r1, #0x10]
ldr r3, [r4, #4]
add r2, r3, #1
str r2, [r4, #4]
ldr r1, [r1, #0x10]
add r1, r1, r3, lsl #1
strh r0, [r1, #0x12]
_0203A0C4:
ldr r6, _0203A4D4 ; =_020AFE5C
ldr r4, _0203A4DC ; =0x0000022B
ldr r7, _0203A4E0 ; =TEAM_MEMBER_TABLE_PTR
mov sb, #5
mov sl, #0
mov r8, #1
mov r5, #0x44
_0203A0E0:
smulbb r0, sb, r5
ldr r1, [r7]
ldrb r0, [r1, r0]
tst r0, #1
movne r0, r8
moveq r0, sl
tst r0, #0xff
beq _0203A12C
mov r0, sb
bl sub_02056410
cmp r0, #0
beq _0203A12C
ldr r2, [r6, #0x10]
ldr r1, [r2, #4]
add r0, r1, #1
str r0, [r2, #4]
ldr r0, [r6, #0x10]
add r0, r0, r1, lsl #1
strh sb, [r0, #0x12]
_0203A12C:
add r0, sb, #1
mov r0, r0, lsl #0x10
cmp r4, r0, asr #16
mov sb, r0, asr #0x10
bgt _0203A0E0
b _0203A278
_0203A144:
ldr r0, _0203A4D4 ; =_020AFE5C
ldr r0, [r0, #0x10]
ldrb r0, [r0, #9]
cmp r0, #0
bne _0203A198
bl GetMainCharacter1MemberIdx
mov r4, r0
mvn r1, #0
cmp r4, r1
beq _0203A198
bl sub_0203AB3C
cmp r0, #0
beq _0203A198
ldr r0, _0203A4D4 ; =_020AFE5C
ldr r3, [r0, #0x10]
ldr r2, [r3, #4]
add r1, r2, #1
str r1, [r3, #4]
ldr r0, [r0, #0x10]
add r0, r0, r2, lsl #1
strh r4, [r0, #0x12]
_0203A198:
ldr r0, _0203A4D4 ; =_020AFE5C
ldr r0, [r0, #0x10]
ldrb r0, [r0, #0xa]
cmp r0, #0
bne _0203A22C
bl GetMainCharacter2MemberIdx
mov r4, r0
mvn r1, #0
cmp r4, r1
beq _0203A1EC
bl sub_0203AB3C
cmp r0, #0
beq _0203A1EC
ldr r0, _0203A4D4 ; =_020AFE5C
ldr r3, [r0, #0x10]
ldr r2, [r3, #4]
add r1, r2, #1
str r1, [r3, #4]
ldr r0, [r0, #0x10]
add r0, r0, r2, lsl #1
strh r4, [r0, #0x12]
_0203A1EC:
bl GetMainCharacter3MemberIdx
mov r4, r0
mvn r1, #0
cmp r4, r1
beq _0203A22C
bl sub_0203AB3C
cmp r0, #0
beq _0203A22C
ldr r0, _0203A4D4 ; =_020AFE5C
ldr r3, [r0, #0x10]
ldr r2, [r3, #4]
add r1, r2, #1
str r1, [r3, #4]
ldr r0, [r0, #0x10]
add r0, r0, r2, lsl #1
strh r4, [r0, #0x12]
_0203A22C:
ldr r6, _0203A4D4 ; =_020AFE5C
ldr r5, _0203A4DC ; =0x0000022B
mov r4, #5
_0203A238:
mov r0, r4
bl sub_0203AB3C
cmp r0, #0
beq _0203A264
ldr r2, [r6, #0x10]
ldr r1, [r2, #4]
add r0, r1, #1
str r0, [r2, #4]
ldr r0, [r6, #0x10]
add r0, r0, r1, lsl #1
strh r4, [r0, #0x12]
_0203A264:
add r0, r4, #1
mov r0, r0, lsl #0x10
cmp r5, r0, asr #16
mov r4, r0, asr #0x10
bgt _0203A238
_0203A278:
ldr r1, _0203A4E4 ; =_0209C604
add r0, sp, #8
ldr r2, [r1, #4]
ldr r1, [r1]
str r2, [sp, #0xc]
str r1, [sp, #8]
bl sub_020584F8
bl sub_0203AF28
ldr r0, _0203A4D4 ; =_020AFE5C
ldrsh r0, [r0, #2]
bl sub_0203AAF8
ldr r1, _0203A4D4 ; =_020AFE5C
ldr r2, [r1, #0x10]
str r0, [r2, #0x46c]
ldr r0, [r1, #4]
cmp r0, #0xc
addls pc, pc, r0, lsl #2
b _0203A330
_0203A2C0: ; jump table
b _0203A330 ; case 0
b _0203A330 ; case 1
b _0203A31C ; case 2
b _0203A330 ; case 3
b _0203A330 ; case 4
b _0203A330 ; case 5
b _0203A31C ; case 6
b _0203A330 ; case 7
b _0203A330 ; case 8
b _0203A2F4 ; case 9
b _0203A308 ; case 10
b _0203A31C ; case 11
b _0203A31C ; case 12
_0203A2F4:
ldr r0, [r1, #0x10]
ldr r1, _0203A4E8 ; =0x000002B7
add r0, r0, #0x400
strh r1, [r0, #0x74]
b _0203A344
_0203A308:
ldr r0, [r1, #0x10]
#ifdef JAPAN
ldr r1, _0203A8F4 ; =0x00002FD8
#else
mov r1, #0x2b8
#endif
add r0, r0, #0x400
strh r1, [r0, #0x74]
b _0203A344
_0203A31C:
ldr r0, [r1, #0x10]
ldr r1, _0203A4EC ; =0x00000302
add r0, r0, #0x400
strh r1, [r0, #0x74]
b _0203A344
_0203A330:
ldr r0, _0203A4D4 ; =_020AFE5C
ldr r1, _0203A4F0 ; =0x00000303
ldr r0, [r0, #0x10]
add r0, r0, #0x400
strh r1, [r0, #0x74]
_0203A344:
ldr r2, _0203A4D4 ; =_020AFE5C
mov r3, #0x10
ldr r0, [r2, #0x10]
mov r1, #0xd
str r3, [r0, #0x478]
ldr r0, [r2, #0x10]
str r1, [r0, #0x470]
ldr r0, [r2, #4]
sub r0, r0, #6
cmp r0, #6
addls pc, pc, r0, lsl #2
b _0203A420
_0203A374: ; jump table
b _0203A3E0 ; case 0
b _0203A420 ; case 1
b _0203A420 ; case 2
b _0203A390 ; case 3
b _0203A3E0 ; case 4
b _0203A3E0 ; case 5
b _0203A3E0 ; case 6
_0203A390:
ldr r3, [r2, #0x10]
ldr r0, _0203A4F4 ; =_0209C668
add r1, r3, #0x72
add r1, r1, #0x600
str r1, [r3, #0x4cc]
ldr r3, [r2, #0x10]
ldr r1, _0203A4F8 ; =0x00401E33
add r2, r3, #0x500
ldrsh r4, [r2, #0xd4]
add r2, r3, #0x6c
ldr r3, _0203A4FC ; =TeamSelectionMenuGetItem
str r4, [sp]
mov r4, #6
add r2, r2, #0x400
str r4, [sp, #4]
bl CreateTeamSelectionMenu
ldr r1, _0203A4D4 ; =_020AFE5C
ldr r1, [r1, #0x10]
strb r0, [r1, #0x468]
b _0203A4BC
_0203A3E0:
ldr r2, [r2, #0x10]
ldr r0, _0203A4F4 ; =_0209C668
add r1, r2, #0x500
ldrsh r4, [r1, #0xd4]
add r2, r2, #0x6c
ldr r1, _0203A500 ; =0x00401C33
ldr r3, _0203A4FC ; =TeamSelectionMenuGetItem
str r4, [sp]
mov r4, #6
add r2, r2, #0x400
str r4, [sp, #4]
bl CreateTeamSelectionMenu
ldr r1, _0203A4D4 ; =_020AFE5C
ldr r1, [r1, #0x10]
strb r0, [r1, #0x468]
b _0203A4BC
_0203A420:
ldr r1, _0203A4D4 ; =_020AFE5C
ldr r3, _0203A504 ; =sub_0203B91C
ldr r0, [r1, #0x10]
ldr r2, _0203A508 ; =_0203BA24
str r3, [r0, #0x4e0]
ldr r0, [r1, #0x10]
mov r3, #0
str r2, [r0, #0x4e8]
ldr r2, [r1, #0x10]
ldr r0, _0203A4F4 ; =_0209C668
str r3, [r2, #0x508]
ldr r3, [r1, #0x10]
ldr r1, _0203A50C ; =0x00447C33
add r2, r3, #0x500
ldrsh r4, [r2, #0xd4]
add r2, r3, #0x6c
ldr r3, _0203A4FC ; =TeamSelectionMenuGetItem
str r4, [sp]
mov r4, #8
add r2, r2, #0x400
str r4, [sp, #4]
bl CreateTeamSelectionMenu
ldr r2, _0203A4D4 ; =_020AFE5C
ldr r1, _0203A510 ; =_0203B884
ldr r3, [r2, #0x10]
strb r0, [r3, #0x468]
ldr r0, [r2, #0x10]
add r0, r0, #0x400
ldrsb r0, [r0, #0x68]
bl sub_02031888
ldr r0, _0203A514 ; =_0209C638
ldr r1, _0203A518 ; =sub_0203C784
bl CreateTextBox
ldr r1, _0203A4D4 ; =_020AFE5C
mov r2, #1
ldr r3, [r1, #0x10]
strb r0, [r3, #0x469]
ldr r0, [r1, #0x10]
strb r2, [r0, #0x46a]
_0203A4BC:
ldr r0, _0203A4D4 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x400
ldrsb r0, [r0, #0x68]
_0203A4CC:
add sp, sp, #0x4c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0203A4D4: .word _020AFE5C
_0203A4D8: .word _0209C764
_0203A4DC: .word 0x0000022B
_0203A4E0: .word TEAM_MEMBER_TABLE_PTR
_0203A4E4: .word _0209C604
#ifdef JAPAN
_0203A4E8: .word 0x00002FD7
_0203A8F4: .word 0x00002FD8
_0203A4EC: .word 0x000023AA
_0203A4F0: .word 0x000023AB
#else
_0203A4E8: .word 0x000002B7
_0203A4EC: .word 0x00000302
_0203A4F0: .word 0x00000303
#endif
_0203A4F4: .word _0209C668
_0203A4F8: .word 0x00401E33
_0203A4FC: .word TeamSelectionMenuGetItem
_0203A500: .word 0x00401C33
_0203A504: .word sub_0203B91C
_0203A508: .word sub_0203BA24
_0203A50C: .word 0x00447C33
_0203A510: .word sub_0203B884
_0203A514: .word _0209C638
_0203A518: .word sub_0203C784
arm_func_end sub_02039C64
arm_func_start sub_0203A51C
sub_0203A51C: ; 0x0203A51C
stmdb sp!, {r3, lr}
ldr r0, _0203A5A4 ; =_020AFE5C
ldr r0, [r0, #0x10]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl sub_0203AA20
ldr r1, _0203A5A4 ; =_020AFE5C
strh r0, [r1]
bl sub_0203AAB0
ldr r1, _0203A5A4 ; =_020AFE5C
strh r0, [r1, #2]
ldr r0, [r1, #0x10]
add r0, r0, #0x400
ldrsb r0, [r0, #0x68]
bl CloseTeamSelectionMenu
ldr r0, _0203A5A4 ; =_020AFE5C
mvn r1, #1
ldr r0, [r0, #0x10]
add r0, r0, #0x400
ldrsb r0, [r0, #0x69]
cmp r0, r1
beq _0203A588
bl CloseTextBox
ldr r0, _0203A5A4 ; =_020AFE5C
mvn r1, #1
ldr r0, [r0, #0x10]
strb r1, [r0, #0x469]
_0203A588:
ldr r0, _0203A5A4 ; =_020AFE5C
ldr r0, [r0, #0x10]
bl MemFree
ldr r0, _0203A5A4 ; =_020AFE5C
mov r1, #0
str r1, [r0, #0x10]
ldmia sp!, {r3, pc}
.align 2, 0
_0203A5A4: .word _020AFE5C
arm_func_end sub_0203A51C
arm_func_start sub_0203A5A8
sub_0203A5A8: ; 0x0203A5A8
stmdb sp!, {r3, lr}
ldr r0, _0203A5EC ; =_020AFE5C
ldr r0, [r0, #0x10]
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r3, pc}
bl sub_0203AA20
ldr r1, _0203A5EC ; =_020AFE5C
strh r0, [r1]
bl sub_0203AAB0
ldr r1, _0203A5EC ; =_020AFE5C
strh r0, [r1, #2]
ldr r0, [r1, #0x10]
add r0, r0, #0x400
ldrsb r0, [r0, #0x68]
bl IsTeamSelectionMenuActive
ldmia sp!, {r3, pc}
.align 2, 0
_0203A5EC: .word _020AFE5C
arm_func_end sub_0203A5A8
arm_func_start sub_0203A5F0
sub_0203A5F0: ; 0x0203A5F0
stmdb sp!, {r3, lr}
ldr r0, _0203A614 ; =_020AFE5C
ldr r0, [r0, #0x10]
cmp r0, #0
ldmeqia sp!, {r3, pc}
add r0, r0, #0x400
ldrsb r0, [r0, #0x68]
bl sub_020318D0
ldmia sp!, {r3, pc}
.align 2, 0
_0203A614: .word _020AFE5C
arm_func_end sub_0203A5F0
arm_func_start sub_0203A618
sub_0203A618: ; 0x0203A618
stmdb sp!, {r3, lr}
ldr r0, _0203A634 ; =_020AFE5C
ldr r0, [r0, #0x10]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl sub_0203A658
ldmia sp!, {r3, pc}
.align 2, 0
_0203A634: .word _020AFE5C
arm_func_end sub_0203A618
arm_func_start sub_0203A638
sub_0203A638: ; 0x0203A638
stmdb sp!, {r3, lr}
ldr r0, _0203A654 ; =_020AFE5C
ldr r0, [r0, #0x10]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl sub_0203A6BC
ldmia sp!, {r3, pc}
.align 2, 0
_0203A654: .word _020AFE5C
arm_func_end sub_0203A638
arm_func_start sub_0203A658
sub_0203A658: ; 0x0203A658
stmdb sp!, {r3, lr}
bl sub_0203AA20
ldr r1, _0203A6B8 ; =_020AFE5C
strh r0, [r1]
bl sub_0203AAB0
ldr r1, _0203A6B8 ; =_020AFE5C
strh r0, [r1, #2]
ldr r0, [r1, #0x10]
add r0, r0, #0x400
ldrsb r0, [r0, #0x68]
bl sub_0202812C
ldr r0, _0203A6B8 ; =_020AFE5C
mvn r1, #1
ldr r0, [r0, #0x10]
add r0, r0, #0x400
ldrsb r0, [r0, #0x69]
cmp r0, r1
ldmeqia sp!, {r3, pc}
bl CloseTextBox
ldr r0, _0203A6B8 ; =_020AFE5C
mvn r1, #1
ldr r0, [r0, #0x10]
strb r1, [r0, #0x469]
ldmia sp!, {r3, pc}
.align 2, 0
_0203A6B8: .word _020AFE5C
arm_func_end sub_0203A658
arm_func_start sub_0203A6BC
sub_0203A6BC: ; 0x0203A6BC
stmdb sp!, {r3, lr}
ldr r0, _0203A750 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x400
ldrsb r0, [r0, #0x68]
bl sub_02028354
cmp r0, #3
bne _0203A6F0
ldr r0, _0203A750 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x400
ldrsb r0, [r0, #0x68]
bl sub_0202810C
_0203A6F0:
ldr r0, _0203A750 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x400
ldrsb r0, [r0, #0x68]
bl sub_0203111C
ldr r0, _0203A750 ; =_020AFE5C
ldr r1, [r0, #0x10]
ldrb r0, [r1, #0x46a]
cmp r0, #0
ldmeqia sp!, {r3, pc}
add r0, r1, #0x400
ldrsb r0, [r0, #0x69]
mvn r1, #1
cmp r0, r1
bne _0203A748
ldr r0, _0203A754 ; =_0209C638
ldr r1, _0203A758 ; =sub_0203C784
bl CreateTextBox
ldr r1, _0203A750 ; =_020AFE5C
ldr r1, [r1, #0x10]
strb r0, [r1, #0x469]
ldmia sp!, {r3, pc}
_0203A748:
bl sub_0202F9B8
ldmia sp!, {r3, pc}
.align 2, 0
_0203A750: .word _020AFE5C
_0203A754: .word _0209C638
_0203A758: .word sub_0203C784
arm_func_end sub_0203A6BC
arm_func_start TeamSelectionMenuGetItem
TeamSelectionMenuGetItem: ; 0x0203A75C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x28
ldr r3, _0203A960 ; =_020AFE5C
ldr r2, _0203A964 ; =TEAM_MEMBER_TABLE_PTR
ldr r5, [r3, #0x10]
mov r8, r1
add r1, r5, r8, lsl #1
ldrsh r6, [r1, #0x12]
ldr r4, [r2]
add r1, r5, r8
mov r2, #0
strb r2, [r1, #0x672]
mov r7, #0x44
ldr r1, [r3, #4]
smlabb r4, r6, r7, r4
mov sb, r0
cmp r1, #9
bne _0203A85C
ldr r0, [r3, #0x10]
add r0, r0, #0x600
ldrsh r0, [r0, #0x70]
bl GetItemMoveId16
mov r5, #0
mov r3, r5
mov ip, #1
mov r2, #6
b _0203A7FC
_0203A7C8:
smlabb lr, r5, r2, r4
ldrb r1, [lr, #0x22]
tst r1, #1
movne r1, ip
moveq r1, r3
tst r1, #0xff
beq _0203A7F0
ldrh r1, [lr, #0x24]
cmp r0, r1
beq _0203A804
_0203A7F0:
add r1, r5, #1
mov r1, r1, lsl #0x10
mov r5, r1, asr #0x10
_0203A7FC:
cmp r5, #4
blt _0203A7C8
_0203A804:
ldrsh r1, [r4, #4]
bl sub_02053D1C
cmp r0, #0
beq _0203A844
cmp r5, #4
blt _0203A844
mov r0, r6
bl sub_02056410
cmp r0, #0
beq _0203A8E4
mov r0, r6
bl sub_020564B0
cmp r0, #0
movne r7, #0x59
moveq r7, #0x46
b _0203A8E4
_0203A844:
ldr r0, _0203A960 ; =_020AFE5C
mov r1, #3
ldr r0, [r0, #0x10]
add r0, r0, r8
strb r1, [r0, #0x672]
b _0203A8E4
_0203A85C:
mov r0, r6
bl sub_02056410
cmp r0, #0
beq _0203A884
mov r0, r6
bl sub_020564B0
cmp r0, #0
movne r7, #0x59
moveq r7, #0x46
b _0203A8E4
_0203A884:
ldr r0, _0203A960 ; =_020AFE5C
ldr r0, [r0, #4]
#ifdef JAPAN
sub r0, r0, #5
cmp r0, #7
#else
cmp r0, #0xc
#endif
addls pc, pc, r0, lsl #2
b _0203A8D0
_0203A898: ; jump table
#ifndef JAPAN
b _0203A8D0 ; case 0
b _0203A8D0 ; case 1
b _0203A8D0 ; case 2
b _0203A8CC ; case 3
b _0203A8CC ; case 4
#endif
b _0203A8CC ; case 5
b _0203A8CC ; case 6
b _0203A8CC ; case 7
b _0203A8CC ; case 8
b _0203A8CC ; case 9
b _0203A8CC ; case 10
b _0203A8CC ; case 11
b _0203A8CC ; case 12
_0203A8CC:
b _0203A8E4
_0203A8D0:
mov r0, r6
bl sub_02056F60
cmp r0, #0
movne r7, #0x44
moveq r7, #0x57
_0203A8E4:
add r0, sp, #0x14
add r1, r4, #0x3a
mov r2, #0xa
bl StrncpySimpleNoPadSafe
ldrsh r0, [r4, #4]
bl GetDexNumber
mov r1, r0
add r0, sp, #4
mov r2, #3
bl sub_0202372C
ldr r0, _0203A960 ; =_020AFE5C
add r2, sp, #4
ldr r0, [r0, #0x10]
add r0, r0, r8
ldrb r0, [r0, #0x672]
cmp r0, #0
bne _0203A944
ldr r1, _0203A968 ; =_0209C798
add r4, sp, #0x14
mov r0, sb
mov r3, r7
str r4, [sp]
bl SprintfStatic__0203A970
b _0203A954
_0203A944:
ldr r1, _0203A96C ; =_0209C7B8
add r3, sp, #0x14
mov r0, sb
bl SprintfStatic__0203A970
_0203A954:
mov r0, sb
add sp, sp, #0x28
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0203A960: .word _020AFE5C
_0203A964: .word TEAM_MEMBER_TABLE_PTR
_0203A968: .word _0209C798
_0203A96C: .word _0209C7B8
arm_func_end TeamSelectionMenuGetItem
arm_func_start SprintfStatic__0203A970
SprintfStatic__0203A970: ; 0x0203A970
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__0203A970
arm_func_start sub_0203A998
sub_0203A998: ; 0x0203A998
ldr r0, _0203A9B4 ; =_020AFE5C
ldr r0, [r0, #0x10]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_0203A9B4: .word _020AFE5C
arm_func_end sub_0203A998
arm_func_start sub_0203A9B8
sub_0203A9B8: ; 0x0203A9B8
stmdb sp!, {r3, lr}
ldr r0, _0203A9E8 ; =_020AFE5C
ldr r0, [r0, #0x10]
cmp r0, #0
addne r0, r0, #0x400
ldrnesb r0, [r0, #0x68]
mvnne r1, #1
cmpne r0, r1
moveq r0, #0
ldmeqia sp!, {r3, pc}
bl IsTeamSelectionMenuActive
ldmia sp!, {r3, pc}
.align 2, 0
_0203A9E8: .word _020AFE5C
arm_func_end sub_0203A9B8
arm_func_start sub_0203A9EC
sub_0203A9EC: ; 0x0203A9EC
stmdb sp!, {r3, lr}
ldr r0, _0203AA1C ; =_020AFE5C
ldr r0, [r0, #0x10]
cmp r0, #0
addne r0, r0, #0x400
ldrnesb r0, [r0, #0x68]
mvnne r1, #1
cmpne r0, r1
moveq r0, #0
ldmeqia sp!, {r3, pc}
bl IsTeamSelectionMenuState3
ldmia sp!, {r3, pc}
.align 2, 0
_0203AA1C: .word _020AFE5C
arm_func_end sub_0203A9EC
arm_func_start sub_0203AA20
sub_0203AA20: ; 0x0203AA20
stmdb sp!, {r3, lr}
ldr r0, _0203AAAC ; =_020AFE5C
ldr r0, [r0, #0x10]
cmp r0, #0
addne r0, r0, #0x400
ldrnesb r0, [r0, #0x68]
mvnne r1, #1
cmpne r0, r1
beq _0203AAA0
bl IsTeamSelectionMenuActive
cmp r0, #0
beq _0203AA68
ldr r0, _0203AAAC ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x400
ldrsb r0, [r0, #0x68]
bl sub_020311D4
b _0203AA7C
_0203AA68:
ldr r0, _0203AAAC ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x400
ldrsb r0, [r0, #0x68]
bl sub_020311E8
_0203AA7C:
mov r0, r0, lsl #0x10
mov r1, r0, asr #0x10
cmp r1, #0
mvnlt r0, #0
ldrge r0, _0203AAAC ; =_020AFE5C
ldrge r0, [r0, #0x10]
addge r0, r0, r1, lsl #1
ldrgesh r0, [r0, #0x12]
ldmia sp!, {r3, pc}
_0203AAA0:
ldr r0, _0203AAAC ; =_020AFE5C
ldrsh r0, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0203AAAC: .word _020AFE5C
arm_func_end sub_0203AA20
arm_func_start sub_0203AAB0
sub_0203AAB0: ; 0x0203AAB0
stmdb sp!, {r3, lr}
ldr r0, _0203AAF4 ; =_020AFE5C
ldr r0, [r0, #0x10]
cmp r0, #0
addne r0, r0, #0x400
ldrnesb r0, [r0, #0x68]
mvnne r1, #1
cmpne r0, r1
ldreq r0, _0203AAF4 ; =_020AFE5C
ldreqsh r0, [r0, #2]
ldmeqia sp!, {r3, pc}
bl sub_020311D4
ldr r1, _0203AAF4 ; =_020AFE5C
ldr r1, [r1, #0x10]
add r0, r1, r0, lsl #1
ldrsh r0, [r0, #0x12]
ldmia sp!, {r3, pc}
.align 2, 0
_0203AAF4: .word _020AFE5C
arm_func_end sub_0203AAB0
arm_func_start sub_0203AAF8
sub_0203AAF8: ; 0x0203AAF8
ldr r1, _0203AB38 ; =_020AFE5C
mov r2, #0
ldr r3, [r1, #0x10]
add r1, r3, #0x500
ldrsh ip, [r1, #0xd4]
b _0203AB28
_0203AB10:
add r1, r3, r2, lsl #1
ldrsh r1, [r1, #0x12]
cmp r0, r1
moveq r0, r2
bxeq lr
add r2, r2, #1
_0203AB28:
cmp r2, ip
blt _0203AB10
mvn r0, #0
bx lr
.align 2, 0
_0203AB38: .word _020AFE5C
arm_func_end sub_0203AAF8
arm_func_start sub_0203AB3C
sub_0203AB3C: ; 0x0203AB3C
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _0203AD60 ; =TEAM_MEMBER_TABLE_PTR
mov r5, r0
mov r0, #0x44
smulbb r2, r5, r0
ldr r1, [r1]
ldrb r0, [r1, r2]
add r4, r1, r2
tst r0, #1
movne r0, #1
moveq r0, #0
tst r0, #0xff
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldr r0, _0203AD64 ; =_020AFE5C
ldr r1, [r0, #0x10]
ldrb r0, [r1, #0xc]
cmp r0, #0
beq _0203AB98
ldrsh r0, [r4, #4]
cmp r0, #0x214
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
_0203AB98:
ldrb r0, [r1, #0x10]
cmp r0, #0
beq _0203ABCC
ldrsh r0, [r4, #4]
bl sub_02054F18
cmp r0, #0
bne _0203ABC4
add r0, r4, #0x22
bl IsMovesetValidInTimeDarkness
cmp r0, #0
bne _0203ABCC
_0203ABC4:
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
_0203ABCC:
ldr r0, _0203AD64 ; =_020AFE5C
ldr r1, [r0, #0x10]
ldrb r0, [r1, #0xd]
cmp r0, #0
beq _0203AD10
ldrsh r0, [r4, #4]
bl IsShaymin
cmp r0, #0
movne r0, #0
ldmneia sp!, {r3, r4, r5, pc}
ldr r0, _0203AD64 ; =_020AFE5C
ldr r0, [r0, #0x10]
ldrb r0, [r0, #0xb]
cmp r0, #0
beq _0203AC20
mov r0, r5
mov r1, #0
bl sub_02056460
cmp r0, #0
movne r0, #0
ldmneia sp!, {r3, r4, r5, pc}
_0203AC20:
ldr r0, _0203AD64 ; =_020AFE5C
ldr r0, [r0, #0x10]
ldrb r0, [r0, #0xb]
cmp r0, #0
beq _0203AC4C
mov r0, r5
mov r1, #1
bl sub_02056460
cmp r0, #0
movne r0, #0
ldmneia sp!, {r3, r4, r5, pc}
_0203AC4C:
ldr r0, _0203AD64 ; =_020AFE5C
ldr r1, [r0, #0x10]
ldrb r0, [r1, #0xf]
cmp r0, #0
ldrneb r0, [r1, #0xb]
cmpne r0, #0
beq _0203AC80
mov r0, r5
mov r1, #2
bl sub_02056460
cmp r0, #0
movne r0, #0
ldmneia sp!, {r3, r4, r5, pc}
_0203AC80:
ldr r0, _0203AD64 ; =_020AFE5C
ldr r0, [r0, #0x10]
ldrb r0, [r0, #8]
cmp r0, #0
beq _0203ACAC
mov r0, r5
mov r1, #0
bl sub_02056460
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
_0203ACAC:
ldr r0, _0203AD64 ; =_020AFE5C
ldr r0, [r0, #0x10]
ldrb r0, [r0, #8]
cmp r0, #0
beq _0203ACD8
mov r0, r5
mov r1, #1
bl sub_02056460
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
_0203ACD8:
ldr r0, _0203AD64 ; =_020AFE5C
ldr r1, [r0, #0x10]
ldrb r0, [r1, #0xf]
cmp r0, #0
ldrneb r0, [r1, #8]
cmpne r0, #0
beq _0203AD58
mov r0, r5
mov r1, #2
bl sub_02056460
cmp r0, #0
bne _0203AD58
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
_0203AD10:
ldrb r0, [r1, #0xb]
cmp r0, #0
beq _0203AD30
mov r0, r5
bl sub_02056410
cmp r0, #0
movne r0, #0
ldmneia sp!, {r3, r4, r5, pc}
_0203AD30:
ldr r0, _0203AD64 ; =_020AFE5C
ldr r0, [r0, #0x10]
ldrb r0, [r0, #8]
cmp r0, #0
beq _0203AD58
mov r0, r5
bl sub_02056410
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
_0203AD58:
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0203AD60: .word TEAM_MEMBER_TABLE_PTR
_0203AD64: .word _020AFE5C
arm_func_end sub_0203AB3C
arm_func_start sub_0203AD68
sub_0203AD68: ; 0x0203AD68
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
sub sb, sl, #7
mov r6, #0
ldr r5, _0203AF04 ; =TEAM_MEMBER_TABLE_PTR
mov r4, #0x44
ldr fp, _0203AF08 ; =0x0000022B
b _0203AEF4
_0203AD88:
ldr r1, [r5]
mov r0, r6, lsl #0x10
mla r7, r6, r4, r1
mov r0, r0, asr #0x10
bl IsValidTeamMember
cmp r0, #0
beq _0203AEF0
cmp sl, #2
bne _0203ADC4
mov r0, r6, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02056410
cmp r0, #0
beq _0203AEF0
b _0203AEE8
_0203ADC4:
cmp sl, #3
bne _0203ADE4
mov r0, r6, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02056410
cmp r0, #0
bne _0203AEF0
b _0203AEE8
_0203ADE4:
cmp sl, #4
bne _0203AE2C
cmp r6, #5
blt _0203AEF0
mov r0, r6, lsl #0x10
mov r0, r0, asr #0x10
bl sub_02056410
cmp r0, #0
bne _0203AEF0
mov r0, r6, lsl #0x10
mov r0, r0, asr #0x10
bl IsMainCharacter
cmp r0, #0
bne _0203AEF0
ldrsh r0, [r7, #4]
cmp r0, #0x214
bne _0203AEE8
b _0203AEF0
_0203AE2C:
cmp sb, #1
bhi _0203AEE8
mov r8, #0
bl sub_0204E210
cmp r0, #2
bne _0203AE50
bl sub_0204E3C8
cmp r0, #0
movne r8, #1
_0203AE50:
mov r0, r6, lsl #0x10
mov r0, r0, asr #0x10
mov r1, #0
bl sub_02056460
cmp r0, #0
bne _0203AEF0
mov r0, r6, lsl #0x10
mov r0, r0, asr #0x10
mov r1, #1
bl sub_02056460
cmp r0, #0
bne _0203AEF0
cmp r8, #0
beq _0203AEA0
mov r0, r6, lsl #0x10
mov r1, #2
mov r0, r0, asr #0x10
bl sub_02056460
cmp r0, #0
bne _0203AEF0
_0203AEA0:
mov r0, r6, lsl #0x10
mov r0, r0, asr #0x10
bl IsMainCharacter
cmp r0, #0
bne _0203AEF0
ldrsh r0, [r7, #4]
cmp r0, #0x214
beq _0203AEF0
cmp sl, #8
bne _0203AED8
ldrsh r0, [r7, #4]
bl sub_02054F18
cmp r0, #0
bne _0203AEF0
_0203AED8:
ldrsh r0, [r7, #4]
bl IsShaymin
cmp r0, #0
bne _0203AEF0
_0203AEE8:
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0203AEF0:
add r6, r6, #1
_0203AEF4:
cmp r6, fp
blt _0203AD88
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0203AF04: .word TEAM_MEMBER_TABLE_PTR
_0203AF08: .word 0x0000022B
arm_func_end sub_0203AD68
#ifndef JAPAN
arm_func_start sub_0203AF0C
sub_0203AF0C: ; 0x0203AF0C
ldr r0, _0203AF24 ; =_020AFE5C
mvn r1, #0
strh r1, [r0]
mov r1, #0
strh r1, [r0, #2]
bx lr
.align 2, 0
_0203AF24: .word _020AFE5C
arm_func_end sub_0203AF0C
#endif
arm_func_start sub_0203AF28
sub_0203AF28: ; 0x0203AF28
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r1, _0203B738 ; =_020AFE5C
ldr r0, [r1, #0x10]
ldr r2, [r0, #4]
add r0, r0, #0x500
strh r2, [r0, #0xd4]
ldr r0, [r1, #8]
cmp r0, #4
addls pc, pc, r0, lsl #2
b _0203B29C
_0203AF50: ; jump table
b _0203B29C ; case 0
b _0203AF64 ; case 1
b _0203B050 ; case 2
b _0203B114 ; case 3
b _0203B1CC ; case 4
_0203AF64:
ldr r0, _0203B73C ; =_022AADF8
ldrb r8, [r0]
mov r0, r8
bl sub_0203BAEC
cmp r0, #0
mvneq r6, #0
beq _0203B03C
ldr r0, _0203B73C ; =_022AADF8
mov r6, #0
ldr r5, _0203B738 ; =_020AFE5C
mov r1, #1
mov sb, r6
str r1, [r5, #8]
strb r8, [r0]
mov fp, r6
mov sl, #0x44
ldr r4, _0203B740 ; =TEAM_MEMBER_TABLE_PTR
b _0203B02C
_0203AFAC:
add r0, r1, sb, lsl #1
ldrsh r2, [r0, #0x12]
ldr r0, [r4]
mov r1, fp
smulbb r7, r2, sl
add r0, r0, r7
ldrsh r0, [r0, #4]
bl GetType
cmp r8, r0
beq _0203AFF0
ldr r0, [r4]
mov r1, #1
add r0, r0, r7
ldrsh r0, [r0, #4]
bl GetType
cmp r8, r0
bne _0203B020
_0203AFF0:
ldr r0, [r5, #0x10]
add r2, r6, #1
add r1, r0, r6, lsl #1
add r3, r0, sb, lsl #1
ldrsh r0, [r1, #0x12]
ldrsh r3, [r3, #0x12]
mov r2, r2, lsl #0x10
mov r6, r2, asr #0x10
strh r3, [r1, #0x12]
ldr r1, [r5, #0x10]
add r1, r1, sb, lsl #1
strh r0, [r1, #0x12]
_0203B020:
add r0, sb, #1
mov r0, r0, lsl #0x10
mov sb, r0, asr #0x10
_0203B02C:
ldr r1, [r5, #0x10]
ldr r0, [r1, #4]
cmp sb, r0
blt _0203AFAC
_0203B03C:
ldr r0, _0203B738 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x500
strh r6, [r0, #0xd4]
b _0203B29C
_0203B050:
ldr r0, _0203B73C ; =_022AADF8
ldrsh r6, [r0]
mov r0, r6
bl sub_0203BB80
cmp r0, #0
mvneq r5, #0
beq _0203B100
ldr r0, _0203B73C ; =_022AADF8
mov r5, #0
ldr sb, _0203B738 ; =_020AFE5C
mov r1, #2
mov r4, r5
str r1, [sb, #8]
strh r6, [r0]
ldr r8, _0203B740 ; =TEAM_MEMBER_TABLE_PTR
mov r7, #0x44
b _0203B0F0
_0203B094:
add r0, r1, r4, lsl #1
ldrsh r0, [r0, #0x12]
ldr r1, [r8]
smlabb r0, r0, r7, r1
ldrsh r0, [r0, #4]
bl GetDexNumber
cmp r6, r0
bne _0203B0E4
ldr r0, [sb, #0x10]
add r1, r5, #1
add r3, r0, r5, lsl #1
add r2, r0, r4, lsl #1
ldrsh r0, [r3, #0x12]
ldrsh r2, [r2, #0x12]
mov r1, r1, lsl #0x10
mov r5, r1, asr #0x10
strh r2, [r3, #0x12]
ldr r1, [sb, #0x10]
add r1, r1, r4, lsl #1
strh r0, [r1, #0x12]
_0203B0E4:
add r0, r4, #1
mov r0, r0, lsl #0x10
mov r4, r0, asr #0x10
_0203B0F0:
ldr r1, [sb, #0x10]
ldr r0, [r1, #4]
cmp r4, r0
blt _0203B094
_0203B100:
ldr r0, _0203B738 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x500
strh r5, [r0, #0xd4]
b _0203B29C
_0203B114:
ldr r0, _0203B73C ; =_022AADF8
ldrb r4, [r0]
mov r0, r4
bl sub_0203BBEC
cmp r0, #0
mvneq r2, #0
beq _0203B1B8
ldr r0, _0203B73C ; =_022AADF8
mov r2, #0
ldr r6, _0203B738 ; =_020AFE5C
mov r3, #3
str r3, [r6, #8]
mov r1, r2
strb r4, [r0]
ldr r5, _0203B740 ; =TEAM_MEMBER_TABLE_PTR
mov r3, #0x44
b _0203B1A8
_0203B158:
add r0, r7, r1, lsl #1
ldrsh r0, [r0, #0x12]
ldr r7, [r5]
smlabb r7, r0, r3, r7
ldrb r7, [r7, #0x3a]
cmp r4, r7
bne _0203B19C
ldr r8, [r6, #0x10]
add r7, r2, #1
add sb, r8, r2, lsl #1
ldrsh r8, [sb, #0x12]
mov r2, r7, lsl #0x10
mov r2, r2, asr #0x10
strh r0, [sb, #0x12]
ldr r0, [r6, #0x10]
add r0, r0, r1, lsl #1
strh r8, [r0, #0x12]
_0203B19C:
add r0, r1, #1
mov r0, r0, lsl #0x10
mov r1, r0, asr #0x10
_0203B1A8:
ldr r7, [r6, #0x10]
ldr r0, [r7, #4]
cmp r1, r0
blt _0203B158
_0203B1B8:
ldr r0, _0203B738 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x500
strh r2, [r0, #0xd4]
b _0203B29C
_0203B1CC:
ldr r0, _0203B73C ; =_022AADF8
ldrh sb, [r0]
mov r0, sb
bl sub_0203BC50
cmp r0, #0
mvneq r8, #0
beq _0203B28C
ldr r0, _0203B73C ; =_022AADF8
mov r8, #0
ldr r6, _0203B738 ; =_020AFE5C
mov r1, #4
mov r7, r8
str r1, [r6, #8]
strh sb, [r0]
add sl, sp, #0
ldr r5, _0203B740 ; =TEAM_MEMBER_TABLE_PTR
mov r4, #0x44
b _0203B27C
_0203B214:
add r0, r1, r7, lsl #1
ldrsh r0, [r0, #0x12]
ldr r1, [r5]
smlabb r0, r0, r4, r1
ldrsh r0, [r0, #4]
bl GetNameString
str r0, [sp]
mov r0, sl
bl sub_0202065C
cmp sb, r0
bne _0203B270
ldr r0, [r6, #0x10]
add r2, r8, #1
add r1, r0, r8, lsl #1
add r3, r0, r7, lsl #1
ldrsh r0, [r1, #0x12]
ldrsh r3, [r3, #0x12]
mov r2, r2, lsl #0x10
mov r8, r2, asr #0x10
strh r3, [r1, #0x12]
ldr r1, [r6, #0x10]
add r1, r1, r7, lsl #1
strh r0, [r1, #0x12]
_0203B270:
add r0, r7, #1
mov r0, r0, lsl #0x10
mov r7, r0, asr #0x10
_0203B27C:
ldr r1, [r6, #0x10]
ldr r0, [r1, #4]
cmp r7, r0
blt _0203B214
_0203B28C:
ldr r0, _0203B738 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x500
strh r8, [r0, #0xd4]
_0203B29C:
ldr r0, _0203B738 ; =_020AFE5C
mov r8, #0
ldr r2, [r0, #0x10]
add r0, r2, #0x500
ldrsh r1, [r0, #0xd4]
cmp r1, #0
ldrle r1, [r2, #4]
strleh r1, [r0, #0xd4]
mov r1, r8
_0203B2C0:
ldr r0, _0203B740 ; =TEAM_MEMBER_TABLE_PTR
mov r3, r1, lsl #1
ldr r0, [r0]
mvn r2, #0
add r0, r0, #0x9000
ldr r0, [r0, #0x870]
ldrsh r0, [r0, r3]
cmp r0, r2
beq _0203B35C
ldr r2, _0203B738 ; =_020AFE5C
mov r5, #0
ldr r4, [r2, #0x10]
add r2, r4, #0x500
ldrsh r3, [r2, #0xd4]
b _0203B354
_0203B2FC:
add r2, r4, r5, lsl #1
ldrsh r2, [r2, #0x12]
cmp r0, r2
bne _0203B350
sub r5, r5, #1
ldr r2, _0203B738 ; =_020AFE5C
b _0203B32C
_0203B318:
ldr r3, [r2, #0x10]
add r4, r3, r5, lsl #1
ldrsh r3, [r4, #0x12]
sub r5, r5, #1
strh r3, [r4, #0x14]
_0203B32C:
cmp r5, r8
bge _0203B318
ldr r2, _0203B738 ; =_020AFE5C
mov r3, r8, lsl #1
ldr r2, [r2, #0x10]
add r8, r8, #1
add r2, r2, r3
strh r0, [r2, #0x12]
b _0203B35C
_0203B350:
add r5, r5, #1
_0203B354:
cmp r5, r3
blt _0203B2FC
_0203B35C:
add r1, r1, #1
cmp r1, #4
blt _0203B2C0
bl sub_020568A4
bl sub_0203B7AC
cmp r0, r8
addge r8, r8, #1
bl GetMainCharacter3MemberIdx
bl sub_0203B7AC
cmp r0, r8
addge r8, r8, #1
bl GetMainCharacter2MemberIdx
bl sub_0203B7AC
cmp r0, r8
addge r8, r8, #1
bl GetMainCharacter1MemberIdx
bl sub_0203B7AC
cmp r0, r8
ldr r0, _0203B738 ; =_020AFE5C
addge r8, r8, #1
ldr r1, [r0, #0xc]
cmp r1, #4
addls pc, pc, r1, lsl #2
b _0203B714
_0203B3BC: ; jump table
b _0203B714 ; case 0
b _0203B578 ; case 1
b _0203B648 ; case 2
b _0203B3D0 ; case 3
b _0203B4A8 ; case 4
_0203B3D0:
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsh sb, [r0, #0xd4]
cmp r8, sb
bge _0203B714
mov r0, r8, lsl #0x10
mov sl, r0, asr #0x10
b _0203B49C
_0203B3F0:
ldr r0, _0203B738 ; =_020AFE5C
ldr r1, _0203B740 ; =TEAM_MEMBER_TABLE_PTR
ldr r0, [r0, #0x10]
ldr r3, [r1]
add r0, r0, sl, lsl #1
ldrsh r2, [r0, #0x12]
mov r0, #0x44
mov r1, #0
smlabb r0, r2, r0, r3
ldrsh r0, [r0, #4]
bl GetKeyM2NSwitch
mov r1, r8, lsl #0x10
mov r6, r0
mov r7, r1, asr #0x10
ldr r5, _0203B740 ; =TEAM_MEMBER_TABLE_PTR
ldr r4, _0203B738 ; =_020AFE5C
mov fp, #0x44
b _0203B46C
_0203B438:
ldr r0, [r4, #0x10]
ldr r2, [r5]
add r0, r0, r7, lsl #1
ldrsh r0, [r0, #0x12]
mov r1, #0
smlabb r0, r0, fp, r2
ldrsh r0, [r0, #4]
bl GetKeyM2NSwitch
cmp r6, r0
blt _0203B474
add r0, r7, #1
mov r0, r0, lsl #0x10
mov r7, r0, asr #0x10
_0203B46C:
cmp r7, sl
blt _0203B438
_0203B474:
ldr r0, _0203B738 ; =_020AFE5C
mov r1, r7
ldr r0, [r0, #0x10]
mov r2, sl
add r0, r0, sl, lsl #1
ldrsh r0, [r0, #0x12]
bl sub_0203B83C
add r0, sl, #1
mov r0, r0, lsl #0x10
mov sl, r0, asr #0x10
_0203B49C:
cmp sl, sb
blt _0203B3F0
b _0203B714
_0203B4A8:
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsh r7, [r0, #0xd4]
cmp r8, r7
bge _0203B714
mov r0, r8, lsl #0x10
mov sb, r0, asr #0x10
b _0203B56C
_0203B4C8:
ldr r4, _0203B738 ; =_020AFE5C
mov r0, r8, lsl #0x10
ldr r1, [r4, #0x10]
mov r5, r0, asr #0x10
add r0, r1, sb, lsl #1
ldrsh r6, [r0, #0x12]
b _0203B50C
_0203B4E4:
ldr r1, [r4, #0x10]
mov r0, r6
add r1, r1, r5, lsl #1
ldrsh r1, [r1, #0x12]
bl sub_02052FF8
cmp r0, #0
bne _0203B514
add r0, r5, #1
mov r0, r0, lsl #0x10
mov r5, r0, asr #0x10
_0203B50C:
cmp r5, sb
blt _0203B4E4
_0203B514:
ldr r2, _0203B738 ; =_020AFE5C
mov r6, sb
ldr r0, [r2, #0x10]
add r0, r0, sb, lsl #1
ldrsh r0, [r0, #0x12]
b _0203B548
_0203B52C:
ldr r3, [r2, #0x10]
sub r1, r6, #1
add r4, r3, r6, lsl #1
ldrsh r3, [r4, #0x10]
mov r1, r1, lsl #0x10
mov r6, r1, asr #0x10
strh r3, [r4, #0x12]
_0203B548:
cmp r6, r5
bgt _0203B52C
ldr r1, _0203B738 ; =_020AFE5C
add r2, sb, #1
ldr r3, [r1, #0x10]
mov r1, r2, lsl #0x10
add r2, r3, r5, lsl #1
strh r0, [r2, #0x12]
mov sb, r1, asr #0x10
_0203B56C:
cmp sb, r7
blt _0203B4C8
b _0203B714
_0203B578:
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsh sb, [r0, #0xd4]
cmp r8, sb
bge _0203B714
mov r0, r8, lsl #0x10
mov sl, r0, asr #0x10
b _0203B63C
_0203B598:
ldr r0, _0203B738 ; =_020AFE5C
ldr r1, _0203B740 ; =TEAM_MEMBER_TABLE_PTR
ldr r0, [r0, #0x10]
ldr r2, [r1]
add r0, r0, sl, lsl #1
ldrsh r1, [r0, #0x12]
mov r0, #0x44
smlabb r0, r1, r0, r2
ldrsh r0, [r0, #4]
bl FemaleToMaleForm
mov r1, r8, lsl #0x10
mov r7, r0
mov r6, r1, asr #0x10
ldr r5, _0203B740 ; =TEAM_MEMBER_TABLE_PTR
ldr r4, _0203B738 ; =_020AFE5C
mov fp, #0x44
b _0203B60C
_0203B5DC:
ldr r0, [r4, #0x10]
ldr r1, [r5]
add r0, r0, r6, lsl #1
ldrsh r0, [r0, #0x12]
smlabb r0, r0, fp, r1
ldrsh r0, [r0, #4]
bl FemaleToMaleForm
cmp r7, r0
blt _0203B614
add r0, r6, #1
mov r0, r0, lsl #0x10
mov r6, r0, asr #0x10
_0203B60C:
cmp r6, sl
blt _0203B5DC
_0203B614:
ldr r0, _0203B738 ; =_020AFE5C
mov r1, r6
ldr r0, [r0, #0x10]
mov r2, sl
add r0, r0, sl, lsl #1
ldrsh r0, [r0, #0x12]
bl sub_0203B83C
add r0, sl, #1
mov r0, r0, lsl #0x10
mov sl, r0, asr #0x10
_0203B63C:
cmp sl, sb
blt _0203B598
b _0203B714
_0203B648:
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsh sb, [r0, #0xd4]
cmp r8, sb
bge _0203B714
mov r0, r8, lsl #0x10
mov sl, r0, asr #0x10
b _0203B70C
_0203B668:
ldr r0, _0203B738 ; =_020AFE5C
ldr r1, _0203B740 ; =TEAM_MEMBER_TABLE_PTR
ldr r0, [r0, #0x10]
ldr r2, [r1]
add r0, r0, sl, lsl #1
ldrsh r1, [r0, #0x12]
mov r0, #0x44
smlabb r0, r1, r0, r2
ldrb r0, [r0, #1]
bl FemaleToMaleForm
mov r1, r8, lsl #0x10
mov r6, r0
mov r7, r1, asr #0x10
ldr r5, _0203B740 ; =TEAM_MEMBER_TABLE_PTR
ldr r4, _0203B738 ; =_020AFE5C
mov fp, #0x44
b _0203B6DC
_0203B6AC:
ldr r0, [r4, #0x10]
ldr r1, [r5]
add r0, r0, r7, lsl #1
ldrsh r0, [r0, #0x12]
smlabb r0, r0, fp, r1
ldrb r0, [r0, #1]
bl FemaleToMaleForm
cmp r6, r0
bgt _0203B6E4
add r0, r7, #1
mov r0, r0, lsl #0x10
mov r7, r0, asr #0x10
_0203B6DC:
cmp r7, sl
blt _0203B6AC
_0203B6E4:
ldr r0, _0203B738 ; =_020AFE5C
mov r1, r7
ldr r0, [r0, #0x10]
mov r2, sl
add r0, r0, sl, lsl #1
ldrsh r0, [r0, #0x12]
bl sub_0203B83C
add r0, sl, #1
mov r0, r0, lsl #0x10
mov sl, r0, asr #0x10
_0203B70C:
cmp sl, sb
blt _0203B668
_0203B714:
ldr r0, _0203B738 ; =_020AFE5C
mvn r1, #1
ldr r0, [r0, #0x10]
add r0, r0, #0x400
ldrsb r0, [r0, #0x69]
cmp r0, r1
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
bl sub_0202F9B8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0203B738: .word _020AFE5C
_0203B73C: .word _022AADF8
_0203B740: .word TEAM_MEMBER_TABLE_PTR
arm_func_end sub_0203AF28
arm_func_start sub_0203B744
sub_0203B744: ; 0x0203B744
stmdb sp!, {r3, lr}
bl sub_0203AA20
ldr r1, _0203B7A8 ; =_020AFE5C
strh r0, [r1]
bl sub_0203AAB0
ldr r1, _0203B7A8 ; =_020AFE5C
strh r0, [r1, #2]
bl sub_0203AF28
ldr r0, _0203B7A8 ; =_020AFE5C
ldr r1, [r0, #0x10]
add r0, r1, #0x400
add r1, r1, #0x500
ldrsb r0, [r0, #0x68]
ldrsh r1, [r1, #0xd4]
bl sub_0203117C
ldr r0, _0203B7A8 ; =_020AFE5C
ldrsh r0, [r0, #2]
bl sub_0203AAF8
ldr r2, _0203B7A8 ; =_020AFE5C
mov r1, r0
ldr r0, [r2, #0x10]
add r0, r0, #0x400
ldrsb r0, [r0, #0x68]
bl sub_02031220
ldmia sp!, {r3, pc}
.align 2, 0
_0203B7A8: .word _020AFE5C
arm_func_end sub_0203B744
arm_func_start sub_0203B7AC
sub_0203B7AC: ; 0x0203B7AC
stmdb sp!, {r3, lr}
mvn r1, #0
cmp r0, r1
beq _0203B830
ldr r1, _0203B838 ; =_020AFE5C
mov ip, #0
ldr r2, [r1, #0x10]
add r1, r2, #0x500
ldrsh r3, [r1, #0xd4]
b _0203B828
_0203B7D4:
add r1, r2, ip, lsl #1
ldrsh r1, [r1, #0x12]
cmp r0, r1
bne _0203B824
mov lr, ip
sub ip, ip, #1
ldr r1, _0203B838 ; =_020AFE5C
b _0203B808
_0203B7F4:
ldr r2, [r1, #0x10]
add r3, r2, ip, lsl #1
ldrsh r2, [r3, #0x12]
sub ip, ip, #1
strh r2, [r3, #0x14]
_0203B808:
cmp ip, #0
bge _0203B7F4
ldr r1, _0203B838 ; =_020AFE5C
ldr r1, [r1, #0x10]
strh r0, [r1, #0x12]
mov r0, lr
ldmia sp!, {r3, pc}
_0203B824:
add ip, ip, #1
_0203B828:
cmp ip, r3
blt _0203B7D4
_0203B830:
mvn r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_0203B838: .word _020AFE5C
arm_func_end sub_0203B7AC
arm_func_start sub_0203B83C
sub_0203B83C: ; 0x0203B83C
stmdb sp!, {r4, lr}
ldr r3, _0203B880 ; =_020AFE5C
b _0203B864
_0203B848:
ldr r4, [r3, #0x10]
sub ip, r2, #1
add r4, r4, r2, lsl #1
ldrsh lr, [r4, #0x10]
mov r2, ip, lsl #0x10
mov r2, r2, asr #0x10
strh lr, [r4, #0x12]
_0203B864:
cmp r2, r1
bgt _0203B848
ldr r2, _0203B880 ; =_020AFE5C
ldr r2, [r2, #0x10]
add r1, r2, r1, lsl #1
strh r0, [r1, #0x12]
ldmia sp!, {r4, pc}
.align 2, 0
_0203B880: .word _020AFE5C
arm_func_end sub_0203B83C
arm_func_start sub_0203B884
sub_0203B884: ; 0x0203B884
stmdb sp!, {r3, lr}
ldr r0, _0203B918 ; =_020AFE5C
ldr r1, [r0, #0xc]
cmp r1, #4
addls pc, pc, r1, lsl #2
b _0203B8DC
_0203B89C: ; jump table
b _0203B8D4 ; case 0
b _0203B8B0 ; case 1
b _0203B8BC ; case 2
b _0203B8C8 ; case 3
b _0203B8D4 ; case 4
_0203B8B0:
mov r1, #2
str r1, [r0, #0xc]
b _0203B8DC
_0203B8BC:
mov r1, #3
str r1, [r0, #0xc]
b _0203B8DC
_0203B8C8:
mov r1, #4
str r1, [r0, #0xc]
b _0203B8DC
_0203B8D4:
mov r1, #1
str r1, [r0, #0xc]
_0203B8DC:
bl sub_0203B744
ldr r0, _0203B918 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x400
ldrsb r0, [r0, #0x68]
bl sub_0203115C
ldr r0, _0203B918 ; =_020AFE5C
mvn r1, #1
ldr r0, [r0, #0x10]
add r0, r0, #0x400
ldrsb r0, [r0, #0x69]
cmp r0, r1
ldmeqia sp!, {r3, pc}
bl sub_0202F9B8
ldmia sp!, {r3, pc}
.align 2, 0
_0203B918: .word _020AFE5C
arm_func_end sub_0203B884
arm_func_start sub_0203B91C
sub_0203B91C: ; 0x0203B91C
stmdb sp!, {r3, lr}
ldr r0, _0203BA18 ; =_020AFE5C
mvn r1, #1
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #6]
cmp r0, r1
bne _0203B968
ldr r0, _0203BA1C ; =_0209C658
mov ip, #5
ldr r3, _0203BA20 ; =_0209C688
mov r1, #0x13
mov r2, #0
str ip, [sp]
bl CreateSimpleMenuFromStringIds
ldr r1, _0203BA18 ; =_020AFE5C
ldr r1, [r1, #0x10]
strb r0, [r1, #0x506]
ldmia sp!, {r3, pc}
_0203B968:
bl IsSimpleMenuActive
cmp r0, #0
ldmneia sp!, {r3, pc}
ldr r0, _0203BA18 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #6]
bl GetSimpleMenuResult__0202B870
cmp r0, #5
addls pc, pc, r0, lsl #2
b _0203B9E8
_0203B994: ; jump table
b _0203B9AC ; case 0
b _0203B9BC ; case 1
b _0203B9E8 ; case 2
b _0203B9CC ; case 3
b _0203B9DC ; case 4
b _0203B9E8 ; case 5
_0203B9AC:
ldr r0, _0203BA18 ; =_020AFE5C
mov r1, #1
str r1, [r0, #0xc]
b _0203B9E8
_0203B9BC:
ldr r0, _0203BA18 ; =_020AFE5C
mov r1, #2
str r1, [r0, #0xc]
b _0203B9E8
_0203B9CC:
ldr r0, _0203BA18 ; =_020AFE5C
mov r1, #3
str r1, [r0, #0xc]
b _0203B9E8
_0203B9DC:
ldr r0, _0203BA18 ; =_020AFE5C
mov r1, #4
str r1, [r0, #0xc]
_0203B9E8:
ldr r0, _0203BA18 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #6]
bl CloseSimpleMenu
ldr r0, _0203BA18 ; =_020AFE5C
mvn r1, #1
ldr r0, [r0, #0x10]
strb r1, [r0, #0x506]
bl sub_0203B744
bl sub_0203A6BC
ldmia sp!, {r3, pc}
.align 2, 0
_0203BA18: .word _020AFE5C
_0203BA1C: .word _0209C658
_0203BA20: .word _0209C688
arm_func_end sub_0203B91C
arm_func_start sub_0203BA24
sub_0203BA24: ; 0x0203BA24
stmdb sp!, {r4, lr}
sub sp, sp, #0x58
ldr r4, _0203BA78 ; =_0209C70C
add lr, sp, #0
mov ip, #5
_0203BA38:
ldmia r4!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _0203BA38
ldr r2, _0203BA7C ; =_020AFE5C
ldmia r4, {r0, r1}
stmia lr, {r0, r1}
ldr r0, [r2, #0x10]
ldr r1, [r0, #0x508]
cmp r1, #0x16
bge _0203BA70
add r0, sp, #0
ldr r0, [r0, r1, lsl #2]
blx r0
_0203BA70:
add sp, sp, #0x58
ldmia sp!, {r4, pc}
.align 2, 0
_0203BA78: .word _0209C70C
_0203BA7C: .word _020AFE5C
arm_func_end sub_0203BA24
arm_func_start sub_0203BA80
sub_0203BA80: ; 0x0203BA80
stmdb sp!, {r3, lr}
ldr r0, _0203BABC ; =_020AFE5C
mvn r1, #1
ldr r0, [r0, #0x10]
add r0, r0, #0x400
ldrsb r0, [r0, #0x68]
cmp r0, r1
ldmeqia sp!, {r3, pc}
bl sub_020311D4
ldr r1, _0203BABC ; =_020AFE5C
ldr r1, [r1, #0x10]
add r0, r1, r0, lsl #1
ldrsh r0, [r0, #0x12]
bl sub_0203C9A0
ldmia sp!, {r3, pc}
.align 2, 0
_0203BABC: .word _020AFE5C
arm_func_end sub_0203BA80
arm_func_start sub_0203BAC0
sub_0203BAC0: ; 0x0203BAC0
cmp r1, #0
blt _0203BAD0
cmp r1, #0x11
blt _0203BAD8
_0203BAD0:
mov r1, #0
b _0203BADC
_0203BAD8:
add r1, r1, #1
_0203BADC:
ldr ip, _0203BAE8 ; =sub_02024B94
and r1, r1, #0xff
bx ip
.align 2, 0
_0203BAE8: .word sub_02024B94
arm_func_end sub_0203BAC0
arm_func_start sub_0203BAEC
sub_0203BAEC: ; 0x0203BAEC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov r8, #0
mov sl, r0
mov r7, r8
mov fp, #1
mov r4, #0x44
ldr r6, _0203BB78 ; =TEAM_MEMBER_TABLE_PTR
ldr r5, _0203BB7C ; =_020AFE5C
b _0203BB60
_0203BB10:
add r0, r1, r8, lsl #1
ldrsh r2, [r0, #0x12]
ldr r0, [r6]
mov r1, r7
smulbb sb, r2, r4
add r0, r0, sb
ldrsh r0, [r0, #4]
bl GetType
cmp sl, r0
beq _0203BB54
ldr r0, [r6]
mov r1, fp
add r0, r0, sb
ldrsh r0, [r0, #4]
bl GetType
cmp sl, r0
bne _0203BB5C
_0203BB54:
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0203BB5C:
add r8, r8, #1
_0203BB60:
ldr r1, [r5, #0x10]
ldr r0, [r1, #4]
cmp r8, r0
blt _0203BB10
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0203BB78: .word TEAM_MEMBER_TABLE_PTR
_0203BB7C: .word _020AFE5C
arm_func_end sub_0203BAEC
arm_func_start sub_0203BB80
sub_0203BB80: ; 0x0203BB80
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r5, r0
mov r4, #0
ldr r8, _0203BBE4 ; =TEAM_MEMBER_TABLE_PTR
mov r6, #0x44
ldr r7, _0203BBE8 ; =_020AFE5C
b _0203BBCC
_0203BB9C:
add r0, r1, r4, lsl #1
ldrsh r0, [r0, #0x12]
ldr r1, [r8]
smlabb r0, r0, r6, r1
ldrsh r0, [r0, #4]
bl GetDexNumber
cmp r5, r0
moveq r0, #1
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
add r0, r4, #1
mov r0, r0, lsl #0x10
mov r4, r0, asr #0x10
_0203BBCC:
ldr r1, [r7, #0x10]
ldr r0, [r1, #4]
cmp r4, r0
blt _0203BB9C
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_0203BBE4: .word TEAM_MEMBER_TABLE_PTR
_0203BBE8: .word _020AFE5C
arm_func_end sub_0203BB80
arm_func_start sub_0203BBEC
sub_0203BBEC: ; 0x0203BBEC
stmdb sp!, {r4, lr}
ldr r1, _0203BC48 ; =_020AFE5C
ldr r2, _0203BC4C ; =TEAM_MEMBER_TABLE_PTR
ldr lr, [r1, #0x10]
ldr ip, [r2]
ldr r4, [lr, #4]
mov r3, #0
mov r2, #0x44
b _0203BC38
_0203BC10:
add r1, lr, r3, lsl #1
ldrsh r1, [r1, #0x12]
smlabb r1, r1, r2, ip
ldrb r1, [r1, #0x3a]
cmp r0, r1
moveq r0, #1
ldmeqia sp!, {r4, pc}
add r1, r3, #1
mov r1, r1, lsl #0x10
mov r3, r1, asr #0x10
_0203BC38:
cmp r3, r4
blt _0203BC10
mov r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
_0203BC48: .word _020AFE5C
_0203BC4C: .word TEAM_MEMBER_TABLE_PTR
arm_func_end sub_0203BBEC
arm_func_start sub_0203BC50
sub_0203BC50: ; 0x0203BC50
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r6, r0
mov r5, #0
add r4, sp, #0
ldr sb, _0203BCC4 ; =TEAM_MEMBER_TABLE_PTR
mov r7, #0x44
ldr r8, _0203BCC8 ; =_020AFE5C
b _0203BCAC
_0203BC70:
add r0, r1, r5, lsl #1
ldrsh r0, [r0, #0x12]
ldr r1, [sb]
smlabb r0, r0, r7, r1
ldrsh r0, [r0, #4]
bl GetNameString
str r0, [sp]
mov r0, r4
bl sub_0202065C
cmp r6, r0
moveq r0, #1
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
add r0, r5, #1
mov r0, r0, lsl #0x10
mov r5, r0, asr #0x10
_0203BCAC:
ldr r1, [r8, #0x10]
ldr r0, [r1, #4]
cmp r5, r0
blt _0203BC70
mov r0, #0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0203BCC4: .word TEAM_MEMBER_TABLE_PTR
_0203BCC8: .word _020AFE5C
arm_func_end sub_0203BC50
arm_func_start sub_0203BCCC
sub_0203BCCC: ; 0x0203BCCC
ldr r0, _0203BCE4 ; =_020AFE5C
ldr ip, _0203BCE8 ; =sub_02039B0C
ldr r0, [r0, #0x10]
add r0, r0, #0x1a8
add r0, r0, #0x400
bx ip
.align 2, 0
_0203BCE4: .word _020AFE5C
_0203BCE8: .word sub_02039B0C
arm_func_end sub_0203BCCC
arm_func_start sub_0203BCEC
sub_0203BCEC: ; 0x0203BCEC
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r0, _0203BE0C ; =_020AFE5C
mvn r1, #1
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #7]
cmp r0, r1
bne _0203BD3C
ldr r0, _0203BE10 ; =_0209C678
mov ip, #6
ldr r3, _0203BE14 ; =_0209C6B8
mov r1, #0x13
mov r2, #0
str ip, [sp]
bl CreateSimpleMenuFromStringIds
ldr r1, _0203BE0C ; =_020AFE5C
ldr r1, [r1, #0x10]
strb r0, [r1, #0x507]
b _0203BE04
_0203BD3C:
bl IsSimpleMenuActive
cmp r0, #0
bne _0203BE04
ldr r0, _0203BE0C ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #7]
bl GetSimpleMenuResult__0202B870
ldr r1, _0203BE0C ; =_020AFE5C
mov r0, r0, lsl #0x10
ldr r1, [r1, #0x10]
mov r4, r0, asr #0x10
add r0, r1, #0x500
ldrsb r0, [r0, #7]
bl CloseSimpleMenu
ldr r0, _0203BE0C ; =_020AFE5C
mvn r2, #1
ldr r1, [r0, #0x10]
cmp r4, #6
strb r2, [r1, #0x507]
addls pc, pc, r4, lsl #2
b _0203BE00
_0203BD94: ; jump table
b _0203BDB0 ; case 0
b _0203BE00 ; case 1
b _0203BDC0 ; case 2
b _0203BDD0 ; case 3
b _0203BDE0 ; case 4
b _0203BE00 ; case 5
b _0203BDF0 ; case 6
_0203BDB0:
ldr r0, [r0, #0x10]
mov r1, #7
str r1, [r0, #0x508]
b _0203BE04
_0203BDC0:
ldr r0, [r0, #0x10]
mov r1, #1
str r1, [r0, #0x508]
b _0203BE04
_0203BDD0:
ldr r0, [r0, #0x10]
mov r1, #0xa
str r1, [r0, #0x508]
b _0203BE04
_0203BDE0:
ldr r0, [r0, #0x10]
mov r1, #0xf
str r1, [r0, #0x508]
b _0203BE04
_0203BDF0:
ldr r0, [r0, #0x10]
mov r1, #0x14
str r1, [r0, #0x508]
b _0203BE04
_0203BE00:
bl sub_0203A6BC
_0203BE04:
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
_0203BE0C: .word _020AFE5C
_0203BE10: .word _0209C678
_0203BE14: .word _0209C6B8
arm_func_end sub_0203BCEC
arm_func_start sub_0203BE18
sub_0203BE18: ; 0x0203BE18
stmdb sp!, {r3, lr}
sub sp, sp, #8
ldr r3, _0203BECC ; =_020AFE5C
mvn r2, #1
ldr r0, [r3, #0x10]
add r1, r0, #0x500
ldrsb r0, [r1, #7]
cmp r0, r2
bne _0203BE94
#ifdef JAPAN
ldr r0, _0203C2B0 ; =0x000023B0
mov r2, #0x10
strh r0, [r1, #0x18]
ldr r1, [r3, #0x10]
mov r0, #0x11
str r2, [r1, #0x51c]
#else
mov r0, #0x308
strh r0, [r1, #0x18]
ldr r0, [r3, #0x10]
mov r1, #0x10
str r1, [r0, #0x51c]
mov r0, #0x11
#endif
str r0, [sp]
mov r0, #8
str r0, [sp, #4]
ldr r2, [r3, #0x10]
ldr r0, _0203BED0 ; =_0209C618
ldr r1, _0203BED4 ; =0x00001833
ldr r3, _0203BED8 ; =sub_0203BAC0
add r2, r2, #0x510
bl CreateAdvancedMenu
ldr r1, _0203BECC ; =_020AFE5C
mov r2, #2
ldr r3, [r1, #0x10]
strb r0, [r3, #0x50c]
ldr r0, [r1, #0x10]
str r2, [r0, #0x508]
b _0203BEC4
_0203BE94:
bl IsSimpleMenuActive
cmp r0, #0
bne _0203BEC4
ldr r0, _0203BECC ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #7]
bl CloseSimpleMenu
ldr r0, _0203BECC ; =_020AFE5C
mvn r1, #1
ldr r0, [r0, #0x10]
strb r1, [r0, #0x507]
_0203BEC4:
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
_0203BECC: .word _020AFE5C
#ifdef JAPAN
_0203C2B0: .word 0x000023B0
#endif
_0203BED0: .word _0209C618
_0203BED4: .word 0x00001833
_0203BED8: .word sub_0203BAC0
arm_func_end sub_0203BE18
arm_func_start sub_0203BEDC
sub_0203BEDC: ; 0x0203BEDC
stmdb sp!, {r3, lr}
ldr r0, _0203BF0C ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #0xc]
bl IsAdvancedMenuActive2
cmp r0, #0
ldreq r0, _0203BF0C ; =_020AFE5C
moveq r1, #3
ldreq r0, [r0, #0x10]
streq r1, [r0, #0x508]
ldmia sp!, {r3, pc}
.align 2, 0
_0203BF0C: .word _020AFE5C
arm_func_end sub_0203BEDC
arm_func_start sub_0203BF10
sub_0203BF10: ; 0x0203BF10
stmdb sp!, {r4, lr}
ldr r0, _0203C028 ; =_020AFE5C
mvn r1, #1
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #0xc]
cmp r0, r1
bne _0203BF48
bl sub_0203A6BC
ldr r0, _0203C028 ; =_020AFE5C
mov r1, #0
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
ldmia sp!, {r4, pc}
_0203BF48:
bl IsAdvancedMenuActive2
cmp r0, #0
ldmneia sp!, {r4, pc}
ldr r0, _0203C028 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #0xc]
bl GetAdvancedMenuResult
and r0, r0, #0xff
add r0, r0, #1
and r4, r0, #0xff
cmp r4, #1
blo _0203BFEC
cmp r4, #0x12
bhs _0203BFEC
mov r0, r4
bl sub_0203BAEC
cmp r0, #0
bne _0203BFBC
ldr r0, _0203C028 ; =_020AFE5C
mov r1, #0
str r1, [r0, #8]
bl sub_0203B744
bl sub_0203A658
ldr r0, _0203C028 ; =_020AFE5C
mov r1, #4
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
b _0203C000
_0203BFBC:
ldr r0, _0203C02C ; =_022AADF8
ldr r1, _0203C028 ; =_020AFE5C
mov r2, #1
str r2, [r1, #8]
strb r4, [r0]
bl sub_0203B744
bl sub_0203A6BC
ldr r0, _0203C028 ; =_020AFE5C
mov r1, #0
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
b _0203C000
_0203BFEC:
bl sub_0203A6BC
ldr r0, _0203C028 ; =_020AFE5C
mov r1, #0
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
_0203C000:
ldr r0, _0203C028 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #0xc]
bl CloseAdvancedMenu
ldr r0, _0203C028 ; =_020AFE5C
mvn r1, #1
ldr r0, [r0, #0x10]
strb r1, [r0, #0x50c]
ldmia sp!, {r4, pc}
.align 2, 0
_0203C028: .word _020AFE5C
_0203C02C: .word _022AADF8
arm_func_end sub_0203BF10
arm_func_start sub_0203C030
sub_0203C030: ; 0x0203C030
stmdb sp!, {r3, lr}
ldr r0, _0203C078 ; =_0209C648
bl CreateDialogueBox
ldr r3, _0203C07C ; =_020AFE5C
ldr r1, _0203C080 ; =0x00000418
ldr ip, [r3, #0x10]
ldr r2, _0203C084 ; =0x0000030B
strb r0, [ip, #0x505]
ldr r0, [r3, #0x10]
mov r3, #0
add r0, r0, #0x500
ldrsb r0, [r0, #5]
bl ShowStringIdInDialogueBox
ldr r0, _0203C07C ; =_020AFE5C
mov r1, #5
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
ldmia sp!, {r3, pc}
.align 2, 0
_0203C078: .word _0209C648
_0203C07C: .word _020AFE5C
_0203C080: .word 0x00000418
#ifdef JAPAN
_0203C084: .word 0x000023B3
#else
_0203C084: .word 0x0000030B
#endif
arm_func_end sub_0203C030
arm_func_start sub_0203C088
sub_0203C088: ; 0x0203C088
stmdb sp!, {r3, lr}
ldr r0, _0203C0D0 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #5]
bl IsDialogueBoxActive
cmp r0, #0
ldmneia sp!, {r3, pc}
ldr r0, _0203C0D0 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #5]
bl sub_0202F2C4
ldr r0, _0203C0D0 ; =_020AFE5C
mov r1, #6
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
ldmia sp!, {r3, pc}
.align 2, 0
_0203C0D0: .word _020AFE5C
arm_func_end sub_0203C088
arm_func_start sub_0203C0D4
sub_0203C0D4: ; 0x0203C0D4
stmdb sp!, {r3, lr}
ldr r0, _0203C120 ; =_020AFE5C
mvn r1, #1
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #5]
cmp r0, r1
ldmeqia sp!, {r3, pc}
bl CloseDialogueBox
ldr r0, _0203C120 ; =_020AFE5C
mvn r1, #1
ldr r0, [r0, #0x10]
strb r1, [r0, #0x505]
bl sub_0203A6BC
ldr r0, _0203C120 ; =_020AFE5C
mov r1, #0
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
ldmia sp!, {r3, pc}
.align 2, 0
_0203C120: .word _020AFE5C
arm_func_end sub_0203C0D4
arm_func_start sub_0203C124
sub_0203C124: ; 0x0203C124
stmdb sp!, {r3, lr}
sub sp, sp, #8
ldr r1, _0203C1E8 ; =_020AFE5C
#ifdef JAPAN
mov r3, #0x1ec
ldr r0, [r1, #0x10]
mov lr, #1
str lr, [r0, #0x5ac]
ldr r0, [r1, #0x10]
mov r2, #3
#else
mov lr, #1
ldr r0, [r1, #0x10]
mov r2, #3
str lr, [r0, #0x5ac]
ldr r0, [r1, #0x10]
mov r3, #0x1ec
#endif
str r2, [r0, #0x5b8]
ldr r0, [r1, #0x10]
mov ip, #0x50
str lr, [r0, #0x5b0]
ldr r0, [r1, #0x10]
mov r2, #0x16
str r3, [r0, #0x5b4]
ldr r0, [r1, #0x10]
#ifdef JAPAN
add r3, r3, #0x21c0
#else
mov r3, #0x304
#endif
str ip, [r0, #0x5c8]
ldr r0, [r1, #0x10]
mov ip, #0x10
str r2, [r0, #0x5cc]
ldr r0, [r1, #0x10]
mov r2, #0
add r0, r0, #0x500
strh r3, [r0, #0xe0]
ldr r3, [r1, #0x10]
ldr r0, _0203C1EC ; =_0209C628
str ip, [r3, #0x5e4]
str r2, [sp]
str r2, [sp, #4]
ldr r2, [r1, #0x10]
ldr r1, _0203C1F0 ; =0x00401807
add r2, r2, #0x1d8
ldr r3, _0203C1F4 ; =sub_0203BCCC
add r2, r2, #0x400
bl CreateAdvancedTextBox
ldr r1, _0203C1E8 ; =_020AFE5C
mov r2, #8
ldr r3, [r1, #0x10]
strb r0, [r3, #0x5bc]
ldr r0, [r1, #0x10]
str r2, [r0, #0x508]
ldr r0, [r1, #0x10]
add r0, r0, #0x1a8
add r0, r0, #0x400
bl sub_020395CC
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
_0203C1E8: .word _020AFE5C
_0203C1EC: .word _0209C628
_0203C1F0: .word 0x00401807
_0203C1F4: .word sub_0203BCCC
arm_func_end sub_0203C124
arm_func_start sub_0203C1F8
sub_0203C1F8: ; 0x0203C1F8
stmdb sp!, {r3, lr}
ldr r0, _0203C324 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x1a8
add r0, r0, #0x400
bl sub_020396E4
cmp r0, #3
addls pc, pc, r0, lsl #2
ldmia sp!, {r3, pc}
_0203C21C: ; jump table
ldmia sp!, {r3, pc} ; case 0
b _0203C22C ; case 1
b _0203C2F4 ; case 2
b _0203C244 ; case 3
_0203C22C:
ldr r0, _0203C324 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #0xbc]
bl SetAdvancedTextBoxField0x1C2
ldmia sp!, {r3, pc}
_0203C244:
mov r0, #0
bl PlaySeVolumeWrapper
ldr r0, _0203C324 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #0xbc]
bl SetAdvancedTextBoxState5
ldr r0, _0203C324 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #0xbc]
bl CloseAdvancedTextBox
ldr r0, _0203C324 ; =_020AFE5C
ldr r0, [r0, #0x10]
ldr r0, [r0, #0x5a8]
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl sub_0203BB80
cmp r0, #0
bne _0203C2BC
ldr r0, _0203C324 ; =_020AFE5C
mov r1, #0
str r1, [r0, #8]
bl sub_0203B744
bl sub_0203A658
ldr r0, _0203C324 ; =_020AFE5C
mov r1, #4
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
ldmia sp!, {r3, pc}
_0203C2BC:
ldr r0, _0203C324 ; =_020AFE5C
mov r1, #2
str r1, [r0, #8]
ldr r1, [r0, #0x10]
ldr r0, _0203C328 ; =_022AADF8
ldr r1, [r1, #0x5a8]
strh r1, [r0]
bl sub_0203B744
bl sub_0203A6BC
ldr r0, _0203C324 ; =_020AFE5C
mov r1, #0
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
ldmia sp!, {r3, pc}
_0203C2F4:
mov r0, #1
bl PlaySeVolumeWrapper
ldr r0, _0203C324 ; =_020AFE5C
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #0xbc]
bl SetAdvancedTextBoxState5
ldr r0, _0203C324 ; =_020AFE5C
mov r1, #9
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
ldmia sp!, {r3, pc}
.align 2, 0
_0203C324: .word _020AFE5C
_0203C328: .word _022AADF8
arm_func_end sub_0203C1F8
arm_func_start sub_0203C32C
sub_0203C32C: ; 0x0203C32C
stmdb sp!, {r3, lr}
ldr r0, _0203C378 ; =_020AFE5C
mvn r1, #1
ldr r0, [r0, #0x10]
add r0, r0, #0x500
ldrsb r0, [r0, #0xbc]
cmp r0, r1
ldmeqia sp!, {r3, pc}
bl CloseAdvancedTextBox
ldr r0, _0203C378 ; =_020AFE5C
mvn r1, #1
ldr r0, [r0, #0x10]
strb r1, [r0, #0x5bc]
bl sub_0203A6BC
ldr r0, _0203C378 ; =_020AFE5C
mov r1, #0
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
ldmia sp!, {r3, pc}
.align 2, 0
_0203C378: .word _020AFE5C
arm_func_end sub_0203C32C
arm_func_start sub_0203C37C
sub_0203C37C: ; 0x0203C37C
stmdb sp!, {r3, lr}
bl sub_0203A658
ldr r1, _0203C3A8 ; =_020AFE5C
mov r3, #0xa
ldr r0, [r1, #0x10]
mov r2, #0xb
add r0, r0, #0x800
strh r3, [r0, #0x9e]
ldr r0, [r1, #0x10]
str r2, [r0, #0x508]
ldmia sp!, {r3, pc}
.align 2, 0
_0203C3A8: .word _020AFE5C
arm_func_end sub_0203C37C
arm_func_start sub_0203C3AC
sub_0203C3AC: ; 0x0203C3AC
stmdb sp!, {r3, lr}
ldr r1, _0203C404 ; =_020AFE5C
ldr r0, [r1, #0x10]
add r0, r0, #0x800
ldrsh r2, [r0, #0x9e]
sub r2, r2, #1
strh r2, [r0, #0x9e]
ldr r0, [r1, #0x10]
add r0, r0, #0x800
ldrsh r0, [r0, #0x9e]
cmp r0, #0
ldmneia sp!, {r3, pc}
mov r1, #0
mov r2, r1
mov r3, r1
mov r0, #9
bl ShowKeyboard
ldr r0, _0203C404 ; =_020AFE5C
mov r1, #0xc
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
ldmia sp!, {r3, pc}
.align 2, 0
_0203C404: .word _020AFE5C
arm_func_end sub_0203C3AC
arm_func_start sub_0203C408
sub_0203C408: ; 0x0203C408
stmdb sp!, {r4, lr}
bl GetKeyboardStatus
cmp r0, #3
bne _0203C484
bl GetKeyboardStringResult
ldrb r0, [r0]
bl sub_020251F0
mov r4, r0
bl sub_0203BC50
cmp r0, #0
bne _0203C458
ldr r0, _0203C4B0 ; =_020AFE5C
mov r1, #0
str r1, [r0, #8]
bl sub_0203B744
ldr r0, _0203C4B0 ; =_020AFE5C
mov r1, #0x15
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
ldmia sp!, {r4, pc}
_0203C458:
ldr r0, _0203C4B4 ; =_022AADF8
ldr r1, _0203C4B0 ; =_020AFE5C
mov r2, #4
str r2, [r1, #8]
strh r4, [r0]
bl sub_0203B744
ldr r0, _0203C4B0 ; =_020AFE5C
mov r1, #0xd
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
ldmia sp!, {r4, pc}
_0203C484:
cmp r0, #2
ldmneia sp!, {r4, pc}
ldr r0, _0203C4B0 ; =_020AFE5C
mov r1, #0
str r1, [r0, #8]
bl sub_0203B744
ldr r0, _0203C4B0 ; =_020AFE5C
mov r1, #0xd
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
ldmia sp!, {r4, pc}
.align 2, 0
_0203C4B0: .word _020AFE5C
_0203C4B4: .word _022AADF8
arm_func_end sub_0203C408
arm_func_start sub_0203C4B8
sub_0203C4B8: ; 0x0203C4B8
stmdb sp!, {r3, lr}
bl sub_02037468
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldr r1, _0203C4EC ; =_020AFE5C
mov r3, #0xa
ldr r0, [r1, #0x10]
mov r2, #0xe
add r0, r0, #0x800
strh r3, [r0, #0x9e]
ldr r0, [r1, #0x10]
str r2, [r0, #0x508]
ldmia sp!, {r3, pc}
.align 2, 0
_0203C4EC: .word _020AFE5C
arm_func_end sub_0203C4B8
arm_func_start sub_0203C4F0
sub_0203C4F0: ; 0x0203C4F0
stmdb sp!, {r3, lr}
ldr r1, _0203C538 ; =_020AFE5C
ldr r0, [r1, #0x10]
add r0, r0, #0x800
ldrsh r2, [r0, #0x9e]
sub r2, r2, #1
strh r2, [r0, #0x9e]
ldr r0, [r1, #0x10]
add r0, r0, #0x800
ldrsh r0, [r0, #0x9e]
cmp r0, #0
ldmneia sp!, {r3, pc}
bl sub_0203A6BC
ldr r0, _0203C538 ; =_020AFE5C
mov r1, #0
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
ldmia sp!, {r3, pc}
.align 2, 0
_0203C538: .word _020AFE5C
arm_func_end sub_0203C4F0
arm_func_start sub_0203C53C
sub_0203C53C: ; 0x0203C53C
stmdb sp!, {r3, lr}
bl sub_0203A658
ldr r1, _0203C568 ; =_020AFE5C
mov r3, #0xa
ldr r0, [r1, #0x10]
mov r2, #0x10
add r0, r0, #0x800
strh r3, [r0, #0x9e]
ldr r0, [r1, #0x10]
str r2, [r0, #0x508]
ldmia sp!, {r3, pc}
.align 2, 0
_0203C568: .word _020AFE5C
arm_func_end sub_0203C53C
arm_func_start sub_0203C56C
sub_0203C56C: ; 0x0203C56C
stmdb sp!, {r3, lr}
ldr r1, _0203C5C4 ; =_020AFE5C
ldr r0, [r1, #0x10]
add r0, r0, #0x800
ldrsh r2, [r0, #0x9e]
sub r2, r2, #1
strh r2, [r0, #0x9e]
ldr r0, [r1, #0x10]
add r0, r0, #0x800
ldrsh r0, [r0, #0x9e]
cmp r0, #0
ldmneia sp!, {r3, pc}
mov r1, #0
mov r2, r1
mov r3, r1
mov r0, #4
bl ShowKeyboard
ldr r0, _0203C5C4 ; =_020AFE5C
mov r1, #0x11
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
ldmia sp!, {r3, pc}
.align 2, 0
_0203C5C4: .word _020AFE5C
arm_func_end sub_0203C56C
arm_func_start sub_0203C5C8
sub_0203C5C8: ; 0x0203C5C8
stmdb sp!, {r3, lr}
sub sp, sp, #0x40
bl GetKeyboardStatus
cmp r0, #3
bne _0203C650
bl GetKeyboardStringResult
mov r1, r0
add r0, sp, #0
bl StrcpySimple
ldrb r0, [sp]
bl sub_0203BBEC
cmp r0, #0
bne _0203C620
ldr r0, _0203C680 ; =_020AFE5C
mov r1, #0
str r1, [r0, #8]
bl sub_0203B744
ldr r0, _0203C680 ; =_020AFE5C
mov r1, #0x15
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
b _0203C678
_0203C620:
ldrb r2, [sp]
ldr r0, _0203C684 ; =_022AADF8
ldr r1, _0203C680 ; =_020AFE5C
mov r3, #3
str r3, [r1, #8]
strb r2, [r0]
bl sub_0203B744
ldr r0, _0203C680 ; =_020AFE5C
mov r1, #0x12
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
b _0203C678
_0203C650:
cmp r0, #2
bne _0203C678
ldr r0, _0203C680 ; =_020AFE5C
mov r1, #0
str r1, [r0, #8]
bl sub_0203B744
ldr r0, _0203C680 ; =_020AFE5C
mov r1, #0x12
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
_0203C678:
add sp, sp, #0x40
ldmia sp!, {r3, pc}
.align 2, 0
_0203C680: .word _020AFE5C
_0203C684: .word _022AADF8
arm_func_end sub_0203C5C8
arm_func_start sub_0203C688
sub_0203C688: ; 0x0203C688
stmdb sp!, {r3, lr}
bl sub_02037468
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldr r1, _0203C6BC ; =_020AFE5C
mov r3, #0xa
ldr r0, [r1, #0x10]
mov r2, #0x13
add r0, r0, #0x800
strh r3, [r0, #0x9e]
ldr r0, [r1, #0x10]
str r2, [r0, #0x508]
ldmia sp!, {r3, pc}
.align 2, 0
_0203C6BC: .word _020AFE5C
arm_func_end sub_0203C688
arm_func_start sub_0203C6C0
sub_0203C6C0: ; 0x0203C6C0
stmdb sp!, {r3, lr}
ldr r1, _0203C708 ; =_020AFE5C
ldr r0, [r1, #0x10]
add r0, r0, #0x800
ldrsh r2, [r0, #0x9e]
sub r2, r2, #1
strh r2, [r0, #0x9e]
ldr r0, [r1, #0x10]
add r0, r0, #0x800
ldrsh r0, [r0, #0x9e]
cmp r0, #0
ldmneia sp!, {r3, pc}
bl sub_0203A6BC
ldr r0, _0203C708 ; =_020AFE5C
mov r1, #0
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
ldmia sp!, {r3, pc}
.align 2, 0
_0203C708: .word _020AFE5C
arm_func_end sub_0203C6C0
arm_func_start sub_0203C70C
sub_0203C70C: ; 0x0203C70C
stmdb sp!, {r3, lr}
ldr r0, _0203C738 ; =_020AFE5C
mov r1, #0
str r1, [r0, #8]
bl sub_0203B744
bl sub_0203A6BC
ldr r0, _0203C738 ; =_020AFE5C
mov r1, #0
ldr r0, [r0, #0x10]
str r1, [r0, #0x508]
ldmia sp!, {r3, pc}
.align 2, 0
_0203C738: .word _020AFE5C
arm_func_end sub_0203C70C
arm_func_start sub_0203C73C
sub_0203C73C: ; 0x0203C73C
stmdb sp!, {r3, lr}
bl sub_02037468
cmp r0, #0
ldrne r0, _0203C75C ; =_020AFE5C
movne r1, #4
ldrne r0, [r0, #0x10]
strne r1, [r0, #0x508]
ldmia sp!, {r3, pc}
.align 2, 0
_0203C75C: .word _020AFE5C
arm_func_end sub_0203C73C