pmd-sky/asm/main_02014D18.s
2026-02-09 12:33:16 -05:00

20841 lines
386 KiB
ArmAsm

.include "asm/macros.inc"
.include "main_02014D18.inc"
.text
arm_func_start IsPunchMove
IsPunchMove: ; 0x02014D18
mov r3, #0
ldr r2, _02014D54 ; =PUNCH_MOVE_LIST
b _02014D3C
_02014D24:
cmp r0, r1
moveq r0, #1
bxeq lr
add r1, r3, #1
mov r1, r1, lsl #0x10
mov r3, r1, asr #0x10
_02014D3C:
mov r1, r3, lsl #1
ldrh r1, [r2, r1]
cmp r1, #0
bne _02014D24
mov r0, #0
bx lr
.align 2, 0
_02014D54: .word PUNCH_MOVE_LIST
arm_func_end IsPunchMove
arm_func_start IsHealingWishOrLunarDance
IsHealingWishOrLunarDance: ; 0x02014D58
ldr r1, _02014D80 ; =0x000001B7
cmp r0, r1
moveq r0, #1
bxeq lr
add r1, r1, #0x57
cmp r0, r1
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_02014D80: .word 0x000001B7
arm_func_end IsHealingWishOrLunarDance
arm_func_start IsCopyingMove
IsCopyingMove: ; 0x02014D84
ldr r1, _02014DB8 ; =0x00000147
cmp r0, r1
moveq r0, #1
bxeq lr
cmp r0, #0x8a
moveq r0, #1
bxeq lr
add r1, r1, #0xc6
cmp r0, r1
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_02014DB8: .word 0x00000147
arm_func_end IsCopyingMove
arm_func_start IsTrappingMove
IsTrappingMove: ; 0x02014DBC
ldr r1, _02014DFC ; =0x00000127
cmp r0, r1
moveq r0, #1
bxeq lr
cmp r0, #0x1f0
moveq r0, #1
bxeq lr
cmp r0, #0x1e0
moveq r0, #1
bxeq lr
add r1, r1, #0x6a
cmp r0, r1
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_02014DFC: .word 0x00000127
arm_func_end IsTrappingMove
arm_func_start IsOneHitKoMove
IsOneHitKoMove: ; 0x02014E00
cmp r0, #0x83
moveq r0, #1
bxeq lr
cmp r0, #0x96
moveq r0, #1
bxeq lr
cmp r0, #0xb1
moveq r0, #1
bxeq lr
cmp r0, #0xf7
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
arm_func_end IsOneHitKoMove
arm_func_start IsNot2TurnsMoveOrSketch
IsNot2TurnsMoveOrSketch: ; 0x02014E38
stmdb sp!, {r4, lr}
mov r4, r0
bl Is2TurnsMove
cmp r0, #0
movne r0, #0
ldmneia sp!, {r4, pc}
cmp r4, #0x8a
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r4, pc}
arm_func_end IsNot2TurnsMoveOrSketch
arm_func_start IsRealMove
IsRealMove: ; 0x02014E64
cmp r0, #0
moveq r0, #0
bxeq lr
ldr r1, _02014EEC ; =0x000001D3
cmp r0, r1
moveq r0, #0
bxeq lr
cmp r0, #0x160
moveq r0, #0
bxeq lr
sub r1, r1, #0x70
cmp r0, r1
blo _02014EA4
cmp r0, #0x168
movlo r0, #0
bxlo lr
_02014EA4:
cmp r0, #0x168
bls _02014EBC
ldr r1, _02014EF0 ; =0x0000018A
cmp r0, r1
movlo r0, #0
bxlo lr
_02014EBC:
ldr r1, _02014EF0 ; =0x0000018A
cmp r0, r1
bls _02014ED8
add r1, r1, #0x23
cmp r0, r1
movls r0, #0
bxls lr
_02014ED8:
ldr r1, _02014EF4 ; =0x0000021F
cmp r0, r1
movhs r0, #0
movlo r0, #1
bx lr
.align 2, 0
_02014EEC: .word 0x000001D3
_02014EF0: .word 0x0000018A
_02014EF4: .word 0x0000021F
arm_func_end IsRealMove
arm_func_start IsMovesetValid
IsMovesetValid: ; 0x02014EF8
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, #0
mov r4, r0
mov r6, r8
mov r7, #1
mov r5, #6
b _02014F54
_02014F14:
smulbb r1, r8, r5
ldrb r0, [r4, r1]
add r1, r4, r1
tst r0, #1
movne r0, r7
moveq r0, r6
tst r0, #0xff
beq _02014F48
ldrh r0, [r1, #2]
bl IsRealMove
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
_02014F48:
add r0, r8, #1
mov r0, r0, lsl #0x10
mov r8, r0, asr #0x10
_02014F54:
cmp r8, #4
blt _02014F14
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end IsMovesetValid
arm_func_start IsRealMoveInTimeDarkness
IsRealMoveInTimeDarkness: ; 0x02014F64
cmp r0, #0
moveq r0, #0
bxeq lr
ldr r1, _02014FF8 ; =0x000001D3
cmp r0, r1
moveq r0, #0
bxeq lr
cmp r0, #0x1d4
moveq r0, #0
bxeq lr
cmp r0, #0x160
moveq r0, #0
bxeq lr
sub r1, r1, #0x70
cmp r0, r1
blo _02014FB0
cmp r0, #0x168
movlo r0, #0
bxlo lr
_02014FB0:
cmp r0, #0x168
bls _02014FC8
ldr r1, _02014FFC ; =0x0000018A
cmp r0, r1
movlo r0, #0
bxlo lr
_02014FC8:
ldr r1, _02014FFC ; =0x0000018A
cmp r0, r1
bls _02014FE4
add r1, r1, #0x23
cmp r0, r1
movls r0, #0
bxls lr
_02014FE4:
ldr r1, _02015000 ; =0x0000021F
cmp r0, r1
movhs r0, #0
movlo r0, #1
bx lr
.align 2, 0
_02014FF8: .word 0x000001D3
_02014FFC: .word 0x0000018A
_02015000: .word 0x0000021F
arm_func_end IsRealMoveInTimeDarkness
arm_func_start IsMovesetValidInTimeDarkness
IsMovesetValidInTimeDarkness: ; 0x02015004
stmdb sp!, {r3, lr}
bl GetFirstNotRealMoveInTimeDarkness
mvn r1, #0
cmp r0, r1
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end IsMovesetValidInTimeDarkness
arm_func_start GetFirstNotRealMoveInTimeDarkness
GetFirstNotRealMoveInTimeDarkness: ; 0x02015024
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, #0
mov r4, r0
mov r6, r8
mov r7, #1
mov r5, #6
b _02015080
_02015040:
smulbb r1, r8, r5
ldrb r0, [r4, r1]
add r1, r4, r1
tst r0, #1
movne r0, r7
moveq r0, r6
tst r0, #0xff
beq _02015074
ldrh r0, [r1, #2]
bl IsRealMoveInTimeDarkness
cmp r0, #0
moveq r0, r8
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
_02015074:
add r0, r8, #1
mov r0, r0, lsl #0x10
mov r8, r0, asr #0x10
_02015080:
cmp r8, #4
blt _02015040
mvn r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end GetFirstNotRealMoveInTimeDarkness
arm_func_start sub_02015090
sub_02015090: ; 0x02015090
stmdb sp!, {r4, r5, r6, lr}
mov r4, #0
mov r6, r0
mov r5, r1
mov lr, r4
mov r2, r4
mov r3, #1
mov r0, #6
b _020150E0
_020150B4:
mul ip, lr, r0
ldrb r1, [r6, ip]
add lr, lr, #1
tst r1, #1
movne r1, r3
moveq r1, r2
tst r1, #0xff
ldrneb r1, [r6, ip]
addne r4, r4, #1
bicne r1, r1, #2
strneb r1, [r6, ip]
_020150E0:
cmp lr, r5
blt _020150B4
bl Rand16Bit
mov r1, r4
bl _s32_div_f
mov r0, #6
mla r0, r1, r0, r6
ldrh r0, [r0, #2]
sub r3, r5, #1
mov r2, #6
b _02015130
_0201510C:
mul r5, r1, r2
add ip, r6, r5
ldrh r4, [ip, #6]
add r1, r1, #1
strh r4, [r6, r5]
ldrh r4, [ip, #8]
strh r4, [ip, #2]
ldrh r4, [ip, #0xa]
strh r4, [ip, #4]
_02015130:
cmp r1, r3
blt _0201510C
mov r1, #6
mul r1, r3, r1
mov r2, #0
strb r2, [r6, r1]
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_02015090
arm_func_start IsSameMove
IsSameMove: ; 0x0201514C
stmdb sp!, {r4, lr}
ldrb r2, [r1]
tst r2, #1
movne r2, #1
moveq r2, #0
tst r2, #0xff
moveq r0, #0
ldmeqia sp!, {r4, pc}
mov r4, #0
mov ip, r4
mov lr, #1
b _020151B8
_0201517C:
ldrb r2, [r0, r4, lsl #3]
tst r2, #1
movne r2, lr
moveq r2, ip
tst r2, #0xff
beq _020151C0
add r2, r0, r4, lsl #3
ldrh r3, [r1, #4]
ldrh r2, [r2, #4]
cmp r3, r2
moveq r0, #1
ldmeqia sp!, {r4, pc}
add r2, r4, #1
mov r2, r2, lsl #0x10
mov r4, r2, asr #0x10
_020151B8:
cmp r4, #4
blt _0201517C
_020151C0:
mov r0, #0
ldmia sp!, {r4, pc}
arm_func_end IsSameMove
arm_func_start GetMoveCategory
GetMoveCategory: ; 0x020151C8
ldr r2, _020151E0 ; =DUNGEON_MOVE_TABLES
mov r1, #0x1a
ldr r2, [r2, #8]
mla r1, r0, r1, r2
ldrb r0, [r1, #3]
bx lr
.align 2, 0
_020151E0: .word DUNGEON_MOVE_TABLES
arm_func_end GetMoveCategory
arm_func_start GetPpIncrease
GetPpIncrease: ; 0x020151E4
stmdb sp!, {r4, r5, r6, lr}
mov r4, r0
mov r0, r1
mov r1, #0x39
mov r6, #0
bl IqSkillFlagTest
cmp r0, #0
orrne r0, r6, #0x100
movne r0, r0, lsl #0x10
movne r6, r0, lsr #0x10
mov r0, r4
mov r1, #0
bl GetAbility
mov r5, r0
mov r0, r4
mov r1, #1
bl GetAbility
mov r3, r0
mov r1, r4
mov r2, r5
mov r0, #0x4a
bl BagHasExclusiveItemTypeForMonster
cmp r0, #0
orrne r0, r6, #0x200
movne r0, r0, lsl #0x10
movne r6, r0, lsr #0x10
mov r0, r4
mov r1, #0
bl GetAbility
mov r5, r0
mov r0, r4
mov r1, #1
bl GetAbility
mov r3, r0
mov r1, r4
mov r2, r5
mov r0, #0x4b
bl BagHasExclusiveItemTypeForMonster
cmp r0, #0
orrne r0, r6, #0x400
movne r0, r0, lsl #0x10
movne r6, r0, lsr #0x10
mov r0, r6
ldmia sp!, {r4, r5, r6, pc}
arm_func_end GetPpIncrease
arm_func_start OpenWaza
OpenWaza: ; 0x02015294
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r1, _020152EC ; =_020AF6E8
mov r4, r0
ldr r0, _020152F0 ; =_020AF700
ldr r1, [r1, r4, lsl #2]
add r0, r0, r4, lsl #3
mov r2, #0
bl LoadFileFromRom
ldr r1, _020152F0 ; =_020AF700
add r0, sp, #0
ldr r1, [r1, r4, lsl #3]
bl HandleSir0Translation
ldr r3, [sp]
ldr r1, _020152F4 ; =_020AF6F8
ldr r2, [r3]
ldr r0, _020152F8 ; =_020AF6F0
str r2, [r1, r4, lsl #2]
ldr r1, [r3, #4]
str r1, [r0, r4, lsl #2]
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
_020152EC: .word _020AF6E8
_020152F0: .word _020AF700
_020152F4: .word _020AF6F8
_020152F8: .word _020AF6F0
arm_func_end OpenWaza
arm_func_start SelectWaza
SelectWaza: ; 0x020152FC
ldr r1, _0201531C ; =_020AF6F8
ldr r2, _02015320 ; =_020AF6F0
ldr r3, [r1, r0, lsl #2]
ldr r1, _02015324 ; =DUNGEON_MOVE_TABLES
ldr r0, [r2, r0, lsl #2]
str r3, [r1, #8]
str r0, [r1]
bx lr
.align 2, 0
_0201531C: .word _020AF6F8
_02015320: .word _020AF6F0
_02015324: .word DUNGEON_MOVE_TABLES
arm_func_end SelectWaza
arm_func_start sub_02015328
sub_02015328: ; 0x02015328
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #8
mov r7, r0
mov r6, r1
mov r0, #0x40
mov r1, #0
mov r5, r2
mov r4, r3
bl MemAlloc
ldr r2, _02015500 ; =_020AF710
mov r1, #0x40
str r0, [r2]
bl MemZero
ldr r0, _02015500 ; =_020AF710
ldr r2, [sp, #0x28]
ldr r1, _02015504 ; =_020AF714
ldr r0, [r0]
ldr r1, [r1, r2, lsl #2]
add r0, r0, #0x1c
mov r2, #0
bl LoadFileFromRom
ldr r0, _02015500 ; =_020AF710
ldr r1, [r0]
add r0, r1, #0x10
ldr r1, [r1, #0x1c]
bl HandleSir0Translation
ldr r0, _02015500 ; =_020AF710
ldr r1, [sp, #0x28]
ldr ip, [r0]
ldrsh r3, [sp, #0x24]
ldr r2, [ip, #0x10]
cmp r1, #2
ldr r2, [r2, #4]
str r2, [ip, #0x2c]
ldr r2, [r0]
str r5, [r2, #8]
ldr r2, [r0]
str r4, [r2, #0xc]
ldr r2, [r0]
strh r3, [r2, #0x30]
mov r2, #0
bne _02015454
ldr r1, _02015508 ; =_02098F60
add r0, sp, #0
bl LoadFileFromRom
ldr r0, _02015500 ; =_020AF710
ldr r1, [sp]
ldr r0, [r0]
add r0, r0, #0x14
bl HandleSir0Translation
ldr r0, _02015500 ; =_020AF710
ldrsh r4, [sp, #0x24]
ldr r0, [r0]
ldr r2, [r0, #0x14]
mov r1, r4
bl sub_0201614C
add r0, sp, #0
bl UnloadFile
ldr r1, _0201550C ; =_02098F78
add r0, sp, #0
mov r2, #0
bl LoadFileFromRom
ldr r0, _02015500 ; =_020AF710
ldr r1, [sp]
ldr r0, [r0]
add r0, r0, #0x14
bl HandleSir0Translation
ldr r0, _02015500 ; =_020AF710
add r1, r4, #1
ldr r0, [r0]
ldr r2, [r0, #0x14]
bl sub_0201614C
add r0, sp, #0
bl UnloadFile
b _020154CC
_02015454:
cmp r1, #1
ldr r0, [r0]
bne _02015470
ldr r1, _02015510 ; =_02098F90
add r0, r0, #0x24
bl LoadFileFromRom
b _0201547C
_02015470:
ldr r1, _02015514 ; =_02098FA8
add r0, r0, #0x24
bl LoadFileFromRom
_0201547C:
ldr r0, _02015500 ; =_020AF710
ldr r0, [r0]
ldr r1, [r0, #0x24]
add r0, r0, #0x14
bl HandleSir0Translation
ldr r0, _02015500 ; =_020AF710
ldrsh r4, [sp, #0x24]
ldr r0, [r0]
ldr r2, [r0, #0x14]
mov r1, r4
bl sub_0201614C
ldr r0, _02015500 ; =_020AF710
ldr r2, _02015518 ; =_020AF720
ldr r0, [r0]
add r1, r4, #1
bl sub_0201614C
ldr r0, _02015500 ; =_020AF710
ldr r0, [r0]
add r0, r0, #0x24
bl UnloadFile
_020154CC:
ldr r0, _02015500 ; =_020AF710
ldrsh r3, [sp, #0x20]
ldr r2, [r0]
mov r1, #0
str r7, [r2]
ldr r2, [r0]
str r6, [r2, #4]
ldr r2, [r0]
strh r3, [r2, #0x32]
ldr r0, [r0]
strb r1, [r0, #0x3c]
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02015500: .word _020AF710
_02015504: .word _020AF714
_02015508: .word _02098F60
_0201550C: .word _02098F78
_02015510: .word _02098F90
_02015514: .word _02098FA8
_02015518: .word _020AF720
arm_func_end sub_02015328
arm_func_start sub_0201551C
sub_0201551C: ; 0x0201551C
stmdb sp!, {r3, lr}
ldr r0, _0201556C ; =_020AF710
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
ldrb r0, [r0, #0x3c]
cmp r0, #0
beq _02015540
bl sub_02015EB4
_02015540:
ldr r0, _0201556C ; =_020AF710
ldr r0, [r0]
add r0, r0, #0x1c
bl UnloadFile
ldr r0, _0201556C ; =_020AF710
ldr r0, [r0]
bl MemFree
ldr r0, _0201556C ; =_020AF710
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0201556C: .word _020AF710
arm_func_end sub_0201551C
arm_func_start sub_02015570
sub_02015570: ; 0x02015570
ldr r0, _02015584 ; =_020AF710
mov r1, #1
ldr r0, [r0]
strb r1, [r0, #0x3c]
bx lr
.align 2, 0
_02015584: .word _020AF710
arm_func_end sub_02015570
arm_func_start sub_02015588
sub_02015588: ; 0x02015588
stmdb sp!, {r3, lr}
sub sp, sp, #8
ldr r0, _020155F4 ; =_020AF710
mov r1, #0x6000
ldr r2, [r0]
ldrsh r0, [r2, #0x32]
ldr r2, [r2]
add r0, r2, r0, lsl #5
bl MemZero32
ldr r0, _020155F4 ; =_020AF710
ldr r0, [r0]
ldr r0, [r0, #4]
cmp r0, #0
beq _020155EC
bl sub_02015EB4
ldr r1, _020155F8 ; =_02098EA8
ldr r0, _020155F4 ; =_020AF710
ldr r2, [r1, #4]
ldr r1, [r1]
ldr r0, [r0]
str r1, [sp]
str r2, [sp, #4]
ldr r0, [r0, #4]
add r1, sp, #0
bl sub_0200B3C0
_020155EC:
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
_020155F4: .word _020AF710
_020155F8: .word _02098EA8
arm_func_end sub_02015588
arm_func_start sub_020155FC
sub_020155FC: ; 0x020155FC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x104
bl StringFromId
mov r8, #0
mov r7, r0
mov sb, r8
mov r6, r8
add r5, sp, #4
mov fp, #0x100
mov r4, r8
_02015624:
ldrb r0, [r7, r8]
cmp r0, #0
beq _02015698
mov r0, r5
mov r1, fp
mov r3, #0x440
str r6, [sp]
add r2, r7, r8
bl PreprocessString
strb r4, [r5, r0]
add r8, r8, r0
ldrb sl, [r7, r8]
cmp sl, #0
beq _02015690
ldr r1, _020156A8 ; =_02098FBC
mov r2, #3
add r0, r7, r8
bl strncmp
cmp r0, #0
bne _02015684
ldr r0, _020156A8 ; =_02098FBC
bl strlen
add r8, r8, r0
b _02015690
_02015684:
cmp sl, #0xd
cmpne sl, #0xa
addeq r8, r8, #1
_02015690:
add sb, sb, #1
b _02015624
_02015698:
mov r0, sb, lsl #0x10
mov r0, r0, asr #0x10
add sp, sp, #0x104
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_020156A8: .word _02098FBC
arm_func_end sub_020155FC
arm_func_start sub_020156AC
sub_020156AC: ; 0x020156AC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #8
cmp r1, #0
beq _02015780
ldr r3, _02015788 ; =_020AF710
mov r2, r0, asr #2
ldr r6, [r3]
add r2, r0, r2, lsr #29
ldrsh r5, [r6, #0x32]
mov r2, r2, asr #3
mov r4, r0, lsr #0x1f
rsb r3, r4, r0, lsl #29
ldr r6, [r6]
add r5, r5, r2, lsl #5
mov r0, #0
add r3, r4, r3, ror #29
add r5, r6, r5, lsl #5
add r3, r5, r3, lsl #2
mov r4, r0
and r5, r1, #0xf
_020156FC:
mov r1, r4, lsl #2
add r4, r4, #1
cmp r4, #8
orr r0, r0, r5, lsl r1
blt _020156FC
mov r1, #0
_02015714:
add r1, r1, #1
cmp r1, #0x20
str r0, [r3], #0x20
blt _02015714
ldr r7, _02015788 ; =_020AF710
mov r6, #0
ldr r0, [r7]
add r4, sp, #0
ldrsh r0, [r0, #0x32]
add r0, r0, r2, lsl #5
mov r0, r0, lsl #0x10
str r2, [sp, #4]
mov r5, r0, asr #0x10
_02015748:
ldr r0, [r7]
str r6, [sp]
ldrsh r2, [r0, #0x30]
ldr r0, [r0, #4]
mov r1, r4
add r2, r2, #1
orr r2, r5, r2, lsl #12
mov r2, r2, lsl #0x10
mov r2, r2, lsr #0x10
bl sub_0200B3FC
add r6, r6, #1
cmp r6, #0x20
add r5, r5, #1
blt _02015748
_02015780:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02015788: .word _020AF710
arm_func_end sub_020156AC
arm_func_start sub_0201578C
sub_0201578C: ; 0x0201578C
#ifdef EUROPE
#define SUB_0201578C_STACK_OFFSET 4
#else
#define SUB_0201578C_STACK_OFFSET 0
#endif
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x2f8
sub sp, sp, #0x400
ldr r5, [sp, #0x720]
mov r4, #0
str r5, [sp, #0x720]
str r0, [sp, #4]
str r1, [sp, #8]
mov r7, r2
str r3, [sp, #0xc]
str r4, [sp, #0x2c + SUB_0201578C_STACK_OFFSET]
_020157B8:
ldr r0, [sp, #0xc]
ldrb r0, [r0, r4]
cmp r0, #0
beq _02015CF8
ldr r1, [sp, #0xc]
add r0, sp, #0x500
mov r5, #0
add r2, r1, r4
add r0, r0, #0xf8
mov r1, #0x100
mov r3, #0x440
str r5, [sp]
bl PreprocessString
add r1, sp, #0x500
add r1, r1, #0xf8
mov r2, r5
strb r2, [r1, r0]
add r4, r4, r0
ldr r0, [sp, #0xc]
ldrb r5, [r0, r4]
cmp r5, #0
beq _02015844
ldr r1, _02015D08 ; =_02098FBC
add r0, r0, r4
mov r2, #3
bl strncmp
cmp r0, #0
bne _02015838
ldr r0, _02015D08 ; =_02098FBC
bl strlen
add r4, r4, r0
b _02015844
_02015838:
cmp r5, #0xd
cmpne r5, #0xa
addeq r4, r4, #1
_02015844:
ldr r0, [sp, #0x720]
cmp r0, #2
bne _0201586C
add r0, sp, #0x500
add r0, r0, #0xf8
bl sub_020161CC
rsb r0, r0, #0x100
add r0, r0, r0, lsr #31
mov r5, r0, asr #1
b _02015888
_0201586C:
cmp r0, #1
ldrne r5, [sp, #8]
bne _02015888
add r0, sp, #0x500
add r0, r0, #0xf8
bl sub_020161CC
rsb r5, r0, #0x100
_02015888:
add r0, r7, #0xa
str r0, [sp, #0x10]
ldr r1, [sp, #0x10]
mov r2, r0, asr #2
mov r3, r0, lsr #0x1f
add r2, r1, r2, lsr #29
rsb r1, r3, r1, lsl #29
add r1, r3, r1, ror #29
mov r0, r7, lsr #0x1f
rsb r3, r0, r7, lsl #29
add r0, r0, r3, ror #29
str r0, [sp, #0x3c + SUB_0201578C_STACK_OFFSET]
mov r0, r2, asr #3
mov r6, r7, asr #2
str r1, [sp, #0x34 + SUB_0201578C_STACK_OFFSET]
add r1, r7, r6, lsr #29
str r0, [sp, #0x30 + SUB_0201578C_STACK_OFFSET]
mov r0, r1, asr #3
add r6, sp, #0x500
str r0, [sp, #0x38 + SUB_0201578C_STACK_OFFSET]
add r6, r6, #0xf8
b _02015CD8
#ifdef EUROPE
_020158E0:
ldrb r0, [r6], #1
cmp r0, #0x23
str r0, [sp, #0x18]
addeq r5, r5, #8
beq _02015CD8
cmp r0, #0x20
addeq r5, r5, #6
beq _02015CD8
cmp r0, #0x5b
bne _02015B14
mov r0, #1
str r6, [sp, #0x44]
str r0, [sp, #0x1c]
mov r1, r0
_020159C0:
ldrb r0, [r6], #1
cmp r0, #0x5d
beq _020159E0
cmp r0, #0x3a
addeq r0, sp, #0x44
streq r6, [r0, r1, lsl #2]
addeq r1, r1, #1
b _020159C0
_020159E0:
ldr r0, [sp, #0x44]
ldr r1, _02015DEC ; =_02099404_EU
bl StrcmpTagVeneer
cmp r0, #0
beq _02015A0C
ldr r0, [sp, #0x48]
bl sub_0202380C_EU
str r0, [sp, #0x18]
mov r0, #0
str r0, [sp, #0x1c]
b _02015B08
_02015A0C:
ldr r0, [sp, #0x44]
ldr r1, _02015D0C ; =_02098FC0
bl StrcmpTagVeneer
cmp r0, #0
beq _02015B08
ldr r0, [sp, #0x48]
bl AtoiTagVeneer
ldr r0, [sp, #0x4c]
bl AtoiTagVeneer
ldr r1, _02015D10 ; =_020AF710
add ip, r5, #2
ldr r1, [r1]
ldr r8, [sp, #0x10]
ldrsh r3, [r1, #0x32]
mov r1, ip, asr #2
add r1, ip, r1, lsr #29
mov r2, r1, asr #3
ldr r1, [sp, #0x34]
mov r0, r0, lsl #0x10
add r1, r2, r1, lsl #5
add r2, r3, r1
ldr r1, [sp, #4]
add r2, r1, r2, lsl #5
ldr r1, [sp, #0x38]
add sb, r2, r1, lsl #2
mov r1, #0
str r1, [sp, #0x20]
_02015A78:
mov sl, sb
mov lr, #0
b _02015AD0
_02015A84:
add r1, ip, lr
mov r2, r1, lsr #0x1f
rsb r1, r2, r1, lsl #29
add r1, r2, r1, ror #29
ldr r2, _02015D14 ; =_02098EE0
add lr, lr, #8
add r3, r2, r1, lsl #4
ldr r1, [r2, r1, lsl #4]
ldr r2, [sl]
ldr fp, [r3, #8]
bic r1, r1, #0
orr r1, r2, r1, lsl fp
str r1, [sl]
ldr r1, [r3, #4]
ldr r2, [sl, #0x20]!
ldr r3, [r3, #0xc]
bic r1, r1, #0
orr r1, r2, r1, lsr r3
str r1, [sl]
_02015AD0:
cmp lr, r0, asr #16
blt _02015A84
add r8, r8, #1
mov r2, r8, lsr #0x1f
rsb r1, r2, r8, lsl #29
adds r1, r2, r1, ror #29
ldr r1, [sp, #0x20]
add sb, sb, #4
add r1, r1, #1
addeq sb, sb, #0x3e0
str r1, [sp, #0x20]
cmp r1, #2
blt _02015A78
add r5, r5, r0, asr #16
_02015B08:
ldr r0, [sp, #0x1c]
cmp r0, #0
bne _02015CD8
_02015B14:
ldr r0, [sp, #0x18]
bl sub_02025480
bl sub_0201628C
mov sl, #0
add r1, sp, #0x400
add r1, r1, #0xd8
ldr r3, [r0]
str r1, [sp, #0x24]
mov r8, sl
mov sb, sl
_02015B3C:
ldrb r2, [r3], #1
add r1, sp, #0x58
add r1, r1, sb
mov fp, r2, asr #4
and ip, fp, #0xf
add fp, sp, #0x58
strb ip, [fp, sb]
and r2, r2, #0xf
add sb, sb, #2
strb r2, [r1, #1]
cmp sb, #0x240
blt _02015B3C
_02015B6C:
cmp r8, #0x240
bge _02015BFC
add r1, sp, #0x58
ldrb r1, [r1, sl]
add r3, sl, #1
mov sl, r3
tst r1, #8
and r1, r1, #7
mov sb, #0
beq _02015BF0
add r2, sp, #0x58
ldrb r2, [r2, r3]
add sl, r3, #1
and r3, r2, #0xff
b _02015BC0
_02015BA8:
add r2, sp, #0x298
strb r3, [r2, r8]
add r8, r8, #1
cmp r8, #0x240
bge _02015B6C
add sb, sb, #1
_02015BC0:
cmp sb, r1
blt _02015BA8
b _02015B6C
_02015BCC:
add r2, sp, #0x58
ldrb r3, [r2, sl]
add r2, sp, #0x298
add sl, sl, #1
strb r3, [r2, r8]
add r8, r8, #1
cmp r8, #0x240
bge _02015B6C
add sb, sb, #1
_02015BF0:
cmp sb, r1
blt _02015BCC
b _02015B6C
_02015BFC:
mov fp, #0
_02015C00:
ldr r1, [sp, #0x24]
str r1, [sp, #0x14]
add r1, r1, #4
str r1, [sp, #0x24]
add r1, sp, #0x298
add ip, r1, fp
ldrb r3, [r1, fp]
ldrb r1, [ip, #2]
ldrb r2, [ip, #1]
and sl, r3, #0xf
mov r1, r1, lsl #8
and r8, r1, #0xf00
ldrb r1, [ip, #5]
mov r2, r2, lsl #4
and sb, r2, #0xf0
mov r1, r1, lsl #0x14
ldrb r3, [ip, #3]
ldrb r2, [ip, #4]
and lr, r1, #0xf00000
ldrb r1, [ip, #7]
ldrb ip, [ip, #6]
mov r2, r2, lsl #0x10
mov r1, r1, lsl #0x1c
mov ip, ip, lsl #0x18
mov r3, r3, lsl #0xc
add fp, fp, #8
and r1, r1, #0xf0000000
and ip, ip, #0xf000000
orr r1, r1, ip
and r2, r2, #0xf0000
orr r1, lr, r1
and r3, r3, #0xf000
orr r1, r2, r1
orr r1, r3, r1
orr r1, r8, r1
orr r1, sb, r1
orr r2, sl, r1
ldr r1, [sp, #0x14]
cmp fp, #0x240
str r2, [r1]
blt _02015C00
ldrb lr, [r0, #6]
ldr r0, _02015D10 ; =_020AF710
add r8, sp, #0x400
ldr r1, [r0]
mov r0, r5, asr #2
add r0, r5, r0, lsr #29
ldrsh r3, [r1, #0x32]
mov r1, r0, asr #3
ldr r0, [sp, #0x3c]
mov r2, r7
add r0, r1, r0, lsl #5
add r1, r3, r0
ldr r0, [sp, #4]
add r8, r8, #0xd8
add r1, r0, r1, lsl #5
ldr r0, [sp, #0x40]
add r3, r1, r0, lsl #2
mov r1, r5, lsr #0x1f
rsb r0, r1, r5, lsl #29
add r1, r1, r0, ror #29
ldr r0, _02015D14 ; =_02098EE0
add sb, r0, r1, lsl #4
mov r0, #0
str r0, [sp, #0x28]
_02015D04:
mov r0, #0
mov sl, r3
str r0, [sp, #0x2c]
_02015D10_EU:
ldr r1, [r8]
cmp r1, #0
beq _02015D4C
ldr r0, [sl]
ldr ip, [sb]
ldr fp, [sb, #8]
and ip, r1, ip
orr r0, r0, ip, lsl fp
str r0, [sl]
ldr ip, [sl, #0x20]
ldr fp, [sb, #4]
ldr r0, [sb, #0xc]
and r1, r1, fp
orr r0, ip, r1, lsr r0
str r0, [sl, #0x20]
_02015D4C:
ldr r0, [sp, #0x2c]
add r8, r8, #4
add r0, r0, #1
add sl, sl, #0x20
str r0, [sp, #0x2c]
cmp r0, #3
blt _02015D10_EU
add r2, r2, #1
mov r1, r2, lsr #0x1f
rsb r0, r1, r2, lsl #29
adds r0, r1, r0, ror #29
ldr r0, [sp, #0x28]
add r3, r3, #4
add r0, r0, #1
addeq r3, r3, #0x3e0
str r0, [sp, #0x28]
cmp r0, #0x18
blt _02015D04
ldr r0, [sp, #0x18]
add r5, r5, lr
cmp r0, #0x7e
#else
_020158E0:
ldrb r8, [r6], #1
cmp r8, #0x23
addeq r5, r5, #8
beq _02015CD8
cmp r8, #0x20
#ifdef JAPAN
addeq r5, r5, #0xc
#else
addeq r5, r5, #6
#endif
beq _02015CD8
cmp r8, #0x5b
bne _02015A2C
str r6, [sp, #0x44]
mov r1, #1
_0201590C:
ldrb r0, [r6], #1
cmp r0, #0x5d
beq _0201592C
cmp r0, #0x3a
addeq r0, sp, #0x44
streq r6, [r0, r1, lsl #2]
addeq r1, r1, #1
b _0201590C
_0201592C:
ldr r0, [sp, #0x44]
ldr r1, _02015D0C ; =_02098FC0
bl StrcmpTagVeneer
cmp r0, #0
beq _02015CD8
ldr r0, [sp, #0x48]
bl AtoiTagVeneer
ldr r0, [sp, #0x4c]
bl AtoiTagVeneer
ldr r1, _02015D10 ; =_020AF710
add ip, r5, #2
ldr r1, [r1]
ldr r8, [sp, #0x10]
ldrsh r3, [r1, #0x32]
mov r1, ip, asr #2
add r1, ip, r1, lsr #29
mov r2, r1, asr #3
ldr r1, [sp, #0x30]
mov r0, r0, lsl #0x10
add r1, r2, r1, lsl #5
add r2, r3, r1
ldr r1, [sp, #4]
add r2, r1, r2, lsl #5
ldr r1, [sp, #0x34]
add sb, r2, r1, lsl #2
mov r1, #0
str r1, [sp, #0x18]
_02015998:
mov sl, sb
mov lr, #0
b _020159F0
_020159A4:
add r1, ip, lr
mov r2, r1, lsr #0x1f
rsb r1, r2, r1, lsl #29
add r1, r2, r1, ror #29
ldr r2, _02015D14 ; =_02098EE0
add lr, lr, #8
add r3, r2, r1, lsl #4
ldr r1, [r2, r1, lsl #4]
ldr r2, [sl]
ldr fp, [r3, #8]
bic r1, r1, #0
orr r1, r2, r1, lsl fp
str r1, [sl]
ldr r1, [r3, #4]
ldr r2, [sl, #0x20]!
ldr r3, [r3, #0xc]
bic r1, r1, #0
orr r1, r2, r1, lsr r3
str r1, [sl]
_020159F0:
cmp lr, r0, asr #16
blt _020159A4
add r8, r8, #1
mov r2, r8, lsr #0x1f
rsb r1, r2, r8, lsl #29
adds r1, r2, r1, ror #29
ldr r1, [sp, #0x18]
add sb, sb, #4
add r1, r1, #1
addeq sb, sb, #0x3e0
str r1, [sp, #0x18]
cmp r1, #2
blt _02015998
add r5, r5, r0, asr #16
b _02015CD8
_02015A2C:
#ifdef JAPAN
tst r8, #0x80
beq _02015A24
ldrb r0, [r6]
cmp r0, #0
orrne r8, r0, r8, lsl #8
ldr r0, _02015D10_JP ; =0x00008140
addne r6, r6, #1
cmp r8, r0
addeq r5, r5, #0xc
beq _02015CD8
_02015A24:
#endif
mov r0, r8
bl sub_02025480
bl sub_0201628C
mov ip, #0
add r1, sp, #0x400
add r1, r1, #0xd8
ldr sb, [r0]
str r1, [sp, #0x1c]
mov sl, ip
mov fp, ip
_02015A54:
ldrb r3, [sb], #1
add r1, sp, #0x58
add lr, r1, fp
mov r1, r3, asr #4
and r2, r1, #0xf
add r1, sp, #0x58
strb r2, [r1, fp]
and r1, r3, #0xf
add fp, fp, #2
strb r1, [lr, #1]
cmp fp, #0x240
blt _02015A54
_02015A84:
cmp sl, #0x240
bge _02015B14
add r1, sp, #0x58
ldrb r1, [r1, ip]
add r3, ip, #1
mov ip, r3
tst r1, #8
and r1, r1, #7
mov sb, #0
beq _02015B08
add r2, sp, #0x58
ldrb r2, [r2, r3]
add ip, r3, #1
and r3, r2, #0xff
b _02015AD8
_02015AC0:
add r2, sp, #0x298
strb r3, [r2, sl]
add sl, sl, #1
cmp sl, #0x240
bge _02015A84
add sb, sb, #1
_02015AD8:
cmp sb, r1
blt _02015AC0
b _02015A84
_02015AE4:
add r2, sp, #0x58
ldrb r3, [r2, ip]
add r2, sp, #0x298
add ip, ip, #1
strb r3, [r2, sl]
add sl, sl, #1
cmp sl, #0x240
bge _02015A84
add sb, sb, #1
_02015B08:
cmp sb, r1
blt _02015AE4
b _02015A84
_02015B14:
mov fp, #0
_02015B18:
ldr r1, [sp, #0x1c]
str r1, [sp, #0x14]
add r1, r1, #4
str r1, [sp, #0x1c]
add r1, sp, #0x298
add ip, r1, fp
ldrb r3, [r1, fp]
ldrb r1, [ip, #2]
ldrb r2, [ip, #1]
and sl, r3, #0xf
mov r1, r1, lsl #8
and r1, r1, #0xf00
str r1, [sp, #0x40]
ldrb r1, [ip, #5]
mov r2, r2, lsl #4
and sb, r2, #0xf0
mov r1, r1, lsl #0x14
ldrb r3, [ip, #3]
ldrb r2, [ip, #4]
and lr, r1, #0xf00000
ldrb r1, [ip, #7]
ldrb ip, [ip, #6]
mov r2, r2, lsl #0x10
mov r1, r1, lsl #0x1c
mov ip, ip, lsl #0x18
mov r3, r3, lsl #0xc
add fp, fp, #8
and r1, r1, #0xf0000000
and ip, ip, #0xf000000
orr r1, r1, ip
and r2, r2, #0xf0000
orr r1, lr, r1
and r3, r3, #0xf000
orr r1, r2, r1
orr r2, r3, r1
ldr r1, [sp, #0x40]
cmp fp, #0x240
orr r1, r1, r2
orr r1, sb, r1
orr r2, sl, r1
ldr r1, [sp, #0x14]
str r2, [r1]
blt _02015B18
ldrb r0, [r0, #6]
add r3, sp, #0x400
mov lr, r7
str r0, [sp, #0x20]
ldr r0, _02015D10 ; =_020AF710
add r3, r3, #0xd8
ldr r1, [r0]
mov r0, r5, asr #2
add r0, r5, r0, lsr #29
ldrsh r2, [r1, #0x32]
mov r1, r0, asr #3
ldr r0, [sp, #0x38]
add r0, r1, r0, lsl #5
add r1, r2, r0
ldr r0, [sp, #4]
add r1, r0, r1, lsl #5
ldr r0, [sp, #0x3c]
add r2, r1, r0, lsl #2
mov r1, r5, lsr #0x1f
rsb r0, r1, r5, lsl #29
add r1, r1, r0, ror #29
ldr r0, _02015D14 ; =_02098EE0
add sb, r0, r1, lsl #4
mov r0, #0
str r0, [sp, #0x24]
_02015C28:
mov r0, #0
mov sl, r2
str r0, [sp, #0x28]
_02015C34:
ldr r1, [r3]
cmp r1, #0
beq _02015C70
ldr r0, [sl]
ldr ip, [sb]
ldr fp, [sb, #8]
and ip, r1, ip
orr r0, r0, ip, lsl fp
str r0, [sl]
ldr ip, [sl, #0x20]
ldr fp, [sb, #4]
ldr r0, [sb, #0xc]
and r1, r1, fp
orr r0, ip, r1, lsr r0
str r0, [sl, #0x20]
_02015C70:
ldr r0, [sp, #0x28]
add r3, r3, #4
add r0, r0, #1
add sl, sl, #0x20
str r0, [sp, #0x28]
cmp r0, #3
blt _02015C34
add lr, lr, #1
mov r1, lr, lsr #0x1f
rsb r0, r1, lr, lsl #29
adds r0, r1, r0, ror #29
ldr r0, [sp, #0x24]
add r2, r2, #4
add r0, r0, #1
addeq r2, r2, #0x3e0
str r0, [sp, #0x24]
cmp r0, #0x18
blt _02015C28
ldr r0, [sp, #0x20]
cmp r8, #0x7e
add r5, r5, r0
#endif
ldreqb r0, [r6]
cmpeq r0, #0x32
ldreqb r0, [r6, #1]
cmpeq r0, #0x37
addeq r6, r6, #2
_02015CD8:
ldrb r0, [r6]
cmp r0, #0
bne _020158E0
ldr r0, [sp, #0x2c + SUB_0201578C_STACK_OFFSET]
add r7, r7, #0x18
add r0, r0, #1
str r0, [sp, #0x2c + SUB_0201578C_STACK_OFFSET]
b _020157B8
_02015CF8:
ldr r0, [sp, #0x2c + SUB_0201578C_STACK_OFFSET]
add sp, sp, #0x2f8
add sp, sp, #0x400
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02015D08: .word _02098FBC
#ifdef EUROPE
_02015DEC: .word _02099404_EU
#endif
_02015D0C: .word _02098FC0
_02015D10: .word _020AF710
_02015D14: .word _02098EE0
#ifdef JAPAN
_02015D10_JP: .word 0x00008140
#endif
arm_func_end sub_0201578C
arm_func_start sub_02015D18
sub_02015D18: ; 0x02015D18
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
mov r5, r1
mov r4, r2
mov r1, #0
mov r6, r4
str r1, [sp, #4]
str r5, [sp, #8]
b _02015D60
_02015D3C:
ldrb r1, [r2], #1
cmp r1, #0x7e
strb r1, [r6], #1
bne _02015D60
ldrb r1, [r2]
cmp r1, #0x32
ldreqb r1, [r2, #1]
cmpeq r1, #0x37
addeq r2, r2, #2
_02015D60:
ldrb r1, [r2]
cmp r1, #0
bne _02015D3C
mov r1, #0
strb r1, [r6]
str r3, [sp]
ldr r2, _02015E40 ; =_020AF710
mov r1, r0
ldr r0, [r2]
mov r2, r5
ldr r0, [r0]
mov r3, r4
bl sub_0201578C
mov r1, r5, asr #2
add r2, r5, r1, lsr #29
mov r7, r0
mov r1, #0x18
mul r0, r7, r1
add r0, r0, r2, asr #3
add r3, r0, #7
mov r0, r3, asr #2
add r0, r3, r0, lsr #29
mov r0, r0, asr #3
mov sb, r2, asr #3
bl _s32_div_f
ldr fp, _02015E40 ; =_020AF710
mov sl, r1
ldr r0, [fp]
mov r4, #0
ldrsh r0, [r0, #0x32]
add r0, r0, sb, lsl #5
mov r0, r0, lsl #0x10
mov r6, r0, asr #0x10
b _02015E2C
_02015DE8:
mov r5, #0
add r8, sb, r4
_02015DF0:
ldr r0, [fp]
str r5, [sp, #4]
str r8, [sp, #8]
ldrsh r2, [r0, #0x30]
ldr r0, [r0, #4]
add r1, sp, #4
orr r2, r6, r2, lsl #12
mov r2, r2, lsl #0x10
mov r2, r2, lsr #0x10
bl sub_0200B3FC
add r5, r5, #1
cmp r5, #0x20
add r6, r6, #1
blt _02015DF0
add r4, r4, #1
_02015E2C:
cmp r4, sl
blt _02015DE8
mov r0, r7
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02015E40: .word _020AF710
arm_func_end sub_02015D18
arm_func_start sub_02015E44
sub_02015E44: ; 0x02015E44
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, r1
bl StringFromId
mov r2, r0
mov r1, r4
mov r0, #0
mov r3, #2
bl sub_02015D18
ldmia sp!, {r4, pc}
arm_func_end sub_02015E44
arm_func_start sub_02015E6C
sub_02015E6C: ; 0x02015E6C
stmdb sp!, {r3, lr}
ldr r0, _02015EB0 ; =_020AF710
ldr r0, [r0]
ldr r0, [r0, #4]
cmp r0, #0
beq _02015E88
bl sub_0200B330
_02015E88:
ldr r0, _02015EB0 ; =_020AF710
ldr r1, [r0]
ldr r0, [r1, #8]
cmp r0, #0
beq _02015EA4
bl sub_0200A174
ldmia sp!, {r3, pc}
_02015EA4:
ldr r0, [r1, #0xc]
bl sub_0200A504
ldmia sp!, {r3, pc}
.align 2, 0
_02015EB0: .word _020AF710
arm_func_end sub_02015E6C
arm_func_start sub_02015EB4
sub_02015EB4: ; 0x02015EB4
stmdb sp!, {r3, lr}
ldr r0, _02015EE4 ; =_020AF710
ldr r0, [r0]
ldr r0, [r0, #4]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl sub_0200B3D4
ldr r0, _02015EE4 ; =_020AF710
ldr r0, [r0]
ldr r0, [r0, #4]
bl sub_0200B330
ldmia sp!, {r3, pc}
.align 2, 0
_02015EE4: .word _020AF710
arm_func_end sub_02015EB4
arm_func_start sub_02015EE8
sub_02015EE8: ; 0x02015EE8
stmdb sp!, {r3, lr}
ldr r1, _02015F14 ; =_020AF710
ldr r2, [r1]
ldr r1, [r2, #8]
cmp r1, #0
ldmneia sp!, {r3, pc}
mov r1, r0, lsl #0x10
ldr r0, [r2, #0xc]
mov r1, r1, lsr #0x10
bl sub_0200A618
ldmia sp!, {r3, pc}
.align 2, 0
_02015F14: .word _020AF710
arm_func_end sub_02015EE8
arm_func_start sub_02015F18
sub_02015F18: ; 0x02015F18
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #4
ldr r4, _02015FD4 ; =_020AF710
mov r6, #0
ldr r0, [r4]
add r5, sp, #0
ldr r0, [r0, #8]
mov r8, #0x10
cmp r0, #0
beq _02015F88
ldr r7, _02015FD8 ; =_020AFC70
_02015F44:
ldr r0, [r4]
mov r2, r6, lsl #0x10
ldr r0, [r0, #8]
mov r1, r5
mov r2, r2, lsr #0x10
bl sub_0200A2B4
ldr r0, [r7]
mov r3, r6, lsl #0x10
mov r1, r5
mov r2, r8
add r0, r0, #0xcc
mov r3, r3, asr #0x10
bl sub_0201E380
add r6, r6, #1
cmp r6, #0x100
blt _02015F44
b _02015FCC
_02015F88:
ldr r7, _02015FD8 ; =_020AFC70
_02015F8C:
ldr r0, [r4]
mov r2, r6, lsl #0x10
ldr r0, [r0, #0xc]
mov r1, r5
mov r2, r2, lsr #0x10
bl sub_0200A5F8
ldr r0, [r7]
mov r3, r6, lsl #0x10
mov r1, r5
mov r2, r8
add r0, r0, #0xcc
mov r3, r3, asr #0x10
bl sub_0201E380
add r6, r6, #1
cmp r6, #0x100
blt _02015F8C
_02015FCC:
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_02015FD4: .word _020AF710
_02015FD8: .word _020AFC70
arm_func_end sub_02015F18
arm_func_start sub_02015FDC
sub_02015FDC: ; 0x02015FDC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r5, #0
mov r3, r2, asr #2
add r2, r2, r3, lsr #29
mov ip, r5
mov lr, r5
b _0201602C
_02015FF8:
mov r6, lr
add r8, r1, r5, lsl #10
_02016000:
mov r7, ip
add r4, r8, r6, lsl #2
_02016008:
ldr r3, [r4], #0x20
add r7, r7, #1
cmp r7, #0x20
str r3, [r0], #4
blt _02016008
add r6, r6, #1
cmp r6, #8
blt _02016000
add r5, r5, #1
_0201602C:
cmp r5, r2, asr #3
blt _02015FF8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end sub_02015FDC
arm_func_start sub_02016038
sub_02016038: ; 0x02016038
ldr ip, _02016048 ; =sub_0201E050
add r1, r1, #0x10000
mov r3, #0
bx ip
.align 2, 0
_02016048: .word sub_0201E050
arm_func_end sub_02016038
arm_func_start sub_0201604C
sub_0201604C: ; 0x0201604C
stmdb sp!, {r3, lr}
add r1, r1, #0x10000
str r1, [r0, #0x20]
mov ip, #0
strh ip, [r0, #0x16]
mov r1, #8
strh ip, [r0, #0x18]
mov ip, #0x100
mov r1, r1, lsl r3
strh ip, [r0, #0x1a]
strh r1, [r0, #0x1c]
ldrh lr, [r0, #0x14]
mov ip, r3, lsl #0x1d
ldr r1, _02016110 ; =_020AF710
bic r3, lr, #7
orr r3, r3, #5
strh r3, [r0, #0x14]
ldrh lr, [r0, #0x14]
ldr r3, _02016114 ; =_020AFC70
bic lr, lr, #0x38
orr ip, lr, ip, lsr #26
strh ip, [r0, #0x14]
ldrh ip, [r0, #0x14]
bic ip, ip, #0xc0
strh ip, [r0, #0x14]
ldrh ip, [r0, #0x14]
bic ip, ip, #0x700
orr ip, ip, #0x300
strh ip, [r0, #0x14]
ldrh ip, [r0, #0x14]
bic ip, ip, #0x1800
strh ip, [r0, #0x14]
ldrh ip, [r0, #0x14]
bic ip, ip, #0x6000
strh ip, [r0, #0x14]
ldrh ip, [r0, #0x14]
orr ip, ip, #0x8000
strh ip, [r0, #0x14]
ldr r1, [r1]
ldr r3, [r3]
ldrsh r1, [r1, #0x30]
ldr r3, [r3, #0xe0]
add r1, r2, r1
mov r1, r1, lsl #0x14
mov r1, r1, asr #0x10
add r1, r1, #0x1000
add r1, r3, r1, lsl #1
str r1, [r0, #0x24]
ldmia sp!, {r3, pc}
.align 2, 0
_02016110: .word _020AF710
_02016114: .word _020AFC70
arm_func_end sub_0201604C
arm_func_start sub_02016118
sub_02016118: ; 0x02016118
ldr r2, _02016140 ; =_020AF720
ldr r3, _02016144 ; =_020AF721
ldrb ip, [r2, r1, lsl #2]
ldr r2, _02016148 ; =_020AF722
strb ip, [r0, #0x2c]
ldrb r3, [r3, r1, lsl #2]
strb r3, [r0, #0x2d]
ldrb r1, [r2, r1, lsl #2]
strb r1, [r0, #0x2e]
bx lr
.align 2, 0
_02016140: .word _020AF720
_02016144: .word _020AF721
_02016148: .word _020AF722
arm_func_end sub_02016118
arm_func_start sub_0201614C
sub_0201614C: ; 0x0201614C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r0
ldr r0, [r6, #8]
mov r5, r1
mov r4, r2
cmp r0, #0
mov r7, #0
beq _0201619C
_0201616C:
add r0, r7, r5, lsl #4
mov r1, r0, lsl #0x10
ldr r0, [r6, #8]
mov r1, r1, lsr #0x10
add r2, r4, r7, lsl #2
bl sub_0200A29C
add r7, r7, #1
cmp r7, #0x10
blt _0201616C
ldr r0, [r6, #8]
bl sub_0200A174
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_0201619C:
add r0, r7, r5, lsl #4
mov r1, r0, lsl #0x10
ldr r0, [r6, #0xc]
mov r1, r1, lsr #0x10
add r2, r4, r7, lsl #2
bl sub_0200A590
add r7, r7, #1
cmp r7, #0x10
blt _0201619C
ldr r0, [r6, #0xc]
bl sub_0200A504
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_0201614C
arm_func_start sub_020161CC
sub_020161CC: ; 0x020161CC
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x14
#ifdef JAPAN
mov r5, r0
mov r4, #0
b _02016294
_020161DC:
ldrb r0, [r5], #1
cmp r0, #0x23
addeq r4, r4, #8
beq _02016294
cmp r0, #0x20
addeq r4, r4, #0xc
beq _02016294
cmp r0, #0x5b
bne _02016258
str r5, [sp]
mov r2, #1
add r0, sp, #0
_0201620C:
ldrb r1, [r5], #1
cmp r1, #0x5d
beq _02016228
cmp r1, #0x3a
streq r5, [r0, r2, lsl #2]
addeq r2, r2, #1
b _0201620C
_02016228:
ldr r0, [sp]
ldr r1, _02016288 ; =_02098FC0_JP
bl StrcmpTagVeneer
cmp r0, #0
beq _02016294
ldr r0, [sp, #4]
bl AtoiTagVeneer
ldr r0, [sp, #8]
bl AtoiTagVeneer
mov r0, r0, lsl #0x10
add r4, r4, r0, asr #16
b _02016294
_02016258:
tst r0, #0x80
beq _02016280
ldrb r1, [r5]
cmp r1, #0
orrne r0, r1, r0, lsl #8
ldr r1, _020162B0_JP ; =0x00008140
addne r5, r5, #1
cmp r0, r1
addeq r4, r4, #0xc
beq _02016294
_02016280:
bl sub_02025480
bl sub_0201628C
cmp r0, #0
ldrneb r0, [r0, #6]
addne r4, r4, r0
_02016294:
ldrb r0, [r5]
cmp r0, #0
bne _020161DC
mov r0, r4
#else
mov r4, r0
mov r5, #0
b _02016270
_020161E0:
ldrb r0, [r4], #1
cmp r0, #0x23
addeq r5, r5, #8
beq _02016270
cmp r0, #0x20
addeq r5, r5, #6
beq _02016270
cmp r0, #0x5b
bne _0201625C
str r4, [sp]
mov r2, #1
add r0, sp, #0
_02016210:
ldrb r1, [r4], #1
cmp r1, #0x5d
beq _0201622C
cmp r1, #0x3a
streq r4, [r0, r2, lsl #2]
addeq r2, r2, #1
b _02016210
_0201622C:
ldr r0, [sp]
ldr r1, _02016288 ; =_02098FC0
bl StrcmpTagVeneer
cmp r0, #0
beq _02016270
ldr r0, [sp, #4]
bl AtoiTagVeneer
ldr r0, [sp, #8]
bl AtoiTagVeneer
mov r0, r0, lsl #0x10
add r5, r5, r0, asr #16
b _02016270
_0201625C:
bl sub_02025480
bl sub_0201628C
cmp r0, #0
ldrneb r0, [r0, #6]
addne r5, r5, r0
_02016270:
ldrb r0, [r4]
cmp r0, #0
bne _020161E0
mov r0, r5
#endif
add sp, sp, #0x14
ldmia sp!, {r4, r5, pc}
.align 2, 0
_02016288: .word _02098FC0
#ifdef JAPAN
_020162B0_JP: .word 0x00008140
#endif
arm_func_end sub_020161CC
arm_func_start sub_0201628C
sub_0201628C: ; 0x0201628C
stmdb sp!, {r3, lr}
ldr r1, _020162FC ; =_020AF710
mov lr, #0
ldr r1, [r1]
ldr r2, [r1, #0x10]
ldr r1, [r1, #0x2c]
ldr r3, [r2]
sub ip, r1, #1
b _020162DC
_020162B0:
add r1, lr, ip
add r1, r1, r1, lsr #31
mov r2, r1, asr #1
add r1, r3, r2, lsl #3
ldrh r1, [r1, #4]
cmp r0, r1
moveq lr, r2
beq _020162E4
cmp r1, r0
addlt lr, r2, #1
movge ip, r2
_020162DC:
cmp lr, ip
blt _020162B0
_020162E4:
add r2, r3, lr, lsl #3
ldrh r1, [r2, #4]
cmp r1, r0
addne r2, r3, #8
mov r0, r2
ldmia sp!, {r3, pc}
.align 2, 0
_020162FC: .word _020AF710
arm_func_end sub_0201628C
arm_func_start sub_02016300
sub_02016300: ; 0x02016300
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0xc
ldr r4, [sp, #0x20]
ldr lr, _0201636C ; =_020AF760
ldrsh ip, [sp, #0x18]
str r4, [lr]
ldrsh r4, [sp, #0x1c]
str ip, [sp]
mov ip, #0x14
str r4, [sp, #4]
ldr r4, [lr]
ldr lr, _02016370 ; =_0209901C
mul ip, r4, ip
ldr ip, [lr, ip]
str ip, [sp, #8]
bl sub_02015328
ldr r1, _0201636C ; =_020AF760
mov r0, #0x14
ldr r2, [r1]
ldr r1, _02016374 ; =_02099020
mul r0, r2, r0
ldr r0, [r1, r0]
cmp r0, #0
beq _02016364
blx r0
_02016364:
add sp, sp, #0xc
ldmia sp!, {r3, r4, pc}
.align 2, 0
_0201636C: .word _020AF760
_02016370: .word _0209901C
_02016374: .word _02099020
arm_func_end sub_02016300
arm_func_start sub_02016378
sub_02016378: ; 0x02016378
stmdb sp!, {r3, lr}
ldr ip, _020163A4 ; =_020AF760
mov r3, #0x14
ldr lr, [ip]
ldr ip, _020163A8 ; =_02099024
mul r3, lr, r3
ldr r3, [ip, r3]
cmp r3, #0
ldmeqia sp!, {r3, pc}
blx r3
ldmia sp!, {r3, pc}
.align 2, 0
_020163A4: .word _020AF760
_020163A8: .word _02099024
arm_func_end sub_02016378
arm_func_start sub_020163AC
sub_020163AC: ; 0x020163AC
stmdb sp!, {r3, lr}
ldr r1, _020163DC ; =_020AF760
mov r0, #0x14
ldr r2, [r1]
ldr r1, _020163E0 ; =_02099028
mul r0, r2, r0
ldr r0, [r1, r0]
cmp r0, #0
moveq r0, #2
ldmeqia sp!, {r3, pc}
blx r0
ldmia sp!, {r3, pc}
.align 2, 0
_020163DC: .word _020AF760
_020163E0: .word _02099028
arm_func_end sub_020163AC
arm_func_start sub_020163E4
sub_020163E4: ; 0x020163E4
stmdb sp!, {r3, lr}
ldr r1, _02016414 ; =_020AF760
mov r0, #0x14
ldr r2, [r1]
ldr r1, _02016418 ; =_0209902C
mul r0, r2, r0
ldr r0, [r1, r0]
cmp r0, #0
beq _0201640C
blx r0
_0201640C:
bl sub_0201551C
ldmia sp!, {r3, pc}
.align 2, 0
_02016414: .word _020AF760
_02016418: .word _0209902C
arm_func_end sub_020163E4
arm_func_start sub_0201641C
sub_0201641C: ; 0x0201641C
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02015588
mov r1, r4
mov r0, #3
mov r2, #0
bl sub_0204F6F8
mov r4, r0
bl sub_02015570
mov r0, r4
bl sub_020155FC
mov r1, #0x18
mul r1, r0, r1
rsb r0, r1, #0xc0
mov r1, r4
mov r0, r0, asr #1
bl sub_02015E44
bl sub_02015E6C
ldmia sp!, {r4, pc}
arm_func_end sub_0201641C
arm_func_start sub_02016468
sub_02016468: ; 0x02016468
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x100
mov r4, r1
mov r5, r0
bl sub_02015588
bl sub_02015570
add r0, sp, #0
mov r1, r4
bl strcpy
mov r1, r5
mov r0, #0
add r2, sp, #0
mov r3, #2
bl sub_02015D18
bl sub_02015E6C
add sp, sp, #0x100
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02016468
arm_func_start sub_020164AC
sub_020164AC: ; 0x020164AC
stmdb sp!, {r3, lr}
ldr r0, _02016544 ; =_020AF760
mov r1, #0x30
ldr r0, [r0, #4]
add r0, r0, #0x90
add r0, r0, #0xb000
bl MemZero
ldr r0, _02016544 ; =_020AF760
mov r1, #0x30
ldr r0, [r0, #4]
add r0, r0, #0x30c0
add r0, r0, #0x8000
bl MemZero
ldr r0, _02016544 ; =_020AF760
mov r1, #0x30
ldr r0, [r0, #4]
add r0, r0, #0xf0
add r0, r0, #0xb000
bl MemZero
ldr r0, _02016544 ; =_020AF760
mov r1, #0x30
ldr r0, [r0, #4]
add r0, r0, #0x60
add r0, r0, #0xb000
bl MemZero
ldr r0, _02016544 ; =_020AF760
mov r1, #0x30
ldr r0, [r0, #4]
add r0, r0, #0x30
add r0, r0, #0xb000
bl MemZero
ldr r0, _02016544 ; =_020AF760
mov r1, #0x30
ldr r0, [r0, #4]
add r0, r0, #0x120
add r0, r0, #0xb000
bl MemZero
ldmia sp!, {r3, pc}
.align 2, 0
_02016544: .word _020AF760
arm_func_end sub_020164AC
arm_func_start sub_02016548
sub_02016548: ; 0x02016548
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x104
ldrb r4, [sp, #0x118]
mov ip, r0
mov r7, r1
mov r6, r2
mov r5, r3
cmp r4, #0
add r0, sp, #4
mov r1, ip
beq _020165C8
mov r2, r5
bl sub_020175F8
bl sub_02015570
add r2, sp, #4
mov r0, #0
mov r1, #0x20
mov r3, #2
bl sub_02015D18
mov r1, r6
mov r0, #0x3b
bl sub_020156AC
mov r1, r7
add r0, sp, #4
bl strcpy
mov r0, #0
mov r1, #0x52
add r2, sp, #4
mov r3, #2
bl sub_02015D18
bl sub_02015E6C
b _02016768
_020165C8:
mov r2, r5
bl sub_020175F8
mov r2, #2
ldr r0, _02016770 ; =_020AF760
str r2, [sp]
ldr r0, [r0, #4]
add r3, sp, #4
mov r1, r7
bl sub_0201770C
bl sub_020164AC
ldr r0, _02016770 ; =_020AF760
mov r1, #0
ldr r0, [r0, #4]
add r0, r0, #0xb000
str r1, [r0, #0x150]
bl sub_0201F36C
ldr r1, _02016770 ; =_020AF760
ldr r1, [r1, #4]
add r1, r1, #0xb000
strh r0, [r1, #0x90]
bl sub_0201F36C
ldr r2, _02016770 ; =_020AF760
ldr r1, [r2, #4]
add r1, r1, #0xb000
strh r0, [r1, #0xc0]
ldr r0, [r2, #4]
add r0, r0, #0xb000
ldrsh r0, [r0, #0x90]
bl sub_0201F324
mov r1, #0
mov r4, r0
strb r1, [r4, #0x3c]
mov r2, r1
mov r3, #2
bl sub_0201604C
ldrsh r0, [r4, #0x1a]
mov r2, #0x20
mov r1, #0xa
add r0, r0, r0, lsr #31
mov r0, r0, lsl #0xf
mov r0, r0, asr #0x10
strh r0, [r4]
strh r2, [r4, #2]
strb r1, [r4, #0x3e]
strh r0, [r4, #8]
mov r0, #0
strh r0, [r4, #0xa]
mov r0, #0x21
strh r0, [r4, #0x2a]
ldr r0, _02016770 ; =_020AF760
ldr r0, [r0, #4]
add r0, r0, #0xb000
ldrsh r0, [r0, #0xc0]
bl sub_0201F324
mov r4, r0
mov r1, #0x1000
mov r2, #0
mov r3, #4
bl sub_0201604C
ldrsh r0, [r4, #0x1a]
mov r3, #0
mov r1, #0x52
add r0, r0, r0, lsr #31
mov r0, r0, lsl #0xf
mov r2, r0, asr #0x10
strb r3, [r4, #0x3c]
strh r2, [r4]
strh r1, [r4, #2]
mov r0, #0xa
strb r0, [r4, #0x3e]
strh r2, [r4, #8]
strh r3, [r4, #0xa]
mov r0, #0x21
cmp r5, #0
strh r0, [r4, #0x2a]
beq _02016760
bl sub_0201F36C
ldr r2, _02016770 ; =_020AF760
ldr r1, [r2, #4]
add r1, r1, #0xb000
strh r0, [r1, #0x60]
ldr r0, [r2, #4]
add r0, r0, #0xb000
ldrsh r0, [r0, #0x60]
bl sub_0201F324
mov r1, #2
strb r1, [r0, #0x3c]
mov r1, #0
strh r1, [r0]
mov r1, #0x3b
strh r1, [r0, #2]
mov r1, #0x100
strh r1, [r0, #4]
mov r1, #1
strh r1, [r0, #6]
mov r2, #0xa
mov r1, r6
strb r2, [r0, #0x3e]
mov r2, #0x21
strh r2, [r0, #0x2a]
bl sub_02016118
b _02016768
_02016760:
mov r0, #0x80
bl sub_02015EE8
_02016768:
add sp, sp, #0x104
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_02016770: .word _020AF760
arm_func_end sub_02016548
arm_func_start sub_02016774
sub_02016774: ; 0x02016774
stmdb sp!, {r3, lr}
mov r3, #0
str r3, [sp]
bl sub_02016548
ldmia sp!, {r3, pc}
arm_func_end sub_02016774
arm_func_start sub_02016788
sub_02016788: ; 0x02016788
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x100
mov r3, r0
mov r5, r1
mov r4, r2
add r0, sp, #0
mov r1, r3
mov r2, #0
bl sub_020175F8
bl sub_02015570
add r2, sp, #0
mov r0, #0
mov r1, #0x20
mov r3, #2
bl sub_02015D18
mov r1, r4
mov r0, #0x3b
bl sub_020156AC
mov r1, r5
add r0, sp, #0
bl strcpy
mov r0, #0
mov r1, #0x52
add r2, sp, #0
mov r3, #2
bl sub_02015D18
bl sub_02015E6C
add sp, sp, #0x100
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02016788
arm_func_start sub_020167FC
sub_020167FC: ; 0x020167FC
stmdb sp!, {r3, lr}
mov ip, #0
mov r3, #1
str ip, [sp]
bl sub_02016548
ldmia sp!, {r3, pc}
arm_func_end sub_020167FC
arm_func_start sub_02016814
sub_02016814: ; 0x02016814
stmdb sp!, {r4, lr}
ldr r0, _02016880 ; =0x0000B160
mov r1, #0
bl MemAlloc
ldr r2, _02016884 ; =_020AF760
ldr r1, _02016880 ; =0x0000B160
str r0, [r2, #4]
bl MemZero
bl sub_0201F2E4
ldr r0, _02016884 ; =_020AF760
mov r1, #0x1000
ldr r4, [r0, #4]
add r0, r4, #0x6000
bl MemZero
add r0, r4, #0x7000
mov r1, #0x4000
bl MemZero
add r0, r4, #0xb000
mov r1, #0x20
bl MemZero
bl sub_02015F18
ldr r0, _02016884 ; =_020AF760
mov r1, #0
ldr r0, [r0, #4]
add r0, r0, #0xb000
str r1, [r0, #0x20]
ldmia sp!, {r4, pc}
.align 2, 0
_02016880: .word 0x0000B160
_02016884: .word _020AF760
arm_func_end sub_02016814
arm_func_start sub_02016888
sub_02016888: ; 0x02016888
stmdb sp!, {r3, lr}
ldr r0, _020168C4 ; =_020AF760
ldr r0, [r0, #4]
cmp r0, #0
ldmeqia sp!, {r3, pc}
mov r0, #0x100
bl sub_02015EE8
bl sub_0201F2E4
ldr r0, _020168C4 ; =_020AF760
ldr r0, [r0, #4]
bl MemFree
ldr r0, _020168C4 ; =_020AF760
mov r1, #0
str r1, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_020168C4: .word _020AF760
arm_func_end sub_02016888
arm_func_start sub_020168C8
sub_020168C8: ; 0x020168C8
stmdb sp!, {r4, lr}
ldr r0, _02016934 ; =0x0000B160
mov r1, #0
bl MemAlloc
ldr r2, _02016938 ; =_020AF760
ldr r1, _02016934 ; =0x0000B160
str r0, [r2, #4]
bl MemZero
bl sub_0201F2E4
ldr r0, _02016938 ; =_020AF760
mov r1, #0x1000
ldr r4, [r0, #4]
add r0, r4, #0x6000
bl MemZero
add r0, r4, #0x7000
mov r1, #0x4000
bl MemZero
add r0, r4, #0xb000
mov r1, #0x20
bl MemZero
bl sub_02015F18
ldr r0, _02016938 ; =_020AF760
mov r1, #0
ldr r0, [r0, #4]
add r0, r0, #0xb000
str r1, [r0, #0x20]
ldmia sp!, {r4, pc}
.align 2, 0
_02016934: .word 0x0000B160
_02016938: .word _020AF760
arm_func_end sub_020168C8
arm_func_start sub_0201693C
sub_0201693C: ; 0x0201693C
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0x104
mov r3, r0
mov r4, r1
mov r6, r2
add r0, sp, #4
mov r1, r3
mov r2, #1
bl sub_020175F8
mov r2, #2
ldr r0, _02016BB4 ; =_020AF760
str r2, [sp]
ldr r0, [r0, #4]
add r3, sp, #4
mov r1, r4
bl sub_0201770C
bl sub_020164AC
ldr r0, _02016BB4 ; =_020AF760
mov r1, #0
ldr r0, [r0, #4]
add r0, r0, #0xb000
str r1, [r0, #0x150]
bl sub_0201F36C
ldr r1, _02016BB4 ; =_020AF760
ldr r1, [r1, #4]
add r1, r1, #0xb000
strh r0, [r1, #0x90]
bl sub_0201F36C
ldr r1, _02016BB4 ; =_020AF760
ldr r1, [r1, #4]
add r1, r1, #0xb000
strh r0, [r1, #0xc0]
bl sub_0201F36C
ldr r2, _02016BB4 ; =_020AF760
ldr r1, [r2, #4]
add r1, r1, #0xb000
strh r0, [r1, #0x60]
ldr r1, [r2, #4]
add r0, r1, #0x90
add r5, r0, #0xb000
add r0, r1, #0xb000
ldrsh r0, [r0, #0x90]
bl sub_0201F324
mov r1, #0
mov r4, r0
strb r1, [r4, #0x3c]
mov r2, r1
mov r3, #2
bl sub_0201604C
ldrsh r0, [r4, #0x1a]
mov r2, #0x20
mov r1, #1
add r0, r0, r0, lsr #31
mov r3, r0, asr #1
rsb r0, r3, #0
strh r0, [r4]
strh r2, [r4, #2]
strb r1, [r4, #0x3e]
strh r3, [r4, #8]
mov r0, #0
strh r0, [r4, #0xa]
mov r0, #0x21
strh r0, [r4, #0x2a]
ldrsh r0, [r4]
mov r2, #0x6000
mov r1, #0xff00
mov r0, r0, lsl #8
str r0, [r5, #4]
ldrsh r3, [r4, #2]
ldr r0, _02016BB4 ; =_020AF760
mov r3, r3, lsl #8
str r3, [r5, #8]
str r2, [r5, #0xc]
ldr r2, [r5, #8]
str r2, [r5, #0x10]
str r1, [r5, #0x24]
ldr r1, [r0, #4]
add r0, r1, #0x30c0
add r5, r0, #0x8000
add r0, r1, #0xb000
ldrsh r0, [r0, #0xc0]
bl sub_0201F324
mov r1, #0x1000
mov r2, #0
mov r3, #2
mov r4, r0
bl sub_0201604C
ldrsh r0, [r4, #0x1a]
mov r2, #0
mov r1, #0x52
add r0, r0, r0, lsr #31
mov r3, r0, asr #1
strb r2, [r4, #0x3c]
add r0, r3, #0x100
strh r0, [r4]
strh r1, [r4, #2]
mov r0, #1
strb r0, [r4, #0x3e]
strh r3, [r4, #8]
strh r2, [r4, #0xa]
mov r0, #0x21
strh r0, [r4, #0x2a]
ldrsh r0, [r4]
mov r2, #0xa000
mov r1, #0xff00
mov r0, r0, lsl #8
str r0, [r5, #4]
ldrsh r3, [r4, #2]
ldr r0, _02016BB4 ; =_020AF760
mov r3, r3, lsl #8
str r3, [r5, #8]
str r2, [r5, #0xc]
ldr r2, [r5, #8]
str r2, [r5, #0x10]
str r1, [r5, #0x24]
ldr r1, [r0, #4]
add r0, r1, #0xb000
add r1, r1, #0x60
ldrsh r0, [r0, #0x60]
add r5, r1, #0xb000
bl sub_0201F324
mov r4, r0
mov r1, #2
strb r1, [r4, #0x3c]
mvn r1, #0xff
strh r1, [r4]
mov r1, #0x3b
strh r1, [r4, #2]
mov r1, #0x100
strh r1, [r4, #4]
mov r1, #1
strh r1, [r4, #6]
strb r1, [r4, #0x3e]
mov r2, #0x21
mov r1, r6
strh r2, [r4, #0x2a]
bl sub_02016118
ldrsh r1, [r4]
mov r2, #0x1800
mov r0, #0xff00
mov r1, r1, lsl #8
str r1, [r5, #4]
ldrsh r4, [r4, #2]
ldr r1, _02016BB4 ; =_020AF760
mov r3, #0x100
mov r4, r4, lsl #8
str r4, [r5, #8]
str r2, [r5, #0x14]
str r0, [r5, #0x24]
ldr r0, [r1, #4]
mov r2, #0x10
add r0, r0, #0xb000
str r3, [r0, #0x154]
ldr r0, [r1, #4]
add r0, r0, #0xb000
str r2, [r0, #0x20]
add sp, sp, #0x104
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02016BB4: .word _020AF760
arm_func_end sub_0201693C
arm_func_start sub_02016BB8
sub_02016BB8: ; 0x02016BB8
stmdb sp!, {r3, lr}
ldr r0, _02016BEC ; =_020AF760
ldr r0, [r0, #4]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl sub_0201F2E4
ldr r0, _02016BEC ; =_020AF760
ldr r0, [r0, #4]
bl MemFree
ldr r0, _02016BEC ; =_020AF760
mov r1, #0
str r1, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_02016BEC: .word _020AF760
arm_func_end sub_02016BB8
arm_func_start sub_02016BF0
sub_02016BF0: ; 0x02016BF0
stmdb sp!, {r4, r5, r6, lr}
ldr r0, _02016EA8 ; =_020AF760
ldr r1, [r0, #4]
cmp r1, #0
beq _02016EA0
add r2, r1, #0xb000
ldrsh r0, [r2, #0x60]
add r1, r1, #0x60
add r6, r1, #0xb000
ldr r5, [r2, #0x154]
bl sub_0201F324
ldrb r1, [r6, #0x28]
mov r4, r0
cmp r1, #1
beq _02016C44
cmp r1, #2
beq _02016C78
cmp r1, #3
moveq r0, #0
streqb r0, [r6, #0x28]
b _02016C94
_02016C44:
ldr r1, [r6, #4]
ldr r0, [r6, #0x14]
adds r0, r1, r0
str r0, [r6, #4]
bmi _02016C94
ldrb r2, [r6, #0x28]
mov r1, #0
mov r0, #0x2d
add r2, r2, #1
strb r2, [r6, #0x28]
str r1, [r6, #4]
str r0, [r6, #0x2c]
b _02016C94
_02016C78:
ldr r1, [r6, #0x2c]
sub r0, r1, #1
str r0, [r6, #0x2c]
cmp r1, #0
ldreqb r0, [r6, #0x28]
addeq r0, r0, #1
streqb r0, [r6, #0x28]
_02016C94:
ldr r2, [r6, #4]
mov r1, r5
mov r0, r2, asr #7
add r0, r2, r0, lsr #24
mov r0, r0, asr #8
strh r0, [r4]
ldr r2, [r6, #0x24]
mov r0, r2, asr #7
add r0, r2, r0, lsr #24
mov r0, r0, asr #8
bl MultiplyByFixedPoint
ldr r1, _02016EA8 ; =_020AF760
strb r0, [r4, #0x2f]
ldr r0, [r1, #4]
mov r2, #0
add r1, r0, #0xb000
add r0, r0, #0x90
ldr r1, [r1, #0x154]
add r0, r0, #0xb000
bl sub_020177AC
ldr r2, _02016EA8 ; =_020AF760
ldr r0, [r2, #4]
add r0, r0, #0xb000
ldr r3, [r0, #0x94]
mov r1, r3, asr #7
add r1, r3, r1, lsr #24
mov r1, r1, asr #8
cmp r1, #0x80
blt _02016D48
mov r1, #0
str r1, [r0, #0xa4]
ldr r0, [r2, #4]
mov r1, #0x8000
add r0, r0, #0xb000
str r1, [r0, #0x94]
ldr r4, [r2, #4]
add r0, r4, #0xb000
ldrsh r0, [r0, #0x90]
bl sub_0201F324
add r1, r4, #0xb000
ldr r2, [r1, #0x94]
mov r1, r2, asr #7
add r1, r2, r1, lsr #24
mov r1, r1, asr #8
strh r1, [r0]
_02016D48:
ldr r0, _02016EA8 ; =_020AF760
ldr r2, [r0, #4]
add r0, r2, #0xb000
ldrsh r0, [r0, #0xc0]
add r1, r2, #0x90
add r2, r2, #0x30c0
add r5, r1, #0xb000
add r4, r2, #0x8000
bl sub_0201F324
ldr r1, [r5, #4]
ldr r2, _02016EA8 ; =_020AF760
rsb r3, r1, #0x10000
mov r1, r3, asr #7
add r1, r3, r1, lsr #24
str r3, [r4, #4]
mov r1, r1, asr #8
strh r1, [r0]
ldr r0, [r2, #4]
add r1, r0, #0xb000
ldr r3, [r1, #0x20]
cmp r3, #0x14
bhi _02016DCC
subs r0, r3, #0x10
addpl pc, pc, r0, lsl #2
b _02016DC0
_02016DAC: ; jump table
b _02016DE0 ; case 0
b _02016E00 ; case 1
b _02016E38 ; case 2
b _02016E64 ; case 3
b _02016E84 ; case 4
_02016DC0:
cmp r3, #0
beq _02016DD8
b _02016E98
_02016DCC:
cmp r3, #0xff
beq _02016E90
b _02016E98
_02016DD8:
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
_02016DE0:
mov r0, #1
strb r0, [r1, #0x88]
ldr r0, [r2, #4]
add r0, r0, #0xb000
ldr r1, [r0, #0x20]
add r1, r1, #1
str r1, [r0, #0x20]
b _02016E98
_02016E00:
ldrb r0, [r1, #0x88]
cmp r0, #0
bne _02016E98
mov r3, #1
strb r3, [r1, #0xb8]
ldr r0, [r2, #4]
add r0, r0, #0xb000
strb r3, [r0, #0xe8]
ldr r0, [r2, #4]
add r0, r0, #0xb000
ldr r1, [r0, #0x20]
add r1, r1, #1
str r1, [r0, #0x20]
b _02016E98
_02016E38:
ldrb r0, [r1, #0xb8]
cmp r0, #2
bne _02016E98
mov r0, #0x3c
str r0, [r1, #0x150]
ldr r0, [r2, #4]
add r0, r0, #0xb000
ldr r1, [r0, #0x20]
add r1, r1, #1
str r1, [r0, #0x20]
b _02016E98
_02016E64:
ldr r2, [r1, #0x94]
mov r0, r2, asr #7
add r0, r2, r0, lsr #24
mov r0, r0, asr #8
cmp r0, #0x80
addge r0, r3, #1
strge r0, [r1, #0x20]
b _02016E98
_02016E84:
mov r0, #0xff
str r0, [r1, #0x20]
b _02016E98
_02016E90:
mov r0, #2
ldmia sp!, {r4, r5, r6, pc}
_02016E98:
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
_02016EA0:
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02016EA8: .word _020AF760
arm_func_end sub_02016BF0
arm_func_start sub_02016EAC
sub_02016EAC: ; 0x02016EAC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x10
bl sub_020168C8
ldr r0, _02017128 ; =0x00000A7C
mov r1, #0
bl MemAlloc
ldr r2, _0201712C ; =_020AF760
ldr r1, _02017128 ; =0x00000A7C
str r0, [r2, #8]
bl MemZero
ldr r0, _02017130 ; =WAN_TABLE
ldr r1, _02017134 ; =_02099110
ldr r0, [r0]
mov r2, #0
bl LoadWanTableEntry
ldr r1, _0201712C ; =_020AF760
ldr r2, _02017130 ; =WAN_TABLE
ldr r3, [r1, #8]
ldr r1, _02017138 ; =_02099124
strh r0, [r3, #0x94]
ldr r0, [r2]
mov r2, #0
bl LoadWanTableEntry
ldr r1, _0201712C ; =_020AF760
ldr r1, [r1, #8]
strh r0, [r1, #0x96]
bl sub_02015F18
ldr r0, _0201712C ; =_020AF760
ldr r0, [r0, #8]
add r0, r0, #0x98
bl InitAnimationControlWithSet__0201C0B0
ldr r0, _0201712C ; =_020AF760
ldr r1, [r0, #8]
add r0, r1, #0x98
ldrsh r1, [r1, #0x94]
bl SetSpriteIdForAnimationControl
mov r0, #1
str r0, [sp]
mov r2, #0
str r2, [sp, #4]
str r2, [sp, #8]
ldr r0, _0201712C ; =_020AF760
str r2, [sp, #0xc]
ldr r0, [r0, #8]
mov r1, #0xc
mov r3, #0x100
add r0, r0, #0x98
bl SetAnimationForAnimationControl
ldr r0, _0201712C ; =_020AF760
mov r4, #0xd0
ldr r2, [r0, #8]
mov r3, #0x6a
strh r4, [r2, #0xb4]
ldr r2, [r0, #8]
mov r1, #0
strh r3, [r2, #0xb6]
ldr r0, [r0, #8]
add r0, r0, #0x98
bl sub_0201D12C
ldr r0, _0201712C ; =_020AF760
ldr r5, _0201713C ; =_02098FC8
ldr r7, [r0, #8]
mov sb, #0
add r6, r7, #0x114
mov fp, #1
_02016FB0:
mov r0, #0x7c
mla r8, sb, r0, r6
mov r0, r8
bl InitAnimationControlWithSet__0201C0B0
ldrsh r1, [r7, #0x94]
mov r0, r8
bl SetSpriteIdForAnimationControl
mov r0, #0xc
mul r4, sb, r0
add sl, r5, r4
bl Rand16Bit
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #25
str fp, [sp]
add r0, r1, r0, ror #25
stmib sp, {r0, fp}
mov r0, #0
str r0, [sp, #0xc]
ldr r1, [r5, r4]
mov r0, r8
mov r2, #0
mov r3, #0x100
bl SetAnimationForAnimationControl
ldr r1, [sl, #4]
mov r0, r8
strh r1, [r8, #0x1c]
ldr r2, [sl, #8]
mov r1, #0
strh r2, [r8, #0x1e]
bl sub_0201D12C
add sb, sb, #1
cmp sb, #7
blt _02016FB0
ldr r0, _0201712C ; =_020AF760
ldr r4, _02017140 ; =_02099080
ldr r7, [r0, #8]
mov sb, #0
add r0, r7, #0x7c
add r6, r0, #0x400
mov r5, #0x40
mov fp, #0xc
_02017054:
mov r0, #0x7c
mla r8, sb, r0, r6
mov r0, r8
bl InitAnimationControlWithSet__0201C0B0
ldrsh r1, [r7, #0x96]
mov r0, r8
bl SetSpriteIdForAnimationControl
strh r5, [r8, #0x38]
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
str r0, [sp, #8]
str r0, [sp, #0xc]
mul r0, sb, fp
mov r2, #0
ldr r1, [r4, r0]
add sl, r4, r0
mov r0, r8
mov r3, r2
bl SetAnimationForAnimationControl
ldr r0, [sl, #4]
cmp sb, #6
strh r0, [r8, #0x1c]
ldr r0, [sl, #8]
strh r0, [r8, #0x1e]
blt _020170D8
add r3, r7, sb, lsl #2
ldr r2, [r3, #0xa34]
mov r0, r8
mov r1, #0
str r2, [r3, #0xa4c]
bl sub_0201D12C
b _020170FC
_020170D8:
bl Rand16Bit
mov r1, r0, lsr #0x1f
rsb r0, r1, r0, lsl #28
add r2, r1, r0, ror #28
add r1, r7, sb, lsl #2
str r2, [r1, #0xa4c]
mov r0, r8
mov r1, #1
bl sub_0201D12C
_020170FC:
add sb, sb, #1
cmp sb, #0xc
blt _02017054
mov r0, #2
bl sub_0206AA5C
bl sub_0206AB98
bl sub_0206ABB0
mov r0, #0x2d
bl sub_0206ADA0
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02017128: .word 0x00000A7C
_0201712C: .word _020AF760
_02017130: .word WAN_TABLE
_02017134: .word _02099110
_02017138: .word _02099124
_0201713C: .word _02098FC8
_02017140: .word _02099080
arm_func_end sub_02016EAC
arm_func_start sub_02017144
sub_02017144: ; 0x02017144
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x104
mov r2, r0
mov r4, r1
mov r1, r2
add r0, sp, #4
mov r2, #1
bl sub_020175F8
mov r1, #0
str r1, [sp]
ldr r0, _02017310 ; =_020AF760
add r3, sp, #4
ldr r0, [r0, #4]
mov r1, r4
mov r2, #2
bl sub_0201770C
bl sub_020164AC
ldr r0, _02017310 ; =_020AF760
mov r1, #0
ldr r0, [r0, #4]
add r0, r0, #0xb000
str r1, [r0, #0x150]
bl sub_0201F36C
ldr r1, _02017310 ; =_020AF760
ldr r1, [r1, #4]
add r1, r1, #0xb000
strh r0, [r1, #0x90]
bl sub_0201F36C
ldr r1, _02017310 ; =_020AF760
ldr r1, [r1, #4]
add r1, r1, #0xb000
strh r0, [r1, #0xc0]
bl sub_0201F36C
ldr r2, _02017310 ; =_020AF760
ldr r1, [r2, #4]
add r1, r1, #0xb000
strh r0, [r1, #0x60]
ldr r1, [r2, #4]
add r0, r1, #0x90
add r5, r0, #0xb000
add r0, r1, #0xb000
ldrsh r0, [r0, #0x90]
bl sub_0201F324
mov r1, #0
mov r4, r0
strb r1, [r4, #0x3c]
sub r2, r1, #0x100
strh r2, [r4]
mov r2, #0x20
strh r2, [r4, #2]
mov r2, #1
strb r2, [r4, #0x3e]
mov r3, #0x21
strh r3, [r4, #0x2a]
mov r3, #2
bl sub_0201604C
ldrsh r0, [r4]
mov r2, #0x2000
mov r1, #0xff00
mov r0, r0, lsl #8
str r0, [r5, #4]
ldrsh r3, [r4, #2]
ldr r0, _02017310 ; =_020AF760
mov r3, r3, lsl #8
str r3, [r5, #8]
str r2, [r5, #0xc]
ldr r2, [r5, #8]
str r2, [r5, #0x10]
str r1, [r5, #0x24]
ldr r1, [r0, #4]
add r0, r1, #0x30c0
add r5, r0, #0x8000
add r0, r1, #0xb000
ldrsh r0, [r0, #0xc0]
bl sub_0201F324
mov r4, r0
mov r2, #0
strb r2, [r4, #0x3c]
mov r1, #0x180
strh r1, [r4]
mov r1, #0x52
strh r1, [r4, #2]
mov r1, #0x80
strh r1, [r4, #8]
strh r2, [r4, #0xa]
mov r1, #0x21
strh r1, [r4, #0x2a]
mov r1, #1
strb r1, [r4, #0x3e]
mov r1, #0x1000
mov r3, #2
bl sub_0201604C
ldrsh r1, [r4]
mov r2, #0x8000
mov r0, #0xff00
mov r1, r1, lsl #8
str r1, [r5, #4]
ldrsh r4, [r4, #2]
ldr r1, _02017310 ; =_020AF760
mov r3, #0x100
mov r4, r4, lsl #8
str r4, [r5, #8]
str r2, [r5, #0xc]
ldr r4, [r5, #8]
mov r2, #0x10
str r4, [r5, #0x10]
str r0, [r5, #0x24]
ldr r0, [r1, #4]
add r0, r0, #0xb000
str r3, [r0, #0x154]
ldr r0, [r1, #4]
add r0, r0, #0xb000
str r2, [r0, #0x20]
add sp, sp, #0x104
ldmia sp!, {r4, r5, pc}
.align 2, 0
_02017310: .word _020AF760
arm_func_end sub_02017144
arm_func_start sub_02017314
sub_02017314: ; 0x02017314
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x10
ldr r0, _02017588 ; =_020AF760
ldr r0, [r0, #4]
cmp r0, #0
beq _0201757C
bl sub_0206ADB8
bl sub_0206AD4C
cmp r0, #0
bne _0201757C
ldr r0, _02017588 ; =_020AF760
mov r2, #1
ldmib r0, {r3, r4}
add r1, r3, #0xb000
add r0, r3, #0x90
ldr r1, [r1, #0x154]
add r0, r0, #0xb000
bl sub_020177AC
ldr r0, _02017588 ; =_020AF760
mov r2, #1
ldr r0, [r0, #4]
add r1, r0, #0xb000
add r0, r0, #0x30c0
ldr r1, [r1, #0x154]
add r0, r0, #0x8000
bl sub_020177AC
ldr r1, _02017588 ; =_020AF760
ldr r5, [r1, #4]
add r0, r5, #0xb000
ldr r3, [r0, #0x20]
cmp r3, #0x13
bhi _020173BC
subs r2, r3, #0x10
addpl pc, pc, r2, lsl #2
b _020173B0
_020173A0: ; jump table
b _020173D0 ; case 0
b _020173FC ; case 1
b _02017438 ; case 2
b _02017464 ; case 3
_020173B0:
cmp r3, #0
beq _020173C8
b _020174A8
_020173BC:
cmp r3, #0xff
beq _020174A0
b _020174A8
_020173C8:
mov r0, #0
b _02017580
_020173D0:
mov r2, #1
strb r2, [r0, #0xb8]
ldr r0, [r1, #4]
add r0, r0, #0xb000
strb r2, [r0, #0xe8]
ldr r0, [r1, #4]
add r0, r0, #0xb000
ldr r1, [r0, #0x20]
add r1, r1, #1
str r1, [r0, #0x20]
b _020174A8
_020173FC:
ldr r1, [r0, #0xd4]
cmp r1, #0
ldrne r0, [r0, #0xa4]
cmpne r0, #0
bne _020174A8
add r0, r5, #0xb000
ldr r2, [r0, #0x20]
ldr r1, _02017588 ; =_020AF760
add r2, r2, #1
str r2, [r0, #0x20]
ldr r0, [r1, #4]
mov r1, #0x14
add r0, r0, #0xb000
str r1, [r0, #0x150]
b _020174A8
_02017438:
ldr r2, [r0, #0x150]
sub r2, r2, #1
str r2, [r0, #0x150]
ldr r0, [r1, #4]
add r0, r0, #0xb000
ldr r1, [r0, #0x150]
cmp r1, #0
ldreq r1, [r0, #0x20]
addeq r1, r1, #1
streq r1, [r0, #0x20]
b _020174A8
_02017464:
add r0, r4, #0x98
bl sub_0201CF5C
add r0, r4, #0x98
bl sub_0201D1B0
cmp r0, #0
bne _020174A8
ldr r0, _02017588 ; =_020AF760
mov r1, #1
ldr r0, [r0, #4]
add r0, r0, #0xb000
ldr r2, [r0, #0x20]
add r2, r2, #1
str r2, [r0, #0x20]
strb r1, [r4, #0x478]
b _020174A8
_020174A0:
mov r0, #2
b _02017580
_020174A8:
ldrb r0, [r4, #0x478]
cmp r0, #0
beq _020174D4
mov r7, #0
add r6, r4, #0x114
mov r5, #0x7c
_020174C0:
mla r0, r7, r5, r6
bl sub_0201CF5C
add r7, r7, #1
cmp r7, #7
blt _020174C0
_020174D4:
mov r8, #0
add r0, r4, #0x7c
add r7, r0, #0x400
mov fp, r8
mov r6, #1
mov r5, #0x7c
_020174EC:
add r1, r4, r8, lsl #2
ldr r0, [r1, #0xa4c]
cmp r0, #0
bne _02017560
mla sb, r8, r5, r7
mov r0, sb
bl sub_0201D1B0
cmp r0, #0
bne _02017554
ldrsh sl, [sb, #0x78]
cmp sl, #0
beq _02017554
and r0, sl, #1
cmp r0, #1
mov r0, sb
addeq sl, sl, #1
bl sub_0201C108
str fp, [sp]
str fp, [sp, #4]
str r6, [sp, #8]
mov r0, sb
mov r1, sl
mov r2, fp
mov r3, fp
str fp, [sp, #0xc]
bl SetAnimationForAnimationControl
_02017554:
mov r0, sb
bl sub_0201CF5C
b _02017568
_02017560:
sub r0, r0, #1
str r0, [r1, #0xa4c]
_02017568:
add r8, r8, #1
cmp r8, #0xc
blt _020174EC
mov r0, #1
b _02017580
_0201757C:
mov r0, #0
_02017580:
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02017588: .word _020AF760
arm_func_end sub_02017A00
arm_func_start sub_0201758C
sub_0201758C: ; 0x0201758C
stmdb sp!, {r3, lr}
ldr r0, _020175F0 ; =_020AF760
ldr r1, [r0, #8]
cmp r1, #0
beq _020175E4
ldr r0, _020175F4 ; =WAN_TABLE
ldrsh r1, [r1, #0x94]
ldr r0, [r0]
bl DeleteWanTableEntryVeneer
ldr r0, _020175F0 ; =_020AF760
ldr r1, _020175F4 ; =WAN_TABLE
ldr r2, [r0, #8]
ldr r0, [r1]
ldrsh r1, [r2, #0x96]
bl DeleteWanTableEntryVeneer
ldr r0, _020175F0 ; =_020AF760
ldr r0, [r0, #8]
bl MemFree
ldr r0, _020175F0 ; =_020AF760
mov r1, #0
str r1, [r0, #8]
bl ov10_022BDADC
_020175E4:
bl sub_0206BA5C
bl sub_02016BB8
ldmia sp!, {r3, pc}
.align 2, 0
_020175F0: .word _020AF760
_020175F4: .word WAN_TABLE
arm_func_end sub_0201758C
arm_func_start sub_020175F8
sub_020175F8: ; 0x020175F8
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x80
#ifdef JAPAN
mov r8, r0
cmp r2, #0
movne r7, #0x3a
mov sb, r1
mvn r0, #0
moveq r7, #0x38
cmp sb, r0
beq _02017708
mov r0, sb
mov r1, #0x64
add r4, sp, #0
bl _u32_div_f
and r6, r0, #0xff
mov r0, sb
mov r1, #0xa
bl _u32_div_f
and r5, r0, #0xff
mov r0, sb
mov r1, #0xa
bl _u32_div_f
cmp r6, #0
and r2, r1, #0xff
addne r0, r6, #0x4f
movne r1, #0x82
strneb r1, [r4]
strneb r0, [r4, #1]
addne r4, r4, #2
cmp r5, #0
beq _020176B4
mov r0, #0x82
strb r0, [r4]
add r0, r5, #0x4f
strb r0, [r4, #1]
add r4, r4, #2
b _020176CC_JP
_020176B4:
cmp r6, #0
movne r0, #0x82
strneb r0, [r4]
addne r0, r5, #0x4f
strneb r0, [r4, #1]
addne r4, r4, #2
_020176CC_JP:
mov r0, #0x82
strb r0, [r4]
add r2, r2, #0x4f
strb r2, [r4, #1]
mov r2, #0
add r0, sp, #0x40
mov r1, r7
strb r2, [r4, #2]
bl GetStringFromFileVeneer
ldr r1, _020176DC ; =_02099138
add r2, sp, #0x40
add r3, sp, #0
mov r0, r8
bl SprintfStatic__020176E4
b _020176CC
_02017708:
add r0, sp, #0
mov r1, #0x39
bl GetStringFromFileVeneer
add r0, sp, #0x40
mov r1, r7
bl GetStringFromFileVeneer
ldr r1, _020176DC ; =_02099138
add r2, sp, #0x40
add r3, sp, #0
mov r0, r8
#else
cmp r2, #0
ldrne r5, _020176D4 ; =0x00000171
mov r6, r0
mov sb, r1
mvn r0, #0
ldreq r5, _020176D8 ; =0x0000016F
cmp sb, r0
beq _020176B0
mov r0, sb
mov r1, #0x64
add r4, sp, #0
bl _u32_div_f
and r8, r0, #0xff
mov r0, sb
mov r1, #0xa
bl _u32_div_f
and r7, r0, #0xff
mov r0, sb
mov r1, #0xa
bl _u32_div_f
cmp r8, #0
addne r0, r8, #0x30
strneb r0, [r4], #1
cmp r7, #0
addne r0, r7, #0x30
and r1, r1, #0xff
strneb r0, [r4], #1
bne _0201767C
cmp r8, #0
addne r0, r7, #0x30
strneb r0, [r4], #1
_0201767C:
add r2, r1, #0x30
strb r2, [r4]
mov r2, #0
add r0, sp, #0x40
mov r1, r5
strb r2, [r4, #1]
bl GetStringFromFileVeneer
ldr r1, _020176DC ; =_02099138
add r2, sp, #0x40
add r3, sp, #0
mov r0, r6
bl SprintfStatic__020176E4
b _020176CC
_020176B0:
add r0, sp, #0x40
mov r1, #0x170
bl GetStringFromFileVeneer
ldr r1, _020176E0 ; =_02099140
add r2, sp, #0x40
mov r0, r6
#endif
bl SprintfStatic__020176E4
_020176CC:
add sp, sp, #0x80
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
#ifdef JAPAN
_020176DC: .word _02099138
#else
_020176D4: .word 0x00000171
_020176D8: .word 0x0000016F
_020176DC: .word _02099138
_020176E0: .word _02099140
#endif
arm_func_end sub_020175F8
arm_func_start SprintfStatic__020176E4
SprintfStatic__020176E4: ; 0x020176E4
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, lr}
add r2, sp, #0xc
bic r2, r2, #3
ldr r1, [sp, #0xc]
add r2, r2, #4
bl vsprintf
ldmia sp!, {r3, lr}
add sp, sp, #0x10
bx lr
arm_func_end SprintfStatic__020176E4
arm_func_start sub_0201770C
sub_0201770C: ; 0x0201770C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r1
mov r1, #0x6000
mov r7, r0
mov r5, r2
mov r4, r3
bl MemZero
ldr r2, [sp, #0x18]
mov r1, #0
mov r0, r7
str r2, [sp]
mov r2, r1
mov r3, r4
bl sub_0201578C
add r0, r7, #0x6000
mov r1, r7
mov r2, #0x20
bl sub_02015FDC
add r0, r7, #0x6000
mov r1, #0
mov r2, #0x1000
bl sub_02016038
mov r0, r7
mov r1, #0x6000
bl MemZero
str r5, [sp]
mov r3, r6
mov r0, r7
mov r1, #0
mov r2, r1
bl sub_0201578C
add r0, r7, #0x7000
mov r1, r7
mov r2, #0x80
bl sub_02015FDC
add r0, r7, #0x7000
mov r1, #0x1000
mov r2, #0x4000
bl sub_02016038
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_0201770C
arm_func_start sub_020177AC
sub_020177AC: ; 0x020177AC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r0
ldrsh r0, [r6]
mov r5, r1
mov r7, r2
bl sub_0201F324
ldrb r1, [r6, #0x28]
mov r4, r0
cmp r1, #1
beq _020177E8
cmp r1, #2
beq _02017848
cmp r1, #3
beq _02017858
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020177E8:
cmp r7, #0
mov r3, #0x80
beq _02017820
mov r0, #0
str r0, [sp]
ldr r1, [r6, #4]
ldr r2, [r6, #0xc]
add r0, r6, #0x14
bl ov10_022C2528
cmp r0, #0
ldrneb r0, [r6, #0x28]
addne r0, r0, #1
strneb r0, [r6, #0x28]
b _02017868
_02017820:
str r3, [sp]
ldr r1, [r6, #4]
ldr r2, [r6, #0xc]
add r0, r6, #0x14
bl ov10_022C2528
cmp r0, #0
ldrneb r0, [r6, #0x28]
addne r0, r0, #1
strneb r0, [r6, #0x28]
b _02017868
_02017848:
cmp r5, #0
addeq r0, r1, #1
streqb r0, [r6, #0x28]
b _02017868
_02017858:
mov r0, #0xff
strb r0, [r6, #0x28]
mov r0, #0
str r0, [r6, #0x14]
_02017868:
ldr r2, [r6, #4]
ldr r0, [r6, #0x14]
mov r1, r5
add r2, r2, r0
mov r0, r2, asr #7
add r0, r2, r0, lsr #24
str r2, [r6, #4]
mov r0, r0, asr #8
strh r0, [r4]
ldr r2, [r6, #0x24]
mov r0, r2, asr #7
add r0, r2, r0, lsr #24
mov r0, r0, asr #8
bl MultiplyByFixedPoint
strb r0, [r4, #0x2f]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_020177AC
arm_func_start sub_020178A8
sub_020178A8: ; 0x020178A8
stmdb sp!, {r4, r5, r6, r7, lr}
#ifdef EUROPE
sub sp, sp, #0x254
mov r4, r1
and r1, r4, #0xff
mov r7, r0
bl sub_0204F77C
mov r5, r0
cmp r5, r7
and r6, r4, #0xff
beq _020179BC
bl GetNbFloors
cmp r0, #1
moveq r6, #0
_020179BC:
mov r1, r7
and r2, r4, #0xff
mov r0, #2
bl sub_0204F6F8
mov r4, r0
add r0, sp, #4
bl InitPreprocessorArgs
mov r0, r5
bl DungeonGoesUp
cmp r0, #0
movne r2, r6
rsbeq r2, r6, #0
ldr r1, _020179FC ; =_020AF76C
add r0, sp, #0x54
str r2, [sp, #0x28]
bl SprintfStatic__02017A40
add r5, sp, #4
add r0, sp, #0x154
add r2, sp, #0x54
mov r1, #0x100
mov r3, #0
str r5, [sp]
bl PreprocessString
bl sub_02015570
cmp r6, #0
mov r0, r4
beq _02017A70
bl sub_020155FC
mov r1, #0x18
mul r1, r0, r1
add r0, r1, #0x38
rsb r5, r0, #0xc0
mov r0, r5, asr #1
mov r1, r4
bl sub_02015E44
sub r1, r0, #1
mov r0, #0x18
mul r0, r1, r0
add r0, r0, r5, asr #1
add r1, r0, #0x20
add r2, sp, #0x154
mov r0, #0
mov r3, #2
bl sub_02015D18
b _02017A8C
_02017A70:
bl sub_020155FC
mov r1, #0x18
mul r1, r0, r1
rsb r0, r1, #0xc0
mov r1, r4
mov r0, r0, asr #1
bl sub_02015E44
_02017A8C:
bl sub_02015E6C
add sp, sp, #0x254
#else
sub sp, sp, #0x104
mov r5, r1
and r1, r5, #0xff
mov r7, r0
bl sub_0204F77C
mov r6, r0
cmp r6, r7
and r4, r5, #0xff
beq _020178DC
bl GetNbFloors
cmp r0, #1
moveq r4, #0
_020178DC:
mov r1, r7
and r2, r5, #0xff
mov r0, #2
bl sub_0204F6F8
mov r5, r0
mov r0, r6
bl DungeonGoesUp
cmp r0, #0
ldrne r0, _020179FC ; =_020AF76C
ldrne r7, [r0]
ldreq r0, _020179FC ; =_020AF76C
ldreq r7, [r0, #4]
cmp r4, #0xa
blo _02017954
mov r0, r4
mov r1, #0xa
bl _s32_div_f
mov r6, r0
mov r0, r4
mov r1, #0xa
bl _s32_div_f
add r1, r1, #0x30
ldr r0, _020179FC ; =_020AF76C
str r1, [sp]
ldr r1, [r0, #8]
add r0, sp, #4
mov r2, r7
add r3, r6, #0x30
bl SprintfStatic__02017A40
b _0201797C
_02017954:
cmp r4, #0
moveq r0, #0
streqb r0, [sp, #4]
beq _0201797C
ldr r1, _020179FC ; =_020AF76C
add r0, sp, #4
ldr r1, [r1, #0xc]
mov r2, r7
add r3, r4, #0x30
bl SprintfStatic__02017A40
_0201797C:
bl sub_02015570
cmp r4, #0
mov r0, r5
beq _020179D4
bl sub_020155FC
mov r1, #0x18
mul r1, r0, r1
add r0, r1, #0x38
rsb r4, r0, #0xc0
mov r0, r4, asr #1
mov r1, r5
bl sub_02015E44
sub r1, r0, #1
mov r0, #0x18
mul r0, r1, r0
add r0, r0, r4, asr #1
add r1, r0, #0x20
add r2, sp, #4
mov r0, #0
mov r3, #2
bl sub_02015D18
b _020179F0
_020179D4:
bl sub_020155FC
mov r1, #0x18
mul r1, r0, r1
rsb r0, r1, #0xc0
mov r1, r5
mov r0, r0, asr #1
bl sub_02015E44
_020179F0:
bl sub_02015E6C
add sp, sp, #0x104
#endif
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
#ifdef EUROPE
_020179FC: .word _0209958C
#else
_020179FC: .word _020AF76C
#endif
arm_func_end sub_020178A8
arm_func_start sub_02017A00
sub_02017A00: ; 0x02017A00
stmdb sp!, {r3, lr}
bl sub_02015570
ldr r1, _02017A1C ; =0x000044BD
mov r0, #0x3e
bl sub_02015E44
bl sub_02015E6C
ldmia sp!, {r3, pc}
.align 2, 0
#if defined(EUROPE)
_02017A1C: .word 0x000044BF
#elif defined(JAPAN)
_02017A1C: .word 0x0000076D
#else
_02017A1C: .word 0x000044BD
#endif
arm_func_end sub_02017A00
arm_func_start sub_02017A20
sub_02017A20: ; 0x02017A20
stmdb sp!, {r3, lr}
bl sub_02015570
#ifdef JAPAN
mov r0, #0x3e
add r1, r0, #0x730
#else
ldr r1, _02017A3C ; =0x000044BE
mov r0, #0x3e
#endif
bl sub_02015E44
bl sub_02015E6C
ldmia sp!, {r3, pc}
.align 2, 0
#if defined(EUROPE)
_02017A3C: .word 0x000044C0
#elif !defined(JAPAN)
_02017A3C: .word 0x000044BE
#endif
arm_func_end sub_02017A20
arm_func_start SprintfStatic__02017A40
SprintfStatic__02017A40: ; 0x02017A40
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, lr}
add r2, sp, #0xc
bic r2, r2, #3
ldr r1, [sp, #0xc]
add r2, r2, #4
bl vsprintf
ldmia sp!, {r3, lr}
add sp, sp, #0x10
bx lr
arm_func_end SprintfStatic__02017A40
arm_func_start sub_02017A68
sub_02017A68: ; 0x02017A68
ldr r0, _02017A7C ; =_022A4BE8
mov r1, #0
strh r1, [r0, #2]
strh r1, [r0]
bx lr
.align 2, 0
_02017A7C: .word _022A4BE8
arm_func_end sub_02017A68
arm_func_start sub_02017A80
sub_02017A80: ; 0x02017A80
ldr r0, _02017AAC ; =_022A4BE8
ldrsh r1, [r0, #2]
cmp r1, #0
subgt r1, r1, #1
strgth r1, [r0, #2]
ldr r0, _02017AAC ; =_022A4BE8
ldrsh r1, [r0]
cmp r1, #0
subgt r1, r1, #1
strgth r1, [r0]
bx lr
.align 2, 0
_02017AAC: .word _022A4BE8
arm_func_end sub_02017A80
arm_func_start sub_02017AB0
sub_02017AB0: ; 0x02017AB0
stmdb sp!, {r3, lr}
bl StopBgmCommand
bl sub_02018118
bl sub_02018278
mov r0, #0x3f00
bl sub_02018428
ldmia sp!, {r3, pc}
arm_func_end sub_02017AB0
arm_func_start sub_02017ACC
sub_02017ACC: ; 0x02017ACC
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02017F28
mov r0, r4
bl sub_02018158
ldr r0, _02017AFC ; =0x000003E6
mov r1, r4
bl sub_02018460
mov r1, r4
mov r0, #0x3f00
bl sub_02018460
ldmia sp!, {r4, pc}
.align 2, 0
_02017AFC: .word 0x000003E6
arm_func_end sub_02017ACC
arm_func_start sub_02017B00
sub_02017B00: ; 0x02017B00
ldr ip, _02017B08 ; =sub_02017D80
bx ip
.align 2, 0
_02017B08: .word sub_02017D80
arm_func_end sub_02017B00
arm_func_start sub_02017B0C
sub_02017B0C: ; 0x02017B0C
ldr ip, _02017B14 ; =sub_02017DE8
bx ip
.align 2, 0
_02017B14: .word sub_02017DE8
arm_func_end sub_02017B0C
arm_func_start sub_02017B18
sub_02017B18: ; 0x02017B18
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02017D80
ldr r1, _02017B54 ; =0x000003E7
cmp r4, r1
bne _02017B40
cmp r0, r1
movne r0, #1
moveq r0, #0
b _02017B4C
_02017B40:
cmp r0, r4
moveq r0, #1
movne r0, #0
_02017B4C:
and r0, r0, #0xff
ldmia sp!, {r4, pc}
.align 2, 0
_02017B54: .word 0x000003E7
arm_func_end sub_02017B18
arm_func_start PlayBgmByIdVeneer
PlayBgmByIdVeneer: ; 0x02017B58
ldr ip, _02017B60 ; =PlayBgmById
bx ip
.align 2, 0
_02017B60: .word PlayBgmById
arm_func_end PlayBgmByIdVeneer
arm_func_start PlayBgmByIdVolumeVeneer
PlayBgmByIdVolumeVeneer: ; 0x02017B64
ldr ip, _02017B6C ; =PlayBgmByIdVolume
bx ip
.align 2, 0
_02017B6C: .word PlayBgmByIdVolume
arm_func_end PlayBgmByIdVolumeVeneer
arm_func_start sub_02017B70
sub_02017B70: ; 0x02017B70
ldr ip, _02017B78 ; =StopBgmCommand
bx ip
.align 2, 0
_02017B78: .word StopBgmCommand
arm_func_end sub_02017B70
arm_func_start sub_02017B7C
sub_02017B7C: ; 0x02017B7C
ldr ip, _02017B84 ; =sub_02017F28
bx ip
.align 2, 0
_02017B84: .word sub_02017F28
arm_func_end sub_02017B7C
arm_func_start sub_02017B88
sub_02017B88: ; 0x02017B88
ldr ip, _02017B90 ; =sub_02017F64
bx ip
.align 2, 0
_02017B90: .word sub_02017F64
arm_func_end sub_02017B88
arm_func_start sub_02017B94
sub_02017B94: ; 0x02017B94
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02017FBC
ldr r1, _02017BD0 ; =0x000003E7
cmp r4, r1
bne _02017BBC
cmp r0, r1
movne r0, #1
moveq r0, #0
b _02017BC8
_02017BBC:
cmp r0, r4
moveq r0, #1
movne r0, #0
_02017BC8:
and r0, r0, #0xff
ldmia sp!, {r4, pc}
.align 2, 0
_02017BD0: .word 0x000003E7
arm_func_end sub_02017B94
arm_func_start sub_02017BD4
sub_02017BD4: ; 0x02017BD4
ldr ip, _02017BDC ; =sub_02018024
bx ip
.align 2, 0
_02017BDC: .word sub_02018024
arm_func_end sub_02017BD4
arm_func_start sub_02017BE0
sub_02017BE0: ; 0x02017BE0
ldr ip, _02017BE8 ; =sub_020180A0
bx ip
.align 2, 0
_02017BE8: .word sub_020180A0
arm_func_end sub_02017BE0
arm_func_start sub_02017BEC
sub_02017BEC: ; 0x02017BEC
ldr ip, _02017BF4 ; =sub_02018118
bx ip
.align 2, 0
_02017BF4: .word sub_02018118
arm_func_end sub_02017BEC
arm_func_start sub_02017BF8
sub_02017BF8: ; 0x02017BF8
ldr ip, _02017C00 ; =sub_02018158
bx ip
.align 2, 0
_02017C00: .word sub_02018158
arm_func_end sub_02017BF8
arm_func_start sub_02017C04
sub_02017C04: ; 0x02017C04
ldr ip, _02017C0C ; =sub_02018194
bx ip
.align 2, 0
_02017C0C: .word sub_02018194
arm_func_end sub_02017C04
arm_func_start sub_02017C10
sub_02017C10: ; 0x02017C10
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_020181E0
ldr r1, _02017C4C ; =0x000003E6
cmp r4, r1
bne _02017C38
cmp r0, r1
movne r0, #1
moveq r0, #0
b _02017C44
_02017C38:
cmp r0, r4
moveq r0, #1
movne r0, #0
_02017C44:
and r0, r0, #0xff
ldmia sp!, {r4, pc}
.align 2, 0
_02017C4C: .word 0x000003E6
arm_func_end sub_02017C10
arm_func_start sub_02017C50
sub_02017C50: ; 0x02017C50
ldr ip, _02017C58 ; =PlayMeById
bx ip
.align 2, 0
_02017C58: .word PlayMeById
arm_func_end sub_02017C50
arm_func_start sub_02017C5C
sub_02017C5C: ; 0x02017C5C
ldr ip, _02017C64 ; =sub_02018278
bx ip
.align 2, 0
_02017C64: .word sub_02018278
arm_func_end sub_02017C5C
arm_func_start sub_02017C68
sub_02017C68: ; 0x02017C68
ldr ip, _02017C70 ; =sub_020182AC
bx ip
.align 2, 0
_02017C70: .word sub_020182AC
arm_func_end sub_02017C68
arm_func_start sub_02017C74
sub_02017C74: ; 0x02017C74
ldr ip, _02017C7C ; =PlaySeByIdVolume
bx ip
.align 2, 0
_02017C7C: .word PlaySeByIdVolume
arm_func_end sub_02017C74
arm_func_start PlaySeByIdVolumeWrapper
PlaySeByIdVolumeWrapper: ; 0x02017C80
ldr ip, _02017C8C ; =PlaySeByIdVolume
mov r1, #0x100
bx ip
.align 2, 0
_02017C8C: .word PlaySeByIdVolume
arm_func_end PlaySeByIdVolumeWrapper
arm_func_start sub_02017C90
sub_02017C90: ; 0x02017C90
ldr ip, _02017C98 ; =sub_0201831C
bx ip
.align 2, 0
_02017C98: .word sub_0201831C
arm_func_end sub_02017C90
arm_func_start sub_02017C9C
sub_02017C9C: ; 0x02017C9C
ldr ip, _02017CA4 ; =sub_020183A0
bx ip
.align 2, 0
_02017CA4: .word sub_020183A0
arm_func_end sub_02017C9C
arm_func_start sub_02017CA8
sub_02017CA8: ; 0x02017CA8
ldr ip, _02017CB0 ; =sub_020183E4
bx ip
.align 2, 0
_02017CB0: .word sub_020183E4
arm_func_end sub_02017CA8
arm_func_start sub_02017CB4
sub_02017CB4: ; 0x02017CB4
ldr ip, _02017CBC ; =sub_02018428
bx ip
.align 2, 0
_02017CBC: .word sub_02018428
arm_func_end sub_02017CB4
arm_func_start sub_02017CC0
sub_02017CC0: ; 0x02017CC0
ldr ip, _02017CC8 ; =sub_02018460
bx ip
.align 2, 0
_02017CC8: .word sub_02018460
arm_func_end sub_02017CC0
arm_func_start PlaySeVolumeWrapper
PlaySeVolumeWrapper: ; 0x02017CCC
ldr r1, _02017CE4 ; =_0209915C
mov r0, r0, lsl #1
ldrh r0, [r1, r0]
ldr ip, _02017CE8 ; =PlaySeByIdVolume
mov r1, #0x100
bx ip
.align 2, 0
_02017CE4: .word _0209915C
_02017CE8: .word PlaySeByIdVolume
arm_func_end PlaySeVolumeWrapper
arm_func_start sub_02017CEC
sub_02017CEC: ; 0x02017CEC
stmdb sp!, {r3, lr}
ldr r2, _02017D18 ; =_022A4BE8
ldrsh r0, [r2]
cmp r0, #0
ldmgtia sp!, {r3, pc}
ldr r0, _02017D1C ; =0x00003F05
mov r3, #3
mov r1, #0x100
strh r3, [r2]
bl PlaySeByIdVolume
ldmia sp!, {r3, pc}
.align 2, 0
_02017D18: .word _022A4BE8
_02017D1C: .word 0x00003F05
arm_func_end sub_02017CEC
arm_func_start sub_02017D20
sub_02017D20: ; 0x02017D20
stmdb sp!, {r3, lr}
bl sub_020184CC
bl sub_02018B50
ldr r2, _02017D74 ; =0x000003E7
ldr r0, _02017D78 ; =_022A4BEC
mov r1, #0
strh r2, [r0]
strh r2, [r0, #2]
strh r1, [r0, #4]
strh r2, [r0, #6]
strh r2, [r0, #8]
strh r1, [r0, #0xa]
sub r1, r2, #1
strh r1, [r0, #0xc]
mov r1, #0x3f00
strh r1, [r0, #0x10]
bl sub_02018C0C
ldr r0, _02017D7C ; =_020AF77C
mov r1, #1
strb r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_02017D74: .word 0x000003E7
_02017D78: .word _022A4BEC
_02017D7C: .word _020AF77C
arm_func_end sub_02017D20
arm_func_start sub_02017D80
sub_02017D80: ; 0x02017D80
stmdb sp!, {r3, lr}
bl sub_02019824
ldr r2, _02017DAC ; =0x000003E7
cmp r0, r2
ldreq r1, _02017DB0 ; =_022A4BEC
moveq r0, r2
streqh r2, [r1]
ldrne r0, _02017DB0 ; =_022A4BEC
streqh r2, [r1, #2]
ldrneh r0, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_02017DAC: .word 0x000003E7
_02017DB0: .word _022A4BEC
arm_func_end sub_02017D80
arm_func_start sub_02017DB4
sub_02017DB4: ; 0x02017DB4
stmdb sp!, {r3, lr}
bl sub_02019824
ldr r2, _02017DE0 ; =0x000003E7
cmp r0, r2
ldreq r1, _02017DE4 ; =_022A4BEC
moveq r0, r2
streqh r2, [r1]
ldrne r0, _02017DE4 ; =_022A4BEC
streqh r2, [r1, #2]
ldrneh r0, [r0, #2]
ldmia sp!, {r3, pc}
.align 2, 0
_02017DE0: .word 0x000003E7
_02017DE4: .word _022A4BEC
arm_func_end sub_02017DB4
arm_func_start sub_02017DE8
sub_02017DE8: ; 0x02017DE8
ldr ip, _02017DF0 ; =IsSongOver
bx ip
.align 2, 0
_02017DF0: .word IsSongOver
arm_func_end sub_02017DE8
arm_func_start PlayBgmById
PlayBgmById: ; 0x02017DF4
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _02017E68 ; =0x000003E7
mov r5, r0
cmp r5, r1
ldrne r0, _02017E6C ; =_022A4BEC
ldrneh r0, [r0, #2]
cmpne r5, r0
ldmeqia sp!, {r3, r4, r5, pc}
bl sub_02018B50
ldr r1, _02017E6C ; =_022A4BEC
mov r2, #0x100
strh r5, [r1]
strh r5, [r1, #2]
mov r0, #3
strh r2, [r1, #4]
bl AllocAudioCommand
mov r4, r0
mov r0, #3
strh r5, [r4, #4]
bl Debug_GetDebugFlag
cmp r0, #0
movne r1, #0
moveq r1, #0x100
strh r1, [r4, #6]
mov r1, #0
mov r0, r4
strh r1, [r4, #8]
bl SendAudioCommand
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02017E68: .word 0x000003E7
_02017E6C: .word _022A4BEC
arm_func_end PlayBgmById
arm_func_start PlayBgmByIdVolume
PlayBgmByIdVolume: ; 0x02017E70
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r3, _02017EE0 ; =0x000003E7
mov r6, r0
cmp r6, r3
ldrne r0, _02017EE4 ; =_022A4BEC
mov r5, r1
ldrneh r0, [r0, #2]
mov r4, r2
cmpne r6, r0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
bl sub_02018B50
ldr r1, _02017EE4 ; =_022A4BEC
mov r0, #3
strh r6, [r1]
strh r6, [r1, #2]
strh r4, [r1, #4]
bl AllocAudioCommand
mov r7, r0
mov r0, #3
strh r6, [r7, #4]
bl Debug_GetDebugFlag
cmp r0, #0
movne r4, #0
strh r4, [r7, #6]
mov r0, r7
strh r5, [r7, #8]
bl SendAudioCommand
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02017EE0: .word 0x000003E7
_02017EE4: .word _022A4BEC
arm_func_end PlayBgmByIdVolume
arm_func_start StopBgmCommand
StopBgmCommand: ; 0x02017EE8
stmdb sp!, {r3, lr}
bl sub_02018B50
ldr r0, _02017F20 ; =0x000003E7
ldr r1, _02017F24 ; =_022A4BEC
mov r2, #0
strh r0, [r1]
strh r0, [r1, #2]
mov r0, #5
strh r2, [r1, #4]
bl AllocAudioCommand
mov r1, #0
strh r1, [r0, #8]
bl SendAudioCommand
ldmia sp!, {r3, pc}
.align 2, 0
_02017F20: .word 0x000003E7
_02017F24: .word _022A4BEC
arm_func_end StopBgmCommand
arm_func_start sub_02017F28
sub_02017F28: ; 0x02017F28
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02018B50
ldr r2, _02017F5C ; =0x000003E7
ldr r0, _02017F60 ; =_022A4BEC
mov r1, #0
strh r2, [r0, #2]
strh r1, [r0, #4]
mov r0, #5
bl AllocAudioCommand
strh r4, [r0, #8]
bl SendAudioCommand
ldmia sp!, {r4, pc}
.align 2, 0
_02017F5C: .word 0x000003E7
_02017F60: .word _022A4BEC
arm_func_end sub_02017F28
arm_func_start sub_02017F64
sub_02017F64: ; 0x02017F64
stmdb sp!, {r3, r4, r5, lr}
ldr r3, _02017FA8 ; =_022A4BEC
ldr r2, _02017FAC ; =0x000003E7
ldrh r3, [r3, #2]
mov r5, r0
mov r4, r1
cmp r3, r2
ldmeqia sp!, {r3, r4, r5, pc}
bl sub_02018B50
ldr r1, _02017FA8 ; =_022A4BEC
mov r0, #6
strh r4, [r1, #4]
bl AllocAudioCommand
strh r4, [r0, #6]
strh r5, [r0, #8]
bl SendAudioCommand
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02017FA8: .word _022A4BEC
_02017FAC: .word 0x000003E7
arm_func_end sub_02017F64
arm_func_start sub_02017FB0
sub_02017FB0: ; 0x02017FB0
ldr ip, _02017FB8 ; =sub_02019D04
bx ip
.align 2, 0
_02017FB8: .word sub_02019D04
arm_func_end sub_02017FB0
arm_func_start sub_02017FBC
sub_02017FBC: ; 0x02017FBC
stmdb sp!, {r3, lr}
bl sub_02019D58
ldr r2, _02017FE8 ; =0x000003E7
cmp r0, r2
ldreq r1, _02017FEC ; =_022A4BEC
moveq r0, r2
streqh r2, [r1, #6]
ldrne r0, _02017FEC ; =_022A4BEC
streqh r2, [r1, #8]
ldrneh r0, [r0, #6]
ldmia sp!, {r3, pc}
.align 2, 0
_02017FE8: .word 0x000003E7
_02017FEC: .word _022A4BEC
arm_func_end sub_02017FBC
arm_func_start sub_02017FF0
sub_02017FF0: ; 0x02017FF0
stmdb sp!, {r3, lr}
bl sub_02019D58
ldr r2, _0201801C ; =0x000003E7
cmp r0, r2
ldreq r1, _02018020 ; =_022A4BEC
moveq r0, r2
streqh r2, [r1, #6]
ldrne r0, _02018020 ; =_022A4BEC
streqh r2, [r1, #8]
ldrneh r0, [r0, #8]
ldmia sp!, {r3, pc}
.align 2, 0
_0201801C: .word 0x000003E7
_02018020: .word _022A4BEC
arm_func_end sub_02017FF0
arm_func_start sub_02018024
sub_02018024: ; 0x02018024
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _02018098 ; =0x000003E7
mov r5, r0
cmp r5, r1
ldrne r0, _0201809C ; =_022A4BEC
ldrneh r0, [r0, #8]
cmpne r5, r0
ldmeqia sp!, {r3, r4, r5, pc}
bl sub_02018B50
ldr r1, _0201809C ; =_022A4BEC
mov r2, #0x100
strh r5, [r1, #6]
strh r5, [r1, #8]
mov r0, #7
strh r2, [r1, #0xa]
bl AllocAudioCommand
mov r4, r0
mov r0, #3
strh r5, [r4, #4]
bl Debug_GetDebugFlag
cmp r0, #0
movne r1, #0
moveq r1, #0x100
strh r1, [r4, #6]
mov r1, #0
mov r0, r4
strh r1, [r4, #8]
bl SendAudioCommand
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02018098: .word 0x000003E7
_0201809C: .word _022A4BEC
arm_func_end sub_02018024
arm_func_start sub_020180A0
sub_020180A0: ; 0x020180A0
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r3, _02018110 ; =0x000003E7
mov r6, r0
cmp r6, r3
ldrne r0, _02018114 ; =_022A4BEC
mov r5, r1
ldrneh r0, [r0, #8]
mov r4, r2
cmpne r6, r0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
bl sub_02018B50
ldr r1, _02018114 ; =_022A4BEC
mov r0, #7
strh r6, [r1, #6]
strh r6, [r1, #8]
strh r4, [r1, #0xa]
bl AllocAudioCommand
mov r7, r0
mov r0, #3
strh r6, [r7, #4]
bl Debug_GetDebugFlag
cmp r0, #0
movne r4, #0
strh r4, [r7, #6]
mov r0, r7
strh r5, [r7, #8]
bl SendAudioCommand
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02018110: .word 0x000003E7
_02018114: .word _022A4BEC
arm_func_end sub_020180A0
arm_func_start sub_02018118
sub_02018118: ; 0x02018118
stmdb sp!, {r3, lr}
bl sub_02018B50
ldr r0, _02018150 ; =0x000003E7
ldr r1, _02018154 ; =_022A4BEC
mov r2, #0
strh r0, [r1, #6]
strh r0, [r1, #8]
mov r0, #9
strh r2, [r1, #0xa]
bl AllocAudioCommand
mov r1, #0
strh r1, [r0, #8]
bl SendAudioCommand
ldmia sp!, {r3, pc}
.align 2, 0
_02018150: .word 0x000003E7
_02018154: .word _022A4BEC
arm_func_end sub_02018118
arm_func_start sub_02018158
sub_02018158: ; 0x02018158
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_02018B50
ldr r2, _0201818C ; =0x000003E7
ldr r0, _02018190 ; =_022A4BEC
mov r1, #0
strh r2, [r0, #8]
strh r1, [r0, #0xa]
mov r0, #9
bl AllocAudioCommand
strh r4, [r0, #8]
bl SendAudioCommand
ldmia sp!, {r4, pc}
.align 2, 0
_0201818C: .word 0x000003E7
_02018190: .word _022A4BEC
arm_func_end sub_02018158
arm_func_start sub_02018194
sub_02018194: ; 0x02018194
stmdb sp!, {r3, r4, r5, lr}
ldr r3, _020181D8 ; =_022A4BEC
ldr r2, _020181DC ; =0x000003E7
ldrh r3, [r3, #8]
mov r5, r0
mov r4, r1
cmp r3, r2
ldmeqia sp!, {r3, r4, r5, pc}
bl sub_02018B50
ldr r1, _020181D8 ; =_022A4BEC
mov r0, #0xa
strh r4, [r1, #0xa]
bl AllocAudioCommand
strh r4, [r0, #6]
strh r5, [r0, #8]
bl SendAudioCommand
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020181D8: .word _022A4BEC
_020181DC: .word 0x000003E7
arm_func_end sub_02018194
arm_func_start sub_020181E0
sub_020181E0: ; 0x020181E0
stmdb sp!, {r3, lr}
bl sub_0201A19C
ldr r1, _02018204 ; =0x000003E6
cmp r0, r1
ldreq r0, _02018208 ; =_022A4BEC
streqh r1, [r0, #0xc]
ldrne r0, _02018208 ; =_022A4BEC
ldrh r0, [r0, #0xc]
ldmia sp!, {r3, pc}
.align 2, 0
_02018204: .word 0x000003E6
_02018208: .word _022A4BEC
arm_func_end sub_020181E0
arm_func_start PlayMeById
PlayMeById: ; 0x0201820C
stmdb sp!, {r3, r4, r5, lr}
ldr r1, _02018270 ; =0x000003E6
mov r5, r0
cmp r5, r1
ldmeqia sp!, {r3, r4, r5, pc}
cmp r5, #0xd
ldmhiia sp!, {r3, r4, r5, pc}
bl sub_02018B50
ldr r1, _02018274 ; =_022A4BEC
mov r0, #0xb
strh r5, [r1, #0xc]
bl AllocAudioCommand
mov r4, r0
mov r0, #3
strh r5, [r4, #4]
bl Debug_GetDebugFlag
cmp r0, #0
movne r1, #0
moveq r1, #0x100
strh r1, [r4, #6]
mov r1, #0
mov r0, r4
strh r1, [r4, #8]
bl SendAudioCommand
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02018270: .word 0x000003E6
_02018274: .word _022A4BEC
arm_func_end PlayMeById
arm_func_start sub_02018278
sub_02018278: ; 0x02018278
stmdb sp!, {r3, lr}
bl sub_02018B50
ldr r2, _020182A4 ; =0x000003E6
ldr r1, _020182A8 ; =_022A4BEC
mov r0, #0xc
strh r2, [r1, #0xc]
bl AllocAudioCommand
mov r1, #0
strh r1, [r0, #8]
bl SendAudioCommand
ldmia sp!, {r3, pc}
.align 2, 0
_020182A4: .word 0x000003E6
_020182A8: .word _022A4BEC
arm_func_end sub_02018278
arm_func_start sub_020182AC
sub_020182AC: ; 0x020182AC
ldr ip, _020182B4 ; =sub_0201A480
bx ip
.align 2, 0
_020182B4: .word sub_0201A480
arm_func_end sub_020182AC
arm_func_start PlaySeByIdVolume
PlaySeByIdVolume: ; 0x020182B8
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
ldr r1, _02018318 ; =_0209916C
mov r2, r6
mov r3, r5
mov r0, #8
bl Debug_Print
cmp r6, #0x3f00
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, #0xd
cmp r5, #0x100
movhi r5, #0x100
bl sub_02018A78
mov r4, r0
mov r0, #4
strh r6, [r4, #4]
bl Debug_GetDebugFlag
cmp r0, #0
movne r5, #0
mov r0, r4
strh r5, [r4, #8]
bl SendAudioCommand2
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02018318: .word _0209916C
arm_func_end PlaySeByIdVolume
arm_func_start sub_0201831C
sub_0201831C: ; 0x0201831C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #8
mov r8, r0
mov r6, r2
mov r7, r1
mov r5, r3
str r6, [sp]
ldr r1, _0201839C ; =_0209918C
mov r2, r8
mov r3, r7
mov r0, #8
str r5, [sp, #4]
bl Debug_Print
cmp r8, #0x3f00
beq _02018394
mov r0, #0xe
cmp r6, #0x100
movhi r6, #0x100
bl sub_02018A78
mov r4, r0
strh r8, [r4, #4]
mov r0, #4
strh r7, [r4, #6]
bl Debug_GetDebugFlag
cmp r0, #0
movne r6, #0
strh r6, [r4, #8]
mov r0, r4
strh r5, [r4, #0xa]
bl SendAudioCommand2
_02018394:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_0201839C: .word _0209918C
arm_func_end sub_0201831C
arm_func_start sub_020183A0
sub_020183A0: ; 0x020183A0
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r4, r2
mov r5, r1
ldr r1, _020183E0 ; =_020991C8
mov r2, r6
mov r3, r4
mov r0, #8
bl Debug_Print
mov r0, #0x10
bl sub_02018A78
strh r6, [r0, #4]
strh r5, [r0, #6]
strh r4, [r0, #8]
bl SendAudioCommand2
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020183E0: .word _020991C8
arm_func_end sub_020183A0
arm_func_start sub_020183E4
sub_020183E4: ; 0x020183E4
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r4, r2
mov r5, r1
ldr r1, _02018424 ; =_020991F0
mov r2, r6
mov r3, r4
mov r0, #8
bl Debug_Print
mov r0, #0x11
bl sub_02018A78
strh r6, [r0, #4]
strh r5, [r0, #6]
strh r4, [r0, #0xa]
bl SendAudioCommand2
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02018424: .word _020991F0
arm_func_end sub_020183E4
arm_func_start sub_02018428
sub_02018428: ; 0x02018428
stmdb sp!, {r4, lr}
mov r4, r0
ldr r1, _0201845C ; =_02099210
mov r2, r4
mov r0, #8
bl Debug_Print
mov r0, #0xf
bl sub_02018A78
strh r4, [r0, #4]
mov r1, #0
strh r1, [r0, #6]
bl SendAudioCommand2
ldmia sp!, {r4, pc}
.align 2, 0
_0201845C: .word _02099210
arm_func_end sub_02018428
arm_func_start sub_02018460
sub_02018460: ; 0x02018460
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
ldr r1, _02018498 ; =_02099224
mov r2, r5
mov r3, r4
mov r0, #8
bl Debug_Print
mov r0, #0xf
bl sub_02018A78
strh r5, [r0, #4]
strh r4, [r0, #6]
bl SendAudioCommand2
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02018498: .word _02099224
arm_func_end sub_02018460
arm_func_start sub_0201849C
sub_0201849C: ; 0x0201849C
ldr ip, _020184A4 ; =sub_0201906C
bx ip
.align 2, 0
_020184A4: .word sub_0201906C
arm_func_end sub_0201849C
arm_func_start sub_020184A8
sub_020184A8: ; 0x020184A8
ldr ip, _020184B0 ; =sub_02019260
bx ip
.align 2, 0
_020184B0: .word sub_02019260
arm_func_end sub_020184A8
arm_func_start sub_020184B4
sub_020184B4: ; 0x020184B4
ldr ip, _020184BC ; =sub_0201929C
bx ip
.align 2, 0
_020184BC: .word sub_0201929C
arm_func_end sub_020184B4
arm_func_start sub_020184C0
sub_020184C0: ; 0x020184C0
ldr ip, _020184C8 ; =sub_020192D0
bx ip
.align 2, 0
_020184C8: .word sub_020192D0
arm_func_end sub_020184C0
arm_func_start sub_020184CC
sub_020184CC: ; 0x020184CC
stmdb sp!, {r3, lr}
bl InitSoundSystem
ldr r0, _020185CC ; =_020AF7C0
bl sub_02002C40
ldr r0, _020185D0 ; =_022A4C00
mov r1, #0x11
bl sub_02002F34
ldr r0, _020185D4 ; =_022A4C28
mov r1, #0x11
bl sub_02002F34
mov r1, #0x10
ldr r0, _020185D8 ; =_020AF7E4
mov r2, r1
bl sub_02002A9C
mov r2, #0
ldr r1, _020185DC ; =AUDIO_COMMANDS_BUFFER
mov r0, r2
_02018510:
add r2, r2, #1
cmp r2, #0x10
str r0, [r1], #0x20
blt _02018510
ldr r0, _020185E0 ; =_020AF780
ldr r1, _020185E4 ; =0x00000701
ldr r0, [r0, #0x34]
bl MemAlloc
ldr r2, _020185E0 ; =_020AF780
ldr r1, _020185E4 ; =0x00000701
str r0, [r2, #0x30]
ldr r0, [r2, #0xc]
bl MemAlloc
ldr r2, _020185E0 ; =_020AF780
ldr r1, _020185E4 ; =0x00000701
str r0, [r2, #8]
ldr r0, [r2, #0x20]
bl MemAlloc
ldr r2, _020185E0 ; =_020AF780
ldr r1, _020185E8 ; =_020AF7AC
str r0, [r2, #0x1c]
ldr r0, _020185EC ; =_020AF96C
mov r2, #0
bl sub_02002778
ldr r0, _020185F0 ; =_020AFA48
ldr r1, _020185F4 ; =_020AF784
mov r2, #0
bl sub_02002778
ldr r0, _020185F8 ; =_020AF890
ldr r1, _020185FC ; =_020AF798
mov r2, #0
bl sub_02002778
ldr r0, _020185CC ; =_020AF7C0
bl sub_02002E98
ldr r0, _020185EC ; =_020AF96C
bl sub_020027E8
ldr r0, _020185CC ; =_020AF7C0
bl sub_02002CB4
ldr r0, _020185CC ; =_020AF7C0
mov r1, #8
bl sub_02002CAC
ldr r0, _020185CC ; =_020AF7C0
bl sub_02002E98
mov r1, #1
ldr r0, _020185E0 ; =_020AF780
strb r1, [r0, #1]
ldmia sp!, {r3, pc}
.align 2, 0
_020185CC: .word _020AF7C0
_020185D0: .word _022A4C00
_020185D4: .word _022A4C28
_020185D8: .word _020AF7E4
_020185DC: .word AUDIO_COMMANDS_BUFFER
_020185E0: .word _020AF780
_020185E4: .word 0x00000701
_020185E8: .word _020AF7AC
_020185EC: .word _020AF96C
_020185F0: .word _020AFA48
_020185F4: .word _020AF784
_020185F8: .word _020AF890
_020185FC: .word _020AF798
arm_func_end sub_020184CC
arm_func_start sub_02018600
sub_02018600: ; 0x02018600
stmdb sp!, {r3, lr}
bl ManipBgmPlayback
ldr r0, _02018624 ; =_020AFA48
bl sub_020027E8
ldr r0, _02018628 ; =_020AF890
bl sub_020027E8
_02018618:
bl sub_02003AB0
bl ManipBgmPlayback
b _02018618
.align 2, 0
_02018624: .word _020AFA48
_02018628: .word _020AF890
arm_func_end sub_02018600
arm_func_start sub_0201862C
sub_0201862C: ; 0x0201862C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov fp, #1
ldr sl, _020187F0 ; =_022A4C28
ldr sb, _020187F4 ; =_022A4C00
ldr r4, _020187F8 ; =_020AF780
mov r6, #2
mov r5, #0
add r8, sp, #0
mov r7, fp
_02018650:
mov r0, sb
mov r1, r8
mov r2, r7
bl sub_02002F98
ldr r0, [sp]
ldr r0, [r0]
cmp r0, #1
ldreqb r0, [r4, #1]
beq _02018650
mov r0, r6
bl Debug_GetDebugFlag
cmp r0, #0
bne _020187D0
ldr r1, [sp]
ldr r0, [r1]
cmp r0, #0x11
addls pc, pc, r0, lsl #2
b _020187D0
_02018698: ; jump table
b _020187D0 ; case 0
b _020187D0 ; case 1
b _020186E0 ; case 2
b _020186E0 ; case 3
b _020186E0 ; case 4
b _020186E0 ; case 5
b _020186E0 ; case 6
b _020186E0 ; case 7
b _020186E0 ; case 8
b _020186E0 ; case 9
b _020186E0 ; case 10
b _020186E0 ; case 11
b _020186E0 ; case 12
b _020186F0 ; case 13
b _020186F0 ; case 14
b _02018790 ; case 15
b _020186F0 ; case 16
b _020186F0 ; case 17
_020186E0:
mov r0, sl
mov r2, fp
bl sub_02002F7C
b _02018650
_020186F0:
ldrh r0, [r1, #4]
bl sub_0201AAA0
cmp r0, #0
bne _02018714
ldr r1, [sp]
mov r0, sl
mov r2, #1
bl sub_02002F7C
b _02018650
_02018714:
ldr r3, [sp]
ldr r0, [r3]
sub r0, r0, #0xd
cmp r0, #4
addls pc, pc, r0, lsl #2
b _020187D0
_0201872C: ; jump table
b _02018740 ; case 0
b _02018750 ; case 1
b _020187D0 ; case 2
b _02018768 ; case 3
b _0201877C ; case 4
_02018740:
ldrh r0, [r3, #4]
ldrh r1, [r3, #8]
bl PlaySe
b _020187D0
_02018750:
ldrh r0, [r3, #4]
ldrh r1, [r3, #6]
ldrh r2, [r3, #8]
ldrsh r3, [r3, #0xa]
bl PlaySeFullSpec
b _020187D0
_02018768:
ldrh r0, [r3, #4]
ldrh r1, [r3, #6]
ldrh r2, [r3, #8]
bl SeChangeVolume
b _020187D0
_0201877C:
ldrh r0, [r3, #4]
ldrh r1, [r3, #6]
ldrsh r2, [r3, #0xa]
bl SeChangePan
b _020187D0
_02018790:
ldrh r0, [r1, #4]
cmp r0, #0x3f00
beq _020187BC
bl sub_0201AAA0
cmp r0, #0
beq _020187BC
ldr r1, [sp]
ldrh r0, [r1, #4]
ldrh r1, [r1, #6]
bl StopSe
b _020187D0
_020187BC:
ldr r1, [sp]
mov r0, sl
mov r2, #1
bl sub_02002F7C
b _02018650
_020187D0:
ldr r0, _020187FC ; =_020AF7C0
bl sub_02002CB4
ldr r1, [sp]
ldr r0, _020187FC ; =_020AF7C0
str r5, [r1]
ldr r1, _02018800 ; =_020AF7E4
bl sub_02002ECC
b _02018650
.align 2, 0
_020187F0: .word _022A4C28
_020187F4: .word _022A4C00
_020187F8: .word _020AF780
_020187FC: .word _020AF7C0
_02018800: .word _020AF7E4
arm_func_end sub_0201862C
arm_func_start sub_02018804
sub_02018804: ; 0x02018804
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
_0201880C:
ldr r0, _02018A64 ; =_022A4C28
add r1, sp, #0
mov r2, #1
bl sub_02002F98
ldr r3, [sp]
ldr r0, [r3]
cmp r0, #0x11
addls pc, pc, r0, lsl #2
b _02018A40
_02018830: ; jump table
b _02018A40 ; case 0
b _02018A40 ; case 1
b _02018878 ; case 2
b _02018880 ; case 3
b _020188B4 ; case 4
b _02018900 ; case 5
b _0201890C ; case 6
b _0201891C ; case 7
b _02018950 ; case 8
b _0201899C ; case 9
b _020189A8 ; case 10
b _020189B8 ; case 11
b _020189D0 ; case 12
b _020189DC ; case 13
b _020189F0 ; case 14
b _02018A0C ; case 15
b _02018A1C ; case 16
b _02018A30 ; case 17
_02018878:
bl SoundDriverReset
b _02018A40
_02018880:
ldr r4, _02018A68 ; =0x000003E6
b _0201888C
_02018888:
bl sub_02003AB0
_0201888C:
bl sub_0201A19C
cmp r0, r4
bne _02018888
ldr r2, [sp]
ldrh r0, [r2, #4]
ldrh r1, [r2, #8]
ldrh r2, [r2, #6]
bl PlayBgm
bl sub_02003AB0
b _02018A40
_020188B4:
ldr r4, _02018A68 ; =0x000003E6
b _020188C0
_020188BC:
bl sub_02003AB0
_020188C0:
bl sub_0201A19C
cmp r0, r4
bne _020188BC
ldr r4, _02018A6C ; =0x000003E7
b _020188D8
_020188D4:
bl sub_02003AB0
_020188D8:
bl sub_02019824
cmp r0, r4
bne _020188D4
ldr r2, [sp]
ldrh r0, [r2, #4]
ldrh r1, [r2, #8]
ldrh r2, [r2, #6]
bl PlayBgm
bl sub_02003AB0
b _02018A40
_02018900:
ldrh r0, [r3, #8]
bl StopBgm
b _02018A40
_0201890C:
ldrh r0, [r3, #8]
ldrh r1, [r3, #6]
bl ChangeBgm
b _02018A40
_0201891C:
ldr r4, _02018A68 ; =0x000003E6
b _02018928
_02018924:
bl sub_02003AB0
_02018928:
bl sub_0201A19C
cmp r0, r4
bne _02018924
ldr r2, [sp]
ldrh r0, [r2, #4]
ldrh r1, [r2, #8]
ldrh r2, [r2, #6]
bl PlayBgm2
bl sub_02003AB0
b _02018A40
_02018950:
ldr r4, _02018A68 ; =0x000003E6
b _0201895C
_02018958:
bl sub_02003AB0
_0201895C:
bl sub_0201A19C
cmp r0, r4
bne _02018958
ldr r4, _02018A6C ; =0x000003E7
b _02018974
_02018970:
bl sub_02003AB0
_02018974:
bl sub_02019D58
cmp r0, r4
bne _02018970
ldr r2, [sp]
ldrh r0, [r2, #4]
ldrh r1, [r2, #8]
ldrh r2, [r2, #6]
bl PlayBgm2
bl sub_02003AB0
b _02018A40
_0201899C:
ldrh r0, [r3, #8]
bl StopBgm2
b _02018A40
_020189A8:
ldrh r0, [r3, #8]
ldrh r1, [r3, #6]
bl ChangeBgm2
b _02018A40
_020189B8:
ldrh r0, [r3, #4]
ldrh r1, [r3, #8]
ldrh r2, [r3, #6]
bl PlayME
bl sub_02003AB0
b _02018A40
_020189D0:
ldrh r0, [r3, #8]
bl StopME
b _02018A40
_020189DC:
ldrh r0, [r3, #4]
ldrh r1, [r3, #8]
bl PlaySe
bl sub_02003AB0
b _02018A40
_020189F0:
ldrh r0, [r3, #4]
ldrh r1, [r3, #6]
ldrh r2, [r3, #8]
ldrsh r3, [r3, #0xa]
bl PlaySeFullSpec
bl sub_02003AB0
b _02018A40
_02018A0C:
ldrh r0, [r3, #4]
ldrh r1, [r3, #6]
bl StopSe
b _02018A40
_02018A1C:
ldrh r0, [r3, #4]
ldrh r1, [r3, #6]
ldrh r2, [r3, #8]
bl SeChangeVolume
b _02018A40
_02018A30:
ldrh r0, [r3, #4]
ldrh r1, [r3, #6]
ldrsh r2, [r3, #0xa]
bl SeChangePan
_02018A40:
ldr r0, _02018A70 ; =_020AF7C0
bl sub_02002CB4
ldr r2, [sp]
mov r3, #0
ldr r0, _02018A70 ; =_020AF7C0
ldr r1, _02018A74 ; =_020AF7E4
str r3, [r2]
bl sub_02002ECC
b _0201880C
.align 2, 0
_02018A64: .word _022A4C28
_02018A68: .word 0x000003E6
_02018A6C: .word 0x000003E7
_02018A70: .word _020AF7C0
_02018A74: .word _020AF7E4
arm_func_end sub_02018804
arm_func_start sub_02018A78
sub_02018A78: ; 0x02018A78
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r0, _02018AD8 ; =_020AF7C0
ldr r1, _02018ADC ; =_020AF7E4
bl sub_02002D14
mov r1, #0
ldr r4, _02018AE0 ; =AUDIO_COMMANDS_BUFFER
b _02018AC0
_02018A98:
ldr r0, [r4]
cmp r0, #0
bne _02018AB8
ldr r0, _02018AD8 ; =_020AF7C0
str r5, [r4]
bl sub_02002E98
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
_02018AB8:
add r1, r1, #1
add r4, r4, #0x20
_02018AC0:
cmp r1, #0x10
blt _02018A98
ldr r0, _02018AD8 ; =_020AF7C0
bl sub_02002E98
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02018AD8: .word _020AF7C0
_02018ADC: .word _020AF7E4
_02018AE0: .word AUDIO_COMMANDS_BUFFER
arm_func_end sub_02018A78
arm_func_start SendAudioCommand2
SendAudioCommand2: ; 0x02018AE4
stmdb sp!, {r4, lr}
ldr r1, _02018B3C ; =_022A4C00
mov r4, r0
ldr r2, [r1, #0x24]
ldr r0, [r1, #0x14]
cmp r2, r0
bne _02018B0C
ldr r0, _02018B40 ; =_022A4C00
ldr r1, _02018B44 ; =_02099240
bl sub_02002FB4
_02018B0C:
ldr r0, _02018B48 ; =_020AF7C0
bl sub_02002CB4
ldr r1, _02018B4C ; =_020AF780
mov r2, #1
ldr r0, _02018B48 ; =_020AF7C0
strb r2, [r1]
bl sub_02002E98
ldr r0, _02018B40 ; =_022A4C00
mov r1, r4
mov r2, #1
bl sub_02002F7C
ldmia sp!, {r4, pc}
.align 2, 0
_02018B3C: .word _022A4C00
_02018B40: .word _022A4C00
_02018B44: .word _02099240
_02018B48: .word _020AF7C0
_02018B4C: .word _020AF780
arm_func_end SendAudioCommand2
arm_func_start sub_02018B50
sub_02018B50: ; 0x02018B50
ldr ip, _02018B60 ; =sub_02002D14
ldr r0, _02018B64 ; =_020AF7C0
ldr r1, _02018B68 ; =_020AF7E4
bx ip
.align 2, 0
_02018B60: .word sub_02002D14
_02018B64: .word _020AF7C0
_02018B68: .word _020AF7E4
arm_func_end sub_02018B50
arm_func_start AllocAudioCommand
AllocAudioCommand: ; 0x02018B6C
mov r3, #0
ldr r2, _02018BA4 ; =AUDIO_COMMANDS_BUFFER
b _02018B94
_02018B78:
ldr r1, [r2]
cmp r1, #0
streq r0, [r2]
moveq r0, r2
bxeq lr
add r3, r3, #1
add r2, r2, #0x20
_02018B94:
cmp r3, #0x10
blt _02018B78
mov r0, #0
bx lr
.align 2, 0
_02018BA4: .word AUDIO_COMMANDS_BUFFER
arm_func_end AllocAudioCommand
arm_func_start SendAudioCommand
SendAudioCommand: ; 0x02018BA8
stmdb sp!, {r4, lr}
ldr r1, _02018BF8 ; =_022A4C00
mov r4, r0
ldr r2, [r1, #0x24]
ldr r0, [r1, #0x14]
cmp r2, r0
bne _02018BD0
ldr r0, _02018BFC ; =_022A4C00
ldr r1, _02018C00 ; =_02099240
bl sub_02002FB4
_02018BD0:
ldr r1, _02018C04 ; =_020AF780
mov r2, #1
ldr r0, _02018C08 ; =_020AF7C0
strb r2, [r1]
bl sub_02002E98
ldr r0, _02018BFC ; =_022A4C00
mov r1, r4
mov r2, #1
bl sub_02002F7C
ldmia sp!, {r4, pc}
.align 2, 0
_02018BF8: .word _022A4C00
_02018BFC: .word _022A4C00
_02018C00: .word _02099240
_02018C04: .word _020AF780
_02018C08: .word _020AF7C0
arm_func_end SendAudioCommand
arm_func_start sub_02018C0C
sub_02018C0C: ; 0x02018C0C
ldr ip, _02018C1C ; =sub_02002ECC
ldr r0, _02018C20 ; =_020AF7C0
ldr r1, _02018C24 ; =_020AF7E4
bx ip
.align 2, 0
_02018C1C: .word sub_02002ECC
_02018C20: .word _020AF7C0
_02018C24: .word _020AF7E4
arm_func_end sub_02018C0C
arm_func_start InitSoundSystem
InitSoundSystem: ; 0x02018C28
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x50
ldr r0, _02018E44 ; =_020AFB28
bl sub_02002C40
ldr r0, _02018E44 ; =_020AFB28
mov r1, #4
bl sub_02002CAC
bl sub_0207CC10
ldr r0, _02018E48 ; =0x0000FFFF
mov r1, #0
bl sub_0207C9C4
add r0, sp, #0x10
bl DseDriver_LoadDefaultSettings
mov r0, #0x10000
mov r1, #2
bl MemAlloc
ldr r2, _02018E4C ; =_022A4E50
mov r1, #0x3c000
str r0, [r2]
mov r0, #0
mov r2, #0x14
mov r3, #2
bl MemArenaAlloc
ldr r1, _02018E4C ; =_022A4E50
mov r2, #0x10000
str r0, [r1, #4]
ldr r1, [r1]
add r0, sp, #0x10
bl DseDriver_ConfigureHeap
add r0, sp, #0x10
mov r1, #0
mov r2, #4
bl sub_0206C36C
add r0, sp, #0x10
mov r1, #0
mov r2, #0xf
bl sub_0206C39C
add r0, sp, #0x10
bl DseDriver_Init
ldr r1, _02018E50 ; =_0209939C
add r0, sp, #8
bl sub_02019314
mov r1, #0
ldr r0, [sp, #8]
mov r2, r1
bl DseSwd_LoadBank
mov r1, r0
ldr r2, _02018E54 ; =_022A4E58
ldr r0, _02018E58 ; =_020993B4
str r1, [r2, #0x80]
bl Debug_Print0
ldr r1, _02018E5C ; =_020993D0
add r0, sp, #8
bl sub_02019314
ldr r0, [sp, #8]
bl DseSe_Load
mov r1, r0
ldr r0, _02018E54 ; =_022A4E58
str r1, [r0, #0x7c]
ldr r0, _02018E60 ; =_020993E8
bl Debug_Print0
ldr r1, _02018E64 ; =_02099404
add r0, sp, #0
bl sub_02019314
mov r1, #0
ldr r0, [sp]
mov r2, r1
bl DseSwd_LoadBank
mov r1, r0
ldr r2, _02018E54 ; =_022A4E58
ldr r0, _02018E68 ; =_02099418
str r1, [r2, #0x8c]
bl Debug_Print0
ldr r1, _02018E6C ; =_02099434
add r0, sp, #0
bl sub_02019314
ldr r0, [sp]
bl DseSe_Load
mov r1, r0
ldr r2, _02018E54 ; =_022A4E58
ldr r0, _02018E70 ; =_02099448
str r1, [r2, #0x88]
bl Debug_Print0
ldr r0, _02018E54 ; =_022A4E58
mov r2, #0
str r2, [r0, #0xc4]
str r2, [r0, #0x18]
str r2, [r0, #0x1c]
str r2, [r0, #0x44]
ldr r1, _02018E74 ; =0x000003E7
str r2, [r0, #0x64]
strh r1, [r0, #0x20]
strh r1, [r0, #0x48]
sub r1, r1, #1
strh r1, [r0, #0x68]
str r2, [r0, #0x94]
mov r1, #0x3f00
strh r1, [r0, #0x98]
strh r1, [r0, #0x9a]
ldr r0, _02018E78 ; =_022A4E7C
bl ZInit8
ldr r0, _02018E7C ; =_022A4E84
bl ZInit8
ldr r0, _02018E80 ; =_022A4E8C
bl ZInit8
ldr r0, _02018E84 ; =_022A4EA4
bl ZInit8
ldr r0, _02018E88 ; =_022A4EAC
bl ZInit8
ldr r0, _02018E8C ; =_022A4EB4
bl ZInit8
ldr r0, _02018E90 ; =_022A4EC4
bl ZInit8
ldr r0, _02018E94 ; =_022A4ECC
bl ZInit8
ldr r0, _02018E98 ; =_022A4EF4
bl ZInit8
ldr r4, _02018E9C ; =_022A4EFC
mov r5, #0
_02018E04:
add r0, r4, r5, lsl #3
bl ZInit8
add r5, r5, #1
cmp r5, #4
blt _02018E04
mov r1, #0
ldr r0, _02018EA0 ; =_020AFB4C
mov r2, r1
mov r3, r1
bl DseSwd_LoadMainBank
ldr r1, _02018E54 ; =_022A4E58
str r0, [r1, #4]
ldr r0, _02018E44 ; =_020AFB28
bl sub_02002E98
add sp, sp, #0x50
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02018E44: .word _020AFB28
_02018E48: .word 0x0000FFFF
_02018E4C: .word _022A4E50
_02018E50: .word _0209939C
_02018E54: .word _022A4E58
_02018E58: .word _020993B4
_02018E5C: .word _020993D0
_02018E60: .word _020993E8
_02018E64: .word _02099404
_02018E68: .word _02099418
_02018E6C: .word _02099434
_02018E70: .word _02099448
_02018E74: .word 0x000003E7
_02018E78: .word _022A4E7C
_02018E7C: .word _022A4E84
_02018E80: .word _022A4E8C
_02018E84: .word _022A4EA4
_02018E88: .word _022A4EAC
_02018E8C: .word _022A4EB4
_02018E90: .word _022A4EC4
_02018E94: .word _022A4ECC
_02018E98: .word _022A4EF4
_02018E9C: .word _022A4EFC
_02018EA0: .word _020AFB4C
arm_func_end InitSoundSystem
arm_func_start ManipBgmPlayback
ManipBgmPlayback: ; 0x02018EA4
stmdb sp!, {lr}
sub sp, sp, #0x14
ldr r0, _0201904C ; =_020AFB28
bl sub_02002CB4
ldr r0, _02019050 ; =_022A4E58
ldr r1, [r0, #0x18]
cmp r1, #0
bne _02018F5C
ldr r1, [r0, #0x1c]
cmp r1, #2
bne _02018F0C
ldr r0, [r0]
bl DseBgm_IsPlaying
cmp r0, #0
bne _02018F0C
ldr r0, _02019050 ; =_022A4E58
ldr r1, _02019054 ; =_02099464
ldrh r2, [r0, #0x20]
mov r0, #7
bl Debug_Print
bl sub_02019408
ldr r0, _02019050 ; =_022A4E58
mov r2, #0
ldr r1, _02019058 ; =0x000003E7
str r2, [r0, #0x1c]
strh r1, [r0, #0x20]
_02018F0C:
ldr r0, _02019050 ; =_022A4E58
ldr r1, [r0, #0x44]
cmp r1, #2
bne _0201903C
ldr r0, [r0, #8]
bl DseBgm_IsPlaying
cmp r0, #0
bne _0201903C
ldr r0, _02019050 ; =_022A4E58
ldr r1, _0201905C ; =_02099470
ldrh r2, [r0, #0x48]
mov r0, #7
bl Debug_Print
bl sub_02019488
ldr r0, _02019050 ; =_022A4E58
mov r2, #0
ldr r1, _02019058 ; =0x000003E7
str r2, [r0, #0x44]
strh r1, [r0, #0x48]
b _0201903C
_02018F5C:
cmp r1, #1
ldreq r1, [r0, #0x64]
cmpeq r1, #2
bne _0201903C
ldr r0, [r0, #0x10]
bl DseBgm_IsPlaying
cmp r0, #0
bne _0201903C
bl sub_02019508
ldr r0, _02019050 ; =_022A4E58
mov r2, #0
ldr r1, _02019060 ; =0x000003E6
str r2, [r0, #0x64]
strh r1, [r0, #0x68]
ldr r1, [r0, #0x1c]
cmp r1, #2
bne _02018FE0
ldrh r2, [r0, #0x20]
ldr r1, _02019064 ; =_0209947C
mov r0, #7
bl Debug_Print
ldr r0, _02019050 ; =_022A4E58
mov ip, #4
ldrh r2, [r0, #0x22]
ldr r0, [r0]
add r1, sp, #0
rsb r2, r2, r2, lsl #7
mov r2, r2, asr #8
add r3, r2, #0x3e80000
mov r2, #0
str r3, [sp, #0xc]
str ip, [sp]
bl ResumeBgm
_02018FE0:
ldr r0, _02019050 ; =_022A4E58
ldr r1, [r0, #0x44]
cmp r1, #2
bne _02019030
ldrh r2, [r0, #0x48]
ldr r1, _02019068 ; =_0209948C
mov r0, #7
bl Debug_Print
ldr r0, _02019050 ; =_022A4E58
mov ip, #4
ldrh r2, [r0, #0x4a]
ldr r0, [r0, #8]
add r1, sp, #0
rsb r2, r2, r2, lsl #7
mov r2, r2, asr #8
add r3, r2, #0x3e80000
mov r2, #0
str r3, [sp, #0xc]
str ip, [sp]
bl ResumeBgm
_02019030:
ldr r0, _02019050 ; =_022A4E58
mov r1, #0
str r1, [r0, #0x18]
_0201903C:
ldr r0, _0201904C ; =_020AFB28
bl sub_02002E98
add sp, sp, #0x14
ldmia sp!, {pc}
.align 2, 0
_0201904C: .word _020AFB28
_02019050: .word _022A4E58
_02019054: .word _02099464
_02019058: .word 0x000003E7
_0201905C: .word _02099470
_02019060: .word 0x000003E6
_02019064: .word _0209947C
_02019068: .word _0209948C
arm_func_end ManipBgmPlayback
arm_func_start sub_0201906C
sub_0201906C: ; 0x0201906C
stmdb sp!, {r3, lr}
ldr r0, _020190C0 ; =_020AFB28
bl sub_02002CB4
ldr r0, _020190C4 ; =_022A4E58
ldr r1, [r0, #0x94]
cmp r1, #2
bne _020190B4
ldr r0, [r0, #0xdc]
mov r1, #0
bl DseSe_HasPlayingInstances
cmp r0, #0
bne _020190B4
bl sub_02019790
ldr r0, _020190C4 ; =_022A4E58
mov r1, #0x3f00
strh r1, [r0, #0x98]
mov r1, #0
str r1, [r0, #0x94]
_020190B4:
ldr r0, _020190C0 ; =_020AFB28
bl sub_02002E98
ldmia sp!, {r3, pc}
.align 2, 0
_020190C0: .word _020AFB28
_020190C4: .word _022A4E58
arm_func_end sub_0201906C
arm_func_start SoundDriverReset
SoundDriverReset: ; 0x020190C8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r0, _0201924C ; =_020AFB28
bl sub_02002CB4
ldr r1, _02019250 ; =_0209949C
mov r0, #6
bl Debug_Print
ldr r4, _02019254 ; =_022A4E58
ldr r0, [r4, #0x18]
cmp r0, #1
bne _02019184
ldr r5, _0201924C ; =_020AFB28
b _0201910C
_020190F8:
mov r0, r5
bl sub_02002E98
bl sub_02003AB0
mov r0, r5
bl sub_02002CB4
_0201910C:
ldr r0, [r4, #0x64]
cmp r0, #1
beq _020190F8
cmp r0, #2
bne _02019174
ldr r0, _02019254 ; =_022A4E58
ldr r0, [r0, #0x10]
bl DseBgm_IsPlaying
cmp r0, #0
ble _02019174
ldr r0, _02019254 ; =_022A4E58
mov r1, #0
ldr r0, [r0, #0x10]
bl DseBgm_Stop
ldr r5, _0201924C ; =_020AFB28
ldr r4, _02019254 ; =_022A4E58
b _02019164
_02019150:
mov r0, r5
bl sub_02002E98
bl sub_02003AB0
mov r0, r5
bl sub_02002CB4
_02019164:
ldr r0, [r4, #0x10]
bl DseBgm_IsPlaying
cmp r0, #0
bne _02019150
_02019174:
bl sub_02019508
ldr r1, _02019258 ; =0x000003E6
ldr r0, _02019254 ; =_022A4E58
strh r1, [r0, #0x68]
_02019184:
mov r7, #0
ldr r6, _0201925C ; =0x000003E7
ldr sl, _0201924C ; =_020AFB28
ldr sb, _02019254 ; =_022A4E58
mov r8, r7
mov r4, r7
mov r5, r7
_020191A0:
ldr r0, [sb, #0x1c]
cmp r0, #2
bne _020191D4
ldr r0, [sb]
mov r1, r8
bl DseBgm_Stop
ldr r0, [sb]
bl DseBgm_IsPlaying
cmp r0, #0
bne _020191D4
bl sub_02019408
str r7, [sb, #0x1c]
strh r6, [sb, #0x20]
_020191D4:
ldr r0, [sb, #0x44]
cmp r0, #2
bne _02019208
ldr r0, [sb, #8]
mov r1, r5
bl DseBgm_Stop
ldr r0, [sb, #8]
bl DseBgm_IsPlaying
cmp r0, #0
bne _02019208
bl sub_02019488
str r4, [sb, #0x44]
strh r6, [sb, #0x48]
_02019208:
ldr r0, [sb, #0x1c]
cmp r0, #0
ldrne r0, [sb, #0x44]
cmpne r0, #0
beq _02019234
mov r0, sl
bl sub_02002E98
bl sub_02003AB0
mov r0, sl
bl sub_02002CB4
b _020191A0
_02019234:
mov r0, #0x3f00
mov r1, #0
bl StopSe
ldr r0, _0201924C ; =_020AFB28
bl sub_02002E98
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_0201924C: .word _020AFB28
_02019250: .word _0209949C
_02019254: .word _022A4E58
_02019258: .word 0x000003E6
_0201925C: .word 0x000003E7
arm_func_end SoundDriverReset
arm_func_start sub_02019260
sub_02019260: ; 0x02019260
stmdb sp!, {r3, lr}
ldr r0, _02019294 ; =_020AFB24
ldrb r0, [r0]
cmp r0, #0
ldmneia sp!, {r3, pc}
ldr r0, _02019298 ; =_020AFB28
bl sub_02002CB4
mov r0, #1
bl sub_0206C620
ldr r0, _02019294 ; =_020AFB24
mov r1, #1
strb r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_02019294: .word _020AFB24
_02019298: .word _020AFB28
arm_func_end sub_02019260
arm_func_start sub_0201929C
sub_0201929C: ; 0x0201929C
stmdb sp!, {r3, lr}
ldr r0, _020192C8 ; =_020AFB28
bl sub_02002CB4
mov r0, #0
bl sub_0206C6BC
ldr r0, _020192CC ; =0x0000FFFF
mov r1, #0
bl sub_0207C9E4
ldr r0, _020192C8 ; =_020AFB28
bl sub_02002E98
ldmia sp!, {r3, pc}
.align 2, 0
_020192C8: .word _020AFB28
_020192CC: .word 0x0000FFFF
arm_func_end sub_0201929C
arm_func_start sub_020192D0
sub_020192D0: ; 0x020192D0
stmdb sp!, {r3, lr}
ldr r0, _020192FC ; =_020AFB28
bl sub_02002CB4
ldr r0, _02019300 ; =0x0000FFFF
mov r1, #0
bl sub_0207C9C4
mov r0, #0
bl sub_0206C754
ldr r0, _020192FC ; =_020AFB28
bl sub_02002E98
ldmia sp!, {r3, pc}
.align 2, 0
_020192FC: .word _020AFB28
_02019300: .word 0x0000FFFF
arm_func_end sub_020192D0
arm_func_start sub_02019304
sub_02019304: ; 0x02019304
ldr r0, _02019310 ; =_022A4E50
ldr r0, [r0, #4]
bx lr
.align 2, 0
_02019310: .word _022A4E50
arm_func_end sub_02019304
arm_func_start sub_02019314
sub_02019314: ; 0x02019314
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x48
mov r5, r0
mov r4, r1
bl FileRom_InitDataTransfer
add r0, sp, #0
bl FileRom_Veneer_FileInit
add r0, sp, #0
mov r1, r4
bl FileRom_HandleOpen
add r0, sp, #0
bl FileGetSize
str r0, [r5, #4]
ldr r0, _02019388 ; =_022A4E50
ldr r1, [r5, #4]
ldr r0, [r0, #4]
mov r2, #2
bl MemLocateSet
str r0, [r5]
add r0, sp, #0
ldmia r5, {r1, r2}
bl FileRom_HandleRead
mov r4, r0
add r0, sp, #0
bl FileClose
bl FileRom_StopDataTransfer
mov r0, r4
add sp, sp, #0x48
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02019388: .word _022A4E50
arm_func_end sub_02019314
arm_func_start LoadDseFile
LoadDseFile: ; 0x0201938C
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x48
mov r5, r0
mov r4, r1
bl FileRom_InitDataTransfer
add r0, sp, #0
bl FileRom_Veneer_FileInit
add r0, sp, #0
mov r1, r4
bl FileRom_HandleOpen
add r0, sp, #0
bl FileGetSize
str r0, [r5, #4]
ldr r0, _02019400 ; =_022A4E50
ldr r1, [r5, #4]
ldr r0, [r0, #4]
ldr r2, _02019404 ; =0x00000302
bl MemLocateSet
str r0, [r5]
add r0, sp, #0
ldmia r5, {r1, r2}
bl FileRom_HandleRead
mov r4, r0
add r0, sp, #0
bl FileClose
bl FileRom_StopDataTransfer
mov r0, r4
add sp, sp, #0x48
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02019400: .word _022A4E50
_02019404: .word 0x00000302
arm_func_end LoadDseFile
arm_func_start sub_02019408
sub_02019408: ; 0x02019408
stmdb sp!, {r3, lr}
ldr r0, _0201947C ; =_022A4E8C
bl PointsToZero
cmp r0, #0
ldmneia sp!, {r3, pc}
ldr r0, _02019480 ; =_022A4E58
ldr r0, [r0]
bl DseBgm_Unload
ldr r0, _02019480 ; =_022A4E58
ldr r0, [r0, #4]
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl DseSwd_Unload
ldr r0, _02019484 ; =_022A4E50
ldr r1, _02019480 ; =_022A4E58
ldr r0, [r0, #4]
ldr r1, [r1, #0x34]
bl MemLocateUnset
ldr r0, _02019484 ; =_022A4E50
ldr r1, _02019480 ; =_022A4E58
ldr r0, [r0, #4]
ldr r1, [r1, #0x24]
bl MemLocateUnset
ldr r0, _02019484 ; =_022A4E50
ldr r1, _02019480 ; =_022A4E58
ldr r0, [r0, #4]
ldr r1, [r1, #0x2c]
bl MemLocateUnset
ldmia sp!, {r3, pc}
.align 2, 0
_0201947C: .word _022A4E8C
_02019480: .word _022A4E58
_02019484: .word _022A4E50
arm_func_end sub_02019408
arm_func_start sub_02019488
sub_02019488: ; 0x02019488
stmdb sp!, {r3, lr}
ldr r0, _020194FC ; =_022A4EB4
bl PointsToZero
cmp r0, #0
ldmneia sp!, {r3, pc}
ldr r0, _02019500 ; =_022A4E58
ldr r0, [r0, #8]
bl DseBgm_Unload
ldr r0, _02019500 ; =_022A4E58
ldr r0, [r0, #0xc]
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl DseSwd_Unload
ldr r0, _02019504 ; =_022A4E50
ldr r1, _02019500 ; =_022A4E58
ldr r0, [r0, #4]
ldr r1, [r1, #0x5c]
bl MemLocateUnset
ldr r0, _02019504 ; =_022A4E50
ldr r1, _02019500 ; =_022A4E58
ldr r0, [r0, #4]
ldr r1, [r1, #0x4c]
bl MemLocateUnset
ldr r0, _02019504 ; =_022A4E50
ldr r1, _02019500 ; =_022A4E58
ldr r0, [r0, #4]
ldr r1, [r1, #0x54]
bl MemLocateUnset
ldmia sp!, {r3, pc}
.align 2, 0
_020194FC: .word _022A4EB4
_02019500: .word _022A4E58
_02019504: .word _022A4E50
arm_func_end sub_02019488
arm_func_start sub_02019508
sub_02019508: ; 0x02019508
stmdb sp!, {r3, lr}
ldr r0, _02019568 ; =_022A4ECC
bl PointsToZero
cmp r0, #0
ldmneia sp!, {r3, pc}
ldr r0, _0201956C ; =_022A4E58
ldr r0, [r0, #0x10]
bl DseBgm_Unload
ldr r0, _0201956C ; =_022A4E58
ldr r0, [r0, #0x14]
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl DseSwd_Unload
ldr r0, _02019570 ; =_022A4E50
ldr r1, _0201956C ; =_022A4E58
ldr r0, [r0, #4]
ldr r1, [r1, #0x74]
bl MemLocateUnset
ldr r0, _02019570 ; =_022A4E50
ldr r1, _0201956C ; =_022A4E58
ldr r0, [r0, #4]
ldr r1, [r1, #0x6c]
bl MemLocateUnset
ldmia sp!, {r3, pc}
.align 2, 0
_02019568: .word _022A4ECC
_0201956C: .word _022A4E58
_02019570: .word _022A4E50
arm_func_end sub_02019508
arm_func_start PlaySeLoad
PlaySeLoad: ; 0x02019574
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x10c
mov r6, r0
mov r1, r6, asr #8
and r4, r1, #0xff
and r5, r6, #0xff
bl sub_0201AAA0
cmp r0, #0
movne r0, #0
bne _02019758
cmp r5, #0
moveq r0, #0
beq _02019758
ldr r0, _02019760 ; =_022A4E58
ldrh r0, [r0, #0x9a]
cmp r0, r6
moveq r0, #1
beq _02019758
cmp r0, #0x3f00
beq _020195C8
bl sub_02019790
_020195C8:
ldr r0, _02019760 ; =_022A4E58
mov r1, #1
str r1, [r0, #0x94]
ldr r1, _02019764 ; =_020AFB6C
strh r6, [r0, #0x9a]
mov r2, #0
str r2, [r0, #0xc4]
ldr r2, [r1, r4, lsl #2]
ldr r1, _02019768 ; =_020994B0
add r0, sp, #0xc
bl sprintf
ldr r1, _0201976C ; =_020994C0
add r3, sp, #0xc
mov r2, r6
mov r0, #8
bl Debug_Print
ldr r0, _02019770 ; =_020AFB28
bl sub_02002E98
ldr r0, _02019774 ; =_022A4EF4
add r1, sp, #0xc
bl LoadDseFile
ldr r0, _02019770 ; =_020AFB28
bl sub_02002CB4
ldr r0, _02019760 ; =_022A4E58
ldr r0, [r0, #0x9c]
bl DseSe_Load
ldr r2, _02019760 ; =_022A4E58
add r1, sp, #4
str r0, [r2, #0xc8]
add r0, r0, r5, lsl #16
str r0, [r2, #0xdc]
mov r2, #4
bl DseSe_GetUsedBankIDs
mov r7, r0
ldr r1, _02019778 ; =_020994D8
mov r2, r6
mov r3, r5
mov r8, #0
mov r0, #8
str r7, [sp]
bl Debug_Print
mov sb, r8
add r6, sp, #4
mov fp, #8
ldr r5, _0201977C ; =_022A4EFC
ldr r4, _02019760 ; =_022A4E58
b _0201970C
_02019684:
mov r0, sb, lsl #1
ldrh r2, [r6, r0]
ldr r1, _02019780 ; =_02099500
mov r0, fp
and sl, r2, #0xff
str r2, [sp]
mov r2, sb
mov r3, sl
bl Debug_Print
ldr r1, _02019784 ; =_02099514
mov r2, sl
add r0, sp, #0xc
bl sprintf
ldr r1, _02019788 ; =_02099528
mov r0, #8
mov r2, r8
add r3, sp, #0xc
bl Debug_Print
ldr r0, _02019770 ; =_020AFB28
bl sub_02002E98
add r0, r5, r8, lsl #3
add r1, sp, #0xc
bl LoadDseFile
ldr r0, _02019770 ; =_020AFB28
bl sub_02002CB4
add r0, r4, r8, lsl #3
mov r1, #0
ldr r0, [r0, #0xa4]
mov r2, r1
bl DseSwd_LoadBank
add r1, r4, r8, lsl #2
str r0, [r1, #0xcc]
add r8, r8, #1
add sb, sb, #1
_0201970C:
cmp sb, r7
blt _02019684
ldr r0, _02019760 ; =_022A4E58
cmp r8, #0
str r8, [r0, #0xc4]
movne r0, #1
bne _02019758
mov r1, #0x3f00
strh r1, [r0, #0x9a]
ldr r0, [r0, #0xc8]
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl DseSe_Unload
ldr r0, _0201978C ; =_022A4E50
ldr r1, _02019760 ; =_022A4E58
ldr r0, [r0, #4]
ldr r1, [r1, #0x9c]
bl MemLocateUnset
mov r0, #0
_02019758:
add sp, sp, #0x10c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02019760: .word _022A4E58
_02019764: .word _020AFB6C
_02019768: .word _020994B0
_0201976C: .word _020994C0
_02019770: .word _020AFB28
_02019774: .word _022A4EF4
_02019778: .word _020994D8
_0201977C: .word _022A4EFC
_02019780: .word _02099500
_02019784: .word _02099514
_02019788: .word _02099528
_0201978C: .word _022A4E50
arm_func_end PlaySeLoad
arm_func_start sub_02019790
sub_02019790: ; 0x02019790
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r4, _0201981C ; =_022A4E58
ldr r5, [r4, #0xc4]
cmp r5, #0
ldmleia sp!, {r3, r4, r5, r6, r7, pc}
mov r6, #0
str r6, [r4, #0xc4]
ldr r7, _02019820 ; =_022A4E50
b _020197DC
_020197B4:
add r0, r4, r6, lsl #2
ldr r0, [r0, #0xcc]
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl DseSwd_Unload
add r1, r4, r6, lsl #3
ldr r0, [r7, #4]
ldr r1, [r1, #0xa4]
bl MemLocateUnset
add r6, r6, #1
_020197DC:
cmp r6, r5
blt _020197B4
ldr r0, _0201981C ; =_022A4E58
ldr r0, [r0, #0xc8]
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl DseSe_Unload
ldr r0, _02019820 ; =_022A4E50
ldr r1, _0201981C ; =_022A4E58
ldr r0, [r0, #4]
ldr r1, [r1, #0x9c]
bl MemLocateUnset
ldr r0, _0201981C ; =_022A4E58
mov r1, #0x3f00
strh r1, [r0, #0x9a]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0201981C: .word _022A4E58
_02019820: .word _022A4E50
arm_func_end sub_02019790
arm_func_start sub_02019824
sub_02019824: ; 0x02019824
stmdb sp!, {r4, lr}
ldr r0, _02019848 ; =_020AFB28
bl sub_02002CB4
ldr r1, _0201984C ; =_022A4E58
ldr r0, _02019848 ; =_020AFB28
ldrh r4, [r1, #0x20]
bl sub_02002E98
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_02019848: .word _020AFB28
_0201984C: .word _022A4E58
arm_func_end sub_02019824
arm_func_start IsSongOver
IsSongOver: ; 0x02019850
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r0, _020198B0 ; =_020AFB28
mov r4, #0
bl sub_02002CB4
ldr r0, _020198B4 ; =_022A4E58
ldr r1, [r0, #0x1c]
cmp r1, #2
bne _0201989C
ldr r0, [r0]
add r2, sp, #0
mov r1, #0xa
bl DseSequence_GetParameter
ldr r0, _020198B4 ; =_022A4E58
ldr r2, [sp]
ldr r1, [r0, #0x40]
cmp r2, r1
strgt r2, [r0, #0x40]
movgt r4, #1
_0201989C:
ldr r0, _020198B0 ; =_020AFB28
bl sub_02002E98
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
_020198B0: .word _020AFB28
_020198B4: .word _022A4E58
arm_func_end IsSongOver
arm_func_start PlayBgm
PlayBgm: ; 0x020198B8
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x98
mov r6, r0
ldr r0, _02019B00 ; =_020AFB28
mov r5, r1
mov r4, r2
bl sub_02002CB4
ldr r1, _02019B04 ; =_0209953C
mov r2, r6
mov r3, r4
mov r0, #7
str r5, [sp]
bl Debug_Print
ldr r0, _02019B08 ; =_022A4E58
ldrh r0, [r0, #0x48]
cmp r6, r0
bne _02019914
ldr r0, _02019B00 ; =_020AFB28
bl sub_02002E98
mov r0, #0
bl StopBgm2
ldr r0, _02019B00 ; =_020AFB28
bl sub_02002CB4
_02019914:
ldr r1, _02019B08 ; =_022A4E58
ldr r0, _02019B0C ; =0x000003E7
ldrh r1, [r1, #0x20]
cmp r1, r0
beq _02019940
ldr r0, _02019B00 ; =_020AFB28
bl sub_02002E98
mov r0, #0
bl StopBgm
ldr r0, _02019B00 ; =_020AFB28
bl sub_02002CB4
_02019940:
cmp r6, #1
blo _02019950
cmp r6, #0xc9
bls _02019970
_02019950:
ldr r1, _02019B08 ; =_022A4E58
mov r0, #0
ldr r2, _02019B0C ; =0x000003E7
str r0, [r1, #0x1c]
ldr r0, _02019B00 ; =_020AFB28
strh r2, [r1, #0x20]
bl sub_02002E98
b _02019AF8
_02019970:
ldr r0, _02019B08 ; =_022A4E58
mov r1, #1
str r1, [r0, #0x1c]
strh r6, [r0, #0x20]
strh r4, [r0, #0x22]
mov r1, #0
str r1, [r0, #0x3c]
str r1, [r0, #0x40]
ldr r0, [r0, #0x18]
cmp r0, #0
bne _02019AE4
ldr r0, _02019B00 ; =_020AFB28
bl sub_02002E98
ldr r1, _02019B10 ; =_02099554
add r0, sp, #0x18
mov r2, r6
bl sprintf
ldr r0, _02019B14 ; =_022A4E8C
add r1, sp, #0x18
bl sub_02019314
ldr r1, _02019B18 ; =_0209956C
add r0, sp, #0x18
mov r2, r6
bl sprintf
ldr r0, _02019B1C ; =_022A4E7C
add r1, sp, #0x18
bl sub_02019314
ldr r0, _02019B00 ; =_020AFB28
bl sub_02002CB4
ldr r0, _02019B08 ; =_022A4E58
mov r1, #0
ldr r0, [r0, #0x24]
mov r2, r1
bl DseSwd_LoadBank
ldr r2, _02019B08 ; =_022A4E58
mov r1, r0, lsl #0x10
str r0, [r2, #4]
mov r0, r1, lsr #0x10
mov r1, #0
bl DseSwd_LoadWaves
mov r1, r0
ldr r0, _02019B20 ; =_022A4E50
ldr r2, _02019B08 ; =_022A4E58
ldr r0, [r0, #4]
str r1, [r2, #0x30]
mov r2, #2
bl MemLocateSet
ldr r1, _02019B08 ; =_022A4E58
str r0, [r1, #0x2c]
ldr r0, _02019B00 ; =_020AFB28
bl sub_02002E98
bl FileRom_InitDataTransfer
bl sub_02003AB0
ldr r0, _02019B08 ; =_022A4E58
ldr r2, [r0, #4]
ldr r1, [r0, #0x2c]
mov r0, r2, lsl #0x10
mov r0, r0, lsr #0x10
bl DseSwd_LoadWaves
_02019A5C:
bl sub_02003AB0
bl DseSwd_IsBankLoading
cmp r0, #0
bne _02019A5C
bl FileRom_StopDataTransfer
ldr r0, _02019B00 ; =_020AFB28
bl sub_02002CB4
ldr r0, _02019B08 ; =_022A4E58
ldr r0, [r0, #0x34]
bl DseBgm_Load
ldr r3, _02019B08 ; =_022A4E58
ldr r1, _02019B24 ; =sub_0201AABC
mov r2, #0
str r0, [r3]
bl DseBgm_SetSignalCallback
mov r0, #0x3e8
mov r1, #4
str r1, [sp, #4]
mul r0, r5, r0
mov r1, #0x3c
bl _s32_div_f
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
rsb r1, r4, r4, lsl #7
mov r0, r0, lsl #0x10
add r0, r0, r1, asr #8
str r0, [sp, #0x10]
mov r0, #4
str r0, [sp, #4]
ldr r0, _02019B08 ; =_022A4E58
add r1, sp, #4
ldr r0, [r0]
mov r2, #1
bl ResumeBgm
_02019AE4:
ldr r1, _02019B08 ; =_022A4E58
mov r2, #2
ldr r0, _02019B00 ; =_020AFB28
str r2, [r1, #0x1c]
bl sub_02002E98
_02019AF8:
add sp, sp, #0x98
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02019B00: .word _020AFB28
_02019B04: .word _0209953C
_02019B08: .word _022A4E58
_02019B0C: .word 0x000003E7
_02019B10: .word _02099554
_02019B14: .word _022A4E8C
_02019B18: .word _0209956C
_02019B1C: .word _022A4E7C
_02019B20: .word _022A4E50
_02019B24: .word sub_0201AABC
arm_func_end PlayBgm
arm_func_start StopBgm
StopBgm: ; 0x02019B28
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
mov r4, r0
ldr r0, _02019C3C ; =_020AFB28
bl sub_02002CB4
ldr r1, _02019C40 ; =_02099584
mov r2, r4
mov r0, #7
bl Debug_Print
ldr r5, _02019C44 ; =_022A4E58
ldr r0, [r5, #0x1c]
cmp r0, #0
beq _02019C2C
ldr r6, _02019C3C ; =_020AFB28
b _02019B78
_02019B64:
mov r0, r6
bl sub_02002E98
bl sub_02003AB0
mov r0, r6
bl sub_02002CB4
_02019B78:
ldr r0, [r5, #0x1c]
cmp r0, #1
beq _02019B64
cmp r0, #2
bne _02019C2C
mov r0, #0x3e8
mul r0, r4, r0
mov r1, #0x3c
bl _s32_div_f
mov r1, r0, lsl #0x10
ldr r2, _02019C44 ; =_022A4E58
mov r1, r1, lsr #0x10
ldr r0, [r2]
bl DseBgm_Stop
ldr r0, _02019C44 ; =_022A4E58
str r4, [sp]
ldrh r3, [r0, #0x20]
ldr r1, [r0, #0x18]
ldr r2, [r0, #0x1c]
ldr r0, _02019C48 ; =_02099594
bl Debug_Print0
cmp r4, #0
beq _02019BE4
ldr r0, _02019C44 ; =_022A4E58
ldr r0, [r0, #0x18]
cmp r0, #0
beq _02019C2C
_02019BE4:
ldr r5, _02019C3C ; =_020AFB28
ldr r4, _02019C44 ; =_022A4E58
b _02019C04
_02019BF0:
mov r0, r5
bl sub_02002E98
bl sub_02003AB0
mov r0, r5
bl sub_02002CB4
_02019C04:
ldr r0, [r4]
bl DseBgm_IsPlaying
cmp r0, #0
bne _02019BF0
bl sub_02019408
ldr r0, _02019C44 ; =_022A4E58
mov r2, #0
ldr r1, _02019C4C ; =0x000003E7
str r2, [r0, #0x1c]
strh r1, [r0, #0x20]
_02019C2C:
ldr r0, _02019C3C ; =_020AFB28
bl sub_02002E98
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02019C3C: .word _020AFB28
_02019C40: .word _02099584
_02019C44: .word _022A4E58
_02019C48: .word _02099594
_02019C4C: .word 0x000003E7
arm_func_end StopBgm
arm_func_start ChangeBgm
ChangeBgm: ; 0x02019C50
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x14
mov r5, r0
ldr r0, _02019CF8 ; =_020AFB28
mov r4, r1
bl sub_02002CB4
ldr r1, _02019CFC ; =_020995BC
mov r2, r4
mov r3, r5
mov r0, #7
bl Debug_Print
ldr r0, _02019D00 ; =_022A4E58
ldr r1, [r0, #0x1c]
cmp r1, #0
beq _02019CE8
ldr r0, [r0, #0x18]
cmp r0, #0
bne _02019CE0
mov r0, #0x3e8
mul r0, r5, r0
mov r2, #4
mov r1, #0x3c
str r2, [sp]
bl _s32_div_f
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
mov r2, #4
ldr r1, _02019D00 ; =_022A4E58
rsb r3, r4, r4, lsl #7
mov r0, r0, lsl #0x10
add r3, r0, r3, asr #8
ldr r0, [r1]
add r1, sp, #0
str r3, [sp, #0xc]
str r2, [sp]
bl DseBgm_SetFades
_02019CE0:
ldr r0, _02019D00 ; =_022A4E58
strh r4, [r0, #0x22]
_02019CE8:
ldr r0, _02019CF8 ; =_020AFB28
bl sub_02002E98
add sp, sp, #0x14
ldmia sp!, {r4, r5, pc}
.align 2, 0
_02019CF8: .word _020AFB28
_02019CFC: .word _020995BC
_02019D00: .word _022A4E58
arm_func_end ChangeBgm
arm_func_start sub_02019D04
sub_02019D04: ; 0x02019D04
stmdb sp!, {r4, lr}
ldr r0, _02019D50 ; =_020AFB28
bl sub_02002CB4
ldr r0, _02019D54 ; =_022A4E58
ldr r1, [r0, #0x1c]
cmp r1, #0
beq _02019D3C
ldr r1, [r0, #0x3c]
cmp r1, #0
subgt r1, r1, #1
movgt r4, #1
strgt r1, [r0, #0x3c]
movle r4, #0
b _02019D40
_02019D3C:
mov r4, #1
_02019D40:
ldr r0, _02019D50 ; =_020AFB28
bl sub_02002E98
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_02019D50: .word _020AFB28
_02019D54: .word _022A4E58
arm_func_end sub_02019D04
arm_func_start sub_02019D58
sub_02019D58: ; 0x02019D58
stmdb sp!, {r4, lr}
ldr r0, _02019D7C ; =_020AFB28
bl sub_02002CB4
ldr r1, _02019D80 ; =_022A4E58
ldr r0, _02019D7C ; =_020AFB28
ldrh r4, [r1, #0x48]
bl sub_02002E98
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_02019D7C: .word _020AFB28
_02019D80: .word _022A4E58
arm_func_end sub_02019D58
arm_func_start PlayBgm2
PlayBgm2: ; 0x02019D84
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x98
mov r6, r0
ldr r0, _02019FC0 ; =_020AFB28
mov r5, r1
mov r4, r2
bl sub_02002CB4
ldr r1, _02019FC4 ; =_020995D0
mov r2, r6
mov r3, r4
mov r0, #7
str r5, [sp]
bl Debug_Print
ldr r0, _02019FC8 ; =_022A4E58
ldrh r0, [r0, #0x20]
cmp r6, r0
bne _02019DE0
ldr r0, _02019FC0 ; =_020AFB28
bl sub_02002E98
mov r0, #0
bl StopBgm
ldr r0, _02019FC0 ; =_020AFB28
bl sub_02002CB4
_02019DE0:
ldr r1, _02019FC8 ; =_022A4E58
ldr r0, _02019FCC ; =0x000003E7
ldrh r1, [r1, #0x48]
cmp r1, r0
beq _02019E0C
ldr r0, _02019FC0 ; =_020AFB28
bl sub_02002E98
mov r0, #0
bl StopBgm2
ldr r0, _02019FC0 ; =_020AFB28
bl sub_02002CB4
_02019E0C:
cmp r6, #1
blo _02019E1C
cmp r6, #0xc9
bls _02019E3C
_02019E1C:
ldr r1, _02019FC8 ; =_022A4E58
mov r0, #0
ldr r2, _02019FCC ; =0x000003E7
str r0, [r1, #0x44]
ldr r0, _02019FC0 ; =_020AFB28
strh r2, [r1, #0x48]
bl sub_02002E98
b _02019FB8
_02019E3C:
ldr r0, _02019FC8 ; =_022A4E58
mov r1, #1
str r1, [r0, #0x44]
strh r6, [r0, #0x48]
strh r4, [r0, #0x4a]
ldr r0, [r0, #0x18]
cmp r0, #0
bne _02019FA4
ldr r0, _02019FC0 ; =_020AFB28
bl sub_02002E98
ldr r1, _02019FD0 ; =_02099554
add r0, sp, #0x18
mov r2, r6
bl sprintf
ldr r0, _02019FD4 ; =_022A4EB4
add r1, sp, #0x18
bl LoadDseFile
ldr r1, _02019FD8 ; =_0209956C
add r0, sp, #0x18
mov r2, r6
bl sprintf
ldr r0, _02019FDC ; =_022A4EA4
add r1, sp, #0x18
bl LoadDseFile
ldr r0, _02019FC0 ; =_020AFB28
bl sub_02002CB4
ldr r0, _02019FC8 ; =_022A4E58
mov r1, #0
ldr r0, [r0, #0x4c]
mov r2, r1
bl DseSwd_LoadBank
ldr r2, _02019FC8 ; =_022A4E58
mov r1, r0, lsl #0x10
str r0, [r2, #0xc]
mov r0, r1, lsr #0x10
mov r1, #0
bl DseSwd_LoadWaves
mov r1, r0
ldr r0, _02019FE0 ; =_022A4E50
ldr r2, _02019FC8 ; =_022A4E58
ldr r0, [r0, #4]
str r1, [r2, #0x58]
mov r2, #2
bl MemLocateSet
ldr r1, _02019FC8 ; =_022A4E58
str r0, [r1, #0x54]
ldr r0, _02019FC0 ; =_020AFB28
bl sub_02002E98
bl FileRom_InitDataTransfer
bl sub_02003AB0
ldr r0, _02019FC8 ; =_022A4E58
ldr r2, [r0, #0xc]
ldr r1, [r0, #0x54]
mov r0, r2, lsl #0x10
mov r0, r0, lsr #0x10
bl DseSwd_LoadWaves
_02019F1C:
bl sub_02003AB0
bl DseSwd_IsBankLoading
cmp r0, #0
bne _02019F1C
bl FileRom_StopDataTransfer
ldr r0, _02019FC0 ; =_020AFB28
bl sub_02002CB4
ldr r0, _02019FC8 ; =_022A4E58
ldr r0, [r0, #0x5c]
bl DseBgm_Load
ldr r3, _02019FC8 ; =_022A4E58
ldr r1, _02019FE4 ; =sub_0201AABC
mov r2, #0
str r0, [r3, #8]
bl DseBgm_SetSignalCallback
mov r0, #0x3e8
mov r1, #4
str r1, [sp, #4]
mul r0, r5, r0
mov r1, #0x3c
bl _s32_div_f
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
rsb r1, r4, r4, lsl #7
mov r0, r0, lsl #0x10
add r0, r0, r1, asr #8
str r0, [sp, #0x10]
mov r0, #4
str r0, [sp, #4]
ldr r0, _02019FC8 ; =_022A4E58
add r1, sp, #4
ldr r0, [r0, #8]
mov r2, #1
bl ResumeBgm
_02019FA4:
ldr r1, _02019FC8 ; =_022A4E58
mov r2, #2
ldr r0, _02019FC0 ; =_020AFB28
str r2, [r1, #0x44]
bl sub_02002E98
_02019FB8:
add sp, sp, #0x98
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02019FC0: .word _020AFB28
_02019FC4: .word _020995D0
_02019FC8: .word _022A4E58
_02019FCC: .word 0x000003E7
_02019FD0: .word _02099554
_02019FD4: .word _022A4EB4
_02019FD8: .word _0209956C
_02019FDC: .word _022A4EA4
_02019FE0: .word _022A4E50
_02019FE4: .word sub_0201AABC
arm_func_end PlayBgm2
arm_func_start StopBgm2
StopBgm2: ; 0x02019FE8
stmdb sp!, {r4, r5, r6, lr}
mov r4, r0
ldr r0, _0201A0D8 ; =_020AFB28
bl sub_02002CB4
ldr r1, _0201A0DC ; =_020995E8
mov r2, r4
mov r0, #7
bl Debug_Print
ldr r5, _0201A0E0 ; =_022A4E58
ldr r0, [r5, #0x44]
cmp r0, #0
beq _0201A0CC
ldr r6, _0201A0D8 ; =_020AFB28
b _0201A034
_0201A020:
mov r0, r6
bl sub_02002E98
bl sub_02003AB0
mov r0, r6
bl sub_02002CB4
_0201A034:
ldr r0, [r5, #0x44]
cmp r0, #1
beq _0201A020
cmp r0, #2
bne _0201A0CC
mov r0, #0x3e8
mul r0, r4, r0
mov r1, #0x3c
bl _s32_div_f
mov r1, r0, lsl #0x10
ldr r2, _0201A0E0 ; =_022A4E58
mov r1, r1, lsr #0x10
ldr r0, [r2, #8]
bl DseBgm_Stop
cmp r4, #0
beq _0201A084
ldr r0, _0201A0E0 ; =_022A4E58
ldr r0, [r0, #0x18]
cmp r0, #0
beq _0201A0CC
_0201A084:
ldr r5, _0201A0D8 ; =_020AFB28
ldr r4, _0201A0E0 ; =_022A4E58
b _0201A0A4
_0201A090:
mov r0, r5
bl sub_02002E98
bl sub_02003AB0
mov r0, r5
bl sub_02002CB4
_0201A0A4:
ldr r0, [r4, #8]
bl DseBgm_IsPlaying
cmp r0, #0
bne _0201A090
bl sub_02019488
ldr r0, _0201A0E0 ; =_022A4E58
mov r2, #0
ldr r1, _0201A0E4 ; =0x000003E7
str r2, [r0, #0x44]
strh r1, [r0, #0x48]
_0201A0CC:
ldr r0, _0201A0D8 ; =_020AFB28
bl sub_02002E98
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0201A0D8: .word _020AFB28
_0201A0DC: .word _020995E8
_0201A0E0: .word _022A4E58
_0201A0E4: .word 0x000003E7
arm_func_end StopBgm2
arm_func_start ChangeBgm2
ChangeBgm2: ; 0x0201A0E8
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x14
mov r5, r0
ldr r0, _0201A190 ; =_020AFB28
mov r4, r1
bl sub_02002CB4
ldr r1, _0201A194 ; =_020995F8
mov r2, r4
mov r3, r5
mov r0, #7
bl Debug_Print
ldr r0, _0201A198 ; =_022A4E58
ldr r1, [r0, #0x44]
cmp r1, #0
beq _0201A180
ldr r0, [r0, #0x18]
cmp r0, #0
bne _0201A178
mov r0, #0x3e8
mul r0, r5, r0
mov r2, #4
mov r1, #0x3c
str r2, [sp]
bl _s32_div_f
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
mov r2, #4
ldr r1, _0201A198 ; =_022A4E58
rsb r3, r4, r4, lsl #7
mov r0, r0, lsl #0x10
add r3, r0, r3, asr #8
ldr r0, [r1, #8]
add r1, sp, #0
str r3, [sp, #0xc]
str r2, [sp]
bl DseBgm_SetFades
_0201A178:
ldr r0, _0201A198 ; =_022A4E58
strh r4, [r0, #0x4a]
_0201A180:
ldr r0, _0201A190 ; =_020AFB28
bl sub_02002E98
add sp, sp, #0x14
ldmia sp!, {r4, r5, pc}
.align 2, 0
_0201A190: .word _020AFB28
_0201A194: .word _020995F8
_0201A198: .word _022A4E58
arm_func_end ChangeBgm2
arm_func_start sub_0201A19C
sub_0201A19C: ; 0x0201A19C
stmdb sp!, {r4, lr}
ldr r0, _0201A1C0 ; =_020AFB28
bl sub_02002CB4
ldr r1, _0201A1C4 ; =_022A4E58
ldr r0, _0201A1C0 ; =_020AFB28
ldrh r4, [r1, #0x68]
bl sub_02002E98
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_0201A1C0: .word _020AFB28
_0201A1C4: .word _022A4E58
arm_func_end sub_0201A19C
arm_func_start PlayME
PlayME: ; 0x0201A1C8
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x98
mov r6, r0
ldr r0, _0201A3F0 ; =_020AFB28
mov r5, r1
mov r4, r2
bl sub_02002CB4
ldr r1, _0201A3F4 ; =_0209960C
mov r2, r6
mov r3, r4
mov r0, #7
str r5, [sp]
bl Debug_Print
ldr r7, _0201A3F8 ; =_022A4E58
cmp r6, #0xd
ldr r0, [r7, #0x18]
movhi r6, #0
cmp r0, #0
bne _0201A2B0
mov r0, #1
str r0, [r7, #0x18]
str r0, [r7, #0x64]
ldr r8, _0201A3F0 ; =_020AFB28
strh r6, [r7, #0x68]
_0201A228:
ldr r0, [r7, #0x1c]
cmp r0, #0
beq _0201A268
cmp r0, #2
bne _0201A250
ldr r0, _0201A3F8 ; =_022A4E58
mov r1, #0
ldr r0, [r0]
bl DseBgm_Stop
b _0201A268
_0201A250:
mov r0, r8
bl sub_02002E98
bl sub_02003AB0
mov r0, r8
bl sub_02002CB4
b _0201A228
_0201A268:
ldr r8, _0201A3F0 ; =_020AFB28
ldr r7, _0201A3F8 ; =_022A4E58
_0201A270:
ldr r0, [r7, #0x44]
cmp r0, #0
beq _0201A304
cmp r0, #2
bne _0201A298
ldr r0, _0201A3F8 ; =_022A4E58
mov r1, #0
ldr r0, [r0, #8]
bl DseBgm_Stop
b _0201A304
_0201A298:
mov r0, r8
bl sub_02002E98
bl sub_02003AB0
mov r0, r8
bl sub_02002CB4
b _0201A270
_0201A2B0:
ldr r0, [r7, #0x64]
cmp r0, #2
bne _0201A304
ldr r0, _0201A3F0 ; =_020AFB28
bl sub_02002E98
mov r0, #0
bl StopME
ldr r0, _0201A3F0 ; =_020AFB28
bl sub_02002CB4
ldr r8, _0201A3F0 ; =_020AFB28
b _0201A2F0
_0201A2DC:
mov r0, r8
bl sub_02002E98
bl sub_02003AB0
mov r0, r8
bl sub_02002CB4
_0201A2F0:
ldr r0, [r7, #0x10]
bl DseBgm_IsPlaying
cmp r0, #0
bne _0201A2DC
bl sub_02019508
_0201A304:
ldr r1, _0201A3F8 ; =_022A4E58
mov r0, #1
str r0, [r1, #0x18]
str r0, [r1, #0x64]
ldr r0, _0201A3F0 ; =_020AFB28
strh r6, [r1, #0x68]
bl sub_02002E98
ldr r1, _0201A3FC ; =_02099620
add r0, sp, #0x18
mov r2, r6
bl sprintf
ldr r0, _0201A400 ; =_022A4ECC
add r1, sp, #0x18
bl sub_02019314
ldr r1, _0201A404 ; =_02099634
add r0, sp, #0x18
bl sprintf
ldr r0, _0201A408 ; =_022A4EC4
add r1, sp, #0x18
bl sub_02019314
ldr r0, _0201A3F0 ; =_020AFB28
bl sub_02002CB4
ldr r0, _0201A3F8 ; =_022A4E58
mov r1, #0
ldr r0, [r0, #0x6c]
mov r2, r1
bl DseSwd_LoadBank
ldr r1, _0201A3F8 ; =_022A4E58
str r0, [r1, #0x14]
ldr r0, [r1, #0x74]
bl DseBgm_Load
ldr r1, _0201A3F8 ; =_022A4E58
mov r2, #4
str r0, [r1, #0x10]
mov r0, #0x3e8
mul r0, r5, r0
mov r1, #0x3c
str r2, [sp, #4]
bl _s32_div_f
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
rsb r1, r4, r4, lsl #7
mov r0, r0, lsl #0x10
add r0, r0, r1, asr #8
str r0, [sp, #0x10]
mov r0, #4
str r0, [sp, #4]
ldr r0, _0201A3F8 ; =_022A4E58
add r1, sp, #4
ldr r0, [r0, #0x10]
mov r2, #1
bl ResumeBgm
ldr r1, _0201A3F8 ; =_022A4E58
mov r2, #2
ldr r0, _0201A3F0 ; =_020AFB28
str r2, [r1, #0x64]
bl sub_02002E98
add sp, sp, #0x98
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_0201A3F0: .word _020AFB28
_0201A3F4: .word _0209960C
_0201A3F8: .word _022A4E58
_0201A3FC: .word _02099620
_0201A400: .word _022A4ECC
_0201A404: .word _02099634
_0201A408: .word _022A4EC4
arm_func_end PlayME
arm_func_start StopME
StopME: ; 0x0201A40C
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, _0201A474 ; =_020AFB28
bl sub_02002CB4
ldr r1, _0201A478 ; =_02099644
mov r2, r4
mov r0, #7
bl Debug_Print
ldr r0, _0201A47C ; =_022A4E58
ldr r1, [r0, #0x18]
cmp r1, #1
ldreq r0, [r0, #0x64]
cmpeq r0, #2
bne _0201A468
mov r0, #0x3e8
mul r0, r4, r0
mov r1, #0x3c
bl _s32_div_f
mov r1, r0, lsl #0x10
ldr r2, _0201A47C ; =_022A4E58
mov r1, r1, lsr #0x10
ldr r0, [r2, #0x10]
bl DseBgm_Stop
_0201A468:
ldr r0, _0201A474 ; =_020AFB28
bl sub_02002E98
ldmia sp!, {r4, pc}
.align 2, 0
_0201A474: .word _020AFB28
_0201A478: .word _02099644
_0201A47C: .word _022A4E58
arm_func_end StopME
arm_func_start sub_0201A480
sub_0201A480: ; 0x0201A480
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r1, r7, asr #8
ldr r0, _0201A4F4 ; =_020AFB28
and r5, r7, #0xff
and r4, r1, #0xff
mov r6, #0
bl sub_02002CB4
cmp r5, #0
cmpne r4, #0x3f
beq _0201A4E4
cmp r4, #1
bne _0201A4D4
ldr r0, _0201A4F8 ; =_022A4E58
mov r1, r5, lsl #0x10
ldr r0, [r0, #0x88]
mov r1, r1, lsr #0x10
bl DseSe_HasPlayingInstances
cmp r0, #0
movgt r6, #1
b _0201A4E4
_0201A4D4:
ldr r0, _0201A4F8 ; =_022A4E58
ldrh r0, [r0, #0x98]
cmp r0, r7
moveq r6, #1
_0201A4E4:
ldr r0, _0201A4F4 ; =_020AFB28
bl sub_02002E98
mov r0, r6
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0201A4F4: .word _020AFB28
_0201A4F8: .word _022A4E58
arm_func_end sub_0201A480
arm_func_start PlaySe
PlaySe: ; 0x0201A4FC
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x14
mov r5, r0
mov r2, r5, asr #8
ldr r0, _0201A660 ; =_020AFB28
mov r7, r1
and r6, r2, #0xff
and r4, r5, #0xff
bl sub_02002CB4
ldr r1, _0201A664 ; =_02099650
mov r2, r5
mov r3, r7
mov r0, #8
bl Debug_Print
rsb r0, r7, r7, lsl #7
mov r0, r0, asr #8
mov r1, #4
str r0, [sp, #0xc]
str r1, [sp]
cmp r4, #0
beq _0201A650
cmp r6, #0x3f
bne _0201A578
ldr r3, _0201A668 ; =_022A4E58
add r2, sp, #0
ldr r0, [r3, #0x7c]
mov r1, #0
add r0, r0, r4, lsl #16
str r0, [r3, #0x84]
bl DseSe_Play
b _0201A650
_0201A578:
cmp r6, #1
bne _0201A5A0
ldr r3, _0201A668 ; =_022A4E58
add r2, sp, #0
ldr r0, [r3, #0x88]
mov r1, #0
add r0, r0, r4, lsl #16
str r0, [r3, #0x90]
bl DseSe_Play
b _0201A650
_0201A5A0:
ldr r0, _0201A668 ; =_022A4E58
mov r1, #1
ldrh r2, [r0, #0x98]
ldr r3, [r0, #0x94]
str r1, [r0, #0x94]
cmp r3, #0
strh r5, [r0, #0x98]
cmpne r2, #0x3f00
beq _0201A60C
mov r1, #0
ldr r0, [r0, #0xdc]
mov r2, r1
bl DseSe_Stop
ldr r8, _0201A660 ; =_020AFB28
mov r7, #0
ldr r6, _0201A668 ; =_022A4E58
b _0201A5F8
_0201A5E4:
mov r0, r8
bl sub_02002E98
bl sub_02003AB0
mov r0, r8
bl sub_02002CB4
_0201A5F8:
ldr r0, [r6, #0xdc]
mov r1, r7
bl DseSe_HasPlayingInstances
cmp r0, #0
bgt _0201A5E4
_0201A60C:
mov r0, r5
bl PlaySeLoad
cmp r0, #0
ldreq r0, _0201A668 ; =_022A4E58
mov r1, #0
streq r1, [r0, #0x94]
moveq r1, #0x3f00
streqh r1, [r0, #0x98]
beq _0201A650
ldr r3, _0201A668 ; =_022A4E58
mov r0, #2
str r0, [r3, #0x94]
ldr r0, [r3, #0xc8]
add r2, sp, #0
add r0, r0, r4, lsl #16
str r0, [r3, #0xdc]
bl DseSe_Play
_0201A650:
ldr r0, _0201A660 ; =_020AFB28
bl sub_02002E98
add sp, sp, #0x14
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_0201A660: .word _020AFB28
_0201A664: .word _02099650
_0201A668: .word _022A4E58
arm_func_end PlaySe
arm_func_start PlaySeFullSpec
PlaySeFullSpec: ; 0x0201A66C
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x1c
mov sb, r0
mov r4, sb, asr #8
ldr r0, _0201A81C ; =_020AFB28
mov r8, r1
mov r7, r2
mov r6, r3
and r4, r4, #0xff
and r5, sb, #0xff
bl sub_02002CB4
str r7, [sp]
str r6, [sp, #4]
mov r0, #8
ldr r1, _0201A820 ; =_02099660
mov r2, sb
mov r3, r8
bl Debug_Print
mov r0, #4
str r0, [sp, #8]
mov r0, #0x3e8
mul r0, r8, r0
mov r1, #0x3c
bl _s32_div_f
rsb r2, r7, r7, lsl #7
rsb r1, r6, r6, lsl #6
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
mov r0, r0, lsl #0x10
add r0, r0, r2, asr #8
str r0, [sp, #0x14]
cmp r5, #0
mov r0, r1, asr #7
add r0, r1, r0, lsr #24
mov r0, r0, asr #8
add r0, r0, #0x40
str r0, [sp, #0x18]
mov r0, #0xc
str r0, [sp, #8]
beq _0201A80C
cmp r4, #0x3f
bne _0201A734
ldr r3, _0201A824 ; =_022A4E58
add r2, sp, #8
ldr r0, [r3, #0x7c]
mov r1, #0
add r0, r0, r5, lsl #16
str r0, [r3, #0x84]
bl DseSe_Play
b _0201A80C
_0201A734:
cmp r4, #1
bne _0201A75C
ldr r3, _0201A824 ; =_022A4E58
add r2, sp, #8
ldr r0, [r3, #0x88]
mov r1, #0
add r0, r0, r5, lsl #16
str r0, [r3, #0x90]
bl DseSe_Play
b _0201A80C
_0201A75C:
ldr r0, _0201A824 ; =_022A4E58
mov r1, #1
ldrh r2, [r0, #0x98]
ldr r3, [r0, #0x94]
str r1, [r0, #0x94]
cmp r3, #0
strh sb, [r0, #0x98]
cmpne r2, #0x3f00
beq _0201A7C8
mov r1, #0
ldr r0, [r0, #0xdc]
mov r2, r1
bl DseSe_Stop
ldr r7, _0201A81C ; =_020AFB28
mov r6, #0
ldr r4, _0201A824 ; =_022A4E58
b _0201A7B4
_0201A7A0:
mov r0, r7
bl sub_02002E98
bl sub_02003AB0
mov r0, r7
bl sub_02002CB4
_0201A7B4:
ldr r0, [r4, #0xdc]
mov r1, r6
bl DseSe_HasPlayingInstances
cmp r0, #0
bgt _0201A7A0
_0201A7C8:
mov r0, sb
bl PlaySeLoad
cmp r0, #0
ldreq r0, _0201A824 ; =_022A4E58
mov r1, #0
streq r1, [r0, #0x94]
moveq r1, #0x3f00
streqh r1, [r0, #0x98]
beq _0201A80C
ldr r3, _0201A824 ; =_022A4E58
mov r0, #2
str r0, [r3, #0x94]
ldr r0, [r3, #0xc8]
add r2, sp, #8
add r0, r0, r5, lsl #16
str r0, [r3, #0xdc]
bl DseSe_Play
_0201A80C:
ldr r0, _0201A81C ; =_020AFB28
bl sub_02002E98
add sp, sp, #0x1c
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0201A81C: .word _020AFB28
_0201A820: .word _02099660
_0201A824: .word _022A4E58
arm_func_end PlaySeFullSpec
arm_func_start SeChangeVolume
SeChangeVolume: ; 0x0201A828
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x18
mov r8, r0
mov r3, r8, asr #8
ldr r0, _0201A8F4 ; =_020AFB28
mov r7, r1
mov r6, r2
and r4, r3, #0xff
and r5, r8, #0xff
bl sub_02002CB4
ldr r1, _0201A8F8 ; =_02099684
mov r2, r8
mov r3, r7
str r6, [sp]
mov r0, #8
bl Debug_Print
mov r0, #0x3e8
mul r0, r7, r0
mov r1, #4
str r1, [sp, #4]
mov r1, #0x3c
bl _s32_div_f
mov r0, r0, lsl #0x10
mov r1, r0, lsr #0x10
mov r0, #4
rsb r2, r6, r6, lsl #7
str r0, [sp, #4]
mov r0, r1, lsl #0x10
add r0, r0, r2, asr #8
str r0, [sp, #0x10]
cmp r5, #0
beq _0201A8E4
cmp r4, #0x3f
ldreq r0, _0201A8FC ; =_022A4E58
ldreq r0, [r0, #0x7c]
addeq r0, r0, r5, lsl #16
beq _0201A8D8
cmp r4, #1
ldreq r0, _0201A8FC ; =_022A4E58
ldreq r0, [r0, #0x88]
addeq r0, r0, r5, lsl #16
ldrne r0, _0201A8FC ; =_022A4E58
ldrne r0, [r0, #0xc8]
addne r0, r0, r5, lsl #16
_0201A8D8:
add r2, sp, #4
mov r1, #0
bl sub_0206F5C8
_0201A8E4:
ldr r0, _0201A8F4 ; =_020AFB28
bl sub_02002E98
add sp, sp, #0x18
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_0201A8F4: .word _020AFB28
_0201A8F8: .word _02099684
_0201A8FC: .word _022A4E58
arm_func_end SeChangeVolume
arm_func_start SeChangePan
SeChangePan: ; 0x0201A900
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x18
mov r8, r0
mov r3, r8, asr #8
ldr r0, _0201A9D8 ; =_020AFB28
mov r7, r1
mov r6, r2
and r4, r3, #0xff
and r5, r8, #0xff
bl sub_02002CB4
ldr r1, _0201A9DC ; =_020996A4
mov r2, r8
mov r3, r7
str r6, [sp]
mov r0, #8
bl Debug_Print
mov r0, #0x3e8
mul r0, r7, r0
mov r1, #4
str r1, [sp, #4]
mov r1, #0x3c
bl _s32_div_f
rsb r2, r6, r6, lsl #6
mov r1, r2, asr #7
add r1, r2, r1, lsr #24
mov r2, r1, asr #8
mov r0, r0, lsl #0x10
mov r1, #8
str r1, [sp, #4]
add r1, r2, #0x40
mov r0, r0, lsr #0x10
add r0, r1, r0, lsl #16
str r0, [sp, #0x14]
cmp r5, #0
beq _0201A9C8
cmp r4, #0x3f
ldreq r0, _0201A9E0 ; =_022A4E58
ldreq r0, [r0, #0x7c]
addeq r0, r0, r5, lsl #16
beq _0201A9BC
cmp r4, #1
ldreq r0, _0201A9E0 ; =_022A4E58
ldreq r0, [r0, #0x88]
addeq r0, r0, r5, lsl #16
ldrne r0, _0201A9E0 ; =_022A4E58
ldrne r0, [r0, #0xc8]
addne r0, r0, r5, lsl #16
_0201A9BC:
add r2, sp, #4
mov r1, #0
bl sub_0206F5C8
_0201A9C8:
ldr r0, _0201A9D8 ; =_020AFB28
bl sub_02002E98
add sp, sp, #0x18
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_0201A9D8: .word _020AFB28
_0201A9DC: .word _020996A4
_0201A9E0: .word _022A4E58
arm_func_end SeChangePan
arm_func_start StopSe
StopSe: ; 0x0201A9E4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r2, r7, asr #8
ldr r0, _0201AA94 ; =_020AFB28
mov r5, r1
and r6, r2, #0xff
and r4, r7, #0xff
bl sub_02002CB4
ldr r1, _0201AA98 ; =_020996C0
mov r2, r7
mov r3, r5
mov r0, #8
bl Debug_Print
cmp r7, #0x3f00
bne _0201AA2C
mov r0, #0
bl DseSe_StopAll
b _0201AA88
_0201AA2C:
cmp r4, #0
beq _0201AA88
cmp r6, #0x3f
ldreq r0, _0201AA9C ; =_022A4E58
ldreq r0, [r0, #0x7c]
addeq r4, r0, r4, lsl #16
beq _0201AA64
cmp r6, #1
ldreq r0, _0201AA9C ; =_022A4E58
ldreq r0, [r0, #0x88]
addeq r4, r0, r4, lsl #16
ldrne r0, _0201AA9C ; =_022A4E58
ldrne r0, [r0, #0xc8]
addne r4, r0, r4, lsl #16
_0201AA64:
mov r0, #0x3e8
mul r0, r5, r0
mov r1, #0x3c
bl _s32_div_f
mov r1, r0, lsl #0x10
mov r2, r1, lsr #0x10
mov r0, r4
mov r1, #0
bl DseSe_Stop
_0201AA88:
ldr r0, _0201AA94 ; =_020AFB28
bl sub_02002E98
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0201AA94: .word _020AFB28
_0201AA98: .word _020996C0
_0201AA9C: .word _022A4E58
arm_func_end StopSe
arm_func_start sub_0201AAA0
sub_0201AAA0: ; 0x0201AAA0
mov r0, r0, asr #8
and r0, r0, #0xff
cmp r0, #0x3f
cmpne r0, #1
moveq r0, #1
movne r0, #0
bx lr
arm_func_end sub_0201AAA0
arm_func_start sub_0201AABC
sub_0201AABC: ; 0x0201AABC
ldr r1, _0201AAD4 ; =_022A4E58
mov r0, #0
ldr r2, [r1, #0x3c]
add r2, r2, #1
str r2, [r1, #0x3c]
bx lr
.align 2, 0
_0201AAD4: .word _022A4E58
arm_func_end sub_0201AABC
arm_func_start sub_0201AAD8
sub_0201AAD8: ; 0x0201AAD8
ldrb ip, [sp]
cmp ip, #1
cmpne ip, #2
moveq r3, r3, lsl #1
str r3, [r0]
str r2, [r0, #4]
str r1, [r0, #8]
ldrb r2, [sp]
ldrh r1, [sp, #4]
strb r2, [r0, #0xe]
strh r1, [r0, #0xc]
mov r0, r3
bx lr
arm_func_end sub_0201AAD8
arm_func_start ExecuteCopyToFlatVramCommand
ExecuteCopyToFlatVramCommand: ; 0x0201AB0C
stmdb sp!, {r3, lr}
mov ip, r0
ldr r1, [ip, #4]
cmp r1, #0
beq _0201AB7C
ldrb r0, [ip, #0xe]
cmp r0, #0
bne _0201AB40
mov r0, r1
ldr r1, [ip, #8]
ldr r2, [ip]
bl ArrayCopy32
ldmia sp!, {r3, pc}
_0201AB40:
cmp r0, #1
bne _0201AB60
ldr r2, [ip]
ldrh r3, [ip, #0xc]
ldr r0, [ip, #8]
mov r2, r2, asr #1
bl CopyAndInterleave
ldmia sp!, {r3, pc}
_0201AB60:
cmp r0, #2
ldmneia sp!, {r3, pc}
ldr r2, [ip]
ldr r0, [ip, #8]
mov r2, r2, asr #1
bl CopyAndInterleave0
ldmia sp!, {r3, pc}
_0201AB7C:
ldr r1, [ip, #8]
ldr r2, [ip]
mov r0, #0
bl ArrayFill32
ldmia sp!, {r3, pc}
arm_func_end ExecuteCopyToFlatVramCommand
arm_func_start sub_0201AB90
sub_0201AB90: ; 0x0201AB90
ldr ip, _0201ABA8 ; =MemZero
add r2, r0, #0xe00
mov r3, #0
mov r1, #0xe00
strh r3, [r2]
bx ip
.align 2, 0
_0201ABA8: .word MemZero
arm_func_end sub_0201AB90
arm_func_start DecodeFragmentByteAssemblyTable
DecodeFragmentByteAssemblyTable: ; 0x0201ABAC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x18
mov r7, #0
mov sb, r0
mov r8, r1
mov r6, r7
add r5, sp, #8
b _0201ABF8
_0201ABCC:
str r6, [sp]
str r6, [sp, #4]
ldr r2, [sb], #0xc
mov r0, r5
mov r1, r8
bl sub_0201AAD8
mov r4, r0
mov r0, r5
bl ExecuteCopyToFlatVramCommand
add r8, r8, r4
add r7, r7, r4
_0201ABF8:
ldr r3, [sb, #4]
cmp r3, #0
bne _0201ABCC
mov r0, r7
add sp, sp, #0x18
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end DecodeFragmentByteAssemblyTable
arm_func_start sub_0201AC10
sub_0201AC10: ; 0x0201AC10
add r0, r0, #0xe00
mov r1, #0
strh r1, [r0]
bx lr
arm_func_end sub_0201AC10
arm_func_start sub_0201AC20
sub_0201AC20: ; 0x0201AC20
stmdb sp!, {r4, lr}
sub sp, sp, #8
ldrb lr, [sp, #0x10]
ldrh ip, [sp, #0x14]
mov r4, r0
str lr, [sp]
str ip, [sp, #4]
add r0, r4, #0xe00
ldrsh r0, [r0]
add r0, r4, r0, lsl #4
bl sub_0201AAD8
add r0, r4, #0xe00
ldrsh r1, [r0]
add r1, r1, #1
strh r1, [r0]
add sp, sp, #8
ldmia sp!, {r4, pc}
arm_func_end sub_0201AC20
arm_func_start sub_0201AC64
sub_0201AC64: ; 0x0201AC64
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
ldr r6, [sp, #0x30]
add r4, sl, #0xe00
mov fp, #1
mov r5, #0
b _0201AD30
_0201AC90:
ldrsh r0, [r4]
cmp r0, #0xe0
bge _0201AD3C
cmp r7, #0
beq _0201ACB8
cmp r7, #1
beq _0201ACD8
cmp r7, #2
beq _0201ACF8
b _0201AD1C
_0201ACB8:
str r5, [sp]
str r5, [sp, #4]
ldr r2, [sb]
mov r1, r8
add r0, sl, r0, lsl #4
bl sub_0201AAD8
mov r3, r0
b _0201AD1C
_0201ACD8:
str fp, [sp]
str r6, [sp, #4]
ldr r2, [sb]
mov r1, r8
add r0, sl, r0, lsl #4
bl sub_0201AAD8
mov r3, r0
b _0201AD1C
_0201ACF8:
mov r1, #2
str r1, [sp]
mov r1, #0
str r1, [sp, #4]
ldr r2, [sb]
mov r1, r8
add r0, sl, r0, lsl #4
bl sub_0201AAD8
mov r3, r0
_0201AD1C:
ldrsh r0, [r4]
add r8, r8, r3
add sb, sb, #0xc
add r0, r0, #1
strh r0, [r4]
_0201AD30:
ldr r3, [sb, #4]
cmp r3, #0
bne _0201AC90
_0201AD3C:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end sub_0201AC64
arm_func_start sub_0201AD44
sub_0201AD44: ; 0x0201AD44
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
add r0, r6, #0xe00
ldrsh r5, [r0]
mov r4, #0
b _0201AD70
_0201AD5C:
add r0, r6, r4, lsl #4
bl ExecuteCopyToFlatVramCommand
add r0, r4, #1
mov r0, r0, lsl #0x10
mov r4, r0, asr #0x10
_0201AD70:
cmp r4, r5
blt _0201AD5C
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0201AD44
arm_func_start sub_0201AD7C
sub_0201AD7C: ; 0x0201AD7C
add r0, r0, #0x14
bx lr
arm_func_end sub_0201AD7C
arm_func_start sub_0201AD84
sub_0201AD84: ; 0x0201AD84
add r0, r0, #0x50
bx lr
arm_func_end sub_0201AD84
arm_func_start sub_0201AD8C
sub_0201AD8C: ; 0x0201AD8C
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
mov r0, r2
mov r5, #0
mov ip, #1
b _0201ADC0
_0201ADA4:
add r2, r1, r5
and r2, r2, #0xff
ldrh lr, [r4, #0x7a]
mov r2, r2, asr #4
add r5, r5, #0x10
orr r2, lr, ip, lsl r2
strh r2, [r4, #0x7a]
_0201ADC0:
cmp r5, r0
blt _0201ADA4
mov ip, r0, lsr #0x1f
rsb r2, ip, r0, lsl #28
adds r2, ip, r2, ror #28
beq _0201ADF8
add r2, r1, r0
sub r2, r2, #1
and r2, r2, #0xff
ldrh lr, [r4, #0x7a]
mov r2, r2, asr #4
mov ip, #1
orr r2, lr, ip, lsl r2
strh r2, [r4, #0x7a]
_0201ADF8:
mov r1, r1, lsl #0x10
mov r2, r3
mov r3, r0
add r0, r4, #0x14
mov r1, r1, lsr #0x10
bl sub_0200A5B0
add r0, r4, #0x14
bl sub_0200A504
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0201AD8C
arm_func_start sub_0201AE1C
sub_0201AE1C: ; 0x0201AE1C
stmdb sp!, {r4, r5, r6, lr}
mov r4, r0
mov lr, #0
add ip, r4, r1, lsl #1
mov r5, #1
b _0201AE50
_0201AE34:
add r0, r2, lr
and r0, r0, #0xff
ldrh r6, [ip, #0x7c]
mov r0, r0, asr #4
add lr, lr, #0x10
orr r0, r6, r5, lsl r0
strh r0, [ip, #0x7c]
_0201AE50:
cmp lr, r3
blt _0201AE34
mov ip, r3, lsr #0x1f
rsb r0, ip, r3, lsl #28
adds r0, ip, r0, ror #28
beq _0201AE90
add r0, r2, r3
sub r0, r0, #1
and r0, r0, #0xff
add r6, r4, #0x7c
mov r5, r1, lsl #1
ldrh lr, [r6, r5]
mov r0, r0, asr #4
mov ip, #1
orr r0, lr, ip, lsl r0
strh r0, [r6, r5]
_0201AE90:
add r0, r2, r1, lsl #8
mov r1, r0, lsl #0x10
ldr r2, [sp, #0x10]
add r0, r4, #0x50
mov r1, r1, lsr #0x10
bl sub_0200A5B0
add r0, r4, #0x50
bl sub_0200A504
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0201AE1C
arm_func_start sub_0201AEB4
sub_0201AEB4: ; 0x0201AEB4
ldrh r3, [r0, #0x7a]
mov r1, r1, asr #4
mov r2, #1
orr r1, r3, r2, lsl r1
strh r1, [r0, #0x7a]
bx lr
arm_func_end sub_0201AEB4
arm_func_start sub_0201AECC
sub_0201AECC: ; 0x0201AECC
stmdb sp!, {r3, lr}
add lr, r0, #0x7c
mov ip, r1, lsl #1
ldrh r3, [lr, ip]
mov r0, r2, asr #4
mov r1, #1
orr r0, r3, r1, lsl r0
strh r0, [lr, ip]
ldmia sp!, {r3, pc}
arm_func_end sub_0201AECC
arm_func_start sub_0201AEF0
sub_0201AEF0: ; 0x0201AEF0
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
mov r5, r0
mov r1, #0x9c
bl MemZero
strb r4, [r5, #0x79]
ldrb r0, [r5, #0x78]
orr r0, r0, #2
strb r0, [r5, #0x78]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0201AEF0
arm_func_start sub_0201AF18
sub_0201AF18: ; 0x0201AF18
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r3, r1
mov r1, #0
mov r2, #0x100
mov r4, r0
str r1, [sp]
bl sub_0200A124
mov r2, #0
mov r1, r4
str r2, [sp]
add r0, r4, #0x14
mov r3, #0x100
bl sub_0200A478
ldrb r0, [r4, #0x78]
orr r0, r0, #4
strb r0, [r4, #0x78]
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
arm_func_end sub_0201AF18
arm_func_start sub_0201AF64
sub_0201AF64: ; 0x0201AF64
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
mov r3, r1
mov ip, #0
add r0, r4, #0x3c
mov r1, #2
mov r2, #0x1000
str ip, [sp]
bl sub_0200A124
mov r2, #0
str r2, [sp]
add r0, r4, #0x50
add r1, r4, #0x3c
mov r3, #0x1000
bl sub_0200A478
ldrb r0, [r4, #0x78]
orr r0, r0, #8
strb r0, [r4, #0x78]
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
arm_func_end sub_0201AF64
arm_func_start sub_0201AFB8
sub_0201AFB8: ; 0x0201AFB8
stmdb sp!, {r4, lr}
mov r4, r0
ldrb r0, [r4, #0x78]
mov r0, r0, lsl #0x1d
movs r0, r0, lsr #0x1f
beq _0201AFE0
add r0, r4, #0x14
bl sub_0200A510
mov r0, r4
bl sub_0200A180
_0201AFE0:
ldrb r0, [r4, #0x78]
mov r0, r0, lsl #0x1c
movs r0, r0, lsr #0x1f
ldmeqia sp!, {r4, pc}
add r0, r4, #0x50
bl sub_0200A510
add r0, r4, #0x3c
bl sub_0200A180
ldmia sp!, {r4, pc}
arm_func_end sub_0201AFB8
arm_func_start sub_0201B004
sub_0201B004: ; 0x0201B004
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
ldrb r1, [r7, #0x78]
mov r2, r1, lsl #0x1d
movs r2, r2, lsr #0x1f
beq _0201B158
mov r1, r1, lsl #0x1f
movs r1, r1, lsr #0x1f
beq _0201B14C
ldrb r0, [r7, #8]
cmp r0, #0
beq _0201B150
mov r4, #0
_0201B038:
mov r2, r4, lsl #4
and r0, r2, #0xff
ldrh r1, [r7, #0x7a]
mov r0, r0, asr #4
mov r3, #1
tst r1, r3, lsl r0
moveq r3, #0
tst r3, #0xff
beq _0201B12C
mov r0, r2, lsl #0x10
ldr r1, [r7, #0x10]
mov r3, r0, asr #0x10
add r5, r1, r3, lsl #1
ldr r2, [r7, #0xc]
mov r0, r5
mov r1, #0x20
add r6, r2, r3, lsl #1
bl DC_FlushRange
ldr r0, [r7]
cmp r0, #4
addls pc, pc, r0, lsl #2
b _0201B0A4
_0201B090: ; jump table
b _0201B0A4 ; case 0
b _0201B0C0 ; case 1
b _0201B0DC ; case 2
b _0201B0F8 ; case 3
b _0201B114 ; case 4
_0201B0A4:
mov r1, #0
_0201B0A8:
ldrh r0, [r5], #2
add r1, r1, #1
cmp r1, #0x10
strh r0, [r6], #2
blt _0201B0A8
b _0201B12C
_0201B0C0:
bl GX_BeginLoadBGExtPltt
mov r0, r6
mov r1, r5
mov r2, #0x20
bl Memcpy32
bl GX_EndLoadBGExtPltt
b _0201B12C
_0201B0DC:
bl GX_BeginLoadOBJExtPltt
mov r0, r6
mov r1, r5
mov r2, #0x20
bl Memcpy32
bl GX_EndLoadOBJExtPltt
b _0201B12C
_0201B0F8:
bl GXS_BeginLoadBGExtPltt
mov r0, r6
mov r1, r5
mov r2, #0x20
bl Memcpy32
bl GXS_EndLoadBGExtPltt
b _0201B12C
_0201B114:
bl GXS_BeginLoadOBJExtPltt
mov r0, r6
mov r1, r5
mov r2, #0x20
bl Memcpy32
bl GXS_EndLoadOBJExtPltt
_0201B12C:
add r0, r4, #1
mov r0, r0, lsl #0x10
mov r4, r0, asr #0x10
cmp r4, #0x10
blt _0201B038
mov r0, #0
strb r0, [r7, #8]
b _0201B150
_0201B14C:
bl sub_0200A184
_0201B150:
mov r0, #0
strh r0, [r7, #0x7a]
_0201B158:
ldrb r0, [r7, #0x78]
mov r0, r0, lsl #0x1c
movs r0, r0, lsr #0x1f
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
add r0, r7, #0x3c
bl sub_0200A184
mov r3, #0
mov r2, r3
_0201B178:
add r0, r3, #1
mov r0, r0, lsl #0x10
add r1, r7, r3, lsl #1
mov r3, r0, asr #0x10
strh r2, [r1, #0x7c]
cmp r3, #0x10
blt _0201B178
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_0201B004
arm_func_start sub_0201B198
sub_0201B198: ; 0x0201B198
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #4
ldr r5, [sp, #0x20]
mov r8, r1
mov r4, r0
mov r1, #0x70
mov r7, r2
mov r6, r3
bl MemZero
strb r5, [r4, #0xe]
strb r6, [r4]
stmib r4, {r7, r8}
ldr r0, [r4, #4]
bl sub_0201AC10
mov r0, #2
strh r0, [r4, #0xc]
cmp r6, #0
moveq r0, #0x6400000
movne r0, #0x6600000
str r0, [r4, #0x64]
cmp r5, #0
bne _0201B210
mov ip, #0
add r0, r4, #0x20
mov r1, #0x70
mov r2, #0x140
mov r3, #0x7000000
str ip, [sp]
bl sub_0200B508
b _0201B284
_0201B210:
cmp r5, #1
bne _0201B238
ldr r3, _0201B294 ; =0x07000400
mov ip, #0
add r0, r4, #0x20
mov r1, #0x70
mov r2, #0x140
str ip, [sp]
bl sub_0200B508
b _0201B284
_0201B238:
cmp r5, #2
bne _0201B260
ldr r3, _0201B298 ; =0x07000380
mov ip, #0
add r0, r4, #0x20
mov r1, #0x10
mov r2, #0x140
str ip, [sp]
bl sub_0200B508
b _0201B284
_0201B260:
cmp r5, #3
bne _0201B284
ldr r3, _0201B29C ; =0x07000780
mov ip, #0
add r0, r4, #0x20
mov r1, #0x10
mov r2, #0x140
str ip, [sp]
bl sub_0200B508
_0201B284:
mov r0, r4
bl sub_0201B2A0
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_0201B294: .word 0x07000400
_0201B298: .word 0x07000380
_0201B29C: .word 0x07000780
arm_func_end sub_0201B198
arm_func_start sub_0201B2A0
sub_0201B2A0: ; 0x0201B2A0
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0
str r0, [r4, #0x40]
add r0, r4, #0x20
bl sub_0200B67C
ldrb r0, [r4, #0x1c]
cmp r0, #0
ldmeqia sp!, {r4, pc}
add r0, r4, #0x10
mov r1, #0xc
bl MemZero
mov r0, #0
strb r0, [r4, #0x1c]
ldmia sp!, {r4, pc}
arm_func_end sub_0201B2A0
arm_func_start sub_0201B2DC
sub_0201B2DC: ; 0x0201B2DC
stmdb sp!, {r4, r5, r6, lr}
mov ip, #0
cmp r1, #0
moveq r0, ip
ldmeqia sp!, {r4, r5, r6, pc}
ldrh r6, [r0, #0xc]
ldrh r4, [r3, #4]
ldr r5, _0201B384 ; =_020AFC28
mov lr, r6, lsr #0x1f
rsb r3, lr, r6, lsl #30
add r3, lr, r3, ror #30
mov r3, r3, lsl #1
ldrsh r3, [r5, r3]
cmp r4, #0
ldr lr, [r0, #0x64]
mul r5, r2, r3
bne _0201B35C
ldrh r3, [sp, #0x10]
mov r0, r1
cmp r3, #0x10
bhs _0201B344
mov r2, ip
add r1, r5, lr
bl DecodeFragmentByteAssemblyTable
mov ip, r0
b _0201B37C
_0201B344:
mov r3, ip
add r1, r5, lr
mov r2, #2
bl DecodeFragmentByteAssemblyTable
mov ip, r0
b _0201B37C
_0201B35C:
cmp r4, #1
bne _0201B37C
ldrh r3, [sp, #0x10]
mov r0, r1
mov r2, ip
add r1, r5, lr
bl DecodeFragmentByteAssemblyTable
mov ip, r0
_0201B37C:
mov r0, ip
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0201B384: .word _020AFC28
arm_func_end sub_0201B2DC
arm_func_start sub_0201B388
sub_0201B388: ; 0x0201B388
stmdb sp!, {r3, r4, r5, lr}
cmp r1, #0
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldrh lr, [r0, #0xc]
ldrb ip, [r3, #0xa]
ldr r5, _0201B438 ; =_020AFC28
mov r4, lr, lsr #0x1f
rsb lr, r4, lr, lsl #30
add r4, r4, lr, ror #30
mov r4, r4, lsl #1
ldrsh lr, [r5, r4]
cmp ip, #0xff
ldr r4, [r0, #0x64]
mul r5, r2, lr
ldreqh r2, [sp, #0x10]
andeq ip, r2, #0xff
ldrh r2, [r3, #4]
cmp r2, #0
bne _0201B414
cmp ip, #0x10
bhs _0201B3F8
mov r3, #0
str r3, [sp]
ldr r0, [r0, #4]
add r2, r5, r4
bl sub_0201AC64
b _0201B430
_0201B3F8:
mov r2, #0
str r2, [sp]
ldr r0, [r0, #4]
add r2, r5, r4
mov r3, #2
bl sub_0201AC64
b _0201B430
_0201B414:
cmp r2, #1
bne _0201B430
mov r3, #0
str r3, [sp]
ldr r0, [r0, #4]
add r2, r5, r4
bl sub_0201AC64
_0201B430:
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0201B438: .word _020AFC28
arm_func_end sub_0201B388
arm_func_start sub_0201B43C
sub_0201B43C: ; 0x0201B43C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r6, r1
ldrb r1, [r6, #0xa]
mov r7, r0
ldrh r0, [r6, #4]
mov r5, r2
cmp r1, #0xff
movne r5, r1
cmp r0, #0
bne _0201B4B8
cmp r5, #0x10
bhs _0201B48C
ldrsh r2, [r6, #6]
mov r1, r5, lsl #4
ldr r0, [r7, #8]
ldr r3, [r6]
and r1, r1, #0xff
and r2, r2, #0xff
bl sub_0201AD8C
b _0201B534
_0201B48C:
ldr r1, [r6]
sub r0, r5, #0x10
str r1, [sp]
mov r0, r0, lsl #0x10
mov r1, r0, lsr #0x10
ldr r0, [r7, #8]
and r1, r1, #0xff
mov r2, #0
mov r3, #0x10
bl sub_0201AE1C
b _0201B534
_0201B4B8:
cmp r0, #1
bne _0201B534
ldrb r0, [r6, #0xb]
cmp r0, #0
beq _0201B518
ldrsh r1, [r6, #6]
mov r4, #0
mov sb, #0x10
mov r0, r1, asr #3
add r8, r1, r0, lsr #28
b _0201B50C
_0201B4E4:
ldr r0, [r6]
add r1, r5, r4
add r0, r0, r4, lsl #6
str r0, [sp]
ldrh r2, [r6, #8]
ldr r0, [r7, #8]
mov r3, sb
and r1, r1, #0xff
bl sub_0201AE1C
add r4, r4, #1
_0201B50C:
cmp r4, r8, asr #4
blt _0201B4E4
b _0201B534
_0201B518:
ldr r0, [r6]
and r1, r5, #0xff
str r0, [sp]
ldrh r2, [r6, #8]
ldrh r3, [r6, #6]
ldr r0, [r7, #8]
bl sub_0201AE1C
_0201B534:
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end sub_0201B43C
arm_func_start sub_0201B53C
sub_0201B53C: ; 0x0201B53C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r4, [sp, #0x18]
mov r5, r3
ldrh ip, [r4, #4]
ldr r3, _0201B5F4 ; =_020AFC30
mov r6, r0
mov r0, ip, lsl #1
ldrh r7, [r3, r0]
mov r3, #0
cmp r7, #0
bne _0201B57C
ldrh r0, [sp, #0x1c]
cmp r0, #0x10
movhs r0, #1
movlo r0, r7
b _0201B580
_0201B57C:
mov r0, r7
_0201B580:
mov ip, r2, lsl #0x10
ldrsh r2, [r6, #0xc]
cmp r7, #0
cmpeq r0, #1
mov r0, r1
moveq r3, #1
mov r1, ip, asr #0x10
bl sub_0201B5F8
ldrb r1, [sp, #0x24]
mov r0, r0, lsl #0x10
mov r7, r0, lsr #0x10
cmp r1, #0
bne _0201B5D0
ldrh ip, [sp, #0x1c]
mov r0, r6
mov r1, r5
mov r2, r7
mov r3, r4
str ip, [sp]
bl sub_0201B388
_0201B5D0:
ldrb r0, [sp, #0x28]
cmp r0, #0
bne _0201B5EC
ldrh r2, [sp, #0x1c]
mov r0, r6
mov r1, r4
bl sub_0201B43C
_0201B5EC:
mov r0, r7
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0201B5F4: .word _020AFC30
arm_func_end sub_0201B53C
arm_func_start sub_0201B5F8
sub_0201B5F8: ; 0x0201B5F8
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0xc
mov r4, r0
mov r5, r1
mov r1, r4
add r0, sp, #0
mov r6, r2
mov r4, r3
bl sub_0201B678
ldrh r3, [sp, #8]
ldr r0, _0201B670 ; =0x000003FF
ldr r1, _0201B674 ; =_020996D8
mov r2, r6, lsl #1
and r0, r3, r0
mov r0, r0, lsl #0x10
ldrsh r1, [r1, r2]
mov r0, r0, asr #0x10
cmp r4, #0
mov r0, r0, lsl r1
mov r0, r0, lsl #0x10
movne r1, #1
mov r0, r0, asr #0x10
moveq r1, #0
mov r0, r0, lsl r1
mov r0, r0, lsl #0x10
add r0, r5, r0, asr #16
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
add sp, sp, #0xc
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_0201B670: .word 0x000003FF
_0201B674: .word _020996D8
arm_func_end sub_0201B5F8
arm_func_start sub_0201B678
sub_0201B678: ; 0x0201B678
ldrh r3, [r1]
ldr r2, _0201B6D0 ; =0x0000FCFF
strh r3, [r0]
ldrh ip, [r1, #2]
sub r3, r2, #0xb00
strh ip, [r0, #2]
ldrh ip, [r1, #4]
and r2, ip, r2
strh r2, [r0, #4]
ldrh r2, [r1, #6]
and r2, r2, r3
strh r2, [r0, #6]
ldrh r2, [r1, #8]
strh r2, [r0, #8]
ldrh r2, [r1, #4]
ldrh r3, [r1, #6]
mov r1, r2, lsl #0x16
and r2, r3, #0xe00
mov r1, r1, lsr #0x12
orr r1, r1, r2, asr #9
strh r1, [r0, #0xa]
bx lr
.align 2, 0
_0201B6D0: .word 0x0000FCFF
arm_func_end sub_0201B678
arm_func_start sub_0201B6D4
sub_0201B6D4: ; 0x0201B6D4
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x24
mov r5, r0
mov r6, r2
mov r7, r1
mov r4, r3
ldrsh r1, [r6, #4]
ldrsh r2, [r5, #0xc]
ldrb r3, [r6, #0xe]
mov r0, r7
bl sub_0201B5F8
ldr r1, [r5, #0x40]
str r0, [sp, #4]
cmp r1, #0x80
mvnge r0, #0
bge _0201B9A4
ldrh r2, [r6, #0xa]
ldrh r3, [r6, #8]
ldrb sl, [r6, #0xf]
and r8, r2, #0xff
ldrh r2, [r6, #0xc]
add r0, sp, #0x16
mov r1, r7
str r2, [sp]
and sb, r3, #0xff
ldrh r7, [r6, #6]
ldrsh fp, [r6, #2]
ldrsh r6, [r6]
bl sub_0201B678
ldrsb r0, [sp, #0x19]
adds r7, r7, r0
movmi r7, #0
cmp r7, #0x140
ldrge r7, _0201B9AC ; =0x0000013F
cmp r4, #0
bne _0201B790
add r3, sp, #0x1a
ldrh r0, [r3]
add r4, sp, #0xe
ldrh r2, [r3, #2]
ldrh r1, [r3, #4]
strh r0, [r4]
ldrh r0, [r3, #6]
strh r2, [r4, #2]
strh r1, [r4, #4]
strh r0, [r4, #6]
b _0201B7E8
_0201B790:
add lr, sp, #0x1a
ldrh r1, [r4]
ldrh r2, [lr]
ldrh r0, [r4, #6]
add ip, sp, #0xe
and r1, r2, r1
orr r0, r0, r1
strh r0, [ip]
ldrh r2, [lr, #2]
ldrh r1, [r4, #2]
ldrh r3, [r4, #8]
ldrh r0, [lr, #4]
and r1, r2, r1
orr r1, r3, r1
strh r1, [ip, #2]
ldrh r1, [r4, #4]
ldrh r2, [r4, #0xa]
ldrh r3, [lr, #6]
and r0, r0, r1
orr r0, r2, r0
strh r0, [ip, #4]
strh r3, [ip, #6]
_0201B7E8:
ldrh r1, [sp, #0x12]
mov r2, #0x400
rsb r2, r2, #0
and r1, r1, r2
ldrh r0, [sp, #0x10]
strh r1, [sp, #0x12]
and r1, r0, r2, lsr #23
sub r0, r6, #0x100
add r4, r1, r0
ldr r1, [sp, #4]
ldrh r0, [sp, #0x12]
mov r1, r1, lsl #0x10
mov r2, r2, lsr #0x16
and r1, r2, r1, lsr #16
orr r1, r0, r1
mov r3, r4, lsl #0x10
mov r0, r3, asr #0x10
strh r1, [sp, #0x12]
bl sub_0201B9B0
cmp r0, #0
mvnne r7, #0
bne _0201B950
ldrh r1, [sp, #0x10]
mov r0, #0x200
rsb r0, r0, #0
and r1, r1, r0
strh r1, [sp, #0x10]
ldrh r3, [sp, #0x14]
mov r1, r0, lsr #0x14
sub r2, fp, #0x200
and r1, r1, r3, asr #4
add r6, r1, r2
ldrh r3, [sp, #0x10]
mov r1, r6, lsl #0x10
and r2, r4, r0, lsr #23
mov r0, r1, asr #0x10
orr r1, r3, r2
strh r1, [sp, #0x10]
bl sub_0201B9D4
cmp r0, #0
mvnne r7, #0
bne _0201B950
ldrh r1, [sp, #0xe]
ldrh r0, [sp, #0x14]
and r2, r6, #0xff
bic r1, r1, #0xff
strh r1, [sp, #0xe]
ldrh r3, [sp, #0xe]
mov r1, r0, asr #1
ldr r0, [sp]
orr r2, r3, r2
bic r2, r2, #0x2000
strh r2, [sp, #0xe]
ldrh r2, [sp, #0xe]
mov r0, r0, lsl #0x1f
tst r1, #1
orr r0, r2, r0, lsr #18
strh r0, [sp, #0xe]
bne _0201B928
cmp sl, #0
beq _0201B8FC
ldrh r1, [sp, #0x12]
mov r0, sb, lsl #0x1c
bic r1, r1, #0xf000
strh r1, [sp, #0x12]
ldrh r1, [sp, #0x12]
orr r0, r1, r0, lsr #16
strh r0, [sp, #0x12]
b _0201B928
_0201B8FC:
ldrh r2, [sp, #0x12]
and r1, sb, #0xf
bic r0, r2, #0xf000
strh r0, [sp, #0x12]
mov r0, r2, asr #0xc
and r0, r0, #0xf
add r0, r0, r1
ldrh r1, [sp, #0x12]
mov r0, r0, lsl #0x1c
orr r0, r1, r0, lsr #16
strh r0, [sp, #0x12]
_0201B928:
ldrh r1, [sp, #0x12]
bic r0, r1, #0xf000
strh r0, [sp, #0x12]
mov r0, r1, asr #0xc
and r0, r0, #0xf
add r0, r0, r8
ldrh r1, [sp, #0x12]
mov r0, r0, lsl #0x1c
orr r0, r1, r0, lsr #16
strh r0, [sp, #0x12]
_0201B950:
cmp r7, #0
mvnlt r0, #1
blt _0201B9A4
ldr r1, [r5, #0x40]
ldr r0, [r5, #0x20]
cmp r1, r0
bge _0201B9A0
ldrh r4, [sp, #0xe]
ldrh r3, [sp, #0x10]
ldrh r0, [sp, #0x12]
add r1, sp, #8
mov r2, r7
strh r0, [sp, #0xc]
strh r4, [sp, #8]
strh r3, [sp, #0xa]
add r0, r5, #0x20
bl sub_0200B6F0
ldr r0, [r5, #0x40]
add r0, r0, #1
str r0, [r5, #0x40]
_0201B9A0:
mov r0, #0
_0201B9A4:
add sp, sp, #0x24
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0201B9AC: .word 0x0000013F
arm_func_end sub_0201B6D4
arm_func_start sub_0201B9B0
sub_0201B9B0: ; 0x0201B9B0
mvn r1, #0x3f
cmp r0, r1
blt _0201B9C4
cmp r0, #0x100
blt _0201B9CC
_0201B9C4:
mov r0, #1
bx lr
_0201B9CC:
mov r0, #0
bx lr
arm_func_end sub_0201B9B0
arm_func_start sub_0201B9D4
sub_0201B9D4: ; 0x0201B9D4
mvn r1, #0x3f
cmp r0, r1
blt _0201B9E8
cmp r0, #0xc0
blt _0201B9F0
_0201B9E8:
mov r0, #1
bx lr
_0201B9F0:
mov r0, #0
bx lr
arm_func_end sub_0201B9D4
arm_func_start sub_0201B9F8
sub_0201B9F8: ; 0x0201B9F8
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r4, r0
ldr r3, [r4, #0x40]
cmp r3, #0x80
mvnge r0, #0
bge _0201BA90
cmp r2, #0
blt _0201BA24
cmp r2, #0x140
blt _0201BA2C
_0201BA24:
mvn r0, #1
b _0201BA90
_0201BA2C:
ldr r0, [r4, #0x20]
cmp r3, r0
bge _0201BA8C
ldrh lr, [r1]
ldr r3, _0201BA98 ; =0x00000FFF
add r0, r4, #0x20
strh lr, [sp]
ldrh ip, [r1, #2]
and lr, lr, #0xff00
strh ip, [sp, #2]
ldrh ip, [r1, #4]
strh ip, [sp, #4]
ldrh ip, [r1, #6]
add r1, sp, #0
and r3, r3, ip, asr #4
mov r3, r3, lsl #0x10
mov r3, r3, asr #0x10
and r3, r3, #0xff
orr r3, lr, r3
strh r3, [sp]
bl sub_0200B6F0
ldr r0, [r4, #0x40]
add r0, r0, #1
str r0, [r4, #0x40]
_0201BA8C:
mov r0, #0
_0201BA90:
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
_0201BA98: .word 0x00000FFF
arm_func_end sub_0201B9F8
arm_func_start sub_0201BA9C
sub_0201BA9C: ; 0x0201BA9C
ldr ip, _0201BAA8 ; =sub_0200B57C
add r0, r0, #0x20
bx ip
.align 2, 0
_0201BAA8: .word sub_0200B57C
arm_func_end sub_0201BA9C
arm_func_start sub_0201BAAC
sub_0201BAAC: ; 0x0201BAAC
stmdb sp!, {r4, lr}
mov r4, r0
add r0, r4, #0x20
bl sub_0200B570
add r0, r4, #0x20
bl sub_0200B630
ldmia sp!, {r4, pc}
arm_func_end sub_0201BAAC
arm_func_start sub_0201BAC8
sub_0201BAC8: ; 0x0201BAC8
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
ldrb r5, [sp, #0x18]
ldrb r4, [sp, #0x1c]
str r5, [sp]
str r4, [sp, #4]
ldrh ip, [r0, #0xc]
ldr r4, [r0, #0x64]
ldr r5, _0201BB1C ; =_020AFC28
mov lr, ip, lsr #0x1f
rsb ip, lr, ip, lsl #30
add ip, lr, ip, ror #30
mov ip, ip, lsl #1
ldrsh ip, [r5, ip]
mov r5, r1
ldr r0, [r0, #4]
smlabb r1, r2, ip, r4
mov r2, r5
bl sub_0201AC20
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0201BB1C: .word _020AFC28
arm_func_end sub_0201BAC8
arm_func_start sub_0201BB20
sub_0201BB20: ; 0x0201BB20
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #4]
bl sub_0201AD44
ldr r0, [r4, #4]
bl sub_0201AC10
ldmia sp!, {r4, pc}
arm_func_end sub_0201BB20
arm_func_start sub_0201BB3C
sub_0201BB3C: ; 0x0201BB3C
stmdb sp!, {r3, lr}
mov r0, #0x1f00
mov r1, #0
bl MemAlloc
ldr r2, _0201BCBC ; =_020AFC4C
mov r1, #0x1f00
str r0, [r2]
bl MemZero
ldr r0, _0201BCBC ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0x1c0
bl sub_0201AB90
ldr r0, _0201BCBC ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0x3c4
add r0, r0, #0xc00
bl sub_0201AB90
ldr r0, _0201BCBC ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0x1c0
bl sub_0201AC10
ldr r0, _0201BCBC ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0x3c4
add r0, r0, #0xc00
bl sub_0201AC10
ldr r0, _0201BCBC ; =_020AFC4C
mov r1, #0
ldr r0, [r0]
add r0, r0, #0x1c8
add r0, r0, #0x1c00
bl sub_0201AEF0
ldr r0, _0201BCBC ; =_020AFC4C
ldr r1, _0201BCC0 ; =0x05000200
ldr r0, [r0]
add r0, r0, #0x1c8
add r0, r0, #0x1c00
bl sub_0201AF18
ldr r0, _0201BCBC ; =_020AFC4C
ldr r1, _0201BCC4 ; =0x06894000
ldr r0, [r0]
add r0, r0, #0x1c8
add r0, r0, #0x1c00
bl sub_0201AF64
ldr r0, _0201BCBC ; =_020AFC4C
mov r1, #1
ldr r0, [r0]
add r0, r0, #0x264
add r0, r0, #0x1c00
bl sub_0201AEF0
ldr r0, _0201BCBC ; =_020AFC4C
ldr r1, _0201BCC8 ; =0x05000600
ldr r0, [r0]
add r0, r0, #0x264
add r0, r0, #0x1c00
bl sub_0201AF18
ldr r0, _0201BCBC ; =_020AFC4C
mov r3, #0
ldr r0, [r0]
str r3, [sp]
add r1, r0, #0x1c8
add r1, r1, #0x1c00
add r2, r0, #0x1c0
bl sub_0201B198
ldr r0, _0201BCBC ; =_020AFC4C
mov r3, #1
ldr r2, [r0]
str r3, [sp]
add r0, r2, #0x70
add r1, r2, #0x264
add r1, r1, #0x1c00
add r2, r2, #0x3c4
add r2, r2, #0xc00
bl sub_0201B198
ldr r0, _0201BCBC ; =_020AFC4C
mov r1, #2
ldr r2, [r0]
mov r3, #0
str r1, [sp]
add r0, r2, #0xe0
add r1, r2, #0x1c8
add r1, r1, #0x1c00
add r2, r2, #0x1c0
bl sub_0201B198
ldr r0, _0201BCBC ; =_020AFC4C
mov r1, #3
ldr r2, [r0]
mov r3, #1
str r1, [sp]
add r0, r2, #0x150
add r1, r2, #0x264
add r1, r1, #0x1c00
add r2, r2, #0x3c4
add r2, r2, #0xc00
bl sub_0201B198
ldmia sp!, {r3, pc}
.align 2, 0
_0201BCBC: .word _020AFC4C
_0201BCC0: .word 0x05000200
_0201BCC4: .word 0x06894000
_0201BCC8: .word 0x05000600
arm_func_end sub_0201BB3C
arm_func_start sub_0201BCCC
sub_0201BCCC: ; 0x0201BCCC
ldr r1, _0201BCEC ; =_020AFC4C
mov r2, #0x9c
ldr r1, [r1]
ldr ip, _0201BCF0 ; =sub_0201AD7C
add r1, r1, #0x1c8
add r1, r1, #0x1c00
mla r0, r2, r0, r1
bx ip
.align 2, 0
_0201BCEC: .word _020AFC4C
_0201BCF0: .word sub_0201AD7C
arm_func_end sub_0201BCCC
arm_func_start sub_0201BCF4
sub_0201BCF4: ; 0x0201BCF4
ldr r1, _0201BD14 ; =_020AFC4C
mov r2, #0x9c
ldr r1, [r1]
ldr ip, _0201BD18 ; =sub_0201AD84
add r1, r1, #0x1c8
add r1, r1, #0x1c00
mla r0, r2, r0, r1
bx ip
.align 2, 0
_0201BD14: .word _020AFC4C
_0201BD18: .word sub_0201AD84
arm_func_end sub_0201BCF4
arm_func_start sub_0201BD1C
sub_0201BD1C: ; 0x0201BD1C
ldr r3, _0201BD4C ; =_020AFC4C
mov r2, #0x9c
ldr ip, [r3]
and r3, r0, #1
add r0, ip, #0x1c8
add r0, r0, #0x1c00
mla r2, r1, r2, r0
ldrb r0, [r2, #0x78]
bic r0, r0, #1
orr r0, r0, r3
strb r0, [r2, #0x78]
bx lr
.align 2, 0
_0201BD4C: .word _020AFC4C
arm_func_end sub_0201BD1C
arm_func_start sub_0201BD50
sub_0201BD50: ; 0x0201BD50
stmdb sp!, {r3, lr}
ldr r3, _0201BD7C ; =_020AFC4C
mov r2, #0x9c
ldr r3, [r3]
mov ip, r0
add r0, r3, #0x1c8
add r0, r0, #0x1c00
mla r0, r1, r2, r0
mov r1, ip
bl sub_0201AEB4
ldmia sp!, {r3, pc}
.align 2, 0
_0201BD7C: .word _020AFC4C
arm_func_end sub_0201BD50
arm_func_start sub_0201BD80
sub_0201BD80: ; 0x0201BD80
stmdb sp!, {r3, lr}
ldr ip, _0201BDB0 ; =_020AFC4C
mov lr, r0
ldr ip, [ip]
mov r3, #0x9c
add r0, ip, #0x1c8
add r0, r0, #0x1c00
mla r0, r2, r3, r0
mov r2, r1
mov r1, lr
bl sub_0201AECC
ldmia sp!, {r3, pc}
.align 2, 0
_0201BDB0: .word _020AFC4C
arm_func_end sub_0201BD80
arm_func_start sub_0201BDB4
sub_0201BDB4: ; 0x0201BDB4
stmdb sp!, {r3, lr}
mov r0, #8
bl sub_0200302C
ldr r0, _0201BDE8 ; =_020AFC4C
ldr r0, [r0]
bl sub_0201BAAC
ldr r0, _0201BDE8 ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0x70
bl sub_0201BAAC
mov r0, #8
bl sub_020030FC
ldmia sp!, {r3, pc}
.align 2, 0
_0201BDE8: .word _020AFC4C
arm_func_end sub_0201BDB4
arm_func_start sub_0201BDEC
sub_0201BDEC: ; 0x0201BDEC
stmdb sp!, {r3, lr}
mov r0, #8
bl sub_0200302C
ldr r0, _0201BE24 ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0xe0
bl sub_0201BAAC
ldr r0, _0201BE24 ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0x150
bl sub_0201BAAC
mov r0, #8
bl sub_020030FC
ldmia sp!, {r3, pc}
.align 2, 0
_0201BE24: .word _020AFC4C
arm_func_end sub_0201BDEC
arm_func_start sub_0201BE28
sub_0201BE28: ; 0x0201BE28
stmdb sp!, {r3, lr}
ldr r0, _0201BE58 ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0x1c8
add r0, r0, #0x1c00
bl sub_0201AFB8
ldr r0, _0201BE58 ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0x264
add r0, r0, #0x1c00
bl sub_0201AFB8
ldmia sp!, {r3, pc}
.align 2, 0
_0201BE58: .word _020AFC4C
arm_func_end sub_0201BE28
arm_func_start sub_0201BE5C
sub_0201BE5C: ; 0x0201BE5C
stmdb sp!, {r3, lr}
ldr r0, _0201BE80 ; =_020AFC4C
ldr r0, [r0]
bl sub_0201BA9C
ldr r0, _0201BE80 ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0x70
bl sub_0201BA9C
ldmia sp!, {r3, pc}
.align 2, 0
_0201BE80: .word _020AFC4C
arm_func_end sub_0201BE5C
arm_func_start sub_0201BE84
sub_0201BE84: ; 0x0201BE84
stmdb sp!, {r3, lr}
ldr r0, _0201BEAC ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0xe0
bl sub_0201BA9C
ldr r0, _0201BEAC ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0x150
bl sub_0201BA9C
ldmia sp!, {r3, pc}
.align 2, 0
_0201BEAC: .word _020AFC4C
arm_func_end sub_0201BE84
arm_func_start sub_0201BEB0
sub_0201BEB0: ; 0x0201BEB0
stmdb sp!, {r3, lr}
mov r0, #8
bl sub_0200302C
ldr r0, _0201BF0C ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0x1c8
add r0, r0, #0x1c00
bl sub_0201B004
ldr r0, _0201BF0C ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0x264
add r0, r0, #0x1c00
bl sub_0201B004
ldr r0, _0201BF0C ; =_020AFC4C
ldr r0, [r0]
bl sub_0201BB20
ldr r0, _0201BF0C ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0x70
bl sub_0201BB20
mov r0, #8
bl sub_020030FC
ldmia sp!, {r3, pc}
.align 2, 0
_0201BF0C: .word _020AFC4C
arm_func_end sub_0201BEB0
arm_func_start sub_0201BF10
sub_0201BF10: ; 0x0201BF10
stmdb sp!, {r3, lr}
mov r0, #8
bl sub_0200302C
ldr r0, _0201BF48 ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0xe0
bl sub_0201BB20
ldr r0, _0201BF48 ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0x150
bl sub_0201BB20
mov r0, #8
bl sub_020030FC
ldmia sp!, {r3, pc}
.align 2, 0
_0201BF48: .word _020AFC4C
arm_func_end sub_0201BF10
arm_func_start sub_0201BF4C
sub_0201BF4C: ; 0x0201BF4C
stmdb sp!, {r3, lr}
bl sub_0201BEB0
bl sub_0201BF10
bl sub_0201BDB4
bl sub_0201BDEC
ldmia sp!, {r3, pc}
arm_func_end sub_0201BF4C
arm_func_start sub_0201BF64
sub_0201BF64: ; 0x0201BF64
stmdb sp!, {r3, lr}
ldr r0, _0201BFA8 ; =_020AFC4C
ldr r0, [r0]
bl sub_0201B2A0
ldr r0, _0201BFA8 ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0x70
bl sub_0201B2A0
ldr r0, _0201BFA8 ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0xe0
bl sub_0201B2A0
ldr r0, _0201BFA8 ; =_020AFC4C
ldr r0, [r0]
add r0, r0, #0x150
bl sub_0201B2A0
ldmia sp!, {r3, pc}
.align 2, 0
_0201BFA8: .word _020AFC4C
arm_func_end sub_0201BF64
arm_func_start sub_0201BFAC
sub_0201BFAC: ; 0x0201BFAC
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr ip, _0201BFEC ; =_020AFC4C
str r3, [sp]
ldr lr, [ip]
ldr ip, [sp, #0x10]
mov r3, #0x70
mov r4, r0
mla r0, ip, r3, lr
mov ip, r1
mov r3, r2
mov r1, r4
mov r2, ip
bl sub_0201B2DC
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
_0201BFEC: .word _020AFC4C
arm_func_end sub_0201BFAC
arm_func_start CopyAndInterleaveWrapper
CopyAndInterleaveWrapper: ; 0x0201BFF0
ldr ip, _0201BFFC ; =CopyAndInterleave
mov r2, r2, asr #1
bx ip
.align 2, 0
_0201BFFC: .word CopyAndInterleave
arm_func_end CopyAndInterleaveWrapper
arm_func_start sub_0201C000
sub_0201C000: ; 0x0201C000
ldr r2, _0201C024 ; =0x0000FFFF
mov r1, #0
strh r2, [r0]
strh r2, [r0, #2]
strh r2, [r0, #4]
strh r1, [r0, #6]
strh r1, [r0, #8]
strh r1, [r0, #0xa]
bx lr
.align 2, 0
_0201C024: .word 0x0000FFFF
arm_func_end sub_0201C000
arm_func_start sub_0201C028
sub_0201C028: ; 0x0201C028
strh r1, [r0]
strh r2, [r0, #2]
ldrh r1, [sp]
strh r3, [r0, #4]
ldrh r2, [sp, #4]
strh r1, [r0, #6]
ldrh r1, [sp, #8]
strh r2, [r0, #8]
strh r1, [r0, #0xa]
bx lr
arm_func_end sub_0201C028
arm_func_start InitAnimationControl
InitAnimationControl: ; 0x0201C050
stmdb sp!, {r4, lr}
mov r1, #0x7c
mov r4, r0
bl MemZero
mov r1, #0
str r1, [r4, #0x68]
str r1, [r4, #0x6c]
strh r1, [r4, #0x70]
mov r0, #0xff
strh r1, [r4, #0x72]
strb r0, [r4, #0x43]
add r0, r0, #0xff00
strh r0, [r4, #0x36]
mov r0, #9
strb r0, [r4, #0x40]
add r0, r4, #0x10
bl sub_0201C000
ldrh r0, [r4, #2]
bic r0, r0, #0x8000
strh r0, [r4, #2]
ldrh r0, [r4, #2]
orr r0, r0, #0x200
strh r0, [r4, #2]
ldmia sp!, {r4, pc}
arm_func_end InitAnimationControl
arm_func_start InitAnimationControlWithSet__0201C0B0
InitAnimationControlWithSet__0201C0B0: ; 0x0201C0B0
stmdb sp!, {r4, lr}
mov r4, r0
bl InitAnimationControl
ldrh r0, [r4, #2]
orr r0, r0, #1
strh r0, [r4, #2]
ldmia sp!, {r4, pc}
arm_func_end InitAnimationControlWithSet__0201C0B0
arm_func_start InitAnimationControlWithSet__0201C0CC
InitAnimationControlWithSet__0201C0CC: ; 0x0201C0CC
stmdb sp!, {r4, lr}
mov r4, r0
bl InitAnimationControl
ldrh r0, [r4, #2]
orr r0, r0, #1
strh r0, [r4, #2]
ldmia sp!, {r4, pc}
arm_func_end InitAnimationControlWithSet__0201C0CC
arm_func_start SetSpriteIdForAnimationControl
SetSpriteIdForAnimationControl: ; 0x0201C0E8
strh r1, [r0, #0x70]
ldrsh r2, [r0, #0x70]
ldrsh r1, [r0, #0x72]
cmp r2, r1
strneh r2, [r0, #0x72]
movne r1, #0xff
strneb r1, [r0, #0x43]
bx lr
arm_func_end SetSpriteIdForAnimationControl
arm_func_start sub_0201C108
sub_0201C108: ; 0x0201C108
stmdb sp!, {r4, lr}
mov r4, r0
ldrsh r0, [r4, #0x70]
cmp r0, #0
bne _0201C124
ldr r0, _0201C134 ; =_020996E0
bl Debug_Print0
_0201C124:
ldrh r0, [r4, #2]
orr r0, r0, #0x8000
strh r0, [r4, #2]
ldmia sp!, {r4, pc}
.align 2, 0
_0201C134: .word _020996E0
arm_func_end sub_0201C108
arm_func_start sub_0201C138
sub_0201C138: ; 0x0201C138
ldr ip, _0201C140 ; =InitAnimationControl
bx ip
.align 2, 0
_0201C140: .word InitAnimationControl
arm_func_end sub_0201C138
arm_func_start sub_0201C144
sub_0201C144: ; 0x0201C144
stmdb sp!, {r3, lr}
ldr r1, _0201C178 ; =_020AFC3C
ldr r1, [r1, r2, lsl #2]
mov r1, r1, lsl #0x10
add r0, r0, r1, asr #16
sub r0, r0, #1
mov r0, r0, lsl #0x10
mov r1, r1, asr #0x10
mov r0, r0, asr #0x10
bl _s32_div_f
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r3, pc}
.align 2, 0
_0201C178: .word _020AFC3C
arm_func_end sub_0201C144
arm_func_start SetAnimationForAnimationControlInternal
SetAnimationForAnimationControlInternal: ; 0x0201C17C
stmdb sp!, {r3, r4, r5, lr}
ldr r4, [sp, #0x18]
ldmia r1, {ip, lr}
mov r5, #0
mov r4, r4, lsl #0x10
strh r5, [r0]
strh r5, [r0, #6]
mov r4, r4, asr #0x10
strh r4, [r0, #8]
strh r4, [r0, #0xa]
strh r5, [r0, #0xc]
mov r5, #1
ldrb r4, [sp, #0x1c]
strh r5, [r0, #4]
ldrh r5, [r0]
cmp r4, #0
orr r4, r5, #0x8000
strh r4, [r0]
ldrneh r4, [r0]
mov r5, #0
orrne r4, r4, #0x1000
strneh r4, [r0]
ldr r4, [ip, #8]
add r4, r4, r2, lsl #3
ldrh r4, [r4, #4]
cmp r3, r4
strh r5, [r0, #0x20]
movge r3, #0
ldr r4, [sp, #0x10]
strh r5, [r0, #0x22]
strh r4, [r0, #0x32]
sub r4, r5, #1
strh r4, [r0, #0x3a]
strh r4, [r0, #0x3c]
str r5, [r0, #0x28]
str r5, [r0, #0x2c]
strh r5, [r0, #0xc]
strh r2, [r0, #0x76]
strh r3, [r0, #0x78]
ldr r4, [ip]
cmp lr, #0
str r4, [r0, #0x54]
ldrne r5, [lr]
cmp lr, #0
str r5, [r0, #0x58]
ldrne r4, [lr, #4]
moveq r4, #0
str r4, [r0, #0x5c]
cmp lr, #0
ldrnesh r4, [lr, #0xa]
ldrb lr, [sp, #0x14]
ldreqsh r4, [ip, #0x14]
and r4, r4, #1
strh r4, [r0, #0x60]
ldr r4, [ip, #4]
str r4, [r0, #0x50]
ldrb r4, [sp, #0x20]
strb lr, [r0, #0x41]
strb r4, [r0, #0x7a]
ldrb r1, [r1, #8]
cmp r1, #1
beq _0201C29C
ldr r1, [ip, #8]
ldr r1, [r1]
ldr r1, [r1, r3, lsl #2]
str r1, [r0, #0x48]
str r1, [r0, #0x4c]
ldr r1, [ip, #8]
ldrh r1, [r1, #4]
strh r1, [r0, #0x30]
ldr r1, [ip, #8]
b _0201C2C0
_0201C29C:
ldrsh r1, [ip, #0xc]
strh r1, [r0, #0x30]
ldr r1, [ip, #8]
ldr r1, [r1, r2, lsl #3]
ldr r1, [r1, r3, lsl #2]
str r1, [r0, #0x48]
str r1, [r0, #0x4c]
ldr r1, [ip, #8]
add r1, r1, r2, lsl #3
_0201C2C0:
ldrh r1, [r1, #6]
strh r1, [r0, #0x62]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end SetAnimationForAnimationControlInternal
arm_func_start SetAnimationForAnimationControl
SetAnimationForAnimationControl: ; 0x0201C2CC
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x14
mov r7, r0
ldrsh r0, [r7, #0x70]
mov r6, r1
mov r5, r2
mov r4, r3
bl SpriteTypeInWanTable
cmp r0, #0
beq _0201C304
add r0, r0, #0xfe
and r0, r0, #0xff
cmp r0, #1
bhi _0201C348
_0201C304:
mov r0, r7
bl GetWanForAnimationControl
ldrb r3, [sp, #0x28]
str r4, [sp]
mov r1, r0
ldr r2, [sp, #0x2c]
str r3, [sp, #4]
ldrb r0, [sp, #0x30]
str r2, [sp, #8]
ldrb r4, [sp, #0x34]
str r0, [sp, #0xc]
mov r0, r7
mov r3, r6
mov r2, #0
str r4, [sp, #0x10]
bl SetAnimationForAnimationControlInternal
b _0201C3E0
_0201C348:
ldrsh r0, [r7, #0x70]
mov r1, r6, lsl #0x10
mov r1, r1, asr #0x10
bl WanTableSpriteHasAnimationGroup
cmp r0, #0
mov r0, r7
beq _0201C3A4
bl GetWanForAnimationControl
str r4, [sp]
ldrb r3, [sp, #0x28]
mov r1, r0
ldr r2, [sp, #0x2c]
str r3, [sp, #4]
str r2, [sp, #8]
ldrb r0, [sp, #0x30]
ldrb r4, [sp, #0x34]
mov r2, r6
str r0, [sp, #0xc]
mov r0, r7
mov r3, r5
str r4, [sp, #0x10]
bl SetAnimationForAnimationControlInternal
b _0201C3E0
_0201C3A4:
bl GetWanForAnimationControl
str r4, [sp]
ldrb r3, [sp, #0x28]
mov r1, r0
ldr r2, [sp, #0x2c]
str r3, [sp, #4]
str r2, [sp, #8]
ldrb r0, [sp, #0x30]
ldrb r4, [sp, #0x34]
mov r3, r5
str r0, [sp, #0xc]
mov r0, r7
mov r2, #0
str r4, [sp, #0x10]
bl SetAnimationForAnimationControlInternal
_0201C3E0:
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, pc}
arm_func_end SetAnimationForAnimationControl
arm_func_start GetWanForAnimationControl
GetWanForAnimationControl: ; 0x0201C3E8
ldr r1, [r0, #0x68]
cmp r1, #0
ldrne r0, [r1, #4]
bxne lr
ldr r1, _0201C414 ; =WAN_TABLE
ldrsh r2, [r0, #0x70]
ldr r1, [r1]
mov r0, #0x38
smlabb r0, r2, r0, r1
ldr r0, [r0, #0x30]
bx lr
.align 2, 0
_0201C414: .word WAN_TABLE
arm_func_end GetWanForAnimationControl
arm_func_start SetAndPlayAnimationForAnimationControl
SetAndPlayAnimationForAnimationControl: ; 0x0201C418
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldrb r4, [sp, #0x18]
ldr ip, [sp, #0x1c]
ldrb lr, [sp, #0x20]
stmia sp, {r4, ip}
ldrb ip, [sp, #0x24]
str lr, [sp, #8]
mov r4, r0
str ip, [sp, #0xc]
bl SetAnimationForAnimationControl
ldr r1, [r4, #0x4c]
mov r0, r4
bl LoadAnimationFrameAndIncrementInAnimationControl
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end SetAndPlayAnimationForAnimationControl
arm_func_start SwitchAnimationControlToNextFrame
SwitchAnimationControlToNextFrame: ; 0x0201C458
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_0201D1B0
cmp r0, #0
ldmeqia sp!, {r4, pc}
ldrsh r0, [r4, #0x3a]
cmp r0, #0
blt _0201C4F4
ldrh r0, [r4]
tst r0, #0x4000
ldmneia sp!, {r4, pc}
ldrh r1, [r4, #0xc]
ldrsh r0, [r4, #4]
add r0, r1, r0
strh r0, [r4, #0xc]
ldrsh r1, [r4, #0xa]
cmp r1, #0
beq _0201C4C0
ldrsh r0, [r4, #4]
sub r0, r1, r0
strh r0, [r4, #0xa]
ldrsh r0, [r4, #0xa]
cmp r0, #0
movlt r0, #0
strlth r0, [r4, #0xa]
ldmia sp!, {r4, pc}
_0201C4C0:
ldrsh r1, [r4, #6]
cmp r1, #0
beq _0201C4E8
ldrsh r0, [r4, #4]
sub r0, r1, r0
strh r0, [r4, #6]
ldrsh r0, [r4, #6]
cmp r0, #0
movlt r0, #0
strlth r0, [r4, #6]
_0201C4E8:
ldrsh r0, [r4, #6]
cmp r0, #0
ldmgtia sp!, {r4, pc}
_0201C4F4:
ldr r0, [r4, #0x4c]
ldrb r0, [r0]
cmp r0, #0
bne _0201C550
ldrh r0, [r4]
tst r0, #0x1000
beq _0201C544
ldrh r1, [r4, #0x62]
ldr r2, [r4, #0x48]
mov r0, #0xc
mla r0, r1, r0, r2
str r0, [r4, #0x4c]
ldrsh r0, [r4, #8]
cmp r0, #0
beq _0201C550
bl Rand16Bit
ldrsh r1, [r4, #8]
and r0, r1, r0
strh r0, [r4, #0xa]
b _0201C550
_0201C544:
orr r0, r0, #0x2000
strh r0, [r4]
ldmia sp!, {r4, pc}
_0201C550:
ldr r1, [r4, #0x4c]
mov r0, r4
bl LoadAnimationFrameAndIncrementInAnimationControl
ldmia sp!, {r4, pc}
arm_func_end SwitchAnimationControlToNextFrame
arm_func_start LoadAnimationFrameAndIncrementInAnimationControl
LoadAnimationFrameAndIncrementInAnimationControl: ; 0x0201C560
ldrh r2, [r0]
orr r2, r2, #0x800
strh r2, [r0]
ldrb r2, [r1]
strh r2, [r0, #6]
ldrsh r2, [r1, #2]
strh r2, [r0, #0x3a]
ldrsh r2, [r1, #4]
strh r2, [r0, #0x20]
ldrsh r2, [r1, #6]
strh r2, [r0, #0x22]
ldrsh r2, [r1, #8]
strh r2, [r0, #0x24]
ldrsh r2, [r1, #0xa]
strh r2, [r0, #0x26]
ldrb r2, [r1, #1]
str r2, [r0, #0x28]
ldrb r1, [r1, #1]
ldr r2, [r0, #0x2c]
orr r1, r2, r1
str r1, [r0, #0x2c]
ldr r1, [r0, #0x4c]
add r1, r1, #0xc
str r1, [r0, #0x4c]
bx lr
arm_func_end LoadAnimationFrameAndIncrementInAnimationControl
arm_func_start sub_0201C5C4
sub_0201C5C4: ; 0x0201C5C4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x90
mov r8, r0
ldrh r0, [r8]
tst r0, #0x8000
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _0201CF40
ldrsh r0, [r8, #0x3a]
mov fp, #0
cmp r0, #0
bge _0201C618
mov r0, r8
bl SwitchAnimationControlToNextFrame
ldrh r0, [r8]
tst r0, #0x8000
movne r0, #1
moveq r0, fp
tst r0, #0xff
beq _0201CF40
_0201C618:
ldrsh r1, [r8, #0x3c]
ldrsh r0, [r8, #0x3a]
cmp r1, r0
ldrh r0, [r8, #2]
movne fp, #1
bicne r0, r0, #0x100
strneh r0, [r8, #2]
bne _0201C640
tst r0, #0x100
movne fp, #1
_0201C640:
ldrb r0, [r8, #0x7a]
cmp r0, #4
bhs _0201CEC8
ldrsh r0, [r8, #0x70]
bl SpriteTypeInWanTable
cmp r0, #3
bne _0201C928
mov r0, r8
bl GetWanForAnimationControl
ldr r6, [r0]
ldr r5, [r0, #4]
ldr sl, [r6, #0x10]
mov r0, #0
ldr r3, [r5]
mov r7, r0
str r0, [sp, #0x44]
ldr r0, [r5, #4]
ldrsh r1, [r8, #0x3a]
ldr r2, [r6]
cmp sl, #0
str r0, [sp, #0x48]
ldr r4, [r3]
ldr sb, [r2, r1, lsl #2]
beq _0201C6CC
ldrsh r0, [r8, #0x78]
str r0, [sp, #0x20]
ldr r1, [sp, #0x20]
ldrh r0, [r8, #0xc]
add r1, sl, r1, lsl #3
ldr r1, [r1, #4]
bl _s32_div_f
ldr r0, [sp, #0x20]
ldr r0, [sl, r0, lsl #3]
ldrb r0, [r0, r1]
str r0, [sp, #0x44]
_0201C6CC:
cmp r5, #0
cmpne fp, #0
beq _0201C7D8
ldrh r0, [r8, #2]
tst r0, #0x8000
bne _0201C7D8
ldr r0, [sp, #0x48]
ldr r0, [r0]
str r0, [sp, #0x84]
ldr r0, [sp, #0x48]
ldrsh r0, [r0, #6]
strh r0, [sp, #0x8a]
ldrsh r0, [r5, #0xa]
cmp r0, #2
bne _0201C72C
ldrsh r2, [r4, #4]
ldrsh r0, [r4, #6]
mov r1, #2
smulbb r2, r2, r0
mov r0, r2, asr #1
add r0, r2, r0, lsr #30
strh r1, [sp, #0x88]
mov r5, r0, asr #2
b _0201C79C
_0201C72C:
cmp r0, #0
bne _0201C754
ldrsh r2, [r4, #4]
ldrsh r0, [r4, #6]
mov r1, #0
smulbb r0, r2, r0
add r0, r0, r0, lsr #31
strh r1, [sp, #0x88]
mov r5, r0, asr #1
b _0201C79C
_0201C754:
cmp r0, #3
bne _0201C774
ldrsh r2, [r4, #4]
ldrsh r1, [r4, #6]
mov r0, #3
strh r0, [sp, #0x88]
smulbb r5, r2, r1
b _0201C79C
_0201C774:
cmp r0, #4
ldrsh r2, [r4, #4]
ldreqsh r1, [r4, #6]
moveq r0, #4
streqh r0, [sp, #0x88]
smulbbeq r5, r2, r1
ldrnesh r1, [r4, #6]
movne r0, #1
smulbbne r5, r2, r1
strneh r0, [sp, #0x88]
_0201C79C:
ldr r0, _0201CF48 ; =_020AFC70
ldrb r2, [r8, #0x40]
ldr r0, [r0]
ldrb r3, [r8, #0x41]
add r1, sp, #0x84
add r0, r0, #0xcc
bl sub_0201E408
ldrh r1, [r8, #0x32]
ldr r0, [r4]
mov r2, r5
mov r3, #0
bl sub_0201E050
ldrh r0, [r8, #2]
orr r0, r0, #0x8000
strh r0, [r8, #2]
_0201C7D8:
ldr r0, [sp, #0x44]
and r0, r0, #0xf8
mov r0, r0, asr #3
str r0, [sp, #0x24]
_0201C7E8:
ldr r0, _0201CF48 ; =_020AFC70
ldrsh r2, [r8, #0x1c]
ldr r5, [r0]
ldrsh r0, [r8, #0x20]
ldrh sl, [sb, #0x20]
ldrsh ip, [r8, #0x1e]
ldrsh r3, [r8, #0x22]
add r2, r2, r0
ldrb r4, [r8, #0x41]
ldrb r1, [r8, #0x40]
add r3, ip, r3
add ip, sl, #0x39
ldrh r0, [r8, #0x32]
ldr r5, [r5, #0xe0]
mov sl, #3
add r1, r4, r1, lsl #8
strh sl, [sp, #0x5c]
add r4, r5, r1, lsl #1
str r0, [sp, #0x60]
strh ip, [sp, #0x5e]
mov r0, r4, lsl #0x10
ldr r1, [sb]
mov r4, r7
add r0, r1, r0, lsr #16
add r1, r7, #1
and r7, r1, #0xff
add r5, sp, #0x68
str r0, [sp, #0x64]
add sl, sb, #0x10
mov r1, #4
_0201C860:
ldrh r0, [sl], #2
subs r1, r1, #1
strh r0, [r5], #2
bne _0201C860
ldrh r5, [sb, #0x18]
add r0, sp, #0x7e
add r1, sb, #0x1a
strh r5, [sp, #0x70]
ldrsh r5, [sb, #4]
strh r5, [sp, #0x72]
ldrsh sl, [sb, #6]
add r5, r5, r2
add r2, sl, r3
strh r5, [sp, #0x72]
strh r2, [sp, #0x74]
ldrsh r2, [sb, #8]
strh r2, [sp, #0x76]
ldrsh r2, [sb, #0xa]
strh r2, [sp, #0x78]
ldrh r2, [sb, #0xc]
strh r2, [sp, #0x7a]
ldrh r2, [sb, #0xe]
strh r2, [sp, #0x7c]
ldrh r2, [sb, #0x1e]
strb r4, [sp, #0x82]
strh r2, [sp, #0x80]
ldrb r2, [sb, #0x1d]
and r2, r2, #0xf8
mov r2, r2, asr #3
strb r2, [sp, #0x83]
bl Rgb8ToRgb5
ldr r0, [r6, #0x10]
mov r1, #0x3f
cmp r0, #0
ldrne r0, [sp, #0x24]
strneb r0, [sp, #0x83]
mov r0, r7
bl _s32_div_f
ldrh r0, [r8, #2]
and r7, r1, #0xff
tst r0, #2
bne _0201C910
add r0, sp, #0x5c
bl EnqueueRender3dTexture
_0201C910:
ldrb r0, [sb, #0x22]
cmp r0, #0
addeq sb, sb, #0x28
beq _0201C7E8
mov r4, #1
b _0201CF04
_0201C928:
ldrb r2, [r8, #0x7a]
ldr r1, _0201CF4C ; =_020AFC50
mov r0, r8
ldr r1, [r1, r2, lsl #2]
str r1, [sp, #0x40]
bl GetWanForAnimationControl
mov r1, #0
ldrh r3, [r8, #0x60]
str r1, [sp, #0x2c]
ldr r2, _0201CF50 ; =_020AFC30
mov r1, r3, lsl #1
ldrh r1, [r2, r1]
str r1, [sp, #0x28]
ldrsh r2, [r8, #0x3a]
ldr r3, [r8, #0x54]
ldr r1, [sp, #0x2c]
str r1, [sp, #0x34]
str r1, [sp, #0x38]
ldr r7, [r0, #4]
ldr r1, [sp, #0x28]
ldrb r0, [r8, #0x41]
ldr r6, [r3, r2, lsl #2]
cmp r1, #0
str r0, [sp, #0x30]
bne _0201C9B4
ldr r0, [sp, #0x30]
cmp r0, #0x10
blo _0201C9B4
sub r0, r0, #0x10
mov r1, r0, lsl #0x10
mov r0, #1
str r0, [sp, #0x28]
str r0, [sp, #0x38]
mov r0, r1, lsr #0x10
str r0, [sp, #0x30]
_0201C9B4:
ldrh r2, [r8, #2]
tst r2, #0x20
addne r0, r8, #0x10
strne r0, [sp, #0x2c]
cmp r7, #0
cmpne fp, #0
beq _0201CCFC
ldrh r0, [r7, #8]
tst r0, #1
beq _0201CCFC
tst r2, #0x8000
bne _0201CCFC
ldr r0, [sp, #0x40]
mov r1, #0
ldrh r5, [r7, #0xe]
ldrh sb, [r8, #0x32]
mov r4, r1
tst r2, #0x80
movne r1, #1
tst r2, #0x40
and r0, r0, #0xff
movne r4, #1
cmp r0, #3
addls pc, pc, r0, lsl #2
b _0201CCE0
_0201CA18: ; jump table
b _0201CA28 ; case 0
b _0201CAD0 ; case 1
b _0201CB80 ; case 2
b _0201CC30 ; case 3
_0201CA28:
cmp r1, #0
bne _0201CAB0
mov sl, #0
b _0201CAA8
_0201CA38:
ldr r0, [r8, #0x58]
ldrb r1, [r8, #0x41]
ldr r0, [r0, sl, lsl #2]
mov r2, sb
str r0, [sp, #0x3c]
str r1, [sp]
ldr r0, _0201CF54 ; =_020AFC4C
ldr r1, [sp, #0x3c]
ldr r0, [r0]
ldr r3, [r8, #0x5c]
bl sub_0201B388
ldr r2, [r8, #0x5c]
ldr r1, _0201CF54 ; =_020AFC4C
ldrh r3, [r2, #4]
ldr r1, [r1]
ldr r0, [sp, #0x3c]
ldrh r2, [r1, #0xc]
ldr r1, _0201CF50 ; =_020AFC30
mov r3, r3, lsl #1
ldrh r1, [r1, r3]
ldr r0, [r0, #4]
bl sub_0201C144
add r0, sb, r0
mov r0, r0, lsl #0x10
mov sb, r0, lsr #0x10
add r0, sl, #1
mov r0, r0, lsl #0x10
mov sl, r0, lsr #0x10
_0201CAA8:
cmp sl, r5
blo _0201CA38
_0201CAB0:
cmp r4, #0
bne _0201CCE0
ldr r0, _0201CF54 ; =_020AFC4C
ldrb r2, [r8, #0x41]
ldr r0, [r0]
ldr r1, [r8, #0x5c]
bl sub_0201B43C
b _0201CCE0
_0201CAD0:
cmp r1, #0
bne _0201CB5C
mov sl, #0
b _0201CB54
_0201CAE0:
ldr r0, [r8, #0x58]
ldrb r1, [r8, #0x41]
ldr r0, [r0, sl, lsl #2]
mov r2, sb
str r0, [sp, #0x14]
str r1, [sp]
ldr r0, _0201CF54 ; =_020AFC4C
ldr r1, [sp, #0x14]
ldr r0, [r0]
ldr r3, [r8, #0x5c]
add r0, r0, #0x70
bl sub_0201B388
ldr r2, [r8, #0x5c]
ldr r1, _0201CF54 ; =_020AFC4C
ldrh r3, [r2, #4]
ldr r1, [r1]
ldr r0, [sp, #0x14]
ldrh r2, [r1, #0x7c]
ldr r1, _0201CF50 ; =_020AFC30
mov r3, r3, lsl #1
ldrh r1, [r1, r3]
ldr r0, [r0, #4]
bl sub_0201C144
add r0, sb, r0
mov r0, r0, lsl #0x10
mov sb, r0, lsr #0x10
add r0, sl, #1
mov r0, r0, lsl #0x10
mov sl, r0, lsr #0x10
_0201CB54:
cmp sl, r5
blo _0201CAE0
_0201CB5C:
cmp r4, #0
bne _0201CCE0
ldr r0, _0201CF54 ; =_020AFC4C
ldrb r2, [r8, #0x41]
ldr r0, [r0]
ldr r1, [r8, #0x5c]
add r0, r0, #0x70
bl sub_0201B43C
b _0201CCE0
_0201CB80:
cmp r1, #0
bne _0201CC0C
mov sl, #0
b _0201CC04
_0201CB90:
ldr r0, [r8, #0x58]
ldrb r1, [r8, #0x41]
ldr r0, [r0, sl, lsl #2]
mov r2, sb
str r0, [sp, #0x18]
str r1, [sp]
ldr r0, _0201CF54 ; =_020AFC4C
ldr r1, [sp, #0x18]
ldr r0, [r0]
ldr r3, [r8, #0x5c]
add r0, r0, #0xe0
bl sub_0201B388
ldr r2, [r8, #0x5c]
ldr r1, _0201CF54 ; =_020AFC4C
ldrh r3, [r2, #4]
ldr r1, [r1]
ldr r0, [sp, #0x18]
ldrh r2, [r1, #0xec]
ldr r1, _0201CF50 ; =_020AFC30
mov r3, r3, lsl #1
ldrh r1, [r1, r3]
ldr r0, [r0, #4]
bl sub_0201C144
add r0, sb, r0
mov r0, r0, lsl #0x10
mov sb, r0, lsr #0x10
add r0, sl, #1
mov r0, r0, lsl #0x10
mov sl, r0, lsr #0x10
_0201CC04:
cmp sl, r5
blo _0201CB90
_0201CC0C:
cmp r4, #0
bne _0201CCE0
ldr r0, _0201CF54 ; =_020AFC4C
ldrb r2, [r8, #0x41]
ldr r0, [r0]
ldr r1, [r8, #0x5c]
add r0, r0, #0xe0
bl sub_0201B43C
b _0201CCE0
_0201CC30:
cmp r1, #0
bne _0201CCC0
mov sl, #0
b _0201CCB8
_0201CC40:
ldr r0, [r8, #0x58]
ldrb r1, [r8, #0x41]
ldr r0, [r0, sl, lsl #2]
mov r2, sb
str r0, [sp, #0x1c]
str r1, [sp]
ldr r0, _0201CF54 ; =_020AFC4C
ldr r1, [sp, #0x1c]
ldr r0, [r0]
ldr r3, [r8, #0x5c]
add r0, r0, #0x150
bl sub_0201B388
ldr r1, _0201CF54 ; =_020AFC4C
ldr r2, [r8, #0x5c]
ldr r1, [r1]
ldrh r3, [r2, #4]
add r1, r1, #0x100
ldrh r2, [r1, #0x5c]
ldr r0, [sp, #0x1c]
ldr r1, _0201CF50 ; =_020AFC30
mov r3, r3, lsl #1
ldrh r1, [r1, r3]
ldr r0, [r0, #4]
bl sub_0201C144
add r0, sb, r0
mov r0, r0, lsl #0x10
mov sb, r0, lsr #0x10
add r0, sl, #1
mov r0, r0, lsl #0x10
mov sl, r0, lsr #0x10
_0201CCB8:
cmp sl, r5
blo _0201CC40
_0201CCC0:
cmp r4, #0
bne _0201CCE0
ldr r0, _0201CF54 ; =_020AFC4C
ldrb r2, [r8, #0x41]
ldr r0, [r0]
ldr r1, [r8, #0x5c]
add r0, r0, #0x150
bl sub_0201B43C
_0201CCE0:
ldrh r1, [r8, #2]
ldr r0, _0201CF58 ; =0x0000FFFF
orr r1, r1, #0x8000
strh r1, [r8, #2]
ldrb r1, [r8, #0x41]
strb r1, [r8, #0x43]
strh r0, [r8, #0x36]
_0201CCFC:
ldr r0, [sp, #0x40]
mov r1, #0x70
mul r5, r0, r1
cmp fp, #0
moveq sb, #1
ldr sl, _0201CF58 ; =0x0000FFFF
movne sb, #0
_0201CD18:
cmp sb, #0
mov r4, #0
bne _0201CD34
ldrsh r0, [r6]
cmp r0, #0
strgeh r0, [r8, #0x36]
bge _0201CD38
_0201CD34:
strh sl, [r8, #0x36]
_0201CD38:
ldrsh r3, [r8, #0x1e]
ldrsh r2, [r8, #0x22]
ldrsh r1, [r8, #0x1c]
ldrsh r0, [r8, #0x20]
add r2, r3, r2
add r0, r1, r0
strh r2, [sp, #0x4e]
strh r0, [sp, #0x4c]
ldrh r0, [r8, #0x32]
strh r0, [sp, #0x50]
ldrh r0, [r8, #0x38]
strh r0, [sp, #0x52]
ldr r0, [sp, #0x30]
strh r0, [sp, #0x54]
ldrb r0, [r8, #0x42]
strh r0, [sp, #0x56]
ldr r0, [sp, #0x28]
strh r0, [sp, #0x58]
ldr r0, [sp, #0x38]
strb r0, [sp, #0x5a]
ldrh r0, [r8, #2]
tst r0, #0x1000
movne r0, #1
moveq r0, #0
strb r0, [sp, #0x5b]
ldrh r0, [r8, #2]
tst r0, #2
bne _0201CDD4
ldr r0, _0201CF54 ; =_020AFC4C
ldr r3, [sp, #0x2c]
ldr r0, [r0]
mov r1, r6
add r0, r0, r5
add r2, sp, #0x4c
bl sub_0201B6D4
cmp r0, #0
movne r0, #1
moveq r4, #1
strne r0, [sp, #0x34]
_0201CDD4:
ldrh r2, [r8, #2]
tst r2, #0x200
movne r4, #1
cmp r4, #0
cmpne r7, #0
beq _0201CE80
ldrh r0, [r7, #8]
tst r0, #1
bne _0201CE80
ldrh r0, [r8, #0x36]
cmp r0, sl
beq _0201CE80
ldrb r3, [r8, #0x41]
ldrb r1, [r8, #0x43]
mov r0, #1
cmp r3, r1
beq _0201CE24
tst r2, #0x40
moveq r0, #0
strb r3, [r8, #0x43]
_0201CE24:
ldrh r2, [r8, #0x36]
ldr r3, [r8, #0x58]
ldrh r1, [r8, #2]
ldr r3, [r3, r2, lsl #2]
ldr r2, [r8, #0x5c]
tst r1, #0x80
str r2, [sp]
ldrb r2, [r8, #0x41]
movne r1, #1
moveq r1, #0
str r2, [sp, #4]
mov r2, #0
and r4, r1, #0xff
str r2, [sp, #8]
str r4, [sp, #0xc]
str r0, [sp, #0x10]
ldr r0, _0201CF54 ; =_020AFC4C
ldrh r2, [r8, #0x32]
ldr r0, [r0]
mov r1, r6
add r0, r0, r5
bl sub_0201B53C
strh sl, [r8, #0x36]
_0201CE80:
ldrh r0, [r6, #6]
mov r0, r0, asr #0xb
tst r0, #1
movne r0, #1
moveq r0, #0
tst r0, #0xff
addeq r6, r6, #0xa
beq _0201CD18
ldrh r0, [r8, #2]
tst r0, #0x200
movne r0, #0
strne r0, [sp, #0x34]
ldr r0, [sp, #0x34]
cmp r0, #0
moveq r0, #1
movne r0, #0
and r4, r0, #0xff
b _0201CF04
_0201CEC8:
bne _0201CF04
ldrsh r0, [r8, #0x3a]
ldr r1, [r8, #0x54]
ldr r3, [r1, r0, lsl #2]
mov r0, #0
mov r1, #1
_0201CEE0:
ldrh r2, [r3, #6]
mov r2, r2, asr #0xb
tst r2, #1
movne r2, r1
moveq r2, r0
tst r2, #0xff
addeq r3, r3, #0xa
beq _0201CEE0
mov r4, #1
_0201CF04:
cmp r4, #0
ldrneh r0, [r8, #2]
bicne r0, r0, #0x100
strneh r0, [r8, #2]
bne _0201CF28
cmp fp, #0
ldrneh r0, [r8, #2]
orrne r0, r0, #0x100
strneh r0, [r8, #2]
_0201CF28:
ldrsh r0, [r8, #0x3a]
strh r0, [r8, #0x3c]
ldrh r0, [r8]
tst r0, #0x800
bicne r0, r0, #0x800
strneh r0, [r8]
_0201CF40:
add sp, sp, #0x90
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0201CF48: .word _020AFC70
_0201CF4C: .word _020AFC50
_0201CF50: .word _020AFC30
_0201CF54: .word _020AFC4C
_0201CF58: .word 0x0000FFFF
arm_func_end sub_0201C5C4
arm_func_start sub_0201CF5C
sub_0201CF5C: ; 0x0201CF5C
stmdb sp!, {r4, lr}
mov r4, r0
bl sub_0201C5C4
ldrh r0, [r4, #2]
tst r0, #0x10
ldmneia sp!, {r4, pc}
mov r0, r4
bl SwitchAnimationControlToNextFrame
ldmia sp!, {r4, pc}
arm_func_end sub_0201CF5C
arm_func_start sub_0201CF80
sub_0201CF80: ; 0x0201CF80
ldrb r1, [r0, #0x41]
add r1, r1, #1
strb r1, [r0, #0x43]
bx lr
arm_func_end sub_0201CF80
arm_func_start sub_0201CF90
sub_0201CF90: ; 0x0201CF90
stmdb sp!, {r3, lr}
mov ip, #0
strh ip, [r0]
strh ip, [r0, #2]
ldrh r3, [r1]
tst r3, #0x8000
movne ip, #1
tst ip, #0xff
ldmeqia sp!, {r3, pc}
cmp r2, #4
ldmhsia sp!, {r3, pc}
ldrsh ip, [r1, #0x3a]
mvn r3, #0
cmp ip, r3
ldrne r3, [r1, #0x50]
cmpne r3, #0
beq _0201D024
add ip, r3, ip, lsl #4
mov r3, r2, lsl #2
ldrsh lr, [ip, r3]
cmp lr, #0x63
addeq r3, ip, r3
ldreqsh r3, [r3, #2]
cmpeq r3, #0x63
moveq r1, #0x63
streqh r1, [r0]
streqh r1, [r0, #2]
ldmeqia sp!, {r3, pc}
ldrsh r3, [r1, #0x20]
add r2, ip, r2, lsl #2
add r3, r3, lr
strh r3, [r0]
ldrsh r3, [r1, #0x22]
ldrsh r1, [r2, #2]
add r1, r3, r1
strh r1, [r0, #2]
ldmia sp!, {r3, pc}
_0201D024:
mov r1, #0
strh r1, [r0]
strh r1, [r0, #2]
ldmia sp!, {r3, pc}
arm_func_end sub_0201CF90
arm_func_start sub_0201D034
sub_0201D034: ; 0x0201D034
stmdb sp!, {r4, r5, r6, lr}
ldrh r3, [r2]
tst r3, #0x8000
movne r3, #1
moveq r3, #0
tst r3, #0xff
ldmeqia sp!, {r4, r5, r6, pc}
ldr r4, [r2, #0x50]
cmp r4, #0
beq _0201D0CC
ldrsh r3, [r2, #0x3a]
mov ip, #0
mov r5, #0x63
add r3, r4, r3, lsl #4
b _0201D0C0
_0201D070:
mov r4, ip, lsl #2
ldrsh r6, [r3, r4]
cmp r6, #0x63
addeq r4, r3, r4
ldreqsh r4, [r4, #2]
cmpeq r4, #0x63
streqh r5, [r0]
streqh r5, [r0, #2]
beq _0201D0B4
ldrsh r4, [r2, #0x20]
add lr, r3, ip, lsl #2
add r4, r4, r6
strh r4, [r0]
ldrsh r4, [r2, #0x22]
ldrsh lr, [lr, #2]
add r4, r4, lr
strh r4, [r0, #2]
_0201D0B4:
add ip, ip, #1
add r0, r0, #4
and ip, ip, #0xff
_0201D0C0:
cmp ip, r1
blo _0201D070
ldmia sp!, {r4, r5, r6, pc}
_0201D0CC:
mov r2, #0
mov r3, r2
b _0201D0EC
_0201D0D8:
strh r3, [r0]
add r2, r2, #1
strh r3, [r0, #2]
add r0, r0, #4
and r2, r2, #0xff
_0201D0EC:
cmp r2, r1
blo _0201D0D8
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0201D034
arm_func_start sub_0201D0F8
sub_0201D0F8: ; 0x0201D0F8
strb r1, [r0, #0x40]
bx lr
arm_func_end sub_0201D0F8
arm_func_start sub_0201D100
sub_0201D100: ; 0x0201D100
ldr ip, _0201D10C ; =sub_0201DC4C
ldrsh r0, [r0, #0x70]
bx ip
.align 2, 0
_0201D10C: .word sub_0201DC4C
arm_func_end sub_0201D100
arm_func_start sub_0201D110
sub_0201D110: ; 0x0201D110
add r3, r0, #0x10
mov r2, #6
_0201D118:
ldrh r0, [r1], #2
subs r2, r2, #1
strh r0, [r3], #2
bne _0201D118
bx lr
arm_func_end sub_0201D110
arm_func_start sub_0201D12C
sub_0201D12C: ; 0x0201D12C
ldrh r3, [r0, #2]
and r2, r1, #3
ldr r1, _0201D16C ; =0x0000F3FF
orr r3, r3, #0x20
strh r3, [r0, #2]
ldrh r3, [r0, #0x14]
mov r2, r2, lsl #0x10
and r3, r3, r1
strh r3, [r0, #0x14]
ldrh r3, [r0, #0x1a]
and r1, r3, r1
strh r1, [r0, #0x1a]
ldrh r1, [r0, #0x1a]
orr r1, r1, r2, lsr #6
strh r1, [r0, #0x1a]
bx lr
.align 2, 0
_0201D16C: .word 0x0000F3FF
arm_func_end sub_0201D12C
arm_func_start AnimationControlGetAllocForMaxFrame
AnimationControlGetAllocForMaxFrame: ; 0x0201D170
stmdb sp!, {r3, lr}
bl GetWanForAnimationControl
cmp r0, #0
ldrne r0, [r0]
ldrnesh r0, [r0, #0xe]
moveq r0, #0
ldmia sp!, {r3, pc}
arm_func_end AnimationControlGetAllocForMaxFrame
arm_func_start sub_0201D18C
sub_0201D18C: ; 0x0201D18C
mov r1, #0
strh r1, [r0]
bx lr
arm_func_end sub_0201D18C
arm_func_start sub_0201D198
sub_0201D198: ; 0x0201D198
cmp r1, #0
ldrh r1, [r0]
orrne r1, r1, #0x4000
biceq r1, r1, #0x4000
strh r1, [r0]
bx lr
arm_func_end sub_0201D198
arm_func_start sub_0201D1B0
sub_0201D1B0: ; 0x0201D1B0
ldrh r0, [r0]
tst r0, #0x2000
movne r0, #0
bxne lr
tst r0, #0x8000
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
arm_func_end sub_0201D1B0
arm_func_start sub_0201D1D4
sub_0201D1D4: ; 0x0201D1D4
ldr r0, [r0, #0x2c]
bx lr
arm_func_end sub_0201D1D4
arm_func_start DeleteWanTableEntry
DeleteWanTableEntry: ; 0x0201D1DC
stmdb sp!, {r4, lr}
mov r2, #0x38
smlabb r4, r1, r2, r0
ldrb r0, [r4, #0x20]
cmp r0, #0
beq _0201D204
mov r0, r4
mov r1, r2
bl MemZero
ldmia sp!, {r4, pc}
_0201D204:
ldr r0, [r4, #0x34]
cmp r0, #0
ldrnesh r0, [r4, #0x2c]
cmpne r0, #0
ldmeqia sp!, {r4, pc}
sub r0, r0, #1
strh r0, [r4, #0x2c]
ldrsh r0, [r4, #0x2c]
cmp r0, #0
ldmneia sp!, {r4, pc}
ldr r0, [r4, #0x34]
bl MemFree
mov r0, r4
mov r1, #0x38
bl MemZero
ldmia sp!, {r4, pc}
arm_func_end DeleteWanTableEntry
arm_func_start AllocateWanTableEntry
AllocateWanTableEntry: ; 0x0201D244
stmdb sp!, {r3, r4, r5, lr}
add r1, r0, #0x1500
mov lr, #1
ldrsh r4, [r1, #0xa]
ldrsh r5, [r1, #8]
mov ip, lr
mov r3, #0x38
b _0201D2C4
_0201D264:
cmp r4, r5
movge r4, ip
smlabb r1, r4, r3, r0
ldr r1, [r1, #0x34]
cmp r1, #0
bne _0201D2AC
add r2, r4, #1
add r1, r0, #0x1500
strh r2, [r1, #0xa]
ldrsh r3, [r1, #0xa]
ldrsh r2, [r1, #8]
cmp r3, r2
movge r2, #1
strgeh r2, [r1, #0xa]
mov r1, #0x38
bl MemZero
mov r0, r4
ldmia sp!, {r3, r4, r5, pc}
_0201D2AC:
add r1, lr, #1
add r2, r4, #1
mov r1, r1, lsl #0x10
mov r2, r2, lsl #0x10
mov lr, r1, asr #0x10
mov r4, r2, asr #0x10
_0201D2C4:
cmp lr, r5
blt _0201D264
mvn r0, #0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end AllocateWanTableEntry
arm_func_start FindWanTableEntry
FindWanTableEntry: ; 0x0201D2D4
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r6, r0
add r0, r6, #0x1500
mov r5, r1
ldrsh r4, [r0, #8]
mov r8, #1
mov r7, #0x38
b _0201D324
_0201D2F4:
smlabb r0, r8, r7, r6
ldrb r1, [r0, #0x21]
cmp r1, #1
bne _0201D318
mov r1, r5
bl strcmp
cmp r0, #0
moveq r0, r8
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
_0201D318:
add r0, r8, #1
mov r0, r0, lsl #0x10
mov r8, r0, asr #0x10
_0201D324:
cmp r8, r4
blt _0201D2F4
mvn r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end FindWanTableEntry
arm_func_start GetLoadedWanTableEntry
GetLoadedWanTableEntry: ; 0x0201D334
stmdb sp!, {r3, r4, r5, lr}
add r3, r0, #0x1500
ldrsh r5, [r3, #8]
mov r4, #1
mov ip, #0x38
b _0201D37C
_0201D34C:
smlabb lr, r4, ip, r0
ldrb r3, [lr, #0x21]
cmp r3, #2
ldreqh r3, [lr, #0x22]
cmpeq r1, r3
ldreqh r3, [lr, #0x24]
cmpeq r2, r3
moveq r0, r4
ldmeqia sp!, {r3, r4, r5, pc}
add r3, r4, #1
mov r3, r3, lsl #0x10
mov r4, r3, asr #0x10
_0201D37C:
cmp r4, r5
blt _0201D34C
mvn r0, #0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end GetLoadedWanTableEntry
arm_func_start sub_0201D38C
sub_0201D38C: ; 0x0201D38C
stmdb sp!, {r4, lr}
ldr r1, _0201D3B8 ; =0x00001510
mov r4, r0
bl MemZero
add r1, r4, #0x1500
mov r2, #1
strh r2, [r1, #0xa]
add r0, r4, #0x1000
strb r2, [r0, #0x50c]
strh r2, [r1, #0xa]
ldmia sp!, {r4, pc}
.align 2, 0
_0201D3B8: .word 0x00001510
arm_func_end sub_0201D38C
arm_func_start InitWanTable
InitWanTable: ; 0x0201D3BC
stmdb sp!, {r4, lr}
mov r1, #0x1500
mov r4, r0
bl MemZero
add r0, r4, #0x1500
mov r1, #0x60
strh r1, [r0, #8]
ldmia sp!, {r4, pc}
arm_func_end InitWanTable
arm_func_start LoadWanTableEntry
LoadWanTableEntry: ; 0x0201D3DC
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #8
mov r5, r0
mov r6, r1
mov r7, r2
bl FindWanTableEntry
mvn r1, #0
cmp r0, r1
beq _0201D418
mov r1, #0x38
smlabb r2, r0, r1, r5
ldrsh r1, [r2, #0x2c]
add r1, r1, #1
strh r1, [r2, #0x2c]
b _0201D47C
_0201D418:
mov r0, r5
bl AllocateWanTableEntry
mov r4, r0
mov r0, #0x38
smlabb r5, r4, r0, r5
mov r3, #1
add r0, sp, #0
mov r1, r6
mov r2, r7
strb r3, [r5, #0x21]
bl LoadFileFromRom
ldr r1, [sp]
mov r0, r5
str r1, [r5, #0x34]
ldr r2, [sp, #4]
mov r1, r6
str r2, [r5, #0x28]
bl strcpy
ldrsh r1, [r5, #0x2c]
add r0, r5, #0x30
add r1, r1, #1
strh r1, [r5, #0x2c]
ldr r1, [r5, #0x34]
bl HandleSir0TranslationVeneer
mov r0, r4
_0201D47C:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end LoadWanTableEntry
arm_func_start LoadWanTableEntryFromPack
LoadWanTableEntryFromPack: ; 0x0201D484
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov sb, r0
mov r8, r1
mov r7, r2
mov r6, r3
bl GetLoadedWanTableEntry
mvn r1, #0
cmp r0, r1
beq _0201D4C0
mov r1, #0x38
smlabb r2, r0, r1, sb
ldrsh r1, [r2, #0x2c]
add r1, r1, #1
strh r1, [r2, #0x2c]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_0201D4C0:
mov r0, sb
bl AllocateWanTableEntry
mov r5, r0
mov r0, #0x38
smlabb r4, r5, r0, sb
ldrb r0, [sp, #0x20]
mov r1, #2
strb r1, [r4, #0x21]
strh r8, [r4, #0x22]
strh r7, [r4, #0x24]
cmp r0, #0
beq _0201D53C
add r0, sb, #0x1000
ldr sb, [r0, #0x500]
mov r0, r8
mov r1, r7
bl DirectoryFileMngr_GetDirectoryFileSize
mov r0, r8
mov r1, r7
mov r2, sb
bl DirectoryFileMngr_LoadDirectoryFile
mov r0, sb
bl GetAtSize
mov r7, r0
mov r1, r6
bl MemAlloc
mov r1, r7
mov r2, sb
mov r6, r0
bl DecompressAtNormalVeneer
b _0201D56C
_0201D53C:
mov r0, r8
mov r1, r7
bl DirectoryFileMngr_GetDirectoryFileSize
mov r1, r6
mov sb, r0
bl MemAlloc
mov r6, r0
mov r0, r8
mov r1, r7
mov r2, r6
bl DirectoryFileMngr_LoadDirectoryFile
str sb, [r4, #0x28]
_0201D56C:
str r6, [r4, #0x34]
ldrsh r1, [r4, #0x2c]
add r0, r4, #0x30
add r1, r1, #1
strh r1, [r4, #0x2c]
ldr r1, [r4, #0x34]
bl HandleSir0TranslationVeneer
mov r0, r5
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end LoadWanTableEntryFromPack
arm_func_start LoadWanTableEntryFromPackUseProvidedMemory
LoadWanTableEntryFromPackUseProvidedMemory: ; 0x0201D590
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov sb, r0
mov r8, r1
mov r7, r2
mov r6, r3
bl GetLoadedWanTableEntry
mvn r1, #0
cmp r0, r1
beq _0201D5CC
mov r1, #0x38
smlabb r2, r0, r1, sb
ldrsh r1, [r2, #0x2c]
add r1, r1, #1
strh r1, [r2, #0x2c]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
_0201D5CC:
mov r0, sb
bl AllocateWanTableEntry
ldrb r1, [sp, #0x20]
mov r5, r0
mov r0, #0x38
smlabb r4, r5, r0, sb
cmp r1, #0
beq _0201D62C
add r0, sb, #0x1000
ldr sb, [r0, #0x500]
mov r0, r8
mov r1, r7
bl DirectoryFileMngr_GetDirectoryFileSize
mov r0, r8
mov r1, r7
mov r2, sb
bl DirectoryFileMngr_LoadDirectoryFile
mov r0, sb
bl GetAtSize
mov r2, sb
mov r1, r0
mov r0, r6
bl DecompressAtNormalVeneer
b _0201D648
_0201D62C:
mov r0, r8
mov r1, r7
bl DirectoryFileMngr_GetDirectoryFileSize
mov r0, r8
mov r1, r7
mov r2, r6
bl DirectoryFileMngr_LoadDirectoryFile
_0201D648:
mov r0, #2
strb r0, [r4, #0x21]
strh r8, [r4, #0x22]
strh r7, [r4, #0x24]
str r6, [r4, #0x34]
ldrsh r1, [r4, #0x2c]
add r0, r4, #0x30
add r1, r1, #1
strh r1, [r4, #0x2c]
ldr r1, [r4, #0x34]
bl HandleSir0TranslationVeneer
mov r1, #1
mov r0, r5
strb r1, [r4, #0x20]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end LoadWanTableEntryFromPackUseProvidedMemory
arm_func_start ReplaceWanFromBinFile
ReplaceWanFromBinFile: ; 0x0201D684
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldrb ip, [sp, #0x18]
mov r4, #0x38
smlabb r6, r1, r4, r0
mov r5, r2
mov r4, r3
cmp ip, #0
beq _0201D6E8
add r0, r0, #0x1000
ldr r7, [r0, #0x500]
mov r0, r5
mov r1, r4
ldr r8, [r6, #0x34]
bl DirectoryFileMngr_GetDirectoryFileSize
mov r0, r5
mov r1, r4
mov r2, r7
bl DirectoryFileMngr_LoadDirectoryFile
mov r0, r7
bl GetAtSize
mov r2, r7
mov r1, r0
mov r0, r8
bl DecompressAtNormalVeneer
b _0201D708
_0201D6E8:
ldr r7, [r6, #0x34]
mov r0, r5
mov r1, r4
bl DirectoryFileMngr_GetDirectoryFileSize
mov r0, r5
mov r1, r4
mov r2, r7
bl DirectoryFileMngr_LoadDirectoryFile
_0201D708:
ldr r1, [r6, #0x34]
add r0, r6, #0x30
bl HandleSir0TranslationVeneer
mov r0, #2
strb r0, [r6, #0x21]
strh r5, [r6, #0x22]
strh r4, [r6, #0x24]
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end ReplaceWanFromBinFile
arm_func_start DeleteWanTableEntryVeneer
DeleteWanTableEntryVeneer: ; 0x0201D72C
ldr ip, _0201D734 ; =DeleteWanTableEntry
bx ip
.align 2, 0
_0201D734: .word DeleteWanTableEntry
arm_func_end DeleteWanTableEntryVeneer
arm_func_start sub_0201D738
sub_0201D738: ; 0x0201D738
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
add r3, r6, #0x1000
ldr r3, [r3, #0x500]
mov r5, r1
mov r4, r2
cmp r3, #0
beq _0201D75C
bl sub_0201D778
_0201D75C:
mov r0, r5
mov r1, r4
bl MemAlloc
add r1, r6, #0x1000
str r0, [r1, #0x500]
str r5, [r1, #0x504]
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0201D738
arm_func_start sub_0201D778
sub_0201D778: ; 0x0201D778
stmdb sp!, {r4, lr}
mov r4, r0
add r0, r4, #0x1000
ldr r0, [r0, #0x500]
cmp r0, #0
ldmeqia sp!, {r4, pc}
bl MemFree
add r0, r4, #0x1000
mov r1, #0
str r1, [r0, #0x500]
str r1, [r0, #0x504]
ldmia sp!, {r4, pc}
arm_func_end sub_0201D778
arm_func_start sub_0201D7A8
sub_0201D7A8: ; 0x0201D7A8
stmdb sp!, {r3, lr}
ldr r0, _0201D7D8 ; =0x00001510
mov r1, #0
bl MemAlloc
ldr r2, _0201D7DC ; =_020AFC64
ldr r1, _0201D7D8 ; =0x00001510
str r0, [r2, #4]
bl MemZero
ldr r0, _0201D7DC ; =_020AFC64
ldr r0, [r0, #4]
bl sub_0201D38C
ldmia sp!, {r3, pc}
.align 2, 0
_0201D7D8: .word 0x00001510
_0201D7DC: .word _020AFC64
arm_func_end sub_0201D7A8
arm_func_start sub_0201D7E0
sub_0201D7E0: ; 0x0201D7E0
ldr r2, _0201D7FC ; =_020AFC64
mov r3, r0
ldr r0, [r2, #4]
mov r2, r1
ldr ip, _0201D800 ; =sub_0201D738
mov r1, r3
bx ip
.align 2, 0
_0201D7FC: .word _020AFC64
_0201D800: .word sub_0201D738
arm_func_end sub_0201D7E0
arm_func_start sub_0201D804
sub_0201D804: ; 0x0201D804
ldr r0, _0201D814 ; =_020AFC64
ldr ip, _0201D818 ; =sub_0201D778
ldr r0, [r0, #4]
bx ip
.align 2, 0
_0201D814: .word _020AFC64
_0201D818: .word sub_0201D778
arm_func_end sub_0201D804
arm_func_start sub_0201D81C
sub_0201D81C: ; 0x0201D81C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldrb r4, [sp, #0x2c]
ldr r5, [r0, #4]
mov sl, r1
mov sb, r2
cmp r4, #0
ldrh r7, [r5, #0xe]
beq _0201D848
cmp r4, #1
beq _0201D8E4
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0201D848:
cmp r3, #0
beq _0201D8C0
mov r8, #0
ldr fp, _0201D988 ; =_020AFC30
ldr r4, _0201D98C ; =_020AFC4C
b _0201D8B8
_0201D860:
ldr r0, [r5]
mov r2, sl
ldr r6, [r0, r8, lsl #2]
str sb, [sp]
ldr r0, [r4]
ldr r3, [r5, #4]
mov r1, r6
bl sub_0201B388
ldr r1, [r5, #4]
ldr r0, [r4]
ldrh r1, [r1, #4]
ldrh r2, [r0, #0xc]
ldr r0, [r6, #4]
mov r1, r1, lsl #1
ldrh r1, [fp, r1]
bl sub_0201D990
add r0, sl, r0
add r1, r8, #1
mov r0, r0, lsl #0x10
mov r1, r1, lsl #0x10
mov sl, r0, lsr #0x10
mov r8, r1, lsr #0x10
_0201D8B8:
cmp r8, r7
blo _0201D860
_0201D8C0:
ldrb r0, [sp, #0x28]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldr r0, _0201D98C ; =_020AFC4C
ldr r1, [r5, #4]
ldr r0, [r0]
mov r2, sb
bl sub_0201B43C
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0201D8E4:
cmp r3, #0
beq _0201D960
mov r6, #0
ldr fp, _0201D988 ; =_020AFC30
ldr r4, _0201D98C ; =_020AFC4C
b _0201D958
_0201D8FC:
ldr r0, [r5]
mov r2, sl
ldr r8, [r0, r6, lsl #2]
str sb, [sp]
ldr r0, [r4]
ldr r3, [r5, #4]
mov r1, r8
add r0, r0, #0x70
bl sub_0201B388
ldr r1, [r5, #4]
ldr r0, [r4]
ldrh r1, [r1, #4]
ldrh r2, [r0, #0x7c]
ldr r0, [r8, #4]
mov r1, r1, lsl #1
ldrh r1, [fp, r1]
bl sub_0201D990
add r0, sl, r0
add r1, r6, #1
mov r0, r0, lsl #0x10
mov r1, r1, lsl #0x10
mov sl, r0, lsr #0x10
mov r6, r1, lsr #0x10
_0201D958:
cmp r6, r7
blo _0201D8FC
_0201D960:
ldrb r0, [sp, #0x28]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldr r0, _0201D98C ; =_020AFC4C
ldr r1, [r5, #4]
ldr r0, [r0]
mov r2, sb
add r0, r0, #0x70
bl sub_0201B43C
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0201D988: .word _020AFC30
_0201D98C: .word _020AFC4C
arm_func_end sub_0201D81C
arm_func_start sub_0201D990
sub_0201D990: ; 0x0201D990
stmdb sp!, {r3, lr}
ldr r1, _0201D9C4 ; =_020AFC3C
ldr r1, [r1, r2, lsl #2]
mov r1, r1, lsl #0x10
add r0, r0, r1, asr #16
sub r0, r0, #1
mov r0, r0, lsl #0x10
mov r1, r1, asr #0x10
mov r0, r0, asr #0x10
bl _s32_div_f
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r3, pc}
.align 2, 0
_0201D9C4: .word _020AFC3C
arm_func_end sub_0201D990
arm_func_start sub_0201D9C8
sub_0201D9C8: ; 0x0201D9C8
stmdb sp!, {r3, lr}
sub sp, sp, #8
ldrb lr, [sp, #0x14]
ldr ip, _0201D9FC ; =_020AFC64
mov r3, #1
stmia sp, {r3, lr}
ldr lr, [ip, #4]
mov ip, #0x38
smlabb r0, r0, ip, lr
ldr r0, [r0, #0x30]
bl sub_0201D81C
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
_0201D9FC: .word _020AFC64
arm_func_end sub_0201D9C8
arm_func_start sub_0201DA00
sub_0201DA00: ; 0x0201DA00
ldrb r1, [r0, #8]
ldr r0, [r0]
cmp r1, #0
cmpne r1, #2
ldreq r0, [r0, #8]
ldreqsh r0, [r0, #4]
ldrnesh r0, [r0, #0xc]
bx lr
arm_func_end sub_0201DA00
arm_func_start sub_0201DA20
sub_0201DA20: ; 0x0201DA20
ldr r2, _0201DA3C ; =_020AFC64
mov r1, #0x38
ldr r2, [r2, #4]
ldr ip, _0201DA40 ; =sub_0201DA00
smlabb r0, r0, r1, r2
ldr r0, [r0, #0x30]
bx ip
.align 2, 0
_0201DA3C: .word _020AFC64
_0201DA40: .word sub_0201DA00
arm_func_end sub_0201DA20
arm_func_start WanHasAnimationGroup
WanHasAnimationGroup: ; 0x0201DA44
ldr r2, [r0]
ldrsh r0, [r2, #0xc]
cmp r1, r0
bge _0201DA70
cmp r1, #0
blt _0201DA70
ldr r0, [r2, #8]
add r0, r0, r1, lsl #3
ldrh r0, [r0, #4]
cmp r0, #0
bne _0201DA78
_0201DA70:
mov r0, #0
bx lr
_0201DA78:
mov r0, #1
bx lr
arm_func_end WanHasAnimationGroup
arm_func_start WanTableSpriteHasAnimationGroup
WanTableSpriteHasAnimationGroup: ; 0x0201DA80
ldr r3, _0201DA9C ; =_020AFC64
mov r2, #0x38
ldr r3, [r3, #4]
ldr ip, _0201DAA0 ; =WanHasAnimationGroup
smlabb r0, r0, r2, r3
ldr r0, [r0, #0x30]
bx ip
.align 2, 0
_0201DA9C: .word _020AFC64
_0201DAA0: .word WanHasAnimationGroup
arm_func_end WanTableSpriteHasAnimationGroup
arm_func_start sub_0201DAA4
sub_0201DAA4: ; 0x0201DAA4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r5, [r0, #4]
mov sl, r1
mov sb, r2
cmp r3, #0
ldrh r7, [r5, #0xe]
beq _0201DACC
cmp r3, #1
beq _0201DB38
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0201DACC:
mov r8, #0
mov r6, r8
ldr r4, _0201DBB0 ; =_020AFC30
ldr fp, _0201DBB4 ; =_020AFC4C
b _0201DB2C
_0201DAE0:
str r6, [sp]
ldmia r5, {r0, r2}
ldr r0, [r0, r8, lsl #2]
mov r1, sl
mov r3, sb
bl sub_0201BFAC
ldr r2, [r5, #4]
ldr r1, [fp]
ldrh r3, [r2, #4]
ldrh r2, [r1, #0xc]
mov r1, r3, lsl #1
ldrh r1, [r4, r1]
bl sub_0201D990
add r0, sl, r0
add r1, r8, #1
mov r0, r0, lsl #0x10
mov r1, r1, lsl #0x10
mov sl, r0, lsr #0x10
mov r8, r1, lsr #0x10
_0201DB2C:
cmp r8, r7
blo _0201DAE0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0201DB38:
mov r8, #0
mov r4, #1
ldr fp, _0201DBB0 ; =_020AFC30
b _0201DBA4
_0201DB48:
ldr r0, [r5]
mov r1, sl
ldr r6, [r0, r8, lsl #2]
mov r3, sb
str r4, [sp]
ldr r2, [r5, #4]
mov r0, r6
bl sub_0201BFAC
ldr r2, [r5, #4]
ldr r0, _0201DBB4 ; =_020AFC4C
ldrh r3, [r2, #4]
ldr r1, [r0]
ldr r0, [r6, #4]
ldrh r2, [r1, #0x7c]
mov r1, r3, lsl #1
ldrh r1, [fp, r1]
bl sub_0201D990
add r0, sl, r0
add r1, r8, #1
mov r0, r0, lsl #0x10
mov r1, r1, lsl #0x10
mov sl, r0, lsr #0x10
mov r8, r1, lsr #0x10
_0201DBA4:
cmp r8, r7
blo _0201DB48
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0201DBB0: .word _020AFC30
_0201DBB4: .word _020AFC4C
arm_func_end sub_0201DAA4
arm_func_start sub_0201DBB8
sub_0201DBB8: ; 0x0201DBB8
stmdb sp!, {r3, lr}
ldr lr, _0201DBD8 ; =_020AFC64
mov ip, #0x38
ldr lr, [lr, #4]
smlabb r0, r0, ip, lr
ldr r0, [r0, #0x30]
bl sub_0201DAA4
ldmia sp!, {r3, pc}
.align 2, 0
_0201DBD8: .word _020AFC64
arm_func_end sub_0201DBB8
arm_func_start sub_0201DBDC
sub_0201DBDC: ; 0x0201DBDC
ldr r0, [r0, #4]
ldr r1, [r0, #4]
cmp r1, #0
moveq r0, #0
bxeq lr
ldrh r0, [r1, #4]
cmp r0, #1
bne _0201DC30
ldrb r0, [r1, #0xb]
cmp r0, #0
ldrsh r0, [r1, #6]
addne r1, r0, #0xf
movne r0, r1, asr #3
addne r0, r1, r0, lsr #28
movne r0, r0, lsl #0xc
addeq r1, r0, #0xff
moveq r0, r1, asr #7
addeq r0, r1, r0, lsr #24
moveq r0, r0, lsl #8
mov r0, r0, asr #0x10
bx lr
_0201DC30:
ldrsh r0, [r1, #6]
add r1, r0, #0xf
mov r0, r1, asr #3
add r0, r1, r0, lsr #28
mov r0, r0, lsl #0xc
mov r0, r0, asr #0x10
bx lr
arm_func_end sub_0201DBDC
arm_func_start sub_0201DC4C
sub_0201DC4C: ; 0x0201DC4C
ldr r2, _0201DC68 ; =_020AFC64
mov r1, #0x38
ldr r2, [r2, #4]
ldr ip, _0201DC6C ; =sub_0201DBDC
smlabb r0, r0, r1, r2
ldr r0, [r0, #0x30]
bx ip
.align 2, 0
_0201DC68: .word _020AFC64
_0201DC6C: .word sub_0201DBDC
arm_func_end sub_0201DC4C
arm_func_start SpriteTypeInWanTable
SpriteTypeInWanTable: ; 0x0201DC70
ldr r2, _0201DC8C ; =_020AFC64
mov r1, #0x38
ldr r2, [r2, #4]
smlabb r0, r0, r1, r2
ldr r0, [r0, #0x30]
ldrb r0, [r0, #8]
bx lr
.align 2, 0
_0201DC8C: .word _020AFC64
arm_func_end SpriteTypeInWanTable
arm_func_start sub_0201DC90
sub_0201DC90: ; 0x0201DC90
stmdb sp!, {r3, lr}
ldr r0, _0201DCC8 ; =0x000007C4
mov r1, #0
bl MemAlloc
ldr r2, _0201DCCC ; =_020AFC6C
ldr r1, _0201DCC8 ; =0x000007C4
str r0, [r2]
bl MemZero
ldr r0, _0201DCCC ; =_020AFC6C
mov r1, #1
ldr r0, [r0]
add r0, r0, #0x700
strh r1, [r0, #0xc0]
ldmia sp!, {r3, pc}
.align 2, 0
_0201DCC8: .word 0x000007C4
_0201DCCC: .word _020AFC6C
arm_func_end sub_0201DC90
arm_func_start sub_0201DCD0
sub_0201DCD0: ; 0x0201DCD0
stmdb sp!, {r3, lr}
ldr r0, _0201DCF0 ; =_020AFC6C
ldr r0, [r0]
bl MemFree
ldr r0, _0201DCF0 ; =_020AFC6C
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0201DCF0: .word _020AFC6C
arm_func_end sub_0201DCD0
arm_func_start sub_0201DCF4
sub_0201DCF4: ; 0x0201DCF4
ldr r0, _0201DD44 ; =_020AFC6C
mov r2, #0
ldr r1, [r0]
mov r3, #1
strb r2, [r1, #0x7c2]
ldr r2, [r0]
mov r1, #0x7c
b _0201DD30
_0201DD14:
smlabb r0, r3, r1, r2
ldrh r0, [r0, #2]
tst r0, #1
bxeq lr
add r0, r3, #1
mov r0, r0, lsl #0x10
mov r3, r0, asr #0x10
_0201DD30:
cmp r3, #0x10
blt _0201DD14
mov r0, #1
strb r0, [r2, #0x7c2]
bx lr
.align 2, 0
_0201DD44: .word _020AFC6C
arm_func_end sub_0201DCF4
arm_func_start sub_0201DD48
sub_0201DD48: ; 0x0201DD48
stmdb sp!, {r4, r5, r6, lr}
ldr r5, _0201DD8C ; =_020AFC6C
mov r6, #1
mov r4, #0x7c
_0201DD58:
ldr r0, [r5]
smlabb r0, r6, r4, r0
ldrh r1, [r0, #2]
tst r1, #1
beq _0201DD70
bl sub_0201CF5C
_0201DD70:
add r0, r6, #1
mov r0, r0, lsl #0x10
mov r6, r0, asr #0x10
cmp r6, #0x10
blt _0201DD58
bl sub_0201DCF4
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0201DD8C: .word _020AFC6C
arm_func_end sub_0201DD48
arm_func_start sub_0201DD90
sub_0201DD90: ; 0x0201DD90
stmdb sp!, {r3, lr}
mov r0, #0x2ec
mov r1, #0
bl MemAlloc
ldr r1, _0201DDF0 ; =_020AFC70
str r0, [r1]
bl sub_0201E614
ldr r0, _0201DDF0 ; =_020AFC70
ldr r1, _0201DDF4 ; =0x06860000
ldr r0, [r0]
add r2, r1, #0x30000
add r0, r0, #0xbc
mov r3, #0x80
bl sub_0201E190
ldr r0, _0201DDF0 ; =_020AFC70
ldr r2, _0201DDF8 ; =0x06890000
ldr r1, [r0]
mov r0, #0x2000
str r0, [sp]
add r0, r1, #0xcc
add r1, r1, #0xbc
mov r3, #0
bl sub_0201E314
ldmia sp!, {r3, pc}
.align 2, 0
_0201DDF0: .word _020AFC70
_0201DDF4: .word 0x06860000
_0201DDF8: .word 0x06890000
arm_func_end sub_0201DD90
arm_func_start sub_0201DDFC
sub_0201DDFC: ; 0x0201DDFC
stmdb sp!, {r3, lr}
bl sub_0201E5B0
bl GeomSwapBuffers
bl sub_0201E544
ldmia sp!, {r3, pc}
arm_func_end sub_0201DDFC
arm_func_start sub_0201DE10
sub_0201DE10: ; 0x0201DE10
stmdb sp!, {r3, lr}
ldr r0, _0201DE48 ; =_020AFC70
ldr r0, [r0]
add r0, r0, #0xcc
bl sub_0201E424
ldr r0, _0201DE48 ; =_020AFC70
ldr r0, [r0]
add r0, r0, #0xbc
bl PerformPlannedTextureVramTransfer
ldr r0, _0201DE48 ; =_020AFC70
ldr r0, [r0]
add r0, r0, #0xbc
bl ResetPlannedVramTransfer
ldmia sp!, {r3, pc}
.align 2, 0
_0201DE48: .word _020AFC70
arm_func_end sub_0201DE10
arm_func_start LoadWteFromRom
LoadWteFromRom: ; 0x0201DE4C
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0x10c
mov r5, r1
mov r6, r0
ldr r1, _0201DEBC ; =_02099714
add r0, sp, #0xc
mov r4, r2
bl strcpy
add r0, sp, #0xc
mov r1, r5
bl strcat
add r0, sp, #4
add r1, sp, #0xc
mov r2, r4
bl LoadFileFromRom
ldr r1, [sp, #4]
add r0, sp, #0
bl HandleSir0Translation
ldr r0, [sp]
ldr r1, _0201DEC0 ; =_0209971C
mov r2, #4
bl strncmp
ldr r0, [sp, #4]
str r0, [r6]
ldr r0, [sp]
str r0, [r6, #4]
add sp, sp, #0x10c
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_0201DEBC: .word _02099714
_0201DEC0: .word _0209971C
arm_func_end LoadWteFromRom
arm_func_start LoadWteFromFileDirectory
LoadWteFromFileDirectory: ; 0x0201DEC4
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0xc
mov r4, r0
mov r0, r1
mov r1, r2
add r2, sp, #0
bl DirectoryFileMngr_OpenDirectoryFile
ldr r1, [sp]
add r0, sp, #8
bl HandleSir0Translation
ldr r0, [sp, #8]
ldr r1, _0201DF14 ; =_0209971C
mov r2, #4
bl strncmp
ldr r0, [sp]
str r0, [r4]
ldr r0, [sp, #8]
str r0, [r4, #4]
add sp, sp, #0xc
ldmia sp!, {r3, r4, pc}
.align 2, 0
_0201DF14: .word _0209971C
arm_func_end LoadWteFromFileDirectory
arm_func_start UnloadWte
UnloadWte: ; 0x0201DF18
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4]
bl MemFree
mov r0, #0
str r0, [r4]
str r0, [r4, #4]
ldmia sp!, {r4, pc}
arm_func_end UnloadWte
arm_func_start sub_0201DF38
sub_0201DF38: ; 0x0201DF38
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x108
mov r6, r0
mov r0, #8
mov r5, r1
bl MemAlloc
mov r4, r0
ldr r1, _0201DFAC ; =_02099714
add r0, sp, #8
bl strcpy
add r0, sp, #8
mov r1, r6
bl strcat
add r0, sp, #0
add r1, sp, #8
mov r2, r5
bl LoadFileFromRom
ldr r5, [sp]
ldr r1, _0201DFB0 ; =_02099720
str r5, [r4]
mov r0, r5
mov r2, #4
bl strncmp
ldr r1, [r5, #0xc]
mov r0, r4
add r1, r5, r1
str r1, [r4, #4]
add sp, sp, #0x108
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_0201DFAC: .word _02099714
_0201DFB0: .word _02099720
arm_func_end sub_0201DF38
arm_func_start LoadWtuFromBin
LoadWtuFromBin: ; 0x0201DFB4
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #8
mov r5, r2
mov r7, r0
mov r6, r1
mov r1, r5
mov r0, #8
bl MemAlloc
mov r4, r0
add r2, sp, #0
mov r0, r7
mov r1, r6
mov r3, r5
bl DirectoryFileMngr_OpenDirectoryFile
ldr r5, [sp]
ldr r1, _0201E01C ; =_02099720
str r5, [r4]
mov r0, r5
mov r2, #4
bl strncmp
ldr r1, [r5, #0xc]
mov r0, r4
add r1, r5, r1
str r1, [r4, #4]
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0201E01C: .word _02099720
arm_func_end LoadWtuFromBin
arm_func_start sub_0201E020
sub_0201E020: ; 0x0201E020
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4]
cmp r0, #0
ldmeqia sp!, {r4, pc}
ldr r0, [r0]
bl MemFree
ldr r0, [r4]
bl MemFree
mov r0, #0
str r0, [r4]
ldmia sp!, {r4, pc}
arm_func_end sub_0201E020
arm_func_start sub_0201E050
sub_0201E050: ; 0x0201E050
stmdb sp!, {r3, lr}
ldr ip, _0201E07C ; =_020AFC70
str r3, [sp]
ldr ip, [ip]
mov lr, r1
mov r3, r2
mov r1, r0
mov r2, lr
add r0, ip, #0xbc
bl PlanCopyTextureToTextureVram
ldmia sp!, {r3, pc}
.align 2, 0
_0201E07C: .word _020AFC70
arm_func_end sub_0201E050
arm_func_start sub_0201E080
sub_0201E080: ; 0x0201E080
stmdb sp!, {r3, lr}
mov r2, #2
ldr r1, _0201E0AC ; =_020AFC70
str r2, [sp]
mov r2, #0
ldr ip, [r1]
mov r1, r0
mov r3, r2
add r0, ip, #0xbc
bl PlanCopyTextureToTextureVram
ldmia sp!, {r3, pc}
.align 2, 0
_0201E0AC: .word _020AFC70
arm_func_end sub_0201E080
arm_func_start ProcessWte
ProcessWte: ; 0x0201E0B0
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
mov r6, r0
mov ip, r1
ldr r1, [r6, #4]
mov r5, r2
mov r4, r3
cmp r1, #0
beq _0201E0F4
mov r0, #0
str r0, [sp]
ldr r0, _0201E128 ; =_020AFC70
ldr r3, [r6, #8]
ldr r0, [r0]
mov r2, ip
add r0, r0, #0xbc
bl PlanCopyTextureToTextureVram
_0201E0F4:
ldr r0, [r6, #0x18]
cmp r0, #0
beq _0201E120
ldr r0, _0201E128 ; =_020AFC70
str r4, [sp]
ldr r0, [r0]
ldrsh r2, [r6, #0x1c]
ldr r1, [r6, #0x18]
mov r3, r5
add r0, r0, #0xcc
bl sub_0201E3AC
_0201E120:
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_0201E128: .word _020AFC70
arm_func_end ProcessWte
arm_func_start sub_0201E12C
sub_0201E12C: ; 0x0201E12C
ldr ip, _0201E138 ; =ProcessWte
ldr r0, [r0, #4]
bx ip
.align 2, 0
_0201E138: .word ProcessWte
arm_func_end sub_0201E12C
arm_func_start DelayWteFree
DelayWteFree: ; 0x0201E13C
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r2, #2
ldr r1, _0201E180 ; =_020AFC70
str r2, [sp]
mov r4, r0
ldr r0, [r1]
mov r2, #0
ldr r1, [r4]
mov r3, r2
add r0, r0, #0xbc
bl PlanCopyTextureToTextureVram
mov r0, #0
str r0, [r4]
str r0, [r4, #4]
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
_0201E180: .word _020AFC70
arm_func_end DelayWteFree
arm_func_start sub_0201E184
sub_0201E184: ; 0x0201E184
mov r0, r0, lsl #9
mov r0, r0, asr #0x10
bx lr
arm_func_end sub_0201E184
arm_func_start sub_0201E190
sub_0201E190: ; 0x0201E190
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov ip, #0x1c
mul r4, r3, ip
mov r7, r0
mov r6, r1
mov r0, r4
mov r1, #0
mov r5, r2
bl MemAlloc
mov r1, r4
str r0, [r7]
bl MemZero
mov r0, #0
strh r0, [r7, #0xc]
str r6, [r7, #4]
str r5, [r7, #8]
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_0201E190
arm_func_start ResetPlannedVramTransfer
ResetPlannedVramTransfer: ; 0x0201E1D4
mov r1, #0
strh r1, [r0, #0xc]
bx lr
arm_func_end ResetPlannedVramTransfer
arm_func_start PlanCopyTextureToTextureVram
PlanCopyTextureToTextureVram: ; 0x0201E1E0
stmdb sp!, {r4, lr}
ldrsh r4, [r0, #0xc]
cmp r4, #0x80
mvnge r0, #0
ldmgeia sp!, {r4, pc}
ldr lr, [r0]
mov ip, #0x1c
smlabb ip, r4, ip, lr
str r3, [ip, #4]
str r1, [ip, #8]
ldrb r3, [sp, #8]
str r2, [ip, #0xc]
mov r1, #0
str r3, [ip, #0x10]
strb r1, [ip, #0x14]
ldrsh r1, [r0, #0xc]
add r1, r1, #1
strh r1, [r0, #0xc]
ldrsh r0, [r0, #0xc]
ldmia sp!, {r4, pc}
arm_func_end PlanCopyTextureToTextureVram
arm_func_start PerformPlannedTextureVramTransfer
PerformPlannedTextureVramTransfer: ; 0x0201E230
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov r4, r0
ldrsh r7, [r4, #0xc]
mov r6, #0
ldr fp, _0201E310 ; =_022A4F38
mov r5, #0x1c
b _0201E304
_0201E24C:
ldr r0, [r4]
smlabb r1, r6, r5, r0
ldr r0, [r1, #0x10]
cmp r0, #0
beq _0201E274
cmp r0, #1
beq _0201E2C8
cmp r0, #2
beq _0201E2F0
b _0201E2F8
_0201E274:
ldr sl, [r1, #8]
cmp sl, #0
beq _0201E2A4
ldr sb, [r1, #4]
ldr r8, [r1, #0xc]
bl GX_BeginLoadTex
mov r0, sl
mov r1, r8
mov r2, sb
bl GX_LoadTex
bl GX_EndLoadTex
b _0201E2F8
_0201E2A4:
ldr r8, [r1, #4]
ldr sb, [r1, #0xc]
bl GX_BeginLoadTex
mov r0, fp
mov r1, sb
mov r2, r8
bl GX_LoadTex
bl GX_EndLoadTex
b _0201E2F8
_0201E2C8:
ldr sl, [r1, #4]
ldr sb, [r1, #0xc]
ldr r8, [r1, #8]
bl GX_BeginLoadTexPltt
mov r0, r8
mov r1, sb
mov r2, sl
bl GX_LoadTexPltt
bl GX_EndLoadTexPltt
b _0201E2F8
_0201E2F0:
ldr r0, [r1, #8]
bl MemFree
_0201E2F8:
add r0, r6, #1
mov r0, r0, lsl #0x10
mov r6, r0, asr #0x10
_0201E304:
cmp r6, r7
blt _0201E24C
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0201E310: .word _022A4F38
arm_func_end PerformPlannedTextureVramTransfer
arm_func_start sub_0201E314
sub_0201E314: ; 0x0201E314
stmdb sp!, {r4, lr}
ldr ip, [sp, #8]
mov r4, r0
mov r0, ip, asr #7
add r0, ip, r0, lsr #24
stmia r4, {r1, ip}
mov r0, r0, asr #8
str r0, [r4, #8]
mov r1, #0
strb r1, [r4, #0xc]
str r2, [r4, #0x10]
str r3, [r4, #0x14]
mov r0, ip, lsl #1
bl MemAlloc
str r0, [r4, #0x18]
ldr r0, [r4, #8]
mov r1, #0
bl MemAlloc
str r0, [r4, #0x1c]
ldr r1, [r4, #4]
ldr r0, [r4, #0x18]
mov r1, r1, lsl #1
bl MemZero
ldr r0, [r4, #0x1c]
ldr r1, [r4, #8]
bl MemZero
ldmia sp!, {r4, pc}
arm_func_end sub_0201E314
arm_func_start sub_0201E380
sub_0201E380: ; 0x0201E380
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r2
ldr r2, [r5, #0x18]
add r0, r3, r4, lsl #8
add r0, r2, r0, lsl #1
bl Rgb8ToRgb5
ldr r0, [r5, #0x1c]
mov r1, #1
strb r1, [r0, r4]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_0201E380
arm_func_start sub_0201E3AC
sub_0201E3AC: ; 0x0201E3AC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldrsh r4, [sp, #0x20]
mov r7, r3
mov sl, r0
add r6, r4, r7, lsl #8
mov sb, r1
mov r8, r2
mov r5, #0
mov r4, #1
b _0201E3FC
_0201E3D4:
ldr r1, [sl, #0x18]
add r0, r5, r6
add r0, r1, r0, lsl #1
add r1, sb, r5, lsl #2
bl Rgb8ToRgb5
add r0, r5, #1
ldr r1, [sl, #0x1c]
mov r0, r0, lsl #0x10
strb r4, [r7, r1]
mov r5, r0, asr #0x10
_0201E3FC:
cmp r5, r8
blt _0201E3D4
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
arm_func_end sub_0201E3AC
arm_func_start sub_0201E408
sub_0201E408: ; 0x0201E408
stmdb sp!, {r3, lr}
str r3, [sp]
mov r3, r2
ldrsh r2, [r1, #6]
ldr r1, [r1]
bl sub_0201E3AC
ldmia sp!, {r3, pc}
arm_func_end sub_0201E408
arm_func_start sub_0201E424
sub_0201E424: ; 0x0201E424
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #4
mov r5, #0
mov r6, r0
mov r4, #1
mov r8, #0x200
mov r7, r5
b _0201E480
_0201E444:
ldr r0, [r6, #0x1c]
ldrb r0, [r0, r5]
cmp r0, #0
beq _0201E47C
str r4, [sp]
ldr r1, [r6, #0x18]
ldr r2, [r6, #0x14]
ldr r0, [r6]
mov r3, r8
add r1, r1, r5, lsl #9
add r2, r2, r5, lsl #9
bl PlanCopyTextureToTextureVram
ldr r0, [r6, #0x1c]
strb r7, [r0, r5]
_0201E47C:
add r5, r5, #1
_0201E480:
ldr r0, [r6, #8]
cmp r5, r0
blt _0201E444
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
arm_func_end sub_0201E424
arm_func_start GeomSetTexImageParam
GeomSetTexImageParam: ; 0x0201E494
ldr ip, [sp, #0xc]
mov r0, r0, lsl #0x1a
orr r0, r0, ip, lsr #3
orr r0, r0, r1, lsl #30
orr r0, r0, r2, lsl #20
ldr r1, [sp]
orr r0, r0, r3, lsl #23
ldr r2, [sp, #4]
orr r0, r0, r1, lsl #16
ldr r3, [sp, #8]
orr r1, r0, r2, lsl #18
ldr r0, _0201E4D0 ; =0x040004A8
orr r1, r1, r3, lsl #29
str r1, [r0]
bx lr
.align 2, 0
_0201E4D0: .word 0x040004A8
arm_func_end GeomSetTexImageParam
arm_func_start GeomSetVertexCoord16
GeomSetVertexCoord16: ; 0x0201E4D4
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
mov r0, r0, lsl #0x10
mov r3, r1, lsl #0x10
mov r1, r2, lsl #0x10
ldr r2, _0201E500 ; =0x0400048C
orr r0, r3, r0, lsr #16
str r0, [r2]
mov r0, r1, lsr #0x10
str r0, [r2]
bx lr
.align 2, 0
_0201E500: .word 0x0400048C
arm_func_end GeomSetVertexCoord16
arm_func_start InitRender3dData
InitRender3dData: ; 0x0201E504
stmdb sp!, {r3, lr}
ldr r0, _0201E540 ; =RENDER_3D
ldr r0, [r0, #0x40]
cmp r0, #0
ldmneia sp!, {r3, pc}
mov r0, #0x1a00
mov r1, #0
bl MemAlloc
ldr r1, _0201E540 ; =RENDER_3D
mov r2, #0
str r0, [r1, #0x40]
strh r2, [r1]
mov r0, #0x80
strh r0, [r1, #2]
ldmia sp!, {r3, pc}
.align 2, 0
_0201E540: .word RENDER_3D
arm_func_end InitRender3dData
arm_func_start sub_0201E544
sub_0201E544: ; 0x0201E544
stmdb sp!, {r3, lr}
sub sp, sp, #0x10
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r1, #1
str r1, [sp, #8]
mov r1, r0
mov r2, r0
mov r3, r0
str r0, [sp, #0xc]
bl GeomSetTexImageParam
ldr r0, _0201E5A4 ; =RENDER_3D
mvn r1, #0
str r1, [r0, #8]
bl sub_01FF8F04
ldr r2, _0201E5A8 ; =0x3F1F00C0
ldr r1, _0201E5AC ; =0x040004A4
ldr r0, _0201E5A4 ; =RENDER_3D
str r2, [r1]
mov r1, #0
strh r1, [r0]
add sp, sp, #0x10
ldmia sp!, {r3, pc}
.align 2, 0
_0201E5A4: .word RENDER_3D
_0201E5A8: .word 0x3F1F00C0
_0201E5AC: .word 0x040004A4
arm_func_end sub_0201E544
arm_func_start sub_0201E5B0
sub_0201E5B0: ; 0x0201E5B0
stmdb sp!, {r3, lr}
sub sp, sp, #0x10
bl Render3dProcessQueue
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r1, #1
str r1, [sp, #8]
mov r1, r0
mov r2, r0
mov r3, r0
str r0, [sp, #0xc]
bl GeomSetTexImageParam
ldr r0, _0201E608 ; =RENDER_3D
mvn r1, #0
str r1, [r0, #8]
bl sub_01FF8F04
ldr r1, _0201E60C ; =0x3F1F00C0
ldr r0, _0201E610 ; =0x040004A4
str r1, [r0]
add sp, sp, #0x10
ldmia sp!, {r3, pc}
.align 2, 0
_0201E608: .word RENDER_3D
_0201E60C: .word 0x3F1F00C0
_0201E610: .word 0x040004A4
arm_func_end sub_0201E5B0
arm_func_start sub_0201E614
sub_0201E614: ; 0x0201E614
stmdb sp!, {r4, lr}
mov r4, r0
mov r1, #0xbc
bl MemZero
bl InitRender3dData
mov r0, r4
bl sub_0201E634
ldmia sp!, {r4, pc}
arm_func_end sub_0201E614
arm_func_start sub_0201E634
sub_0201E634: ; 0x0201E634
stmdb sp!, {r3, r4, lr}
sub sp, sp, #0x14
mov r4, r0
mov r2, #0
str r2, [r4, #0xa0]
mov r0, #0x100000
str r0, [r4, #0xa4]
ldr r0, _0201E70C ; =0x007FFFFF
str r2, [r4, #0xa8]
mov r1, #0xc0000
str r1, [r4, #0xac]
mov r1, #0x1000
str r1, [r4, #0xb0]
str r0, [r4, #0xb4]
str r2, [r4]
str r2, [r4, #4]
str r1, [r4, #8]
str r2, [r4, #0x18]
str r2, [r4, #0x1c]
mov r0, r0, lsl #0xc
str r0, [r4, #0x20]
str r2, [r4, #0x24]
str r1, [r4, #0x28]
ldr r1, _0201E710 ; =0xBFFF0000
ldr r0, _0201E714 ; =0x04000580
str r2, [r4, #0x2c]
str r1, [r0]
ldr r0, [r4, #0xb0]
mov r1, #0x400000
str r0, [sp]
ldr r2, [r4, #0xb4]
mov r0, #1
str r2, [sp, #4]
str r1, [sp, #8]
str r0, [sp, #0xc]
add r0, r4, #0x60
str r0, [sp, #0x10]
ldr r0, [r4, #0xa8]
ldr r1, [r4, #0xac]
ldr r2, [r4, #0xa0]
ldr r3, [r4, #0xa4]
bl G3i_OrthoW_
ldr r1, _0201E718 ; =0x0400044C
mov r2, #0
mov r0, r4
str r2, [r1]
add ip, r4, #0x30
add r1, r4, #0x24
add r2, r4, #0x18
mov r3, #1
str ip, [sp]
bl G3i_LookAt_
add sp, sp, #0x14
ldmia sp!, {r3, r4, pc}
.align 2, 0
_0201E70C: .word 0x007FFFFF
_0201E710: .word 0xBFFF0000
_0201E714: .word 0x04000580
_0201E718: .word 0x0400044C
arm_func_end sub_0201E634
arm_func_start GeomSwapBuffers
GeomSwapBuffers: ; 0x0201E71C
ldr r0, _0201E72C ; =0x04000540
mov r1, #1
str r1, [r0]
bx lr
.align 2, 0
_0201E72C: .word 0x04000540
arm_func_end GeomSwapBuffers
arm_func_start InitRender3dElement64
InitRender3dElement64: ; 0x0201E730
stmdb sp!, {r4, lr}
mov r1, #0x40
mov r4, r0
bl MemZero
mov r0, #0xff
strb r0, [r4, #0x2c]
strb r0, [r4, #0x2d]
strb r0, [r4, #0x2e]
strb r0, [r4, #0x2f]
mov r0, #0x1000
strh r0, [r4, #0x10]
strh r0, [r4, #0x12]
mov r0, #0x40
strh r0, [r4, #0x2a]
mov r0, #0
strb r0, [r4, #0x3e]
ldmia sp!, {r4, pc}
arm_func_end InitRender3dElement64
arm_func_start sub_0201E774
sub_0201E774: ; 0x0201E774
stmdb sp!, {r4, lr}
ldrh ip, [r1, #0xc]
mov r4, r0
mov r0, r3
strh ip, [r4, #0x14]
ldrsh r3, [r1, #0x10]
strh r3, [r4, #0x16]
ldrsh r3, [r1, #0x12]
strh r3, [r4, #0x18]
ldrsh r3, [r1, #0x14]
strh r3, [r4, #0x1a]
ldrsh r3, [r1, #0x16]
ldrsh r1, [sp, #8]
strh r3, [r4, #0x1c]
str r2, [r4, #0x20]
bl sub_0201E7BC
str r0, [r4, #0x24]
ldmia sp!, {r4, pc}
arm_func_end sub_0201E774
arm_func_start sub_0201E7BC
sub_0201E7BC: ; 0x0201E7BC
ldr r2, _0201E7D4 ; =_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
_0201E7D4: .word _020AFC70
arm_func_end sub_0201E7BC
arm_func_start sub_0201E7D8
sub_0201E7D8: ; 0x0201E7D8
stmdb sp!, {r4, lr}
ldr ip, [r1]
mov r4, r0
ldrh lr, [ip, #8]
mov ip, r2, lsl #3
ldrsh r0, [sp, #8]
strh lr, [r4, #0x14]
ldr lr, [r1, #4]
ldrsh ip, [lr, ip]
strh ip, [r4, #0x16]
ldr ip, [r1, #4]
add ip, ip, r2, lsl #3
ldrsh ip, [ip, #2]
strh ip, [r4, #0x18]
ldr ip, [r1, #4]
add ip, ip, r2, lsl #3
ldrsh ip, [ip, #4]
strh ip, [r4, #0x1a]
ldr ip, [r1, #4]
ldrsh r1, [sp, #0xc]
add r2, ip, r2, lsl #3
ldrsh r2, [r2, #6]
strh r2, [r4, #0x1c]
str r3, [r4, #0x20]
bl sub_0201E7BC
str r0, [r4, #0x24]
ldmia sp!, {r4, pc}
arm_func_end sub_0201E7D8
arm_func_start Render3d64Texture0x7
Render3d64Texture0x7: ; 0x0201E844
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
mov r4, r0
bl NewRender3dTexture
ldrsh r1, [r4]
mov r5, #0
strh r1, [r0, #0x16]
ldrsh r1, [r4, #2]
strh r1, [r0, #0x18]
ldrsh r1, [r4, #8]
strh r1, [r0, #0x1a]
ldrsh r1, [r4, #0xa]
strh r1, [r0, #0x1c]
ldrb r2, [r4, #0x2e]
ldrb r1, [r4, #0x2d]
ldrb r6, [r4, #0x2c]
and r3, r2, #0xf8
and r2, r1, #0xf8
mov r1, r3, lsl #0x17
mov r2, r2, lsl #2
and r3, r6, #0xf8
orr r1, r2, r1, lsr #16
orr r1, r1, r3, asr #3
strh r1, [r0, #0x22]
ldrb r1, [r4, #0x2f]
and r1, r1, #0xf8
mov r1, r1, asr #3
strb r1, [r0, #0x27]
ldrh r1, [r4, #0x10]
strh r1, [r0, #0x1e]
ldrh r1, [r4, #0x12]
strh r1, [r0, #0x20]
ldrh r1, [r4, #0x28]
strh r1, [r0, #0x24]
ldr r1, [r4, #0x20]
str r1, [r0, #4]
ldr r1, [r4, #0x24]
str r1, [r0, #8]
ldrb r1, [r4, #0x3e]
strb r1, [r0, #0x26]
ldrh r1, [r4, #0x2a]
strh r1, [r0, #2]
ldrh r1, [r4, #0x14]
strh r1, [r0, #0x14]
_0201E8F0:
mov r1, #0x18
mul r6, r5, r1
mov r1, r6, lsl #0x10
mov ip, r1, asr #0x10
mov r1, #0x1f
mov r3, #0x18
and r7, r5, #1
mov lr, #0
mov r2, r1
mov sb, r3
_0201E918:
mul r8, lr, sb
ldrsh sl, [r4]
tst lr, #1
add sl, sl, r8
strh sl, [r0, #0x16]
ldrsh sl, [r4, #2]
add sl, sl, r6
strh sl, [r0, #0x18]
strh r8, [r0, #0xc]
strh ip, [r0, #0xe]
strh r3, [r0, #0x10]
strh r3, [r0, #0x12]
beq _0201E988
cmp r7, #0
streqh r2, [r0, #0x22]
beq _0201E9C0
ldrb r8, [r4, #0x2e]
ldrb sl, [r4, #0x2d]
ldrb fp, [r4, #0x2c]
and r8, r8, #0xf8
mov r8, r8, lsl #0x17
and fp, fp, #0xf8
and sl, sl, #0xf8
mov sl, sl, lsl #2
orr r8, sl, r8, lsr #16
orr r8, r8, fp, asr #3
strh r8, [r0, #0x22]
b _0201E9C0
_0201E988:
cmp r7, #0
strneh r1, [r0, #0x22]
bne _0201E9C0
ldrb r8, [r4, #0x2e]
ldrb sl, [r4, #0x2d]
ldrb fp, [r4, #0x2c]
and r8, r8, #0xf8
mov r8, r8, lsl #0x17
and fp, fp, #0xf8
and sl, sl, #0xf8
mov sl, sl, lsl #2
orr r8, sl, r8, lsr #16
orr r8, r8, fp, asr #3
strh r8, [r0, #0x22]
_0201E9C0:
add r8, lr, #1
mov r8, r8, lsl #0x10
mov lr, r8, asr #0x10
cmp lr, #0xa
blt _0201E918
add r1, r5, #1
mov r1, r1, lsl #0x10
mov r5, r1, asr #0x10
cmp r5, #8
blt _0201E8F0
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end Render3d64Texture0x7
arm_func_start Render3d64WindowFrame
Render3d64WindowFrame: ; 0x0201E9EC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x4c
mov sl, r0
add r5, sp, #0xc
mov r6, sl
mov r4, #4
_0201EA04:
ldmia r6!, {r0, r1, r2, r3}
stmia r5!, {r0, r1, r2, r3}
subs r4, r4, #1
bne _0201EA04
mov r0, #5
strb r0, [sp, #0x48]
ldrsh r1, [sl, #4]
ldrsh r2, [sl, #6]
cmp r1, #0x10
addle r0, r1, r1, lsr #31
movgt r3, #8
movle r0, r0, lsl #0xf
movle r3, r0, asr #0x10
cmp r2, #0x10
addle r0, r2, r2, lsr #31
movgt r6, #8
movle r0, r0, lsl #0xf
movle r6, r0, asr #0x10
ldrsh r0, [sl]
str r0, [sp]
ldrsh r8, [sl, #2]
ldr r4, [sp]
add r0, sp, #0xc
add r4, r4, r3
add r5, r8, r6
mov r4, r4, lsl #0x10
mov r7, r5, lsl #0x10
mov r5, r4, asr #0x10
mov r4, r7, asr #0x10
ldr r7, [sp]
add sb, r8, r2
strh r7, [sp, #0xc]
ldr r7, [sp]
mov r2, sb, lsl #0x10
add fp, r7, r1
sub r1, fp, r3
mov r3, r1, lsl #0x10
sub r1, sb, r6
mov r7, r1, lsl #0x10
mov r1, fp, lsl #0x10
mov r6, r3, asr #0x10
strh r8, [sp, #0xe]
strh r5, [sp, #0x10]
strh r4, [sp, #0x12]
ldrsh ip, [sl, #0x16]
mov r1, r1, asr #0x10
mov r3, #8
strh ip, [sp, #0x22]
ldrsh ip, [sl, #0x18]
mov r7, r7, asr #0x10
str r1, [sp, #8]
strh ip, [sp, #0x24]
strh r3, [sp, #0x26]
strh r3, [sp, #0x28]
mov r1, r2, asr #0x10
str r1, [sp, #4]
bl EnqueueRender3d64Tiling
strh r5, [sp, #0xc]
strh r8, [sp, #0xe]
strh r6, [sp, #0x10]
strh r4, [sp, #0x12]
ldrsh r2, [sl, #0x16]
add r0, sp, #0xc
mov r1, #8
add r2, r2, #8
strh r2, [sp, #0x22]
ldrsh r2, [sl, #0x18]
strh r2, [sp, #0x24]
strh r1, [sp, #0x26]
strh r1, [sp, #0x28]
bl EnqueueRender3d64Tiling
strh r6, [sp, #0xc]
strh r8, [sp, #0xe]
strh fp, [sp, #0x10]
strh r4, [sp, #0x12]
ldrsh r2, [sl, #0x16]
mov r1, #8
add r0, sp, #0xc
add r2, r2, #0x10
strh r2, [sp, #0x22]
ldrsh r2, [sl, #0x18]
strh r2, [sp, #0x24]
strh r1, [sp, #0x26]
strh r1, [sp, #0x28]
bl EnqueueRender3d64Tiling
ldr r0, [sp]
strh r4, [sp, #0xe]
strh r5, [sp, #0x10]
strh r7, [sp, #0x12]
strh r0, [sp, #0xc]
ldrsh r0, [sl, #0x16]
strh r0, [sp, #0x22]
ldrsh r0, [sl, #0x18]
add r0, r0, #8
strh r0, [sp, #0x24]
mov r1, #8
add r0, sp, #0xc
strh r1, [sp, #0x26]
strh r1, [sp, #0x28]
bl EnqueueRender3d64Tiling
strh r6, [sp, #0xc]
strh r4, [sp, #0xe]
ldr r0, [sp, #8]
mov r1, #8
strh r0, [sp, #0x10]
strh r7, [sp, #0x12]
ldrsh r2, [sl, #0x16]
add r0, sp, #0xc
add r2, r2, #0x10
strh r2, [sp, #0x22]
ldrsh r2, [sl, #0x18]
add r2, r2, #8
strh r2, [sp, #0x24]
strh r1, [sp, #0x26]
strh r1, [sp, #0x28]
bl EnqueueRender3d64Tiling
ldr r0, [sp]
mov r1, #8
strh r0, [sp, #0xc]
strh r7, [sp, #0xe]
strh r5, [sp, #0x10]
strh sb, [sp, #0x12]
ldrsh r2, [sl, #0x16]
add r0, sp, #0xc
strh r2, [sp, #0x22]
ldrsh r2, [sl, #0x18]
add r2, r2, #0x10
strh r2, [sp, #0x24]
strh r1, [sp, #0x26]
strh r1, [sp, #0x28]
bl EnqueueRender3d64Tiling
strh r5, [sp, #0xc]
strh r7, [sp, #0xe]
strh r6, [sp, #0x10]
ldr r0, [sp, #4]
mov r1, #8
strh r0, [sp, #0x12]
ldrsh r2, [sl, #0x16]
add r0, sp, #0xc
add r2, r2, #8
strh r2, [sp, #0x22]
ldrsh r2, [sl, #0x18]
add r2, r2, #0x10
strh r2, [sp, #0x24]
strh r1, [sp, #0x26]
strh r1, [sp, #0x28]
bl EnqueueRender3d64Tiling
strh r6, [sp, #0xc]
strh r7, [sp, #0xe]
ldr r0, [sp, #8]
mov r1, #8
strh r0, [sp, #0x10]
ldr r0, [sp, #4]
strh r0, [sp, #0x12]
ldrsh r2, [sl, #0x16]
add r0, sp, #0xc
add r2, r2, #0x10
strh r2, [sp, #0x22]
ldrsh r2, [sl, #0x18]
add r2, r2, #0x10
strh r2, [sp, #0x24]
strh r1, [sp, #0x26]
strh r1, [sp, #0x28]
bl EnqueueRender3d64Tiling
add sp, sp, #0x4c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end Render3d64WindowFrame
arm_func_start EnqueueRender3d64Tiling
EnqueueRender3d64Tiling: ; 0x0201EC9C
stmdb sp!, {r4, lr}
mov r4, r0
bl NewRender3dTiling
ldrsh r2, [r4]
mov r1, #0
strh r2, [r0, #0x16]
ldrsh r2, [r4, #2]
strh r2, [r0, #0x18]
ldrsh r2, [r4, #4]
strh r2, [r0, #0x1a]
ldrsh r2, [r4, #2]
strh r2, [r0, #0x1c]
ldrsh r2, [r4]
strh r2, [r0, #0x1e]
ldrsh r2, [r4, #6]
strh r2, [r0, #0x20]
ldrsh r2, [r4, #4]
strh r2, [r0, #0x22]
ldrsh r2, [r4, #6]
strh r2, [r0, #0x24]
_0201ECEC:
ldrb r3, [r4, #0x2e]
ldrb r2, [r4, #0x2d]
ldrb lr, [r4, #0x2c]
and ip, r3, #0xf8
and r3, r2, #0xf8
mov r2, ip, lsl #0x17
mov ip, r3, lsl #2
add r3, r0, r1, lsl #1
add r1, r1, #1
and lr, lr, #0xf8
orr r2, ip, r2, lsr #16
orr r2, r2, lr, asr #3
strh r2, [r3, #0x26]
cmp r1, #4
blt _0201ECEC
ldrb r1, [r4, #0x2f]
add r3, r4, #0x16
add r2, r0, #0xc
and r1, r1, #0xf8
mov r1, r1, asr #3
strb r1, [r0, #0x31]
ldrh ip, [r4, #0x28]
mov r1, #4
strh ip, [r0, #0x2e]
ldr ip, [r4, #0x20]
str ip, [r0, #4]
ldr ip, [r4, #0x24]
str ip, [r0, #8]
ldrb ip, [r4, #0x3e]
strb ip, [r0, #0x30]
ldrh ip, [r4, #0x2a]
strh ip, [r0, #2]
ldrh r4, [r4, #0x14]
strh r4, [r0, #0x14]
_0201ED74:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _0201ED74
ldmia sp!, {r4, pc}
arm_func_end EnqueueRender3d64Tiling
arm_func_start Render3d64Tiling
Render3d64Tiling: ; 0x0201ED88
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
bl NewRender3dTiling
mov r1, #0
_0201ED98:
mov r2, r1, lsl #2
ldrsh r2, [r4, r2]
add ip, r0, r1, lsl #2
add r5, r4, r1, lsl #2
strh r2, [ip, #0x16]
ldrsh r2, [r5, #2]
add r3, r0, r1, lsl #1
add r1, r1, #1
strh r2, [ip, #0x18]
ldrb ip, [r5, #0x2e]
ldrb r2, [r5, #0x2d]
ldrb r5, [r5, #0x2c]
and lr, ip, #0xf8
and ip, r2, #0xf8
mov r2, lr, lsl #0x17
mov ip, ip, lsl #2
and r5, r5, #0xf8
orr r2, ip, r2, lsr #16
orr r2, r2, r5, asr #3
strh r2, [r3, #0x26]
cmp r1, #4
blt _0201ED98
ldrb r1, [r4, #0x2f]
add r3, r4, #0x16
add r2, r0, #0xc
and r1, r1, #0xf8
mov r1, r1, asr #3
strb r1, [r0, #0x31]
ldrh ip, [r4, #0x28]
mov r1, #4
strh ip, [r0, #0x2e]
ldr ip, [r4, #0x20]
str ip, [r0, #4]
ldr ip, [r4, #0x24]
str ip, [r0, #8]
ldrb ip, [r4, #0x3e]
strb ip, [r0, #0x30]
ldrh ip, [r4, #0x2a]
strh ip, [r0, #2]
ldrh r4, [r4, #0x14]
strh r4, [r0, #0x14]
_0201EE3C:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _0201EE3C
ldmia sp!, {r3, r4, r5, pc}
arm_func_end Render3d64Tiling
arm_func_start Render3d64Quadrilateral
Render3d64Quadrilateral: ; 0x0201EE50
stmdb sp!, {r3, r4, r5, lr}
mov r4, r0
bl NewRender3dQuadrilateral
mov r1, #0
_0201EE60:
mov r2, r1, lsl #2
ldrsh r2, [r4, r2]
add ip, r0, r1, lsl #2
add r5, r4, r1, lsl #2
strh r2, [ip, #4]
ldrsh r2, [r5, #2]
add r3, r0, r1, lsl #1
add r1, r1, #1
strh r2, [ip, #6]
ldrb ip, [r5, #0x2e]
ldrb r2, [r5, #0x2d]
ldrb r5, [r5, #0x2c]
and lr, ip, #0xf8
and ip, r2, #0xf8
mov r2, lr, lsl #0x17
mov ip, ip, lsl #2
and r5, r5, #0xf8
orr r2, ip, r2, lsr #16
orr r2, r2, r5, asr #3
strh r2, [r3, #0x1a]
cmp r1, #4
blt _0201EE60
ldrb r1, [r4, #0x2f]
and r1, r1, #0xf8
mov r1, r1, asr #3
strb r1, [r0, #0x23]
ldrb r1, [r4, #0x3e]
strb r1, [r0, #0x22]
ldrh r1, [r4, #0x2a]
strh r1, [r0, #2]
ldrb r1, [r4, #0x3d]
tst r1, #2
movne r1, #1
moveq r1, #0
strb r1, [r0, #0x24]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end Render3d64Quadrilateral
arm_func_start Render3d64RectangleMulticolor
Render3d64RectangleMulticolor: ; 0x0201EEF0
stmdb sp!, {r4, lr}
mov r4, r0
bl NewRender3dRectangle
ldrh r1, [r4]
strh r1, [r0, #4]
ldrh r1, [r4, #2]
strh r1, [r0, #6]
ldrh r1, [r4, #4]
strh r1, [r0, #8]
ldrh r1, [r4, #6]
strh r1, [r0, #0xa]
ldrh r1, [r4, #8]
strh r1, [r0, #0xc]
ldrh r1, [r4, #0xa]
strh r1, [r0, #0xe]
ldrb r1, [r4, #0x2f]
and r1, r1, #0xf8
mov r1, r1, asr #3
strb r1, [r0, #0x23]
ldrh r1, [r4, #0x10]
strh r1, [r0, #0x14]
ldrh r1, [r4, #0x12]
strh r1, [r0, #0x16]
ldrh r1, [r4, #0x28]
strh r1, [r0, #0x18]
ldrb r1, [r4, #0x3e]
strb r1, [r0, #0x22]
ldrh r1, [r4, #0x2a]
strh r1, [r0, #2]
ldrb r1, [r4, #0x3d]
tst r1, #2
movne r1, #1
moveq r1, #0
strb r1, [r0, #0x24]
tst r1, #0xff
ldrb r2, [r4, #0x2e]
ldrb r1, [r4, #0x2d]
beq _0201F034
ldrb ip, [r4, #0x2c]
and r3, r2, #0xf8
and r2, r1, #0xf8
mov r1, r3, lsl #0x17
mov r2, r2, lsl #2
and r3, ip, #0xf8
orr r1, r2, r1, lsr #16
orr r1, r1, r3, asr #3
strh r1, [r0, #0x1a]
ldrb r2, [r4, #0x32]
ldrb r1, [r4, #0x31]
ldrb ip, [r4, #0x30]
and r3, r2, #0xf8
and r2, r1, #0xf8
mov r1, r3, lsl #0x17
mov r2, r2, lsl #2
and r3, ip, #0xf8
orr r1, r2, r1, lsr #16
orr r1, r1, r3, asr #3
strh r1, [r0, #0x1c]
ldrb r2, [r4, #0x36]
ldrb r1, [r4, #0x35]
ldrb ip, [r4, #0x34]
and r3, r2, #0xf8
and r2, r1, #0xf8
mov r1, r3, lsl #0x17
mov r2, r2, lsl #2
and r3, ip, #0xf8
orr r1, r2, r1, lsr #16
orr r1, r1, r3, asr #3
strh r1, [r0, #0x1e]
ldrb r2, [r4, #0x3a]
ldrb r1, [r4, #0x39]
ldrb r4, [r4, #0x38]
and r3, r2, #0xf8
and r2, r1, #0xf8
mov r1, r3, lsl #0x17
mov r2, r2, lsl #2
and r3, r4, #0xf8
orr r1, r2, r1, lsr #16
orr r1, r1, r3, asr #3
strh r1, [r0, #0x20]
ldmia sp!, {r4, pc}
_0201F034:
ldrb r4, [r4, #0x2c]
and r3, r2, #0xf8
and r2, r1, #0xf8
mov r1, r3, lsl #0x17
mov r2, r2, lsl #2
and r3, r4, #0xf8
orr r1, r2, r1, lsr #16
orr r1, r1, r3, asr #3
strh r1, [r0, #0x1a]
ldmia sp!, {r4, pc}
arm_func_end Render3d64RectangleMulticolor
arm_func_start Render3d64Rectangle
Render3d64Rectangle: ; 0x0201F05C
stmdb sp!, {r4, lr}
mov r4, r0
bl NewRender3dRectangle
ldrh r1, [r4]
mov r2, #0
strh r1, [r0, #4]
ldrh r1, [r4, #2]
strh r1, [r0, #6]
ldrh r1, [r4, #4]
strh r1, [r0, #8]
ldrh r1, [r4, #6]
strh r1, [r0, #0xa]
ldrh r1, [r4, #8]
strh r1, [r0, #0xc]
ldrh r1, [r4, #0xa]
strh r1, [r0, #0xe]
ldrb r3, [r4, #0x2e]
ldrb r1, [r4, #0x2d]
ldrb lr, [r4, #0x2c]
and ip, r3, #0xf8
and r3, r1, #0xf8
mov r1, ip, lsl #0x17
mov r3, r3, lsl #2
and ip, lr, #0xf8
orr r1, r3, r1, lsr #16
orr r1, r1, ip, asr #3
strh r1, [r0, #0x1a]
ldrb r1, [r4, #0x2f]
and r1, r1, #0xf8
mov r1, r1, asr #3
strb r1, [r0, #0x23]
ldrh r1, [r4, #0x10]
strh r1, [r0, #0x14]
ldrh r1, [r4, #0x12]
strh r1, [r0, #0x16]
ldrh r1, [r4, #0x28]
strh r1, [r0, #0x18]
ldrb r1, [r4, #0x3e]
strb r1, [r0, #0x22]
ldrh r1, [r4, #0x2a]
strh r1, [r0, #2]
strb r2, [r0, #0x24]
ldmia sp!, {r4, pc}
arm_func_end Render3d64Rectangle
arm_func_start Render3d64Nothing
Render3d64Nothing: ; 0x0201F108
bx lr
arm_func_end Render3d64Nothing
arm_func_start Render3d64Texture
Render3d64Texture: ; 0x0201F10C
stmdb sp!, {r4, lr}
mov r4, r0
bl NewRender3dTexture
ldrsh r1, [r4]
add ip, r4, #0x16
add r3, r0, #0xc
strh r1, [r0, #0x16]
ldrsh r1, [r4, #2]
mov r2, #4
strh r1, [r0, #0x18]
ldrsh r1, [r4, #8]
strh r1, [r0, #0x1a]
ldrsh r1, [r4, #0xa]
strh r1, [r0, #0x1c]
_0201F144:
ldrh r1, [ip], #2
subs r2, r2, #1
strh r1, [r3], #2
bne _0201F144
ldrb r2, [r4, #0x2e]
ldrb r1, [r4, #0x2d]
ldrb ip, [r4, #0x2c]
and r3, r2, #0xf8
and r2, r1, #0xf8
mov r1, r3, lsl #0x17
mov r2, r2, lsl #2
and r3, ip, #0xf8
orr r1, r2, r1, lsr #16
orr r1, r1, r3, asr #3
strh r1, [r0, #0x22]
ldrb r1, [r4, #0x2f]
and r1, r1, #0xf8
mov r1, r1, asr #3
strb r1, [r0, #0x27]
ldrh r1, [r4, #0x10]
strh r1, [r0, #0x1e]
ldrh r1, [r4, #0x12]
strh r1, [r0, #0x20]
ldrh r1, [r4, #0x28]
strh r1, [r0, #0x24]
ldr r1, [r4, #0x20]
str r1, [r0, #4]
ldr r1, [r4, #0x24]
str r1, [r0, #8]
ldrb r1, [r4, #0x3e]
strb r1, [r0, #0x26]
ldrh r1, [r4, #0x2a]
strh r1, [r0, #2]
ldrh r1, [r4, #0x14]
strh r1, [r0, #0x14]
ldmia sp!, {r4, pc}
arm_func_end Render3d64Texture
arm_func_start Render3dElement64
Render3dElement64: ; 0x0201F1D4
stmdb sp!, {r3, lr}
ldrb r1, [r0, #0x3d]
tst r1, #2
ldmneia sp!, {r3, pc}
ldrb r1, [r0, #0x2f]
cmp r1, #0
ldmeqia sp!, {r3, pc}
ldrb r2, [r0, #0x3c]
ldr r1, _0201F204 ; =RENDER_3D_FUNCTIONS_64
ldr r1, [r1, r2, lsl #2]
blx r1
ldmia sp!, {r3, pc}
.align 2, 0
_0201F204: .word RENDER_3D_FUNCTIONS_64
arm_func_end Render3dElement64
arm_func_start sub_0201F208
sub_0201F208: ; 0x0201F208
stmdb sp!, {r3, lr}
ldr r0, _0201F240 ; =0x00001544
mov r1, #0
bl MemAlloc
ldr r2, _0201F244 ; =_020AFCE4
ldr r1, _0201F240 ; =0x00001544
str r0, [r2]
bl MemZero
ldr r0, _0201F244 ; =_020AFCE4
mov r1, #0
ldr r0, [r0]
add r0, r0, #0x1500
strh r1, [r0, #0x40]
ldmia sp!, {r3, pc}
.align 2, 0
_0201F240: .word 0x00001544
_0201F244: .word _020AFCE4
arm_func_end sub_0201F208
arm_func_start sub_0201F248
sub_0201F248: ; 0x0201F248
ldr r1, _0201F29C ; =_020AFCE4
mov r2, #0
ldr r0, [r1]
add r0, r0, #0x1000
strb r2, [r0, #0x542]
ldr r3, [r1]
mov r1, #0x44
b _0201F284
_0201F268:
smlabb r0, r2, r1, r3
ldrb r0, [r0, #0x40]
cmp r0, #0
bxeq lr
add r0, r2, #1
mov r0, r0, lsl #0x10
mov r2, r0, asr #0x10
_0201F284:
cmp r2, #0x50
blt _0201F268
add r0, r3, #0x1000
mov r1, #1
strb r1, [r0, #0x542]
bx lr
.align 2, 0
_0201F29C: .word _020AFCE4
arm_func_end sub_0201F248
arm_func_start sub_0201F2A0
sub_0201F2A0: ; 0x0201F2A0
ldr ip, _0201F2A8 ; =Render3dElement64
bx ip
.align 2, 0
_0201F2A8: .word Render3dElement64
arm_func_end sub_0201F2A0
arm_func_start sub_0201F2AC
sub_0201F2AC: ; 0x0201F2AC
stmdb sp!, {r4, lr}
ldr r2, _0201F2E0 ; =_020AFCE4
mov r1, #0x44
smulbb r4, r0, r1
ldr r0, [r2]
add r0, r0, r4
bl InitRender3dElement64
ldr r0, _0201F2E0 ; =_020AFCE4
mov r1, #0
ldr r0, [r0]
add r0, r0, r4
strb r1, [r0, #0x40]
ldmia sp!, {r4, pc}
.align 2, 0
_0201F2E0: .word _020AFCE4
arm_func_end sub_0201F2AC
arm_func_start sub_0201F2E4
sub_0201F2E4: ; 0x0201F2E4
stmdb sp!, {r4, lr}
mov r4, #0
_0201F2EC:
mov r0, r4
bl sub_0201F2AC
add r0, r4, #1
mov r0, r0, lsl #0x10
mov r4, r0, asr #0x10
cmp r4, #0x50
blt _0201F2EC
ldr r0, _0201F320 ; =_020AFCE4
mov r1, #0
ldr r0, [r0]
add r0, r0, #0x1500
strh r1, [r0, #0x40]
ldmia sp!, {r4, pc}
.align 2, 0
_0201F320: .word _020AFCE4
arm_func_end sub_0201F2E4
arm_func_start sub_0201F324
sub_0201F324: ; 0x0201F324
ldr r2, _0201F344 ; =_020AFCE4
mov r1, #0x44
ldr r2, [r2]
smlabb r0, r0, r1, r2
ldrb r1, [r0, #0x40]
cmp r1, #0
moveq r0, #0
bx lr
.align 2, 0
_0201F344: .word _020AFCE4
arm_func_end sub_0201F324
arm_func_start sub_0201F348
sub_0201F348: ; 0x0201F348
ldr r3, _0201F368 ; =_020AFCE4
mov r2, #0x44
ldr r3, [r3]
smlabb r2, r0, r2, r3
ldrb r0, [r2, #0x40]
cmp r0, #0
strneb r1, [r2, #0x41]
bx lr
.align 2, 0
_0201F368: .word _020AFCE4
arm_func_end sub_0201F348
arm_func_start sub_0201F36C
sub_0201F36C: ; 0x0201F36C
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _0201F460 ; =_020AFCE4
mov ip, #0
ldr lr, [r0]
mov r5, ip
add r0, lr, #0x1500
ldrsh r4, [r0, #0x40]
mov r2, #0x44
b _0201F3F8
_0201F390:
cmp r4, #0x50
movge r4, r5
smlabb r3, r4, r2, lr
ldrb r0, [r3, #0x40]
cmp r0, #0
bne _0201F3E0
ldr r1, _0201F460 ; =_020AFCE4
mov r0, #1
strb r0, [r3, #0x40]
ldr r0, [r1]
add r2, r4, #1
add r0, r0, #0x1500
strh r2, [r0, #0x40]
ldr r0, [r1]
add r0, r0, #0x1500
ldrsh r1, [r0, #0x40]
cmp r1, #0x50
movge r1, #0
strgeh r1, [r0, #0x40]
b _0201F410
_0201F3E0:
add r0, ip, #1
add r1, r4, #1
mov r0, r0, lsl #0x10
mov r1, r1, lsl #0x10
mov ip, r0, asr #0x10
mov r4, r1, asr #0x10
_0201F3F8:
cmp ip, #0x50
blt _0201F390
mov r1, #1
add r0, lr, #0x1000
strb r1, [r0, #0x542]
sub r4, r1, #2
_0201F410:
mvn r0, #0
cmp r4, r0
moveq r0, r4
ldmeqia sp!, {r3, r4, r5, pc}
ldr r1, _0201F460 ; =_020AFCE4
mov r0, #0x44
smulbb r5, r4, r0
ldr r0, [r1]
add r0, r0, r5
bl InitRender3dElement64
ldr r1, _0201F460 ; =_020AFCE4
mov r3, #1
ldr r2, [r1]
mov r0, r4
add r2, r2, r5
strb r3, [r2, #0x40]
ldr r1, [r1]
add r1, r1, r5
strb r3, [r1, #0x41]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0201F460: .word _020AFCE4
arm_func_end sub_0201F36C
arm_func_start sub_0201F464
sub_0201F464: ; 0x0201F464
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _0201F4B0 ; =_020AFCE4
mov r4, #0
ldr r5, [r0]
_0201F474:
ldrb r0, [r5, #0x40]
cmp r0, #0
ldrneb r0, [r5, #0x41]
cmpne r0, #0
beq _0201F490
mov r0, r5
bl Render3dElement64
_0201F490:
add r0, r4, #1
mov r0, r0, lsl #0x10
mov r4, r0, asr #0x10
cmp r4, #0x50
add r5, r5, #0x44
blt _0201F474
bl sub_0201F248
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0201F4B0: .word _020AFCE4
arm_func_end sub_0201F464
arm_func_start HandleSir0Translation
HandleSir0Translation: ; 0x0201F4B4
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
ldrb r2, [r4]
mov r5, r0
mov r0, #0
cmp r2, #0x53
ldreqb r1, [r4, #1]
cmpeq r1, #0x49
ldreqb r1, [r4, #2]
cmpeq r1, #0x52
ldreqb r1, [r4, #3]
cmpeq r1, #0x30
bne _0201F500
mov r1, #0x4f
mov r0, r4
strb r1, [r4, #3]
bl ConvertPointersSir0
mov r0, #1
b _0201F520
_0201F500:
cmp r2, #0x53
ldreqb r1, [r4, #1]
cmpeq r1, #0x49
ldreqb r1, [r4, #2]
cmpeq r1, #0x52
ldreqb r1, [r4, #3]
cmpeq r1, #0x4f
moveq r0, #2
_0201F520:
cmp r0, #0
ldrne r1, [r4, #4]
strne r1, [r5]
streq r4, [r5]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end HandleSir0Translation
arm_func_start ConvertPointersSir0
ConvertPointersSir0: ; 0x0201F534
stmdb sp!, {r4, r5}
ldr r1, [r0, #8]
mov r3, r0
add r1, r1, r0
_0201F544:
mov r2, #0
_0201F548:
ldrb r4, [r1]
add r1, r1, #1
mov r2, r2, lsl #7
and r5, r4, #0x7f
orr r2, r2, r5
and r5, r4, #0x80
cmp r5, #0
bne _0201F548
cmp r2, #0
beq _0201F584
add r3, r3, r2
ldr r2, [r3]
add r2, r2, r0
str r2, [r3]
b _0201F544
_0201F584:
ldmia sp!, {r4, r5}
bx lr
arm_func_end ConvertPointersSir0
arm_func_start HandleSir0TranslationVeneer
HandleSir0TranslationVeneer: ; 0x0201F58C
ldr ip, _0201F594 ; =HandleSir0Translation
bx ip
.align 2, 0
_0201F594: .word HandleSir0Translation
arm_func_end HandleSir0TranslationVeneer
arm_func_start sub_0201F598
sub_0201F598: ; 0x0201F598
str r1, [r0]
strh r2, [r0, #4]
ldrsh r1, [sp]
strh r3, [r0, #6]
ldrb r2, [sp, #4]
strh r1, [r0, #8]
mov r1, #0
strb r2, [r0, #0xa]
strb r1, [r0, #0xb]
bx lr
arm_func_end sub_0201F598
arm_func_start DecompressAtNormalVeneer
DecompressAtNormalVeneer: ; 0x0201F5C0
ldr ip, _0201F5C8 ; =DecompressAtNormal
bx ip
.align 2, 0
_0201F5C8: .word DecompressAtNormal
arm_func_end DecompressAtNormalVeneer
arm_func_start DecompressAtNormal
DecompressAtNormal: ; 0x0201F5CC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x1c
ldrb r5, [r2]
mov ip, #0
ldrb r4, [r2, #5]
cmp r5, #0x50
ldreqb r6, [r2, #1]
ldrb r3, [r2, #6]
mov lr, ip
cmpeq r6, #0x4b
ldreqb r6, [r2, #2]
add r3, r4, r3, lsl #8
mov r4, #8
cmpeq r6, #0x44
ldreqb r6, [r2, #3]
cmpeq r6, #0x50
bne _0201F644
ldrb r7, [r2, #0x10]
ldrb r6, [r2, #0x11]
ldrb r8, [r2, #0x12]
ldrb r5, [r2, #0x13]
add r6, r7, r6, lsl #8
add r6, r6, r8, lsl #16
add r5, r6, r5, lsl #24
cmp r1, #0
cmpne r1, r5
movne r0, ip
bne _0201FA08
mov r5, #0x14
b _0201F6B4
_0201F644:
cmp r5, #0x41
ldreqb r6, [r2, #1]
cmpeq r6, #0x54
ldreqb r6, [r2, #2]
cmpeq r6, #0x34
ldreqb r6, [r2, #3]
cmpeq r6, #0x50
bne _0201F688
ldrb r6, [r2, #0x10]
ldrb r5, [r2, #0x11]
cmp r1, #0
add r5, r6, r5, lsl #8
cmpne r1, r5
movne r0, #0
bne _0201FA08
mov r5, #0x12
b _0201F6B4
_0201F688:
cmp r5, #0x41
ldreqb r5, [r2, #1]
cmpeq r5, #0x54
ldreqb r5, [r2, #2]
cmpeq r5, #0x33
ldreqb r5, [r2, #3]
cmpeq r5, #0x50
moveq r5, #0x10
beq _0201F6B4
mov r0, #0
b _0201FA08
_0201F6B4:
ldrb r6, [r2, #4]
cmp r6, #0x4e
bne _0201F6E8
mov r4, #0
b _0201F6D8
_0201F6C8:
add r1, r2, r4
ldrb r1, [r1, #7]
strb r1, [r0, r4]
add r4, r4, #1
_0201F6D8:
cmp r4, r3
blt _0201F6C8
mov r0, r4
b _0201FA08
_0201F6E8:
ldrb r6, [r2, #7]
ldrb sb, [r2, #8]
ldrb r8, [r2, #9]
add r6, r6, #3
str r6, [sp, #0x18]
add r6, sb, #3
str r6, [sp, #0x14]
add r6, r8, #3
ldrb r7, [r2, #0xa]
str r6, [sp, #0x10]
ldrb sl, [r2, #0xb]
add r6, r7, #3
str r6, [sp, #0xc]
add r6, sl, #3
ldrb r7, [r2, #0xf]
ldrb fp, [r2, #0xc]
str r6, [sp, #8]
ldrb r8, [r2, #0xe]
add r6, fp, #3
str r6, [sp, #4]
ldrb r6, [r2, #0xd]
add fp, r8, #3
add sl, r7, #3
add r6, r6, #3
str r6, [sp]
b _0201F9FC
_0201F750:
cmp r1, #0
beq _0201F764
cmp ip, r1
movge r0, #0
bge _0201FA08
_0201F764:
cmp r4, #8
ldreqb lr, [r2, r5]
addeq r5, r5, #1
moveq r4, #0
tst lr, #0x80
bne _0201F9E4
ldrb r8, [r2, r5]
ldr sb, [sp, #0x18]
add r7, r2, r5
and r6, r8, #0xf0
mov r6, r6, asr #4
add r6, r6, #3
cmp r6, sb
ldr sb, [sp, #0x14]
moveq r6, #0x1f
cmp r6, sb
ldr sb, [sp, #0x10]
moveq r6, #0x1e
cmp r6, sb
ldr sb, [sp, #0xc]
moveq r6, #0x1d
cmp r6, sb
ldr sb, [sp, #8]
moveq r6, #0x1c
cmp r6, sb
ldr sb, [sp, #4]
moveq r6, #0x1b
cmp r6, sb
ldr sb, [sp]
moveq r6, #0x1a
cmp r6, sb
moveq r6, #0x19
cmp r6, fp
moveq r6, #0x18
cmp r6, sl
moveq r6, #0x17
sub sb, r6, #0x17
and r8, r8, #0xf
cmp sb, #8
addls pc, pc, sb, lsl #2
b _0201F9A8
_0201F808: ; jump table
b _0201F97C ; case 0
b _0201F950 ; case 1
b _0201F924 ; case 2
b _0201F8FC ; case 3
b _0201F8D0 ; case 4
b _0201F8A4 ; case 5
b _0201F878 ; case 6
b _0201F850 ; case 7
b _0201F82C ; case 8
_0201F82C:
add r5, r5, #1
add r7, r0, ip
orr r6, r8, r8, lsl #4
strb r6, [r0, ip]
and r6, r8, #0xf
orr r6, r6, r6, lsl #4
strb r6, [r7, #1]
add ip, ip, #2
b _0201F9F4
_0201F850:
add r5, r5, #1
add r6, r8, #1
and r6, r6, #0xf
orr r7, r6, r8, lsl #4
orr r6, r6, r6, lsl #4
strb r7, [r0, ip]
add r7, r0, ip
strb r6, [r7, #1]
add ip, ip, #2
b _0201F9F4
_0201F878:
add r5, r5, #1
add r6, r0, ip
sub r7, r8, #1
and r7, r7, #0xf
orr r7, r7, r8, lsl #4
strb r7, [r0, ip]
and r7, r8, #0xf
orr r7, r7, r7, lsl #4
strb r7, [r6, #1]
add ip, ip, #2
b _0201F9F4
_0201F8A4:
add r5, r5, #1
add r7, r0, ip
orr r6, r8, r8, lsl #4
strb r6, [r0, ip]
sub r6, r8, #1
mov r6, r6, lsl #0x1c
and r8, r8, #0xf
orr r6, r8, r6, lsr #24
strb r6, [r7, #1]
add ip, ip, #2
b _0201F9F4
_0201F8D0:
add r5, r5, #1
add r7, r0, ip
orr r6, r8, r8, lsl #4
strb r6, [r0, ip]
mov r6, r8, lsl #0x1c
sub r8, r8, #1
and r8, r8, #0xf
orr r6, r8, r6, lsr #24
strb r6, [r7, #1]
add ip, ip, #2
b _0201F9F4
_0201F8FC:
add r5, r5, #1
sub r6, r8, #1
and r6, r6, #0xf
orr r7, r6, r8, lsl #4
orr r6, r6, r6, lsl #4
strb r7, [r0, ip]
add r7, r0, ip
strb r6, [r7, #1]
add ip, ip, #2
b _0201F9F4
_0201F924:
add r5, r5, #1
add r6, r0, ip
add r7, r8, #1
and r7, r7, #0xf
orr r7, r7, r8, lsl #4
strb r7, [r0, ip]
and r7, r8, #0xf
orr r7, r7, r7, lsl #4
strb r7, [r6, #1]
add ip, ip, #2
b _0201F9F4
_0201F950:
add r5, r5, #1
add r7, r0, ip
orr r6, r8, r8, lsl #4
strb r6, [r0, ip]
add r6, r8, #1
mov r6, r6, lsl #0x1c
and r8, r8, #0xf
orr r6, r8, r6, lsr #24
strb r6, [r7, #1]
add ip, ip, #2
b _0201F9F4
_0201F97C:
add r5, r5, #1
add r7, r0, ip
orr r6, r8, r8, lsl #4
strb r6, [r0, ip]
mov r6, r8, lsl #0x1c
add r8, r8, #1
and r8, r8, #0xf
orr r6, r8, r6, lsr #24
strb r6, [r7, #1]
add ip, ip, #2
b _0201F9F4
_0201F9A8:
ldrb sb, [r7, #1]
sub r7, ip, #0x1000
add r5, r5, #2
add r8, sb, r8, lsl #8
add sb, r8, r7
mov r8, #0
b _0201F9D8
_0201F9C4:
ldrb r7, [r0, sb]
add sb, sb, #1
add r8, r8, #1
strb r7, [r0, ip]
add ip, ip, #1
_0201F9D8:
cmp r8, r6
blt _0201F9C4
b _0201F9F4
_0201F9E4:
ldrb r6, [r2, r5]
add r5, r5, #1
strb r6, [r0, ip]
add ip, ip, #1
_0201F9F4:
add r4, r4, #1
mov lr, lr, lsl #1
_0201F9FC:
cmp r5, r3
blt _0201F750
mov r0, ip
_0201FA08:
add sp, sp, #0x1c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end DecompressAtNormal
arm_func_start DecompressAtHalf
DecompressAtHalf: ; 0x0201FA10
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x34
ldrb r4, [r2]
ldrb r6, [r2, #5]
ldrb r5, [r2, #6]
cmp r4, #0x50
mov ip, #0
add sl, r6, r5, lsl #8
ldreqb r5, [r2, #1]
str ip, [sp, #0x30]
mov lr, #8
cmpeq r5, #0x4b
ldreqb r5, [r2, #2]
cmpeq r5, #0x44
ldreqb r5, [r2, #3]
cmpeq r5, #0x50
bne _0201FA88
ldrb r6, [r2, #0x10]
ldrb r5, [r2, #0x11]
ldrb r7, [r2, #0x12]
ldrb r4, [r2, #0x13]
add r5, r6, r5, lsl #8
add r5, r5, r7, lsl #16
add r4, r5, r4, lsl #24
cmp r1, #0
cmpne r1, r4
movne r0, ip
bne _0201FF44
mov r8, #0x14
b _0201FB18
_0201FA88:
cmp r4, #0x41
ldreqb r5, [r2, #1]
cmpeq r5, #0x54
ldreqb r5, [r2, #2]
cmpeq r5, #0x34
ldreqb r5, [r2, #3]
cmpeq r5, #0x50
bne _0201FAEC
ldrb r4, [r2, #4]
ldrb r6, [r2, #0x10]
ldrb r5, [r2, #0x11]
cmp r4, #0x4e
add r4, r6, r5, lsl #8
bne _0201FAD4
cmp r1, #0
cmpne r1, sl
beq _0201FB18
mov r0, #0
b _0201FF44
_0201FAD4:
cmp r1, #0
cmpne r1, r4
movne r0, #0
bne _0201FF44
mov r8, #0x12
b _0201FB18
_0201FAEC:
cmp r4, #0x41
ldreqb r4, [r2, #1]
cmpeq r4, #0x54
ldreqb r4, [r2, #2]
cmpeq r4, #0x33
ldreqb r4, [r2, #3]
cmpeq r4, #0x50
moveq r8, #0x10
beq _0201FB18
mov r0, #0
b _0201FF44
_0201FB18:
ldrb r4, [r2, #4]
cmp r4, #0x4e
bne _0201FB78
mov r5, #0
b _0201FB68
_0201FB2C:
add r6, r2, r5
ldrb r4, [r6, #7]
add r1, r0, r5, lsl #1
ands r4, r4, #0xf
strb r4, [r0, r5, lsl #1]
orrne r4, r4, r3
strneb r4, [r1]
ldrb r4, [r6, #7]
add r5, r5, #1
and r4, r4, #0xf0
mov r4, r4, asr #4
strb r4, [r1, #1]
ands r4, r4, #0xff
orrne r4, r4, r3
strneb r4, [r1, #1]
_0201FB68:
cmp r5, sl
blt _0201FB2C
mov r0, r5
b _0201FF44
_0201FB78:
ldrb r4, [r2, #7]
ldrb r7, [r2, #8]
ldrb r6, [r2, #9]
add r4, r4, #3
str r4, [sp, #0x24]
add r4, r7, #3
str r4, [sp, #0x20]
add r4, r6, #3
ldrb r5, [r2, #0xa]
str r4, [sp, #0x1c]
ldrb sb, [r2, #0xb]
add r4, r5, #3
str r4, [sp, #0x18]
add r4, sb, #3
str r4, [sp, #0x14]
ldrb r4, [r2, #0xc]
ldrb r6, [r2, #0xd]
ldrb r5, [r2, #0xe]
add r4, r4, #3
str r4, [sp, #0x10]
add r4, r6, #3
str r4, [sp, #0xc]
add r4, r5, #3
str r4, [sp, #8]
ldrb r4, [r2, #0xf]
mov r1, r1, lsl #1
add r4, r4, #3
str r4, [sp, #4]
b _0201FF38
_0201FBEC:
cmp r1, #0
beq _0201FC00
cmp ip, r1
movge r0, #0
bge _0201FF44
_0201FC00:
cmp lr, #8
ldreqb r4, [r2, r8]
addeq r8, r8, #1
moveq lr, #0
streq r4, [sp, #0x30]
ldr r4, [sp, #0x30]
tst r4, #0x80
bne _0201FEEC
add r4, r2, r8
str r4, [sp]
ldrb r4, [r2, r8]
ldr sb, [sp, #0x24]
str r4, [sp, #0x28]
ldr r5, [sp, #0x28]
ldr r6, [sp, #0x28]
ldr r7, [sp, #0x28]
and r4, r4, #0xf0
mov r4, r4, asr #4
ands fp, r5, #0xf
add r6, r6, #1
sub r7, r7, #1
mov r5, fp
add r4, r4, #3
and r6, r6, #0xf
orrne r5, fp, r3
cmp r6, #0
and r7, r7, #0xf
orrne r6, r6, r3
cmp r7, #0
orrne r7, r7, r3
cmp r4, sb
ldr sb, [sp, #0x20]
moveq r4, #0x1f
cmp r4, sb
ldr sb, [sp, #0x1c]
moveq r4, #0x1e
cmp r4, sb
ldr sb, [sp, #0x18]
moveq r4, #0x1d
cmp r4, sb
ldr sb, [sp, #0x14]
moveq r4, #0x1c
cmp r4, sb
ldr sb, [sp, #0x10]
moveq r4, #0x1b
cmp r4, sb
ldr sb, [sp, #0xc]
moveq r4, #0x1a
cmp r4, sb
ldr sb, [sp, #8]
moveq r4, #0x19
cmp r4, sb
ldr sb, [sp, #4]
moveq r4, #0x18
cmp r4, sb
moveq r4, #0x17
sub sb, r4, #0x17
str sb, [sp, #0x2c]
cmp sb, #8
addls pc, pc, sb, lsl #2
b _0201FEAC
_0201FCF4: ; jump table
b _0201FE80 ; case 0
b _0201FE54 ; case 1
b _0201FE28 ; case 2
b _0201FDFC ; case 3
b _0201FDC8 ; case 4
b _0201FD9C ; case 5
b _0201FD70 ; case 6
b _0201FD44 ; case 7
b _0201FD18 ; case 8
_0201FD18:
and r5, r5, #0xff
strb r5, [r0, ip]
add r8, r8, #1
add r4, ip, #1
strb r5, [r0, r4]
add r4, ip, #2
strb r5, [r0, r4]
add r4, ip, #3
strb r5, [r0, r4]
add ip, ip, #4
b _0201FF28
_0201FD44:
and r4, r6, #0xff
strb r4, [r0, ip]
add r8, r8, #1
add r6, ip, #1
strb r5, [r0, r6]
add r5, ip, #2
strb r4, [r0, r5]
add r5, ip, #3
strb r4, [r0, r5]
add ip, ip, #4
b _0201FF28
_0201FD70:
strb r7, [r0, ip]
and r5, r5, #0xff
add r8, r8, #1
add r4, ip, #1
strb r5, [r0, r4]
add r4, ip, #2
strb r5, [r0, r4]
add r4, ip, #3
strb r5, [r0, r4]
add ip, ip, #4
b _0201FF28
_0201FD9C:
and r5, r5, #0xff
strb r5, [r0, ip]
add r8, r8, #1
add r4, ip, #1
strb r5, [r0, r4]
add r4, ip, #2
strb r5, [r0, r4]
add r4, ip, #3
strb r7, [r0, r4]
add ip, ip, #4
b _0201FF28
_0201FDC8:
orr r5, fp, r3
add r8, r8, #1
and r4, r5, #0xff
sub r6, r5, #1
strb r4, [r0, ip]
add r5, ip, #1
strb r4, [r0, r5]
add r5, ip, #2
strb r6, [r0, r5]
add r5, ip, #3
strb r4, [r0, r5]
add ip, ip, #4
b _0201FF28
_0201FDFC:
and r4, r7, #0xff
strb r4, [r0, ip]
add r8, r8, #1
add r6, ip, #1
strb r5, [r0, r6]
add r5, ip, #2
strb r4, [r0, r5]
add r5, ip, #3
strb r4, [r0, r5]
add ip, ip, #4
b _0201FF28
_0201FE28:
strb r6, [r0, ip]
and r5, r5, #0xff
add r8, r8, #1
add r4, ip, #1
strb r5, [r0, r4]
add r4, ip, #2
strb r5, [r0, r4]
add r4, ip, #3
strb r5, [r0, r4]
add ip, ip, #4
b _0201FF28
_0201FE54:
and r5, r5, #0xff
strb r5, [r0, ip]
add r8, r8, #1
add r4, ip, #1
strb r5, [r0, r4]
add r4, ip, #2
strb r5, [r0, r4]
add r4, ip, #3
strb r6, [r0, r4]
add ip, ip, #4
b _0201FF28
_0201FE80:
and r4, r5, #0xff
strb r4, [r0, ip]
add r8, r8, #1
add r5, ip, #1
strb r4, [r0, r5]
add r5, ip, #2
strb r6, [r0, r5]
add r5, ip, #3
strb r4, [r0, r5]
add ip, ip, #4
b _0201FF28
_0201FEAC:
ldr r5, [sp]
add r8, r8, #2
ldrb r6, [r5, #1]
sub r5, ip, #0x2000
add r6, r6, fp, lsl #8
add r7, r5, r6, lsl #1
mov r6, #0
b _0201FEE0
_0201FECC:
ldrb r5, [r0, r7]
add r7, r7, #1
add r6, r6, #1
strb r5, [r0, ip]
add ip, ip, #1
_0201FEE0:
cmp r6, r4, lsl #1
blt _0201FECC
b _0201FF28
_0201FEEC:
ldrb r5, [r2, r8]
add r4, r0, ip
ands r5, r5, #0xf
strb r5, [r0, ip]
orrne r5, r5, r3
strneb r5, [r4]
ldrb r5, [r2, r8]
add ip, ip, #2
add r8, r8, #1
and r5, r5, #0xf0
mov r5, r5, asr #4
strb r5, [r4, #1]
ands r5, r5, #0xff
orrne r5, r5, r3
strneb r5, [r4, #1]
_0201FF28:
ldr r4, [sp, #0x30]
add lr, lr, #1
mov r4, r4, lsl #1
str r4, [sp, #0x30]
_0201FF38:
cmp r8, sl
blt _0201FBEC
mov r0, ip
_0201FF44:
add sp, sp, #0x34
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end DecompressAtHalf
arm_func_start DecompressAtFromMemoryPointerVeneer
DecompressAtFromMemoryPointerVeneer: ; 0x0201FF4C
ldr ip, _0201FF54 ; =DecompressAtFromMemoryPointer
bx ip
.align 2, 0
_0201FF54: .word DecompressAtFromMemoryPointer
arm_func_end DecompressAtFromMemoryPointerVeneer
arm_func_start DecompressAtFromMemoryPointer
DecompressAtFromMemoryPointer: ; 0x0201FF58
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x2c
mov r5, r2
ldrb r4, [r5, #5]
ldrb r3, [r5, #6]
ldr r2, _0202046C ; =_022A5038
mov r7, #0
str r0, [r2]
str r0, [r2, #0xc]
str r7, [r2, #4]
str r7, [r2, #8]
ldrb r0, [r5]
mov r6, r1
add r1, r4, r3, lsl #8
cmp r0, #0x50
str r1, [sp, #0x28]
ldreqb r1, [r5, #1]
str r7, [sp, #0x24]
mov sl, #8
cmpeq r1, #0x4b
ldreqb r1, [r5, #2]
cmpeq r1, #0x44
ldreqb r1, [r5, #3]
cmpeq r1, #0x50
bne _0201FFF0
ldrb r1, [r5, #0x10]
ldrb r0, [r5, #0x11]
ldrb r2, [r5, #0x12]
ldrb r3, [r5, #0x13]
add r0, r1, r0, lsl #8
add r0, r0, r2, lsl #16
add r0, r0, r3, lsl #24
cmp r6, #0
cmpne r6, r0
movne r0, r7
bne _02020464
mov r4, #0x14
b _02020060
_0201FFF0:
cmp r0, #0x41
ldreqb r1, [r5, #1]
cmpeq r1, #0x54
ldreqb r1, [r5, #2]
cmpeq r1, #0x34
ldreqb r1, [r5, #3]
cmpeq r1, #0x50
bne _02020034
ldrb r1, [r5, #0x10]
ldrb r0, [r5, #0x11]
cmp r6, #0
add r0, r1, r0, lsl #8
cmpne r6, r0
movne r0, #0
bne _02020464
mov r4, #0x12
b _02020060
_02020034:
cmp r0, #0x41
ldreqb r0, [r5, #1]
cmpeq r0, #0x54
ldreqb r0, [r5, #2]
cmpeq r0, #0x33
ldreqb r0, [r5, #3]
cmpeq r0, #0x50
moveq r4, #0x10
beq _02020060
mov r0, #0
b _02020464
_02020060:
ldrb r0, [r5, #4]
cmp r0, #0x4e
bne _0202009C
mov r4, #0
b _02020084
_02020074:
add r0, r5, r4
ldrb r0, [r0, #7]
bl WriteByteFromMemoryPointer
add r4, r4, #1
_02020084:
ldr r0, [sp, #0x28]
cmp r4, r0
blt _02020074
bl sub_020204CC
mov r0, r4
b _02020464
_0202009C:
ldrb r0, [r5, #7]
ldrb fp, [r5, #8]
ldrb sb, [r5, #9]
add r0, r0, #3
str r0, [sp, #0x20]
add r0, fp, #3
str r0, [sp, #0x1c]
add r0, sb, #3
ldrb r8, [r5, #0xa]
str r0, [sp, #0x18]
ldrb r3, [r5, #0xb]
add r0, r8, #3
str r0, [sp, #0x14]
add r0, r3, #3
ldrb r2, [r5, #0xc]
str r0, [sp, #0x10]
ldrb r1, [r5, #0xd]
add r0, r2, #3
str r0, [sp, #0xc]
add r0, r1, #3
str r0, [sp, #8]
ldrb r0, [r5, #0xe]
ldrb r1, [r5, #0xf]
add r0, r0, #3
str r0, [sp, #4]
add r0, r1, #3
str r0, [sp]
b _02020450
_0202010C:
cmp r6, #0
beq _02020120
cmp r7, r6
movge r0, #0
bge _02020464
_02020120:
cmp sl, #8
ldreqb r0, [r5, r4]
addeq r4, r4, #1
moveq sl, #0
streq r0, [sp, #0x24]
ldr r0, [sp, #0x24]
tst r0, #0x80
bne _02020430
ldrb r2, [r5, r4]
add r0, r5, r4
and r1, r2, #0xf0
mov r1, r1, asr #4
add r8, r1, #3
ldr r1, [sp, #0x20]
and sb, r2, #0xf
cmp r8, r1
ldr r1, [sp, #0x1c]
moveq r8, #0x1f
cmp r8, r1
ldr r1, [sp, #0x18]
moveq r8, #0x1e
cmp r8, r1
ldr r1, [sp, #0x14]
moveq r8, #0x1d
cmp r8, r1
ldr r1, [sp, #0x10]
moveq r8, #0x1c
cmp r8, r1
ldr r1, [sp, #0xc]
moveq r8, #0x1b
cmp r8, r1
ldr r1, [sp, #8]
moveq r8, #0x1a
cmp r8, r1
ldr r1, [sp, #4]
moveq r8, #0x19
cmp r8, r1
ldr r1, [sp]
moveq r8, #0x18
cmp r8, r1
moveq r8, #0x17
sub r1, r8, #0x17
cmp r1, #8
addls pc, pc, r1, lsl #2
b _02020398
_020201D4: ; jump table
b _02020368 ; case 0
b _02020338 ; case 1
b _02020308 ; case 2
b _020202DC ; case 3
b _020202AC ; case 4
b _0202027C ; case 5
b _0202024C ; case 6
b _02020220 ; case 7
b _020201F8 ; case 8
_020201F8:
add r4, r4, #1
orr r0, sb, sb, lsl #4
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
and r0, sb, #0xf
orr r0, r0, r0, lsl #4
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
add r7, r7, #2
b _02020440
_02020220:
add r4, r4, #1
add r0, sb, #1
and r8, r0, #0xf
orr r0, r8, sb, lsl #4
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
orr r0, r8, r8, lsl #4
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
add r7, r7, #2
b _02020440
_0202024C:
add r4, r4, #1
sub r0, sb, #1
and r0, r0, #0xf
orr r0, r0, sb, lsl #4
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
and r0, sb, #0xf
orr r0, r0, r0, lsl #4
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
add r7, r7, #2
b _02020440
_0202027C:
add r4, r4, #1
orr r0, sb, sb, lsl #4
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
sub r0, sb, #1
mov r1, r0, lsl #0x1c
and r0, sb, #0xf
orr r0, r0, r1, lsr #24
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
add r7, r7, #2
b _02020440
_020202AC:
add r4, r4, #1
orr r0, sb, sb, lsl #4
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
mov r1, sb, lsl #0x1c
sub r0, sb, #1
and r0, r0, #0xf
orr r0, r0, r1, lsr #24
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
add r7, r7, #2
b _02020440
_020202DC:
add r4, r4, #1
sub r0, sb, #1
and r8, r0, #0xf
orr r0, r8, sb, lsl #4
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
orr r0, r8, r8, lsl #4
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
add r7, r7, #2
b _02020440
_02020308:
add r4, r4, #1
add r0, sb, #1
and r0, r0, #0xf
orr r0, r0, sb, lsl #4
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
and r0, sb, #0xf
orr r0, r0, r0, lsl #4
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
add r7, r7, #2
b _02020440
_02020338:
add r4, r4, #1
orr r0, sb, sb, lsl #4
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
add r0, sb, #1
mov r1, r0, lsl #0x1c
and r0, sb, #0xf
orr r0, r0, r1, lsr #24
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
add r7, r7, #2
b _02020440
_02020368:
add r4, r4, #1
orr r0, sb, sb, lsl #4
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
mov r1, sb, lsl #0x1c
add r0, sb, #1
and r0, r0, #0xf
orr r0, r0, r1, lsr #24
and r0, r0, #0xff
bl WriteByteFromMemoryPointer
add r7, r7, #2
b _02020440
_02020398:
ldrb r1, [r0, #1]
sub r0, r7, #0x1000
add r4, r4, #2
add r1, r1, sb, lsl #8
add sb, r1, r0
mov fp, #0
b _02020424
_020203B4:
ldr r0, _0202046C ; =_022A5038
ldr r1, [r0, #0xc]
mov r0, sb, asr #1
add r0, sb, r0, lsr #30
mov r0, r0, asr #2
ldr r1, [r1, r0, lsl #2]
and r0, sb, #3
cmp r0, #3
addls pc, pc, r0, lsl #2
b _020203EC
_020203DC: ; jump table
b _020203EC ; case 0
b _020203F4 ; case 1
b _02020400 ; case 2
b _0202040C ; case 3
_020203EC:
and r0, r1, #0xff
b _02020414
_020203F4:
mov r0, r1, lsr #8
and r0, r0, #0xff
b _02020414
_02020400:
mov r0, r1, lsr #0x10
and r0, r0, #0xff
b _02020414
_0202040C:
mov r0, r1, lsr #0x18
and r0, r0, #0xff
_02020414:
bl WriteByteFromMemoryPointer
add r7, r7, #1
add sb, sb, #1
add fp, fp, #1
_02020424:
cmp fp, r8
blt _020203B4
b _02020440
_02020430:
ldrb r0, [r5, r4]
bl WriteByteFromMemoryPointer
add r7, r7, #1
add r4, r4, #1
_02020440:
ldr r0, [sp, #0x24]
add sl, sl, #1
mov r0, r0, lsl #1
str r0, [sp, #0x24]
_02020450:
ldr r0, [sp, #0x28]
cmp r4, r0
blt _0202010C
bl sub_020204CC
mov r0, r7
_02020464:
add sp, sp, #0x2c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0202046C: .word _022A5038
arm_func_end DecompressAtFromMemoryPointer
arm_func_start WriteByteFromMemoryPointer
WriteByteFromMemoryPointer: ; 0x02020470
ldr r1, _020204C4 ; =_022A5038
ldr r2, _020204C8 ; =_020997A4
ldr r3, [r1, #8]
ldr ip, [r1, #4]
ldr r2, [r2, r3, lsl #2]
orr r2, ip, r0, lsl r2
str r2, [r1, #4]
ldr r0, [r1]
str r2, [r0]
ldr r0, [r1, #8]
add r0, r0, #1
str r0, [r1, #8]
cmp r0, #4
bxne lr
ldr r2, [r1]
mov r0, #0
add r2, r2, #4
str r2, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
bx lr
.align 2, 0
_020204C4: .word _022A5038
_020204C8: .word _020997A4
arm_func_end WriteByteFromMemoryPointer
arm_func_start sub_020204CC
sub_020204CC: ; 0x020204CC
ldr r0, _020204E8 ; =_022A5038
ldr r1, [r0, #8]
cmp r1, #0
ldrne r1, [r0, #4]
ldrne r0, [r0]
strne r1, [r0]
bx lr
.align 2, 0
_020204E8: .word _022A5038
arm_func_end sub_020204CC
arm_func_start GetAtSize
GetAtSize: ; 0x020204EC
ldrb r2, [r0]
cmp r2, #0x50
ldreqb r1, [r0, #1]
cmpeq r1, #0x4b
ldreqb r1, [r0, #2]
cmpeq r1, #0x44
ldreqb r1, [r0, #3]
cmpeq r1, #0x50
bne _02020530
ldrb r2, [r0, #0x10]
ldrb r1, [r0, #0x11]
ldrb r3, [r0, #0x12]
ldrb ip, [r0, #0x13]
add r0, r2, r1, lsl #8
add r0, r0, r3, lsl #16
add r0, r0, ip, lsl #24
bx lr
_02020530:
cmp r2, #0x41
ldreqb r1, [r0, #1]
cmpeq r1, #0x54
ldreqb r1, [r0, #2]
cmpeq r1, #0x34
ldreqb r1, [r0, #3]
cmpeq r1, #0x50
ldreqb r1, [r0, #0x10]
ldreqb r0, [r0, #0x11]
addeq r0, r1, r0, lsl #8
bxeq lr
cmp r2, #0x41
ldreqb r1, [r0, #1]
cmpeq r1, #0x54
ldreqb r0, [r0, #2]
cmpeq r0, #0x33
moveq r0, #0
movne r0, #0
bx lr
arm_func_end GetAtSize
arm_func_start sub_0202057C
sub_0202057C: ; 0x0202057C
stmdb sp!, {lr}
sub sp, sp, #0x54
add r0, sp, #0
bl GetDsFirmwareUserSettingsVeneer
ldrsb r0, [sp]
bl sub_020205C0
#ifdef EUROPE
bl sub_0202059C
#endif
add sp, sp, #0x54
ldmia sp!, {pc}
arm_func_end sub_0202057C
arm_func_start sub_0202059C
sub_0202059C: ; 0x0202059C
#ifdef EUROPE
stmdb sp!, {r4, lr}
mov r4, r0
mvn r0, #0
cmp r4, r0
ldmeqia sp!, {r4, pc}
ldr r1, _02020680 ; =LANGUAGE_INFO_DATA
ldr r0, _02020684 ; =_02099C04_EU
ldrsb r1, [r1]
mov r2, r4
bl Debug_Print0
ldr r1, _02020680 ; =LANGUAGE_INFO_DATA
mov r0, r4
strb r4, [r1]
bl sub_020206C0_EU
ldr r1, _02020680 ; =LANGUAGE_INFO_DATA
strb r0, [r1, #1]
ldmia sp!, {r4, pc}
.align 2, 0
_02020680: .word LANGUAGE_INFO_DATA
_02020684: .word _02099C04_EU
#else
bx lr
#endif
arm_func_end sub_0202059C
arm_func_start GetLanguageType
GetLanguageType: ; 0x020205A0
ldr r0, _020205AC ; =LANGUAGE_INFO_DATA
ldrsb r0, [r0, #1]
bx lr
.align 2, 0
_020205AC: .word LANGUAGE_INFO_DATA
arm_func_end GetLanguageType
#ifdef EUROPE
arm_func_start sub_02020698_EU
sub_02020698_EU: ; 0x02020698
and r0, r0, #0xff
cmp r0, #4
movls r0, #1
movhi r0, #0
and r0, r0, #0xff
bx lr
arm_func_end sub_02020698_EU
#endif
arm_func_start GetLanguage
GetLanguage: ; 0x020205B0
ldr r0, _020205BC ; =LANGUAGE_INFO_DATA
ldrsb r0, [r0]
bx lr
.align 2, 0
_020205BC: .word LANGUAGE_INFO_DATA
arm_func_end GetLanguage
#ifdef EUROPE
arm_func_start sub_020206C0_EU
sub_020206C0_EU: ; 0x020206C0
cmp r0, #0
blt _020206D8_EU
cmp r0, #5
ldrlt r1, _020206E0_EU ; =_02099BF0_EU
ldrltsb r0, [r1, r0]
bxlt lr
_020206D8_EU:
mvn r0, #0
bx lr
.align 2, 0
_020206E0_EU: .word _02099BF0_EU
arm_func_end sub_020206C0_EU
#endif
arm_func_start sub_020205C0
sub_020205C0: ; 0x020205C0
cmp r0, #0
blt _020205D8
cmp r0, #9
ldrlt r1, _020205E0 ; =_020997B4
ldrltsb r0, [r1, r0]
bxlt lr
_020205D8:
mvn r0, #0
bx lr
.align 2, 0
_020205E0: .word _020997B4
arm_func_end sub_020205C0
arm_func_start sub_020205E4
sub_020205E4: ; 0x020205E4
stmdb sp!, {r3, lr}
bl sub_0202057C
bl sub_020257FC
bl sub_02023610
ldmia sp!, {r3, pc}
arm_func_end sub_020205E4
arm_func_start sub_020205F8
sub_020205F8: ; 0x020205F8
stmdb sp!, {r3, lr}
bl sub_0200B768
bl LoadStringFile
#ifndef JAPAN
bl sub_0202088C
#endif
ldmia sp!, {r3, pc}
arm_func_end sub_020205F8
arm_func_start sub_0202060C
sub_0202060C: ; 0x0202060C
cmp r0, #0
mvneq r0, #0
bxeq lr
cmp r0, #0x61
blo _0202062C
cmp r0, #0x66
subls r0, r0, #0x57
bxls lr
_0202062C:
cmp r0, #0x41
blo _02020640
cmp r0, #0x46
subls r0, r0, #0x37
bxls lr
_02020640:
cmp r0, #0x30
blo _02020654
cmp r0, #0x39
subls r0, r0, #0x30
bxls lr
_02020654:
mov r0, #0
bx lr
arm_func_end sub_0202060C
arm_func_start sub_0202065C
sub_0202065C: ; 0x0202065C
stmdb sp!, {r4, r5, r6, lr}
mov r4, r0
ldr r6, [r4]
ldrb r0, [r6]
cmp r0, #0x7e
bne _020206C8
ldrb r0, [r6, #1]
bl sub_0202060C
movs r5, r0
addmi r0, r6, #1
strmi r0, [r4]
movmi r0, #0
ldmmiia sp!, {r4, r5, r6, pc}
ldrb r0, [r6, #2]
bl sub_0202060C
cmp r0, #0
addlt r1, r6, #2
movlt r0, r5, lsl #0x10
strlt r1, [r4]
movlt r0, r0, lsr #0x10
ldmltia sp!, {r4, r5, r6, pc}
add r0, r0, r5, lsl #4
add r1, r6, #3
mov r0, r0, lsl #0x10
str r1, [r4]
mov r0, r0, lsr #0x10
ldmia sp!, {r4, r5, r6, pc}
_020206C8:
cmp r0, #0x81
blo _020206D8
cmp r0, #0x84
bls _020206E0
_020206D8:
cmp r0, #0x87
bne _020206F0
_020206E0:
ldrb r1, [r6, #1]!
orr r0, r1, r0, lsl #8
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
_020206F0:
add r1, r6, #1
str r1, [r4]
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_0202065C
arm_func_start sub_020206FC
sub_020206FC: ; 0x020206FC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov sb, r1
ldr r5, [sb]
mov sl, r0
ldrb r0, [r5]
mov r8, r2
ldr r4, [sl]
cmp r0, #0x7e
bne _020207F0
ldrb r0, [r5, #1]
mov r6, #0
bl sub_0202060C
movs r7, r0
bpl _02020754
ldrb r2, [r5]
add r1, r4, #1
add r0, r5, #1
strb r2, [r4]
str r1, [sl]
str r0, [sb]
mov r0, r6
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_02020754:
add r0, r4, #1
cmp r0, r8
ldrb r0, [r5, #2]
moveq r6, #1
bl sub_0202060C
cmp r0, #0
bge _020207A4
cmp r6, #0
bne _02020790
ldrb r1, [r5]
add r0, r4, #2
strb r1, [r4]
ldrb r1, [r5, #1]
strb r1, [r4, #1]
str r0, [sl]
_02020790:
add r1, r5, #2
mov r0, r7, lsl #0x10
str r1, [sb]
mov r0, r0, lsr #0x10
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_020207A4:
add r1, r4, #2
cmp r1, r8
moveq r6, #1
cmp r6, #0
bne _020207D8
ldrb r2, [r5]
add r1, r4, #3
strb r2, [r4]
ldrb r2, [r5, #1]
strb r2, [r4, #1]
ldrb r2, [r5, #2]
strb r2, [r4, #2]
str r1, [sl]
_020207D8:
add r0, r0, r7, lsl #4
add r1, r5, #3
mov r0, r0, lsl #0x10
str r1, [sb]
mov r0, r0, lsr #0x10
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_020207F0:
cmp r0, #0x81
blo _02020800
cmp r0, #0x84
bls _02020808
_02020800:
cmp r0, #0x87
bne _02020850
_02020808:
ldrb r2, [r5, #1]
add r1, r4, #1
cmp r1, r8
orr r0, r2, r0, lsl #8
mov r0, r0, lsl #0x10
addeq r1, r5, #2
mov r0, r0, lsr #0x10
streq r1, [sb]
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
ldrb r3, [r5]
add r2, r5, #2
add r1, r4, #2
strb r3, [r4]
ldrb r3, [r5, #1]
strb r3, [r4, #1]
str r2, [sb]
str r1, [sl]
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_02020850:
strb r0, [r4]
add r1, r5, #1
str r1, [sb]
add r1, r4, #1
str r1, [sl]
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
arm_func_end sub_020206FC
arm_func_start sub_02020868
sub_02020868: ; 0x02020868
b _02020870
_0202086C:
add r0, r0, #1
_02020870:
ldrb r1, [r0]
cmp r1, #0
bne _0202086C
bx lr
arm_func_end sub_02020868
arm_func_start sub_02020880
sub_02020880: ; 0x02020880
ldr ip, _02020888 ; =strstr
bx ip
.align 2, 0
_02020888: .word strstr
arm_func_end sub_02020880
#ifndef JAPAN
arm_func_start sub_0202088C
sub_0202088C: ; 0x0202088C
#ifdef EUROPE
stmdb sp!, {r3, lr}
bl GetLanguage
ldr r1, _020209E0 ; =_020B05B0_EU
mov r2, r0, lsl #1
ldrh r2, [r1, r2]
ldr r1, _020209E4 ; =_020B05AC_EU
cmp r0, #2
strh r2, [r1]
strh r2, [r1, #2]
moveq r0, #0x2e
streqh r0, [r1]
ldmia sp!, {r3, pc}
.align 2, 0
_020209E0: .word _020B05B0_EU
_020209E4: .word _020B05AC_EU
#else
bx lr
#endif
arm_func_end sub_0202088C
#endif
arm_func_start sub_02020890
sub_02020890: ; 0x02020890
cmp r1, #0
beq _020208C0
ldr ip, [r0]
_0202089C:
cmp ip, r2
moveq r0, #0
streqb r0, [r2, #-1]
bxeq lr
ldrb r3, [r1], #1
cmp r3, #0
strneb r3, [ip], #1
bne _0202089C
str ip, [r0]
_020208C0:
mov r0, #1
bx lr
arm_func_end sub_02020890
arm_func_start StrcmpTag
StrcmpTag: ; 0x020208C8
ldrb r2, [r1], #1
ldrb r3, [r0], #1
cmp r2, #0
bne _020208F0
cmp r3, #0
cmpne r3, #0x3a
cmpne r3, #0x5d
moveq r0, #1
movne r0, #0
bx lr
_020208F0:
cmp r3, #0
moveq r0, #0
bxeq lr
cmp r3, r2
beq StrcmpTag
mov r0, #0
bx lr
arm_func_end StrcmpTag
arm_func_start AtoiTag
AtoiTag: ; 0x0202090C
mov r3, #0
mov r1, #0xa
_02020914:
ldrb r2, [r0], #1
cmp r2, #0
cmpne r2, #0x3a
cmpne r2, #0x5d
moveq r0, r3
bxeq lr
cmp r2, #0x30
blo _02020914
cmp r2, #0x39
mlals r2, r3, r1, r2
subls r3, r2, #0x30
b _02020914
arm_func_end AtoiTag
arm_func_start sub_02020944
sub_02020944: ; 0x02020944
bx lr
arm_func_end sub_02020944
arm_func_start sub_02020948
sub_02020948: ; 0x02020948
stmdb sp!, {r4, lr}
ldrb r4, [r0]
cmp r4, #0x41
blo _02020A24
cmp r4, #0x5a
bhi _02020A24
add r0, r0, #1
bl AtoiTag
mov r0, r0, lsl #0x10
cmp r4, #0x49
mov r0, r0, asr #0x10
bgt _0202099C
cmp r4, #0x48
blt _02020990
beq _020209DC
cmp r4, #0x49
beq _02020A0C
b _02020A1C
_02020990:
cmp r4, #0x42
ldmeqia sp!, {r4, pc}
b _02020A1C
_0202099C:
cmp r4, #0x52
bgt _020209AC
beq _020209EC
b _02020A1C
_020209AC:
cmp r4, #0x54
bgt _02020A1C
cmp r4, #0x53
blt _02020A1C
beq _020209CC
cmp r4, #0x54
beq _020209FC
b _02020A1C
_020209CC:
add r0, r0, #0x21
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r4, pc}
_020209DC:
add r0, r0, #0x29
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r4, pc}
_020209EC:
add r0, r0, #0x32
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r4, pc}
_020209FC:
add r0, r0, #0x3c
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r4, pc}
_02020A0C:
add r0, r0, #0x43
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r4, pc}
_02020A1C:
mvn r0, #0
ldmia sp!, {r4, pc}
_02020A24:
cmp r4, #0x30
blo _02020A44
cmp r4, #0x39
bhi _02020A44
bl AtoiTag
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
ldmia sp!, {r4, pc}
_02020A44:
mvn r0, #0
ldmia sp!, {r4, pc}
arm_func_end sub_02020948
arm_func_start sub_02020A4C
sub_02020A4C: ; 0x02020A4C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl GetLanguageType
cmp r0, #3
ldreq r4, _02020A94 ; =_0209995C
ldrne r4, _02020A98 ; =_0209990C
b _02020A80
_02020A68:
mov r0, r5
bl StrcmpTag
cmp r0, #0
ldrneh r0, [r4, #4]
ldmneia sp!, {r3, r4, r5, pc}
add r4, r4, #8
_02020A80:
ldr r1, [r4]
cmp r1, #0
bne _02020A68
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02020A94: .word _0209995C
_02020A98: .word _0209990C
arm_func_end sub_02020A4C
arm_func_start sub_02020A9C
sub_02020A9C: ; 0x02020A9C
stmdb sp!, {r4, r5, r6, lr}
mov r4, r0
mov r6, r1
mov r5, r2
mov lr, r4
mov ip, #5
_02020AB4:
ldmia r6!, {r0, r1, r2, r3}
stmia lr!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _02020AB4
ldr r0, [r6]
str r0, [lr]
str r5, [r4, #0x54]
ldr r2, [r4, #0x20]
cmp r2, #0
beq _02020AE8
ldr r0, [r4, #0x54]
add r1, r4, #8
blx r2
_02020AE8:
mov r0, #0
str r0, [r4, #0x58]
mov r0, #0x78
mov r1, #0x3c
str r0, [r4, #0x6c]
mov r0, r4
str r1, [r4, #0x70]
sub r1, r1, #0x3d
str r1, [r4, #0x74]
bl sub_02020B14
ldmia sp!, {r4, r5, r6, pc}
arm_func_end sub_02020A9C
arm_func_start sub_02020B14
sub_02020B14: ; 0x02020B14
mov r3, #0
str r3, [r0, #0x5c]
strb r3, [r0, #0x9d]
ldr r2, [r0]
ldr r1, [r0, #4]
str r2, [r0, #0x90]
str r1, [r0, #0x94]
mov r2, r3
_02020B34:
add r1, r0, r3
add r3, r3, #1
strb r2, [r1, #0x99]
cmp r3, #4
blt _02020B34
bx lr
arm_func_end sub_02020B14
arm_func_start sub_02020B4C
sub_02020B4C: ; 0x02020B4C
ldr r2, [r1]
ldr r1, [r1, #4]
str r2, [r0, #0x10]
str r1, [r0, #0x14]
bx lr
arm_func_end sub_02020B4C
arm_func_start sub_02020B60
sub_02020B60: ; 0x02020B60
ldr r2, [r1]
ldr r1, [r1, #4]
str r2, [r0, #0x90]
str r1, [r0, #0x94]
bx lr
arm_func_end sub_02020B60
arm_func_start sub_02020B74
sub_02020B74: ; 0x02020B74
stmdb sp!, {r3, lr}
mov r2, r0
strb r1, [r2, #0x98]
ldr r0, [r2, #0x54]
ldr r2, [r2, #0x30]
and r1, r1, #0xff
blx r2
ldmia sp!, {r3, pc}
arm_func_end sub_02020B74
arm_func_start sub_02020B94
sub_02020B94: ; 0x02020B94
stmdb sp!, {r3, lr}
mov r2, r0
strb r1, [r2, #0x98]
strb r1, [r2, #0x9c]
ldrb r1, [r2, #0x98]
ldr r0, [r2, #0x54]
ldr r2, [r2, #0x30]
blx r2
ldmia sp!, {r3, pc}
arm_func_end sub_02020B94
arm_func_start sub_02020BB8
sub_02020BB8: ; 0x02020BB8
str r1, [r0, #0x6c]
str r2, [r0, #0x70]
bx lr
arm_func_end sub_02020BB8
arm_func_start sub_02020BC4
sub_02020BC4: ; 0x02020BC4
stmdb sp!, {r4, lr}
mov r4, r0
tst r1, #0x400
movne r0, #1
moveq r0, #0
strh r1, [r4, #0x60]
strb r0, [r4, #0x62]
tst r1, #2
movne r0, #3
strne r0, [r4, #0x5c]
bne _02020C50
tst r1, #4
beq _02020C14
mov r0, #3
str r0, [r4, #0x5c]
ldr r1, [r4]
ldr r0, [r4, #4]
str r1, [r4, #0x90]
str r0, [r4, #0x94]
b _02020C50
_02020C14:
ldr r0, [r4, #0x5c]
cmp r0, #1
movne r0, #3
strne r0, [r4, #0x5c]
bne _02020C40
ldr r1, [r4, #0x6c]
mov r0, #0xc
str r1, [r4, #0x7c]
str r0, [r4, #0x5c]
mov r0, #1
strb r0, [r4, #0x9d]
_02020C40:
ldr r1, [r4]
ldr r0, [r4, #4]
str r1, [r4, #0x90]
str r0, [r4, #0x94]
_02020C50:
str r2, [r4, #0x88]
str r2, [r4, #0x84]
mov r1, #0
strh r1, [r4, #0x8c]
str r1, [r4, #0xa4]
strb r1, [r4, #0xa8]
add r2, r4, #0xac
mov r0, r1
_02020C70:
add r1, r1, #1
cmp r1, #4
strb r0, [r2], #0x18
blt _02020C70
mov r1, #0x44
strb r1, [r4, #0x98]
str r0, [r4, #0xa0]
bl Debug_GetDebugFlag
cmp r0, #0
movne r0, #4
moveq r0, #1
str r0, [r4, #0x64]
mov r0, #1
str r0, [r4, #0x68]
mov r0, #0
str r0, [r4, #0x78]
str r0, [r4, #0x7c]
str r0, [r4, #0x80]
ldrb r1, [r4, #0x98]
ldr r0, [r4, #0x54]
ldr r2, [r4, #0x30]
blx r2
ldmia sp!, {r4, pc}
arm_func_end sub_02020BC4
arm_func_start sub_02020CCC
sub_02020CCC: ; 0x02020CCC
ldr r1, [r0, #0x5c]
cmp r1, #1
bne _02020CF4
ldr r2, [r0, #0x6c]
mov r1, #0xb
str r2, [r0, #0x7c]
str r1, [r0, #0x5c]
mov r1, #1
strb r1, [r0, #0x9d]
bx lr
_02020CF4:
cmp r1, #0x10
bxeq lr
ldr r2, [r0, #0x6c]
mov r1, #0xe
str r2, [r0, #0x7c]
str r1, [r0, #0x5c]
mov r1, #1
strb r1, [r0, #0x9d]
bx lr
arm_func_end sub_02020CCC
arm_func_start sub_02020D18
sub_02020D18: ; 0x02020D18
ldr r1, [r0, #0x5c]
cmp r1, #1
bxne lr
ldr r2, [r0, #0x6c]
mov r1, #0xd
str r2, [r0, #0x7c]
str r1, [r0, #0x5c]
mov r1, #1
strb r1, [r0, #0x9d]
bx lr
arm_func_end sub_02020D18
arm_func_start sub_02020D40
sub_02020D40: ; 0x02020D40
ldr r1, [r0, #0x5c]
cmp r1, #1
moveq r1, #2
streq r1, [r0, #0x5c]
bx lr
arm_func_end sub_02020D40
arm_func_start sub_02020D54
sub_02020D54: ; 0x02020D54
ldr r0, [r0, #0x5c]
bx lr
arm_func_end sub_02020D54
arm_func_start sub_02020D5C
sub_02020D5C: ; 0x02020D5C
ldr r0, [r0, #0x5c]
cmp r0, #0
cmpne r0, #1
cmpne r0, #2
cmpne r0, #0x10
moveq r0, #0
movne r0, #1
bx lr
arm_func_end sub_02020D5C
arm_func_start sub_02020D7C
sub_02020D7C: ; 0x02020D7C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r4, #0
mov ip, #0x18
b _02020DB8
_02020D94:
mla r0, r4, ip, r7
mov r5, r6
add lr, r0, #0xac
ldmia lr!, {r0, r1, r2, r3}
stmia r5!, {r0, r1, r2, r3}
ldmia lr, {r0, r1}
stmia r5, {r0, r1}
add r6, r6, #0x18
add r4, r4, #1
_02020DB8:
ldr r0, [r7, #0xa4]
cmp r4, r0
blt _02020D94
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end sub_02020D7C
arm_func_start AnalyzeText
AnalyzeText: ; 0x02020DC8
#ifdef EUROPE
#define ANALYZE_TEXT_STACK_OFFSET 8
#define ANALYZE_TEXT_LOAD_OFFSET -0x10
#else
#define ANALYZE_TEXT_STACK_OFFSET 0
#define ANALYZE_TEXT_LOAD_OFFSET 0
#endif
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x84 + ANALYZE_TEXT_STACK_OFFSET
mov r4, r0
ldr r0, [r4, #0x78]
add r0, r0, #1
str r0, [r4, #0x78]
ldr r0, [r4, #0x5c]
cmp r0, #0x10
addls pc, pc, r0, lsl #2
b _02021EC4
_02020DF0: ; jump table
b _02021EC4 ; case 0
b _02021EC4 ; case 1
b _02021EC4 ; case 2
b _02020E34 ; case 3
b _02020EC4 ; case 4
b _02020E4C ; case 5
b _02020E4C ; case 6
b _02021C90 ; case 7
b _02021CE4 ; case 8
b _02021CE4 ; case 9
b _02021CE4 ; case 10
b _02021CE4 ; case 11
b _02021CE4 ; case 12
b _02021CE4 ; case 13
b _02021E90 ; case 14
b _02021E9C ; case 15
b _02021EC4 ; case 16
_02020E34:
ldrh r0, [r4, #0x60]
tst r0, #0x8000
bne _02020E4C
ldr r0, [r4, #0x54]
ldr r1, [r4, #0x28]
blx r1
_02020E4C:
ldr r1, [r4, #0x5c]
sub r0, r1, #5
cmp r0, #1
bhi _02020EBC
cmp r1, #5
bne _02020E74
ldrh r0, [r4, #0x60]
tst r0, #0x1000
beq _02020E74
bl sub_02017CEC
_02020E74:
ldrh r0, [r4, #0x60]
tst r0, #0x20
bne _02020EA8
tst r0, #0x800
beq _02020EA8
ldr r0, [r4, #0x54]
ldr r1, [r4, #0x18]
blx r1
cmp r0, #0
movne r0, #1
strneb r0, [r4, #0x62]
movne r0, #0
strne r0, [r4, #0x7c]
_02020EA8:
ldr r0, [r4, #0x7c]
sub r0, r0, #1
str r0, [r4, #0x7c]
cmp r0, #0
bgt _02021EC4
_02020EBC:
mov r0, #4
str r0, [r4, #0x5c]
_02020EC4:
ldrb r0, [r4, #0x62]
cmp r0, #0
movne r0, #0x400
ldreq r0, [r4, #0x64]
str r0, [r4, #0x80]
mov r0, #0
str r0, [r4, #0x7c]
b _02021BFC
_02020EE4:
ldr r0, [r4, #0x88]
ldrb r0, [r0]
strh r0, [r4, #0x8c]
cmp r0, #0x5b
bne _02021AB4
ldr r0, [r4, #0x88]
ldrb r5, [r0]
strh r5, [r4, #0x8c]
cmp r5, #0x5b
bne _02021A70
ldr r0, [r4, #0x88]
mov r6, #1
add r0, r0, #1
str r0, [r4, #0x88]
str r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
add r0, sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET
_02020F24:
ldr r1, [r4, #0x88]
mov r2, r1
add r1, r1, #1
str r1, [r4, #0x88]
ldrb r1, [r2]
cmp r1, #0x5d
beq _02020F54
cmp r1, #0x3a
ldreq r1, [r4, #0x88]
streq r1, [r0, r6, lsl #2]
addeq r6, r6, #1
b _02020F24
_02020F54:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldrb r7, [r0]
cmp r7, #0x41
blo _02021A38
cmp r7, #0x5a
bhi _02021A38
sub r1, r7, #0x42
cmp r1, #0x15
addls pc, pc, r1, lsl #2
b _02021A10
_02020F7C: ; jump table
b _02020FD4 ; case 0
b _02021040 ; case 1
b _02021A10 ; case 2
b _02021A10 ; case 3
b _0202134C ; case 4
#ifdef EUROPE
b _0202155C ; case 5
#else
b _02021A10 ; case 5
#endif
b _020212F0 ; case 6
b _02021A10 ; case 7
b _02021A10 ; case 8
b _02021404 ; case 9
b _0202145C ; case 10
b _02021694 ; case 11
b _02021A10 ; case 12
b _02021A10 ; case 13
b _020217C4 ; case 14
b _02021A10 ; case 15
b _02021868 ; case 16
b _020218D8 ; case 17
b _02021A10 ; case 18
b _02021A10 ; case 19
b _02021A10 ; case 20
b _020219AC ; case 21
_02020FD4:
ldr r1, _02021ED0 ; =_020999AC
bl StrcmpTag
cmp r0, #0
beq _02021018
ldr r1, [r4, #8]
ldr r3, [r4, #0x94]
ldr r2, [r4, #0x14]
ldr r0, [r4, #0x54]
ldr r5, [r4, #0x48]
add r2, r3, r2
sub r3, r1, #4
mov r1, #2
blx r5
ldr r0, [r4, #0x94]
add r0, r0, #3
str r0, [r4, #0x94]
b _02021AA0
_02021018:
ldr r0, _02021ED4 ; =_020997E4
ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, [r0, #0xe8]
ldr r0, [r0, #0xe4]
str r1, [sp, #0x6c + ANALYZE_TEXT_STACK_OFFSET]
str r0, [sp, #0x68 + ANALYZE_TEXT_STACK_OFFSET]
ldr r3, [r4, #0x84]
ldr r1, _02021ED8 ; =_020999B0
add r0, sp, #0x68 + ANALYZE_TEXT_STACK_OFFSET
bl Debug_FatalError
_02021040:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021EDC ; =_020999C8
bl StrcmpTag
cmp r0, #0
beq _02021104
cmp r6, #2
bne _02021098
ldrb r1, [r4, #0x9c]
cmp r1, #0
ldrne r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET]
strneb r1, [r4, #0x99]
ldrneb r0, [r0]
strneb r0, [r4, #0x9c]
bne _020210F0
ldrb r0, [r4, #0x98]
strb r0, [r4, #0x99]
ldrb r0, [r4, #0xa8]
cmp r0, #0
ldreq r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET]
ldreqb r0, [r0]
streqb r0, [r4, #0x98]
b _020210F0
_02021098:
cmp r6, #3
bne _020210F0
ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET]
bl AtoiTag
ldrb r2, [r4, #0x9c]
cmp r2, #0
cmpne r0, #3
beq _020210D0
add r1, r4, r0
ldr r0, [sp, #0x78 + ANALYZE_TEXT_STACK_OFFSET]
strb r2, [r1, #0x99]
ldrb r0, [r0]
strb r0, [r4, #0x9c]
b _020210F0
_020210D0:
ldrb r1, [r4, #0x98]
add r0, r4, r0
strb r1, [r0, #0x99]
ldrb r0, [r4, #0xa8]
cmp r0, #0
ldreq r0, [sp, #0x78 + ANALYZE_TEXT_STACK_OFFSET]
ldreqb r0, [r0]
streqb r0, [r4, #0x98]
_020210F0:
ldrb r1, [r4, #0x98]
ldr r0, [r4, #0x54]
ldr r2, [r4, #0x30]
blx r2
b _02021AA0
_02021104:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021EE0 ; =_020999CC
bl StrcmpTag
cmp r0, #0
beq _020211C4
cmp r6, #1
bne _02021158
ldrb r0, [r4, #0x9c]
cmp r0, #0
ldrneb r1, [r4, #0x99]
movne r0, #0
strneb r1, [r4, #0x9c]
strneb r0, [r4, #0x99]
bne _020211B0
ldrb r0, [r4, #0xa8]
cmp r0, #0
ldreqb r0, [r4, #0x99]
streqb r0, [r4, #0x98]
mov r0, #0
strb r0, [r4, #0x99]
b _020211B0
_02021158:
cmp r6, #2
bne _020211B0
ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET]
bl AtoiTag
ldrb r1, [r4, #0x9c]
cmp r1, #0
cmpne r0, #3
beq _02021190
add r2, r4, r0
ldrb r1, [r2, #0x99]
mov r0, #0
strb r1, [r4, #0x9c]
strb r0, [r2, #0x99]
b _020211B0
_02021190:
ldrb r1, [r4, #0xa8]
cmp r1, #0
addeq r1, r4, r0
ldreqb r1, [r1, #0x99]
add r0, r4, r0
streqb r1, [r4, #0x98]
mov r1, #0
strb r1, [r0, #0x99]
_020211B0:
ldrb r1, [r4, #0x98]
ldr r0, [r4, #0x54]
ldr r2, [r4, #0x30]
blx r2
b _02021AA0
_020211C4:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021EE4 ; =_020999D0
bl StrcmpTag
cmp r0, #0
beq _02021200
ldr r0, [r4, #0x88]
ldr r1, [r4, #0x38]
ldr r2, [r4, #0x3c]
bl sub_02022118
ldr r1, [r4, #8]
sub r0, r1, r0
add r0, r0, r0, lsr #31
mov r0, r0, asr #1
str r0, [r4, #0x90]
b _02021AA0
_02021200:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021EE8 ; =_020999D4
bl StrcmpTag
cmp r0, #0
beq _02021278
ldr r0, [r4, #0xc]
mov r1, #1
str r0, [r4, #0x94]
str r1, [r4, #0xa0]
mov r0, #9
str r0, [r4, #0x5c]
strb r1, [r4, #0x9d]
ldr r0, [r4, #0x88]
ldrb r0, [r0]
cmp r0, #0xd
cmpne r0, #0xa
bne _02021260
ldr r0, [r4, #0x88]
add r0, r0, #1
str r0, [r4, #0x88]
ldrh r0, [r4, #0x60]
tst r0, #0x40
movne r0, #7
strne r0, [r4, #0x5c]
_02021260:
ldrh r0, [r4, #0x60]
tst r0, #0x80
movne r0, #7
strne r0, [r4, #0x5c]
mov r0, #1
b _02021AA4
_02021278:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021EEC ; =_020999D8
bl StrcmpTag
cmp r0, #0
beq _0202129C
ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET]
bl AtoiTag
str r0, [r4, #0x90]
b _02021AA0
_0202129C:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021EF0 ; =_020999E4
bl StrcmpTag
cmp r0, #0
beq _020212C8
ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET]
bl AtoiTag
ldr r1, [r4, #0x90]
add r0, r1, r0
str r0, [r4, #0x90]
b _02021AA0
_020212C8:
ldr r0, _02021ED4 ; =_020997E4
ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, [r0, #0xf8 - ANALYZE_TEXT_STACK_OFFSET]
ldr r0, [r0, #0xf4 - ANALYZE_TEXT_STACK_OFFSET]
str r1, [sp, #0x64 + ANALYZE_TEXT_STACK_OFFSET]
str r0, [sp, #0x60 + ANALYZE_TEXT_STACK_OFFSET]
ldr r3, [r4, #0x84]
ldr r1, _02021ED8 ; =_020999B0
add r0, sp, #0x60 + ANALYZE_TEXT_STACK_OFFSET
bl Debug_FatalError
_020212F0:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021EF4 ; =_020999F0
bl StrcmpTag
cmp r0, #0
beq _02021324
ldr r0, [r4]
str r0, [r4, #0x90]
ldr r0, [r4, #0x14]
ldr r1, [r4, #0x94]
add r0, r0, r0, lsr #31
add r0, r1, r0, asr #1
str r0, [r4, #0x94]
b _02021AA0
_02021324:
ldr r0, _02021ED4 ; =_020997E4
ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, [r0, #0x100]
ldr r0, [r0, #0xfc]
str r1, [sp, #0x5c + ANALYZE_TEXT_STACK_OFFSET]
str r0, [sp, #0x58 + ANALYZE_TEXT_STACK_OFFSET]
ldr r3, [r4, #0x84]
ldr r1, _02021ED8 ; =_020999B0
add r0, sp, #0x58 + ANALYZE_TEXT_STACK_OFFSET
bl Debug_FatalError
_0202134C:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021EF8 ; =_020999F4
bl StrcmpTag
cmp r0, #0
beq _020213A8
ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET]
bl sub_02020A4C
movs r3, r0
beq _020213F4
ldr r0, [r4, #0x54]
ldr r1, [r4, #0x90]
ldr r2, [r4, #0x94]
ldr r5, [r4, #0x40]
blx r5
ldr r1, [r4, #0x90]
add r0, r1, r0
str r0, [r4, #0x90]
ldr r0, [r4, #0x68]
str r0, [r4, #0x7c]
ldr r0, [r4, #0x80]
sub r0, r0, #1
str r0, [r4, #0x80]
b _020213F4
_020213A8:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021EFC ; =_020999F8
bl StrcmpTag
cmp r0, #0
beq _020213CC
ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET]
bl AtoiTag
str r0, [r4, #0x58]
b _020213F4
_020213CC:
ldr r0, _02021ED4 ; =_020997E4
ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
#ifdef EUROPE
ldr r1, [r0, #0x108]
ldr r0, [r0, #0x104]
str r1, [sp, #0x5c]
str r0, [sp, #0x58]
ldr r3, [r4, #0x84]
ldr r1, _02021ED8 ; =_020999B0
add r0, sp, #0x58
bl Debug_FatalError
_020213F4:
ldr r0, [r4, #0x58]
ldr r1, [r4, #0x34]
blx r1
b _02021AA0
_0202155C:
ldr r1, _020220C4 ; =_02099E64_EU
bl StrcmpTag
cmp r0, #0
beq _02021598
ldr r1, _020220C8 ; =_020B05AC_EU
ldr r0, [r4, #0x54]
ldrh r3, [r1]
ldr r1, [r4, #0x90]
ldr r2, [r4, #0x94]
ldr r5, [r4, #0x40]
blx r5
ldr r0, [r4, #0x90]
add r0, r0, #6
str r0, [r4, #0x90]
b _02021AA0
_02021598:
ldr r0, _02021ED4 ; =_020997E4
ldr r2, [sp, #0x78]
ldr r1, [r0, #0x90]
ldr r0, [r0, #0x8c]
str r1, [sp, #0x54]
str r0, [sp, #0x50]
ldr r3, [r4, #0x84]
ldr r1, _02021ED8 ; =_020999B0
add r0, sp, #0x50
bl Debug_FatalError
_02021404:
ldr r0, [sp, #0x78]
#else
ldr r1, [r0, #0xa0]
ldr r0, [r0, #0x9c]
str r1, [sp, #0x54]
str r0, [sp, #0x50]
ldr r3, [r4, #0x84]
ldr r1, _02021ED8 ; =_020999B0
add r0, sp, #0x50
bl Debug_FatalError
_020213F4:
ldr r0, [r4, #0x58]
ldr r1, [r4, #0x34]
blx r1
b _02021AA0
_02021404:
#endif
ldr r1, _02021F00 ; =_020999FC
bl StrcmpTag
cmp r0, #0
beq _02021434
ldrh r0, [r4, #0x60]
tst r0, #1
bne _02021AA0
mov r0, #8
str r0, [r4, #0x5c]
mov r0, #1
strb r0, [r4, #0x9d]
b _02021AA4
_02021434:
ldr r0, _02021ED4 ; =_020997E4
ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, [r0, #0x98 + ANALYZE_TEXT_LOAD_OFFSET]
ldr r0, [r0, #0x94 + ANALYZE_TEXT_LOAD_OFFSET]
str r1, [sp, #0x4c]
str r0, [sp, #0x48]
ldr r3, [r4, #0x84]
ldr r1, _02021ED8 ; =_020999B0
add r0, sp, #0x48
bl Debug_FatalError
_0202145C:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021F04 ; =_02099A00
bl StrcmpTag
cmp r0, #0
beq _020214E8
ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET]
bl AtoiTag
ldr r2, [r4, #0xa4]
mov r1, #0x18
mul r3, r2, r1
add r2, r4, #0xac
mov r1, #1
strb r1, [r2, r3]
add r3, r2, r3
strh r0, [r3, #2]
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r2, [r4, #0x94]
ldr r1, [r4, #0x90]
sub r0, r0, #1
str r1, [r3, #0xc]
str r2, [r3, #0x10]
ldr r1, [r3, #0xc]
stmib r3, {r1, r2}
str r0, [r3, #0x14]
ldrh r0, [r4, #0x60]
tst r0, #0x100
bne _02021AA0
ldrb r0, [r4, #0x98]
mov r1, #0x54
strb r0, [r4, #0xa8]
strb r1, [r4, #0x98]
ldr r0, [r4, #0x54]
ldr r2, [r4, #0x30]
blx r2
b _02021AA0
_020214E8:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021F08 ; =_02099A04
bl StrcmpTag
cmp r0, #0
beq _02021588
ldr r3, [r4, #0xa4]
add r1, r4, #0xac
mov r0, #0x18
mla r2, r3, r0, r1
add r0, r3, #1
str r0, [r4, #0xa4]
ldr r1, [r4, #0x90]
ldr r0, [r4, #0x94]
str r1, [r2, #0xc]
str r0, [r2, #0x10]
ldr r0, [r2, #0xc]
sub r0, r0, #1
str r0, [r2, #0xc]
ldr r0, [r4, #0x14]
ldr r1, [r2, #0x10]
sub r0, r0, #1
add r0, r1, r0
str r0, [r2, #0x10]
ldrb r0, [r4, #0xa8]
cmp r0, #0
beq _0202156C
strb r0, [r4, #0x98]
mov r0, #0
strb r0, [r4, #0xa8]
ldrb r1, [r4, #0x98]
ldr r0, [r4, #0x54]
ldr r2, [r4, #0x30]
blx r2
_0202156C:
ldrh r0, [r4, #0x60]
tst r0, #0x100
beq _02021AA0
mov r0, #7
str r0, [r4, #0x5c]
mov r0, #1
b _02021AA4
_02021588:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021F0C ; =_02099A08
bl StrcmpTag
cmp r0, #0
beq _0202166C
ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET]
bl AtoiTag
mov r5, r0
ldr r0, [sp, #0x78 + ANALYZE_TEXT_STACK_OFFSET]
bl AtoiTag
mov r6, r0
ldr r0, _02021F10 ; =_020997E4
mov r1, r5, lsl #1
mov r7, #0
ldrh sb, [r0, r1]
mov r5, r7
b _02021654
_020215CC:
ldr r1, [r4, #0x38]
mov r0, sb
mov r8, r5
blx r1
ldr r2, [r4, #0x90]
ldr r1, [r4, #8]
add r0, r2, r0
cmp r0, r1
ble _02021608
ldr r0, [r4]
str r0, [r4, #0x90]
ldr r1, [r4, #0x94]
ldr r0, [r4, #0x14]
add r0, r1, r0
str r0, [r4, #0x94]
_02021608:
ldrb r0, [r4, #0x98]
cmp r0, #0x54
beq _02021630
ldr r0, [r4, #0x54]
ldr r1, [r4, #0x90]
ldr r2, [r4, #0x94]
ldr r8, [r4, #0x40]
mov r3, sb
blx r8
mov r8, r0
_02021630:
ldr r0, [r4, #0x90]
add r7, r7, #1
add r0, r0, r8
str r0, [r4, #0x90]
ldr r0, [r4, #0x68]
str r0, [r4, #0x7c]
ldr r0, [r4, #0x80]
sub r0, r0, #1
str r0, [r4, #0x80]
_02021654:
cmp r7, r6
blt _020215CC
ldr r0, [r4, #0x90]
add r0, r0, #1
str r0, [r4, #0x90]
b _02021AA0
_0202166C:
ldr r0, _02021ED4 ; =_020997E4
ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, [r0, #0x90 + ANALYZE_TEXT_LOAD_OFFSET]
ldr r0, [r0, #0x8c + ANALYZE_TEXT_LOAD_OFFSET]
str r1, [sp, #0x44]
str r0, [sp, #0x40]
ldr r3, [r4, #0x84]
ldr r1, _02021ED8 ; =_020999B0
add r0, sp, #0x40
bl Debug_FatalError
_02021694:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021F14 ; =_02099A10
bl StrcmpTag
cmp r0, #0
beq _020216F8
ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET]
bl sub_02020948
mov r3, r0
mvn r0, #0
cmp r3, r0
beq _02021AA0
ldr r0, [r4, #0x54]
ldr r1, [r4, #0x90]
ldr r2, [r4, #0x94]
ldr r5, [r4, #0x44]
blx r5
ldr r1, [r4, #0x90]
add r0, r1, r0
str r0, [r4, #0x90]
ldr r0, [r4, #0x68]
str r0, [r4, #0x7c]
ldr r0, [r4, #0x80]
sub r0, r0, #1
str r0, [r4, #0x80]
b _02021AA0
_020216F8:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021F18 ; =_02099A14
bl StrcmpTag
cmp r0, #0
beq _02021728
ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET]
bl AtoiTag
ldr r2, [r4, #0x90]
mov r1, #6
mla r1, r0, r1, r2
str r1, [r4, #0x90]
b _02021AA0
_02021728:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021F1C ; =_02099A18
bl StrcmpTag
cmp r0, #0
beq _02021764
#ifdef EUROPE
ldr r1, _020220C8 ; =_020B05AC_EU
ldr r0, [r4, #0x54]
ldrh r3, [r1, #2]
#else
ldr r0, [r4, #0x54]
#endif
ldr r1, [r4, #0x90]
ldr r2, [r4, #0x94]
ldr r5, [r4, #0x40]
#ifndef EUROPE
mov r3, #0x2c
#endif
blx r5
ldr r0, [r4, #0x90]
add r0, r0, #6
str r0, [r4, #0x90]
b _02021AA0
_02021764:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021F20 ; =_02099A1C
bl StrcmpTag
cmp r0, #0
beq _0202179C
ldrh r0, [r4, #0x60]
tst r0, #1
bne _02021AA0
ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET]
bl AtoiTag
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl sub_02017C50
b _02021AA0
_0202179C:
ldr r0, _02021ED4 ; =_020997E4
ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, [r0, #0x88 + ANALYZE_TEXT_LOAD_OFFSET]
ldr r0, [r0, #0x84 + ANALYZE_TEXT_LOAD_OFFSET]
str r1, [sp, #0x3c]
str r0, [sp, #0x38]
ldr r3, [r4, #0x84]
ldr r1, _02021ED8 ; =_020999B0
add r0, sp, #0x38
bl Debug_FatalError
_020217C4:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021F24 ; =_02099A24
bl StrcmpTag
cmp r0, #0
beq _02021840
ldr r1, [r4, #0xc]
mov r0, #0
str r1, [r4, #0x94]
str r0, [r4, #0xa0]
mov r0, #9
str r0, [r4, #0x5c]
mov r0, #1
strb r0, [r4, #0x9d]
ldr r0, [r4, #0x88]
ldrb r0, [r0]
cmp r0, #0xd
cmpne r0, #0xa
bne _02021828
ldr r0, [r4, #0x88]
add r0, r0, #1
str r0, [r4, #0x88]
ldrh r0, [r4, #0x60]
tst r0, #0x40
movne r0, #7
strne r0, [r4, #0x5c]
_02021828:
ldrh r0, [r4, #0x60]
tst r0, #0x80
movne r0, #7
strne r0, [r4, #0x5c]
mov r0, #1
b _02021AA4
_02021840:
ldr r0, _02021ED4 ; =_020997E4
ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, [r0, #0x80 + ANALYZE_TEXT_LOAD_OFFSET]
ldr r0, [r0, #0x7c + ANALYZE_TEXT_LOAD_OFFSET]
str r1, [sp, #0x34]
str r0, [sp, #0x30]
ldr r3, [r4, #0x84]
ldr r1, _02021ED8 ; =_020999B0
add r0, sp, #0x30
bl Debug_FatalError
_02021868:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021F28 ; =_02099A28
bl StrcmpTag
cmp r0, #0
beq _020218B0
ldr r0, [r4]
str r0, [r4, #0x90]
ldr r1, [r4, #0x94]
ldr r0, [r4, #0x14]
add r0, r1, r0
str r0, [r4, #0x94]
ldrh r0, [r4, #0x60]
tst r0, #0x40
beq _02021AA0
mov r0, #7
str r0, [r4, #0x5c]
mov r0, #1
b _02021AA4
_020218B0:
ldr r0, _02021ED4 ; =_020997E4
ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, [r0, #0x78 + ANALYZE_TEXT_LOAD_OFFSET]
ldr r0, [r0, #0x74 + ANALYZE_TEXT_LOAD_OFFSET]
str r1, [sp, #0x2c]
str r0, [sp, #0x28]
ldr r3, [r4, #0x84]
ldr r1, _02021ED8 ; =_020999B0
add r0, sp, #0x28
bl Debug_FatalError
_020218D8:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021F2C ; =_02099A2C
bl StrcmpTag
cmp r0, #0
beq _02021904
ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET]
bl AtoiTag
ldr r1, [r4, #0x90]
add r0, r1, r0
str r0, [r4, #0x90]
b _02021AA0
_02021904:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021F30 ; =_02099A30
bl StrcmpTag
cmp r0, #0
movne r0, #0x400
strne r0, [r4, #0x80]
bne _02021AA0
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021F34 ; =_02099A34
bl StrcmpTag
cmp r0, #0
beq _0202194C
ldrb r0, [r4, #0x62]
cmp r0, #0
movne r0, #0x400
ldreq r0, [r4, #0x64]
str r0, [r4, #0x80]
b _02021AA0
_0202194C:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021F38 ; =_02099A38
bl StrcmpTag
cmp r0, #0
beq _02021984
ldrh r0, [r4, #0x60]
tst r0, #1
bne _02021AA0
ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET]
bl AtoiTag
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl PlaySeByIdVolumeWrapper
b _02021AA0
_02021984:
ldr r0, _02021ED4 ; =_020997E4
ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, [r0, #0x70 + ANALYZE_TEXT_LOAD_OFFSET]
ldr r0, [r0, #0x6c + ANALYZE_TEXT_LOAD_OFFSET]
str r1, [sp, #0x24]
str r0, [sp, #0x20]
ldr r3, [r4, #0x84]
ldr r1, _02021ED8 ; =_020999B0
add r0, sp, #0x20
bl Debug_FatalError
_020219AC:
ldr r0, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, _02021F3C ; =_02099A40
bl StrcmpTag
cmp r0, #0
beq _020219E8
ldrh r0, [r4, #0x60]
tst r0, #1
bne _02021AA0
ldr r0, [sp, #0x74 + ANALYZE_TEXT_STACK_OFFSET]
bl AtoiTag
str r0, [r4, #0x7c]
mov r0, #6
str r0, [r4, #0x5c]
mov r0, #1
b _02021AA4
_020219E8:
ldr r0, _02021ED4 ; =_020997E4
ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, [r0, #0x68 + ANALYZE_TEXT_LOAD_OFFSET]
ldr r0, [r0, #0x64 + ANALYZE_TEXT_LOAD_OFFSET]
str r1, [sp, #0x1c]
str r0, [sp, #0x18]
ldr r3, [r4, #0x84]
ldr r1, _02021ED8 ; =_020999B0
add r0, sp, #0x18
bl Debug_FatalError
_02021A10:
ldr r0, _02021ED4 ; =_020997E4
ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
#ifdef EUROPE
ldr r1, [r0, #0x40]
ldr r0, [r0, #0x3c]
#else
ldr r1, [r0, #0x60]
ldr r0, [r0, #0x5c]
#endif
str r1, [sp, #0x14]
str r0, [sp, #0x10]
ldr r3, [r4, #0x84]
ldr r1, _02021ED8 ; =_020999B0
add r0, sp, #0x10
bl Debug_FatalError
_02021A38:
cmp r7, #0x61
blo _02021A48
cmp r7, #0x7a
bls _02021AA0
_02021A48:
ldr r0, _02021ED4 ; =_020997E4
ldr r2, [sp, #0x70 + ANALYZE_TEXT_STACK_OFFSET]
ldr r1, [r0, #0x58 + ANALYZE_TEXT_LOAD_OFFSET]
ldr r0, [r0, #0x54 + ANALYZE_TEXT_LOAD_OFFSET]
str r1, [sp, #0xc]
str r0, [sp, #8]
ldr r3, [r4, #0x84]
ldr r1, _02021ED8 ; =_020999B0
add r0, sp, #8
bl Debug_FatalError
_02021A70:
cmp r5, #0x5b
beq _02021AA0
ldr r1, _02021ED4 ; =_020997E4
add r0, sp, #0
#ifdef EUROPE
ldr r2, [r1, #0x98]
ldr r1, [r1, #0x94]
#else
ldr r2, [r1, #0x48]
ldr r1, [r1, #0x44]
#endif
str r2, [sp, #4]
str r1, [sp]
ldr r2, [r4, #0x88]
ldr r3, [r4, #0x84]
ldr r1, _02021F40 ; =_02099A44
bl Debug_FatalError
_02021AA0:
mov r0, #0
_02021AA4:
cmp r0, #0
beq _02021BC4
ldr r1, [r4, #0x5c]
b _02021C10
_02021AB4:
cmp r0, #0
moveq r1, #7
streq r1, [r4, #0x5c]
beq _02021C10
cmp r0, #0xd
cmpne r0, #0xa
bne _02021B0C
ldrh r0, [r4, #0x60]
tst r0, #0x40
movne r1, #7
strne r1, [r4, #0x5c]
bne _02021C10
ldr r0, [r4]
str r0, [r4, #0x90]
ldr r1, [r4, #0x94]
ldr r0, [r4, #0x14]
add r0, r1, r0
str r0, [r4, #0x94]
ldr r0, [r4, #0x88]
add r0, r0, #1
str r0, [r4, #0x88]
b _02021BC4
_02021B0C:
ldr r7, [r4, #0x88]
add r0, r4, #0x88
bl sub_0202065C
strh r0, [r4, #0x8c]
ldr r0, [r4, #0x10]
ldrh r6, [r4, #0x8c]
cmp r0, #0
bne _02021B50
ldr r8, [r4, #0x90]
cmp r6, #0x7f
addeq r5, r8, #6
beq _02021B58
ldr r1, [r4, #0x38]
mov r0, r6
blx r1
add r5, r8, r0
b _02021B58
_02021B50:
ldr r8, [r4, #0x90]
add r5, r8, r0
_02021B58:
ldr r0, [r4, #8]
cmp r5, r0
ble _02021B84
ldr r0, [r4]
str r0, [r4, #0x90]
ldr r1, [r4, #0x94]
ldr r0, [r4, #0x14]
add r0, r1, r0
str r0, [r4, #0x94]
str r7, [r4, #0x88]
b _02021BC4
_02021B84:
ldrb r0, [r4, #0x98]
cmp r0, #0x54
beq _02021BA8
ldr r0, [r4, #0x54]
ldr r2, [r4, #0x94]
ldr r7, [r4, #0x40]
mov r1, r8
mov r3, r6
blx r7
_02021BA8:
str r5, [r4, #0x90]
ldr r0, [r4, #0x68]
str r0, [r4, #0x7c]
ldr r0, [r4, #0x80]
sub r0, r0, #1
str r0, [r4, #0x80]
b _02021BFC
_02021BC4:
ldrh r0, [r4, #0x60]
tst r0, #0x400
bne _02021BFC
ldr r1, [r4, #0x94]
ldr r0, [r4, #0xc]
cmp r1, r0
blt _02021BFC
mov r0, #0
str r0, [r4, #0xa0]
mov r0, #1
mov r1, #9
strb r0, [r4, #0x9d]
str r1, [r4, #0x5c]
b _02021C10
_02021BFC:
ldr r0, [r4, #0x80]
cmp r0, #0
bgt _02020EE4
mov r1, #5
str r1, [r4, #0x5c]
_02021C10:
sub r0, r1, #7
cmp r0, #6
addls pc, pc, r0, lsl #2
b _02021C74
_02021C20: ; jump table
b _02021C54 ; case 0
b _02021C48 ; case 1
b _02021C3C ; case 2
b _02021C74 ; case 3
b _02021C74 ; case 4
b _02021C3C ; case 5
b _02021C3C ; case 6
_02021C3C:
ldr r0, [r4, #0x6c]
str r0, [r4, #0x7c]
b _02021C74
_02021C48:
ldr r0, [r4, #0x70]
str r0, [r4, #0x7c]
b _02021C74
_02021C54:
ldrh r0, [r4, #0x60]
tst r0, #0x4000
bne _02021C6C
ldr r0, [r4, #0x54]
ldr r1, [r4, #0x24]
blx r1
_02021C6C:
mov r0, #7
b _02021EC8
_02021C74:
ldrh r0, [r4, #0x60]
tst r0, #0x4000
bne _02021EC4
ldr r0, [r4, #0x54]
ldr r1, [r4, #0x24]
blx r1
b _02021EC4
_02021C90:
ldrh r0, [r4, #0x60]
tst r0, #0x10
beq _02021CCC
mov r0, #0xa
str r0, [r4, #0x5c]
mov r0, #1
strb r0, [r4, #0x9d]
ldr r1, [r4, #0x74]
cmp r1, #0
ldrge r0, [r4, #0x78]
subge r0, r1, r0
strge r0, [r4, #0x7c]
ldrlt r0, [r4, #0x6c]
strlt r0, [r4, #0x7c]
b _02021EC4
_02021CCC:
tst r0, #0x200
movne r0, #0x10
strne r0, [r4, #0x5c]
moveq r0, #1
streq r0, [r4, #0x5c]
b _02021EC4
_02021CE4:
ldrh r1, [r4, #0x60]
mov r5, #0
tst r1, #8
bne _02021D08
cmp r0, #0xb
cmpne r0, #0xc
cmpne r0, #0xd
movne r5, #1
bne _02021D60
_02021D08:
tst r1, #0x20
beq _02021D24
ldr r0, [r4, #0x7c]
subs r0, r0, #1
str r0, [r4, #0x7c]
movmi r5, #1
b _02021D60
_02021D24:
ldrb r0, [r4, #0x9d]
cmp r0, #0
beq _02021D50
mov r0, #0
strb r0, [r4, #0x9d]
bl sub_02006220
mov r0, #0
bl sub_020063A0
mov r0, #0
bl sub_020063D4
b _02021D60
_02021D50:
ldr r0, [r4, #0x54]
ldr r1, [r4, #0x1c]
blx r1
mov r5, r0
_02021D60:
cmp r5, #0
bne _02021DB0
ldrh r0, [r4, #0x60]
tst r0, #0x20
bne _02021EC4
ldr r0, [r4, #0x5c]
cmp r0, #8
bne _02021D98
ldr r0, [r4, #0x54]
ldr r1, [r4, #0x90]
ldr r2, [r4, #0x94]
ldr r3, [r4, #0x50]
blx r3
b _02021EC4
_02021D98:
mvn r1, #0
ldr r0, [r4, #0x54]
ldr r3, [r4, #0x50]
mov r2, r1
blx r3
b _02021EC4
_02021DB0:
ldr r2, [r4, #0x88]
ldr r0, [r4, #0x54]
ldr r1, [r4, #0x4c]
ldrb r5, [r2]
blx r1
ldr r0, [r4, #0x5c]
cmp r0, #0xb
moveq r0, #0x10
streq r0, [r4, #0x5c]
beq _02021EC4
cmp r0, #0xc
moveq r0, #3
streq r0, [r4, #0x5c]
beq _02021EC4
cmp r0, #0xd
moveq r0, #2
streq r0, [r4, #0x5c]
beq _02021EC4
cmp r5, #0
cmpne r0, #0xa
bne _02021E20
ldrh r0, [r4, #0x60]
tst r0, #0x200
movne r0, #0x10
strne r0, [r4, #0x5c]
moveq r0, #1
streq r0, [r4, #0x5c]
b _02021EC4
_02021E20:
cmp r0, #9
bne _02021E84
ldr r0, [r4]
str r0, [r4, #0x90]
ldr r1, [r4, #0x94]
ldr r0, [r4, #0xc]
cmp r1, r0
blt _02021E78
ldr r0, [r4, #4]
str r0, [r4, #0x94]
ldr r0, [r4, #0xa0]
cmp r0, #0
movne r0, #3
strne r0, [r4, #0x5c]
bne _02021EC4
mov r0, #0xf
str r0, [r4, #0x5c]
ldr r0, [r4, #0xc]
add r0, r0, r0, lsr #31
mov r0, r0, asr #1
str r0, [r4, #0x7c]
b _02021EC4
_02021E78:
mov r0, #4
str r0, [r4, #0x5c]
b _02021EC4
_02021E84:
mov r0, #4
str r0, [r4, #0x5c]
b _02021EC4
_02021E90:
mov r0, #0x10
str r0, [r4, #0x5c]
b _02021EC4
_02021E9C:
ldr r0, [r4, #0x7c]
sub r0, r0, #1
str r0, [r4, #0x7c]
ldr r0, [r4, #0x54]
ldr r1, [r4, #0x2c]
blx r1
ldr r0, [r4, #0x7c]
cmp r0, #0
movle r0, #4
strle r0, [r4, #0x5c]
_02021EC4:
ldr r0, [r4, #0x5c]
_02021EC8:
add sp, sp, #0x84 + ANALYZE_TEXT_STACK_OFFSET
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_02021ED0: .word _020999AC
_02021ED4: .word _020997E4
_02021ED8: .word _020999B0
_02021EDC: .word _020999C8
_02021EE0: .word _020999CC
_02021EE4: .word _020999D0
_02021EE8: .word _020999D4
_02021EEC: .word _020999D8
_02021EF0: .word _020999E4
_02021EF4: .word _020999F0
_02021EF8: .word _020999F4
_02021EFC: .word _020999F8
#ifdef EUROPE
_020220C4: .word _02099E64_EU
_020220C8: .word _020B05AC_EU
#endif
_02021F00: .word _020999FC
_02021F04: .word _02099A00
_02021F08: .word _02099A04
_02021F0C: .word _02099A08
_02021F10: .word _020997E4
_02021F14: .word _02099A10
_02021F18: .word _02099A14
_02021F1C: .word _02099A18
_02021F20: .word _02099A1C
_02021F24: .word _02099A24
_02021F28: .word _02099A28
_02021F2C: .word _02099A2C
_02021F30: .word _02099A30
_02021F34: .word _02099A34
_02021F38: .word _02099A38
_02021F3C: .word _02099A40
_02021F40: .word _02099A44
arm_func_end AnalyzeText
arm_func_start sub_02021F44
sub_02021F44: ; 0x02021F44
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov sb, r1
mov r0, #0
ldr r6, _02022020 ; =_02099A24
ldr r5, _02022024 ; =_020999D4
ldr r4, _02022028 ; =_02099A00
str r0, [sb]
add r7, sp, #0x20
_02021F68:
mov r0, r7
bl sub_0202065C
cmp r0, #0
beq _02022010
cmp r0, #0x5b
bne _02021F68
ldr r8, [sp, #0x20]
add r1, r8, #1
str r1, [sp, #0x20]
_02021F8C:
mov r0, r1
add r1, r1, #1
str r1, [sp, #0x20]
ldrb r0, [r0]
cmp r0, #0x5d
bne _02021F8C
mov r0, r8
mov r1, r6
bl StrcmpTag
cmp r0, #0
bne _02021FCC
mov r0, r8
mov r1, r5
bl StrcmpTag
cmp r0, #0
beq _02021FF0
_02021FCC:
ldr r0, [sp, #0x20]
ldrb r0, [r0]
cmp r0, #0xd
cmpne r0, #0xa
ldreq r0, [sp, #0x20]
addeq r0, r0, #1
streq r0, [sp, #0x20]
ldr r0, [sp, #0x20]
b _02022014
_02021FF0:
mov r0, r8
mov r1, r4
bl StrcmpTag
cmp r0, #0
ldrne r0, [sb]
addne r0, r0, #1
strne r0, [sb]
b _02021F68
_02022010:
mov r0, #0
_02022014:
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_02022020: .word _02099A24
_02022024: .word _020999D4
_02022028: .word _02099A00
arm_func_end sub_02021F44
arm_func_start sub_0202202C
sub_0202202C: ; 0x0202202C
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr r0, [r1, #0x14]
str r0, [sp]
_02022040:
add r0, sp, #0
ldr r4, [sp]
bl sub_0202065C
cmp r0, #0
beq _020220F4
cmp r0, #0x5b
bne _020220DC
ldr r4, [sp]
add r1, r4, #1
str r1, [sp]
_02022068:
mov r0, r1
add r1, r1, #1
str r1, [sp]
ldrb r0, [r0]
cmp r0, #0x5d
bne _02022068
ldr r1, _02022110 ; =_02099A04
mov r0, r4
bl StrcmpTag
cmp r0, #0
bne _020220F4
ldr r1, _02022114 ; =_02099A00
mov r0, r4
bl StrcmpTag
cmp r0, #0
bne _02022040
ldr r2, [sp, #0x10]
mov r0, #0x5b
add r1, r2, #1
str r1, [sp, #0x10]
strb r0, [r2]
_020220BC:
ldr r1, [sp, #0x10]
add r0, r1, #1
str r0, [sp, #0x10]
ldrb r0, [r4], #1
strb r0, [r1]
cmp r0, #0x5d
bne _020220BC
b _02022040
_020220DC:
add r0, sp, #0x10
add r1, sp, #0
mov r2, #0
str r4, [sp]
bl sub_020206FC
b _02022040
_020220F4:
ldr r0, [sp, #0x10]
mov r1, #0
strb r1, [r0]
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_02022110: .word _02099A04
_02022114: .word _02099A00
arm_func_end sub_0202202C
arm_func_start sub_02022118
sub_02022118: ; 0x02022118
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r1
mov r7, r2
mov r4, #0
_0202212C:
add r0, sp, #0x18
bl sub_0202065C
cmp r0, #0
cmpne r0, #0xd
cmpne r0, #0xa
cmpne r0, #0x1b
beq _020223B4
cmp r0, #0x5b
bne _020223A8
ldr r6, [sp, #0x18]
ldr r1, _020223C4 ; =_02099A10
add r2, r6, #1
mov r0, r6
str r2, [sp, #0x18]
mov r5, #0
bl StrcmpTag
cmp r0, #0
bne _020221D8
ldr r1, _020223C8 ; =_020999F4
mov r0, r6
bl StrcmpTag
cmp r0, #0
bne _020221D8
ldr r1, _020223CC ; =_02099A2C
mov r0, r6
bl StrcmpTag
cmp r0, #0
bne _020221D8
ldr r1, _020223D0 ; =_02099A14
mov r0, r6
bl StrcmpTag
cmp r0, #0
bne _020221D8
ldr r1, _020223D4 ; =_02099A18
mov r0, r6
bl StrcmpTag
#ifdef EUROPE
cmp r0, #0
bne _020221D8
ldr r1, _020225D0 ; =_02099E64_EU
mov r0, r6
bl StrcmpTag
#endif
cmp r0, #0
bne _020221D8
ldr r1, _020223D8 ; =_02099A08
mov r0, r6
bl StrcmpTag
cmp r0, #0
beq _02022324
_020221D8:
ldr r1, [sp, #0x18]
_020221DC:
mov r0, r1
add r1, r1, #1
str r1, [sp, #0x18]
ldrb r0, [r0]
cmp r0, #0x3a
bne _02022214
mov r5, r1
_020221F8:
mov r0, r1
add r1, r1, #1
str r1, [sp, #0x18]
ldrb r0, [r0]
cmp r0, #0x5d
bne _020221F8
b _0202221C
_02022214:
cmp r0, #0x5d
bne _020221DC
_0202221C:
ldr r1, _020223C4 ; =_02099A10
mov r0, r6
bl StrcmpTag
cmp r0, #0
beq _02022250
mov r0, r5
bl sub_02020948
mvn r1, #0
cmp r0, r1
beq _0202212C
blx r7
add r4, r4, r0
b _0202212C
_02022250:
ldr r1, _020223C8 ; =_020999F4
mov r0, r6
bl StrcmpTag
cmp r0, #0
beq _02022280
mov r0, r5
bl sub_02020A4C
cmp r0, #0
beq _0202212C
blx r8
add r4, r4, r0
b _0202212C
_02022280:
ldr r1, _020223CC ; =_02099A2C
mov r0, r6
bl StrcmpTag
cmp r0, #0
beq _020222A4
mov r0, r5
bl AtoiTag
add r4, r4, r0
b _0202212C
_020222A4:
ldr r1, _020223D0 ; =_02099A14
mov r0, r6
bl StrcmpTag
cmp r0, #0
beq _020222CC
mov r0, r5
bl AtoiTag
mov r1, #6
mla r4, r0, r1, r4
b _0202212C
_020222CC:
ldr r1, _020223D4 ; =_02099A18
#ifdef EUROPE
mov r0, r6
bl StrcmpTag
cmp r0, #0
addne r4, r4, #6
bne _0202212C
ldr r1, _020225D0 ; =_02099A08
#endif
mov r0, r6
bl StrcmpTag
cmp r0, #0
addne r4, r4, #6
bne _0202212C
mov r6, r5
_020222E8:
ldrb r0, [r6], #1
cmp r0, #0x3a
bne _020222E8
mov r0, r5
bl AtoiTag
mov r5, r0
mov r0, r6
bl AtoiTag
ldr r1, _020223DC ; =_020997E4
mov r2, r5, lsl #1
mov r5, r0
ldrh r0, [r1, r2]
blx r8
mla r4, r5, r0, r4
b _0202212C
_02022324:
ldr r1, [sp, #0x18]
_02022328:
mov r0, r1
add r1, r1, #1
str r1, [sp, #0x18]
ldrb r0, [r0]
cmp r0, #0x5d
bne _02022328
ldrb r0, [r6]
cmp r0, #0x41
blo _0202212C
cmp r0, #0x5a
bhi _0202212C
ldr r1, _020223E0 ; =_02099A24
mov r0, r6
bl StrcmpTag
cmp r0, #0
bne _020223B4
ldr r1, _020223E4 ; =_020999D4
mov r0, r6
bl StrcmpTag
cmp r0, #0
bne _020223B4
ldr r1, _020223E8 ; =_02099A28
mov r0, r6
bl StrcmpTag
cmp r0, #0
bne _020223B4
ldr r1, _020223EC ; =_020999F0
mov r0, r6
bl StrcmpTag
cmp r0, #0
bne _020223B4
b _0202212C
_020223A8:
blx r8
add r4, r4, r0
b _0202212C
_020223B4:
mov r0, r4
ldmia sp!, {r4, r5, r6, r7, r8, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_020223C4: .word _02099A10
_020223C8: .word _020999F4
_020223CC: .word _02099A2C
_020223D0: .word _02099A14
_020223D4: .word _02099A18
#ifdef EUROPE
_020225D0: .word _02099E64_EU
#endif
_020223D8: .word _02099A08
_020223DC: .word _020997E4
_020223E0: .word _02099A24
_020223E4: .word _020999D4
_020223E8: .word _02099A28
_020223EC: .word _020999F0
arm_func_end sub_02022118
; https://decomp.me/scratch/Qhonx
arm_func_start PreprocessString
PreprocessString: ; 0x020223F0
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x1c8
sub sp, sp, #0x400
ldr sl, [sp, #0x5f0]
mov r0, #1
str r0, [sp, #0x10]
mov r0, r0
str r0, [sp, #0xc]
and r0, r3, #0x40
mov sb, r1
str r0, [sp, #8]
and r0, r3, #0x100
ldr r8, [sp, #0x600]
add r4, sl, sb
and fp, r3, #0x2000
str r0, [sp, #4]
_02022434:
ldr r1, [sp, #0x5f0]
cmp r1, r4
moveq r1, #0
moveq r0, sb
streqb r1, [r4, #-1]
beq _0202357C
ldr r0, [sp, #0x5f8]
ldrb r5, [r0]
cmp r5, #0
moveq r0, #0
streqb r0, [r1]
ldreq r0, [sp, #0x5f0]
subeq r0, r0, sl
beq _0202357C
cmp r5, #0xd
cmpne r5, #0xa
bne _02022490
ldr r0, [sp, #8]
cmp r0, #0
bne _02023574
mov r0, #1
str r0, [sp, #0xc]
b _02022554
_02022490:
ldr r0, [sp, #0x10]
cmp r0, #0
beq _0202251C
mov r0, #0
str r0, [sp, #0x10]
str r0, [sp, #0xc]
cmp fp, #0
beq _02022554
ldr r1, [r8, #0x4c]
add r0, sp, #0x1c8
bl sub_02023B68
movs r6, r0
beq _02022554
ldr r1, _0202346C ; =_02099A5C
add r0, sp, #0x5f0
mov r2, r4
bl sub_02020890
cmp r0, #0
moveq r0, sb
beq _0202357C
add r0, sp, #0x5f0
mov r1, r6
mov r2, r4
bl sub_02020890
cmp r0, #0
moveq r0, sb
beq _0202357C
ldr r1, _02023470 ; =_02099A64
add r0, sp, #0x5f0
mov r2, r4
bl sub_02020890
cmp r0, #0
bne _02022554
mov r0, sb
b _0202357C
_0202251C:
ldr r0, [sp, #0xc]
cmp r0, #0
beq _02022554
mov r0, #0
cmp fp, #0
str r0, [sp, #0xc]
beq _02022554
ldr r1, _02023474 ; =_02099A70
add r0, sp, #0x5f0
mov r2, r4
bl sub_02020890
cmp r0, #0
moveq r0, sb
beq _0202357C
_02022554:
cmp r5, #0x5b
bne _02023454
ldr r5, [sp, #0x5f8]
mov r7, #0
add r0, r5, #1
str r0, [sp, #0x5f8]
ldrb r2, [r5, #1]
cmp r2, #0x61
blo _0202332C
cmp r2, #0x7a
bhi _0202332C
str r0, [sp, #0xb4]
mov r6, #1
add r1, sp, #0xb4
_0202258C:
mov r2, r0
add r0, r0, #1
str r0, [sp, #0x5f8]
ldrb r2, [r2]
cmp r2, #0x5d
beq _020225B4
cmp r2, #0x3a
streq r0, [r1, r6, lsl #2]
addeq r6, r6, #1
b _0202258C
_020225B4:
ldr r0, [sp, #0xb4]
ldrb r1, [r0]
sub r1, r1, #0x61
cmp r1, #0x16
addls pc, pc, r1, lsl #2
b _020232C8
_020225CC: ; jump table
b _02022628 ; case 0
b _020226BC ; case 1
b _0202274C ; case 2
b _02022838 ; case 3
b _02022908 ; case 4
b _02022994 ; case 5
b _020229F0 ; case 6
b _02022AD8 ; case 7
b _02022B28 ; case 8
b _020232C8 ; case 9
b _02022B8C ; case 10
b _020232C8 ; case 11
b _02022C64 ; case 12
b _02022BE4 ; case 13
b _020232C8 ; case 14
b _02022D5C ; case 15
b _020232C8 ; case 16
b _02022E30 ; case 17
b _02022EC0 ; case 18
b _02022FA0 ; case 19
b _020232C8 ; case 20
b _0202313C ; case 21
b _0202323C ; case 22
_02022628:
ldr r1, _02023478 ; =_02099A74
bl StrcmpTag
cmp r0, #0
beq _02022658
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x10]
add r0, sp, #0x1c8
bl sub_0202494C
mov r7, r0
b _020232F0
_02022658:
ldr r0, [sp, #0xb4]
ldr r1, _0202347C ; =_02099A7C
bl StrcmpTag
cmp r0, #0
beq _02022694
ldr r0, [sp, #0xb8]
bl AtoiTag
add r2, r8, r0, lsl #2
ldr r1, [r2, #0x10]
ldr r2, [r2, #0x24]
add r0, sp, #0x1c8
mov r3, #0
bl sub_020241DC
mov r7, r0
b _020232F0
_02022694:
ldr r1, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
#ifdef EUROPE
ldr r2, [r1, #0xd8]
ldr ip, [r1, #0xd4]
#else
ldr r2, [r1, #0x50]
ldr ip, [r1, #0x4c]
#endif
str r2, [sp, #0xb0]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0xac
mov r2, r5
str ip, [sp, #0xac]
bl Debug_FatalError
_020226BC:
ldr r0, [sp, #0xb4]
ldr r1, _02023488 ; =_02099A84
bl StrcmpTag
cmp r0, #0
beq _020226F0
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x24]
add r0, sp, #0x1c8
bl sub_020238F0
mov r7, r0
b _020232F0
_020226F0:
ldr r0, [sp, #0xb4]
ldr r1, _0202348C ; =_02099A8C
bl StrcmpTag
cmp r0, #0
beq _02022724
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x24]
add r0, sp, #0x1c8
bl sub_02023900
mov r7, r0
b _020232F0
_02022724:
ldr r1, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
ldr r2, [r1, #0xb8]
ldr ip, [r1, #0xb4]
str r2, [sp, #0xa8]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0xa4
mov r2, r5
str ip, [sp, #0xa4]
bl Debug_FatalError
_0202274C:
ldr r0, [sp, #0xb4]
ldr r1, _02023490 ; =_02099A98
bl StrcmpTag
cmp r0, #0
beq _02022774
ldr r1, [sp, #0xb8]
add r0, sp, #0x1c8
bl sub_020240B0
mov r7, r0
b _020232F0
_02022774:
ldr r0, [sp, #0xb4]
ldr r1, _02023494 ; =_02099AA0
bl StrcmpTag
cmp r0, #0
beq _020227A8
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x10]
add r0, sp, #0x1c8
bl sub_02024C18
mov r7, r0
b _020232F0
_020227A8:
ldr r0, [sp, #0xb4]
ldr r1, _02023498 ; =_02099AA4
bl StrcmpTag
cmp r0, #0
beq _020227D0
ldr r1, [sp, #0xb8]
add r0, sp, #0x1c8
bl sub_02024114
mov r7, r0
b _020232F0
_020227D0:
ldr r0, [sp, #0xb4]
ldr r1, _0202349C ; =_02099AAC
bl StrcmpTag
cmp r0, #0
beq _020227F8
ldr r1, [sp, #0xb8]
add r0, sp, #0x1c8
bl sub_02024178
mov r7, r0
b _020232F0
_020227F8:
ldr r0, [sp, #0xb4]
ldr r1, _020234A0 ; =_02099AB8
bl StrcmpTag
cmp r0, #0
ldrne r7, _020234A4 ; =_02099AC0
bne _020232F0
ldr r1, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
ldr r2, [r1, #0xc8]
ldr ip, [r1, #0xc4]
str r2, [sp, #0xa0]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0x9c
mov r2, r5
str ip, [sp, #0x9c]
bl Debug_FatalError
_02022838:
ldr r0, [sp, #0xb4]
ldr r1, _020234A8 ; =_02099AC8
bl StrcmpTag
cmp r0, #0
beq _02022870
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r2, [r0, #0x24]
ldr r1, _020234AC ; =_02099AD0
add r0, sp, #0x1c8
bl SprintfStatic__02023590
add r7, sp, #0x1c8
b _020232F0
_02022870:
ldr r0, [sp, #0xb4]
ldr r1, _020234B0 ; =_02099AD4
bl StrcmpTag
cmp r0, #0
beq _020228A8
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r2, [r0, #0x24]
ldr r1, _020234B4 ; =_02099AE0
add r0, sp, #0x1c8
bl SprintfStatic__02023590
add r7, sp, #0x1c8
b _020232F0
_020228A8:
ldr r0, [sp, #0xb4]
ldr r1, _020234B8 ; =_02099AF0
bl StrcmpTag
cmp r0, #0
beq _020228E0
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x10]
ldr r2, [r0, #0x24]
add r0, sp, #0x1c8
bl sub_020245D0
mov r7, r0
b _020232F0
_020228E0:
ldr r1, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
#ifdef EUROPE
ldr r2, [r1, #0xf8]
ldr ip, [r1, #0xf4]
#else
ldr r2, [r1, #0xe0]
ldr ip, [r1, #0xdc]
#endif
str r2, [sp, #0x98]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0x94
mov r2, r5
str ip, [sp, #0x94]
bl Debug_FatalError
_02022908:
ldr r0, [sp, #0xb4]
ldr r1, _020234BC ; =_02099AF8
bl StrcmpTag
cmp r0, #0
beq _02022938
ldr r1, [r8, #0x34]
add r0, sp, #0x1c8
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
bl sub_02024E34
mov r7, r0
b _020232F0
_02022938:
ldr r0, [sp, #0xb4]
ldr r1, _020234C0 ; =_02099B04
bl StrcmpTag
cmp r0, #0
beq _0202296C
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x24]
add r0, sp, #0x1c8
bl sub_02023910
mov r7, r0
b _020232F0
_0202296C:
ldr r1, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
#ifdef EUROPE
ldr r2, [r1, #0x110]
ldr ip, [r1, #0x10c]
#else
ldr r2, [r1, #0x108]
ldr ip, [r1, #0x104]
#endif
str r2, [sp, #0x90]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0x8c
mov r2, r5
str ip, [sp, #0x8c]
bl Debug_FatalError
_02022994:
ldr r0, [sp, #0xb4]
ldr r1, _020234C4 ; =_02099B10
bl StrcmpTag
cmp r0, #0
beq _020229C8
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x24]
add r0, sp, #0x1c8
bl sub_02024598
mov r7, r0
b _020232F0
_020229C8:
ldr r1, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
#ifdef EUROPE
ldr r2, [r1, #8]
ldr ip, [r1, #4]
#else
ldr r2, [r1, #0x20]
ldr ip, [r1, #0x1c]
#endif
str r2, [sp, #0x88]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0x84
mov r2, r5
str ip, [sp, #0x84]
bl Debug_FatalError
_020229F0:
ldr r0, [sp, #0xb4]
ldr r1, _020234C8 ; =_02099B18
bl StrcmpTag
cmp r0, #0
beq _02022A14
add r0, sp, #0x1c8
bl GetBagNameString
mov r7, r0
b _020232F0
_02022A14:
ldr r0, [sp, #0xb4]
ldr r1, _020234CC ; =_02099B24
bl StrcmpTag
cmp r0, #0
beq _02022A48
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x10]
add r0, sp, #0x1c8
bl sub_02024D7C
mov r7, r0
b _020232F0
_02022A48:
ldr r0, [sp, #0xb4]
ldr r1, _020234D0 ; =_02099B2C
bl StrcmpTag
cmp r0, #0
beq _02022A7C
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x24]
add r0, sp, #0x1c8
bl sub_020238D0
mov r7, r0
b _020232F0
_02022A7C:
ldr r0, [sp, #0xb4]
ldr r1, _020234D4 ; =_02099B34
bl StrcmpTag
cmp r0, #0
beq _02022AB0
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x24]
add r0, sp, #0x1c8
bl sub_020238E0
mov r7, r0
b _020232F0
_02022AB0:
ldr r1, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
#ifdef EUROPE
ldr r2, [r1, #0x10]
ldr ip, [r1, #0xc]
#else
ldr r2, [r1, #0x18]
ldr ip, [r1, #0x14]
#endif
str r2, [sp, #0x80]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0x7c
mov r2, r5
str ip, [sp, #0x7c]
bl Debug_FatalError
_02022AD8:
ldr r0, [sp, #0xb4]
ldr r1, _020234D8 ; =_02099B40
bl StrcmpTag
cmp r0, #0
beq _02022B00
add r0, sp, #0x1c8
mov r1, #0x3c
bl sub_02023DC0
mov r7, r0
b _020232F0
_02022B00:
ldr r1, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
#ifdef EUROPE
ldr r2, [r1, #0x20]
ldr ip, [r1, #0x1c]
#else
ldr r2, [r1, #0x10]
ldr ip, [r1, #0xc]
#endif
str r2, [sp, #0x78]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0x74
mov r2, r5
str ip, [sp, #0x74]
bl Debug_FatalError
_02022B28:
ldr r0, [sp, #0xb4]
ldr r1, _020234DC ; =_02099B48
bl StrcmpTag
cmp r0, #0
beq _02022B64
ldr r0, [sp, #0xb8]
bl AtoiTag
add r3, r8, r0, lsl #2
ldr r1, [r3, #0x10]
ldr r2, [r3, #0x24]
ldr r3, [r3, #0x28]
add r0, sp, #0x1c8
bl sub_020241DC
mov r7, r0
b _020232F0
_02022B64:
ldr r1, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
ldr r2, [r1, #0x28]
ldr ip, [r1, #0x24]
str r2, [sp, #0x70]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0x6c
mov r2, r5
str ip, [sp, #0x6c]
bl Debug_FatalError
_02022B8C:
ldr r0, [sp, #0xb4]
ldr r1, _020234E0 ; =_02099B50
bl StrcmpTag
cmp r0, #0
beq _02022BBC
ldr r0, [sp, #0xb8]
bl AtoiTag
ldr r1, [r8, r0, lsl #2]
add r0, sp, #0x1c8
bl sub_02023920
mov r7, r0
b _020232F0
_02022BBC:
ldr r1, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
#ifdef EUROPE
ldr r2, [r1, #0x50]
ldr ip, [r1, #0x4c]
#else
ldr r2, [r1, #0x40]
ldr ip, [r1, #0x3c]
#endif
str r2, [sp, #0x68]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0x64
mov r2, r5
str ip, [sp, #0x64]
bl Debug_FatalError
_02022BE4:
ldr r0, [sp, #0xb4]
ldr r1, _020234E4 ; =_02099B58
bl StrcmpTag
cmp r0, #0
beq _02022C14
ldr r0, [sp, #0xb8]
bl AtoiTag
ldr r1, [r8, r0, lsl #2]
add r0, sp, #0x1c8
bl sub_02023B68
mov r7, r0
b _020232F0
_02022C14:
ldr r0, [sp, #0xb4]
ldr r1, _020234E8 ; =_02099B60
bl StrcmpTag
cmp r0, #0
beq _02022C3C
add r0, sp, #0x1c8
mov r1, #2
bl GetCurrentTeamNameString
mov r7, r0
b _020232F0
_02022C3C:
ldr r1, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
#ifdef EUROPE
ldr r2, [r1, #0xe0]
ldr ip, [r1, #0xdc]
#else
ldr r2, [r1, #0xa8]
ldr ip, [r1, #0xa4]
#endif
str r2, [sp, #0x60]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0x5c
mov r2, r5
str ip, [sp, #0x5c]
bl Debug_FatalError
_02022C64:
ldr r0, [sp, #0xb4]
ldr r1, _020234EC ; =_02099B6C
bl StrcmpTag
cmp r0, #0
beq _02022C9C
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x10]
ldr r2, [r0, #0x24]
add r0, sp, #0x1c8
bl sub_020242F8
mov r7, r0
b _020232F0
_02022C9C:
ldr r0, [sp, #0xb4]
ldr r1, _020234F0 ; =_02099B74
bl StrcmpTag
cmp r0, #0
beq _02022CD4
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r2, [r0, #0x24]
ldr r1, _020234F4 ; =_02099B7C
add r0, sp, #0x1c8
bl SprintfStatic__02023590
add r7, sp, #0x1c8
b _020232F0
_02022CD4:
ldr r0, [sp, #0xb4]
ldr r1, _020234F8 ; =_02099B8C
bl StrcmpTag
cmp r0, #0
beq _02022D04
ldr r1, [r8, #0x34]
add r0, sp, #0x1c8
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
bl SetStringAccuracy
mov r7, r0
b _020232F0
_02022D04:
ldr r0, [sp, #0xb4]
ldr r1, _020234FC ; =_02099B9C
bl StrcmpTag
cmp r0, #0
beq _02022D34
ldr r1, [r8, #0x34]
add r0, sp, #0x1c8
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
bl SetStringPower
mov r7, r0
b _020232F0
_02022D34:
ldr r1, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
#ifdef EUROPE
ldr r2, [r1, #0xd0]
ldr ip, [r1, #0xcc]
#else
ldr r2, [r1, #0xc0]
ldr ip, [r1, #0xbc]
#endif
str r2, [sp, #0x58]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0x54
mov r2, r5
str ip, [sp, #0x54]
bl Debug_FatalError
_02022D5C:
ldr r0, [sp, #0xb4]
ldr r1, _02023500 ; =_02099BA8
bl StrcmpTag
cmp r0, #0
beq _02022D84
add r0, sp, #0x1c8
mov r1, #0x3d
bl sub_02023DC0
mov r7, r0
b _020232F0
_02022D84:
ldr r0, [sp, #0xb4]
ldr r1, _02023504 ; =_02099BB0
bl StrcmpTag
cmp r0, #0
beq _02022DAC
add r0, sp, #0x1c8
mov r1, #0x3e
bl sub_02023DC0
mov r7, r0
b _020232F0
_02022DAC:
ldr r0, [sp, #0xb4]
ldr r1, _02023508 ; =_02099BBC
bl StrcmpTag
cmp r0, #0
beq _02022DD4
add r0, sp, #0x1c8
mov r1, #0x3f
bl sub_02023DC0
mov r7, r0
b _020232F0
_02022DD4:
ldr r0, [sp, #0xb4]
ldr r1, _0202350C ; =_02099BC4
bl StrcmpTag
cmp r0, #0
beq _02022E08
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x10]
add r0, sp, #0x1c8
bl sub_02024A68
mov r7, r0
b _020232F0
_02022E08:
ldr r1, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
#ifdef EUROPE
ldr r2, [r1, #0x118]
ldr ip, [r1, #0x114]
#else
ldr r2, [r1, #0xf0]
ldr ip, [r1, #0xec]
#endif
str r2, [sp, #0x50]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0x4c
mov r2, r5
str ip, [sp, #0x4c]
bl Debug_FatalError
_02022E30:
ldr r0, [sp, #0xb4]
ldr r1, _02023510 ; =_02099BCC
bl StrcmpTag
cmp r0, #0
beq _02022E64
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x10]
add r0, sp, #0x1c8
bl GetRankString
mov r7, r0
b _020232F0
_02022E64:
ldr r0, [sp, #0xb4]
ldr r1, _02023514 ; =_02099BD4
bl StrcmpTag
cmp r0, #0
beq _02022E98
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x10]
add r0, sp, #0x1c8
bl sub_02024B48
mov r7, r0
b _020232F0
_02022E98:
ldr r1, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
#ifdef EUROPE
ldr r2, [r1, #0x18]
ldr ip, [r1, #0x14]
#else
ldr r2, [r1, #8]
ldr ip, [r1, #4]
#endif
str r2, [sp, #0x48]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0x44
mov r2, r5
str ip, [sp, #0x44]
bl Debug_FatalError
_02022EC0:
ldr r0, [sp, #0xb4]
ldr r1, _02023518 ; =_02099BDC
bl StrcmpTag
cmp r0, #0
beq _02022EF8
ldr r0, [sp, #0xb8]
bl AtoiTag
mov r2, #0
orr r1, r0, #0x50000
add r0, sp, #0x1c8
mov r3, r2
bl sub_020241DC
mov r7, r0
b _020232F0
_02022EF8:
ldr r0, [sp, #0xb4]
ldr r1, _0202351C ; =_02099BE4
bl StrcmpTag
cmp r0, #0
ldrne r7, [r8, #0x38]
bne _020232F0
ldr r0, [sp, #0xb4]
ldr r1, _02023520 ; =_02099BEC
bl StrcmpTag
cmp r0, #0
beq _02022F40
cmp r6, #2
bne _020232F0
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r7, [r0, #0x38]
b _020232F0
_02022F40:
ldr r0, [sp, #0xb4]
ldr r1, _02023524 ; =_02099BF4
bl StrcmpTag
cmp r0, #0
beq _02022F78
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r2, [r0, #0x24]
ldr r1, _02023528 ; =_02099BFC
add r0, sp, #0x1c8
bl SprintfStatic__02023590
add r7, sp, #0x1c8
b _020232F0
_02022F78:
ldr r1, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
ldr r2, [r1, #0x30]
ldr ip, [r1, #0x2c]
str r2, [sp, #0x40]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0x3c
mov r2, r5
str ip, [sp, #0x3c]
bl Debug_FatalError
_02022FA0:
ldr r0, [sp, #0xb4]
ldr r1, _0202352C ; =_02099C0C
bl StrcmpTag
cmp r0, #0
beq _02022FD4
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x10]
add r0, sp, #0x1c8
bl sub_02024B94
mov r7, r0
b _020232F0
_02022FD4:
ldr r0, [sp, #0xb4]
ldr r1, _02023530 ; =_02099C14
bl StrcmpTag
cmp r0, #0
beq _02023008
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x10]
add r0, sp, #0x1c8
bl sub_020244F4
mov r7, r0
b _020232F0
_02023008:
ldr r0, [sp, #0xb4]
ldr r1, _02023534 ; =_02099C1C
bl StrcmpTag
cmp r0, #0
beq _0202303C
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x10]
add r0, sp, #0x1c8
bl sub_02024D48
mov r7, r0
b _020232F0
_0202303C:
ldr r0, [sp, #0xb4]
ldr r1, _02023538 ; =_02099C24
bl StrcmpTag
cmp r0, #0
beq _02023094
cmp r6, #1
bne _0202306C
add r0, sp, #0x1c8
mov r1, #0
bl GetCurrentTeamNameString
mov r7, r0
b _020232F0
_0202306C:
cmp r6, #2
bne _020232F0
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x10]
add r0, sp, #0x1c8
bl GetCurrentTeamNameString
mov r7, r0
b _020232F0
_02023094:
ldr r0, [sp, #0xb4]
ldr r1, _0202353C ; =_02099C2C
bl StrcmpTag
cmp r0, #0
beq _02023114
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r5, [r0, #0x24]
mov r1, #0xe10
mov r0, r5
bl _u32_div_f
mov r6, r0
mov r0, r5
mov r1, #0xe10
bl _u32_div_f
mov r5, r1
mov r0, r5
mov r1, #0x3c
bl _u32_div_f
mov r7, r0
mov r0, r5
mov r1, #0x3c
bl _u32_div_f
str r1, [sp]
ldr r1, _02023540 ; =_02099C34
mov r2, r6
mov r3, r7
add r0, sp, #0x1c8
bl SprintfStatic__02023590
add r7, sp, #0x1c8
b _020232F0
_02023114:
ldr r0, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
#ifdef EUROPE
ldr r1, [r0, #0xa0]
ldr r2, [r0, #0x9c]
#else
ldr r1, [r0, #0xb0]
ldr r2, [r0, #0xac]
#endif
str r1, [sp, #0x38]
str r2, [sp, #0x34]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0x34
mov r2, r5
bl Debug_FatalError
_0202313C:
ldr r0, [sp, #0xb4]
ldr r1, _02023544 ; =_02099C44
bl StrcmpTag
cmp r0, #0
beq _02023180
ldr r0, [sp, #0xb8]
bl AtoiTag
mov r5, r0
ldr r0, [sp, #0xbc]
bl AtoiTag
add r1, r8, r5, lsl #2
mov r2, r0
ldr r1, [r1, #0x24]
add r0, sp, #0x1c8
bl sub_0202372C
mov r7, r0
b _020232F0
_02023180:
ldr r0, [sp, #0xb4]
ldr r1, _02023548 ; =_02099C4C
bl StrcmpTag
cmp r0, #0
beq _020231D8
ldr r0, [sp, #0xb8]
bl AtoiTag
mov r5, r0
ldr r0, [sp, #0xbc]
bl AtoiTag
add r1, r8, r5, lsl #2
ldr r3, [r1, #0x24]
mov r2, r0
ldr r1, _0202354C ; =_02099C54
add r0, sp, #0xc8
bl SprintfStatic__02023590
ldr r1, _02023550 ; =_02099C5C
add r0, sp, #0x1c8
add r2, sp, #0xc8
bl SprintfStatic__02023590
add r7, sp, #0x1c8
b _020232F0
_020231D8:
ldr r0, [sp, #0xb4]
ldr r1, _02023554 ; =_02099C68
bl StrcmpTag
cmp r0, #0
beq _02023214
ldr r0, [sp, #0xb8]
bl AtoiTag
add r2, r8, r0, lsl #2
ldr r1, [r2, #0x10]
ldr r2, [r2, #0x24]
add r0, sp, #0x1c8
mov r3, #0
bl sub_020241DC
mov r7, r0
b _020232F0
_02023214:
ldr r0, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
#ifdef EUROPE
ldr r1, [r0, #0xc0]
ldr r2, [r0, #0xbc]
#else
ldr r1, [r0, #0xd0]
ldr r2, [r0, #0xcc]
#endif
str r1, [sp, #0x30]
str r2, [sp, #0x2c]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0x2c
mov r2, r5
bl Debug_FatalError
_0202323C:
ldr r0, [sp, #0xb4]
ldr r1, _02023558 ; =_02099C70
bl StrcmpTag
cmp r0, #0
beq _0202326C
ldr r0, [sp, #0xb8]
bl AtoiTag
ldr r1, [r8, r0, lsl #2]
add r0, sp, #0x1c8
bl sub_02024AA8
mov r7, r0
b _020232F0
_0202326C:
ldr r0, [sp, #0xb4]
ldr r1, _0202355C ; =_02099C78
bl StrcmpTag
cmp r0, #0
beq _020232A0
ldr r0, [sp, #0xb8]
bl AtoiTag
add r0, r8, r0, lsl #2
ldr r1, [r0, #0x10]
add r0, sp, #0x1c8
bl sub_02024BD8
mov r7, r0
b _020232F0
_020232A0:
ldr r0, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
ldr r1, [r0, #0x38]
ldr r2, [r0, #0x34]
str r1, [sp, #0x28]
str r2, [sp, #0x24]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0x24
mov r2, r5
bl Debug_FatalError
_020232C8:
ldr r0, _02023480 ; =_020997E4
ldr r3, [sp, #0xb4]
#ifdef EUROPE
ldr r1, [r0, #0xa8]
ldr r2, [r0, #0xa4]
#else
ldr r1, [r0, #0xd8]
ldr r2, [r0, #0xd4]
#endif
str r1, [sp, #0x20]
str r2, [sp, #0x1c]
ldr r1, _02023484 ; =_020999B0
add r0, sp, #0x1c
mov r2, r5
bl Debug_FatalError
_020232F0:
cmp r7, #0
beq _02022434
_020232F8:
ldr r2, [sp, #0x5f0]
cmp r2, r4
moveq r1, #0
moveq r0, sb
streqb r1, [r4, #-1]
beq _0202357C
ldrb r1, [r7], #1
cmp r1, #0
beq _02022434
add r0, r2, #1
str r0, [sp, #0x5f0]
strb r1, [r2]
b _020232F8
_0202332C:
cmp r2, #0x41
blo _0202342C
cmp r2, #0x5a
bhi _0202342C
ldr r1, _02023560 ; =_02099A24
add r0, r5, #1
bl StrcmpTag
cmp r0, #0
bne _02023364
ldr r1, _02023564 ; =_020999D4
add r0, r5, #1
bl StrcmpTag
cmp r0, #0
beq _02023390
_02023364:
ldr r0, [sp, #0x5f8]
ldrb r0, [r0]
cmp r0, #0xd
cmpne r0, #0xa
ldreq r0, [sp, #0x5f8]
addeq r0, r0, #1
streq r0, [sp, #0x5f8]
mov r0, #1
str r0, [sp, #0x10]
str r0, [sp, #0xc]
b _020233D8
_02023390:
ldr r1, _02023568 ; =_02099A28
add r0, r5, #1
bl StrcmpTag
cmp r0, #0
beq _020233BC
ldr r0, [sp, #8]
cmp r0, #0
bne _02023574
mov r0, #1
str r0, [sp, #0xc]
b _020233D8
_020233BC:
ldr r1, _0202356C ; =_02099A04
add r0, r5, #1
bl StrcmpTag
cmp r0, #0
ldrne r0, [sp, #4]
cmpne r0, #0
bne _02023574
_020233D8:
ldr r2, [sp, #0x5f0]
mov r0, #0x5b
add r1, r2, #1
str r1, [sp, #0x5f0]
strb r0, [r2]
_020233EC:
ldr r3, [sp, #0x5f0]
cmp r3, r4
moveq r1, #0
moveq r0, sb
streqb r1, [r4, #-1]
beq _0202357C
ldr r2, [sp, #0x5f8]
add r0, r3, #1
add r1, r2, #1
str r1, [sp, #0x5f8]
ldrb r1, [r2]
str r0, [sp, #0x5f0]
strb r1, [r3]
cmp r1, #0x5d
beq _02022434
b _020233EC
_0202342C:
ldr r1, _02023480 ; =_020997E4
add r0, sp, #0x14
#ifdef EUROPE
ldr r3, [r1, #0xb0]
ldr r1, [r1, #0xac]
#else
ldr r3, [r1, #0x110]
ldr r1, [r1, #0x10c]
#endif
str r3, [sp, #0x18]
str r1, [sp, #0x14]
ldr r1, _02023570 ; =_02099C84
mov r3, r2
str r5, [sp]
bl Debug_FatalError
_02023454:
add r1, sp, #0x500
add r0, sp, #0x5f0
add r1, r1, #0xf8
mov r2, r4
bl sub_020206FC
b _02022434
.align 2, 0
_0202346C: .word _02099A5C
_02023470: .word _02099A64
_02023474: .word _02099A70
_02023478: .word _02099A74
_0202347C: .word _02099A7C
_02023480: .word _020997E4
_02023484: .word _020999B0
_02023488: .word _02099A84
_0202348C: .word _02099A8C
_02023490: .word _02099A98
_02023494: .word _02099AA0
_02023498: .word _02099AA4
_0202349C: .word _02099AAC
_020234A0: .word _02099AB8
_020234A4: .word _02099AC0
_020234A8: .word _02099AC8
_020234AC: .word _02099AD0
_020234B0: .word _02099AD4
_020234B4: .word _02099AE0
_020234B8: .word _02099AF0
_020234BC: .word _02099AF8
_020234C0: .word _02099B04
_020234C4: .word _02099B10
_020234C8: .word _02099B18
_020234CC: .word _02099B24
_020234D0: .word _02099B2C
_020234D4: .word _02099B34
_020234D8: .word _02099B40
_020234DC: .word _02099B48
_020234E0: .word _02099B50
_020234E4: .word _02099B58
_020234E8: .word _02099B60
_020234EC: .word _02099B6C
_020234F0: .word _02099B74
_020234F4: .word _02099B7C
_020234F8: .word _02099B8C
_020234FC: .word _02099B9C
_02023500: .word _02099BA8
_02023504: .word _02099BB0
_02023508: .word _02099BBC
_0202350C: .word _02099BC4
_02023510: .word _02099BCC
_02023514: .word _02099BD4
_02023518: .word _02099BDC
_0202351C: .word _02099BE4
_02023520: .word _02099BEC
_02023524: .word _02099BF4
_02023528: .word _02099BFC
_0202352C: .word _02099C0C
_02023530: .word _02099C14
_02023534: .word _02099C1C
_02023538: .word _02099C24
_0202353C: .word _02099C2C
_02023540: .word _02099C34
_02023544: .word _02099C44
_02023548: .word _02099C4C
_0202354C: .word _02099C54
_02023550: .word _02099C5C
_02023554: .word _02099C68
_02023558: .word _02099C70
_0202355C: .word _02099C78
_02023560: .word _02099A24
_02023564: .word _020999D4
_02023568: .word _02099A28
_0202356C: .word _02099A04
_02023570: .word _02099C84
_02023574:
ldr r0, [sp, #0x5f0]
sub r0, r0, sl
_0202357C:
add sp, sp, #0x1c8
add sp, sp, #0x400
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
add sp, sp, #0x10
bx lr
arm_func_end PreprocessString
arm_func_start SprintfStatic__02023590
SprintfStatic__02023590: ; 0x02023590
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, lr}
add r2, sp, #0xc
bic r2, r2, #3
ldr r1, [sp, #0xc]
add r2, r2, #4
bl vsprintf
ldmia sp!, {r3, lr}
add sp, sp, #0x10
bx lr
arm_func_end SprintfStatic__02023590
arm_func_start PreprocessStringFromId
PreprocessStringFromId: ; 0x020235B8
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
mov r6, r0
mov r0, r2
mov r5, r1
mov r4, r3
bl StringFromId
ldr ip, [sp, #0x18]
mov r2, r0
mov r0, r6
mov r1, r5
mov r3, r4
str ip, [sp]
bl PreprocessString
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
arm_func_end PreprocessStringFromId
arm_func_start StrcmpTagVeneer
StrcmpTagVeneer: ; 0x020235F8
ldr ip, _02023600 ; =StrcmpTag
bx ip
.align 2, 0
_02023600: .word StrcmpTag
arm_func_end StrcmpTagVeneer
arm_func_start AtoiTagVeneer
AtoiTagVeneer: ; 0x02023604
ldr ip, _0202360C ; =AtoiTag
bx ip
.align 2, 0
_0202360C: .word AtoiTag
arm_func_end AtoiTagVeneer
#ifdef EUROPE
arm_func_start sub_0202380C_EU
sub_0202380C_EU: ; 0x0202380C
ldr ip, _02023814 ; =sub_02020A4C
bx ip
.align 2, 0
_02023814: .word sub_02020A4C
arm_func_end sub_0202380C_EU
#endif
arm_func_start sub_02023610
sub_02023610: ; 0x02023610
stmdb sp!, {r3, r4, r5, r6, r7, lr}
#ifdef EUROPE
bl GetLanguageType
cmp r0, #5
moveq r1, #1
ldr r0, _02023864 ; =_020B05BC_EU
movne r1, #0
#endif
ldr r6, _02023644 ; =_022A5048
ldr r5, _02023648 ; =_02099CA0
mov r7, #0
#ifdef EUROPE
strb r1, [r0]
#endif
mov r4, #1
_02023624:
mov r2, r4
add r0, r6, r7, lsl #2
add r1, r5, r7
bl StrncpySimpleNoPadSafe
add r7, r7, #1
cmp r7, #3
blt _02023624
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
#ifdef EUROPE
_02023864: .word _020B05BC_EU
#endif
_02023644: .word _022A5048
_02023648: .word _02099CA0
arm_func_end sub_02023610
arm_func_start sub_0202364C
sub_0202364C: ; 0x02023610
ldrb r2, [r1], #1
ldrb r3, [r0], #1
cmp r2, #0
bne _02023674
cmp r3, #0
cmpne r3, #0x3a
cmpne r3, #0x5d
moveq r0, #1
movne r0, #0
bx lr
_02023674:
cmp r3, #0
moveq r0, #0
bxeq lr
cmp r3, r2
beq sub_0202364C
mov r0, #0
bx lr
arm_func_end sub_0202364C
arm_func_start InitPreprocessorArgs
InitPreprocessorArgs: ; 0x02023690
mov r1, #0x60000
str r1, [r0, #0x4c]
mov r1, #0
mov r3, r1
_020236A0:
str r3, [r0, r1, lsl #2]
add r1, r1, #1
cmp r1, #4
blt _020236A0
mov r2, #0
_020236B4:
add r1, r0, r3, lsl #2
add r3, r3, #1
str r2, [r1, #0x10]
cmp r3, #5
blt _020236B4
mov r3, #0
_020236CC:
add r1, r0, r2, lsl #2
add r2, r2, #1
str r3, [r1, #0x24]
cmp r2, #5
blt _020236CC
mov r2, #0
_020236E4:
add r1, r0, r3, lsl #2
add r3, r3, #1
str r2, [r1, #0x38]
cmp r3, #5
blt _020236E4
bx lr
arm_func_end InitPreprocessorArgs
arm_func_start sub_020236FC
sub_020236FC: ; 0x020236FC
stmdb sp!, {r4, lr}
movs lr, r1
mov r4, r0
beq _02023724
mov ip, #5
_02023710:
ldmia lr!, {r0, r1, r2, r3}
stmia r4!, {r0, r1, r2, r3}
subs ip, ip, #1
bne _02023710
ldmia sp!, {r4, pc}
_02023724:
bl InitPreprocessorArgs
ldmia sp!, {r4, pc}
arm_func_end sub_020236FC
arm_func_start sub_0202372C
sub_0202372C: ; 0x0202372C
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x100
mov r3, r1
mov r5, r0
mov r4, r2
ldr r1, _02023784 ; =_02099D0C
add r0, sp, #0
mov r2, r3
bl SprintfStatic__0202378C
add r0, sp, #0
bl strlen
mov r2, r0
cmp r2, r4
movgt r4, r2
ldr r1, _02023788 ; =_02099D10
add r3, sp, #0
mov r0, r5
sub r2, r4, r2
bl SprintfStatic__0202378C
mov r0, r5
add sp, sp, #0x100
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
#ifdef EUROPE
_02023784: .word _0209A230_EU
#else
_02023784: .word _02099D0C
#endif
_02023788: .word _02099D10
arm_func_end sub_0202372C
arm_func_start SprintfStatic__0202378C
SprintfStatic__0202378C: ; 0x0202378C
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, lr}
add r2, sp, #0xc
bic r2, r2, #3
ldr r1, [sp, #0xc]
add r2, r2, #4
bl vsprintf
ldmia sp!, {r3, lr}
add sp, sp, #0x10
bx lr
arm_func_end SprintfStatic__0202378C
arm_func_start sub_020237B4
sub_020237B4: ; 0x020237B4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x100
#ifdef EUROPE
mov r4, r1
mov r8, r0
mov r7, r2
ldr r1, _020238C8 ; =_02099D0C
add r0, sp, #0
mov r2, r4
mov r6, r3
bl SprintfStatic__0202378C
add r0, sp, #0
bl strlen
mov r5, r0
sub r0, r5, #1
mov r1, #3
bl _s32_div_f
mov r4, r0
cmp r7, #0
ble _02023A38
cmp r5, r7
movgt r7, r5
sub r0, r7, #1
mov r1, #3
bl _s32_div_f
_02023A38:
ldr r1, _02023B14 ; =_020B05BC_EU
ldrb r1, [r1]
cmp r1, #0
beq _02023A50
cmp r5, #4
movle r4, #0
_02023A50:
cmp r4, #0
ble _02023AD0
add r2, sp, #0
sub r1, r5, #1
add sb, r2, r1
mov lr, #0
add sl, sb, r4, lsl #2
mov ip, lr
strb lr, [sl, #1]
mov r3, #0x5d
mov r2, #0x50
mov fp, #0x5b
b _02023AC8
_02023A84:
cmp lr, #3
blt _02023AB8
strb r3, [sl]
cmp r6, #0
movne r1, #0x47
strb r2, [sl, #-1]
moveq r1, #0x4d
strb r1, [sl, #-2]
strb fp, [sl, #-3]
sub sl, sl, #4
cmp sl, sb
beq _02023AD0
mov lr, #0
_02023AB8:
ldrb r1, [sb], #-1
add lr, lr, #1
add ip, ip, #1
strb r1, [sl], #-1
_02023AC8:
cmp ip, r5
blt _02023A84
_02023AD0:
cmp r7, #0
ble _02023AF8
sub r1, r7, r5
add r2, r0, r1
ldr r1, _020238CC ; =_02099D10
add r3, sp, #0
mov r0, r8
sub r2, r2, r4
bl SprintfStatic__0202378C
b _02023B04
_02023AF8:
add r1, sp, #0
mov r0, r8
bl strcpy
_02023B04:
mov r0, r8
#else
mov r3, r1
mov r7, r0
mov r6, r2
ldr r1, _020238C8 ; =_02099D0C
add r0, sp, #0
mov r2, r3
bl SprintfStatic__0202378C
add r0, sp, #0
bl strlen
mov r5, r0
sub r0, r5, #1
mov r1, #3
bl _s32_div_f
mov r4, r0
cmp r6, #0
ble _02023810
cmp r5, r6
movgt r6, r5
sub r0, r6, #1
mov r1, #3
bl _s32_div_f
_02023810:
cmp r4, #0
ble _02023888
add r2, sp, #0
sub r1, r5, #1
add sb, r2, r1
mov r8, #0
add sl, sb, r4, lsl #2
mov lr, r8
strb r8, [sl, #1]
mov ip, #0x5d
mov r3, #0x50
mov r2, #0x4d
mov fp, #0x5b
b _02023880
_02023848:
cmp r8, #3
blt _02023870
strb ip, [sl]
strb r3, [sl, #-1]
strb r2, [sl, #-2]
strb fp, [sl, #-3]
sub sl, sl, #4
cmp sl, sb
beq _02023888
mov r8, #0
_02023870:
ldrb r1, [sb], #-1
add r8, r8, #1
add lr, lr, #1
strb r1, [sl], #-1
_02023880:
cmp lr, r5
blt _02023848
_02023888:
cmp r6, #0
ble _020238B0
sub r1, r6, r5
add r2, r0, r1
ldr r1, _020238CC ; =_02099D10
add r3, sp, #0
mov r0, r7
sub r2, r2, r4
bl SprintfStatic__0202378C
b _020238BC
_020238B0:
add r1, sp, #0
mov r0, r7
bl strcpy
_020238BC:
mov r0, r7
#endif
add sp, sp, #0x100
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
#ifdef EUROPE
_020238C8: .word _0209A230_EU
_02023B14: .word _020B05BC_EU
#else
_020238C8: .word _02099D0C
#endif
_020238CC: .word _02099D10
arm_func_end sub_020237B4
arm_func_start sub_020238D0
sub_020238D0: ; 0x020238D0
ldr ip, _020238DC ; =sub_020237B4
mov r2, #5
#ifdef EUROPE
mov r3, #1
#endif
bx ip
.align 2, 0
_020238DC: .word sub_020237B4
arm_func_end sub_020238D0
arm_func_start sub_020238E0
sub_020238E0: ; 0x020238E0
ldr ip, _020238EC ; =sub_020237B4
mov r2, #0
#ifdef EUROPE
mov r3, #1
#endif
bx ip
.align 2, 0
_020238EC: .word sub_020237B4
arm_func_end sub_020238E0
arm_func_start sub_020238F0
sub_020238F0: ; 0x020238F0
ldr ip, _020238FC ; =sub_020237B4
mov r2, #7
#ifdef EUROPE
mov r3, #1
#endif
bx ip
.align 2, 0
_020238FC: .word sub_020237B4
arm_func_end sub_020238F0
arm_func_start sub_02023900
sub_02023900: ; 0x02023900
ldr ip, _0202390C ; =sub_020237B4
mov r2, #0
#ifdef EUROPE
mov r3, #1
#endif
bx ip
.align 2, 0
_0202390C: .word sub_020237B4
arm_func_end sub_02023900
arm_func_start sub_02023910
sub_02023910: ; 0x02023910
ldr ip, _0202391C ; =sub_020237B4
mov r2, #0
#ifdef EUROPE
mov r3, r2
#endif
bx ip
.align 2, 0
_0202391C: .word sub_020237B4
arm_func_end sub_02023910
arm_func_start sub_02023920
sub_02023920: ; 0x02023920
stmdb sp!, {r3, r4, r5, lr}
mov r2, r1, lsl #0x10
and r1, r1, #0xf0000
mov r5, r0
cmp r1, #0x40000
mov r4, r2, lsr #0x10
bgt _02023978
cmp r1, #0x40000
bge _02023B44
cmp r1, #0x10000
bgt _0202395C
bge _02023A30
cmp r1, #0
beq _020239AC
b _02023B44
_0202395C:
cmp r1, #0x20000
bgt _0202396C
beq _02023A40
b _02023B44
_0202396C:
cmp r1, #0x30000
beq _02023A8C
b _02023B44
_02023978:
cmp r1, #0x70000
bgt _02023990
bge _02023B3C
cmp r1, #0x60000
beq _02023B34
b _02023B44
_02023990:
cmp r1, #0x80000
bgt _020239A0
beq _020239D0
b _02023B44
_020239A0:
cmp r1, #0x90000
beq _02023AE0
b _02023B44
_020239AC:
mov r0, r4, lsl #0x10
mov r0, r0, asr #0x10
bl GetNameString
mov r2, r0
ldr r1, _02023B4C ; =_02099D1C
mov r0, r5
bl SprintfStatic__0202378C
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
_020239D0:
mov r0, r4, lsl #0x10
mov r0, r0, asr #0x10
bl GetNameString
mov r2, r0
ldr r1, _02023B4C ; =_02099D1C
mov r0, r5
bl SprintfStatic__0202378C
mov r0, r4, lsl #0x10
mov r0, r0, asr #0x10
bl GetMonsterGender
cmp r0, #1
beq _02023A0C
cmp r0, #2
beq _02023A1C
b _02023A28
_02023A0C:
ldr r1, _02023B50 ; =_022A5048
mov r0, r5
bl strcat
b _02023A28
_02023A1C:
ldr r1, _02023B54 ; =_022A504C
mov r0, r5
bl strcat
_02023A28:
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
_02023A30:
mov r1, r4, lsl #0x10
mov r1, r1, asr #0x10
bl sub_02023D64
ldmia sp!, {r3, r4, r5, pc}
_02023A40:
mov r0, #0x44
mul r1, r4, r0
ldr r0, _02023B58 ; =TEAM_MEMBER_TABLE_PTR
ldr r2, [r0]
ldrb r0, [r2, r1]
add r1, r2, r1
tst r0, #1
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _02023B44
ldrsh r0, [r1, #4]
bl GetNameString
mov r2, r0
ldr r1, _02023B4C ; =_02099D1C
mov r0, r5
bl SprintfStatic__0202378C
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
_02023A8C:
ldr r1, _02023B58 ; =TEAM_MEMBER_TABLE_PTR
mov r0, #0x68
ldr r2, [r1]
mul r1, r4, r0
add r0, r2, #0x9000
ldr r2, [r0, #0x84c]
ldrb r0, [r2, r1]
add r1, r2, r1
tst r0, #1
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _02023B44
ldrsh r0, [r1, #0xc]
bl GetNameString
mov r2, r0
ldr r1, _02023B4C ; =_02099D1C
mov r0, r5
bl SprintfStatic__0202378C
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
_02023AE0:
mov r0, #0x44
ldr r1, _02023B58 ; =TEAM_MEMBER_TABLE_PTR
mul r2, r4, r0
ldr r0, [r1]
add r0, r0, #0x98
add r1, r0, #0x9800
ldrb r0, [r1, r2]
add r1, r1, r2
tst r0, #1
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _02023B44
ldrsh r0, [r1, #4]
bl GetNameString
mov r2, r0
ldr r1, _02023B5C ; =_02099D2C
mov r0, r5
bl SprintfStatic__0202378C
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
_02023B34:
ldr r0, _02023B60 ; =_02099D3C
ldmia sp!, {r3, r4, r5, pc}
_02023B3C:
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
_02023B44:
ldr r0, _02023B64 ; =_02099D50
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02023B4C: .word _02099D1C
_02023B50: .word _022A5048
_02023B54: .word _022A504C
_02023B58: .word TEAM_MEMBER_TABLE_PTR
_02023B5C: .word _02099D2C
_02023B60: .word _02099D3C
_02023B64: .word _02099D50
arm_func_end sub_02023920
arm_func_start sub_02023B68
sub_02023B68: ; 0x02023B68
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x40
mov r2, r1, lsl #0x10
and r1, r1, #0xf0000
mov r5, r0
cmp r1, #0x30000
mov r4, r2, lsr #0x10
bgt _02023BB4
cmp r1, #0x30000
bge _02023C90
cmp r1, #0x10000
bgt _02023BA8
bge _02023C08
cmp r1, #0
beq _02023BE4
b _02023D40
_02023BA8:
cmp r1, #0x20000
beq _02023C18
b _02023D40
_02023BB4:
cmp r1, #0x50000
bgt _02023BC8
bge _02023D14
cmp r1, #0x40000
b _02023D40
_02023BC8:
cmp r1, #0x60000
bgt _02023BD8
beq _02023D30
b _02023D40
_02023BD8:
cmp r1, #0x70000
beq _02023D38
b _02023D40
_02023BE4:
mov r0, r4, lsl #0x10
mov r0, r0, asr #0x10
bl GetNameString
mov r2, r0
ldr r1, _02023D4C ; =_02099D2C
mov r0, r5
bl SprintfStatic__0202378C
mov r0, r5
b _02023D44
_02023C08:
mov r1, r4, lsl #0x10
mov r1, r1, asr #0x10
bl sub_02023DC0
b _02023D44
_02023C18:
mov r0, #0x44
mul r1, r4, r0
ldr r0, _02023D50 ; =TEAM_MEMBER_TABLE_PTR
ldr r2, [r0]
ldrb r0, [r2, r1]
add r1, r2, r1
tst r0, #1
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _02023D40
add r0, sp, #0
add r1, r1, #0x3a
mov r2, #0xa
bl StrncpySimpleNoPadSafe
mov r0, r4, lsl #0x10
mov r0, r0, asr #0x10
bl sub_020564B0
cmp r0, #0
add r2, sp, #0
beq _02023C7C
ldr r1, _02023D54 ; =_02099D54
mov r0, r5
bl SprintfStatic__0202378C
b _02023C88
_02023C7C:
ldr r1, _02023D58 ; =_02099D64
mov r0, r5
bl SprintfStatic__0202378C
_02023C88:
mov r0, r5
b _02023D44
_02023C90:
ldr r1, _02023D50 ; =TEAM_MEMBER_TABLE_PTR
mov r0, #0x68
ldr r2, [r1]
mul r1, r4, r0
add r0, r2, #0x9000
ldr r2, [r0, #0x84c]
ldrb r0, [r2, r1]
add r4, r2, r1
tst r0, #1
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _02023D40
add r0, sp, #0
add r1, r4, #0x5e
mov r2, #0xa
bl StrncpySimpleNoPadSafe
ldrb r0, [r4, #1]
add r2, sp, #0
cmp r0, #0
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _02023D00
ldr r1, _02023D54 ; =_02099D54
mov r0, r5
bl SprintfStatic__0202378C
b _02023D0C
_02023D00:
ldr r1, _02023D58 ; =_02099D64
mov r0, r5
bl SprintfStatic__0202378C
_02023D0C:
mov r0, r5
b _02023D44
_02023D14:
mov r0, r4
bl GetSize0x80Buffer
mov r1, r0
mov r0, r5
bl strcpy
mov r0, r5
b _02023D44
_02023D30:
ldr r0, _02023D5C ; =_02099D3C
b _02023D44
_02023D38:
mov r0, #0
b _02023D44
_02023D40:
ldr r0, _02023D60 ; =_02099D50
_02023D44:
add sp, sp, #0x40
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02023D4C: .word _02099D2C
_02023D50: .word TEAM_MEMBER_TABLE_PTR
_02023D54: .word _02099D54
_02023D58: .word _02099D64
_02023D5C: .word _02099D3C
_02023D60: .word _02099D50
arm_func_end sub_02023B68
arm_func_start sub_02023D64
sub_02023D64: ; 0x02023D64
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
mov r4, r0
add r0, sp, #0x14
add r1, sp, #0
bl sub_0206549C
ldrsh r0, [sp]
cmp r0, #0
moveq r0, #0
beq _02023DAC
ldrsh r0, [sp]
bl GetNameString
mov r2, r0
ldr r1, _02023DBC ; =_02099D1C
mov r0, r4
bl SprintfStatic__0202378C
mov r0, r4
_02023DAC:
add sp, sp, #4
ldmia sp!, {r3, r4, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_02023DBC: .word _02099D1C
arm_func_end sub_02023D64
arm_func_start sub_02023DC0
sub_02023DC0: ; 0x02023DC0
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x84
mov r4, r0
add r0, sp, #0x94
add r1, sp, #0
bl sub_0206549C
ldrsh r0, [sp]
cmp r0, #0
moveq r0, #0
beq _02023F98
ldrsh r0, [sp, #0x94]
cmp r0, #0x39
bne _02023E18
add r0, sp, #0x42
bl sub_02065BF0
ldr r1, _02023FA8 ; =_02099D64
add r2, sp, #0x42
mov r0, r4
bl SprintfStatic__0202378C
mov r0, r4
b _02023F98
_02023E18:
cmp r0, #0x42
bne _02023E44
add r1, sp, #2
mov r0, #0x3f
mov r2, #0xa
bl LoadScriptVariableValueString
add r0, sp, #0x42
add r1, sp, #2
mov r2, #0xa
bl StrncpySimpleNoPadSafe
b _02023F5C
_02023E44:
cmp r0, #0x43
bne _02023E70
add r1, sp, #2
mov r0, #0x41
mov r2, #0xa
bl LoadScriptVariableValueString
add r0, sp, #0x42
add r1, sp, #2
mov r2, #0xa
bl StrncpySimpleNoPadSafe
b _02023F5C
_02023E70:
bl GetActorMatchingStorageId
mov r5, r0
mvn r1, #0
cmp r5, r1
beq _02023F2C
bl GetActiveRosterIndex
mvn r1, #0
cmp r0, r1
beq _02023EB0
bl GetActiveTeamMember
mov r1, r0
add r0, sp, #0x42
add r1, r1, #0x5e
mov r2, #0xa
bl StrncpySimpleNoPadSafe
b _02023ECC
_02023EB0:
mov r0, r5
bl GetTeamMember
mov r1, r0
add r0, sp, #0x42
add r1, r1, #0x3a
mov r2, #0xa
bl StrncpySimpleNoPadSafe
_02023ECC:
ldrsh r0, [sp, #0x94]
cmp r0, #0
blt _02023EF4
cmp r0, #0xa
bge _02023EF4
ldr r1, _02023FAC ; =_02099D54
add r2, sp, #0x42
mov r0, r4
bl SprintfStatic__0202378C
b _02023F24
_02023EF4:
mov r0, r5
bl sub_020564B0
cmp r0, #0
add r2, sp, #0x42
beq _02023F18
ldr r1, _02023FAC ; =_02099D54
mov r0, r4
bl SprintfStatic__0202378C
b _02023F24
_02023F18:
ldr r1, _02023FA8 ; =_02099D64
mov r0, r4
bl SprintfStatic__0202378C
_02023F24:
mov r0, r4
b _02023F98
_02023F2C:
ldrsh r0, [sp, #0x94]
bl sub_02065B14
movs r1, r0
beq _02023F48
add r0, sp, #0x42
bl GetStringFromFileVeneer
b _02023F5C
_02023F48:
ldrsh r0, [sp]
bl GetNameString
mov r1, r0
add r0, sp, #0x42
bl strcpy
_02023F5C:
ldrsh r0, [sp, #0x94]
cmp r0, #0
blt _02023F84
cmp r0, #0xa
bge _02023F84
ldr r1, _02023FAC ; =_02099D54
add r2, sp, #0x42
mov r0, r4
bl SprintfStatic__0202378C
b _02023F94
_02023F84:
ldr r1, _02023FB0 ; =_02099D2C
add r2, sp, #0x42
mov r0, r4
bl SprintfStatic__0202378C
_02023F94:
mov r0, r4
_02023F98:
add sp, sp, #0x84
ldmia sp!, {r4, r5, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_02023FA8: .word _02099D64
_02023FAC: .word _02099D54
_02023FB0: .word _02099D2C
arm_func_end sub_02023DC0
arm_func_start sub_02023FB4
sub_02023FB4: ; 0x02023FB4
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #0x8c
mov r4, r0
add r0, sp, #0xa4
add r1, sp, #0
bl sub_0206549C
ldrsh r0, [sp]
cmp r0, #0
moveq r0, #0
beq _02024094
ldrsh r0, [sp, #0xa4]
bl GetActorMatchingStorageId
mov r5, r0
bl GetTeamMember
movs r6, r0
beq _02024014
add r0, sp, #0x4c
add r1, r6, #0x3a
mov r2, #0xa
bl StrncpySimpleNoPadSafe
add r0, sp, #0x4c
str r0, [sp, #8]
b _02024020
_02024014:
ldrsh r0, [sp]
bl GetNameString
str r0, [sp, #8]
_02024020:
add r3, sp, #0xc
add r0, sp, #4
add r1, sp, #8
add r2, sp, #0x4c
str r3, [sp, #4]
bl sub_020206FC
ldr r0, [sp, #4]
mov r1, #0
strb r1, [r0]
cmp r6, #0
beq _02024080
mov r0, r5
bl sub_020564B0
cmp r0, #0
add r2, sp, #0xc
beq _02024070
ldr r1, _020240A4 ; =_02099D54
mov r0, r4
bl SprintfStatic__0202378C
b _02024090
_02024070:
ldr r1, _020240A8 ; =_02099D64
mov r0, r4
bl SprintfStatic__0202378C
b _02024090
_02024080:
ldr r1, _020240AC ; =_02099D2C
add r2, sp, #0xc
mov r0, r4
bl SprintfStatic__0202378C
_02024090:
mov r0, r4
_02024094:
add sp, sp, #0x8c
ldmia sp!, {r3, r4, r5, r6, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_020240A4: .word _02099D54
_020240A8: .word _02099D64
_020240AC: .word _02099D2C
arm_func_end sub_02023FB4
arm_func_start sub_020240B0
sub_020240B0: ; 0x020240B0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
mov r7, r1
ldr r5, _0202410C ; =ENTITIES
mov r6, #0
ldr r4, _02024110 ; =0x00000182
b _020240FC
_020240CC:
ldr r1, [r5, #4]
mov r0, r7
bl sub_0202364C
cmp r0, #0
beq _020240F4
mov r1, r6, lsl #0x10
mov r0, r8
mov r1, r1, asr #0x10
bl sub_02023D64
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020240F4:
add r6, r6, #1
add r5, r5, #0xc
_020240FC:
cmp r6, r4
blt _020240CC
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_0202410C: .word ENTITIES
_02024110: .word 0x00000182
arm_func_end sub_020240B0
arm_func_start sub_02024114
sub_02024114: ; 0x02024114
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
mov r7, r1
ldr r5, _02024170 ; =ENTITIES
mov r6, #0
ldr r4, _02024174 ; =0x00000182
b _02024160
_02024130:
ldr r1, [r5, #4]
mov r0, r7
bl sub_0202364C
cmp r0, #0
beq _02024158
mov r1, r6, lsl #0x10
mov r0, r8
mov r1, r1, asr #0x10
bl sub_02023DC0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_02024158:
add r6, r6, #1
add r5, r5, #0xc
_02024160:
cmp r6, r4
blt _02024130
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02024170: .word ENTITIES
_02024174: .word 0x00000182
arm_func_end sub_02024114
arm_func_start sub_02024178
sub_02024178: ; 0x02024178
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
mov r7, r1
ldr r5, _020241D4 ; =ENTITIES
mov r6, #0
ldr r4, _020241D8 ; =0x00000182
b _020241C4
_02024194:
ldr r1, [r5, #4]
mov r0, r7
bl sub_0202364C
cmp r0, #0
beq _020241BC
mov r1, r6, lsl #0x10
mov r0, r8
mov r1, r1, asr #0x10
bl sub_02023FB4
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_020241BC:
add r6, r6, #1
add r5, r5, #0xc
_020241C4:
cmp r6, r4
blt _02024194
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_020241D4: .word ENTITIES
_020241D8: .word 0x00000182
arm_func_end sub_02024178
arm_func_start sub_020241DC
sub_020241DC: ; 0x020241DC
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x10
mov ip, r1, lsl #0x10
and lr, r1, #0x70000
mov r4, r0
cmp lr, #0x20000
mov r5, ip, lsr #0x10
bgt _02024220
cmp lr, #0x20000
bge _020242E0
cmp lr, #0
bgt _02024214
beq _02024240
b _020242E0
_02024214:
cmp lr, #0x10000
beq _0202426C
b _020242E0
_02024220:
cmp lr, #0x40000
bgt _02024234
bge _0202429C
cmp lr, #0x30000
b _020242E0
_02024234:
cmp lr, #0x50000
beq _020242AC
b _020242E0
_02024240:
tst r1, #0x80000
movne r2, #1
moveq r2, #0
mov r1, r5, lsl #0x10
and r3, r2, #0xff
mov r0, r4
mov r1, r1, asr #0x10
mov r2, #1
bl GetItemNameFormatted
mov r0, r4
b _020242E4
_0202426C:
strh r2, [sp, #0xc]
mov ip, #0
strb r3, [sp, #0xa]
ldr r2, _020242EC ; =_02099CAC
add r1, sp, #0xa
strb ip, [sp, #0xb]
strh r5, [sp, #0xe]
mov r3, #1
str ip, [sp]
bl sub_0200D310
mov r0, r4
b _020242E4
_0202429C:
mov r1, r5
bl sub_0202507C
mov r0, r4
b _020242E4
_020242AC:
mov r0, r5, lsl #0x10
add r1, sp, #4
mov r0, r0, asr #0x10
bl sub_02065CD8
mov ip, #0
ldr r2, _020242F0 ; =_02099CB8
add r1, sp, #4
mov r0, r4
mov r3, #1
str ip, [sp]
bl sub_0200D310
mov r0, r4
b _020242E4
_020242E0:
ldr r0, _020242F4 ; =_02099D50
_020242E4:
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_020242EC: .word _02099CAC
_020242F0: .word _02099CB8
_020242F4: .word _02099D50
arm_func_end sub_020241DC
arm_func_start sub_020242F8
sub_020242F8: ; 0x020242F8
stmdb sp!, {r4, lr}
mov r2, r1, lsl #0x10
mov r4, r0
mov r0, r2, lsr #0x10
ands r1, r1, #0x30000
beq _0202431C
cmp r1, #0x10000
beq _02024338
b _02024350
_0202431C:
bl GetMoveName
mov r2, r0
ldr r1, _02024358 ; =_02099D74
mov r0, r4
bl SprintfStatic__0202378C
mov r0, r4
ldmia sp!, {r4, pc}
_02024338:
bl GetDungeonResultString
mov r1, r0
mov r0, r4
bl strcpy
mov r0, r4
ldmia sp!, {r4, pc}
_02024350:
ldr r0, _0202435C ; =_02099D50
ldmia sp!, {r4, pc}
.align 2, 0
_02024358: .word _02099D74
_0202435C: .word _02099D50
arm_func_end sub_020242F8
arm_func_start SetStringAccuracy
SetStringAccuracy: ; 0x02024360
#if defined(EUROPE)
#define SET_STRING_ACCURACY_OFFSET 2
#elif defined(JAPAN)
#define SET_STRING_ACCURACY_OFFSET 0x17FD
#else
#define SET_STRING_ACCURACY_OFFSET 0
#endif
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _02024410 ; =0x000027A2
mov r4, r0
cmp r1, r2
blo _02024408
ldr r0, _02024414 ; =0x000029C1
cmp r1, r0
bhs _02024408
rsb r0, r2, #0
add r0, r1, r0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl GetMoveActualAccuracy
mov r6, #1
mov r3, #0
ldr r2, _02024418 ; =MOVE_ACCURACY_STARS_TABLE
b _020243B8
_020243A4:
ldr r1, [r2, r3, lsl #2]
cmp r0, r1
blt _020243C0
add r6, r6, #1
add r3, r3, #1
_020243B8:
cmp r3, #8
blt _020243A4
_020243C0:
cmp r6, #8
ble _020243D8
ldr r1, _0202441C ; =0x000027A0
mov r0, r4
bl GetStringFromFileVeneer
b _02024400
_020243D8:
mov r7, #0
strb r7, [r4]
ldr r5, _02024420 ; =_02099D84
b _020243F8
_020243E8:
mov r0, r4
mov r1, r5
bl strcat
add r7, r7, #1
_020243F8:
cmp r7, r6
blt _020243E8
_02024400:
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_02024408:
ldr r0, _02024424 ; =_02099D50
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02024410: .word 0x000027A2 + SET_STRING_ACCURACY_OFFSET
_02024414: .word 0x000029C1 + SET_STRING_ACCURACY_OFFSET
_02024418: .word MOVE_ACCURACY_STARS_TABLE
_0202441C: .word 0x000027A0 + SET_STRING_ACCURACY_OFFSET
_02024420: .word _02099D84
_02024424: .word _02099D50
arm_func_end SetStringAccuracy
arm_func_start SetStringPower
SetStringPower: ; 0x02024428
#if defined(EUROPE)
#define SET_STRING_POWER_OFFSET 2
#elif defined(JAPAN)
#define SET_STRING_POWER_OFFSET 0x17FD
#else
#define SET_STRING_POWER_OFFSET 0
#endif
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _020244DC ; =0x000027A2
mov r4, r0
cmp r1, r2
blo _020244D4
ldr r0, _020244E0 ; =0x000029C1
cmp r1, r0
bhs _020244D4
rsb r0, r2, #0
add r0, r1, r0
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl GetMoveBasePowerFromId
mov r3, #0
mov r5, r3
ldr r2, _020244E4 ; =MOVE_POWER_STARS_TABLE
b _02024480
_0202446C:
ldr r1, [r2, r5, lsl #2]
cmp r0, r1
blt _02024488
add r3, r3, #1
add r5, r5, #1
_02024480:
cmp r5, #6
blt _0202446C
_02024488:
cmp r3, #0
bne _020244A0
ldr r1, _020244E8 ; =0x000027A1
mov r0, r4
bl GetStringFromFileVeneer
b _020244CC
_020244A0:
mov r7, #0
strb r7, [r4]
add r5, r3, #2
ldr r6, _020244EC ; =_02099D84
b _020244C4
_020244B4:
mov r0, r4
mov r1, r6
bl strcat
add r7, r7, #1
_020244C4:
cmp r7, r5
blt _020244B4
_020244CC:
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, pc}
_020244D4:
ldr r0, _020244F0 ; =_02099D50
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020244DC: .word 0x000027A2 + SET_STRING_POWER_OFFSET
_020244E0: .word 0x000029C1 + SET_STRING_POWER_OFFSET
_020244E4: .word MOVE_POWER_STARS_TABLE
_020244E8: .word 0x000027A1 + SET_STRING_POWER_OFFSET
_020244EC: .word _02099D84
_020244F0: .word _02099D50
arm_func_end SetStringPower
arm_func_start sub_020244F4
sub_020244F4: ; 0x020244F4
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x400
mov r2, r1, lsl #0x10
mov r5, r0
mov r4, r2, lsr #0x10
ands r0, r1, #0x70000
beq _0202451C
cmp r0, #0x10000
beq _02024564
b _02024580
_0202451C:
#if defined(EUROPE)
add r0, r1, #0xc3
add r0, r0, #0x3400
#elif defined(JAPAN)
add r0, r1, #0x46
add r0, r0, #0x4700
#else
add r0, r1, #0xc1
add r0, r0, #0x3400
#endif
mov r1, r0, lsl #0x10
add r0, sp, #0
mov r1, r1, lsr #0x10
bl CopyStringFromId
cmp r4, #0x11
add r2, sp, #0
bne _02024550
ldr r1, _0202458C ; =_02099D8C
mov r0, r5
bl SprintfStatic__0202378C
b _0202455C
_02024550:
ldr r1, _02024590 ; =_02099D90
mov r0, r5
bl SprintfStatic__0202378C
_0202455C:
mov r0, r5
b _02024584
_02024564:
mov r0, r4
bl GetSize0x80Buffer2
mov r1, r0
mov r0, r5
bl strcpy
mov r0, r5
b _02024584
_02024580:
ldr r0, _02024594 ; =_02099D50
_02024584:
add sp, sp, #0x400
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0202458C: .word _02099D8C
_02024590: .word _02099D90
_02024594: .word _02099D50
arm_func_end sub_020244F4
arm_func_start sub_02024598
sub_02024598: ; 0x02024598
#ifdef EUROPE
stmdb sp!, {r3, r4, r5, lr}
movs r4, r1
mov r5, r0
bmi _02024828
bl GetLanguage
mov r2, r0
ldr r1, _0202484C ; =_020B05D4_EU
mov r0, r5
ldr r1, [r1, r2, lsl #3]
mov r2, r4
bl SprintfStatic__0202378C
b _02024844
_02024828:
bl GetLanguage
mov r2, r0
ldr r1, _02024850 ; =_020B05D8_EU
mov r0, r5
ldr r1, [r1, r2, lsl #3]
rsb r2, r4, #0
bl SprintfStatic__0202378C
_02024844:
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0202484C: .word _020B05D4_EU
_02024850: .word _020B05D8_EU
#else
stmdb sp!, {r4, lr}
movs r2, r1
mov r4, r0
bmi _020245B4
ldr r1, _020245C8 ; =_02099DA0
bl SprintfStatic__0202378C
b _020245C0
_020245B4:
ldr r1, _020245CC ; =_02099DB0
rsb r2, r2, #0
bl SprintfStatic__0202378C
_020245C0:
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_020245C8: .word _02099DA0
_020245CC: .word _02099DB0
#endif
arm_func_end sub_02024598
#ifdef EUROPE
arm_func_start sub_02024854_EU
sub_02024854_EU: ; 0x02024854
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x40
ldr ip, [sp, #0x50]
mov r6, r0
mov r5, r1
mov r4, r3
cmp ip, #2
bgt _02024884
ldr r1, _020248DC ; =_02099DC0
mov r2, r5
bl SprintfStatic__0202378C
b _020248D4
_02024884:
and r0, r2, #0xff
bl DungeonGoesUp
cmp r0, #0
add r0, sp, #0
beq _020248B8
mov r1, r4
bl sub_02024598
ldr r1, _020248E0 ; =_0209A2D4_EU
add r3, sp, #0
mov r0, r6
mov r2, r5
bl SprintfStatic__0202378C
b _020248D4
_020248B8:
rsb r1, r4, #0
bl sub_02024598
ldr r1, _020248E0 ; =_0209A2D4_EU
add r3, sp, #0
mov r0, r6
mov r2, r5
bl SprintfStatic__0202378C
_020248D4:
add sp, sp, #0x40
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_020248DC: .word _02099DC0
_020248E0: .word _0209A2D4_EU
arm_func_end sub_02024854_EU
#endif
arm_func_start sub_020245D0
sub_020245D0: ; 0x020245D0
#ifdef EUROPE
#define SUB_020245D0_STACK_OFFSET 4
#else
#define SUB_020245D0_STACK_OFFSET 0
#endif
#ifdef EUROPE
stmdb sp!, {r4, r5, r6, r7, lr}
#else
stmdb sp!, {r3, r4, r5, r6, r7, lr}
#endif
sub sp, sp, #0x80 + SUB_020245D0_STACK_OFFSET
mov r3, r1, lsl #0x10
and r1, r1, #0xf0000
mov r7, r0
mov r6, r2
cmp r1, #0x20000
mov r4, r3, lsr #0x10
bgt _02024618
cmp r1, #0x20000
bge _020246A8
cmp r1, #0
bgt _0202460C
beq _02024634
b _02024918
_0202460C:
cmp r1, #0x10000
beq _02024744
b _02024918
_02024618:
cmp r1, #0x30000
bgt _02024628
beq _02024668
b _02024918
_02024628:
cmp r1, #0x40000
beq _020248E4
b _02024918
_02024634:
mov r0, #0
mov r2, r0
and r1, r4, #0xff
bl sub_0204F6F8
mov r1, r0
add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET
bl GetStringFromFileVeneer
ldr r1, _02024924 ; =_02099DC0
add r2, sp, #0x40 + SUB_020245D0_STACK_OFFSET
mov r0, r7
bl SprintfStatic__0202378C
mov r0, r7
b _0202491C
_02024668:
mov r0, r4, lsl #0x10
mov r0, r0, asr #0x10
bl DungeonSwapIdxToId
mov r1, r0
mov r0, #0
mov r2, r0
bl sub_0204F6F8
mov r1, r0
add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET
bl GetStringFromFileVeneer
ldr r1, _02024924 ; =_02099DC0
add r2, sp, #0x40 + SUB_020245D0_STACK_OFFSET
mov r0, r7
bl SprintfStatic__0202378C
mov r0, r7
b _0202491C
_020246A8:
and r0, r4, #0xff
and r1, r6, #0xff
bl sub_0204F77C
bl GetNbFloorsPlusOne
mov r5, r0
mov r0, #0
mov r2, r0
and r1, r4, #0xff
bl sub_0204F6F8
mov r1, r0
add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET
bl GetStringFromFileVeneer
cmp r6, #0
mvnlt r0, #0
mullt r0, r6, r0
movlt r6, r0
#ifdef EUROPE
add r1, sp, #0x44
mov r0, r7
mov r2, r4
mov r3, r6
str r5, [sp]
bl sub_02024854_EU
#else
cmp r5, #2
bhi _02024704
ldr r1, _02024924 ; =_02099DC0
add r2, sp, #0x40
mov r0, r7
bl SprintfStatic__0202378C
b _0202473C
_02024704:
and r0, r4, #0xff
bl DungeonGoesUp
cmp r0, #0
add r2, sp, #0x40
beq _0202472C
ldr r1, _02024928 ; =_02099DD0
mov r0, r7
mov r3, r6
bl SprintfStatic__0202378C
b _0202473C
_0202472C:
ldr r1, _0202492C ; =_02099DEC
mov r0, r7
mov r3, r6
bl SprintfStatic__0202378C
_0202473C:
#endif
mov r0, r7
b _0202491C
_02024744:
and r0, r4, #0xff
and r1, r6, #0xff
bl sub_0204F77C
bl GetNbFloorsPlusOne
mov r5, r0
and r1, r4, #0xff
and r2, r6, #0xff
mov r0, #1
bl sub_0204F6F8
mov r1, r0
add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET
bl GetStringFromFileVeneer
mov r1, #0
add r0, sp, #0 + SUB_020245D0_STACK_OFFSET
add r3, sp, #0x40 + SUB_020245D0_STACK_OFFSET
_02024780:
ldrb r2, [r3, r1]
cmp r2, #0
beq _02024888
strb r2, [r0, r1]
cmp r2, #0xa
bne _02024880
add r1, r1, #1
mov r2, #0x5b
strb r2, [r0, r1]
add r2, r1, #1
mov r3, #0x43
strb r3, [r0, r2]
add r2, r1, #2
mov r3, #0x4c
strb r3, [r0, r2]
add r2, r1, #3
mov r3, #0x55
strb r3, [r0, r2]
add r2, r1, #4
mov r3, #0x4d
strb r3, [r0, r2]
add r2, r1, #5
mov r3, #0x5f
strb r3, [r0, r2]
add r2, r1, #6
mov r3, #0x53
strb r3, [r0, r2]
add r2, r1, #7
mov r3, #0x45
strb r3, [r0, r2]
add r2, r1, #8
mov r3, #0x54
strb r3, [r0, r2]
add r2, r1, #9
mov r3, #0x3a
strb r3, [r0, r2]
add r2, r1, #0xa
mov r3, #0x38
strb r3, [r0, r2]
add r2, r1, #0xb
mov r3, #0x30
strb r3, [r0, r2]
add r2, r1, #0xc
mov r3, #0x5d
strb r3, [r0, r2]
add ip, r1, #0xd
add r3, sp, #0x40 + SUB_020245D0_STACK_OFFSET
add r0, sp, #0 + SUB_020245D0_STACK_OFFSET
_02024840:
ldrb r2, [r3, r1]
add r1, r1, #1
strb r2, [r0, ip]
cmp r2, #0
add ip, ip, #1
bne _02024840
mov r3, #0
add r2, sp, #0 + SUB_020245D0_STACK_OFFSET
add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET
b _02024874
_02024868:
ldrb r1, [r2, r3]
strb r1, [r0, r3]
add r3, r3, #1
_02024874:
cmp r3, ip
bne _02024868
b _02024888
_02024880:
add r1, r1, #1
b _02024780
_02024888:
#ifdef EUROPE
add r1, sp, #0x44
mov r0, r7
mov r2, r4
mov r3, r6
str r5, [sp]
bl sub_02024854_EU
#else
cmp r5, #2
bhi _020248A4
ldr r1, _02024924 ; =_02099DC0
add r2, sp, #0x40
mov r0, r7
bl SprintfStatic__0202378C
b _020248DC
_020248A4:
and r0, r4, #0xff
bl DungeonGoesUp
cmp r0, #0
add r2, sp, #0x40
beq _020248CC
ldr r1, _02024928 ; =_02099DD0
mov r0, r7
mov r3, r6
bl SprintfStatic__0202378C
b _020248DC
_020248CC:
ldr r1, _0202492C ; =_02099DEC
mov r0, r7
mov r3, r6
bl SprintfStatic__0202378C
_020248DC:
#endif
mov r0, r7
b _0202491C
_020248E4:
and r1, r4, #0xff
and r2, r6, #0xff
mov r0, #0
bl sub_0204F6F8
mov r1, r0
add r0, sp, #0x40 + SUB_020245D0_STACK_OFFSET
bl GetStringFromFileVeneer
ldr r1, _02024924 ; =_02099DC0
add r2, sp, #0x40 + SUB_020245D0_STACK_OFFSET
mov r0, r7
bl SprintfStatic__0202378C
mov r0, r7
b _0202491C
_02024918:
ldr r0, _02024930 ; =_02099D50
_0202491C:
add sp, sp, #0x80 + SUB_020245D0_STACK_OFFSET
#ifdef EUROPE
ldmia sp!, {r4, r5, r6, r7, pc}
#else
ldmia sp!, {r3, r4, r5, r6, r7, pc}
#endif
.align 2, 0
_02024924: .word _02099DC0
#ifndef EUROPE
_02024928: .word _02099DD0
_0202492C: .word _02099DEC
#endif
_02024930: .word _02099D50
arm_func_end sub_020245D0
arm_func_start sub_02024934
sub_02024934: ; 0x02024934
ldr ip, _02024948 ; =sub_0204F6F8
mov r1, r0
mov r0, #0
mov r2, r0
bx ip
.align 2, 0
_02024948: .word sub_0204F6F8
arm_func_end sub_02024934
arm_func_start sub_0202494C
sub_0202494C: ; 0x0202494C
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x400
mov r2, r1, lsl #0x10
and r5, r1, #0xf0000
mov r6, r0
cmp r5, #0x20000
mov r4, r2, lsr #0x10
bgt _02024990
cmp r5, #0x20000
bge _020249F8
cmp r5, #0
bgt _02024984
beq _020249F8
b _02024A4C
_02024984:
cmp r5, #0x10000
beq _020249B0
b _02024A4C
_02024990:
cmp r5, #0x40000
bgt _020249A8
bge _020249B0
cmp r5, #0x30000
beq _020249B0
b _02024A4C
_020249A8:
cmp r5, #0x50000
bne _02024A4C
_020249B0:
cmp r5, #0x40000
mov r0, #0
bne _020249D0
mov r2, r0
mov r1, #0x25
bl LoadScriptVariableValueAtIndex
mov r4, r0
b _020249F8
_020249D0:
cmp r5, #0x50000
bne _020249EC
mov r1, #0x25
mov r2, #1
bl LoadScriptVariableValueAtIndex
mov r4, r0
b _020249F8
_020249EC:
mov r1, #0x20
bl LoadScriptVariableValue
mov r4, r0
_020249F8:
mov r0, r4, lsl #0x10
mov r0, r0, asr #0x10
bl sub_0206A90C
mov r1, r0
add r0, sp, #0
bl GetStringFromFileVeneer
cmp r5, #0x30000
cmpne r5, #0x20000
ldrne r0, _02024A58 ; =0x00000133
add r2, sp, #0
cmpne r4, r0
bne _02024A38
ldr r1, _02024A5C ; =_02099D8C
mov r0, r6
bl SprintfStatic__0202378C
b _02024A44
_02024A38:
ldr r1, _02024A60 ; =_02099DC0
mov r0, r6
bl SprintfStatic__0202378C
_02024A44:
mov r0, r6
b _02024A50
_02024A4C:
ldr r0, _02024A64 ; =_02099D50
_02024A50:
add sp, sp, #0x400
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02024A58: .word 0x00000133
_02024A5C: .word _02099D8C
_02024A60: .word _02099DC0
_02024A64: .word _02099D50
arm_func_end sub_0202494C
arm_func_start sub_02024A68
sub_02024A68: ; 0x02024A68
stmdb sp!, {r4, lr}
mov r2, r1, lsl #0x10
mov r4, r0
tst r1, #0xf0000
mov r1, r2, lsr #0x10
bne _02024A9C
#ifdef JAPAN
add r1, r1, #0xc9
add r1, r1, #0x200
#else
add r1, r1, #0x79
add r1, r1, #0xa00
#endif
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
bl GetStringFromFileVeneer
mov r0, r4
ldmia sp!, {r4, pc}
_02024A9C:
ldr r0, _02024AA4 ; =_02099D50
ldmia sp!, {r4, pc}
.align 2, 0
_02024AA4: .word _02099D50
arm_func_end sub_02024A68
arm_func_start sub_02024AA8
sub_02024AA8: ; 0x02024AA8
stmdb sp!, {r4, lr}
mov r2, r1, lsl #0x10
mov r4, r0
tst r1, #0xf0000
mov r0, r2, lsr #0x10
bne _02024AE8
#ifdef JAPAN
add r0, r0, #0xf5
add r0, r0, #0x3e00
#else
add r0, r0, #0x4d
add r0, r0, #0xa00
#endif
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl StringFromId
mov r1, r0
mov r0, r4
bl strcpy
mov r0, r4
ldmia sp!, {r4, pc}
_02024AE8:
ldr r0, _02024AF0 ; =_02099D50
ldmia sp!, {r4, pc}
.align 2, 0
_02024AF0: .word _02099D50
arm_func_end sub_02024AA8
arm_func_start GetRankString
GetRankString: ; 0x02024AF4
stmdb sp!, {r4, lr}
mov r2, r1, lsl #0x10
mov r4, r0
tst r1, #0xf0000
mov r0, r2, lsr #0x10
bne _02024B38
#ifdef JAPAN
add r0, r0, #0x7f
add r0, r0, #0x300
#else
add r0, r0, #0x77
add r0, r0, #0x100
#endif
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl StringFromId
mov r2, r0
ldr r1, _02024B40 ; =_02099E08
mov r0, r4
bl SprintfStatic__0202378C
mov r0, r4
ldmia sp!, {r4, pc}
_02024B38:
ldr r0, _02024B44 ; =_02099D50
ldmia sp!, {r4, pc}
.align 2, 0
_02024B40: .word _02099E08
_02024B44: .word _02099D50
arm_func_end GetRankString
arm_func_start sub_02024B48
sub_02024B48: ; 0x02024B48
stmdb sp!, {r4, lr}
mov r2, r1, lsl #0x10
mov r4, r0
tst r1, #0xf0000
mov r0, r2, lsr #0x10
bne _02024B88
#if defined(EUROPE)
add r0, r0, #0x71
add r0, r0, #0x2700
#elif defined(JAPAN)
add r0, r0, #0x79
add r0, r0, #0x4900
#else
add r0, r0, #0x6f
add r0, r0, #0x2700
#endif
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
bl StringFromId
mov r1, r0
mov r0, r4
bl strcpy
mov r0, r4
ldmia sp!, {r4, pc}
_02024B88:
ldr r0, _02024B90 ; =_02099D50
ldmia sp!, {r4, pc}
.align 2, 0
_02024B90: .word _02099D50
arm_func_end sub_02024B48
arm_func_start sub_02024B94
sub_02024B94: ; 0x02024B94
stmdb sp!, {r4, lr}
mov r2, r1, lsl #0x10
mov r4, r0
tst r1, #0xf0000
mov r0, r2, lsr #0x10
bne _02024BCC
and r0, r0, #0xff
bl GetTypeStringId
bl StringFromId
mov r1, r0
mov r0, r4
bl strcpy
mov r0, r4
ldmia sp!, {r4, pc}
_02024BCC:
ldr r0, _02024BD4 ; =_02099D50
ldmia sp!, {r4, pc}
.align 2, 0
_02024BD4: .word _02099D50
arm_func_end sub_02024B94
arm_func_start sub_02024BD8
sub_02024BD8: ; 0x02024BD8
stmdb sp!, {r4, lr}
mov r2, r1, lsl #0x10
mov r4, r0
tst r1, #0xf0000
mov r0, r2, lsr #0x10
bne _02024C0C
and r0, r0, #0xff
bl GetIqSkillStringId
mov r1, r0
mov r0, r4
bl GetStringFromFileVeneer
mov r0, r4
ldmia sp!, {r4, pc}
_02024C0C:
ldr r0, _02024C14 ; =_02099D50
ldmia sp!, {r4, pc}
.align 2, 0
_02024C14: .word _02099D50
arm_func_end sub_02024BD8
arm_func_start sub_02024C18
sub_02024C18: ; 0x02024C18
stmdb sp!, {r4, lr}
sub sp, sp, #0x400
mov r2, r1, lsl #0x10
mov r4, r0
tst r1, #0xf0000
mov r1, r2, lsr #0x10
bne _02024C58
add r0, sp, #0
and r1, r1, #0xff
bl GetAbilityString
ldr r1, _02024C64 ; =_02099D8C
add r2, sp, #0
mov r0, r4
bl SprintfStatic__0202378C
mov r0, r4
b _02024C5C
_02024C58:
ldr r0, _02024C68 ; =_02099D50
_02024C5C:
add sp, sp, #0x400
ldmia sp!, {r4, pc}
.align 2, 0
_02024C64: .word _02099D8C
_02024C68: .word _02099D50
arm_func_end sub_02024C18
arm_func_start GetCurrentTeamNameString
GetCurrentTeamNameString: ; 0x02024C6C
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x40
mov r4, r1
mov r5, r0
bl GetExecuteSpecialEpisodeType
cmp r4, #2
bne _02024C98
mvn r1, #0
cmp r0, r1
moveq r4, #0
movne r4, #1
_02024C98:
cmp r4, #0
beq _02024CAC
cmp r4, #1
beq _02024CFC
b _02024D2C
_02024CAC:
mvn r1, #0
cmp r0, r1
bne _02024CC8
mov r0, #1
bl GetResolvedPerformanceProgressFlag
cmp r0, #0
beq _02024CE8
_02024CC8:
add r0, sp, #0
bl GetMainTeamName
ldr r1, _02024D38 ; =_02099E08
add r2, sp, #0
mov r0, r5
bl SprintfStatic__0202378C
mov r0, r5
b _02024D30
_02024CE8:
ldr r1, _02024D3C ; =0x00000237
mov r0, r5
bl GetStringFromFileVeneer
mov r0, r5
b _02024D30
_02024CFC:
cmp r0, #3
ldrne r0, _02024D40 ; =_02099D50
bne _02024D30
ldr r1, _02024D44 ; =0x00000236
add r0, sp, #0
bl GetStringFromFileVeneer
ldr r1, _02024D38 ; =_02099E08
add r2, sp, #0
mov r0, r5
bl SprintfStatic__0202378C
mov r0, r5
b _02024D30
_02024D2C:
ldr r0, _02024D40 ; =_02099D50
_02024D30:
add sp, sp, #0x40
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02024D38: .word _02099E08
#ifdef JAPAN
_02024D3C: .word 0x000004C8
_02024D40: .word _02099D50
_02024D44: .word 0x000004C7
#else
_02024D3C: .word 0x00000237
_02024D40: .word _02099D50
_02024D44: .word 0x00000236
#endif
arm_func_end GetCurrentTeamNameString
arm_func_start sub_02024D48
sub_02024D48: ; 0x02024D48
stmdb sp!, {r4, lr}
mov r2, r1, lsl #0x10
mov r4, r0
tst r1, #0xf0000
mov r1, r2, lsr #0x10
bne _02024D70
and r1, r1, #0xff
bl sub_02058C30
mov r0, r4
ldmia sp!, {r4, pc}
_02024D70:
ldr r0, _02024D78 ; =_02099D50
ldmia sp!, {r4, pc}
.align 2, 0
_02024D78: .word _02099D50
arm_func_end sub_02024D48
#ifdef EUROPE
arm_func_start sub_02025010_EU
sub_02025010_EU: ; 0x02025010
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl GetLanguage
ldr r2, _02025040 ; =_020B05C0_EU
ldr r1, _02025044 ; =_0209A2F4_EU
ldr r2, [r2, r0, lsl #2]
mov r0, r5
mov r3, r4
bl SprintfStatic__0202378C
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02025040: .word _020B05C0_EU
_02025044: .word _0209A2F4_EU
arm_func_end sub_02025010_EU
#endif
arm_func_start sub_02024D7C
sub_02024D7C: ; 0x02024D7C
stmdb sp!, {r4, lr}
mov r2, r1, lsl #0x10
mov r4, r0
mov r2, r2, lsr #0x10
ands r0, r1, #0xf0000
beq _02024DD4
cmp r0, #0x10000
bne _02024DEC
mov r0, r2, lsl #0x10
mov r0, r0, asr #0x10
bl GetMonsterGenderVeneer
cmp r0, #1
beq _02024DC0
cmp r0, #2
beq _02024DC8
cmp r0, #3
b _02024DD0
_02024DC0:
mov r2, #0
b _02024DD4
_02024DC8:
mov r2, #1
b _02024DD4
_02024DD0:
mov r2, #2
_02024DD4:
ldr r1, _02024DF4 ; =_022A5048
mov r0, r4
add r1, r1, r2, lsl #2
bl strcpy
mov r0, r4
ldmia sp!, {r4, pc}
_02024DEC:
ldr r0, _02024DF8 ; =_02099D50
ldmia sp!, {r4, pc}
.align 2, 0
_02024DF4: .word _022A5048
_02024DF8: .word _02099D50
arm_func_end sub_02024D7C
arm_func_start GetBagNameString
GetBagNameString: ; 0x02024DFC
stmdb sp!, {r4, lr}
mov r4, r0
bl GetCurrentBagCapacity
cmp r0, #2
ldrlt r0, _02024E2C ; =0x000008E1
ldrge r0, _02024E30 ; =0x000008E2
mov r1, r0, lsl #0x10
mov r0, r4
mov r1, r1, lsr #0x10
bl GetStringFromFileVeneer
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
#ifdef JAPAN
_02024E2C: .word 0x00001D39
_02024E30: .word 0x00001D3A
#else
_02024E2C: .word 0x000008E1
_02024E30: .word 0x000008E2
#endif
arm_func_end GetBagNameString
arm_func_start sub_02024E34
sub_02024E34: ; 0x02024E34
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x44
sub sp, sp, #0x400
mov sl, r0
ldr r0, _02024F94 ; =0x000001B1
mov r4, r1
bl StringFromId
str r0, [sp]
ldr r0, _02024F98 ; =0x000001B2
bl StringFromId
ldr r1, _02024F9C ; =0x000029D1
mov fp, r0
cmp r4, r1
blo _02024E94
ldr r0, _02024FA0 ; =0x00002F49
cmp r4, r0
bhs _02024E94
rsb r0, r1, #0
add r0, r4, r0
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bl GetItemMoveId16
mov r5, r0
b _02024E98
_02024E94:
mov r5, #0
_02024E98:
mov r0, sl
#ifdef JAPAN
mov r1, #0x3b8
#else
mov r1, #0x1b0
#endif
bl GetStringFromFileVeneer
ldr r1, _02024FA4 ; =_02099E18
mov r0, sl
bl strcat
cmp r5, #0
beq _02024F78
bl GetGameMode
cmp r0, #1
ldrls sb, _02024FA8 ; =_02099CA4
mvn r4, #0
ldrhi sb, _02024FAC ; =_02099CC4
b _02024F6C
_02024ED0:
ldrsh r6, [sb], #2
mov r0, r6
bl GetActorMatchingStorageId
mov r7, r0
cmp r6, #0x16
bne _02024EF4
ldr r1, _02024FA4 ; =_02099E18
mov r0, sl
bl strcat
_02024EF4:
cmp r7, r4
beq _02024F6C
mov r0, r7
bl GetTeamMember
ldrsh r8, [r0, #4]
bl sub_0204E530
cmp r0, #0
bne _02024F2C
mov r0, r7
bl GetActiveRosterIndex
cmp r0, r4
beq _02024F2C
bl GetActiveTeamMember
ldrsh r8, [r0, #0xc]
_02024F2C:
add r0, sp, #4
mov r1, r6
bl sub_02023DC0
mov r0, r5
mov r1, r8
bl sub_02053D1C
cmp r0, #0
ldrne r3, [sp]
ldr r1, _02024FB0 ; =_02099E20
moveq r3, fp
add r0, sp, #0x44
add r2, sp, #4
bl SprintfStatic__0202378C
mov r0, sl
add r1, sp, #0x44
bl strcat
_02024F6C:
ldrsh r0, [sb]
cmp r0, r4
bne _02024ED0
_02024F78:
ldr r1, _02024FB4 ; =_02099E40
mov r0, sl
bl strcat
mov r0, sl
add sp, sp, #0x44
add sp, sp, #0x400
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
#ifdef JAPAN
_02024F94: .word 0x000003B9
_02024F98: .word 0x000003BA
#else
_02024F94: .word 0x000001B1
_02024F98: .word 0x000001B2
#endif
#if defined(EUROPE)
_02024F9C: .word 0x000029D3
_02024FA0: .word 0x00002F4B
#elif defined(JAPAN)
_02024F9C: .word 0x000041CE
_02024FA0: .word 0x00004746
#else
_02024F9C: .word 0x000029D1
_02024FA0: .word 0x00002F49
#endif
_02024FA4: .word _02099E18
_02024FA8: .word _02099CA4
_02024FAC: .word _02099CC4
_02024FB0: .word _02099E20
_02024FB4: .word _02099E40
arm_func_end sub_02024E34
arm_func_start GetSize0x80Buffer
GetSize0x80Buffer: ; 0x02024FB8
ldr r1, _02024FC4 ; =_022A5468
add r0, r1, r0, lsl #7
bx lr
.align 2, 0
_02024FC4: .word _022A5468
arm_func_end GetSize0x80Buffer
arm_func_start GetSize0x80Buffer2
GetSize0x80Buffer2: ; 0x02024FC8
ldr r1, _02024FD4 ; =_022A5068
add r0, r1, r0, lsl #7
bx lr
.align 2, 0
_02024FD4: .word _022A5068
arm_func_end GetSize0x80Buffer2
arm_func_start GetDungeonResultString
GetDungeonResultString: ; 0x02024FD8
ldr r1, _02024FE4 ; =_022A5268
add r0, r1, r0, lsl #7
bx lr
.align 2, 0
_02024FE4: .word _022A5268
arm_func_end GetDungeonResultString
arm_func_start SubstitutePlaceholderItemTags
SubstitutePlaceholderItemTags: ; 0x02024FE8
stmdb sp!, {r3, r4, r5, lr}
cmp r1, #0
beq _02025030
mov r3, #0x14
mul r3, r0, r3
ldr lr, _02025070 ; =_022A596A
ldrh r0, [r1]
ldr ip, _02025074 ; =_022A5969
add r4, lr, r3
strh r0, [lr, r3]
ldrh lr, [r1, #2]
mov r0, #1
add r5, ip, r3
strh lr, [r4, #2]
ldrh r1, [r1, #4]
strh r1, [r4, #4]
strb r0, [ip, r3]
b _02025048
_02025030:
mov r1, #0x14
mul r3, r0, r1
ldr r1, _02025074 ; =_022A5969
mov r0, #0
strb r0, [r1, r3]
add r5, r1, r3
_02025048:
cmp r2, #0
moveq r0, #0
beq _02025068
ldr ip, _02025078 ; =_022A5970
ldmia r2, {r0, r1, r2}
add r3, ip, r3
stmia r3, {r0, r1, r2}
mov r0, #1
_02025068:
strb r0, [r5]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02025070: .word _022A596A
_02025074: .word _022A5969
_02025078: .word _022A5970
arm_func_end SubstitutePlaceholderItemTags
arm_func_start sub_0202507C
sub_0202507C: ; 0x0202507C
stmdb sp!, {r3, lr}
mov r2, #0x14
mul r3, r1, r2
ldr r1, _020250D8 ; =_022A5969
ldrb r1, [r1, r3]
cmp r1, #0
beq _020250BC
ldr r1, _020250DC ; =_022A596A
ldr r2, _020250E0 ; =_022A5970
mov ip, #0
add r1, r1, r3
add r2, r2, r3
mov r3, #1
str ip, [sp]
bl sub_0200D310
ldmia sp!, {r3, pc}
_020250BC:
ldr r1, _020250DC ; =_022A596A
mov r2, #0
add r1, r1, r3
mov r3, #1
str r2, [sp]
bl sub_0200D310
ldmia sp!, {r3, pc}
.align 2, 0
_020250D8: .word _022A5969
_020250DC: .word _022A596A
_020250E0: .word _022A5970
arm_func_end sub_0202507C