pmd-sky/asm/main_0202676C.s
2025-12-22 06:51:47 +00:00

18043 lines
323 KiB
ArmAsm

.include "asm/macros.inc"
.include "main_0202676C.inc"
.text
arm_func_start DrawChar
DrawChar: ; 0x0202676C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
#ifdef JAPAN
sub sp, sp, #0x34
mov fp, r1
ldr r1, [sp, #0x58]
str r0, [sp, #4]
mov sl, r2
mov r5, r3
str r1, [sp, #0x58]
bl GetWindow
ldr r1, _02026EA0 ; =_020AFD04
mov r4, r0
ldr r0, [r1, #4]
cmp r0, #2
blt _0202689C
ldr r0, [sp, #4]
mov r4, #1
mov r1, fp
mov r2, sl
mov r3, r5
str r4, [sp]
bl sub_02026C68
b _02026E98
_0202689C:
mov r0, r5
bl sub_02025C7C
ldr r1, _02026EA4 ; =_022A92B4_JP
str r0, [sp, #0x1c]
ldrb r1, [r1]
ldr sb, [r0]
cmp r1, #0
beq _020268D8
ldrb r0, [r0, #0xa]
tst r0, #2
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
str r0, [sp, #8]
b _020268E0
_020268D8:
mov r0, #0
str r0, [sp, #8]
_020268E0:
ldr r0, [sp, #0x1c]
ldrb r0, [r0, #0xa]
tst r0, #1
beq _02026B70
ldr r0, [sp, #4]
bl sub_0202760C
ldr r1, _02026EA0 ; =_020AFD04
mov r0, r0, lsl #1
ldr r2, _02026EA8 ; =_022A92B8_JP
ldr r1, [r1, #4]
str r0, [sp, #0x14]
ldr r5, [r2, r1, lsl #2]
b _02026920
_02026914:
add sb, sb, #6
add sl, sl, #1
sub r5, r5, #1
_02026920:
cmp sl, #0
blt _02026914
ldrb r1, [r4, #7]
add r0, sl, r5
cmp r0, r1, lsl #3
mov r0, fp, asr #2
add r7, fp, r0, lsr #29
ldr r0, [sp, #4]
rsbge r5, sl, r1, lsl #3
mov r6, r7, asr #3
#ifdef JAPAN
bl sub_0202796C_JP
#else
bl sub_02027624
#endif
mov r1, sl, asr #2
add r1, sl, r1, lsr #29
ldrb r3, [r4, #6]
mov r1, r1, asr #3
mov r2, sl, lsr #0x1f
mul r3, r1, r3
rsb r1, r2, sl, lsl #29
add r8, r3, r7, asr #3
mov r7, fp, lsr #0x1f
add r2, r2, r1, ror #29
mov r1, r8, lsl #4
add r8, r1, r2, lsl #1
rsb r3, r7, fp, lsl #29
add r1, r7, r3, ror #29
add r3, r0, r8, lsl #2
ldr r2, _02026EAC ; =_0209B408_JP
mov r0, #0
add r8, r2, r1, lsl #4
str r0, [sp, #0x30]
b _02026B60
_0202699C:
ldrh r1, [sb, #2]
ldrh r0, [sb]
orrs ip, r0, r1, lsl #16
beq _02026A68
ldrb r0, [r4, #6]
cmp r6, r0
bge _02026A0C
ldr r1, [r8]
ldr r0, [r8, #8]
mov fp, r3
str r0, [sp, #0x20]
and r2, ip, r1
mov r7, #7
_020269D0:
mov r0, r7, lsl #2
rsb lr, r0, #0x1c
ldr r0, _02026EB0_JP ; =_0209B32C_JP
ldr r1, [r0, r7, lsl #2]
ldr r0, [sp, #0x20]
and r0, r1, r2, lsl r0
mov r0, r0, lsr lr
ands r0, r0, #0xff
ldrneb r1, [fp]
orrne r0, r0, #0x20
orrne r0, r1, r0
strneb r0, [fp]
add fp, fp, #1
subs r7, r7, #1
bpl _020269D0
_02026A0C:
ldrb r0, [r4, #6]
sub r0, r0, #1
cmp r6, r0
bge _02026A68
ldr r1, [r8, #4]
ldr r0, [r8, #0xc]
and r1, ip, r1
add r2, r3, #0x40
mov r7, #7
_02026A30:
mov fp, r7, lsl #2
rsb ip, fp, #0x1c
ldr fp, _02026EB0_JP ; =_0209B32C_JP
ldr fp, [fp, r7, lsl #2]
and fp, fp, r1, lsr r0
mov fp, fp, lsr ip
ands fp, fp, #0xff
ldrneb ip, [r2]
orrne fp, fp, #0x20
orrne fp, ip, fp
strneb fp, [r2]
add r2, r2, #1
subs r7, r7, #1
bpl _02026A30
_02026A68:
ldrh r7, [sb, #4]
cmp r7, #0
beq _02026B34
ldrb r0, [r4, #6]
sub r0, r0, #1
cmp r6, r0
bge _02026AD8
ldr r1, [r8]
ldr r0, [r8, #8]
and r2, r7, r1
str r0, [sp, #0x24]
add fp, r3, #0x40
mov ip, #7
_02026A9C:
mov r0, ip, lsl #2
rsb lr, r0, #0x1c
ldr r0, _02026EB0_JP ; =_0209B32C_JP
ldr r1, [r0, ip, lsl #2]
ldr r0, [sp, #0x24]
and r0, r1, r2, lsl r0
mov r0, r0, lsr lr
ands r0, r0, #0xff
ldrneb r1, [fp]
orrne r0, r0, #0x20
orrne r0, r1, r0
strneb r0, [fp]
add fp, fp, #1
subs ip, ip, #1
bpl _02026A9C
_02026AD8:
ldrb r0, [r4, #6]
sub r0, r0, #2
cmp r6, r0
bge _02026B34
ldr r1, [r8, #4]
ldr r0, [r8, #0xc]
and r1, r7, r1
add r2, r3, #0x80
mov r7, #7
_02026AFC:
mov fp, r7, lsl #2
rsb ip, fp, #0x1c
ldr fp, _02026EB0_JP ; =_0209B32C_JP
ldr fp, [fp, r7, lsl #2]
and fp, fp, r1, lsr r0
mov fp, fp, lsr ip
ands fp, fp, #0xff
ldrneb ip, [r2]
orrne fp, fp, #0x20
orrne fp, ip, fp
strneb fp, [r2]
add r2, r2, #1
subs r7, r7, #1
bpl _02026AFC
_02026B34:
add sl, sl, #1
mov r1, sl, lsr #0x1f
rsb r0, r1, sl, lsl #29
adds r0, r1, r0, ror #29
ldreq r0, [sp, #0x14]
add r3, r3, #8
addeq r3, r3, r0, lsl #2
ldr r0, [sp, #0x30]
add sb, sb, #6
add r0, r0, #1
str r0, [sp, #0x30]
_02026B60:
ldr r0, [sp, #0x30]
cmp r0, r5
blt _0202699C
b _02026E90
_02026B70:
ldr r0, [sp, #4]
bl sub_0202760C
ldr r1, _02026EA0 ; =_020AFD04
ldr r2, _02026EA8 ; =_022A92B8_JP
ldr r1, [r1, #4]
str r0, [sp, #0x28]
cmp sl, #0
ldr r5, [r2, r1, lsl #2]
mov r6, #0
bge _02026BB4
mov r6, #1
b _02026BAC
_02026BA0:
add sb, sb, #6
add sl, sl, #1
sub r5, r5, #1
_02026BAC:
cmp sl, #0
blt _02026BA0
_02026BB4:
ldr r0, [sp, #8]
cmp r0, #0
beq _02026BD4
cmp r6, #0
subne r0, sb, #6
strne r0, [sp, #0xc]
streq sb, [sp, #0xc]
b _02026BDC
_02026BD4:
str sb, [sp, #0xc]
mov r6, #0
_02026BDC:
ldrb r1, [r4, #7]
add r0, sl, r5
cmp r0, r1, lsl #3
rsbge r5, sl, r1, lsl #3
and r1, fp, #7
str r1, [sp, #0x18]
rsb r1, r1, #7
ldr r0, [sp, #4]
str r1, [sp, #0x10]
#ifdef JAPAN
bl sub_0202796C_JP
#else
bl sub_02027624
#endif
mov r2, sl, lsr #0x1f
rsb r1, r2, sl, lsl #29
add r1, r2, r1, ror #29
mov r2, fp, asr #2
add r2, fp, r2, lsr #29
mov r3, sl, asr #2
add r3, sl, r3, lsr #29
mov ip, r3, asr #3
ldrb fp, [r4, #6]
mov r3, #0
mul fp, ip, fp
add r2, fp, r2, asr #3
mov r2, r2, lsl #4
add r1, r2, r1, lsl #1
add r1, r0, r1, lsl #2
ldr r0, [sp, #0x18]
add fp, r1, r0
b _02026E0C
_02026C4C:
cmp r6, #0
mov r2, fp
ldr r0, [sp, #0x10]
beq _02026D0C
ldr ip, [sp, #0x58]
mov r1, #0
and ip, ip, #0xff
mov lr, r1
str ip, [sp, #0x2c]
_02026C70:
tst lr, #3
ldreq ip, [sp, #0xc]
ldreqh r7, [sb], #2
ldreqh r8, [ip], #2
streq ip, [sp, #0xc]
movne r7, r7, lsl #0xc
movne r8, r8, lsl #0xc
movne r7, r7, lsr #0x10
movne r8, r8, lsr #0x10
tst r7, #0xf
ldrne r1, [sp, #0x2c]
strneb r1, [r2], #1
movne r1, #1
bne _02026CD8
cmp r1, #0
bne _02026CB8
tst r8, #0xf
beq _02026CD4
_02026CB8:
ldrb ip, [r2]
mov r1, #0
cmp ip, #0
moveq ip, #0x13
streqb ip, [r2], #1
addne r2, r2, #1
b _02026CD8
_02026CD4:
add r2, r2, #1
_02026CD8:
subs r0, r0, #1
add lr, lr, #1
addmi r2, r2, #0x38
movmi r0, #7
cmp lr, #0xc
blt _02026C70
cmp r1, #0
beq _02026DEC
ldrb r0, [r2]
cmp r0, #0
moveq r0, #0x13
streqb r0, [r2]
b _02026DEC
_02026D0C:
ldr r1, [sp, #8]
cmp r1, #0
beq _02026DA8
ldr ip, [sp, #0x58]
mov r1, #0
mov r6, r1
and lr, ip, #0xff
_02026D28_JP:
tst r6, #3
ldreqh r7, [sb], #2
movne r7, r7, lsl #0xc
movne r7, r7, lsr #0x10
tst r7, #0xf
strneb lr, [r2], #1
movne r1, #1
bne _02026D70
cmp r1, #0
beq _02026D6C
ldrb ip, [r2]
mov r1, #0
cmp ip, #0
moveq ip, #0x13
streqb ip, [r2], #1
addne r2, r2, #1
b _02026D70
_02026D6C:
add r2, r2, #1
_02026D70:
subs r0, r0, #1
add r6, r6, #1
addmi r2, r2, #0x38
movmi r0, #7
cmp r6, #0xc
blt _02026D28_JP
cmp r1, #0
beq _02026DA0
ldrb r0, [r2]
cmp r0, #0
moveq r0, #0x13
streqb r0, [r2]
_02026DA0:
mov r6, #1
b _02026DEC
_02026DA8:
ldr r1, [sp, #0x58]
mov ip, #0
and r1, r1, #0xff
mov lr, #7
_02026DB8:
tst ip, #3
ldreqh r7, [sb], #2
add ip, ip, #1
movne r7, r7, lsl #0xc
movne r7, r7, lsr #0x10
tst r7, #0xf
strneb r1, [r2], #1
addeq r2, r2, #1
subs r0, r0, #1
addmi r2, r2, #0x38
movmi r0, lr
cmp ip, #0xc
blt _02026DB8
_02026DEC:
add sl, sl, #1
mov r1, sl, lsr #0x1f
rsb r0, r1, sl, lsl #29
adds r0, r1, r0, ror #29
ldreq r0, [sp, #0x28]
add fp, fp, #8
addeq fp, fp, r0, lsl #3
add r3, r3, #1
_02026E0C:
cmp r3, r5
blt _02026C4C
cmp r6, #0
beq _02026E90
ldrb r0, [r4, #7]
add r1, sl, r5
cmp r1, r0, lsl #3
bge _02026E90
mov r3, #0
mov r2, #0x13
mov r1, #7
_02026E38_JP:
tst r3, #3
ldreq r0, [sp, #0xc]
ldreqh r8, [r0], #2
streq r0, [sp, #0xc]
movne r0, r8, lsl #0xc
movne r8, r0, lsr #0x10
tst r8, #0xf
beq _02026E6C
ldrb r0, [fp]
cmp r0, #0
streqb r2, [fp], #1
addne fp, fp, #1
b _02026E70
_02026E6C:
add fp, fp, #1
_02026E70:
ldr r0, [sp, #0x10]
add r3, r3, #1
subs r0, r0, #1
str r0, [sp, #0x10]
strmi r1, [sp, #0x10]
addmi fp, fp, #0x38
cmp r3, #0xc
blt _02026E38_JP
_02026E90:
ldr r0, [sp, #0x1c]
ldrsh r0, [r0, #6]
_02026E98:
add sp, sp, #0x34
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02026EA0: .word _020AFD04
_02026EA4: .word _022A92B4_JP
_02026EA8: .word _022A92B8_JP
_02026EAC: .word _0209B408_JP
_02026EB0_JP: .word _0209B32C_JP
#else
sub sp, sp, #0x2c
str r0, [sp, #4]
mov sl, r1
mov r6, r2
mov r7, r3
ldr r5, [sp, #0x50]
bl GetWindow
ldr r1, _02026B14 ; =_020AFD04
str r0, [sp, #0x18]
#ifdef EUROPE
ldr r0, [r1, #4]
#else
ldr r0, [r1, #8]
#endif
cmp r0, #2
blt _020267C0
ldr r0, [sp, #4]
mov r4, #1
mov r1, sl
mov r2, r6
mov r3, r7
str r4, [sp]
bl sub_02026C68
b _02026B0C
_020267C0:
ldr r0, [sp, #4]
add r1, sp, #0x24
bl sub_020282C8
mov r0, r7
bl sub_02025C7C
ldr r1, _02026B14 ; =_020AFD04
str r0, [sp, #0x14]
ldrb r1, [r1]
add r4, r0, #4
cmp r1, #0
beq _02026804
ldrb r0, [r0, #3]
tst r0, #2
movne r0, #1
moveq r0, #0
and fp, r0, #0xff
b _02026808
_02026804:
mov fp, #0
_02026808:
ldr r0, _02026B14 ; =_020AFD04
ldr r3, [sp, #0x24]
#ifdef EUROPE
ldr r2, [r0, #4]
#else
ldr r2, [r0, #8]
#endif
ldr r1, _02026B18 ; =_022A7A5C
sub r0, r3, #8
cmp r6, #0
str r0, [sp, #0x1c]
ldr r7, [r1, r2, lsl #2]
mov r8, #0
bge _0202684C
mov r8, #1
b _02026844
_02026838:
add r4, r4, #2
add r6, r6, #1
sub r7, r7, #1
_02026844:
cmp r6, #0
blt _02026838
_0202684C:
cmp fp, #0
beq _02026868
cmp r8, #0
subne r0, r4, #2
strne r0, [sp, #8]
streq r4, [sp, #8]
b _02026870
_02026868:
str r4, [sp, #8]
mov r8, #0
_02026870:
ldr r1, [sp, #0x28]
add r0, r6, r7
cmp r0, r1
and sb, sl, #7
subge r7, r1, r6
rsb r1, sb, #7
ldr r0, [sp, #4]
str r1, [sp, #0xc]
bl sub_0202760C
mov r3, r6, lsr #0x1f
ldr r1, [sp, #0x18]
rsb r2, r3, r6, lsl #29
add r2, r3, r2, ror #29
mov r3, sl, asr #2
add r3, sl, r3, lsr #29
mov sl, r6, asr #2
add sl, r6, sl, lsr #29
ldrb r1, [r1, #6]
mov sl, sl, asr #3
mul r1, sl, r1
add r1, r1, r3, asr #3
mov r1, r1, lsl #4
add r1, r1, r2, lsl #1
add r0, r0, r1, lsl #2
add sb, r0, sb
mov r1, #0
b _02026A88
_020268DC:
mov ip, sb
ldr r2, [sp, #0xc]
cmp r8, #0
beq _0202699C
ldr sl, [sp, #8]
mov r3, #0
ldrh r0, [sl], #2
str sl, [sp, #8]
and sl, r5, #0xff
ldrh lr, [r4], #2
str r3, [sp, #0x10]
str sl, [sp, #0x20]
_0202690C:
tst lr, #1
ldrne r3, [sp, #0x20]
strneb r3, [ip], #1
movne r3, #1
bne _02026950
cmp r3, #0
bne _02026930
tst r0, #1
beq _0202694C
_02026930:
ldrb sl, [ip]
mov r3, #0
cmp sl, #0
moveq sl, #0x13
streqb sl, [ip], #1
addne ip, ip, #1
b _02026950
_0202694C:
add ip, ip, #1
_02026950:
mov sl, lr, lsl #0xf
mov lr, sl, lsr #0x10
ldr sl, [sp, #0x10]
subs r2, r2, #1
mov r0, r0, lsl #0xf
add sl, sl, #1
mov r0, r0, lsr #0x10
addmi ip, ip, #0x38
movmi r2, #7
str sl, [sp, #0x10]
cmp sl, #0xc
blt _0202690C
cmp r3, #0
beq _02026A68
ldrb r0, [ip]
cmp r0, #0
moveq r0, #0x13
streqb r0, [ip]
b _02026A68
_0202699C:
cmp fp, #0
beq _02026A2C
ldrh r8, [r4], #2
mov r3, #0
mov lr, r3
and r0, r5, #0xff
_020269B4:
tst r8, #1
strneb r0, [ip], #1
movne r3, #1
bne _020269EC
cmp r3, #0
beq _020269E8
ldrb sl, [ip]
mov r3, #0
cmp sl, #0
moveq sl, #0x13
streqb sl, [ip], #1
addne ip, ip, #1
b _020269EC
_020269E8:
add ip, ip, #1
_020269EC:
subs r2, r2, #1
mov r8, r8, lsl #0xf
add lr, lr, #1
mov r8, r8, lsr #0x10
addmi ip, ip, #0x38
movmi r2, #7
cmp lr, #0xc
blt _020269B4
cmp r3, #0
beq _02026A24
ldrb r0, [ip]
cmp r0, #0
moveq r0, #0x13
streqb r0, [ip]
_02026A24:
mov r8, #1
b _02026A68
_02026A2C:
ldrh r3, [r4], #2
mov r0, #0
and sl, r5, #0xff
mov lr, #7
_02026A3C:
tst r3, #1
strneb sl, [ip], #1
addeq ip, ip, #1
subs r2, r2, #1
mov r3, r3, lsl #0xf
add r0, r0, #1
mov r3, r3, lsr #0x10
addmi ip, ip, #0x38
movmi r2, lr
cmp r0, #0xc
blt _02026A3C
_02026A68:
add r6, r6, #1
mov r2, r6, lsr #0x1f
rsb r0, r2, r6, lsl #29
adds r0, r2, r0, ror #29
ldreq r0, [sp, #0x1c]
add sb, sb, #8
addeq sb, sb, r0, lsl #3
add r1, r1, #1
_02026A88:
cmp r1, r7
blt _020268DC
cmp r8, #0
beq _02026B04
ldr r0, [sp, #0x28]
add r1, r6, r7
cmp r1, r0
bge _02026B04
ldr r0, [sp, #8]
mov r4, #0
ldrh r3, [r0]
mov r2, #0x13
mov r1, #7
_02026ABC:
tst r3, #1
beq _02026AD8
ldrb r0, [sb]
cmp r0, #0
streqb r2, [sb], #1
addne sb, sb, #1
b _02026ADC
_02026AD8:
add sb, sb, #1
_02026ADC:
mov r0, r3, lsl #0xf
mov r3, r0, lsr #0x10
ldr r0, [sp, #0xc]
add r4, r4, #1
subs r0, r0, #1
str r0, [sp, #0xc]
strmi r1, [sp, #0xc]
addmi sb, sb, #0x38
cmp r4, #0xc
blt _02026ABC
_02026B04:
ldr r0, [sp, #0x14]
ldrb r0, [r0, #2]
_02026B0C:
add sp, sp, #0x2c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02026B14: .word _020AFD04
_02026B18: .word _022A7A5C
#endif
arm_func_end DrawChar
arm_func_start sub_02026B1C
sub_02026B1C: ; 0x02026B1C
#ifdef JAPAN
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #8
mov sl, r0
mov sb, r1
mov r8, r2
mov r7, r3
bl sub_0202796C_JP
mov fp, r0
mov r0, sl
bl GetWindow
ldr r1, _02026C64 ; =_020AFD04
ldrb r3, [r0, #6]
ldr r2, [r1]
add r1, r2, r7, lsl #2
ldrsh r0, [r1, #2]
mov r4, r3, lsl #6
ldrb r5, [r2, r7, lsl #2]
cmp r0, #0
ldrb r6, [r1, #1]
movlt r0, #0
blt _02026FCC
add r1, sp, #0
mov r0, sl
bl sub_020282C8
ldr r0, _02026C64 ; =_020AFD04
mov r3, sb
ldr r1, [r0]
mov sl, r8
cmp sb, #0
add r0, r1, r7, lsl #2
ldrsh r0, [r0, #2]
movlt r3, #0
cmp r8, #0
add r7, r1, r0
movlt sl, #0
add sb, sb, r5
add r6, r8, r6
b _02026FC0
_02026F4C:
ldr r0, [sp, #4]
cmp sl, r0
bge _02026FC8
mov r1, sl, lsr #0x1f
rsb r0, r1, sl, lsl #29
add r1, r1, r0, ror #29
mov r2, sl, asr #2
add r0, sl, r2, lsr #29
add r1, fp, r1, lsl #3
mov r0, r0, asr #3
mla r8, r0, r4, r1
mov r2, r3
b _02026FB4
_02026F80:
ldr r0, [sp]
cmp r2, r0
bge _02026FBC
mov r1, r2, lsr #0x1f
rsb r0, r1, r2, lsl #29
mov ip, r2, asr #2
add ip, r2, ip, lsr #29
add r0, r1, r0, ror #29
ldrsb r1, [r7], #1
mov ip, ip, asr #3
add r0, r8, r0
strb r1, [r0, ip, lsl #6]
add r2, r2, #1
_02026FB4:
cmp r2, sb
blt _02026F80
_02026FBC:
add sl, sl, #1
_02026FC0:
cmp sl, r6
blt _02026F4C
_02026FC8:
mov r0, r5
_02026FCC:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
#else
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #8
ldr r5, _02026C64 ; =_020AFD04
mov r4, r0
#ifdef EUROPE
ldr r5, [r5, #8]
#else
ldr r5, [r5, #0xc]
#endif
mov r6, r1
add r7, r5, r3, lsl #2
mov r5, r2
bl sub_0202760C
ldrsh r3, [r7, #2]
mov r8, r0
cmp r3, #0
movlt r0, #0
blt _02026C5C
ldr r0, _02026C64 ; =_020AFD04
add r1, sp, #0
#ifdef EUROPE
ldr r2, [r0, #8]
#else
ldr r2, [r0, #0xc]
#endif
mov r0, r4
add r4, r2, r3
bl sub_020282C8
ldrb r0, [r7, #1]
cmp r5, #0
add ip, r5, r0
bge _02026B9C
cmp ip, #0
ldrltb r0, [r7]
blt _02026C5C
ldr r1, [sp]
rsb r0, r5, #0
mla r4, r1, r0, r4
mov r5, #0
b _02026BB8
_02026B9C:
ldr r0, [sp, #4]
cmp ip, r0
ble _02026BB8
cmp r5, r0
ldrgtb r0, [r7]
bgt _02026C5C
mov ip, r0
_02026BB8:
ldrb r0, [r7]
cmp r6, #0
movlt r6, #0
ldr r1, [sp]
add r3, r6, r0
cmp r3, r1
subgt r6, r1, r0
mov r0, r1, asr #2
add r0, r1, r0, lsr #29
mov r0, r0, asr #3
movgt r3, r1
mov r2, r6
mov r1, r0, lsl #6
b _02026C50
_02026BF0:
mov r0, r5, asr #2
add r0, r5, r0, lsr #29
mov r0, r0, asr #3
mul sb, r0, r1
mov r6, r5, lsr #0x1f
rsb r0, r6, r5, lsl #29
add r0, r6, r0, ror #29
add r0, sb, r0, lsl #3
mov r6, r2
add lr, r8, r0
b _02026C44
_02026C1C:
mov sb, r6, lsr #0x1f
rsb r0, sb, r6, lsl #29
mov sl, r6, asr #2
add sl, r6, sl, lsr #29
add sb, sb, r0, ror #29
ldrb r0, [r4], #1
mov sl, sl, asr #3
add sb, lr, sb
strb r0, [sb, sl, lsl #6]
add r6, r6, #1
_02026C44:
cmp r6, r3
blt _02026C1C
add r5, r5, #1
_02026C50:
cmp r5, ip
blt _02026BF0
ldrb r0, [r7]
_02026C5C:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
#endif
.align 2, 0
_02026C64: .word _020AFD04
arm_func_end sub_02026B1C
arm_func_start sub_02026C68
sub_02026C68: ; 0x02026C68
stmdb sp!, {r3, lr}
cmp r3, #0x41
blo _02026CA4
cmp r3, #0x5a
bhi _02026CA4
ldr ip, _02026E38 ; =_020AFD04
sub r3, r3, #0x40
#ifdef NORTH_AMERICA
ldr ip, [ip, #8]
#else
ldr ip, [ip, #4]
#endif
mov r3, r3, lsl #0x10
mov r3, r3, asr #0x10
cmp ip, #3
addeq r3, r3, #0x50
moveq r3, r3, lsl #0x10
moveq r3, r3, asr #0x10
b _02026E18
_02026CA4:
ldr ip, _02026E38 ; =_020AFD04
#ifdef NORTH_AMERICA
ldr ip, [ip, #8]
#else
ldr ip, [ip, #4]
#endif
cmp ip, #3
bne _02026D40
cmp r3, #0x40
bgt _02026CCC
bge _02026D00
cmp r3, #0x26
beq _02026D30
b _02026D38
_02026CCC:
cmp r3, #0x6f
bgt _02026CF4
subs ip, r3, #0x6b
addpl pc, pc, ip, lsl #2
b _02026D38
_02026CE0: ; jump table
b _02026D10 ; case 0
b _02026D38 ; case 1
b _02026D18 ; case 2
b _02026D20 ; case 3
b _02026D08 ; case 4
_02026CF4:
cmp r3, #0xe9
beq _02026D28
b _02026D38
_02026D00:
mov r3, #0x50
b _02026E18
_02026D08:
mov r3, #0x6b
b _02026E18
_02026D10:
mov r3, #0x6c
b _02026E18
_02026D18:
mov r3, #0x6d
b _02026E18
_02026D20:
mov r3, #0x6e
b _02026E18
_02026D28:
mov r3, #0x6f
b _02026E18
_02026D30:
mov r3, #0x71
b _02026E18
_02026D38:
mov r0, #8
ldmia sp!, {r3, pc}
_02026D40:
cmp r3, #0x61
blo _02026D5C
cmp r3, #0x7a
subls r3, r3, #0x40
movls r3, r3, lsl #0x10
movls r3, r3, asr #0x10
bls _02026E18
_02026D5C:
#ifdef EUROPE
cmp r3, #0xe1
bgt _02027090
bge _020270F4
cmp r3, #0x2e
bgt _02027084
subs ip, r3, #0x26
addpl pc, pc, ip, lsl #2
b _02026E10
_02027060: ; jump table
b _02026DE8 ; case 0
b _02026DE0 ; case 1
b _02026E10 ; case 2
b _02026E10 ; case 3
b _02026E10 ; case 4
b _02026E10 ; case 5
b _02026DD0 ; case 6
b _02026DD8 ; case 7
b _02026DC8 ; case 8
_02027084:
cmp r3, #0xc1
beq _02026E00
b _02026E10
_02027090:
cmp r3, #0xeb
bgt _020270A8
bge _02026DF8
cmp r3, #0xe9
beq _02026DF0
b _02026E10
_020270A8:
cmp r3, #0xed
beq _020270FC
b _02026E10
#else
cmp r3, #0xc1
bgt _02026DAC
bge _02026E00
sub ip, r3, #0x22
cmp ip, #0xc
addls pc, pc, ip, lsl #2
b _02026E10
_02026D78: ; jump table
b _02026E08 ; case 0
b _02026E10 ; case 1
b _02026E10 ; case 2
b _02026E10 ; case 3
b _02026DE8 ; case 4
b _02026DE0 ; case 5
b _02026E10 ; case 6
b _02026E10 ; case 7
b _02026E10 ; case 8
b _02026E10 ; case 9
b _02026DD0 ; case 10
b _02026DD8 ; case 11
b _02026DC8 ; case 12
_02026DAC:
cmp r3, #0xe9
bgt _02026DBC
beq _02026DF0
b _02026E10
_02026DBC:
cmp r3, #0xeb
beq _02026DF8
b _02026E10
#endif
_02026DC8:
mov r3, #0x1b
b _02026E18
_02026DD0:
mov r3, #0x1c
b _02026E18
_02026DD8:
mov r3, #0x1d
b _02026E18
_02026DE0:
mov r3, #0x1e
b _02026E18
_02026DE8:
mov r3, #0
b _02026E18
_02026DF0:
mov r3, #0x3b
b _02026E18
_02026DF8:
mov r3, #0x3c
b _02026E18
_02026E00:
mov r3, #0x3d
b _02026E18
#ifdef EUROPE
_020270F4:
mov r3, #0x4c
b _02026E18
_020270FC:
mov r3, #0x4d
b _02026E18
#else
_02026E08:
mov r3, #0x3e
b _02026E18
#endif
_02026E10:
mov r0, #6
ldmia sp!, {r3, pc}
_02026E18:
ldrb ip, [sp, #8]
cmp ip, #0
ldreq r0, _02026E38 ; =_020AFD04
#if defined(EUROPE)
ldreq r0, [r0, #8]
#elif defined(JAPAN)
ldreq r0, [r0]
#else
ldreq r0, [r0, #0xc]
#endif
ldreqb r0, [r0, r3, lsl #2]
ldmeqia sp!, {r3, pc}
bl sub_02026B1C
ldmia sp!, {r3, pc}
.align 2, 0
_02026E38: .word _020AFD04
arm_func_end sub_02026C68
arm_func_start sub_02026E3C
sub_02026E3C: ; 0x02026E3C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
#ifdef JAPAN
bl sub_0202796C_JP
#else
bl sub_0202760C
#endif
mov r4, r0
mov r0, r7
bl sub_02027624
mov r3, r5, lsl #0x14
mov r1, r0
mov r0, r4
mov r2, r6
mov r3, r3, lsr #0x10
bl DecompressAtHalf
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_02026E3C
arm_func_start sub_02026E78
sub_02026E78: ; 0x02026E78
#ifdef JAPAN
stmdb sp!, {r3, lr}
ldr r3, _02026FEC ; =_020AFD4C
mov ip, #1
ldr r0, _02026FF0 ; =WINDOW_LIST
mov r1, #0
mov r2, #0x1180
strb ip, [r3, #4]
bl memset
ldr r0, _02026FF8 ; =_022A7B1C
mov r1, #0
mov r2, #0x370
bl memset
mov r1, #0
ldr r0, _02026FFC ; =_022A7AC8
#else
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r3, _02026FEC ; =_020AFD4C
mov r4, #1
ldr r0, _02026FF0 ; =WINDOW_LIST
mov r1, #0
mov r2, #0x1180
strb r4, [r3, #2]
bl memset
mov r7, #0
ldr r0, _02026FF4 ; =_022A7A6C
mvn r5, #1
ldr r6, _02026FF8 ; =_022A7B1C
strb r5, [r0, #5]
mov r4, r7
_02026EB0:
strb r4, [r6]
add r0, r6, #4
strb r5, [r6, #0x2c]
bl sub_02029A50
add r7, r7, #1
cmp r7, #0x14
add r6, r6, #0x30
blt _02026EB0
ldr r0, _02026FFC ; =_022A7AC8
mov r1, #0
#endif
ldr r2, _02027000 ; =0x04000014
ldr r3, _02027004 ; =0x0600D800
str r1, [sp]
bl sub_0200B2C4
mov r1, #0
ldr r0, _02027008 ; =_022A7B00
#ifdef JAPAN
str r1, [sp]
ldr r2, _0202700C ; =0x04001010
ldr r3, _02027010 ; =0x0620D000
bl sub_0200B2C4
mov r1, #0
str r1, [sp]
ldr r0, _02027014 ; =_022A7AE4
ldr r2, _02027018 ; =0x04001014
ldr r3, _0202701C ; =0x0620D800
bl sub_0200B2C4
mov r0, #0
str r0, [sp]
ldr r0, _02027020 ; =_022A7AA0
mov r1, #1
mov r2, #0x200
ldr r3, _02027024 ; =0x06882000
#else
ldr r2, _0202700C ; =0x04001010
ldr r3, _02027010 ; =0x0620D000
str r1, [sp]
bl sub_0200B2C4
mov r1, #0
ldr r0, _02027014 ; =_022A7AE4
ldr r2, _02027018 ; =0x04001014
ldr r3, _0202701C ; =0x0620D800
str r1, [sp]
bl sub_0200B2C4
mov r1, #0
ldr r0, _02027020 ; =_022A7AA0
str r1, [sp]
ldr r3, _02027024 ; =0x06882000
mov r1, #1
mov r2, #0x200
#endif
bl sub_0200A124
mov r0, #0
str r0, [sp]
ldr r0, _02027028 ; =_022A7A8C
mov r1, #3
mov r2, #0x200
ldr r3, _0202702C ; =0x06898000
bl sub_0200A124
mov r0, #0
str r0, [sp]
ldr r0, _02027030 ; =_022A7A78
mov r1, #3
mov r2, #0x300
ldr r3, _02027034 ; =0x0689A000
bl sub_0200A124
mov r2, #0
ldr r1, _02026FF4 ; =_022A7A6C
ldr r0, _02027038 ; =_022A7EDC
#ifdef JAPAN
strb r2, [r1]
strb r2, [r1, #4]
strb r2, [r1, #2]
#else
strb r2, [r1, #4]
strb r2, [r1]
strb r2, [r1, #1]
#endif
mov r1, #0xa00
bl MemZero
mov r2, #0
ldr r1, _02026FF4 ; =_022A7A6C
ldr r0, _0202703C ; =_022A7AB4
strh r2, [r1, #6]
mov r1, #0x14
bl MemZero
mov r0, #0
bl sub_02027180
mov r2, #1
ldr r0, _02026FF4 ; =_022A7A6C
sub r1, r2, #3
strh r2, [r0, #8]
strh r2, [r0, #0xa]
#ifdef JAPAN
strb r1, [r0, #1]
#else
strb r1, [r0, #3]
#endif
bl LoadCursors
bl LoadAlert
bl sub_0202A124
#ifdef JAPAN
ldr r1, _02026FF4 ; =_022A7A6C
mov r2, #0
ldr r0, _02026FEC ; =_020AFD4C
#else
mov r2, #0
ldr r1, _02026FF4 ; =_022A7A6C
ldr r0, _02026FEC ; =_020AFD4C
#endif
strh r2, [r1, #6]
str r2, [r0, #8]
bl sub_0202903C
#ifdef JAPAN
ldmia sp!, {r3, pc}
#else
ldmia sp!, {r3, r4, r5, r6, r7, pc}
#endif
.align 2, 0
_02026FEC: .word _020AFD4C
_02026FF0: .word WINDOW_LIST
#ifndef JAPAN
_02026FF4: .word _022A7A6C
#endif
_02026FF8: .word _022A7B1C
_02026FFC: .word _022A7AC8
_02027000: .word 0x04000014
_02027004: .word 0x0600D800
_02027008: .word _022A7B00
_0202700C: .word 0x04001010
_02027010: .word 0x0620D000
_02027014: .word _022A7AE4
_02027018: .word 0x04001014
_0202701C: .word 0x0620D800
_02027020: .word _022A7AA0
_02027024: .word 0x06882000
_02027028: .word _022A7A8C
_0202702C: .word 0x06898000
_02027030: .word _022A7A78
_02027034: .word 0x0689A000
#ifdef JAPAN
_02026FF4: .word _022A7A6C
#endif
_02027038: .word _022A7EDC
_0202703C: .word _022A7AB4
arm_func_end sub_02026E78
arm_func_start sub_02027040
sub_02027040: ; 0x02027040
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0xc
mov r3, #0xe0
mul r5, r0, r3
ldr r6, _02027134 ; =_022A88E4
mov sl, r1
ldrb r0, [r6, r5]
ldr r3, _02027138 ; =_0209AC58
mov r8, #0
cmp r0, #0
mov r0, r2, lsl #0x10
ldreq sb, _0202713C ; =_022A7AA0
add r2, sp, #0
ldrne sb, _02027140 ; =_022A7A8C
mov r7, r0, lsr #0x10
mov r1, #4
_02027080:
ldrb r0, [r3], #1
subs r1, r1, #1
strb r0, [r2], #1
bne _02027080
add r4, sp, #8
_02027094:
add r3, sp, #0
add r2, sp, #4
mov r1, #4
_020270A0:
ldrb r0, [r3], #1
subs r1, r1, #1
strb r0, [r2], #1
bne _020270A0
ldrsb r0, [sl]
add r3, sp, #4
add r2, sp, #8
strb r0, [sp, #4]
ldrsb r0, [sl, #1]
mov r1, #4
strb r0, [sp, #5]
ldrsb r0, [sl, #2]
strb r0, [sp, #6]
_020270D4:
ldrb r0, [r3], #1
subs r1, r1, #1
strb r0, [r2], #1
bne _020270D4
add r0, r7, #1
mov r1, r7
mov r3, r0, lsl #0x10
mov r0, sb
mov r2, r4
add sl, sl, #3
mov r7, r3, lsr #0x10
bl sub_0200A29C
add r8, r8, #1
cmp r8, #0x10
blt _02027094
ldrb r0, [r6, r5]
mov r1, #1
cmp r0, #0
ldreq r0, _02027144 ; =_022A7A6C
#ifdef JAPAN
streqb r1, [r0]
ldrne r0, _02027144 ; =_022A7A6C
strneb r1, [r0, #4]
#else
streqb r1, [r0, #4]
ldrne r0, _02027144 ; =_022A7A6C
strneb r1, [r0]
#endif
add sp, sp, #0xc
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_02027134: .word _022A88E4
_02027138: .word _0209AC58
_0202713C: .word _022A7AA0
_02027140: .word _022A7A8C
_02027144: .word _022A7A6C
arm_func_end sub_02027040
arm_func_start sub_02027148
sub_02027148: ; 0x02027148
ldr r0, _02027158 ; =_020AFD4C
mov r1, #1
strb r1, [r0, #1]
bx lr
.align 2, 0
_02027158: .word _020AFD4C
arm_func_end sub_02027148
arm_func_start sub_0202715C
sub_0202715C: ; 0x0202715C
ldr r0, _0202716C ; =_020AFD4C
mov r1, #0
strb r1, [r0, #1]
bx lr
.align 2, 0
_0202716C: .word _020AFD4C
arm_func_end sub_0202715C
arm_func_start sub_02027170
sub_02027170: ; 0x02027170
ldr r0, _0202717C ; =_022A7A6C
#ifdef JAPAN
ldrb r0, [r0, #3]
#else
ldrb r0, [r0, #2]
#endif
bx lr
.align 2, 0
_0202717C: .word _022A7A6C
arm_func_end sub_02027170
arm_func_start sub_02027180
sub_02027180: ; 0x02027180
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r4, r0
mov r0, #0xc
mul r2, r4, r0
ldr r1, _0202721C ; =_020AFD58
add r0, sp, #0
ldr r1, [r1, r2]
mov r2, #0x300
bl LoadWteFromRom
ldr r3, [sp, #4]
ldr r0, _02027220 ; =_022A7A6C
ldrh r1, [r3, #0xc]
ldr r2, _02027224 ; =_022A7AB6
add r3, r3, #0x10
strh r1, [r0, #0x48]
mov r1, #4
_020271C4:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _020271C4
ldr ip, _02027220 ; =_022A7A6C
mov r1, #0x1f000
mov r2, #0x1f
str r1, [ip, #0x54]
add r0, sp, #0
mov r3, #0
strh r2, [ip, #0x58]
bl sub_0201E12C
add r0, sp, #0
bl DelayWteFree
mov r0, r4
bl sub_02027228
mov r0, r4
bl sub_02027390
ldr r0, _02027220 ; =_022A7A6C
#ifdef JAPAN
strb r4, [r0, #3]
#else
strb r4, [r0, #2]
#endif
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
_0202721C: .word _020AFD58
_02027220: .word _022A7A6C
_02027224: .word _022A7AB6
arm_func_end sub_02027180
arm_func_start sub_02027228
sub_02027228: ; 0x02027228
stmdb sp!, {r3, lr}
sub sp, sp, #8
mov r1, #0xc
mul r2, r0, r1
ldr r1, _0202726C ; =_020AFD5C
add r0, sp, #0
ldr r1, [r1, r2]
mov r2, #1
bl LoadFileFromRom
ldr r1, [sp]
ldr r2, [sp, #4]
ldr r0, _02027270 ; =0x0620C000
bl Memcpy32
add r0, sp, #0
bl UnloadFile
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
_0202726C: .word _020AFD5C
_02027270: .word 0x0620C000
arm_func_end sub_02027228
arm_func_start sub_02027274
sub_02027274: ; 0x02027274
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x14
mov r1, r0
add r0, sp, #0xc
mov r2, #1
bl LoadFileFromRom
ldr r7, [sp, #0xc]
ldr r3, _0202736C ; =_0209AC50
add r2, sp, #0
mov r8, #0x80
mov sb, #0
mov r1, #4
_020272A4:
ldrb r0, [r3], #1
subs r1, r1, #1
strb r0, [r2], #1
bne _020272A4
ldr r6, _02027370 ; =_022A7AA0
ldr r4, _02027374 ; =_022A7A8C
add r5, sp, #8
_020272C0:
add r3, sp, #0
add r2, sp, #4
mov r1, #4
_020272CC:
ldrb r0, [r3], #1
subs r1, r1, #1
strb r0, [r2], #1
bne _020272CC
ldrb r0, [r7]
add r3, sp, #4
add r2, sp, #8
strb r0, [sp, #4]
ldrb r0, [r7, #1]
mov r1, #4
strb r0, [sp, #5]
ldrb r0, [r7, #2]
strb r0, [sp, #6]
_02027300:
ldrb r0, [r3], #1
subs r1, r1, #1
strb r0, [r2], #1
bne _02027300
mov r0, r6
mov r1, r8
mov r2, r5
add r7, r7, #4
bl sub_0200A29C
mov r0, r4
mov r1, r8
mov r2, r5
bl sub_0200A29C
add r0, r8, #1
mov r0, r0, lsl #0x10
add sb, sb, #1
cmp sb, #0x80
mov r8, r0, lsr #0x10
blt _020272C0
add r0, sp, #0xc
bl UnloadFile
ldr r0, _02027378 ; =_022A7A6C
mov r1, #1
#ifdef JAPAN
strb r1, [r0]
strb r1, [r0, #4]
#else
strb r1, [r0, #4]
strb r1, [r0]
#endif
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0202736C: .word _0209AC50
_02027370: .word _022A7AA0
_02027374: .word _022A7A8C
_02027378: .word _022A7A6C
arm_func_end sub_02027274
arm_func_start sub_0202737C
sub_0202737C: ; 0x0202737C
ldr ip, _02027388 ; =sub_02027274
ldr r0, _0202738C ; =_0209ADC8
bx ip
.align 2, 0
_02027388: .word sub_02027274
_0202738C: .word _0209ADC8
arm_func_end sub_0202737C
arm_func_start sub_02027390
sub_02027390: ; 0x02027390
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x1c
ldr r1, _0202759C ; =_0209ADDC
mov sl, r0
add r0, sp, #0x10
mov r2, #1
bl LoadFileFromRom
ldr r8, [sp, #0x10]
ldr r3, _020275A0 ; =_0209AC54
add r2, sp, #0
mov sb, #0x10
mov r7, #0
mov r1, #4
_020273C4:
ldrb r0, [r3], #1
subs r1, r1, #1
strb r0, [r2], #1
bne _020273C4
ldr r6, _020275A4 ; =_022A7AA0
ldr r4, _020275A8 ; =_022A7A8C
add r5, sp, #0x18
_020273E0:
add r3, sp, #0
add r2, sp, #0xc
mov r1, #4
_020273EC:
ldrb r0, [r3], #1
subs r1, r1, #1
strb r0, [r2], #1
bne _020273EC
ldrb r0, [r8]
add r3, sp, #0xc
add r2, sp, #0x18
strb r0, [sp, #0xc]
ldrb r0, [r8, #1]
mov r1, #4
strb r0, [sp, #0xd]
ldrb r0, [r8, #2]
strb r0, [sp, #0xe]
ldrb r0, [r8, #3]
strb r0, [sp, #0xf]
_02027428:
ldrb r0, [r3], #1
subs r1, r1, #1
strb r0, [r2], #1
bne _02027428
mov r0, r6
mov r1, sb
mov r2, r5
add r8, r8, #4
bl sub_0200A29C
mov r0, r4
mov r1, sb
mov r2, r5
bl sub_0200A29C
add r0, sb, #1
mov r0, r0, lsl #0x10
add r7, r7, #1
cmp r7, #0x20
mov sb, r0, lsr #0x10
blt _020273E0
add r0, sp, #0x10
bl UnloadFile
ldr r0, _020275AC ; =_0209ADC8
bl sub_02027274
mov r0, #0xc
mul r2, sl, r0
ldr r1, _020275B0 ; =_020AFD60
add r0, sp, #0x10
ldr r1, [r1, r2]
mov r2, #1
bl LoadFileFromRom
mov r5, #0
ldr r6, [sp, #0x10]
ldr r3, _020275B4 ; =_0209AC4C
add r2, sp, #4
mov r4, r5
mov r1, #4
_020274B8:
ldrb r0, [r3], #1
subs r1, r1, #1
strb r0, [r2], #1
bne _020274B8
_020274C8:
mov r0, r4, lsl #0x18
ldr sl, _020275B8 ; =_022A7A78
mov r7, r0, lsr #0x10
mov r8, #0
add sb, sp, #0x18
_020274DC:
add r3, sp, #4
add r2, sp, #8
mov r1, #4
_020274E8:
ldrb r0, [r3], #1
subs r1, r1, #1
strb r0, [r2], #1
bne _020274E8
mov r0, r5, lsl #1
ldrsh r1, [r6, r0]
add r3, sp, #8
add r2, sp, #0x18
mov r0, r1, lsl #0x1b
and ip, r1, #0x3e0
and r1, r1, #0x7c00
mov r0, r0, lsr #0x18
mov ip, ip, asr #2
mov r1, r1, asr #7
strb r1, [sp, #0xa]
strb r0, [sp, #8]
strb ip, [sp, #9]
mov r1, #4
_02027530:
ldrb r0, [r3], #1
subs r1, r1, #1
strb r0, [r2], #1
bne _02027530
add r0, r7, #1
mov r1, r7
mov r3, r0, lsl #0x10
mov r0, sl
mov r2, sb
mov r7, r3, lsr #0x10
bl sub_0200A29C
add r8, r8, #1
cmp r8, #0x10
add r5, r5, #1
blt _020274DC
add r4, r4, #1
cmp r4, #3
blt _020274C8
add r0, sp, #0x10
bl UnloadFile
ldr r0, _020275BC ; =_022A7A6C
mov r1, #1
#ifdef JAPAN
strb r1, [r0]
strb r1, [r0, #4]
strb r1, [r0, #2]
#else
strb r1, [r0, #4]
strb r1, [r0]
strb r1, [r0, #1]
#endif
add sp, sp, #0x1c
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_0202759C: .word _0209ADDC
_020275A0: .word _0209AC54
_020275A4: .word _022A7AA0
_020275A8: .word _022A7A8C
_020275AC: .word _0209ADC8
_020275B0: .word _020AFD60
_020275B4: .word _0209AC4C
_020275B8: .word _022A7A78
_020275BC: .word _022A7A6C
arm_func_end sub_02027390
arm_func_start sub_020275C0
sub_020275C0: ; 0x020275C0
ldr r3, _020275D4 ; =_022A7AC8
ldr r2, _020275D8 ; =_022A7AA0
str r3, [r0]
str r2, [r1]
bx lr
.align 2, 0
_020275D4: .word _022A7AC8
_020275D8: .word _022A7AA0
arm_func_end sub_020275C0
arm_func_start sub_020275DC
sub_020275DC: ; 0x020275DC
ldr r3, _020275F0 ; =_022A7B00
ldr r2, _020275F4 ; =_022A7A8C
str r3, [r0]
str r2, [r1]
bx lr
.align 2, 0
_020275F0: .word _022A7B00
_020275F4: .word _022A7A8C
arm_func_end sub_020275DC
arm_func_start GetWindow
GetWindow: ; 0x020275F8
ldr r2, _02027608 ; =WINDOW_LIST
mov r1, #0xe0
mla r0, r1, r0, r2
bx lr
.align 2, 0
_02027608: .word WINDOW_LIST
arm_func_end GetWindow
arm_func_start sub_0202760C
sub_0202760C: ; 0x0202760C
mov r1, #0xe0
mul r1, r0, r1
ldr r0, _02027620 ; =_022A88F0
ldr r0, [r0, r1]
bx lr
.align 2, 0
#ifdef JAPAN
_02027620: .word _022A88FC
#else
_02027620: .word _022A88F0
#endif
arm_func_end sub_0202760C
#ifdef JAPAN
arm_func_start sub_0202796C_JP
sub_0202796C_JP: ; 0x0202796C
mov r1, #0xe0
mul r1, r0, r1
ldr r0, _02027980 ; =_022A88F0
ldr r0, [r0, r1]
bx lr
.align 2, 0
_02027980: .word _022A88F0
arm_func_end sub_0202796C_JP
#endif
arm_func_start sub_02027624
sub_02027624: ; 0x02027624
ldr r2, _02027644 ; =WINDOW_LIST
mov r1, #0xe0
mla r2, r0, r1, r2
ldrb r1, [r2, #6]
ldrb r0, [r2, #7]
smulbb r0, r1, r0
mov r0, r0, lsl #5
bx lr
.align 2, 0
_02027644: .word WINDOW_LIST
arm_func_end sub_02027624
arm_func_start NewWindowScreenCheck
NewWindowScreenCheck: ; 0x02027648
stmdb sp!, {r4, lr}
mov r4, #0
ldr ip, _020276B8 ; =WINDOW_LIST
mov lr, r4
mov r3, r4
_0202765C:
ldrsb r2, [ip, #0xb6]
cmp r2, #0
beq _02027678
ldrb r2, [ip, #8]
cmp r2, #0
addeq lr, lr, #1
addne r4, r4, #1
_02027678:
add r2, r3, #1
mov r2, r2, lsl #0x18
mov r3, r2, asr #0x18
cmp r3, #0x14
add ip, ip, #0xe0
blt _0202765C
cmp lr, #0
ldreq r2, _020276BC ; =_022A7A6C
moveq r3, #1
streqh r3, [r2, #8]
cmp r4, #0
ldreq r2, _020276BC ; =_022A7A6C
moveq r3, #1
streqh r3, [r2, #0xa]
bl NewWindow
ldmia sp!, {r4, pc}
.align 2, 0
_020276B8: .word WINDOW_LIST
_020276BC: .word _022A7A6C
arm_func_end NewWindowScreenCheck
arm_func_start NewWindow
NewWindow: ; 0x020276C0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
mov r7, r1
ldr r5, _02027898 ; =WINDOW_LIST
ldr r6, _0202789C ; =_022A7B1C
mov r4, #0
b _020276FC
_020276DC:
ldrsb r0, [r5, #0xb6]
cmp r0, #0
beq _02027704
add r0, r4, #1
mov r0, r0, lsl #0x18
mov r4, r0, asr #0x18
add r5, r5, #0xe0
#ifdef JAPAN
add r6, r6, #0x2c
#else
add r6, r6, #0x30
#endif
_020276FC:
cmp r4, #0x14
blt _020276DC
_02027704:
ldmia r8, {r0, r1, r2, r3}
stmia r5, {r0, r1, r2, r3}
ldrb r0, [r8, #6]
mov r1, #8
mov r0, r0, lsl #3
sub r0, r0, #8
str r0, [r5, #0x20]
ldrb r0, [r5, #6]
ldrb r2, [r5, #7]
mov r0, r0, lsl #6
mul r0, r2, r0
bl MemAlloc
str r0, [r5, #0x14]
ldrb r0, [r5, #8]
ldr lr, _020278A0 ; =_022A7A74
ldrb r3, [r5, #6]
mov r8, r0, lsl #1
ldrh r0, [lr, r8]
ldrb r2, [r5, #7]
mvn r1, #8
mla ip, r3, r2, r0
strh r0, [r5, #0x12]
ldrsb r2, [r5, #9]
strh ip, [lr, r8]
cmp r2, r1
orreq r1, r0, #0x1000
streqh r1, [r5, #0x30]
strneh r0, [r5, #0x30]
ldrb r1, [r5, #8]
cmp r1, #0
moveq r1, #0x6000000
movne r1, #0x6200000
add r0, r1, r0, lsl #6
str r0, [r5, #0x18]
str r0, [r5, #0x28]
ldrb r3, [r5, #6]
ldrb r2, [r5, #7]
mov r1, #0
mov r0, r4
smulbb r2, r3, r2
mov r2, r2, lsl #6
str r2, [r5, #0x1c]
strb r1, [r5, #0x11]
bl sub_02027B1C
strb r4, [r5, #0x10]
mov r0, #1
strb r0, [r5, #0xb6]
strb r0, [r5, #0xb7]
mov r0, r4
strb r7, [r5, #0xb4]
bl sub_020278C4
mvn r1, #0
add r0, r5, #0x34
str r1, [r5, #0xb8]
bl InitRender3dElement64
mov r1, #2
strb r1, [r5, #0x70]
mov r0, #9
strh r0, [r5, #0x5e]
strb r1, [r5, #0x72]
mov r0, #0x20
strb r0, [r5, #0x60]
strb r0, [r5, #0x61]
strb r0, [r5, #0x62]
mov r1, #0x90
add r0, r5, #0x74
strb r1, [r5, #0x63]
bl InitRender3dElement64
ldr r0, _020278A4 ; =_022A7A6C
mov r1, #0
ldrh r3, [r0, #0x48]
mov r2, #0x18
strh r3, [r5, #0x88]
strh r1, [r5, #0x8a]
strh r1, [r5, #0x8c]
strh r2, [r5, #0x8e]
strh r2, [r5, #0x90]
ldr r2, [r0, #0x54]
str r2, [r5, #0x94]
ldrsh r0, [r0, #0x58]
bl sub_020278A8
str r0, [r5, #0x98]
mov r0, #6
strb r0, [r5, #0xb0]
mov r0, #0xa
strh r0, [r5, #0x9e]
mov r1, #0
strh r1, [r5, #0x74]
strh r1, [r5, #0x76]
strh r1, [r5, #0x78]
add r0, r5, #0xbc
strh r1, [r5, #0x7a]
bl InitWindowTrailer
mov r0, #0
strb r0, [r6]
add r0, r6, #4
bl sub_02029A50
ldrb r1, [r5, #8]
mov r0, r4
strb r1, [r6, #0x2a]
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02027898: .word WINDOW_LIST
_0202789C: .word _022A7B1C
_020278A0: .word _022A7A74
_020278A4: .word _022A7A6C
arm_func_end NewWindow
arm_func_start sub_020278A8
sub_020278A8: ; 0x020278A8
ldr r2, _020278C0 ; =_020AFC70
add r0, r1, r0, lsl #8
ldr r1, [r2]
ldr r1, [r1, #0xe0]
add r0, r1, r0, lsl #1
bx lr
.align 2, 0
_020278C0: .word _020AFC70
arm_func_end sub_020278A8
arm_func_start sub_020278C4
sub_020278C4: ; 0x020278C4
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r1, #0xe0
mul r2, r0, r1
ldr ip, _02027964 ; =_022A7A6C
ldr r4, _02027968 ; =_022A8990
#ifdef JAPAN
ldrsb r3, [ip, #1]
#else
ldrsb r3, [ip, #3]
#endif
mvn r1, #1
ldrsb r8, [r4, r2]
cmp r3, r1
ldreq r1, _0202796C ; =_022A8991
mov r7, r3
#ifdef JAPAN
streqb r0, [ip, #1]
#else
streqb r0, [ip, #3]
#endif
streqb r3, [r1, r2]
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
mov ip, r1
ldr r5, _02027970 ; =WINDOW_LIST
mov lr, #0xe0
b _02027924
_0202790C:
mla r6, r7, lr, r5
ldrsb r4, [r6, #0xb4]
cmp r4, r8
blt _0202792C
mov r1, r7
ldrsb r7, [r6, #0xb5]
_02027924:
cmp r7, ip
bne _0202790C
_0202792C:
mvn ip, #1
cmp r1, ip
ldreq ip, _0202796C ; =_022A8991
ldreq r1, _02027964 ; =_022A7A6C
streqb r3, [ip, r2]
#ifdef JAPAN
streqb r0, [r1, #1]
#else
streqb r0, [r1, #3]
#endif
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
mov r3, #0xe0
mul r3, r1, r3
ldr ip, _0202796C ; =_022A8991
ldrsb r1, [ip, r3]
strb r0, [ip, r3]
strb r1, [ip, r2]
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02027964: .word _022A7A6C
_02027968: .word _022A8990
_0202796C: .word _022A8991
_02027970: .word WINDOW_LIST
arm_func_end sub_020278C4
arm_func_start sub_02027974
sub_02027974: ; 0x02027974
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _020279FC ; =_022A7A6C
mvn r5, #1
#ifdef JAPAN
ldrsb r4, [r1, #1]
#else
ldrsb r4, [r1, #3]
#endif
mov r1, r5
ldr ip, _02027A00 ; =WINDOW_LIST
mov r2, #0xe0
b _020279AC
_02027994:
mla lr, r4, r2, ip
ldrsb r3, [lr, #0x10]
cmp r0, r3
beq _020279B4
mov r5, r4
ldrsb r4, [lr, #0xb5]
_020279AC:
cmp r4, r1
bne _02027994
_020279B4:
mvn ip, #1
cmp r5, ip
bne _020279DC
mov r1, #0xe0
mul r2, r0, r1
ldr r3, _02027A04 ; =_022A8991
ldr r0, _020279FC ; =_022A7A6C
ldrsb r1, [r3, r2]
#ifdef JAPAN
strb r1, [r0, #1]
#else
strb r1, [r0, #3]
#endif
b _020279F4
_020279DC:
mov r0, #0xe0
mul r2, r4, r0
ldr r3, _02027A04 ; =_022A8991
mul r0, r5, r0
ldrsb r1, [r3, r2]
strb r1, [r3, r0]
_020279F4:
strb ip, [r3, r2]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020279FC: .word _022A7A6C
_02027A00: .word WINDOW_LIST
_02027A04: .word _022A8991
arm_func_end sub_02027974
arm_func_start sub_02027A08
sub_02027A08: ; 0x02027A08
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
bl sub_02027974
mov r0, #0xe0
mul r4, r6, r0
ldr r1, _02027A5C ; =_022A8990
mov r0, r6
strb r5, [r1, r4]
bl sub_020278C4
ldr r1, _02027A60 ; =_022A88E4
ldr r0, _02027A64 ; =_020AFD4C
ldrb r3, [r1, r4]
ldr r2, [r0, #8]
mov r1, #1
orr r1, r2, r1, lsl r3
str r1, [r0, #8]
cmp r3, #1
ldmneia sp!, {r4, r5, r6, pc}
bl sub_02027B88
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02027A5C: .word _022A8990
_02027A60: .word _022A88E4
_02027A64: .word _020AFD4C
arm_func_end sub_02027A08
arm_func_start SetScreenWindowsColor
SetScreenWindowsColor: ; 0x02027A68
ldr r2, _02027A7C ; =MENU_CONTROL_PTR
cmp r1, #2
moveq r1, #1
strb r0, [r2, r1]
bx lr
.align 2, 0
_02027A7C: .word MENU_CONTROL_PTR
arm_func_end SetScreenWindowsColor
arm_func_start SetBothScreensWindowsColor
SetBothScreensWindowsColor: ; 0x02027A80
stmdb sp!, {r4, lr}
mov r4, r0
mov r1, #0
bl SetScreenWindowsColor
mov r0, r4
mov r1, #1
bl SetScreenWindowsColor
ldmia sp!, {r4, pc}
arm_func_end SetBothScreensWindowsColor
arm_func_start sub_02027AA0
sub_02027AA0: ; 0x02027AA0
cmp r0, #1
ldreq r0, _02027AE4 ; =_020AFD4C
moveq r1, #1
#ifdef JAPAN
streqb r1, [r0, #3]
#else
streqb r1, [r0]
#endif
bxeq lr
cmp r0, #2
ldreq r0, _02027AE4 ; =_020AFD4C
moveq r1, #1
#ifdef JAPAN
streqb r1, [r0]
#else
streqb r1, [r0, #3]
#endif
bxeq lr
ldr r0, _02027AE8 ; =_020AFD9C
ldr r1, _02027AEC ; =_020AFD94
ldrh r0, [r0]
mov r2, #1
eor r0, r0, #1
strb r2, [r1, r0]
bx lr
.align 2, 0
_02027AE4: .word _020AFD4C
_02027AE8: .word _020AFD9C
_02027AEC: .word _020AFD94
arm_func_end sub_02027AA0
arm_func_start UpdateWindow
UpdateWindow: ; 0x02027AF0
ldr r2, _02027B18 ; =WINDOW_LIST
mov r1, #0xe0
mla r1, r0, r1, r2
ldr r0, [r1, #0x14]
str r0, [r1, #0x24]
ldr r0, [r1, #0x18]
str r0, [r1, #0x28]
ldr r0, [r1, #0x1c]
str r0, [r1, #0x2c]
bx lr
.align 2, 0
_02027B18: .word WINDOW_LIST
arm_func_end UpdateWindow
arm_func_start sub_02027B1C
sub_02027B1C: ; 0x02027B1C
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0xe0
mul r2, r4, r0
ldr r0, _02027B50 ; =_022A88F0
ldr r1, _02027B54 ; =_022A88F8
ldr r0, [r0, r2]
ldr r2, [r1, r2]
mov r1, #0
bl memset
mov r0, r4
bl UpdateWindow
ldmia sp!, {r4, pc}
.align 2, 0
_02027B50: .word _022A88F0
_02027B54: .word _022A88F8
arm_func_end sub_02027B1C
arm_func_start ClearWindow
ClearWindow: ; 0x02027B58
mov r1, #0xe0
mul r2, r0, r1
ldr r0, _02027B7C ; =_022A88F0
ldr r1, _02027B80 ; =_022A88F8
ldr r0, [r0, r2]
ldr r2, [r1, r2]
ldr ip, _02027B84 ; =memset
mov r1, #0
bx ip
.align 2, 0
_02027B7C: .word _022A88F0
_02027B80: .word _022A88F8
_02027B84: .word memset
arm_func_end ClearWindow
arm_func_start sub_02027B88
sub_02027B88: ; 0x02027B88
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #8
ldr r0, _02027E14 ; =_022A7A6C
#ifdef JAPAN
ldrsb r2, [r0, #1]
#else
ldrsb r2, [r0, #3]
#endif
b _02027E00
_02027B9C:
ldr r1, _02027E18 ; =WINDOW_LIST
mov r0, #0xe0
mla r4, r2, r0, r1
ldrb r0, [r4, #8]
cmp r0, #1
ldreqsb r0, [r4, #0xb6]
cmpeq r0, #2
bne _02027DFC
ldrsb r1, [r4, #9]
ldr r0, _02027E1C ; =_0209AC64
rsb r1, r1, #0
mov r1, r1, lsl #1
ldrsb r0, [r0, r1]
cmp r0, #0
bne _02027DF0
ldr r0, _02027E20 ; =MENU_CONTROL_PTR
ldrb r1, [r4, #4]
ldrb r3, [r0, #1]
ldr r2, _02027E24 ; =_0209ACAC
sub r6, r1, #1
ldrb r2, [r2, r3]
ldrb r0, [r4, #5]
add r1, sp, #0
mov r5, r2, lsl #0xc
sub r3, r0, #1
orr r0, r5, #2
mov r2, r0, lsl #0x10
ldr r0, _02027E28 ; =_022A7AE4
str r6, [sp]
mov r2, r2, lsr #0x10
str r3, [sp, #4]
bl sub_0200B3FC
ldr r1, [sp]
orr r0, r5, #3
add r1, r1, #1
mov r0, r0, lsl #0x10
str r1, [sp]
mov r6, r0, lsr #0x10
ldr r8, _02027E28 ; =_022A7AE4
add r7, sp, #0
b _02027C5C
_02027C40:
mov r0, r8
mov r1, r7
mov r2, r6
bl sub_0200B3FC
ldr r0, [sp]
add r0, r0, #1
str r0, [sp]
_02027C5C:
ldrb r1, [r4, #4]
ldrb r0, [r4, #6]
ldr r2, [sp]
add r0, r1, r0
cmp r2, r0
blt _02027C40
orr r0, r5, #4
mov r2, r0, lsl #0x10
ldr r0, _02027E28 ; =_022A7AE4
add r1, sp, #0
mov r2, r2, lsr #0x10
bl sub_0200B3FC
ldr r0, [sp, #4]
orr r1, r5, #5
add r0, r0, #1
str r0, [sp, #4]
orr r0, r5, #1
orr r2, r5, #6
mov r0, r0, lsl #0x10
mov r1, r1, lsl #0x10
mov r2, r2, lsl #0x10
mov r7, r0, lsr #0x10
mov r8, r1, lsr #0x10
mov r6, r2, lsr #0x10
ldr sl, _02027E28 ; =_022A7AE4
add sb, sp, #0
b _02027D44
_02027CC8:
ldrb r2, [r4, #4]
mov r0, sl
mov r1, sb
sub r3, r2, #1
mov r2, r8
str r3, [sp]
bl sub_0200B3FC
ldr r0, [sp]
add r0, r0, #1
str r0, [sp]
b _02027D10
_02027CF4:
mov r0, sl
mov r1, sb
mov r2, r7
bl sub_0200B3FC
ldr r0, [sp]
add r0, r0, #1
str r0, [sp]
_02027D10:
ldrb r1, [r4, #4]
ldrb r0, [r4, #6]
ldr r2, [sp]
add r0, r1, r0
cmp r2, r0
blt _02027CF4
mov r0, sl
mov r1, sb
mov r2, r6
bl sub_0200B3FC
ldr r0, [sp, #4]
add r0, r0, #1
str r0, [sp, #4]
_02027D44:
ldrb r1, [r4, #5]
ldrb r0, [r4, #7]
ldr r2, [sp, #4]
add r0, r1, r0
cmp r2, r0
blt _02027CC8
ldrb r1, [r4, #4]
orr r0, r5, #7
mov r2, r0, lsl #0x10
sub r3, r1, #1
ldr r0, _02027E28 ; =_022A7AE4
add r1, sp, #0
str r3, [sp]
mov r2, r2, lsr #0x10
bl sub_0200B3FC
ldr r1, [sp]
orr r0, r5, #8
add r1, r1, #1
mov r0, r0, lsl #0x10
str r1, [sp]
mov r6, r0, lsr #0x10
ldr r8, _02027E28 ; =_022A7AE4
add r7, sp, #0
b _02027DC0
_02027DA4:
mov r0, r8
mov r1, r7
mov r2, r6
bl sub_0200B3FC
ldr r0, [sp]
add r0, r0, #1
str r0, [sp]
_02027DC0:
ldrb r1, [r4, #4]
ldrb r0, [r4, #6]
ldr r2, [sp]
add r0, r1, r0
cmp r2, r0
blt _02027DA4
orr r0, r5, #9
mov r2, r0, lsl #0x10
ldr r0, _02027E28 ; =_022A7AE4
add r1, sp, #0
mov r2, r2, lsr #0x10
bl sub_0200B3FC
_02027DF0:
ldr r0, _02027E2C ; =_020AFD4C
mov r1, #1
#ifdef JAPAN
strb r1, [r0]
#else
strb r1, [r0, #3]
#endif
_02027DFC:
ldrsb r2, [r4, #0xb5]
_02027E00:
mvn r0, #1
cmp r2, r0
bne _02027B9C
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_02027E14: .word _022A7A6C
_02027E18: .word WINDOW_LIST
_02027E1C: .word _0209AC64
_02027E20: .word MENU_CONTROL_PTR
_02027E24: .word _0209ACAC
_02027E28: .word _022A7AE4
_02027E2C: .word _020AFD4C
arm_func_end sub_02027B88
arm_func_start sub_02027E30
sub_02027E30: ; 0x02027E30
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #8
ldr r3, _02028070 ; =WINDOW_LIST
mov r2, #0xe0
mla r7, r0, r2, r3
ldrsb r0, [r7, #9]
ldr r2, _02028074 ; =_0209AC64
cmp r1, #0
rsb r0, r0, #0
add r4, r2, r0, lsl #1
movne r0, #2
moveq r0, #3
strb r0, [r7, #0xb6]
ldrb r0, [r7, #8]
cmp r0, #1
bne _02027F34
cmp r1, #0
bne _02027F20
ldrsb r1, [r7, #0x10]
ldr r2, _02028070 ; =WINDOW_LIST
mov r0, #0xe0
mla r0, r1, r0, r2
add r0, r0, #0xbc
bl InitWindowTrailer
ldrsb r0, [r4]
cmp r0, #0
blt _02027F20
ldrb r0, [r7, #5]
ldr r6, _02028078 ; =_022A7AE4
add r5, sp, #0
sub r0, r0, #1
str r0, [sp, #4]
mov r4, #0
b _02027F08
_02027EB8:
ldrb r0, [r7, #4]
sub r0, r0, #1
str r0, [sp]
b _02027EE4
_02027EC8:
mov r0, r6
mov r1, r5
mov r2, r4
bl sub_0200B3FC
ldr r0, [sp]
add r0, r0, #1
str r0, [sp]
_02027EE4:
ldrb r1, [r7, #4]
ldrb r0, [r7, #6]
ldr r2, [sp]
add r0, r1, r0
cmp r2, r0
ble _02027EC8
ldr r0, [sp, #4]
add r0, r0, #1
str r0, [sp, #4]
_02027F08:
ldrb r1, [r7, #5]
ldrb r0, [r7, #7]
ldr r2, [sp, #4]
add r0, r1, r0
cmp r2, r0
ble _02027EB8
_02027F20:
bl sub_02027B88
ldr r0, _0202807C ; =_020AFD4C
mov r1, #1
#ifdef JAPAN
strb r1, [r0]
#else
strb r1, [r0, #3]
#endif
b _02028064
_02027F34:
cmp r1, #0
beq _0202801C
ldrb r1, [r7, #4]
mvn r0, #3
mov r1, r1, lsl #3
strh r1, [r7, #0x34]
ldrb r1, [r7, #5]
mov r1, r1, lsl #3
strh r1, [r7, #0x36]
ldrb r1, [r7, #6]
mov r1, r1, lsl #3
strh r1, [r7, #0x38]
ldrb r1, [r7, #7]
mov r1, r1, lsl #3
strh r1, [r7, #0x3a]
ldrh r1, [r7, #0x34]
strh r1, [r7, #0x74]
ldrh r1, [r7, #0x36]
strh r1, [r7, #0x76]
ldrh r1, [r7, #0x38]
strh r1, [r7, #0x78]
ldrh r1, [r7, #0x3a]
strh r1, [r7, #0x7a]
ldrsh r1, [r7, #0x74]
sub r1, r1, #8
strh r1, [r7, #0x74]
ldrsh r1, [r7, #0x76]
sub r1, r1, #8
strh r1, [r7, #0x76]
ldrsh r1, [r7, #0x78]
add r1, r1, #0x10
strh r1, [r7, #0x78]
ldrsh r1, [r7, #0x7a]
add r1, r1, #0x10
strh r1, [r7, #0x7a]
ldrsb r1, [r7, #9]
cmp r1, r0
beq _02027FFC
ldrsh r0, [r7, #0x34]
sub r0, r0, #1
strh r0, [r7, #0x34]
ldrsh r0, [r7, #0x36]
sub r0, r0, #2
strh r0, [r7, #0x36]
ldrsh r0, [r7, #0x38]
add r0, r0, #2
strh r0, [r7, #0x38]
ldrsh r0, [r7, #0x3a]
add r0, r0, #6
strh r0, [r7, #0x3a]
_02027FFC:
ldr r0, _0202807C ; =_020AFD4C
ldrb r0, [r0, #1]
cmp r0, #0
movne r0, #0x90
strneb r0, [r7, #0x63]
moveq r0, #0xff
streqb r0, [r7, #0x63]
b _02028064
_0202801C:
ldrsb r1, [r7, #0x10]
ldr r2, _02028070 ; =WINDOW_LIST
mov r0, #0xe0
mla r0, r1, r0, r2
add r0, r0, #0xbc
bl InitWindowTrailer
mov r0, #0
strh r0, [r7, #0x3a]
strh r0, [r7, #0x38]
strh r0, [r7, #0x36]
strh r0, [r7, #0x34]
strh r0, [r7, #0x74]
ldrh r0, [r7, #0x36]
strh r0, [r7, #0x76]
ldrh r0, [r7, #0x38]
strh r0, [r7, #0x78]
ldrh r0, [r7, #0x3a]
strh r0, [r7, #0x7a]
_02028064:
mov r0, #1
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02028070: .word WINDOW_LIST
_02028074: .word _0209AC64
_02028078: .word _022A7AE4
_0202807C: .word _020AFD4C
arm_func_end sub_02027E30
arm_func_start sub_02028080
sub_02028080: ; 0x02028080
stmdb sp!, {r4, lr}
ldr r3, _020280B8 ; =WINDOW_LIST
mov r2, #0xe0
mla r4, r0, r2, r3
strb r1, [r4, #9]
ldrsb r0, [r4, #0x10]
bl UpdateWindow
ldr r0, _020280BC ; =_020AFD4C
ldrb r1, [r4, #8]
ldr r3, [r0, #8]
mov r2, #1
orr r1, r3, r2, lsl r1
str r1, [r0, #8]
ldmia sp!, {r4, pc}
.align 2, 0
_020280B8: .word WINDOW_LIST
_020280BC: .word _020AFD4C
arm_func_end sub_02028080
arm_func_start sub_020280C0
sub_020280C0: ; 0x020280C0
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
mov r1, #1
mov r5, r0
bl sub_02027E30
cmp r4, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r1, #0xe0
mul r3, r5, r1
ldr r2, _02028104 ; =_022A88E4
ldr r1, _02028108 ; =_020AFD4C
ldrb r2, [r2, r3]
ldr ip, [r1, #8]
mov r3, #1
orr r2, ip, r3, lsl r2
str r2, [r1, #8]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02028104: .word _022A88E4
_02028108: .word _020AFD4C
arm_func_end sub_020280C0
arm_func_start sub_0202810C
sub_0202810C: ; 0x0202810C
ldr ip, _02028118 ; =sub_020280C0
mov r1, #1
bx ip
.align 2, 0
_02028118: .word sub_020280C0
arm_func_end sub_0202810C
arm_func_start sub_0202811C
sub_0202811C: ; 0x0202811C
ldr ip, _02028128 ; =sub_02027E30
mov r1, #1
bx ip
.align 2, 0
_02028128: .word sub_02027E30
arm_func_end sub_0202811C
arm_func_start sub_0202812C
sub_0202812C: ; 0x0202812C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r1, #0xe0
mul r5, r6, r1
ldr r1, _02028188 ; =_022A8992
ldrsb r1, [r1, r5]
cmp r1, #3
moveq r0, #1
ldmeqia sp!, {r4, r5, r6, pc}
mov r1, #0
bl sub_02027E30
mov r4, r0
mov r0, r6
bl sub_0202836C
ldr r0, _0202818C ; =_022A88E4
ldr r1, _02028190 ; =_020AFD4C
ldrb r0, [r0, r5]
ldr r3, [r1, #8]
mov r2, #1
orr r2, r3, r2, lsl r0
mov r0, r4
str r2, [r1, #8]
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02028188: .word _022A8992
_0202818C: .word _022A88E4
_02028190: .word _020AFD4C
arm_func_end sub_0202812C
arm_func_start DeleteWindow
DeleteWindow: ; 0x02028194
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _02028224 ; =WINDOW_LIST
mov r1, #0xe0
mla r4, r0, r1, r2
bl sub_0202812C
ldrb r5, [r4, #8]
ldr lr, _02028224 ; =WINDOW_LIST
mov ip, #1
mov r3, #0
_020281B8:
cmp lr, r4
ldrnesb r0, [lr, #0xb6]
cmpne r0, #0
beq _020281EC
ldrb r0, [lr, #8]
cmp r5, r0
bne _020281EC
ldrh r2, [lr, #0x12]
ldrb r1, [lr, #6]
ldrb r0, [lr, #7]
mla r0, r1, r0, r2
cmp ip, r0
movlt ip, r0
_020281EC:
add r3, r3, #1
cmp r3, #0x14
add lr, lr, #0xe0
blt _020281B8
ldr r0, [r4, #0x14]
ldr r1, _02028228 ; =_022A7A74
mov r2, r5, lsl #1
strh ip, [r1, r2]
bl MemFree
ldrsb r0, [r4, #0x10]
bl sub_02027974
mov r0, #0
strb r0, [r4, #0xb6]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02028224: .word WINDOW_LIST
_02028228: .word _022A7A74
arm_func_end DeleteWindow
arm_func_start sub_0202822C
sub_0202822C: ; 0x0202822C
stmdb sp!, {r4, lr}
ldr r2, _02028258 ; =WINDOW_LIST
mov r1, #0xe0
mla r4, r0, r1, r2
ldr r0, [r4, #0x14]
bl MemFree
ldrsb r0, [r4, #0x10]
bl sub_02027974
mov r0, #0
strb r0, [r4, #0xb6]
ldmia sp!, {r4, pc}
.align 2, 0
_02028258: .word WINDOW_LIST
arm_func_end sub_0202822C
arm_func_start sub_0202825C
sub_0202825C: ; 0x0202825C
ldr r2, _0202826C ; =_022A7A74
mov r0, r0, lsl #1
strh r1, [r2, r0]
bx lr
.align 2, 0
_0202826C: .word _022A7A74
arm_func_end sub_0202825C
arm_func_start sub_02028270
sub_02028270: ; 0x02028270
ldr r1, _02028280 ; =_022A7A74
mov r0, r0, lsl #1
ldrh r0, [r1, r0]
bx lr
.align 2, 0
_02028280: .word _022A7A74
arm_func_end sub_02028270
arm_func_start GetWindowRectangle
GetWindowRectangle: ; 0x02028284
ldr r3, _020282C4 ; =WINDOW_LIST
mov r2, #0xe0
mla r3, r0, r2, r3
ldrb r0, [r3, #5]
mov r2, r0, lsl #3
str r2, [r1]
ldrb r0, [r3, #7]
add r0, r2, r0, lsl #3
str r0, [r1, #4]
ldrb r0, [r3, #4]
mov r2, r0, lsl #3
str r2, [r1, #8]
ldrb r0, [r3, #6]
add r0, r2, r0, lsl #3
str r0, [r1, #0xc]
bx lr
.align 2, 0
_020282C4: .word WINDOW_LIST
arm_func_end GetWindowRectangle
arm_func_start sub_020282C8
sub_020282C8: ; 0x020282C8
ldr r3, _020282F0 ; =WINDOW_LIST
mov r2, #0xe0
mla r2, r0, r2, r3
ldrb r0, [r2, #7]
mov r0, r0, lsl #3
str r0, [r1, #4]
ldrb r0, [r2, #6]
mov r0, r0, lsl #3
str r0, [r1]
bx lr
.align 2, 0
_020282F0: .word WINDOW_LIST
arm_func_end sub_020282C8
arm_func_start sub_020282F4
sub_020282F4: ; 0x020282F4
mov r1, #0xe0
mul r1, r0, r1
ldr r0, _02028308 ; =_022A8994
ldr r0, [r0, r1]
bx lr
.align 2, 0
_02028308: .word _022A8994
arm_func_end sub_020282F4
arm_func_start sub_0202830C
sub_0202830C: ; 0x0202830C
mov r2, #0xe0
mul r2, r0, r2
ldr r0, _02028320 ; =_022A8994
str r1, [r0, r2]
bx lr
.align 2, 0
_02028320: .word _022A8994
arm_func_end sub_0202830C
arm_func_start sub_02028324
sub_02028324: ; 0x02028324
mov r1, #0xe0
mul r1, r0, r1
ldr r0, _02028338 ; =_022A88E4
ldrb r0, [r0, r1]
bx lr
.align 2, 0
_02028338: .word _022A88E4
arm_func_end sub_02028324
arm_func_start GetWindowContents
GetWindowContents: ; 0x0202833C
ldr r2, _02028350 ; =WINDOW_LIST
mov r1, #0xe0
mla r1, r0, r1, r2
ldr r0, [r1, #0xc]
bx lr
.align 2, 0
_02028350: .word WINDOW_LIST
arm_func_end GetWindowContents
arm_func_start sub_02028354
sub_02028354: ; 0x02028354
mov r1, #0xe0
mul r1, r0, r1
ldr r0, _02028368 ; =_022A8992
ldrsb r0, [r0, r1]
bx lr
.align 2, 0
_02028368: .word _022A8992
arm_func_end sub_02028354
arm_func_start sub_0202836C
sub_0202836C: ; 0x0202836C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #8
ldr r2, _02028438 ; =WINDOW_LIST
mov r1, #0xe0
mla r6, r0, r1, r2
ldrb r0, [r6, #8]
cmp r0, #0
bne _020283A4
ldrb r0, [r6, #4]
ldrb r1, [r6, #5]
ldrb r2, [r6, #6]
ldrb r3, [r6, #7]
bl sub_02029154
b _02028428
_020283A4:
ldrb r0, [r6, #8]
bl sub_0202843C
ldrb r1, [r6, #5]
mov r7, r0
add r5, sp, #0
str r1, [sp, #4]
mov r4, #0
b _02028410
_020283C4:
ldrb r0, [r6, #4]
str r0, [sp]
b _020283EC
_020283D0:
mov r0, r7
mov r1, r5
mov r2, r4
bl sub_0200B3FC
ldr r0, [sp]
add r0, r0, #1
str r0, [sp]
_020283EC:
ldrb r1, [r6, #4]
ldrb r0, [r6, #6]
ldr r2, [sp]
add r0, r1, r0
cmp r2, r0
blt _020283D0
ldr r0, [sp, #4]
add r0, r0, #1
str r0, [sp, #4]
_02028410:
ldrb r1, [r6, #5]
ldrb r0, [r6, #7]
ldr r2, [sp, #4]
add r0, r1, r0
cmp r2, r0
blt _020283C4
_02028428:
ldrb r0, [r6, #8]
bl sub_02027AA0
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02028438: .word WINDOW_LIST
arm_func_end sub_0202836C
arm_func_start sub_0202843C
sub_0202843C: ; 0x0202843C
cmp r0, #1
ldreq r0, _02028458 ; =_022A7B00
bxeq lr
cmp r0, #2
ldreq r0, _0202845C ; =_022A7AE4
ldrne r0, _02028460 ; =_022A7AC8
bx lr
.align 2, 0
_02028458: .word _022A7B00
_0202845C: .word _022A7AE4
_02028460: .word _022A7AC8
arm_func_end sub_0202843C
arm_func_start sub_02028464
sub_02028464: ; 0x02028464
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x14
ldr r3, _02028768 ; =WINDOW_LIST
mov r2, #0xe0
mla r4, r0, r2, r3
ldrsb r0, [r4, #9]
ldrb r5, [r4, #8]
ldr r7, _0202876C ; =_0209AC64
rsb r2, r0, #0
mov r0, r5
mov r6, r2, lsl #1
mov r8, r1
bl sub_0202843C
ldrsb r1, [r7, r6]
mov r6, r0
cmp r1, #0
movlt r8, #0
cmp r5, #0
bne _020284D8
ldrh r0, [r4, #0x30]
str r0, [sp]
ldrb r0, [r4, #0x11]
stmib sp, {r0, r8}
ldrb r0, [r4, #4]
ldrb r1, [r4, #5]
ldrb r2, [r4, #6]
ldrb r3, [r4, #7]
bl sub_020291FC
b _02028758
_020284D8:
ldrb r0, [r4, #0x11]
cmp r0, #0
beq _0202857C
ldrh r0, [r4, #0x30]
ldrb r1, [r4, #5]
add r7, sp, #0xc
orr r0, r0, #0x400
mov r0, r0, lsl #0x10
str r1, [sp, #0x10]
mov sb, r0, lsr #0x10
b _02028560
_02028504:
ldrb r1, [r4, #4]
ldrb r0, [r4, #6]
add r0, r1, r0
sub r0, r0, #1
str r0, [sp, #0xc]
b _02028544
_0202851C:
add r0, sb, #1
mov r2, sb
mov r3, r0, lsl #0x10
mov r0, r6
mov r1, r7
mov sb, r3, lsr #0x10
bl sub_0200B3FC
ldr r0, [sp, #0xc]
sub r0, r0, #1
str r0, [sp, #0xc]
_02028544:
ldrb r0, [r4, #4]
ldr r1, [sp, #0xc]
cmp r1, r0
bge _0202851C
ldr r0, [sp, #0x10]
add r0, r0, #1
str r0, [sp, #0x10]
_02028560:
ldrb r0, [r4, #5]
ldrb r1, [r4, #7]
ldr r2, [sp, #0x10]
add r1, r0, r1
cmp r2, r1
blt _02028504
b _02028600
_0202857C:
ldrh r7, [r4, #0x30]
ldrb sl, [r4, #5]
add sb, sp, #0xc
b _020285EC
_0202858C:
mov r1, sl, lsr #0x1f
ldrb r2, [r4, #4]
rsb r0, r1, sl, lsl #27
add r0, r1, r0, ror #27
str r0, [sp, #0x10]
str r2, [sp, #0xc]
b _020285D0
_020285A8:
add r0, r7, #1
mov r2, r7
mov r3, r0, lsl #0x10
mov r0, r6
mov r1, sb
mov r7, r3, lsr #0x10
bl sub_0200B3FC
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
_020285D0:
ldrb r1, [r4, #4]
ldrb r0, [r4, #6]
ldr r2, [sp, #0xc]
add r0, r1, r0
cmp r2, r0
blt _020285A8
add sl, sl, #1
_020285EC:
ldrb r0, [r4, #5]
ldrb r1, [r4, #7]
add r1, r0, r1
cmp sl, r1
blt _0202858C
_02028600:
cmp r8, #0
beq _02028758
subs r0, r0, #1
str r0, [sp, #0x10]
bmi _02028670
ldrb r0, [r4, #4]
add r8, sp, #0xc
mov r7, #0
sub r0, r0, #1
str r0, [sp, #0xc]
b _02028658
_0202862C:
cmp r2, #0
blt _0202864C
cmp r2, #0x20
bge _0202864C
mov r0, r6
mov r1, r8
mov r2, r7
bl sub_0200B3FC
_0202864C:
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
_02028658:
ldrb r1, [r4, #4]
ldrb r0, [r4, #6]
ldr r2, [sp, #0xc]
add r0, r1, r0
cmp r2, r0
ble _0202862C
_02028670:
ldrb r0, [r4, #5]
mov r8, #0
add sb, sp, #0xc
str r0, [sp, #0x10]
mov r7, r8
b _020286DC
_02028688:
ldrb r0, [r4, #4]
subs r0, r0, #1
str r0, [sp, #0xc]
bmi _020286A8
mov r0, r6
mov r1, sb
mov r2, r8
bl sub_0200B3FC
_020286A8:
ldrb r1, [r4, #4]
ldrb r0, [r4, #6]
add r0, r1, r0
str r0, [sp, #0xc]
cmp r0, #0x20
bge _020286D0
mov r0, r6
mov r1, sb
mov r2, r7
bl sub_0200B3FC
_020286D0:
ldr r0, [sp, #0x10]
add r0, r0, #1
str r0, [sp, #0x10]
_020286DC:
ldrb r1, [r4, #5]
ldrb r0, [r4, #7]
ldr r2, [sp, #0x10]
add r0, r1, r0
cmp r2, r0
blt _02028688
cmp r2, #0x18
bge _02028758
ldrb r0, [r4, #4]
add r8, sp, #0xc
mov r7, #0
sub r0, r0, #1
str r0, [sp, #0xc]
b _02028740
_02028714:
cmp r2, #0
blt _02028734
cmp r2, #0x20
bge _02028734
mov r0, r6
mov r1, r8
mov r2, r7
bl sub_0200B3FC
_02028734:
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
_02028740:
ldrb r1, [r4, #4]
ldrb r0, [r4, #6]
ldr r2, [sp, #0xc]
add r0, r1, r0
cmp r2, r0
ble _02028714
_02028758:
mov r0, r5
bl sub_02027AA0
add sp, sp, #0x14
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_02028768: .word WINDOW_LIST
_0202876C: .word _0209AC64
arm_func_end sub_02028464
arm_func_start sub_02028770
sub_02028770: ; 0x02028770
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _020287C0 ; =WINDOW_LIST
mov r5, r0
mov r1, #0xe0
mla r4, r5, r1, r2
bl sub_0202836C
ldr r0, [sp, #0x14]
ldr r2, [sp, #0x18]
strb r0, [r4, #4]
mov r0, r5
mov r1, #1
strb r2, [r4, #5]
bl sub_02027E30
mov r0, r5
mov r1, #1
bl sub_02028464
ldmia sp!, {r3, r4, r5, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_020287C0: .word WINDOW_LIST
arm_func_end sub_02028770
arm_func_start sub_020287C4
sub_020287C4: ; 0x020287C4
ldr r1, _020287DC ; =_020AFD4C
mov r2, #1
ldr r3, [r1, #8]
orr r0, r3, r2, lsl r0
str r0, [r1, #8]
bx lr
.align 2, 0
_020287DC: .word _020AFD4C
arm_func_end sub_020287C4
arm_func_start sub_020287E0
sub_020287E0: ; 0x020287E0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r1, _02028840 ; =_022A7A6C
mov r6, r0
#ifdef JAPAN
ldrsb r0, [r1, #1]
#else
ldrsb r0, [r1, #3]
#endif
mov r1, #0
mov sb, #1
ldr r4, _02028844 ; =WINDOW_LIST
mov r8, #0xe0
mvn r7, #1
b _0202882C
_02028808:
mla r5, r0, r8, r4
ldrsb r2, [r5, #0xb6]
cmp r2, #2
ldreqb r2, [r5, #8]
cmpeq r6, r2
bne _02028828
bl sub_02028464
mov r1, sb
_02028828:
ldrsb r0, [r5, #0xb5]
_0202882C:
cmp r0, r7
bne _02028808
mov r0, r6
bl sub_02027AA0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_02028840: .word _022A7A6C
_02028844: .word WINDOW_LIST
arm_func_end sub_020287E0
arm_func_start sub_02028848
sub_02028848: ; 0x02028848
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r0, _020288D0 ; =_022A7A6C
ldr r6, _020288D4 ; =WINDOW_LIST
#ifdef JAPAN
ldrsb r0, [r0, #1]
#else
ldrsb r0, [r0, #3]
#endif
mov r5, #0xe0
mvn r4, #1
b _02028888
_02028864:
mla r7, r0, r5, r6
ldrsb r0, [r7, #0xb6]
cmp r0, #0
ldrne r1, [r7]
cmpne r1, #0
beq _02028884
mov r0, r7
blx r1
_02028884:
ldrsb r0, [r7, #0xb5]
_02028888:
cmp r0, r4
bne _02028864
ldr r0, _020288D8 ; =_020AFD4C
ldr r0, [r0, #8]
tst r0, #1
beq _020288A8
mov r0, #0
bl sub_020287E0
_020288A8:
ldr r0, _020288D8 ; =_020AFD4C
ldr r0, [r0, #8]
tst r0, #2
beq _020288C0
mov r0, #1
bl sub_020287E0
_020288C0:
ldr r0, _020288D8 ; =_020AFD4C
mov r1, #0
str r1, [r0, #8]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020288D0: .word _022A7A6C
_020288D4: .word WINDOW_LIST
_020288D8: .word _020AFD4C
arm_func_end sub_02028848
arm_func_start sub_020288DC
sub_020288DC: ; 0x020288DC
ldr r2, _020288F4 ; =WINDOW_LIST
mov r1, #0xe0
mla r1, r0, r1, r2
ldr ip, _020288F8 ; =InitWindowTrailer
add r0, r1, #0xbc
bx ip
.align 2, 0
_020288F4: .word WINDOW_LIST
_020288F8: .word InitWindowTrailer
arm_func_end sub_020288DC
arm_func_start sub_020288FC
sub_020288FC: ; 0x020288FC
stmdb sp!, {r4, lr}
sub sp, sp, #8
ldr lr, _02028944 ; =WINDOW_LIST
mov ip, #0xe0
mla r4, r0, ip, lr
ldr lr, [r4, #0xb8]
sub r0, ip, #0xe1
cmp lr, r0
moveq ip, #1
stmia sp, {r2, r3}
movne ip, #0
mov r2, r1
add r0, r4, #0xbc
and r3, ip, #0xff
mov r1, #0
bl sub_02029688
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
_02028944: .word WINDOW_LIST
arm_func_end sub_020288FC
arm_func_start sub_02028948
sub_02028948: ; 0x02028948
stmdb sp!, {r3, lr}
ldr r3, _0202897C ; =WINDOW_LIST
mov r2, #0xe0
mla ip, r0, r2, r3
ldr r3, [ip, #0xb8]
sub r0, r2, #0xe1
cmp r3, r0
moveq r2, #1
movne r2, #0
add r0, ip, #0xbc
and r2, r2, #0xff
bl sub_02029758
ldmia sp!, {r3, pc}
.align 2, 0
_0202897C: .word WINDOW_LIST
arm_func_end sub_02028948
arm_func_start sub_02028980
sub_02028980: ; 0x02028980
stmdb sp!, {r3, lr}
ldr r3, _020289B4 ; =WINDOW_LIST
mov r2, #0xe0
mla ip, r0, r2, r3
ldr r3, [ip, #0xb8]
sub r0, r2, #0xe1
cmp r3, r0
moveq r2, #1
movne r2, #0
add r0, ip, #0xbc
and r2, r2, #0xff
bl sub_02029828
ldmia sp!, {r3, pc}
.align 2, 0
_020289B4: .word WINDOW_LIST
arm_func_end sub_02028980
arm_func_start sub_020289B8
sub_020289B8: ; 0x020289B8
stmdb sp!, {r4, lr}
sub sp, sp, #8
ldr lr, _02028A04 ; =WINDOW_LIST
mov ip, #0xe0
mla r4, r0, ip, lr
ldr lr, [r4, #0xb8]
sub r0, ip, #0xe1
cmp lr, r0
moveq lr, #1
str r3, [sp]
ldr ip, [sp, #0x10]
movne lr, #0
mov r3, r2
add r0, r4, #0xbc
and r2, lr, #0xff
str ip, [sp, #4]
bl sub_020298F8
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
_02028A04: .word WINDOW_LIST
arm_func_end sub_020289B8
arm_func_start sub_02028A08
sub_02028A08: ; 0x02028A08
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr lr, _02028A60 ; =WINDOW_LIST
mov ip, #0xe0
mla r4, r0, ip, lr
sub r0, ip, #0xe1
ldr lr, [r4, #0xb8]
ldr ip, [sp, #0x18]
cmp lr, r0
stmia sp, {r3, ip}
moveq lr, #1
ldr r0, [sp, #0x1c]
movne lr, #0
str r0, [sp, #8]
ldr ip, [sp, #0x20]
mov r3, r2
add r0, r4, #0xbc
and r2, lr, #0xff
str ip, [sp, #0xc]
bl sub_02029998
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_02028A60: .word WINDOW_LIST
arm_func_end sub_02028A08
arm_func_start sub_02028A64
sub_02028A64: ; 0x02028A64
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r1, _02028DE8 ; =_020AFD4C
movs r4, r0
#ifdef JAPAN
strb r4, [r1, #2]
#else
strb r4, [r1, #4]
#endif
mov r5, #8
beq _02028D58
ldr r0, _02028DEC ; =_022A7A6C
mov r1, #0
#ifdef JAPAN
ldrsb r3, [r0, #1]
#else
ldrsb r3, [r0, #3]
strb r3, [r0, #5]
#endif
strh r1, [r0, #6]
b _02028BF4
_02028A94:
ldr r1, _02028DF0 ; =WINDOW_LIST
mov r0, #0xe0
mla r6, r3, r0, r1
ldrsb r1, [r6, #0xb6]
ldr r2, _02028DF4 ; =_022A7B1C
#ifdef JAPAN
mov r0, #0x2c
#else
mov r0, #0x30
#endif
mla r7, r3, r0, r2
cmp r1, #0
#ifdef JAPAN
mov r0, #0
beq _02028BDC
#else
beq _02028BDC
mov r0, #0
#endif
strb r0, [r6, #0xb7]
ldrb r0, [r6, #8]
mov r1, #1
strb r1, [r7]
cmp r0, #0
bne _02028BC4
ldr r0, _02028DF8 ; =MENU_CONTROL_PTR
ldrsb r3, [r6, #9]
ldrb r2, [r0]
ldr r0, _02028DEC ; =_022A7A6C
ldr r1, _02028DFC ; =_0209ACA8
ldrsh r0, [r0, #0x58]
rsb r3, r3, #0
ldrb r1, [r1, r2]
ldr r2, _02028E00 ; =_0209AC64
mov r3, r3, lsl #1
ldrsb r8, [r2, r3]
bl sub_020278A8
mov r1, r5, lsl #1
str r0, [r6, #0x98]
add r0, r1, #9
strh r0, [r6, #0x9e]
add r0, r1, #0xa
strh r0, [r6, #0x5e]
cmp r8, #0
sub r5, r5, #1
blt _02028BC4
ldrsh r0, [r6, #0x38]
cmp r0, #0
beq _02028BC4
ldr r0, _02028E04 ; =_0209AC78
mov r1, r8, lsl #3
add r3, r0, r8, lsl #3
ldrsh r1, [r0, r1]
ldr r0, _02028DEC ; =_022A7A6C
ldrsh r2, [r3, #2]
strh r1, [r6, #0x8a]
ldrsh r8, [r0, #6]
ldrsh r1, [r3, #4]
strh r2, [r6, #0x8c]
ldrsh r0, [r3, #6]
strh r1, [r6, #0x8e]
cmp r8, #0x14
strh r0, [r6, #0x90]
bge _02028BC4
ldr r0, _02028E08 ; =_022A7EDC
add ip, r6, #0x34
add sl, r0, r8, lsl #7
mov sb, #4
_02028B80:
ldmia ip!, {r0, r1, r2, r3}
stmia sl!, {r0, r1, r2, r3}
subs sb, sb, #1
bne _02028B80
ldr r0, _02028E08 ; =_022A7EDC
add sl, r6, #0x74
add r0, r0, r8, lsl #7
add sb, r0, #0x40
mov r8, #4
_02028BA4:
ldmia sl!, {r0, r1, r2, r3}
stmia sb!, {r0, r1, r2, r3}
subs r8, r8, #1
bne _02028BA4
ldr r0, _02028DEC ; =_022A7A6C
ldrsh r1, [r0, #6]
add r1, r1, #1
strh r1, [r0, #6]
_02028BC4:
add r0, r7, #4
add r1, r6, #0xbc
bl sub_02029A68
add r0, r7, #4
bl sub_02029B0C
b _02028BEC
_02028BDC:
#ifdef JAPAN
strb r0, [r7]
#else
mov r1, #0
add r0, r7, #4
strb r1, [r7]
bl sub_02029A50
#endif
_02028BEC:
ldrsb r3, [r6, #0xb5]
#ifndef JAPAN
strb r3, [r7, #0x2c]
#endif
_02028BF4:
mvn r0, #1
cmp r3, r0
bne _02028A94
ldr r1, _02028DEC ; =_022A7A6C
#ifdef JAPAN
ldrb r0, [r1]
#else
ldrb r0, [r1, #4]
#endif
cmp r0, #0
beq _02028C20
ldr r0, _02028E0C ; =_022A7AA0
mov r2, #0
#ifdef JAPAN
strb r2, [r1]
#else
strb r2, [r1, #4]
#endif
bl sub_0200A174
_02028C20:
ldr r1, _02028DEC ; =_022A7A6C
#ifdef JAPAN
ldrb r0, [r1, #4]
#else
ldrb r0, [r1]
#endif
cmp r0, #0
beq _02028C40
ldr r0, _02028E10 ; =_022A7A8C
mov r2, #0
#ifdef JAPAN
strb r2, [r1, #4]
#else
strb r2, [r1]
#endif
bl sub_0200A174
_02028C40:
ldr r1, _02028DEC ; =_022A7A6C
#ifdef JAPAN
ldrb r0, [r1, #2]
#else
ldrb r0, [r1, #1]
#endif
cmp r0, #0
beq _02028C60
ldr r0, _02028E14 ; =_022A7A78
mov r2, #0
#ifdef JAPAN
strb r2, [r1, #2]
#else
strb r2, [r1, #1]
#endif
bl sub_0200A174
_02028C60:
mov r8, #0
ldr r7, _02028DF0 ; =WINDOW_LIST
mov r6, r8
mov r5, #0xe0
_02028C70:
mla sl, r8, r5, r7
ldrsb r0, [sl, #0xb6]
cmp r0, #0
ldrne sb, [sl, #0x2c]
cmpne sb, #0
beq _02028CB8
ldr r0, [sl, #0x28]
ldr r1, [sl, #0x24]
mov r2, sb
bl Memcpy32
ldr r0, [sl, #0x24]
bic r1, sb, #3
add r0, r0, r1
str r0, [sl, #0x24]
ldr r0, [sl, #0x28]
add r0, r0, r1
str r0, [sl, #0x28]
str r6, [sl, #0x2c]
_02028CB8:
add r0, r8, #1
mov r0, r0, lsl #0x18
mov r8, r0, asr #0x18
cmp r8, #0x14
blt _02028C70
ldr r0, _02028E18 ; =_020AFD9C
ldr r1, _02028E1C ; =_020AFD94
ldrh r0, [r0]
ldrb r0, [r1, r0]
cmp r0, #0
beq _02028D08
ldr r0, _02028E20 ; =_022A7AC8
bl sub_02029054
ldr r0, _02028E20 ; =_022A7AC8
bl sub_0200B330
ldr r0, _02028E18 ; =_020AFD9C
ldr r1, _02028E1C ; =_020AFD94
ldrh r0, [r0]
mov r2, #0
strb r2, [r1, r0]
_02028D08:
bl sub_02028FC8
ldr r0, _02028DE8 ; =_020AFD4C
#ifdef JAPAN
ldrb r0, [r0, #3]
#else
ldrb r0, [r0]
#endif
cmp r0, #0
beq _02028D30
ldr r0, _02028E24 ; =_022A7B00
bl sub_0200B330
ldr r0, _02028DE8 ; =_020AFD4C
mov r1, #0
#ifdef JAPAN
strb r1, [r0, #3]
#else
strb r1, [r0]
#endif
_02028D30:
ldr r0, _02028DE8 ; =_020AFD4C
#ifdef JAPAN
ldrb r0, [r0]
#else
ldrb r0, [r0, #3]
#endif
cmp r0, #0
beq _02028DD4
ldr r0, _02028E28 ; =_022A7AE4
bl sub_0200B330
ldr r0, _02028DE8 ; =_020AFD4C
mov r1, #0
#ifdef JAPAN
strb r1, [r0]
#else
strb r1, [r0, #3]
#endif
b _02028DD4
_02028D58:
ldr r0, _02028DEC ; =_022A7A6C
#ifdef JAPAN
ldr r6, _02028DF0 ; =WINDOW_LIST
ldrsb r2, [r0, #1]
ldr r5, _02028DF4 ; =_022A7B1C
mov sb, #0xe0
mov sl, #0x2c
mvn r8, #1
b _02028D90
_02028D70:
mul r1, r2, sl
ldrb r0, [r5, r1]
mla r7, r2, sb, r6
cmp r0, #0
add r0, r5, r1
beq _02028D8C
add r0, r0, #4
bl sub_02029B0C
_02028D8C:
ldrsb r2, [r7, #0xb5]
_02028D90:
cmp r2, r8
#else
ldr r7, _02028DF4 ; =_022A7B1C
ldrsb r0, [r0, #5]
mov r6, #0x30
mvn r5, #1
b _02028D90
_02028D70:
mul r1, r0, r6
ldrb r0, [r7, r1]
add r8, r7, r1
cmp r0, #0
beq _02028D8C
add r0, r8, #4
bl sub_02029B0C
_02028D8C:
ldrsb r0, [r8, #0x2c]
_02028D90:
cmp r0, r5
#endif
bne _02028D70
ldr r0, _02028E18 ; =_020AFD9C
ldr r1, _02028E1C ; =_020AFD94
ldrh r0, [r0]
ldrb r0, [r1, r0]
cmp r0, #0
beq _02028DD4
ldr r0, _02028E20 ; =_022A7AC8
bl sub_02029054
ldr r0, _02028E20 ; =_022A7AC8
bl sub_0200B330
ldr r0, _02028E18 ; =_020AFD9C
ldr r1, _02028E1C ; =_020AFD94
ldrh r0, [r0]
mov r2, #0
strb r2, [r1, r0]
_02028DD4:
bl sub_02029EC4
bl sub_02029FE8
mov r0, r4
bl sub_0202A2C8
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_02028DE8: .word _020AFD4C
_02028DEC: .word _022A7A6C
_02028DF0: .word WINDOW_LIST
_02028DF4: .word _022A7B1C
_02028DF8: .word MENU_CONTROL_PTR
_02028DFC: .word _0209ACA8
_02028E00: .word _0209AC64
_02028E04: .word _0209AC78
_02028E08: .word _022A7EDC
_02028E0C: .word _022A7AA0
_02028E10: .word _022A7A8C
_02028E14: .word _022A7A78
_02028E18: .word _020AFD9C
_02028E1C: .word _020AFD94
_02028E20: .word _022A7AC8
_02028E24: .word _022A7B00
_02028E28: .word _022A7AE4
arm_func_end sub_02028A64
arm_func_start sub_02028E2C
sub_02028E2C: ; 0x02028E2C
ldr r0, _02028E3C ; =_022A7A6C
mov r1, #0
strh r1, [r0, #6]
bx lr
.align 2, 0
_02028E3C: .word _022A7A6C
arm_func_end sub_02028E2C
arm_func_start sub_02028E40
sub_02028E40: ; 0x02028E40
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, #0
ldr r5, _02028E80 ; =_022A7EDC
ldr r4, _02028E84 ; =_022A7A6C
b _02028E6C
_02028E54:
add r7, r5, r6, lsl #7
mov r0, r7
bl sub_0201F2A0
add r0, r7, #0x40
bl sub_0201F2A0
add r6, r6, #1
_02028E6C:
ldrsh r0, [r4, #6]
cmp r6, r0
blt _02028E54
bl sub_0202A388
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02028E80: .word _022A7EDC
_02028E84: .word _022A7A6C
arm_func_end sub_02028E40
arm_func_start sub_02028E88
sub_02028E88: ; 0x02028E88
stmdb sp!, {r3, lr}
mov r0, #8
bl sub_0200302C
ldr r0, _02028ED0 ; =_022A7AC8
bl sub_0200B340
ldr r0, _02028ED4 ; =_022A7B00
bl sub_0200B340
ldr r0, _02028ED8 ; =_022A7AE4
bl sub_0200B340
ldr r0, _02028EDC ; =_022A7AA0
bl sub_0200A184
ldr r0, _02028EE0 ; =_022A7A8C
bl sub_0200A184
ldr r0, _02028EE4 ; =_022A7A78
bl sub_0200A184
mov r0, #8
bl sub_020030FC
ldmia sp!, {r3, pc}
.align 2, 0
_02028ED0: .word _022A7AC8
_02028ED4: .word _022A7B00
_02028ED8: .word _022A7AE4
_02028EDC: .word _022A7AA0
_02028EE0: .word _022A7A8C
_02028EE4: .word _022A7A78
arm_func_end sub_02028E88
arm_func_start sub_02028EE8
sub_02028EE8: ; 0x02028EE8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #8
mov sb, r1
mov sl, r0
mov r8, r2
mov r7, r3
bl sub_0202843C
mov r5, r0
ldr r6, [sb, #4]
add r4, sp, #0
mov fp, #0
b _02028F68
_02028F18:
mov r1, r6, lsr #0x1f
rsb r0, r1, r6, lsl #27
add r0, r1, r0, ror #27
str r0, [sp, #4]
ldr r0, [sb]
str r0, [sp]
b _02028F50
_02028F34:
mov r0, r5
mov r1, r4
mov r2, fp
bl sub_0200B3FC
ldr r0, [sp]
add r0, r0, #1
str r0, [sp]
_02028F50:
ldr r0, [sb]
ldr r1, [sp]
add r0, r0, r8
cmp r1, r0
blt _02028F34
add r6, r6, #1
_02028F68:
ldr r0, [sb, #4]
add r0, r0, r7
cmp r6, r0
blt _02028F18
mov r0, sl
bl sub_02027AA0
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_02028EE8
arm_func_start sub_02028F88
sub_02028F88: ; 0x02028F88
stmdb sp!, {r4, lr}
mov r4, r1
bl sub_0202843C
mov r1, r4
bl sub_0200B3C0
ldmia sp!, {r4, pc}
arm_func_end sub_02028F88
arm_func_start sub_02028FA0
sub_02028FA0: ; 0x02028FA0
mov r1, #0xe0
mul r1, r0, r1
ldr r0, _02028FC4 ; =_022A8908
ldr r0, [r0, r1]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_02028FC4: .word _022A8908
arm_func_end sub_02028FA0
arm_func_start sub_02028FC8
sub_02028FC8: ; 0x02028FC8
ldr r0, _02028FDC ; =_020AFD9C
ldrh r1, [r0]
eor r1, r1, #1
strh r1, [r0]
bx lr
.align 2, 0
_02028FDC: .word _020AFD9C
arm_func_end sub_02028FC8
arm_func_start sub_02028FE0
sub_02028FE0: ; 0x02028FE0
ldr r1, _02028FF8 ; =0x00000904
ldr r2, _02028FFC ; =_022A9A5C
mov r3, #0
smlabb r0, r0, r1, r2
str r3, [r0, #0x900]
bx lr
.align 2, 0
_02028FF8: .word 0x00000904
_02028FFC: .word _022A9A5C
arm_func_end sub_02028FE0
arm_func_start sub_02029000
sub_02029000: ; 0x02029000
ldr r2, _02029034 ; =_022A9A5C
ldr r1, _02029038 ; =0x00000904
smlabb r2, r0, r1, r2
ldr r0, [r2, #0x900]
add r1, r0, #1
mov r0, r0, lsl #0x10
str r1, [r2, #0x900]
cmp r1, #0x10
mov r1, r0, asr #0x10
movge r0, #0x10
strge r0, [r2, #0x900]
add r0, r2, r1, lsl #4
bx lr
.align 2, 0
_02029034: .word _022A9A5C
_02029038: .word 0x00000904
arm_func_end sub_02029000
arm_func_start sub_0202903C
sub_0202903C: ; 0x0202903C
ldr r0, _0202904C ; =_020AFD9C
ldr ip, _02029050 ; =sub_02028FE0
ldrsh r0, [r0]
bx ip
.align 2, 0
_0202904C: .word _020AFD9C
_02029050: .word sub_02028FE0
arm_func_end sub_0202903C
arm_func_start sub_02029054
sub_02029054: ; 0x02029054
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #8
ldr r2, _02029144 ; =_020AFD9C
ldr r1, _02029148 ; =0x00000904
ldrh sl, [r2]
ldr r6, _0202914C ; =_022A9A5C
ldr r2, _02029150 ; =_022AA35C
mul r3, sl, r1
smlabb r4, sl, r1, r6
ldr r1, [r2, r3]
add r5, r4, #0x100
mov fp, r0
mov r4, r1, lsl #0x10
add sb, r6, r3
mov r7, #0
b _02029120
_02029094:
add r8, sb, r7, lsl #4
ldr r6, [r8, #4]
b _02029100
_020290A0:
mov r1, r6, lsr #0x1f
rsb r0, r1, r6, lsl #27
ldr r2, [r8]
add r0, r1, r0, ror #27
str r0, [sp, #4]
str r2, [sp]
b _020290E4
_020290BC:
ldr r0, [sp, #4]
mov r1, r2, lsl #1
add r0, r5, r0, lsl #6
ldrh r2, [r1, r0]
mov r0, fp
add r1, sp, #0
bl sub_0200B3FC
ldr r0, [sp]
add r0, r0, #1
str r0, [sp]
_020290E4:
ldr r1, [r8]
ldr r0, [r8, #8]
ldr r2, [sp]
add r0, r1, r0
cmp r2, r0
blt _020290BC
add r6, r6, #1
_02029100:
ldr r1, [r8, #4]
ldr r0, [r8, #0xc]
add r0, r1, r0
cmp r6, r0
blt _020290A0
add r0, r7, #1
mov r0, r0, lsl #0x10
mov r7, r0, asr #0x10
_02029120:
cmp r7, r4, asr #16
blt _02029094
ldr r0, _02029148 ; =0x00000904
ldr r1, _0202914C ; =_022A9A5C
mov r2, #0
smlabb r0, sl, r0, r1
str r2, [r0, #0x900]
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02029144: .word _020AFD9C
_02029148: .word 0x00000904
_0202914C: .word _022A9A5C
_02029150: .word _022AA35C
arm_func_end sub_02029054
arm_func_start sub_02029154
sub_02029154: ; 0x02029154
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r4, _020291F0 ; =_020AFD9C
mov r7, r0
ldrh r0, [r4]
mov r6, r1
mov r5, r2
eor r0, r0, #1
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
mov r4, r3
bl sub_02029000
ldr r1, _020291F0 ; =_020AFD9C
ldr ip, _020291F4 ; =_022A9A5C
ldrh r3, [r1]
ldr r2, _020291F8 ; =0x00000904
add r1, r7, r5
str r7, [r0]
eor r3, r3, #1
smlabb r2, r3, r2, ip
str r6, [r0, #4]
str r5, [r0, #8]
str r4, [r0, #0xc]
add r5, r2, #0x100
add ip, r6, r4
mov r3, #0
b _020291E4
_020291BC:
mov r0, r6, lsl #5
mov r4, r7
add r0, r5, r0, lsl #1
b _020291D8
_020291CC:
mov r2, r4, lsl #1
strh r3, [r2, r0]
add r4, r4, #1
_020291D8:
cmp r4, r1
blt _020291CC
add r6, r6, #1
_020291E4:
cmp r6, ip
blt _020291BC
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020291F0: .word _020AFD9C
_020291F4: .word _022A9A5C
_020291F8: .word 0x00000904
arm_func_end sub_02029154
arm_func_start sub_020291FC
sub_020291FC: ; 0x020291FC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r4, _0202946C ; =_020AFD9C
mov r5, r0
ldrh r0, [r4]
mov r4, r1
mov r8, r2
eor r0, r0, #1
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
mov r7, r3
ldr r6, [sp, #0x18]
bl sub_02029000
ldr r1, _0202946C ; =_020AFD9C
ldr ip, _02029470 ; =_022A9A5C
ldrh r3, [r1]
ldr r1, _02029474 ; =0x00000904
ldrb r2, [sp, #0x1c]
str r5, [r0]
eor r3, r3, #1
smlabb r1, r3, r1, ip
stmib r0, {r4, r8}
str r7, [r0, #0xc]
cmp r2, #0
add r1, r1, #0x100
beq _020292BC
orr r2, r6, #0x400
mov r2, r2, lsl #0x10
add r3, r5, r8
mov r6, r2, lsr #0x10
sub ip, r3, #1
add lr, r4, r7
b _020292B0
_0202927C:
mov r2, r4, lsl #5
mov r8, ip
add r3, r1, r2, lsl #1
b _020292A4
_0202928C:
add r2, r6, #1
mov r7, r8, lsl #1
mov r2, r2, lsl #0x10
strh r6, [r7, r3]
mov r6, r2, lsr #0x10
sub r8, r8, #1
_020292A4:
cmp r8, r5
bge _0202928C
add r4, r4, #1
_020292B0:
cmp r4, lr
blt _0202927C
b _02029310
_020292BC:
add r2, r5, r8
add r3, r4, r7
b _02029308
_020292C8:
mov r8, r4, lsr #0x1f
rsb r7, r8, r4, lsl #27
add r7, r8, r7, ror #27
mov r7, r7, lsl #5
mov ip, r5
add r8, r1, r7, lsl #1
b _020292FC
_020292E4:
add r7, r6, #1
mov lr, ip, lsl #1
mov r7, r7, lsl #0x10
strh r6, [lr, r8]
mov r6, r7, lsr #0x10
add ip, ip, #1
_020292FC:
cmp ip, r2
blt _020292E4
add r4, r4, #1
_02029308:
cmp r4, r3
blt _020292C8
_02029310:
ldrb r2, [sp, #0x20]
cmp r2, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
ldr r2, [r0]
subs r2, r2, #1
str r2, [r0]
movmi r2, #0
strmi r2, [r0]
ldr r2, [r0, #4]
subs r2, r2, #1
str r2, [r0, #4]
movmi r2, #0
strmi r2, [r0, #4]
ldr r2, [r0, #8]
add r2, r2, #1
str r2, [r0, #8]
cmp r2, #0x20
movgt r2, #0x20
strgt r2, [r0, #8]
ldr r2, [r0, #0xc]
add r2, r2, #1
str r2, [r0, #0xc]
cmp r2, #0x20
movgt r2, #0x20
strgt r2, [r0, #0xc]
ldr r5, [r0, #0xc]
ldmia r0, {r2, r3, r6}
mov r0, r3, lsl #0x10
mov r4, r2, lsl #0x10
mov r5, r5, lsl #0x10
mov r3, r6, lsl #0x10
movs r2, r0, asr #0x10
mov r4, r4, asr #0x10
bmi _020293D8
mov r0, r2, lsl #5
mov r8, r4
add ip, r4, r3, asr #16
add r6, r1, r0, lsl #1
mov r7, #0
b _020293D0
_020293B0:
cmp r8, #0
blt _020293C4
cmp r8, #0x20
movlt r0, r8, lsl #1
strlth r7, [r0, r6]
_020293C4:
add r0, r8, #1
mov r0, r0, lsl #0x10
mov r8, r0, asr #0x10
_020293D0:
cmp r8, ip
ble _020293B0
_020293D8:
add r3, r4, r3, asr #16
add r0, r2, r5, asr #16
mov r5, r3, lsl #0x10
mov r8, r5, asr #0x10
mov lr, #0
mov ip, r4, lsl #1
mov r6, r8, lsl #1
mov r7, lr
b _02029420
_020293FC:
cmp r4, #0
addge r5, r1, r2, lsl #6
strgeh lr, [ip, r5]
cmp r8, #0x20
addlt r5, r1, r2, lsl #6
add r2, r2, #1
mov r2, r2, lsl #0x10
strlth r7, [r6, r5]
mov r2, r2, asr #0x10
_02029420:
cmp r2, r0
blt _020293FC
cmp r2, #0x18
ldmgeia sp!, {r4, r5, r6, r7, r8, pc}
mov r0, r2, lsl #5
add r1, r1, r0, lsl #1
mov r2, #0
b _02029460
_02029440:
cmp r4, #0
blt _02029454
cmp r4, #0x20
movlt r0, r4, lsl #1
strlth r2, [r0, r1]
_02029454:
add r0, r4, #1
mov r0, r0, lsl #0x10
mov r4, r0, asr #0x10
_02029460:
cmp r4, r3
ble _02029440
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_0202946C: .word _020AFD9C
_02029470: .word _022A9A5C
_02029474: .word 0x00000904
arm_func_end sub_020291FC
arm_func_start sub_02029478
sub_02029478: ; 0x02029478
stmdb sp!, {r3, lr}
sub sp, sp, #0x10
mvn r2, #0
cmp r1, r2
ldrnesh r2, [r0, #0x24]
cmpne r1, r2
beq _020294FC
ldrb r0, [r0, #0x26]
cmp r0, #0
bne _020294D0
mov r0, #0xf
str r0, [sp]
mov r0, #4
str r0, [sp, #4]
mov r2, #1
ldr r0, _02029504 ; =CURSOR_ANIMATION_CONTROL
str r2, [sp, #8]
mov r2, #0
mov r3, #0x3f8
str r2, [sp, #0xc]
bl SetAnimationForAnimationControl
b _020294FC
_020294D0:
mov r0, #0xe
str r0, [sp]
mov r0, #4
str r0, [sp, #4]
mov ip, #1
str ip, [sp, #8]
ldr r0, _02029508 ; =CURSOR_16_ANIMATION_CONTROL
mov r2, #0
mov r3, #0x7c
str ip, [sp, #0xc]
bl SetAnimationForAnimationControl
_020294FC:
add sp, sp, #0x10
ldmia sp!, {r3, pc}
.align 2, 0
_02029504: .word CURSOR_ANIMATION_CONTROL
_02029508: .word CURSOR_16_ANIMATION_CONTROL
arm_func_end sub_02029478
arm_func_start LoadCursors
LoadCursors: ; 0x0202950C
stmdb sp!, {r3, lr}
sub sp, sp, #0x10
ldr r0, _02029654 ; =_022AAC68
mov r1, #0
mov r2, #0x15
bl memset
ldr r0, _02029658 ; =WAN_TABLE
ldr r1, _0202965C ; =_0209ADF0
ldr r0, [r0]
mov r2, #0
bl LoadWanTableEntry
ldr r2, _02029660 ; =CURSOR_16_SPRITE_ID
ldr r1, _02029658 ; =WAN_TABLE
strh r0, [r2, #2]
ldr r0, [r1]
ldr r1, _02029664 ; =_0209AE08
mov r2, #0
bl LoadWanTableEntry
ldr r1, _02029660 ; =CURSOR_16_SPRITE_ID
mov r3, #1
strh r0, [r1]
str r3, [sp]
mov r0, #0
str r0, [sp, #4]
ldrsh r0, [r1, #2]
mov r1, #0x3f8
mov r2, #0xf
bl sub_0201D9C8
mov r3, #1
str r3, [sp]
str r3, [sp, #4]
ldr r0, _02029660 ; =CURSOR_16_SPRITE_ID
mov r1, #0x7c
ldrsh r0, [r0]
mov r2, #0xe
bl sub_0201D9C8
ldr r0, _02029668 ; =CURSOR_ANIMATION_CONTROL
bl InitAnimationControlWithSet__0201C0B0
ldr r0, _02029668 ; =CURSOR_ANIMATION_CONTROL
ldr r1, _02029660 ; =CURSOR_16_SPRITE_ID
ldrsh r1, [r1, #2]
bl SetSpriteIdForAnimationControl
mov r0, #0xf
str r0, [sp]
mov r0, #4
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
mov r1, #0
str r1, [sp, #0xc]
ldr r0, _02029668 ; =CURSOR_ANIMATION_CONTROL
mov r2, r1
mov r3, #0x3f8
bl SetAnimationForAnimationControl
mov r1, #0
ldr r0, _02029668 ; =CURSOR_ANIMATION_CONTROL
strh r1, [r0, #0x38]
bl sub_0201C108
ldr r0, _0202966C ; =CURSOR_16_ANIMATION_CONTROL
bl InitAnimationControlWithSet__0201C0B0
ldr r0, _0202966C ; =CURSOR_16_ANIMATION_CONTROL
ldr r1, _02029660 ; =CURSOR_16_SPRITE_ID
ldrsh r1, [r1]
bl SetSpriteIdForAnimationControl
mov r0, #0xe
str r0, [sp]
mov r0, #4
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
str r0, [sp, #0xc]
ldr r0, _0202966C ; =CURSOR_16_ANIMATION_CONTROL
mov r1, #0
mov r2, r1
mov r3, #0x7c
bl SetAnimationForAnimationControl
ldr r0, _0202966C ; =CURSOR_16_ANIMATION_CONTROL
mov r1, #0
strh r1, [r0, #0x38]
bl sub_0201C108
add sp, sp, #0x10
ldmia sp!, {r3, pc}
.align 2, 0
_02029654: .word _022AAC68
_02029658: .word WAN_TABLE
_0202965C: .word _0209ADF0
_02029660: .word CURSOR_16_SPRITE_ID
_02029664: .word _0209AE08
_02029668: .word CURSOR_ANIMATION_CONTROL
_0202966C: .word CURSOR_16_ANIMATION_CONTROL
arm_func_end LoadCursors
arm_func_start InitWindowTrailer
InitWindowTrailer: ; 0x02029670
mov r1, #0
str r1, [r0]
strb r1, [r0, #4]
strb r1, [r0, #0x19]
strb r1, [r0, #0x18]
bx lr
arm_func_end InitWindowTrailer
arm_func_start sub_02029688
sub_02029688: ; 0x02029688
cmp r2, #1
cmpeq r3, #0
moveq r2, #2
cmp r1, #0
ldreq r1, [r0]
cmpeq r1, r2
ldreq r3, [r0, #8]
ldreq r1, [sp]
cmpeq r3, r1
ldreq r3, [r0, #0xc]
ldreq r1, [sp, #4]
cmpeq r3, r1
bxeq lr
str r2, [r0]
mov r1, #1
ldr r2, [sp]
strb r1, [r0, #4]
ldr r1, [sp, #4]
str r2, [r0, #8]
str r1, [r0, #0xc]
mov r1, #0
str r1, [r0, #0x10]
str r1, [r0, #0x14]
bx lr
arm_func_end sub_02029688
arm_func_start sub_020296E8
sub_020296E8: ; 0x020296E8
cmp r1, #0
ldreq r1, [r0]
cmpeq r1, r2
ldreq r3, [r0, #8]
ldreq r1, [sp]
cmpeq r3, r1
ldreq r3, [r0, #0xc]
ldreq r1, [sp, #4]
cmpeq r3, r1
ldreq r3, [r0, #0x10]
ldreq r1, [sp, #8]
cmpeq r3, r1
ldreq r3, [r0, #0x14]
ldreq r1, [sp, #0xc]
cmpeq r3, r1
bxeq lr
str r2, [r0]
mov r1, #1
ldr r2, [sp]
strb r1, [r0, #4]
ldr r1, [sp, #4]
str r2, [r0, #8]
ldr r2, [sp, #8]
str r1, [r0, #0xc]
ldr r1, [sp, #0xc]
str r2, [r0, #0x10]
str r1, [r0, #0x14]
bx lr
arm_func_end sub_020296E8
arm_func_start sub_02029758
sub_02029758: ; 0x02029758
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r4, r1
ldr r1, [r4, #0xc0]
mov r5, r0
mov r6, r2
cmp r1, #0
ble _0202980C
ldr r0, [r4, #0x10]
tst r0, #0x4000000
bne _020297C8
ldr r1, [r4, #0xbc]
mov r0, r4
bl GetPageItemYOffset
ldr r2, [r4, #8]
ldr r1, [r4, #0xb0]
mov r3, r6
add r1, r2, r1
str r1, [sp]
ldr r1, [r4]
mov r2, #1
add r0, r1, r0
str r0, [sp, #4]
ldrb r1, [r4, #0xd4]
mov r0, r5
bl sub_02029688
mov r0, #0
strb r0, [r4, #0xd4]
_020297C8:
mov r0, r4
bl sub_0203293C
strb r0, [r5, #0x18]
mov r0, r4
bl sub_02032918
strb r0, [r5, #0x19]
tst r0, #0xff
ldreqb r0, [r5, #0x18]
cmpeq r0, #0
beq _02029820
ldr r0, [r4, #0xc]
sub r0, r0, #2
str r0, [r5, #0x1c]
ldr r0, [r4]
sub r0, r0, #2
str r0, [r5, #0x20]
b _02029820
_0202980C:
mov r0, #0
str r0, [r5]
strb r0, [r5, #4]
strb r0, [r5, #0x19]
strb r0, [r5, #0x18]
_02029820:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_02029758
arm_func_start sub_02029828
sub_02029828: ; 0x02029828
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r4, r1
ldr r1, [r4, #0xc0]
mov r5, r0
mov r6, r2
cmp r1, #0
ble _020298DC
ldr r0, [r4, #0x10]
tst r0, #0x4000000
bne _02029898
ldr r1, [r4, #0xbc]
mov r0, r4
bl sub_02033350
ldr r2, [r4, #8]
ldr r1, [r4, #0xb0]
mov r3, r6
add r1, r2, r1
str r1, [sp]
ldr r1, [r4]
mov r2, #1
add r0, r1, r0
str r0, [sp, #4]
ldrb r1, [r4, #0xd4]
mov r0, r5
bl sub_02029688
mov r0, #0
strb r0, [r4, #0xd4]
_02029898:
mov r0, r4
bl sub_020333B4
strb r0, [r5, #0x18]
mov r0, r4
bl sub_02033390
strb r0, [r5, #0x19]
tst r0, #0xff
ldreqb r0, [r5, #0x18]
cmpeq r0, #0
beq _020298F0
ldr r0, [r4, #0xc]
sub r0, r0, #2
str r0, [r5, #0x1c]
ldr r0, [r4]
sub r0, r0, #2
str r0, [r5, #0x20]
b _020298F0
_020298DC:
mov r0, #0
str r0, [r5]
strb r0, [r5, #4]
strb r0, [r5, #0x19]
strb r0, [r5, #0x18]
_020298F0:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_02029828
arm_func_start sub_020298F8
sub_020298F8: ; 0x020298F8
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r4, r1
ldr r1, [r4, #0x10]
mov r5, r0
mov lr, r2
tst r1, #0x4000000
bne _02029950
ldr ip, [r4, #8]
ldr r1, [sp, #0x18]
mov r2, r3
add r1, ip, r1
str r1, [sp]
ldr ip, [r4]
ldr r1, [sp, #0x1c]
mov r3, lr
add r1, ip, r1
str r1, [sp, #4]
ldrb r1, [r4, #0xd4]
bl sub_02029688
mov r0, #0
strb r0, [r4, #0xd4]
_02029950:
mov r0, r4
bl sub_0203293C
strb r0, [r5, #0x18]
mov r0, r4
bl sub_02032918
strb r0, [r5, #0x19]
tst r0, #0xff
ldreqb r0, [r5, #0x18]
cmpeq r0, #0
beq _02029990
ldr r0, [r4, #0xc]
sub r0, r0, #2
str r0, [r5, #0x1c]
ldr r0, [r4]
sub r0, r0, #2
str r0, [r5, #0x20]
_02029990:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020298F8
arm_func_start sub_02029998
sub_02029998: ; 0x02029998
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
mov r4, r1
ldr r1, [r4, #0x10]
mov r5, r0
mov lr, r2
tst r1, #0x4000000
bne _02029A08
ldr r1, [r4, #8]
ldr r6, [sp, #0x28]
ldr r7, [sp, #0x30]
ldr ip, [r4]
ldr r2, [sp, #0x2c]
add r8, r1, r6
ldr r6, [sp, #0x34]
str r8, [sp]
add r8, ip, r2
mov r2, r3
str r8, [sp, #4]
add r1, r1, r7
str r1, [sp, #8]
add r1, ip, r6
str r1, [sp, #0xc]
ldrb r1, [r4, #0xd4]
mov r3, lr
bl sub_020296E8
mov r0, #0
strb r0, [r4, #0xd4]
_02029A08:
mov r0, r4
bl sub_0203293C
strb r0, [r5, #0x18]
mov r0, r4
bl sub_02032918
strb r0, [r5, #0x19]
tst r0, #0xff
ldreqb r0, [r5, #0x18]
cmpeq r0, #0
beq _02029A48
ldr r0, [r4, #0xc]
sub r0, r0, #2
str r0, [r5, #0x1c]
ldr r0, [r4]
sub r0, r0, #2
str r0, [r5, #0x20]
_02029A48:
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end sub_02029998
arm_func_start sub_02029A50
sub_02029A50: ; 0x02029A50
mov r2, #0
str r2, [r0]
sub r1, r2, #1
strh r1, [r0, #0x24]
str r2, [r0, #4]
bx lr
arm_func_end sub_02029A50
arm_func_start sub_02029A68
sub_02029A68: ; 0x02029A68
ldr r3, [r1]
ldr r2, [r0]
cmp r2, r3
beq _02029AAC
mov r3, #0
strb r3, [r1, #4]
ldr r2, [r1]
stmia r0, {r2, r3}
ldr r3, [r1, #8]
ldr r2, [r1, #0xc]
str r3, [r0, #8]
str r2, [r0, #0xc]
ldr r3, [r1, #0x10]
ldr r2, [r1, #0x14]
str r3, [r0, #0x10]
str r2, [r0, #0x14]
b _02029AE8
_02029AAC:
cmp r3, #0
ldrneb r2, [r1, #4]
cmpne r2, #0
beq _02029AE8
mov r2, #0
strb r2, [r1, #4]
str r2, [r0, #4]
ldr r3, [r1, #8]
ldr r2, [r1, #0xc]
str r3, [r0, #8]
str r2, [r0, #0xc]
ldr r3, [r1, #0x10]
ldr r2, [r1, #0x14]
str r3, [r0, #0x10]
str r2, [r0, #0x14]
_02029AE8:
ldrb r2, [r1, #0x19]
strb r2, [r0, #0x19]
ldrb r2, [r1, #0x18]
strb r2, [r0, #0x18]
ldr r2, [r1, #0x1c]
ldr r1, [r1, #0x20]
str r2, [r0, #0x1c]
str r1, [r0, #0x20]
bx lr
arm_func_end sub_02029A68
arm_func_start sub_02029B0C
sub_02029B0C: ; 0x02029B0C
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0x24
mov r4, r0
ldr r0, [r4]
cmp r0, #0
beq _02029EB0
cmp r0, #2
ldrne r0, [r4, #4]
addne r0, r0, #1
strne r0, [r4, #4]
ldr r0, [r4, #4]
tst r0, #0x10
bne _02029EB0
ldr r0, [r4]
cmp r0, #7
addls pc, pc, r0, lsl #2
b _02029EB0
_02029B50: ; jump table
b _02029EB0 ; case 0
b _02029B70 ; case 1
b _02029B70 ; case 2
b _02029BBC ; case 3
b _02029C08 ; case 4
b _02029C64 ; case 5
b _02029D38 ; case 6
b _02029D94 ; case 7
_02029B70:
mov r0, r4
mov r1, #0
bl sub_02029478
ldrb r0, [r4, #0x26]
ldr r1, [r4, #8]
cmp r0, #0
bne _02029BA4
ldr r0, _02029EB8 ; =CURSOR_ANIMATION_CONTROL
strh r1, [r0, #0x1c]
ldr r1, [r4, #0xc]
strh r1, [r0, #0x1e]
bl sub_0201CF5C
b _02029EB0
_02029BA4:
ldr r0, _02029EBC ; =CURSOR_16_ANIMATION_CONTROL
strh r1, [r0, #0x1c]
ldr r1, [r4, #0xc]
strh r1, [r0, #0x1e]
bl sub_0201CF5C
b _02029EB0
_02029BBC:
mov r0, r4
mov r1, #0
bl sub_02029478
ldrb r0, [r4, #0x26]
ldr r1, [r4, #8]
cmp r0, #0
bne _02029BF0
ldr r0, _02029EB8 ; =CURSOR_ANIMATION_CONTROL
strh r1, [r0, #0x1c]
ldr r1, [r4, #0xc]
strh r1, [r0, #0x1e]
bl sub_0201CF5C
b _02029EB0
_02029BF0:
ldr r0, _02029EBC ; =CURSOR_16_ANIMATION_CONTROL
strh r1, [r0, #0x1c]
ldr r1, [r4, #0xc]
strh r1, [r0, #0x1e]
bl sub_0201CF5C
b _02029EB0
_02029C08:
mov r0, r4
mov r1, #1
bl sub_02029478
ldrb r0, [r4, #0x26]
ldr r1, [r4, #8]
cmp r0, #0
bne _02029C44
ldr r0, _02029EB8 ; =CURSOR_ANIMATION_CONTROL
sub r1, r1, #4
strh r1, [r0, #0x1c]
ldr r1, [r4, #0xc]
sub r1, r1, #4
strh r1, [r0, #0x1e]
bl sub_0201CF5C
b _02029EB0
_02029C44:
ldr r0, _02029EBC ; =CURSOR_16_ANIMATION_CONTROL
sub r1, r1, #4
strh r1, [r0, #0x1c]
ldr r1, [r4, #0xc]
sub r1, r1, #4
strh r1, [r0, #0x1e]
bl sub_0201CF5C
b _02029EB0
_02029C64:
ldr r1, _02029EC0 ; =0x0000FFFF
mov ip, #0
str ip, [sp]
mov r0, #0x2000
str r0, [sp, #4]
add r0, sp, #0x18
mov r2, r1
mov r3, r1
str ip, [sp, #8]
bl sub_0201C028
mov r0, r4
mov r1, #1
bl sub_02029478
ldrb r0, [r4, #0x26]
add r1, sp, #0x18
cmp r0, #0
bne _02029CF0
ldr r0, _02029EB8 ; =CURSOR_ANIMATION_CONTROL
ldrh r2, [r0, #2]
orr r2, r2, #0x20
strh r2, [r0, #2]
bl sub_0201D110
ldr r1, [r4, #8]
ldr r0, _02029EB8 ; =CURSOR_ANIMATION_CONTROL
sub r1, r1, #4
strh r1, [r0, #0x1c]
ldr r1, [r4, #0xc]
sub r1, r1, #0x10
strh r1, [r0, #0x1e]
bl sub_0201CF5C
ldr r0, _02029EB8 ; =CURSOR_ANIMATION_CONTROL
ldrh r1, [r0, #2]
bic r1, r1, #0x20
strh r1, [r0, #2]
b _02029EB0
_02029CF0:
ldr r0, _02029EBC ; =CURSOR_16_ANIMATION_CONTROL
ldrh r2, [r0, #2]
orr r2, r2, #0x20
strh r2, [r0, #2]
bl sub_0201D110
ldr r1, [r4, #8]
ldr r0, _02029EBC ; =CURSOR_16_ANIMATION_CONTROL
sub r1, r1, #4
strh r1, [r0, #0x1c]
ldr r1, [r4, #0xc]
sub r1, r1, #0x10
strh r1, [r0, #0x1e]
bl sub_0201CF5C
ldr r0, _02029EBC ; =CURSOR_16_ANIMATION_CONTROL
ldrh r1, [r0, #2]
bic r1, r1, #0x20
strh r1, [r0, #2]
b _02029EB0
_02029D38:
mov r0, r4
mov r1, #1
bl sub_02029478
ldrb r0, [r4, #0x26]
ldr r1, [r4, #8]
cmp r0, #0
bne _02029D74
ldr r0, _02029EB8 ; =CURSOR_ANIMATION_CONTROL
sub r1, r1, #4
strh r1, [r0, #0x1c]
ldr r1, [r4, #0xc]
sub r1, r1, #4
strh r1, [r0, #0x1e]
bl sub_0201CF5C
b _02029EB0
_02029D74:
ldr r0, _02029EBC ; =CURSOR_16_ANIMATION_CONTROL
sub r1, r1, #4
strh r1, [r0, #0x1c]
ldr r1, [r4, #0xc]
sub r1, r1, #4
strh r1, [r0, #0x1e]
bl sub_0201CF5C
b _02029EB0
_02029D94:
mov r0, r4
mov r1, #1
bl sub_02029478
ldrb r0, [r4, #0x26]
ldr r1, [r4, #8]
cmp r0, #0
bne _02029DD0
ldr r0, _02029EB8 ; =CURSOR_ANIMATION_CONTROL
sub r1, r1, #4
strh r1, [r0, #0x1c]
ldr r1, [r4, #0x14]
sub r1, r1, #4
strh r1, [r0, #0x1e]
bl sub_0201CF5C
b _02029DEC
_02029DD0:
ldr r0, _02029EBC ; =CURSOR_16_ANIMATION_CONTROL
sub r1, r1, #4
strh r1, [r0, #0x1c]
ldr r1, [r4, #0x14]
sub r1, r1, #4
strh r1, [r0, #0x1e]
bl sub_0201CF5C
_02029DEC:
mov ip, #0
ldr r1, _02029EC0 ; =0x0000FFFF
str ip, [sp]
mov r0, #0x2000
str r0, [sp, #4]
add r0, sp, #0xc
mov r2, r1
mov r3, r1
str ip, [sp, #8]
bl sub_0201C028
ldrb r0, [r4, #0x26]
add r1, sp, #0xc
cmp r0, #0
bne _02029E6C
ldr r0, _02029EB8 ; =CURSOR_ANIMATION_CONTROL
ldrh r2, [r0, #2]
orr r2, r2, #0x20
strh r2, [r0, #2]
bl sub_0201D110
ldr r1, [r4, #8]
ldr r0, _02029EB8 ; =CURSOR_ANIMATION_CONTROL
sub r1, r1, #4
strh r1, [r0, #0x1c]
ldr r1, [r4, #0xc]
sub r1, r1, #0x10
strh r1, [r0, #0x1e]
bl sub_0201CF5C
ldr r0, _02029EB8 ; =CURSOR_ANIMATION_CONTROL
ldrh r1, [r0, #2]
bic r1, r1, #0x20
strh r1, [r0, #2]
b _02029EB0
_02029E6C:
ldr r0, _02029EBC ; =CURSOR_16_ANIMATION_CONTROL
ldrh r2, [r0, #2]
orr r2, r2, #0x20
strh r2, [r0, #2]
bl sub_0201D110
ldr r1, [r4, #8]
ldr r0, _02029EBC ; =CURSOR_16_ANIMATION_CONTROL
sub r1, r1, #4
strh r1, [r0, #0x1c]
ldr r1, [r4, #0xc]
sub r1, r1, #0x10
strh r1, [r0, #0x1e]
bl sub_0201CF5C
ldr r0, _02029EBC ; =CURSOR_16_ANIMATION_CONTROL
ldrh r1, [r0, #2]
bic r1, r1, #0x20
strh r1, [r0, #2]
_02029EB0:
add sp, sp, #0x24
ldmia sp!, {r3, r4, pc}
.align 2, 0
_02029EB8: .word CURSOR_ANIMATION_CONTROL
_02029EBC: .word CURSOR_16_ANIMATION_CONTROL
_02029EC0: .word 0x0000FFFF
arm_func_end sub_02029B0C
arm_func_start sub_02029EC4
sub_02029EC4: ; 0x02029EC4
bx lr
arm_func_end sub_02029EC4
arm_func_start Arm9LoadUnkFieldNa0x2029EC8
Arm9LoadUnkFieldNa0x2029EC8: ; 0x02029EC8
ldr r1, _02029ED4 ; =_022AAC68
ldrb r0, [r1, r0]
bx lr
.align 2, 0
_02029ED4: .word _022AAC68
arm_func_end Arm9LoadUnkFieldNa0x2029EC8
arm_func_start Arm9StoreUnkFieldNa0x2029ED8
Arm9StoreUnkFieldNa0x2029ED8: ; 0x02029ED8
ldr r2, _02029EE4 ; =_022AAC68
strb r1, [r2, r0]
bx lr
.align 2, 0
_02029EE4: .word _022AAC68
arm_func_end Arm9StoreUnkFieldNa0x2029ED8
arm_func_start LoadAlert
LoadAlert: ; 0x02029EE8
stmdb sp!, {r3, lr}
sub sp, sp, #0x10
ldr r0, _02029F74 ; =WAN_TABLE
ldr r1, _02029F78 ; =_0209AE20
ldr r0, [r0]
mov r2, #0
bl LoadWanTableEntry
ldr r1, _02029F7C ; =ALERT_SPRITE_ID
strh r0, [r1]
ldr r0, _02029F80 ; =ALERT_ANIMATION_CONTROL
bl InitAnimationControlWithSet__0201C0B0
ldr r1, _02029F7C ; =ALERT_SPRITE_ID
ldr r0, _02029F80 ; =ALERT_ANIMATION_CONTROL
ldrsh r1, [r1]
bl SetSpriteIdForAnimationControl
mov r1, #0
mov r0, #0xd
stmia sp, {r0, r1}
mov r0, #1
str r0, [sp, #8]
ldr r0, _02029F80 ; =ALERT_ANIMATION_CONTROL
mov r2, r1
mov r3, #0x3e4
str r1, [sp, #0xc]
bl SetAnimationForAnimationControl
ldr r0, _02029F80 ; =ALERT_ANIMATION_CONTROL
mov r1, #0
strh r1, [r0, #0x38]
bl sub_02029FBC
ldr r0, _02029F84 ; =_020AFDA0
mov r1, #0
strb r1, [r0]
str r1, [r0, #4]
add sp, sp, #0x10
ldmia sp!, {r3, pc}
.align 2, 0
_02029F74: .word WAN_TABLE
_02029F78: .word _0209AE20
_02029F7C: .word ALERT_SPRITE_ID
_02029F80: .word ALERT_ANIMATION_CONTROL
_02029F84: .word _020AFDA0
arm_func_end LoadAlert
arm_func_start sub_02029F88
sub_02029F88: ; 0x02029F88
ldr ip, _02029FB4 ; =ALERT_ANIMATION_CONTROL
ldr r3, _02029FB8 ; =_020AFDA0
strh r0, [ip, #0x1c]
strh r1, [ip, #0x1e]
ldrh r1, [ip, #2]
mov r0, #0
str r0, [r3, #4]
bic r0, r1, #2
strh r0, [ip, #2]
strb r2, [r3]
bx lr
.align 2, 0
_02029FB4: .word ALERT_ANIMATION_CONTROL
_02029FB8: .word _020AFDA0
arm_func_end sub_02029F88
arm_func_start sub_02029FBC
sub_02029FBC: ; 0x02029FBC
ldr r1, _02029FE0 ; =ALERT_ANIMATION_CONTROL
ldr r0, _02029FE4 ; =_020AFDA0
ldrh r3, [r1, #2]
mov r2, #0
str r2, [r0, #4]
orr r3, r3, #2
strh r3, [r1, #2]
strb r2, [r0]
bx lr
.align 2, 0
_02029FE0: .word ALERT_ANIMATION_CONTROL
_02029FE4: .word _020AFDA0
arm_func_end sub_02029FBC
arm_func_start sub_02029FE8
sub_02029FE8: ; 0x02029FE8
stmdb sp!, {r3, lr}
ldr r0, _0202A034 ; =ALERT_ANIMATION_CONTROL
ldrh r1, [r0, #2]
tst r1, #2
ldmneia sp!, {r3, pc}
ldr r1, _0202A038 ; =_020AFDA0
ldrb r2, [r1]
cmp r2, #0
beq _0202A02C
ldr r2, [r1, #4]
add r2, r2, #1
str r2, [r1, #4]
ldr r1, [r1, #4]
tst r1, #0x10
ldmneia sp!, {r3, pc}
bl sub_0201CF5C
ldmia sp!, {r3, pc}
_0202A02C:
bl sub_0201CF5C
ldmia sp!, {r3, pc}
.align 2, 0
_0202A034: .word ALERT_ANIMATION_CONTROL
_0202A038: .word _020AFDA0
arm_func_end sub_02029FE8
arm_func_start sub_0202A03C
sub_0202A03C: ; 0x0202A03C
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r5, r0
mov r4, r1
bl sub_020334A8
mov r0, r5
mov r1, r4
bl sub_02033BC0
ldr r0, [r5, #0xd8]
cmp r0, #0
ble _0202A0A8
ldr r1, [r5, #0xec]
cmp r1, #0
ldrge lr, [r5, #0xf0]
cmpge lr, #0
ldrge r2, [r5, #0xe4]
cmpge r2, #0
ldrge r0, [r5, #0xe8]
cmpge r0, #0
blt _0202A0A8
sub r3, r0, r2
mov r0, r4
str r3, [sp]
mov ip, #0x25
sub r3, lr, r1
str ip, [sp, #4]
bl sub_02025D90
_0202A0A8:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0202A03C
arm_func_start sub_0202A0B0
sub_0202A0B0: ; 0x0202A0B0
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r5, r0
mov r4, r1
bl sub_020335A8
mov r0, r5
mov r1, r4
bl sub_02034360
ldr r0, [r5, #0xd8]
cmp r0, #0
ble _0202A11C
ldr r1, [r5, #0xec]
cmp r1, #0
ldrge lr, [r5, #0xf0]
cmpge lr, #0
ldrge r2, [r5, #0xe4]
cmpge r2, #0
ldrge r0, [r5, #0xe8]
cmpge r0, #0
blt _0202A11C
sub r3, r0, r2
mov r0, r4
str r3, [sp]
mov ip, #0x25
sub r3, lr, r1
str ip, [sp, #4]
bl sub_02025D90
_0202A11C:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0202A0B0
arm_func_start sub_0202A124
sub_0202A124: ; 0x0202A124
stmdb sp!, {r3, lr}
ldr r0, _0202A144 ; =0x00000488
mov r1, #0
bl MemAlloc
ldr r1, _0202A148 ; =_020AFDA8
str r0, [r1]
bl sub_0202A14C
ldmia sp!, {r3, pc}
.align 2, 0
_0202A144: .word 0x00000488
_0202A148: .word _020AFDA8
arm_func_end sub_0202A124
arm_func_start sub_0202A14C
sub_0202A14C: ; 0x0202A14C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r5, #0
ldr r8, _0202A1D0 ; =_020AFDA8
mov r4, r5
mov r7, #0x48
_0202A160:
mul r6, r5, r7
ldr r0, [r8]
add r0, r0, r6
add r0, r0, #4
bl InitRender3dElement64
ldr r0, [r8]
mov ip, #4
strb r4, [r0, r6]
ldr sb, [r8]
add lr, sb, r6
add r6, lr, #0x244
_0202A18C:
ldmia lr!, {r0, r1, r2, r3}
stmia r6!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _0202A18C
add r5, r5, #1
ldmia lr, {r0, r1}
stmia r6, {r0, r1}
cmp r5, #8
blo _0202A160
add r0, sb, #0x200
mov r2, #0
ldr r1, _0202A1D0 ; =_020AFDA8
strh r2, [r0, #0x40]
ldr r0, [r1]
add r0, r0, #0x400
strh r2, [r0, #0x84]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0202A1D0: .word _020AFDA8
arm_func_end sub_0202A14C
arm_func_start sub_0202A1D4
sub_0202A1D4: ; 0x0202A1D4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
ldr r4, _0202A2A0 ; =_020AFDA8
mov sb, r0
ldr r0, [r4]
mov r7, r2
add r0, r0, #0x200
mov r8, r1
ldrh r1, [r0, #0x40]
mov r6, r3
mov r2, #1
add r1, r1, #1
strh r1, [r0, #0x40]
ldr r0, [r4]
ldr r5, [sp, #0x20]
add r0, r0, #0x200
ldrh r1, [r0, #0x40]
cmp r1, #8
movhs r1, #0
strhsh r1, [r0, #0x40]
ldr r0, _0202A2A0 ; =_020AFDA8
mov r1, #0x48
ldr r3, [r0]
add r0, r3, #0x200
ldrh r0, [r0, #0x40]
mul r1, r0, r1
add r4, r3, r1
add r0, r4, #4
strb r2, [r3, r1]
bl InitRender3dElement64
mov r0, #2
mov r3, r5
strb r0, [r4, #0x40]
add r2, r4, #0x30
mov r1, #4
_0202A25C:
ldrb r0, [r3], #1
subs r1, r1, #1
strb r0, [r2], #1
bne _0202A25C
ldrb r2, [r5, #3]
mov r1, #8
ldrsh r0, [sp, #0x24]
strb r2, [r4, #0x33]
strh sb, [r4, #4]
strh r8, [r4, #6]
strh r7, [r4, #8]
strh r6, [r4, #0xa]
strh r1, [r4, #0x2e]
strh r7, [r4, #8]
strh r6, [r4, #0xa]
strh r0, [r4, #0x44]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0202A2A0: .word _020AFDA8
arm_func_end sub_0202A1D4
arm_func_start sub_0202A2A4
sub_0202A2A4: ; 0x0202A2A4
stmdb sp!, {r3, lr}
sub sp, sp, #8
ldr lr, [sp, #0x10]
ldrsh ip, [sp, #0x14]
str lr, [sp]
str ip, [sp, #4]
bl sub_0202A1D4
add sp, sp, #8
ldmia sp!, {r3, pc}
arm_func_end sub_0202A2A4
arm_func_start sub_0202A2C8
sub_0202A2C8: ; 0x0202A2C8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r1, _0202A384 ; =_020AFDA8
cmp r0, #0
ldr ip, [r1]
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
add r0, ip, #0x400
mov lr, #0
strh lr, [r0, #0x84]
_0202A2E8:
ldr r0, _0202A384 ; =_020AFDA8
ldr r4, [r0]
add r0, r4, #0x400
ldrh r1, [r0, #0x84]
cmp r1, #8
ldrneb r0, [ip]
cmpne r0, #0
beq _0202A368
mov r0, #0x48
mla r0, r1, r0, r4
mov r7, ip
add r6, r0, #0x244
mov r5, #4
_0202A31C:
ldmia r7!, {r0, r1, r2, r3}
stmia r6!, {r0, r1, r2, r3}
subs r5, r5, #1
bne _0202A31C
ldmia r7, {r0, r1}
stmia r6, {r0, r1}
add r0, r4, #0x400
ldrh r1, [r0, #0x84]
add r1, r1, #1
strh r1, [r0, #0x84]
ldrb r1, [ip, #0x33]
ldrsh r0, [ip, #0x44]
sub r0, r1, r0
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
cmp r0, #0
movle r0, #0
strleb r0, [ip]
strgtb r0, [ip, #0x33]
_0202A368:
add r0, lr, #1
mov r0, r0, lsl #0x10
mov lr, r0, asr #0x10
cmp lr, #8
add ip, ip, #0x48
blt _0202A2E8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0202A384: .word _020AFDA8
arm_func_end sub_0202A2C8
arm_func_start sub_0202A388
sub_0202A388: ; 0x0202A388
stmdb sp!, {r4, r5, r6, lr}
ldr r6, _0202A3E0 ; =_020AFDA8
mov r5, #0
ldr r1, [r6]
add r0, r1, #0x400
ldrh r0, [r0, #0x84]
add r4, r1, #0x244
cmp r0, #0
ldmleia sp!, {r4, r5, r6, pc}
b _0202A3C8
_0202A3B0:
add r0, r4, #4
bl sub_0201F2A0
add r0, r5, #1
mov r0, r0, lsl #0x10
mov r5, r0, asr #0x10
add r4, r4, #0x48
_0202A3C8:
ldr r0, [r6]
add r0, r0, #0x400
ldrh r0, [r0, #0x84]
cmp r5, r0
blt _0202A3B0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0202A3E0: .word _020AFDA8
arm_func_end sub_0202A388
arm_func_start PrintClearMark
PrintClearMark: ; 0x0202A3E4
stmdb sp!, {r3, lr}
mov lr, r1
mov ip, r2
str r3, [sp]
mov r1, r0
mov r2, lr
mov r3, ip
mov r0, #0
bl PrintMark
ldmia sp!, {r3, pc}
arm_func_end PrintClearMark
arm_func_start sub_0202A40C
sub_0202A40C: ; 0x0202A40C
stmdb sp!, {r3, lr}
mov lr, r1
mov ip, r2
str r3, [sp]
mov r1, r0
mov r2, lr
mov r3, ip
mov r0, #1
bl PrintMark
ldmia sp!, {r3, pc}
arm_func_end sub_0202A40C
arm_func_start PrintBadgeMark
PrintBadgeMark: ; 0x0202A434
stmdb sp!, {r3, lr}
mov lr, r1
mov ip, r2
str r3, [sp]
mov r1, r0
mov r2, lr
mov r3, ip
mov r0, #2
bl PrintMark
ldmia sp!, {r3, pc}
arm_func_end PrintBadgeMark
arm_func_start PrintMark
PrintMark: ; 0x0202A45C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x70
mov sl, r0
mov r4, r1
mov sb, r2
mov r8, r3
ldr r7, [sp, #0x90]
bl FileRom_InitDataTransfer
add r0, sp, #0x28
bl FileRom_Veneer_FileInit
ldr r1, _0202A5C0 ; =_020AFDAC
add r0, sp, #0x28
ldr r1, [r1, sl, lsl #2]
bl FileRom_HandleOpen
mov r1, r4, lsl #3
add r0, sp, #0x28
mov r2, #0
bl FileRom_HandleSeek
add r0, sp, #0x28
add r1, sp, #8
mov r2, #0x10
bl FileRom_HandleRead
ldr r6, [sp, #8]
ldr r1, [sp, #0x10]
mov r0, r6
sub r4, r1, r6
ldr r1, [sp, #0xc]
str r0, [sp]
str r1, [sp, #4]
mov r0, r4
mov r1, #8
bl MemAlloc
movs r5, r0
beq _0202A504
add r0, sp, #0x28
mov r1, r6
mov r2, #0
bl FileRom_HandleSeek
add r0, sp, #0x28
mov r1, r5
mov r2, r4
bl FileRom_HandleRead
_0202A504:
add r0, sp, #0x28
bl FileClose
bl FileRom_StopDataTransfer
cmp sl, #2
ldreq r0, _0202A5C4 ; =_0209AE44
add r4, sp, #0x18
ldrne r0, _0202A5C8 ; =_0209AE34
ldmia r0, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
mvn r0, #0
ldrb r2, [sp, #4]
ldrb r1, [sp, #5]
cmp r7, r0
ldreqb r0, [sp, #6]
strb sb, [sp, #0x1c]
strb r8, [sp, #0x1d]
strb r2, [sp, #0x1e]
strb r1, [sp, #0x1f]
addeq r7, r0, #3
beq _0202A564
sub r0, r0, #1
cmp r7, r0
ldreqb r0, [sp, #6]
addeq r7, r0, #0x11
_0202A564:
add r0, sp, #0x18
mov r1, #0
bl CreateTextBox
mov r1, #0
mov r4, r0
bl sub_02027A08
cmp r5, #0
beq _0202A5B4
mov r0, r4
mov r1, r5
mov r2, r7, lsl #4
bl sub_02027040
mov r0, r4
mov r2, r7
add r1, r5, #0x30
bl sub_02026E3C
mov r0, r4
bl UpdateWindow
mov r0, r5
bl MemFree
_0202A5B4:
mov r0, r4
add sp, sp, #0x70
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_0202A5C0: .word _020AFDAC
_0202A5C4: .word _0209AE44
_0202A5C8: .word _0209AE34
arm_func_end PrintMark
arm_func_start CreateParentMenuFromStringIds
CreateParentMenuFromStringIds: ; 0x0202A5CC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r6, r3
mov r8, r1
mov r7, r2
mov sb, r0
mov r1, r6
mov r2, #0
b _0202A5F4
_0202A5EC:
add r1, r1, #8
add r2, r2, #1
_0202A5F4:
ldrh r0, [r1]
cmp r0, #0
bne _0202A5EC
add r0, r2, #1
add r0, r0, r0, lsl #6
mov r0, r0, lsl #2
mov r1, #8
bl MemAlloc
mov r4, r0
mov r5, r4
b _0202A638
_0202A620:
mov r0, r5
bl GetStringFromFileVeneer
ldr r0, [r6, #4]
add r6, r6, #8
str r0, [r5, #0x100]
add r5, r5, #0x104
_0202A638:
ldrh r1, [r6]
cmp r1, #0
bne _0202A620
mov r0, #0
strb r0, [r5]
ldr r6, [r6, #4]
mov r0, sb
mov r1, r8
mov r2, r7
mov r3, r4
str r6, [r5, #0x100]
bl CreateParentMenuInternal
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end CreateParentMenuFromStringIds
arm_func_start IsEmptyString
IsEmptyString: ; 0x0202A66C
cmp r0, #0
moveq r0, #1
bxeq lr
ldrb r0, [r0]
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
arm_func_end IsEmptyString
arm_func_start CreateParentMenu
CreateParentMenu: ; 0x0202A690
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r6, r3
mov r8, r1
mov r7, r2
mov sb, r0
mov r1, r6
mov r2, #0
b _0202A6B8
_0202A6B0:
add r1, r1, #8
add r2, r2, #1
_0202A6B8:
ldr r0, [r1]
cmp r0, #0
bne _0202A6B0
add r0, r2, #1
add r0, r0, r0, lsl #6
mov r0, r0, lsl #2
mov r1, #8
bl MemAlloc
mov r4, r0
mov r5, r4
b _0202A6FC
_0202A6E4:
mov r0, r5
bl strcpy
ldr r0, [r6, #4]
add r6, r6, #8
str r0, [r5, #0x100]
add r5, r5, #0x104
_0202A6FC:
ldr r1, [r6]
cmp r1, #0
bne _0202A6E4
mov r0, #0
strb r0, [r5]
ldr r6, [r6, #4]
mov r0, sb
mov r1, r8
mov r2, r7
mov r3, r4
str r6, [r5, #0x100]
bl CreateParentMenuInternal
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end CreateParentMenu
arm_func_start CreateParentMenuWrapper
CreateParentMenuWrapper: ; 0x0202A730
stmdb sp!, {r4, lr}
bl CreateParentMenu
mov r4, r0
mvn r1, #1
cmp r4, r1
beq _0202A754
bl GetWindowContents
mov r1, #1
strb r1, [r0, #0x1b0]
_0202A754:
mov r0, r4
ldmia sp!, {r4, pc}
arm_func_end CreateParentMenuWrapper
arm_func_start CreateParentMenuInternal
CreateParentMenuInternal: ; 0x0202A75C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x2c
mov r6, r0
mov sl, r1
mov r0, #0x1b4
mov r1, #8
mov sb, r2
mov r8, r3
bl MemAlloc
tst sl, #0x20
ldrne r7, [sb]
mov fp, #0
moveq r7, #0
cmp r6, #0
str fp, [sp, #8]
mov r4, r0
addne ip, sp, #0x1c
ldmneia r6, {r0, r1, r2, r3}
stmneia ip, {r0, r1, r2, r3}
ldrne r0, _0202A94C ; =UpdateParentMenu
mov r5, r8
strne r0, [sp, #0x1c]
bne _0202A7CC
ldr r0, _0202A950 ; =PARENT_MENU_DEFAULT_WINDOW_PARAMS
add r6, sp, #0x1c
ldmia r0, {r0, r1, r2, r3}
stmia r6, {r0, r1, r2, r3}
orr sl, sl, #0x300000
_0202A7CC:
ldrb r0, [sp, #0x22]
str r4, [sp, #0x28]
cmp r0, #0
bne _0202A81C
mov r6, #0
b _0202A7F8
_0202A7E4:
mov r0, r5
bl sub_020265A8
cmp r0, r6
movgt r6, r0
add r5, r5, #0x104
_0202A7F8:
mov r0, r5
bl IsEmptyString
cmp r0, #0
beq _0202A7E4
mov r0, sl
mov r1, sb
add r2, r6, #0x10
bl sub_02031A5C
strb r0, [sp, #0x22]
_0202A81C:
mov r5, r8
and r6, sl, #0x20
b _0202A84C
_0202A828:
cmp r6, #0
beq _0202A83C
ldr r0, [r5, #0x100]
cmp r0, r7
ldreq fp, [sp, #8]
_0202A83C:
ldr r0, [sp, #8]
add r5, r5, #0x104
add r0, r0, #1
str r0, [sp, #8]
_0202A84C:
mov r0, r5
bl IsEmptyString
cmp r0, #0
beq _0202A828
ldrb r0, [sp, #0x23]
cmp r0, #0
bne _0202A880
add r2, sp, #8
mov r0, sl
mov r1, sb
mov r3, r2
bl CalcMenuHeightDiv8__02031AA4
strb r0, [sp, #0x23]
_0202A880:
tst sl, #0x200000
ldrneb r1, [sp, #0x20]
ldrneb r0, [sp, #0x22]
subne r0, r1, r0
strneb r0, [sp, #0x20]
tst sl, #0x100000
ldrneb r1, [sp, #0x21]
ldrneb r0, [sp, #0x23]
subne r0, r1, r0
strneb r0, [sp, #0x21]
ldr r0, _0202A94C ; =UpdateParentMenu
cmp sb, #0
str r0, [r4]
str sl, [r4, #0xfc]
beq _0202A8DC
add r6, r4, #0x100
mov r5, #9
_0202A8C4:
ldmia sb!, {r0, r1, r2, r3}
stmia r6!, {r0, r1, r2, r3}
subs r5, r5, #1
bne _0202A8C4
ldmia sb, {r0, r1}
stmia r6, {r0, r1}
_0202A8DC:
str fp, [r4, #0x100]
str r8, [r4, #0x198]
mov r2, #0
str r2, [r4, #0x19c]
strb r2, [r4, #0x1a0]
strb r2, [r4, #0x1a1]
str r2, [r4, #0x1a4]
str r2, [r4, #0x1a8]
str r2, [r4, #0x1ac]
strb r2, [r4, #0x1b0]
add r0, sp, #0x1c
mov r1, #3
strb r2, [sp, #0x24]
bl NewWindowScreenCheck
add r1, sp, #0xc
mov r6, r0
bl GetWindowRectangle
ldr r5, [sp, #8]
add r3, sp, #0xc
str r5, [sp]
mov r1, sl
add r0, r4, #4
add r2, r4, #0x100
str r5, [sp, #4]
bl InitWindowInput
mov r0, r6
add sp, sp, #0x2c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0202A94C: .word UpdateParentMenu
_0202A950: .word PARENT_MENU_DEFAULT_WINDOW_PARAMS
arm_func_end CreateParentMenuInternal
arm_func_start ResumeParentMenu
ResumeParentMenu: ; 0x0202A954
stmdb sp!, {r3, lr}
bl GetWindowContents
mov r1, #1
str r1, [r0, #0x19c]
mov r1, #0
strb r1, [r0, #0x1a0]
strb r1, [r0, #0x1a1]
str r1, [r0, #0x1a4]
ldr r1, [r0, #0xfc]
bic r1, r1, #0x800000
str r1, [r0, #0xfc]
add r0, r0, #4
bl sub_02032984
ldmia sp!, {r3, pc}
arm_func_end ResumeParentMenu
arm_func_start sub_0202A98C
sub_0202A98C: ; 0x0202A98C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x18
mov r4, r0
mov sb, r1
mov r5, #0
bl GetWindow
mov r7, r0
mov r1, sb
ldr r8, [r7, #0xc]
b _0202A9BC
_0202A9B4:
add r1, r1, #8
add r5, r5, #1
_0202A9BC:
ldr r0, [r1]
cmp r0, #0
bne _0202A9B4
ldr r0, [r8, #0x198]
cmp r0, #0
beq _0202A9D8
bl MemFree
_0202A9D8:
add r0, r5, #1
add r0, r0, r0, lsl #6
mov r0, r0, lsl #2
mov r1, #8
bl MemAlloc
mov r5, r0
mov r6, r5
b _0202AA10
_0202A9F8:
mov r0, r6
bl strcpy
ldr r0, [sb, #4]
add sb, sb, #8
str r0, [r6, #0x100]
add r6, r6, #0x104
_0202AA10:
ldr r1, [sb]
cmp r1, #0
bne _0202A9F8
mov sl, #0
strb sl, [r6]
ldr r0, [sb, #4]
mov sb, r5
str r0, [r6, #0x100]
b _0202AA3C
_0202AA34:
add sb, sb, #0x104
add sl, sl, #1
_0202AA3C:
mov r0, sb
bl IsEmptyString
cmp r0, #0
beq _0202AA34
str r5, [r8, #0x198]
ldrb r0, [r7, #8]
bl sub_020287C4
mov r0, r4
bl UpdateWindow
mov r0, #3
str r0, [r8, #0x19c]
mov r2, #0
strb r2, [r8, #0x1a0]
strb r2, [r8, #0x1a1]
add r1, sp, #8
mov r0, r4
str r2, [r8, #0x1a4]
bl GetWindowRectangle
str sl, [sp]
str sl, [sp, #4]
ldr r1, [r8, #0xfc]
add r0, r8, #4
add r2, r8, #0x100
add r3, sp, #8
bl InitWindowInput
add sp, sp, #0x18
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
arm_func_end sub_0202A98C
arm_func_start SetParentMenuState7
SetParentMenuState7: ; 0x0202AAA8
stmdb sp!, {r3, lr}
bl GetWindowContents
mov r1, #7
str r1, [r0, #0x19c]
ldmia sp!, {r3, pc}
arm_func_end SetParentMenuState7
arm_func_start CloseParentMenu
CloseParentMenu: ; 0x0202AABC
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetWindowContents
mov r4, r0
ldr r0, [r4, #0x198]
bl MemFree
mov r0, r4
bl MemFree
mov r0, r5
bl DeleteWindow
ldmia sp!, {r3, r4, r5, pc}
arm_func_end CloseParentMenu
arm_func_start sub_0202AAE8
sub_0202AAE8: ; 0x0202AAE8
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetWindowContents
mov r4, r0
ldr r0, [r4, #0x19c]
cmp r0, #4
cmpne r0, #5
cmpne r0, #9
movne r0, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r0, #1
strb r0, [r4, #0x1a0]
mov r2, #0
strb r0, [r4, #0x1a1]
mov r0, r5
sub r1, r2, #5
str r2, [r4, #0x1a4]
bl sub_0202830C
mov r0, #7
str r0, [r4, #0x19c]
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0202AAE8
arm_func_start IsParentMenuActive
IsParentMenuActive: ; 0x0202AB40
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0x19c]
cmp r0, #8
cmpne r0, #9
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, pc}
arm_func_end IsParentMenuActive
arm_func_start CheckParentMenuField0x1A0
CheckParentMenuField0x1A0: ; 0x0202AB60
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r0, [r0, #0x1a0]
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end CheckParentMenuField0x1A0
arm_func_start GetWindowIdSelectedItemOnPage
GetWindowIdSelectedItemOnPage: ; 0x0202AB80
stmdb sp!, {r3, lr}
bl GetWindowContents
add r0, r0, #4
bl GetSelectedItemOnPage
ldmia sp!, {r3, pc}
arm_func_end GetWindowIdSelectedItemOnPage
arm_func_start sub_0202AB94
sub_0202AB94: ; 0x0202AB94
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
mov r1, r4
add r0, r0, #4
bl sub_02032684
ldmia sp!, {r4, pc}
arm_func_end sub_0202AB94
arm_func_start GetSimpleMenuResult__0202AEA4
GetSimpleMenuResult__0202AEA4: ; 0x0202ABB0
stmdb sp!, {r4, lr}
bl GetWindowContents
ldrb r1, [r0, #0x1a0]
ldr r4, [r0, #0x198]
cmp r1, #0
beq _0202ABF4
ldrb r1, [r0, #0x1a1]
add r0, r0, #4
cmp r1, #0
beq _0202ABE0
bl GetTotalNumMenuItems
b _0202ABE4
_0202ABE0:
bl GetSelectedMenuItemIdx
_0202ABE4:
add r0, r0, r0, lsl #6
add r0, r4, r0, lsl #2
ldr r0, [r0, #0x100]
ldmia sp!, {r4, pc}
_0202ABF4:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end GetSimpleMenuResult__0202AEA4
arm_func_start UpdateParentMenu
UpdateParentMenu: ; 0x0202ABFC
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x30
mov r6, r0
ldr r4, [r6, #0xc]
ldr r0, [r4, #0x19c]
cmp r0, #7
addls pc, pc, r0, lsl #2
b _0202AF6C
_0202AC1C: ; jump table
b _0202AC3C ; case 0
b _0202AC5C ; case 1
b _0202AC78 ; case 2
b _0202ACDC ; case 3
b _0202AD3C ; case 4
b _0202AEE8 ; case 5
b _0202AEF8 ; case 6
b _0202AF40 ; case 7
_0202AC3C:
ldrsb r0, [r6, #0x10]
bl sub_0202810C
cmp r0, #0
beq _0202AF6C
ldr r1, [r4, #0x1a8]
mov r0, #2
str r1, [r4, #0x1ac]
str r0, [r4, #0x19c]
_0202AC5C:
ldr r0, [r4, #0x19c]
cmp r0, #1
ldreq r1, [r4, #0x1a8]
moveq r0, #2
streq r1, [r4, #0x1ac]
streq r0, [r4, #0x19c]
beq _0202AF6C
_0202AC78:
ldr r0, [r4, #0x1a8]
cmp r0, #0
ble _0202ACD4
ldr r0, [r4, #0x1ac]
mov r1, #0x4000000
cmp r0, #0
subgt r0, r0, #1
strgt r0, [r4, #0x1ac]
ldr r0, [r4, #0x1ac]
cmp r0, #0
add r0, r4, #4
ble _0202ACD0
bl sub_02031C74
mov r1, #0
strb r1, [r4, #0x1a0]
strb r1, [r4, #0x1a1]
str r1, [r4, #0x1a4]
sub r1, r1, #1
mov r0, r6
str r1, [r6, #0xb8]
bl sub_0202AF78
b _0202AF6C
_0202ACD0:
bl sub_02031C84
_0202ACD4:
mov r0, #3
str r0, [r4, #0x19c]
_0202ACDC:
mov r0, r6
bl sub_0202AF78
ldr r0, [r4, #0xfc]
tst r0, #0x800000
beq _0202AD18
mov r0, #9
str r0, [r4, #0x19c]
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
str r0, [r4, #0x1a4]
sub r0, r0, #4
str r0, [r6, #0xb8]
b _0202AF6C
_0202AD18:
mov r1, #4
mov r0, #0
str r1, [r4, #0x19c]
strb r0, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
str r0, [r4, #0x1a4]
sub r0, r0, #1
str r0, [r6, #0xb8]
b _0202AF6C
_0202AD3C:
add r1, sp, #8
add r2, sp, #0xc
add r0, r4, #4
mov r3, #1
bl sub_02031C98
ldr r1, [sp, #8]
mov r5, r0
cmp r1, #0
bne _0202ADAC
ldr r0, [r4, #0xfc]
tst r0, #1
beq _0202ADAC
mov r3, #0
ldr r2, _0202AF74 ; =0x00000408
add r1, sp, #0xc
str r3, [sp]
mov ip, #1
add r0, r4, #4
str ip, [sp, #4]
bl sub_02032160
movs r1, r0
bmi _0202ADAC
add r0, r4, #4
bl sub_02032684
ldr r0, [sp, #8]
mov r5, #1
orr r0, r0, #1
str r0, [sp, #8]
_0202ADAC:
ldr r0, [sp, #8]
cmp r0, #0
bne _0202ADCC
add r1, sp, #8
add r2, sp, #0xc
add r0, r4, #4
bl sub_02033758
orr r5, r5, r0
_0202ADCC:
add r0, r4, #4
bl GetSelectedMenuItemIdx
mov r2, r0
ldr r1, [sp, #8]
add r0, r4, #4
mov r3, #0
bl sub_020323F8
orrs r0, r5, r0
beq _0202ADF8
mov r0, r6
bl sub_0202AF78
_0202ADF8:
ldr r1, [sp, #8]
tst r1, #1
beq _0202AE68
add r0, r4, #4
bl IsMenuOptionActive
cmp r0, #0
beq _0202AE58
ldr r0, [r4, #0xfc]
tst r0, #0x80000000
bne _0202AE2C
add r0, r4, #4
mov r1, #0
bl PlayWindowInputSound
_0202AE2C:
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
ldr r1, [sp, #8]
sub r0, r0, #4
str r1, [r4, #0x1a4]
str r0, [r6, #0xb8]
mov r0, #5
str r0, [r4, #0x19c]
b _0202AED8
_0202AE58:
add r0, r4, #4
mov r1, #2
bl PlayWindowInputSound
b _0202AED8
_0202AE68:
tst r1, #2
add r0, r4, #4
beq _0202AEA4
mov r1, #1
bl PlayWindowInputSound
mov r0, #1
strb r0, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
ldr r1, [sp, #8]
sub r0, r0, #6
str r1, [r4, #0x1a4]
str r0, [r6, #0xb8]
mov r0, #5
str r0, [r4, #0x19c]
b _0202AED8
_0202AEA4:
bl sub_0203250C
cmp r0, #0
beq _0202AED8
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
ldr r1, [sp, #8]
sub r0, r0, #4
str r1, [r4, #0x1a4]
str r0, [r6, #0xb8]
mov r0, #5
str r0, [r4, #0x19c]
_0202AED8:
ldrsb r0, [r6, #0x10]
add r1, r4, #4
bl sub_02028948
b _0202AF6C
_0202AEE8:
add r0, r4, #4
bl sub_02032070
cmp r0, #0
bne _0202AF6C
_0202AEF8:
ldrb r0, [r4, #0x1a1]
cmp r0, #0
bne _0202AF24
ldr r0, [r4, #0xfc]
tst r0, #0x400000
beq _0202AF38
mov r0, r6
bl sub_0202AF78
mov r0, #9
str r0, [r4, #0x19c]
b _0202AF6C
_0202AF24:
ldrb r0, [r4, #0x1b0]
cmp r0, #0
movne r0, #9
strne r0, [r4, #0x19c]
bne _0202AF6C
_0202AF38:
mov r0, #7
str r0, [r4, #0x19c]
_0202AF40:
ldrsb r0, [r6, #0x10]
bl sub_0202812C
cmp r0, #0
beq _0202AF6C
ldrb r0, [r4, #0x1a1]
cmp r0, #0
mvnne r0, #4
mvneq r0, #3
str r0, [r6, #0xb8]
mov r0, #8
str r0, [r4, #0x19c]
_0202AF6C:
add sp, sp, #0x30
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0202AF74: .word 0x00000408
arm_func_end UpdateParentMenu
arm_func_start sub_0202AF78
sub_0202AF78: ; 0x0202AF78
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
ldr r5, [sl, #0xc]
mov r7, #0
ldr r0, [r5, #0xfc]
ldr r6, [r5, #0x198]
tst r0, #0x200
ldrne r8, [r5, #0x160]
ldrsb r0, [sl, #0x10]
moveq r8, #0
bl sub_02027B1C
mov fp, #1
mov r4, r7
b _0202B008
_0202AFB0:
mov r1, r4
cmp r8, #0
beq _0202AFCC
ldrb r0, [r8]
add r8, r8, #1
tst r0, #2
movne r1, fp
_0202AFCC:
cmp r1, #0
movne sb, #0x42
moveq sb, #0x44
mov r1, r7
add r0, r5, #4
bl GetPageItemYOffset
and r1, sb, #0xff
str r1, [sp]
mov r2, r0
ldrsb r0, [sl, #0x10]
mov r1, #0xd
mov r3, r6
bl sub_020263C8
add r7, r7, #1
add r6, r6, #0x104
_0202B008:
mov r0, r6
bl IsEmptyString
cmp r0, #0
beq _0202AFB0
ldrsb r1, [sl, #0x10]
add r0, r5, #4
bl sub_0202A03C
ldrsb r0, [sl, #0x10]
bl UpdateWindow
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_0202AF78
arm_func_start sub_0202B030
sub_0202B030: ; 0x0202B030
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetWindowContents
mov r4, r0
add r0, r4, #4
bl IsMenuOptionActive
cmp r0, #0
beq _0202B094
ldr r0, [r4, #0xfc]
tst r0, #0x80000000
bne _0202B068
add r0, r4, #4
mov r1, #0
bl PlayWindowInputSound
_0202B068:
mov r2, #1
mov r1, #0
strb r2, [r4, #0x1a0]
strb r1, [r4, #0x1a1]
mov r0, r5
sub r1, r1, #4
str r2, [r4, #0x1a4]
bl sub_0202830C
mov r0, #6
str r0, [r4, #0x19c]
ldmia sp!, {r3, r4, r5, pc}
_0202B094:
add r0, r4, #4
mov r1, #2
bl PlayWindowInputSound
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0202B030
arm_func_start sub_0202B0A4
sub_0202B0A4: ; 0x0202B0A4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
bl GetWindowContents
mov r4, r0
cmp r5, #0
add r0, r4, #4
mov r1, #0xb000000
beq _0202B0D8
bl sub_02031C74
add r0, r4, #4
mov r1, #0x10
bl sub_02031C84
ldmia sp!, {r3, r4, r5, pc}
_0202B0D8:
bl sub_02031C84
add r0, r4, #4
mov r1, #0x10
bl sub_02031C74
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0202B0A4
arm_func_start CreateSimpleMenuFromStringIds
CreateSimpleMenuFromStringIds: ; 0x0202B0EC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov r7, r3
mov sb, r1
mov r8, r2
mov sl, r0
mov r1, r7
mov r2, #0
b _0202B114
_0202B10C:
add r1, r1, #8
add r2, r2, #1
_0202B114:
ldrh r0, [r1]
cmp r0, #0
bne _0202B10C
add r0, r2, #1
add r0, r0, r0, lsl #6
mov r0, r0, lsl #2
mov r1, #8
bl MemAlloc
mov r5, r0
mov r6, r5
mov r4, #0
mov fp, #0x100
b _0202B16C
_0202B148:
ldr r3, _0202B1A8 ; =0x0000C402
mov r0, r6
mov r1, fp
str r4, [sp]
bl PreprocessStringFromId
ldr r0, [r7, #4]
add r7, r7, #8
str r0, [r6, #0x100]
add r6, r6, #0x104
_0202B16C:
ldrh r2, [r7]
cmp r2, #0
bne _0202B148
mov r0, #0
strb r0, [r6]
ldr r0, [r7, #4]
ldr r4, [sp, #0x28]
str r0, [r6, #0x100]
mov r0, sl
mov r1, sb
mov r2, r8
mov r3, r5
str r4, [sp]
bl CreateSimpleMenuInternal
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0202B1A8: .word 0x0000C402
arm_func_end CreateSimpleMenuFromStringIds
arm_func_start CreateSimpleMenu
CreateSimpleMenu: ; 0x0202B1AC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #4
mov r6, r3
mov sb, r0
mov r8, r1
mov r7, r2
mov r4, r6
mov r5, #0
b _0202B1D8
_0202B1D0:
add r4, r4, #0x104
add r5, r5, #1
_0202B1D8:
mov r0, r4
bl IsEmptyString
cmp r0, #0
beq _0202B1D0
add r0, r5, #1
add r0, r0, r0, lsl #6
mov r0, r0, lsl #2
mov r1, #8
bl MemAlloc
mov r4, r0
mov r5, r4
b _0202B234
_0202B208:
mov sl, r6
mov ip, r5
add r6, r6, #0x104
add r5, r5, #0x104
mov lr, #0x10
_0202B21C:
ldmia sl!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
subs lr, lr, #1
bne _0202B21C
ldr r0, [sl]
str r0, [ip]
_0202B234:
mov r0, r6
bl IsEmptyString
cmp r0, #0
beq _0202B208
mov ip, #0x10
_0202B248:
ldmia r6!, {r0, r1, r2, r3}
stmia r5!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _0202B248
ldr r0, [r6]
ldr r6, [sp, #0x28]
str r0, [r5]
mov r0, sb
mov r1, r8
mov r2, r7
mov r3, r4
str r6, [sp]
bl CreateSimpleMenuInternal
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
arm_func_end CreateSimpleMenu
arm_func_start CreateSimpleMenuInternal
CreateSimpleMenuInternal: ; 0x0202B284
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x2c
mov r6, r0
mov sl, r1
mov r0, #0x1b4
mov r1, #8
mov sb, r2
mov r8, r3
bl MemAlloc
tst sl, #0x20
ldrne r7, [sb]
mov fp, #0
moveq r7, #0
cmp r6, #0
str fp, [sp, #8]
mov r4, r0
addne ip, sp, #0x1c
ldmneia r6, {r0, r1, r2, r3}
stmneia ip, {r0, r1, r2, r3}
ldrne r0, _0202B488 ; =UpdateSimpleMenu
mov r5, r8
orr sl, sl, #0x8000
strne r0, [sp, #0x1c]
bne _0202B2F8
ldr r0, _0202B48C ; =SIMPLE_MENU_DEFAULT_WINDOW_PARAMS
add r6, sp, #0x1c
ldmia r0, {r0, r1, r2, r3}
stmia r6, {r0, r1, r2, r3}
orr sl, sl, #0x300000
_0202B2F8:
ldrb r0, [sp, #0x22]
str r4, [sp, #0x28]
cmp r0, #0
bne _0202B348
mov r6, #0
b _0202B324
_0202B310:
mov r0, r5
bl sub_020265A8
cmp r0, r6
movgt r6, r0
add r5, r5, #0x104
_0202B324:
mov r0, r5
bl IsEmptyString
cmp r0, #0
beq _0202B310
mov r0, sl
mov r1, sb
add r2, r6, #0x10
bl sub_02031A5C
strb r0, [sp, #0x22]
_0202B348:
mov r5, r8
b _0202B36C
_0202B350:
ldr r0, [r5, #0x100]
add r5, r5, #0x104
cmp r0, r7
ldr r0, [sp, #8]
ldreq fp, [sp, #8]
add r0, r0, #1
str r0, [sp, #8]
_0202B36C:
mov r0, r5
bl IsEmptyString
cmp r0, #0
beq _0202B350
ldr r0, [sp, #0x50]
add r2, sp, #8
cmp r0, #0
ldrle r0, [sp, #8]
add r3, sp, #0x50
strle r0, [sp, #0x50]
ldrb r0, [sp, #0x23]
cmp r0, #0
mov r0, sl
bne _0202B3B4
mov r1, sb
bl CalcMenuHeightDiv8__02031AA4
strb r0, [sp, #0x23]
b _0202B3BC
_0202B3B4:
mov r1, sb
bl CalcMenuHeightDiv8__02031AA4
_0202B3BC:
tst sl, #0x200000
ldrneb r1, [sp, #0x20]
ldrneb r0, [sp, #0x22]
subne r0, r1, r0
strneb r0, [sp, #0x20]
tst sl, #0x100000
ldrneb r1, [sp, #0x21]
ldrneb r0, [sp, #0x23]
subne r0, r1, r0
strneb r0, [sp, #0x21]
ldr r0, _0202B488 ; =UpdateSimpleMenu
cmp sb, #0
str r0, [r4]
str sl, [r4, #0xfc]
beq _0202B418
add r6, r4, #0x100
mov r5, #9
_0202B400:
ldmia sb!, {r0, r1, r2, r3}
stmia r6!, {r0, r1, r2, r3}
subs r5, r5, #1
bne _0202B400
ldmia sb, {r0, r1}
stmia r6, {r0, r1}
_0202B418:
str fp, [r4, #0x100]
str r8, [r4, #0x198]
mov r2, #0
str r2, [r4, #0x19c]
strb r2, [r4, #0x1a0]
strb r2, [r4, #0x1a1]
str r2, [r4, #0x1a4]
str r2, [r4, #0x1ac]
str r2, [r4, #0x1b0]
add r0, sp, #0x1c
mov r1, #3
strb r2, [sp, #0x24]
bl NewWindowScreenCheck
add r1, sp, #0xc
mov r6, r0
bl GetWindowRectangle
ldr r0, [sp, #8]
add r3, sp, #0xc
str r0, [sp]
ldr r5, [sp, #0x50]
mov r1, sl
add r0, r4, #4
add r2, r4, #0x100
str r5, [sp, #4]
bl InitWindowInput
mov r0, r6
add sp, sp, #0x2c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0202B488: .word UpdateSimpleMenu
_0202B48C: .word SIMPLE_MENU_DEFAULT_WINDOW_PARAMS
arm_func_end CreateSimpleMenuInternal
arm_func_start ResumeSimpleMenu
ResumeSimpleMenu: ; 0x0202B490
stmdb sp!, {r3, lr}
bl GetWindowContents
mov r1, #1
str r1, [r0, #0x19c]
mov r1, #0
strb r1, [r0, #0x1a0]
strb r1, [r0, #0x1a1]
ldr r1, [r0, #0xfc]
bic r1, r1, #0x800000
str r1, [r0, #0xfc]
add r0, r0, #4
bl sub_02032984
ldmia sp!, {r3, pc}
arm_func_end ResumeSimpleMenu
arm_func_start CloseSimpleMenu
CloseSimpleMenu: ; 0x0202B4C4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetWindowContents
mov r4, r0
ldr r0, [r4, #0x198]
bl MemFree
mov r0, r4
bl MemFree
mov r0, r5
bl DeleteWindow
ldmia sp!, {r3, r4, r5, pc}
arm_func_end CloseSimpleMenu
arm_func_start IsSimpleMenuActive
IsSimpleMenuActive: ; 0x0202B4F0
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0x19c]
cmp r0, #7
cmpne r0, #8
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, pc}
arm_func_end IsSimpleMenuActive
arm_func_start CheckSimpleMenuField0x1A0
CheckSimpleMenuField0x1A0: ; 0x0202B510
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r0, [r0, #0x1a0]
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end CheckSimpleMenuField0x1A0
arm_func_start sub_0202B530
sub_0202B530: ; 0x0202B530
stmdb sp!, {r3, lr}
bl GetWindowContents
add r0, r0, #4
bl GetSelectedItemOnPage
ldmia sp!, {r3, pc}
arm_func_end sub_0202B530
arm_func_start sub_0202B544
sub_0202B544: ; 0x0202B544
stmdb sp!, {r3, lr}
bl GetWindowContents
add r0, r0, #4
bl GetCurrentPage
ldmia sp!, {r3, pc}
arm_func_end sub_0202B544
arm_func_start GetSimpleMenuField0x1A4
GetSimpleMenuField0x1A4: ; 0x0202B558
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0x1a4]
ldmia sp!, {r3, pc}
arm_func_end GetSimpleMenuField0x1A4
arm_func_start sub_0202B568
sub_0202B568: ; 0x0202B568
stmdb sp!, {r3, lr}
bl GetWindowContents
add r0, r0, #4
bl GetMaxItemsOnPage
ldmia sp!, {r3, pc}
arm_func_end sub_0202B568
arm_func_start GetSimpleMenuResult__0202B870
GetSimpleMenuResult__0202B870: ; 0x0202B57C
stmdb sp!, {r4, lr}
bl GetWindowContents
ldrb r1, [r0, #0x1a0]
ldr r4, [r0, #0x198]
cmp r1, #0
beq _0202B5C0
ldrb r1, [r0, #0x1a1]
add r0, r0, #4
cmp r1, #0
beq _0202B5AC
bl GetTotalNumMenuItems
b _0202B5B0
_0202B5AC:
bl GetSelectedMenuItemIdx
_0202B5B0:
add r0, r0, r0, lsl #6
add r0, r4, r0, lsl #2
ldr r0, [r0, #0x100]
ldmia sp!, {r4, pc}
_0202B5C0:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end GetSimpleMenuResult__0202B870
arm_func_start UpdateSimpleMenu
UpdateSimpleMenu: ; 0x0202B5C8
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x30
mov r6, r0
ldr r4, [r6, #0xc]
ldr r0, [r4, #0x19c]
cmp r0, #6
addls pc, pc, r0, lsl #2
b _0202B928
_0202B5E8: ; jump table
b _0202B604 ; case 0
b _0202B624 ; case 1
b _0202B640 ; case 2
b _0202B6A4 ; case 3
b _0202B704 ; case 4
b _0202B8B8 ; case 5
b _0202B8FC ; case 6
_0202B604:
ldrsb r0, [r6, #0x10]
bl sub_0202810C
cmp r0, #0
beq _0202B928
ldr r1, [r4, #0x1ac]
mov r0, #2
str r1, [r4, #0x1b0]
str r0, [r4, #0x19c]
_0202B624:
ldr r0, [r4, #0x19c]
cmp r0, #1
ldreq r1, [r4, #0x1ac]
moveq r0, #2
streq r1, [r4, #0x1b0]
streq r0, [r4, #0x19c]
beq _0202B928
_0202B640:
ldr r0, [r4, #0x1ac]
cmp r0, #0
ble _0202B69C
ldr r0, [r4, #0x1b0]
mov r1, #0x4000000
cmp r0, #0
subgt r0, r0, #1
strgt r0, [r4, #0x1b0]
ldr r0, [r4, #0x1b0]
cmp r0, #0
add r0, r4, #4
ble _0202B698
bl sub_02031C74
mov r1, #0
strb r1, [r4, #0x1a0]
strb r1, [r4, #0x1a1]
str r1, [r4, #0x1a8]
sub r1, r1, #1
mov r0, r6
str r1, [r6, #0xb8]
bl sub_0202B934
b _0202B928
_0202B698:
bl sub_02031C84
_0202B69C:
mov r0, #3
str r0, [r4, #0x19c]
_0202B6A4:
mov r0, r6
bl sub_0202B934
ldr r0, [r4, #0xfc]
tst r0, #0x800000
beq _0202B6E0
mov r0, #8
str r0, [r4, #0x19c]
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
str r0, [r4, #0x1a8]
sub r0, r0, #4
str r0, [r6, #0xb8]
b _0202B928
_0202B6E0:
mov r1, #4
mov r0, #0
str r1, [r4, #0x19c]
strb r0, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
str r0, [r4, #0x1a8]
sub r0, r0, #1
str r0, [r6, #0xb8]
b _0202B928
_0202B704:
add r1, sp, #8
add r2, sp, #0xc
add r0, r4, #4
mov r3, #1
bl sub_02031C98
ldr r1, [sp, #8]
mov r5, r0
str r1, [r4, #0x1a4]
ldr r0, [sp, #8]
cmp r0, #0
bne _0202B77C
ldr r0, [r4, #0xfc]
tst r0, #1
beq _0202B77C
mov r3, #0
ldr r2, _0202B930 ; =0x00000408
add r1, sp, #0xc
str r3, [sp]
mov ip, #1
add r0, r4, #4
str ip, [sp, #4]
bl sub_02032160
movs r1, r0
bmi _0202B77C
add r0, r4, #4
bl sub_02032684
ldr r0, [sp, #8]
mov r5, #1
orr r0, r0, #1
str r0, [sp, #8]
_0202B77C:
ldr r0, [sp, #8]
cmp r0, #0
bne _0202B79C
add r1, sp, #8
add r2, sp, #0xc
add r0, r4, #4
bl sub_02033758
orr r5, r5, r0
_0202B79C:
add r0, r4, #4
bl GetSelectedMenuItemIdx
mov r2, r0
ldr r1, [sp, #8]
add r0, r4, #4
mov r3, #0
bl sub_020323F8
orrs r0, r5, r0
beq _0202B7C8
mov r0, r6
bl sub_0202B934
_0202B7C8:
ldr r1, [sp, #8]
tst r1, #1
beq _0202B838
add r0, r4, #4
bl IsMenuOptionActive
cmp r0, #0
beq _0202B828
ldr r0, [r4, #0xfc]
tst r0, #0x80000000
bne _0202B7FC
add r0, r4, #4
mov r1, #0
bl PlayWindowInputSound
_0202B7FC:
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
ldr r1, [sp, #8]
sub r0, r0, #4
str r1, [r4, #0x1a8]
str r0, [r6, #0xb8]
mov r0, #5
str r0, [r4, #0x19c]
b _0202B8A8
_0202B828:
add r0, r4, #4
mov r1, #2
bl PlayWindowInputSound
b _0202B8A8
_0202B838:
tst r1, #2
add r0, r4, #4
beq _0202B874
mov r1, #1
bl PlayWindowInputSound
mov r0, #1
strb r0, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
ldr r1, [sp, #8]
sub r0, r0, #6
str r1, [r4, #0x1a8]
str r0, [r6, #0xb8]
mov r0, #5
str r0, [r4, #0x19c]
b _0202B8A8
_0202B874:
bl sub_0203250C
cmp r0, #0
beq _0202B8A8
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
ldr r1, [sp, #8]
sub r0, r0, #4
str r1, [r4, #0x1a8]
str r0, [r6, #0xb8]
mov r0, #5
str r0, [r4, #0x19c]
_0202B8A8:
ldrsb r0, [r6, #0x10]
add r1, r4, #4
bl sub_02028948
b _0202B928
_0202B8B8:
add r0, r4, #4
bl sub_02032070
cmp r0, #0
bne _0202B928
ldrb r0, [r4, #0x1a1]
cmp r0, #0
bne _0202B8F4
ldr r0, [r4, #0xfc]
tst r0, #0x400000
beq _0202B8F4
mov r0, r6
bl sub_0202B934
mov r0, #8
str r0, [r4, #0x19c]
b _0202B928
_0202B8F4:
mov r0, #6
str r0, [r4, #0x19c]
_0202B8FC:
ldrsb r0, [r6, #0x10]
bl sub_0202812C
cmp r0, #0
beq _0202B928
ldrb r0, [r4, #0x1a1]
cmp r0, #0
mvnne r0, #4
mvneq r0, #3
str r0, [r6, #0xb8]
mov r0, #7
str r0, [r4, #0x19c]
_0202B928:
add sp, sp, #0x30
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0202B930: .word 0x00000408
arm_func_end UpdateSimpleMenu
arm_func_start sub_0202B934
sub_0202B934: ; 0x0202B934
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov sl, r0
ldr r4, [sl, #0xc]
add r0, r4, #4
bl GetPageStart
mov r7, r0
add r0, r4, #4
bl GetNumItemsOnPage
ldr r2, [r4, #0xfc]
mov r5, r0
tst r2, #0x200
ldrne r0, [r4, #0x160]
ldr r3, [r4, #0x198]
addne r8, r0, r7
add r1, r7, r7, lsl #6
ldrsb r0, [sl, #0x10]
add r6, r3, r1, lsl #2
moveq r8, #0
bl sub_02027B1C
cmp r5, #0
mov r7, #0
ble _0202B9F4
mov fp, r7
b _0202B9EC
_0202B994:
mov r1, fp
cmp r8, #0
beq _0202B9B0
ldrb r0, [r8]
add r8, r8, #1
tst r0, #2
movne r1, #1
_0202B9B0:
cmp r1, #0
movne sb, #0x42
moveq sb, #0x44
mov r1, r7
add r0, r4, #4
bl GetPageItemYOffset
and r1, sb, #0xff
str r1, [sp]
mov r2, r0
ldrsb r0, [sl, #0x10]
mov r1, #0xd
mov r3, r6
bl sub_020263C8
add r7, r7, #1
add r6, r6, #0x104
_0202B9EC:
cmp r7, r5
blt _0202B994
_0202B9F4:
ldrsb r1, [sl, #0x10]
add r0, r4, #4
bl sub_0202A03C
ldrsb r0, [sl, #0x10]
bl UpdateWindow
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_0202B934
arm_func_start SetSimpleMenuField0x1AC
SetSimpleMenuField0x1AC: ; 0x0202BA0C
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
str r4, [r0, #0x1ac]
ldmia sp!, {r4, pc}
arm_func_end SetSimpleMenuField0x1AC
arm_func_start CreateAdvancedMenu
CreateAdvancedMenu: ; 0x0202BA20
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x28
sub sp, sp, #0x400
mov r6, r0
mov sl, r1
mov r0, #0x1b0
mov r1, #8
mov sb, r2
mov r8, r3
bl MemAlloc
mov r5, r0
cmp r6, #0
ldreq r0, _0202BBE8 ; =ADVANCED_MENU_DEFAULT_WINDOW_PARAMS
add r4, sp, #0x18
ldmeqia r0, {r0, r1, r2, r3}
stmeqia r4, {r0, r1, r2, r3}
ldmneia r6, {r0, r1, r2, r3}
stmneia r4, {r0, r1, r2, r3}
ldrne r0, _0202BBEC ; =UpdateAdvancedMenu
orr sl, sl, #0x8000
strne r0, [sp, #0x18]
ldrb r0, [sp, #0x1e]
orreq sl, sl, #0x300000
str r5, [sp, #0x24]
cmp r0, #0
bne _0202BADC
mov r7, #0
mov r6, r7
add r4, sp, #0x28
b _0202BABC
_0202BA98:
mov r0, r4
mov r1, r6
blx r8
cmp r0, #0
beq _0202BAB8
bl sub_020265A8
cmp r0, r7
movgt r7, r0
_0202BAB8:
add r6, r6, #1
_0202BABC:
ldr r0, [sp, #0x448]
cmp r6, r0
blt _0202BA98
mov r0, sl
mov r1, sb
add r2, r7, #0x10
bl sub_02031A5C
strb r0, [sp, #0x1e]
_0202BADC:
ldrb r0, [sp, #0x1f]
add r2, sp, #0x400
add r3, sp, #0x400
cmp r0, #0
add r2, r2, #0x48
bne _0202BB0C
add r3, r3, #0x4c
mov r0, sl
mov r1, sb
bl CalcMenuHeightDiv8__02031AA4
strb r0, [sp, #0x1f]
b _0202BB1C
_0202BB0C:
add r3, r3, #0x4c
mov r0, sl
mov r1, sb
bl CalcMenuHeightDiv8__02031AA4
_0202BB1C:
tst sl, #0x200000
ldrneb r1, [sp, #0x1c]
ldrneb r0, [sp, #0x1e]
subne r0, r1, r0
strneb r0, [sp, #0x1c]
tst sl, #0x100000
ldrneb r1, [sp, #0x1d]
ldrneb r0, [sp, #0x1f]
subne r0, r1, r0
strneb r0, [sp, #0x1d]
ldr r0, _0202BBEC ; =UpdateAdvancedMenu
cmp sb, #0
str r0, [r5]
str sl, [r5, #0xfc]
beq _0202BB78
add r6, r5, #0x100
mov r4, #9
_0202BB60:
ldmia sb!, {r0, r1, r2, r3}
stmia r6!, {r0, r1, r2, r3}
subs r4, r4, #1
bne _0202BB60
ldmia sb, {r0, r1}
stmia r6, {r0, r1}
_0202BB78:
mov r2, #0
str r2, [r5, #0x18c]
str r8, [r5, #0x198]
str r2, [r5, #0x1a4]
str r2, [r5, #0x19c]
strb r2, [r5, #0x1a0]
strb r2, [r5, #0x1a1]
str r2, [r5, #0x1a8]
add r0, sp, #0x18
mov r1, #3
str r2, [r5, #0x1ac]
bl NewWindowScreenCheck
add r1, sp, #8
mov r6, r0
bl GetWindowRectangle
ldr r0, [sp, #0x448]
add r3, sp, #8
str r0, [sp]
ldr r4, [sp, #0x44c]
mov r1, sl
add r0, r5, #4
add r2, r5, #0x100
str r4, [sp, #4]
bl InitWindowInput
mov r0, r6
add sp, sp, #0x28
add sp, sp, #0x400
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_0202BBE8: .word ADVANCED_MENU_DEFAULT_WINDOW_PARAMS
_0202BBEC: .word UpdateAdvancedMenu
arm_func_end CreateAdvancedMenu
arm_func_start ResumeAdvancedMenu
ResumeAdvancedMenu: ; 0x0202BBF0
stmdb sp!, {r3, lr}
bl GetWindowContents
mov r1, #1
str r1, [r0, #0x19c]
mov r1, #0
strb r1, [r0, #0x1a0]
strb r1, [r0, #0x1a1]
str r1, [r0, #0x1a4]
ldr r1, [r0, #0xfc]
bic r1, r1, #0x800000
str r1, [r0, #0xfc]
add r0, r0, #4
bl sub_02032984
ldmia sp!, {r3, pc}
arm_func_end ResumeAdvancedMenu
arm_func_start sub_0202BC28
sub_0202BC28: ; 0x0202BC28
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r1, [r0, #0x19c]
cmp r1, #3
moveq r1, #2
streq r1, [r0, #0x19c]
ldmia sp!, {r3, pc}
arm_func_end sub_0202BC28
arm_func_start CloseAdvancedMenu
CloseAdvancedMenu: ; 0x0202BC44
stmdb sp!, {r4, lr}
mov r4, r0
bl GetWindowContents
bl MemFree
mov r0, r4
bl DeleteWindow
ldmia sp!, {r4, pc}
arm_func_end CloseAdvancedMenu
arm_func_start sub_0202BC60
sub_0202BC60: ; 0x0202BC60
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetWindowContents
mov r4, r0
ldr r0, [r4, #0x19c]
cmp r0, #3
cmpne r0, #4
cmpne r0, #0xa
cmpne r0, #8
movne r0, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r0, #1
strb r0, [r4, #0x1a0]
mov r2, #0
strb r0, [r4, #0x1a1]
mov r0, r5
sub r1, r2, #5
str r2, [r4, #0x1a4]
bl sub_0202830C
mov r0, #6
str r0, [r4, #0x19c]
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0202BC60
arm_func_start IsAdvancedMenuActive2
IsAdvancedMenuActive2: ; 0x0202BCBC
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0x19c]
cmp r0, #7
cmpne r0, #8
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, pc}
arm_func_end IsAdvancedMenuActive2
arm_func_start IsAdvancedMenuActive
IsAdvancedMenuActive: ; 0x0202BCDC
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r0, [r0, #0x1a0]
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end IsAdvancedMenuActive
arm_func_start GetAdvancedMenuCurrentOption
GetAdvancedMenuCurrentOption: ; 0x0202BCFC
stmdb sp!, {r3, lr}
bl GetWindowContents
add r0, r0, #4
bl GetSelectedMenuItemIdx
ldmia sp!, {r3, pc}
arm_func_end GetAdvancedMenuCurrentOption
arm_func_start GetAdvancedMenuResult
GetAdvancedMenuResult: ; 0x0202BD10
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r1, [r0, #0x1a0]
cmp r1, #0
beq _0202BD40
ldrb r1, [r0, #0x1a1]
cmp r1, #0
mvnne r0, #0
ldmneia sp!, {r3, pc}
add r0, r0, #4
bl GetSelectedMenuItemIdx
ldmia sp!, {r3, pc}
_0202BD40:
mvn r0, #0
ldmia sp!, {r3, pc}
arm_func_end GetAdvancedMenuResult
arm_func_start sub_0202BD48
sub_0202BD48: ; 0x0202BD48
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
mov r1, r4
add r0, r0, #4
bl sub_02032684
ldmia sp!, {r4, pc}
arm_func_end sub_0202BD48
arm_func_start UpdateAdvancedMenu
UpdateAdvancedMenu: ; 0x0202BD64
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x30
mov r6, r0
ldr r4, [r6, #0xc]
ldr r0, [r4, #0x19c]
cmp r0, #0xa
addls pc, pc, r0, lsl #2
b _0202C1D8
_0202BD84: ; jump table
b _0202BDB0 ; case 0
b _0202BDC8 ; case 1
b _0202BDF0 ; case 2
b _0202BE50 ; case 3
b _0202C168 ; case 4
b _0202C178 ; case 5
b _0202C1AC ; case 6
b _0202C1D8 ; case 7
b _0202C1D8 ; case 8
b _0202C0F8 ; case 9
b _0202C130 ; case 10
_0202BDB0:
ldrsb r0, [r6, #0x10]
bl sub_0202810C
cmp r0, #0
beq _0202C1D8
mov r0, #2
str r0, [r4, #0x19c]
_0202BDC8:
ldr r0, [r4, #0x19c]
cmp r0, #1
bne _0202BDF0
ldrb r0, [r6, #8]
bl sub_020287C4
ldrsb r0, [r6, #0x10]
bl UpdateWindow
mov r0, #2
str r0, [r4, #0x19c]
b _0202C1D8
_0202BDF0:
mov r0, r6
bl DrawAdvancedMenu
ldr r0, [r4, #0xfc]
tst r0, #0x800000
beq _0202BE2C
mov r0, #8
str r0, [r4, #0x19c]
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
str r0, [r4, #0x1a4]
sub r0, r0, #4
str r0, [r6, #0xb8]
b _0202C1D8
_0202BE2C:
mov r1, #3
mov r0, #0
str r1, [r4, #0x19c]
strb r0, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
str r0, [r4, #0x1a4]
sub r0, r0, #1
str r0, [r6, #0xb8]
b _0202C1D8
_0202BE50:
mov r0, #0
str r0, [sp, #8]
add r1, sp, #8
add r2, sp, #0xc
add r0, r4, #4
mov r3, #1
bl sub_02031C98
ldr r1, [sp, #8]
mov r5, r0
cmp r1, #0
bne _0202BEC8
ldr r0, [r4, #0xfc]
tst r0, #1
beq _0202BEC8
mov r3, #0
ldr r2, _0202C1E0 ; =0x00000408
add r1, sp, #0xc
str r3, [sp]
mov ip, #1
add r0, r4, #4
str ip, [sp, #4]
bl sub_02032160
movs r1, r0
bmi _0202BEC8
add r0, r4, #4
bl sub_02032684
ldr r0, [sp, #8]
mov r5, #1
orr r0, r0, #1
str r0, [sp, #8]
_0202BEC8:
ldr r0, [sp, #8]
cmp r0, #0
bne _0202BEE8
add r1, sp, #8
add r2, sp, #0xc
add r0, r4, #4
bl sub_02033758
orr r5, r5, r0
_0202BEE8:
add r0, r4, #4
bl GetSelectedMenuItemIdx
mov r2, r0
ldr r1, [sp, #8]
add r0, r4, #4
mov r3, #0
bl sub_020323F8
orrs r0, r5, r0
beq _0202BF14
mov r0, r6
bl DrawAdvancedMenu
_0202BF14:
ldr r1, [sp, #8]
tst r1, #1
beq _0202BF84
add r0, r4, #4
bl IsMenuOptionActive
cmp r0, #0
beq _0202BF74
ldr r0, [r4, #0xfc]
tst r0, #0x80000000
bne _0202BF48
add r0, r4, #4
mov r1, #0
bl PlayWindowInputSound
_0202BF48:
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
ldr r1, [sp, #8]
sub r0, r0, #4
str r1, [r4, #0x1a4]
str r0, [r6, #0xb8]
mov r0, #4
str r0, [r4, #0x19c]
b _0202C0E8
_0202BF74:
add r0, r4, #4
mov r1, #2
bl PlayWindowInputSound
b _0202C0E8
_0202BF84:
tst r1, #2
beq _0202BFC0
add r0, r4, #4
mov r1, #1
bl PlayWindowInputSound
mov r0, #1
strb r0, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
ldr r1, [sp, #8]
sub r0, r0, #6
str r1, [r4, #0x1a4]
str r0, [r6, #0xb8]
mov r0, #4
str r0, [r4, #0x19c]
b _0202C0E8
_0202BFC0:
tst r1, #0x1000
beq _0202C00C
ldr r0, [r4, #0xfc]
tst r0, #0x2000
beq _0202C00C
add r0, r4, #4
mov r1, #0
bl PlayWindowInputSound
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
ldr r1, [sp, #8]
sub r0, r0, #4
str r1, [r4, #0x1a4]
str r0, [r6, #0xb8]
mov r0, #9
str r0, [r4, #0x19c]
b _0202C0E8
_0202C00C:
tst r1, #0x2000
beq _0202C058
ldr r0, [r4, #0xfc]
tst r0, #0x4000
beq _0202C058
add r0, r4, #4
mov r1, #0
bl PlayWindowInputSound
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
ldr r1, [sp, #8]
sub r0, r0, #4
str r1, [r4, #0x1a4]
str r0, [r6, #0xb8]
mov r0, #0xa
str r0, [r4, #0x19c]
b _0202C0E8
_0202C058:
tst r1, #0x200
ldrne r0, [r4, #0x18c]
cmpne r0, #0
add r0, r4, #4
beq _0202C080
mov r1, #5
bl PlayWindowInputSound
ldr r0, [r4, #0x18c]
blx r0
b _0202C0E8
_0202C080:
bl sub_0203250C
cmp r0, #0
beq _0202C0B8
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
ldr r1, [sp, #8]
sub r0, r0, #4
str r1, [r4, #0x1a4]
str r0, [r6, #0xb8]
mov r0, #4
str r0, [r4, #0x19c]
b _0202C0E8
_0202C0B8:
ldr r0, [sp, #8]
tst r0, #0x40000
bne _0202C0CC
tst r0, #0x80000
beq _0202C0E8
_0202C0CC:
tst r0, #0x4000
bne _0202C0E8
tst r0, #0x8000
moveq r0, #1
streqb r0, [r4, #0x1a0]
ldreq r0, [sp, #8]
streq r0, [r4, #0x1a4]
_0202C0E8:
ldrsb r0, [r6, #0x10]
add r1, r4, #4
bl sub_02028948
b _0202C1D8
_0202C0F8:
add r0, r4, #4
bl sub_02032070
cmp r0, #0
bne _0202C1D8
mov r0, r6
bl DrawAdvancedMenu
ldr r3, [r4, #0x174]
cmp r3, #0
beq _0202C1D8
mov r0, #0
mov r1, r0
mov r2, r0
blx r3
b _0202C1D8
_0202C130:
add r0, r4, #4
bl sub_02032070
cmp r0, #0
bne _0202C1D8
mov r0, r6
bl DrawAdvancedMenu
ldr r3, [r4, #0x17c]
cmp r3, #0
beq _0202C1D8
mov r0, #0
mov r1, r0
mov r2, r0
blx r3
b _0202C1D8
_0202C168:
add r0, r4, #4
bl sub_02032070
cmp r0, #0
bne _0202C1D8
_0202C178:
ldrb r0, [r4, #0x1a1]
cmp r0, #0
bne _0202C1A4
ldr r0, [r4, #0xfc]
tst r0, #0x400000
beq _0202C1A4
mov r0, r6
bl DrawAdvancedMenu
mov r0, #8
str r0, [r4, #0x19c]
b _0202C1D8
_0202C1A4:
mov r0, #6
str r0, [r4, #0x19c]
_0202C1AC:
ldrsb r0, [r6, #0x10]
bl sub_0202812C
cmp r0, #0
beq _0202C1D8
ldrb r0, [r4, #0x1a1]
cmp r0, #0
mvnne r0, #4
mvneq r0, #3
str r0, [r6, #0xb8]
mov r0, #7
str r0, [r4, #0x19c]
_0202C1D8:
add sp, sp, #0x30
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0202C1E0: .word 0x00000408
arm_func_end UpdateAdvancedMenu
arm_func_start sub_0202C1E4
sub_0202C1E4: ; 0x0202C1E4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetWindowContents
mov r4, r0
add r0, r4, #4
bl IsMenuOptionActive
cmp r0, #0
beq _0202C24C
ldr r0, [r4, #0xfc]
tst r0, #0x80000000
bne _0202C21C
add r0, r4, #4
mov r1, #0
bl PlayWindowInputSound
_0202C21C:
mov r2, #1
mov r1, #0
strb r2, [r4, #0x1a0]
strb r1, [r4, #0x1a1]
mov r0, r5
sub r1, r1, #4
str r2, [r4, #0x1a4]
bl sub_0202830C
mov r0, #5
str r0, [r4, #0x19c]
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
_0202C24C:
add r0, r4, #4
mov r1, #2
bl PlayWindowInputSound
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0202C1E4
arm_func_start DrawAdvancedMenu
DrawAdvancedMenu: ; 0x0202C260
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
sub sp, sp, #0x400
mov sl, r0
ldr r4, [sl, #0xc]
add r0, r4, #4
bl GetPageStart
mov r5, r0
add r0, r4, #4
bl GetNumItemsOnPage
ldr r1, [r4, #0xfc]
mov r6, r0
tst r1, #0x200
ldrne r0, [r4, #0x160]
addne sb, r0, r5
ldrsb r0, [sl, #0x10]
moveq sb, #0
bl sub_02027B1C
cmp r6, #0
mov r7, #0
ble _0202C36C
mov fp, #0x42
b _0202C364
_0202C2BC:
ldr r2, [r4, #0x198]
add r0, sp, #0xc
mov r1, r5
blx r2
mov r8, r0
mov r1, #0
cmp sb, #0
beq _0202C2EC
ldrb r0, [sb]
add sb, sb, #1
tst r0, #2
movne r1, #1
_0202C2EC:
cmp r8, #0
beq _0202C35C
cmp r1, #0
mov r1, r7
add r0, r4, #4
beq _0202C334
bl GetPageItemYOffset
str fp, [sp]
mov r2, r0
ldr r0, [r4, #0x1a8]
mov r3, r8
str r0, [sp, #4]
ldr r0, [r4, #0x1ac]
mov r1, #0xd
str r0, [sp, #8]
ldrsb r0, [sl, #0x10]
bl sub_02026428
b _0202C35C
_0202C334:
bl GetPageItemYOffset
mov r2, r0
ldr r0, [r4, #0x1a8]
mov r3, r8
str r0, [sp]
ldr r0, [r4, #0x1ac]
mov r1, #0xd
str r0, [sp, #4]
ldrsb r0, [sl, #0x10]
bl sub_02026358
_0202C35C:
add r7, r7, #1
add r5, r5, #1
_0202C364:
cmp r7, r6
blt _0202C2BC
_0202C36C:
ldrsb r1, [sl, #0x10]
add r0, r4, #4
bl sub_0202A03C
ldrsb r0, [sl, #0x10]
bl UpdateWindow
add sp, sp, #0xc
add sp, sp, #0x400
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end DrawAdvancedMenu
arm_func_start sub_0202C38C
sub_0202C38C: ; 0x0202C38C
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r1, [r0, #0x1a0]
cmp r1, #0
ldrne r0, [r0, #0x1a4]
moveq r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_0202C38C
arm_func_start CreateCollectionMenu
CreateCollectionMenu: ; 0x0202C3A8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x2c
sub sp, sp, #0x400
mov r4, r0
mov sl, r1
mov r0, #0x1cc
mov r1, #8
mov sb, r2
mov r8, r3
bl MemAlloc
ldr r1, [sp, #0x450]
mov r5, r0
cmp r1, #0
ldrne r0, _0202C5D4 ; =0x10008004
orr sl, sl, #0x8000
orrne sl, sl, r0
cmp r4, #0
addne r6, sp, #0x1c
ldmneia r4, {r0, r1, r2, r3}
stmneia r6, {r0, r1, r2, r3}
ldrne r0, _0202C5D8 ; =UpdateCollectionMenu
strne r0, [sp, #0x1c]
bne _0202C418
ldr r0, _0202C5DC ; =COLLECTION_MENU_DEFAULT_WINDOW_PARAMS
add r4, sp, #0x1c
ldmia r0, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
orr sl, sl, #0x300000
_0202C418:
ldrb r0, [sp, #0x22]
str r5, [sp, #0x28]
cmp r0, #0
bne _0202C484
mov r7, #0
mov r6, r7
add r4, sp, #0x2c
add fp, sp, #8
b _0202C464
_0202C43C:
mov r0, r4
mov r1, r6
mov r2, fp
blx r8
cmp r0, #0
beq _0202C460
bl sub_020265A8
cmp r0, r7
movgt r7, r0
_0202C460:
add r6, r6, #1
_0202C464:
ldr r0, [sp, #0x454]
cmp r6, r0
blt _0202C43C
mov r0, sl
mov r1, sb
add r2, r7, #0x10
bl sub_02031A5C
strb r0, [sp, #0x22]
_0202C484:
ldrb r0, [sp, #0x23]
add r2, sp, #0x400
add r3, sp, #0x400
cmp r0, #0
add r2, r2, #0x54
bne _0202C4B4
add r3, r3, #0x58
mov r0, sl
mov r1, sb
bl CalcMenuHeightDiv8__02031AA4
strb r0, [sp, #0x23]
b _0202C4C4
_0202C4B4:
add r3, r3, #0x58
mov r0, sl
mov r1, sb
bl CalcMenuHeightDiv8__02031AA4
_0202C4C4:
tst sl, #0x200000
ldrneb r1, [sp, #0x20]
ldrneb r0, [sp, #0x22]
subne r0, r1, r0
strneb r0, [sp, #0x20]
tst sl, #0x100000
ldrneb r1, [sp, #0x21]
ldrneb r0, [sp, #0x23]
subne r0, r1, r0
strneb r0, [sp, #0x21]
ldr r1, _0202C5D8 ; =UpdateCollectionMenu
mov r0, #0
str r1, [r5]
str sl, [r5, #0xfc]
strb r0, [r5, #0x1c5]
cmp sb, #0
beq _0202C528
add r6, r5, #0x100
mov r4, #9
_0202C510:
ldmia sb!, {r0, r1, r2, r3}
stmia r6!, {r0, r1, r2, r3}
subs r4, r4, #1
bne _0202C510
ldmia sb, {r0, r1}
stmia r6, {r0, r1}
_0202C528:
mov r3, #0
str r3, [r5, #0x18c]
ldr r0, [sp, #0x450]
str r8, [r5, #0x198]
str r0, [r5, #0x19c]
str r3, [r5, #0x1a8]
str r3, [r5, #0x1ac]
strb r3, [r5, #0x1b0]
strb r3, [r5, #0x1b1]
strb r3, [r5, #0x1b2]
str r3, [r5, #0x1b4]
str r3, [r5, #0x1b8]
mov r0, #0xd
str r0, [r5, #0x1bc]
strb r3, [r5, #0x1c6]
ldrb r2, [sp, #0x22]
add r0, sp, #0x1c
mov r1, #3
mov r2, r2, lsl #3
sub r2, r2, #1
str r2, [r5, #0x1c0]
strb r3, [r5, #0x1c4]
strb r3, [r5, #0x1c8]
strb r3, [r5, #0x1c9]
str r3, [r5, #0x1a4]
str r3, [r5, #0x1a0]
bl NewWindowScreenCheck
add r1, sp, #0xc
mov r6, r0
bl GetWindowRectangle
ldr r0, [sp, #0x454]
add r3, sp, #0xc
str r0, [sp]
ldr r4, [sp, #0x458]
mov r1, sl
add r0, r5, #4
add r2, r5, #0x100
str r4, [sp, #4]
bl InitWindowInput
mov r0, r6
add sp, sp, #0x2c
add sp, sp, #0x400
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0202C5D4: .word 0x10008004
_0202C5D8: .word UpdateCollectionMenu
_0202C5DC: .word COLLECTION_MENU_DEFAULT_WINDOW_PARAMS
arm_func_end CreateCollectionMenu
arm_func_start SetCollectionMenuField0x1BC
SetCollectionMenuField0x1BC: ; 0x0202C5E0
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
str r4, [r0, #0x1bc]
ldmia sp!, {r4, pc}
arm_func_end SetCollectionMenuField0x1BC
arm_func_start SetCollectionMenuWidth
SetCollectionMenuWidth: ; 0x0202C5F4
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindow
ldr r1, [r0, #0xc]
str r4, [r1, #0x1c0]
ldrb r0, [r0, #6]
mov r0, r0, lsl #3
sub r0, r0, #1
cmp r4, r0
strgt r0, [r1, #0x1c0]
ldmia sp!, {r4, pc}
arm_func_end SetCollectionMenuWidth
arm_func_start sub_0202C620
sub_0202C620: ; 0x0202C620
stmdb sp!, {r3, lr}
bl GetWindowContents
mov r1, #1
str r1, [r0, #0x1ac]
mov r1, #0
strb r1, [r0, #0x1b0]
strb r1, [r0, #0x1b1]
ldr r1, [r0, #0xfc]
bic r1, r1, #0x800000
str r1, [r0, #0xfc]
add r0, r0, #4
bl sub_02032984
ldmia sp!, {r3, pc}
arm_func_end sub_0202C620
arm_func_start sub_0202C654
sub_0202C654: ; 0x0202C654
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x18
mov r8, r0
mov r7, r1
mov r6, r2
mov r5, r3
bl GetWindowContents
mov r4, r0
mov r0, #1
str r0, [r4, #0x1ac]
mov r0, #0
strb r0, [r4, #0x1b0]
strb r0, [r4, #0x1b1]
cmp r5, #0
bne _0202C6A4
mov r0, r8
bl GetWindowContents
add r0, r0, #4
bl GetSelectedMenuItemIdx
str r0, [r4, #0x100]
_0202C6A4:
add r1, sp, #8
mov r0, r8
bl GetWindowRectangle
str r7, [sp]
str r6, [sp, #4]
ldr r1, [r4, #0xfc]
add r3, sp, #8
add r0, r4, #4
add r2, r4, #0x100
bl InitWindowInput
add sp, sp, #0x18
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end sub_0202C654
arm_func_start sub_0202C6D4
sub_0202C6D4: ; 0x0202C6D4
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
mov r1, r4
add r0, r0, #4
bl sub_0203271C
ldmia sp!, {r4, pc}
arm_func_end sub_0202C6D4
arm_func_start sub_0202C6F0
sub_0202C6F0: ; 0x0202C6F0
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
mov r4, r2
bl GetWindowContents
str r5, [r0, #0x1b4]
str r4, [r0, #0x1b8]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0202C6F0
arm_func_start CloseCollectionMenu
CloseCollectionMenu: ; 0x0202C70C
stmdb sp!, {r4, lr}
mov r4, r0
bl GetWindowContents
bl MemFree
mov r0, r4
bl DeleteWindow
ldmia sp!, {r4, pc}
arm_func_end CloseCollectionMenu
arm_func_start IsCollectionMenuActive
IsCollectionMenuActive: ; 0x0202C728
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0x1ac]
cmp r0, #6
cmpne r0, #7
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, pc}
arm_func_end IsCollectionMenuActive
arm_func_start sub_0202C748
sub_0202C748: ; 0x0202C748
stmdb sp!, {r3, lr}
bl GetWindowContents
add r0, r0, #4
bl GetSelectedMenuItemIdx
ldmia sp!, {r3, pc}
arm_func_end sub_0202C748
arm_func_start sub_0202C75C
sub_0202C75C: ; 0x0202C75C
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r1, [r0, #0x1b0]
cmp r1, #0
beq _0202C78C
ldrb r1, [r0, #0x1b1]
cmp r1, #0
mvnne r0, #0
ldmneia sp!, {r3, pc}
add r0, r0, #4
bl GetSelectedMenuItemIdx
ldmia sp!, {r3, pc}
_0202C78C:
mvn r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_0202C75C
arm_func_start SetCollectionMenuField0x1C8
SetCollectionMenuField0x1C8: ; 0x0202C794
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
strb r4, [r0, #0x1c8]
ldmia sp!, {r4, pc}
arm_func_end SetCollectionMenuField0x1C8
arm_func_start SetCollectionMenuField0x1A0
SetCollectionMenuField0x1A0: ; 0x0202C7A8
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
str r4, [r0, #0x1a0]
ldmia sp!, {r4, pc}
arm_func_end SetCollectionMenuField0x1A0
arm_func_start SetCollectionMenuField0x1A4
SetCollectionMenuField0x1A4: ; 0x0202C7BC
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
str r4, [r0, #0x1a4]
ldmia sp!, {r4, pc}
arm_func_end SetCollectionMenuField0x1A4
arm_func_start SetCollectionMenuVoidFn
SetCollectionMenuVoidFn: ; 0x0202C7D0
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
str r4, [r0, #0x1a8]
ldmia sp!, {r4, pc}
arm_func_end SetCollectionMenuVoidFn
arm_func_start sub_0202C7E4
sub_0202C7E4: ; 0x0202C7E4
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r1, [r0, #0x1ac]
cmp r1, #3
moveq r1, #2
streq r1, [r0, #0x1ac]
moveq r0, #1
movne r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_0202C7E4
arm_func_start UpdateCollectionMenu
UpdateCollectionMenu: ; 0x0202C808
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x30
mov r4, r0
ldrsb r0, [r4, #0x10]
ldr r5, [r4, #0xc]
bl sub_02028354
cmp r0, #3
moveq r1, #1
movne r1, #0
ldr r0, [r5, #0x1ac]
and fp, r1, #0xff
cmp r0, #0xa
addls pc, pc, r0, lsl #2
b _0202CE40
_0202C840: ; jump table
b _0202C86C ; case 0
b _0202C884 ; case 1
b _0202C8C0 ; case 2
b _0202C918 ; case 3
b _0202CDC8 ; case 4
b _0202CE0C ; case 5
b _0202CE40 ; case 6
b _0202CE40 ; case 7
b _0202CCA4 ; case 8
b _0202CD14 ; case 9
b _0202CD74 ; case 10
_0202C86C:
ldrsb r0, [r4, #0x10]
bl sub_0202810C
cmp r0, #0
beq _0202CE40
mov r0, #2
str r0, [r5, #0x1ac]
_0202C884:
ldr r0, [r5, #0x1ac]
cmp r0, #1
bne _0202C8C0
ldrb r0, [r5, #0x1c6]
cmp r0, #0
beq _0202C8A4
mov r0, r4
bl sub_0202CEA0
_0202C8A4:
ldrb r0, [r4, #8]
bl sub_020287C4
ldrsb r0, [r4, #0x10]
bl UpdateWindow
mov r0, #2
str r0, [r5, #0x1ac]
b _0202CE40
_0202C8C0:
mov r0, r4
bl sub_0202CEA0
ldr r0, [r5, #0xfc]
tst r0, #0x800000
beq _0202C8F8
mov r0, #7
str r0, [r5, #0x1ac]
mov r1, #1
mov r0, #0
strb r1, [r5, #0x1b0]
strb r0, [r5, #0x1b1]
sub r0, r0, #4
str r0, [r4, #0xb8]
b _0202CE40
_0202C8F8:
mov r1, #3
mov r0, #0
str r1, [r5, #0x1ac]
strb r0, [r5, #0x1b0]
strb r0, [r5, #0x1b1]
sub r0, r0, #1
str r0, [r4, #0xb8]
b _0202CE40
_0202C918:
add r1, sp, #8
add r2, sp, #0xc
add r0, r5, #4
mov r3, #1
bl sub_02031C98
ldr r1, [sp, #8]
mov r6, #0
cmp r1, #0
movne r6, #1
mov r8, r0
cmp r1, #0
bne _0202CA70
ldr r0, [r5, #0xfc]
tst r0, #1
beq _0202CA70
mov r3, #0
str r3, [sp]
ldr r2, _0202CE9C ; =0x00000408
add r1, sp, #0xc
add r0, r5, #4
str r3, [sp, #4]
bl sub_02032160
movs r7, r0
bmi _0202CA70
ldrb r0, [r5, #0x1b2]
cmp r0, #0
beq _0202C994
add r0, r5, #4
bl GetSelectedMenuItemIdx
cmp r7, r0
bne _0202CA54
_0202C994:
ldr r0, [r5, #0x19c]
cmp r0, #0
ldrne r0, [sp, #8]
orrne r0, r0, #4
orrne r0, r0, #0x400
strne r0, [sp, #8]
bne _0202CA60
ldr r1, [sp, #8]
add r0, r5, #4
orr r1, r1, #1
str r1, [sp, #8]
ldr r8, [r5, #0xc]
ldr sb, [r5, #0x10]
bl GetPageStart
mov r1, r0
add r0, r5, #4
sub r1, r7, r1
bl GetPageItemYOffset
ldr r1, [r5, #4]
add sl, r1, r0
add r0, r5, #4
bl GetPageStart
sub r0, r7, r0
add r1, r0, #1
add r0, r5, #4
bl GetPageItemYOffset
ldr r2, [r5, #4]
mov r1, #6
str r1, [r5, #0xdc]
sub r1, r1, #7
str r1, [r5, #0xe0]
mov r1, #0
str r1, [r5, #0xe4]
ldr r1, [r5, #0xc]
add r0, r2, r0
sub r1, r8, r1
str r1, [r5, #0xf0]
ldr r1, [r5, #0xc]
sub r0, r0, #2
sub r1, sb, r1
str r1, [r5, #0xf4]
ldr r1, [r5, #4]
sub r1, sl, r1
str r1, [r5, #0xe8]
ldr r1, [r5, #4]
sub r0, r0, r1
str r0, [r5, #0xec]
b _0202CA60
_0202CA54:
add r0, r5, #4
mov r1, #3
bl PlayWindowInputSound
_0202CA60:
mov r1, r7
add r0, r5, #4
bl sub_02032684
mov r8, #1
_0202CA70:
ldr r0, [sp, #8]
cmp r0, #0
bne _0202CA90
add r1, sp, #8
add r2, sp, #0xc
add r0, r5, #4
bl sub_02033758
orr r8, r8, r0
_0202CA90:
add r0, r5, #4
bl GetSelectedMenuItemIdx
mov r2, r0
ldr r1, [sp, #8]
add r0, r5, #4
mov r3, #0
bl sub_020323F8
orrs r0, r8, r0
ldreqb r0, [r5, #0x1c4]
cmpeq r0, #0
beq _0202CACC
mov r1, #0
mov r0, r4
strb r1, [r5, #0x1c4]
bl sub_0202CEA0
_0202CACC:
ldr r0, [sp, #8]
tst r0, #1
beq _0202CB44
cmp r6, #0
add r0, r5, #4
beq _0202CAEC
bl sub_020324C4
b _0202CAF0
_0202CAEC:
bl IsMenuOptionActive
_0202CAF0:
cmp r0, #0
beq _0202CB34
ldr r0, [r5, #0xfc]
tst r0, #0x80000000
bne _0202CB10
add r0, r5, #4
mov r1, #0
bl PlayWindowInputSound
_0202CB10:
mov r1, #1
mov r0, #0
strb r1, [r5, #0x1b0]
strb r0, [r5, #0x1b1]
sub r0, r0, #4
str r0, [r4, #0xb8]
mov r0, #4
str r0, [r5, #0x1ac]
b _0202CC94
_0202CB34:
add r0, r5, #4
mov r1, #2
bl PlayWindowInputSound
b _0202CC94
_0202CB44:
tst r0, #2
beq _0202CB94
add r0, r5, #4
mov r1, #1
bl PlayWindowInputSound
ldr r1, [r5, #0x1a0]
cmp r1, #0
beq _0202CB74
ldrsb r0, [r4, #0x10]
blx r1
cmp r0, #0
bne _0202CE40
_0202CB74:
mov r0, #1
strb r0, [r5, #0x1b0]
strb r0, [r5, #0x1b1]
sub r0, r0, #6
str r0, [r4, #0xb8]
mov r0, #4
str r0, [r5, #0x1ac]
b _0202CC94
_0202CB94:
tst r0, #0x1000
beq _0202CBE8
ldr r1, [r5, #0xfc]
tst r1, #0x2000
beq _0202CBE8
ldr r0, [r5, #0x174]
cmp r0, #0
beq _0202CBC0
add r0, r5, #4
mov r1, #5
bl PlayWindowInputSound
_0202CBC0:
mov r1, #1
mov r0, #0
strb r1, [r5, #0x1b0]
strb r0, [r5, #0x1b1]
strb r1, [r5, #0x1c7]
sub r0, r0, #4
str r0, [r4, #0xb8]
mov r0, #8
str r0, [r5, #0x1ac]
b _0202CC94
_0202CBE8:
tst r0, #0x2000
beq _0202CC30
ldr r1, [r5, #0xfc]
tst r1, #0x4000
beq _0202CC30
add r0, r5, #4
mov r1, #0
bl PlayWindowInputSound
mov r1, #1
mov r0, #0
strb r1, [r5, #0x1b0]
strb r0, [r5, #0x1b1]
strb r1, [r5, #0x1c7]
sub r0, r0, #4
str r0, [r4, #0xb8]
mov r0, #9
str r0, [r5, #0x1ac]
b _0202CC94
_0202CC30:
tst r0, #0x200
ldrne r1, [r5, #0x18c]
cmpne r1, #0
beq _0202CC74
add r0, r5, #4
mov r1, #5
bl PlayWindowInputSound
mov r1, #1
mov r0, #0
strb r1, [r5, #0x1b0]
strb r0, [r5, #0x1b1]
strb r1, [r5, #0x1c7]
sub r0, r0, #4
str r0, [r4, #0xb8]
mov r0, #0xa
str r0, [r5, #0x1ac]
b _0202CC94
_0202CC74:
ldr r1, [r5, #0x19c]
cmp r1, #0
beq _0202CC94
blx r1
cmp r0, #0
beq _0202CC94
mov r0, r4
bl sub_0202CEA0
_0202CC94:
ldrsb r0, [r4, #0x10]
add r1, r5, #4
bl sub_02028948
b _0202CE40
_0202CCA4:
add r0, r5, #4
bl sub_02032070
cmp r0, #0
bne _0202CE40
ldrb r0, [r5, #0x1c7]
cmp r0, #0
movne r0, #0
strneb r0, [r5, #0x1c7]
movne r0, #1
strneb r0, [r5, #0x1c6]
ldr r0, [r5, #0x174]
cmp r0, #0
beq _0202CD04
ldrb r0, [r5, #0x1c6]
cmp r0, #0
beq _0202CCEC
mov r0, r4
bl sub_0202CEA0
_0202CCEC:
mov r0, #0
ldr r3, [r5, #0x174]
mov r1, r0
mov r2, r0
blx r3
b _0202CE40
_0202CD04:
mov r0, #1
strb r0, [r5, #0x1c5]
str r0, [r5, #0x1ac]
b _0202CE40
_0202CD14:
add r0, r5, #4
bl sub_02032070
cmp r0, #0
bne _0202CE40
ldrb r0, [r5, #0x1c7]
cmp r0, #0
movne r0, #0
strneb r0, [r5, #0x1c7]
movne r0, #1
strneb r0, [r5, #0x1c6]
ldr r0, [r5, #0x17c]
cmp r0, #0
beq _0202CE40
ldrb r0, [r5, #0x1c6]
cmp r0, #0
beq _0202CD5C
mov r0, r4
bl sub_0202CEA0
_0202CD5C:
mov r0, #0
ldr r3, [r5, #0x17c]
mov r1, r0
mov r2, r0
blx r3
b _0202CE40
_0202CD74:
add r0, r5, #4
bl sub_02032070
cmp r0, #0
bne _0202CE40
ldrb r0, [r5, #0x1c7]
cmp r0, #0
movne r0, #0
strneb r0, [r5, #0x1c7]
movne r0, #1
strneb r0, [r5, #0x1c6]
ldr r0, [r5, #0x18c]
cmp r0, #0
beq _0202CE40
ldrb r0, [r5, #0x1c6]
cmp r0, #0
beq _0202CDBC
mov r0, r4
bl sub_0202CEA0
_0202CDBC:
ldr r0, [r5, #0x18c]
blx r0
b _0202CE40
_0202CDC8:
add r0, r5, #4
bl sub_02032070
cmp r0, #0
bne _0202CE40
ldrb r0, [r5, #0x1b1]
cmp r0, #0
bne _0202CE04
ldr r0, [r5, #0xfc]
tst r0, #0x400000
beq _0202CE04
mov r0, r4
bl sub_0202CEA0
mov r0, #7
str r0, [r5, #0x1ac]
b _0202CE40
_0202CE04:
mov r0, #5
str r0, [r5, #0x1ac]
_0202CE0C:
ldrsb r0, [r4, #0x10]
bl sub_0202812C
cmp r0, #0
beq _0202CE40
ldrb r0, [r5, #0x1b1]
cmp r0, #0
mvnne r0, #4
mvneq r0, #3
str r0, [r4, #0xb8]
mov r0, #6
str r0, [r5, #0x1ac]
mov r0, #1
strb r0, [r5, #0x1c6]
_0202CE40:
mov r0, #0
strb r0, [r5, #0x1c6]
cmp fp, #0
beq _0202CE6C
ldr r0, [r5, #0x1ac]
cmp r0, #1
bne _0202CE6C
mov r0, r4
bl sub_0202CEA0
mov r0, #1
strb r0, [r5, #0x1c6]
_0202CE6C:
ldr r0, [r5, #0x1a8]
cmp r0, #0
ldrne r0, [r5, #0x1ac]
cmpne r0, #8
cmpne r0, #9
beq _0202CE94
add r0, r5, #4
bl GetSelectedMenuItemIdx
ldr r1, [r5, #0x1a8]
blx r1
_0202CE94:
add sp, sp, #0x30
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0202CE9C: .word 0x00000408
arm_func_end UpdateCollectionMenu
arm_func_start sub_0202CEA0
sub_0202CEA0: ; 0x0202CEA0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x410
mov r5, r0
ldr r6, [r5, #0xc]
add r0, r6, #4
bl GetPageStart
mov r7, r0
add r0, r6, #4
bl GetNumItemsOnPage
ldr r1, [r6, #0xfc]
mov r8, r0
tst r1, #0x200
ldrne r0, [r6, #0x160]
addne r4, r0, r7
ldrsb r0, [r5, #0x10]
moveq r4, #0
bl sub_02027B1C
mov sb, #0
mov fp, #0x42
b _0202D020
_0202CEF0:
ldr r3, [r6, #0x198]
add r0, sp, #0x10
mov r1, r7
add r2, sp, #0xc
blx r3
mov sl, r0
cmp r4, #0
mov r1, #0
beq _0202CF24
ldrb r0, [r4]
add r4, r4, #1
tst r0, #2
movne r1, #1
_0202CF24:
cmp sl, #0
beq _0202CFF4
cmp r1, #0
add r0, r6, #4
mov r1, sb
beq _0202CF6C
bl GetPageItemYOffset
str fp, [sp]
mov r2, r0
ldr r0, [r6, #0x1b4]
mov r3, sl
str r0, [sp, #4]
ldr r0, [r6, #0x1b8]
str r0, [sp, #8]
ldrsb r0, [r5, #0x10]
ldr r1, [r6, #0x1bc]
bl sub_02026428
b _0202CF94
_0202CF6C:
bl GetPageItemYOffset
mov r2, r0
ldr r0, [r6, #0x1b4]
mov r3, sl
str r0, [sp]
ldr r0, [r6, #0x1b8]
str r0, [sp, #4]
ldrsb r0, [r5, #0x10]
ldr r1, [r6, #0x1bc]
bl sub_02026358
_0202CF94:
ldr r0, [sp, #0xc]
cmp r0, #0
ble _0202D018
ldr r1, [r6, #0x104]
mov sl, #0xc
cmp r1, #0
ble _0202CFBC
ldr r0, [r6, #0xfc]
tst r0, #0x400
subne sl, r1, #2
_0202CFBC:
add r0, r6, #4
mov r1, sb
bl GetPageItemYOffset
str sl, [sp]
mov r1, #0x24
str r1, [sp, #4]
mov r2, r0
ldr sl, [r6, #0x1bc]
ldr r3, [r6, #0x1c0]
ldrsb r0, [r5, #0x10]
sub r1, sl, #4
sub r3, r3, sl
bl sub_02025D90
b _0202D018
_0202CFF4:
ldrb r0, [r6, #0x1c8]
cmp r0, #0
beq _0202D018
str sb, [r6, #0xc4]
ldr r0, [r6, #0xc0]
cmp r0, sb
subge r0, sb, #1
strge r0, [r6, #0xc0]
b _0202D028
_0202D018:
add sb, sb, #1
add r7, r7, #1
_0202D020:
cmp sb, r8
blt _0202CEF0
_0202D028:
ldr r4, [r6, #0x1a4]
cmp r4, #0
beq _0202D04C
ldrsb r0, [r5, #0x10]
mov r3, sb
add r1, r6, #4
sub r2, r7, sb
blx r4
b _0202D058
_0202D04C:
ldrsb r1, [r5, #0x10]
add r0, r6, #4
bl sub_0202A03C
_0202D058:
ldrsb r0, [r5, #0x10]
bl UpdateWindow
add sp, sp, #0x410
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_0202CEA0
arm_func_start sub_0202D068
sub_0202D068: ; 0x0202D068
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
str r4, [r0, #0x18c]
ldmia sp!, {r4, pc}
arm_func_end sub_0202D068
arm_func_start sub_0202D07C
sub_0202D07C: ; 0x0202D07C
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
ldr r1, [r0, #0xfc]
ands r2, r1, #0x10000000
cmpne r4, #0
beq _0202D0B0
eor r1, r1, #0x10000000
str r1, [r0, #0xfc]
add r0, r0, #4
mov r1, #0x10000000
bl sub_02031C84
ldmia sp!, {r4, pc}
_0202D0B0:
cmp r2, #0
cmpeq r4, #0
ldmneia sp!, {r4, pc}
ldr r2, [r0, #0xfc]
mov r1, #0x10000000
orr r2, r2, #0x10000000
str r2, [r0, #0xfc]
add r0, r0, #4
bl sub_02031C74
ldmia sp!, {r4, pc}
arm_func_end sub_0202D07C
arm_func_start SetCollectionMenuField0x1B2
SetCollectionMenuField0x1B2: ; 0x0202D0D8
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
strb r4, [r0, #0x1b2]
ldmia sp!, {r4, pc}
arm_func_end SetCollectionMenuField0x1B2
arm_func_start sub_0202D0EC
sub_0202D0EC: ; 0x0202D0EC
stmdb sp!, {r3, r4, r5, lr}
bl GetWindowContents
mov r5, r0
add r0, r5, #4
bl GetSelectedItemOnPage
mov r4, r0
add r0, r5, #4
bl GetPageStart
add r0, r4, r0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0202D0EC
arm_func_start IsCollectionMenuState3
IsCollectionMenuState3: ; 0x0202D114
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0x1ac]
cmp r0, #3
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end IsCollectionMenuState3
arm_func_start sub_0202D134
sub_0202D134: ; 0x0202D134
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetWindowContents
mov r4, r0
mov r0, #1
mov r2, #0
strb r0, [r4, #0x1b0]
mov r0, r5
sub r1, r2, #4
strb r2, [r4, #0x1b1]
bl sub_0202830C
mov r0, #4
str r0, [r4, #0x1ac]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0202D134
arm_func_start sub_0202D16C
sub_0202D16C: ; 0x0202D16C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
bl GetWindowContents
mov r4, r0
cmp r5, #0
ldr r0, [r4, #0xfc]
beq _0202D1BC
tst r0, #0x10000000
ldmeqia sp!, {r3, r4, r5, pc}
bic r2, r0, #0x10000000
add r0, r4, #4
mov r1, #0x8000000
str r2, [r4, #0xfc]
bl sub_02031C84
add r0, r4, #4
mov r1, #0x10000000
bl sub_02031C84
mov r0, #1
strb r0, [r4, #0x1c4]
ldmia sp!, {r3, r4, r5, pc}
_0202D1BC:
tst r0, #0x10000000
ldmneia sp!, {r3, r4, r5, pc}
orr r2, r0, #0x10000000
add r0, r4, #4
mov r1, #0x8000000
str r2, [r4, #0xfc]
bl sub_02031C74
add r0, r4, #4
mov r1, #0x10000000
bl sub_02031C74
mov r0, #1
strb r0, [r4, #0x1c4]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0202D16C
arm_func_start CreateOptionsMenu
CreateOptionsMenu: ; 0x0202D1F0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x12c
mov r5, r1
orr r5, r5, #4
mov r1, #0
str r1, [sp, #8]
tst r5, #0x8000
mov sl, r3
mov r4, r2
mov r6, r0
ldr r8, [sp, #0x154]
orrne r5, r5, #0x20000
mov r2, sl
ldr r1, [sp, #8]
b _0202D238
_0202D22C:
add r1, r1, #1
str r1, [sp, #8]
add r2, r2, #0xc
_0202D238:
ldrh r0, [r2]
cmp r0, #0
bne _0202D22C
ldr r1, [sp, #8]
mov r0, #0x10c
add r1, r1, #1
mul r0, r1, r0
mov r1, #8
bl MemAlloc
mov fp, r0
mov r7, fp
and sb, r5, #0x20
b _0202D300
_0202D26C:
mov r0, r7
bl GetStringFromFileVeneer
ldr r0, [sl, #8]
str r0, [r7, #0x100]
ldr r0, [sl, #8]
cmp r0, #0
beq _0202D2C4
ldr r1, [r7, #0x100]
mov r2, #0
b _0202D298
_0202D294:
add r2, r2, #1
_0202D298:
ldrh r0, [r1], #2
cmp r0, #0
bne _0202D294
ldr r0, [sl, #4]
cmp r0, #0
streq r2, [r7, #0x104]
beq _0202D2CC
cmp r0, r2
movle r2, r0
str r2, [r7, #0x104]
b _0202D2CC
_0202D2C4:
ldr r0, [sl, #4]
str r0, [r7, #0x104]
_0202D2CC:
cmp sb, #0
beq _0202D2EC
ldr r1, [r8]
ldr r0, [r7, #0x104]
cmp r1, r0
movge r1, #0
str r1, [r7, #0x108]
b _0202D2F4
_0202D2EC:
mov r0, #0
str r0, [r7, #0x108]
_0202D2F4:
add sl, sl, #0xc
add r7, r7, #0x10c
add r8, r8, #4
_0202D300:
ldrh r1, [sl]
cmp r1, #0
bne _0202D26C
mov r2, #0
strb r2, [r7]
str r2, [r7, #0x100]
str r2, [r7, #0x104]
mov r0, #0x1b8
mov r1, #8
str r2, [r7, #0x108]
bl MemAlloc
cmp r6, #0
mov r7, r0
addne sb, sp, #0x1c
ldmneia r6, {r0, r1, r2, r3}
stmneia sb, {r0, r1, r2, r3}
ldrne r0, _0202D528 ; =UpdateOptionsMenu
mov r8, fp
strne r0, [sp, #0x1c]
bne _0202D364
ldr r0, _0202D52C ; =OPTIONS_MENU_DEFAULT_WINDOW_PARAMS
add r6, sp, #0x1c
ldmia r0, {r0, r1, r2, r3}
stmia r6, {r0, r1, r2, r3}
orr r5, r5, #0x300000
_0202D364:
mov r6, #0
mov sb, r6
str r7, [sp, #0x28]
b _0202D3CC
_0202D374:
mov r0, r8
bl sub_020265A8
cmp r0, r6
ldr sl, [r8, #0x100]
movgt r6, r0
cmp sl, #0
beq _0202D3C0
b _0202D3B0
_0202D394:
ldrh r1, [sl], #2
add r0, sp, #0x2c
bl GetStringFromFileVeneer
add r0, sp, #0x2c
bl sub_020265A8
cmp r0, sb
movgt sb, r0
_0202D3B0:
ldrh r0, [sl]
cmp r0, #0
bne _0202D394
b _0202D3C8
_0202D3C0:
cmp sb, #0x30
movlt sb, #0x30
_0202D3C8:
add r8, r8, #0x10c
_0202D3CC:
mov r0, r8
bl IsEmptyString
cmp r0, #0
beq _0202D374
ldrb r0, [sp, #0x22]
cmp r0, #0
bne _0202D400
add r2, r6, sb
mov r0, r5
mov r1, r4
add r2, r2, #0x34
bl sub_02031A5C
strb r0, [sp, #0x22]
_0202D400:
str r6, [r7, #0x1a8]
add r0, sb, #4
str r0, [r7, #0x1ac]
ldr r0, [r7, #0x1a8]
add r2, sp, #8
add r1, r0, #0x15
str r1, [r7, #0x1b0]
ldr r0, [r7, #0x1ac]
add r3, sp, #0x150
add r0, r1, r0
add r0, r0, #0xe
str r0, [r7, #0x1b4]
ldr r0, [sp, #0x150]
cmp r0, #0
ldreq r0, [sp, #8]
streq r0, [sp, #0x150]
ldrb r0, [sp, #0x23]
cmp r0, #0
mov r0, r5
bne _0202D460
mov r1, r4
bl CalcMenuHeightDiv8__02031AA4
strb r0, [sp, #0x23]
b _0202D468
_0202D460:
mov r1, r4
bl CalcMenuHeightDiv8__02031AA4
_0202D468:
tst r5, #0x200000
ldrneb r1, [sp, #0x20]
ldrneb r0, [sp, #0x22]
subne r0, r1, r0
strneb r0, [sp, #0x20]
tst r5, #0x100000
ldrneb r1, [sp, #0x21]
ldrneb r0, [sp, #0x23]
subne r0, r1, r0
strneb r0, [sp, #0x21]
ldr r0, _0202D528 ; =UpdateOptionsMenu
cmp r4, #0
str r0, [r7]
str r5, [r7, #0xfc]
beq _0202D4C4
add r8, r7, #0x100
mov r6, #9
_0202D4AC:
ldmia r4!, {r0, r1, r2, r3}
stmia r8!, {r0, r1, r2, r3}
subs r6, r6, #1
bne _0202D4AC
ldmia r4, {r0, r1}
stmia r8, {r0, r1}
_0202D4C4:
ldr r0, [sp, #0x154]
str fp, [r7, #0x198]
str r0, [r7, #0x19c]
mov r2, #0
str r2, [r7, #0x1a0]
strb r2, [r7, #0x1a4]
add r0, sp, #0x1c
mov r1, #3
strb r2, [r7, #0x1a5]
bl NewWindowScreenCheck
add r1, sp, #0xc
mov r6, r0
bl GetWindowRectangle
ldr r0, [sp, #8]
add r3, sp, #0xc
str r0, [sp]
ldr r4, [sp, #0x150]
mov r1, r5
add r0, r7, #4
add r2, r7, #0x100
str r4, [sp, #4]
bl InitWindowInput
mov r0, r6
add sp, sp, #0x12c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0202D528: .word UpdateOptionsMenu
_0202D52C: .word OPTIONS_MENU_DEFAULT_WINDOW_PARAMS
arm_func_end CreateOptionsMenu
arm_func_start CloseOptionsMenu
CloseOptionsMenu: ; 0x0202D530
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetWindowContents
mov r4, r0
ldr r0, [r4, #0x198]
bl MemFree
mov r0, r4
bl MemFree
mov r0, r5
bl DeleteWindow
ldmia sp!, {r3, r4, r5, pc}
arm_func_end CloseOptionsMenu
arm_func_start IsOptionsMenuActive
IsOptionsMenuActive: ; 0x0202D55C
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0x1a0]
cmp r0, #6
cmpne r0, #7
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, pc}
arm_func_end IsOptionsMenuActive
arm_func_start CheckOptionsMenuField0x1A4
CheckOptionsMenuField0x1A4: ; 0x0202D57C
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r0, [r0, #0x1a4]
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end CheckOptionsMenuField0x1A4
arm_func_start sub_0202D59C
sub_0202D59C: ; 0x0202D59C
stmdb sp!, {r3, lr}
bl GetWindowContents
add r0, r0, #4
bl GetSelectedItemOnPage
ldmia sp!, {r3, pc}
arm_func_end sub_0202D59C
arm_func_start GetOptionsMenuStates
GetOptionsMenuStates: ; 0x0202D5B0
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
bl GetWindowContents
ldr r4, [r0, #0x198]
b _0202D5D0
_0202D5C4:
ldr r0, [r4, #0x108]
add r4, r4, #0x10c
str r0, [r5], #4
_0202D5D0:
mov r0, r4
bl IsEmptyString
cmp r0, #0
beq _0202D5C4
ldmia sp!, {r3, r4, r5, pc}
arm_func_end GetOptionsMenuStates
arm_func_start GetOptionsMenuResult
GetOptionsMenuResult: ; 0x0202D5E4
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r1, [r0, #0x1a4]
cmp r1, #0
beq _0202D610
ldrb r0, [r0, #0x1a5]
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
_0202D610:
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end GetOptionsMenuResult
arm_func_start UpdateOptionsMenu
UpdateOptionsMenu: ; 0x0202D618
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x30
mov r7, r0
ldr r4, [r7, #0xc]
ldr r0, [r4, #0x1a0]
cmp r0, #5
addls pc, pc, r0, lsl #2
b _0202DA5C
_0202D638: ; jump table
b _0202D650 ; case 0
b _0202D668 ; case 1
b _0202D690 ; case 2
b _0202D6E8 ; case 3
b _0202D9EC ; case 4
b _0202DA30 ; case 5
_0202D650:
ldrsb r0, [r7, #0x10]
bl sub_0202810C
cmp r0, #0
beq _0202DA5C
mov r0, #2
str r0, [r4, #0x1a0]
_0202D668:
ldr r0, [r4, #0x1a0]
cmp r0, #1
bne _0202D690
ldrb r0, [r7, #8]
bl sub_020287C4
ldrsb r0, [r7, #0x10]
bl UpdateWindow
mov r0, #2
str r0, [r4, #0x1a0]
b _0202DA5C
_0202D690:
mov r0, r7
bl sub_0202DA64
ldr r0, [r4, #0xfc]
tst r0, #0x800000
beq _0202D6C8
mov r0, #7
str r0, [r4, #0x1a0]
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a4]
strb r0, [r4, #0x1a5]
sub r0, r0, #4
str r0, [r7, #0xb8]
b _0202DA5C
_0202D6C8:
mov r1, #3
mov r0, #0
str r1, [r4, #0x1a0]
strb r0, [r4, #0x1a4]
strb r0, [r4, #0x1a5]
sub r0, r0, #1
str r0, [r7, #0xb8]
b _0202DA5C
_0202D6E8:
add r1, sp, #8
add r2, sp, #0xc
add r0, r4, #4
mov r3, #1
bl sub_02031C98
ldr r1, [sp, #8]
mov r5, r0
cmp r1, #0
bne _0202D760
ldr r3, [r4, #0x1b0]
add r1, sp, #0xc
add r0, r3, #0xe
str r0, [sp]
mov r6, #0
add r0, r4, #4
mov r2, #2
str r6, [sp, #4]
bl sub_02032160
movs r6, r0
bmi _0202D760
mov r1, r6
add r0, r4, #4
bl sub_02032684
ldr r0, [sp, #8]
mov r1, r6
orr r2, r0, #0x40
add r0, r4, #4
str r2, [sp, #8]
bl sub_020320A8
mov r5, #1
_0202D760:
ldr r0, [sp, #8]
cmp r0, #0
bne _0202D7C0
ldr r3, [r4, #0x1b4]
add r1, sp, #0xc
add r0, r3, #0xe
str r0, [sp]
mov r6, #0
add r0, r4, #4
mov r2, #2
str r6, [sp, #4]
bl sub_02032160
movs r6, r0
bmi _0202D7C0
mov r1, r6
add r0, r4, #4
bl sub_02032684
ldr r1, [sp, #8]
add r0, r4, #4
orr r2, r1, #0x80
add r1, r6, #0x3e8
str r2, [sp, #8]
bl sub_020320A8
mov r5, #1
_0202D7C0:
ldr r0, [sp, #8]
cmp r0, #0
bne _0202D7E0
add r1, sp, #8
add r2, sp, #0xc
add r0, r4, #4
bl sub_02033758
orr r5, r5, r0
_0202D7E0:
add r0, r4, #4
bl GetSelectedMenuItemIdx
ldr r2, [r4, #0xfc]
ldr r3, [r4, #0x198]
mov r1, #0x10c
mla r6, r0, r1, r3
tst r2, #0x200
ldrne r1, [r4, #0x160]
ldrneb r0, [r1, r0]
moveq r0, #0
and r0, r0, #0xff
tst r0, #1
bne _0202D8E8
ldr r0, [sp, #8]
tst r0, #0x40
beq _0202D878
ldr r0, [r6, #0x108]
cmp r0, #0
add r0, r4, #4
ble _0202D86C
mov r1, #3
bl PlayWindowInputSound
ldr r0, [sp, #8]
tst r0, #8
ldr r0, [r6, #0x108]
beq _0202D85C
subs r0, r0, #0xa
str r0, [r6, #0x108]
movmi r0, #0
strmi r0, [r6, #0x108]
b _0202D864
_0202D85C:
sub r0, r0, #1
str r0, [r6, #0x108]
_0202D864:
mov r5, #1
b _0202D900
_0202D86C:
mov r1, #2
bl PlayWindowInputSound
b _0202D900
_0202D878:
tst r0, #0x80
beq _0202D900
ldr r0, [r6, #0x104]
ldr r1, [r6, #0x108]
sub r0, r0, #1
cmp r1, r0
add r0, r4, #4
bge _0202D8DC
mov r1, #3
bl PlayWindowInputSound
ldr r0, [sp, #8]
tst r0, #8
ldr r0, [r6, #0x108]
beq _0202D8CC
add r1, r0, #0xa
str r1, [r6, #0x108]
ldr r0, [r6, #0x104]
sub r0, r0, #1
cmp r1, r0
strgt r0, [r6, #0x108]
b _0202D8D4
_0202D8CC:
add r0, r0, #1
str r0, [r6, #0x108]
_0202D8D4:
mov r5, #1
b _0202D900
_0202D8DC:
mov r1, #2
bl PlayWindowInputSound
b _0202D900
_0202D8E8:
ldr r0, [sp, #8]
tst r0, #0xc0
beq _0202D900
add r0, r4, #4
mov r1, #2
bl PlayWindowInputSound
_0202D900:
cmp r5, #0
beq _0202D910
mov r0, r7
bl sub_0202DA64
_0202D910:
add r0, r4, #4
bl GetSelectedMenuItemIdx
mov r2, r0
ldr r1, [r4, #0x198]
mov r0, #0x10c
mla r0, r2, r0, r1
ldr r1, [sp, #8]
ldr r3, [r0, #0x108]
add r0, r4, #4
bl sub_020323F8
ldr r0, [sp, #8]
tst r0, #1
beq _0202D9AC
add r0, r4, #4
bl IsMenuOptionActive
cmp r0, #0
beq _0202D9DC
ldr r5, [r4, #0x198]
ldr r6, [r4, #0x19c]
b _0202D96C
_0202D960:
ldr r0, [r5, #0x108]
add r5, r5, #0x10c
str r0, [r6], #4
_0202D96C:
mov r0, r5
bl IsEmptyString
cmp r0, #0
beq _0202D960
add r0, r4, #4
mov r1, #0
bl PlayWindowInputSound
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a4]
strb r0, [r4, #0x1a5]
sub r0, r0, #4
str r0, [r7, #0xb8]
mov r0, #4
str r0, [r4, #0x1a0]
b _0202D9DC
_0202D9AC:
tst r0, #2
beq _0202D9DC
add r0, r4, #4
mov r1, #1
bl PlayWindowInputSound
mov r0, #1
strb r0, [r4, #0x1a4]
strb r0, [r4, #0x1a5]
sub r0, r0, #6
str r0, [r7, #0xb8]
mov r0, #4
str r0, [r4, #0x1a0]
_0202D9DC:
ldrsb r0, [r7, #0x10]
add r1, r4, #4
bl sub_02028948
b _0202DA5C
_0202D9EC:
add r0, r4, #4
bl sub_02032070
cmp r0, #0
bne _0202DA5C
ldrb r0, [r4, #0x1a5]
cmp r0, #0
bne _0202DA28
ldr r0, [r4, #0xfc]
tst r0, #0x400000
beq _0202DA28
mov r0, r7
bl sub_0202DA64
mov r0, #7
str r0, [r4, #0x1a0]
b _0202DA5C
_0202DA28:
mov r0, #5
str r0, [r4, #0x1a0]
_0202DA30:
ldrsb r0, [r7, #0x10]
bl sub_0202812C
cmp r0, #0
beq _0202DA5C
ldrb r0, [r4, #0x1a5]
cmp r0, #0
mvnne r0, #4
mvneq r0, #3
str r0, [r7, #0xb8]
mov r0, #6
str r0, [r4, #0x1a0]
_0202DA5C:
add sp, sp, #0x30
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end UpdateOptionsMenu
arm_func_start sub_0202DA64
sub_0202DA64: ; 0x0202DA64
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x160
mov sl, r0
ldr r4, [sl, #0xc]
add r0, r4, #4
bl GetPageStart
mov r5, r0
add r0, r4, #4
bl GetNumItemsOnPage
ldr r2, [r4, #0xfc]
str r0, [sp, #0xc]
tst r2, #0x200
ldrne r0, [r4, #0x160]
ldr r3, [r4, #0x198]
addne sb, r0, r5
mov r1, #0x10c
add r0, r4, #4
mla r6, r5, r1, r3
moveq sb, #0
bl sub_020320C0
mov fp, r0
ldrsb r0, [sl, #0x10]
bl sub_02027B1C
ldr r0, [sp, #0xc]
mov r7, #0
cmp r0, #0
ble _0202DC1C
b _0202DC10
_0202DAD4:
add r0, r4, #4
mov r1, r7
bl GetPageItemYOffset
mov r8, r0
mov r0, #1
cmp sb, #0
mov r1, #0
str r0, [sp, #8]
beq _0202DB14
ldrb r0, [sb]
add sb, sb, #1
tst r0, #2
movne r1, #1
tst r0, #1
movne r0, #0
strne r0, [sp, #8]
_0202DB14:
cmp r1, #0
movne r0, #0x42
moveq r0, #0x44
and r0, r0, #0xff
str r0, [sp, #4]
str r0, [sp]
ldrsb r0, [sl, #0x10]
mov r1, #0xd
mov r2, r8
mov r3, r6
bl sub_020263C8
ldr r2, [r6, #0x100]
add r0, sp, #0x60
cmp r2, #0
ldr r1, [r6, #0x108]
beq _0202DB64
mov r1, r1, lsl #1
ldrh r1, [r2, r1]
bl GetStringFromFileVeneer
b _0202DB80
_0202DB64:
str r1, [sp, #0x34]
add r1, sp, #0x10
str r1, [sp]
ldr r2, _0202DC38 ; =_0209AEE0
ldr r3, _0202DC3C ; =0x0000C402
mov r1, #0x100
bl PreprocessString
_0202DB80:
add r0, sp, #0x60
bl sub_020265A8
ldr r1, [sp, #4]
mov ip, r0
str r1, [sp]
ldr r3, [r4, #0x1ac]
ldr r1, [r4, #0x1b0]
sub r3, r3, ip
add r3, r3, r3, lsr #31
add r1, r1, r3, asr #1
ldrsb r0, [sl, #0x10]
mov r2, r8
add r1, r1, #0xe
add r3, sp, #0x60
bl sub_020263C8
ldr r0, [sp, #8]
cmp r0, #0
beq _0202DC04
cmp r5, fp
ldreq r3, _0202DC40 ; =_0209AEEC
ldrsb r0, [sl, #0x10]
ldrne r3, _0202DC44 ; =_0209AEF4
ldr r1, [r4, #0x1b0]
mov r2, r8
bl DrawTextInWindow
add r0, r5, #0x3e8
cmp r0, fp
ldreq r3, _0202DC48 ; =_0209AEFC
ldrsb r0, [sl, #0x10]
ldrne r3, _0202DC4C ; =_0209AF04
ldr r1, [r4, #0x1b4]
mov r2, r8
bl DrawTextInWindow
_0202DC04:
add r7, r7, #1
add r5, r5, #1
add r6, r6, #0x10c
_0202DC10:
ldr r0, [sp, #0xc]
cmp r7, r0
blt _0202DAD4
_0202DC1C:
ldrsb r1, [sl, #0x10]
add r0, r4, #4
bl sub_0202A03C
ldrsb r0, [sl, #0x10]
bl UpdateWindow
add sp, sp, #0x160
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0202DC38: .word _0209AEE0
_0202DC3C: .word 0x0000C402
_0202DC40: .word _0209AEEC
_0202DC44: .word _0209AEF4
_0202DC48: .word _0209AEFC
_0202DC4C: .word _0209AF04
arm_func_end sub_0202DA64
arm_func_start CreateDebugMenu
CreateDebugMenu: ; 0x0202DC50
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x30
mov r7, r3
mov r5, r1
mov sl, r2
mov r8, r0
mov r1, r7
mov r2, #0
b _0202DC7C
_0202DC74:
add r1, r1, #2
add r2, r2, #1
_0202DC7C:
ldrh r0, [r1]
cmp r0, #0
bne _0202DC74
add r0, r2, #1
add r0, r0, r0, lsl #8
mov r1, #8
bl MemAlloc
mov r4, r0
mov r6, r4
b _0202DCB8
_0202DCA4:
mov r0, r6
bl GetStringFromFileVeneer
add r0, r6, #1
add r7, r7, #2
add r6, r0, #0x100
_0202DCB8:
ldrh r1, [r7]
cmp r1, #0
bne _0202DCA4
mov r0, #0
strb r0, [r6]
ldr r2, [sp, #0x58]
mov r0, #0x3b4
mov r1, #8
str r2, [sp, #0xc]
bl MemAlloc
mov r1, #0
cmp r8, #0
addne fp, sp, #0x10
mov r7, r0
str r1, [sp, #8]
ldmneia r8, {r0, r1, r2, r3}
stmneia fp, {r0, r1, r2, r3}
ldrne r0, _0202DEE8 ; =UpdateDebugMenu
mov sb, r4
orr r5, r5, #4
ldr r6, [sp, #0x5c]
strne r0, [sp, #0x10]
bne _0202DD28
ldr r0, _0202DEEC ; =DEBUG_MENU_DEFAULT_WINDOW_PARAMS
add r8, sp, #0x10
ldmia r0, {r0, r1, r2, r3}
stmia r8, {r0, r1, r2, r3}
orr r5, r5, #0x300000
_0202DD28:
str r7, [sp, #0x1c]
mov r8, #0
b _0202DD4C
_0202DD34:
mov r0, sb
bl sub_020265A8
cmp r0, r8
movgt r8, r0
add r0, sb, #1
add sb, r0, #0x100
_0202DD4C:
mov r0, sb
bl IsEmptyString
cmp r0, #0
beq _0202DD34
ldrb r0, [sp, #0x16]
cmp r0, #0
bne _0202DD7C
mov r0, r5
mov r1, sl
add r2, r8, #0x40
bl sub_02031A5C
strb r0, [sp, #0x16]
_0202DD7C:
str r8, [r7, #0x1a8]
mov sb, r4
and r8, r5, #0x20
mov fp, #0
b _0202DDB8
_0202DD90:
cmp r8, #0
ldrneb r0, [r6]
add r6, r6, #1
strneb r0, [sb, #0x100]
streqb fp, [sb, #0x100]
ldr r1, [sp, #8]
add r0, sb, #1
add r1, r1, #1
str r1, [sp, #8]
add sb, r0, #0x100
_0202DDB8:
mov r0, sb
bl IsEmptyString
cmp r0, #0
beq _0202DD90
ldrb r0, [sp, #0x17]
add r2, sp, #8
add r3, sp, #0xc
cmp r0, #0
mov r0, r5
bne _0202DDF0
mov r1, sl
bl CalcMenuHeightDiv8__02031AA4
strb r0, [sp, #0x17]
b _0202DDF8
_0202DDF0:
mov r1, sl
bl CalcMenuHeightDiv8__02031AA4
_0202DDF8:
tst r5, #0x200000
ldrneb r1, [sp, #0x14]
ldrneb r0, [sp, #0x16]
subne r0, r1, r0
strneb r0, [sp, #0x14]
tst r5, #0x100000
ldrneb r1, [sp, #0x15]
ldrneb r0, [sp, #0x17]
subne r0, r1, r0
strneb r0, [sp, #0x15]
ldr r0, _0202DEE8 ; =UpdateDebugMenu
cmp sl, #0
str r0, [r7]
str r5, [r7, #0xfc]
beq _0202DE54
add r8, r7, #0x100
mov r6, #9
_0202DE3C:
ldmia sl!, {r0, r1, r2, r3}
stmia r8!, {r0, r1, r2, r3}
subs r6, r6, #1
bne _0202DE3C
ldmia sl, {r0, r1}
stmia r8, {r0, r1}
_0202DE54:
ldr r0, [sp, #0x5c]
str r4, [r7, #0x198]
str r0, [r7, #0x19c]
mov r2, #0
str r2, [r7, #0x1a0]
strb r2, [r7, #0x1a4]
#ifdef JAPAN
add r0, r7, #0x1ac
mov r1, #0x3bc
#else
ldr r1, _0202DEF0 ; =0x00003C65
add r0, r7, #0x1ac
#endif
strb r2, [r7, #0x1a5]
bl GetStringFromFileVeneer
ldr r1, _0202DEF4 ; =0x00003C66
add r0, r7, #0x2ac
bl GetStringFromFileVeneer
add r0, r7, #0x1ac
bl sub_020265A8
str r0, [r7, #0x3ac]
add r0, r7, #0x2ac
bl sub_020265A8
str r0, [r7, #0x3b0]
add r0, sp, #0x10
mov r1, #3
bl NewWindowScreenCheck
add r1, sp, #0x20
mov r6, r0
bl GetWindowRectangle
ldr r2, [sp, #8]
mov r1, r5
str r2, [sp]
ldr r4, [sp, #0xc]
add r0, r7, #4
add r2, r7, #0x100
add r3, sp, #0x20
str r4, [sp, #4]
bl InitWindowInput
mov r0, r6
add sp, sp, #0x30
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0202DEE8: .word UpdateDebugMenu
_0202DEEC: .word DEBUG_MENU_DEFAULT_WINDOW_PARAMS
#if defined(EUROPE)
_0202DEF0: .word 0x00003C67
_0202DEF4: .word 0x00003C68
#elif defined(JAPAN)
_0202DEF4: .word 0x000003BD
#else
_0202DEF0: .word 0x00003C65
_0202DEF4: .word 0x00003C66
#endif
arm_func_end CreateDebugMenu
arm_func_start CloseDebugMenu
CloseDebugMenu: ; 0x0202DEF8
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetWindowContents
mov r4, r0
ldr r0, [r4, #0x198]
bl MemFree
mov r0, r4
bl MemFree
mov r0, r5
bl DeleteWindow
ldmia sp!, {r3, r4, r5, pc}
arm_func_end CloseDebugMenu
arm_func_start IsDebugMenuActive
IsDebugMenuActive: ; 0x0202DF24
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0x1a0]
cmp r0, #6
cmpne r0, #7
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, pc}
arm_func_end IsDebugMenuActive
arm_func_start CheckDebugMenuField0x1A4
CheckDebugMenuField0x1A4: ; 0x0202DF44
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r0, [r0, #0x1a4]
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end CheckDebugMenuField0x1A4
arm_func_start sub_0202DF64
sub_0202DF64: ; 0x0202DF64
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r1, [r0, #0x1a4]
cmp r1, #0
beq _0202DF90
ldrb r0, [r0, #0x1a5]
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
_0202DF90:
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_0202DF64
arm_func_start UpdateDebugMenu
UpdateDebugMenu: ; 0x0202DF98
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x30
mov r7, r0
ldr r4, [r7, #0xc]
ldr r0, [r4, #0x1a0]
cmp r0, #5
addls pc, pc, r0, lsl #2
b _0202E294
_0202DFB8: ; jump table
b _0202DFD0 ; case 0
b _0202DFE8 ; case 1
b _0202E010 ; case 2
b _0202E068 ; case 3
b _0202E224 ; case 4
b _0202E268 ; case 5
_0202DFD0:
ldrsb r0, [r7, #0x10]
bl sub_0202810C
cmp r0, #0
beq _0202E294
mov r0, #2
str r0, [r4, #0x1a0]
_0202DFE8:
ldr r0, [r4, #0x1a0]
cmp r0, #1
bne _0202E010
ldrb r0, [r7, #8]
bl sub_020287C4
ldrsb r0, [r7, #0x10]
bl UpdateWindow
mov r0, #2
str r0, [r4, #0x1a0]
b _0202E294
_0202E010:
mov r0, r7
bl sub_0202E29C
ldr r0, [r4, #0xfc]
tst r0, #0x800000
beq _0202E048
mov r0, #7
str r0, [r4, #0x1a0]
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a4]
strb r0, [r4, #0x1a5]
sub r0, r0, #4
str r0, [r7, #0xb8]
b _0202E294
_0202E048:
mov r1, #3
mov r0, #0
str r1, [r4, #0x1a0]
strb r0, [r4, #0x1a4]
strb r0, [r4, #0x1a5]
sub r0, r0, #1
str r0, [r7, #0xb8]
b _0202E294
_0202E068:
add r1, sp, #8
add r2, sp, #0xc
add r0, r4, #4
mov r3, #1
bl sub_02031C98
ldr r1, [sp, #8]
mov r5, r0
cmp r1, #0
bne _0202E0CC
mov r3, #0
add r1, sp, #0xc
str r3, [sp]
mov r6, #1
add r0, r4, #4
mov r2, #2
str r6, [sp, #4]
bl sub_02032160
movs r1, r0
bmi _0202E0CC
add r0, r4, #4
bl sub_02032684
ldr r0, [sp, #8]
mov r5, r6
orr r0, r0, #0x2000
str r0, [sp, #8]
_0202E0CC:
ldr r0, [sp, #8]
cmp r0, #0
bne _0202E0EC
add r1, sp, #8
add r2, sp, #0xc
add r0, r4, #4
bl sub_02033758
orr r5, r5, r0
_0202E0EC:
add r0, r4, #4
bl GetSelectedMenuItemIdx
ldr r1, [r4, #0xfc]
ldr r3, [r4, #0x198]
tst r1, #0x200
ldrne r1, [r4, #0x160]
add r2, r0, r0, lsl #8
ldrneb r1, [r1, r0]
ldr r0, [sp, #8]
add r6, r3, r2
moveq r1, #0
and r1, r1, #0xff
tst r0, #0x2200
beq _0202E15C
tst r1, #1
add r0, r4, #4
bne _0202E154
mov r1, #3
bl PlayWindowInputSound
ldrb r0, [r6, #0x100]
mov r5, #1
cmp r0, #0
moveq r0, #1
movne r0, #0
strb r0, [r6, #0x100]
b _0202E15C
_0202E154:
mov r1, #2
bl PlayWindowInputSound
_0202E15C:
cmp r5, #0
beq _0202E16C
mov r0, r7
bl sub_0202E29C
_0202E16C:
ldr r0, [sp, #8]
tst r0, #1
beq _0202E1E4
add r0, r4, #4
bl IsMenuOptionActive
cmp r0, #0
beq _0202E214
ldr r5, [r4, #0x198]
ldr r6, [r4, #0x19c]
b _0202E1A4
_0202E194:
ldrb r1, [r5, #0x100]
add r0, r5, #1
add r5, r0, #0x100
strb r1, [r6], #1
_0202E1A4:
mov r0, r5
bl IsEmptyString
cmp r0, #0
beq _0202E194
add r0, r4, #4
mov r1, #0
bl PlayWindowInputSound
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a4]
strb r0, [r4, #0x1a5]
sub r0, r0, #4
str r0, [r7, #0xb8]
mov r0, #4
str r0, [r4, #0x1a0]
b _0202E214
_0202E1E4:
tst r0, #2
beq _0202E214
add r0, r4, #4
mov r1, #1
bl PlayWindowInputSound
mov r0, #1
strb r0, [r4, #0x1a4]
strb r0, [r4, #0x1a5]
sub r0, r0, #6
str r0, [r7, #0xb8]
mov r0, #4
str r0, [r4, #0x1a0]
_0202E214:
ldrsb r0, [r7, #0x10]
add r1, r4, #4
bl sub_02028948
b _0202E294
_0202E224:
add r0, r4, #4
bl sub_02032070
cmp r0, #0
bne _0202E294
ldrb r0, [r4, #0x1a5]
cmp r0, #0
bne _0202E260
ldr r0, [r4, #0xfc]
tst r0, #0x400000
beq _0202E260
mov r0, r7
bl sub_0202E29C
mov r0, #7
str r0, [r4, #0x1a0]
b _0202E294
_0202E260:
mov r0, #5
str r0, [r4, #0x1a0]
_0202E268:
ldrsb r0, [r7, #0x10]
bl sub_0202812C
cmp r0, #0
beq _0202E294
ldrb r0, [r4, #0x1a5]
cmp r0, #0
mvnne r0, #4
mvneq r0, #3
str r0, [r7, #0xb8]
mov r0, #6
str r0, [r4, #0x1a0]
_0202E294:
add sp, sp, #0x30
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end UpdateDebugMenu
arm_func_start sub_0202E29C
sub_0202E29C: ; 0x0202E29C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
mov sl, r0
ldr r4, [sl, #0xc]
add r0, r4, #4
bl GetPageStart
mov r7, r0
add r0, r4, #4
bl GetNumItemsOnPage
ldr r1, [r4, #0xfc]
mov r5, r0
tst r1, #0x200
ldrne r0, [r4, #0x160]
ldr r3, [r4, #0x198]
addne r8, r0, r7
add r2, r7, r7, lsl #8
ldrsb r0, [sl, #0x10]
add r6, r3, r2
moveq r8, #0
bl sub_02027B1C
cmp r5, #0
mov r7, #0
ble _0202E3B0
add r0, r4, #0x1ac
str r0, [sp, #8]
b _0202E3A8
_0202E304:
add r0, r4, #4
mov r1, r7
bl GetPageItemYOffset
str r0, [sp, #4]
ldrb r0, [r6, #0x100]
mov r1, #0
cmp r0, #0
movne sb, #1
moveq sb, #0
cmp r8, #0
beq _0202E340
ldrb r0, [r8]
add r8, r8, #1
tst r0, #2
movne r1, #1
_0202E340:
cmp r1, #0
movne r0, #0x42
moveq r0, #0x44
and fp, r0, #0xff
str fp, [sp]
ldrsb r0, [sl, #0x10]
ldr r2, [sp, #4]
mov r1, #0xd
mov r3, r6
bl sub_020263C8
str fp, [sp]
add r3, r4, sb, lsl #2
ldr fp, [r3, #0x3ac]
ldr r3, [sp, #8]
ldr r1, [r4, #0x1a8]
add r3, r3, sb, lsl #8
rsb sb, fp, #0x30
ldrsb r0, [sl, #0x10]
ldr r2, [sp, #4]
add r1, r1, #0xd
add sb, sb, sb, lsr #31
add r1, r1, sb, asr #1
bl sub_020263C8
add r0, r6, #1
add r7, r7, #1
add r6, r0, #0x100
_0202E3A8:
cmp r7, r5
blt _0202E304
_0202E3B0:
ldrsb r1, [sl, #0x10]
add r0, r4, #4
bl sub_0202A03C
ldrsb r0, [sl, #0x10]
bl UpdateWindow
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_0202E29C
arm_func_start CreateScrollBoxSingle
CreateScrollBoxSingle: ; 0x0202E3CC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
mov r8, r0
mov r7, r1
ldr r0, _0202E508 ; =0x00001D6C
mov r1, #8
mov r6, r2
mov r5, r3
bl MemAlloc
mov r4, r0
cmp r8, #0
ldreq r0, _0202E50C ; =SCROLL_BOX_DEFAULT_WINDOW_PARAMS
add ip, sp, #0
ldmeqia r0, {r0, r1, r2, r3}
stmeqia ip, {r0, r1, r2, r3}
ldmneia r8, {r0, r1, r2, r3}
stmneia ip, {r0, r1, r2, r3}
ldrne r0, _0202E510 ; =UpdateScrollBox
ldr r1, _0202E510 ; =UpdateScrollBox
strne r0, [sp]
ldr r0, _0202E514 ; =0x0D0C8012
str r4, [sp, #0xc]
orr r0, r7, r0
str r1, [r4]
bic r0, r0, #1
str r0, [r4, #0xfc]
cmp r6, #0
beq _0202E45C
add ip, r4, #0x100
mov r7, #9
_0202E444:
ldmia r6!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
subs r7, r7, #1
bne _0202E444
ldmia r6, {r0, r1}
stmia ip, {r0, r1}
_0202E45C:
ldr r7, [sp, #0x28]
add r0, r4, #0x100
strh r5, [r0, #0xa0]
cmp r7, #0
beq _0202E48C
add r6, r4, #0x1a8
mov r5, #5
_0202E478:
ldmia r7!, {r0, r1, r2, r3}
stmia r6!, {r0, r1, r2, r3}
subs r5, r5, #1
bne _0202E478
b _0202E494
_0202E48C:
add r0, r4, #0x1a8
bl InitPreprocessorArgs
_0202E494:
mov r0, #1
ldr r7, [sp, #0x30]
ldrh r1, [sp, #0x2c]
str r0, [r4, #0x198]
mov r0, #0
str r0, [r4, #0x19c]
add r0, r4, #0x200
strh r1, [r0, #0xe8]
cmp r7, #0
beq _0202E4D8
add r6, r4, #0x2f0
mov r5, #5
_0202E4C4:
ldmia r7!, {r0, r1, r2, r3}
stmia r6!, {r0, r1, r2, r3}
subs r5, r5, #1
bne _0202E4C4
b _0202E4E0
_0202E4D8:
add r0, r4, #0x2f0
bl InitPreprocessorArgs
_0202E4E0:
mov r3, #0
str r3, [r4, #0x430]
add r2, r4, #0x1000
str r3, [r2, #0x464]
add r0, sp, #0
mov r1, #3
strb r3, [r2, #0x468]
bl NewWindowScreenCheck
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_0202E508: .word 0x00001D6C
_0202E50C: .word SCROLL_BOX_DEFAULT_WINDOW_PARAMS
_0202E510: .word UpdateScrollBox
_0202E514: .word 0x0D0C8012
arm_func_end CreateScrollBoxSingle
arm_func_start CreateScrollBoxMulti
CreateScrollBoxMulti: ; 0x0202E518
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x10
mov r6, r0
mov r5, r2
ldr r2, [sp, #0x44]
mov sl, r1
ldr r0, _0202E6A0 ; =0x00001D6C
mov r1, #8
mov sb, r3
ldr r8, [sp, #0x38]
ldr r7, [sp, #0x3c]
ldr fp, [sp, #0x40]
str r2, [sp, #0x44]
bl MemAlloc
cmp r6, #0
mov r4, r0
ldreq r0, _0202E6A4 ; =SCROLL_BOX_DEFAULT_WINDOW_PARAMS
addeq r6, sp, #0
ldmeqia r0, {r0, r1, r2, r3}
stmeqia r6, {r0, r1, r2, r3}
addne ip, sp, #0
ldmneia r6, {r0, r1, r2, r3}
stmneia ip, {r0, r1, r2, r3}
ldrne r0, _0202E6A8 ; =UpdateScrollBox
ldr r1, _0202E6A8 ; =UpdateScrollBox
strne r0, [sp]
ldr r0, _0202E6AC ; =0x0D0C8012
str r4, [sp, #0xc]
orr r0, sl, r0
str r1, [r4]
bic r0, r0, #1
str r0, [r4, #0xfc]
cmp r5, #0
beq _0202E5C0
add sl, r4, #0x100
mov r6, #9
_0202E5A8:
ldmia r5!, {r0, r1, r2, r3}
stmia sl!, {r0, r1, r2, r3}
subs r6, r6, #1
bne _0202E5A8
ldmia r5, {r0, r1}
stmia sl, {r0, r1}
_0202E5C0:
str sb, [r4, #0x198]
mov r6, #0
str r6, [r4, #0x19c]
b _0202E670
_0202E5D0:
mov r0, #0x50
mul r5, r6, r0
mov r1, r6, lsl #1
add r0, r4, r6, lsl #1
ldrh r1, [r8, r1]
add r0, r0, #0x100
adds sl, r7, r5
strh r1, [r0, #0xa0]
beq _0202E614
add r0, r4, r5
add lr, r0, #0x1a8
mov ip, #5
_0202E600:
ldmia sl!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _0202E600
b _0202E620
_0202E614:
add r0, r4, #0x1a8
add r0, r0, r5
bl InitPreprocessorArgs
_0202E620:
mov r0, r6, lsl #1
ldrh r1, [fp, r0]
add r0, r4, r6, lsl #1
add r0, r0, #0x200
strh r1, [r0, #0xe8]
ldr r0, [sp, #0x44]
adds sl, r0, r5
beq _0202E660
add r0, r4, r5
add ip, r0, #0x2f0
mov r5, #5
_0202E64C:
ldmia sl!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
subs r5, r5, #1
bne _0202E64C
b _0202E66C
_0202E660:
add r0, r4, #0x2f0
add r0, r0, r5
bl InitPreprocessorArgs
_0202E66C:
add r6, r6, #1
_0202E670:
cmp r6, sb
blt _0202E5D0
mov r3, #0
str r3, [r4, #0x430]
add r2, r4, #0x1000
str r3, [r2, #0x464]
add r0, sp, #0
mov r1, #3
strb r3, [r2, #0x468]
bl NewWindowScreenCheck
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0202E6A0: .word 0x00001D6C
_0202E6A4: .word SCROLL_BOX_DEFAULT_WINDOW_PARAMS
_0202E6A8: .word UpdateScrollBox
_0202E6AC: .word 0x0D0C8012
arm_func_end CreateScrollBoxMulti
arm_func_start SetScrollBoxState7
SetScrollBoxState7: ; 0x0202E6B0
stmdb sp!, {r3, lr}
bl GetWindowContents
add r0, r0, #0x1000
mov r1, #7
str r1, [r0, #0x464]
ldmia sp!, {r3, pc}
arm_func_end SetScrollBoxState7
arm_func_start CloseScrollBox
CloseScrollBox: ; 0x0202E6C8
stmdb sp!, {r4, lr}
mov r4, r0
bl GetWindowContents
bl MemFree
mov r0, r4
bl DeleteWindow
ldmia sp!, {r4, pc}
arm_func_end CloseScrollBox
arm_func_start IsScrollBoxActive
IsScrollBoxActive: ; 0x0202E6E4
stmdb sp!, {r3, lr}
bl GetWindowContents
add r0, r0, #0x1000
ldr r0, [r0, #0x464]
cmp r0, #8
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end IsScrollBoxActive
arm_func_start UpdateScrollBox
UpdateScrollBox: ; 0x0202E708
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x6c
mov r4, r0
ldr r5, [r4, #0xc]
add r0, r5, #0x1000
ldr r0, [r0, #0x464]
cmp r0, #7
addls pc, pc, r0, lsl #2
b _0202EE74
_0202E72C: ; jump table
b _0202E74C ; case 0
b _0202E768 ; case 1
b _0202E768 ; case 2
b _0202E768 ; case 3
b _0202E998 ; case 4
b _0202E9C0 ; case 5
b _0202EE38 ; case 6
b _0202EE54 ; case 7
_0202E74C:
ldrsb r0, [r4, #0x10]
bl sub_0202810C
cmp r0, #0
beq _0202EE74
add r0, r5, #0x1000
mov r1, #1
str r1, [r0, #0x464]
_0202E768:
add r0, r5, #0x1000
ldr r0, [r0, #0x464]
cmp r0, #1
beq _0202E788
add r0, r5, #4
bl sub_02032070
cmp r0, #0
bne _0202EE74
_0202E788:
add r0, r5, #0x34
ldr r2, [r5, #0x430]
ldr r1, _0202EE7C ; =0x0000040C
add r0, r0, #0x400
add r3, r5, #0x16c
mla r6, r2, r1, r0
cmp r2, #0
add r7, r3, #0x1800
mov r8, #0
bne _0202E850
ldr sl, [r5, #0x19c]
add r0, r5, sl, lsl #1
add r0, r0, #0x100
ldrh r2, [r0, #0xa0]
cmp r2, #0
addeq r0, r5, #0x1000
streqb r8, [r0, #0x56c]
beq _0202E7F0
add r1, r5, #0x1a8
mov r0, #0x50
mla sb, sl, r0, r1
mov r1, #0x400
add r0, r3, #0x1400
add r3, r1, #4
str sb, [sp]
bl PreprocessStringFromId
_0202E7F0:
ldr r2, [r5, #0x19c]
mov r0, #0x50
mla r1, r2, r0, r5
add r0, r5, #0x6c
add fp, r1, #0x2f0
add sl, r0, #0x1400
mov sb, #5
_0202E80C:
ldmia fp!, {r0, r1, r2, r3}
stmia sl!, {r0, r1, r2, r3}
subs sb, sb, #1
bne _0202E80C
ldr r0, [r5, #0x19c]
add r1, r5, #0x1000
add r0, r5, r0, lsl #1
add r0, r0, #0x200
ldrh r0, [r0, #0xe8]
strh r0, [r6]
ldr r0, [r1, #0x464]
cmp r0, #1
moveq r0, #0
streq r0, [r6, #4]
subeq r0, r0, #1
streq r0, [r6, #8]
b _0202E85C
_0202E850:
add r0, r3, #0x1400
add r1, r6, #0xc
bl strcpy
_0202E85C:
ldr r0, [r5, #0xfc]
ldr r1, _0202EE80 ; =0x000001AF
orr r0, r0, #0x800
str r0, [r5, #0xfc]
add r0, r5, #0x100
strh r1, [r0, #8]
mov r0, #0x10
add r3, r5, #0x16c
str r0, [r5, #0x10c]
add r0, r3, #0x1400
str r0, [r5, #0x148]
ldrh sb, [r6]
add r0, r5, #0x1000
add r2, r5, #0x6c
str sb, [r0, #0x4a0]
add r0, r2, #0x1400
str r0, [sp]
ldrh r2, [r6]
mov r1, #0x400
add r0, r3, #0x1800
add r3, r1, #4
bl PreprocessStringFromId
add r0, r5, #0xc4
add sb, r0, #0x1400
b _0202E8E0
_0202E8C0:
add r0, r5, r8, lsl #2
add r2, r0, #0x1000
add r1, sb, r8, lsl #2
mov r0, r7
str r7, [r2, #0x4e4]
add r8, r8, #1
bl sub_02021F44
mov r7, r0
_0202E8E0:
cmp r7, #0
bne _0202E8C0
add r0, r5, #0x1000
str r8, [r0, #0x4bc]
ldr r1, [r0, #0x464]
cmp r1, #3
ldreq r1, [r6, #4]
movne r1, #0
str r1, [r0, #0x4c0]
ldr r1, [r5, #0xfc]
add r0, r5, #0x1000
orr r1, r1, #8
str r1, [r5, #0xfc]
ldr r0, [r0, #0x4bc]
add r1, sp, #0x38
cmp r0, #1
ldrle r0, [r5, #0xfc]
eorle r0, r0, #8
strle r0, [r5, #0xfc]
ldrsb r0, [r4, #0x10]
bl GetWindowRectangle
ldr r0, [r5, #0x430]
add r3, sp, #0x38
cmp r0, #0
mov r0, #1
bne _0202E974
ldr r1, [r5, #0x198]
add r2, r5, #0x100
str r1, [sp]
str r0, [sp, #4]
ldr r1, [r5, #0xfc]
add r0, r5, #4
bl InitWindowInput
ldr r1, [r5, #0x19c]
add r0, r5, #4
bl sub_02032684
b _0202E98C
_0202E974:
str r0, [sp]
str r0, [sp, #4]
ldr r1, [r5, #0xfc]
add r0, r5, #4
add r2, r5, #0x100
bl InitWindowInput
_0202E98C:
add r0, r5, #0x1000
mov r1, #4
str r1, [r0, #0x464]
_0202E998:
mov r0, r4
bl sub_0202EE88
mov r1, #0
add r0, r5, #0x1000
mov r2, #5
str r2, [r0, #0x464]
strb r1, [r0, #0x468]
sub r0, r1, #1
str r0, [r4, #0xb8]
b _0202EE74
_0202E9C0:
add r0, r5, #0x34
add r8, r0, #0x400
ldr r7, [r5, #0x430]
ldr r6, _0202EE7C ; =0x0000040C
add r1, sp, #0x14
add r2, sp, #0x48
add r0, r5, #4
mov r3, #1
mla r6, r7, r6, r8
bl sub_02031C98
mov r7, r0
add r0, r5, #4
bl GetCurrentPage
mov fp, r0
add r2, r5, #0x1000
mov r0, #0
mov r1, #0x13
ldr r8, [r2, #0x4c0]
bl sub_02031914
add r1, r5, #0x1000
ldr r1, [r1, #0x4bc]
mov sb, r0
cmp r1, #1
ble _0202EA70
tst sb, #0x10
beq _0202EA48
add r0, r5, #4
mov r1, #4
bl PlayWindowInputSound
subs r8, r8, #1
addmi r0, r5, #0x1000
ldrmi r0, [r0, #0x4bc]
submi r8, r0, #1
b _0202EA70
_0202EA48:
tst sb, #0x20
beq _0202EA70
add r0, r5, #4
mov r1, #4
bl PlayWindowInputSound
add r0, r5, #0x1000
ldr r0, [r0, #0x4bc]
add r8, r8, #1
cmp r8, r0
movge r8, #0
_0202EA70:
ldr r0, [r5, #0x430]
cmp r0, #0
bne _0202EA98
ldr r0, [r5, #0x19c]
cmp r0, fp
strne fp, [r5, #0x19c]
addne r0, r5, #0x1000
movne r1, #1
strne r1, [r0, #0x464]
bne _0202EB54
_0202EA98:
add r0, r5, #0x1000
ldr r1, [r0, #0x4c0]
cmp r1, r8
beq _0202EAC0
str r8, [r0, #0x4c0]
str r8, [r6, #4]
mvn r0, #0
str r0, [r6, #8]
mov r7, #1
b _0202EB54
_0202EAC0:
ldr r2, [r0, #0x504]
cmp r2, #0
ble _0202EB54
ldr r0, [sp, #0x14]
tst r0, #0x2000
beq _0202EB10
ldr r0, [r6, #8]
cmp r0, #0
sublt r0, r2, #1
strlt r0, [r6, #8]
blt _0202EAFC
mvneq r0, #0
streq r0, [r6, #8]
subne r0, r0, #1
strne r0, [r6, #8]
_0202EAFC:
add r0, r5, #4
mov r1, #3
bl PlayWindowInputSound
mov r7, #1
b _0202EB54
_0202EB10:
tst r0, #0x1000
beq _0202EB54
ldr r1, [r6, #8]
cmp r1, #0
movlt r0, #0
strlt r0, [r6, #8]
blt _0202EB44
sub r0, r2, #1
cmp r1, r0
mvnge r0, #0
strge r0, [r6, #8]
addlt r0, r1, #1
strlt r0, [r6, #8]
_0202EB44:
add r0, r5, #4
mov r1, #3
bl PlayWindowInputSound
mov r7, #1
_0202EB54:
ldr r0, [sp, #0x14]
cmp r0, #0
bne _0202ECC4
ldrsb r0, [r4, #0x10]
mvn r2, #0
add r1, sp, #0x28
str r2, [sp, #8]
bl GetWindowRectangle
add r0, r5, #0x108
add r0, r0, #0x1400
str r0, [sp, #0xc]
add r0, r5, #0x1000
mov sl, #0
str r0, [sp, #0x10]
b _0202EC08
_0202EB90:
ldr r0, [sp, #0xc]
mov r1, #0x18
mla r2, sl, r1, r0
ldr r1, [sp, #0x28]
ldr r0, [r2, #8]
ldr r3, [sp, #0x30]
add r0, r0, r1
str r0, [sp, #0x18]
ldr ip, [r2, #0x10]
add r0, sp, #0x48
add r1, ip, r1
str r1, [sp, #0x1c]
ldr ip, [r2, #4]
ldr r1, _0202EE84 ; =0x00000408
add ip, ip, r3
str ip, [sp, #0x20]
ldr ip, [r2, #0xc]
add r2, sp, #0x18
add r3, ip, r3
str r3, [sp, #0x24]
bl sub_02006C8C
cmp r0, #0
beq _0202EC04
add r0, r5, #4
mov r1, #0
str sl, [sp, #8]
bl sub_020320EC
mov r7, #1
b _0202EC18
_0202EC04:
add sl, sl, #1
_0202EC08:
ldr r0, [sp, #0x10]
ldr r0, [r0, #0x504]
cmp sl, r0
blt _0202EB90
_0202EC18:
ldr r0, [sp, #8]
cmp r0, #0
strge sl, [r6, #8]
orrge sb, sb, #1
bge _0202EC7C
add r1, sp, #0x14
add r2, sp, #0x48
add r0, r5, #4
bl sub_02033758
add r1, r5, #0x1000
ldr r1, [r1, #0x4bc]
orr r7, r7, r0
cmp r1, #1
ble _0202EC7C
ldr r0, [sp, #0x14]
tst r0, #0x40000
beq _0202EC68
subs r8, r8, #1
submi r8, r1, #1
b _0202EC7C
_0202EC68:
tst r0, #0x80000
beq _0202EC7C
add r8, r8, #1
cmp r8, r1
movge r8, #0
_0202EC7C:
ldr r0, [r5, #0x430]
cmp r0, #0
bne _0202ECA4
ldr r0, [r5, #0x19c]
cmp r0, fp
strne fp, [r5, #0x19c]
addne r0, r5, #0x1000
movne r1, #1
strne r1, [r0, #0x464]
bne _0202ECC4
_0202ECA4:
add r0, r5, #0x1000
ldr r1, [r0, #0x4c0]
cmp r1, r8
strne r8, [r0, #0x4c0]
strne r8, [r6, #4]
mvnne r0, #0
strne r0, [r6, #8]
movne r7, #1
_0202ECC4:
cmp r7, #0
beq _0202ECD4
mov r0, r4
bl sub_0202EE88
_0202ECD4:
#ifdef JAPAN
ldr r0, [r6, #8]
cmp r0, #0
blt _0202EDC8
tst sb, #1
beq _0202EDC8
add r1, r5, #0x108
add r2, r1, #0x1400
mov r1, #0x18
mla r7, r0, r1, r2
ldr sb, [r5, #0x430]
mov r8, #0
ldr r1, _0202EE7C ; =0x0000040C
b _0202F078
_0202F05C:
mla r2, r8, r1, r5
add r2, r2, #0x400
ldrh r3, [r7, #2]
ldrh r2, [r2, #0x34]
cmp r3, r2
beq _0202F080
add r8, r8, #1
_0202F078:
cmp r8, sb
blt _0202F05C
_0202F080:
cmp sb, #3
bge _0202EDBC
ldrh r1, [r7, #2]
cmp r1, #0
addne r0, r5, r0
#else
add r0, r5, #0x1000
ldr r0, [r0, #0x464]
cmp r0, #5
bne _0202EE28
ldr r1, [r6, #8]
mov r0, #0
mov r7, r0
cmp r1, #0
blt _0202EDC8
tst sb, #1
beq _0202EDC8
add r2, r5, #0x108
add r3, r2, #0x1400
mov r2, #0x18
mla r8, r1, r2, r3
ldr sl, [r5, #0x430]
mov r7, #1
ldr r2, _0202EE7C ; =0x0000040C
b _0202ED3C
_0202ED20:
mla r3, r0, r2, r5
add r3, r3, #0x400
ldrh sb, [r8, #2]
ldrh r3, [r3, #0x34]
cmp sb, r3
beq _0202ED44
add r0, r0, #1
_0202ED3C:
cmp r0, sl
blt _0202ED20
_0202ED44:
cmp sl, #3
bge _0202EDBC
ldrh r0, [r8, #2]
cmp r0, #0
addne r0, r5, r1
#endif
addne r0, r0, #0x1000
ldrneb r0, [r0, #0x568]
cmpne r0, #0
beq _0202EDBC
add r0, r5, #4
mov r1, #0
bl PlayWindowInputSound
ldr r0, [r5, #0x430]
add r2, r6, #0x18
add r0, r0, #1
str r0, [r5, #0x430]
mov r3, #0
#ifdef JAPAN
ldrh r8, [r7, #2]
add r0, r6, #0x400
mov r1, r7
strh r8, [r0, #0xc]
#else
ldrh sb, [r8, #2]
add r0, r6, #0x400
mov r1, r8
strh sb, [r0, #0xc]
#endif
str r3, [r6, #0x410]
sub r3, r3, #1
add r0, r2, #0x400
str r3, [r6, #0x414]
bl sub_0202202C
add r0, r5, #0x1000
mov r1, #2
str r1, [r0, #0x464]
b _0202EDC8
_0202EDBC:
add r0, r5, #4
mov r1, #2
bl PlayWindowInputSound
_0202EDC8:
#ifdef JAPAN
add r0, r5, #0x1000
ldr r0, [r0, #0x464]
cmp r0, #5
#else
cmp r7, #0
#endif
bne _0202EE28
ldr r0, [sp, #0x14]
tst r0, #2
beq _0202EE28
add r0, r5, #4
mov r1, #1
bl PlayWindowInputSound
ldr r0, [r5, #0x430]
cmp r0, #0
ble _0202EE0C
sub r0, r0, #1
str r0, [r5, #0x430]
add r0, r5, #0x1000
mov r1, #3
str r1, [r0, #0x464]
b _0202EE28
_0202EE0C:
mov r1, #1
add r0, r5, #0x1000
strb r1, [r0, #0x468]
sub r1, r1, #6
str r1, [r4, #0xb8]
mov r1, #6
str r1, [r0, #0x464]
_0202EE28:
ldrsb r0, [r4, #0x10]
add r1, r5, #4
bl sub_02028948
b _0202EE74
_0202EE38:
add r0, r5, #4
bl sub_02032070
cmp r0, #0
bne _0202EE74
add r0, r5, #0x1000
mov r1, #7
str r1, [r0, #0x464]
_0202EE54:
ldrsb r0, [r4, #0x10]
bl sub_0202812C
cmp r0, #0
mvnne r0, #4
strne r0, [r4, #0xb8]
addne r0, r5, #0x1000
movne r1, #8
strne r1, [r0, #0x464]
_0202EE74:
add sp, sp, #0x6c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0202EE7C: .word 0x0000040C
#ifdef JAPAN
_0202EE80: .word 0x000003B7
#else
_0202EE80: .word 0x000001AF
#endif
_0202EE84: .word 0x00000408
arm_func_end UpdateScrollBox
arm_func_start sub_0202EE88
sub_0202EE88: ; 0x0202EE88
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x124
mov sl, r0
ldr r5, [sl, #0xc]
ldrsb r0, [sl, #0x10]
add r1, r5, #0x34
ldr r4, [r5, #0x430]
ldr r2, _0202F0A4 ; =0x0000040C
add r1, r1, #0x400
add r3, r5, #0x1000
mla r6, r4, r2, r1
ldr r4, [r3, #0x4c0]
bl sub_02027B1C
ldrsb r1, [sl, #0x10]
add r0, sp, #8
bl sub_02025E84
add r0, r5, #4
mov r1, #0
bl GetPageItemYOffset
mov r2, r0
add r0, sp, #8
mov r1, #4
bl sub_0202614C
add r0, r5, r4, lsl #2
add r0, r0, #0x1000
ldr r2, [r0, #0x4e4]
ldr r1, _0202F0A8 ; =0x0000C406
add r0, sp, #8
bl sub_02026194
add r0, sp, #8
bl sub_02026204
add r1, r5, #0x108
add r0, sp, #8
add r1, r1, #0x1400
bl sub_020261F4
add r1, r5, #0x1000
str r0, [r1, #0x504]
ldr r0, [r5, #0x430]
cmp r0, #3
bge _0202EFA0
mov r8, #0
mov r0, #1
mov lr, r8
ldr sb, _0202F0A4 ; =0x0000040C
mov ip, #0x18
b _0202EF90
_0202EF40:
mla r2, r8, ip, r5
add r3, r2, #0x1500
mov r4, r0
mov r2, lr
ldrh r3, [r3, #0xa]
ldr r7, [r5, #0x430]
b _0202EF78
_0202EF5C:
mla fp, r2, sb, r5
add fp, fp, #0x400
ldrh fp, [fp, #0x34]
cmp r3, fp
moveq r4, #0
beq _0202EF80
add r2, r2, #1
_0202EF78:
cmp r2, r7
blt _0202EF5C
_0202EF80:
add r2, r5, r8
add r2, r2, #0x1000
strb r4, [r2, #0x568]
add r8, r8, #1
_0202EF90:
ldr r3, [r1, #0x504]
cmp r8, r3
blt _0202EF40
b _0202EFC8
_0202EFA0:
mov r4, #0
mov r2, r4
b _0202EFBC
_0202EFAC:
add r0, r5, r4
add r0, r0, #0x1000
strb r2, [r0, #0x568]
add r4, r4, #1
_0202EFBC:
ldr r3, [r1, #0x504]
cmp r4, r3
blt _0202EFAC
_0202EFC8:
add r0, r5, #0x108
cmp r3, #0
add r7, r0, #0x1400
mov r8, #0
ble _0202F088
add r4, r5, #0x1000
mov fp, #0x2e
b _0202F07C
_0202EFE8:
add r0, r5, r8
add r0, r0, #0x1000
ldrb r0, [r0, #0x568]
ldrsb r1, [sl, #0x10]
cmp r0, #0
movne sb, #0x4c
add r0, sp, #8
moveq sb, #0x57
bl sub_02025E84
add r0, sp, #8
ldmib r7, {r1, r2}
bl sub_0202614C
ldr r1, _0202F0AC ; =0x0000C506
ldr r2, [r7, #0x14]
add r0, sp, #8
bl sub_02026194
mov r1, sb
add r0, sp, #8
bl sub_02026174
add r0, sp, #8
bl sub_02026204
ldr r0, [r6, #8]
cmp r0, r8
bne _0202F074
ldr r0, [r7, #0xc]
ldr r1, [r7, #4]
cmp r1, r0
bge _0202F074
sub r3, r0, r1
ldr r2, [r7, #8]
ldr r0, [r7, #0x10]
sub r0, r0, r2
stmia sp, {r0, fp}
ldrsb r0, [sl, #0x10]
bl sub_02025D90
_0202F074:
add r8, r8, #1
add r7, r7, #0x18
_0202F07C:
ldr r0, [r4, #0x504]
cmp r8, r0
blt _0202EFE8
_0202F088:
ldrsb r1, [sl, #0x10]
add r0, r5, #4
bl sub_0202A03C
ldrsb r0, [sl, #0x10]
bl UpdateWindow
add sp, sp, #0x124
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0202F0A4: .word 0x0000040C
_0202F0A8: .word 0x0000C406
_0202F0AC: .word 0x0000C506
arm_func_end sub_0202EE88
arm_func_start CreateDialogueBox
CreateDialogueBox: ; 0x0202F0B0
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x10
mov r6, r0
ldr r0, _0202F13C ; =0x00000528
mov r1, #8
bl MemAlloc
mov r4, r0
cmp r6, #0
ldreq r0, _0202F140 ; =DIALOGUE_BOX_DEFAULT_WINDOW_PARAMS
add r5, sp, #0
ldmeqia r0, {r0, r1, r2, r3}
stmeqia r5, {r0, r1, r2, r3}
ldmneia r6, {r0, r1, r2, r3}
stmneia r5, {r0, r1, r2, r3}
ldrne r0, _0202F144 ; =UpdateDialogueBox
ldr r1, _0202F144 ; =UpdateDialogueBox
strne r0, [sp]
str r4, [sp, #0xc]
str r1, [r4]
mov r2, #1
add r0, sp, #0
mov r1, #3
strb r2, [r4, #0xa]
bl NewWindowScreenCheck
mov r5, r0
mov r1, r5
add r0, r4, #0xc
bl sub_02025E84
mov r1, #0
str r1, [r4, #4]
strb r1, [r4, #8]
mov r0, r5
strb r1, [r4, #9]
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0202F13C: .word 0x00000528
_0202F140: .word DIALOGUE_BOX_DEFAULT_WINDOW_PARAMS
_0202F144: .word UpdateDialogueBox
arm_func_end CreateDialogueBox
arm_func_start CloseDialogueBox
CloseDialogueBox: ; 0x0202F148
stmdb sp!, {r4, lr}
mov r4, r0
bl GetWindowContents
mov r0, r4
bl GetWindowContents
bl MemFree
mov r0, r4
bl DeleteWindow
ldmia sp!, {r4, pc}
arm_func_end CloseDialogueBox
arm_func_start sub_0202F16C
sub_0202F16C: ; 0x0202F16C
stmdb sp!, {r3, lr}
bl GetWindowContents
add r0, r0, #0xc
bl sub_020261D4
ldmia sp!, {r3, pc}
arm_func_end sub_0202F16C
arm_func_start IsDialogueBoxActive
IsDialogueBoxActive: ; 0x0202F180
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r0, [r0, #8]
ldmia sp!, {r3, pc}
arm_func_end IsDialogueBoxActive
arm_func_start sub_0202F190
sub_0202F190: ; 0x0202F190
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
mov r4, r2
bl GetWindowContents
mov r1, r5
mov r2, r4
add r0, r0, #0xc
bl sub_02026184
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0202F190
arm_func_start ShowStringIdInDialogueBox
ShowStringIdInDialogueBox: ; 0x0202F1B4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r1
mov r6, r2
mov r5, r3
bl GetWindowContents
mov r4, r0
ldr r0, [r4, #4]
cmp r0, #2
beq _0202F1EC
add r0, r4, #0xc
bl sub_0202613C
mov r0, #1
str r0, [r4, #4]
b _0202F200
_0202F1EC:
ldrb r0, [r4, #9]
cmp r0, #0
beq _0202F200
add r0, r4, #0x128
bl sub_02048240
_0202F200:
mov r0, #1
strb r0, [r4, #8]
ldrb r0, [r4, #0xa]
mov r2, r6
mov r3, r7
strb r0, [r4, #9]
add r0, r4, #0x128
mov r1, #0x400
str r5, [sp]
bl PreprocessStringFromId
mov r1, r7
add r0, r4, #0xc
add r2, r4, #0x128
bl sub_02026194
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end ShowStringIdInDialogueBox
arm_func_start ShowStringInDialogueBox
ShowStringInDialogueBox: ; 0x0202F23C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r1
mov r6, r2
mov r5, r3
bl GetWindowContents
mov r4, r0
ldr r0, [r4, #4]
cmp r0, #2
beq _0202F274
add r0, r4, #0xc
bl sub_0202613C
mov r0, #1
str r0, [r4, #4]
b _0202F288
_0202F274:
ldrb r0, [r4, #9]
cmp r0, #0
beq _0202F288
add r0, r4, #0x128
bl sub_02048240
_0202F288:
mov r0, #1
strb r0, [r4, #8]
ldrb r0, [r4, #0xa]
mov r2, r6
mov r3, r7
strb r0, [r4, #9]
add r0, r4, #0x128
mov r1, #0x400
str r5, [sp]
bl PreprocessString
mov r1, r7
add r0, r4, #0xc
add r2, r4, #0x128
bl sub_02026194
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end ShowStringInDialogueBox
arm_func_start sub_0202F2C4
sub_0202F2C4: ; 0x0202F2C4
stmdb sp!, {r4, lr}
bl GetWindowContents
mov r4, r0
ldr r0, [r4, #4]
cmp r0, #4
addls pc, pc, r0, lsl #2
b _0202F31C
_0202F2E0: ; jump table
b _0202F31C ; case 0
b _0202F2F4 ; case 1
b _0202F308 ; case 2
ldmia sp!, {r4, pc} ; case 3
ldmia sp!, {r4, pc} ; case 4
_0202F2F4:
mov r0, #4
str r0, [r4, #4]
mov r0, #1
strb r0, [r4, #8]
ldmia sp!, {r4, pc}
_0202F308:
add r0, r4, #0xc
bl sub_020261A4
mov r0, #1
strb r0, [r4, #8]
ldmia sp!, {r4, pc}
_0202F31C:
add r0, r4, #0xc
bl sub_0202613C
mov r0, #0
str r0, [r4, #4]
strb r0, [r4, #8]
ldmia sp!, {r4, pc}
arm_func_end sub_0202F2C4
arm_func_start sub_0202F334
sub_0202F334: ; 0x0202F334
stmdb sp!, {r4, lr}
bl GetWindowContents
mov r4, r0
ldr r0, [r4, #4]
cmp r0, #4
addls pc, pc, r0, lsl #2
b _0202F38C
_0202F350: ; jump table
b _0202F38C ; case 0
b _0202F364 ; case 1
b _0202F378 ; case 2
ldmia sp!, {r4, pc} ; case 3
ldmia sp!, {r4, pc} ; case 4
_0202F364:
mov r0, #4
str r0, [r4, #4]
mov r0, #1
strb r0, [r4, #8]
ldmia sp!, {r4, pc}
_0202F378:
mov r0, #3
str r0, [r4, #4]
mov r0, #1
strb r0, [r4, #8]
ldmia sp!, {r4, pc}
_0202F38C:
add r0, r4, #0xc
bl sub_0202613C
mov r0, #0
str r0, [r4, #4]
strb r0, [r4, #8]
ldmia sp!, {r4, pc}
arm_func_end sub_0202F334
arm_func_start ShowDialogueBox
ShowDialogueBox: ; 0x0202F3A4
stmdb sp!, {r4, lr}
bl GetWindowContents
mov r4, r0
ldr r0, [r4, #4]
cmp r0, #4
addls pc, pc, r0, lsl #2
b _0202F3E0
_0202F3C0: ; jump table
b _0202F3E0 ; case 0
b _0202F3D4 ; case 1
b _0202F3D4 ; case 2
ldmia sp!, {r4, pc} ; case 3
ldmia sp!, {r4, pc} ; case 4
_0202F3D4:
add r0, r4, #0xc
bl sub_020261C4
ldmia sp!, {r4, pc}
_0202F3E0:
add r0, r4, #0xc
bl sub_0202613C
mov r0, #0
str r0, [r4, #4]
strb r0, [r4, #8]
ldmia sp!, {r4, pc}
arm_func_end ShowDialogueBox
arm_func_start sub_0202F3F8
sub_0202F3F8: ; 0x0202F3F8
stmdb sp!, {r4, lr}
bl GetWindowContents
mov r4, r0
ldr r0, [r4, #4]
cmp r0, #4
addls pc, pc, r0, lsl #2
b _0202F434
_0202F414: ; jump table
b _0202F434 ; case 0
b _0202F428 ; case 1
b _0202F428 ; case 2
ldmia sp!, {r4, pc} ; case 3
ldmia sp!, {r4, pc} ; case 4
_0202F428:
add r0, r4, #0xc
bl sub_020261B4
ldmia sp!, {r4, pc}
_0202F434:
add r0, r4, #0xc
bl sub_0202613C
mov r0, #0
str r0, [r4, #4]
strb r0, [r4, #8]
ldmia sp!, {r4, pc}
arm_func_end sub_0202F3F8
arm_func_start ReadStringFromDialogueBox
ReadStringFromDialogueBox: ; 0x0202F44C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
mov r4, r2
bl GetWindowContents
mov r1, r0
mov r0, r5
mov r2, r4
add r1, r1, #0x128
bl MemcpySimple
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ReadStringFromDialogueBox
arm_func_start sub_0202F474
sub_0202F474: ; 0x0202F474
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
strb r4, [r0, #0xa]
ldmia sp!, {r4, pc}
arm_func_end sub_0202F474
arm_func_start UpdateDialogueBox
UpdateDialogueBox: ; 0x0202F488
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r4, [r5, #0xc]
ldr r0, [r4, #4]
cmp r0, #4
addls pc, pc, r0, lsl #2
ldmia sp!, {r3, r4, r5, pc}
_0202F4A4: ; jump table
b _0202F4B8 ; case 0
b _0202F4E4 ; case 1
b _0202F504 ; case 2
b _0202F568 ; case 3
b _0202F57C ; case 4
_0202F4B8:
add r0, r4, #0xc
bl sub_020261D4
cmp r0, #0
moveq r0, #0
streqb r0, [r4, #8]
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, #1
str r0, [r4, #4]
strb r0, [r4, #8]
sub r0, r0, #2
str r0, [r5, #0xb8]
_0202F4E4:
mov r0, #1
strb r0, [r4, #8]
ldrsb r0, [r5, #0x10]
bl sub_0202810C
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, #2
str r0, [r4, #4]
_0202F504:
add r0, r4, #0xc
bl sub_02026204
cmp r0, #0x10
moveq r0, #3
streq r0, [r4, #4]
moveq r0, #1
streqb r0, [r4, #8]
ldmeqia sp!, {r3, r4, r5, pc}
ldrb r5, [r4, #8]
add r0, r4, #0xc
bl sub_020261E4
strb r0, [r4, #8]
cmp r5, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldrb r0, [r4, #8]
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
ldrb r0, [r4, #9]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
add r0, r4, #0x128
bl sub_02048240
mov r0, #0
strb r0, [r4, #9]
ldmia sp!, {r3, r4, r5, pc}
_0202F568:
mov r0, #4
str r0, [r4, #4]
mov r0, #1
strb r0, [r4, #8]
ldmia sp!, {r3, r4, r5, pc}
_0202F57C:
ldrsb r0, [r5, #0x10]
bl sub_0202812C
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
add r0, r4, #0xc
bl sub_0202613C
mov r0, #0
str r0, [r4, #4]
strb r0, [r4, #8]
sub r0, r0, #6
str r0, [r5, #0xb8]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end UpdateDialogueBox
arm_func_start CreatePortraitBox
CreatePortraitBox: ; 0x0202F5AC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x10
mov r7, r0
mov r4, r1
mov r0, #0x380
mov r1, #8
mov r6, r2
bl MemAlloc
ldr r1, _0202F648 ; =PORTRAIT_BOX_DEFAULT_WINDOW_PARAMS
mov r5, r0
add ip, sp, #0
ldmia r1, {r0, r1, r2, r3}
stmia ip, {r0, r1, r2, r3}
ldr r0, _0202F64C ; =UpdatePortraitBox
cmp r6, #0
str r0, [sp]
mvnne r0, #3
mvneq r0, #6
strb r0, [sp, #9]
str r5, [sp, #0xc]
strb r7, [sp, #8]
add r0, sp, #0
strb r6, [r5, #0x2a]
mov r1, #3
bl NewWindowScreenCheck
strb r0, [r5]
mov r1, #0
add r0, r5, #8
str r1, [r5, #4]
bl InitPortraitParams
add r0, r5, #0x18
bl InitPortraitParams
str r4, [r5, #0x2c]
mov r0, #0
strb r0, [r5, #0x28]
strb r0, [r5, #0x29]
ldrsb r0, [r5]
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0202F648: .word PORTRAIT_BOX_DEFAULT_WINDOW_PARAMS
_0202F64C: .word UpdatePortraitBox
arm_func_end CreatePortraitBox
arm_func_start ClosePortraitBox
ClosePortraitBox: ; 0x0202F650
stmdb sp!, {r4, lr}
mov r4, r0
bl GetWindowContents
bl MemFree
mov r0, r4
bl DeleteWindow
ldmia sp!, {r4, pc}
arm_func_end ClosePortraitBox
arm_func_start PortraitBoxNeedsUpdate
PortraitBoxNeedsUpdate: ; 0x0202F66C
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #4]
sub r0, r0, #1
cmp r0, #1
movls r0, #1
movhi r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end PortraitBoxNeedsUpdate
arm_func_start ShowPortraitInPortraitBox
ShowPortraitInPortraitBox: ; 0x0202F690
stmdb sp!, {r3, r4, r5, lr}
mov r5, r1
bl GetWindowContents
mov r4, r0
ldr r0, [r4, #4]
cmp r0, #2
cmpne r0, #3
movne r0, #1
strne r0, [r4, #4]
cmp r5, #0
addne ip, r4, #0x18
ldmneia r5, {r0, r1, r2, r3}
stmneia ip, {r0, r1, r2, r3}
bne _0202F6D0
add r0, r4, #0x18
bl InitPortraitParams
_0202F6D0:
mov r0, #1
strb r0, [r4, #0x28]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ShowPortraitInPortraitBox
arm_func_start HidePortraitBox
HidePortraitBox: ; 0x0202F6DC
stmdb sp!, {r4, lr}
bl GetWindowContents
mov r4, r0
mov r0, #0
strb r0, [r4, #0x28]
add r0, r4, #0x18
bl InitPortraitParams
ldr r0, [r4, #4]
cmp r0, #0
movne r0, #1
strneb r0, [r4, #0x29]
ldmia sp!, {r4, pc}
arm_func_end HidePortraitBox
arm_func_start UpdatePortraitBox
UpdatePortraitBox: ; 0x0202F70C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r4, [r5, #0xc]
ldr r0, [r4, #4]
cmp r0, #4
addls pc, pc, r0, lsl #2
ldmia sp!, {r3, r4, r5, pc}
_0202F728: ; jump table
b _0202F73C ; case 0
b _0202F760 ; case 1
b _0202F778 ; case 2
b _0202F86C ; case 3
b _0202F894 ; case 4
_0202F73C:
ldrb r0, [r4, #0x28]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r1, #0
mov r0, #1
strb r1, [r4, #0x28]
str r0, [r4, #4]
sub r0, r0, #2
str r0, [r5, #0xb8]
_0202F760:
ldrsb r0, [r5, #0x10]
bl sub_0202811C
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, #2
str r0, [r4, #4]
_0202F778:
mov r0, #0
strb r0, [r4, #0x28]
add r0, r4, #0x18
add ip, r4, #8
ldmia r0, {r0, r1, r2, r3}
stmia ip, {r0, r1, r2, r3}
ldrb r0, [r4, #0x29]
cmp r0, #0
bne _0202F86C
mov r0, ip
bl IsValidPortrait
cmp r0, #0
beq _0202F854
add r0, r4, #8
add r1, r4, #0x30
bl LoadPortrait
cmp r0, #0
beq _0202F824
ldr r2, [r4, #0x2c]
ldrsb r0, [r5, #0x10]
add r1, r4, #0x30
mov r2, r2, lsl #4
bl sub_02027040
ldrsb r0, [r5, #0x10]
ldr r2, [r4, #0x2c]
add r1, r4, #0x60
bl sub_02026E3C
ldrb r0, [r4, #0x16]
strb r0, [r5, #0x11]
ldrb r0, [r4, #0x2a]
cmp r0, #0
ldrsb r0, [r4]
beq _0202F808
mvn r1, #3
bl sub_02028080
b _0202F810
_0202F808:
mvn r1, #6
bl sub_02028080
_0202F810:
ldrsb r0, [r5, #0x10]
add r1, r4, #0xc
ldmia r1, {r1, r2}
bl sub_02028770
b _0202F85C
_0202F824:
ldrsb r0, [r5, #0x10]
bl sub_0202836C
ldrsb r0, [r5, #0x10]
bl sub_02027B1C
ldrsb r0, [r4]
mov r1, #0
bl sub_02028080
add r1, r4, #0xc
ldrsb r0, [r5, #0x10]
ldmia r1, {r1, r2}
bl sub_02028770
b _0202F85C
_0202F854:
mov r0, #1
strb r0, [r4, #0x29]
_0202F85C:
mov r0, #3
str r0, [r4, #4]
sub r0, r0, #4
str r0, [r5, #0xb8]
_0202F86C:
ldrb r0, [r4, #0x28]
cmp r0, #0
movne r0, #2
strne r0, [r4, #4]
ldmneia sp!, {r3, r4, r5, pc}
ldrb r0, [r4, #0x29]
cmp r0, #0
movne r0, #4
strne r0, [r4, #4]
ldmia sp!, {r3, r4, r5, pc}
_0202F894:
ldrsb r0, [r5, #0x10]
bl sub_0202812C
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
add r0, r4, #8
bl InitPortraitParams
mov r0, #0
strb r0, [r4, #0x29]
str r0, [r4, #4]
sub r0, r0, #6
str r0, [r5, #0xb8]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end UpdatePortraitBox
arm_func_start CreateTextBox
CreateTextBox: ; 0x0202F8C4
stmdb sp!, {r4, lr}
mov r4, r1
bl CreateTextBoxInternal
str r4, [r0, #4]
ldrsb r0, [r0]
ldmia sp!, {r4, pc}
arm_func_end CreateTextBox
arm_func_start CreateTextBoxWithArg
CreateTextBoxWithArg: ; 0x0202F8DC
stmdb sp!, {r3, r4, r5, lr}
mov r4, r2
mov r5, r1
bl CreateTextBoxInternal
str r4, [r0, #0x14]
str r5, [r0, #8]
ldrsb r0, [r0]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end CreateTextBoxWithArg
arm_func_start CloseTextBox
CloseTextBox: ; 0x0202F8FC
stmdb sp!, {r4, lr}
mov r4, r0
bl GetWindowContents
bl MemFree
mov r0, r4
bl DeleteWindow
ldmia sp!, {r4, pc}
arm_func_end CloseTextBox
arm_func_start CloseTextBox2
CloseTextBox2: ; 0x0202F918
stmdb sp!, {r4, lr}
mov r4, r0
bl GetWindowContents
mov r0, r4
bl sub_0202836C
mov r0, r4
bl sub_02027B1C
mov r0, r4
bl sub_0202F954
mov r0, r4
bl GetWindowContents
bl MemFree
mov r0, r4
bl DeleteWindow
ldmia sp!, {r4, pc}
arm_func_end CloseTextBox2
arm_func_start sub_0202F954
sub_0202F954: ; 0x0202F954
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r1, [r0, #0x10]
cmp r1, #6
addls pc, pc, r1, lsl #2
b _0202F9AC
_0202F96C: ; jump table
b _0202F9AC ; case 0
b _0202F988 ; case 1
b _0202F994 ; case 2
b _0202F9A0 ; case 3
ldmia sp!, {r3, pc} ; case 4
ldmia sp!, {r3, pc} ; case 5
ldmia sp!, {r3, pc} ; case 6
_0202F988:
mov r1, #5
str r1, [r0, #0x10]
ldmia sp!, {r3, pc}
_0202F994:
mov r1, #3
str r1, [r0, #0x10]
ldmia sp!, {r3, pc}
_0202F9A0:
mov r1, #4
str r1, [r0, #0x10]
ldmia sp!, {r3, pc}
_0202F9AC:
mov r1, #0
str r1, [r0, #0x10]
ldmia sp!, {r3, pc}
arm_func_end sub_0202F954
arm_func_start sub_0202F9B8
sub_0202F9B8: ; 0x0202F9B8
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r1, [r0, #0x10]
cmp r1, #3
moveq r1, #2
streq r1, [r0, #0x10]
moveq r0, #1
movne r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_0202F9B8
arm_func_start CreateTextBoxInternal
CreateTextBoxInternal: ; 0x0202F9DC
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x10
mov r5, r0
mov r0, #0x18
mov r1, #8
bl MemAlloc
mov r4, r0
cmp r5, #0
ldreq r0, _0202FA54 ; =TEXT_BOX_DEFAULT_WINDOW_PARAMS
add ip, sp, #0
ldmeqia r0, {r0, r1, r2, r3}
ldmneia r5, {r0, r1, r2, r3}
stmia ip, {r0, r1, r2, r3}
ldr r1, _0202FA58 ; =UpdateTextBox
add r0, sp, #0
str r1, [sp]
str r4, [sp, #0xc]
mov r1, #3
bl NewWindowScreenCheck
strb r0, [r4]
mov r0, #0
str r0, [r4, #4]
str r0, [r4, #8]
str r0, [r4, #0x14]
str r0, [r4, #0x10]
ldr r1, _0202FA58 ; =UpdateTextBox
mov r0, r4
str r1, [r4, #0xc]
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0202FA54: .word TEXT_BOX_DEFAULT_WINDOW_PARAMS
_0202FA58: .word UpdateTextBox
arm_func_end CreateTextBoxInternal
arm_func_start UpdateTextBox
UpdateTextBox: ; 0x0202FA5C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r4, [r5, #0xc]
add r1, sp, #0
mov r0, #0
bl GetPressedButtons
ldr r0, [r4, #0x10]
cmp r0, #6
addls pc, pc, r0, lsl #2
ldmia sp!, {r3, r4, r5, pc}
_0202FA84: ; jump table
b _0202FAA0 ; case 0
b _0202FAB0 ; case 1
b _0202FAC8 ; case 2
b _0202FB04 ; case 3
b _0202FB50 ; case 4
b _0202FB68 ; case 5
b _0202FB88 ; case 6
_0202FAA0:
mvn r0, #0
str r0, [r5, #0xb8]
mov r0, #1
str r0, [r4, #0x10]
_0202FAB0:
ldrsb r0, [r5, #0x10]
bl sub_0202810C
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, #2
str r0, [r4, #0x10]
_0202FAC8:
ldr r2, [r4, #8]
cmp r2, #0
beq _0202FAE4
ldrsb r0, [r5, #0x10]
ldr r1, [r4, #0x14]
blx r2
b _0202FAF8
_0202FAE4:
ldr r1, [r4, #4]
cmp r1, #0
beq _0202FAF8
ldrsb r0, [r5, #0x10]
blx r1
_0202FAF8:
mov r0, #3
str r0, [r4, #0x10]
ldmia sp!, {r3, r4, r5, pc}
_0202FB04:
ldrb r0, [r5, #8]
cmp r0, #1
ldmeqia sp!, {r3, r4, r5, pc}
ldrh r0, [sp]
tst r0, #2
ldrnesb r2, [r5, #9]
mvnne r1, #1
cmpne r2, r1
subne r0, r1, #3
cmpne r2, r0
subne r0, r1, #6
cmpne r2, r0
subne r0, r1, #7
cmpne r2, r0
movne r0, #4
strne r0, [r4, #0x10]
ldr r0, [r4, #0x10]
cmp r0, #4
ldmneia sp!, {r3, r4, r5, pc}
_0202FB50:
ldrsb r0, [r5, #0x10]
bl sub_0202836C
ldrsb r0, [r5, #0x10]
bl sub_02027B1C
mov r0, #5
str r0, [r4, #0x10]
_0202FB68:
ldrsb r0, [r5, #0x10]
bl sub_0202812C
cmp r0, #0
movne r0, #6
strne r0, [r4, #0x10]
subne r0, r0, #0xc
strne r0, [r5, #0xb8]
ldmia sp!, {r3, r4, r5, pc}
_0202FB88:
mvn r0, #4
str r0, [r5, #0xb8]
mov r0, #7
str r0, [r4, #0x10]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end UpdateTextBox
arm_func_start IsTextBoxActive
IsTextBoxActive: ; 0x0202FB9C
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0x10]
cmp r0, #7
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end IsTextBoxActive
arm_func_start CreateAreaNameBox
CreateAreaNameBox: ; 0x0202FBBC
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x64
mov r7, r0
mov r6, r1
mov r0, #0x1b4
mov r1, #8
mov r5, r2
mov r8, r3
bl MemAlloc
mov r4, r0
str r8, [r4, #0xa4]
add r0, sp, #0x14
str r8, [sp, #0x24]
str r0, [sp]
ldr r2, _0202FD2C ; =_0209AF6C
ldr r3, _0202FD30 ; =0x0000C402
add r0, r4, #0xac
mov r1, #0x100
bl PreprocessString
add r0, r4, #0xac
bl sub_020265A8
mov ip, r0
cmp r7, #0
str ip, [r4, #0xa8]
addne lr, sp, #4
ldmneia r7, {r0, r1, r2, r3}
stmneia lr, {r0, r1, r2, r3}
ldrne r0, _0202FD34 ; =UpdateAreaNameBox
strne r0, [sp, #4]
bne _0202FC48
ldr r0, _0202FD38 ; =AREA_NAME_BOX_DEFAULT_WINDOW_PARAMS
add r7, sp, #4
ldmia r0, {r0, r1, r2, r3}
stmia r7, {r0, r1, r2, r3}
orr r6, r6, #0x300000
_0202FC48:
ldrb r0, [sp, #0xa]
str r4, [sp, #0x10]
cmp r0, #0
addeq r1, ip, #7
moveq r0, r1, asr #2
addeq r0, r1, r0, lsr #29
moveq r0, r0, asr #3
streqb r0, [sp, #0xa]
ldrb r0, [sp, #0xb]
cmp r0, #0
moveq r0, #2
streqb r0, [sp, #0xb]
tst r6, #0x200000
ldrneb r1, [sp, #8]
ldrneb r0, [sp, #0xa]
subne r0, r1, r0
strneb r0, [sp, #8]
tst r6, #0x100000
ldrneb r1, [sp, #9]
ldrneb r0, [sp, #0xb]
subne r0, r1, r0
strneb r0, [sp, #9]
ldrb r1, [sp, #0xa]
ldr r0, [r4, #0xa8]
rsb r0, r0, r1, lsl #3
add r0, r0, r0, lsr #31
mov r0, r0, asr #1
str r0, [r4, #0x1b0]
ldrb r0, [sp, #0xb]
mov r0, r0, lsl #3
sub r0, r0, #0xc
add r0, r0, r0, lsr #31
mov r0, r0, asr #1
str r0, [r4, #0x1ac]
ldr r0, [r4, #0x1b0]
cmp r0, #0
movlt r0, #0
strlt r0, [r4, #0x1b0]
ldr r0, _0202FD34 ; =UpdateAreaNameBox
cmp r5, #0
stmia r4, {r0, r6}
beq _0202FD10
add r7, r4, #8
mov r6, #9
_0202FCF8:
ldmia r5!, {r0, r1, r2, r3}
stmia r7!, {r0, r1, r2, r3}
subs r6, r6, #1
bne _0202FCF8
ldmia r5, {r0, r1}
stmia r7, {r0, r1}
_0202FD10:
mov r2, #0
add r0, sp, #4
mov r1, #3
str r2, [r4, #0xa0]
bl NewWindowScreenCheck
add sp, sp, #0x64
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_0202FD2C: .word _0209AF6C
_0202FD30: .word 0x0000C402
_0202FD34: .word UpdateAreaNameBox
_0202FD38: .word AREA_NAME_BOX_DEFAULT_WINDOW_PARAMS
arm_func_end CreateAreaNameBox
arm_func_start SetAreaNameBoxState3
SetAreaNameBoxState3: ; 0x0202FD3C
stmdb sp!, {r3, lr}
bl GetWindowContents
mov r1, #3
str r1, [r0, #0xa0]
ldmia sp!, {r3, pc}
arm_func_end SetAreaNameBoxState3
arm_func_start CloseAreaNameBox
CloseAreaNameBox: ; 0x0202FD50
stmdb sp!, {r4, lr}
mov r4, r0
bl GetWindowContents
bl MemFree
mov r0, r4
bl DeleteWindow
ldmia sp!, {r4, pc}
arm_func_end CloseAreaNameBox
arm_func_start IsAreaNameBoxActive
IsAreaNameBoxActive: ; 0x0202FD6C
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0xa0]
cmp r0, #2
cmpne r0, #4
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, pc}
arm_func_end IsAreaNameBoxActive
arm_func_start UpdateAreaNameBox
UpdateAreaNameBox: ; 0x0202FD8C
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
ldr r4, [r5, #0xc]
ldr r0, [r4, #0xa0]
cmp r0, #3
addls pc, pc, r0, lsl #2
ldmia sp!, {r4, r5, r6, pc}
_0202FDA8: ; jump table
b _0202FDB8 ; case 0
b _0202FDD0 ; case 1
ldmia sp!, {r4, r5, r6, pc} ; case 2
b _0202FE0C ; case 3
_0202FDB8:
ldrsb r0, [r5, #0x10]
bl sub_0202810C
cmp r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, #1
str r0, [r4, #0xa0]
_0202FDD0:
ldrsb r0, [r5, #0x10]
ldr r6, [r5, #0xc]
bl sub_02027B1C
ldrsb r0, [r5, #0x10]
ldr r1, [r6, #0x1b0]
ldr r2, [r6, #0x1ac]
add r3, r6, #0xac
bl DrawTextInWindow
ldrsb r0, [r5, #0x10]
bl UpdateWindow
mov r0, #2
str r0, [r4, #0xa0]
sub r0, r0, #3
str r0, [r5, #0xb8]
ldmia sp!, {r4, r5, r6, pc}
_0202FE0C:
ldrsb r0, [r5, #0x10]
bl sub_0202812C
cmp r0, #0
mvnne r0, #4
strne r0, [r5, #0xb8]
movne r0, #4
strne r0, [r4, #0xa0]
ldmia sp!, {r4, r5, r6, pc}
arm_func_end UpdateAreaNameBox
arm_func_start CreateControlsChart
CreateControlsChart: ; 0x0202FE2C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x10
mov r7, r0
mov r5, r1
mov r0, #0xa8
mov r1, #8
mov r4, r2
mov r6, r3
bl MemAlloc
mov ip, r0
cmp r7, #0
ldreq r0, _0202FECC ; =CONTROLS_CHART_DEFAULT_WINDOW_PARAMS
strh r6, [ip, #0xa4]
add lr, sp, #0
ldmeqia r0, {r0, r1, r2, r3}
stmeqia lr, {r0, r1, r2, r3}
ldmneia r7, {r0, r1, r2, r3}
stmneia lr, {r0, r1, r2, r3}
ldrne r0, _0202FED0 ; =UpdateControlsChart
str ip, [sp, #0xc]
strne r0, [sp]
ldr r0, _0202FED0 ; =UpdateControlsChart
cmp r4, #0
stmia ip, {r0, r5}
beq _0202FEB0
add lr, ip, #8
mov r5, #9
_0202FE98:
ldmia r4!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs r5, r5, #1
bne _0202FE98
ldmia r4, {r0, r1}
stmia lr, {r0, r1}
_0202FEB0:
mov r2, #0
add r0, sp, #0
mov r1, #3
str r2, [ip, #0xa0]
bl NewWindowScreenCheck
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0202FECC: .word CONTROLS_CHART_DEFAULT_WINDOW_PARAMS
_0202FED0: .word UpdateControlsChart
arm_func_end CreateControlsChart
arm_func_start CloseControlsChart
CloseControlsChart: ; 0x0202FED4
stmdb sp!, {r4, lr}
mov r4, r0
bl GetWindowContents
bl MemFree
mov r0, r4
bl DeleteWindow
ldmia sp!, {r4, pc}
arm_func_end CloseControlsChart
arm_func_start IsControlsChartActive
IsControlsChartActive: ; 0x0202FEF0
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0xa0]
cmp r0, #2
cmpne r0, #4
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, pc}
arm_func_end IsControlsChartActive
arm_func_start UpdateControlsChart
UpdateControlsChart: ; 0x0202FF10
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
ldr r4, [r5, #0xc]
ldr r0, [r4, #0xa0]
cmp r0, #3
addls pc, pc, r0, lsl #2
ldmia sp!, {r4, r5, r6, pc}
_0202FF2C: ; jump table
b _0202FF3C ; case 0
b _0202FF54 ; case 1
ldmia sp!, {r4, r5, r6, pc} ; case 2
b _0202FF90 ; case 3
_0202FF3C:
ldrsb r0, [r5, #0x10]
bl sub_0202810C
cmp r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, #1
str r0, [r4, #0xa0]
_0202FF54:
ldrsb r0, [r5, #0x10]
ldr r6, [r5, #0xc]
bl sub_02027B1C
ldrsb r0, [r5, #0x10]
ldrh r3, [r6, #0xa4]
mov r1, #4
mov r2, #2
bl sub_02026268
ldrsb r0, [r5, #0x10]
bl UpdateWindow
mov r0, #2
str r0, [r4, #0xa0]
sub r0, r0, #3
str r0, [r5, #0xb8]
ldmia sp!, {r4, r5, r6, pc}
_0202FF90:
ldrsb r0, [r5, #0x10]
bl sub_0202812C
cmp r0, #0
mvnne r0, #4
strne r0, [r5, #0xb8]
movne r0, #4
strne r0, [r4, #0xa0]
ldmia sp!, {r4, r5, r6, pc}
arm_func_end UpdateControlsChart
arm_func_start CreateAlertBox
CreateAlertBox: ; 0x0202FFB0
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x10
mov r5, r0
mov r0, #0x650
mov r1, #8
bl MemAlloc
mov r1, #0x650
mov r4, r0
bl MemZero
cmp r5, #0
ldreq r0, _0203003C ; =ALERT_BOX_DEFAULT_WINDOW_PARAMS
add ip, sp, #0
ldmeqia r0, {r0, r1, r2, r3}
stmeqia ip, {r0, r1, r2, r3}
ldmneia r5, {r0, r1, r2, r3}
stmneia ip, {r0, r1, r2, r3}
ldrne r0, _02030040 ; =UpdateAlertBox
str r4, [sp, #0xc]
strne r0, [sp]
add r0, sp, #0
mov r1, #3
bl NewWindowScreenCheck
strb r0, [r4]
ldrsb r1, [r4]
add r0, r4, #8
bl sub_02025E84
mov r1, #0
str r1, [r4, #4]
add r0, r4, #0x600
strh r1, [r0, #0x44]
strh r1, [r0, #0x46]
strh r1, [r0, #0x48]
ldrsb r0, [r4]
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0203003C: .word ALERT_BOX_DEFAULT_WINDOW_PARAMS
_02030040: .word UpdateAlertBox
arm_func_end CreateAlertBox
arm_func_start CloseAlertBox
CloseAlertBox: ; 0x02030044
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetWindowContents
mov r4, r0
ldrsb r0, [r4]
bl sub_0202836C
add r0, r4, #8
bl sub_0202613C
mov r0, r5
bl GetWindowContents
bl MemFree
mov r0, r5
bl DeleteWindow
ldmia sp!, {r3, r4, r5, pc}
arm_func_end CloseAlertBox
arm_func_start sub_0203007C
sub_0203007C: ; 0x0203007C
add r0, r0, #0x600
ldrsh r1, [r0, #0x44]
add r1, r1, #1
strh r1, [r0, #0x44]
ldrsh r1, [r0, #0x44]
cmp r1, #4
movge r1, #0
strgeh r1, [r0, #0x44]
bx lr
arm_func_end sub_0203007C
arm_func_start sub_020300A0
sub_020300A0: ; 0x020300A0
add r0, r0, #0x600
ldrsh r0, [r0, #0x44]
add r0, r0, #1
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
cmp r0, #4
movge r0, #0
bx lr
arm_func_end sub_020300A0
arm_func_start sub_020300C0
sub_020300C0: ; 0x020300C0
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
mov r5, r0
add ip, sp, #0
str r1, [sp]
mov r1, ip
add r0, r5, #0xc
mov r4, r3
str r2, [sp, #4]
bl sub_02020B60
ldr r1, _02030108 ; =0x0000C402
mov r2, r4
add r0, r5, #0xc
bl sub_02020BC4
add r0, r5, #0xc
bl AnalyzeText
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02030108: .word 0x0000C402
arm_func_end sub_020300C0
arm_func_start AddMessageToAlertBox
AddMessageToAlertBox: ; 0x0203010C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r1
mov r6, r2
mov r5, r3
bl GetWindowContents
mov r4, r0
ldr r0, [r4, #4]
cmp r0, #2
cmpne r0, #3
beq _02030144
add r0, r4, #8
bl sub_0202613C
mov r0, #1
str r0, [r4, #4]
_02030144:
mov r0, r4
bl sub_020300A0
add r1, r4, #0x600
ldrsh r2, [r1, #0x46]
cmp r2, r0
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
str r5, [sp]
ldrsh r1, [r1, #0x44]
add r0, r4, #0x29
add r2, r0, #0x100
mov r0, #0x148
smlabb r0, r1, r0, r2
mov r2, r6
mov r3, r7
mov r1, #0x140
bl PreprocessString
add r1, r4, #0x600
add r0, r4, #0x29
ldrsh r1, [r1, #0x44]
add r2, r0, #0x100
mov r0, #0x148
smlabb r2, r1, r0, r2
mov r1, r7
add r0, r4, #8
bl sub_02026194
add r1, r4, #0x600
ldrsh r0, [r1, #0x44]
mov r2, #0x148
mov r6, #0
smlabb r0, r0, r2, r4
add r0, r0, #0x200
strh r7, [r0, #0x6a]
ldrsh r5, [r1, #0x44]
ldrb r3, [sp, #0x18]
mov r0, r4
smlabb r5, r5, r2, r4
str r6, [r5, #0x124]
ldrsh r1, [r1, #0x44]
smlabb r1, r1, r2, r4
strb r3, [r1, #0x128]
bl sub_0203007C
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end AddMessageToAlertBox
arm_func_start IsAlertBoxActive
IsAlertBoxActive: ; 0x020301F4
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #4]
cmp r0, #3
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end IsAlertBoxActive
arm_func_start sub_02030214
sub_02030214: ; 0x02030214
stmdb sp!, {r4, lr}
bl GetWindowContents
mov r4, r0
ldr r0, [r4, #4]
cmp r0, #5
addls pc, pc, r0, lsl #2
b _02030260
_02030230: ; jump table
b _02030260 ; case 0
b _02030248 ; case 1
b _02030254 ; case 2
b _02030254 ; case 3
ldmia sp!, {r4, pc} ; case 4
ldmia sp!, {r4, pc} ; case 5
_02030248:
mov r0, #5
str r0, [r4, #4]
ldmia sp!, {r4, pc}
_02030254:
mov r0, #4
str r0, [r4, #4]
ldmia sp!, {r4, pc}
_02030260:
add r0, r4, #8
bl sub_0202613C
mov r0, #0
str r0, [r4, #4]
ldmia sp!, {r4, pc}
arm_func_end sub_02030214
arm_func_start UpdateAlertBox
UpdateAlertBox: ; 0x02030274
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r5, r0
ldr r4, [r5, #0xc]
ldr r0, [r4, #4]
cmp r0, #5
addls pc, pc, r0, lsl #2
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_02030290: ; jump table
b _020302A8 ; case 0
b _020302C8 ; case 1
b _020302E0 ; case 2
b _02030438 ; case 3
b _0203056C ; case 4
b _02030588 ; case 5
_020302A8:
add r0, r4, #8
bl sub_020261D4
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
mov r0, #1
str r0, [r4, #4]
sub r0, r0, #2
str r0, [r5, #0xb8]
_020302C8:
ldrsb r0, [r5, #0x10]
bl sub_0202810C
cmp r0, #0
movne r0, #2
strne r0, [r4, #4]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_020302E0:
ldrsb r0, [r5, #0x10]
bl GetWindowContents
add r0, r0, #0x600
ldrsh r1, [r0, #0x46]
ldrsh r0, [r0, #0x44]
cmp r1, r0
movne r0, #1
moveq r0, #0
tst r0, #0xff
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
ldrsb r4, [r5, #0x10]
mov r0, r4
bl GetWindowContents
mov r6, r0
add r3, r6, #0x600
ldr r1, [r6, #0x20]
ldrsh r2, [r3, #0x4a]
mov r1, r1, lsl #0x10
ldr r5, [r6, #0x10]
mov r8, r1, asr #0x10
mla r1, r2, r8, r5
ldr r2, [r6, #0xc]
mov r7, r1, lsl #0x10
mov r2, r2, lsl #0x10
ldrsh r3, [r3, #0x46]
mov r1, #0x148
add r5, r6, #0x124
smulbb r3, r3, r1
ldr r1, [r5, r3]
add r5, r5, r3
cmp r1, #1
mov r1, r2, asr #0x10
mov r7, r7, asr #0x10
bne _02030388
mov r5, #0x17
mov r0, r4
add r2, r7, r8
mov r1, #0
mov r3, #0xe0
str r5, [sp]
bl sub_02025D50
b _020303C4
_02030388:
mov r2, r7
add r3, r5, #5
bl sub_020300C0
ldrb r0, [r5, #4]
cmp r0, #0
beq _020303C4
cmp r7, r8
blt _020303C4
mov r5, #0x17
mov r0, r4
sub r2, r7, #2
mov r1, #0
mov r3, #0xe0
str r5, [sp]
bl sub_02025D50
_020303C4:
mov r0, r4
bl UpdateWindow
add r0, r6, #0x600
ldrsh r1, [r0, #0x46]
strh r1, [r0, #0x48]
ldrsh r1, [r0, #0x46]
add r1, r1, #1
strh r1, [r0, #0x46]
ldrsh r1, [r0, #0x46]
cmp r1, #4
movge r1, #0
strgeh r1, [r0, #0x46]
add r0, r6, #0x600
ldrsh r1, [r0, #0x4a]
cmp r1, #3
movge r1, #3
strge r1, [r6, #4]
movge r1, #0
strgeh r1, [r0, #0x4c]
ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
ldr r1, [r6, #0xa0]
ldr r0, [r6, #0x10]
add r2, r1, r8
mov r1, r8
sub r0, r2, r0
bl _s32_div_f
add r1, r6, #0x600
strh r0, [r1, #0x4a]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_02030438:
ldrsb r5, [r5, #0x10]
mov r0, r5
bl GetWindowContents
mov r7, r0
add r3, r7, #0x600
ldr r1, [r7, #0x20]
ldrsh r2, [r3, #0x4a]
mov r1, r1, lsl #0x10
ldr r6, [r7, #0x10]
mov r8, r1, asr #0x10
ldr r1, [r7, #0xc]
mla r6, r2, r8, r6
ldrsh sb, [r3, #0x4c]
mov r2, r1, lsl #0x10
ldrsh ip, [r3, #0x48]
mov r1, #0x148
add r3, sb, r6
mov r3, r3, lsl #0x10
smulbb r6, ip, r1
add sb, r7, #0x124
ldr r1, [sb, r6]
add r6, sb, r6
cmp r1, #1
mov r1, r2, asr #0x10
mov sb, r3, asr #0x10
bne _020304C0
mov r6, #0x17
mov r0, r5
add r2, sb, r8
mov r1, #0
mov r3, #0xe0
str r6, [sp]
bl sub_02025D50
b _020304FC
_020304C0:
mov r2, sb
add r3, r6, #5
bl sub_020300C0
ldrb r0, [r6, #4]
cmp r0, #0
beq _020304FC
cmp sb, r8
blt _020304FC
mov r6, #0x17
mov r0, r5
sub r2, sb, #2
mov r1, #0
mov r3, #0xe0
str r6, [sp]
bl sub_02025D50
_020304FC:
add r0, r7, #0x600
ldrsh r0, [r0, #0x4c]
add r0, r0, r8
cmp r0, #1
mov r0, r5
bne _02030528
bl sub_01FF9128
add r0, r7, #0x600
ldrsh r1, [r0, #0x4c]
sub r1, r1, #1
b _02030538
_02030528:
bl sub_01FF929C
add r0, r7, #0x600
ldrsh r1, [r0, #0x4c]
sub r1, r1, #2
_02030538:
strh r1, [r0, #0x4c]
add r0, r7, #0x600
ldrsh r2, [r0, #0x4c]
rsb r1, r8, #0
cmp r2, r1
movle r1, #3
strleh r1, [r0, #0x4a]
movle r0, #1
movgt r0, #0
cmp r0, #0
movne r0, #2
strne r0, [r4, #4]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_0203056C:
ldrsb r0, [r5, #0x10]
bl sub_0202836C
ldrsb r0, [r5, #0x10]
bl sub_02027B1C
mov r0, #5
str r0, [r4, #4]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_02030588:
ldrsb r0, [r5, #0x10]
bl sub_0202812C
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
mov r1, #0
add r0, r4, #8
str r1, [r4, #4]
bl sub_0202613C
mvn r0, #5
str r0, [r5, #0xb8]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end UpdateAlertBox
arm_func_start CreateAdvancedTextBox
CreateAdvancedTextBox: ; 0x020305B4
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r3
ldr ip, [sp, #0x14]
ldr r3, [sp, #0x10]
str ip, [sp]
bl CreateAdvancedTextBoxInternal
add r1, r0, #0x100
str r4, [r0, #0x1a4]
ldrsb r0, [r1, #0xa0]
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
arm_func_end CreateAdvancedTextBox
arm_func_start CreateAdvancedTextBoxWithArg
CreateAdvancedTextBoxWithArg: ; 0x020305E4
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r3
ldr ip, [sp, #0x18]
ldr r3, [sp, #0x14]
str ip, [sp]
bl CreateAdvancedTextBoxInternal
ldr r2, [sp, #0x10]
str r4, [r0, #0x1a8]
add r1, r0, #0x100
str r2, [r0, #0x1ac]
ldrsb r0, [r1, #0xa0]
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
arm_func_end CreateAdvancedTextBoxWithArg
arm_func_start CreateAdvancedTextBoxInternal
CreateAdvancedTextBoxInternal: ; 0x0203061C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x28
mov r8, r0
mov r7, r1
mov r0, #0x1c8
mov r1, #8
mov r6, r2
mov r5, r3
bl MemAlloc
mov r4, r0
mov r0, #0
str r0, [r4, #0x1a4]
str r0, [r4, #0x1a8]
str r0, [r4, #0x1ac]
str r0, [r4, #0x1b8]
mov r0, #1
cmp r8, #0
strb r0, [r4, #0x1c4]
addne ip, sp, #0x18
ldmneia r8, {r0, r1, r2, r3}
stmneia ip, {r0, r1, r2, r3}
ldrne r0, _02030774 ; =UpdateAdvancedTextBox
strne r0, [sp, #0x18]
bne _02030690
ldr r0, _02030778 ; =ADVANCED_TEXT_BOX_DEFAULT_WINDOW_PARAMS
add r8, sp, #0x18
ldmia r0, {r0, r1, r2, r3}
stmia r8, {r0, r1, r2, r3}
orr r7, r7, #0x300000
_02030690:
tst r7, #0x200000
ldrneb r1, [sp, #0x1c]
ldrneb r0, [sp, #0x1e]
str r4, [sp, #0x24]
subne r0, r1, r0
strneb r0, [sp, #0x1c]
tst r7, #0x100000
ldrneb r1, [sp, #0x1d]
ldrneb r0, [sp, #0x1f]
subne r0, r1, r0
strneb r0, [sp, #0x1d]
ldr r0, _02030774 ; =UpdateAdvancedTextBox
cmp r6, #0
str r0, [r4]
str r7, [r4, #0x104]
beq _020306F0
add ip, r4, #0x108
mov r8, #9
_020306D8:
ldmia r6!, {r0, r1, r2, r3}
stmia ip!, {r0, r1, r2, r3}
subs r8, r8, #1
bne _020306D8
ldmia r6, {r0, r1}
stmia ip, {r0, r1}
_020306F0:
mov r2, #0
str r2, [r4, #0x1bc]
strb r2, [r4, #0x1c0]
strb r2, [r4, #0x1c1]
strb r2, [r4, #0x1c2]
str r2, [r4, #0x1b0]
str r2, [r4, #0x1b4]
add r0, sp, #0x18
mov r1, #3
strb r2, [r4, #0x1c3]
bl NewWindowScreenCheck
add r1, sp, #8
strb r0, [r4, #0x1a0]
bl GetWindowRectangle
mov r1, #0x100
strh r1, [r4, #0xfc]
tst r7, #0x8000
moveq r5, #0
streq r5, [sp, #0x40]
strh r1, [r4, #0xfe]
add r0, r4, #0x100
strh r1, [r0]
strh r1, [r0, #2]
ldr r6, [sp, #0x40]
add r3, sp, #8
mov r1, r7
add r0, r4, #4
add r2, r4, #0x108
stmia sp, {r5, r6}
bl InitWindowInput
mov r0, r4
add sp, sp, #0x28
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02030774: .word UpdateAdvancedTextBox
_02030778: .word ADVANCED_TEXT_BOX_DEFAULT_WINDOW_PARAMS
arm_func_end CreateAdvancedTextBoxInternal
arm_func_start SetAdvancedTextBoxPartialMenu
SetAdvancedTextBoxPartialMenu: ; 0x0203077C
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
strb r4, [r0, #0x1c3]
ldr r1, [r0, #0x104]
tst r4, #0xff
orrne r1, r1, #0x400000
biceq r1, r1, #0x400000
str r1, [r0, #0x104]
ldmia sp!, {r4, pc}
arm_func_end SetAdvancedTextBoxPartialMenu
arm_func_start SetAdvancedTextBoxField0x1C4
SetAdvancedTextBoxField0x1C4: ; 0x020307A4
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
strb r4, [r0, #0x1c4]
ldmia sp!, {r4, pc}
arm_func_end SetAdvancedTextBoxField0x1C4
arm_func_start sub_020307B8
sub_020307B8: ; 0x020307B8
stmdb sp!, {r3, lr}
bl GetWindowContents
mov r1, #1
str r1, [r0, #0x1bc]
mov r1, #0
strb r1, [r0, #0x1c0]
strb r1, [r0, #0x1c1]
ldr r1, [r0, #0x104]
bic r1, r1, #0x800000
str r1, [r0, #0x104]
add r0, r0, #4
bl sub_02032984
ldmia sp!, {r3, pc}
arm_func_end sub_020307B8
arm_func_start sub_020307EC
sub_020307EC: ; 0x020307EC
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetWindowContents
mov r4, r0
mov r0, r5
bl GetWindowContents
ldr r0, [r0, #0x1bc]
cmp r0, #7
moveq r0, #1
movne r0, #0
tst r0, #0xff
beq _02030828
mov r0, r5
bl sub_020307B8
ldmia sp!, {r3, r4, r5, pc}
_02030828:
ldr r0, [r4, #0x1bc]
cmp r0, #6
moveq r0, #0
streq r0, [r4, #0x1bc]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020307EC
arm_func_start SetAdvancedTextBoxField0x1C2
SetAdvancedTextBoxField0x1C2: ; 0x0203083C
stmdb sp!, {r3, lr}
bl GetWindowContents
mov r1, #1
strb r1, [r0, #0x1c2]
ldmia sp!, {r3, pc}
arm_func_end SetAdvancedTextBoxField0x1C2
arm_func_start CloseAdvancedTextBox2
CloseAdvancedTextBox2: ; 0x02030850
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_0202836C
mov r0, r5
bl sub_020288DC
mov r0, r5
bl sub_0202812C
mov r0, r5
bl GetWindowContents
mov r4, r0
mov r0, r5
bl DeleteWindow
mov r0, r4
bl MemFree
ldmia sp!, {r3, r4, r5, pc}
arm_func_end CloseAdvancedTextBox2
arm_func_start SetAdvancedTextBoxState5
SetAdvancedTextBoxState5: ; 0x0203088C
stmdb sp!, {r3, lr}
bl GetWindowContents
mov r1, #5
str r1, [r0, #0x1bc]
ldmia sp!, {r3, pc}
arm_func_end SetAdvancedTextBoxState5
arm_func_start CloseAdvancedTextBox
CloseAdvancedTextBox: ; 0x020308A0
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetWindowContents
mov r4, r0
mov r0, r5
bl DeleteWindow
mov r0, r4
bl MemFree
ldmia sp!, {r3, r4, r5, pc}
arm_func_end CloseAdvancedTextBox
arm_func_start IsAdvancedTextBoxActive
IsAdvancedTextBoxActive: ; 0x020308C4
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0x1bc]
cmp r0, #6
cmpne r0, #7
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, pc}
arm_func_end IsAdvancedTextBoxActive
#ifndef JAPAN
arm_func_start sub_020308E4
sub_020308E4: ; 0x020308E4
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r1, [r0, #0x1c0]
cmp r1, #0
ldrneb r0, [r0, #0x1c1]
cmpne r0, #0
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_020308E4
#endif
arm_func_start sub_02030908
sub_02030908: ; 0x02030908
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r1, [r0, #0x1c0]
cmp r1, #0
beq _02030938
ldrb r1, [r0, #0x1c1]
cmp r1, #0
mvnne r0, #0
ldmneia sp!, {r3, pc}
add r0, r0, #4
bl GetSelectedItemOnPage
ldmia sp!, {r3, pc}
_02030938:
mvn r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_02030908
arm_func_start sub_02030940
sub_02030940: ; 0x02030940
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r1, [r0, #0x1c0]
cmp r1, #0
beq _02030970
ldrb r1, [r0, #0x1c1]
cmp r1, #0
mvnne r0, #0
ldmneia sp!, {r3, pc}
add r0, r0, #4
bl GetSelectedMenuItemIdx
ldmia sp!, {r3, pc}
_02030970:
mvn r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_02030940
arm_func_start sub_02030978
sub_02030978: ; 0x02030978
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
bl GetWindowContents
mov r1, r0
strh r5, [r1, #0xfc]
strh r4, [r1, #0xfe]
mov r0, r7
mov r2, r6
mov r3, r5
add r1, r1, #4
str r4, [sp]
bl sub_020289B8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_02030978
arm_func_start sub_020309B8
sub_020309B8: ; 0x020309B8
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0xc
mov r8, r0
mov r7, r1
mov r6, r2
mov r5, r3
bl GetWindowContents
mov r1, r0
strh r6, [r1, #0xfc]
ldr r4, [sp, #0x28]
strh r5, [r1, #0xfe]
add ip, r1, #0x100
ldr lr, [sp, #0x2c]
strh r4, [ip]
strh lr, [ip, #2]
str r5, [sp]
mov r0, r8
add r1, r1, #4
mov r2, r7
mov r3, r6
stmib sp, {r4, lr}
bl sub_02028A08
add sp, sp, #0xc
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
arm_func_end sub_020309B8
arm_func_start GetWindowIdPageStart
GetWindowIdPageStart: ; 0x02030A18
stmdb sp!, {r3, lr}
bl GetWindowContents
add r0, r0, #4
bl GetPageStart
ldmia sp!, {r3, pc}
arm_func_end GetWindowIdPageStart
arm_func_start sub_02030A2C
sub_02030A2C: ; 0x02030A2C
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
strh r4, [r0, #0x20]
ldmia sp!, {r4, pc}
arm_func_end sub_02030A2C
arm_func_start GetAdvancedTextBoxFlags2
GetAdvancedTextBoxFlags2: ; 0x02030A40
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0x1b0]
ldmia sp!, {r3, pc}
arm_func_end GetAdvancedTextBoxFlags2
arm_func_start sub_02030A50
sub_02030A50: ; 0x02030A50
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
str r4, [r0, #0xc0]
ldmia sp!, {r4, pc}
arm_func_end sub_02030A50
arm_func_start sub_02030A64
sub_02030A64: ; 0x02030A64
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0xc0]
ldmia sp!, {r3, pc}
arm_func_end sub_02030A64
arm_func_start sub_02030A74
sub_02030A74: ; 0x02030A74
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
mov r1, r4
add r0, r0, #4
bl sub_02031C74
ldmia sp!, {r4, pc}
arm_func_end sub_02030A74
arm_func_start sub_02030A90
sub_02030A90: ; 0x02030A90
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
mov r1, r4
add r0, r0, #4
bl sub_02031C84
ldmia sp!, {r4, pc}
arm_func_end sub_02030A90
arm_func_start sub_02030AAC
sub_02030AAC: ; 0x02030AAC
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
strb r4, [r0, #0xf8]
ldmia sp!, {r4, pc}
arm_func_end sub_02030AAC
arm_func_start SetUnkAdvancedTextBoxFn
SetUnkAdvancedTextBoxFn: ; 0x02030AC0
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
str r4, [r0, #0x1b4]
ldmia sp!, {r4, pc}
arm_func_end SetUnkAdvancedTextBoxFn
arm_func_start SetUnkAdvancedTextBoxWindowFn
SetUnkAdvancedTextBoxWindowFn: ; 0x02030AD4
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
str r4, [r0, #0x1b8]
ldmia sp!, {r4, pc}
arm_func_end SetUnkAdvancedTextBoxWindowFn
arm_func_start UpdateAdvancedTextBox
UpdateAdvancedTextBox: ; 0x02030AE8
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x44
mov r7, r0
ldr r4, [r7, #0xc]
mov r5, #0
str r5, [r4, #0x1b0]
ldr r0, [r4, #0x1bc]
cmp r0, #5
addls pc, pc, r0, lsl #2
b _02030E88
_02030B10: ; jump table
b _02030B28 ; case 0
b _02030B40 ; case 1
b _02030B48 ; case 2
b _02030BA0 ; case 3
b _02030E0C ; case 4
b _02030E5C ; case 5
_02030B28:
ldrsb r0, [r7, #0x10]
bl sub_0202810C
cmp r0, #0
beq _02030E88
mov r0, #2
str r0, [r4, #0x1bc]
_02030B40:
mov r0, #2
str r0, [r4, #0x1bc]
_02030B48:
mov r0, r7
bl sub_02030E94
ldr r0, [r4, #0x104]
tst r0, #0x800000
beq _02030B80
mov r0, #7
str r0, [r4, #0x1bc]
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1c0]
strb r0, [r4, #0x1c1]
sub r0, r0, #4
str r0, [r7, #0xb8]
b _02030E88
_02030B80:
mov r1, #3
mov r0, #0
str r1, [r4, #0x1bc]
strb r0, [r4, #0x1c0]
strb r0, [r4, #0x1c1]
sub r0, r0, #1
str r0, [r7, #0xb8]
b _02030E88
_02030BA0:
ldr r2, [r4, #0x1b4]
ldrb r6, [r4, #0x1c2]
cmp r2, #0
beq _02030BF0
add r0, sp, #0x1c
add r1, sp, #0x18
blx r2
ldrsb r0, [r7, #0x10]
bl sub_02028324
cmp r0, #0
moveq r3, #1
movne r3, r5
ldr ip, [sp, #0x1c]
add r2, sp, #0x20
add r0, r4, #4
add r1, r4, #0x1b0
and r3, r3, #0xff
str ip, [sp]
bl sub_02031E80
b _02030C18
_02030BF0:
ldrsb r0, [r7, #0x10]
bl sub_02028324
cmp r0, #0
moveq r3, #1
movne r3, r5
add r2, sp, #0x20
add r0, r4, #4
add r1, r4, #0x1b0
and r3, r3, #0xff
bl sub_02031C98
_02030C18:
orr r6, r6, r0
mov r0, #0
strb r0, [r4, #0x1c2]
ldr r2, [r4, #0x1b4]
cmp r2, #0
beq _02030CAC
add r0, sp, #0x14
add r1, sp, #0x10
blx r2
ldr r0, [r4, #0x1b0]
cmp r0, #0
bne _02030CAC
ldr r0, [r4, #0x104]
tst r0, #1
beq _02030CAC
mov r3, #0
str r3, [sp]
mov r0, #1
str r0, [sp, #4]
ldr r0, [sp, #0x14]
ldr r2, _02030E90 ; =0x00000408
str r0, [sp, #8]
ldr ip, [sp, #0x10]
add r1, sp, #0x20
add r0, r4, #4
str ip, [sp, #0xc]
bl sub_020322B0
movs r1, r0
bmi _02030CAC
ldr r2, [sp, #0x14]
add r0, r4, #4
bl sub_020326F8
ldr r0, [r4, #0x1b0]
mov r6, #1
orr r0, r0, #1
mov r5, r6
str r0, [r4, #0x1b0]
_02030CAC:
ldrb r0, [r4, #0xf8]
cmp r0, #0
bne _02030CC4
ldr r0, [r4, #0x1b0]
cmp r0, #0
bne _02030CD8
_02030CC4:
add r2, sp, #0x20
add r0, r4, #4
add r1, r4, #0x1b0
bl sub_02033758
orr r6, r6, r0
_02030CD8:
add r0, r4, #4
bl GetSelectedMenuItemIdx
mov r2, r0
ldr r1, [r4, #0x1b0]
add r0, r4, #4
mov r3, #0
bl sub_020323F8
orrs r0, r6, r0
beq _02030D04
mov r0, r7
bl sub_02030E94
_02030D04:
ldr r0, [r4, #0x1b0]
tst r0, #1
beq _02030D74
add r0, r4, #4
bl IsMenuOptionActive
cmp r0, #0
beq _02030DB0
ldr r0, [r4, #0x104]
tst r0, #0x80000000
bne _02030D38
add r0, r4, #4
mov r1, #0
bl PlayWindowInputSound
_02030D38:
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1c0]
strb r0, [r4, #0x1c1]
sub r0, r0, #4
str r0, [r7, #0xb8]
mov r0, #4
str r0, [r4, #0x1bc]
ldr r2, [r4, #0x1b8]
cmp r2, #0
beq _02030DB0
ldrsb r0, [r7, #0x10]
mov r1, r5
blx r2
b _02030DB0
_02030D74:
tst r0, #2
beq _02030DB0
ldrb r0, [r4, #0x1c4]
cmp r0, #0
beq _02030D94
add r0, r4, #4
mov r1, #1
bl PlayWindowInputSound
_02030D94:
mov r0, #1
strb r0, [r4, #0x1c0]
strb r0, [r4, #0x1c1]
sub r0, r0, #6
str r0, [r7, #0xb8]
mov r0, #4
str r0, [r4, #0x1bc]
_02030DB0:
ldrsh r0, [r4, #0xfe]
cmp r0, #0x100
str r0, [sp]
bne _02030DD8
ldrsb r0, [r7, #0x10]
ldrsh r3, [r4, #0xfc]
ldr r2, [r7, #0xbc]
add r1, r4, #4
bl sub_020289B8
b _02030E00
_02030DD8:
add r0, r4, #0x100
ldrsh r2, [r0]
add r1, r4, #4
str r2, [sp, #4]
ldrsh r0, [r0, #2]
str r0, [sp, #8]
ldrsb r0, [r7, #0x10]
ldrsh r3, [r4, #0xfc]
ldr r2, [r7, #0xbc]
bl sub_02028A08
_02030E00:
ldr r0, [r4, #0x1bc]
cmp r0, #4
bne _02030E88
_02030E0C:
add r0, r4, #4
bl sub_02032070
cmp r0, #0
bne _02030E88
ldrb r0, [r4, #0x1c1]
cmp r0, #0
beq _02030E34
ldrb r0, [r4, #0x1c3]
cmp r0, #0
beq _02030E54
_02030E34:
ldr r0, [r4, #0x104]
tst r0, #0x400000
beq _02030E54
mov r0, r7
bl sub_02030E94
mov r0, #7
str r0, [r4, #0x1bc]
b _02030E88
_02030E54:
mov r0, #5
str r0, [r4, #0x1bc]
_02030E5C:
ldrsb r0, [r7, #0x10]
bl sub_0202812C
cmp r0, #0
beq _02030E88
ldrb r0, [r4, #0x1c1]
cmp r0, #0
mvnne r0, #4
mvneq r0, #3
str r0, [r7, #0xb8]
mov r0, #6
str r0, [r4, #0x1bc]
_02030E88:
add sp, sp, #0x44
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_02030E90: .word 0x00000408
arm_func_end UpdateAdvancedTextBox
arm_func_start sub_02030E94
sub_02030E94: ; 0x02030E94
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldrsb r0, [r5, #0x10]
ldr r4, [r5, #0xc]
bl sub_02027B1C
ldr r2, [r4, #0x1a8]
cmp r2, #0
beq _02030EC4
ldrsb r0, [r5, #0x10]
ldr r1, [r4, #0x1ac]
blx r2
b _02030ED8
_02030EC4:
ldr r1, [r4, #0x1a4]
cmp r1, #0
beq _02030ED8
ldrsb r0, [r5, #0x10]
blx r1
_02030ED8:
ldrsb r1, [r5, #0x10]
add r0, r4, #4
bl sub_0202A03C
ldrsb r0, [r5, #0x10]
bl UpdateWindow
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02030E94
arm_func_start sub_02030EF0
sub_02030EF0: ; 0x02030EF0
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetWindowContents
mov r4, r0
mov r0, #1
mov r2, #0
strb r0, [r4, #0x1c0]
mov r0, r5
sub r1, r2, #4
strb r2, [r4, #0x1c1]
bl sub_0202830C
mov r0, #4
str r0, [r4, #0x1bc]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02030EF0
arm_func_start PlayAdvancedTextBoxInputSound
PlayAdvancedTextBoxInputSound: ; 0x02030F28
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
mov r1, r4
add r0, r0, #4
bl PlayWindowInputSound
ldmia sp!, {r4, pc}
arm_func_end PlayAdvancedTextBoxInputSound
arm_func_start CreateTeamSelectionMenu
CreateTeamSelectionMenu: ; 0x02030F44
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x28
sub sp, sp, #0x400
mov r6, r0
mov sl, r1
mov r0, #0x1b4
mov r1, #8
mov sb, r2
mov r8, r3
bl MemAlloc
mov r5, r0
cmp r6, #0
ldreq r0, _02031114 ; =TEAM_SELECTION_MENU_DEFAULT_WINDOW_PARAMS
add r4, sp, #0x18
ldmeqia r0, {r0, r1, r2, r3}
stmeqia r4, {r0, r1, r2, r3}
ldmneia r6, {r0, r1, r2, r3}
stmneia r4, {r0, r1, r2, r3}
ldrne r0, _02031118 ; =UpdateTeamSelectionMenu
orr sl, sl, #0x8000
strne r0, [sp, #0x18]
ldrb r0, [sp, #0x1e]
orreq sl, sl, #0x300000
str r5, [sp, #0x24]
cmp r0, #0
bne _02031000
mov r7, #0
mov r6, r7
add r4, sp, #0x28
b _02030FE0
_02030FBC:
mov r0, r4
mov r1, r6
blx r8
cmp r0, #0
beq _02030FDC
bl sub_020265A8
cmp r0, r7
movgt r7, r0
_02030FDC:
add r6, r6, #1
_02030FE0:
ldr r0, [sp, #0x448]
cmp r6, r0
blt _02030FBC
mov r0, sl
mov r1, sb
add r2, r7, #0x10
bl sub_02031A5C
strb r0, [sp, #0x1e]
_02031000:
ldrb r0, [sp, #0x1f]
add r2, sp, #0x400
add r3, sp, #0x400
cmp r0, #0
add r2, r2, #0x48
bne _02031030
add r3, r3, #0x4c
mov r0, sl
mov r1, sb
bl CalcMenuHeightDiv8__02031AA4
strb r0, [sp, #0x1f]
b _02031040
_02031030:
add r3, r3, #0x4c
mov r0, sl
mov r1, sb
bl CalcMenuHeightDiv8__02031AA4
_02031040:
tst sl, #0x200000
ldrneb r1, [sp, #0x1c]
ldrneb r0, [sp, #0x1e]
subne r0, r1, r0
strneb r0, [sp, #0x1c]
tst sl, #0x100000
ldrneb r1, [sp, #0x1d]
ldrneb r0, [sp, #0x1f]
subne r0, r1, r0
strneb r0, [sp, #0x1d]
ldr r0, _02031118 ; =UpdateTeamSelectionMenu
cmp sb, #0
str r0, [r5]
str sl, [r5, #0xfc]
beq _0203109C
add r6, r5, #0x100
mov r4, #9
_02031084:
ldmia sb!, {r0, r1, r2, r3}
stmia r6!, {r0, r1, r2, r3}
subs r4, r4, #1
bne _02031084
ldmia sb, {r0, r1}
stmia r6, {r0, r1}
_0203109C:
mov r2, #0
str r2, [r5, #0x18c]
str r2, [r5, #0x190]
str r8, [r5, #0x198]
str r2, [r5, #0x19c]
strb r2, [r5, #0x1a0]
strb r2, [r5, #0x1a1]
str r2, [r5, #0x1a4]
str r2, [r5, #0x1a8]
str r2, [r5, #0x1ac]
add r0, sp, #0x18
mov r1, #3
strb r2, [r5, #0x1b0]
bl NewWindowScreenCheck
add r1, sp, #8
mov r6, r0
bl GetWindowRectangle
ldr r0, [sp, #0x448]
add r3, sp, #8
str r0, [sp]
ldr r4, [sp, #0x44c]
mov r1, sl
add r0, r5, #4
add r2, r5, #0x100
str r4, [sp, #4]
bl InitWindowInput
mov r0, r6
add sp, sp, #0x28
add sp, sp, #0x400
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_02031114: .word TEAM_SELECTION_MENU_DEFAULT_WINDOW_PARAMS
_02031118: .word UpdateTeamSelectionMenu
arm_func_end CreateTeamSelectionMenu
arm_func_start sub_0203111C
sub_0203111C: ; 0x0203111C
stmdb sp!, {r4, lr}
bl GetWindowContents
mov r4, r0
mov r0, #1
str r0, [r4, #0x19c]
mov r0, #0
strb r0, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
str r0, [r4, #0x1a4]
ldr r0, [r4, #0xfc]
bic r0, r0, #0x800000
str r0, [r4, #0xfc]
bl sub_0203C984
add r0, r4, #4
bl sub_02032984
ldmia sp!, {r4, pc}
arm_func_end sub_0203111C
arm_func_start sub_0203115C
sub_0203115C: ; 0x0203115C
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r1, [r0, #0x19c]
cmp r1, #3
moveq r1, #2
streq r1, [r0, #0x19c]
bl sub_0203C984
ldmia sp!, {r3, pc}
arm_func_end sub_0203115C
arm_func_start sub_0203117C
sub_0203117C: ; 0x0203117C
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
mov r1, r4
add r0, r0, #4
bl sub_0203271C
ldmia sp!, {r4, pc}
arm_func_end sub_0203117C
arm_func_start CloseTeamSelectionMenu
CloseTeamSelectionMenu: ; 0x02031198
stmdb sp!, {r4, lr}
mov r4, r0
bl GetWindowContents
bl MemFree
mov r0, r4
bl DeleteWindow
ldmia sp!, {r4, pc}
arm_func_end CloseTeamSelectionMenu
arm_func_start IsTeamSelectionMenuActive
IsTeamSelectionMenuActive: ; 0x020311B4
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0x19c]
cmp r0, #6
cmpne r0, #7
movne r0, #1
moveq r0, #0
ldmia sp!, {r3, pc}
arm_func_end IsTeamSelectionMenuActive
arm_func_start sub_020311D4
sub_020311D4: ; 0x020311D4
stmdb sp!, {r3, lr}
bl GetWindowContents
add r0, r0, #4
bl GetSelectedMenuItemIdx
ldmia sp!, {r3, pc}
arm_func_end sub_020311D4
arm_func_start sub_020311E8
sub_020311E8: ; 0x020311E8
stmdb sp!, {r3, lr}
bl GetWindowContents
ldrb r1, [r0, #0x1a0]
cmp r1, #0
beq _02031218
ldrb r1, [r0, #0x1a1]
cmp r1, #0
mvnne r0, #0
ldmneia sp!, {r3, pc}
add r0, r0, #4
bl GetSelectedMenuItemIdx
ldmia sp!, {r3, pc}
_02031218:
mvn r0, #0
ldmia sp!, {r3, pc}
arm_func_end sub_020311E8
arm_func_start sub_02031220
sub_02031220: ; 0x02031220
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
mov r1, r4
add r0, r0, #4
bl sub_02032684
ldmia sp!, {r4, pc}
arm_func_end sub_02031220
arm_func_start UpdateTeamSelectionMenu
UpdateTeamSelectionMenu: ; 0x0203123C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x30
mov r7, r0
ldrsb r0, [r7, #0x10]
ldr r4, [r7, #0xc]
bl sub_02028354
cmp r0, #3
moveq r1, #1
movne r1, #0
ldr r0, [r4, #0x19c]
and r5, r1, #0xff
cmp r0, #9
addls pc, pc, r0, lsl #2
b _02031714
_02031274: ; jump table
b _0203129C ; case 0
b _020312B4 ; case 1
b _020312F0 ; case 2
b _02031350 ; case 3
b _020316A4 ; case 4
b _020316E8 ; case 5
b _02031714 ; case 6
b _02031714 ; case 7
b _020315D4 ; case 8
b _0203163C ; case 9
_0203129C:
ldrsb r0, [r7, #0x10]
bl sub_0202810C
cmp r0, #0
beq _02031714
mov r0, #2
str r0, [r4, #0x19c]
_020312B4:
ldr r0, [r4, #0x19c]
cmp r0, #1
bne _020312F0
ldrb r0, [r4, #0x1b0]
cmp r0, #0
beq _020312D4
mov r0, r7
bl sub_0203175C
_020312D4:
ldrb r0, [r7, #8]
bl sub_020287C4
ldrsb r0, [r7, #0x10]
bl UpdateWindow
mov r0, #2
str r0, [r4, #0x19c]
b _02031714
_020312F0:
mov r0, r7
bl sub_0203175C
ldr r0, [r4, #0xfc]
tst r0, #0x800000
beq _0203132C
mov r0, #7
str r0, [r4, #0x19c]
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
str r0, [r4, #0x1a4]
sub r0, r0, #4
str r0, [r7, #0xb8]
b _02031714
_0203132C:
mov r1, #3
mov r0, #0
str r1, [r4, #0x19c]
strb r0, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
str r0, [r4, #0x1a4]
sub r0, r0, #1
str r0, [r7, #0xb8]
b _02031714
_02031350:
add r1, sp, #8
add r2, sp, #0xc
add r0, r4, #4
mov r3, #1
bl sub_02031C98
ldr r1, [sp, #8]
mov r6, r0
cmp r1, #0
bne _020313DC
ldr r0, [r4, #0xfc]
tst r0, #1
beq _020313DC
mov r3, #0
ldr r2, _02031758 ; =0x00000408
add r1, sp, #0xc
str r3, [sp]
mov ip, #1
add r0, r4, #4
str ip, [sp, #4]
bl sub_02032160
movs r1, r0
bmi _020313C4
add r0, r4, #4
bl sub_02032684
ldr r0, [sp, #8]
mov r6, #1
orr r0, r0, #1
str r0, [sp, #8]
b _020313F0
_020313C4:
add r1, sp, #8
add r2, sp, #0xc
add r0, r4, #4
bl sub_02033758
orr r6, r6, r0
b _020313F0
_020313DC:
cmp r1, #4
cmpne r1, #8
cmpne r1, #0xc
beq _020313F0
bl sub_0203C984
_020313F0:
cmp r6, #0
beq _02031400
mov r0, r7
bl sub_0203175C
_02031400:
add r0, r4, #4
bl GetSelectedMenuItemIdx
mov r2, r0
ldr r1, [sp, #8]
add r0, r4, #4
mov r3, #0
bl sub_020323F8
ldr r1, [sp, #8]
tst r1, #1
beq _0203148C
add r0, r4, #4
bl IsMenuOptionActive
cmp r0, #0
beq _0203147C
ldr r0, [r4, #0xfc]
tst r0, #0x80000000
bne _02031450
add r0, r4, #4
mov r1, #0
bl PlayWindowInputSound
_02031450:
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
ldr r1, [sp, #8]
sub r0, r0, #4
str r1, [r4, #0x1a4]
str r0, [r7, #0xb8]
mov r0, #4
str r0, [r4, #0x19c]
b _020315C4
_0203147C:
add r0, r4, #4
mov r1, #2
bl PlayWindowInputSound
b _020315C4
_0203148C:
tst r1, #2
beq _020314C8
add r0, r4, #4
mov r1, #1
bl PlayWindowInputSound
mov r0, #1
strb r0, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
ldr r1, [sp, #8]
sub r0, r0, #6
str r1, [r4, #0x1a4]
str r0, [r7, #0xb8]
mov r0, #4
str r0, [r4, #0x19c]
b _020315C4
_020314C8:
tst r1, #0x1000
beq _02031518
ldr r0, [r4, #0xfc]
tst r0, #0x2000
beq _02031518
add r0, r4, #4
mov r1, #0
bl PlayWindowInputSound
mov r2, #1
mov r0, #0
strb r2, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
ldr r1, [sp, #8]
sub r0, r0, #4
str r1, [r4, #0x1a4]
strb r2, [r4, #0x1b1]
str r0, [r7, #0xb8]
mov r0, #8
str r0, [r4, #0x19c]
b _020315C4
_02031518:
tst r1, #0x2000
beq _02031568
ldr r0, [r4, #0xfc]
tst r0, #0x4000
beq _02031568
add r0, r4, #4
mov r1, #0
bl PlayWindowInputSound
mov r2, #1
mov r0, #0
strb r2, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
ldr r1, [sp, #8]
sub r0, r0, #4
str r1, [r4, #0x1a4]
strb r2, [r4, #0x1b1]
str r0, [r7, #0xb8]
mov r0, #9
str r0, [r4, #0x19c]
b _020315C4
_02031568:
tst r1, #0x200
ldrne r0, [r4, #0x18c]
cmpne r0, #0
add r0, r4, #4
beq _02031590
mov r1, #5
bl PlayWindowInputSound
ldr r0, [r4, #0x18c]
blx r0
b _020315C4
_02031590:
bl sub_0203250C
cmp r0, #0
beq _020315C4
mov r1, #1
mov r0, #0
strb r1, [r4, #0x1a0]
strb r0, [r4, #0x1a1]
ldr r1, [sp, #8]
sub r0, r0, #4
str r1, [r4, #0x1a4]
str r0, [r7, #0xb8]
mov r0, #4
str r0, [r4, #0x19c]
_020315C4:
ldrsb r0, [r7, #0x10]
add r1, r4, #4
bl sub_02028948
b _02031714
_020315D4:
add r0, r4, #4
bl sub_02032070
cmp r0, #0
beq _020315F0
mov r0, r7
bl sub_0203175C
b _02031714
_020315F0:
ldrb r0, [r4, #0x1b1]
cmp r0, #0
movne r0, #0
strneb r0, [r4, #0x1b1]
movne r0, #1
strneb r0, [r4, #0x1b0]
ldr r3, [r4, #0x174]
cmp r3, #0
beq _02031714
mov r0, #0
mov r1, r0
mov r2, r0
blx r3
ldrb r0, [r4, #0x1b0]
cmp r0, #0
beq _02031714
mov r0, r7
bl sub_0203175C
b _02031714
_0203163C:
add r0, r4, #4
bl sub_02032070
cmp r0, #0
beq _02031658
mov r0, r7
bl sub_0203175C
b _02031714
_02031658:
ldrb r0, [r4, #0x1b1]
cmp r0, #0
movne r0, #0
strneb r0, [r4, #0x1b1]
movne r0, #1
strneb r0, [r4, #0x1b0]
ldr r3, [r4, #0x17c]
cmp r3, #0
beq _02031714
mov r0, #0
mov r1, r0
mov r2, r0
blx r3
ldrb r0, [r4, #0x1b0]
cmp r0, #0
beq _02031714
mov r0, r7
bl sub_0203175C
b _02031714
_020316A4:
add r0, r4, #4
bl sub_02032070
cmp r0, #0
bne _02031714
ldrb r0, [r4, #0x1a1]
cmp r0, #0
bne _020316E0
ldr r0, [r4, #0xfc]
tst r0, #0x400000
beq _020316E0
mov r0, r7
bl sub_0203175C
mov r0, #7
str r0, [r4, #0x19c]
b _02031714
_020316E0:
mov r0, #5
str r0, [r4, #0x19c]
_020316E8:
ldrsb r0, [r7, #0x10]
bl sub_0202812C
cmp r0, #0
beq _02031714
ldrb r0, [r4, #0x1a1]
cmp r0, #0
mvnne r0, #4
mvneq r0, #3
str r0, [r7, #0xb8]
mov r0, #6
str r0, [r4, #0x19c]
_02031714:
mov r0, #0
strb r0, [r4, #0x1b0]
cmp r5, #0
beq _02031740
ldr r0, [r4, #0x19c]
cmp r0, #1
bne _02031740
mov r0, r7
bl sub_0203175C
mov r0, #1
strb r0, [r4, #0x1b0]
_02031740:
ldr r0, [r4, #0x190]
cmp r0, #0
beq _02031750
blx r0
_02031750:
add sp, sp, #0x30
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02031758: .word 0x00000408
arm_func_end UpdateTeamSelectionMenu
arm_func_start sub_0203175C
sub_0203175C: ; 0x0203175C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
sub sp, sp, #0x400
mov sl, r0
ldr r4, [sl, #0xc]
add r0, r4, #4
bl GetPageStart
mov r5, r0
add r0, r4, #4
bl GetNumItemsOnPage
ldr r1, [r4, #0xfc]
mov r6, r0
tst r1, #0x200
ldrne r0, [r4, #0x160]
addne sb, r0, r5
ldrsb r0, [sl, #0x10]
moveq sb, #0
bl sub_02027B1C
cmp r6, #0
mov r7, #0
ble _02031868
mov fp, #0x42
b _02031860
_020317B8:
ldr r2, [r4, #0x198]
add r0, sp, #0xc
mov r1, r5
blx r2
mov r8, r0
mov r1, #0
cmp sb, #0
beq _020317E8
ldrb r0, [sb]
add sb, sb, #1
tst r0, #2
movne r1, #1
_020317E8:
cmp r8, #0
beq _02031858
cmp r1, #0
mov r1, r7
add r0, r4, #4
beq _02031830
bl GetPageItemYOffset
str fp, [sp]
mov r2, r0
ldr r0, [r4, #0x1a8]
mov r3, r8
str r0, [sp, #4]
ldr r0, [r4, #0x1ac]
mov r1, #0xd
str r0, [sp, #8]
ldrsb r0, [sl, #0x10]
bl sub_02026428
b _02031858
_02031830:
bl GetPageItemYOffset
mov r2, r0
ldr r0, [r4, #0x1a8]
mov r3, r8
str r0, [sp]
ldr r0, [r4, #0x1ac]
mov r1, #0xd
str r0, [sp, #4]
ldrsb r0, [sl, #0x10]
bl sub_02026358
_02031858:
add r7, r7, #1
add r5, r5, #1
_02031860:
cmp r7, r6
blt _020317B8
_02031868:
ldrsb r1, [sl, #0x10]
add r0, r4, #4
bl sub_0202A03C
ldrsb r0, [sl, #0x10]
bl UpdateWindow
add sp, sp, #0xc
add sp, sp, #0x400
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_0203175C
arm_func_start sub_02031888
sub_02031888: ; 0x02031888
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
str r4, [r0, #0x18c]
ldmia sp!, {r4, pc}
arm_func_end sub_02031888
arm_func_start sub_0203189C
sub_0203189C: ; 0x0203189C
stmdb sp!, {r4, lr}
mov r4, r1
bl GetWindowContents
str r4, [r0, #0x190]
ldmia sp!, {r4, pc}
arm_func_end sub_0203189C
arm_func_start IsTeamSelectionMenuState3
IsTeamSelectionMenuState3: ; 0x020318B0
stmdb sp!, {r3, lr}
bl GetWindowContents
ldr r0, [r0, #0x19c]
cmp r0, #3
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end IsTeamSelectionMenuState3
arm_func_start sub_020318D0
sub_020318D0: ; 0x020318D0
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetWindowContents
mov r4, r0
mov r0, #1
mov r2, #0
strb r0, [r4, #0x1a0]
mov r0, r5
sub r1, r2, #4
strb r2, [r4, #0x1a1]
bl sub_0202830C
mov r0, #4
str r0, [r4, #0x19c]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020318D0
arm_func_start sub_02031908
sub_02031908: ; 0x02031908
ldr ip, _02031910 ; =KeyWaitInit
bx ip
.align 2, 0
_02031910: .word KeyWaitInit
arm_func_end sub_02031908
arm_func_start sub_02031914
sub_02031914: ; 0x02031914
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r5, #0
mov r6, r1
mov r4, r0
add r1, sp, #4
mov r0, r5
bl GetHeldButtons
add r1, sp, #2
mov r0, r5
bl GetPressedButtons
ldrh r1, [sp, #2]
tst r1, #1
orrne r5, r5, #1
tst r1, #2
orrne r5, r5, #2
tst r1, #0x800
orrne r5, r5, #0x1000
tst r1, #0x400
orrne r5, r5, #0x2000
tst r1, #0x200
beq _0203197C
ldrh r0, [sp, #4]
tst r0, #0x100
orrne r5, r5, #0x800
orr r5, r5, #0x400
_0203197C:
tst r1, #8
orrne r5, r5, #0x100
tst r1, #4
orrne r5, r5, #0x200
cmp r5, #0
mov r0, #0
beq _020319A0
bl sub_020063A0
b _020319F8
_020319A0:
add r1, sp, #0
bl sub_020063F4
tst r6, #8
beq _020319D4
ldrh r0, [sp, #4]
tst r0, #0x100
beq _020319D4
ldrh r0, [sp]
tst r0, #0x40
orrne r5, r5, #0x4000
tst r0, #0x80
orrne r5, r5, #0x8000
b _020319E8
_020319D4:
ldrh r0, [sp]
tst r0, #0x40
orrne r5, r5, #0x10
tst r0, #0x80
orrne r5, r5, #0x20
_020319E8:
tst r0, #0x20
orrne r5, r5, #0x40
tst r0, #0x10
orrne r5, r5, #0x80
_020319F8:
ldrh r0, [sp, #4]
tst r0, #0x200
orrne r5, r5, #4
tst r0, #0x100
orrne r5, r5, #8
cmp r4, #0
beq _02031A30
bl IsTouchScreenNotOff
cmp r0, #0
mov r0, r4
beq _02031A2C
bl GetReleasedStylus
b _02031A30
_02031A2C:
bl sub_02006BFC
_02031A30:
mov r0, r5
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_02031914
arm_func_start sub_02031A3C
sub_02031A3C: ; 0x02031A3C
stmdb sp!, {r3, lr}
tst r0, #0x10
moveq r0, #0
ldmeqia sp!, {r3, pc}
mov r0, r1
bl PlaySeVolumeWrapper
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end sub_02031A3C
arm_func_start sub_02031A5C
sub_02031A5C: ; 0x02031A5C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
bl sub_02033440
mov r4, r0
mov r0, r7
mov r1, r6
bl sub_020336FC
cmp r4, r5
movgt r5, r4
cmp r0, r5
movgt r5, r0
add r1, r5, #7
mov r0, r1, asr #2
add r0, r1, r0, lsr #29
mov r0, r0, asr #3
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_02031A5C
arm_func_start CalcMenuHeightDiv8__02031AA4
CalcMenuHeightDiv8__02031AA4: ; 0x02031AA4
tst r0, #0x40000
bne _02031ABC
ldr ip, [r2]
ldr r2, [r3]
cmp r2, ip
strgt ip, [r3]
_02031ABC:
tst r0, #0x400
ldrne ip, [r1, #4]
ldr r2, [r3]
moveq ip, #0xe
mul r3, r2, ip
tst r0, #0x800
ldrne r1, [r1, #0xc]
addne r3, r3, r1
tst r0, #0x1000
addne r3, r3, #0x10
add r1, r3, #7
mov r0, r1, asr #2
add r0, r1, r0, lsr #29
mov r0, r0, asr #3
bx lr
arm_func_end CalcMenuHeightDiv8__02031AA4
arm_func_start InitWindowInput
InitWindowInput: ; 0x02031AF8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov sb, r1
mov r6, r2
tst sb, #0x400
ldrne r4, [r6, #4]
mov r7, r0
mov r5, r3
moveq r4, #0xe
mov r8, r6
str sb, [r7, #0x10]
add lr, r7, #0x14
mov ip, #9
_02031B28:
ldmia r8!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _02031B28
ldmia r8, {r0, r1}
stmia lr, {r0, r1}
ldmia r5, {r0, r1, r2, r3}
stmia r7, {r0, r1, r2, r3}
mov r0, #0
str r0, [r7, #0xbc]
str r0, [r7, #0xc8]
tst sb, #0x200
ldrne r0, [r6, #0x60]
ldr r1, [sp, #0x20]
str r0, [r7, #0xac]
str r1, [r7, #0xd0]
ldr r0, [r7, #0x10]
tst r0, #0x8000
beq _02031B90
ldr r0, [sp, #0x24]
cmp r0, #0
movle r0, #1
str r0, [r7, #0xc4]
mov r0, #1
str r0, [r7, #0xcc]
b _02031B98
_02031B90:
str r1, [r7, #0xc0]
str r1, [r7, #0xc4]
_02031B98:
mov r0, r7
bl sub_02032754
ldr r0, [r7, #0xcc]
mov r3, #0
cmp r0, #0xa
ldrge r0, [r7, #0x10]
orrge r0, r0, #0x10000
strge r0, [r7, #0x10]
str r3, [r7, #0xb0]
ldr r0, [r7, #0x10]
tst r0, #0x800
ldrne r3, [r6, #0xc]
str r3, [r7, #0xb4]
ldmia r5, {r1, r2}
ldr r0, [r7, #0x10]
sub r1, r2, r1
sub r1, r1, r3
mov r3, #0
tst r0, #0x1000
subne r1, r1, #0x10
strb r3, [r7, #0xd4]
cmp r4, #0
ble _02031C2C
ldr r0, [r7, #0x10]
tst r0, #0x80000
bne _02031C20
ldr r0, [r7, #0xc4]
ldr r2, [r7, #0xb4]
mul r0, r4, r0
sub r0, r1, r0
add r0, r0, r0, lsr #31
adds r0, r2, r0, asr #1
str r0, [r7, #0xb4]
strmi r3, [r7, #0xb4]
_02031C20:
mov r0, r4, lsl #8
str r0, [r7, #0xb8]
b _02031C34
_02031C2C:
mov r0, r7
bl sub_02032894
_02031C34:
ldr r0, [r7, #0x10]
tst r0, #0x20
beq _02031C4C
ldr r1, [r6]
mov r0, r7
bl sub_02032684
_02031C4C:
bl sub_02031908
mov r1, #0
strb r1, [r7, #0xf4]
str r1, [r7, #0xd8]
sub r0, r1, #1
str r0, [r7, #0xdc]
mov r0, r7
str r1, [r7, #0xe0]
bl sub_02032984
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end InitWindowInput
arm_func_start sub_02031C74
sub_02031C74: ; 0x02031C74
ldr r2, [r0, #0x10]
orr r1, r2, r1
str r1, [r0, #0x10]
bx lr
arm_func_end sub_02031C74
arm_func_start sub_02031C84
sub_02031C84: ; 0x02031C84
ldr r2, [r0, #0x10]
mvn r1, r1
and r1, r2, r1
str r1, [r0, #0x10]
bx lr
arm_func_end sub_02031C84
arm_func_start sub_02031C98
sub_02031C98: ; 0x02031C98
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x24
mov r8, r0
mov r7, r1
mov r6, r2
cmp r3, #0
ldr r4, [r8, #0xc8]
ldr r5, [r8, #0xbc]
add r0, sp, #0
beq _02031DD4
ldr r1, [r8, #0x10]
bl sub_02031914
ldr r1, [r8, #0x10]
mov sb, r0
tst r1, #0x8000
beq _02031D18
tst r1, #0x20000
beq _02031D18
tst r1, #0x2000000
bne _02031D18
tst sb, #8
beq _02031D18
tst sb, #0x10
beq _02031D04
mov r0, r8
bl sub_0203280C
b _02031D44
_02031D04:
tst sb, #0x20
beq _02031D44
mov r0, r8
bl sub_020327E4
b _02031D44
_02031D18:
tst r1, #0x1000000
bne _02031D44
tst sb, #0x10
beq _02031D34
mov r0, r8
bl sub_0203261C
b _02031D44
_02031D34:
tst sb, #0x20
beq _02031D44
mov r0, r8
bl sub_020325AC
_02031D44:
ldr r0, [r8, #0x10]
tst r0, #0x8000
beq _02031DBC
tst r0, #0x20000
bne _02031DBC
tst r0, #0x2000000
bne _02031DBC
tst r0, #0x10000
beq _02031D98
tst sb, #8
beq _02031D98
tst sb, #0x40
beq _02031D84
mov r0, r8
bl sub_02032864
b _02031DBC
_02031D84:
tst sb, #0x80
beq _02031DBC
mov r0, r8
bl sub_0203282C
b _02031DBC
_02031D98:
tst sb, #0x40
beq _02031DAC
mov r0, r8
bl sub_0203280C
b _02031DBC
_02031DAC:
tst sb, #0x80
beq _02031DBC
mov r0, r8
bl sub_020327E4
_02031DBC:
ldr r0, [r8, #0x10]
tst r0, #1
biceq sb, sb, #1
tst r0, #2
biceq sb, sb, #2
b _02031DDC
_02031DD4:
mov sb, #0
bl sub_02006BFC
_02031DDC:
cmp r7, #0
strne sb, [r7]
cmp r6, #0
beq _02031E0C
add ip, sp, #0
mov r7, #2
_02031DF4:
ldmia ip!, {r0, r1, r2, r3}
stmia r6!, {r0, r1, r2, r3}
subs r7, r7, #1
bne _02031DF4
ldr r0, [ip]
str r0, [r6]
_02031E0C:
ldr r0, [r8, #0xc8]
cmp r4, r0
beq _02031E2C
mov r0, r8
mov r1, #4
bl PlayWindowInputSound
mov r0, #1
b _02031E78
_02031E2C:
ldr r0, [r8, #0xbc]
cmp r5, r0
beq _02031E44
mov r0, r8
mov r1, #3
bl PlayWindowInputSound
_02031E44:
ldr r0, [r8, #0xd8]
cmp r0, #0
ble _02031E74
subs r0, r0, #1
str r0, [r8, #0xd8]
bne _02031E74
mvn r0, #0
str r0, [r8, #0xdc]
mov r0, #0
str r0, [r8, #0xe0]
mov r0, #1
b _02031E78
_02031E74:
mov r0, #0
_02031E78:
add sp, sp, #0x24
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
arm_func_end sub_02031C98
arm_func_start sub_02031E80
sub_02031E80: ; 0x02031E80
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x24
mov r8, r0
mov r7, r1
mov r6, r2
cmp r3, #0
ldr r4, [r8, #0xc8]
ldr r5, [r8, #0xbc]
add r0, sp, #0
beq _02031FC4
ldr r1, [r8, #0x10]
bl sub_02031914
ldr r1, [r8, #0x10]
mov sb, r0
tst r1, #0x8000
beq _02031F00
tst r1, #0x20000
beq _02031F00
tst r1, #0x2000000
bne _02031F00
tst sb, #8
beq _02031F00
tst sb, #0x10
beq _02031EEC
mov r0, r8
bl sub_0203280C
b _02031F34
_02031EEC:
tst sb, #0x20
beq _02031F34
mov r0, r8
bl sub_020327E4
b _02031F34
_02031F00:
tst r1, #0x1000000
bne _02031F34
tst sb, #0x10
beq _02031F20
ldr r1, [sp, #0x40]
mov r0, r8
bl sub_02032654
b _02031F34
_02031F20:
tst sb, #0x20
beq _02031F34
ldr r1, [sp, #0x40]
mov r0, r8
bl sub_020325E8
_02031F34:
ldr r0, [r8, #0x10]
tst r0, #0x8000
beq _02031FAC
tst r0, #0x20000
bne _02031FAC
tst r0, #0x2000000
bne _02031FAC
tst r0, #0x10000
beq _02031F88
tst sb, #8
beq _02031F88
tst sb, #0x40
beq _02031F74
mov r0, r8
bl sub_02032864
b _02031FAC
_02031F74:
tst sb, #0x80
beq _02031FAC
mov r0, r8
bl sub_0203282C
b _02031FAC
_02031F88:
tst sb, #0x40
beq _02031F9C
mov r0, r8
bl sub_0203280C
b _02031FAC
_02031F9C:
tst sb, #0x80
beq _02031FAC
mov r0, r8
bl sub_020327E4
_02031FAC:
ldr r0, [r8, #0x10]
tst r0, #1
biceq sb, sb, #1
tst r0, #2
biceq sb, sb, #2
b _02031FCC
_02031FC4:
mov sb, #0
bl sub_02006BFC
_02031FCC:
cmp r7, #0
strne sb, [r7]
cmp r6, #0
beq _02031FFC
add ip, sp, #0
mov r7, #2
_02031FE4:
ldmia ip!, {r0, r1, r2, r3}
stmia r6!, {r0, r1, r2, r3}
subs r7, r7, #1
bne _02031FE4
ldr r0, [ip]
str r0, [r6]
_02031FFC:
ldr r0, [r8, #0xc8]
cmp r4, r0
beq _0203201C
mov r0, r8
mov r1, #4
bl PlayWindowInputSound
mov r0, #1
b _02032068
_0203201C:
ldr r0, [r8, #0xbc]
cmp r5, r0
beq _02032034
mov r0, r8
mov r1, #3
bl PlayWindowInputSound
_02032034:
ldr r0, [r8, #0xd8]
cmp r0, #0
ble _02032064
subs r0, r0, #1
str r0, [r8, #0xd8]
bne _02032064
mvn r0, #0
str r0, [r8, #0xdc]
mov r0, #0
str r0, [r8, #0xe0]
mov r0, #1
b _02032068
_02032064:
mov r0, #0
_02032068:
add sp, sp, #0x24
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
arm_func_end sub_02031E80
arm_func_start sub_02032070
sub_02032070: ; 0x02032070
ldr r1, [r0, #0xd8]
cmp r1, #0
ble _020320A0
subs r1, r1, #1
str r1, [r0, #0xd8]
mvneq r1, #0
streq r1, [r0, #0xdc]
moveq r1, #0
streq r1, [r0, #0xe0]
beq _020320A0
mov r0, #1
bx lr
_020320A0:
mov r0, #0
bx lr
arm_func_end sub_02032070
arm_func_start sub_020320A8
sub_020320A8: ; 0x020320A8
mov r2, #6
str r2, [r0, #0xd8]
str r1, [r0, #0xdc]
mov r1, #0
str r1, [r0, #0xe0]
bx lr
arm_func_end sub_020320A8
arm_func_start sub_020320C0
sub_020320C0: ; 0x020320C0
ldr r0, [r0, #0xdc]
bx lr
arm_func_end sub_020320C0
arm_func_start sub_020320C8
sub_020320C8: ; 0x020320C8
mov r2, #6
str r2, [r0, #0xd8]
sub r2, r2, #7
str r1, [r0, #0xe0]
str r2, [r0, #0xe8]
str r2, [r0, #0xe4]
str r2, [r0, #0xf0]
str r2, [r0, #0xec]
bx lr
arm_func_end sub_020320C8
arm_func_start sub_020320EC
sub_020320EC: ; 0x020320EC
mov r2, #6
str r2, [r0, #0xd8]
sub r3, r2, #7
str r3, [r0, #0xdc]
mov r2, #0
str r2, [r0, #0xe0]
cmp r1, #0
streq r3, [r0, #0xe8]
streq r3, [r0, #0xe4]
streq r3, [r0, #0xf0]
streq r3, [r0, #0xec]
bxeq lr
ldr r3, [r1, #8]
ldr r2, [r0, #8]
sub r2, r3, r2
str r2, [r0, #0xec]
ldr r3, [r1, #0xc]
ldr r2, [r0, #8]
sub r2, r3, r2
str r2, [r0, #0xf0]
ldr r3, [r1]
ldr r2, [r0]
sub r2, r3, r2
str r2, [r0, #0xe4]
ldr r2, [r1, #4]
ldr r1, [r0]
sub r1, r2, r1
str r1, [r0, #0xe8]
bx lr
arm_func_end sub_020320EC
arm_func_start sub_02032160
sub_02032160: ; 0x02032160
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x10
mov r8, r1
ldrh r1, [r8]
mov r7, r2
mov sb, r0
tst r1, r7
beq _020322A4
cmp r3, #0
ldrge r0, [sb, #8]
ldr r5, [sb, #0xc0]
ldrlt r0, [sb, #0xc]
ldr r1, [sp, #0x30]
add r0, r0, r3
str r0, [sp, #8]
cmp r1, #0
ldrgt r0, [sb, #8]
mov r6, #0
ldrle r0, [sb, #0xc]
add r4, sp, #0
add r0, r0, r1
str r0, [sp, #0xc]
b _0203229C
_020321BC:
ldr r0, [sb, #0xb8]
ldr r2, [sb, #0xb4]
mul r1, r6, r0
mov r0, r1, asr #7
add r0, r1, r0, lsr #24
ldr r1, [sb]
add r0, r2, r0, asr #8
add r0, r1, r0
str r0, [sp]
ldr r0, [sb, #0xb8]
add r1, r6, #1
mul r2, r1, r0
mov r0, r2, asr #7
ldr r1, [sb, #0xb4]
add r0, r2, r0, lsr #24
ldr r2, [sb]
add r0, r1, r0, asr #8
add r0, r2, r0
sub r3, r0, #2
mov r0, r8
mov r1, r7
mov r2, r4
str r3, [sp, #4]
bl sub_02006C8C
cmp r0, #0
beq _02032298
ldrb r0, [sp, #0x34]
cmp r0, #0
beq _02032288
mov r0, #6
str r0, [sb, #0xd8]
sub r0, r0, #7
str r0, [sb, #0xdc]
mov r0, #0
str r0, [sb, #0xe0]
ldr r1, [sp, #8]
ldr r0, [sb, #8]
sub r0, r1, r0
str r0, [sb, #0xec]
ldr r1, [sp, #0xc]
ldr r0, [sb, #8]
sub r0, r1, r0
str r0, [sb, #0xf0]
ldr r1, [sp]
ldr r0, [sb]
sub r0, r1, r0
str r0, [sb, #0xe4]
ldr r1, [sp, #4]
ldr r0, [sb]
sub r0, r1, r0
str r0, [sb, #0xe8]
_02032288:
ldr r1, [sb, #0xc8]
ldr r0, [sb, #0xc4]
mla r0, r1, r0, r6
b _020322A8
_02032298:
add r6, r6, #1
_0203229C:
cmp r6, r5
blt _020321BC
_020322A4:
mvn r0, #0
_020322A8:
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end sub_02032160
arm_func_start sub_020322B0
sub_020322B0: ; 0x020322B0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x10
mov sb, r1
ldrh r1, [sb]
mov r8, r2
mov sl, r0
tst r1, r8
ldr r7, [sp, #0x38]
beq _020323EC
cmp r3, #0
ldrge r0, [sl, #8]
ldr r1, [sp, #0x30]
ldrlt r0, [sl, #0xc]
cmp r1, #0
add r0, r0, r3
str r0, [sp, #8]
ldrgt r0, [sl, #8]
mov r5, #0
ldrle r0, [sl, #0xc]
add r4, sp, #0
add r1, r0, r1
ldr r0, [sp, #0x3c]
str r1, [sp, #0xc]
mov r6, r0, lsl #8
b _020323E4
_02032314:
mul r3, r5, r6
add r0, r5, #1
mul r2, r0, r6
mov r0, r3, asr #7
mov r1, r2, asr #7
ldr ip, [sl, #0xb4]
add r0, r3, r0, lsr #24
ldr r3, [sl]
add r0, ip, r0, asr #8
add r0, r3, r0
str r0, [sp]
ldr r3, [sl, #0xb4]
add r0, r2, r1, lsr #24
ldr r1, [sl]
add r0, r3, r0, asr #8
add r0, r1, r0
sub r3, r0, #2
mov r0, sb
mov r1, r8
mov r2, r4
str r3, [sp, #4]
bl sub_02006C8C
cmp r0, #0
beq _020323E0
ldrb r0, [sp, #0x34]
cmp r0, #0
beq _020323D8
mov r0, #6
str r0, [sl, #0xd8]
sub r0, r0, #7
str r0, [sl, #0xdc]
mov r0, #0
str r0, [sl, #0xe0]
ldr r1, [sp, #8]
ldr r0, [sl, #8]
sub r0, r1, r0
str r0, [sl, #0xec]
ldr r1, [sp, #0xc]
ldr r0, [sl, #8]
sub r0, r1, r0
str r0, [sl, #0xf0]
ldr r1, [sp]
ldr r0, [sl]
sub r0, r1, r0
str r0, [sl, #0xe4]
ldr r1, [sp, #4]
ldr r0, [sl]
sub r0, r1, r0
str r0, [sl, #0xe8]
_020323D8:
mov r0, r5
b _020323F0
_020323E0:
add r5, r5, #1
_020323E4:
cmp r5, r7
blt _02032314
_020323EC:
mvn r0, #0
_020323F0:
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
arm_func_end sub_020322B0
arm_func_start sub_020323F8
sub_020323F8: ; 0x020323F8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r1
mov r4, r0
mov r6, r2
mov r5, r3
tst r7, #0x2000
mov r0, #0
beq _02032440
ldr r1, [r4, #0x10]
tst r1, #0x40
ldrne r3, [r4, #0x78]
cmpne r3, #0
beq _02032440
ldr r0, [r4, #0x7c]
mov r1, r6
mov r2, r5
blx r3
mov r0, #1
_02032440:
tst r7, #0x1000
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
ldr r1, [r4, #0x10]
tst r1, #0x80
ldrne r3, [r4, #0x80]
cmpne r3, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
ldr r0, [r4, #0x84]
mov r1, r6
mov r2, r5
blx r3
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020323F8
arm_func_start IsMenuOptionActive
IsMenuOptionActive: ; 0x02032474
stmdb sp!, {r4, lr}
mov r4, r0
ldr r1, [r4, #0x10]
tst r1, #1
beq _020324BC
tst r1, #0x8000000
bne _020324BC
tst r1, #0x200
beq _020324B4
bl GetSelectedMenuItemIdx
ldr r1, [r4, #0xac]
ldrb r0, [r1, r0]
tst r0, #1
bne _020324BC
mov r0, #1
ldmia sp!, {r4, pc}
_020324B4:
mov r0, #1
ldmia sp!, {r4, pc}
_020324BC:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end IsMenuOptionActive
arm_func_start sub_020324C4
sub_020324C4: ; 0x020324C4
stmdb sp!, {r4, lr}
mov r4, r0
ldr r1, [r4, #0x10]
tst r1, #1
beq _02032504
tst r1, #0x200
beq _020324FC
bl GetSelectedMenuItemIdx
ldr r1, [r4, #0xac]
ldrb r0, [r1, r0]
tst r0, #1
bne _02032504
mov r0, #1
ldmia sp!, {r4, pc}
_020324FC:
mov r0, #1
ldmia sp!, {r4, pc}
_02032504:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end sub_020324C4
arm_func_start sub_0203250C
sub_0203250C: ; 0x0203250C
ldr r3, [r0, #0x10]
tst r3, #0x2000
beq _02032530
tst r1, #0x1000
beq _02032530
ldr r2, [r0, #0x88]
cmp r2, #0
moveq r0, #1
bxeq lr
_02032530:
tst r3, #0x4000
beq _02032550
tst r1, #0x2000
beq _02032550
ldr r0, [r0, #0x90]
cmp r0, #0
moveq r0, #1
bxeq lr
_02032550:
mov r0, #0
bx lr
arm_func_end sub_0203250C
arm_func_start GetSelectedItemOnPage
GetSelectedItemOnPage: ; 0x02032558
ldr r0, [r0, #0xbc]
bx lr
arm_func_end GetSelectedItemOnPage
arm_func_start GetCurrentPage
GetCurrentPage: ; 0x02032560
ldr r0, [r0, #0xc8]
bx lr
arm_func_end GetCurrentPage
arm_func_start GetPageStart
GetPageStart: ; 0x02032568
ldr r1, [r0, #0xc8]
ldr r0, [r0, #0xc4]
mul r0, r1, r0
bx lr
arm_func_end GetPageStart
arm_func_start GetSelectedMenuItemIdx
GetSelectedMenuItemIdx: ; 0x02032578
ldr r2, [r0, #0xbc]
ldr r1, [r0, #0xc8]
ldr r0, [r0, #0xc4]
mla r0, r1, r0, r2
bx lr
arm_func_end GetSelectedMenuItemIdx
arm_func_start GetTotalNumMenuItems
GetTotalNumMenuItems: ; 0x0203258C
ldr r0, [r0, #0xd0]
bx lr
arm_func_end GetTotalNumMenuItems
arm_func_start GetNumItemsOnPage
GetNumItemsOnPage: ; 0x02032594
ldr r0, [r0, #0xc0]
bx lr
arm_func_end GetNumItemsOnPage
arm_func_start GetMaxItemsOnPage
GetMaxItemsOnPage: ; 0x0203259C
ldr r0, [r0, #0xc4]
bx lr
arm_func_end GetMaxItemsOnPage
arm_func_start GetTotalNumPages
GetTotalNumPages: ; 0x020325A4
ldr r0, [r0, #0xcc]
bx lr
arm_func_end GetTotalNumPages
arm_func_start sub_020325AC
sub_020325AC: ; 0x020325AC
mov r1, #1
strb r1, [r0, #0xd4]
ldr r1, [r0, #0xc0]
cmp r1, #0
movle r1, #0
strle r1, [r0, #0xbc]
bxle lr
ldr r1, [r0, #0xbc]
add r2, r1, #1
str r2, [r0, #0xbc]
ldr r1, [r0, #0xc0]
cmp r2, r1
movge r1, #0
strge r1, [r0, #0xbc]
bx lr
arm_func_end sub_020325AC
arm_func_start sub_020325E8
sub_020325E8: ; 0x020325E8
mov r2, #1
cmp r1, #0
strb r2, [r0, #0xd4]
movle r1, #0
strle r1, [r0, #0xbc]
bxle lr
ldr r2, [r0, #0xbc]
add r2, r2, #1
cmp r2, r1
str r2, [r0, #0xbc]
subge r1, r1, #1
strge r1, [r0, #0xbc]
bx lr
arm_func_end sub_020325E8
arm_func_start sub_0203261C
sub_0203261C: ; 0x0203261C
mov r1, #1
strb r1, [r0, #0xd4]
ldr r1, [r0, #0xc0]
cmp r1, #0
movle r1, #0
strle r1, [r0, #0xbc]
bxle lr
ldr r1, [r0, #0xbc]
subs r1, r1, #1
str r1, [r0, #0xbc]
ldrmi r1, [r0, #0xc0]
submi r1, r1, #1
strmi r1, [r0, #0xbc]
bx lr
arm_func_end sub_0203261C
arm_func_start sub_02032654
sub_02032654: ; 0x02032654
mov r2, #1
cmp r1, #0
strb r2, [r0, #0xd4]
movle r1, #0
strle r1, [r0, #0xbc]
bxle lr
ldr r1, [r0, #0xbc]
subs r1, r1, #1
str r1, [r0, #0xbc]
movmi r1, #0
strmi r1, [r0, #0xbc]
bx lr
arm_func_end sub_02032654
arm_func_start sub_02032684
sub_02032684: ; 0x02032684
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r0, #1
strb r0, [r5, #0xd4]
movs r4, r1
ldr r0, [r5, #0x10]
movmi r4, #0
tst r0, #0x8000
beq _020326E0
ldr r0, [r5, #0xd0]
ldr r1, [r5, #0xc4]
cmp r4, r0
subge r4, r0, #1
mov r0, r4
bl _s32_div_f
str r0, [r5, #0xc8]
ldr r1, [r5, #0xc4]
mov r0, r4
bl _s32_div_f
mov r0, r5
str r1, [r5, #0xbc]
bl sub_02032754
ldmia sp!, {r3, r4, r5, pc}
_020326E0:
ldr r0, [r5, #0xc0]
cmp r4, r0
subge r0, r0, #1
strge r0, [r5, #0xbc]
strlt r4, [r5, #0xbc]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02032684
arm_func_start sub_020326F8
sub_020326F8: ; 0x020326F8
mov r3, #1
cmp r1, #0
movlt r1, #0
strb r3, [r0, #0xd4]
cmp r1, r2
ldrge r1, [r0, #0xc0]
subge r1, r1, #1
str r1, [r0, #0xbc]
bx lr
arm_func_end sub_020326F8
arm_func_start sub_0203271C
sub_0203271C: ; 0x0203271C
stmdb sp!, {r4, lr}
mov r4, r0
str r1, [r4, #0xd0]
bl sub_02032754
ldr r0, [r4, #0xcc]
cmp r0, #0xa
ldr r0, [r4, #0x10]
orrge r0, r0, #0x10000
biclt r0, r0, #0x10000
str r0, [r4, #0x10]
ldr r1, [r4, #0xbc]
mov r0, r4
bl sub_02032684
ldmia sp!, {r4, pc}
arm_func_end sub_0203271C
arm_func_start sub_02032754
sub_02032754: ; 0x02032754
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #0x10]
tst r0, #0x8000
ldmeqia sp!, {r4, pc}
ldr r1, [r4, #0xc4]
ldr r0, [r4, #0xd0]
add r0, r0, r1
sub r0, r0, #1
bl _s32_div_f
str r0, [r4, #0xcc]
ldr r1, [r4, #0xc8]
sub r0, r0, #1
cmp r1, r0
strge r0, [r4, #0xc8]
ldr r1, [r4, #0xc8]
ldr r0, [r4, #0xc4]
ldr r2, [r4, #0xd0]
mul r0, r1, r0
sub r1, r2, r0
str r1, [r4, #0xc0]
ldr r0, [r4, #0xc4]
cmp r1, r0
strgt r0, [r4, #0xc0]
ldr r1, [r4, #0xc0]
ldr r0, [r4, #0xbc]
sub r1, r1, #1
cmp r0, r1
strgt r1, [r4, #0xbc]
ldmia sp!, {r4, pc}
arm_func_end sub_02032754
arm_func_start sub_020327CC
sub_020327CC: ; 0x020327CC
str r1, [r0, #0xd0]
str r2, [r0, #0xc4]
mov r1, #0
str r1, [r0, #0xbc]
str r1, [r0, #0xc8]
bx lr
arm_func_end sub_020327CC
arm_func_start sub_020327E4
sub_020327E4: ; 0x020327E4
ldr r1, [r0, #0xcc]
ldr r2, [r0, #0xc8]
sub r1, r1, #1
cmp r2, r1
movge r1, #0
addlt r1, r2, #1
ldr ip, _02032808 ; =sub_02032754
str r1, [r0, #0xc8]
bx ip
.align 2, 0
_02032808: .word sub_02032754
arm_func_end sub_020327E4
arm_func_start sub_0203280C
sub_0203280C: ; 0x0203280C
ldr r1, [r0, #0xc8]
ldr ip, _02032828 ; =sub_02032754
cmp r1, #0
ldrle r1, [r0, #0xcc]
sub r1, r1, #1
str r1, [r0, #0xc8]
bx ip
.align 2, 0
_02032828: .word sub_02032754
arm_func_end sub_0203280C
arm_func_start sub_0203282C
sub_0203282C: ; 0x0203282C
ldr r2, [r0, #0xcc]
ldr r1, [r0, #0xc8]
sub r2, r2, #1
cmp r1, r2
movge r1, #0
strge r1, [r0, #0xc8]
bge _02032858
add r1, r1, #0xa
cmp r1, r2
movle r2, r1
str r2, [r0, #0xc8]
_02032858:
ldr ip, _02032860 ; =sub_02032754
bx ip
.align 2, 0
_02032860: .word sub_02032754
arm_func_end sub_0203282C
arm_func_start sub_02032864
sub_02032864: ; 0x02032864
ldr r1, [r0, #0xc8]
cmp r1, #0
ldrle r1, [r0, #0xcc]
suble r1, r1, #1
strle r1, [r0, #0xc8]
ble _02032888
subs r1, r1, #0xa
movmi r1, #0
str r1, [r0, #0xc8]
_02032888:
ldr ip, _02032890 ; =sub_02032754
bx ip
.align 2, 0
_02032890: .word sub_02032754
arm_func_end sub_02032864
arm_func_start sub_02032894
sub_02032894: ; 0x02032894
stmdb sp!, {r4, lr}
mov r4, r0
cmp r1, #0
ble _020328B4
mov r0, r1, lsl #8
ldr r1, [r4, #0xc4]
bl _s32_div_f
b _020328D0
_020328B4:
ldr r0, [r4, #0xb4]
ldmia r4, {r1, r2}
sub r1, r2, r1
sub r0, r1, r0
ldr r1, [r4, #0xc4]
mov r0, r0, lsl #8
bl _s32_div_f
_020328D0:
str r0, [r4, #0xb8]
ldmia sp!, {r4, pc}
arm_func_end sub_02032894
arm_func_start GetPageItemYOffset
GetPageItemYOffset: ; 0x020328D8
ldr r2, [r0, #0xb8]
ldr r3, [r0, #0xb4]
mul r2, r1, r2
mov r0, r2, asr #7
add r0, r2, r0, lsr #24
add r0, r3, r0, asr #8
bx lr
arm_func_end GetPageItemYOffset
arm_func_start sub_020328F4
sub_020328F4: ; 0x020328F4
ldr r1, [r0, #0x10]
tst r1, #0x8000
beq _02032910
ldr r0, [r0, #0xcc]
cmp r0, #1
movgt r0, #1
bxgt lr
_02032910:
mov r0, #0
bx lr
arm_func_end sub_020328F4
arm_func_start sub_02032918
sub_02032918: ; 0x02032918
ldr r1, [r0, #0x10]
tst r1, #0x8000
beq _02032934
ldr r0, [r0, #0xcc]
cmp r0, #1
movgt r0, #1
bxgt lr
_02032934:
mov r0, #0
bx lr
arm_func_end sub_02032918
arm_func_start sub_0203293C
sub_0203293C: ; 0x0203293C
ldr r1, [r0, #0x10]
tst r1, #0x8000
beq _02032958
ldr r0, [r0, #0xcc]
cmp r0, #1
movgt r0, #1
bxgt lr
_02032958:
mov r0, #0
bx lr
arm_func_end sub_0203293C
arm_func_start PlayWindowInputSound
PlayWindowInputSound: ; 0x02032960
stmdb sp!, {r3, lr}
ldr r0, [r0, #0x10]
tst r0, #0x10
moveq r0, #0
ldmeqia sp!, {r3, pc}
mov r0, r1
bl PlaySeVolumeWrapper
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end PlayWindowInputSound
arm_func_start sub_02032984
sub_02032984: ; 0x02032984
mvn r1, #0
str r1, [r0, #0xe8]
str r1, [r0, #0xf0]
str r1, [r0, #0xe4]
str r1, [r0, #0xec]
bx lr
arm_func_end sub_02032984
arm_func_start sub_0203299C
sub_0203299C: ; 0x0203299C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
bl sub_02033440
mov r4, r0
mov r0, r7
mov r1, r6
bl sub_020336FC
cmp r4, r5
movgt r5, r4
cmp r0, r5
movgt r5, r0
add r1, r5, #7
mov r0, r1, asr #2
add r0, r1, r0, lsr #29
mov r0, r0, asr #3
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_0203299C
arm_func_start CalcMenuHeightDiv8__020329E4
CalcMenuHeightDiv8__020329E4: ; 0x020329E4
tst r0, #0x40000
bne _020329FC
ldr ip, [r2]
ldr r2, [r3]
cmp r2, ip
strgt ip, [r3]
_020329FC:
tst r0, #0x400
ldrne ip, [r1, #4]
ldr r2, [r3]
moveq ip, #0xe
mul r3, r2, ip
tst r0, #0x800
ldrne r1, [r1, #0xc]
addne r3, r3, r1
tst r0, #0x1000
addne r3, r3, #0x10
add r1, r3, #7
mov r0, r1, asr #2
add r0, r1, r0, lsr #29
mov r0, r0, asr #3
bx lr
arm_func_end CalcMenuHeightDiv8__020329E4
arm_func_start InitInventoryMenuInput
InitInventoryMenuInput: ; 0x02032A38
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov sb, r1
mov r6, r2
tst sb, #0x400
ldrne r4, [r6, #4]
mov r7, r0
mov r5, r3
moveq r4, #0xe
mov r8, r6
str sb, [r7, #0x10]
add lr, r7, #0x14
mov ip, #9
_02032A68:
ldmia r8!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _02032A68
ldmia r8, {r0, r1}
stmia lr, {r0, r1}
ldmia r5, {r0, r1, r2, r3}
stmia r7, {r0, r1, r2, r3}
mov r0, #0
str r0, [r7, #0xbc]
str r0, [r7, #0xc8]
tst sb, #0x200
ldrne r0, [r6, #0x60]
ldr r1, [sp, #0x20]
str r0, [r7, #0xac]
ldrb r0, [sp, #0x28]
str r1, [r7, #0xd0]
strb r0, [r7, #0xd5]
ldr r0, [r7, #0x10]
tst r0, #0x8000
beq _02032AD8
ldr r0, [sp, #0x24]
cmp r0, #0
movle r0, #1
str r0, [r7, #0xc4]
mov r0, #1
str r0, [r7, #0xcc]
b _02032AE0
_02032AD8:
str r1, [r7, #0xc0]
str r1, [r7, #0xc4]
_02032AE0:
mov r0, r7
bl sub_020331D4
ldr r0, [r7, #0xcc]
mov r3, #0
cmp r0, #0xa
ldrge r0, [r7, #0x10]
orrge r0, r0, #0x10000
strge r0, [r7, #0x10]
str r3, [r7, #0xb0]
ldr r0, [r7, #0x10]
tst r0, #0x800
ldrne r3, [r6, #0xc]
str r3, [r7, #0xb4]
ldmia r5, {r1, r2}
ldr r0, [r7, #0x10]
sub r1, r2, r1
sub r1, r1, r3
mov r3, #0
tst r0, #0x1000
subne r1, r1, #0x10
strb r3, [r7, #0xd4]
cmp r4, #0
ble _02032B74
ldr r0, [r7, #0x10]
tst r0, #0x80000
bne _02032B68
ldr r0, [r7, #0xc4]
ldr r2, [r7, #0xb4]
mul r0, r4, r0
sub r0, r1, r0
add r0, r0, r0, lsr #31
adds r0, r2, r0, asr #1
str r0, [r7, #0xb4]
strmi r3, [r7, #0xb4]
_02032B68:
mov r0, r4, lsl #8
str r0, [r7, #0xb8]
b _02032B7C
_02032B74:
mov r0, r7
bl sub_0203330C
_02032B7C:
ldr r0, [r7, #0x10]
tst r0, #0x20
beq _02032B94
ldr r1, [r6]
mov r0, r7
bl sub_020330EC
_02032B94:
bl sub_02031908
mov r1, #0
str r1, [r7, #0xd8]
sub r0, r1, #1
str r0, [r7, #0xdc]
mov r0, r7
str r1, [r7, #0xe0]
bl sub_020333FC
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end InitInventoryMenuInput
arm_func_start sub_02032BB8
sub_02032BB8: ; 0x02032BB8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x24
mov sb, r0
mov r6, r3
mov r8, r1
mov r7, r2
ldr r4, [sb, #0xc8]
ldr r5, [sb, #0xbc]
bl sub_02033414
mov sl, r0
cmp r6, #0
add r0, sp, #0
beq _02032D04
ldr r1, [sb, #0x10]
bl sub_02031914
ldr r1, [sb, #0x10]
mov r6, r0
tst r1, #0x8000
beq _02032C44
tst r1, #0x20000
beq _02032C44
tst r1, #0x2000000
bne _02032C44
tst r6, #8
beq _02032C44
tst r6, #0x10
beq _02032C30
mov r0, sb
bl sub_020332AC
b _02032C74
_02032C30:
tst r6, #0x20
beq _02032C74
mov r0, sb
bl sub_02033284
b _02032C74
_02032C44:
tst r1, #0x1000000
cmpeq sl, #0
bne _02032C74
tst r6, #0x10
beq _02032C64
mov r0, sb
bl sub_020330B4
b _02032C74
_02032C64:
tst r6, #0x20
beq _02032C74
mov r0, sb
bl sub_02033078
_02032C74:
ldr r0, [sb, #0x10]
tst r0, #0x8000
beq _02032CEC
tst r0, #0x20000
bne _02032CEC
tst r0, #0x2000000
bne _02032CEC
tst r0, #0x10000
beq _02032CC8
tst r6, #8
beq _02032CC8
tst r6, #0x40
beq _02032CB4
mov r0, sb
bl sub_020332F0
b _02032CEC
_02032CB4:
tst r6, #0x80
beq _02032CEC
mov r0, sb
bl sub_020332CC
b _02032CEC
_02032CC8:
tst r6, #0x40
beq _02032CDC
mov r0, sb
bl sub_020332AC
b _02032CEC
_02032CDC:
tst r6, #0x80
beq _02032CEC
mov r0, sb
bl sub_02033284
_02032CEC:
ldr r0, [sb, #0x10]
tst r0, #1
biceq r6, r6, #1
tst r0, #2
biceq r6, r6, #2
b _02032D0C
_02032D04:
mov r6, #0
bl sub_02006BFC
_02032D0C:
cmp r8, #0
strne r6, [r8]
cmp r7, #0
beq _02032D3C
add r8, sp, #0
mov r6, #2
_02032D24:
ldmia r8!, {r0, r1, r2, r3}
stmia r7!, {r0, r1, r2, r3}
subs r6, r6, #1
bne _02032D24
ldr r0, [r8]
str r0, [r7]
_02032D3C:
ldr r0, [sb, #0xc8]
cmp r4, r0
beq _02032D5C
mov r0, sb
mov r1, #4
bl sub_020333D8
mov r0, #1
b _02032DA8
_02032D5C:
ldr r0, [sb, #0xbc]
cmp r5, r0
beq _02032D74
mov r0, sb
mov r1, #3
bl sub_020333D8
_02032D74:
ldr r0, [sb, #0xd8]
cmp r0, #0
ble _02032DA4
subs r0, r0, #1
str r0, [sb, #0xd8]
bne _02032DA4
mvn r0, #0
str r0, [sb, #0xdc]
mov r0, #0
str r0, [sb, #0xe0]
mov r0, #1
b _02032DA8
_02032DA4:
mov r0, #0
_02032DA8:
add sp, sp, #0x24
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
arm_func_end sub_02032BB8
arm_func_start sub_02032DB0
sub_02032DB0: ; 0x02032DB0
ldr r1, [r0, #0xd8]
cmp r1, #0
ble _02032DE0
subs r1, r1, #1
str r1, [r0, #0xd8]
mvneq r1, #0
streq r1, [r0, #0xdc]
moveq r1, #0
streq r1, [r0, #0xe0]
beq _02032DE0
mov r0, #1
bx lr
_02032DE0:
mov r0, #0
bx lr
arm_func_end sub_02032DB0
arm_func_start sub_02032DE8
sub_02032DE8: ; 0x02032DE8
mov r2, #6
str r2, [r0, #0xd8]
sub r2, r2, #7
str r1, [r0, #0xe0]
str r2, [r0, #0xe8]
str r2, [r0, #0xe4]
str r2, [r0, #0xf0]
str r2, [r0, #0xec]
bx lr
arm_func_end sub_02032DE8
arm_func_start sub_02032E0C
sub_02032E0C: ; 0x02032E0C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x10
mov r8, r1
ldrh r1, [r8]
mov r7, r2
mov sb, r0
tst r1, r7
beq _02032F50
cmp r3, #0
ldrge r0, [sb, #8]
ldr r5, [sb, #0xc0]
ldrlt r0, [sb, #0xc]
ldr r1, [sp, #0x30]
add r0, r0, r3
str r0, [sp, #8]
cmp r1, #0
ldrgt r0, [sb, #8]
mov r6, #0
ldrle r0, [sb, #0xc]
add r4, sp, #0
add r0, r0, r1
str r0, [sp, #0xc]
b _02032F48
_02032E68:
ldr r0, [sb, #0xb8]
ldr r2, [sb, #0xb4]
mul r1, r6, r0
mov r0, r1, asr #7
add r0, r1, r0, lsr #24
ldr r1, [sb]
add r0, r2, r0, asr #8
add r0, r1, r0
str r0, [sp]
ldr r0, [sb, #0xb8]
add r1, r6, #1
mul r2, r1, r0
mov r0, r2, asr #7
ldr r1, [sb, #0xb4]
add r0, r2, r0, lsr #24
ldr r2, [sb]
add r0, r1, r0, asr #8
add r0, r2, r0
sub r3, r0, #2
mov r0, r8
mov r1, r7
mov r2, r4
str r3, [sp, #4]
bl sub_02006C8C
cmp r0, #0
beq _02032F44
ldrb r0, [sp, #0x34]
cmp r0, #0
beq _02032F34
mov r0, #6
str r0, [sb, #0xd8]
sub r0, r0, #7
str r0, [sb, #0xdc]
mov r0, #0
str r0, [sb, #0xe0]
ldr r1, [sp, #8]
ldr r0, [sb, #8]
sub r0, r1, r0
str r0, [sb, #0xec]
ldr r1, [sp, #0xc]
ldr r0, [sb, #8]
sub r0, r1, r0
str r0, [sb, #0xf0]
ldr r1, [sp]
ldr r0, [sb]
sub r0, r1, r0
str r0, [sb, #0xe4]
ldr r1, [sp, #4]
ldr r0, [sb]
sub r0, r1, r0
str r0, [sb, #0xe8]
_02032F34:
ldr r1, [sb, #0xc8]
ldr r0, [sb, #0xc4]
mla r0, r1, r0, r6
b _02032F54
_02032F44:
add r6, r6, #1
_02032F48:
cmp r6, r5
blt _02032E68
_02032F50:
mvn r0, #0
_02032F54:
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end sub_02032E0C
arm_func_start sub_02032F5C
sub_02032F5C: ; 0x02032F5C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r1
mov r4, r0
mov r6, r2
mov r5, r3
tst r7, #0x2000
mov r0, #0
beq _02032FA4
ldr r1, [r4, #0x10]
tst r1, #0x40
ldrne r3, [r4, #0x78]
cmpne r3, #0
beq _02032FA4
ldr r0, [r4, #0x7c]
mov r1, r6
mov r2, r5
blx r3
mov r0, #1
_02032FA4:
tst r7, #0x1000
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
ldr r1, [r4, #0x10]
tst r1, #0x80
ldrne r3, [r4, #0x80]
cmpne r3, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
ldr r0, [r4, #0x84]
mov r1, r6
mov r2, r5
blx r3
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_02032F5C
arm_func_start sub_02032FD8
sub_02032FD8: ; 0x02032FD8
stmdb sp!, {r4, lr}
mov r4, r0
ldr r1, [r4, #0x10]
tst r1, #1
beq _0203304C
tst r1, #0x8000000
bne _0203304C
tst r1, #0x200
beq _02033044
bl sub_02033414
cmp r0, #0
bne _02033028
mov r0, r4
bl sub_02033064
ldr r1, [r4, #0xac]
ldrb r0, [r1, r0]
tst r0, #1
bne _0203304C
mov r0, #1
ldmia sp!, {r4, pc}
_02033028:
ldr r0, [r4, #0xac]
ldrb r0, [r0, #0x7f]
tst r0, #1
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r4, pc}
_02033044:
mov r0, #1
ldmia sp!, {r4, pc}
_0203304C:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end sub_02032FD8
arm_func_start sub_02033054
sub_02033054: ; 0x02033054
ldr r1, [r0, #0xc8]
ldr r0, [r0, #0xc4]
mul r0, r1, r0
bx lr
arm_func_end sub_02033054
arm_func_start sub_02033064
sub_02033064: ; 0x02033064
ldr r2, [r0, #0xbc]
ldr r1, [r0, #0xc8]
ldr r0, [r0, #0xc4]
mla r0, r1, r0, r2
bx lr
arm_func_end sub_02033064
arm_func_start sub_02033078
sub_02033078: ; 0x02033078
mov r1, #1
strb r1, [r0, #0xd4]
ldr r1, [r0, #0xc0]
cmp r1, #0
movle r1, #0
strle r1, [r0, #0xbc]
bxle lr
ldr r1, [r0, #0xbc]
add r2, r1, #1
str r2, [r0, #0xbc]
ldr r1, [r0, #0xc0]
cmp r2, r1
movge r1, #0
strge r1, [r0, #0xbc]
bx lr
arm_func_end sub_02033078
arm_func_start sub_020330B4
sub_020330B4: ; 0x020330B4
mov r1, #1
strb r1, [r0, #0xd4]
ldr r1, [r0, #0xc0]
cmp r1, #0
movle r1, #0
strle r1, [r0, #0xbc]
bxle lr
ldr r1, [r0, #0xbc]
subs r1, r1, #1
str r1, [r0, #0xbc]
ldrmi r1, [r0, #0xc0]
submi r1, r1, #1
strmi r1, [r0, #0xbc]
bx lr
arm_func_end sub_020330B4
arm_func_start sub_020330EC
sub_020330EC: ; 0x020330EC
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
mov r0, #1
strb r0, [r4, #0xd4]
movs r5, r1
ldr r0, [r4, #0x10]
movmi r5, #0
tst r0, #0x8000
beq _02033194
ldr r1, [r4, #0xd0]
cmp r5, r1
blt _02033168
ldrb r0, [r4, #0xd5]
cmp r0, #0
beq _02033140
ldr r1, [r4, #0xcc]
mov r0, #0
sub r1, r1, #1
str r1, [r4, #0xc8]
str r0, [r4, #0xbc]
b _02033188
_02033140:
sub r5, r1, #1
ldr r1, [r4, #0xc4]
mov r0, r5
bl _s32_div_f
str r0, [r4, #0xc8]
ldr r1, [r4, #0xc4]
mov r0, r5
bl _s32_div_f
str r1, [r4, #0xbc]
b _02033188
_02033168:
ldr r1, [r4, #0xc4]
mov r0, r5
bl _s32_div_f
str r0, [r4, #0xc8]
ldr r1, [r4, #0xc4]
mov r0, r5
bl _s32_div_f
str r1, [r4, #0xbc]
_02033188:
mov r0, r4
bl sub_020331D4
ldmia sp!, {r3, r4, r5, pc}
_02033194:
ldr r0, [r4, #0xc0]
cmp r5, r0
subge r0, r0, #1
strge r0, [r4, #0xbc]
strlt r5, [r4, #0xbc]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020330EC
arm_func_start sub_020331AC
sub_020331AC: ; 0x020331AC
stmdb sp!, {r4, lr}
mov r4, r0
str r1, [r4, #0xd0]
bl sub_020331D4
mov r0, r4
bl sub_02033064
mov r1, r0
mov r0, r4
bl sub_020330EC
ldmia sp!, {r4, pc}
arm_func_end sub_020331AC
arm_func_start sub_020331D4
sub_020331D4: ; 0x020331D4
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #0x10]
tst r0, #0x8000
ldmeqia sp!, {r4, pc}
ldr r1, [r4, #0xc4]
ldr r0, [r4, #0xd0]
add r0, r0, r1
sub r0, r0, #1
bl _s32_div_f
str r0, [r4, #0xcc]
ldrb r0, [r4, #0xd5]
cmp r0, #0
ldrne r0, [r4, #0xcc]
addne r0, r0, #1
strne r0, [r4, #0xcc]
ldr r1, [r4, #0xcc]
ldr r0, [r4, #0xc8]
sub r1, r1, #1
cmp r0, r1
strge r1, [r4, #0xc8]
ldr r1, [r4, #0xc8]
ldr r0, [r4, #0xc4]
ldr r2, [r4, #0xd0]
mul r0, r1, r0
sub r1, r2, r0
str r1, [r4, #0xc0]
ldr r0, [r4, #0xc4]
cmp r1, r0
strgt r0, [r4, #0xc0]
mov r0, r4
bl sub_02033414
cmp r0, #0
movne r0, #0
strne r0, [r4, #0xbc]
movne r0, #1
strne r0, [r4, #0xc0]
ldmneia sp!, {r4, pc}
ldr r1, [r4, #0xc0]
ldr r0, [r4, #0xbc]
sub r1, r1, #1
cmp r0, r1
strgt r1, [r4, #0xbc]
ldmia sp!, {r4, pc}
arm_func_end sub_020331D4
arm_func_start sub_02033284
sub_02033284: ; 0x02033284
ldr r1, [r0, #0xcc]
ldr r2, [r0, #0xc8]
sub r1, r1, #1
cmp r2, r1
movge r1, #0
addlt r1, r2, #1
ldr ip, _020332A8 ; =sub_020331D4
str r1, [r0, #0xc8]
bx ip
.align 2, 0
_020332A8: .word sub_020331D4
arm_func_end sub_02033284
arm_func_start sub_020332AC
sub_020332AC: ; 0x020332AC
ldr r1, [r0, #0xc8]
ldr ip, _020332C8 ; =sub_020331D4
cmp r1, #0
ldrle r1, [r0, #0xcc]
sub r1, r1, #1
str r1, [r0, #0xc8]
bx ip
.align 2, 0
_020332C8: .word sub_020331D4
arm_func_end sub_020332AC
arm_func_start sub_020332CC
sub_020332CC: ; 0x020332CC
ldr r2, [r0, #0xc8]
ldr r1, [r0, #0xcc]
add r2, r2, #0xa
cmp r2, r1
subge r2, r1, #1
ldr ip, _020332EC ; =sub_020331D4
str r2, [r0, #0xc8]
bx ip
.align 2, 0
_020332EC: .word sub_020331D4
arm_func_end sub_020332CC
arm_func_start sub_020332F0
sub_020332F0: ; 0x020332F0
ldr r1, [r0, #0xc8]
ldr ip, _02033308 ; =sub_020331D4
subs r1, r1, #0xa
movmi r1, #0
str r1, [r0, #0xc8]
bx ip
.align 2, 0
_02033308: .word sub_020331D4
arm_func_end sub_020332F0
arm_func_start sub_0203330C
sub_0203330C: ; 0x0203330C
stmdb sp!, {r4, lr}
mov r4, r0
cmp r1, #0
ble _0203332C
mov r0, r1, lsl #8
ldr r1, [r4, #0xc4]
bl _s32_div_f
b _02033348
_0203332C:
ldr r0, [r4, #0xb4]
ldmia r4, {r1, r2}
sub r1, r2, r1
sub r0, r1, r0
ldr r1, [r4, #0xc4]
mov r0, r0, lsl #8
bl _s32_div_f
_02033348:
str r0, [r4, #0xb8]
ldmia sp!, {r4, pc}
arm_func_end sub_0203330C
arm_func_start sub_02033350
sub_02033350: ; 0x02033350
ldr r2, [r0, #0xb8]
ldr r3, [r0, #0xb4]
mul r2, r1, r2
mov r0, r2, asr #7
add r0, r2, r0, lsr #24
add r0, r3, r0, asr #8
bx lr
arm_func_end sub_02033350
arm_func_start sub_0203336C
sub_0203336C: ; 0x0203336C
ldr r1, [r0, #0x10]
tst r1, #0x8000
beq _02033388
ldr r0, [r0, #0xcc]
cmp r0, #1
movgt r0, #1
bxgt lr
_02033388:
mov r0, #0
bx lr
arm_func_end sub_0203336C
arm_func_start sub_02033390
sub_02033390: ; 0x02033390
ldr r1, [r0, #0x10]
tst r1, #0x8000
beq _020333AC
ldr r0, [r0, #0xcc]
cmp r0, #1
movgt r0, #1
bxgt lr
_020333AC:
mov r0, #0
bx lr
arm_func_end sub_02033390
arm_func_start sub_020333B4
sub_020333B4: ; 0x020333B4
ldr r1, [r0, #0x10]
tst r1, #0x8000
beq _020333D0
ldr r0, [r0, #0xcc]
cmp r0, #1
movgt r0, #1
bxgt lr
_020333D0:
mov r0, #0
bx lr
arm_func_end sub_020333B4
arm_func_start sub_020333D8
sub_020333D8: ; 0x020333D8
stmdb sp!, {r3, lr}
ldr r0, [r0, #0x10]
tst r0, #0x10
moveq r0, #0
ldmeqia sp!, {r3, pc}
mov r0, r1
bl PlaySeVolumeWrapper
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end sub_020333D8
arm_func_start sub_020333FC
sub_020333FC: ; 0x020333FC
mvn r1, #0
str r1, [r0, #0xe8]
str r1, [r0, #0xf0]
str r1, [r0, #0xe4]
str r1, [r0, #0xec]
bx lr
arm_func_end sub_020333FC
arm_func_start sub_02033414
sub_02033414: ; 0x02033414
ldrb r1, [r0, #0xd5]
cmp r1, #0
beq _02033438
ldr r1, [r0, #0xc8]
ldr r2, [r0, #0xcc]
add r0, r1, #1
cmp r2, r0
moveq r0, #1
bxeq lr
_02033438:
mov r0, #0
bx lr
arm_func_end sub_02033414
arm_func_start sub_02033440
sub_02033440: ; 0x02033440
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x104
mov r5, r0
tst r5, #0x800
mov r4, #0
beq _02033498
ldrh r2, [r1, #8]
cmp r2, #0
moveq r0, r4
beq _02033488
ldr r3, _020334A4 ; =0x0000C402
add ip, r1, #0x10
add r0, sp, #4
mov r1, #0x100
str ip, [sp]
bl PreprocessStringFromId
add r0, sp, #4
bl sub_020265A8
_02033488:
tst r5, #0x8000
addne r0, r0, #0x40
cmp r0, #0
movgt r4, r0
_02033498:
mov r0, r4
add sp, sp, #0x104
ldmia sp!, {r4, r5, pc}
.align 2, 0
_020334A4: .word 0x0000C402
arm_func_end sub_02033440
arm_func_start sub_020334A8
sub_020334A8: ; 0x020334A8
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x154
mov r5, r0
ldr r0, [r5, #0x10]
mov r4, r1
tst r0, #0x800
beq _02033598
ldrh r2, [r5, #0x1c]
cmp r2, #0
beq _020334FC
ldr r3, _020335A0 ; =0x0000C402
add ip, r5, #0x24
add r0, sp, #0x54
mov r1, #0x100
str ip, [sp]
bl PreprocessStringFromId
add r3, sp, #0x54
mov r0, r4
mov r1, #8
mov r2, #0
bl DrawTextInWindow
_020334FC:
mov r0, #0x17
str r0, [sp]
ldr r2, [r5, #0xc]
ldr r1, [r5, #8]
mov r0, r4
sub r1, r2, r1
sub r3, r1, #4
mov r1, #2
mov r2, #0xd
bl sub_02025D50
mov r0, r5
bl sub_020328F4
cmp r0, #0
beq _02033598
mov r0, r5
bl GetCurrentPage
add r1, r0, #1
mov r0, r5
str r1, [sp, #0x28]
bl GetTotalNumPages
str r0, [sp, #0x2c]
add r1, sp, #4
str r1, [sp]
ldr r2, _020335A4 ; =_0209AFC4
ldr r3, _020335A0 ; =0x0000C402
add r0, sp, #0x54
mov r1, #0x100
bl PreprocessString
add r0, sp, #0x54
bl sub_020265A8
mov ip, r0
ldr r3, [r5, #0xc]
ldr r1, [r5, #8]
mov r0, r4
sub r1, r3, r1
mov r2, #0
sub r1, r1, ip
add r3, sp, #0x54
bl DrawTextInWindow
_02033598:
add sp, sp, #0x154
ldmia sp!, {r4, r5, pc}
.align 2, 0
_020335A0: .word 0x0000C402
_020335A4: .word _0209AFC4
arm_func_end sub_020334A8
arm_func_start sub_020335A8
sub_020335A8: ; 0x020335A8
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x154
mov r5, r0
ldr r2, [r5, #0x10]
mov r4, r1
tst r2, #0x800
beq _020336E8
bl sub_02033414
cmp r0, #0
beq _02033610
ldr r3, _020336F0 ; =0x000008E3
mov r0, r4
mov r1, #8
mov r2, #0
bl sub_02026268
mov r0, #0x17
str r0, [sp]
ldr r2, [r5, #0xc]
ldr r1, [r5, #8]
mov r0, r4
sub r1, r2, r1
sub r3, r1, #4
mov r1, #2
mov r2, #0xd
bl sub_02025D50
b _020336E8
_02033610:
add r0, r5, #0x24
str r0, [sp]
ldrh r2, [r5, #0x1c]
ldr r3, _020336F4 ; =0x0000C402
add r0, sp, #0x54
mov r1, #0x100
bl PreprocessStringFromId
add r3, sp, #0x54
mov r0, r4
mov r1, #8
mov r2, #0
bl DrawTextInWindow
mov r0, #0x17
str r0, [sp]
ldr r2, [r5, #0xc]
ldr r1, [r5, #8]
mov r0, r4
sub r1, r2, r1
sub r3, r1, #4
mov r1, #2
mov r2, #0xd
bl sub_02025D50
mov r0, r5
bl sub_0203336C
cmp r0, #0
beq _020336E8
ldr r0, [r5, #0xc8]
ldr r2, _020336F8 ; =_0209AFC4
add r0, r0, #1
str r0, [sp, #0x28]
ldrb r0, [r5, #0xd5]
ldr r3, _020336F4 ; =0x0000C402
add ip, sp, #4
cmp r0, #0
movne r1, #1
ldr r0, [r5, #0xcc]
moveq r1, #0
sub r0, r0, r1
str r0, [sp, #0x2c]
add r0, sp, #0x54
mov r1, #0x100
str ip, [sp]
bl PreprocessString
add r0, sp, #0x54
bl sub_020265A8
mov r2, r0
ldr r1, [r5, #0xc]
ldr r0, [r5, #8]
add r3, sp, #0x54
sub r1, r1, r0
sub r1, r1, r2
mov r0, r4
mov r2, #0
bl DrawTextInWindow
_020336E8:
add sp, sp, #0x154
ldmia sp!, {r4, r5, pc}
.align 2, 0
#ifdef JAPAN
_020336F0: .word 0x00001D3B
#else
_020336F0: .word 0x000008E3
#endif
_020336F4: .word 0x0000C402
_020336F8: .word _0209AFC4
arm_func_end sub_020335A8
arm_func_start sub_020336FC
sub_020336FC: ; 0x020336FC
tst r0, #0x1000
mov r1, #0
beq _02033750
mov r2, #4
tst r0, #0x2000
addne r2, r2, #0x12
tst r0, #0x4000
addne r2, r2, #0x14
tst r0, #0x20000
addne r2, r2, #0x1f
bne _02033738
tst r0, #0x8000
addne r2, r2, #0x3e
tst r0, #8
addne r2, r2, #0x1f
_02033738:
tst r0, #4
addne r2, r2, #0x12
tst r0, #2
addne r2, r2, #0x12
cmp r2, #0
movgt r1, r2
_02033750:
mov r0, r1
bx lr
arm_func_end sub_020336FC
arm_func_start sub_02033758
sub_02033758: ; 0x02033758
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x10
mov sb, r0
ldrb r0, [sb, #0xf4]
mov r8, r1
ldr r1, [sb, #0x10]
cmp r0, #0
ldrne r0, _02033BBC ; =0x00001002
mov r7, r2
moveq r0, #2
mov r0, r0, lsl #0x10
mov r4, #0
tst r1, #0x1000
mov r5, r0, lsr #0x10
beq _02033B98
ldrh r0, [r7]
tst r0, r5
beq _02033B98
ldmib sb, {r0, r1}
sub r0, r0, #0xf
str r0, [sp]
ldr r0, [sb, #4]
add r6, r1, #4
sub r0, r0, #2
str r0, [sp, #4]
ldr r0, [sb, #0x10]
tst r0, #0x2000
beq _0203380C
mov r0, #0x12
str r6, [sp, #8]
bl sub_02026594
add r0, r6, r0
sub r3, r0, #1
add r2, sp, #0
mov r0, r7
mov r1, r5
str r3, [sp, #0xc]
bl sub_02006C8C
cmp r0, #0
ldrne r0, [r8]
movne r4, #1
orrne r0, r0, #0x1000
orrne r0, r0, #0x1000000
strne r0, [r8]
add r6, r6, #0x12
_0203380C:
ldr r0, [sb, #0x10]
tst r0, #0x4000
beq _0203385C
mov r0, #0x13
str r6, [sp, #8]
bl sub_02026594
add r0, r6, r0
sub r3, r0, #1
add r2, sp, #0
mov r0, r7
mov r1, r5
str r3, [sp, #0xc]
bl sub_02006C8C
cmp r0, #0
ldrne r0, [r8]
movne r4, #1
orrne r0, r0, #0x2000
orrne r0, r0, #0x2000000
strne r0, [r8]
add r6, r6, #0x14
_0203385C:
ldr r0, [sb, #0x10]
tst r0, #0x8000
beq _020339C8
tst r0, #0x20000
bne _020339C8
mov r0, sb
bl sub_020328F4
cmp r0, #0
beq _020339C4
add r0, r6, #0xb
str r6, [sp, #8]
str r0, [sp, #0xc]
ldr r0, [sb, #0x10]
tst r0, #0x10000
beq _020338D4
add r2, sp, #0
mov r0, r7
mov r1, r5
bl sub_02006C8C
cmp r0, #0
beq _020338D4
mov r0, sb
bl sub_02032864
mov r0, sb
mov r1, #4
bl PlayWindowInputSound
ldr r0, [r8]
mov r4, #1
orr r0, r0, #0x400000
str r0, [r8]
_020338D4:
add r1, r6, #0xe
add r0, r6, #0x19
str r1, [sp, #8]
str r0, [sp, #0xc]
ldr r0, [sb, #0x10]
tst r0, #0x10000
beq _0203392C
add r2, sp, #0
mov r0, r7
mov r1, r5
bl sub_02006C8C
cmp r0, #0
beq _0203392C
mov r0, sb
bl sub_0203282C
mov r0, sb
mov r1, #4
bl PlayWindowInputSound
ldr r0, [r8]
mov r4, #1
orr r0, r0, #0x800000
str r0, [r8]
_0203392C:
add ip, r6, #0x1f
add r3, r6, #0x2a
add r2, sp, #0
mov r0, r7
mov r1, r5
str ip, [sp, #8]
str r3, [sp, #0xc]
bl sub_02006C8C
cmp r0, #0
beq _02033978
mov r0, sb
bl sub_0203280C
mov r0, sb
mov r1, #4
bl PlayWindowInputSound
ldr r0, [r8]
mov r4, #1
orr r0, r0, #0x100000
str r0, [r8]
_02033978:
add ip, r6, #0x2d
add r3, r6, #0x38
add r2, sp, #0
mov r0, r7
mov r1, r5
str ip, [sp, #8]
str r3, [sp, #0xc]
bl sub_02006C8C
cmp r0, #0
beq _020339C4
mov r0, sb
bl sub_020327E4
mov r0, sb
mov r1, #4
bl PlayWindowInputSound
ldr r0, [r8]
mov r4, #1
orr r0, r0, #0x200000
str r0, [r8]
_020339C4:
add r6, r6, #0x3e
_020339C8:
ldr r0, [sb, #0x10]
tst r0, #8
bne _020339EC
tst r0, #0x20000
beq _02033AE0
mov r0, sb
bl sub_020328F4
cmp r0, #0
beq _02033AE0
_020339EC:
add r0, r6, #0xb
str r6, [sp, #8]
str r0, [sp, #0xc]
ldr r0, [sb, #0x10]
tst r0, #0x20000000
bne _02033A64
add r2, sp, #0
mov r0, r7
mov r1, r5
bl sub_02006C8C
cmp r0, #0
beq _02033A64
ldr r0, [r8]
orr r0, r0, #0x40000
str r0, [r8]
ldr r0, [sb, #0x10]
tst r0, #0x20000
mov r0, sb
beq _02033A58
bl sub_020327E4
mov r0, sb
mov r1, #4
bl PlayWindowInputSound
ldr r0, [r8]
orr r0, r0, #0x4000
str r0, [r8]
b _02033A60
_02033A58:
mov r1, #0
bl PlayWindowInputSound
_02033A60:
mov r4, #1
_02033A64:
add r1, r6, #0xe
add r0, r6, #0x19
str r1, [sp, #8]
str r0, [sp, #0xc]
ldr r0, [sb, #0x10]
tst r0, #0x40000000
bne _02033AE0
add r2, sp, #0
mov r0, r7
mov r1, r5
bl sub_02006C8C
cmp r0, #0
beq _02033AE0
ldr r0, [r8]
orr r0, r0, #0x80000
str r0, [r8]
ldr r0, [sb, #0x10]
tst r0, #0x20000
mov r0, sb
beq _02033AD4
bl sub_0203280C
mov r0, sb
mov r1, #4
bl PlayWindowInputSound
ldr r0, [r8]
orr r0, r0, #0x8000
str r0, [r8]
b _02033ADC
_02033AD4:
mov r1, #0
bl PlayWindowInputSound
_02033ADC:
mov r4, #1
_02033AE0:
ldr r1, [sb, #0xc]
ldr r0, [sb, #0x10]
add r6, r1, #4
tst r0, #2
beq _02033B2C
sub r6, r6, #0x12
add r3, r6, #0xb
add r2, sp, #0
mov r0, r7
mov r1, r5
str r6, [sp, #8]
str r3, [sp, #0xc]
bl sub_02006C8C
cmp r0, #0
ldrne r0, [r8]
movne r4, #1
orrne r0, r0, #2
orrne r0, r0, #0x20000
strne r0, [r8]
_02033B2C:
ldr r0, [sb, #0x10]
tst r0, #4
beq _02033B98
sub ip, r6, #0x12
sub r3, r6, #7
add r2, sp, #0
mov r0, r7
mov r1, r5
str ip, [sp, #8]
str r3, [sp, #0xc]
bl sub_02006C8C
cmp r0, #0
beq _02033B98
ldr r0, [sb, #0x10]
tst r0, #0x18000000
ldreq r0, [r8]
orreq r0, r0, #1
orreq r0, r0, #0x10000
streq r0, [r8]
beq _02033B94
ldr r1, [r8]
mov r0, sb
orr r2, r1, #0x10000
mov r1, #2
str r2, [r8]
bl PlayWindowInputSound
_02033B94:
mov r4, #1
_02033B98:
ldr r1, [r8]
cmp r1, #0
beq _02033BB0
mov r0, sb
bl sub_020320C8
mov r4, #1
_02033BB0:
mov r0, r4
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_02033BBC: .word 0x00001002
arm_func_end sub_02033758
arm_func_start sub_02033BC0
sub_02033BC0: ; 0x02033BC0
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #4
mov r8, r0
ldr r0, [r8, #0x10]
mov r7, r1
tst r0, #0x1000
ldr r4, [r8, #0xe0]
beq _02033ECC
ldmia r8, {r1, r2}
mov r0, #0x17
str r0, [sp]
sub r0, r2, r1
sub r5, r0, #0x10
ldr r2, [r8, #0xc]
ldr r1, [r8, #8]
mov r0, r7
sub r1, r2, r1
sub r3, r1, #4
mov r2, r5
mov r1, #2
mov r6, #4
bl sub_02025D50
ldr r0, [r8, #0x10]
tst r0, #0x2000
beq _02033C44
tst r4, #0x1000000
ldrne r3, _02033ED4 ; =_0209AFDC
mov r0, r7
ldreq r3, _02033ED8 ; =_0209AFE4
add r2, r5, #3
mov r1, #4
bl DrawTextInWindow
add r6, r6, #0x12
_02033C44:
ldr r0, [r8, #0x10]
tst r0, #0x4000
beq _02033C70
tst r4, #0x2000000
ldrne r3, _02033EDC ; =_0209AFEC
mov r0, r7
ldreq r3, _02033EE0 ; =_0209AFF4
mov r1, r6
add r2, r5, #3
bl DrawTextInWindow
add r6, r6, #0x14
_02033C70:
ldr r0, [r8, #0x10]
tst r0, #0x8000
beq _02033D74
tst r0, #0x20000
bne _02033D74
mov r0, r8
bl sub_020328F4
cmp r0, #0
beq _02033D70
ldr r0, [r8, #0x10]
tst r0, #0x10000
beq _02033D08
mov r0, r8
bl sub_02032918
cmp r0, #0
bne _02033CB8
tst r4, #0x400000
beq _02033CD4
_02033CB8:
tst r4, #0x400000
ldrne r3, _02033EE4 ; =_0209AFFC
mov r0, r7
ldreq r3, _02033EE8 ; =_0209B004
mov r1, r6
add r2, r5, #3
bl DrawTextInWindow
_02033CD4:
mov r0, r8
bl sub_0203293C
cmp r0, #0
bne _02033CEC
tst r4, #0x800000
beq _02033D08
_02033CEC:
tst r4, #0x800000
ldrne r3, _02033EEC ; =_0209B00C
mov r0, r7
ldreq r3, _02033EF0 ; =_0209B014
add r1, r6, #0xe
add r2, r5, #3
bl DrawTextInWindow
_02033D08:
mov r0, r8
bl sub_02032918
cmp r0, #0
bne _02033D20
tst r4, #0x100000
beq _02033D3C
_02033D20:
tst r4, #0x100000
ldrne r3, _02033EF4 ; =_0209B01C
mov r0, r7
ldreq r3, _02033EF8 ; =_0209B024
add r1, r6, #0x1f
add r2, r5, #3
bl DrawTextInWindow
_02033D3C:
mov r0, r8
bl sub_0203293C
cmp r0, #0
bne _02033D54
tst r4, #0x200000
beq _02033D70
_02033D54:
tst r4, #0x200000
ldrne r3, _02033EFC ; =_0209B02C
mov r0, r7
ldreq r3, _02033F00 ; =_0209B034
add r1, r6, #0x2d
add r2, r5, #3
bl DrawTextInWindow
_02033D70:
add r6, r6, #0x3e
_02033D74:
ldr r1, [r8, #0x10]
ldr r0, _02033F04 ; =0x00020008
tst r1, r0
beq _02033E40
tst r4, #0x40000
beq _02033DA4
ldr r3, _02033F08 ; =_0209B03C
mov r0, r7
mov r1, r6
add r2, r5, #3
bl DrawTextInWindow
b _02033DE0
_02033DA4:
tst r1, #0x20000000
bne _02033DE0
tst r1, #8
bne _02033DCC
tst r1, #0x20000
beq _02033DE0
mov r0, r8
bl sub_02032918
cmp r0, #0
beq _02033DE0
_02033DCC:
ldr r3, _02033F0C ; =_0209B044
mov r0, r7
mov r1, r6
add r2, r5, #3
bl DrawTextInWindow
_02033DE0:
tst r4, #0x80000
beq _02033E00
ldr r3, _02033F10 ; =_0209B04C
mov r0, r7
add r1, r6, #0xe
add r2, r5, #3
bl DrawTextInWindow
b _02033E40
_02033E00:
ldr r0, [r8, #0x10]
tst r0, #0x40000000
bne _02033E40
tst r0, #8
bne _02033E2C
tst r0, #0x20000
beq _02033E40
mov r0, r8
bl sub_0203293C
cmp r0, #0
beq _02033E40
_02033E2C:
ldr r3, _02033F14 ; =_0209B054
mov r0, r7
add r1, r6, #0xe
add r2, r5, #3
bl DrawTextInWindow
_02033E40:
ldr r2, [r8, #0xc]
ldr r1, [r8, #8]
ldr r0, [r8, #0x10]
sub r1, r2, r1
tst r0, #2
add r6, r1, #4
beq _02033E7C
tst r4, #0x20000
ldrne r3, _02033F18 ; =_0209B05C
sub r6, r6, #0x12
ldreq r3, _02033F1C ; =_0209B064
mov r0, r7
mov r1, r6
add r2, r5, #3
bl DrawTextInWindow
_02033E7C:
ldr r0, [r8, #0x10]
tst r0, #4
beq _02033ECC
tst r0, #0x18000000
beq _02033EB0
tst r4, #0x10000
ldrne r3, _02033F20 ; =_0209B06C
mov r0, r7
ldreq r3, _02033F24 ; =_0209B074
sub r1, r6, #0x12
add r2, r5, #3
bl DrawTextInWindow
b _02033ECC
_02033EB0:
tst r4, #0x10000
ldrne r3, _02033F28 ; =_0209B07C
mov r0, r7
ldreq r3, _02033F2C ; =_0209B084
sub r1, r6, #0x12
add r2, r5, #3
bl DrawTextInWindow
_02033ECC:
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_02033ED4: .word _0209AFDC
_02033ED8: .word _0209AFE4
_02033EDC: .word _0209AFEC
_02033EE0: .word _0209AFF4
_02033EE4: .word _0209AFFC
_02033EE8: .word _0209B004
_02033EEC: .word _0209B00C
_02033EF0: .word _0209B014
_02033EF4: .word _0209B01C
_02033EF8: .word _0209B024
_02033EFC: .word _0209B02C
_02033F00: .word _0209B034
_02033F04: .word 0x00020008
_02033F08: .word _0209B03C
_02033F0C: .word _0209B044
_02033F10: .word _0209B04C
_02033F14: .word _0209B054
_02033F18: .word _0209B05C
_02033F1C: .word _0209B064
_02033F20: .word _0209B06C
_02033F24: .word _0209B074
_02033F28: .word _0209B07C
_02033F2C: .word _0209B084
arm_func_end sub_02033BC0
arm_func_start sub_02033F30
sub_02033F30: ; 0x02033F30
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
mov r8, r0
ldr r0, [r8, #0x10]
mov r7, r1
mov r6, r2
tst r0, #0x1000
mov r4, #0
beq _0203433C
ldrh r0, [r6]
tst r0, #2
beq _0203433C
ldmib r8, {r0, r1}
sub r0, r0, #0xf
str r0, [sp]
ldr r0, [r8, #4]
add r5, r1, #4
sub r0, r0, #2
str r0, [sp, #4]
ldr r0, [r8, #0x10]
tst r0, #0x2000
beq _02033FC8
mov r0, #0x12
str r5, [sp, #8]
bl sub_02026594
add r0, r5, r0
sub r3, r0, #1
add r2, sp, #0
mov r0, r6
mov r1, #2
str r3, [sp, #0xc]
bl sub_02006C8C
cmp r0, #0
ldrne r0, [r7]
movne r4, #1
orrne r0, r0, #0x1000
orrne r0, r0, #0x1000000
strne r0, [r7]
_02033FC8:
ldr r0, [r8, #0x10]
tst r0, #0x4000
beq _0203401C
add r1, r5, #0x12
mov r0, #0x13
str r1, [sp, #8]
bl sub_02026594
add r1, r5, #0x12
add r0, r1, r0
sub r3, r0, #1
add r2, sp, #0
mov r0, r6
mov r1, #2
str r3, [sp, #0xc]
bl sub_02006C8C
cmp r0, #0
ldrne r0, [r7]
movne r4, #1
orrne r0, r0, #0x2000
orrne r0, r0, #0x2000000
strne r0, [r7]
_0203401C:
ldr r0, [r8, #0x10]
add r5, r5, #0x26
tst r0, #0x8000
beq _0203418C
tst r0, #0x20000
bne _0203418C
mov r0, r8
bl sub_0203336C
cmp r0, #0
beq _02034188
add r0, r5, #0xb
str r5, [sp, #8]
str r0, [sp, #0xc]
ldr r0, [r8, #0x10]
tst r0, #0x10000
beq _02034098
add r2, sp, #0
mov r0, r6
mov r1, #2
bl sub_02006C8C
cmp r0, #0
beq _02034098
mov r0, r8
bl sub_020332F0
mov r0, r8
mov r1, #4
bl sub_020333D8
ldr r0, [r7]
mov r4, #1
orr r0, r0, #0x400000
str r0, [r7]
_02034098:
add r1, r5, #0xe
add r0, r5, #0x19
str r1, [sp, #8]
str r0, [sp, #0xc]
ldr r0, [r8, #0x10]
tst r0, #0x10000
beq _020340F0
add r2, sp, #0
mov r0, r6
mov r1, #2
bl sub_02006C8C
cmp r0, #0
beq _020340F0
mov r0, r8
bl sub_020332CC
mov r0, r8
mov r1, #4
bl sub_020333D8
ldr r0, [r7]
mov r4, #1
orr r0, r0, #0x800000
str r0, [r7]
_020340F0:
add ip, r5, #0x1f
add r3, r5, #0x2a
add r2, sp, #0
mov r0, r6
mov r1, #2
str ip, [sp, #8]
str r3, [sp, #0xc]
bl sub_02006C8C
cmp r0, #0
beq _0203413C
mov r0, r8
bl sub_020332AC
mov r0, r8
mov r1, #4
bl sub_020333D8
ldr r0, [r7]
mov r4, #1
orr r0, r0, #0x100000
str r0, [r7]
_0203413C:
add ip, r5, #0x2d
add r3, r5, #0x38
add r2, sp, #0
mov r0, r6
mov r1, #2
str ip, [sp, #8]
str r3, [sp, #0xc]
bl sub_02006C8C
cmp r0, #0
beq _02034188
mov r0, r8
bl sub_02033284
mov r0, r8
mov r1, #4
bl sub_020333D8
ldr r0, [r7]
mov r4, #1
orr r0, r0, #0x200000
str r0, [r7]
_02034188:
add r5, r5, #0x3e
_0203418C:
ldr r1, [r8, #0x10]
ands r0, r1, #8
beq _020342AC
cmp r0, #0
bne _020341B8
tst r1, #0x20000
beq _020342AC
mov r0, r8
bl sub_0203336C
cmp r0, #0
beq _020342AC
_020341B8:
add r0, r5, #0xb
str r5, [sp, #8]
str r0, [sp, #0xc]
ldr r0, [r8, #0x10]
tst r0, #0x40000000
bne _02034230
add r2, sp, #0
mov r0, r6
mov r1, #2
bl sub_02006C8C
cmp r0, #0
beq _02034230
ldr r0, [r7]
orr r0, r0, #0x40000
str r0, [r7]
ldr r0, [r8, #0x10]
tst r0, #0x20000
mov r0, r8
beq _02034224
bl sub_020332AC
mov r0, r8
mov r1, #4
bl sub_020333D8
ldr r0, [r7]
orr r0, r0, #0x4000
str r0, [r7]
b _0203422C
_02034224:
mov r1, #0
bl sub_020333D8
_0203422C:
mov r4, #1
_02034230:
add r1, r5, #0xe
add r0, r5, #0x19
str r1, [sp, #8]
str r0, [sp, #0xc]
ldr r0, [r8, #0x10]
tst r0, #0x20000000
bne _020342AC
add r2, sp, #0
mov r0, r6
mov r1, #2
bl sub_02006C8C
cmp r0, #0
beq _020342AC
ldr r0, [r7]
orr r0, r0, #0x80000
str r0, [r7]
ldr r0, [r8, #0x10]
tst r0, #0x20000
mov r0, r8
beq _020342A0
bl sub_02033284
mov r0, r8
mov r1, #4
bl sub_020333D8
ldr r0, [r7]
orr r0, r0, #0x8000
str r0, [r7]
b _020342A8
_020342A0:
mov r1, #0
bl sub_020333D8
_020342A8:
mov r4, #1
_020342AC:
ldr r1, [r8, #0xc]
ldr r0, [r8, #0x10]
add r5, r1, #4
tst r0, #2
beq _020342F8
sub r5, r5, #0x12
add r3, r5, #0xb
add r2, sp, #0
mov r0, r6
mov r1, #2
str r5, [sp, #8]
str r3, [sp, #0xc]
bl sub_02006C8C
cmp r0, #0
ldrne r0, [r7]
movne r4, #1
orrne r0, r0, #2
orrne r0, r0, #0x20000
strne r0, [r7]
_020342F8:
ldr r0, [r8, #0x10]
tst r0, #4
beq _0203433C
sub ip, r5, #0x12
sub r3, r5, #7
add r2, sp, #0
mov r0, r6
mov r1, #2
str ip, [sp, #8]
str r3, [sp, #0xc]
bl sub_02006C8C
cmp r0, #0
ldrne r0, [r7]
movne r4, #1
orrne r0, r0, #1
orrne r0, r0, #0x10000
strne r0, [r7]
_0203433C:
ldr r1, [r7]
cmp r1, #0
beq _02034354
mov r0, r8
bl sub_02032DE8
mov r4, #1
_02034354:
mov r0, r4
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end sub_02033F30
arm_func_start sub_02034360
sub_02034360: ; 0x02034360
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #4
mov r8, r0
ldr r0, [r8, #0x10]
mov r7, r1
tst r0, #0x1000
ldr r4, [r8, #0xe0]
beq _02034660
ldmia r8, {r1, r2}
mov r0, #0x17
str r0, [sp]
sub r0, r2, r1
sub r5, r0, #0x10
ldr r2, [r8, #0xc]
ldr r1, [r8, #8]
mov r0, r7
sub r1, r2, r1
sub r3, r1, #4
mov r2, r5
mov r1, #2
mov r6, #4
bl sub_02025D50
ldr r0, [r8, #0x10]
tst r0, #0x2000
beq _020343E0
tst r4, #0x1000000
ldrne r3, _02034668 ; =_0209AFDC
mov r0, r7
ldreq r3, _0203466C ; =_0209AFE4
add r2, r5, #3
mov r1, #4
bl DrawTextInWindow
_020343E0:
ldr r0, [r8, #0x10]
tst r0, #0x4000
beq _02034408
tst r4, #0x2000000
ldrne r3, _02034670 ; =_0209AFEC
mov r0, r7
ldreq r3, _02034674 ; =_0209AFF4
add r2, r5, #3
mov r1, #0x16
bl DrawTextInWindow
_02034408:
ldr r0, [r8, #0x10]
add r6, r6, #0x26
tst r0, #0x8000
beq _02034510
tst r0, #0x20000
bne _02034510
mov r0, r8
bl sub_0203336C
cmp r0, #0
beq _0203450C
ldr r0, [r8, #0x10]
tst r0, #0x10000
beq _020344A4
mov r0, r8
bl sub_02033390
cmp r0, #0
bne _02034454
tst r4, #0x400000
beq _02034470
_02034454:
tst r4, #0x400000
ldrne r3, _02034678 ; =_0209AFFC
mov r0, r7
ldreq r3, _0203467C ; =_0209B004
mov r1, r6
add r2, r5, #3
bl DrawTextInWindow
_02034470:
mov r0, r8
bl sub_020333B4
cmp r0, #0
bne _02034488
tst r4, #0x800000
beq _020344A4
_02034488:
tst r4, #0x800000
ldrne r3, _02034680 ; =_0209B00C
mov r0, r7
ldreq r3, _02034684 ; =_0209B014
add r1, r6, #0xe
add r2, r5, #3
bl DrawTextInWindow
_020344A4:
mov r0, r8
bl sub_02033390
cmp r0, #0
bne _020344BC
tst r4, #0x100000
beq _020344D8
_020344BC:
tst r4, #0x100000
ldrne r3, _02034688 ; =_0209B01C
mov r0, r7
ldreq r3, _0203468C ; =_0209B024
add r1, r6, #0x1f
add r2, r5, #3
bl DrawTextInWindow
_020344D8:
mov r0, r8
bl sub_020333B4
cmp r0, #0
bne _020344F0
tst r4, #0x200000
beq _0203450C
_020344F0:
tst r4, #0x200000
ldrne r3, _02034690 ; =_0209B02C
mov r0, r7
ldreq r3, _02034694 ; =_0209B034
add r1, r6, #0x2d
add r2, r5, #3
bl DrawTextInWindow
_0203450C:
add r6, r6, #0x3e
_02034510:
ldr r1, [r8, #0x10]
ldr r0, _02034698 ; =0x00020008
tst r1, r0
beq _020345DC
tst r4, #0x40000
beq _02034540
ldr r3, _0203469C ; =_0209B03C
mov r0, r7
mov r1, r6
add r2, r5, #3
bl DrawTextInWindow
b _0203457C
_02034540:
tst r1, #0x20000000
bne _0203457C
tst r1, #8
bne _02034568
tst r1, #0x20000
beq _0203457C
mov r0, r8
bl sub_02033390
cmp r0, #0
beq _0203457C
_02034568:
ldr r3, _020346A0 ; =_0209B044
mov r0, r7
mov r1, r6
add r2, r5, #3
bl DrawTextInWindow
_0203457C:
tst r4, #0x80000
beq _0203459C
ldr r3, _020346A4 ; =_0209B04C
mov r0, r7
add r1, r6, #0xe
add r2, r5, #3
bl DrawTextInWindow
b _020345DC
_0203459C:
ldr r0, [r8, #0x10]
tst r0, #0x40000000
bne _020345DC
tst r0, #8
bne _020345C8
tst r0, #0x20000
beq _020345DC
mov r0, r8
bl sub_020333B4
cmp r0, #0
beq _020345DC
_020345C8:
ldr r3, _020346A8 ; =_0209B054
mov r0, r7
add r1, r6, #0xe
add r2, r5, #3
bl DrawTextInWindow
_020345DC:
ldr r2, [r8, #0xc]
ldr r1, [r8, #8]
ldr r0, [r8, #0x10]
sub r1, r2, r1
tst r0, #2
add r6, r1, #4
beq _02034618
tst r4, #0x20000
ldrne r3, _020346AC ; =_0209B05C
sub r6, r6, #0x12
ldreq r3, _020346B0 ; =_0209B064
mov r0, r7
mov r1, r6
add r2, r5, #3
bl DrawTextInWindow
_02034618:
ldr r0, [r8, #0x10]
tst r0, #4
beq _02034660
tst r0, #0x18000000
beq _02034644
ldr r3, _020346B4 ; =_0209B074
mov r0, r7
sub r1, r6, #0x12
add r2, r5, #3
bl DrawTextInWindow
b _02034660
_02034644:
tst r4, #0x10000
ldrne r3, _020346B8 ; =_0209B07C
mov r0, r7
ldreq r3, _020346BC ; =_0209B084
sub r1, r6, #0x12
add r2, r5, #3
bl DrawTextInWindow
_02034660:
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_02034668: .word _0209AFDC
_0203466C: .word _0209AFE4
_02034670: .word _0209AFEC
_02034674: .word _0209AFF4
_02034678: .word _0209AFFC
_0203467C: .word _0209B004
_02034680: .word _0209B00C
_02034684: .word _0209B014
_02034688: .word _0209B01C
_0203468C: .word _0209B024
_02034690: .word _0209B02C
_02034694: .word _0209B034
_02034698: .word 0x00020008
_0203469C: .word _0209B03C
_020346A0: .word _0209B044
_020346A4: .word _0209B04C
_020346A8: .word _0209B054
_020346AC: .word _0209B05C
_020346B0: .word _0209B064
_020346B4: .word _0209B074
_020346B8: .word _0209B07C
_020346BC: .word _0209B084
arm_func_end sub_02034360
arm_func_start sub_020346C0
sub_020346C0: ; 0x020346C0
stmdb sp!, {r4, lr}
mov r0, #0xdc
mov r1, #1
bl MemAlloc
mov r4, r0
ldr ip, _02034708 ; =_020AFDB8
ldr r0, _0203470C ; =NULL_OVERLAY_LOAD_ENTRY
str r4, [ip]
add lr, r4, #0xc4
ldmia r0, {r0, r1, r2, r3}
stmia lr, {r0, r1, r2, r3}
mov r1, #0
str r1, [r4, #0xd4]
ldr r0, [ip]
strb r1, [r0, #0xd8]
bl sub_02034710
bl sub_020469BC
ldmia sp!, {r4, pc}
.align 2, 0
_02034708: .word _020AFDB8
_0203470C: .word NULL_OVERLAY_LOAD_ENTRY
arm_func_end sub_020346C0
arm_func_start sub_02034710
sub_02034710: ; 0x02034710
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x10
ldr r1, _02034798 ; =_020AFDB8
ldr r0, _0203479C ; =NULL_OVERLAY_LOAD_ENTRY
ldr r1, [r1]
add r4, r1, #0xc4
mov r1, r4
bl OverlayLoadEntriesEqual
cmp r0, #0
bne _0203473C
bl FreeActiveMenu
_0203473C:
ldr r0, _0203479C ; =NULL_OVERLAY_LOAD_ENTRY
add r7, sp, #0
ldmia r0, {r0, r1, r2, r3}
stmia r7, {r0, r1, r2, r3}
ldr ip, _02034798 ; =_020AFDB8
ldmia r7, {r0, r1, r2, r3}
ldr r5, [ip]
mov r6, #0
stmia r5, {r0, r1, r2, r3}
strb r6, [r5, #0x10]
ldr r5, [ip]
ldmia r7, {r0, r1, r2, r3}
add lr, r5, #0x14
stmia lr, {r0, r1, r2, r3}
str r6, [r5, #0x24]
ldr r0, [ip]
strb r6, [r0, #0xc0]
ldmia r7, {r0, r1, r2, r3}
stmia r4, {r0, r1, r2, r3}
ldr r0, [ip]
str r6, [r0, #0xd4]
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02034798: .word _020AFDB8
_0203479C: .word NULL_OVERLAY_LOAD_ENTRY
arm_func_end sub_02034710
arm_func_start OverlayLoadEntriesEqual
OverlayLoadEntriesEqual: ; 0x020347A0
cmp r0, #0
ldreq r0, _020347EC ; =NULL_OVERLAY_LOAD_ENTRY
cmp r1, #0
ldreq r1, _020347EC ; =NULL_OVERLAY_LOAD_ENTRY
ldr r3, [r0]
ldr r2, [r1]
cmp r3, r2
ldreq r3, [r0, #4]
ldreq r2, [r1, #4]
cmpeq r3, r2
ldreq r3, [r0, #8]
ldreq r2, [r1, #8]
cmpeq r3, r2
ldreq r2, [r0, #0xc]
ldreq r0, [r1, #0xc]
cmpeq r2, r0
moveq r0, #1
movne r0, #0
bx lr
.align 2, 0
_020347EC: .word NULL_OVERLAY_LOAD_ENTRY
arm_func_end OverlayLoadEntriesEqual
arm_func_start FreeActiveMenu
FreeActiveMenu: ; 0x020347F0
stmdb sp!, {r4, lr}
ldr r0, _0203483C ; =_020AFDB8
ldr r4, [r0]
ldr r0, [r4, #0xcc]
cmp r0, #0
beq _0203480C
blx r0
_0203480C:
ldr r0, _0203483C ; =_020AFDB8
ldr r0, [r0]
ldrb r0, [r0, #0xd8]
cmp r0, #0
ldmeqia sp!, {r4, pc}
ldr r0, [r4, #0xc4]
bl UnloadOverlay
ldr r0, _0203483C ; =_020AFDB8
mov r1, #0
ldr r0, [r0]
strb r1, [r0, #0xd8]
ldmia sp!, {r4, pc}
.align 2, 0
_0203483C: .word _020AFDB8
arm_func_end FreeActiveMenu
arm_func_start sub_02034840
sub_02034840: ; 0x02034840
stmdb sp!, {r4, lr}
ldr r1, _020348DC ; =_020AFDB8
mov r4, r0
ldr r2, [r1]
ldrb r1, [r2, #0x10]
cmp r1, #0
beq _02034894
cmp r4, #0
beq _0203487C
add r1, r2, #0x14
bl OverlayLoadEntriesEqual
cmp r0, #0
beq _02034894
mov r0, #1
ldmia sp!, {r4, pc}
_0203487C:
ldr r0, _020348E0 ; =NULL_OVERLAY_LOAD_ENTRY
add r1, r2, #0x14
bl OverlayLoadEntriesEqual
cmp r0, #0
moveq r0, #1
ldmeqia sp!, {r4, pc}
_02034894:
cmp r4, #0
beq _020348B4
ldr r1, _020348DC ; =_020AFDB8
mov r0, r4
ldr r1, [r1]
add r1, r1, #0xc4
bl OverlayLoadEntriesEqual
ldmia sp!, {r4, pc}
_020348B4:
ldr r1, _020348DC ; =_020AFDB8
ldr r0, _020348E0 ; =NULL_OVERLAY_LOAD_ENTRY
ldr r1, [r1]
add r1, r1, #0x14
bl OverlayLoadEntriesEqual
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r4, pc}
.align 2, 0
_020348DC: .word _020AFDB8
_020348E0: .word NULL_OVERLAY_LOAD_ENTRY
arm_func_end sub_02034840