mirror of
https://github.com/pret/pmd-sky.git
synced 2026-04-25 07:24:42 -05:00
14405 lines
261 KiB
ArmAsm
14405 lines
261 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "main.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start NitroMain
|
|
NitroMain: ; 0x02000C6C
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #8
|
|
bl sub_0207A36C
|
|
mov r0, #0x12
|
|
bl sub_020833F8
|
|
ldr r0, _02000DD0 ; =sub_020024D4
|
|
bl sub_020845D8
|
|
bl sub_0207AD54
|
|
bl sub_02076070
|
|
mvn r0, #0
|
|
bl sub_0207F3BC
|
|
bl sub_0207A220
|
|
bl sub_0207A30C
|
|
mov r0, #0
|
|
bl sub_0207A524
|
|
mov r4, r0
|
|
mov r0, #0
|
|
bl sub_0207A538
|
|
mov r2, r4
|
|
mov r1, r0
|
|
ldr r0, _02000DD4 ; =0x02092448
|
|
bl DebugPrint0__0200C1FC
|
|
mov r0, #0
|
|
bl sub_0207A524
|
|
mov r4, r0
|
|
mov r0, #0
|
|
bl sub_0207A538
|
|
cmp r0, r4
|
|
bhs _02000D44
|
|
mov r0, #0
|
|
bl sub_0207A524
|
|
mov r4, r0
|
|
mov r0, #0
|
|
bl sub_0207A538
|
|
mov r1, r0
|
|
mov r2, r4
|
|
mov r0, #0
|
|
mov r3, #1
|
|
bl sub_0207A98C
|
|
mov r1, r0
|
|
mov r0, #0
|
|
bl sub_0207A6EC
|
|
mov r0, #0
|
|
bl sub_0207A524
|
|
mov r4, r0
|
|
mov r0, #0
|
|
bl sub_0207A538
|
|
mov r2, r4
|
|
mov r1, r0
|
|
mov r0, #0
|
|
bl sub_0207AA34
|
|
mov r1, r0
|
|
mov r0, #0
|
|
bl sub_0207A95C
|
|
_02000D44:
|
|
ldr r2, _02000DD8 ; =0x04000208
|
|
mov r0, #1
|
|
ldrh r1, [r2]
|
|
strh r0, [r2]
|
|
bl ClearIrqFlag
|
|
bl sub_02008DAC
|
|
add r0, sp, #0
|
|
bl sub_0207B9EC
|
|
ldrb r1, [sp, #2]
|
|
ldrb r0, [sp, #3]
|
|
ldrb r3, [sp]
|
|
ldrb r2, [sp, #1]
|
|
smulbb r0, r1, r0
|
|
mla r0, r3, r2, r0
|
|
ldrb r2, [sp, #4]
|
|
ldrb r1, [sp, #5]
|
|
mla r0, r2, r1, r0
|
|
bl sub_02002228
|
|
bl sub_020024E4
|
|
bl sub_020028AC
|
|
bl sub_0200294C
|
|
bl sub_02002A98
|
|
bl sub_02002C2C
|
|
bl sub_02002F0C
|
|
bl InitMemAllocTableVeneer
|
|
bl sub_0200C0D4
|
|
bl sub_02002FB8
|
|
ldr r0, _02000DDC ; =0x02092460
|
|
bl sub_020082F4
|
|
bl sub_0204A5D0
|
|
bl sub_02003ECC
|
|
bl TaskProcBoot
|
|
bl sub_02079C14
|
|
_02000DC8:
|
|
bl WaitForInterrupt
|
|
b _02000DC8
|
|
.align 2, 0
|
|
_02000DD0: .word sub_020024D4
|
|
_02000DD4: .word 0x02092448
|
|
_02000DD8: .word 0x04000208
|
|
_02000DDC: .word 0x02092460
|
|
arm_func_end NitroMain
|
|
|
|
arm_func_start InitMemAllocTable
|
|
InitMemAllocTable: ; 0x02000DE0
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #8
|
|
ldr r1, _02000E54 ; =0x020B4BC0
|
|
ldr r3, _02000E58 ; =0x001E6400
|
|
ldr r0, _02000E5C ; =0x02090B70
|
|
mov r2, r1
|
|
str r1, [sp]
|
|
str r3, [sp, #4]
|
|
bl DebugPrint0__0200C1FC
|
|
ldr ip, _02000E60 ; =0x020B3380
|
|
mov lr, #0
|
|
ldr r0, _02000E64 ; =0x020B3384
|
|
ldr r2, _02000E68 ; =0x020B33C0
|
|
add r1, sp, #0
|
|
mov r3, #0x100
|
|
str lr, [ip]
|
|
bl InitMemArena
|
|
ldr r0, _02000E6C ; =0x020AEF08
|
|
bl sub_02002C40
|
|
ldr r0, _02000E6C ; =0x020AEF08
|
|
mov r1, #7
|
|
bl sub_02002CAC
|
|
ldr r0, _02000E6C ; =0x020AEF08
|
|
bl sub_02002E98
|
|
mov r0, #0
|
|
mov r1, r0
|
|
bl SetMemAllocatorParams
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02000E54: .word 0x020B4BC0
|
|
_02000E58: .word 0x001E6400
|
|
_02000E5C: .word 0x02090B70
|
|
_02000E60: .word 0x020B3380
|
|
_02000E64: .word 0x020B3384
|
|
_02000E68: .word 0x020B33C0
|
|
_02000E6C: .word 0x020AEF08
|
|
arm_func_end InitMemAllocTable
|
|
|
|
arm_func_start SetMemAllocatorParams
|
|
SetMemAllocatorParams: ; 0x02000E70
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
ldr r0, _02000EB0 ; =0x020AEF08
|
|
mov r4, r1
|
|
bl sub_02002CB4
|
|
cmp r5, #0
|
|
ldreq r5, _02000EB4 ; =GetAllocArenaDefault
|
|
ldr r0, _02000EB8 ; =0x020AEF00
|
|
cmp r4, #0
|
|
str r5, [r0]
|
|
ldreq r4, _02000EBC ; =GetFreeArenaDefault
|
|
ldr r1, _02000EB8 ; =0x020AEF00
|
|
ldr r0, _02000EB0 ; =0x020AEF08
|
|
str r4, [r1, #4]
|
|
bl sub_02002E98
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02000EB0: .word 0x020AEF08
|
|
_02000EB4: .word GetAllocArenaDefault
|
|
_02000EB8: .word 0x020AEF00
|
|
_02000EBC: .word GetFreeArenaDefault
|
|
arm_func_end SetMemAllocatorParams
|
|
|
|
arm_func_start GetAllocArenaDefault
|
|
GetAllocArenaDefault: ; 0x02000EC0
|
|
bx lr
|
|
arm_func_end GetAllocArenaDefault
|
|
|
|
arm_func_start GetFreeArenaDefault
|
|
GetFreeArenaDefault: ; 0x02000EC4
|
|
bx lr
|
|
arm_func_end GetFreeArenaDefault
|
|
|
|
arm_func_start InitMemArena
|
|
InitMemArena: ; 0x02000EC8
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr ip, _02000F3C ; =0x020B3380
|
|
ldr r6, [r1, #4]
|
|
ldr r5, [ip]
|
|
ldr lr, _02000F40 ; =0x020B33A0
|
|
add r4, r5, #1
|
|
str r4, [ip]
|
|
str r0, [lr, r5, lsl #2]
|
|
ldr r1, [r1]
|
|
bic r4, r6, #3
|
|
str r1, [r0, #0x14]
|
|
str r4, [r0, #0x18]
|
|
mov r1, #2
|
|
str r1, [r0]
|
|
mov ip, #0
|
|
str ip, [r0, #4]
|
|
str r2, [r0, #8]
|
|
mov r1, #1
|
|
str r1, [r0, #0xc]
|
|
str r3, [r0, #0x10]
|
|
ldr r1, [r0, #8]
|
|
str ip, [r1]
|
|
str ip, [r1, #4]
|
|
ldr r0, [r0, #0x14]
|
|
str r0, [r1, #0xc]
|
|
str r4, [r1, #0x10]
|
|
str ip, [r1, #0x14]
|
|
str ip, [r1, #8]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02000F3C: .word 0x020B3380
|
|
_02000F40: .word 0x020B33A0
|
|
arm_func_end InitMemArena
|
|
|
|
arm_func_start MemAllocFlagsToBlockType
|
|
MemAllocFlagsToBlockType: ; 0x02000F44
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
bxeq lr
|
|
tst r0, #8
|
|
movne r0, #4
|
|
bxne lr
|
|
and r0, r0, #7
|
|
cmp r0, #7
|
|
moveq r0, #1
|
|
bxeq lr
|
|
cmp r0, #1
|
|
moveq r0, #2
|
|
bxeq lr
|
|
cmp r0, #3
|
|
moveq r0, #3
|
|
movne r0, #5
|
|
bx lr
|
|
arm_func_end MemAllocFlagsToBlockType
|
|
|
|
arm_func_start FindAvailableMemBlock
|
|
FindAvailableMemBlock: ; 0x02000F88
|
|
stmdb sp!, {r3, lr}
|
|
tst r1, #4
|
|
beq _02001008
|
|
ldr r1, [r0, #0xc]
|
|
ldr r3, [r0, #8]
|
|
sub r0, r1, #1
|
|
mov r1, #0x18
|
|
mla r3, r0, r1, r3
|
|
b _02000FD0
|
|
_02000FAC:
|
|
ldr r1, [r3, #4]
|
|
tst r1, #1
|
|
bne _02000FC8
|
|
ldr r1, [r3, #0x10]
|
|
cmp r1, r2
|
|
blt _02000FFC
|
|
ldmia sp!, {r3, pc}
|
|
_02000FC8:
|
|
sub r0, r0, #1
|
|
sub r3, r3, #0x18
|
|
_02000FD0:
|
|
cmp r0, #0
|
|
bge _02000FAC
|
|
b _02000FFC
|
|
_02000FDC:
|
|
ldr r1, [r3, #4]
|
|
tst r1, #1
|
|
bne _02000FF4
|
|
ldr r1, [r3, #0x10]
|
|
cmp r1, r2
|
|
ldmgeia sp!, {r3, pc}
|
|
_02000FF4:
|
|
sub r0, r0, #1
|
|
sub r3, r3, #0x18
|
|
_02000FFC:
|
|
cmp r0, #0
|
|
bge _02000FDC
|
|
b _02001064
|
|
_02001008:
|
|
ldr r3, [r0, #0xc]
|
|
ldr r1, [r0, #8]
|
|
subs ip, r3, #1
|
|
mov r0, #0x18
|
|
mla lr, ip, r0, r1
|
|
ldr r3, _0200106C ; =0x001E6401
|
|
mvn r0, #0
|
|
ldmmiia sp!, {r3, pc}
|
|
b _02001058
|
|
_0200102C:
|
|
ldr r1, [lr, #4]
|
|
tst r1, #1
|
|
bne _02001050
|
|
ldr r1, [lr, #0x10]
|
|
cmp r1, r2
|
|
blt _02001050
|
|
cmp r1, r3
|
|
movlt r0, ip
|
|
movlt r3, r1
|
|
_02001050:
|
|
sub ip, ip, #1
|
|
sub lr, lr, #0x18
|
|
_02001058:
|
|
cmp ip, #0
|
|
bge _0200102C
|
|
ldmia sp!, {r3, pc}
|
|
_02001064:
|
|
mvn r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0200106C: .word 0x001E6401
|
|
arm_func_end FindAvailableMemBlock
|
|
|
|
arm_func_start SplitMemBlock
|
|
SplitMemBlock: ; 0x02001070
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #8
|
|
mov sl, r0
|
|
ldr r5, [sl, #8]
|
|
mov sb, r1
|
|
mov r0, #0x18
|
|
mla r4, sb, r0, r5
|
|
mov fp, r3
|
|
add r3, fp, #3
|
|
ldr r1, [r4, #0x10]
|
|
bic r7, r3, #3
|
|
mov r8, r2
|
|
cmp r1, r7
|
|
ble _02001148
|
|
ldr r6, [sl, #0xc]
|
|
mla r5, r6, r0, r5
|
|
cmp r6, sb
|
|
ble _020010E4
|
|
b _020010DC
|
|
_020010BC:
|
|
sub lr, r5, #0x18
|
|
mov ip, r5
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldmia lr, {r0, r1}
|
|
stmia ip, {r0, r1}
|
|
sub r6, r6, #1
|
|
sub r5, r5, #0x18
|
|
_020010DC:
|
|
cmp r6, sb
|
|
bgt _020010BC
|
|
_020010E4:
|
|
ldr r0, [sl, #0xc]
|
|
add r1, r0, #1
|
|
str r1, [sl, #0xc]
|
|
ldr r0, [sl, #0x10]
|
|
cmp r1, r0
|
|
ble _02001124
|
|
ldr r1, _02001168 ; =0x02090B40
|
|
add r0, sp, #0
|
|
ldr r2, [r1, #0x1c]
|
|
ldr r1, [r1, #0x18]
|
|
str r2, [sp, #4]
|
|
str r1, [sp]
|
|
ldr r2, [sl, #0xc]
|
|
ldr r3, [sl, #0x10]
|
|
ldr r1, _0200116C ; =0x02090BA0
|
|
bl FatalError
|
|
_02001124:
|
|
ldr r0, [r4, #0x10]
|
|
sub r1, r0, r7
|
|
str r1, [r4, #0x10]
|
|
ldr r0, [r4, #0xc]
|
|
add r4, r4, #0x18
|
|
add r0, r0, r1
|
|
str r0, [r4, #0xc]
|
|
str r7, [r4, #0x10]
|
|
str fp, [r4, #0x14]
|
|
_02001148:
|
|
mov r0, r8
|
|
bl MemAllocFlagsToBlockType
|
|
stmia r4, {r0, r8}
|
|
ldr r1, [sp, #0x30]
|
|
mov r0, r4
|
|
str r1, [r4, #8]
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02001168: .word 0x02090B40
|
|
_0200116C: .word 0x02090BA0
|
|
arm_func_end SplitMemBlock
|
|
|
|
arm_func_start MemAlloc
|
|
MemAlloc: ; 0x02001170
|
|
ldr ip, _02001184 ; =MemLocateSet
|
|
mov r2, r1
|
|
mov r1, r0
|
|
mov r0, #0
|
|
bx ip
|
|
.align 2, 0
|
|
_02001184: .word MemLocateSet
|
|
arm_func_end MemAlloc
|
|
|
|
arm_func_start MemFree
|
|
MemFree: ; 0x02001188
|
|
ldr ip, _02001198 ; =MemLocateUnset
|
|
mov r1, r0
|
|
mov r0, #0
|
|
bx ip
|
|
.align 2, 0
|
|
_02001198: .word MemLocateUnset
|
|
arm_func_end MemFree
|
|
|
|
arm_func_start MemArenaAlloc
|
|
MemArenaAlloc: ; 0x0200119C
|
|
stmdb sp!, {r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0x14
|
|
mov r5, r0
|
|
ldr r0, _0200126C ; =0x020AEF08
|
|
mov r4, r1
|
|
mov r7, r2
|
|
mov r6, r3
|
|
bl sub_02002CB4
|
|
ldr r1, _02001270 ; =0x020AEF00
|
|
mov r0, r5
|
|
ldr r2, [r1]
|
|
mov r1, r6
|
|
blx r2
|
|
movs r5, r0
|
|
ldreq r5, _02001274 ; =0x020B3384
|
|
mov r2, r4
|
|
mov r0, r5
|
|
mov r1, #9
|
|
bl FindAvailableMemBlock
|
|
movs r1, r0
|
|
bmi _02001238
|
|
mov r0, r5
|
|
mov r3, r4
|
|
str r6, [sp]
|
|
mov r2, #9
|
|
bl SplitMemBlock
|
|
ldr r2, [r0, #0xc]
|
|
mov r1, r7
|
|
str r2, [sp, #0xc]
|
|
ldr r2, [r0, #0x10]
|
|
add r0, sp, #0xc
|
|
str r2, [sp, #0x10]
|
|
bl CreateMemArena
|
|
mov r4, r0
|
|
ldr r0, _0200126C ; =0x020AEF08
|
|
str r5, [r4, #4]
|
|
bl sub_02002E98
|
|
mov r0, r4
|
|
b _02001264
|
|
_02001238:
|
|
ldr r0, _0200126C ; =0x020AEF08
|
|
bl sub_02002E98
|
|
ldr r1, _02001278 ; =0x02090B40
|
|
add r0, sp, #4
|
|
ldr r3, [r1, #0xc]
|
|
ldr ip, [r1, #8]
|
|
ldr r1, _0200127C ; =0x02090BC8
|
|
mov r2, r4
|
|
str ip, [sp, #4]
|
|
str r3, [sp, #8]
|
|
bl FatalError
|
|
_02001264:
|
|
add sp, sp, #0x14
|
|
ldmia sp!, {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0200126C: .word 0x020AEF08
|
|
_02001270: .word 0x020AEF00
|
|
_02001274: .word 0x020B3384
|
|
_02001278: .word 0x02090B40
|
|
_0200127C: .word 0x02090BC8
|
|
arm_func_end MemArenaAlloc
|
|
|
|
arm_func_start CreateMemArena
|
|
CreateMemArena: ; 0x02001280
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #8
|
|
mov r3, r1
|
|
mov r1, #0x18
|
|
mul r2, r3, r1
|
|
ldr r1, [r0, #4]
|
|
ldr r4, [r0]
|
|
add r0, r2, #3
|
|
bic ip, r0, #3
|
|
sub r0, r1, #0x1c
|
|
sub r0, r0, ip
|
|
bic lr, r0, #3
|
|
add r2, r4, #0x1c
|
|
add ip, r2, ip
|
|
add r1, sp, #0
|
|
mov r0, r4
|
|
str ip, [sp]
|
|
str lr, [sp, #4]
|
|
bl InitMemArena
|
|
mov r0, r4
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end CreateMemArena
|
|
|
|
arm_func_start sub_020012D8
|
|
sub_020012D8: ; 0x020012D8
|
|
stmdb sp!, {r3, lr}
|
|
movs r1, r0
|
|
ldmeqia sp!, {r3, pc}
|
|
ldr r0, [r1, #0xc]
|
|
cmp r0, #1
|
|
ldreq r0, [r1, #8]
|
|
ldreq r0, [r0, #4]
|
|
cmpeq r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
tst r0, #0xff
|
|
ldmeqia sp!, {r3, pc}
|
|
ldr r0, _02001388 ; =0x020B3380
|
|
mov ip, #0
|
|
mov r3, ip
|
|
ldr lr, [r0]
|
|
ldr r2, _0200138C ; =0x020B33A0
|
|
b _02001368
|
|
_02001320:
|
|
ldr r0, [r2, r3, lsl #2]
|
|
cmp r0, r1
|
|
bne _02001364
|
|
ldr r0, _02001388 ; =0x020B3380
|
|
ldr r2, [r0]
|
|
sub ip, r2, #1
|
|
str ip, [r0]
|
|
ldr r2, _0200138C ; =0x020B33A0
|
|
b _02001354
|
|
_02001344:
|
|
add r0, r2, r3, lsl #2
|
|
ldr r0, [r0, #4]
|
|
str r0, [r2, r3, lsl #2]
|
|
add r3, r3, #1
|
|
_02001354:
|
|
cmp r3, ip
|
|
blt _02001344
|
|
mov ip, #1
|
|
b _02001370
|
|
_02001364:
|
|
add r3, r3, #1
|
|
_02001368:
|
|
cmp r3, lr
|
|
blt _02001320
|
|
_02001370:
|
|
cmp ip, #0
|
|
ldrne r0, [r1, #4]
|
|
cmpne r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
bl MemLocateUnset
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02001388: .word 0x020B3380
|
|
_0200138C: .word 0x020B33A0
|
|
arm_func_end sub_020012D8
|
|
|
|
arm_func_start MemLocateSet
|
|
MemLocateSet: ; 0x02001390
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x20
|
|
mov r4, r0
|
|
ldr r0, _0200161C ; =0x020AEF08
|
|
mov r5, r1
|
|
orr r7, r2, #0x100
|
|
bl sub_02002CB4
|
|
ldr r1, _02001620 ; =0x020AEF00
|
|
mov r0, r4
|
|
ldr r2, [r1]
|
|
mov r1, r7
|
|
blx r2
|
|
movs r4, r0
|
|
mov r0, r7, asr #8
|
|
orr r8, r0, #1
|
|
and r0, r8, #2
|
|
ldreq r4, _02001624 ; =0x020B3384
|
|
cmp r0, #2
|
|
and sb, r7, #0xff
|
|
bne _020015A0
|
|
tst r8, #4
|
|
ldr r0, [r4, #8]
|
|
ldr lr, [r4, #0xc]
|
|
beq _02001458
|
|
mov r2, r0
|
|
mov r7, #0
|
|
b _02001420
|
|
_020013FC:
|
|
ldr r1, [r2, #4]
|
|
tst r1, #1
|
|
bne _02001418
|
|
ldr r1, [r2, #0x10]
|
|
cmp r1, r5
|
|
blt _0200144C
|
|
b _020014A8
|
|
_02001418:
|
|
add r7, r7, #1
|
|
add r2, r2, #0x18
|
|
_02001420:
|
|
cmp r7, lr
|
|
blt _020013FC
|
|
b _0200144C
|
|
_0200142C:
|
|
ldr r1, [r2, #4]
|
|
tst r1, #1
|
|
bne _02001444
|
|
ldr r1, [r2, #0x10]
|
|
cmp r1, r5
|
|
bge _020014A8
|
|
_02001444:
|
|
add r7, r7, #1
|
|
add r2, r2, #0x18
|
|
_0200144C:
|
|
cmp r7, lr
|
|
blt _0200142C
|
|
b _020014A4
|
|
_02001458:
|
|
mov sl, r0
|
|
mvn r7, #0
|
|
ldr r2, _02001628 ; =0x001E6401
|
|
mov r3, #0
|
|
b _02001498
|
|
_0200146C:
|
|
ldr r1, [sl, #4]
|
|
tst r1, #1
|
|
bne _02001490
|
|
ldr r1, [sl, #0x10]
|
|
cmp r1, r5
|
|
blt _02001490
|
|
cmp r1, r2
|
|
movlt r7, r3
|
|
movlt r2, r1
|
|
_02001490:
|
|
add r3, r3, #1
|
|
add sl, sl, #0x18
|
|
_02001498:
|
|
cmp r3, lr
|
|
blt _0200146C
|
|
b _020014A8
|
|
_020014A4:
|
|
mvn r7, #0
|
|
_020014A8:
|
|
cmp r7, #0
|
|
blt _020015DC
|
|
mov r1, #0x18
|
|
mla r6, r7, r1, r0
|
|
add r3, r5, #3
|
|
ldr r2, [r6, #0x10]
|
|
bic fp, r3, #3
|
|
cmp r2, fp
|
|
ble _02001584
|
|
mla ip, lr, r1, r0
|
|
b _0200150C
|
|
_020014D4:
|
|
sub r0, ip, #0x18
|
|
mov sl, r0
|
|
ldmia sl!, {r0, r1, r2, r3}
|
|
str sl, [sp, #0xc]
|
|
mov sl, ip
|
|
stmia sl!, {r0, r1, r2, r3}
|
|
str ip, [sp, #8]
|
|
ldr r0, [sp, #0xc]
|
|
mov r2, sl
|
|
ldmia r0, {r0, r1}
|
|
stmia r2, {r0, r1}
|
|
str sl, [sp, #8]
|
|
sub lr, lr, #1
|
|
sub ip, ip, #0x18
|
|
_0200150C:
|
|
cmp lr, r7
|
|
bgt _020014D4
|
|
ldr r0, [r4, #0xc]
|
|
add r1, r0, #1
|
|
str r1, [r4, #0xc]
|
|
ldr r0, [r4, #0x10]
|
|
cmp r1, r0
|
|
ble _02001554
|
|
ldr r1, _0200162C ; =0x02090B40
|
|
add r0, sp, #0x18
|
|
ldr r2, [r1, #0x14]
|
|
ldr r1, [r1, #0x10]
|
|
str r2, [sp, #0x1c]
|
|
str r1, [sp, #0x18]
|
|
ldr r2, [r4, #0xc]
|
|
ldr r3, [r4, #0x10]
|
|
ldr r1, _02001630 ; =0x02090BA0
|
|
bl FatalError
|
|
_02001554:
|
|
ldr r2, [r4, #8]
|
|
add r1, r7, #1
|
|
mov r0, #0x18
|
|
mla r2, r1, r0, r2
|
|
ldr r0, [r2, #0xc]
|
|
add r0, r0, fp
|
|
str r0, [r2, #0xc]
|
|
ldr r0, [r2, #0x10]
|
|
sub r0, r0, fp
|
|
str r0, [r2, #0x10]
|
|
str fp, [r6, #0x10]
|
|
str r5, [r6, #0x14]
|
|
_02001584:
|
|
mov r0, r8
|
|
bl MemAllocFlagsToBlockType
|
|
stmia r6, {r0, r8, sb}
|
|
ldr r0, _0200161C ; =0x020AEF08
|
|
ldr r6, [r6, #0xc]
|
|
bl sub_02002E98
|
|
b _02001610
|
|
_020015A0:
|
|
mov r0, r4
|
|
mov r1, r8
|
|
mov r2, r5
|
|
bl FindAvailableMemBlock
|
|
movs r1, r0
|
|
bmi _020015DC
|
|
mov r0, r4
|
|
mov r2, r8
|
|
mov r3, r5
|
|
str sb, [sp]
|
|
bl SplitMemBlock
|
|
ldr r6, [r0, #0xc]
|
|
ldr r0, _0200161C ; =0x020AEF08
|
|
bl sub_02002E98
|
|
b _02001610
|
|
_020015DC:
|
|
ldr r0, _0200161C ; =0x020AEF08
|
|
bl sub_02002E98
|
|
ldr r1, _0200162C ; =0x02090B40
|
|
add r0, sp, #0x10
|
|
ldr r2, [r1, #4]
|
|
ldr r1, [r1]
|
|
str r2, [sp, #0x14]
|
|
str r1, [sp, #0x10]
|
|
ldr r1, _02001634 ; =0x02090BFC
|
|
mov r2, r4
|
|
mov r3, r5
|
|
stmia sp, {r8, sb}
|
|
bl FatalError
|
|
_02001610:
|
|
mov r0, r6
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_0200161C: .word 0x020AEF08
|
|
_02001620: .word 0x020AEF00
|
|
_02001624: .word 0x020B3384
|
|
_02001628: .word 0x001E6401
|
|
_0200162C: .word 0x02090B40
|
|
_02001630: .word 0x02090BA0
|
|
_02001634: .word 0x02090BFC
|
|
arm_func_end MemLocateSet
|
|
|
|
arm_func_start MemLocateUnset
|
|
MemLocateUnset: ; 0x02001638
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r7, r0
|
|
ldr r0, _020017A8 ; =0x020AEF08
|
|
mov r6, r1
|
|
bl sub_02002CB4
|
|
ldr r1, _020017AC ; =0x020AEF00
|
|
mov r0, r7
|
|
ldr r2, [r1, #4]
|
|
mov r1, r6
|
|
blx r2
|
|
movs r7, r0
|
|
ldreq r7, _020017B0 ; =0x020B3384
|
|
cmp r6, #0
|
|
bne _0200167C
|
|
ldr r0, _020017A8 ; =0x020AEF08
|
|
bl sub_02002E98
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
_0200167C:
|
|
ldr r4, [r7, #8]
|
|
ldr r1, [r7, #0xc]
|
|
mov r5, #0
|
|
b _02001794
|
|
_0200168C:
|
|
ldr r0, [r4, #0xc]
|
|
cmp r0, r6
|
|
bne _0200178C
|
|
mov r0, #0
|
|
str r0, [r4]
|
|
str r0, [r4, #4]
|
|
str r0, [r4, #0x14]
|
|
str r0, [r4, #8]
|
|
ldr r0, [r7, #0xc]
|
|
sub r0, r0, #1
|
|
cmp r5, r0
|
|
bge _0200171C
|
|
add ip, r4, #0x18
|
|
ldr r0, [ip, #4]
|
|
cmp r0, #0
|
|
bne _0200171C
|
|
ldr r1, [r4, #0x10]
|
|
ldr r0, [ip, #0x10]
|
|
add lr, r5, #1
|
|
add r0, r1, r0
|
|
str r0, [r4, #0x10]
|
|
ldr r0, [r7, #0xc]
|
|
sub r0, r0, #1
|
|
str r0, [r7, #0xc]
|
|
b _02001710
|
|
_020016F0:
|
|
add r8, ip, #0x18
|
|
mov r6, ip
|
|
ldmia r8!, {r0, r1, r2, r3}
|
|
stmia r6!, {r0, r1, r2, r3}
|
|
ldmia r8, {r0, r1}
|
|
stmia r6, {r0, r1}
|
|
add lr, lr, #1
|
|
add ip, ip, #0x18
|
|
_02001710:
|
|
ldr r0, [r7, #0xc]
|
|
cmp lr, r0
|
|
blt _020016F0
|
|
_0200171C:
|
|
cmp r5, #0
|
|
ble _02001780
|
|
sub r2, r4, #0x18
|
|
ldr r0, [r2, #4]
|
|
cmp r0, #0
|
|
bne _02001780
|
|
ldr r1, [r2, #0x10]
|
|
ldr r0, [r4, #0x10]
|
|
add r0, r1, r0
|
|
str r0, [r2, #0x10]
|
|
ldr r0, [r7, #0xc]
|
|
sub r0, r0, #1
|
|
str r0, [r7, #0xc]
|
|
b _02001774
|
|
_02001754:
|
|
add ip, r4, #0x18
|
|
mov r6, r4
|
|
ldmia ip!, {r0, r1, r2, r3}
|
|
stmia r6!, {r0, r1, r2, r3}
|
|
ldmia ip, {r0, r1}
|
|
stmia r6, {r0, r1}
|
|
add r5, r5, #1
|
|
add r4, r4, #0x18
|
|
_02001774:
|
|
ldr r0, [r7, #0xc]
|
|
cmp r5, r0
|
|
blt _02001754
|
|
_02001780:
|
|
ldr r0, _020017A8 ; =0x020AEF08
|
|
bl sub_02002E98
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
_0200178C:
|
|
add r5, r5, #1
|
|
add r4, r4, #0x18
|
|
_02001794:
|
|
cmp r5, r1
|
|
blt _0200168C
|
|
ldr r0, _020017A8 ; =0x020AEF08
|
|
bl sub_02002E98
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_020017A8: .word 0x020AEF08
|
|
_020017AC: .word 0x020AEF00
|
|
_020017B0: .word 0x020B3384
|
|
arm_func_end MemLocateUnset
|
|
|
|
arm_func_start sub_020017B4
|
|
sub_020017B4: ; 0x020017B4
|
|
ldr r2, [r0, #8]
|
|
ldr ip, [r0, #0xc]
|
|
mov r3, #0
|
|
b _020017DC
|
|
_020017C4:
|
|
ldr r0, [r2, #0xc]
|
|
cmp r0, r1
|
|
moveq r0, #1
|
|
bxeq lr
|
|
add r3, r3, #1
|
|
add r2, r2, #0x18
|
|
_020017DC:
|
|
cmp r3, ip
|
|
blt _020017C4
|
|
mov r0, #0
|
|
bx lr
|
|
arm_func_end sub_020017B4
|
|
|
|
arm_func_start sub_020017EC
|
|
sub_020017EC: ; 0x020017EC
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02001804 ; =0x020AEF08
|
|
bl sub_02002CB4
|
|
ldr r0, _02001804 ; =0x020AEF08
|
|
bl sub_02002E98
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02001804: .word 0x020AEF08
|
|
arm_func_end sub_020017EC
|
|
|
|
arm_func_start sub_02001808
|
|
sub_02001808: ; 0x02001808
|
|
stmdb sp!, {r4, lr}
|
|
ldr r0, _0200187C ; =0x020AEF08
|
|
bl sub_02002CB4
|
|
ldr r0, _02001880 ; =0x020AEF00
|
|
mov r4, #0
|
|
ldr r2, [r0]
|
|
ldr r0, _02001884 ; =0x020B3384
|
|
mov r1, r4
|
|
blx r2
|
|
cmp r0, #0
|
|
ldreq r0, _02001884 ; =0x020B3384
|
|
mov r1, #0
|
|
ldr r2, [r0, #8]
|
|
ldr r3, [r0, #0xc]
|
|
b _02001864
|
|
_02001844:
|
|
ldr r0, [r2]
|
|
cmp r0, #0
|
|
bne _0200185C
|
|
ldr r0, [r2, #0x10]
|
|
cmp r4, r0
|
|
movlt r4, r0
|
|
_0200185C:
|
|
add r1, r1, #1
|
|
add r2, r2, #0x18
|
|
_02001864:
|
|
cmp r1, r3
|
|
blt _02001844
|
|
ldr r0, _0200187C ; =0x020AEF08
|
|
bl sub_02002E98
|
|
mov r0, r4
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0200187C: .word 0x020AEF08
|
|
_02001880: .word 0x020AEF00
|
|
_02001884: .word 0x020B3384
|
|
arm_func_end sub_02001808
|
|
|
|
arm_func_start sub_02001888
|
|
sub_02001888: ; 0x02001888
|
|
tst r0, #0xff
|
|
addne r0, r0, #0x100
|
|
bx lr
|
|
arm_func_end sub_02001888
|
|
|
|
arm_func_start RoundUpDiv256
|
|
RoundUpDiv256: ; 0x02001894
|
|
tst r0, #0xff
|
|
addne r0, r0, #0x100
|
|
mov r0, r0, asr #8
|
|
bx lr
|
|
arm_func_end RoundUpDiv256
|
|
|
|
arm_func_start sub_020018A4
|
|
sub_020018A4: ; 0x020018A4
|
|
and r2, r1, #0
|
|
and r3, r0, #0xff
|
|
cmp r2, #0
|
|
cmpeq r3, #0
|
|
mov r2, #0
|
|
beq _020018C4
|
|
adds r0, r0, #0x100
|
|
adc r1, r1, r2
|
|
_020018C4:
|
|
mov r0, r0, lsr #8
|
|
orr r0, r0, r1, lsl #24
|
|
bx lr
|
|
arm_func_end sub_020018A4
|
|
|
|
arm_func_start sub_020018D0
|
|
sub_020018D0: ; 0x020018D0
|
|
and r1, r0, #0xc00
|
|
cmp r1, #0x400
|
|
bgt _020018EC
|
|
bge _0200191C
|
|
cmp r1, #0
|
|
beq _02001908
|
|
b _02001970
|
|
_020018EC:
|
|
cmp r1, #0x800
|
|
bgt _020018FC
|
|
beq _02001938
|
|
b _02001970
|
|
_020018FC:
|
|
cmp r1, #0xc00
|
|
beq _02001950
|
|
b _02001970
|
|
_02001908:
|
|
mov r1, r0, lsl #0x16
|
|
ldr r0, _02001978 ; =0x02090C48
|
|
mov r1, r1, lsr #0x15
|
|
ldrsh r0, [r0, r1]
|
|
bx lr
|
|
_0200191C:
|
|
ldr r1, _0200197C ; =0x000003FF
|
|
ldr r2, _02001978 ; =0x02090C48
|
|
and r0, r0, r1
|
|
sub r0, r1, r0
|
|
mov r0, r0, lsl #1
|
|
ldrsh r0, [r2, r0]
|
|
bx lr
|
|
_02001938:
|
|
mov r1, r0, lsl #0x16
|
|
ldr r0, _02001978 ; =0x02090C48
|
|
mov r1, r1, lsr #0x15
|
|
ldrsh r0, [r0, r1]
|
|
rsb r0, r0, #0
|
|
bx lr
|
|
_02001950:
|
|
ldr r1, _0200197C ; =0x000003FF
|
|
ldr r2, _02001978 ; =0x02090C48
|
|
and r0, r0, r1
|
|
sub r0, r1, r0
|
|
mov r0, r0, lsl #1
|
|
ldrsh r0, [r2, r0]
|
|
rsb r0, r0, #0
|
|
bx lr
|
|
_02001970:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_02001978: .word 0x02090C48
|
|
_0200197C: .word 0x000003FF
|
|
arm_func_end sub_020018D0
|
|
|
|
arm_func_start sub_02001980
|
|
sub_02001980: ; 0x02001980
|
|
and r1, r0, #0xc00
|
|
cmp r1, #0x400
|
|
bgt _0200199C
|
|
bge _020019D4
|
|
cmp r1, #0
|
|
beq _020019B8
|
|
b _02001A20
|
|
_0200199C:
|
|
cmp r1, #0x800
|
|
bgt _020019AC
|
|
beq _020019EC
|
|
b _02001A20
|
|
_020019AC:
|
|
cmp r1, #0xc00
|
|
beq _02001A0C
|
|
b _02001A20
|
|
_020019B8:
|
|
ldr r1, _02001A28 ; =0x000003FF
|
|
ldr r2, _02001A2C ; =0x02090C48
|
|
and r0, r0, r1
|
|
sub r0, r1, r0
|
|
mov r0, r0, lsl #1
|
|
ldrsh r0, [r2, r0]
|
|
bx lr
|
|
_020019D4:
|
|
mov r1, r0, lsl #0x16
|
|
ldr r0, _02001A2C ; =0x02090C48
|
|
mov r1, r1, lsr #0x15
|
|
ldrsh r0, [r0, r1]
|
|
rsb r0, r0, #0
|
|
bx lr
|
|
_020019EC:
|
|
ldr r1, _02001A28 ; =0x000003FF
|
|
ldr r2, _02001A2C ; =0x02090C48
|
|
and r0, r0, r1
|
|
sub r0, r1, r0
|
|
mov r0, r0, lsl #1
|
|
ldrsh r0, [r2, r0]
|
|
rsb r0, r0, #0
|
|
bx lr
|
|
_02001A0C:
|
|
mov r1, r0, lsl #0x16
|
|
ldr r0, _02001A2C ; =0x02090C48
|
|
mov r1, r1, lsr #0x15
|
|
ldrsh r0, [r0, r1]
|
|
bx lr
|
|
_02001A20:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_02001A28: .word 0x000003FF
|
|
_02001A2C: .word 0x02090C48
|
|
arm_func_end sub_02001980
|
|
|
|
arm_func_start UFixedPoint64CmpLt
|
|
UFixedPoint64CmpLt: ; 0x02001A30
|
|
cmp r0, r2
|
|
movlo r0, #1
|
|
bxlo lr
|
|
movhi r0, #0
|
|
bxhi lr
|
|
cmp r1, r3
|
|
movlo r0, #1
|
|
movhs r0, #0
|
|
bx lr
|
|
arm_func_end UFixedPoint64CmpLt
|
|
|
|
arm_func_start MultiplyByFixedPoint
|
|
MultiplyByFixedPoint: ; 0x02001A54
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
tst r0, #0x80000000
|
|
movne r2, #1
|
|
moveq r2, #0
|
|
tst r1, #0x80000000
|
|
and r4, r2, #0xff
|
|
movne r2, #1
|
|
moveq r2, #0
|
|
cmp r0, #0
|
|
and r5, r2, #0xff
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
cmp r1, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
cmp r4, #0
|
|
rsbne r0, r0, #0
|
|
cmp r5, #0
|
|
rsbne r1, r1, #0
|
|
bl UMultiplyByFixedPoint
|
|
cmp r4, r5
|
|
rsbne r0, r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end MultiplyByFixedPoint
|
|
|
|
arm_func_start sub_02001AB0
|
|
sub_02001AB0: ; 0x02001AB0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
tst r0, #0x80000000
|
|
movne r2, #1
|
|
moveq r2, #0
|
|
tst r1, #0x80000000
|
|
and r4, r2, #0xff
|
|
movne r2, #1
|
|
moveq r2, #0
|
|
cmp r1, #0
|
|
and r5, r2, #0xff
|
|
mvneq r0, #0x80000000
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
cmp r4, #0
|
|
rsbne r0, r0, #0
|
|
cmp r5, #0
|
|
rsbne r1, r1, #0
|
|
bl sub_02001BB4
|
|
cmp r4, r5
|
|
rsbne r0, r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_02001AB0
|
|
|
|
arm_func_start UMultiplyByFixedPoint
|
|
UMultiplyByFixedPoint: ; 0x02001B0C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
cmp r1, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
mov r3, #0
|
|
mov r2, r3
|
|
mov ip, r3
|
|
mov lr, r3
|
|
mov r4, r3
|
|
_02001B3C:
|
|
mov r5, lr
|
|
tst r1, #1
|
|
beq _02001B58
|
|
add lr, lr, r0
|
|
add ip, ip, r3
|
|
cmp r5, lr
|
|
addhi ip, ip, #1
|
|
_02001B58:
|
|
mov r1, r1, lsr #1
|
|
tst r2, #1
|
|
orrne r1, r1, #0x80000000
|
|
mov r2, r2, lsr #1
|
|
tst r0, #0x80000000
|
|
mov r3, r3, lsl #1
|
|
mov r0, r0, lsl #1
|
|
add r4, r4, #1
|
|
orrne r3, r3, #1
|
|
bic r2, r2, #0x80000000
|
|
cmp r4, #0x40
|
|
bic r0, r0, #1
|
|
blt _02001B3C
|
|
mov r0, lr, lsr #8
|
|
tst lr, #0x80
|
|
movne r1, #1
|
|
bic r0, r0, #0xff000000
|
|
moveq r1, #0
|
|
orr lr, r0, ip, lsl #24
|
|
tst r1, #0xff
|
|
addne lr, lr, #1
|
|
mov r0, lr
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end UMultiplyByFixedPoint
|
|
|
|
arm_func_start sub_02001BB4
|
|
sub_02001BB4: ; 0x02001BB4
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
movs sl, r1
|
|
mvneq r0, #0x80000000
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
mov r8, #0
|
|
mov r1, r0, asr #0x18
|
|
mov r0, r0, lsl #8
|
|
mov r4, r8
|
|
mov r5, r8
|
|
mov sb, r8
|
|
and r6, r1, #0xff
|
|
bic r7, r0, #0xff
|
|
mov fp, r8
|
|
_02001BF4:
|
|
mov r0, r5, lsl #1
|
|
tst r5, #0x80000000
|
|
mov r4, r4, lsl #1
|
|
orrne r4, r4, #1
|
|
bic r5, r0, #1
|
|
tst r6, #0x80000000
|
|
orrne r5, r5, #1
|
|
mov r3, r7, lsl #1
|
|
tst r7, #0x80000000
|
|
mov r6, r6, lsl #1
|
|
bic r7, r3, #1
|
|
mov r0, r4
|
|
mov r1, r5
|
|
mov r2, fp
|
|
mov r3, sl
|
|
orrne r6, r6, #1
|
|
bl UFixedPoint64CmpLt
|
|
cmp r0, #0
|
|
bne _02001C58
|
|
mov r0, r5
|
|
sub r5, r5, sl
|
|
cmp r0, r5
|
|
mov r1, #1
|
|
sublo r4, r4, #1
|
|
b _02001C5C
|
|
_02001C58:
|
|
mov r1, #0
|
|
_02001C5C:
|
|
mov r0, r8, lsl #1
|
|
bic r8, r0, #1
|
|
cmp r1, #0
|
|
add sb, sb, #1
|
|
orrne r8, r8, #1
|
|
cmp sb, #0x40
|
|
blt _02001BF4
|
|
mov r0, r8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end sub_02001BB4
|
|
|
|
arm_func_start IntToFixedPoint64
|
|
IntToFixedPoint64: ; 0x02001C80
|
|
mov r2, #0x10000
|
|
rsb r2, r2, #0
|
|
and r3, r1, r2
|
|
mov r3, r3, lsr #0x10
|
|
str r3, [r0]
|
|
mov r3, r1, lsl #0x10
|
|
str r3, [r0, #4]
|
|
tst r1, #0x8000
|
|
ldrne r1, [r0]
|
|
orrne r1, r1, r2
|
|
strne r1, [r0]
|
|
bx lr
|
|
arm_func_end IntToFixedPoint64
|
|
|
|
arm_func_start FixedPoint64ToInt
|
|
FixedPoint64ToInt: ; 0x02001CB0
|
|
ldmia r0, {r1, r2}
|
|
mov r0, #0x10000
|
|
rsb r0, r0, #0
|
|
mov r1, r1, lsl #0x10
|
|
and r0, r2, r0
|
|
orr r0, r1, r0, lsr #16
|
|
tst r2, #0x8000
|
|
addne r0, r0, #1
|
|
bx lr
|
|
arm_func_end FixedPoint64ToInt
|
|
|
|
arm_func_start FixedPoint32To64
|
|
FixedPoint32To64: ; 0x02001CD4
|
|
mov r2, r1, asr #0x18
|
|
mov r3, r1, lsl #8
|
|
tst r2, #0x80
|
|
mvnne r1, #0x7f
|
|
orrne r1, r2, r1
|
|
stmia r0, {r2, r3}
|
|
andeq r1, r2, #0x7f
|
|
str r1, [r0]
|
|
bx lr
|
|
arm_func_end FixedPoint32To64
|
|
|
|
arm_func_start NegateFixedPoint64
|
|
NegateFixedPoint64: ; 0x02001CF8
|
|
ldr r2, [r0]
|
|
mvn r1, #0
|
|
eor r2, r2, r1
|
|
str r2, [r0]
|
|
ldr r2, [r0, #4]
|
|
eor r2, r2, r1
|
|
adds r1, r2, #1
|
|
str r1, [r0, #4]
|
|
ldreq r1, [r0]
|
|
addeq r1, r1, #1
|
|
streq r1, [r0]
|
|
bx lr
|
|
arm_func_end NegateFixedPoint64
|
|
|
|
arm_func_start FixedPoint64IsZero
|
|
FixedPoint64IsZero: ; 0x02001D28
|
|
ldr r1, [r0]
|
|
cmp r1, #0
|
|
movne r0, #0
|
|
bxne lr
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
arm_func_end FixedPoint64IsZero
|
|
|
|
arm_func_start FixedPoint64IsNegative
|
|
FixedPoint64IsNegative: ; 0x02001D50
|
|
ldr r0, [r0]
|
|
tst r0, #0x80000000
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
arm_func_end FixedPoint64IsNegative
|
|
|
|
arm_func_start FixedPoint64CmpLt
|
|
FixedPoint64CmpLt: ; 0x02001D68
|
|
stmdb sp!, {r3, lr}
|
|
mov ip, r1
|
|
ldr r2, [ip]
|
|
mov lr, r0
|
|
tst r2, #0x80000000
|
|
movne r1, #2
|
|
ldr r0, [lr]
|
|
moveq r1, #0
|
|
tst r0, #0x80000000
|
|
movne r3, #1
|
|
moveq r3, #0
|
|
orr r1, r3, r1
|
|
cmp r1, #3
|
|
addls pc, pc, r1, lsl #2
|
|
b _02001DB4
|
|
_02001DA4: ; jump table
|
|
b _02001DB4 ; case 0
|
|
b _02001DC4 ; case 1
|
|
b _02001DCC ; case 2
|
|
b _02001DD4 ; case 3
|
|
_02001DB4:
|
|
ldr r1, [lr, #4]
|
|
ldr r3, [ip, #4]
|
|
bl UFixedPoint64CmpLt
|
|
ldmia sp!, {r3, pc}
|
|
_02001DC4:
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
_02001DCC:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
_02001DD4:
|
|
ldr r1, [lr, #4]
|
|
ldr r3, [ip, #4]
|
|
bl UFixedPoint64CmpLt
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end FixedPoint64CmpLt
|
|
|
|
arm_func_start MultiplyFixedPoint64
|
|
MultiplyFixedPoint64: ; 0x02001DF4
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #0x18
|
|
ldr r3, [r1]
|
|
mov r4, r0
|
|
str r3, [sp, #0x10]
|
|
ldr r1, [r1, #4]
|
|
add r0, sp, #0x10
|
|
str r1, [sp, #0x14]
|
|
ldr r1, [r2]
|
|
str r1, [sp, #8]
|
|
ldr r1, [r2, #4]
|
|
str r1, [sp, #0xc]
|
|
bl FixedPoint64IsNegative
|
|
mov r5, r0
|
|
add r0, sp, #8
|
|
bl FixedPoint64IsNegative
|
|
mov r6, r0
|
|
add r0, sp, #0x10
|
|
bl FixedPoint64IsZero
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
strne r0, [r4]
|
|
strne r0, [r4, #4]
|
|
bne _02001EC0
|
|
add r0, sp, #8
|
|
bl FixedPoint64IsZero
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
strne r0, [r4]
|
|
strne r0, [r4, #4]
|
|
bne _02001EC0
|
|
cmp r5, #0
|
|
beq _02001E80
|
|
add r0, sp, #0x10
|
|
bl NegateFixedPoint64
|
|
_02001E80:
|
|
cmp r6, #0
|
|
beq _02001E90
|
|
add r0, sp, #8
|
|
bl NegateFixedPoint64
|
|
_02001E90:
|
|
add r0, sp, #0
|
|
add r1, sp, #0x10
|
|
add r2, sp, #8
|
|
bl UMultiplyFixedPoint64
|
|
cmp r5, r6
|
|
beq _02001EB0
|
|
add r0, sp, #0
|
|
bl NegateFixedPoint64
|
|
_02001EB0:
|
|
ldr r0, [sp]
|
|
str r0, [r4]
|
|
ldr r0, [sp, #4]
|
|
str r0, [r4, #4]
|
|
_02001EC0:
|
|
add sp, sp, #0x18
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end MultiplyFixedPoint64
|
|
|
|
arm_func_start DivideFixedPoint64
|
|
DivideFixedPoint64: ; 0x02001EC8
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #0x18
|
|
ldr r3, [r1]
|
|
mov r4, r0
|
|
str r3, [sp, #0x10]
|
|
ldr r1, [r1, #4]
|
|
add r0, sp, #0x10
|
|
str r1, [sp, #0x14]
|
|
ldr r1, [r2]
|
|
str r1, [sp, #8]
|
|
ldr r1, [r2, #4]
|
|
str r1, [sp, #0xc]
|
|
bl FixedPoint64IsNegative
|
|
mov r5, r0
|
|
add r0, sp, #8
|
|
bl FixedPoint64IsNegative
|
|
mov r6, r0
|
|
add r0, sp, #8
|
|
bl FixedPoint64IsZero
|
|
cmp r0, #0
|
|
mvnne r0, #0x80000000
|
|
strne r0, [r4]
|
|
subne r0, r0, #0x80000000
|
|
strne r0, [r4, #4]
|
|
bne _02001F98
|
|
add r0, sp, #0x10
|
|
bl FixedPoint64IsZero
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
strne r0, [r4]
|
|
strne r0, [r4, #4]
|
|
bne _02001F98
|
|
cmp r5, #0
|
|
beq _02001F58
|
|
add r0, sp, #0x10
|
|
bl NegateFixedPoint64
|
|
_02001F58:
|
|
cmp r6, #0
|
|
beq _02001F68
|
|
add r0, sp, #8
|
|
bl NegateFixedPoint64
|
|
_02001F68:
|
|
add r0, sp, #0
|
|
add r1, sp, #0x10
|
|
add r2, sp, #8
|
|
bl UDivideFixedPoint64
|
|
cmp r5, r6
|
|
beq _02001F88
|
|
add r0, sp, #0
|
|
bl NegateFixedPoint64
|
|
_02001F88:
|
|
ldr r0, [sp]
|
|
str r0, [r4]
|
|
ldr r0, [sp, #4]
|
|
str r0, [r4, #4]
|
|
_02001F98:
|
|
add sp, sp, #0x18
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end DivideFixedPoint64
|
|
|
|
arm_func_start UMultiplyFixedPoint64
|
|
UMultiplyFixedPoint64: ; 0x02001FA0
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r1
|
|
mov r4, r0
|
|
mov r0, r6
|
|
mov r5, r2
|
|
bl FixedPoint64IsZero
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
strne r0, [r4]
|
|
strne r0, [r4, #4]
|
|
ldmneia sp!, {r4, r5, r6, pc}
|
|
mov r0, r5
|
|
bl FixedPoint64IsZero
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
strne r0, [r4]
|
|
strne r0, [r4, #4]
|
|
ldmneia sp!, {r4, r5, r6, pc}
|
|
mov lr, #0
|
|
ldmia r6, {r1, r2}
|
|
ldmia r5, {r3, ip}
|
|
mov r5, lr
|
|
mov r6, lr
|
|
_02001FFC:
|
|
mov r0, r5
|
|
tst ip, #1
|
|
beq _02002018
|
|
add r5, r5, r2
|
|
add lr, lr, r1
|
|
cmp r0, r5
|
|
addhi lr, lr, #1
|
|
_02002018:
|
|
mov r0, r3, lsr #1
|
|
tst r3, #1
|
|
mov ip, ip, lsr #1
|
|
bic r3, r0, #0x80000000
|
|
orrne ip, ip, #0x80000000
|
|
mov r1, r1, lsl #1
|
|
tst r2, #0x80000000
|
|
mov r0, r2, lsl #1
|
|
add r6, r6, #1
|
|
orrne r1, r1, #1
|
|
cmp r6, #0x40
|
|
bic r2, r0, #1
|
|
blt _02001FFC
|
|
mov r0, r5, lsr #0x10
|
|
mov r0, r0, lsl #0x10
|
|
tst r5, #0x8000
|
|
mov r1, lr, lsl #0x10
|
|
movne r2, #1
|
|
orr r5, r1, r0, lsr #16
|
|
mov r0, lr, lsr #0x10
|
|
moveq r2, #0
|
|
mov r0, r0, lsl #0x10
|
|
tst r2, #0xff
|
|
addne r5, r5, #1
|
|
mov r0, r0, lsr #0x10
|
|
stmia r4, {r0, r5}
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end UMultiplyFixedPoint64
|
|
|
|
arm_func_start UDivideFixedPoint64
|
|
UDivideFixedPoint64: ; 0x02002084
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #8
|
|
mov r4, r2
|
|
mov sl, r0
|
|
mov r0, r4
|
|
mov r5, r1
|
|
bl FixedPoint64IsZero
|
|
cmp r0, #0
|
|
mvnne r0, #0x80000000
|
|
strne r0, [sl]
|
|
subne r0, r0, #0x80000000
|
|
strne r0, [sl, #4]
|
|
bne _020021C0
|
|
mov r0, r5
|
|
bl FixedPoint64IsZero
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
strne r0, [sl]
|
|
strne r0, [sl, #4]
|
|
bne _020021C0
|
|
ldr r2, [r5, #4]
|
|
mov r0, #0x10000
|
|
mov r1, r2, lsr #0x10
|
|
mov r8, #0
|
|
ldr r3, [r5]
|
|
rsb r0, r0, #0
|
|
and r2, r0, r2, lsl #16
|
|
and r3, r0, r3, lsl #16
|
|
ldr r0, [r4]
|
|
mov r1, r1, lsl #0x10
|
|
ldr fp, [r4, #4]
|
|
str r0, [sp, #4]
|
|
mov sb, r8
|
|
mov r4, r8
|
|
mov r5, r8
|
|
str r8, [sp]
|
|
orr r6, r3, r1, lsr #16
|
|
orr r7, r2, #0x8000
|
|
_0200211C:
|
|
mov r0, r5, lsl #1
|
|
tst r5, #0x80000000
|
|
mov r4, r4, lsl #1
|
|
orrne r4, r4, #1
|
|
bic r5, r0, #1
|
|
tst r6, #0x80000000
|
|
orrne r5, r5, #1
|
|
mov r1, r7, lsl #1
|
|
tst r7, #0x80000000
|
|
mov r6, r6, lsl #1
|
|
bic r7, r1, #1
|
|
ldr r2, [sp, #4]
|
|
mov r0, r4
|
|
mov r1, r5
|
|
mov r3, fp
|
|
orrne r6, r6, #1
|
|
bl UFixedPoint64CmpLt
|
|
cmp r0, #0
|
|
bne _02002188
|
|
mov r0, r5
|
|
sub r5, r5, fp
|
|
cmp r0, r5
|
|
ldr r0, [sp, #4]
|
|
mov r1, #1
|
|
sub r4, r4, r0
|
|
sublo r4, r4, #1
|
|
b _0200218C
|
|
_02002188:
|
|
mov r1, #0
|
|
_0200218C:
|
|
mov r0, sb, lsl #1
|
|
tst sb, #0x80000000
|
|
bic sb, r0, #1
|
|
ldr r0, [sp]
|
|
mov r8, r8, lsl #1
|
|
add r0, r0, #1
|
|
orrne r8, r8, #1
|
|
cmp r1, #0
|
|
orrne sb, sb, #1
|
|
str r0, [sp]
|
|
cmp r0, #0x40
|
|
blt _0200211C
|
|
stmia sl, {r8, sb}
|
|
_020021C0:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end UDivideFixedPoint64
|
|
|
|
arm_func_start AddFixedPoint64
|
|
AddFixedPoint64: ; 0x020021C8
|
|
stmdb sp!, {r3, lr}
|
|
ldr ip, [r1, #4]
|
|
ldr lr, [r1]
|
|
ldr r1, [r2]
|
|
ldr r3, [r2, #4]
|
|
add r1, lr, r1
|
|
add r2, ip, r3
|
|
cmp r2, ip
|
|
addlo r1, r1, #1
|
|
stmia r0, {r1, r2}
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end AddFixedPoint64
|
|
|
|
arm_func_start ClampedLn
|
|
ClampedLn: ; 0x020021F4
|
|
cmp r1, #1
|
|
movlt r1, #1
|
|
cmp r1, #0x800
|
|
ldrge r1, _02002220 ; =0x000007FF
|
|
ldr r2, _02002224 ; =0x02091448
|
|
mov r1, r1, lsl #1
|
|
ldrsh r2, [r2, r1]
|
|
mov r1, #0
|
|
mov r2, r2, lsl #4
|
|
stmia r0, {r1, r2}
|
|
bx lr
|
|
.align 2, 0
|
|
_02002220: .word 0x000007FF
|
|
_02002224: .word 0x02091448
|
|
arm_func_end ClampedLn
|
|
|
|
arm_func_start sub_02002228
|
|
sub_02002228: ; 0x02002228
|
|
bx lr
|
|
arm_func_end sub_02002228
|
|
|
|
arm_func_start GetRngSeed
|
|
GetRngSeed: ; 0x0200222C
|
|
ldr r0, _02002238 ; =0x020AEF2C
|
|
ldrh r0, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_02002238: .word 0x020AEF2C
|
|
arm_func_end GetRngSeed
|
|
|
|
arm_func_start SetRngSeed
|
|
SetRngSeed: ; 0x0200223C
|
|
ldr r1, _02002248 ; =0x020AEF2C
|
|
strh r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_02002248: .word 0x020AEF2C
|
|
arm_func_end SetRngSeed
|
|
|
|
arm_func_start Rand16Bit
|
|
Rand16Bit: ; 0x0200224C
|
|
ldr r1, _02002270 ; =0x020AEF2C
|
|
mov r0, #0x6d
|
|
ldrh r2, [r1]
|
|
mul r0, r2, r0
|
|
add r0, r0, #0xfd
|
|
add r0, r0, #0x300
|
|
strh r0, [r1]
|
|
ldrh r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_02002270: .word 0x020AEF2C
|
|
arm_func_end Rand16Bit
|
|
|
|
arm_func_start RandInt
|
|
RandInt: ; 0x02002274
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl Rand16Bit
|
|
mul r0, r4, r0
|
|
mov r0, r0, asr #0x10
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end RandInt
|
|
|
|
arm_func_start RandRange
|
|
RandRange: ; 0x0200228C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl Rand16Bit
|
|
sub r1, r4, r5
|
|
mul r0, r1, r0
|
|
add r0, r5, r0, asr #16
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end RandRange
|
|
|
|
arm_func_start Rand32Bit
|
|
Rand32Bit: ; 0x020022AC
|
|
stmdb sp!, {r4, lr}
|
|
bl Rand16Bit
|
|
mov r4, r0
|
|
bl Rand16Bit
|
|
orr r0, r0, r4, lsl #16
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end Rand32Bit
|
|
|
|
arm_func_start sub_020022C4
|
|
sub_020022C4: ; 0x020022C4
|
|
mov r1, #1
|
|
str r1, [r0]
|
|
bx lr
|
|
arm_func_end sub_020022C4
|
|
|
|
arm_func_start sub_020022D0
|
|
sub_020022D0: ; 0x020022D0
|
|
ldr r3, [r0]
|
|
ldr r2, _020022F4 ; =0x5D588B65
|
|
mul r2, r3, r2
|
|
add r3, r2, #1
|
|
mov r2, r3, lsr #0x10
|
|
mul r1, r2, r1
|
|
str r3, [r0]
|
|
mov r0, r1, lsr #0x10
|
|
bx lr
|
|
.align 2, 0
|
|
_020022F4: .word 0x5D588B65
|
|
arm_func_end sub_020022D0
|
|
|
|
arm_func_start RandIntSafe
|
|
RandIntSafe: ; 0x020022F8
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl Rand16Bit
|
|
mov r0, r0, lsl #0x10
|
|
mov r1, r0, lsr #0x10
|
|
mul r0, r1, r4
|
|
mov r0, r0, asr #0x10
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end RandIntSafe
|
|
|
|
arm_func_start RandRangeSafe
|
|
RandRangeSafe: ; 0x02002318
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
cmp r5, r4
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
bge _0200234C
|
|
bl Rand16Bit
|
|
mov r0, r0, lsl #0x10
|
|
mov r1, r0, lsr #0x10
|
|
sub r0, r4, r5
|
|
mul r0, r1, r0
|
|
add r0, r5, r0, asr #16
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_0200234C:
|
|
bl Rand16Bit
|
|
mov r0, r0, lsl #0x10
|
|
mov r1, r0, lsr #0x10
|
|
sub r0, r5, r4
|
|
mul r0, r1, r0
|
|
add r0, r4, r0, asr #16
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end RandRangeSafe
|
|
|
|
arm_func_start sub_02002368
|
|
sub_02002368: ; 0x02002368
|
|
b _02002378
|
|
_0200236C:
|
|
cmp r2, r1
|
|
bxeq lr
|
|
add r0, r0, #1
|
|
arm_func_end sub_02002368
|
|
_02002378:
|
|
ldrsb r2, [r0]
|
|
cmp r2, #0
|
|
bne _0200236C
|
|
mov r0, #0
|
|
bx lr
|
|
|
|
arm_func_start sub_0200238C
|
|
sub_0200238C: ; 0x0200238C
|
|
cmp r0, #0x41
|
|
bxlt lr
|
|
cmp r0, #0x5a
|
|
addle r0, r0, #0x20
|
|
movle r0, r0, lsl #0x18
|
|
movle r0, r0, asr #0x18
|
|
bx lr
|
|
arm_func_end sub_0200238C
|
|
|
|
arm_func_start sub_020023A8
|
|
sub_020023A8: ; 0x020023A8
|
|
mov ip, #0
|
|
b _020023E4
|
|
_020023B0:
|
|
ldrsb r3, [r1]
|
|
cmp r3, #0
|
|
bne _020023D8
|
|
mov r1, #0x20
|
|
b _020023CC
|
|
_020023C4:
|
|
strb r1, [r0], #1
|
|
add ip, ip, #1
|
|
_020023CC:
|
|
cmp ip, r2
|
|
blt _020023C4
|
|
b _020023EC
|
|
_020023D8:
|
|
add r1, r1, #1
|
|
strb r3, [r0], #1
|
|
add ip, ip, #1
|
|
_020023E4:
|
|
cmp ip, r2
|
|
blt _020023B0
|
|
_020023EC:
|
|
mov r1, #0
|
|
strb r1, [r0]
|
|
bx lr
|
|
arm_func_end sub_020023A8
|
|
|
|
arm_func_start sub_020023F8
|
|
sub_020023F8: ; 0x020023F8
|
|
stmdb sp!, {r3, lr}
|
|
mov lr, #0
|
|
b _02002428
|
|
_02002404:
|
|
ldrsb ip, [r0], #1
|
|
ldrsb r3, [r1], #1
|
|
cmp r3, ip
|
|
movne r0, #0
|
|
ldmneia sp!, {r3, pc}
|
|
cmp ip, #0
|
|
moveq r0, #1
|
|
ldmeqia sp!, {r3, pc}
|
|
add lr, lr, #1
|
|
_02002428:
|
|
cmp lr, r2
|
|
blt _02002404
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_020023F8
|
|
|
|
arm_func_start WaitForever
|
|
WaitForever: ; 0x02002438
|
|
stmdb sp!, {r3, lr}
|
|
bl sub_02079C14
|
|
_02002440:
|
|
bl WaitForInterrupt
|
|
b _02002440
|
|
arm_func_end WaitForever
|
|
|
|
arm_func_start sub_02002448
|
|
sub_02002448: ; 0x02002448
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl sub_02003AD0
|
|
bl sub_02002580
|
|
mov r1, #1
|
|
bl sub_020027F8
|
|
bl sub_02079C14
|
|
bl sub_0207621C
|
|
ldr r3, _02002498 ; =0x04001000
|
|
ldr r0, _0200249C ; =0x02092464
|
|
ldr r2, [r3]
|
|
mov r1, r4
|
|
bic r2, r2, #0x10000
|
|
str r2, [r3]
|
|
bl DebugPrint0__0200C1FC
|
|
mov r0, r4
|
|
bl sub_0207B930
|
|
bl sub_02079C14
|
|
_02002490:
|
|
bl WaitForInterrupt
|
|
b _02002490
|
|
.align 2, 0
|
|
_02002498: .word 0x04001000
|
|
_0200249C: .word 0x02092464
|
|
arm_func_end sub_02002448
|
|
|
|
arm_func_start sub_020024A0
|
|
sub_020024A0: ; 0x020024A0
|
|
ldr r0, _020024AC ; =0x027FFC20
|
|
ldr r0, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_020024AC: .word 0x027FFC20
|
|
arm_func_end sub_020024A0
|
|
|
|
arm_func_start sub_020024B0
|
|
sub_020024B0: ; 0x020024B0
|
|
ldr ip, _020024BC ; =sub_020845D8
|
|
mov r0, #0
|
|
bx ip
|
|
.align 2, 0
|
|
_020024BC: .word sub_020845D8
|
|
arm_func_end sub_020024B0
|
|
|
|
arm_func_start sub_020024C0
|
|
sub_020024C0: ; 0x020024C0
|
|
ldr ip, _020024CC ; =sub_020845D8
|
|
ldr r0, _020024D0 ; =sub_020024D4
|
|
bx ip
|
|
.align 2, 0
|
|
_020024CC: .word sub_020845D8
|
|
_020024D0: .word sub_020024D4
|
|
arm_func_end sub_020024C0
|
|
|
|
arm_func_start sub_020024D4
|
|
sub_020024D4: ; 0x020024D4
|
|
stmdb sp!, {r3, lr}
|
|
bl CardPullOut
|
|
mov r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_020024D4
|
|
|
|
arm_func_start sub_020024E4
|
|
sub_020024E4: ; 0x020024E4
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _0200256C ; =0x0229AFCC
|
|
bl sub_0207A030
|
|
ldr r0, _0200256C ; =0x0229AFCC
|
|
bl sub_0207A048
|
|
mov r1, #0
|
|
ldr r0, _02002570 ; =0x0229AFE4
|
|
mov r2, r1
|
|
_02002504:
|
|
add r1, r1, #1
|
|
cmp r1, #8
|
|
str r2, [r0], #4
|
|
blt _02002504
|
|
ldr r1, _02002574 ; =0x0229AFC0
|
|
ldr r0, _0200256C ; =0x0229AFCC
|
|
str r2, [r1]
|
|
str r2, [r1, #4]
|
|
str r2, [r1, #8]
|
|
bl sub_0207A0CC
|
|
ldr r1, _02002578 ; =0x022B966C
|
|
ldr r0, _0200257C ; =0x0229B004
|
|
ldr r1, [r1, #4]
|
|
mov r2, #0
|
|
stmia r0, {r1, r2}
|
|
str r2, [r0, #8]
|
|
str r2, [r0, #0xc]
|
|
mov r1, #7
|
|
str r1, [r0, #0x10]
|
|
str r2, [r0, #0x14]
|
|
bl sub_020026E4
|
|
ldr r0, _02002578 ; =0x022B966C
|
|
mov r1, #7
|
|
ldr r0, [r0, #4]
|
|
bl sub_02079A64
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0200256C: .word 0x0229AFCC
|
|
_02002570: .word 0x0229AFE4
|
|
_02002574: .word 0x0229AFC0
|
|
_02002578: .word 0x022B966C
|
|
_0200257C: .word 0x0229B004
|
|
arm_func_end sub_020024E4
|
|
|
|
arm_func_start sub_02002580
|
|
sub_02002580: ; 0x02002580
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r1, _020025E8 ; =0x022B966C
|
|
ldr r0, _020025EC ; =0x0229AFCC
|
|
ldr r4, [r1, #4]
|
|
bl sub_0207A048
|
|
ldr r0, _020025F0 ; =0x0229AFC0
|
|
mov r1, #0
|
|
ldr r3, [r0]
|
|
ldr r2, _020025F4 ; =0x0229AFE4
|
|
b _020025CC
|
|
_020025A8:
|
|
ldr r5, [r2]
|
|
ldr r0, [r5]
|
|
cmp r0, r4
|
|
bne _020025C4
|
|
ldr r0, _020025EC ; =0x0229AFCC
|
|
bl sub_0207A0CC
|
|
b _020025E0
|
|
_020025C4:
|
|
add r1, r1, #1
|
|
add r2, r2, #4
|
|
_020025CC:
|
|
cmp r1, r3
|
|
blt _020025A8
|
|
ldr r0, _020025EC ; =0x0229AFCC
|
|
bl sub_0207A0CC
|
|
mov r5, #0
|
|
_020025E0:
|
|
mov r0, r5
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_020025E8: .word 0x022B966C
|
|
_020025EC: .word 0x0229AFCC
|
|
_020025F0: .word 0x0229AFC0
|
|
_020025F4: .word 0x0229AFE4
|
|
arm_func_end sub_02002580
|
|
|
|
arm_func_start sub_020025F8
|
|
sub_020025F8: ; 0x020025F8
|
|
stmdb sp!, {r4, lr}
|
|
cmp r0, #0
|
|
beq _02002614
|
|
ldr r0, [r0]
|
|
mov r1, #0
|
|
bl sub_02079844
|
|
ldmia sp!, {r4, pc}
|
|
_02002614:
|
|
mov r4, #0
|
|
_02002618:
|
|
mov r0, r4
|
|
bl sub_02079888
|
|
b _02002618
|
|
arm_func_end sub_020025F8
|
|
|
|
arm_func_start sub_02002624
|
|
sub_02002624: ; 0x02002624
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_02002624
|
|
|
|
arm_func_start sub_02002628
|
|
sub_02002628: ; 0x02002628
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r2, _02002658 ; =0x022B966C
|
|
mov r5, r0
|
|
ldr r0, [r2, #4]
|
|
mov r4, r1
|
|
str r0, [r5]
|
|
bl sub_02079B0C
|
|
str r0, [r5, #4]
|
|
ldr r0, [r5]
|
|
mov r1, r4
|
|
bl sub_02079A64
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02002658: .word 0x022B966C
|
|
arm_func_end sub_02002628
|
|
|
|
arm_func_start sub_0200265C
|
|
sub_0200265C: ; 0x0200265C
|
|
ldr ip, _0200266C ; =sub_02079A64
|
|
mov r1, r0
|
|
ldmia r1, {r0, r1}
|
|
bx ip
|
|
.align 2, 0
|
|
_0200266C: .word sub_02079A64
|
|
arm_func_end sub_0200265C
|
|
|
|
arm_func_start sub_02002670
|
|
sub_02002670: ; 0x02002670
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r0, _020026AC ; =0x022B966C
|
|
ldr r5, [r0, #4]
|
|
mov r0, r5
|
|
bl sub_02079B0C
|
|
mov r4, r0
|
|
mov r0, r5
|
|
mov r1, #7
|
|
bl sub_02079A64
|
|
ldr r0, _020026B0 ; =0x0229AFCC
|
|
bl sub_0207A048
|
|
ldr r0, _020026B4 ; =0x020AEF30
|
|
str r5, [r0]
|
|
str r4, [r0, #4]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_020026AC: .word 0x022B966C
|
|
_020026B0: .word 0x0229AFCC
|
|
_020026B4: .word 0x020AEF30
|
|
arm_func_end sub_02002670
|
|
|
|
arm_func_start sub_020026B8
|
|
sub_020026B8: ; 0x020026B8
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r1, _020026DC ; =0x020AEF30
|
|
ldr r0, _020026E0 ; =0x0229AFCC
|
|
ldmia r1, {r4, r5}
|
|
bl sub_0207A0CC
|
|
mov r0, r4
|
|
mov r1, r5
|
|
bl sub_02079A64
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_020026DC: .word 0x020AEF30
|
|
_020026E0: .word 0x0229AFCC
|
|
arm_func_end sub_020026B8
|
|
|
|
arm_func_start sub_020026E4
|
|
sub_020026E4: ; 0x020026E4
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r1, _02002768 ; =0x022B966C
|
|
mov r6, r0
|
|
ldr r5, [r1, #4]
|
|
mov r0, r5
|
|
bl sub_02079B0C
|
|
mov r4, r0
|
|
mov r0, r5
|
|
mov r1, #7
|
|
bl sub_02079A64
|
|
ldr r0, _0200276C ; =0x0229AFCC
|
|
bl sub_0207A048
|
|
ldr r0, _02002770 ; =0x0229AFC0
|
|
ldr r3, [r0]
|
|
cmp r3, #8
|
|
bge _02002750
|
|
add r1, r3, #1
|
|
ldr r2, _02002774 ; =0x0229AFE4
|
|
str r1, [r0]
|
|
ldr r1, [r0]
|
|
str r6, [r2, r3, lsl #2]
|
|
str r1, [r0, #4]
|
|
ldr r2, [r0, #4]
|
|
ldr r1, [r0, #8]
|
|
cmp r2, r1
|
|
ldrgt r1, [r0, #4]
|
|
strgt r1, [r0, #8]
|
|
_02002750:
|
|
ldr r0, _0200276C ; =0x0229AFCC
|
|
bl sub_0207A0CC
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl sub_02079A64
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02002768: .word 0x022B966C
|
|
_0200276C: .word 0x0229AFCC
|
|
_02002770: .word 0x0229AFC0
|
|
_02002774: .word 0x0229AFE4
|
|
arm_func_end sub_020026E4
|
|
|
|
arm_func_start sub_02002778
|
|
sub_02002778: ; 0x02002778
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #8
|
|
mov r4, r0
|
|
mov ip, r1
|
|
add r0, r4, #0x1c
|
|
mov r5, ip
|
|
str r0, [r4]
|
|
mov r6, r2
|
|
ldmia r5!, {r0, r1, r2, r3}
|
|
add lr, r4, #4
|
|
stmia lr!, {r0, r1, r2, r3}
|
|
ldr r0, [r5]
|
|
mov r2, r6
|
|
str r0, [lr]
|
|
str r6, [r4, #0x18]
|
|
ldr r1, [ip, #8]
|
|
str r1, [sp]
|
|
ldr r0, [ip, #0xc]
|
|
bic r3, r1, #7
|
|
str r0, [sp, #4]
|
|
ldmia ip, {r1, lr}
|
|
ldr r0, [r4]
|
|
add r3, lr, r3
|
|
bl sub_02079560
|
|
mov r0, r4
|
|
bl sub_020026E4
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_02002778
|
|
|
|
arm_func_start sub_020027E8
|
|
sub_020027E8: ; 0x020027E8
|
|
ldr ip, _020027F4 ; =sub_02079940
|
|
ldr r0, [r0]
|
|
bx ip
|
|
.align 2, 0
|
|
_020027F4: .word sub_02079940
|
|
arm_func_end sub_020027E8
|
|
|
|
arm_func_start sub_020027F8
|
|
sub_020027F8: ; 0x020027F8
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
ldr r0, [r6]
|
|
mov r5, r1
|
|
bl sub_02079B0C
|
|
mov r4, r0
|
|
ldr r0, [r6]
|
|
mov r1, r5
|
|
bl sub_02079A64
|
|
mov r0, r4
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_020027F8
|
|
|
|
arm_func_start sub_02002824
|
|
sub_02002824: ; 0x02002824
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r1, _02002854 ; =0x022B966C
|
|
mov r6, r0
|
|
ldr r5, [r1, #4]
|
|
mov r0, r5
|
|
bl sub_02079B0C
|
|
mov r4, r0
|
|
mov r0, r5
|
|
mov r1, r6
|
|
bl sub_02079A64
|
|
mov r0, r4
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02002854: .word 0x022B966C
|
|
arm_func_end sub_02002824
|
|
|
|
arm_func_start sub_02002858
|
|
sub_02002858: ; 0x02002858
|
|
str r1, [r0, #0x14]
|
|
bx lr
|
|
arm_func_end sub_02002858
|
|
|
|
arm_func_start sub_02002860
|
|
sub_02002860: ; 0x02002860
|
|
cmp r0, #0
|
|
ldrne r1, [r0]
|
|
cmpne r1, #0
|
|
ldrne r0, [r0, #0x14]
|
|
moveq r0, #0
|
|
bx lr
|
|
arm_func_end sub_02002860
|
|
|
|
arm_func_start sub_02002878
|
|
sub_02002878: ; 0x02002878
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl sub_02002580
|
|
cmp r0, #0
|
|
beq _020028A4
|
|
ldr r0, [r0, #0x14]
|
|
cmp r0, r4
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r4, pc}
|
|
_020028A4:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_02002878
|
|
|
|
arm_func_start sub_020028AC
|
|
sub_020028AC: ; 0x020028AC
|
|
bx lr
|
|
arm_func_end sub_020028AC
|
|
|
|
arm_func_start sub_020028B0
|
|
sub_020028B0: ; 0x020028B0
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl sub_0207A030
|
|
mov r0, r4
|
|
bl sub_0207A048
|
|
bl sub_02002670
|
|
ldr r0, _020028F4 ; =0x0229B0E0
|
|
ldr r1, [r0]
|
|
add r1, r1, #1
|
|
str r1, [r0]
|
|
ldr r2, [r0]
|
|
ldr r1, [r0, #4]
|
|
cmp r2, r1
|
|
ldrgt r1, [r0]
|
|
strgt r1, [r0, #4]
|
|
bl sub_020026B8
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_020028F4: .word 0x0229B0E0
|
|
arm_func_end sub_020028B0
|
|
|
|
arm_func_start sub_020028F8
|
|
sub_020028F8: ; 0x020028F8
|
|
ldr ip, _02002900 ; =sub_0207A0CC
|
|
bx ip
|
|
.align 2, 0
|
|
_02002900: .word sub_0207A0CC
|
|
arm_func_end sub_020028F8
|
|
|
|
arm_func_start sub_02002904
|
|
sub_02002904: ; 0x02002904
|
|
ldr ip, _0200290C ; =sub_0207A048
|
|
bx ip
|
|
.align 2, 0
|
|
_0200290C: .word sub_0207A048
|
|
arm_func_end sub_02002904
|
|
|
|
arm_func_start sub_02002910
|
|
sub_02002910: ; 0x02002910
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl sub_0207A164
|
|
tst r0, #0xff
|
|
beq _02002944
|
|
ldr r0, [r4, #0xc]
|
|
cmp r0, #1
|
|
movle r0, #1
|
|
ldmleia sp!, {r4, pc}
|
|
mov r0, r4
|
|
bl sub_0207A0CC
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
_02002944:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_02002910
|
|
|
|
arm_func_start sub_0200294C
|
|
sub_0200294C: ; 0x0200294C
|
|
bx lr
|
|
arm_func_end sub_0200294C
|
|
|
|
arm_func_start sub_02002950
|
|
sub_02002950: ; 0x02002950
|
|
stmdb sp!, {r3, lr}
|
|
mov r3, r0
|
|
add r1, r3, #4
|
|
add r0, r3, #8
|
|
mov r2, #1
|
|
str r1, [r3]
|
|
bl sub_02079DB8
|
|
bl sub_02002670
|
|
ldr r0, _0200299C ; =0x0229B0E8
|
|
ldr r1, [r0]
|
|
add r1, r1, #1
|
|
str r1, [r0]
|
|
ldr r2, [r0]
|
|
ldr r1, [r0, #4]
|
|
cmp r2, r1
|
|
ldrgt r1, [r0]
|
|
strgt r1, [r0, #4]
|
|
bl sub_020026B8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0200299C: .word 0x0229B0E8
|
|
arm_func_end sub_02002950
|
|
|
|
arm_func_start sub_020029A0
|
|
sub_020029A0: ; 0x020029A0
|
|
ldr ip, _020029B4 ; =sub_02079DE0
|
|
mov r1, #0
|
|
mov r2, r1
|
|
add r0, r0, #8
|
|
bx ip
|
|
.align 2, 0
|
|
_020029B4: .word sub_02079DE0
|
|
arm_func_end sub_020029A0
|
|
|
|
arm_func_start sub_020029B8
|
|
sub_020029B8: ; 0x020029B8
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r1, _02002A40 ; =0x022B966C
|
|
mov r4, r0
|
|
ldr sb, [r1, #4]
|
|
mov r7, #0
|
|
mov r0, sb
|
|
bl sub_02079B0C
|
|
mov r8, r0
|
|
mov r0, sb
|
|
mov r1, #7
|
|
bl sub_02079A64
|
|
mov r5, r7
|
|
b _020029F0
|
|
_020029EC:
|
|
add r7, r7, #1
|
|
_020029F0:
|
|
mov r1, r5
|
|
mov r2, r5
|
|
add r0, r4, #8
|
|
bl sub_02079DE0
|
|
cmp r0, #0
|
|
bne _020029EC
|
|
add r6, sp, #0
|
|
mov r5, #0
|
|
_02002A10:
|
|
mov r1, r6
|
|
mov r2, r5
|
|
add r0, r4, #8
|
|
bl sub_02079E74
|
|
cmp r0, #0
|
|
subne r7, r7, #1
|
|
bne _02002A10
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl sub_02079A64
|
|
mov r0, r7
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_02002A40: .word 0x022B966C
|
|
arm_func_end sub_020029B8
|
|
|
|
arm_func_start sub_02002A44
|
|
sub_02002A44: ; 0x02002A44
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #4
|
|
ldr r1, _02002A94 ; =0x022B966C
|
|
mov r6, r0
|
|
ldr r5, [r1, #4]
|
|
mov r0, r5
|
|
bl sub_02079B0C
|
|
mov r4, r0
|
|
mov r0, r5
|
|
mov r1, #6
|
|
bl sub_02079A64
|
|
add r1, sp, #0
|
|
add r0, r6, #8
|
|
mov r2, #1
|
|
bl sub_02079E74
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl sub_02079A64
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02002A94: .word 0x022B966C
|
|
arm_func_end sub_02002A44
|
|
|
|
arm_func_start sub_02002A98
|
|
sub_02002A98: ; 0x02002A98
|
|
bx lr
|
|
arm_func_end sub_02002A98
|
|
|
|
arm_func_start sub_02002A9C
|
|
sub_02002A9C: ; 0x02002A9C
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
str r1, [r6, #0xa4]
|
|
add r1, r6, #4
|
|
str r2, [r6, #0xa8]
|
|
str r1, [r6]
|
|
ldr r2, [r6, #0xa4]
|
|
add r0, r6, #0x84
|
|
bl sub_02079DB8
|
|
mov r5, #0
|
|
mov r4, r5
|
|
b _02002AE0
|
|
_02002ACC:
|
|
mov r1, r4
|
|
mov r2, r4
|
|
add r0, r6, #0x84
|
|
bl sub_02079DE0
|
|
add r5, r5, #1
|
|
_02002AE0:
|
|
ldr r0, [r6, #0xa8]
|
|
cmp r5, r0
|
|
blt _02002ACC
|
|
bl sub_02002670
|
|
ldr r0, _02002B1C ; =0x0229B0F0
|
|
ldr r1, [r0]
|
|
add r1, r1, #1
|
|
str r1, [r0]
|
|
ldr r2, [r0]
|
|
ldr r1, [r0, #4]
|
|
cmp r2, r1
|
|
ldrgt r1, [r0]
|
|
strgt r1, [r0, #4]
|
|
bl sub_020026B8
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02002B1C: .word 0x0229B0F0
|
|
arm_func_end sub_02002A9C
|
|
|
|
arm_func_start sub_02002B20
|
|
sub_02002B20: ; 0x02002B20
|
|
ldr ip, _02002B34 ; =sub_02079DE0
|
|
mov r1, #0
|
|
mov r2, r1
|
|
add r0, r0, #0x84
|
|
bx ip
|
|
.align 2, 0
|
|
_02002B34: .word sub_02079DE0
|
|
arm_func_end sub_02002B20
|
|
|
|
arm_func_start sub_02002B38
|
|
sub_02002B38: ; 0x02002B38
|
|
ldr ip, _02002B4C ; =sub_02079DE0
|
|
mov r1, #0
|
|
mov r2, r1
|
|
add r0, r0, #0x84
|
|
bx ip
|
|
.align 2, 0
|
|
_02002B4C: .word sub_02079DE0
|
|
arm_func_end sub_02002B38
|
|
|
|
arm_func_start sub_02002B50
|
|
sub_02002B50: ; 0x02002B50
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, [r0, #0x98]
|
|
cmp r1, #0
|
|
movne r0, #0
|
|
ldmneia sp!, {r3, pc}
|
|
mov r1, #0
|
|
mov r2, r1
|
|
add r0, r0, #0x84
|
|
bl sub_02079DE0
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_02002B50
|
|
|
|
arm_func_start sub_02002B7C
|
|
sub_02002B7C: ; 0x02002B7C
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #4
|
|
ldr r1, _02002BCC ; =0x022B966C
|
|
mov r6, r0
|
|
ldr r5, [r1, #4]
|
|
mov r0, r5
|
|
bl sub_02079B0C
|
|
mov r4, r0
|
|
mov r0, r5
|
|
mov r1, #6
|
|
bl sub_02079A64
|
|
add r1, sp, #0
|
|
add r0, r6, #0x84
|
|
mov r2, #1
|
|
bl sub_02079E74
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl sub_02079A64
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02002BCC: .word 0x022B966C
|
|
arm_func_end sub_02002B7C
|
|
|
|
arm_func_start sub_02002BD0
|
|
sub_02002BD0: ; 0x02002BD0
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #4
|
|
ldr r1, _02002C28 ; =0x022B966C
|
|
mov r5, r0
|
|
ldr r6, [r1, #4]
|
|
mov r0, r6
|
|
bl sub_02079B0C
|
|
mov r4, r0
|
|
mov r0, r6
|
|
mov r1, #6
|
|
bl sub_02079A64
|
|
add r1, sp, #0
|
|
add r0, r5, #0x84
|
|
mov r2, #0
|
|
bl sub_02079E74
|
|
and r5, r0, #0xff
|
|
mov r0, r6
|
|
mov r1, r4
|
|
bl sub_02079A64
|
|
mov r0, r5
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02002C28: .word 0x022B966C
|
|
arm_func_end sub_02002BD0
|
|
|
|
arm_func_start sub_02002C2C
|
|
sub_02002C2C: ; 0x02002C2C
|
|
ldr ip, _02002C38 ; =sub_0207A030
|
|
ldr r0, _02002C3C ; =0x0229B0F8
|
|
bx ip
|
|
.align 2, 0
|
|
_02002C38: .word sub_0207A030
|
|
_02002C3C: .word 0x0229B0F8
|
|
arm_func_end sub_02002C2C
|
|
|
|
arm_func_start sub_02002C40
|
|
sub_02002C40: ; 0x02002C40
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r1, _02002CA4 ; =0x022B966C
|
|
mov r6, r0
|
|
ldr r5, [r1, #4]
|
|
mov r0, r5
|
|
bl sub_02079B0C
|
|
mov r4, r0
|
|
mov r0, r5
|
|
mov r1, #7
|
|
bl sub_02079A64
|
|
ldr r0, _02002CA8 ; =0x0229B0F8
|
|
bl sub_0207A048
|
|
mov r0, r6
|
|
bl sub_020028B0
|
|
bl sub_02002580
|
|
str r0, [r6, #0x18]
|
|
mov r0, #0
|
|
str r0, [r6, #0x20]
|
|
str r0, [r6, #0x1c]
|
|
ldr r0, _02002CA8 ; =0x0229B0F8
|
|
bl sub_0207A0CC
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl sub_02079A64
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02002CA4: .word 0x022B966C
|
|
_02002CA8: .word 0x0229B0F8
|
|
arm_func_end sub_02002C40
|
|
|
|
arm_func_start sub_02002CAC
|
|
sub_02002CAC: ; 0x02002CAC
|
|
str r1, [r0, #0x20]
|
|
bx lr
|
|
arm_func_end sub_02002CAC
|
|
|
|
arm_func_start sub_02002CB4
|
|
sub_02002CB4: ; 0x02002CB4
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r1, _02002D10 ; =0x022B966C
|
|
mov r6, r0
|
|
ldr r5, [r1, #4]
|
|
mov r0, r5
|
|
bl sub_02079B0C
|
|
ldr r1, [r6, #0x20]
|
|
mov r4, r0
|
|
cmp r1, #0
|
|
beq _02002CF4
|
|
cmp r1, r4
|
|
movhs r4, #0
|
|
bhs _02002CF8
|
|
mov r0, r5
|
|
bl sub_02079A64
|
|
b _02002CF8
|
|
_02002CF4:
|
|
mov r4, #0
|
|
_02002CF8:
|
|
mov r0, r6
|
|
bl sub_02002904
|
|
str r4, [r6, #0x1c]
|
|
bl sub_02002580
|
|
str r0, [r6, #0x18]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02002D10: .word 0x022B966C
|
|
arm_func_end sub_02002CB4
|
|
|
|
arm_func_start sub_02002D14
|
|
sub_02002D14: ; 0x02002D14
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r2, _02002D7C ; =0x022B966C
|
|
mov r7, r0
|
|
ldr r5, [r2, #4]
|
|
mov r6, r1
|
|
mov r0, r5
|
|
bl sub_02079B0C
|
|
ldr r1, [r7, #0x20]
|
|
mov r4, r0
|
|
cmp r1, #0
|
|
beq _02002D58
|
|
cmp r1, r4
|
|
movhs r4, #0
|
|
bhs _02002D5C
|
|
mov r0, r5
|
|
bl sub_02079A64
|
|
b _02002D5C
|
|
_02002D58:
|
|
mov r4, #0
|
|
_02002D5C:
|
|
mov r0, r6
|
|
bl sub_02002B7C
|
|
mov r0, r7
|
|
bl sub_02002904
|
|
str r4, [r7, #0x1c]
|
|
bl sub_02002580
|
|
str r0, [r7, #0x18]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_02002D7C: .word 0x022B966C
|
|
arm_func_end sub_02002D14
|
|
|
|
arm_func_start sub_02002D80
|
|
sub_02002D80: ; 0x02002D80
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r0
|
|
mov r6, r1
|
|
bl sub_02002580
|
|
mov r4, r0
|
|
ldr r0, [r4]
|
|
bl sub_02079B0C
|
|
ldr r1, [r7, #0x20]
|
|
mov r5, r0
|
|
cmp r1, #0
|
|
beq _02002DC4
|
|
cmp r1, r5
|
|
movhs r5, #0
|
|
bhs _02002DC8
|
|
ldr r0, [r4]
|
|
bl sub_02079A64
|
|
b _02002DC8
|
|
_02002DC4:
|
|
mov r5, #0
|
|
_02002DC8:
|
|
mov r0, r6
|
|
bl sub_02002BD0
|
|
cmp r0, #0
|
|
beq _02002DF4
|
|
mov r0, r7
|
|
bl sub_02002904
|
|
str r5, [r7, #0x1c]
|
|
bl sub_02002580
|
|
str r0, [r7, #0x18]
|
|
mov r0, #1
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
_02002DF4:
|
|
cmp r5, #0
|
|
beq _02002E08
|
|
mov r0, r4
|
|
mov r1, r5
|
|
bl sub_020027F8
|
|
_02002E08:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
arm_func_end sub_02002D80
|
|
|
|
arm_func_start sub_02002E10
|
|
sub_02002E10: ; 0x02002E10
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r1, _02002E94 ; =0x022B966C
|
|
mov r6, r0
|
|
ldr r5, [r1, #4]
|
|
mov r0, r5
|
|
bl sub_02079B0C
|
|
ldr r1, [r6, #0x20]
|
|
mov r4, r0
|
|
cmp r1, #0
|
|
beq _02002E50
|
|
cmp r1, r4
|
|
movhs r4, #0
|
|
bhs _02002E54
|
|
mov r0, r5
|
|
bl sub_02079A64
|
|
b _02002E54
|
|
_02002E50:
|
|
mov r4, #0
|
|
_02002E54:
|
|
mov r0, r6
|
|
bl sub_02002910
|
|
cmp r0, #0
|
|
beq _02002E78
|
|
str r4, [r6, #0x1c]
|
|
bl sub_02002580
|
|
str r0, [r6, #0x18]
|
|
mov r0, #1
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
_02002E78:
|
|
cmp r4, #0
|
|
beq _02002E8C
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl sub_02079A64
|
|
_02002E8C:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02002E94: .word 0x022B966C
|
|
arm_func_end sub_02002E10
|
|
|
|
arm_func_start sub_02002E98
|
|
sub_02002E98: ; 0x02002E98
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r4, [r0, #0x1c]
|
|
ldr r5, [r0, #0x18]
|
|
mov r1, #0
|
|
str r1, [r0, #0x1c]
|
|
str r1, [r0, #0x18]
|
|
bl sub_020028F8
|
|
cmp r4, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl sub_020027F8
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_02002E98
|
|
|
|
arm_func_start sub_02002ECC
|
|
sub_02002ECC: ; 0x02002ECC
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r4, [r0, #0x1c]
|
|
ldr r5, [r0, #0x18]
|
|
mov r2, #0
|
|
str r2, [r0, #0x18]
|
|
mov r6, r1
|
|
str r2, [r0, #0x1c]
|
|
bl sub_020028F8
|
|
mov r0, r6
|
|
bl sub_02002B20
|
|
cmp r4, #0
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl sub_020027F8
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_02002ECC
|
|
|
|
arm_func_start sub_02002F0C
|
|
sub_02002F0C: ; 0x02002F0C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02002F30 ; =0x020AEF58
|
|
bl sub_02002C40
|
|
ldr r0, _02002F30 ; =0x020AEF58
|
|
mov r1, #7
|
|
bl sub_02002CAC
|
|
ldr r0, _02002F30 ; =0x020AEF58
|
|
bl sub_02002E98
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02002F30: .word 0x020AEF58
|
|
arm_func_end sub_02002F0C
|
|
|
|
arm_func_start sub_02002F34
|
|
sub_02002F34: ; 0x02002F34
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
ldr r0, _02002F78 ; =0x020AEF58
|
|
mov r4, r1
|
|
bl sub_02002CB4
|
|
mov r0, r4, lsl #2
|
|
mov r1, #1
|
|
bl MemAlloc
|
|
str r0, [r5, #0x20]
|
|
str r4, [r5, #0x24]
|
|
ldr r1, [r5, #0x20]
|
|
mov r0, r5
|
|
mov r2, r4
|
|
bl sub_02079DB8
|
|
ldr r0, _02002F78 ; =0x020AEF58
|
|
bl sub_02002E98
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02002F78: .word 0x020AEF58
|
|
arm_func_end sub_02002F34
|
|
|
|
arm_func_start sub_02002F7C
|
|
sub_02002F7C: ; 0x02002F7C
|
|
stmdb sp!, {r3, lr}
|
|
cmp r2, #0
|
|
movne r2, #1
|
|
moveq r2, #0
|
|
bl sub_02079DE0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_02002F7C
|
|
|
|
arm_func_start sub_02002F98
|
|
sub_02002F98: ; 0x02002F98
|
|
stmdb sp!, {r3, lr}
|
|
cmp r2, #0
|
|
movne r2, #1
|
|
moveq r2, #0
|
|
bl sub_02079E74
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_02002F98
|
|
|
|
arm_func_start sub_02002FB4
|
|
sub_02002FB4: ; 0x02002FB4
|
|
bx lr
|
|
arm_func_end sub_02002FB4
|
|
|
|
arm_func_start sub_02002FB8
|
|
sub_02002FB8: ; 0x02002FB8
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r0, _02003024 ; =0x0229B110
|
|
mov r6, #0
|
|
strh r6, [r0]
|
|
cmp r6, #6
|
|
ldr r5, _02003028 ; =0x0229B114
|
|
bge _0200301C
|
|
mov r4, r6
|
|
b _02003014
|
|
_02002FDC:
|
|
mov r0, r5
|
|
bl sub_02002C40
|
|
cmp r6, #4
|
|
str r4, [r5, #0x24]
|
|
cmpne r6, #5
|
|
bne _02003000
|
|
bl sub_0207902C
|
|
strh r0, [r5, #0x28]
|
|
b _02003004
|
|
_02003000:
|
|
strh r4, [r5, #0x28]
|
|
_02003004:
|
|
mov r0, r5
|
|
bl sub_02002E98
|
|
add r6, r6, #1
|
|
add r5, r5, #0x2c
|
|
_02003014:
|
|
cmp r6, #6
|
|
blt _02002FDC
|
|
_0200301C:
|
|
bl sub_020059A8
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02003024: .word 0x0229B110
|
|
_02003028: .word 0x0229B114
|
|
arm_func_end sub_02002FB8
|
|
|
|
arm_func_start sub_0200302C
|
|
sub_0200302C: ; 0x0200302C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
movs r8, r0
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
bl sub_02002580
|
|
mov r7, r0
|
|
mov r6, #0
|
|
ldr r5, _020030C4 ; =0x0229B114
|
|
mov r4, #1
|
|
ldr sl, _020030C8 ; =0x0229B110
|
|
b _020030B8
|
|
_02003054:
|
|
mov r0, r4, lsl r6
|
|
mov sb, r0, lsl #0x10
|
|
tst r8, sb, lsr #16
|
|
beq _020030B0
|
|
mov r0, r5
|
|
bl sub_02002CB4
|
|
bl InterruptMasterDisable
|
|
ldrh r0, [sl]
|
|
ldrh r0, [sl]
|
|
str r7, [r5, #0x24]
|
|
orr r0, r0, sb, lsr #16
|
|
strh r0, [sl]
|
|
bl InterruptMasterEnable
|
|
cmp r6, #4
|
|
beq _0200309C
|
|
cmp r6, #5
|
|
beq _020030A8
|
|
b _020030B0
|
|
_0200309C:
|
|
ldrh r0, [r5, #0x28]
|
|
bl sub_02083434
|
|
b _020030B0
|
|
_020030A8:
|
|
ldrh r0, [r5, #0x28]
|
|
bl sub_0208346C
|
|
_020030B0:
|
|
add r6, r6, #1
|
|
add r5, r5, #0x2c
|
|
_020030B8:
|
|
cmp r6, #6
|
|
blt _02003054
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_020030C4: .word 0x0229B114
|
|
_020030C8: .word 0x0229B110
|
|
arm_func_end sub_0200302C
|
|
|
|
arm_func_start InterruptMasterDisable
|
|
InterruptMasterDisable: ; 0x020030CC
|
|
ldr r2, _020030E0 ; =0x04000208
|
|
mov r1, #0
|
|
ldrh r0, [r2]
|
|
strh r1, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_020030E0: .word 0x04000208
|
|
arm_func_end InterruptMasterDisable
|
|
|
|
arm_func_start InterruptMasterEnable
|
|
InterruptMasterEnable: ; 0x020030E4
|
|
ldr r2, _020030F8 ; =0x04000208
|
|
mov r1, #1
|
|
ldrh r0, [r2]
|
|
strh r1, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_020030F8: .word 0x04000208
|
|
arm_func_end InterruptMasterEnable
|
|
|
|
arm_func_start sub_020030FC
|
|
sub_020030FC: ; 0x020030FC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
movs sl, r0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
bl sub_02002580
|
|
mov r1, #7
|
|
mov r8, r0
|
|
bl sub_020027F8
|
|
mov sb, r0
|
|
mov r7, #0
|
|
ldr r6, _020031B8 ; =0x0229B114
|
|
mov fp, #1
|
|
ldr r5, _020031BC ; =0x0229B110
|
|
b _020031A0
|
|
_02003130:
|
|
mov r0, fp, lsl r7
|
|
mov r4, r0, lsl #0x10
|
|
tst sl, r4, lsr #16
|
|
beq _02003198
|
|
cmp r7, #4
|
|
beq _02003154
|
|
cmp r7, #5
|
|
beq _02003160
|
|
b _02003168
|
|
_02003154:
|
|
ldrh r0, [r6, #0x28]
|
|
bl sub_02083450
|
|
b _02003168
|
|
_02003160:
|
|
ldrh r0, [r6, #0x28]
|
|
bl sub_0208347C
|
|
_02003168:
|
|
bl InterruptMasterDisable
|
|
ldrh r0, [r5]
|
|
mvn r1, r4, lsr #16
|
|
ldrh r0, [r5]
|
|
ldrh r2, [r5]
|
|
mov r0, #0
|
|
str r0, [r6, #0x24]
|
|
and r0, r2, r1
|
|
strh r0, [r5]
|
|
bl InterruptMasterEnable
|
|
mov r0, r6
|
|
bl sub_02002E98
|
|
_02003198:
|
|
add r7, r7, #1
|
|
add r6, r6, #0x2c
|
|
_020031A0:
|
|
cmp r7, #6
|
|
blt _02003130
|
|
mov r0, r8
|
|
mov r1, sb
|
|
bl sub_020027F8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_020031B8: .word 0x0229B114
|
|
_020031BC: .word 0x0229B110
|
|
arm_func_end sub_020030FC
|
|
|
|
arm_func_start sub_020031C0
|
|
sub_020031C0: ; 0x020031C0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r0
|
|
bl sub_02002580
|
|
mov r5, #0
|
|
mov lr, r5
|
|
cmp r5, #6
|
|
ldr ip, _02003218 ; =0x0229B114
|
|
bge _02003210
|
|
mov r3, #1
|
|
b _02003208
|
|
_020031E8:
|
|
mov r1, r3, lsl lr
|
|
mov r1, r1, lsl #0x10
|
|
tst r4, r1, lsr #16
|
|
ldrne r2, [ip, #0x24]
|
|
add lr, lr, #1
|
|
cmpne r2, r0
|
|
orrne r5, r5, r1, lsr #16
|
|
add ip, ip, #0x2c
|
|
_02003208:
|
|
cmp lr, #6
|
|
blt _020031E8
|
|
_02003210:
|
|
mov r0, r5
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02003218: .word 0x0229B114
|
|
arm_func_end sub_020031C0
|
|
|
|
arm_func_start InitMemAllocTableVeneer
|
|
InitMemAllocTableVeneer: ; 0x0200321C
|
|
ldr ip, _02003224 ; =InitMemAllocTable
|
|
bx ip
|
|
.align 2, 0
|
|
_02003224: .word InitMemAllocTable
|
|
arm_func_end InitMemAllocTableVeneer
|
|
|
|
arm_func_start ZInit8
|
|
ZInit8: ; 0x02003228
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
str r1, [r0, #4]
|
|
bx lr
|
|
arm_func_end ZInit8
|
|
|
|
arm_func_start PointsToZero
|
|
PointsToZero: ; 0x02003238
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
arm_func_end PointsToZero
|
|
|
|
arm_func_start MemZero
|
|
MemZero: ; 0x02003250
|
|
mov r2, #0
|
|
b _02003260
|
|
_02003258:
|
|
sub r1, r1, #1
|
|
strb r2, [r0], #1
|
|
_02003260:
|
|
cmp r1, #0
|
|
bgt _02003258
|
|
bx lr
|
|
arm_func_end MemZero
|
|
|
|
arm_func_start MemZero16
|
|
MemZero16: ; 0x0200326C
|
|
mov r2, #0
|
|
b _0200327C
|
|
_02003274:
|
|
sub r1, r1, #2
|
|
strh r2, [r0], #2
|
|
_0200327C:
|
|
cmp r1, #0
|
|
bgt _02003274
|
|
bx lr
|
|
arm_func_end MemZero16
|
|
|
|
arm_func_start MemZero32
|
|
MemZero32: ; 0x02003288
|
|
mov r2, #0
|
|
b _02003298
|
|
_02003290:
|
|
sub r1, r1, #4
|
|
str r2, [r0], #4
|
|
_02003298:
|
|
cmp r1, #0
|
|
bgt _02003290
|
|
bx lr
|
|
arm_func_end MemZero32
|
|
|
|
arm_func_start MemsetSimple
|
|
MemsetSimple: ; 0x020032A4
|
|
b _020032B0
|
|
_020032A8:
|
|
sub r2, r2, #1
|
|
strb r1, [r0], #1
|
|
arm_func_end MemsetSimple
|
|
_020032B0:
|
|
cmp r2, #0
|
|
bgt _020032A8
|
|
bx lr
|
|
|
|
arm_func_start Memset32
|
|
Memset32: ; 0x020032BC
|
|
b _020032C8
|
|
_020032C0:
|
|
sub r2, r2, #4
|
|
str r1, [r0], #4
|
|
_020032C8:
|
|
cmp r2, #0
|
|
bgt _020032C0
|
|
bx lr
|
|
arm_func_end Memset32
|
|
|
|
arm_func_start MemcpySimple
|
|
MemcpySimple: ; 0x020032D4
|
|
b _020032E4
|
|
_020032D8:
|
|
ldrb r3, [r1], #1
|
|
sub r2, r2, #1
|
|
strb r3, [r0], #1
|
|
arm_func_end MemcpySimple
|
|
_020032E4:
|
|
cmp r2, #0
|
|
bgt _020032D8
|
|
bx lr
|
|
|
|
arm_func_start Memcpy16
|
|
Memcpy16: ; 0x020032F0
|
|
b _02003300
|
|
_020032F4:
|
|
ldrh r3, [r1], #2
|
|
sub r2, r2, #2
|
|
strh r3, [r0], #2
|
|
arm_func_end Memcpy16
|
|
_02003300:
|
|
cmp r2, #0
|
|
bgt _020032F4
|
|
bx lr
|
|
|
|
arm_func_start Memcpy32
|
|
Memcpy32: ; 0x0200330C
|
|
b _0200331C
|
|
_02003310:
|
|
ldr r3, [r1], #4
|
|
sub r2, r2, #4
|
|
str r3, [r0], #4
|
|
arm_func_end Memcpy32
|
|
_0200331C:
|
|
cmp r2, #0
|
|
bgt _02003310
|
|
bx lr
|
|
|
|
arm_func_start TaskProcBoot
|
|
TaskProcBoot: ; 0x02003328
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0xc
|
|
ldr r0, _020035CC ; =0x020AF000
|
|
bl sub_02002950
|
|
ldr r0, _020035D0 ; =0x020AF028
|
|
bl sub_02002950
|
|
ldr r0, _020035D4 ; =0x020AF050
|
|
bl sub_02002950
|
|
ldr r0, _020035D8 ; =0x020AEFDC
|
|
bl sub_02002C40
|
|
bl sub_02006D4C
|
|
bl sub_02017D20
|
|
ldr r2, _020035DC ; =0x0229B248
|
|
ldr r1, _020035E0 ; =0x020AEF7C
|
|
ldr r0, _020035E4 ; =0x020AF078
|
|
str r2, [r1, #0x3c]
|
|
ldr r1, _020035E8 ; =0x020AEFB4
|
|
mov r2, #0
|
|
bl sub_02002778
|
|
ldr r0, _020035E4 ; =0x020AF078
|
|
bl sub_020027E8
|
|
bl sub_0207B370
|
|
ldr r0, _020035EC ; =0x0229B220
|
|
bl sub_0207B4A4
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
ldr r0, _020035EC ; =0x0229B220
|
|
mov r2, #0x64
|
|
ldr r3, _020035F0 ; =sub_02003754
|
|
bl sub_0207B4B8
|
|
mov r0, #1
|
|
ldr r1, _020035F4 ; =sub_02003704
|
|
bl sub_02078A98
|
|
mov r0, #1
|
|
bl sub_02078C68
|
|
bl EnableAllInterrupts
|
|
mov r0, #1
|
|
bl sub_020761E8
|
|
ldr r0, _020035F8 ; =0x020AF154
|
|
ldr r1, _020035E0 ; =0x020AEF7C
|
|
ldr r2, _020035FC ; =0x0229F248
|
|
str r0, [r1, #0x24]
|
|
str r2, [r1, #0x50]
|
|
ldr r1, _02003600 ; =0x020AEFC8
|
|
mov r2, #0
|
|
bl sub_02002778
|
|
ldr r0, _020035F8 ; =0x020AF154
|
|
bl sub_020027E8
|
|
bl sub_02002580
|
|
ldr r2, _020035E0 ; =0x020AEF7C
|
|
mov r1, #0xf
|
|
str r0, [r2, #0x34]
|
|
bl sub_020027F8
|
|
ldr r0, _020035E0 ; =0x020AEF7C
|
|
mov r1, #2
|
|
ldr r0, [r0, #0x34]
|
|
bl sub_02002858
|
|
mov sl, #0
|
|
ldr r1, _020035E0 ; =0x020AEF7C
|
|
ldr r0, _02003604 ; =0x020924D8
|
|
strb sl, [r1, #5]
|
|
bl DebugPrint0__0200C1FC
|
|
mov r8, #1
|
|
ldr r4, _020035E0 ; =0x020AEF7C
|
|
mov r6, sl
|
|
mov sb, sl
|
|
mov r7, r8
|
|
mov r5, sl
|
|
mov fp, r8
|
|
_0200343C:
|
|
add r0, sp, #4
|
|
mov r1, #0xb
|
|
bl sub_02002628
|
|
ldrb r0, [r4, #7]
|
|
cmp r0, #0
|
|
strneb sb, [r4, #7]
|
|
bne _02003460
|
|
ldr r0, _020035D4 ; =0x020AF050
|
|
bl sub_02002A44
|
|
_02003460:
|
|
cmp sl, #0
|
|
beq _020034A8
|
|
ldrb r0, [r4, #6]
|
|
cmp r0, #0
|
|
ldrneb r0, [r4]
|
|
cmpne r0, #0
|
|
beq _020034C8
|
|
ldr r0, _020035CC ; =0x020AF000
|
|
strb r8, [r4, #3]
|
|
bl sub_020029A0
|
|
ldr r0, _020035D0 ; =0x020AF028
|
|
bl sub_02002A44
|
|
bl sub_02002670
|
|
ldr r0, [r4, #0x10]
|
|
cmp r0, #0
|
|
moveq sl, #0
|
|
bl sub_020026B8
|
|
b _020034C8
|
|
_020034A8:
|
|
bl sub_02002670
|
|
ldr sl, [r4, #0x10]
|
|
bl sub_020026B8
|
|
cmp sl, #0
|
|
beq _020034C8
|
|
ldr r0, _020035D0 ; =0x020AF028
|
|
strb r7, [r4, #3]
|
|
bl sub_02002A44
|
|
_020034C8:
|
|
add r0, sp, #4
|
|
bl sub_0200265C
|
|
bl sub_02002670
|
|
ldr r0, [r4, #0x10]
|
|
cmp r0, #0
|
|
movne sl, r0
|
|
cmp sl, #0
|
|
beq _02003518
|
|
ldrb r0, [r4, #3]
|
|
cmp r0, #0
|
|
strneb r6, [r4]
|
|
str sl, [r4, #0x18]
|
|
bl sub_020026B8
|
|
ldr r0, [r4, #0x30]
|
|
add r0, r0, #1
|
|
str r0, [r4, #0x30]
|
|
bl sub_02006098
|
|
blx sl
|
|
strb r0, [r4, #6]
|
|
b _02003530
|
|
_02003518:
|
|
bl sub_020026B8
|
|
bl sub_02003A40
|
|
bl sub_02002670
|
|
str r5, [r4, #0x18]
|
|
strb fp, [r4, #6]
|
|
bl sub_020026B8
|
|
_02003530:
|
|
ldrb r0, [r4, #0xd]
|
|
cmp r0, #0
|
|
beq _02003544
|
|
mov r0, #0
|
|
bl sub_020025F8
|
|
_02003544:
|
|
ldrb r0, [r4, #2]
|
|
cmp r0, #0
|
|
beq _0200343C
|
|
bl sub_02003B5C
|
|
cmp r0, #0
|
|
beq _020035A8
|
|
ldrb r0, [r4, #1]
|
|
cmp r0, #0
|
|
beq _02003584
|
|
mov r0, #0
|
|
mov r1, #0
|
|
strb r0, [r4, #0xb]
|
|
mov r0, #0xc
|
|
mov r2, r1
|
|
bl sub_020820E8
|
|
b _0200343C
|
|
_02003584:
|
|
ldr r0, [r4, #0x14]
|
|
cmp r0, #0
|
|
bne _0200343C
|
|
mov r0, #0
|
|
bl sub_02082420
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
strne r0, [r4, #0x14]
|
|
b _0200343C
|
|
_020035A8:
|
|
ldr r0, [r4, #0x14]
|
|
cmp r0, #0
|
|
beq _0200343C
|
|
mov r0, #1
|
|
bl sub_02082420
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
strne r0, [r4, #0x14]
|
|
b _0200343C
|
|
.align 2, 0
|
|
_020035CC: .word 0x020AF000
|
|
_020035D0: .word 0x020AF028
|
|
_020035D4: .word 0x020AF050
|
|
_020035D8: .word 0x020AEFDC
|
|
_020035DC: .word 0x0229B248
|
|
_020035E0: .word 0x020AEF7C
|
|
_020035E4: .word 0x020AF078
|
|
_020035E8: .word 0x020AEFB4
|
|
_020035EC: .word 0x0229B220
|
|
_020035F0: .word sub_02003754
|
|
_020035F4: .word sub_02003704
|
|
_020035F8: .word 0x020AF154
|
|
_020035FC: .word 0x0229F248
|
|
_02003600: .word 0x020AEFC8
|
|
_02003604: .word 0x020924D8
|
|
arm_func_end TaskProcBoot
|
|
|
|
arm_func_start EnableAllInterrupts
|
|
EnableAllInterrupts: ; 0x02003608
|
|
ldr r2, _0200361C ; =0x04000208
|
|
mov r1, #1
|
|
ldrh r0, [r2]
|
|
strh r1, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_0200361C: .word 0x04000208
|
|
arm_func_end EnableAllInterrupts
|
|
|
|
arm_func_start sub_02003620
|
|
sub_02003620: ; 0x02003620
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x28
|
|
mov r7, #0
|
|
ldr fp, _020036FC ; =0x020AF050
|
|
ldr r4, _02003700 ; =0x020AEF7C
|
|
add r6, sp, #0
|
|
add r5, sp, #4
|
|
mov r8, #1
|
|
mov sb, r7
|
|
mov sl, r7
|
|
_02003648:
|
|
mov r0, sl
|
|
bl sub_02079888
|
|
ldr r0, [r4, #0x28]
|
|
add r0, r0, #1
|
|
str r0, [r4, #0x28]
|
|
ldrb r0, [r4, #0xd]
|
|
cmp r0, #0
|
|
beq _02003674
|
|
mov r0, sb
|
|
bl HaltProcessDisp
|
|
b _02003688
|
|
_02003674:
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
beq _02003688
|
|
mov r0, r8
|
|
bl HaltProcessDisp
|
|
_02003688:
|
|
ldrb r0, [r4, #1]
|
|
cmp r0, #0
|
|
bne _020036AC
|
|
bl sub_02003B5C
|
|
cmp r0, #0
|
|
beq _020036AC
|
|
ldrb r0, [r4, #8]
|
|
cmp r0, #0
|
|
beq _020036E8
|
|
_020036AC:
|
|
bl sub_02006DEC
|
|
bl Rand16Bit
|
|
mov r0, r7
|
|
mov r1, r6
|
|
bl GetHeldButtons
|
|
mov r0, r5
|
|
bl GetReleasedStylus
|
|
ldrh r0, [sp]
|
|
cmp r0, #0
|
|
bne _020036E0
|
|
ldrh r0, [sp, #4]
|
|
tst r0, #1
|
|
beq _020036EC
|
|
_020036E0:
|
|
bl Rand16Bit
|
|
b _020036EC
|
|
_020036E8:
|
|
bl KeyWaitInit__02006DA4
|
|
_020036EC:
|
|
mov r0, fp
|
|
bl sub_020029B8
|
|
bl sub_0201849C
|
|
b _02003648
|
|
.align 2, 0
|
|
_020036FC: .word 0x020AF050
|
|
_02003700: .word 0x020AEF7C
|
|
arm_func_end sub_02003620
|
|
|
|
arm_func_start sub_02003704
|
|
sub_02003704: ; 0x02003704
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _0200374C ; =0x027E0000
|
|
ldr r1, _02003750 ; =0x020AEF7C
|
|
add r0, r0, #0x3000
|
|
ldr r2, [r0, #0xff8]
|
|
orr r2, r2, #1
|
|
str r2, [r0, #0xff8]
|
|
ldr r0, [r1, #0x20]
|
|
add r0, r0, #1
|
|
str r0, [r1, #0x20]
|
|
ldrb r0, [r1, #9]
|
|
cmp r0, #0
|
|
beq _02003744
|
|
ldr r0, [r1, #0x34]
|
|
ldr r0, [r0]
|
|
bl sub_02079940
|
|
_02003744:
|
|
bl sub_020082E0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0200374C: .word 0x027E0000
|
|
_02003750: .word 0x020AEF7C
|
|
arm_func_end sub_02003704
|
|
|
|
arm_func_start sub_02003754
|
|
sub_02003754: ; 0x02003754
|
|
ldr r1, _02003774 ; =0x020AEF7C
|
|
ldr r0, _02003778 ; =0x020AF078
|
|
ldr r2, [r1, #0x1c]
|
|
ldr ip, _0200377C ; =sub_02079940
|
|
add r2, r2, #1
|
|
ldr r0, [r0]
|
|
str r2, [r1, #0x1c]
|
|
bx ip
|
|
.align 2, 0
|
|
_02003774: .word 0x020AEF7C
|
|
_02003778: .word 0x020AF078
|
|
_0200377C: .word sub_02079940
|
|
arm_func_end sub_02003754
|
|
|
|
arm_func_start sub_02003780
|
|
sub_02003780: ; 0x02003780
|
|
stmdb sp!, {r3, lr}
|
|
bl sub_02005EAC
|
|
ldr r0, _020037A0 ; =0x020AEF7C
|
|
mov r1, #1
|
|
strb r1, [r0]
|
|
bl sub_02065D1C
|
|
bl WaitForever
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_020037A0: .word 0x020AEF7C
|
|
arm_func_end sub_02003780
|
|
|
|
arm_func_start sub_020037A4
|
|
sub_020037A4: ; 0x020037A4
|
|
ldr r0, _020037B0 ; =0x020AEF7C
|
|
ldr r0, [r0, #0x28]
|
|
bx lr
|
|
.align 2, 0
|
|
_020037B0: .word 0x020AEF7C
|
|
arm_func_end sub_020037A4
|
|
|
|
arm_func_start GetTime
|
|
GetTime: ; 0x020037B4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
bl DisableAllInterrupts
|
|
ldr r0, _02003818 ; =0x020AEF7C
|
|
ldr r1, [r0, #0x1c]
|
|
cmp r1, #0
|
|
bne _020037D8
|
|
bl EnableAllInterrupts
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_020037D8:
|
|
ldr r1, _0200381C ; =0x04000006
|
|
ldr r4, [r0, #0x1c]
|
|
ldrh r5, [r1]
|
|
bl EnableAllInterrupts
|
|
mov r0, r4
|
|
bl IntToFloat
|
|
mov r4, r0
|
|
mov r0, r5
|
|
bl IntToFloat
|
|
mov r1, r0
|
|
ldr r0, _02003820 ; =0x3B792FB2
|
|
bl MultiplyFloat
|
|
mov r1, r0
|
|
mov r0, r4
|
|
bl AddFloat
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02003818: .word 0x020AEF7C
|
|
_0200381C: .word 0x04000006
|
|
_02003820: .word 0x3B792FB2
|
|
arm_func_end GetTime
|
|
|
|
arm_func_start DisableAllInterrupts
|
|
DisableAllInterrupts: ; 0x02003824
|
|
ldr r2, _02003838 ; =0x04000208
|
|
mov r1, #0
|
|
ldrh r0, [r2]
|
|
strh r1, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_02003838: .word 0x04000208
|
|
arm_func_end DisableAllInterrupts
|
|
|
|
arm_func_start sub_0200383C
|
|
sub_0200383C: ; 0x0200383C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
sub sp, sp, #8
|
|
mov r5, r0
|
|
add r0, sp, #0
|
|
mov r1, #0xb
|
|
bl sub_02002628
|
|
bl sub_02002670
|
|
ldr r0, _020038CC ; =0x020AEF7C
|
|
mov r1, #1
|
|
strb r1, [r0, #2]
|
|
ldr r4, [r0, #0x10]
|
|
str r5, [r0, #0x10]
|
|
bl sub_020026B8
|
|
cmp r5, #0
|
|
bne _02003898
|
|
cmp r4, #0
|
|
beq _020038BC
|
|
ldr r1, _020038CC ; =0x020AEF7C
|
|
mov r2, #0
|
|
ldr r0, _020038D0 ; =0x020AF028
|
|
strb r2, [r1, #3]
|
|
bl sub_020029A0
|
|
b _020038BC
|
|
_02003898:
|
|
cmp r4, #0
|
|
bne _020038BC
|
|
ldr r1, _020038CC ; =0x020AEF7C
|
|
mov r2, #1
|
|
ldr r0, _020038D0 ; =0x020AF028
|
|
strb r2, [r1]
|
|
bl sub_020029A0
|
|
ldr r0, _020038D4 ; =0x020AF000
|
|
bl sub_02002A44
|
|
_020038BC:
|
|
add r0, sp, #0
|
|
bl sub_0200265C
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_020038CC: .word 0x020AEF7C
|
|
_020038D0: .word 0x020AF028
|
|
_020038D4: .word 0x020AF000
|
|
arm_func_end sub_0200383C
|
|
|
|
arm_func_start sub_020038D8
|
|
sub_020038D8: ; 0x020038D8
|
|
ldr r0, _020038E4 ; =0x020AEF7C
|
|
ldrb r0, [r0, #3]
|
|
bx lr
|
|
.align 2, 0
|
|
_020038E4: .word 0x020AEF7C
|
|
arm_func_end sub_020038D8
|
|
|
|
arm_func_start sub_020038E8
|
|
sub_020038E8: ; 0x020038E8
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #8
|
|
add r0, sp, #0
|
|
mov r1, #0xb
|
|
bl sub_02002628
|
|
bl sub_02002670
|
|
ldr r0, _02003988 ; =0x020AEF7C
|
|
ldr r4, [r0, #0x18]
|
|
bl sub_020026B8
|
|
cmp r4, #0
|
|
beq _02003944
|
|
ldr r0, _02003988 ; =0x020AEF7C
|
|
mov r1, #1
|
|
strb r1, [r0]
|
|
ldrb r1, [r0, #7]
|
|
cmp r1, #0
|
|
beq _02003938
|
|
ldr r0, [r0, #0x34]
|
|
ldr r0, [r0]
|
|
bl sub_02079940
|
|
_02003938:
|
|
ldr r0, _0200398C ; =0x020AF000
|
|
bl sub_02002A44
|
|
b _02003950
|
|
_02003944:
|
|
ldr r0, _02003988 ; =0x020AEF7C
|
|
mov r1, #0
|
|
strb r1, [r0, #7]
|
|
_02003950:
|
|
ldr r1, _02003988 ; =0x020AEF7C
|
|
add r0, sp, #0
|
|
ldr r2, [r1, #0x2c]
|
|
add r2, r2, #1
|
|
str r2, [r1, #0x2c]
|
|
bl sub_0200265C
|
|
ldr r0, _02003988 ; =0x020AEF7C
|
|
ldrb r0, [r0, #0xd]
|
|
cmp r0, #0
|
|
beq _02003980
|
|
mov r0, #0
|
|
bl sub_020025F8
|
|
_02003980:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02003988: .word 0x020AEF7C
|
|
_0200398C: .word 0x020AF000
|
|
arm_func_end sub_020038E8
|
|
|
|
arm_func_start sub_02003990
|
|
sub_02003990: ; 0x02003990
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #8
|
|
ldr r0, _020039DC ; =0x020AEF7C
|
|
ldrb r0, [r0, #3]
|
|
cmp r0, #0
|
|
beq _020039D4
|
|
add r0, sp, #0
|
|
mov r1, #0xb
|
|
bl sub_02002628
|
|
ldr r1, _020039DC ; =0x020AEF7C
|
|
mov r2, #0
|
|
strb r2, [r1, #3]
|
|
ldr r0, _020039E0 ; =0x020AF000
|
|
strb r2, [r1, #6]
|
|
bl sub_020029A0
|
|
add r0, sp, #0
|
|
bl sub_0200265C
|
|
_020039D4:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_020039DC: .word 0x020AEF7C
|
|
_020039E0: .word 0x020AF000
|
|
arm_func_end sub_02003990
|
|
|
|
arm_func_start sub_020039E4
|
|
sub_020039E4: ; 0x020039E4
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #8
|
|
ldr r0, _02003A34 ; =0x020AEF7C
|
|
ldrb r0, [r0, #3]
|
|
cmp r0, #0
|
|
beq _02003A2C
|
|
add r0, sp, #0
|
|
mov r1, #0xb
|
|
bl sub_02002628
|
|
ldr r1, _02003A34 ; =0x020AEF7C
|
|
mov r2, #0
|
|
ldr r0, _02003A38 ; =0x020AF028
|
|
strb r2, [r1, #6]
|
|
bl sub_020029A0
|
|
ldr r0, _02003A3C ; =0x020AF000
|
|
bl sub_02002A44
|
|
add r0, sp, #0
|
|
bl sub_0200265C
|
|
_02003A2C:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02003A34: .word 0x020AEF7C
|
|
_02003A38: .word 0x020AF028
|
|
_02003A3C: .word 0x020AF000
|
|
arm_func_end sub_020039E4
|
|
|
|
arm_func_start sub_02003A40
|
|
sub_02003A40: ; 0x02003A40
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #8
|
|
add r0, sp, #0
|
|
mov r1, #0xb
|
|
bl sub_02002628
|
|
ldr r1, _02003AAC ; =0x020AEF7C
|
|
mov r2, #1
|
|
ldrb r0, [r1, #0xa]
|
|
cmp r0, #0
|
|
mov r0, #0
|
|
beq _02003A7C
|
|
strb r0, [r1, #0xa]
|
|
strb r2, [r1, #7]
|
|
bl sub_02079888
|
|
b _02003A90
|
|
_02003A7C:
|
|
strb r2, [r1, #9]
|
|
bl sub_02079888
|
|
ldr r0, _02003AAC ; =0x020AEF7C
|
|
mov r1, #0
|
|
strb r1, [r0, #9]
|
|
_02003A90:
|
|
ldr r1, _02003AAC ; =0x020AEF7C
|
|
add r0, sp, #0
|
|
ldrb r4, [r1]
|
|
bl sub_0200265C
|
|
mov r0, r4
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02003AAC: .word 0x020AEF7C
|
|
arm_func_end sub_02003A40
|
|
|
|
arm_func_start sub_02003AB0
|
|
sub_02003AB0: ; 0x02003AB0
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02003AC8 ; =0x020AF050
|
|
bl sub_02002A44
|
|
ldr r0, _02003ACC ; =0x020AEF7C
|
|
ldr r0, [r0, #0x28]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02003AC8: .word 0x020AF050
|
|
_02003ACC: .word 0x020AEF7C
|
|
arm_func_end sub_02003AB0
|
|
|
|
arm_func_start sub_02003AD0
|
|
sub_02003AD0: ; 0x02003AD0
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02003B50 ; =0x020AEF7C
|
|
ldrb r0, [r0, #5]
|
|
cmp r0, #0
|
|
ldmneia sp!, {r3, pc}
|
|
bl sub_02002580
|
|
mov r1, #1
|
|
bl sub_020027F8
|
|
bl sub_02002580
|
|
bl sub_02002860
|
|
cmp r0, #0
|
|
beq _02003B10
|
|
ldr r0, _02003B54 ; =0x020AF050
|
|
bl sub_02002A44
|
|
ldr r0, _02003B50 ; =0x020AEF7C
|
|
ldr r0, [r0, #0x28]
|
|
_02003B10:
|
|
ldr r0, _02003B50 ; =0x020AEF7C
|
|
mov r2, #1
|
|
strb r2, [r0, #5]
|
|
ldrb r1, [r0, #0xf]
|
|
cmp r1, #0
|
|
bne _02003B30
|
|
strb r2, [r0, #0xf]
|
|
bl sub_020081C8
|
|
_02003B30:
|
|
bl DisableAllInterrupts
|
|
ldr r0, _02003B58 ; =0x0229B220
|
|
bl sub_0207B584
|
|
mov r0, #1
|
|
mov r1, #0
|
|
bl sub_02078A98
|
|
bl EnableAllInterrupts
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02003B50: .word 0x020AEF7C
|
|
_02003B54: .word 0x020AF050
|
|
_02003B58: .word 0x0229B220
|
|
arm_func_end sub_02003AD0
|
|
|
|
arm_func_start sub_02003B5C
|
|
sub_02003B5C: ; 0x02003B5C
|
|
ldr r0, _02003B8C ; =0x020AEF7C
|
|
mov r1, #1
|
|
ldrb r0, [r0, #0xb]
|
|
cmp r0, #0
|
|
bne _02003B84
|
|
ldr r0, _02003B90 ; =0x027FFFA8
|
|
ldrh r0, [r0]
|
|
and r0, r0, #0x8000
|
|
movs r0, r0, asr #0xf
|
|
moveq r1, #0
|
|
_02003B84:
|
|
and r0, r1, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_02003B8C: .word 0x020AEF7C
|
|
_02003B90: .word 0x027FFFA8
|
|
arm_func_end sub_02003B5C
|
|
|
|
arm_func_start sub_02003B94
|
|
sub_02003B94: ; 0x02003B94
|
|
ldr r0, _02003BA8 ; =0x020AEF7C
|
|
mov r1, #0
|
|
strb r1, [r0, #1]
|
|
strb r1, [r0, #8]
|
|
bx lr
|
|
.align 2, 0
|
|
_02003BA8: .word 0x020AEF7C
|
|
arm_func_end sub_02003B94
|
|
|
|
arm_func_start sub_02003BAC
|
|
sub_02003BAC: ; 0x02003BAC
|
|
ldr r0, _02003BC4 ; =0x020AEF7C
|
|
mov r1, #0
|
|
strb r1, [r0, #1]
|
|
mov r1, #1
|
|
strb r1, [r0, #8]
|
|
bx lr
|
|
.align 2, 0
|
|
_02003BC4: .word 0x020AEF7C
|
|
arm_func_end sub_02003BAC
|
|
|
|
arm_func_start sub_02003BC8
|
|
sub_02003BC8: ; 0x02003BC8
|
|
stmdb sp!, {r3, lr}
|
|
bl SoundResume
|
|
ldr r0, _02003BE8 ; =0x020AEF7C
|
|
mov r1, #1
|
|
strb r1, [r0, #1]
|
|
mov r1, #0
|
|
strb r1, [r0, #8]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02003BE8: .word 0x020AEF7C
|
|
arm_func_end sub_02003BC8
|
|
|
|
arm_func_start sub_02003BEC
|
|
sub_02003BEC: ; 0x02003BEC
|
|
ldr r0, _02003BF8 ; =0x020AEF7C
|
|
ldrb r0, [r0, #1]
|
|
bx lr
|
|
.align 2, 0
|
|
_02003BF8: .word 0x020AEF7C
|
|
arm_func_end sub_02003BEC
|
|
|
|
arm_func_start sub_02003BFC
|
|
sub_02003BFC: ; 0x02003BFC
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02003CB4 ; =0x020AEF7C
|
|
ldrb r1, [r0, #1]
|
|
cmp r1, #0
|
|
bne _02003CAC
|
|
ldrb r0, [r0, #4]
|
|
cmp r0, #0
|
|
beq _02003C5C
|
|
bl sub_02003B5C
|
|
cmp r0, #0
|
|
bne _02003C54
|
|
ldr r0, _02003CB8 ; =0x020924E8
|
|
bl DebugPrint0__0200C1FC
|
|
ldr r0, _02003CBC ; =0x0229B21C
|
|
ldrh r0, [r0, #2]
|
|
bl sub_02017DF4
|
|
ldr r0, _02003CBC ; =0x0229B21C
|
|
ldrh r0, [r0]
|
|
bl sub_02018024
|
|
ldr r0, _02003CB4 ; =0x020AEF7C
|
|
mov r1, #0
|
|
strb r1, [r0, #4]
|
|
_02003C54:
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
_02003C5C:
|
|
bl sub_02003B5C
|
|
cmp r0, #0
|
|
beq _02003CAC
|
|
ldr r0, _02003CC0 ; =0x020924F8
|
|
bl DebugPrint0__0200C1FC
|
|
bl sub_02017DB4
|
|
ldr r1, _02003CBC ; =0x0229B21C
|
|
strh r0, [r1, #2]
|
|
bl sub_02017FF0
|
|
ldr r1, _02003CBC ; =0x0229B21C
|
|
strh r0, [r1]
|
|
bl sub_02017EE8
|
|
bl sub_02018118
|
|
bl sub_02018278
|
|
mov r0, #0x3f00
|
|
bl sub_02018428
|
|
ldr r1, _02003CB4 ; =0x020AEF7C
|
|
mov r0, #1
|
|
strb r0, [r1, #4]
|
|
ldmia sp!, {r3, pc}
|
|
_02003CAC:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02003CB4: .word 0x020AEF7C
|
|
_02003CB8: .word 0x020924E8
|
|
_02003CBC: .word 0x0229B21C
|
|
_02003CC0: .word 0x020924F8
|
|
arm_func_end sub_02003BFC
|
|
|
|
arm_func_start SoundResume
|
|
SoundResume: ; 0x02003CC4
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02003D20 ; =0x020AEF7C
|
|
ldrb r1, [r0, #1]
|
|
cmp r1, #0
|
|
bne _02003D18
|
|
ldrb r0, [r0, #4]
|
|
cmp r0, #0
|
|
beq _02003D18
|
|
ldr r0, _02003D24 ; =0x020924E8
|
|
bl DebugPrint0__0200C1FC
|
|
ldr r0, _02003D28 ; =0x0229B21C
|
|
ldrh r0, [r0, #2]
|
|
bl sub_02017DF4
|
|
ldr r0, _02003D28 ; =0x0229B21C
|
|
ldrh r0, [r0]
|
|
bl sub_02018024
|
|
ldr r0, _02003D20 ; =0x020AEF7C
|
|
mov r1, #0
|
|
strb r1, [r0, #4]
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
_02003D18:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02003D20: .word 0x020AEF7C
|
|
_02003D24: .word 0x020924E8
|
|
_02003D28: .word 0x0229B21C
|
|
arm_func_end SoundResume
|
|
|
|
arm_func_start CardPullOutWithStatus
|
|
CardPullOutWithStatus: ; 0x02003D2C
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _02003D68 ; =0x020AEF7C
|
|
mov r4, r0
|
|
ldrb r0, [r1, #0xd]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
ldr r0, _02003D6C ; =0x02092508
|
|
mov r1, r4
|
|
bl DebugPrint0__0200C1FC
|
|
cmp r4, #0
|
|
beq _02003D5C
|
|
bl sub_020081DC
|
|
_02003D5C:
|
|
mov r0, #0
|
|
bl sub_020025F8
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02003D68: .word 0x020AEF7C
|
|
_02003D6C: .word 0x02092508
|
|
arm_func_end CardPullOutWithStatus
|
|
|
|
arm_func_start CardPullOut
|
|
CardPullOut: ; 0x02003D70
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02003D8C ; =0x0209251C
|
|
bl DebugPrint0__0200C1FC
|
|
ldr r0, _02003D90 ; =0x020AEF7C
|
|
mov r1, #1
|
|
strb r1, [r0, #0xd]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02003D8C: .word 0x0209251C
|
|
_02003D90: .word 0x020AEF7C
|
|
arm_func_end CardPullOut
|
|
|
|
arm_func_start CardBackupError
|
|
CardBackupError: ; 0x02003D94
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02003DB0 ; =0x0209252C
|
|
bl DebugPrint0__0200C1FC
|
|
ldr r0, _02003DB4 ; =0x020AEF7C
|
|
mov r1, #1
|
|
strb r1, [r0, #0xc]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02003DB0: .word 0x0209252C
|
|
_02003DB4: .word 0x020AEF7C
|
|
arm_func_end CardBackupError
|
|
|
|
arm_func_start HaltProcessDisp
|
|
HaltProcessDisp: ; 0x02003DB8
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r4, r0
|
|
bl sub_02002580
|
|
ldr r1, _02003EBC ; =0x020AF078
|
|
cmp r0, r1
|
|
moveq r1, #1
|
|
movne r1, #0
|
|
ldr r0, _02003EC0 ; =0x020AEF7C
|
|
and r2, r1, #0xff
|
|
ldrb r1, [r0, #0xf]
|
|
cmp r1, #0
|
|
bne _02003E28
|
|
mov r1, #1
|
|
strb r1, [r0, #0xf]
|
|
cmp r2, #0
|
|
beq _02003E24
|
|
mov r6, #0
|
|
ldr r5, _02003EC4 ; =0x020AF050
|
|
b _02003E14
|
|
_02003E04:
|
|
mov r0, r6
|
|
bl sub_02079888
|
|
mov r0, r5
|
|
bl sub_020029B8
|
|
_02003E14:
|
|
bl sub_020081F0
|
|
cmp r0, #0
|
|
beq _02003E04
|
|
b _02003E28
|
|
_02003E24:
|
|
bl sub_020081C8
|
|
_02003E28:
|
|
mov r0, #1
|
|
bl sub_02002824
|
|
bl sub_020184A8
|
|
ldr r0, _02003EC8 ; =0x02092540
|
|
mov r1, r4
|
|
bl DebugPrint0__0200C1FC
|
|
cmp r4, #2
|
|
bne _02003E9C
|
|
mov r0, #1
|
|
bl sub_0200B76C
|
|
mov r7, #0
|
|
mov r6, #1
|
|
ldr r5, _02003EC0 ; =0x020AEF7C
|
|
b _02003E7C
|
|
_02003E60:
|
|
ldrb r0, [r5, #0xd]
|
|
cmp r0, #0
|
|
bne _02003E84
|
|
mov r0, r6
|
|
mov r1, r6
|
|
bl sub_02078900
|
|
add r7, r7, #1
|
|
_02003E7C:
|
|
cmp r7, #0x12c
|
|
blt _02003E60
|
|
_02003E84:
|
|
ldr r0, _02003EC0 ; =0x020AEF7C
|
|
ldrb r0, [r0, #0xd]
|
|
cmp r0, #0
|
|
bne _02003E9C
|
|
mov r0, #0
|
|
bl sub_02002448
|
|
_02003E9C:
|
|
cmp r4, #1
|
|
beq _02003EAC
|
|
mov r0, #0
|
|
bl sub_0200B76C
|
|
_02003EAC:
|
|
bl sub_020845F8
|
|
mov r0, #0
|
|
bl sub_020025F8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_02003EBC: .word 0x020AF078
|
|
_02003EC0: .word 0x020AEF7C
|
|
_02003EC4: .word 0x020AF050
|
|
_02003EC8: .word 0x02092540
|
|
arm_func_end HaltProcessDisp
|
|
|
|
arm_func_start sub_02003ECC
|
|
sub_02003ECC: ; 0x02003ECC
|
|
bx lr
|
|
arm_func_end sub_02003ECC
|
|
|
|
arm_func_start OverlayIsLoaded
|
|
OverlayIsLoaded: ; 0x02003ED0
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #8
|
|
cmp r0, #0x24
|
|
addls pc, pc, r0, lsl #2
|
|
b _02004078
|
|
_02003EE4: ; jump table
|
|
b _02003F78 ; case 0
|
|
b _02003F80 ; case 1
|
|
b _02003F80 ; case 2
|
|
b _02003F80 ; case 3
|
|
b _02003F9C ; case 4
|
|
b _02003F9C ; case 5
|
|
b _02003FC8 ; case 6
|
|
b _02003FC8 ; case 7
|
|
b _02003FC8 ; case 8
|
|
b _02003FC8 ; case 9
|
|
b _02003FC8 ; case 10
|
|
b _02003FC8 ; case 11
|
|
b _02003FC8 ; case 12
|
|
b _02003FF4 ; case 13
|
|
b _02003FF4 ; case 14
|
|
b _02003FF4 ; case 15
|
|
b _02004020 ; case 16
|
|
b _02004020 ; case 17
|
|
b _02004020 ; case 18
|
|
b _02004020 ; case 19
|
|
b _02004020 ; case 20
|
|
b _02004020 ; case 21
|
|
b _02004020 ; case 22
|
|
b _02004020 ; case 23
|
|
b _02004020 ; case 24
|
|
b _02004020 ; case 25
|
|
b _02004020 ; case 26
|
|
b _02004020 ; case 27
|
|
b _02004020 ; case 28
|
|
b _02004020 ; case 29
|
|
b _02004020 ; case 30
|
|
b _02004020 ; case 31
|
|
b _02004020 ; case 32
|
|
b _0200404C ; case 33
|
|
b _0200404C ; case 34
|
|
b _0200404C ; case 35
|
|
b _0200404C ; case 36
|
|
_02003F78:
|
|
mov r0, #1
|
|
b _02004098
|
|
_02003F80:
|
|
ldr r1, _020040A0 ; =0x020AF230
|
|
ldr r1, [r1, #8]
|
|
cmp r1, r0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
b _02004098
|
|
_02003F9C:
|
|
ldr r1, _020040A0 ; =0x020AF230
|
|
ldr r2, [r1, #8]
|
|
cmp r2, #1
|
|
movne r0, #0
|
|
bne _02004098
|
|
ldr r1, [r1, #4]
|
|
cmp r1, r0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
b _02004098
|
|
_02003FC8:
|
|
ldr r1, _020040A0 ; =0x020AF230
|
|
ldr r2, [r1, #4]
|
|
cmp r2, #4
|
|
movne r0, #0
|
|
bne _02004098
|
|
ldr r1, [r1]
|
|
cmp r1, r0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
b _02004098
|
|
_02003FF4:
|
|
ldr r1, _020040A0 ; =0x020AF230
|
|
ldr r2, [r1, #8]
|
|
cmp r2, #2
|
|
movne r0, #0
|
|
bne _02004098
|
|
ldr r1, [r1, #4]
|
|
cmp r1, r0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
b _02004098
|
|
_02004020:
|
|
ldr r1, _020040A0 ; =0x020AF230
|
|
ldr r2, [r1, #4]
|
|
cmp r2, #0xd
|
|
movne r0, #0
|
|
bne _02004098
|
|
ldr r1, [r1]
|
|
cmp r1, r0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
b _02004098
|
|
_0200404C:
|
|
ldr r1, _020040A0 ; =0x020AF230
|
|
ldr r2, [r1, #4]
|
|
cmp r2, #0xe
|
|
movne r0, #0
|
|
bne _02004098
|
|
ldr r1, [r1]
|
|
cmp r1, r0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
b _02004098
|
|
_02004078:
|
|
ldr r1, _020040A4 ; =0x02092558
|
|
add r0, sp, #0
|
|
ldr r2, [r1, #0x14]
|
|
ldr r3, [r1, #0x10]
|
|
ldr r1, _020040A8 ; =0x0209258C
|
|
str r3, [sp]
|
|
str r2, [sp, #4]
|
|
bl FatalError
|
|
_02004098:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_020040A0: .word 0x020AF230
|
|
_020040A4: .word 0x02092558
|
|
_020040A8: .word 0x0209258C
|
|
arm_func_end OverlayIsLoaded
|
|
|
|
arm_func_start LoadOverlay
|
|
LoadOverlay: ; 0x020040AC
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #0x3c
|
|
mov r4, r0
|
|
cmp r4, #0x24
|
|
addls pc, pc, r4, lsl #2
|
|
b _020041A4
|
|
_020040C4: ; jump table
|
|
b _02004158 ; case 0
|
|
b _0200415C ; case 1
|
|
b _0200415C ; case 2
|
|
b _0200415C ; case 3
|
|
b _02004168 ; case 4
|
|
b _02004168 ; case 5
|
|
b _02004174 ; case 6
|
|
b _02004174 ; case 7
|
|
b _02004174 ; case 8
|
|
b _02004174 ; case 9
|
|
b _02004174 ; case 10
|
|
b _02004174 ; case 11
|
|
b _02004174 ; case 12
|
|
b _02004180 ; case 13
|
|
b _02004180 ; case 14
|
|
b _02004180 ; case 15
|
|
b _0200418C ; case 16
|
|
b _0200418C ; case 17
|
|
b _0200418C ; case 18
|
|
b _0200418C ; case 19
|
|
b _0200418C ; case 20
|
|
b _0200418C ; case 21
|
|
b _0200418C ; case 22
|
|
b _0200418C ; case 23
|
|
b _0200418C ; case 24
|
|
b _0200418C ; case 25
|
|
b _0200418C ; case 26
|
|
b _0200418C ; case 27
|
|
b _0200418C ; case 28
|
|
b _0200418C ; case 29
|
|
b _0200418C ; case 30
|
|
b _0200418C ; case 31
|
|
b _0200418C ; case 32
|
|
b _02004198 ; case 33
|
|
b _02004198 ; case 34
|
|
b _02004198 ; case 35
|
|
b _02004198 ; case 36
|
|
_02004158:
|
|
b _020047C4
|
|
_0200415C:
|
|
ldr r0, _020047CC ; =0x020AF230
|
|
str r4, [r0, #8]
|
|
b _020041C4
|
|
_02004168:
|
|
ldr r0, _020047CC ; =0x020AF230
|
|
str r4, [r0, #4]
|
|
b _020041C4
|
|
_02004174:
|
|
ldr r0, _020047CC ; =0x020AF230
|
|
str r4, [r0]
|
|
b _020041C4
|
|
_02004180:
|
|
ldr r0, _020047CC ; =0x020AF230
|
|
str r4, [r0, #4]
|
|
b _020041C4
|
|
_0200418C:
|
|
ldr r0, _020047CC ; =0x020AF230
|
|
str r4, [r0]
|
|
b _020041C4
|
|
_02004198:
|
|
ldr r0, _020047CC ; =0x020AF230
|
|
str r4, [r0]
|
|
b _020041C4
|
|
_020041A4:
|
|
ldr r1, _020047D0 ; =0x02092558
|
|
add r0, sp, #8
|
|
ldr r2, [r1, #0x1c]
|
|
ldr r3, [r1, #0x18]
|
|
ldr r1, _020047D4 ; =0x020925A0
|
|
str r3, [sp, #8]
|
|
str r2, [sp, #0xc]
|
|
bl FatalError
|
|
_020041C4:
|
|
bl DataTransferInit
|
|
bl sub_0207A324
|
|
bl sub_0207A270
|
|
cmp r4, #0x24
|
|
addls pc, pc, r4, lsl #2
|
|
b _02004780
|
|
_020041DC: ; jump table
|
|
b _02004780 ; case 0
|
|
b _02004270 ; case 1
|
|
b _02004294 ; case 2
|
|
b _020042B8 ; case 3
|
|
b _020042DC ; case 4
|
|
b _02004300 ; case 5
|
|
b _02004324 ; case 6
|
|
b _02004348 ; case 7
|
|
b _0200436C ; case 8
|
|
b _02004390 ; case 9
|
|
b _020043B4 ; case 10
|
|
b _020043D8 ; case 11
|
|
b _020043FC ; case 12
|
|
b _02004420 ; case 13
|
|
b _02004444 ; case 14
|
|
b _02004468 ; case 15
|
|
b _0200448C ; case 16
|
|
b _020044B0 ; case 17
|
|
b _020044D4 ; case 18
|
|
b _020044F8 ; case 19
|
|
b _0200451C ; case 20
|
|
b _02004540 ; case 21
|
|
b _02004564 ; case 22
|
|
b _02004588 ; case 23
|
|
b _020045AC ; case 24
|
|
b _020045D0 ; case 25
|
|
b _020045F4 ; case 26
|
|
b _02004618 ; case 27
|
|
b _0200463C ; case 28
|
|
b _02004660 ; case 29
|
|
b _02004684 ; case 30
|
|
b _020046A8 ; case 31
|
|
b _020046CC ; case 32
|
|
b _020046F0 ; case 33
|
|
b _02004714 ; case 34
|
|
b _02004738 ; case 35
|
|
b _0200475C ; case 36
|
|
_02004270:
|
|
ldr r2, _020047D8 ; =0x00000000
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_02004294:
|
|
ldr r2, _020047DC ; =0x0000000A
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_020042B8:
|
|
ldr r2, _020047E0 ; =0x00000023
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_020042DC:
|
|
ldr r2, _020047E4 ; =0x00000001
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_02004300:
|
|
ldr r2, _020047E8 ; =0x00000002
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_02004324:
|
|
ldr r2, _020047EC ; =0x00000003
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_02004348:
|
|
ldr r2, _020047F0 ; =0x00000006
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_0200436C:
|
|
ldr r2, _020047F4 ; =0x00000004
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_02004390:
|
|
ldr r2, _020047F8 ; =0x00000005
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_020043B4:
|
|
ldr r2, _020047FC ; =0x00000007
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_020043D8:
|
|
ldr r2, _02004800 ; =0x00000008
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_020043FC:
|
|
ldr r2, _02004804 ; =0x00000009
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_02004420:
|
|
ldr r2, _02004808 ; =0x0000000B
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_02004444:
|
|
ldr r2, _0200480C ; =0x0000001D
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_02004468:
|
|
ldr r2, _02004810 ; =0x00000022
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_0200448C:
|
|
ldr r2, _02004814 ; =0x0000000C
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_020044B0:
|
|
ldr r2, _02004818 ; =0x0000000D
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_020044D4:
|
|
ldr r2, _0200481C ; =0x0000000E
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_020044F8:
|
|
ldr r2, _02004820 ; =0x0000000F
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_0200451C:
|
|
ldr r2, _02004824 ; =0x00000010
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_02004540:
|
|
ldr r2, _02004828 ; =0x00000011
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_02004564:
|
|
ldr r2, _0200482C ; =0x00000012
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_02004588:
|
|
ldr r2, _02004830 ; =0x00000013
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_020045AC:
|
|
ldr r2, _02004834 ; =0x00000014
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_020045D0:
|
|
ldr r2, _02004838 ; =0x00000015
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_020045F4:
|
|
ldr r2, _0200483C ; =0x00000016
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_02004618:
|
|
ldr r2, _02004840 ; =0x00000017
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_0200463C:
|
|
ldr r2, _02004844 ; =0x00000018
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_02004660:
|
|
ldr r2, _02004848 ; =0x00000019
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_02004684:
|
|
ldr r2, _0200484C ; =0x0000001A
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_020046A8:
|
|
ldr r2, _02004850 ; =0x0000001B
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_020046CC:
|
|
ldr r2, _02004854 ; =0x0000001C
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_020046F0:
|
|
ldr r2, _02004858 ; =0x0000001E
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_02004714:
|
|
ldr r2, _0200485C ; =0x0000001F
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_02004738:
|
|
ldr r2, _02004860 ; =0x00000020
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_0200475C:
|
|
ldr r2, _02004864 ; =0x00000021
|
|
add r0, sp, #0x10
|
|
mov r1, #0
|
|
bl sub_0207FC9C
|
|
cmp r0, #0
|
|
bne _020047A0
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _020047A0
|
|
_02004780:
|
|
ldr r1, _020047D0 ; =0x02092558
|
|
add r0, sp, #0
|
|
ldr r2, [r1, #0xc]
|
|
ldr r3, [r1, #8]
|
|
ldr r1, _020047D4 ; =0x020925A0
|
|
str r3, [sp]
|
|
str r2, [sp, #4]
|
|
bl FatalError
|
|
_020047A0:
|
|
add r0, sp, #0x10
|
|
bl sub_0207FD98
|
|
cmp r0, #0
|
|
bne _020047B8
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
_020047B8:
|
|
add r0, sp, #0x10
|
|
bl sub_0207FEBC
|
|
bl DataTransferStop
|
|
_020047C4:
|
|
add sp, sp, #0x3c
|
|
ldmia sp!, {r3, r4, pc}
|
|
.align 2, 0
|
|
_020047CC: .word 0x020AF230
|
|
_020047D0: .word 0x02092558
|
|
_020047D4: .word 0x020925A0
|
|
_020047D8: .word 0x00000000
|
|
_020047DC: .word 0x0000000A
|
|
_020047E0: .word 0x00000023
|
|
_020047E4: .word 0x00000001
|
|
_020047E8: .word 0x00000002
|
|
_020047EC: .word 0x00000003
|
|
_020047F0: .word 0x00000006
|
|
_020047F4: .word 0x00000004
|
|
_020047F8: .word 0x00000005
|
|
_020047FC: .word 0x00000007
|
|
_02004800: .word 0x00000008
|
|
_02004804: .word 0x00000009
|
|
_02004808: .word 0x0000000B
|
|
_0200480C: .word 0x0000001D
|
|
_02004810: .word 0x00000022
|
|
_02004814: .word 0x0000000C
|
|
_02004818: .word 0x0000000D
|
|
_0200481C: .word 0x0000000E
|
|
_02004820: .word 0x0000000F
|
|
_02004824: .word 0x00000010
|
|
_02004828: .word 0x00000011
|
|
_0200482C: .word 0x00000012
|
|
_02004830: .word 0x00000013
|
|
_02004834: .word 0x00000014
|
|
_02004838: .word 0x00000015
|
|
_0200483C: .word 0x00000016
|
|
_02004840: .word 0x00000017
|
|
_02004844: .word 0x00000018
|
|
_02004848: .word 0x00000019
|
|
_0200484C: .word 0x0000001A
|
|
_02004850: .word 0x0000001B
|
|
_02004854: .word 0x0000001C
|
|
_02004858: .word 0x0000001E
|
|
_0200485C: .word 0x0000001F
|
|
_02004860: .word 0x00000020
|
|
_02004864: .word 0x00000021
|
|
arm_func_end LoadOverlay
|
|
|
|
arm_func_start UnloadOverlay
|
|
UnloadOverlay: ; 0x02004868
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #0x10
|
|
mov r4, r0
|
|
cmp r4, #0x24
|
|
addls pc, pc, r4, lsl #2
|
|
b _02004968
|
|
_02004880: ; jump table
|
|
b _02004914 ; case 0
|
|
b _02004918 ; case 1
|
|
b _02004918 ; case 2
|
|
b _02004918 ; case 3
|
|
b _02004928 ; case 4
|
|
b _02004928 ; case 5
|
|
b _02004938 ; case 6
|
|
b _02004938 ; case 7
|
|
b _02004938 ; case 8
|
|
b _02004938 ; case 9
|
|
b _02004938 ; case 10
|
|
b _02004938 ; case 11
|
|
b _02004938 ; case 12
|
|
b _02004928 ; case 13
|
|
b _02004928 ; case 14
|
|
b _02004928 ; case 15
|
|
b _02004948 ; case 16
|
|
b _02004948 ; case 17
|
|
b _02004948 ; case 18
|
|
b _02004948 ; case 19
|
|
b _02004948 ; case 20
|
|
b _02004948 ; case 21
|
|
b _02004948 ; case 22
|
|
b _02004948 ; case 23
|
|
b _02004948 ; case 24
|
|
b _02004948 ; case 25
|
|
b _02004948 ; case 26
|
|
b _02004948 ; case 27
|
|
b _02004948 ; case 28
|
|
b _02004948 ; case 29
|
|
b _02004948 ; case 30
|
|
b _02004948 ; case 31
|
|
b _02004948 ; case 32
|
|
b _02004958 ; case 33
|
|
b _02004958 ; case 34
|
|
b _02004958 ; case 35
|
|
b _02004958 ; case 36
|
|
_02004914:
|
|
b _02004ED0
|
|
_02004918:
|
|
ldr r0, _02004ED8 ; =0x020AF230
|
|
mov r1, #0
|
|
str r1, [r0, #8]
|
|
b _02004988
|
|
_02004928:
|
|
ldr r0, _02004ED8 ; =0x020AF230
|
|
mov r1, #0
|
|
str r1, [r0, #4]
|
|
b _02004988
|
|
_02004938:
|
|
ldr r0, _02004ED8 ; =0x020AF230
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
b _02004988
|
|
_02004948:
|
|
ldr r0, _02004ED8 ; =0x020AF230
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
b _02004988
|
|
_02004958:
|
|
ldr r0, _02004ED8 ; =0x020AF230
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
b _02004988
|
|
_02004968:
|
|
ldr r1, _02004EDC ; =0x02092558
|
|
add r0, sp, #8
|
|
ldr r2, [r1, #0x24]
|
|
ldr r3, [r1, #0x20]
|
|
ldr r1, _02004EE0 ; =0x020925B4
|
|
str r3, [sp, #8]
|
|
str r2, [sp, #0xc]
|
|
bl FatalError
|
|
_02004988:
|
|
bl DataTransferInit
|
|
cmp r4, #0x24
|
|
addls pc, pc, r4, lsl #2
|
|
b _02004EAC
|
|
_02004998: ; jump table
|
|
b _02004EAC ; case 0
|
|
b _02004A2C ; case 1
|
|
b _02004A4C ; case 2
|
|
b _02004A6C ; case 3
|
|
b _02004A8C ; case 4
|
|
b _02004AAC ; case 5
|
|
b _02004ACC ; case 6
|
|
b _02004AEC ; case 7
|
|
b _02004B0C ; case 8
|
|
b _02004B2C ; case 9
|
|
b _02004B4C ; case 10
|
|
b _02004B6C ; case 11
|
|
b _02004B8C ; case 12
|
|
b _02004BAC ; case 13
|
|
b _02004BCC ; case 14
|
|
b _02004BEC ; case 15
|
|
b _02004C0C ; case 16
|
|
b _02004C2C ; case 17
|
|
b _02004C4C ; case 18
|
|
b _02004C6C ; case 19
|
|
b _02004C8C ; case 20
|
|
b _02004CAC ; case 21
|
|
b _02004CCC ; case 22
|
|
b _02004CEC ; case 23
|
|
b _02004D0C ; case 24
|
|
b _02004D2C ; case 25
|
|
b _02004D4C ; case 26
|
|
b _02004D6C ; case 27
|
|
b _02004D8C ; case 28
|
|
b _02004DAC ; case 29
|
|
b _02004DCC ; case 30
|
|
b _02004DEC ; case 31
|
|
b _02004E0C ; case 32
|
|
b _02004E2C ; case 33
|
|
b _02004E4C ; case 34
|
|
b _02004E6C ; case 35
|
|
b _02004E8C ; case 36
|
|
_02004A2C:
|
|
ldr r1, _02004EE4 ; =0x00000000
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004A4C:
|
|
ldr r1, _02004EE8 ; =0x0000000A
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004A6C:
|
|
ldr r1, _02004EEC ; =0x00000023
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004A8C:
|
|
ldr r1, _02004EF0 ; =0x00000001
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004AAC:
|
|
ldr r1, _02004EF4 ; =0x00000002
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004ACC:
|
|
ldr r1, _02004EF8 ; =0x00000003
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004AEC:
|
|
ldr r1, _02004EFC ; =0x00000006
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004B0C:
|
|
ldr r1, _02004F00 ; =0x00000004
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004B2C:
|
|
ldr r1, _02004F04 ; =0x00000005
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004B4C:
|
|
ldr r1, _02004F08 ; =0x00000007
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004B6C:
|
|
ldr r1, _02004F0C ; =0x00000008
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004B8C:
|
|
ldr r1, _02004F10 ; =0x00000009
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004BAC:
|
|
ldr r1, _02004F14 ; =0x0000000B
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004BCC:
|
|
ldr r1, _02004F18 ; =0x0000001D
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004BEC:
|
|
ldr r1, _02004F1C ; =0x00000022
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004C0C:
|
|
ldr r1, _02004F20 ; =0x0000000C
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004C2C:
|
|
ldr r1, _02004F24 ; =0x0000000D
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004C4C:
|
|
ldr r1, _02004F28 ; =0x0000000E
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004C6C:
|
|
ldr r1, _02004F2C ; =0x0000000F
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004C8C:
|
|
ldr r1, _02004F30 ; =0x00000010
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004CAC:
|
|
ldr r1, _02004F34 ; =0x00000011
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004CCC:
|
|
ldr r1, _02004F38 ; =0x00000012
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004CEC:
|
|
ldr r1, _02004F3C ; =0x00000013
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004D0C:
|
|
ldr r1, _02004F40 ; =0x00000014
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004D2C:
|
|
ldr r1, _02004F44 ; =0x00000015
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004D4C:
|
|
ldr r1, _02004F48 ; =0x00000016
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004D6C:
|
|
ldr r1, _02004F4C ; =0x00000017
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004D8C:
|
|
ldr r1, _02004F50 ; =0x00000018
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004DAC:
|
|
ldr r1, _02004F54 ; =0x00000019
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004DCC:
|
|
ldr r1, _02004F58 ; =0x0000001A
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004DEC:
|
|
ldr r1, _02004F5C ; =0x0000001B
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004E0C:
|
|
ldr r1, _02004F60 ; =0x0000001C
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004E2C:
|
|
ldr r1, _02004F64 ; =0x0000001E
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004E4C:
|
|
ldr r1, _02004F68 ; =0x0000001F
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004E6C:
|
|
ldr r1, _02004F6C ; =0x00000020
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004E8C:
|
|
ldr r1, _02004F70 ; =0x00000021
|
|
mov r0, #0
|
|
bl sub_020800B0
|
|
cmp r0, #0
|
|
bne _02004ECC
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
b _02004ECC
|
|
_02004EAC:
|
|
ldr r1, _02004EDC ; =0x02092558
|
|
add r0, sp, #0
|
|
ldr r2, [r1, #4]
|
|
ldr r3, [r1]
|
|
ldr r1, _02004EE0 ; =0x020925B4
|
|
str r3, [sp]
|
|
str r2, [sp, #4]
|
|
bl FatalError
|
|
_02004ECC:
|
|
bl DataTransferStop
|
|
_02004ED0:
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02004ED8: .word 0x020AF230
|
|
_02004EDC: .word 0x02092558
|
|
_02004EE0: .word 0x020925B4
|
|
_02004EE4: .word 0x00000000
|
|
_02004EE8: .word 0x0000000A
|
|
_02004EEC: .word 0x00000023
|
|
_02004EF0: .word 0x00000001
|
|
_02004EF4: .word 0x00000002
|
|
_02004EF8: .word 0x00000003
|
|
_02004EFC: .word 0x00000006
|
|
_02004F00: .word 0x00000004
|
|
_02004F04: .word 0x00000005
|
|
_02004F08: .word 0x00000007
|
|
_02004F0C: .word 0x00000008
|
|
_02004F10: .word 0x00000009
|
|
_02004F14: .word 0x0000000B
|
|
_02004F18: .word 0x0000001D
|
|
_02004F1C: .word 0x00000022
|
|
_02004F20: .word 0x0000000C
|
|
_02004F24: .word 0x0000000D
|
|
_02004F28: .word 0x0000000E
|
|
_02004F2C: .word 0x0000000F
|
|
_02004F30: .word 0x00000010
|
|
_02004F34: .word 0x00000011
|
|
_02004F38: .word 0x00000012
|
|
_02004F3C: .word 0x00000013
|
|
_02004F40: .word 0x00000014
|
|
_02004F44: .word 0x00000015
|
|
_02004F48: .word 0x00000016
|
|
_02004F4C: .word 0x00000017
|
|
_02004F50: .word 0x00000018
|
|
_02004F54: .word 0x00000019
|
|
_02004F58: .word 0x0000001A
|
|
_02004F5C: .word 0x0000001B
|
|
_02004F60: .word 0x0000001C
|
|
_02004F64: .word 0x0000001E
|
|
_02004F68: .word 0x0000001F
|
|
_02004F6C: .word 0x00000020
|
|
_02004F70: .word 0x00000021
|
|
arm_func_end UnloadOverlay
|
|
|
|
arm_func_start sub_02004F74
|
|
sub_02004F74: ; 0x02004F74
|
|
ldr ip, _02004F7C ; =sub_0207BA08
|
|
bx ip
|
|
.align 2, 0
|
|
_02004F7C: .word sub_0207BA08
|
|
arm_func_end sub_02004F74
|
|
|
|
arm_func_start sub_02004F80
|
|
sub_02004F80: ; 0x02004F80
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r4, r1
|
|
mov r0, #0x400
|
|
mov r1, #0xf
|
|
bl MemAlloc
|
|
ldr r1, _02004FC8 ; =0xEDB88320
|
|
mov r5, r0
|
|
bl sub_020850B4
|
|
mov r0, r5
|
|
mov r1, r6
|
|
mov r2, r4
|
|
bl sub_02085180
|
|
mov r4, r0
|
|
mov r0, r5
|
|
bl MemFree
|
|
mov r0, r4
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02004FC8: .word 0xEDB88320
|
|
arm_func_end sub_02004F80
|
|
|
|
arm_func_start sub_02004FCC
|
|
sub_02004FCC: ; 0x02004FCC
|
|
ldrb r2, [r1, #1]
|
|
ldrb r3, [r1, #2]
|
|
ldrb ip, [r1]
|
|
and r1, r2, #0xf8
|
|
and r2, r3, #0xf8
|
|
mov r1, r1, lsl #2
|
|
and r3, ip, #0xf8
|
|
orr r1, r1, r2, lsl #7
|
|
orr r1, r1, r3, asr #3
|
|
strh r1, [r0]
|
|
bx lr
|
|
arm_func_end sub_02004FCC
|
|
|
|
arm_func_start sub_02004FF8
|
|
sub_02004FF8: ; 0x02004FF8
|
|
ldrh r2, [r1]
|
|
tst r2, #1
|
|
movne r3, #7
|
|
moveq r3, #0
|
|
mov r1, r2, lsl #0x1b
|
|
orr r1, r3, r1, lsr #24
|
|
tst r2, #0x20
|
|
movne r3, #7
|
|
strb r1, [r0]
|
|
moveq r3, #0
|
|
and r1, r2, #0x3e0
|
|
orr r1, r3, r1, asr #2
|
|
tst r2, #0x400
|
|
movne r3, #7
|
|
strb r1, [r0, #1]
|
|
moveq r3, #0
|
|
and r1, r2, #0x7c00
|
|
orr r1, r3, r1, asr #7
|
|
strb r1, [r0, #2]
|
|
mov r1, #0
|
|
strb r1, [r0, #3]
|
|
bx lr
|
|
arm_func_end sub_02004FF8
|
|
|
|
arm_func_start EuclideanNorm__02005050
|
|
EuclideanNorm__02005050: ; 0x02005050
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldmia r0, {r5, r6}
|
|
mov r0, r5
|
|
bl IntToFloat
|
|
mov r4, r0
|
|
mov r0, r5
|
|
bl IntToFloat
|
|
mov r1, r0
|
|
mov r0, r4
|
|
bl MultiplyFloat
|
|
mov r5, r0
|
|
mov r0, r6
|
|
bl IntToFloat
|
|
mov r4, r0
|
|
mov r0, r6
|
|
bl IntToFloat
|
|
mov r1, r0
|
|
mov r0, r4
|
|
bl MultiplyFloat
|
|
mov r1, r0
|
|
mov r0, r5
|
|
bl AddFloat
|
|
bl Sqrtf
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end EuclideanNorm__02005050
|
|
|
|
arm_func_start EuclideanNorm__020050B0
|
|
EuclideanNorm__020050B0: ; 0x020050B0
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldmia r0, {r5, r6}
|
|
mov r0, r5
|
|
bl IntToFloat
|
|
mov r4, r0
|
|
mov r0, r5
|
|
bl IntToFloat
|
|
mov r1, r0
|
|
mov r0, r4
|
|
bl MultiplyFloat
|
|
mov r5, r0
|
|
mov r0, r6
|
|
bl IntToFloat
|
|
mov r4, r0
|
|
mov r0, r6
|
|
bl IntToFloat
|
|
mov r1, r0
|
|
mov r0, r4
|
|
bl MultiplyFloat
|
|
mov r1, r0
|
|
mov r0, r5
|
|
bl AddFloat
|
|
bl Sqrtf
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end EuclideanNorm__020050B0
|
|
|
|
arm_func_start ClampComponentAbs
|
|
ClampComponentAbs: ; 0x02005110
|
|
ldr r3, [r0]
|
|
cmp r3, r1
|
|
strgt r1, [r0]
|
|
bgt _0200512C
|
|
rsb r2, r1, #0
|
|
cmp r3, r2
|
|
strlt r2, [r0]
|
|
_0200512C:
|
|
ldr r2, [r0, #4]
|
|
cmp r2, r1
|
|
strgt r1, [r0, #4]
|
|
bxgt lr
|
|
rsb r1, r1, #0
|
|
cmp r2, r1
|
|
strlt r1, [r0, #4]
|
|
bx lr
|
|
arm_func_end ClampComponentAbs
|
|
|
|
arm_func_start sub_0200514C
|
|
sub_0200514C: ; 0x0200514C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r6, r2
|
|
ldr r4, [sp, #0x18]
|
|
ldr r2, [r6]
|
|
mov r7, r1
|
|
mul r1, r2, r4
|
|
mov r5, r3
|
|
ldr r2, [r7]
|
|
mov r8, r0
|
|
mla r0, r2, r5, r1
|
|
add r1, r5, r4
|
|
bl DivideInt
|
|
str r0, [r8]
|
|
ldr r0, [r6, #4]
|
|
ldr r2, [r7, #4]
|
|
mul r1, r0, r4
|
|
mla r0, r2, r5, r1
|
|
add r1, r5, r4
|
|
bl DivideInt
|
|
str r0, [r8, #4]
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
arm_func_end sub_0200514C
|
|
|
|
arm_func_start sub_020051A0
|
|
sub_020051A0: ; 0x020051A0
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
cmp r1, #0x13
|
|
addls pc, pc, r1, lsl #2
|
|
b _0200533C
|
|
_020051B4: ; jump table
|
|
b _0200533C ; case 0
|
|
b _02005204 ; case 1
|
|
b _0200521C ; case 2
|
|
b _02005234 ; case 3
|
|
b _0200524C ; case 4
|
|
b _02005264 ; case 5
|
|
b _0200527C ; case 6
|
|
b _020052DC ; case 7
|
|
b _02005304 ; case 8
|
|
b _0200531C ; case 9
|
|
b _0200533C ; case 10
|
|
b _0200533C ; case 11
|
|
b _02005330 ; case 12
|
|
b _02005330 ; case 13
|
|
b _02005330 ; case 14
|
|
b _02005330 ; case 15
|
|
b _02005330 ; case 16
|
|
b _02005330 ; case 17
|
|
b _02005330 ; case 18
|
|
b _02005330 ; case 19
|
|
_02005204:
|
|
cmp r4, #0
|
|
addge r0, r4, #7
|
|
andge r0, r0, #7
|
|
movge r0, r0, lsl #0x18
|
|
movge r4, r0, asr #0x18
|
|
b _0200533C
|
|
_0200521C:
|
|
cmp r4, #0
|
|
addge r0, r4, #1
|
|
andge r0, r0, #7
|
|
movge r0, r0, lsl #0x18
|
|
movge r4, r0, asr #0x18
|
|
b _0200533C
|
|
_02005234:
|
|
cmp r4, #0
|
|
addge r0, r4, #6
|
|
andge r0, r0, #7
|
|
movge r0, r0, lsl #0x18
|
|
movge r4, r0, asr #0x18
|
|
b _0200533C
|
|
_0200524C:
|
|
cmp r4, #0
|
|
addge r0, r4, #2
|
|
andge r0, r0, #7
|
|
movge r0, r0, lsl #0x18
|
|
movge r4, r0, asr #0x18
|
|
b _0200533C
|
|
_02005264:
|
|
cmp r4, #0
|
|
addge r0, r4, #4
|
|
andge r0, r0, #7
|
|
movge r0, r0, lsl #0x18
|
|
movge r4, r0, asr #0x18
|
|
b _0200533C
|
|
_0200527C:
|
|
tst r4, #1
|
|
beq _020052B0
|
|
mov r0, #2
|
|
bl RandInt
|
|
mov r0, r0, lsl #1
|
|
add r0, r0, #7
|
|
add r0, r4, r0
|
|
mov r1, r0, lsr #0x1f
|
|
rsb r0, r1, r0, lsl #29
|
|
add r0, r1, r0, ror #29
|
|
mov r0, r0, lsl #0x18
|
|
mov r4, r0, asr #0x18
|
|
b _0200533C
|
|
_020052B0:
|
|
mov r0, #3
|
|
bl RandInt
|
|
mov r0, r0, lsl #1
|
|
add r0, r0, #6
|
|
add r0, r4, r0
|
|
mov r1, r0, lsr #0x1f
|
|
rsb r0, r1, r0, lsl #29
|
|
add r0, r1, r0, ror #29
|
|
mov r0, r0, lsl #0x18
|
|
mov r4, r0, asr #0x18
|
|
b _0200533C
|
|
_020052DC:
|
|
mov r0, #3
|
|
bl RandInt
|
|
add r0, r0, #7
|
|
add r0, r4, r0
|
|
mov r1, r0, lsr #0x1f
|
|
rsb r0, r1, r0, lsl #29
|
|
add r0, r1, r0, ror #29
|
|
mov r0, r0, lsl #0x18
|
|
mov r4, r0, asr #0x18
|
|
b _0200533C
|
|
_02005304:
|
|
mov r0, #8
|
|
bl RandInt
|
|
bic r0, r0, #1
|
|
mov r0, r0, lsl #0x18
|
|
mov r4, r0, asr #0x18
|
|
b _0200533C
|
|
_0200531C:
|
|
mov r0, #8
|
|
bl RandInt
|
|
mov r0, r0, lsl #0x18
|
|
mov r4, r0, asr #0x18
|
|
b _0200533C
|
|
_02005330:
|
|
sub r0, r1, #0xc
|
|
mov r0, r0, lsl #0x18
|
|
mov r4, r0, asr #0x18
|
|
_0200533C:
|
|
mov r0, r4
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_020051A0
|
|
|
|
arm_func_start sub_02005344
|
|
sub_02005344: ; 0x02005344
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r1
|
|
cmp r0, r4
|
|
ldmeqia sp!, {r4, pc}
|
|
cmp r2, #0x13
|
|
addls pc, pc, r2, lsl #2
|
|
ldmia sp!, {r4, pc}
|
|
_02005360: ; jump table
|
|
ldmia sp!, {r4, pc} ; case 0
|
|
b _020053B0 ; case 1
|
|
b _020053C8 ; case 2
|
|
b _020053E0 ; case 3
|
|
b _020053F8 ; case 4
|
|
ldmia sp!, {r4, pc} ; case 5
|
|
ldmia sp!, {r4, pc} ; case 6
|
|
ldmia sp!, {r4, pc} ; case 7
|
|
ldmia sp!, {r4, pc} ; case 8
|
|
ldmia sp!, {r4, pc} ; case 9
|
|
b _02005414 ; case 10
|
|
b _02005410 ; case 11
|
|
b _02005420 ; case 12
|
|
b _02005420 ; case 13
|
|
b _02005420 ; case 14
|
|
b _02005420 ; case 15
|
|
b _02005420 ; case 16
|
|
b _02005420 ; case 17
|
|
b _02005420 ; case 18
|
|
b _02005420 ; case 19
|
|
_020053B0:
|
|
cmp r0, #0
|
|
addge r0, r0, #7
|
|
andge r0, r0, #7
|
|
movge r0, r0, lsl #0x18
|
|
movge r0, r0, asr #0x18
|
|
ldmia sp!, {r4, pc}
|
|
_020053C8:
|
|
cmp r0, #0
|
|
addge r0, r0, #1
|
|
andge r0, r0, #7
|
|
movge r0, r0, lsl #0x18
|
|
movge r0, r0, asr #0x18
|
|
ldmia sp!, {r4, pc}
|
|
_020053E0:
|
|
cmp r0, #0
|
|
addge r0, r0, #6
|
|
andge r0, r0, #7
|
|
movge r0, r0, lsl #0x18
|
|
movge r0, r0, asr #0x18
|
|
ldmia sp!, {r4, pc}
|
|
_020053F8:
|
|
cmp r0, #0
|
|
addge r0, r0, #2
|
|
andge r0, r0, #7
|
|
movge r0, r0, lsl #0x18
|
|
movge r0, r0, asr #0x18
|
|
ldmia sp!, {r4, pc}
|
|
_02005410:
|
|
bl sub_02005430
|
|
_02005414:
|
|
mov r1, r4
|
|
bl sub_02005430
|
|
ldmia sp!, {r4, pc}
|
|
_02005420:
|
|
sub r0, r2, #0xc
|
|
mov r0, r0, lsl #0x18
|
|
mov r0, r0, asr #0x18
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_02005344
|
|
|
|
arm_func_start sub_02005430
|
|
sub_02005430: ; 0x02005430
|
|
mvn r2, #0
|
|
cmp r1, r2
|
|
bxeq lr
|
|
add r1, r1, #8
|
|
sub r1, r1, r0
|
|
mov r2, r1, lsr #0x1f
|
|
rsb r1, r2, r1, lsl #29
|
|
adds r1, r2, r1, ror #29
|
|
bxeq lr
|
|
cmp r1, #4
|
|
bge _02005478
|
|
add r0, r0, #1
|
|
mov r1, r0, lsr #0x1f
|
|
rsb r0, r1, r0, lsl #29
|
|
add r0, r1, r0, ror #29
|
|
mov r0, r0, lsl #0x18
|
|
mov r0, r0, asr #0x18
|
|
bx lr
|
|
_02005478:
|
|
add r0, r0, #7
|
|
mov r1, r0, lsr #0x1f
|
|
rsb r0, r1, r0, lsl #29
|
|
add r0, r1, r0, ror #29
|
|
mov r0, r0, lsl #0x18
|
|
mov r0, r0, asr #0x18
|
|
bx lr
|
|
arm_func_end sub_02005430
|
|
|
|
arm_func_start sub_02005494
|
|
sub_02005494: ; 0x02005494
|
|
ldr ip, _020054BC ; =0x020925F8
|
|
add r3, r0, #1
|
|
ldr r0, [ip, r3, lsl #3]
|
|
add ip, ip, r3, lsl #3
|
|
mul r3, r0, r2
|
|
str r3, [r1]
|
|
ldr r0, [ip, #4]
|
|
mul r2, r0, r2
|
|
str r2, [r1, #4]
|
|
bx lr
|
|
.align 2, 0
|
|
_020054BC: .word 0x020925F8
|
|
arm_func_end sub_02005494
|
|
|
|
arm_func_start sub_020054C0
|
|
sub_020054C0: ; 0x020054C0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
sub sp, sp, #8
|
|
ldr r1, _020055C4 ; =0x020925C8
|
|
mov r5, r0
|
|
ldr r4, [r5]
|
|
ldr r2, [r1, #0x20]
|
|
ldr r1, [r1, #0x24]
|
|
mov r0, r4
|
|
str r2, [sp]
|
|
str r1, [sp, #4]
|
|
bl Abs
|
|
ldr r5, [r5, #4]
|
|
str r0, [sp]
|
|
mov r0, r5
|
|
bl Abs
|
|
str r0, [sp, #4]
|
|
cmp r4, #0
|
|
bge _02005550
|
|
cmp r5, #0
|
|
bge _02005530
|
|
ldr r1, [sp]
|
|
cmp r0, r1, lsl #1
|
|
movgt r0, #4
|
|
bgt _020055BC
|
|
cmp r1, r0, lsl #1
|
|
movgt r0, #6
|
|
movle r0, #5
|
|
b _020055BC
|
|
_02005530:
|
|
ldr r1, [sp]
|
|
cmp r0, r1, lsl #1
|
|
movgt r0, #0
|
|
bgt _020055BC
|
|
cmp r1, r0, lsl #1
|
|
movgt r0, #6
|
|
movle r0, #7
|
|
b _020055BC
|
|
_02005550:
|
|
ble _0200559C
|
|
cmp r5, #0
|
|
bge _0200557C
|
|
ldr r1, [sp]
|
|
cmp r0, r1, lsl #1
|
|
movgt r0, #4
|
|
bgt _020055BC
|
|
cmp r1, r0, lsl #1
|
|
movgt r0, #2
|
|
movle r0, #3
|
|
b _020055BC
|
|
_0200557C:
|
|
ldr r1, [sp]
|
|
cmp r0, r1, lsl #1
|
|
movgt r0, #0
|
|
bgt _020055BC
|
|
cmp r1, r0, lsl #1
|
|
movgt r0, #2
|
|
movle r0, #1
|
|
b _020055BC
|
|
_0200559C:
|
|
cmp r5, #0
|
|
movlt r0, #4
|
|
blt _020055BC
|
|
movle r0, #1
|
|
movgt r0, #0
|
|
mov r0, r0, lsl #0x18
|
|
mov r0, r0, asr #0x18
|
|
rsb r0, r0, #0
|
|
_020055BC:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_020055C4: .word 0x020925C8
|
|
arm_func_end sub_020054C0
|
|
|
|
arm_func_start sub_020055C8
|
|
sub_020055C8: ; 0x020055C8
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
sub sp, sp, #8
|
|
ldr r1, _020056CC ; =0x020925C8
|
|
mov r5, r0
|
|
ldr r4, [r5]
|
|
ldr r2, [r1, #0x18]
|
|
ldr r1, [r1, #0x1c]
|
|
mov r0, r4
|
|
str r2, [sp]
|
|
str r1, [sp, #4]
|
|
bl Abs
|
|
ldr r5, [r5, #4]
|
|
str r0, [sp]
|
|
mov r0, r5
|
|
bl Abs
|
|
str r0, [sp, #4]
|
|
cmp r4, #0
|
|
bge _02005658
|
|
cmp r5, #0
|
|
bge _02005638
|
|
ldr r1, [sp]
|
|
cmp r0, r1, lsl #1
|
|
movgt r0, #4
|
|
bgt _020056C4
|
|
cmp r1, r0, lsl #1
|
|
movgt r0, #6
|
|
movle r0, #5
|
|
b _020056C4
|
|
_02005638:
|
|
ldr r1, [sp]
|
|
cmp r0, r1, lsl #1
|
|
movgt r0, #0
|
|
bgt _020056C4
|
|
cmp r1, r0, lsl #1
|
|
movgt r0, #6
|
|
movle r0, #7
|
|
b _020056C4
|
|
_02005658:
|
|
ble _020056A4
|
|
cmp r5, #0
|
|
bge _02005684
|
|
ldr r1, [sp]
|
|
cmp r0, r1, lsl #1
|
|
movgt r0, #4
|
|
bgt _020056C4
|
|
cmp r1, r0, lsl #1
|
|
movgt r0, #2
|
|
movle r0, #3
|
|
b _020056C4
|
|
_02005684:
|
|
ldr r1, [sp]
|
|
cmp r0, r1, lsl #1
|
|
movgt r0, #0
|
|
bgt _020056C4
|
|
cmp r1, r0, lsl #1
|
|
movgt r0, #2
|
|
movle r0, #1
|
|
b _020056C4
|
|
_020056A4:
|
|
cmp r5, #0
|
|
movlt r0, #4
|
|
blt _020056C4
|
|
movle r0, #1
|
|
movgt r0, #0
|
|
mov r0, r0, lsl #0x18
|
|
mov r0, r0, asr #0x18
|
|
rsb r0, r0, #0
|
|
_020056C4:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_020056CC: .word 0x020925C8
|
|
arm_func_end sub_020055C8
|
|
|
|
arm_func_start sub_020056D0
|
|
sub_020056D0: ; 0x020056D0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
sub sp, sp, #8
|
|
ldr r1, _020057A4 ; =0x020925C8
|
|
mov r5, r0
|
|
ldr r4, [r5]
|
|
ldr r2, [r1, #0x28]
|
|
ldr r1, [r1, #0x2c]
|
|
mov r0, r4
|
|
str r2, [sp]
|
|
str r1, [sp, #4]
|
|
bl Abs
|
|
ldr r5, [r5, #4]
|
|
str r0, [sp]
|
|
mov r0, r5
|
|
bl Abs
|
|
str r0, [sp, #4]
|
|
cmp r4, #0
|
|
bge _02005748
|
|
cmp r5, #0
|
|
bge _02005734
|
|
ldr r1, [sp]
|
|
cmp r0, r1
|
|
movgt r0, #4
|
|
movle r0, #6
|
|
b _0200579C
|
|
_02005734:
|
|
ldr r1, [sp]
|
|
cmp r0, r1
|
|
movgt r0, #0
|
|
movle r0, #6
|
|
b _0200579C
|
|
_02005748:
|
|
ble _0200577C
|
|
cmp r5, #0
|
|
bge _02005768
|
|
ldr r1, [sp]
|
|
cmp r0, r1
|
|
movgt r0, #4
|
|
movle r0, #2
|
|
b _0200579C
|
|
_02005768:
|
|
ldr r1, [sp]
|
|
cmp r0, r1
|
|
movgt r0, #0
|
|
movle r0, #2
|
|
b _0200579C
|
|
_0200577C:
|
|
cmp r5, #0
|
|
movlt r0, #4
|
|
blt _0200579C
|
|
movle r0, #1
|
|
movgt r0, #0
|
|
mov r0, r0, lsl #0x18
|
|
mov r0, r0, asr #0x18
|
|
rsb r0, r0, #0
|
|
_0200579C:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_020057A4: .word 0x020925C8
|
|
arm_func_end sub_020056D0
|
|
|
|
arm_func_start sub_020057A8
|
|
sub_020057A8: ; 0x020057A8
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #8
|
|
ldr ip, _020058A4 ; =0x020925C8
|
|
ldr lr, [ip, #4]
|
|
ldr ip, [ip]
|
|
str lr, [sp, #4]
|
|
str ip, [sp]
|
|
ldr lr, [r2]
|
|
ldr ip, [r0]
|
|
subs ip, lr, ip
|
|
str ip, [sp]
|
|
ldr r2, [r2, #4]
|
|
ldr r0, [r0, #4]
|
|
sub r0, r2, r0
|
|
str r0, [sp, #4]
|
|
ldr r2, [r1]
|
|
ldr r0, [r3]
|
|
bmi _02005814
|
|
add r0, r2, r0
|
|
add r0, r0, r0, lsr #31
|
|
mov r0, r0, asr #1
|
|
sub r0, r0, #1
|
|
subs r0, ip, r0
|
|
str r0, [sp]
|
|
movmi r0, #0
|
|
strmi r0, [sp]
|
|
b _02005838
|
|
_02005814:
|
|
add r0, r2, r0
|
|
add r0, r0, r0, lsr #31
|
|
mov r0, r0, asr #1
|
|
sub r0, r0, #1
|
|
add r0, ip, r0
|
|
str r0, [sp]
|
|
cmp r0, #0
|
|
movgt r0, #0
|
|
strgt r0, [sp]
|
|
_02005838:
|
|
ldr r0, [sp, #4]
|
|
ldr r2, [r1, #4]
|
|
cmp r0, #0
|
|
ldr r1, [r3, #4]
|
|
blt _02005870
|
|
add r1, r2, r1
|
|
add r1, r1, r1, lsr #31
|
|
mov r1, r1, asr #1
|
|
sub r1, r1, #1
|
|
subs r0, r0, r1
|
|
str r0, [sp, #4]
|
|
movmi r0, #0
|
|
strmi r0, [sp, #4]
|
|
b _02005894
|
|
_02005870:
|
|
add r1, r2, r1
|
|
add r1, r1, r1, lsr #31
|
|
mov r1, r1, asr #1
|
|
sub r1, r1, #1
|
|
add r0, r0, r1
|
|
str r0, [sp, #4]
|
|
cmp r0, #0
|
|
movgt r0, #0
|
|
strgt r0, [sp, #4]
|
|
_02005894:
|
|
add r0, sp, #0
|
|
bl sub_020056D0
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_020058A4: .word 0x020925C8
|
|
arm_func_end sub_020057A8
|
|
|
|
arm_func_start sub_020058A8
|
|
sub_020058A8: ; 0x020058A8
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #8
|
|
ldr ip, _020059A4 ; =0x020925C8
|
|
ldr lr, [ip, #0xc]
|
|
ldr ip, [ip, #8]
|
|
str lr, [sp, #4]
|
|
str ip, [sp]
|
|
ldr lr, [r2]
|
|
ldr ip, [r0]
|
|
subs ip, lr, ip
|
|
str ip, [sp]
|
|
ldr r2, [r2, #4]
|
|
ldr r0, [r0, #4]
|
|
sub r0, r2, r0
|
|
str r0, [sp, #4]
|
|
ldr r2, [r1]
|
|
ldr r0, [r3]
|
|
bmi _02005914
|
|
add r0, r2, r0
|
|
add r0, r0, r0, lsr #31
|
|
mov r0, r0, asr #1
|
|
sub r0, r0, #1
|
|
subs r0, ip, r0
|
|
str r0, [sp]
|
|
movmi r0, #0
|
|
strmi r0, [sp]
|
|
b _02005938
|
|
_02005914:
|
|
add r0, r2, r0
|
|
add r0, r0, r0, lsr #31
|
|
mov r0, r0, asr #1
|
|
sub r0, r0, #1
|
|
add r0, ip, r0
|
|
str r0, [sp]
|
|
cmp r0, #0
|
|
movgt r0, #0
|
|
strgt r0, [sp]
|
|
_02005938:
|
|
ldr r0, [sp, #4]
|
|
ldr r2, [r1, #4]
|
|
cmp r0, #0
|
|
ldr r1, [r3, #4]
|
|
blt _02005970
|
|
add r1, r2, r1
|
|
add r1, r1, r1, lsr #31
|
|
mov r1, r1, asr #1
|
|
sub r1, r1, #1
|
|
subs r0, r0, r1
|
|
str r0, [sp, #4]
|
|
movmi r0, #0
|
|
strmi r0, [sp, #4]
|
|
b _02005994
|
|
_02005970:
|
|
add r1, r2, r1
|
|
add r1, r1, r1, lsr #31
|
|
mov r1, r1, asr #1
|
|
sub r1, r1, #1
|
|
add r0, r0, r1
|
|
str r0, [sp, #4]
|
|
cmp r0, #0
|
|
movgt r0, #0
|
|
strgt r0, [sp, #4]
|
|
_02005994:
|
|
add r0, sp, #0
|
|
bl sub_020055C8
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_020059A4: .word 0x020925C8
|
|
arm_func_end sub_020058A8
|
|
|
|
arm_func_start sub_020059A8
|
|
sub_020059A8: ; 0x020059A8
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #0xac
|
|
ldr r0, _02005A8C ; =0x020AF240
|
|
bl sub_02002C40
|
|
ldr r0, _02005A8C ; =0x020AF240
|
|
mov r1, #7
|
|
bl sub_02002CAC
|
|
ldr r0, _02005A8C ; =0x020AF240
|
|
bl sub_02002E98
|
|
ldr r8, _02005A90 ; =0x022A3248
|
|
ldr r7, _02005A94 ; =0x02092670
|
|
ldr r6, _02005A98 ; =0x020926C0
|
|
add r5, sp, #0
|
|
mov sb, #0
|
|
mov r4, #0xa
|
|
_020059E4:
|
|
ldmia r6!, {r0, r1, r2, r3}
|
|
stmia r5!, {r0, r1, r2, r3}
|
|
subs r4, r4, #1
|
|
bne _020059E4
|
|
ldmia r6, {r0, r1, r2}
|
|
stmia r5, {r0, r1, r2}
|
|
mov r5, #0
|
|
mov r6, #1
|
|
mov r4, r5
|
|
_02005A08:
|
|
ldrb r0, [r7, #8]
|
|
strh sb, [r8]
|
|
cmp r0, #0
|
|
beq _02005A2C
|
|
mov r1, r6
|
|
mov r2, r5
|
|
add r0, r8, #4
|
|
bl sub_02002A9C
|
|
b _02005A50
|
|
_02005A2C:
|
|
add sl, sp, #0
|
|
add lr, r8, #4
|
|
mov ip, #0xa
|
|
_02005A38:
|
|
ldmia sl!, {r0, r1, r2, r3}
|
|
stmia lr!, {r0, r1, r2, r3}
|
|
subs ip, ip, #1
|
|
bne _02005A38
|
|
ldmia sl, {r0, r1, r2}
|
|
stmia lr, {r0, r1, r2}
|
|
_02005A50:
|
|
strh r4, [r8, #0xb0]
|
|
str r4, [r8, #0xb8]
|
|
ldr r1, [r7, #0x10]
|
|
mov r0, sb
|
|
str r4, [r8, #0xb4]
|
|
bl sub_02005A9C
|
|
add r0, sb, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov sb, r0, asr #0x10
|
|
cmp sb, #4
|
|
add r8, r8, #0xbc
|
|
add r7, r7, #0x14
|
|
blt _02005A08
|
|
add sp, sp, #0xac
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_02005A8C: .word 0x020AF240
|
|
_02005A90: .word 0x022A3248
|
|
_02005A94: .word 0x02092670
|
|
_02005A98: .word 0x020926C0
|
|
arm_func_end sub_020059A8
|
|
|
|
arm_func_start sub_02005A9C
|
|
sub_02005A9C: ; 0x02005A9C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r2, _02005B0C ; =0x02092670
|
|
mov r4, r0
|
|
mov r0, #0x14
|
|
mla r0, r4, r0, r2
|
|
ldrh r0, [r0, #4]
|
|
ldr r3, _02005B10 ; =0x022A3248
|
|
mov r2, #0xbc
|
|
mla r6, r4, r2, r3
|
|
mov r8, r1
|
|
cmp r0, #0
|
|
mov r7, #0
|
|
beq _02005B04
|
|
bl sub_020031C0
|
|
mov r5, r0
|
|
bl sub_0200302C
|
|
mov r0, r4
|
|
bl sub_02005D30
|
|
ldr r0, _02005B14 ; =0x020AF240
|
|
bl sub_02002CB4
|
|
ldr r7, [r6, #0xb8]
|
|
ldr r0, _02005B14 ; =0x020AF240
|
|
str r8, [r6, #0xb8]
|
|
bl sub_02002E98
|
|
mov r0, r5
|
|
bl sub_020030FC
|
|
_02005B04:
|
|
mov r0, r7
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_02005B0C: .word 0x02092670
|
|
_02005B10: .word 0x022A3248
|
|
_02005B14: .word 0x020AF240
|
|
arm_func_end sub_02005A9C
|
|
|
|
arm_func_start sub_02005B18
|
|
sub_02005B18: ; 0x02005B18
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #8
|
|
mov r6, r0
|
|
ldrsh ip, [r6]
|
|
ldrh r5, [r6, #2]
|
|
ldr r3, _02005D04 ; =0x022A3248
|
|
mov r0, #0xbc
|
|
ldr r2, _02005D08 ; =0x02092670
|
|
mov r1, #0x14
|
|
mla r4, ip, r0, r3
|
|
tst r5, #0x400
|
|
orrne r0, r5, #0x200
|
|
movne r0, r0, lsl #0x10
|
|
mla r1, ip, r1, r2
|
|
movne r5, r0, lsr #0x10
|
|
bne _02005B6C
|
|
tst r5, #0x800
|
|
ldreq r0, [r1, #0xc]
|
|
orreq r0, r5, r0
|
|
moveq r0, r0, lsl #0x10
|
|
moveq r5, r0, lsr #0x10
|
|
_02005B6C:
|
|
ldrh r0, [r1, #6]
|
|
bl sub_020031C0
|
|
ldrsh r0, [r6]
|
|
bl sub_02005D30
|
|
ldr r0, _02005D0C ; =0x020AF240
|
|
bl sub_02002CB4
|
|
ldr r0, _02005D10 ; =0x020AF23C
|
|
ldr r1, [r0]
|
|
add r2, r1, #1
|
|
str r2, [r4, #0xb4]
|
|
strh r5, [r4, #0xb0]
|
|
ldrh r1, [r4, #0xb0]
|
|
str r2, [r0]
|
|
and r0, r1, #0xff
|
|
cmp r0, #7
|
|
addls pc, pc, r0, lsl #2
|
|
b _02005CE0
|
|
_02005BB0: ; jump table
|
|
b _02005BD0 ; case 0
|
|
b _02005BF4 ; case 1
|
|
b _02005C18 ; case 2
|
|
b _02005C3C ; case 3
|
|
b _02005C60 ; case 4
|
|
b _02005C8C ; case 5
|
|
b _02005CB8 ; case 6
|
|
b _02005CE0 ; case 7
|
|
_02005BD0:
|
|
ldr r0, [r4, #0xb8]
|
|
ldr r0, [r0]
|
|
stmia sp, {r0, r4}
|
|
ldrsh r0, [r6]
|
|
ldr r1, [r6, #8]
|
|
ldr r2, [r6, #0xc]
|
|
ldr r3, [r6, #4]
|
|
bl sub_0207BFA4
|
|
b _02005CE0
|
|
_02005BF4:
|
|
ldr r0, [r4, #0xb8]
|
|
ldr r0, [r0]
|
|
stmia sp, {r0, r4}
|
|
ldrsh r0, [r6]
|
|
ldr r1, [r6, #8]
|
|
ldr r2, [r6, #0xc]
|
|
ldr r3, [r6, #4]
|
|
bl sub_0207BE6C
|
|
b _02005CE0
|
|
_02005C18:
|
|
ldr r0, [r4, #0xb8]
|
|
ldr r0, [r0]
|
|
stmia sp, {r0, r4}
|
|
ldrsh r0, [r6]
|
|
ldr r1, [r6, #8]
|
|
ldr r2, [r6, #0xc]
|
|
ldr r3, [r6, #4]
|
|
bl sub_0207C03C
|
|
b _02005CE0
|
|
_02005C3C:
|
|
ldr r0, [r4, #0xb8]
|
|
ldr r0, [r0]
|
|
stmia sp, {r0, r4}
|
|
ldrsh r0, [r6]
|
|
ldr r1, [r6, #8]
|
|
ldr r2, [r6, #0xc]
|
|
ldr r3, [r6, #4]
|
|
bl sub_0207BF04
|
|
b _02005CE0
|
|
_02005C60:
|
|
bl sub_020783D0
|
|
ldr r0, [r4, #0xb8]
|
|
ldr r0, [r0]
|
|
stmia sp, {r0, r4}
|
|
ldrsh r0, [r6]
|
|
ldr r1, [r6, #8]
|
|
ldr r2, [r6, #0xc]
|
|
ldr r3, [r6, #4]
|
|
bl sub_0207BE6C
|
|
bl sub_02078470
|
|
b _02005CE0
|
|
_02005C8C:
|
|
bl sub_020784B8
|
|
ldr r0, [r4, #0xb8]
|
|
ldr r0, [r0]
|
|
stmia sp, {r0, r4}
|
|
ldrsh r0, [r6]
|
|
ldr r1, [r6, #8]
|
|
ldr r2, [r6, #0xc]
|
|
ldr r3, [r6, #4]
|
|
bl sub_0207BE6C
|
|
bl sub_02078500
|
|
b _02005CE0
|
|
_02005CB8:
|
|
bl sub_02078544
|
|
ldr r0, [r4, #0xb8]
|
|
ldr r0, [r0]
|
|
stmia sp, {r0, r4}
|
|
ldrsh r0, [r6]
|
|
ldr r1, [r6, #8]
|
|
ldr r2, [r6, #0xc]
|
|
ldr r3, [r6, #4]
|
|
bl sub_0207BE6C
|
|
bl sub_0207855C
|
|
_02005CE0:
|
|
ldr r0, _02005D0C ; =0x020AF240
|
|
bl sub_02002E98
|
|
ldrh r0, [r4, #0xb0]
|
|
tst r0, #0x100
|
|
beq _02005CFC
|
|
ldrsh r0, [r4]
|
|
bl sub_02005D30
|
|
_02005CFC:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02005D04: .word 0x022A3248
|
|
_02005D08: .word 0x02092670
|
|
_02005D0C: .word 0x020AF240
|
|
_02005D10: .word 0x020AF23C
|
|
arm_func_end sub_02005B18
|
|
|
|
arm_func_start sub_02005D14
|
|
sub_02005D14: ; 0x02005D14
|
|
stmdb sp!, {r3, lr}
|
|
ldrh r1, [r0, #0xb0]
|
|
tst r1, #0x200
|
|
ldmeqia sp!, {r3, pc}
|
|
add r0, r0, #4
|
|
bl sub_02002B38
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_02005D14
|
|
|
|
arm_func_start sub_02005D30
|
|
sub_02005D30: ; 0x02005D30
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _02005D88 ; =0x02092670
|
|
mov r4, r0
|
|
mov r0, #0x14
|
|
mla r0, r4, r0, r1
|
|
ldrh r0, [r0, #6]
|
|
bl sub_020031C0
|
|
ldr r1, _02005D8C ; =0x022A3248
|
|
mov r0, #0xbc
|
|
mla r0, r4, r0, r1
|
|
ldr r0, [r0, #0xb8]
|
|
cmp r0, #0
|
|
beq _02005D74
|
|
ldr r1, [r0, #8]
|
|
mov r0, r4
|
|
blx r1
|
|
ldmia sp!, {r4, pc}
|
|
_02005D74:
|
|
mov r0, r4
|
|
bl sub_0207C0DC
|
|
cmp r0, #0
|
|
bne _02005D74
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02005D88: .word 0x02092670
|
|
_02005D8C: .word 0x022A3248
|
|
arm_func_end sub_02005D30
|
|
|
|
arm_func_start sub_02005D90
|
|
sub_02005D90: ; 0x02005D90
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r1, _02005DDC ; =0x022A3248
|
|
mov r5, r0
|
|
mov r0, #0xbc
|
|
smlabb r4, r5, r0, r1
|
|
ldrh r0, [r4, #0xb0]
|
|
tst r0, #0x200
|
|
beq _02005DC8
|
|
add r0, r4, #4
|
|
bl sub_02002B7C
|
|
ldrh r0, [r4, #0xb0]
|
|
bic r0, r0, #0x200
|
|
strh r0, [r4, #0xb0]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_02005DC8:
|
|
mov r0, r5
|
|
bl sub_0207C0DC
|
|
cmp r0, #0
|
|
bne _02005DC8
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02005DDC: .word 0x022A3248
|
|
arm_func_end sub_02005D90
|
|
|
|
arm_func_start sub_02005DE0
|
|
sub_02005DE0: ; 0x02005DE0
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _02005E0C ; =0x022A3248
|
|
mov r1, #0xbc
|
|
smlabb r1, r0, r1, r2
|
|
ldrh r1, [r1, #0xb0]
|
|
tst r1, #0x200
|
|
movne r0, #1
|
|
ldmneia sp!, {r3, pc}
|
|
bl sub_0207C0DC
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02005E0C: .word 0x022A3248
|
|
arm_func_end sub_02005DE0
|
|
|
|
arm_func_start sub_02005E10
|
|
sub_02005E10: ; 0x02005E10
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #0x10
|
|
ldr ip, [sp, #0x18]
|
|
strh r0, [sp]
|
|
add r0, sp, #0
|
|
strh r1, [sp, #2]
|
|
str ip, [sp, #4]
|
|
str r3, [sp, #8]
|
|
str r2, [sp, #0xc]
|
|
bl sub_02005B18
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_02005E10
|
|
|
|
arm_func_start sub_02005E40
|
|
sub_02005E40: ; 0x02005E40
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r0, _02005EA4 ; =0x020AF264
|
|
bl sub_02002C40
|
|
ldr r0, _02005EA4 ; =0x020AF264
|
|
mov r1, #8
|
|
bl sub_02002CAC
|
|
mov r8, #0
|
|
ldr r7, _02005EA8 ; =0x022A353C
|
|
mov r6, r8
|
|
mov r5, r8
|
|
mov r4, #0xc
|
|
b _02005E8C
|
|
_02005E70:
|
|
mla r0, r8, r4, r7
|
|
mov r1, r6
|
|
bl sub_02005F14
|
|
mov r0, r8
|
|
mov r1, r5
|
|
bl sub_02005F30
|
|
add r8, r8, #1
|
|
_02005E8C:
|
|
cmp r8, #2
|
|
blt _02005E70
|
|
ldr r0, _02005EA4 ; =0x020AF264
|
|
bl sub_02002E98
|
|
bl sub_02006030
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_02005EA4: .word 0x020AF264
|
|
_02005EA8: .word 0x022A353C
|
|
arm_func_end sub_02005E40
|
|
|
|
arm_func_start sub_02005EAC
|
|
sub_02005EAC: ; 0x02005EAC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r6, _02005F10 ; =0x022A3554
|
|
mov r7, #0
|
|
cmp r7, #2
|
|
ldmgeia sp!, {r3, r4, r5, r6, r7, pc}
|
|
mov r5, r7
|
|
mov r4, r7
|
|
b _02005F04
|
|
_02005ECC:
|
|
strh r5, [r6, #0x1e]
|
|
ldrh r1, [r6, #0x1e]
|
|
mov r0, r7
|
|
strh r1, [r6, #0x12]
|
|
bl sub_02006220
|
|
strh r4, [r6, #0x3c]
|
|
ldrh r1, [r6, #0x3c]
|
|
mov r0, r7
|
|
strh r1, [r6, #0x2c]
|
|
bl sub_020062C8
|
|
mov r0, r7
|
|
bl sub_020063A0
|
|
add r7, r7, #1
|
|
add r6, r6, #0x44
|
|
_02005F04:
|
|
cmp r7, #2
|
|
blt _02005ECC
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_02005F10: .word 0x022A3554
|
|
arm_func_end sub_02005EAC
|
|
|
|
arm_func_start sub_02005F14
|
|
sub_02005F14: ; 0x02005F14
|
|
mov r2, #0
|
|
stmia r0, {r1, r2}
|
|
ldr r1, _02005F2C ; =0x00002FFF
|
|
strh r2, [r0, #8]
|
|
strh r1, [r0, #0xa]
|
|
bx lr
|
|
.align 2, 0
|
|
_02005F2C: .word 0x00002FFF
|
|
arm_func_end sub_02005F14
|
|
|
|
arm_func_start sub_02005F30
|
|
sub_02005F30: ; 0x02005F30
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r2, _02005F80 ; =0x022A3554
|
|
mov r5, r0
|
|
mov r0, #0x44
|
|
mla r4, r5, r0, r2
|
|
mov r0, r4
|
|
bl sub_02005F14
|
|
mov r1, #0
|
|
strh r1, [r4, #0x1e]
|
|
mov r0, r5
|
|
strh r1, [r4, #0x12]
|
|
bl sub_02006220
|
|
mov r1, #0
|
|
strh r1, [r4, #0x3c]
|
|
mov r0, r5
|
|
strh r1, [r4, #0x2c]
|
|
bl sub_020062C8
|
|
mov r0, r5
|
|
bl sub_020063A0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02005F80: .word 0x022A3554
|
|
arm_func_end sub_02005F30
|
|
|
|
arm_func_start sub_02005F84
|
|
sub_02005F84: ; 0x02005F84
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r1, _0200601C ; =0x022A353C
|
|
movs r5, r0
|
|
mov r0, #0xc
|
|
mla r4, r5, r0, r1
|
|
movne r6, #0
|
|
bne _02005FCC
|
|
ldr r1, _02006020 ; =0x04000130
|
|
ldr r0, _02006024 ; =0x027FFFA8
|
|
ldrh r3, [r1]
|
|
ldrh r2, [r0]
|
|
ldr r0, _02006028 ; =0x00002FFF
|
|
ldr r1, _0200602C ; =0x022A3538
|
|
orr r2, r3, r2
|
|
eor r2, r2, r0
|
|
and r0, r2, r0
|
|
strh r0, [r1]
|
|
mov r6, #2
|
|
_02005FCC:
|
|
ldr r0, [r4]
|
|
cmp r6, r0
|
|
beq _02005FF0
|
|
mov r0, r4
|
|
mov r1, r6
|
|
bl sub_02005F14
|
|
mov r0, r5
|
|
mov r1, r6
|
|
bl sub_02005F30
|
|
_02005FF0:
|
|
ldr r1, _0200602C ; =0x022A3538
|
|
mov r0, r6
|
|
ldrh r2, [r1]
|
|
strh r2, [r4, #8]
|
|
ldrh r1, [r4, #0xa]
|
|
and r1, r1, r2
|
|
strh r1, [r4, #0xa]
|
|
ldr r1, [r4, #4]
|
|
add r1, r1, #1
|
|
str r1, [r4, #4]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0200601C: .word 0x022A353C
|
|
_02006020: .word 0x04000130
|
|
_02006024: .word 0x027FFFA8
|
|
_02006028: .word 0x00002FFF
|
|
_0200602C: .word 0x022A3538
|
|
arm_func_end sub_02005F84
|
|
|
|
arm_func_start sub_02006030
|
|
sub_02006030: ; 0x02006030
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r0, _0200608C ; =0x020AF264
|
|
bl sub_02002CB4
|
|
mov r7, #0
|
|
ldr r5, _02006090 ; =0x022A353C
|
|
ldr r6, _02006094 ; =0x022A3554
|
|
mov r4, r7
|
|
_0200604C:
|
|
mov r0, r7
|
|
bl sub_02005F84
|
|
cmp r0, #0
|
|
streq r4, [r6]
|
|
beq _0200606C
|
|
cmp r0, #1
|
|
ldmneia r5, {r0, r1, r2}
|
|
stmneia r6, {r0, r1, r2}
|
|
_0200606C:
|
|
add r7, r7, #1
|
|
cmp r7, #2
|
|
add r5, r5, #0xc
|
|
add r6, r6, #0x44
|
|
blt _0200604C
|
|
ldr r0, _0200608C ; =0x020AF264
|
|
bl sub_02002E98
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0200608C: .word 0x020AF264
|
|
_02006090: .word 0x022A353C
|
|
_02006094: .word 0x022A3554
|
|
arm_func_end sub_02006030
|
|
|
|
arm_func_start sub_02006098
|
|
sub_02006098: ; 0x02006098
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r0, _020061D8 ; =0x020AF264
|
|
bl sub_02002CB4
|
|
mov r6, #0
|
|
ldr r4, _020061DC ; =0x022A353C
|
|
ldr r5, _020061E0 ; =0x022A3554
|
|
ldr sb, _020061E4 ; =0x00002FFF
|
|
ldr r7, _020061E8 ; =0x00000F0F
|
|
mov lr, #1
|
|
mov ip, r6
|
|
mov r3, r6
|
|
mov r8, r6
|
|
_020060C8:
|
|
ldmia r4, {r0, r1, r2}
|
|
stmia r5, {r0, r1, r2}
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
beq _020061B8
|
|
ldrh r1, [r5, #0x14]
|
|
ldrh r0, [r5, #0xa]
|
|
and r0, r1, r0
|
|
strh r0, [r5, #0x14]
|
|
ldrh r0, [r5, #8]
|
|
strh r0, [r5, #0x12]
|
|
strb lr, [r5, #0x10]
|
|
ldrh r0, [r5, #0xa]
|
|
ldrh r1, [r5, #0x20]
|
|
orr r0, r0, #0xf0
|
|
and r0, r1, r0
|
|
strh r0, [r5, #0x20]
|
|
ldrh r0, [r5, #8]
|
|
strh r0, [r5, #0x1e]
|
|
strb lr, [r5, #0x1c]
|
|
ldrh r1, [r5, #0x2e]
|
|
ldrh r0, [r5, #0xa]
|
|
and r0, r1, r0
|
|
strh r0, [r5, #0x2e]
|
|
ldrh r0, [r5, #8]
|
|
and r0, r0, r7
|
|
strh r0, [r5, #0x2c]
|
|
strb lr, [r5, #0x24]
|
|
ldrh r1, [r5, #0x3e]
|
|
ldrh r0, [r5, #0xa]
|
|
and r0, r1, r0
|
|
strh r0, [r5, #0x3e]
|
|
ldrh r0, [r5, #8]
|
|
and r0, r0, #0xf0
|
|
strh r0, [r5, #0x3c]
|
|
strb lr, [r5, #0x34]
|
|
ldrh r0, [r5, #0x2c]
|
|
cmp r0, #0
|
|
streqb ip, [r5, #0x25]
|
|
streq ip, [r5, #0x28]
|
|
beq _02006184
|
|
ldrb r0, [r5, #0x25]
|
|
cmp r0, #0
|
|
ldreq r1, [r5, #0x28]
|
|
ldreq r0, [r4, #4]
|
|
subeq r0, r1, r0
|
|
streq r0, [r5, #0x28]
|
|
_02006184:
|
|
ldrh r0, [r5, #0x3c]
|
|
cmp r0, #0
|
|
streqb r3, [r5, #0x35]
|
|
streq r3, [r5, #0x38]
|
|
beq _020061B0
|
|
ldrb r0, [r5, #0x35]
|
|
cmp r0, #0
|
|
ldreq r1, [r5, #0x38]
|
|
ldreq r0, [r4, #4]
|
|
subeq r0, r1, r0
|
|
streq r0, [r5, #0x38]
|
|
_020061B0:
|
|
strh sb, [r4, #0xa]
|
|
str r8, [r4, #4]
|
|
_020061B8:
|
|
add r6, r6, #1
|
|
cmp r6, #2
|
|
add r4, r4, #0xc
|
|
add r5, r5, #0x44
|
|
blt _020060C8
|
|
ldr r0, _020061D8 ; =0x020AF264
|
|
bl sub_02002E98
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_020061D8: .word 0x020AF264
|
|
_020061DC: .word 0x022A353C
|
|
_020061E0: .word 0x022A3554
|
|
_020061E4: .word 0x00002FFF
|
|
_020061E8: .word 0x00000F0F
|
|
arm_func_end sub_02006098
|
|
|
|
arm_func_start GetHeldButtons
|
|
GetHeldButtons: ; 0x020061EC
|
|
mov r2, #0x44
|
|
mul r2, r0, r2
|
|
ldr r3, _0200621C ; =0x022A3554
|
|
add r0, r3, r2
|
|
ldrh r0, [r0, #8]
|
|
strh r0, [r1]
|
|
ldr r0, [r3, r2]
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_0200621C: .word 0x022A3554
|
|
arm_func_end GetHeldButtons
|
|
|
|
arm_func_start sub_02006220
|
|
sub_02006220: ; 0x02006220
|
|
ldr r2, _02006258 ; =0x022A3554
|
|
mov r1, #0x44
|
|
mla r2, r0, r1, r2
|
|
mov r1, #0
|
|
str r0, [r2, #0xc]
|
|
strb r1, [r2, #0x1c]
|
|
strb r1, [r2, #0x10]
|
|
strh r1, [r2, #0x22]
|
|
strh r1, [r2, #0x16]
|
|
ldrh r0, [r2, #0x12]
|
|
strh r0, [r2, #0x14]
|
|
ldrh r0, [r2, #0x1e]
|
|
strh r0, [r2, #0x20]
|
|
bx lr
|
|
.align 2, 0
|
|
_02006258: .word 0x022A3554
|
|
arm_func_end sub_02006220
|
|
|
|
arm_func_start GetPressedButtons
|
|
GetPressedButtons: ; 0x0200625C
|
|
ldr r3, _020062C0 ; =0x022A3554
|
|
mov r2, #0x44
|
|
mla ip, r0, r2, r3
|
|
ldrb r0, [ip, #0x10]
|
|
cmp r0, #0
|
|
beq _020062A0
|
|
mov r0, #0
|
|
strb r0, [ip, #0x10]
|
|
ldrh r3, [ip, #0x12]
|
|
ldrh r2, [ip, #0x14]
|
|
ldr r0, _020062C4 ; =0x00002FFF
|
|
and r2, r3, r2
|
|
eor r0, r2, r0
|
|
and r0, r3, r0
|
|
strh r0, [ip, #0x16]
|
|
ldrh r0, [ip, #0x12]
|
|
strh r0, [ip, #0x14]
|
|
_020062A0:
|
|
ldrh r0, [ip, #0x16]
|
|
strh r0, [r1]
|
|
ldr r0, [ip]
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_020062C0: .word 0x022A3554
|
|
_020062C4: .word 0x00002FFF
|
|
arm_func_end GetPressedButtons
|
|
|
|
arm_func_start sub_020062C8
|
|
sub_020062C8: ; 0x020062C8
|
|
ldr r2, _020062F8 ; =0x022A3554
|
|
mov r1, #0x44
|
|
mla r2, r0, r1, r2
|
|
mov r1, #0
|
|
strb r1, [r2, #0x24]
|
|
mov r0, #1
|
|
strb r0, [r2, #0x25]
|
|
str r0, [r2, #0x28]
|
|
ldrh r0, [r2, #0x2c]
|
|
strh r0, [r2, #0x2e]
|
|
strh r1, [r2, #0x30]
|
|
bx lr
|
|
.align 2, 0
|
|
_020062F8: .word 0x022A3554
|
|
arm_func_end sub_020062C8
|
|
|
|
arm_func_start sub_020062FC
|
|
sub_020062FC: ; 0x020062FC
|
|
stmdb sp!, {r3, lr}
|
|
ldr r3, _02006398 ; =0x022A3554
|
|
mov r2, #0x44
|
|
mla r2, r0, r2, r3
|
|
ldrb r0, [r2, #0x24]
|
|
cmp r0, #0
|
|
beq _02006378
|
|
mov lr, #0
|
|
strb lr, [r2, #0x24]
|
|
ldrh r0, [r2, #0x2c]
|
|
strh r0, [r2, #0x30]
|
|
ldrh ip, [r2, #0x2e]
|
|
cmp ip, #0
|
|
beq _02006368
|
|
ldr r0, _0200639C ; =0x00002FFF
|
|
ldrh r3, [r2, #0x2c]
|
|
eor r0, ip, r0
|
|
tst r0, r3
|
|
movne r0, #0x1e
|
|
strne r0, [r2, #0x28]
|
|
bne _02006370
|
|
ldr r0, [r2, #0x28]
|
|
cmp r0, #0
|
|
movle r0, #6
|
|
strle r0, [r2, #0x28]
|
|
strgth lr, [r2, #0x30]
|
|
b _02006370
|
|
_02006368:
|
|
mov r0, #0x1e
|
|
str r0, [r2, #0x28]
|
|
_02006370:
|
|
ldrh r0, [r2, #0x2c]
|
|
strh r0, [r2, #0x2e]
|
|
_02006378:
|
|
ldrh r0, [r2, #0x30]
|
|
strh r0, [r1]
|
|
ldr r0, [r2]
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02006398: .word 0x022A3554
|
|
_0200639C: .word 0x00002FFF
|
|
arm_func_end sub_020062FC
|
|
|
|
arm_func_start sub_020063A0
|
|
sub_020063A0: ; 0x020063A0
|
|
ldr r2, _020063D0 ; =0x022A3554
|
|
mov r1, #0x44
|
|
mla r2, r0, r1, r2
|
|
mov r1, #0
|
|
strb r1, [r2, #0x34]
|
|
mov r0, #1
|
|
strb r0, [r2, #0x35]
|
|
str r0, [r2, #0x38]
|
|
ldrh r0, [r2, #0x3c]
|
|
strh r0, [r2, #0x3e]
|
|
strh r1, [r2, #0x40]
|
|
bx lr
|
|
.align 2, 0
|
|
_020063D0: .word 0x022A3554
|
|
arm_func_end sub_020063A0
|
|
|
|
arm_func_start sub_020063D4
|
|
sub_020063D4: ; 0x020063D4
|
|
ldr r2, _020063F0 ; =0x022A3554
|
|
mov r1, #0x44
|
|
mla r1, r0, r1, r2
|
|
mov r0, #1
|
|
strb r0, [r1, #0x35]
|
|
str r0, [r1, #0x38]
|
|
bx lr
|
|
.align 2, 0
|
|
_020063F0: .word 0x022A3554
|
|
arm_func_end sub_020063D4
|
|
|
|
arm_func_start sub_020063F4
|
|
sub_020063F4: ; 0x020063F4
|
|
stmdb sp!, {r3, lr}
|
|
ldr r3, _02006490 ; =0x022A3554
|
|
mov r2, #0x44
|
|
mla r2, r0, r2, r3
|
|
ldrb r0, [r2, #0x34]
|
|
cmp r0, #0
|
|
beq _02006470
|
|
mov lr, #0
|
|
strb lr, [r2, #0x34]
|
|
ldrh r0, [r2, #0x3c]
|
|
strh r0, [r2, #0x40]
|
|
ldrh ip, [r2, #0x3e]
|
|
cmp ip, #0
|
|
beq _02006460
|
|
ldr r0, _02006494 ; =0x00002FFF
|
|
ldrh r3, [r2, #0x3c]
|
|
eor r0, ip, r0
|
|
tst r0, r3
|
|
movne r0, #6
|
|
strne r0, [r2, #0x38]
|
|
bne _02006468
|
|
ldr r0, [r2, #0x38]
|
|
cmp r0, #0
|
|
movle r0, #6
|
|
strle r0, [r2, #0x38]
|
|
strgth lr, [r2, #0x40]
|
|
b _02006468
|
|
_02006460:
|
|
mov r0, #0x1e
|
|
str r0, [r2, #0x38]
|
|
_02006468:
|
|
ldrh r0, [r2, #0x3c]
|
|
strh r0, [r2, #0x3e]
|
|
_02006470:
|
|
ldrh r0, [r2, #0x40]
|
|
strh r0, [r1]
|
|
ldr r0, [r2]
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02006490: .word 0x022A3554
|
|
_02006494: .word 0x00002FFF
|
|
arm_func_end sub_020063F4
|
|
|
|
arm_func_start sub_02006498
|
|
sub_02006498: ; 0x02006498
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #4
|
|
mov r5, r1
|
|
mov r6, r0
|
|
bl GetPressedButtons
|
|
ldrh r2, [r5]
|
|
ldr r1, _02006500 ; =0x00000F0F
|
|
mov r4, r0
|
|
and r0, r2, r1
|
|
strh r0, [r5]
|
|
ldrh r0, [r5]
|
|
cmp r0, #0
|
|
beq _020064D8
|
|
mov r0, r6
|
|
bl sub_020063A0
|
|
b _020064F4
|
|
_020064D8:
|
|
add r1, sp, #0
|
|
mov r0, r6
|
|
bl sub_020063F4
|
|
ldrh r1, [r5]
|
|
ldrh r0, [sp]
|
|
orr r0, r1, r0
|
|
strh r0, [r5]
|
|
_020064F4:
|
|
mov r0, r4
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02006500: .word 0x00000F0F
|
|
arm_func_end sub_02006498
|
|
|
|
arm_func_start sub_02006504
|
|
sub_02006504: ; 0x02006504
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #8
|
|
bl sub_020811EC
|
|
add r0, sp, #0
|
|
bl sub_02081264
|
|
cmp r0, #0
|
|
beq _02006528
|
|
add r0, sp, #0
|
|
bl sub_020812F8
|
|
_02006528:
|
|
ldr r0, _0200655C ; =0x020AF288
|
|
bl sub_02002C40
|
|
ldr r0, _0200655C ; =0x020AF288
|
|
mov r1, #8
|
|
bl sub_02002CAC
|
|
bl sub_02006564
|
|
ldr r0, _02006560 ; =0x022A35E8
|
|
bl sub_02006B54
|
|
ldr r0, _0200655C ; =0x020AF288
|
|
bl sub_02002E98
|
|
bl sub_020065AC
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0200655C: .word 0x020AF288
|
|
_02006560: .word 0x022A35E8
|
|
arm_func_end sub_02006504
|
|
|
|
arm_func_start sub_02006564
|
|
sub_02006564: ; 0x02006564
|
|
ldr r0, _020065A4 ; =0x022A35DC
|
|
mvn r1, #0
|
|
str r1, [r0]
|
|
str r1, [r0, #4]
|
|
mov r2, #0
|
|
strb r2, [r0, #8]
|
|
ldr r3, _020065A8 ; =0x022A3614
|
|
mov r0, r2
|
|
_02006584:
|
|
str r1, [r3]
|
|
str r1, [r3, #4]
|
|
add r2, r2, #1
|
|
strb r0, [r3, #8]
|
|
cmp r2, #4
|
|
add r3, r3, #0xc
|
|
blt _02006584
|
|
bx lr
|
|
.align 2, 0
|
|
_020065A4: .word 0x022A35DC
|
|
_020065A8: .word 0x022A3614
|
|
arm_func_end sub_02006564
|
|
|
|
arm_func_start sub_020065AC
|
|
sub_020065AC: ; 0x020065AC
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #0x40
|
|
bl sub_02081420
|
|
add r0, sp, #0x20
|
|
bl sub_02081500
|
|
cmp r0, #0
|
|
bne _02006B34
|
|
ldr r0, _02006B3C ; =0x020AF288
|
|
bl sub_02002CB4
|
|
ldr ip, _02006B40 ; =0x022A362C
|
|
mov lr, #2
|
|
_020065D8:
|
|
add r3, ip, #0xc
|
|
ldmia ip, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
subs lr, lr, #1
|
|
sub ip, ip, #0xc
|
|
bpl _020065D8
|
|
ldrh r1, [sp, #0x26]
|
|
ldr r0, _02006B44 ; =0x022A35DC
|
|
tst r1, #1
|
|
mvnne r2, #0
|
|
ldreqh r2, [sp, #0x20]
|
|
tst r1, #2
|
|
ldrh r1, [sp, #0x24]
|
|
str r2, [r0, #0x38]
|
|
mvnne r2, #0
|
|
ldreqh r2, [sp, #0x22]
|
|
ldr r0, _02006B44 ; =0x022A35DC
|
|
cmp r1, #1
|
|
str r2, [r0, #0x3c]
|
|
moveq r1, #1
|
|
movne r1, #0
|
|
ldr r0, _02006B44 ; =0x022A35DC
|
|
tst r1, #0xff
|
|
strb r1, [r0, #0x40]
|
|
ldreqb r1, [r0, #0x4c]
|
|
cmpeq r1, #0
|
|
beq _020066FC
|
|
ldr r0, _02006B48 ; =0x022A3614
|
|
add r3, sp, #0x34
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r4, #1
|
|
ldr lr, _02006B4C ; =0x022A3620
|
|
mov r2, r4
|
|
mov r3, #0
|
|
mov r0, r4
|
|
b _020066B4
|
|
_0200666C:
|
|
ldrb r1, [lr, #8]
|
|
cmp r1, #0
|
|
beq _020066AC
|
|
ldr r1, [sp, #0x34]
|
|
mov ip, r3
|
|
cmp r1, #0
|
|
ldrlt r1, [lr]
|
|
movlt ip, r2
|
|
strlt r1, [sp, #0x34]
|
|
ldr r1, [sp, #0x38]
|
|
cmp r1, #0
|
|
ldrlt r1, [lr, #4]
|
|
movlt ip, r0
|
|
strlt r1, [sp, #0x38]
|
|
cmp ip, #0
|
|
beq _020066BC
|
|
_020066AC:
|
|
add r4, r4, #1
|
|
add lr, lr, #0xc
|
|
_020066B4:
|
|
cmp r4, #4
|
|
blt _0200666C
|
|
_020066BC:
|
|
ldr r0, [sp, #0x34]
|
|
cmp r0, #0
|
|
ldrge r0, [sp, #0x38]
|
|
cmpge r0, #0
|
|
addge r0, sp, #0x34
|
|
ldrge r3, _02006B50 ; =0x022A35DC
|
|
ldmgeia r0, {r0, r1, r2}
|
|
stmgeia r3, {r0, r1, r2}
|
|
bge _02006710
|
|
ldr r0, _02006B44 ; =0x022A35DC
|
|
mvn r1, #0
|
|
str r1, [r0]
|
|
str r1, [r0, #4]
|
|
mov r1, #0
|
|
strb r1, [r0, #8]
|
|
b _02006710
|
|
_020066FC:
|
|
mvn r1, #0
|
|
str r1, [r0]
|
|
str r1, [r0, #4]
|
|
mov r1, #0
|
|
strb r1, [r0, #8]
|
|
_02006710:
|
|
ldr r0, _02006B50 ; =0x022A35DC
|
|
add r3, sp, #0x28
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
ldr r3, [sp, #0x28]
|
|
ldr r0, _02006B44 ; =0x022A35DC
|
|
ldr r2, [sp, #0x2c]
|
|
str r3, [r0, #0x18]
|
|
str r2, [r0, #0x1c]
|
|
ldrh r1, [r0, #0xe]
|
|
tst r1, #1
|
|
beq _02006760
|
|
ldrb r1, [sp, #0x30]
|
|
cmp r1, #0
|
|
strne r3, [r0, #0x20]
|
|
strne r2, [r0, #0x24]
|
|
movne r1, #1
|
|
strneh r1, [r0, #0xe]
|
|
moveq r1, #4
|
|
b _0200677C
|
|
_02006760:
|
|
ldrb r1, [sp, #0x30]
|
|
cmp r1, #0
|
|
strne r3, [r0, #0x20]
|
|
strne r2, [r0, #0x24]
|
|
movne r1, #3
|
|
strneh r1, [r0, #0xe]
|
|
moveq r1, #0
|
|
_0200677C:
|
|
streqh r1, [r0, #0xe]
|
|
ldr r1, _02006B44 ; =0x022A35DC
|
|
ldrh ip, [r1, #0xc]
|
|
cmp ip, #6
|
|
addls pc, pc, ip, lsl #2
|
|
b _02006B2C
|
|
_02006794: ; jump table
|
|
b _020067B0 ; case 0
|
|
b _020067FC ; case 1
|
|
b _020068B0 ; case 2
|
|
b _02006988 ; case 3
|
|
b _02006A84 ; case 4
|
|
b _02006A84 ; case 5
|
|
b _02006AF8 ; case 6
|
|
_020067B0:
|
|
ldrh lr, [r1, #0xe]
|
|
mov r0, #0
|
|
tst lr, #1
|
|
streq r0, [r1, #0x10]
|
|
ldreq r0, [r1, #0x14]
|
|
addeq r0, r0, #1
|
|
streq r0, [r1, #0x14]
|
|
beq _02006B2C
|
|
mov ip, #1
|
|
str ip, [r1, #0x10]
|
|
str r0, [r1, #0x14]
|
|
ldr r3, [r1, #0x18]
|
|
ldr r2, [r1, #0x1c]
|
|
orr r0, lr, #0x40
|
|
str r3, [r1, #0x28]
|
|
str r2, [r1, #0x2c]
|
|
strh r0, [r1, #0xe]
|
|
strh ip, [r1, #0xc]
|
|
b _02006B2C
|
|
_020067FC:
|
|
ldrh r3, [r1, #0xe]
|
|
mov r0, #0
|
|
tst r3, #1
|
|
beq _02006890
|
|
ldr r2, [r1, #0x10]
|
|
add r2, r2, #1
|
|
str r2, [r1, #0x10]
|
|
str r0, [r1, #0x14]
|
|
orr r0, r3, #0x40
|
|
strh r0, [r1, #0xe]
|
|
cmp r2, #0xc
|
|
ble _02006B2C
|
|
ldr r3, [sp, #0x28]
|
|
ldr r0, [r1, #0x28]
|
|
ldr r2, [sp, #0x2c]
|
|
ldr r1, [r1, #0x2c]
|
|
sub r0, r3, r0
|
|
sub r1, r2, r1
|
|
str r0, [sp]
|
|
str r1, [sp, #4]
|
|
bl Abs
|
|
cmp r0, #8
|
|
bge _02006874
|
|
ldr r0, [sp, #4]
|
|
bl Abs
|
|
cmp r0, #8
|
|
ldrlt r0, _02006B44 ; =0x022A35DC
|
|
ldrlth r1, [r0, #0xe]
|
|
orrlt r1, r1, #0x400
|
|
strlth r1, [r0, #0xe]
|
|
_02006874:
|
|
ldr r0, _02006B44 ; =0x022A35DC
|
|
mov r1, #4
|
|
ldrh r2, [r0, #0xe]
|
|
orr r2, r2, #0x2000
|
|
strh r2, [r0, #0xe]
|
|
strh r1, [r0, #0xc]
|
|
b _02006B2C
|
|
_02006890:
|
|
str r0, [r1, #0x10]
|
|
mov r0, #1
|
|
str r0, [r1, #0x14]
|
|
orr r0, r3, #8
|
|
strh r0, [r1, #0xe]
|
|
mov r0, #2
|
|
strh r0, [r1, #0xc]
|
|
b _02006B2C
|
|
_020068B0:
|
|
ldrh r3, [r1, #0xe]
|
|
tst r3, #1
|
|
beq _02006960
|
|
ldr lr, [sp, #0x28]
|
|
ldr r0, [r1, #0x28]
|
|
ldr ip, [sp, #0x2c]
|
|
ldr r3, [r1, #0x2c]
|
|
mov r2, #1
|
|
sub r0, lr, r0
|
|
sub r3, ip, r3
|
|
str r2, [r1, #0x10]
|
|
mov r2, #0
|
|
str r0, [sp, #8]
|
|
str r3, [sp, #0xc]
|
|
str r2, [r1, #0x14]
|
|
bl Abs
|
|
cmp r0, #8
|
|
bge _02006934
|
|
ldr r0, [sp, #0xc]
|
|
bl Abs
|
|
cmp r0, #8
|
|
bge _02006934
|
|
ldr r0, _02006B44 ; =0x022A35DC
|
|
mov r1, #3
|
|
ldr r3, [r0, #0x18]
|
|
ldr r2, [r0, #0x1c]
|
|
str r3, [r0, #0x30]
|
|
str r2, [r0, #0x34]
|
|
ldrh r2, [r0, #0xe]
|
|
orr r2, r2, #0x80
|
|
strh r2, [r0, #0xe]
|
|
strh r1, [r0, #0xc]
|
|
b _02006B2C
|
|
_02006934:
|
|
ldr r3, [sp, #0x28]
|
|
ldr r2, [sp, #0x2c]
|
|
ldr r0, _02006B44 ; =0x022A35DC
|
|
mov r1, #1
|
|
str r3, [r0, #0x28]
|
|
str r2, [r0, #0x2c]
|
|
ldrh r2, [r0, #0xe]
|
|
orr r2, r2, #0x40
|
|
strh r2, [r0, #0xe]
|
|
strh r1, [r0, #0xc]
|
|
b _02006B2C
|
|
_02006960:
|
|
mov r2, #0
|
|
str r2, [r1, #0x10]
|
|
ldr r0, [r1, #0x14]
|
|
add r0, r0, #1
|
|
str r0, [r1, #0x14]
|
|
cmp r0, #0xc
|
|
orrgt r0, r3, #0x10
|
|
strgth r0, [r1, #0xe]
|
|
strgth r2, [r1, #0xc]
|
|
b _02006B2C
|
|
_02006988:
|
|
ldrh r3, [r1, #0xe]
|
|
tst r3, #1
|
|
beq _02006A1C
|
|
ldr r2, [r1, #0x10]
|
|
mov r0, #0
|
|
add r2, r2, #1
|
|
str r2, [r1, #0x10]
|
|
str r0, [r1, #0x14]
|
|
orr r0, r3, #0x80
|
|
strh r0, [r1, #0xe]
|
|
cmp r2, #0xc
|
|
ble _02006B2C
|
|
ldr r3, [sp, #0x28]
|
|
ldr r0, [r1, #0x30]
|
|
ldr r2, [sp, #0x2c]
|
|
ldr r1, [r1, #0x34]
|
|
sub r0, r3, r0
|
|
sub r1, r2, r1
|
|
str r0, [sp, #0x10]
|
|
str r1, [sp, #0x14]
|
|
bl Abs
|
|
cmp r0, #8
|
|
bge _02006A00
|
|
ldr r0, [sp, #0x14]
|
|
bl Abs
|
|
cmp r0, #8
|
|
ldrlt r0, _02006B44 ; =0x022A35DC
|
|
ldrlth r1, [r0, #0xe]
|
|
orrlt r1, r1, #0x800
|
|
strlth r1, [r0, #0xe]
|
|
_02006A00:
|
|
ldr r0, _02006B44 ; =0x022A35DC
|
|
mov r1, #5
|
|
ldrh r2, [r0, #0xe]
|
|
orr r2, r2, #0x4000
|
|
strh r2, [r0, #0xe]
|
|
strh r1, [r0, #0xc]
|
|
b _02006B2C
|
|
_02006A1C:
|
|
ldr lr, [r1, #0x20]
|
|
ldr r0, [r1, #0x28]
|
|
ldr ip, [r1, #0x24]
|
|
ldr r3, [r1, #0x2c]
|
|
mov r2, #0
|
|
sub r0, lr, r0
|
|
sub r3, ip, r3
|
|
str r2, [r1, #0x10]
|
|
mov r2, #1
|
|
str r0, [sp, #0x18]
|
|
str r3, [sp, #0x1c]
|
|
str r2, [r1, #0x14]
|
|
bl Abs
|
|
cmp r0, #8
|
|
bge _02006A74
|
|
ldr r0, [sp, #0x1c]
|
|
bl Abs
|
|
cmp r0, #8
|
|
ldrlt r0, _02006B44 ; =0x022A35DC
|
|
ldrlth r1, [r0, #0xe]
|
|
orrlt r1, r1, #0x20
|
|
strlth r1, [r0, #0xe]
|
|
_02006A74:
|
|
ldr r0, _02006B44 ; =0x022A35DC
|
|
mov r1, #0
|
|
strh r1, [r0, #0xc]
|
|
b _02006B2C
|
|
_02006A84:
|
|
ldrh r3, [r1, #0xe]
|
|
tst r3, #1
|
|
beq _02006AE0
|
|
ldr r2, [r1, #0x10]
|
|
mov r0, #0
|
|
add r2, r2, #1
|
|
str r2, [r1, #0x10]
|
|
str r0, [r1, #0x14]
|
|
cmp ip, #4
|
|
orreq r0, r3, #0x140
|
|
orrne r0, r3, #0x280
|
|
strh r0, [r1, #0xe]
|
|
ldr r0, _02006B44 ; =0x022A35DC
|
|
ldr r1, [r0, #0x10]
|
|
cmp r1, #0x3c
|
|
ldrgth r1, [r0, #0xe]
|
|
orrgt r1, r1, #0x1000
|
|
strgth r1, [r0, #0xe]
|
|
bgt _02006B2C
|
|
ldreqh r1, [r0, #0xe]
|
|
orreq r1, r1, #0x9000
|
|
streqh r1, [r0, #0xe]
|
|
b _02006B2C
|
|
_02006AE0:
|
|
mov r2, #0
|
|
str r2, [r1, #0x10]
|
|
mov r0, #1
|
|
str r0, [r1, #0x14]
|
|
strh r2, [r1, #0xc]
|
|
b _02006B2C
|
|
_02006AF8:
|
|
ldrh r0, [r1, #0xe]
|
|
tst r0, #1
|
|
moveq r2, #0
|
|
streq r2, [r1, #0x10]
|
|
moveq r0, #1
|
|
streq r0, [r1, #0x14]
|
|
streqh r2, [r1, #0xc]
|
|
beq _02006B2C
|
|
ldr r2, [r1, #0x10]
|
|
mov r0, #0
|
|
add r2, r2, #1
|
|
str r2, [r1, #0x10]
|
|
str r0, [r1, #0x14]
|
|
_02006B2C:
|
|
ldr r0, _02006B3C ; =0x020AF288
|
|
bl sub_02002E98
|
|
_02006B34:
|
|
add sp, sp, #0x40
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02006B3C: .word 0x020AF288
|
|
_02006B40: .word 0x022A362C
|
|
_02006B44: .word 0x022A35DC
|
|
_02006B48: .word 0x022A3614
|
|
_02006B4C: .word 0x022A3620
|
|
_02006B50: .word 0x022A35DC
|
|
arm_func_end sub_020065AC
|
|
|
|
arm_func_start sub_02006B54
|
|
sub_02006B54: ; 0x02006B54
|
|
mov r1, #6
|
|
strh r1, [r0]
|
|
mov r1, #0
|
|
strh r1, [r0, #2]
|
|
str r1, [r0, #4]
|
|
str r1, [r0, #8]
|
|
bx lr
|
|
arm_func_end sub_02006B54
|
|
|
|
arm_func_start sub_02006B70
|
|
sub_02006B70: ; 0x02006B70
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02006B90 ; =0x020AF288
|
|
bl sub_02002CB4
|
|
ldr r0, _02006B94 ; =0x022A35E8
|
|
bl sub_02006B54
|
|
ldr r0, _02006B90 ; =0x020AF288
|
|
bl sub_02002E98
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02006B90: .word 0x020AF288
|
|
_02006B94: .word 0x022A35E8
|
|
arm_func_end sub_02006B70
|
|
|
|
arm_func_start sub_02006B98
|
|
sub_02006B98: ; 0x02006B98
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02006BEC ; =0x020AF288
|
|
bl sub_02002CB4
|
|
ldr r0, _02006BF0 ; =0x022A35DC
|
|
ldrb r1, [r0, #8]
|
|
cmp r1, #0
|
|
beq _02006BD8
|
|
mov r2, #4
|
|
ldr r1, _02006BF4 ; =0x00001101
|
|
strh r2, [r0, #0xc]
|
|
strh r1, [r0, #0xe]
|
|
mov r1, #0x3d
|
|
str r1, [r0, #0x10]
|
|
mov r1, #0
|
|
str r1, [r0, #0x14]
|
|
b _02006BE0
|
|
_02006BD8:
|
|
ldr r0, _02006BF8 ; =0x022A35E8
|
|
bl sub_02006B54
|
|
_02006BE0:
|
|
ldr r0, _02006BEC ; =0x020AF288
|
|
bl sub_02002E98
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02006BEC: .word 0x020AF288
|
|
_02006BF0: .word 0x022A35DC
|
|
_02006BF4: .word 0x00001101
|
|
_02006BF8: .word 0x022A35E8
|
|
arm_func_end sub_02006B98
|
|
|
|
arm_func_start sub_02006BFC
|
|
sub_02006BFC: ; 0x02006BFC
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
sub r1, r1, #1
|
|
str r1, [r0, #4]
|
|
str r1, [r0, #8]
|
|
str r1, [r0, #0xc]
|
|
str r1, [r0, #0x10]
|
|
bx lr
|
|
arm_func_end sub_02006BFC
|
|
|
|
arm_func_start GetReleasedStylus
|
|
GetReleasedStylus: ; 0x02006C1C
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
ldr r0, _02006C84 ; =0x020AF288
|
|
bl sub_02002CB4
|
|
ldr r1, _02006C88 ; =0x022A35DC
|
|
ldr r0, _02006C84 ; =0x020AF288
|
|
ldrh r2, [r1, #0xe]
|
|
strh r2, [r4]
|
|
ldr r3, [r1, #0x18]
|
|
ldr r2, [r1, #0x1c]
|
|
str r3, [r4, #4]
|
|
str r2, [r4, #8]
|
|
ldr r3, [r1, #0x20]
|
|
ldr r2, [r1, #0x24]
|
|
str r3, [r4, #0xc]
|
|
str r2, [r4, #0x10]
|
|
ldr r3, [r1, #0x28]
|
|
ldr r2, [r1, #0x2c]
|
|
str r3, [r4, #0x14]
|
|
str r2, [r4, #0x18]
|
|
ldr r2, [r1, #0x30]
|
|
ldr r1, [r1, #0x34]
|
|
str r2, [r4, #0x1c]
|
|
str r1, [r4, #0x20]
|
|
bl sub_02002E98
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02006C84: .word 0x020AF288
|
|
_02006C88: .word 0x022A35DC
|
|
arm_func_end GetReleasedStylus
|
|
|
|
arm_func_start sub_02006C8C
|
|
sub_02006C8C: ; 0x02006C8C
|
|
ldrh ip, [r0]
|
|
ldr r3, _02006D44 ; =0x00001CFA
|
|
and ip, r1, ip
|
|
tst ip, r3
|
|
beq _02006CE8
|
|
cmp r2, #0
|
|
moveq r0, #1
|
|
bxeq lr
|
|
ldr r3, [r0, #0x14]
|
|
ldr r1, [r2, #8]
|
|
cmp r3, r1
|
|
blt _02006CE8
|
|
ldr r1, [r2, #0xc]
|
|
cmp r3, r1
|
|
bgt _02006CE8
|
|
ldr r3, [r0, #0x18]
|
|
ldr r1, [r2]
|
|
cmp r3, r1
|
|
blt _02006CE8
|
|
ldr r1, [r2, #4]
|
|
cmp r3, r1
|
|
movle r0, #1
|
|
bxle lr
|
|
_02006CE8:
|
|
ldr r1, _02006D48 ; =0x00000301
|
|
tst ip, r1
|
|
beq _02006D3C
|
|
cmp r2, #0
|
|
moveq r0, #1
|
|
bxeq lr
|
|
ldr r3, [r0, #0xc]
|
|
ldr r1, [r2, #8]
|
|
cmp r3, r1
|
|
blt _02006D3C
|
|
ldr r1, [r2, #0xc]
|
|
cmp r3, r1
|
|
bgt _02006D3C
|
|
ldr r1, [r0, #0x10]
|
|
ldr r0, [r2]
|
|
cmp r1, r0
|
|
blt _02006D3C
|
|
ldr r0, [r2, #4]
|
|
cmp r1, r0
|
|
movle r0, #1
|
|
bxle lr
|
|
_02006D3C:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_02006D44: .word 0x00001CFA
|
|
_02006D48: .word 0x00000301
|
|
arm_func_end sub_02006C8C
|
|
|
|
arm_func_start sub_02006D4C
|
|
sub_02006D4C: ; 0x02006D4C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02006D9C ; =0x022A3644
|
|
mov r3, #0
|
|
strb r3, [r0, #2]
|
|
strb r3, [r0, #1]
|
|
strb r3, [r0]
|
|
str r3, [r0, #0x10]
|
|
str r3, [r0, #0xc]
|
|
mov r1, #1
|
|
strb r1, [r0, #9]
|
|
ldr r1, _02006DA0 ; =0x022A3644
|
|
mov r2, r3
|
|
_02006D7C:
|
|
add r0, r1, r3
|
|
add r3, r3, #1
|
|
strb r2, [r0, #3]
|
|
cmp r3, #6
|
|
blt _02006D7C
|
|
bl sub_02005E40
|
|
bl sub_02006504
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02006D9C: .word 0x022A3644
|
|
_02006DA0: .word 0x022A3644
|
|
arm_func_end sub_02006D4C
|
|
|
|
arm_func_start KeyWaitInit__02006DA4
|
|
KeyWaitInit__02006DA4: ; 0x02006DA4
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0
|
|
bl sub_02006220
|
|
mov r0, #0
|
|
bl sub_020063A0
|
|
mov r0, #0
|
|
bl sub_020063D4
|
|
bl sub_02006B70
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end KeyWaitInit__02006DA4
|
|
|
|
arm_func_start sub_02006DC8
|
|
sub_02006DC8: ; 0x02006DC8
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0
|
|
bl sub_02006220
|
|
mov r0, #0
|
|
bl sub_020063A0
|
|
mov r0, #0
|
|
bl sub_020063D4
|
|
bl sub_02006B98
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_02006DC8
|
|
|
|
arm_func_start sub_02006DEC
|
|
sub_02006DEC: ; 0x02006DEC
|
|
stmdb sp!, {r3, lr}
|
|
bl sub_02006030
|
|
bl sub_020065AC
|
|
ldr r0, _02006E10 ; =0x020AF2AC
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
blx r0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02006E10: .word 0x020AF2AC
|
|
arm_func_end sub_02006DEC
|
|
|
|
arm_func_start sub_02006E14
|
|
sub_02006E14: ; 0x02006E14
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #4
|
|
add r1, sp, #0
|
|
mov r0, #0
|
|
bl GetHeldButtons
|
|
movs r3, #0
|
|
mov r4, r3
|
|
bne _02006E8C
|
|
mov r2, #4
|
|
ldr r1, _02006EBC ; =0x022A3644
|
|
b _02006E6C
|
|
_02006E40:
|
|
add r0, r1, r2
|
|
ldrb r0, [r0, #3]
|
|
cmp r0, #0
|
|
beq _02006E68
|
|
ldr r0, _02006EC0 ; =0x022A3644
|
|
mov r4, r2
|
|
ldr r0, [r0, #0x10]
|
|
cmp r0, r2
|
|
movne r3, #1
|
|
b _02006E74
|
|
_02006E68:
|
|
add r2, r2, #1
|
|
_02006E6C:
|
|
cmp r2, #5
|
|
ble _02006E40
|
|
_02006E74:
|
|
cmp r4, #0
|
|
bne _02006E8C
|
|
ldr r0, _02006EC0 ; =0x022A3644
|
|
ldr r0, [r0, #0x10]
|
|
cmp r0, #0
|
|
movne r3, #1
|
|
_02006E8C:
|
|
cmp r3, #0
|
|
beq _02006EAC
|
|
mov r0, #0
|
|
bl sub_02006220
|
|
mov r0, #0
|
|
bl sub_020062C8
|
|
mov r0, #0
|
|
bl sub_020063A0
|
|
_02006EAC:
|
|
ldr r0, _02006EC0 ; =0x022A3644
|
|
str r4, [r0, #0x10]
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, pc}
|
|
.align 2, 0
|
|
_02006EBC: .word 0x022A3644
|
|
_02006EC0: .word 0x022A3644
|
|
arm_func_end sub_02006E14
|
|
|
|
arm_func_start sub_02006EC4
|
|
sub_02006EC4: ; 0x02006EC4
|
|
ldr r1, _02006ED0 ; =0x020AF2AC
|
|
str r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_02006ED0: .word 0x020AF2AC
|
|
arm_func_end sub_02006EC4
|
|
|
|
arm_func_start sub_02006ED4
|
|
sub_02006ED4: ; 0x02006ED4
|
|
mov r2, #0
|
|
str r2, [r0]
|
|
sub r1, r2, #1
|
|
stmib r0, {r1, r2}
|
|
strb r2, [r0, #0xc]
|
|
str r1, [r0, #0x10]
|
|
str r2, [r0, #0x14]
|
|
str r2, [r0, #0x18]
|
|
bx lr
|
|
arm_func_end sub_02006ED4
|
|
|
|
arm_func_start sub_02006EF8
|
|
sub_02006EF8: ; 0x02006EF8
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #0x3c
|
|
bl sub_0208266C
|
|
add r0, sp, #0x20
|
|
bl sub_02006F68
|
|
add r0, sp, #0x20
|
|
add r1, sp, #0
|
|
ldr r4, _02006F34 ; =0x0209277C
|
|
bl sub_02006FB8
|
|
ldr r0, _02006F38 ; =0x0209278C
|
|
add r2, sp, #0
|
|
mov r1, r4
|
|
bl DebugPrint0__0200C1FC
|
|
add sp, sp, #0x3c
|
|
ldmia sp!, {r3, r4, pc}
|
|
.align 2, 0
|
|
_02006F34: .word 0x0209277C
|
|
_02006F38: .word 0x0209278C
|
|
arm_func_end sub_02006EF8
|
|
|
|
arm_func_start sub_02006F3C
|
|
sub_02006F3C: ; 0x02006F3C
|
|
str r1, [r0, #0x18]
|
|
str r2, [r0, #0x14]
|
|
ldr r1, [sp]
|
|
str r3, [r0, #0x10]
|
|
str r1, [r0, #0xc]
|
|
ldr r2, [sp, #4]
|
|
ldr r1, [sp, #8]
|
|
stmib r0, {r1, r2}
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
bx lr
|
|
arm_func_end sub_02006F3C
|
|
|
|
arm_func_start sub_02006F68
|
|
sub_02006F68: ; 0x02006F68
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #0x28
|
|
mov r4, r0
|
|
add r0, sp, #0x18
|
|
add r1, sp, #0xc
|
|
bl sub_020828A8
|
|
ldr r1, [sp, #0xc]
|
|
mov r0, r4
|
|
str r1, [sp]
|
|
ldr r1, [sp, #0x10]
|
|
str r1, [sp, #4]
|
|
ldr r1, [sp, #0x14]
|
|
str r1, [sp, #8]
|
|
ldr r1, [sp, #0x18]
|
|
ldr r2, [sp, #0x1c]
|
|
ldr r3, [sp, #0x20]
|
|
add r1, r1, #0x7d0
|
|
bl sub_02006F3C
|
|
add sp, sp, #0x28
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_02006F68
|
|
|
|
arm_func_start sub_02006FB8
|
|
sub_02006FB8: ; 0x02006FB8
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #0x10
|
|
mov r3, r0
|
|
ldr r2, [r3, #0x10]
|
|
mov r0, r1
|
|
str r2, [sp]
|
|
ldr r2, [r3, #0xc]
|
|
ldr r1, _02007000 ; =0x02092798
|
|
str r2, [sp, #4]
|
|
ldr r2, [r3, #8]
|
|
str r2, [sp, #8]
|
|
ldr r2, [r3, #4]
|
|
str r2, [sp, #0xc]
|
|
ldr r2, [r3, #0x18]
|
|
ldr r3, [r3, #0x14]
|
|
bl Sprintf
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02007000: .word 0x02092798
|
|
arm_func_end sub_02006FB8
|
|
|
|
arm_func_start sub_02007004
|
|
sub_02007004: ; 0x02007004
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
movs r6, r0
|
|
beq _02007060
|
|
mov r1, #0x3a
|
|
bl sub_02002368
|
|
movs r4, r0
|
|
beq _02007044
|
|
sub r5, r4, r6
|
|
ldr r0, _02007074 ; =0x020AF2B8
|
|
mov r1, r6
|
|
mov r2, r5
|
|
bl Strncpy
|
|
ldr r0, _02007074 ; =0x020AF2B8
|
|
mov r1, #0
|
|
strb r1, [r0, r5]
|
|
add r6, r4, #1
|
|
_02007044:
|
|
ldrsb r0, [r6]
|
|
cmp r0, #0
|
|
beq _02007060
|
|
ldr r0, _02007078 ; =0x020AF2C4
|
|
ldr r1, _0200707C ; =0x020927B8
|
|
mov r2, r6
|
|
bl Sprintf
|
|
_02007060:
|
|
ldr r0, _02007080 ; =0x020927BC
|
|
ldr r1, _02007074 ; =0x020AF2B8
|
|
ldr r2, _02007078 ; =0x020AF2C4
|
|
bl DebugPrint0__0200C1FC
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02007074: .word 0x020AF2B8
|
|
_02007078: .word 0x020AF2C4
|
|
_0200707C: .word 0x020927B8
|
|
_02007080: .word 0x020927BC
|
|
arm_func_end sub_02007004
|
|
|
|
arm_func_start sub_02007084
|
|
sub_02007084: ; 0x02007084
|
|
ldr r0, _0200708C ; =0x020AF2B8
|
|
bx lr
|
|
.align 2, 0
|
|
_0200708C: .word 0x020AF2B8
|
|
arm_func_end sub_02007084
|
|
|
|
arm_func_start sub_02007090
|
|
sub_02007090: ; 0x02007090
|
|
ldr r0, _02007098 ; =0x020AF2C4
|
|
bx lr
|
|
.align 2, 0
|
|
_02007098: .word 0x020AF2C4
|
|
arm_func_end sub_02007090
|
|
|
|
arm_func_start sub_0200709C
|
|
sub_0200709C: ; 0x0200709C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r6, r2
|
|
mov r8, r0
|
|
mov r7, r1
|
|
mov r0, r6
|
|
mov r1, #0x3a
|
|
bl sub_02002368
|
|
cmp r0, #0
|
|
addne r4, r0, #1
|
|
subne r5, r0, r6
|
|
bne _020070D8
|
|
mov r0, r6
|
|
bl Strlen
|
|
mov r5, r0
|
|
add r4, r6, r5
|
|
_020070D8:
|
|
sub r0, r5, #1
|
|
ldrsb r0, [r6, r0]
|
|
cmp r0, #0x30
|
|
blt _020070FC
|
|
cmp r0, #0x39
|
|
suble r0, r0, #0x30
|
|
strle r0, [r7]
|
|
suble r5, r5, #1
|
|
ble _02007104
|
|
_020070FC:
|
|
mov r0, #0
|
|
str r0, [r7]
|
|
_02007104:
|
|
mov r0, r8
|
|
mov r1, r6
|
|
mov r2, r5
|
|
bl Strncpy
|
|
mov r1, #0
|
|
mov r0, r4
|
|
strb r1, [r8, r5]
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
arm_func_end sub_0200709C
|
|
|
|
arm_func_start sub_02007124
|
|
sub_02007124: ; 0x02007124
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #0x100
|
|
mov r4, r1
|
|
mov sl, r0
|
|
mov r0, r4
|
|
mov r1, #0x3a
|
|
bl sub_02002368
|
|
cmp r0, #0
|
|
add r0, sp, #0x80
|
|
bne _02007160
|
|
ldr r1, _0200724C ; =0x020927E4
|
|
ldr r2, _02007250 ; =0x020AF2B8
|
|
mov r3, r4
|
|
bl Sprintf
|
|
b _02007168
|
|
_02007160:
|
|
mov r1, r4
|
|
bl Strcpy
|
|
_02007168:
|
|
add r0, sp, #0x80
|
|
mov r1, #0x3a
|
|
bl sub_02002368
|
|
add r0, sp, #0x80
|
|
bl sub_02007544
|
|
add r2, sp, #0x80
|
|
add r0, sl, #0xc
|
|
add r1, sl, #4
|
|
bl sub_0200709C
|
|
mov r8, r0
|
|
add r0, sl, #0xc
|
|
bl sub_0200746C
|
|
ldr r0, [r0]
|
|
mov r1, r8
|
|
str r0, [sl]
|
|
add r0, sl, #0x6c
|
|
bl Strcpy
|
|
mov sb, #0
|
|
strb sb, [sl, #0x5c]
|
|
add r4, sl, #0x1c
|
|
mov r6, sb
|
|
add r7, sp, #0
|
|
mov r5, #0xa
|
|
_020071C4:
|
|
mov r1, r7
|
|
_020071C8:
|
|
ldrsb r0, [r8]
|
|
cmp r0, #0
|
|
cmpne r0, #0x2f
|
|
cmpne r0, #0x2e
|
|
addne r8, r8, #1
|
|
strneb r0, [r1], #1
|
|
bne _020071C8
|
|
strb r6, [r1]
|
|
ldrsb r0, [r8]
|
|
cmp r0, #0
|
|
bne _02007204
|
|
add r1, sp, #0
|
|
add r0, sl, #0x5c
|
|
bl Strcat
|
|
b _02007240
|
|
_02007204:
|
|
cmp r0, #0x2e
|
|
bne _02007220
|
|
mov r1, r7
|
|
mov r2, r5
|
|
add r0, sl, #0x5c
|
|
bl sub_020023A8
|
|
b _02007238
|
|
_02007220:
|
|
cmp r0, #0x2f
|
|
bne _02007238
|
|
add r0, r4, sb, lsl #4
|
|
mov r1, r7
|
|
add sb, sb, #1
|
|
bl Strcpy
|
|
_02007238:
|
|
add r8, r8, #1
|
|
b _020071C4
|
|
_02007240:
|
|
str sb, [sl, #8]
|
|
add sp, sp, #0x100
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_0200724C: .word 0x020927E4
|
|
_02007250: .word 0x020AF2B8
|
|
arm_func_end sub_02007124
|
|
|
|
arm_func_start sub_02007254
|
|
sub_02007254: ; 0x02007254
|
|
add r3, r0, #0x5c
|
|
mov ip, #0
|
|
b _02007278
|
|
_02007260:
|
|
ldrsb r2, [r3]
|
|
cmp r2, #0x20
|
|
beq _02007280
|
|
add r3, r3, #1
|
|
strb r2, [r1], #1
|
|
add ip, ip, #1
|
|
_02007278:
|
|
cmp ip, #0xa
|
|
blt _02007260
|
|
_02007280:
|
|
ldrsb r2, [r0, #0x66]
|
|
add r3, r0, #0x66
|
|
cmp r2, #0
|
|
beq _020072C0
|
|
mov r0, #0x2e
|
|
strb r0, [r1], #1
|
|
mov r2, #0
|
|
b _020072B8
|
|
_020072A0:
|
|
ldrsb r0, [r3]
|
|
cmp r0, #0x20
|
|
beq _020072C0
|
|
add r3, r3, #1
|
|
strb r0, [r1], #1
|
|
add r2, r2, #1
|
|
_020072B8:
|
|
cmp r2, #5
|
|
blt _020072A0
|
|
_020072C0:
|
|
mov r0, #0
|
|
strb r0, [r1]
|
|
bx lr
|
|
arm_func_end sub_02007254
|
|
|
|
arm_func_start sub_020072CC
|
|
sub_020072CC: ; 0x020072CC
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r8, r0
|
|
ldr r0, [r8, #8]
|
|
mov r7, r1
|
|
cmp r0, #0
|
|
ble _0200732C
|
|
mov r0, r7
|
|
add r1, r8, #0x1c
|
|
bl Strcpy
|
|
mov r6, #1
|
|
add r4, r8, #0x1c
|
|
ldr r5, _02007338 ; =0x020927EC
|
|
b _0200731C
|
|
_02007300:
|
|
mov r0, r7
|
|
mov r1, r5
|
|
bl Strcat
|
|
mov r0, r7
|
|
add r1, r4, r6, lsl #4
|
|
bl Strcat
|
|
add r6, r6, #1
|
|
_0200731C:
|
|
ldr r0, [r8, #8]
|
|
cmp r6, r0
|
|
blt _02007300
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
_0200732C:
|
|
mov r0, #0
|
|
strb r0, [r7]
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_02007338: .word 0x020927EC
|
|
arm_func_end sub_020072CC
|
|
|
|
arm_func_start sub_0200733C
|
|
sub_0200733C: ; 0x0200733C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r1
|
|
mov r5, r0
|
|
bl sub_020072CC
|
|
mov r0, r4
|
|
bl Strlen
|
|
mov r1, r0
|
|
cmp r0, #0
|
|
movgt r1, #0x2f
|
|
strgtb r1, [r4, r0]
|
|
addgt r1, r0, #1
|
|
movgt r0, #0
|
|
strgtb r0, [r4, r1]
|
|
mov r0, r5
|
|
add r1, r4, r1
|
|
bl sub_02007254
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_0200733C
|
|
|
|
arm_func_start sub_02007380
|
|
sub_02007380: ; 0x02007380
|
|
bx lr
|
|
arm_func_end sub_02007380
|
|
|
|
arm_func_start sub_02007384
|
|
sub_02007384: ; 0x02007384
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _020073A8 ; =0x020AF344
|
|
mov r2, #0
|
|
ldr r0, _020073AC ; =0x022A3670
|
|
str r2, [r1]
|
|
bl sub_0200844C
|
|
ldr r0, _020073B0 ; =0x022A3658
|
|
bl sub_0200846C
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_020073A8: .word 0x020AF344
|
|
_020073AC: .word 0x022A3670
|
|
_020073B0: .word 0x022A3658
|
|
arm_func_end sub_02007384
|
|
|
|
arm_func_start sub_020073B4
|
|
sub_020073B4: ; 0x020073B4
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
strb r1, [r0, #4]
|
|
str r1, [r0, #0x14]
|
|
sub r1, r1, #1
|
|
str r1, [r0, #0x18]
|
|
str r1, [r0, #0x1c]
|
|
str r1, [r0, #0x20]
|
|
bx lr
|
|
arm_func_end sub_020073B4
|
|
|
|
arm_func_start sub_020073D8
|
|
sub_020073D8: ; 0x020073D8
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #4
|
|
ldr r6, _02007464 ; =0x020AF354
|
|
bl sub_02007084
|
|
mov r1, r0
|
|
add r0, sp, #0
|
|
bl sub_020074DC
|
|
mov r7, r0
|
|
mov r5, #0xa
|
|
ldr r4, _02007468 ; =0x02092844
|
|
mov r8, #0
|
|
b _02007450
|
|
_02007408:
|
|
ldr r2, [r0, #4]
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl DebugPrint
|
|
ldr r2, [r6]
|
|
ldr r0, [r7]
|
|
ldr r1, [r2]
|
|
cmp r1, r0
|
|
bne _02007440
|
|
bl sub_02007090
|
|
ldr r1, [r6]
|
|
ldr r1, [r1, #0xc]
|
|
blx r1
|
|
b _0200744C
|
|
_02007440:
|
|
ldr r1, [r2, #0xc]
|
|
mov r0, r8
|
|
blx r1
|
|
_0200744C:
|
|
add r6, r6, #4
|
|
_02007450:
|
|
ldr r0, [r6]
|
|
cmp r0, #0
|
|
bne _02007408
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_02007464: .word 0x020AF354
|
|
_02007468: .word 0x02092844
|
|
arm_func_end sub_020073D8
|
|
|
|
arm_func_start sub_0200746C
|
|
sub_0200746C: ; 0x0200746C
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
ldr r4, _020074B0 ; =0x020AF354
|
|
b _02007498
|
|
_0200747C:
|
|
ldr r1, [r5, #8]
|
|
mov r0, r6
|
|
bl Strcmp
|
|
cmp r0, #0
|
|
moveq r0, r5
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
add r4, r4, #4
|
|
_02007498:
|
|
ldr r5, [r4]
|
|
cmp r5, #0
|
|
bne _0200747C
|
|
ldr r0, _020074B4 ; =0x020AF354
|
|
ldr r0, [r0]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_020074B0: .word 0x020AF354
|
|
_020074B4: .word 0x020AF354
|
|
arm_func_end sub_0200746C
|
|
|
|
arm_func_start sub_020074B8
|
|
sub_020074B8: ; 0x020074B8
|
|
cmp r0, #0
|
|
ldreq r0, _020074D4 ; =0x020AF354
|
|
ldreq r0, [r0]
|
|
ldrne r1, [r0]
|
|
ldrne r0, _020074D8 ; =0x020AF354
|
|
ldrne r0, [r0, r1, lsl #2]
|
|
bx lr
|
|
.align 2, 0
|
|
_020074D4: .word 0x020AF354
|
|
_020074D8: .word 0x020AF354
|
|
arm_func_end sub_020074B8
|
|
|
|
arm_func_start sub_020074DC
|
|
sub_020074DC: ; 0x020074DC
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #0x80
|
|
mov r3, r0
|
|
mov r2, r1
|
|
add r0, sp, #0
|
|
mov r1, r3
|
|
bl sub_0200709C
|
|
ldr r5, _0200753C ; =0x020AF354
|
|
add r4, sp, #0
|
|
b _02007520
|
|
_02007504:
|
|
ldr r1, [r6, #8]
|
|
mov r0, r4
|
|
bl Strcmp
|
|
cmp r0, #0
|
|
moveq r0, r6
|
|
beq _02007534
|
|
add r5, r5, #4
|
|
_02007520:
|
|
ldr r6, [r5]
|
|
cmp r6, #0
|
|
bne _02007504
|
|
ldr r0, _02007540 ; =0x020AF354
|
|
ldr r0, [r0]
|
|
_02007534:
|
|
add sp, sp, #0x80
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0200753C: .word 0x020AF354
|
|
_02007540: .word 0x020AF354
|
|
arm_func_end sub_020074DC
|
|
|
|
arm_func_start sub_02007544
|
|
sub_02007544: ; 0x02007544
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #4
|
|
mov r4, r0
|
|
add r0, sp, #0
|
|
mov r1, r4
|
|
bl sub_020074DC
|
|
ldr r1, [r0, #0x10]
|
|
cmp r1, #0
|
|
beq _02007570
|
|
mov r0, r4
|
|
blx r1
|
|
_02007570:
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, pc}
|
|
arm_func_end sub_02007544
|
|
|
|
arm_func_start sub_02007578
|
|
sub_02007578: ; 0x02007578
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #0x90
|
|
mov r4, r0
|
|
add r0, sp, #4
|
|
bl sub_02006ED4
|
|
add r0, sp, #0
|
|
mov r1, r4
|
|
bl sub_020074DC
|
|
ldr r2, [r0, #0x14]
|
|
add r0, sp, #4
|
|
mov r1, r4
|
|
blx r2
|
|
add sp, sp, #0x90
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_02007578
|
|
|
|
arm_func_start sub_020075B0
|
|
sub_020075B0: ; 0x020075B0
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #0x90
|
|
mov r4, r0
|
|
add r0, sp, #4
|
|
bl sub_02006ED4
|
|
add r0, sp, #0
|
|
mov r1, r4
|
|
bl sub_020074DC
|
|
ldr r2, [r0, #0x3c]
|
|
add r0, sp, #4
|
|
mov r1, r4
|
|
blx r2
|
|
add sp, sp, #0x90
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_020075B0
|
|
|
|
arm_func_start sub_020075E8
|
|
sub_020075E8: ; 0x020075E8
|
|
ldr ip, _020075F0 ; =sub_02006ED4
|
|
bx ip
|
|
.align 2, 0
|
|
_020075F0: .word sub_02006ED4
|
|
arm_func_end sub_020075E8
|
|
|
|
arm_func_start sub_020075F4
|
|
sub_020075F4: ; 0x020075F4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl DataTransferInit
|
|
mov r0, #2
|
|
str r0, [r5]
|
|
ldmia r5!, {r0, r1, r2, r3}
|
|
stmia r4!, {r0, r1, r2, r3}
|
|
ldmia r5, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
mov r0, #1
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_020075F4
|
|
|
|
arm_func_start sub_02007624
|
|
sub_02007624: ; 0x02007624
|
|
stmdb sp!, {r3, lr}
|
|
mov lr, r0
|
|
mov r0, #0
|
|
mov ip, r1
|
|
str r0, [lr]
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldmia lr, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
bl DataTransferStop
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_02007624
|
|
|
|
arm_func_start sub_02007654
|
|
sub_02007654: ; 0x02007654
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #0xec
|
|
mov r6, r2
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl sub_02006ED4
|
|
add r0, sp, #0
|
|
mov r1, r6
|
|
bl sub_02007124
|
|
add r0, sp, #0xc
|
|
bl sub_0200746C
|
|
mov r6, r0
|
|
ldr r1, [r6]
|
|
mov r0, #0
|
|
str r1, [r5]
|
|
ldr r1, [sp, #4]
|
|
mov lr, r5
|
|
str r1, [r5, #4]
|
|
str r0, [r5, #8]
|
|
mov ip, r4
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldmia lr, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
ldr r2, [r6, #0x18]
|
|
mov r0, r5
|
|
add r1, sp, #0
|
|
blx r2
|
|
mov ip, r0
|
|
ldmia r5!, {r0, r1, r2, r3}
|
|
stmia r4!, {r0, r1, r2, r3}
|
|
ldmia r5, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
mov r0, ip
|
|
add sp, sp, #0xec
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
arm_func_end sub_02007654
|
|
|
|
arm_func_start sub_020076E4
|
|
sub_020076E4: ; 0x020076E4
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #0xec
|
|
mov r6, r2
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl sub_02006ED4
|
|
add r0, sp, #0
|
|
mov r1, r6
|
|
bl sub_02007124
|
|
add r0, sp, #0xc
|
|
bl sub_0200746C
|
|
mov r6, r0
|
|
ldr r1, [r6]
|
|
mov r0, #0
|
|
str r1, [r5]
|
|
ldr r1, [sp, #4]
|
|
mov lr, r5
|
|
str r1, [r5, #4]
|
|
str r0, [r5, #8]
|
|
mov ip, r4
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldmia lr, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
ldr r2, [r6, #0x1c]
|
|
mov r0, r5
|
|
add r1, sp, #0
|
|
blx r2
|
|
mov ip, r0
|
|
ldmia r5!, {r0, r1, r2, r3}
|
|
stmia r4!, {r0, r1, r2, r3}
|
|
ldmia r5, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
mov r0, ip
|
|
add sp, sp, #0xec
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
arm_func_end sub_020076E4
|
|
|
|
arm_func_start sub_02007774
|
|
sub_02007774: ; 0x02007774
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl sub_020074B8
|
|
ldr r1, [r0, #0x20]
|
|
mov r0, r5
|
|
blx r1
|
|
cmp r0, #0
|
|
mov r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
str r0, [r5]
|
|
ldmia r5!, {r0, r1, r2, r3}
|
|
stmia r4!, {r0, r1, r2, r3}
|
|
ldmia r5, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
mov r0, #1
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_02007774
|
|
|
|
arm_func_start sub_020077B8
|
|
sub_020077B8: ; 0x020077B8
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl sub_020074B8
|
|
mov r1, #0
|
|
str r1, [r5, #0x14]
|
|
mov r1, #1
|
|
mov lr, r5
|
|
mov ip, r4
|
|
str r1, [r5, #0x18]
|
|
mov r6, r0
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldmia lr, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
ldr r1, [r6, #0x24]
|
|
mov r0, r5
|
|
blx r1
|
|
mov ip, r0
|
|
ldmia r5!, {r0, r1, r2, r3}
|
|
stmia r4!, {r0, r1, r2, r3}
|
|
ldmia r5, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
mov r0, ip
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_020077B8
|
|
|
|
arm_func_start sub_0200781C
|
|
sub_0200781C: ; 0x0200781C
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl sub_020074B8
|
|
mov r1, #0
|
|
mov lr, r5
|
|
mov ip, r4
|
|
str r1, [r5, #0x18]
|
|
mov r6, r0
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldmia lr, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
ldr r1, [r6, #0x28]
|
|
mov r0, r5
|
|
blx r1
|
|
mov ip, r0
|
|
ldmia r5!, {r0, r1, r2, r3}
|
|
stmia r4!, {r0, r1, r2, r3}
|
|
ldmia r5, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
mov r0, ip
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_0200781C
|
|
|
|
arm_func_start sub_02007878
|
|
sub_02007878: ; 0x02007878
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov r7, r2
|
|
mov sb, r0
|
|
mov r8, r1
|
|
mov r6, r3
|
|
bl sub_020074B8
|
|
add r1, r7, #3
|
|
bic r1, r1, #3
|
|
mov r4, r0
|
|
cmp r7, r1
|
|
mvnne r0, #0
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
mov r5, #0
|
|
mov fp, #0x40000
|
|
b _0200792C
|
|
_020078B4:
|
|
ldrb r0, [sb, #0xc]
|
|
cmp r0, #0
|
|
mvnne r0, #0
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
cmp r6, #0x40000
|
|
movlt sl, r6
|
|
movge sl, fp
|
|
bl sub_0207A270
|
|
ldr r3, [r4, #0x2c]
|
|
mov r0, sb
|
|
mov r1, r7
|
|
mov r2, sl
|
|
blx r3
|
|
movs sl, r0
|
|
mvnmi r0, #0
|
|
ldmmiia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
ldr r0, [sb, #0x14]
|
|
mov lr, sb
|
|
add r0, r0, sl
|
|
str r0, [sb, #0x14]
|
|
mov ip, r8
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldmia lr, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
cmp sl, #0x40000
|
|
add r5, r5, sl
|
|
sub r6, r6, sl
|
|
add r7, r7, sl
|
|
blt _02007934
|
|
_0200792C:
|
|
cmp r6, #0
|
|
bgt _020078B4
|
|
_02007934:
|
|
ldrb r0, [sb, #0xc]
|
|
cmp r0, #0
|
|
mvnne r0, #0
|
|
moveq r0, r5
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end sub_02007878
|
|
|
|
arm_func_start sub_02007948
|
|
sub_02007948: ; 0x02007948
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
mov r7, r0
|
|
mov r6, r1
|
|
mov r0, #0
|
|
mov lr, r7
|
|
mov ip, r6
|
|
str r0, [r7, #0x14]
|
|
mov r5, r2
|
|
mov r4, r3
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldmia lr, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
ldr sb, [sp, #0x20]
|
|
ldr r8, [sp, #0x24]
|
|
b _020079C8
|
|
_02007988:
|
|
cmp r4, r8
|
|
movlt r3, r4
|
|
movge r3, r8
|
|
mov r0, r7
|
|
mov r1, r6
|
|
mov r2, r5
|
|
bl sub_02007878
|
|
cmp r0, #0
|
|
mvnlt r0, #0
|
|
ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
cmp sb, #0
|
|
add r5, r5, r0
|
|
sub r4, r4, r0
|
|
beq _020079C8
|
|
mov r0, sb
|
|
bl sub_02002B50
|
|
_020079C8:
|
|
cmp r4, #0
|
|
bgt _02007988
|
|
ldr r0, [r7, #0x14]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
arm_func_end sub_02007948
|
|
|
|
arm_func_start sub_020079D8
|
|
sub_020079D8: ; 0x020079D8
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #8
|
|
ldr r3, _02007A6C ; =0x020927FC
|
|
mov r6, r2
|
|
ldr r4, [r3, #0x2c]
|
|
ldr ip, [r3, #0x28]
|
|
ldr r2, [sp, #0x20]
|
|
add r3, sp, #0
|
|
mov r8, r0
|
|
mov r7, r1
|
|
str ip, [sp]
|
|
str r4, [sp, #4]
|
|
bl sub_020076E4
|
|
cmp r0, #0
|
|
beq _02007A60
|
|
ldr r5, [r8, #0x10]
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl sub_020077B8
|
|
mov r0, r8
|
|
mov r1, r7
|
|
mov r2, r6
|
|
mov r3, r5
|
|
bl sub_02007878
|
|
mov r4, r0
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl sub_0200781C
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl sub_02007774
|
|
cmp r5, r4
|
|
moveq r0, r4
|
|
beq _02007A64
|
|
_02007A60:
|
|
mvn r0, #0
|
|
_02007A64:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_02007A6C: .word 0x020927FC
|
|
arm_func_end sub_020079D8
|
|
|
|
arm_func_start sub_02007A70
|
|
sub_02007A70: ; 0x02007A70
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #8
|
|
ldr r6, _02007B10 ; =0x020927FC
|
|
mov r5, r2
|
|
ldr ip, [r6, #0x24]
|
|
ldr lr, [r6, #0x20]
|
|
mov r4, r3
|
|
ldr r2, [sp, #0x20]
|
|
add r3, sp, #0
|
|
mov r7, r0
|
|
mov r6, r1
|
|
str lr, [sp]
|
|
str ip, [sp, #4]
|
|
bl sub_020076E4
|
|
cmp r0, #0
|
|
beq _02007B04
|
|
ldr r8, [r7, #0x10]
|
|
mov r0, r7
|
|
cmp r4, r8
|
|
movle r8, r4
|
|
mov r1, r6
|
|
bl sub_020077B8
|
|
mov r0, r7
|
|
mov r1, r6
|
|
mov r2, r5
|
|
mov r3, r8
|
|
bl sub_02007878
|
|
mov r4, r0
|
|
mov r0, r7
|
|
mov r1, r6
|
|
bl sub_0200781C
|
|
mov r0, r7
|
|
mov r1, r6
|
|
bl sub_02007774
|
|
cmp r8, r4
|
|
moveq r0, r4
|
|
beq _02007B08
|
|
_02007B04:
|
|
mvn r0, #0
|
|
_02007B08:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_02007B10: .word 0x020927FC
|
|
arm_func_end sub_02007A70
|
|
|
|
arm_func_start sub_02007B14
|
|
sub_02007B14: ; 0x02007B14
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0x10
|
|
ldr r3, _02007BC8 ; =0x020927FC
|
|
mov r4, r2
|
|
ldr ip, [r3, #0x1c]
|
|
ldr lr, [r3, #0x18]
|
|
ldr r2, [sp, #0x28]
|
|
add r3, sp, #8
|
|
mov r6, r0
|
|
mov r5, r1
|
|
str lr, [sp, #8]
|
|
str ip, [sp, #0xc]
|
|
bl sub_020076E4
|
|
cmp r0, #0
|
|
beq _02007BBC
|
|
ldr r0, [sp, #0x2c]
|
|
ldr r7, [r6, #0x10]
|
|
cmp r0, #0
|
|
beq _02007B64
|
|
bl sub_02002B50
|
|
_02007B64:
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl sub_020077B8
|
|
ldr r0, [sp, #0x2c]
|
|
ldr ip, [sp, #0x30]
|
|
str r0, [sp]
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, r4
|
|
mov r3, r7
|
|
str ip, [sp, #4]
|
|
bl sub_02007948
|
|
mov r4, r0
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl sub_0200781C
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl sub_02007774
|
|
cmp r7, r4
|
|
moveq r0, r4
|
|
beq _02007BC0
|
|
_02007BBC:
|
|
mvn r0, #0
|
|
_02007BC0:
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_02007BC8: .word 0x020927FC
|
|
arm_func_end sub_02007B14
|
|
|
|
arm_func_start sub_02007BCC
|
|
sub_02007BCC: ; 0x02007BCC
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #8
|
|
ldr r4, _02007C9C ; =0x020927FC
|
|
mov r5, r2
|
|
ldr r8, [r4, #0x34]
|
|
ldr r4, [r4, #0x30]
|
|
add r6, sp, #0
|
|
mov r2, r3
|
|
mov r3, r6
|
|
str r4, [sp]
|
|
mov r7, r0
|
|
mov r6, r1
|
|
str r8, [sp, #4]
|
|
mov r4, #0
|
|
bl sub_020076E4
|
|
cmp r0, #0
|
|
beq _02007C90
|
|
ldr sl, [r7, #0x10]
|
|
ldr r0, [sp, #0x28]
|
|
ldr r2, [sp, #0x2c]
|
|
mov r1, sl
|
|
str sl, [r5, #4]
|
|
bl MemLocateSet
|
|
mov sb, r0
|
|
mov r0, r7
|
|
mov r1, r6
|
|
str sb, [r5]
|
|
bl sub_020077B8
|
|
ldr r2, [r5]
|
|
mov r0, r7
|
|
mov r1, r6
|
|
mov r3, sl
|
|
bl sub_02007878
|
|
mov r8, r0
|
|
mov r0, r7
|
|
mov r1, r6
|
|
bl sub_0200781C
|
|
mov r0, r7
|
|
mov r1, r6
|
|
bl sub_02007774
|
|
cmp sl, r8
|
|
moveq r4, #1
|
|
beq _02007C90
|
|
mov r0, sb
|
|
bl MemFree
|
|
mov r0, r4
|
|
str r0, [r5]
|
|
sub r0, r0, #1
|
|
str r0, [r5, #4]
|
|
_02007C90:
|
|
mov r0, r4
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_02007C9C: .word 0x020927FC
|
|
arm_func_end sub_02007BCC
|
|
|
|
arm_func_start sub_02007CA0
|
|
sub_02007CA0: ; 0x02007CA0
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #0x10
|
|
ldr r4, _02007D90 ; =0x020927FC
|
|
mov r7, r2
|
|
ldr r6, [r4, #4]
|
|
ldr r4, [r4]
|
|
add r5, sp, #8
|
|
mov r2, r3
|
|
str r4, [sp, #8]
|
|
mov r3, r5
|
|
mov sb, r0
|
|
mov r8, r1
|
|
str r6, [sp, #0xc]
|
|
mov r4, #0
|
|
bl sub_020076E4
|
|
cmp r0, #0
|
|
beq _02007D84
|
|
ldr r5, [sb, #0x10]
|
|
ldr r0, [sp, #0x30]
|
|
ldr r2, [sp, #0x34]
|
|
mov r1, r5
|
|
str r5, [r7, #4]
|
|
bl MemLocateSet
|
|
mov r6, r0
|
|
ldr r0, [sp, #0x38]
|
|
str r6, [r7]
|
|
cmp r0, #0
|
|
beq _02007D14
|
|
bl sub_02002B50
|
|
_02007D14:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl sub_020077B8
|
|
ldr r1, [sp, #0x38]
|
|
ldr r0, [sp, #0x3c]
|
|
str r1, [sp]
|
|
str r0, [sp, #4]
|
|
ldr r2, [r7]
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r3, r5
|
|
bl sub_02007948
|
|
mov sl, r0
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl sub_0200781C
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl sub_02007774
|
|
cmp r5, sl
|
|
moveq r4, #1
|
|
beq _02007D84
|
|
mov r0, r6
|
|
bl MemFree
|
|
mov r0, #0
|
|
str r0, [r7]
|
|
sub r0, r0, #1
|
|
str r0, [r7, #4]
|
|
_02007D84:
|
|
mov r0, r4
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_02007D90: .word 0x020927FC
|
|
arm_func_end sub_02007CA0
|
|
|
|
arm_func_start sub_02007D94
|
|
sub_02007D94: ; 0x02007D94
|
|
stmdb sp!, {r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0xec
|
|
mov r7, r0
|
|
mov r6, r1
|
|
add r0, sp, #0
|
|
mov r1, r2
|
|
mov r5, r3
|
|
bl sub_02007124
|
|
add r0, sp, #0xc
|
|
bl sub_0200746C
|
|
mov r4, r0
|
|
ldr r1, [r4]
|
|
mov r0, #0
|
|
str r1, [r7]
|
|
ldr r1, [sp, #4]
|
|
mov lr, r7
|
|
str r1, [r7, #4]
|
|
str r0, [r7, #8]
|
|
mov ip, r6
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldmia lr, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
bl sub_0207A270
|
|
ldr r4, [r4, #0x34]
|
|
ldr r3, [sp, #0x100]
|
|
mov r2, r5
|
|
mov r0, r7
|
|
add r1, sp, #0
|
|
blx r4
|
|
mov r4, r0
|
|
ldmia r7!, {r0, r1, r2, r3}
|
|
stmia r6!, {r0, r1, r2, r3}
|
|
ldmia r7, {r0, r1, r2}
|
|
stmia r6, {r0, r1, r2}
|
|
mov r0, r4
|
|
add sp, sp, #0xec
|
|
ldmia sp!, {r4, r5, r6, r7, pc}
|
|
arm_func_end sub_02007D94
|
|
|
|
arm_func_start sub_02007E2C
|
|
sub_02007E2C: ; 0x02007E2C
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #0xec
|
|
mov r5, r0
|
|
mov r4, r1
|
|
add r0, sp, #0
|
|
mov r1, r2
|
|
bl sub_02007124
|
|
add r0, sp, #0xc
|
|
bl sub_0200746C
|
|
mov r6, r0
|
|
ldr r1, [r6]
|
|
mov r0, #0
|
|
str r1, [r5]
|
|
ldr r1, [sp, #4]
|
|
mov lr, r5
|
|
str r1, [r5, #4]
|
|
str r0, [r5, #8]
|
|
mov ip, r4
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldmia lr, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
ldr r2, [r6, #0x38]
|
|
mov r0, r5
|
|
add r1, sp, #0
|
|
blx r2
|
|
mov ip, r0
|
|
ldmia r5!, {r0, r1, r2, r3}
|
|
stmia r4!, {r0, r1, r2, r3}
|
|
ldmia r5, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
mov r0, ip
|
|
add sp, sp, #0xec
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
arm_func_end sub_02007E2C
|
|
|
|
arm_func_start sub_02007EB4
|
|
sub_02007EB4: ; 0x02007EB4
|
|
bx lr
|
|
arm_func_end sub_02007EB4
|
|
|
|
arm_func_start sub_02007EB8
|
|
sub_02007EB8: ; 0x02007EB8
|
|
mov r0, #1
|
|
bx lr
|
|
arm_func_end sub_02007EB8
|
|
|
|
arm_func_start sub_02007EC0
|
|
sub_02007EC0: ; 0x02007EC0
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02007ED8 ; =0x020AF368
|
|
bl sub_02002C40
|
|
ldr r0, _02007ED8 ; =0x020AF368
|
|
bl sub_02002E98
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02007ED8: .word 0x020AF368
|
|
arm_func_end sub_02007EC0
|
|
|
|
arm_func_start sub_02007EDC
|
|
sub_02007EDC: ; 0x02007EDC
|
|
stmdb sp!, {r4, lr}
|
|
ldr r0, _02007F08 ; =0x020AF368
|
|
bl sub_02002CB4
|
|
bl sub_020845E8
|
|
and r4, r0, #0xff
|
|
ldr r0, _02007F08 ; =0x020AF368
|
|
bl sub_02002E98
|
|
cmp r4, #0
|
|
movne r0, #2
|
|
moveq r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02007F08: .word 0x020AF368
|
|
arm_func_end sub_02007EDC
|
|
|
|
arm_func_start sub_02007F0C
|
|
sub_02007F0C: ; 0x02007F0C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
sub sp, sp, #0x80
|
|
mov r5, r0
|
|
ldr r0, _02007FC8 ; =0x020AF368
|
|
mov r4, r1
|
|
bl sub_02002CB4
|
|
add r0, r5, #0x40
|
|
bl FileInit
|
|
add r1, sp, #0
|
|
mov r0, r4
|
|
bl sub_0200733C
|
|
add r1, sp, #0
|
|
add r0, r5, #0x40
|
|
bl sub_0207F6C4
|
|
cmp r0, #0
|
|
bne _02007F64
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
ldr r0, _02007FC8 ; =0x020AF368
|
|
bl sub_02002E98
|
|
mov r0, #0
|
|
b _02007FC0
|
|
_02007F64:
|
|
add r0, r5, #0x1c
|
|
bl sub_020073B4
|
|
mov r0, #0
|
|
str r0, [r5, #0x1c]
|
|
ldr r2, [r5, #0x68]
|
|
ldr r1, [r5, #0x64]
|
|
add r0, r5, #0x20
|
|
sub r1, r2, r1
|
|
str r1, [r5, #0x30]
|
|
ldr r3, [r5, #0x6c]
|
|
ldr r2, [r5, #0x64]
|
|
add r1, r4, #0x5c
|
|
sub r2, r3, r2
|
|
str r2, [r5, #0x34]
|
|
bl Strcpy
|
|
mov r2, #0
|
|
str r2, [r5, #0x88]
|
|
ldr r1, [r5, #0x30]
|
|
ldr r0, _02007FC8 ; =0x020AF368
|
|
str r1, [r5, #0x10]
|
|
str r2, [r5, #0x14]
|
|
bl sub_02002E98
|
|
mov r0, #1
|
|
_02007FC0:
|
|
add sp, sp, #0x80
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02007FC8: .word 0x020AF368
|
|
arm_func_end sub_02007F0C
|
|
|
|
arm_func_start sub_02007FCC
|
|
sub_02007FCC: ; 0x02007FCC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0x80
|
|
mov r5, r0
|
|
ldr r0, _0200807C ; =0x020AF368
|
|
mov r4, r1
|
|
bl sub_02002CB4
|
|
add r0, r5, #0x40
|
|
bl FileInit
|
|
add r1, sp, #0
|
|
mov r0, r4
|
|
bl sub_0200733C
|
|
mov r6, #1
|
|
add r7, sp, #0
|
|
_02008000:
|
|
mov r1, r7
|
|
add r0, r5, #0x40
|
|
bl sub_0207F6C4
|
|
cmp r0, #0
|
|
bne _02008020
|
|
mov r0, r6
|
|
bl CardPullOutWithStatus
|
|
b _02008000
|
|
_02008020:
|
|
add r0, r5, #0x1c
|
|
bl sub_020073B4
|
|
mov r0, #0
|
|
str r0, [r5, #0x1c]
|
|
ldr r2, [r5, #0x68]
|
|
ldr r1, [r5, #0x64]
|
|
add r0, r5, #0x20
|
|
sub r1, r2, r1
|
|
str r1, [r5, #0x30]
|
|
ldr r3, [r5, #0x6c]
|
|
ldr r2, [r5, #0x64]
|
|
add r1, r4, #0x5c
|
|
sub r2, r3, r2
|
|
str r2, [r5, #0x34]
|
|
bl Strcpy
|
|
mov r2, #0
|
|
str r2, [r5, #0x88]
|
|
ldr r1, [r5, #0x30]
|
|
mov r0, #1
|
|
str r1, [r5, #0x10]
|
|
str r2, [r5, #0x14]
|
|
add sp, sp, #0x80
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0200807C: .word 0x020AF368
|
|
arm_func_end sub_02007FCC
|
|
|
|
arm_func_start sub_02008080
|
|
sub_02008080: ; 0x02008080
|
|
stmdb sp!, {r3, lr}
|
|
add r0, r0, #0x40
|
|
bl sub_0207F70C
|
|
cmp r0, #0
|
|
bne _0200809C
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
_0200809C:
|
|
ldr r0, _020080AC ; =0x020AF368
|
|
bl sub_02002E98
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_020080AC: .word 0x020AF368
|
|
arm_func_end sub_02008080
|
|
|
|
arm_func_start sub_020080B0
|
|
sub_020080B0: ; 0x020080B0
|
|
mov r0, #1
|
|
bx lr
|
|
arm_func_end sub_020080B0
|
|
|
|
arm_func_start sub_020080B8
|
|
sub_020080B8: ; 0x020080B8
|
|
mov r0, #1
|
|
bx lr
|
|
arm_func_end sub_020080B8
|
|
|
|
arm_func_start sub_020080C0
|
|
sub_020080C0: ; 0x020080C0
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r4, r0
|
|
ldr r3, [r4, #0x30]
|
|
ldr r0, [r4, #0x88]
|
|
mov r7, r2
|
|
sub r0, r3, r0, lsl #11
|
|
cmp r7, r0
|
|
mov r8, r1
|
|
movgt r7, r0
|
|
mov r6, #0
|
|
mov r5, #1
|
|
b _02008114
|
|
_020080F0:
|
|
add r0, r4, #0x40
|
|
add r1, r8, r6
|
|
sub r2, r7, r6
|
|
bl sub_0207F818
|
|
cmp r0, #0
|
|
addge r6, r6, r0
|
|
bge _02008114
|
|
mov r0, r5
|
|
bl CardPullOutWithStatus
|
|
_02008114:
|
|
cmp r7, r6
|
|
bgt _020080F0
|
|
mov r0, r6, asr #0xa
|
|
ldr r1, [r4, #0x88]
|
|
add r0, r6, r0, lsr #21
|
|
add r1, r1, r0, asr #11
|
|
mov r0, r6
|
|
str r1, [r4, #0x88]
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
arm_func_end sub_020080C0
|
|
|
|
arm_func_start sub_02008138
|
|
sub_02008138: ; 0x02008138
|
|
stmdb sp!, {r3, lr}
|
|
str r1, [r0, #0x88]
|
|
add r0, r0, #0x40
|
|
mov r1, r1, lsl #0xb
|
|
mov r2, #0
|
|
bl sub_0207F828
|
|
cmp r0, #0
|
|
bne _02008160
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
_02008160:
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_02008138
|
|
|
|
arm_func_start DataTransferInit
|
|
DataTransferInit: ; 0x02008168
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _0200818C ; =0x020AF368
|
|
bl sub_02002CB4
|
|
bl sub_02002580
|
|
mov r1, #0x13
|
|
bl sub_020027F8
|
|
ldr r1, _02008190 ; =0x020AF360
|
|
str r0, [r1, #4]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0200818C: .word 0x020AF368
|
|
_02008190: .word 0x020AF360
|
|
arm_func_end DataTransferInit
|
|
|
|
arm_func_start DataTransferStop
|
|
DataTransferStop: ; 0x02008194
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _020081C0 ; =0x020AF360
|
|
ldr r0, _020081C4 ; =0x020AF368
|
|
ldr r4, [r1, #4]
|
|
mov r2, #0
|
|
str r2, [r1, #4]
|
|
bl sub_02002E98
|
|
bl sub_02002580
|
|
mov r1, r4
|
|
bl sub_020027F8
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_020081C0: .word 0x020AF360
|
|
_020081C4: .word 0x020AF368
|
|
arm_func_end DataTransferStop
|
|
|
|
arm_func_start sub_020081C8
|
|
sub_020081C8: ; 0x020081C8
|
|
ldr ip, _020081D4 ; =sub_02002CB4
|
|
ldr r0, _020081D8 ; =0x020AF368
|
|
bx ip
|
|
.align 2, 0
|
|
_020081D4: .word sub_02002CB4
|
|
_020081D8: .word 0x020AF368
|
|
arm_func_end sub_020081C8
|
|
|
|
arm_func_start sub_020081DC
|
|
sub_020081DC: ; 0x020081DC
|
|
ldr ip, _020081E8 ; =sub_02002E98
|
|
ldr r0, _020081EC ; =0x020AF368
|
|
bx ip
|
|
.align 2, 0
|
|
_020081E8: .word sub_02002E98
|
|
_020081EC: .word 0x020AF368
|
|
arm_func_end sub_020081DC
|
|
|
|
arm_func_start sub_020081F0
|
|
sub_020081F0: ; 0x020081F0
|
|
ldr ip, _020081FC ; =sub_02002E10
|
|
ldr r0, _02008200 ; =0x020AF368
|
|
bx ip
|
|
.align 2, 0
|
|
_020081FC: .word sub_02002E10
|
|
_02008200: .word 0x020AF368
|
|
arm_func_end sub_020081F0
|
|
|
|
arm_func_start FileInitVeneer
|
|
FileInitVeneer: ; 0x02008204
|
|
ldr ip, _0200820C ; =FileInit
|
|
bx ip
|
|
.align 2, 0
|
|
_0200820C: .word FileInit
|
|
arm_func_end FileInitVeneer
|
|
|
|
arm_func_start FileOpen
|
|
FileOpen: ; 0x02008210
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r5, r1
|
|
mov r4, #1
|
|
_02008220:
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl sub_0207F6C4
|
|
cmp r0, #0
|
|
ldmneia sp!, {r4, r5, r6, pc}
|
|
mov r0, r4
|
|
bl CardPullOutWithStatus
|
|
b _02008220
|
|
arm_func_end FileOpen
|
|
|
|
arm_func_start sub_02008240
|
|
sub_02008240: ; 0x02008240
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_02008240
|
|
|
|
arm_func_start FileGetSize
|
|
FileGetSize: ; 0x02008244
|
|
ldr r1, [r0, #0x28]
|
|
ldr r0, [r0, #0x24]
|
|
sub r0, r1, r0
|
|
bx lr
|
|
arm_func_end FileGetSize
|
|
|
|
arm_func_start FileRead
|
|
FileRead: ; 0x02008254
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r8, r0
|
|
mov r7, r1
|
|
mov r6, r2
|
|
mov r5, #0
|
|
mov r4, #1
|
|
b _02008298
|
|
_02008270:
|
|
mov r0, r8
|
|
mov r1, r7
|
|
sub r2, r6, r5
|
|
bl sub_0207F818
|
|
cmp r0, #0
|
|
addge r5, r5, r0
|
|
addge r7, r7, r0
|
|
bge _02008298
|
|
mov r0, r4
|
|
bl CardPullOutWithStatus
|
|
_02008298:
|
|
cmp r6, r5
|
|
bgt _02008270
|
|
mov r0, r5
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
arm_func_end FileRead
|
|
|
|
arm_func_start FileSeek
|
|
FileSeek: ; 0x020082A8
|
|
stmdb sp!, {r3, lr}
|
|
bl sub_0207F828
|
|
cmp r0, #0
|
|
ldmneia sp!, {r3, pc}
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end FileSeek
|
|
|
|
arm_func_start FileClose
|
|
FileClose: ; 0x020082C4
|
|
stmdb sp!, {r3, lr}
|
|
bl sub_0207F70C
|
|
cmp r0, #0
|
|
ldmneia sp!, {r3, pc}
|
|
mov r0, #1
|
|
bl CardPullOutWithStatus
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end FileClose
|
|
|
|
arm_func_start sub_020082E0
|
|
sub_020082E0: ; 0x020082E0
|
|
ldr r0, _020082F0 ; =0x020AF360
|
|
mov r1, #2
|
|
str r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_020082F0: .word 0x020AF360
|
|
arm_func_end sub_020082E0
|
|
|
|
arm_func_start sub_020082F4
|
|
sub_020082F4: ; 0x020082F4
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r8, r0
|
|
ldr r0, _02008410 ; =0x022A369C
|
|
mov r1, #8
|
|
bl sub_02002F34
|
|
ldr r0, _02008414 ; =0x020AF3E4
|
|
bl sub_02002C40
|
|
ldr r0, _02008414 ; =0x020AF3E4
|
|
mov r1, #8
|
|
bl sub_02002CAC
|
|
ldr r0, _02008414 ; =0x020AF3E4
|
|
bl sub_02002E98
|
|
mov r1, #8
|
|
ldr r0, _02008418 ; =0x020AF490
|
|
mov r2, r1
|
|
bl sub_02002A9C
|
|
ldr r0, _0200841C ; =0x020AF53C
|
|
mov r1, #8
|
|
mov r2, #0
|
|
bl sub_02002A9C
|
|
ldr r0, _02008420 ; =0x020AF42C
|
|
bl sub_02002950
|
|
ldr r0, _02008424 ; =0x020AF408
|
|
bl sub_02002C40
|
|
ldr r0, _02008428 ; =0x020AF5E8
|
|
mov r1, #1
|
|
mov r2, #0
|
|
bl sub_02002A9C
|
|
mov r0, #0x800
|
|
sub r1, r0, #0xf3
|
|
bl MemAlloc
|
|
mov r6, r0
|
|
ldr r0, _0200842C ; =0x022A3698
|
|
mov r7, #0
|
|
ldr r4, _02008430 ; =0x02092978
|
|
str r6, [r0]
|
|
mov r5, r7
|
|
_02008388:
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, r5
|
|
mov r3, r4
|
|
bl sub_02008980
|
|
add r7, r7, #1
|
|
cmp r7, #8
|
|
add r6, r6, #0x100
|
|
blt _02008388
|
|
mov r0, r8
|
|
bl sub_02007004
|
|
bl sub_02006EF8
|
|
bl sub_02007380
|
|
bl sub_02007384
|
|
ldr r0, _02008434 ; =0x0209297C
|
|
bl DebugPrint0__0200C1FC
|
|
bl sub_020073D8
|
|
ldr r0, _02008438 ; =0x0209299C
|
|
bl DebugPrint0__0200C1FC
|
|
ldr r0, _0200843C ; =0x020AF3D0
|
|
ldr r1, _02008440 ; =0x0000070D
|
|
ldr r0, [r0, #8]
|
|
bl MemAlloc
|
|
ldr r2, _0200843C ; =0x020AF3D0
|
|
ldr r1, _02008444 ; =0x020AF3D0
|
|
str r0, [r2, #4]
|
|
ldr r0, _02008448 ; =0x022A36C4
|
|
mov r2, #0
|
|
bl sub_02002778
|
|
ldr r0, _02008424 ; =0x020AF408
|
|
bl sub_02002E98
|
|
ldr r0, _02008448 ; =0x022A36C4
|
|
bl sub_020027E8
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_02008410: .word 0x022A369C
|
|
_02008414: .word 0x020AF3E4
|
|
_02008418: .word 0x020AF490
|
|
_0200841C: .word 0x020AF53C
|
|
_02008420: .word 0x020AF42C
|
|
_02008424: .word 0x020AF408
|
|
_02008428: .word 0x020AF5E8
|
|
_0200842C: .word 0x022A3698
|
|
_02008430: .word 0x02092978
|
|
_02008434: .word 0x0209297C
|
|
_02008438: .word 0x0209299C
|
|
_0200843C: .word 0x020AF3D0
|
|
_02008440: .word 0x0000070D
|
|
_02008444: .word 0x020AF3D0
|
|
_02008448: .word 0x022A36C4
|
|
arm_func_end sub_020082F4
|
|
|
|
arm_func_start sub_0200844C
|
|
sub_0200844C: ; 0x0200844C
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl sub_02006ED4
|
|
mov r0, #0
|
|
str r0, [r4, #0x1c]
|
|
str r0, [r4, #0x20]
|
|
str r0, [r4, #0x24]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_0200844C
|
|
|
|
arm_func_start sub_0200846C
|
|
sub_0200846C: ; 0x0200846C
|
|
mov r2, #0
|
|
str r2, [r0]
|
|
sub r1, r2, #1
|
|
stmib r0, {r1, r2}
|
|
str r1, [r0, #0xc]
|
|
str r1, [r0, #0x10]
|
|
mov r1, #4
|
|
str r1, [r0, #0x14]
|
|
bx lr
|
|
arm_func_end sub_0200846C
|
|
|
|
arm_func_start sub_02008490
|
|
sub_02008490: ; 0x02008490
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0xb0
|
|
ldr r0, _02008928 ; =0x020AF408
|
|
bl sub_02002CB4
|
|
ldr r0, _0200892C ; =0x02092908
|
|
ldr r1, [r0]
|
|
ldr r0, [r0, #4]
|
|
str r1, [sp, #0x10]
|
|
str r0, [sp, #0x14]
|
|
_020084B4:
|
|
ldr r0, _02008930 ; =0x022A369C
|
|
add r1, sp, #0x20
|
|
mov r2, #1
|
|
bl sub_02002F98
|
|
ldr r0, _02008934 ; =0x020AF3E4
|
|
bl sub_02002CB4
|
|
ldr r1, [sp, #0x20]
|
|
ldr r0, [r1]
|
|
cmp r0, #1
|
|
beq _020088F8
|
|
ldr sb, [r1, #4]
|
|
mov r1, #5
|
|
add r0, sp, #0x24
|
|
str r1, [sb, #0x24]
|
|
bl sub_020075E8
|
|
mov r6, #0
|
|
add r1, sp, #0x24
|
|
ldr r0, _02008934 ; =0x020AF3E4
|
|
str r1, [sb, #0x1c]
|
|
mov r7, r6
|
|
mov r8, r6
|
|
bl sub_02002E98
|
|
ldr r0, [sb, #0x20]
|
|
cmp r0, #0xe
|
|
addls pc, pc, r0, lsl #2
|
|
b _02008894
|
|
_0200851C: ; jump table
|
|
b _02008894 ; case 0
|
|
b _02008894 ; case 1
|
|
b _02008558 ; case 2
|
|
b _020085BC ; case 3
|
|
b _020085E0 ; case 4
|
|
b _02008670 ; case 5
|
|
b _0200868C ; case 6
|
|
b _020086DC ; case 7
|
|
b _02008724 ; case 8
|
|
b _0200876C ; case 9
|
|
b _020087B4 ; case 10
|
|
b _020087F0 ; case 11
|
|
b _02008834 ; case 12
|
|
b _02008860 ; case 13
|
|
b _02008880 ; case 14
|
|
_02008558:
|
|
add r0, sp, #0x24
|
|
mov r1, sb
|
|
bl sub_020075F4
|
|
movs r6, r0
|
|
beq _02008894
|
|
mov r1, r7
|
|
ldr r0, _02008928 ; =0x020AF408
|
|
str r1, [sb, #0x24]
|
|
bl sub_02002E98
|
|
ldr r0, [sp, #0x20]
|
|
bl sub_02008B78
|
|
ldr r0, _02008938 ; =0x020AF5E8
|
|
bl sub_02002B7C
|
|
add r0, sp, #0x24
|
|
mov r1, sb
|
|
bl sub_02007624
|
|
cmp r0, #0
|
|
beq _020085B4
|
|
mov r1, r7
|
|
str r1, [sb, #0x1c]
|
|
ldr r0, _02008938 ; =0x020AF5E8
|
|
str r1, [sb, #0x24]
|
|
bl sub_02002B20
|
|
_020085B4:
|
|
mov sb, #0
|
|
b _02008894
|
|
_020085BC:
|
|
ldr r1, [sp, #0x20]
|
|
mov r0, sb
|
|
ldr r2, [r1, #0x10]
|
|
ldr r3, [r1, #0xc]
|
|
add r1, r1, #0x28
|
|
mov r8, #1
|
|
blx r3
|
|
mov r6, r0
|
|
b _02008894
|
|
_020085E0:
|
|
ldr r5, [sp, #0x10]
|
|
ldr r4, [sp, #0x14]
|
|
add sl, sp, #0x18
|
|
add fp, sp, #0x24
|
|
_020085F0:
|
|
ldr r2, [sp, #0x20]
|
|
mov r0, fp
|
|
mov r1, sb
|
|
mov r3, sl
|
|
add r2, r2, #0x28
|
|
str r5, [sp, #0x18]
|
|
str r4, [sp, #0x1c]
|
|
bl sub_020076E4
|
|
movs r6, r0
|
|
beq _020085F0
|
|
cmp r6, #0
|
|
beq _02008894
|
|
mov r1, #0
|
|
ldr r0, _02008928 ; =0x020AF408
|
|
str r1, [sb, #0x24]
|
|
bl sub_02002E98
|
|
ldr r0, [sp, #0x20]
|
|
bl sub_02008B78
|
|
ldr r0, _02008938 ; =0x020AF5E8
|
|
bl sub_02002B7C
|
|
add r0, sp, #0x24
|
|
mov r1, sb
|
|
bl sub_02007774
|
|
cmp r0, #0
|
|
beq _02008668
|
|
mov r1, #0
|
|
str r1, [sb, #0x1c]
|
|
ldr r0, _02008938 ; =0x020AF5E8
|
|
str r1, [sb, #0x24]
|
|
bl sub_02002B20
|
|
_02008668:
|
|
mov sb, #0
|
|
b _02008894
|
|
_02008670:
|
|
ldr r0, [sp, #0x20]
|
|
ldr r4, [r0, #0x10]
|
|
add r0, r0, #0x28
|
|
bl sub_02007578
|
|
str r0, [r4]
|
|
mov r6, #1
|
|
b _02008894
|
|
_0200868C:
|
|
ldr r3, [sp, #0x20]
|
|
add r0, sp, #0x24
|
|
mov r1, sb
|
|
add r2, r3, #0x28
|
|
ldr r4, [r3, #0x10]
|
|
bl sub_02007654
|
|
cmp r0, #0
|
|
beq _020086C4
|
|
ldr r1, [sb]
|
|
mov r0, r6
|
|
str r1, [r4]
|
|
ldr r1, [sb, #0x10]
|
|
str r1, [r4, #0xc]
|
|
b _020086D0
|
|
_020086C4:
|
|
mov r0, r4
|
|
bl sub_0200846C
|
|
mov r0, #2
|
|
_020086D0:
|
|
str r0, [r4, #0x14]
|
|
mov r6, #1
|
|
b _02008894
|
|
_020086DC:
|
|
mov r4, r6
|
|
mov r5, #1
|
|
add r7, sp, #0x24
|
|
_020086E8:
|
|
ldr r3, [sp, #0x20]
|
|
mov r0, r7
|
|
add r1, r3, #0x28
|
|
str r1, [sp]
|
|
ldr r2, [r3, #0xc]
|
|
ldr r3, [r3, #0x14]
|
|
mov r1, sb
|
|
bl sub_02007A70
|
|
cmp r0, #0
|
|
movge r0, r5
|
|
movlt r0, r4
|
|
ands r6, r0, #0xff
|
|
beq _020086E8
|
|
ldrb r7, [sp, #0x30]
|
|
b _02008894
|
|
_02008724:
|
|
mov r4, r6
|
|
mov r5, #1
|
|
add r7, sp, #0x24
|
|
_02008730:
|
|
ldr r3, [sp, #0x20]
|
|
mov r0, r7
|
|
add r1, r3, #0x28
|
|
str r1, [sp]
|
|
ldr r2, [r3, #0xc]
|
|
ldr r3, [r3, #0x14]
|
|
mov r1, sb
|
|
bl sub_020079D8
|
|
cmp r0, #0
|
|
movge r0, r5
|
|
movlt r0, r4
|
|
ands r6, r0, #0xff
|
|
beq _02008730
|
|
ldrb r7, [sp, #0x30]
|
|
b _02008894
|
|
_0200876C:
|
|
ldr r3, [sp, #0x20]
|
|
add r0, sp, #0x24
|
|
add r1, r3, #0x28
|
|
str r1, [sp]
|
|
ldr r2, [r3, #0x1c]
|
|
mov r1, sb
|
|
str r2, [sp, #4]
|
|
ldr r2, [r3, #0x18]
|
|
str r2, [sp, #8]
|
|
ldr r2, [r3, #0xc]
|
|
ldr r3, [r3, #0x14]
|
|
bl sub_02007B14
|
|
cmp r0, #0
|
|
movge r0, #1
|
|
movlt r0, r6
|
|
and r6, r0, #0xff
|
|
ldrb r7, [sp, #0x30]
|
|
b _02008894
|
|
_020087B4:
|
|
add r4, sp, #0x24
|
|
_020087B8:
|
|
ldr r2, [sp, #0x20]
|
|
mov r0, r4
|
|
ldr r1, [r2, #0x20]
|
|
add r3, r2, #0x28
|
|
str r1, [sp]
|
|
ldr r1, [r2, #0x24]
|
|
str r1, [sp, #4]
|
|
ldr r1, [r2, #4]
|
|
ldr r2, [r2, #0x10]
|
|
bl sub_02007BCC
|
|
movs r6, r0
|
|
beq _020087B8
|
|
ldrb r7, [sp, #0x30]
|
|
b _02008894
|
|
_020087F0:
|
|
ldr r2, [sp, #0x20]
|
|
add r0, sp, #0x24
|
|
ldr r1, [r2, #0x20]
|
|
add r3, r2, #0x28
|
|
str r1, [sp]
|
|
ldr r1, [r2, #0x24]
|
|
str r1, [sp, #4]
|
|
ldr r1, [r2, #0x1c]
|
|
str r1, [sp, #8]
|
|
ldr r1, [r2, #0x14]
|
|
str r1, [sp, #0xc]
|
|
ldr r1, [r2, #4]
|
|
ldr r2, [r2, #0x10]
|
|
bl sub_02007CA0
|
|
mov r6, r0
|
|
ldrb r7, [sp, #0x30]
|
|
b _02008894
|
|
_02008834:
|
|
ldr r3, [sp, #0x20]
|
|
add r0, sp, #0x24
|
|
ldr r1, [r3, #0x14]
|
|
add r2, r3, #0x28
|
|
str r1, [sp]
|
|
ldr r1, [r3, #4]
|
|
ldr r3, [r3, #0x10]
|
|
bl sub_02007D94
|
|
mov r6, r0
|
|
mov r8, #1
|
|
b _02008894
|
|
_02008860:
|
|
ldr r2, [sp, #0x20]
|
|
add r0, sp, #0x24
|
|
ldr r1, [r2, #4]
|
|
add r2, r2, #0x28
|
|
bl sub_02007E2C
|
|
mov r6, r0
|
|
mov r8, #1
|
|
b _02008894
|
|
_02008880:
|
|
ldr r0, [sp, #0x20]
|
|
add r0, r0, #0x28
|
|
bl sub_020075B0
|
|
mov r6, r0
|
|
mov r8, #1
|
|
_02008894:
|
|
ldr r0, _02008934 ; =0x020AF3E4
|
|
bl sub_02002CB4
|
|
cmp sb, #0
|
|
beq _020088DC
|
|
mov r0, #0
|
|
str r0, [sb, #0x1c]
|
|
cmp r7, #0
|
|
movne r0, #1
|
|
strne r0, [sb, #0x24]
|
|
bne _020088DC
|
|
cmp r6, #0
|
|
strne r0, [sb, #0x24]
|
|
bne _020088DC
|
|
cmp r8, #0
|
|
movne r0, #2
|
|
strne r0, [sb, #0x24]
|
|
moveq r0, #3
|
|
streq r0, [sb, #0x24]
|
|
_020088DC:
|
|
ldr r0, [sp, #0x20]
|
|
ldr r0, [r0, #0x1c]
|
|
cmp r0, #0
|
|
beq _020088F0
|
|
bl sub_02002B50
|
|
_020088F0:
|
|
ldr r0, [sp, #0x20]
|
|
bl sub_02008B78
|
|
_020088F8:
|
|
mov r1, #0
|
|
ldr r0, [sp, #0x20]
|
|
ldr r3, _0200893C ; =0x02092978
|
|
mov r2, r1
|
|
bl sub_02008980
|
|
ldr r0, _02008934 ; =0x020AF3E4
|
|
bl sub_02002E98
|
|
ldr r0, _02008940 ; =0x020AF42C
|
|
bl sub_020029B8
|
|
ldr r0, _02008944 ; =0x020AF490
|
|
bl sub_02002B20
|
|
b _020084B4
|
|
.align 2, 0
|
|
_02008928: .word 0x020AF408
|
|
_0200892C: .word 0x02092908
|
|
_02008930: .word 0x022A369C
|
|
_02008934: .word 0x020AF3E4
|
|
_02008938: .word 0x020AF5E8
|
|
_0200893C: .word 0x02092978
|
|
_02008940: .word 0x020AF42C
|
|
_02008944: .word 0x020AF490
|
|
arm_func_end sub_02008490
|
|
|
|
arm_func_start sub_02008948
|
|
sub_02008948: ; 0x02008948
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
ldr r0, _0200897C ; =0x020AF3E4
|
|
bl sub_02002CB4
|
|
ldr r0, [r4, #0x24]
|
|
cmp r0, #4
|
|
cmpne r0, #5
|
|
moveq r4, #1
|
|
ldr r0, _0200897C ; =0x020AF3E4
|
|
movne r4, #0
|
|
bl sub_02002E98
|
|
and r0, r4, #0xff
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0200897C: .word 0x020AF3E4
|
|
arm_func_end sub_02008948
|
|
|
|
arm_func_start sub_02008980
|
|
sub_02008980: ; 0x02008980
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
str r2, [r4]
|
|
cmp r3, #0
|
|
str r1, [r4, #4]
|
|
moveq r0, #0
|
|
streqb r0, [r4, #0x28]
|
|
beq _020089AC
|
|
mov r1, r3
|
|
add r0, r4, #0x28
|
|
bl Strcpy
|
|
_020089AC:
|
|
mov r0, #0
|
|
strb r0, [r4, #9]
|
|
strb r0, [r4, #8]
|
|
str r0, [r4, #0xc]
|
|
str r0, [r4, #0x10]
|
|
str r0, [r4, #0x14]
|
|
str r0, [r4, #0x18]
|
|
str r0, [r4, #0x1c]
|
|
str r0, [r4, #0x20]
|
|
str r0, [r4, #0x24]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_02008980
|
|
|
|
arm_func_start sub_020089D8
|
|
sub_020089D8: ; 0x020089D8
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r0
|
|
ldr r0, _02008A78 ; =0x020AF3E4
|
|
ldr r1, _02008A7C ; =0x020AF490
|
|
bl sub_02002D80
|
|
cmp r0, #0
|
|
bne _02008A00
|
|
ldr r0, _02008A78 ; =0x020AF3E4
|
|
ldr r1, _02008A7C ; =0x020AF490
|
|
bl sub_02002D14
|
|
_02008A00:
|
|
ldr r0, _02008A80 ; =0x022A3698
|
|
mov r3, #0
|
|
ldr r5, [r0]
|
|
mov r0, r3
|
|
mov r1, #1
|
|
b _02008A60
|
|
_02008A18:
|
|
ldr r2, [r5]
|
|
cmp r2, #0
|
|
moveq r2, r1
|
|
movne r2, r0
|
|
tst r2, #0xff
|
|
beq _02008A58
|
|
mov lr, r5
|
|
mov ip, #0x10
|
|
_02008A38:
|
|
ldmia r4!, {r0, r1, r2, r3}
|
|
stmia lr!, {r0, r1, r2, r3}
|
|
subs ip, ip, #1
|
|
bne _02008A38
|
|
ldr r0, _02008A78 ; =0x020AF3E4
|
|
bl sub_02002E98
|
|
mov r0, r5
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_02008A58:
|
|
add r3, r3, #1
|
|
add r5, r5, #0x100
|
|
_02008A60:
|
|
cmp r3, #8
|
|
blt _02008A18
|
|
ldr r0, _02008A78 ; =0x020AF3E4
|
|
bl sub_02002E98
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02008A78: .word 0x020AF3E4
|
|
_02008A7C: .word 0x020AF490
|
|
_02008A80: .word 0x022A3698
|
|
arm_func_end sub_020089D8
|
|
|
|
arm_func_start sub_02008A84
|
|
sub_02008A84: ; 0x02008A84
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #0x24
|
|
mov r5, r0
|
|
ldr r4, [r5, #4]
|
|
mov r0, r4
|
|
bl sub_02008948
|
|
cmp r0, #0
|
|
bne _02008B00
|
|
ldr r1, [r5]
|
|
mov r0, r5
|
|
str r1, [r4, #0x20]
|
|
mov r1, #4
|
|
str r1, [r4, #0x24]
|
|
bl sub_020089D8
|
|
mov r1, r0
|
|
mov r2, #1
|
|
ldr r0, _02008B64 ; =0x022A369C
|
|
strb r2, [r1, #8]
|
|
bl sub_02002F7C
|
|
ldr r6, _02008B68 ; =0x020AF53C
|
|
_02008AD4:
|
|
mov r0, r6
|
|
bl sub_02002B7C
|
|
ldr r3, [r4, #0x24]
|
|
cmp r3, #4
|
|
bne _02008AF4
|
|
mov r0, r6
|
|
bl sub_02002B20
|
|
b _02008AD4
|
|
_02008AF4:
|
|
cmp r3, #2
|
|
bhi _02008B04
|
|
b _02008B5C
|
|
_02008B00:
|
|
mov r3, #5
|
|
_02008B04:
|
|
ldr r0, _02008B6C ; =0x02092908
|
|
ldr r2, _02008B70 ; =0x020AF454
|
|
ldr r1, [r0, #0x24]
|
|
ldr r0, [r0, #0x20]
|
|
str r1, [sp, #0x20]
|
|
str r0, [sp, #0x1c]
|
|
ldr ip, [r5]
|
|
ldr r1, _02008B74 ; =0x020929B8
|
|
stmia sp, {r3, ip}
|
|
ldr r3, [r4, #0x20]
|
|
add r0, sp, #0x1c
|
|
str r3, [sp, #8]
|
|
str r4, [sp, #0xc]
|
|
ldr r4, [r5, #0xc]
|
|
add r3, r5, #0x28
|
|
str r4, [sp, #0x10]
|
|
ldr r4, [r5, #0x10]
|
|
str r4, [sp, #0x14]
|
|
ldr r4, [r5, #0x14]
|
|
str r4, [sp, #0x18]
|
|
ldr r2, [r2, ip, lsl #2]
|
|
bl FatalError
|
|
_02008B5C:
|
|
add sp, sp, #0x24
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02008B64: .word 0x022A369C
|
|
_02008B68: .word 0x020AF53C
|
|
_02008B6C: .word 0x02092908
|
|
_02008B70: .word 0x020AF454
|
|
_02008B74: .word 0x020929B8
|
|
arm_func_end sub_02008A84
|
|
|
|
arm_func_start sub_02008B78
|
|
sub_02008B78: ; 0x02008B78
|
|
stmdb sp!, {r3, lr}
|
|
ldrb r1, [r0, #8]
|
|
cmp r1, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
mov r1, #0
|
|
strb r1, [r0, #8]
|
|
ldr r0, _02008BA4 ; =0x020AF53C
|
|
bl sub_02002B20
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02008BA4: .word 0x020AF53C
|
|
arm_func_end sub_02008B78
|
|
|
|
arm_func_start sub_02008BA8
|
|
sub_02008BA8: ; 0x02008BA8
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #0x40
|
|
mov r2, r0
|
|
add r0, sp, #0
|
|
add r1, sp, #0x28
|
|
bl sub_02008C68
|
|
cmp r0, #0
|
|
ldrne r0, [sp, #0x34]
|
|
mvneq r0, #0
|
|
add sp, sp, #0x40
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_02008BA8
|
|
|
|
arm_func_start UnloadFile
|
|
UnloadFile: ; 0x02008BD4
|
|
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 UnloadFile
|
|
|
|
arm_func_start sub_02008BF4
|
|
sub_02008BF4: ; 0x02008BF4
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #0x28
|
|
mov r3, r0
|
|
mov r2, r1
|
|
add r0, sp, #0
|
|
mov r1, r3
|
|
bl sub_02008CC4
|
|
add sp, sp, #0x28
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_02008BF4
|
|
|
|
arm_func_start sub_02008C18
|
|
sub_02008C18: ; 0x02008C18
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #0x28
|
|
mov r3, r0
|
|
mov r2, r1
|
|
add r0, sp, #0
|
|
mov r1, r3
|
|
bl sub_02008D10
|
|
add sp, sp, #0x28
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_02008C18
|
|
|
|
arm_func_start LoadFileFromRom__02008C3C
|
|
LoadFileFromRom__02008C3C: ; 0x02008C3C
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #0x28
|
|
mov lr, r0
|
|
mov ip, r1
|
|
mov r3, r2
|
|
add r0, sp, #0
|
|
mov r1, lr
|
|
mov r2, ip
|
|
bl sub_02008D60
|
|
add sp, sp, #0x28
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end LoadFileFromRom__02008C3C
|
|
|
|
arm_func_start sub_02008C68
|
|
sub_02008C68: ; 0x02008C68
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #0x100
|
|
mov r6, r0
|
|
mov r4, r2
|
|
mov r5, r1
|
|
bl sub_0200844C
|
|
add r0, sp, #0
|
|
mov r1, r6
|
|
mov r3, r4
|
|
mov r2, #6
|
|
bl sub_02008980
|
|
mov r0, r5
|
|
str r5, [sp, #0x10]
|
|
bl sub_0200846C
|
|
add r0, sp, #0
|
|
bl sub_02008A84
|
|
ldr r0, [r5, #0x14]
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
add sp, sp, #0x100
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_02008C68
|
|
|
|
arm_func_start sub_02008CC4
|
|
sub_02008CC4: ; 0x02008CC4
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #0x100
|
|
mov r6, r0
|
|
mov r4, r2
|
|
mov r5, r1
|
|
bl sub_0200844C
|
|
add r0, sp, #0
|
|
mov r1, r6
|
|
mov r3, r4
|
|
mov r2, #8
|
|
bl sub_02008980
|
|
mvn r1, #0
|
|
add r0, sp, #0
|
|
str r5, [sp, #0xc]
|
|
str r1, [sp, #0x14]
|
|
bl sub_02008A84
|
|
ldr r0, [r6, #0x10]
|
|
add sp, sp, #0x100
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_02008CC4
|
|
|
|
arm_func_start sub_02008D10
|
|
sub_02008D10: ; 0x02008D10
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #0x100
|
|
mov r6, r0
|
|
mov r4, r2
|
|
mov r5, r1
|
|
bl sub_0200844C
|
|
add r0, sp, #0
|
|
mov r1, r6
|
|
mov r3, r4
|
|
mov r2, #8
|
|
bl sub_02008980
|
|
ldr r1, [r5]
|
|
add r0, sp, #0
|
|
str r1, [sp, #0xc]
|
|
ldr r1, [r5, #4]
|
|
str r1, [sp, #0x14]
|
|
bl sub_02008A84
|
|
ldr r0, [r6, #0x10]
|
|
add sp, sp, #0x100
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_02008D10
|
|
|
|
arm_func_start sub_02008D60
|
|
sub_02008D60: ; 0x02008D60
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0x100
|
|
mov r7, r0
|
|
mov r5, r2
|
|
mov r6, r1
|
|
mov r4, r3
|
|
bl sub_0200844C
|
|
add r0, sp, #0
|
|
mov r1, r7
|
|
mov r3, r5
|
|
mov r2, #0xa
|
|
bl sub_02008980
|
|
add r0, sp, #0
|
|
str r6, [sp, #0x10]
|
|
str r4, [sp, #0x24]
|
|
bl sub_02008A84
|
|
ldr r0, [r7, #0x10]
|
|
add sp, sp, #0x100
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
arm_func_end sub_02008D60
|
|
|
|
arm_func_start sub_02008DAC
|
|
sub_02008DAC: ; 0x02008DAC
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _02008EAC ; =0x020AF694
|
|
mov r3, #0xff
|
|
ldr r0, _02008EB0 ; =0x020B2B98
|
|
mov r2, #3
|
|
strb r3, [r1]
|
|
str r2, [r0]
|
|
bl sub_02076074
|
|
ldr r2, _02008EB4 ; =0x04000304
|
|
ldr r0, _02008EB8 ; =0xFFFFFDF1
|
|
ldrh r1, [r2]
|
|
and r0, r1, r0
|
|
orr r0, r0, #0xe
|
|
orr r0, r0, #0x200
|
|
strh r0, [r2]
|
|
bl sub_020777C4
|
|
bl sub_0207793C
|
|
bl sub_0207621C
|
|
ldr r1, _02008EBC ; =0x04001000
|
|
ldr r0, [r1]
|
|
bic r0, r0, #0x10000
|
|
str r0, [r1]
|
|
bl sub_0200961C
|
|
ldr r0, _02008EC0 ; =0x000001FF
|
|
bl sub_02076E90
|
|
mov r0, #0
|
|
mov r1, #0x6800000
|
|
mov r2, #0xa4000
|
|
bl sub_0207C358
|
|
bl sub_0207735C
|
|
mov r0, #0xc0
|
|
mov r1, #0x7000000
|
|
mov r2, #0x400
|
|
bl sub_0207C358
|
|
mov r0, #0
|
|
mov r1, #0x5000000
|
|
mov r2, #0x400
|
|
bl sub_0207C358
|
|
mov r0, #0xc0
|
|
ldr r1, _02008EC4 ; =0x07000400
|
|
mov r2, #0x400
|
|
bl sub_0207C358
|
|
mov r0, #0
|
|
ldr r1, _02008EC8 ; =0x05000400
|
|
mov r2, #0x400
|
|
bl sub_0207C358
|
|
mov r1, #0x100
|
|
ldr r0, _02008ECC ; =0x022A37A0
|
|
str r1, [r0, #4]
|
|
str r1, [r0, #8]
|
|
bl sub_02009648
|
|
mov r2, #0
|
|
ldr r0, _02008ECC ; =0x022A37A0
|
|
mov r1, #0x100
|
|
str r2, [r0]
|
|
str r1, [r0, #4]
|
|
str r1, [r0, #8]
|
|
bl sub_02008F88
|
|
mov r4, #1
|
|
_02008E98:
|
|
mov r0, r4
|
|
bl sub_02082420
|
|
cmp r0, #0
|
|
beq _02008E98
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02008EAC: .word 0x020AF694
|
|
_02008EB0: .word 0x020B2B98
|
|
_02008EB4: .word 0x04000304
|
|
_02008EB8: .word 0xFFFFFDF1
|
|
_02008EBC: .word 0x04001000
|
|
_02008EC0: .word 0x000001FF
|
|
_02008EC4: .word 0x07000400
|
|
_02008EC8: .word 0x05000400
|
|
_02008ECC: .word 0x022A37A0
|
|
arm_func_end sub_02008DAC
|
|
|
|
arm_func_start sub_02008ED0
|
|
sub_02008ED0: ; 0x02008ED0
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _02008F30 ; =0x020AF694
|
|
mov r4, r0
|
|
ldrb r1, [r1]
|
|
cmp r1, r4
|
|
ldmeqia sp!, {r4, pc}
|
|
ldr r0, _02008F34 ; =0x02092AB8
|
|
mov r2, r4
|
|
bl DebugPrint0__0200C1FC
|
|
cmp r4, #0
|
|
beq _02008F0C
|
|
cmp r4, #0xff
|
|
bne _02008F24
|
|
bl sub_0200961C
|
|
b _02008F24
|
|
_02008F0C:
|
|
bl sub_02009648
|
|
bl sub_02076258
|
|
ldr r1, _02008F38 ; =0x04001000
|
|
ldr r0, [r1]
|
|
orr r0, r0, #0x10000
|
|
str r0, [r1]
|
|
_02008F24:
|
|
ldr r0, _02008F30 ; =0x020AF694
|
|
strb r4, [r0]
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02008F30: .word 0x020AF694
|
|
_02008F34: .word 0x02092AB8
|
|
_02008F38: .word 0x04001000
|
|
arm_func_end sub_02008ED0
|
|
|
|
arm_func_start sub_02008F3C
|
|
sub_02008F3C: ; 0x02008F3C
|
|
ldr r2, _02008F48 ; =0x022A37A4
|
|
str r1, [r2, r0, lsl #2]
|
|
bx lr
|
|
.align 2, 0
|
|
_02008F48: .word 0x022A37A4
|
|
arm_func_end sub_02008F3C
|
|
|
|
arm_func_start sub_02008F4C
|
|
sub_02008F4C: ; 0x02008F4C
|
|
ldr r1, _02008F60 ; =0x022A37A4
|
|
ldr r0, [r1, r0, lsl #2]
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bx lr
|
|
.align 2, 0
|
|
_02008F60: .word 0x022A37A4
|
|
arm_func_end sub_02008F4C
|
|
|
|
arm_func_start sub_02008F64
|
|
sub_02008F64: ; 0x02008F64
|
|
ldr r2, _02008F80 ; =0x022A37A0
|
|
add r0, r1, r0, lsl #2
|
|
ldr r3, [r2]
|
|
mov r1, #1
|
|
orr r0, r3, r1, lsl r0
|
|
str r0, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_02008F80: .word 0x022A37A0
|
|
arm_func_end sub_02008F64
|
|
|
|
arm_func_start sub_02008F84
|
|
sub_02008F84: ; 0x02008F84
|
|
bx lr
|
|
arm_func_end sub_02008F84
|
|
|
|
arm_func_start sub_02008F88
|
|
sub_02008F88: ; 0x02008F88
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov r0, #0
|
|
bl sub_02009DCC
|
|
mov r0, #1
|
|
bl sub_02009DCC
|
|
mov r0, #0
|
|
bl sub_02009D48
|
|
mov r0, #1
|
|
bl sub_02009D48
|
|
mov r0, #0
|
|
bl sub_02009F9C
|
|
mov r0, #1
|
|
bl sub_02009F9C
|
|
mov r0, #0
|
|
bl sub_02009E70
|
|
mov r0, #1
|
|
bl sub_02009E70
|
|
ldr r1, _02009080 ; =0x022A37A0
|
|
ldr r0, _02009084 ; =0x0400006C
|
|
ldr r2, [r1, #4]
|
|
mov r1, r2, asr #3
|
|
add r1, r2, r1, lsr #28
|
|
mov r1, r1, asr #4
|
|
bl sub_02076324
|
|
ldr r1, _02009080 ; =0x022A37A0
|
|
ldr r0, _02009088 ; =0x0400106C
|
|
ldr r2, [r1, #8]
|
|
mov r1, r2, asr #3
|
|
add r1, r2, r1, lsr #28
|
|
mov r1, r1, asr #4
|
|
bl sub_02076324
|
|
ldr r0, _02009080 ; =0x022A37A0
|
|
ldr sb, [r0]
|
|
cmp sb, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
mov sl, #0
|
|
ldr r8, _0200908C ; =0x02092A18
|
|
mov fp, #2
|
|
ldr r7, _02009090 ; =0x02092A38
|
|
ldr r6, _02009094 ; =0x02092A58
|
|
ldr r5, _02009098 ; =0x02092A78
|
|
ldr r4, _0200909C ; =0x02092A98
|
|
b _02009068
|
|
_02009034:
|
|
tst sb, #1
|
|
beq _02009060
|
|
ldr r0, [r8, sl, lsl #2]
|
|
mov r1, fp
|
|
bl MemZero16
|
|
ldr r0, [r7, sl, lsl #2]
|
|
ldr r1, [r6, sl, lsl #2]
|
|
bl MemZero32
|
|
ldr r0, [r5, sl, lsl #2]
|
|
ldr r1, [r4, sl, lsl #2]
|
|
bl MemZero32
|
|
_02009060:
|
|
mov sb, sb, asr #1
|
|
add sl, sl, #1
|
|
_02009068:
|
|
cmp sb, #0
|
|
bne _02009034
|
|
ldr r0, _02009080 ; =0x022A37A0
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02009080: .word 0x022A37A0
|
|
_02009084: .word 0x0400006C
|
|
_02009088: .word 0x0400106C
|
|
_0200908C: .word 0x02092A18
|
|
_02009090: .word 0x02092A38
|
|
_02009094: .word 0x02092A58
|
|
_02009098: .word 0x02092A78
|
|
_0200909C: .word 0x02092A98
|
|
arm_func_end sub_02008F88
|
|
|
|
arm_func_start sub_020090A0
|
|
sub_020090A0: ; 0x020090A0
|
|
mov r3, r1, lsr #0x1f
|
|
ldr ip, _020090BC ; =0x022A37CC
|
|
rsb r1, r3, r1, lsl #30
|
|
add r3, r3, r1, ror #30
|
|
add r1, ip, r2, lsl #4
|
|
str r3, [r1, r0, lsl #2]
|
|
bx lr
|
|
.align 2, 0
|
|
_020090BC: .word 0x022A37CC
|
|
arm_func_end sub_020090A0
|
|
|
|
arm_func_start sub_020090C0
|
|
sub_020090C0: ; 0x020090C0
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r5, r1
|
|
mov r4, #0
|
|
_020090D0:
|
|
ldrb r1, [r6, r4]
|
|
mov r0, r4
|
|
mov r2, r5
|
|
bl sub_020090A0
|
|
add r0, r4, #1
|
|
and r4, r0, #0xff
|
|
cmp r4, #4
|
|
blo _020090D0
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_020090C0
|
|
|
|
arm_func_start sub_020090F4
|
|
sub_020090F4: ; 0x020090F4
|
|
ldr r2, _0200911C ; =0x022A37CC
|
|
mov ip, #0
|
|
add r3, r2, r1, lsl #4
|
|
_02009100:
|
|
ldr r2, [r3, ip, lsl #2]
|
|
add r1, ip, #1
|
|
strb r2, [r0, ip]
|
|
and ip, r1, #0xff
|
|
cmp ip, #4
|
|
blo _02009100
|
|
bx lr
|
|
.align 2, 0
|
|
_0200911C: .word 0x022A37CC
|
|
arm_func_end sub_020090F4
|
|
|
|
arm_func_start sub_02009120
|
|
sub_02009120: ; 0x02009120
|
|
cmp r0, #0
|
|
bne _02009150
|
|
ldr r2, _02009184 ; =0x022A37CC
|
|
mov r3, #1
|
|
str r3, [r2, r0, lsl #4]
|
|
ldr r1, _02009188 ; =0x022A37D0
|
|
mov r3, #0
|
|
str r3, [r1, r0, lsl #4]
|
|
ldr r2, _0200918C ; =0x022A37D4
|
|
mov r3, #2
|
|
ldr r1, _02009190 ; =0x022A37D8
|
|
b _02009174
|
|
_02009150:
|
|
ldr r2, _02009184 ; =0x022A37CC
|
|
mov r3, #0
|
|
str r3, [r2, r0, lsl #4]
|
|
ldr r1, _02009188 ; =0x022A37D0
|
|
mov r3, #1
|
|
str r3, [r1, r0, lsl #4]
|
|
ldr r2, _0200918C ; =0x022A37D4
|
|
ldr r1, _02009190 ; =0x022A37D8
|
|
mov r3, #2
|
|
_02009174:
|
|
str r3, [r2, r0, lsl #4]
|
|
mov r2, #3
|
|
str r2, [r1, r0, lsl #4]
|
|
bx lr
|
|
.align 2, 0
|
|
_02009184: .word 0x022A37CC
|
|
_02009188: .word 0x022A37D0
|
|
_0200918C: .word 0x022A37D4
|
|
_02009190: .word 0x022A37D8
|
|
arm_func_end sub_02009120
|
|
|
|
arm_func_start sub_02009194
|
|
sub_02009194: ; 0x02009194
|
|
ldr r2, _020091AC ; =0x022A37AC
|
|
add r1, r1, r1, lsl #2
|
|
add r1, r2, r1
|
|
mov r2, #1
|
|
strb r2, [r0, r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_020091AC: .word 0x022A37AC
|
|
arm_func_end sub_02009194
|
|
|
|
arm_func_start sub_020091B0
|
|
sub_020091B0: ; 0x020091B0
|
|
ldr r2, _020091C8 ; =0x022A37AC
|
|
add r1, r1, r1, lsl #2
|
|
add r1, r2, r1
|
|
mov r2, #0
|
|
strb r2, [r0, r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_020091C8: .word 0x022A37AC
|
|
arm_func_end sub_020091B0
|
|
|
|
arm_func_start sub_020091CC
|
|
sub_020091CC: ; 0x020091CC
|
|
ldr r1, _020091F4 ; =0x022A37AC
|
|
add r0, r0, r0, lsl #2
|
|
add r2, r1, r0
|
|
mov r1, #0
|
|
mov r0, r1
|
|
_020091E0:
|
|
strb r0, [r2, r1]
|
|
add r1, r1, #1
|
|
cmp r1, #5
|
|
blt _020091E0
|
|
bx lr
|
|
.align 2, 0
|
|
_020091F4: .word 0x022A37AC
|
|
arm_func_end sub_020091CC
|
|
|
|
arm_func_start sub_020091F8
|
|
sub_020091F8: ; 0x020091F8
|
|
stmdb sp!, {r3, lr}
|
|
mov ip, #0x1b
|
|
mul lr, r3, ip
|
|
ldr ip, _02009220 ; =0x022A37EC
|
|
ldr r3, _02009224 ; =0x022A37ED
|
|
strb r0, [ip, lr]
|
|
ldr r0, _02009228 ; =0x022A37EE
|
|
strb r1, [r3, lr]
|
|
strb r2, [r0, lr]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02009220: .word 0x022A37EC
|
|
_02009224: .word 0x022A37ED
|
|
_02009228: .word 0x022A37EE
|
|
arm_func_end sub_020091F8
|
|
|
|
arm_func_start sub_0200922C
|
|
sub_0200922C: ; 0x0200922C
|
|
stmdb sp!, {r4, lr}
|
|
ldrb r4, [sp, #0x10]
|
|
mov ip, #0x1b
|
|
ldr lr, _02009278 ; =0x022A37F3
|
|
smulbb r4, r4, ip
|
|
ldr ip, _0200927C ; =0x022A37F4
|
|
strb r0, [lr, r4]
|
|
ldr lr, _02009280 ; =0x022A37F5
|
|
strb r1, [ip, r4]
|
|
ldrb ip, [sp, #8]
|
|
ldr r0, _02009284 ; =0x022A37F6
|
|
strb r2, [lr, r4]
|
|
ldrb r1, [sp, #0xc]
|
|
ldr r2, _02009288 ; =0x022A37F7
|
|
strb r3, [r0, r4]
|
|
ldr r0, _0200928C ; =0x022A37EF
|
|
strb ip, [r2, r4]
|
|
strb r1, [r0, r4]
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02009278: .word 0x022A37F3
|
|
_0200927C: .word 0x022A37F4
|
|
_02009280: .word 0x022A37F5
|
|
_02009284: .word 0x022A37F6
|
|
_02009288: .word 0x022A37F7
|
|
_0200928C: .word 0x022A37EF
|
|
arm_func_end sub_0200922C
|
|
|
|
arm_func_start sub_02009290
|
|
sub_02009290: ; 0x02009290
|
|
stmdb sp!, {r4, lr}
|
|
ldrb r4, [sp, #0x10]
|
|
mov ip, #0x1b
|
|
ldr lr, _020092DC ; =0x022A37F8
|
|
smulbb r4, r4, ip
|
|
ldr ip, _020092E0 ; =0x022A37F9
|
|
strb r0, [lr, r4]
|
|
ldr lr, _020092E4 ; =0x022A37FA
|
|
strb r1, [ip, r4]
|
|
ldrb ip, [sp, #8]
|
|
ldr r0, _020092E8 ; =0x022A37FB
|
|
strb r2, [lr, r4]
|
|
ldrb r1, [sp, #0xc]
|
|
ldr r2, _020092EC ; =0x022A37FC
|
|
strb r3, [r0, r4]
|
|
ldr r0, _020092F0 ; =0x022A37F0
|
|
strb ip, [r2, r4]
|
|
strb r1, [r0, r4]
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_020092DC: .word 0x022A37F8
|
|
_020092E0: .word 0x022A37F9
|
|
_020092E4: .word 0x022A37FA
|
|
_020092E8: .word 0x022A37FB
|
|
_020092EC: .word 0x022A37FC
|
|
_020092F0: .word 0x022A37F0
|
|
arm_func_end sub_02009290
|
|
|
|
arm_func_start sub_020092F4
|
|
sub_020092F4: ; 0x020092F4
|
|
stmdb sp!, {r4, lr}
|
|
ldrb r4, [sp, #0x10]
|
|
mov ip, #0x1b
|
|
ldr lr, _02009340 ; =0x022A3802
|
|
smulbb r4, r4, ip
|
|
ldr ip, _02009344 ; =0x022A3803
|
|
strb r0, [lr, r4]
|
|
ldr lr, _02009348 ; =0x022A3804
|
|
strb r1, [ip, r4]
|
|
ldrb ip, [sp, #8]
|
|
ldr r0, _0200934C ; =0x022A3805
|
|
strb r2, [lr, r4]
|
|
ldrb r1, [sp, #0xc]
|
|
ldr r2, _02009350 ; =0x022A3806
|
|
strb r3, [r0, r4]
|
|
ldr r0, _02009354 ; =0x022A37EF
|
|
strb ip, [r2, r4]
|
|
strb r1, [r0, r4]
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02009340: .word 0x022A3802
|
|
_02009344: .word 0x022A3803
|
|
_02009348: .word 0x022A3804
|
|
_0200934C: .word 0x022A3805
|
|
_02009350: .word 0x022A3806
|
|
_02009354: .word 0x022A37EF
|
|
arm_func_end sub_020092F4
|
|
|
|
arm_func_start sub_02009358
|
|
sub_02009358: ; 0x02009358
|
|
stmdb sp!, {r4, lr}
|
|
ldrb r4, [sp, #0x10]
|
|
mov ip, #0x1b
|
|
ldr lr, _020093A4 ; =0x022A37FD
|
|
smulbb r4, r4, ip
|
|
ldr ip, _020093A8 ; =0x022A37FE
|
|
strb r0, [lr, r4]
|
|
ldr lr, _020093AC ; =0x022A37FF
|
|
strb r1, [ip, r4]
|
|
ldrb ip, [sp, #8]
|
|
ldr r0, _020093B0 ; =0x022A3800
|
|
strb r2, [lr, r4]
|
|
ldrb r1, [sp, #0xc]
|
|
ldr r2, _020093B4 ; =0x022A3801
|
|
strb r3, [r0, r4]
|
|
ldr r0, _020093B8 ; =0x022A37F1
|
|
strb ip, [r2, r4]
|
|
strb r1, [r0, r4]
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_020093A4: .word 0x022A37FD
|
|
_020093A8: .word 0x022A37FE
|
|
_020093AC: .word 0x022A37FF
|
|
_020093B0: .word 0x022A3800
|
|
_020093B4: .word 0x022A3801
|
|
_020093B8: .word 0x022A37F1
|
|
arm_func_end sub_02009358
|
|
|
|
arm_func_start sub_020093BC
|
|
sub_020093BC: ; 0x020093BC
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #0xc
|
|
mov r4, r0
|
|
mov r0, #0
|
|
mov r1, r0
|
|
mov r2, r0
|
|
mov r3, r4
|
|
bl sub_020091F8
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
mov r1, r0
|
|
mov r2, r0
|
|
mov r3, r0
|
|
stmib sp, {r0, r4}
|
|
bl sub_0200922C
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
mov r1, r0
|
|
mov r2, r0
|
|
mov r3, r0
|
|
stmib sp, {r0, r4}
|
|
bl sub_02009290
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
stmib sp, {r0, r4}
|
|
mov r1, r0
|
|
mov r2, r0
|
|
mov r3, r0
|
|
bl sub_020092F4
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
mov r1, r0
|
|
mov r2, r0
|
|
mov r3, r0
|
|
stmib sp, {r0, r4}
|
|
bl sub_02009358
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r3, r4, pc}
|
|
arm_func_end sub_020093BC
|
|
|
|
arm_func_start sub_02009454
|
|
sub_02009454: ; 0x02009454
|
|
ldr ip, _02009468 ; =0x022A37B6
|
|
mov r3, #0xa
|
|
mla r3, r2, r3, ip
|
|
strb r1, [r0, r3]
|
|
bx lr
|
|
.align 2, 0
|
|
_02009468: .word 0x022A37B6
|
|
arm_func_end sub_02009454
|
|
|
|
arm_func_start sub_0200946C
|
|
sub_0200946C: ; 0x0200946C
|
|
ldr r3, _02009494 ; =0x022A37B6
|
|
mov r2, #0xa
|
|
mla r3, r1, r2, r3
|
|
mov r2, #0
|
|
_0200947C:
|
|
ldrb r1, [r0, r2]
|
|
strb r1, [r3, r2]
|
|
add r2, r2, #1
|
|
cmp r2, #5
|
|
blt _0200947C
|
|
bx lr
|
|
.align 2, 0
|
|
_02009494: .word 0x022A37B6
|
|
arm_func_end sub_0200946C
|
|
|
|
arm_func_start sub_02009498
|
|
sub_02009498: ; 0x02009498
|
|
ldr r3, _020094C0 ; =0x022A37B6
|
|
mov r2, #0xa
|
|
mla r3, r1, r2, r3
|
|
mov r2, #0
|
|
_020094A8:
|
|
ldrb r1, [r3, r2]
|
|
strb r1, [r0, r2]
|
|
add r2, r2, #1
|
|
cmp r2, #5
|
|
blt _020094A8
|
|
bx lr
|
|
.align 2, 0
|
|
_020094C0: .word 0x022A37B6
|
|
arm_func_end sub_02009498
|
|
|
|
arm_func_start sub_020094C4
|
|
sub_020094C4: ; 0x020094C4
|
|
mov r3, #0xa
|
|
mul ip, r2, r3
|
|
ldr r3, _020094E0 ; =0x022A37BC
|
|
ldr r2, _020094E4 ; =0x022A37BE
|
|
strh r0, [r3, ip]
|
|
strh r1, [r2, ip]
|
|
bx lr
|
|
.align 2, 0
|
|
_020094E0: .word 0x022A37BC
|
|
_020094E4: .word 0x022A37BE
|
|
arm_func_end sub_020094C4
|
|
|
|
arm_func_start sub_020094E8
|
|
sub_020094E8: ; 0x020094E8
|
|
mov r3, #0xa
|
|
mul ip, r2, r3
|
|
ldr r3, _0200950C ; =0x022A37BC
|
|
ldr r2, _02009510 ; =0x022A37BE
|
|
ldrsh r3, [r3, ip]
|
|
strh r3, [r0]
|
|
ldrsh r0, [r2, ip]
|
|
strh r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_0200950C: .word 0x022A37BC
|
|
_02009510: .word 0x022A37BE
|
|
arm_func_end sub_020094E8
|
|
|
|
arm_func_start sub_02009514
|
|
sub_02009514: ; 0x02009514
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
mov r0, #0x40
|
|
mov r1, r0
|
|
mov r2, r4
|
|
bl sub_020094C4
|
|
mov r0, #0xa
|
|
mul r3, r4, r0
|
|
cmp r4, #0
|
|
bne _02009568
|
|
ldr r0, _02009598 ; =0x022A37B6
|
|
mov r2, #1
|
|
strb r2, [r0, r3]
|
|
ldr r1, _0200959C ; =0x022A37B7
|
|
mov r2, #2
|
|
strb r2, [r1, r3]
|
|
ldr r0, _020095A0 ; =0x022A37B8
|
|
ldr r1, _020095A4 ; =0x022A37B9
|
|
strb r2, [r0, r3]
|
|
ldr r0, _020095A8 ; =0x022A37BA
|
|
b _0200958C
|
|
_02009568:
|
|
ldr r0, _02009598 ; =0x022A37B6
|
|
mov r2, #2
|
|
strb r2, [r0, r3]
|
|
ldr r1, _0200959C ; =0x022A37B7
|
|
ldr r0, _020095A0 ; =0x022A37B8
|
|
strb r2, [r1, r3]
|
|
strb r2, [r0, r3]
|
|
ldr r1, _020095A4 ; =0x022A37B9
|
|
ldr r0, _020095A8 ; =0x022A37BA
|
|
_0200958C:
|
|
strb r2, [r1, r3]
|
|
strb r2, [r0, r3]
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02009598: .word 0x022A37B6
|
|
_0200959C: .word 0x022A37B7
|
|
_020095A0: .word 0x022A37B8
|
|
_020095A4: .word 0x022A37B9
|
|
_020095A8: .word 0x022A37BA
|
|
arm_func_end sub_02009514
|
|
|
|
arm_func_start sub_020095AC
|
|
sub_020095AC: ; 0x020095AC
|
|
ldr r2, _020095C4 ; =0x04001008
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #3
|
|
orr r0, r1, r0
|
|
strh r0, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_020095C4: .word 0x04001008
|
|
arm_func_end sub_020095AC
|
|
|
|
arm_func_start sub_020095C8
|
|
sub_020095C8: ; 0x020095C8
|
|
ldr r2, _020095E0 ; =0x0400100A
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #3
|
|
orr r0, r1, r0
|
|
strh r0, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_020095E0: .word 0x0400100A
|
|
arm_func_end sub_020095C8
|
|
|
|
arm_func_start sub_020095E4
|
|
sub_020095E4: ; 0x020095E4
|
|
ldr r2, _020095FC ; =0x0400100C
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #3
|
|
orr r0, r1, r0
|
|
strh r0, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_020095FC: .word 0x0400100C
|
|
arm_func_end sub_020095E4
|
|
|
|
arm_func_start sub_02009600
|
|
sub_02009600: ; 0x02009600
|
|
ldr r2, _02009618 ; =0x0400100E
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #3
|
|
orr r0, r1, r0
|
|
strh r0, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_02009618: .word 0x0400100E
|
|
arm_func_end sub_02009600
|
|
|
|
arm_func_start sub_0200961C
|
|
sub_0200961C: ; 0x0200961C
|
|
stmdb sp!, {r3, lr}
|
|
bl sub_0207729C
|
|
bl sub_020772B0
|
|
bl sub_020772C4
|
|
bl sub_020772E8
|
|
bl sub_0207730C
|
|
bl sub_02077320
|
|
bl sub_02077370
|
|
bl sub_02077384
|
|
bl sub_02077398
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_0200961C
|
|
|
|
arm_func_start sub_02009648
|
|
sub_02009648: ; 0x02009648
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #0xc
|
|
mov r0, #1
|
|
bl sub_02076464
|
|
mov r0, #2
|
|
bl sub_020766F4
|
|
mov r0, #0x10
|
|
bl sub_02076844
|
|
mov r0, #0x40
|
|
bl sub_02076944
|
|
mov r0, #8
|
|
bl sub_020769F0
|
|
mov r0, #0x20
|
|
bl sub_02076BC8
|
|
mov r0, #1
|
|
mov r1, #0
|
|
mov r2, r0
|
|
bl sub_020762A0
|
|
mov r2, #0x4000000
|
|
ldr r1, [r2]
|
|
ldr r0, _02009B78 ; =0x00005C10
|
|
bic r1, r1, #0x1f00
|
|
orr r1, r1, #0x1f00
|
|
str r1, [r2]
|
|
add r3, r0, #0x208
|
|
ldr r1, [r2]
|
|
mov r0, #0x1c
|
|
bic r1, r1, #0x38000000
|
|
str r1, [r2]
|
|
ldr r4, [r2]
|
|
mov r1, #0
|
|
bic r4, r4, #0x7000000
|
|
str r4, [r2]
|
|
ldrh r4, [r2, #0xa]
|
|
and r4, r4, #0x43
|
|
orr r4, r4, #0x1b80
|
|
strh r4, [r2, #0xa]
|
|
ldrh r4, [r2, #0xc]
|
|
and r4, r4, #0x43
|
|
orr r4, r4, #0xc10
|
|
orr r4, r4, #0x5000
|
|
strh r4, [r2, #0xc]
|
|
ldrh r4, [r2, #0xe]
|
|
and r4, r4, #0x43
|
|
orr r3, r4, r3
|
|
strh r3, [r2, #0xe]
|
|
ldr r3, [r2]
|
|
bic r3, r3, #0xe000
|
|
str r3, [r2]
|
|
ldr r3, [r2]
|
|
bic r3, r3, #0x800000
|
|
str r3, [r2]
|
|
bl sub_02009B98
|
|
mov r0, #0x1c
|
|
mov r1, #0
|
|
bl sub_02009BC0
|
|
mov r0, #0
|
|
mov r1, r0
|
|
bl sub_02009BE8
|
|
mov r0, #0xc
|
|
mov r1, #0
|
|
bl sub_02009C10
|
|
mov r3, #8
|
|
str r3, [sp]
|
|
ldr r0, _02009B7C ; =0x04000050
|
|
mov r1, #1
|
|
mov r2, #0x3e
|
|
bl sub_020776E8
|
|
ldr ip, _02009B80 ; =0x04000040
|
|
mov lr, #0
|
|
strh lr, [ip]
|
|
strh lr, [ip, #4]
|
|
strh lr, [ip, #2]
|
|
strh lr, [ip, #6]
|
|
sub r4, ip, #0x36
|
|
ldrh r0, [r4]
|
|
sub r3, ip, #0x38
|
|
sub r2, ip, #0x34
|
|
bic r0, r0, #3
|
|
strh r0, [r4]
|
|
ldrh r0, [r3]
|
|
sub r1, ip, #0x32
|
|
mov r6, #0x4000000
|
|
bic r0, r0, #3
|
|
orr r0, r0, #1
|
|
strh r0, [r3]
|
|
ldrh r7, [r2]
|
|
ldr r5, _02009B84 ; =0xFFCFFFEF
|
|
mov r0, #4
|
|
bic r7, r7, #3
|
|
orr r7, r7, #2
|
|
strh r7, [r2]
|
|
ldrh r7, [r1]
|
|
bic r7, r7, #3
|
|
orr r7, r7, #3
|
|
strh r7, [r1]
|
|
str lr, [ip, #-0x2c]
|
|
str lr, [ip, #-0x28]
|
|
str lr, [ip, #-0x24]
|
|
ldrh r7, [r3]
|
|
bic r7, r7, #0x40
|
|
strh r7, [r3]
|
|
ldrh r3, [r4]
|
|
bic r3, r3, #0x40
|
|
strh r3, [r4]
|
|
ldrh r3, [r2]
|
|
bic r3, r3, #0x40
|
|
strh r3, [r2]
|
|
ldrh r2, [r1]
|
|
bic r2, r2, #0x40
|
|
strh r2, [r1]
|
|
ldr r1, [r6]
|
|
and r1, r1, r5
|
|
orr r1, r1, #0x10
|
|
orr r1, r1, #0x200000
|
|
str r1, [r6]
|
|
bl sub_02076EB0
|
|
mov r0, #0x100
|
|
bl sub_02076F58
|
|
mov r0, #0x80
|
|
bl sub_02076FC8
|
|
mov r0, #0
|
|
bl sub_02076308
|
|
ldr r2, _02009B88 ; =0x04001000
|
|
ldr r0, [r2]
|
|
bic r0, r0, #0x1f00
|
|
orr r0, r0, #0x1f00
|
|
str r0, [r2]
|
|
ldrh r0, [r2, #8]
|
|
and r0, r0, #0x43
|
|
orr r0, r0, #0x1a80
|
|
strh r0, [r2, #8]
|
|
ldrh r3, [r2, #0xa]
|
|
ldr r1, _02009B78 ; =0x00005C10
|
|
mov r0, #0x1e
|
|
and r3, r3, #0x43
|
|
orr r3, r3, #0x38c
|
|
orr r3, r3, #0x1800
|
|
strh r3, [r2, #0xa]
|
|
ldrh r4, [r2, #0xc]
|
|
add r3, r1, #0x208
|
|
mov r1, #1
|
|
and r4, r4, #0x43
|
|
orr r4, r4, #0xc10
|
|
orr r4, r4, #0x5000
|
|
strh r4, [r2, #0xc]
|
|
ldrh r4, [r2, #0xe]
|
|
and r4, r4, #0x43
|
|
orr r3, r4, r3
|
|
strh r3, [r2, #0xe]
|
|
ldr r3, [r2]
|
|
bic r3, r3, #0xe000
|
|
str r3, [r2]
|
|
ldr r3, [r2]
|
|
orr r3, r3, #0x800000
|
|
str r3, [r2]
|
|
bl sub_02009CA8
|
|
mov r0, #0x1e
|
|
mov r1, #1
|
|
bl sub_02009CD0
|
|
mov r0, #0
|
|
mov r1, r0
|
|
bl sub_02009CF8
|
|
mov r0, #0x1e
|
|
mov r1, #1
|
|
bl sub_02009D20
|
|
ldr ip, _02009B8C ; =0x04001050
|
|
mov r1, #0
|
|
strh r1, [ip]
|
|
strh r1, [ip, #-0x10]
|
|
strh r1, [ip, #-0xc]
|
|
strh r1, [ip, #-0xe]
|
|
strh r1, [ip, #-0xa]
|
|
sub r3, ip, #0x48
|
|
ldrh r4, [r3]
|
|
sub r0, ip, #0x46
|
|
sub r2, ip, #0x44
|
|
bic r4, r4, #3
|
|
strh r4, [r3]
|
|
ldrh r5, [r0]
|
|
sub r4, ip, #0x42
|
|
bic r5, r5, #3
|
|
orr r5, r5, #1
|
|
strh r5, [r0]
|
|
ldrh r5, [r2]
|
|
bic r5, r5, #3
|
|
orr r5, r5, #2
|
|
strh r5, [r2]
|
|
ldrh r5, [r4]
|
|
bic r5, r5, #3
|
|
orr r5, r5, #3
|
|
strh r5, [r4]
|
|
str r1, [ip, #-0x40]
|
|
str r1, [ip, #-0x3c]
|
|
str r1, [ip, #-0x38]
|
|
str r1, [ip, #-0x34]
|
|
ldrh r5, [r3]
|
|
ldr r6, _02009B90 ; =0xFFFFCFFD
|
|
ldr lr, _02009B94 ; =0x04000304
|
|
bic r5, r5, #0x40
|
|
strh r5, [r3]
|
|
ldrh r3, [r0]
|
|
sub r7, ip, #0x50
|
|
ldr r5, _02009B84 ; =0xFFCFFFEF
|
|
bic r3, r3, #0x40
|
|
strh r3, [r0]
|
|
ldrh r3, [r2]
|
|
sub ip, lr, #0x2a4
|
|
mov r0, r6, lsr #0x16
|
|
bic r3, r3, #0x40
|
|
strh r3, [r2]
|
|
ldrh r8, [r4]
|
|
mov r2, r6, lsr #0x11
|
|
mov r3, #0x3f
|
|
bic r8, r8, #0x40
|
|
strh r8, [r4]
|
|
ldr r4, [r7]
|
|
and r4, r4, r5
|
|
orr r4, r4, #0x10
|
|
orr r4, r4, #0x200000
|
|
str r4, [r7]
|
|
ldrh r4, [lr]
|
|
bic r4, r4, #0x8000
|
|
strh r4, [lr]
|
|
ldrh r4, [ip]
|
|
and r4, r4, r6
|
|
strh r4, [ip]
|
|
ldrh r4, [ip]
|
|
bic r4, r4, #0x3000
|
|
orr r4, r4, #0x10
|
|
strh r4, [ip]
|
|
ldrh r4, [ip]
|
|
bic r4, r4, #0x3000
|
|
orr r4, r4, #8
|
|
strh r4, [ip]
|
|
ldrh r4, [ip]
|
|
bic r4, r4, #0x3000
|
|
orr r4, r4, #4
|
|
strh r4, [ip]
|
|
strh r1, [lr, #0x3c]
|
|
str r1, [sp]
|
|
bl sub_02077A8C
|
|
mov r0, #0
|
|
bl sub_02009120
|
|
mov r0, #1
|
|
bl sub_02009120
|
|
mov r0, #0
|
|
bl sub_020091CC
|
|
mov r0, #1
|
|
bl sub_020091CC
|
|
mov r0, #0
|
|
bl sub_02009514
|
|
mov r0, #1
|
|
bl sub_02009514
|
|
mov r0, #0
|
|
mov r1, r0
|
|
mov r2, r0
|
|
mov r3, r0
|
|
bl sub_020091F8
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
mov r1, r0
|
|
mov r2, r0
|
|
mov r3, r0
|
|
str r0, [sp, #8]
|
|
bl sub_0200922C
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
mov r1, r0
|
|
mov r2, r0
|
|
mov r3, r0
|
|
str r0, [sp, #8]
|
|
bl sub_02009290
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
mov r1, r0
|
|
str r0, [sp, #8]
|
|
mov r2, r0
|
|
mov r3, r0
|
|
bl sub_020092F4
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r1, r0
|
|
mov r2, r0
|
|
mov r3, r0
|
|
bl sub_02009358
|
|
mov r0, #0
|
|
mov r1, r0
|
|
mov r2, r0
|
|
mov r3, #1
|
|
bl sub_020091F8
|
|
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
|
|
bl sub_0200922C
|
|
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
|
|
bl sub_02009290
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
mov r1, r0
|
|
mov r2, r0
|
|
mov r3, r0
|
|
str r0, [sp, #4]
|
|
mov r4, #1
|
|
str r4, [sp, #8]
|
|
bl sub_020092F4
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
mov r1, r0
|
|
mov r2, r0
|
|
mov r3, r0
|
|
stmib sp, {r0, r4}
|
|
bl sub_02009358
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_02009B78: .word 0x00005C10
|
|
_02009B7C: .word 0x04000050
|
|
_02009B80: .word 0x04000040
|
|
_02009B84: .word 0xFFCFFFEF
|
|
_02009B88: .word 0x04001000
|
|
_02009B8C: .word 0x04001050
|
|
_02009B90: .word 0xFFFFCFFD
|
|
_02009B94: .word 0x04000304
|
|
arm_func_end sub_02009648
|
|
|
|
arm_func_start sub_02009B98
|
|
sub_02009B98: ; 0x02009B98
|
|
ldr r2, _02009BBC ; =0x04000048
|
|
cmp r1, #0
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #0x3f
|
|
orr r1, r1, r0
|
|
ldr r0, _02009BBC ; =0x04000048
|
|
orrne r1, r1, #0x20
|
|
strh r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_02009BBC: .word 0x04000048
|
|
arm_func_end sub_02009B98
|
|
|
|
arm_func_start sub_02009BC0
|
|
sub_02009BC0: ; 0x02009BC0
|
|
ldr r2, _02009BE4 ; =0x04000048
|
|
cmp r1, #0
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #0x3f00
|
|
orr r1, r1, r0, lsl #8
|
|
ldr r0, _02009BE4 ; =0x04000048
|
|
orrne r1, r1, #0x2000
|
|
strh r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_02009BE4: .word 0x04000048
|
|
arm_func_end sub_02009BC0
|
|
|
|
arm_func_start sub_02009BE8
|
|
sub_02009BE8: ; 0x02009BE8
|
|
ldr r2, _02009C0C ; =0x0400004A
|
|
cmp r1, #0
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #0x3f00
|
|
orr r1, r1, r0, lsl #8
|
|
ldr r0, _02009C0C ; =0x0400004A
|
|
orrne r1, r1, #0x2000
|
|
strh r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_02009C0C: .word 0x0400004A
|
|
arm_func_end sub_02009BE8
|
|
|
|
arm_func_start sub_02009C10
|
|
sub_02009C10: ; 0x02009C10
|
|
ldr r2, _02009C34 ; =0x0400004A
|
|
cmp r1, #0
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #0x3f
|
|
orr r1, r1, r0
|
|
ldr r0, _02009C34 ; =0x0400004A
|
|
orrne r1, r1, #0x20
|
|
strh r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_02009C34: .word 0x0400004A
|
|
arm_func_end sub_02009C10
|
|
|
|
arm_func_start sub_02009C38
|
|
sub_02009C38: ; 0x02009C38
|
|
ldr r2, _02009C50 ; =0x0400000A
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #3
|
|
orr r0, r1, r0
|
|
strh r0, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_02009C50: .word 0x0400000A
|
|
arm_func_end sub_02009C38
|
|
|
|
arm_func_start sub_02009C54
|
|
sub_02009C54: ; 0x02009C54
|
|
ldr r2, _02009C6C ; =0x04000008
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #3
|
|
orr r0, r1, r0
|
|
strh r0, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_02009C6C: .word 0x04000008
|
|
arm_func_end sub_02009C54
|
|
|
|
arm_func_start sub_02009C70
|
|
sub_02009C70: ; 0x02009C70
|
|
ldr r2, _02009C88 ; =0x0400000C
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #3
|
|
orr r0, r1, r0
|
|
strh r0, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_02009C88: .word 0x0400000C
|
|
arm_func_end sub_02009C70
|
|
|
|
arm_func_start sub_02009C8C
|
|
sub_02009C8C: ; 0x02009C8C
|
|
ldr r2, _02009CA4 ; =0x0400000E
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #3
|
|
orr r0, r1, r0
|
|
strh r0, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_02009CA4: .word 0x0400000E
|
|
arm_func_end sub_02009C8C
|
|
|
|
arm_func_start sub_02009CA8
|
|
sub_02009CA8: ; 0x02009CA8
|
|
ldr r2, _02009CCC ; =0x04001048
|
|
cmp r1, #0
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #0x3f
|
|
orr r1, r1, r0
|
|
ldr r0, _02009CCC ; =0x04001048
|
|
orrne r1, r1, #0x20
|
|
strh r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_02009CCC: .word 0x04001048
|
|
arm_func_end sub_02009CA8
|
|
|
|
arm_func_start sub_02009CD0
|
|
sub_02009CD0: ; 0x02009CD0
|
|
ldr r2, _02009CF4 ; =0x04001048
|
|
cmp r1, #0
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #0x3f00
|
|
orr r1, r1, r0, lsl #8
|
|
ldr r0, _02009CF4 ; =0x04001048
|
|
orrne r1, r1, #0x2000
|
|
strh r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_02009CF4: .word 0x04001048
|
|
arm_func_end sub_02009CD0
|
|
|
|
arm_func_start sub_02009CF8
|
|
sub_02009CF8: ; 0x02009CF8
|
|
ldr r2, _02009D1C ; =0x0400104A
|
|
cmp r1, #0
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #0x3f00
|
|
orr r1, r1, r0, lsl #8
|
|
ldr r0, _02009D1C ; =0x0400104A
|
|
orrne r1, r1, #0x2000
|
|
strh r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_02009D1C: .word 0x0400104A
|
|
arm_func_end sub_02009CF8
|
|
|
|
arm_func_start sub_02009D20
|
|
sub_02009D20: ; 0x02009D20
|
|
ldr r2, _02009D44 ; =0x0400104A
|
|
cmp r1, #0
|
|
ldrh r1, [r2]
|
|
bic r1, r1, #0x3f
|
|
orr r1, r1, r0
|
|
ldr r0, _02009D44 ; =0x0400104A
|
|
orrne r1, r1, #0x20
|
|
strh r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_02009D44: .word 0x0400104A
|
|
arm_func_end sub_02009D20
|
|
|
|
arm_func_start sub_02009D48
|
|
sub_02009D48: ; 0x02009D48
|
|
stmdb sp!, {r4, lr}
|
|
movs r4, r0
|
|
bne _02009D88
|
|
ldr r0, _02009DBC ; =0x022A37CC
|
|
ldr r0, [r0, r4, lsl #4]
|
|
bl sub_02009C54
|
|
ldr r0, _02009DC0 ; =0x022A37D0
|
|
ldr r0, [r0, r4, lsl #4]
|
|
bl sub_02009C38
|
|
ldr r0, _02009DC4 ; =0x022A37D4
|
|
ldr r0, [r0, r4, lsl #4]
|
|
bl sub_02009C70
|
|
ldr r0, _02009DC8 ; =0x022A37D8
|
|
ldr r0, [r0, r4, lsl #4]
|
|
bl sub_02009C8C
|
|
ldmia sp!, {r4, pc}
|
|
_02009D88:
|
|
ldr r0, _02009DBC ; =0x022A37CC
|
|
ldr r0, [r0, r4, lsl #4]
|
|
bl sub_020095AC
|
|
ldr r0, _02009DC0 ; =0x022A37D0
|
|
ldr r0, [r0, r4, lsl #4]
|
|
bl sub_020095C8
|
|
ldr r0, _02009DC4 ; =0x022A37D4
|
|
ldr r0, [r0, r4, lsl #4]
|
|
bl sub_020095E4
|
|
ldr r0, _02009DC8 ; =0x022A37D8
|
|
ldr r0, [r0, r4, lsl #4]
|
|
bl sub_02009600
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02009DBC: .word 0x022A37CC
|
|
_02009DC0: .word 0x022A37D0
|
|
_02009DC4: .word 0x022A37D4
|
|
_02009DC8: .word 0x022A37D8
|
|
arm_func_end sub_02009D48
|
|
|
|
arm_func_start sub_02009DCC
|
|
sub_02009DCC: ; 0x02009DCC
|
|
ldr r1, _02009E58 ; =0x022A37AC
|
|
add r3, r0, r0, lsl #2
|
|
ldrb r2, [r1, r3]
|
|
mov r1, #0x1f
|
|
cmp r2, #0
|
|
ldr r2, _02009E5C ; =0x022A37AD
|
|
bicne r1, r1, #1
|
|
ldrb r2, [r2, r3]
|
|
cmp r2, #0
|
|
ldr r2, _02009E60 ; =0x022A37AE
|
|
bicne r1, r1, #2
|
|
ldrb r2, [r2, r3]
|
|
cmp r2, #0
|
|
ldr r2, _02009E64 ; =0x022A37AF
|
|
bicne r1, r1, #4
|
|
ldrb r2, [r2, r3]
|
|
cmp r2, #0
|
|
ldr r2, _02009E68 ; =0x022A37B0
|
|
bicne r1, r1, #8
|
|
ldrb r2, [r2, r3]
|
|
cmp r2, #0
|
|
bicne r1, r1, #0x10
|
|
cmp r0, #0
|
|
ldrne r2, _02009E6C ; =0x04001000
|
|
ldrne r0, [r2]
|
|
bicne r0, r0, #0x1f00
|
|
orrne r0, r0, r1, lsl #8
|
|
strne r0, [r2]
|
|
bxne lr
|
|
mov r2, #0x4000000
|
|
ldr r0, [r2]
|
|
bic r0, r0, #0x1f00
|
|
orr r0, r0, r1, lsl #8
|
|
str r0, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_02009E58: .word 0x022A37AC
|
|
_02009E5C: .word 0x022A37AD
|
|
_02009E60: .word 0x022A37AE
|
|
_02009E64: .word 0x022A37AF
|
|
_02009E68: .word 0x022A37B0
|
|
_02009E6C: .word 0x04001000
|
|
arm_func_end sub_02009DCC
|
|
|
|
arm_func_start sub_02009E70
|
|
sub_02009E70: ; 0x02009E70
|
|
stmdb sp!, {r3, lr}
|
|
mov r1, #0xa
|
|
mul r3, r0, r1
|
|
ldr r2, _02009F78 ; =0x022A37B6
|
|
mov r1, #0
|
|
ldrb ip, [r2, r3]
|
|
mov r2, #0x20
|
|
cmp ip, #1
|
|
orreq r1, r1, #1
|
|
beq _02009EA0
|
|
cmp ip, #2
|
|
orreq r2, r2, #1
|
|
_02009EA0:
|
|
ldr ip, _02009F7C ; =0x022A37B7
|
|
ldrb ip, [ip, r3]
|
|
cmp ip, #1
|
|
orreq r1, r1, #2
|
|
beq _02009EBC
|
|
cmp ip, #2
|
|
orreq r2, r2, #2
|
|
_02009EBC:
|
|
ldr ip, _02009F80 ; =0x022A37B8
|
|
ldrb ip, [ip, r3]
|
|
cmp ip, #1
|
|
orreq r1, r1, #4
|
|
beq _02009ED8
|
|
cmp ip, #2
|
|
orreq r2, r2, #4
|
|
_02009ED8:
|
|
ldr ip, _02009F84 ; =0x022A37B9
|
|
ldrb ip, [ip, r3]
|
|
cmp ip, #1
|
|
orreq r1, r1, #8
|
|
beq _02009EF4
|
|
cmp ip, #2
|
|
orreq r2, r2, #8
|
|
_02009EF4:
|
|
ldr ip, _02009F88 ; =0x022A37BA
|
|
ldrb ip, [ip, r3]
|
|
cmp ip, #1
|
|
orreq r1, r1, #0x10
|
|
beq _02009F10
|
|
cmp ip, #2
|
|
orreq r2, r2, #0x10
|
|
_02009F10:
|
|
cmp r0, #0
|
|
bne _02009F48
|
|
ldr r0, _02009F8C ; =0x022A37BE
|
|
ldr ip, _02009F90 ; =0x022A37BC
|
|
ldrh lr, [r0, r3]
|
|
ldr r0, _02009F94 ; =0x04000050
|
|
and lr, lr, #0xf8
|
|
mov lr, lr, asr #3
|
|
str lr, [sp]
|
|
ldrh r3, [ip, r3]
|
|
and r3, r3, #0xf8
|
|
mov r3, r3, asr #3
|
|
bl sub_020776E8
|
|
ldmia sp!, {r3, pc}
|
|
_02009F48:
|
|
ldr r0, _02009F8C ; =0x022A37BE
|
|
ldr ip, _02009F90 ; =0x022A37BC
|
|
ldrh lr, [r0, r3]
|
|
ldr r0, _02009F98 ; =0x04001050
|
|
and lr, lr, #0xf8
|
|
mov lr, lr, asr #3
|
|
str lr, [sp]
|
|
ldrh r3, [ip, r3]
|
|
and r3, r3, #0xf8
|
|
mov r3, r3, asr #3
|
|
bl sub_020776E8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02009F78: .word 0x022A37B6
|
|
_02009F7C: .word 0x022A37B7
|
|
_02009F80: .word 0x022A37B8
|
|
_02009F84: .word 0x022A37B9
|
|
_02009F88: .word 0x022A37BA
|
|
_02009F8C: .word 0x022A37BE
|
|
_02009F90: .word 0x022A37BC
|
|
_02009F94: .word 0x04000050
|
|
_02009F98: .word 0x04001050
|
|
arm_func_end sub_02009E70
|
|
|
|
arm_func_start sub_02009F9C
|
|
sub_02009F9C: ; 0x02009F9C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r1, #0x1b
|
|
mul r4, r0, r1
|
|
ldr r3, _0200A100 ; =0x022A37EC
|
|
mov r2, #0
|
|
ldrb r1, [r3, r4]
|
|
add lr, r3, r4
|
|
mov r3, #0
|
|
cmp r1, #0
|
|
ldr r1, _0200A104 ; =0x022A37ED
|
|
orrne r2, r2, #1
|
|
ldrb r1, [r1, r4]
|
|
mov r5, r3
|
|
mov r6, r3
|
|
cmp r1, #0
|
|
ldr r1, _0200A108 ; =0x022A37EE
|
|
orrne r2, r2, #2
|
|
ldrb r1, [r1, r4]
|
|
mov ip, r3
|
|
cmp r1, #0
|
|
ldr r1, _0200A10C ; =0x02092A04
|
|
orrne r2, r2, #4
|
|
_02009FF4:
|
|
add r7, lr, ip
|
|
ldrb r8, [r7, #7]
|
|
cmp r8, #0
|
|
ldrne r8, [r1, ip, lsl #2]
|
|
orrne r3, r3, r8
|
|
ldrb r8, [r7, #0xc]
|
|
cmp r8, #0
|
|
ldrne r8, [r1, ip, lsl #2]
|
|
orrne r3, r3, r8
|
|
ldrb r8, [r7, #0x16]
|
|
ldrb r7, [r7, #0x11]
|
|
cmp r8, #0
|
|
ldrne r8, [r1, ip, lsl #2]
|
|
orrne r6, r6, r8
|
|
cmp r7, #0
|
|
ldrne r7, [r1, ip, lsl #2]
|
|
orrne r5, r5, r7
|
|
add r7, ip, #1
|
|
and ip, r7, #0xff
|
|
cmp ip, #5
|
|
blo _02009FF4
|
|
cmp r0, #0
|
|
bne _0200A0A8
|
|
mov r7, #0x4000000
|
|
ldr r1, [r7]
|
|
ldr r0, _0200A110 ; =0x022A37EF
|
|
bic r1, r1, #0xe000
|
|
orr r1, r1, r2, lsl #13
|
|
str r1, [r7]
|
|
ldrb r1, [r0, r4]
|
|
mov r0, r3
|
|
bl sub_02009B98
|
|
ldr r1, _0200A114 ; =0x022A37F0
|
|
mov r0, #0
|
|
ldrb r1, [r1, r4]
|
|
bl sub_02009BC0
|
|
ldr r1, _0200A118 ; =0x022A37F1
|
|
mov r0, r5
|
|
ldrb r1, [r1, r4]
|
|
bl sub_02009BE8
|
|
ldr r1, _0200A11C ; =0x022A37F2
|
|
mov r0, r6
|
|
ldrb r1, [r1, r4]
|
|
bl sub_02009C10
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
_0200A0A8:
|
|
ldr ip, _0200A120 ; =0x04001000
|
|
ldr r1, _0200A110 ; =0x022A37EF
|
|
ldr r7, [ip]
|
|
mov r0, r3
|
|
bic r3, r7, #0xe000
|
|
orr r2, r3, r2, lsl #13
|
|
str r2, [ip]
|
|
ldrb r1, [r1, r4]
|
|
bl sub_02009CA8
|
|
ldr r1, _0200A114 ; =0x022A37F0
|
|
mov r0, #0
|
|
ldrb r1, [r1, r4]
|
|
bl sub_02009CD0
|
|
ldr r1, _0200A118 ; =0x022A37F1
|
|
mov r0, r5
|
|
ldrb r1, [r1, r4]
|
|
bl sub_02009CF8
|
|
ldr r1, _0200A11C ; =0x022A37F2
|
|
mov r0, r6
|
|
ldrb r1, [r1, r4]
|
|
bl sub_02009D20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_0200A100: .word 0x022A37EC
|
|
_0200A104: .word 0x022A37ED
|
|
_0200A108: .word 0x022A37EE
|
|
_0200A10C: .word 0x02092A04
|
|
_0200A110: .word 0x022A37EF
|
|
_0200A114: .word 0x022A37F0
|
|
_0200A118: .word 0x022A37F1
|
|
_0200A11C: .word 0x022A37F2
|
|
_0200A120: .word 0x04001000
|
|
arm_func_end sub_02009F9C
|
|
|
|
arm_func_start sub_0200A124
|
|
sub_0200A124: ; 0x0200A124
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
stmia r4, {r1, r2}
|
|
mov r0, #0
|
|
strb r0, [r4, #8]
|
|
ldr r1, [sp, #8]
|
|
str r3, [r4, #0xc]
|
|
mov r0, r2, lsl #1
|
|
bl MemAlloc
|
|
str r0, [r4, #0x10]
|
|
mov r0, r4
|
|
bl sub_0200A274
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_0200A124
|
|
|
|
arm_func_start sub_0200A158
|
|
sub_0200A158: ; 0x0200A158
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
ldr r0, [r4, #0x10]
|
|
bl MemFree
|
|
mov r0, #0
|
|
str r0, [r4, #0x10]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_0200A158
|
|
|
|
arm_func_start sub_0200A174
|
|
sub_0200A174: ; 0x0200A174
|
|
mov r1, #1
|
|
strb r1, [r0, #8]
|
|
bx lr
|
|
arm_func_end sub_0200A174
|
|
|
|
arm_func_start sub_0200A180
|
|
sub_0200A180: ; 0x0200A180
|
|
bx lr
|
|
arm_func_end sub_0200A180
|
|
|
|
arm_func_start sub_0200A184
|
|
sub_0200A184: ; 0x0200A184
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
ldrb r0, [r6, #8]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
ldr r4, [r6, #0x10]
|
|
ldr r1, [r6, #4]
|
|
mov r0, r4
|
|
mov r1, r1, lsl #1
|
|
ldr r5, [r6, #0xc]
|
|
bl sub_0207A2DC
|
|
ldr r0, [r6]
|
|
cmp r0, #4
|
|
addls pc, pc, r0, lsl #2
|
|
b _0200A1D4
|
|
_0200A1C0: ; jump table
|
|
b _0200A1D4 ; case 0
|
|
b _0200A1EC ; case 1
|
|
b _0200A20C ; case 2
|
|
b _0200A22C ; case 3
|
|
b _0200A24C ; case 4
|
|
_0200A1D4:
|
|
ldr r2, [r6, #4]
|
|
mov r0, r5
|
|
mov r1, r4
|
|
mov r2, r2, lsl #1
|
|
bl Memcpy32
|
|
b _0200A268
|
|
_0200A1EC:
|
|
bl sub_020783D0
|
|
ldr r2, [r6, #4]
|
|
mov r0, r5
|
|
mov r1, r4
|
|
mov r2, r2, lsl #1
|
|
bl Memcpy32
|
|
bl sub_02078470
|
|
b _0200A268
|
|
_0200A20C:
|
|
bl sub_020784B8
|
|
ldr r2, [r6, #4]
|
|
mov r0, r5
|
|
mov r1, r4
|
|
mov r2, r2, lsl #1
|
|
bl Memcpy32
|
|
bl sub_02078500
|
|
b _0200A268
|
|
_0200A22C:
|
|
bl sub_02078544
|
|
ldr r2, [r6, #4]
|
|
mov r0, r5
|
|
mov r1, r4
|
|
mov r2, r2, lsl #1
|
|
bl Memcpy32
|
|
bl sub_0207855C
|
|
b _0200A268
|
|
_0200A24C:
|
|
bl sub_0207859C
|
|
ldr r2, [r6, #4]
|
|
mov r0, r5
|
|
mov r1, r4
|
|
mov r2, r2, lsl #1
|
|
bl Memcpy32
|
|
bl sub_020785B4
|
|
_0200A268:
|
|
mov r0, #0
|
|
strb r0, [r6, #8]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_0200A184
|
|
|
|
arm_func_start sub_0200A274
|
|
sub_0200A274: ; 0x0200A274
|
|
mov r3, #0
|
|
ldr ip, [r0, #0x10]
|
|
mov r2, r3
|
|
b _0200A28C
|
|
_0200A284:
|
|
strh r2, [ip], #2
|
|
add r3, r3, #1
|
|
_0200A28C:
|
|
ldr r1, [r0, #4]
|
|
cmp r3, r1
|
|
blt _0200A284
|
|
bx lr
|
|
arm_func_end sub_0200A274
|
|
|
|
arm_func_start sub_0200A29C
|
|
sub_0200A29C: ; 0x0200A29C
|
|
ldr r0, [r0, #0x10]
|
|
ldr ip, _0200A2B0 ; =sub_02004FCC
|
|
add r0, r0, r1, lsl #1
|
|
mov r1, r2
|
|
bx ip
|
|
.align 2, 0
|
|
_0200A2B0: .word sub_02004FCC
|
|
arm_func_end sub_0200A29C
|
|
|
|
arm_func_start sub_0200A2B4
|
|
sub_0200A2B4: ; 0x0200A2B4
|
|
ldr r3, [r0, #0x10]
|
|
ldr ip, _0200A2C8 ; =sub_02004FF8
|
|
mov r0, r1
|
|
add r1, r3, r2, lsl #1
|
|
bx ip
|
|
.align 2, 0
|
|
_0200A2C8: .word sub_02004FF8
|
|
arm_func_end sub_0200A2B4
|
|
|
|
arm_func_start sub_0200A2CC
|
|
sub_0200A2CC: ; 0x0200A2CC
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
str r1, [r0, #4]
|
|
str r1, [r0, #0x18]
|
|
str r1, [r0, #0x1c]
|
|
str r1, [r0, #0x20]
|
|
str r1, [r0, #0x24]
|
|
str r1, [r0, #0x14]
|
|
strb r1, [r0, #8]
|
|
bx lr
|
|
arm_func_end sub_0200A2CC
|
|
|
|
arm_func_start sub_0200A2F4
|
|
sub_0200A2F4: ; 0x0200A2F4
|
|
mov r1, #0
|
|
_0200A2F8:
|
|
ldr r2, [r0, #0x24]
|
|
str r1, [r0, #0x20]
|
|
str r1, [r0, #0x24]
|
|
cmp r2, #0
|
|
movne r0, r2
|
|
bne _0200A2F8
|
|
bx lr
|
|
arm_func_end sub_0200A2F4
|
|
_0200A314:
|
|
ldr r2, [r0, #0x24]
|
|
cmp r2, #0
|
|
beq _0200A330
|
|
cmp r2, r1
|
|
bxeq lr
|
|
mov r0, r2
|
|
b _0200A314
|
|
_0200A330:
|
|
str r1, [r0, #0x24]
|
|
str r0, [r1, #0x20]
|
|
mov r0, #0
|
|
str r0, [r1, #0x24]
|
|
bx lr
|
|
_0200A344:
|
|
ldr r2, [r0, #0x24]
|
|
cmp r2, #0
|
|
bxeq lr
|
|
cmp r2, r1
|
|
movne r0, r2
|
|
bne _0200A344
|
|
ldr r2, [r1, #0x24]
|
|
str r2, [r0, #0x24]
|
|
cmp r2, #0
|
|
strne r0, [r2, #0x20]
|
|
mov r0, #0
|
|
str r0, [r1, #0x20]
|
|
str r0, [r1, #0x24]
|
|
bx lr
|
|
|
|
arm_func_start sub_0200A37C
|
|
sub_0200A37C: ; 0x0200A37C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r1
|
|
ldr r4, [r0, #0x24]
|
|
b _0200A39C
|
|
_0200A38C:
|
|
mov r0, r4
|
|
mov r1, r5
|
|
bl sub_0200A618
|
|
ldr r4, [r4, #0x24]
|
|
_0200A39C:
|
|
cmp r4, #0
|
|
bne _0200A38C
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_0200A37C
|
|
|
|
arm_func_start sub_0200A3A8
|
|
sub_0200A3A8: ; 0x0200A3A8
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r1
|
|
mov r5, r2
|
|
ldr r4, [r0, #0x24]
|
|
b _0200A3D0
|
|
_0200A3BC:
|
|
mov r0, r4
|
|
mov r1, r6
|
|
mov r2, r5
|
|
bl sub_0200A64C
|
|
ldr r4, [r4, #0x24]
|
|
_0200A3D0:
|
|
cmp r4, #0
|
|
bne _0200A3BC
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_0200A3A8
|
|
|
|
arm_func_start sub_0200A3DC
|
|
sub_0200A3DC: ; 0x0200A3DC
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r1
|
|
mov r5, r2
|
|
ldr r4, [r0, #0x24]
|
|
b _0200A404
|
|
_0200A3F0:
|
|
mov r0, r4
|
|
mov r1, r6
|
|
mov r2, r5
|
|
bl sub_0200A688
|
|
ldr r4, [r4, #0x24]
|
|
_0200A404:
|
|
cmp r4, #0
|
|
bne _0200A3F0
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_0200A3DC
|
|
|
|
arm_func_start sub_0200A410
|
|
sub_0200A410: ; 0x0200A410
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r1
|
|
mov r5, r2
|
|
ldr r4, [r0, #0x24]
|
|
b _0200A438
|
|
_0200A424:
|
|
mov r0, r4
|
|
mov r1, r6
|
|
mov r2, r5
|
|
bl sub_0200A6C4
|
|
ldr r4, [r4, #0x24]
|
|
_0200A438:
|
|
cmp r4, #0
|
|
bne _0200A424
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_0200A410
|
|
|
|
arm_func_start sub_0200A444
|
|
sub_0200A444: ; 0x0200A444
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r1
|
|
mov r5, r2
|
|
ldr r4, [r0, #0x24]
|
|
b _0200A46C
|
|
_0200A458:
|
|
mov r0, r4
|
|
mov r1, r6
|
|
mov r2, r5
|
|
bl sub_0200A700
|
|
ldr r4, [r4, #0x24]
|
|
_0200A46C:
|
|
cmp r4, #0
|
|
bne _0200A458
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_0200A444
|
|
|
|
arm_func_start sub_0200A478
|
|
sub_0200A478: ; 0x0200A478
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r5, r1
|
|
str r5, [r6]
|
|
ldr r1, [sp, #0x10]
|
|
str r3, [r6, #4]
|
|
mov r0, r3, lsl #2
|
|
mov r4, r2
|
|
bl MemAlloc
|
|
str r0, [r6, #0x18]
|
|
ldr r0, [r5, #0x10]
|
|
mov r1, #0
|
|
add r0, r0, r4, lsl #1
|
|
str r0, [r6, #0x1c]
|
|
str r1, [r6, #0x20]
|
|
mov r0, r6
|
|
str r1, [r6, #0x24]
|
|
bl sub_0200A544
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_0200A478
|
|
|
|
arm_func_start sub_0200A4C4
|
|
sub_0200A4C4: ; 0x0200A4C4
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
ldr r1, [r4, #0x20]
|
|
ldr r2, [r4, #0x24]
|
|
mov r0, #0
|
|
str r0, [r4, #0x20]
|
|
str r0, [r4, #0x24]
|
|
cmp r1, #0
|
|
strne r2, [r1, #0x24]
|
|
cmp r2, #0
|
|
strne r1, [r2, #0x20]
|
|
ldr r0, [r4, #0x18]
|
|
bl MemFree
|
|
mov r0, #0
|
|
str r0, [r4, #0x18]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_0200A4C4
|
|
|
|
arm_func_start sub_0200A504
|
|
sub_0200A504: ; 0x0200A504
|
|
mov r1, #1
|
|
strb r1, [r0, #8]
|
|
bx lr
|
|
arm_func_end sub_0200A504
|
|
|
|
arm_func_start sub_0200A510
|
|
sub_0200A510: ; 0x0200A510
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
ldrb r1, [r4, #8]
|
|
cmp r1, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
ldr r1, [r4, #0x14]
|
|
blx r1
|
|
mov r0, #0
|
|
strb r0, [r4, #8]
|
|
ldr r0, [r4]
|
|
mov r1, #1
|
|
strb r1, [r0, #8]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_0200A510
|
|
|
|
arm_func_start sub_0200A544
|
|
sub_0200A544: ; 0x0200A544
|
|
mov ip, #0
|
|
ldr r3, [r0, #0x18]
|
|
mov r2, ip
|
|
b _0200A56C
|
|
_0200A554:
|
|
mov r1, r3
|
|
strb r2, [r3], #4
|
|
strb r2, [r1, #1]
|
|
strb r2, [r1, #2]
|
|
strb r2, [r1, #3]
|
|
add ip, ip, #1
|
|
_0200A56C:
|
|
ldr r1, [r0, #4]
|
|
cmp ip, r1
|
|
blt _0200A554
|
|
ldr r2, _0200A58C ; =sub_0200A73C
|
|
mov r1, #1
|
|
str r2, [r0, #0x14]
|
|
strb r1, [r0, #8]
|
|
bx lr
|
|
.align 2, 0
|
|
_0200A58C: .word sub_0200A73C
|
|
arm_func_end sub_0200A544
|
|
|
|
arm_func_start sub_0200A590
|
|
sub_0200A590: ; 0x0200A590
|
|
ldr r0, [r0, #0x18]
|
|
mov r3, #4
|
|
add r1, r0, r1, lsl #2
|
|
_0200A59C:
|
|
ldrb r0, [r2], #1
|
|
subs r3, r3, #1
|
|
strb r0, [r1], #1
|
|
bne _0200A59C
|
|
bx lr
|
|
arm_func_end sub_0200A590
|
|
|
|
arm_func_start sub_0200A5B0
|
|
sub_0200A5B0: ; 0x0200A5B0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r0, [r0, #0x18]
|
|
mov lr, #0
|
|
add ip, r0, r1, lsl #2
|
|
b _0200A5EC
|
|
_0200A5C4:
|
|
mov r4, r2
|
|
mov r5, ip
|
|
add r2, r2, #4
|
|
add ip, ip, #4
|
|
mov r1, #4
|
|
_0200A5D8:
|
|
ldrb r0, [r4], #1
|
|
subs r1, r1, #1
|
|
strb r0, [r5], #1
|
|
bne _0200A5D8
|
|
add lr, lr, #1
|
|
_0200A5EC:
|
|
cmp lr, r3
|
|
blt _0200A5C4
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_0200A5B0
|
|
|
|
arm_func_start sub_0200A5F8
|
|
sub_0200A5F8: ; 0x0200A5F8
|
|
ldr r0, [r0, #0x18]
|
|
mov r3, #4
|
|
add r2, r0, r2, lsl #2
|
|
_0200A604:
|
|
ldrb r0, [r2], #1
|
|
subs r3, r3, #1
|
|
strb r0, [r1], #1
|
|
bne _0200A604
|
|
bx lr
|
|
arm_func_end sub_0200A5F8
|
|
|
|
arm_func_start sub_0200A618
|
|
sub_0200A618: ; 0x0200A618
|
|
strh r1, [r0, #0xa]
|
|
mov r2, #0
|
|
strb r2, [r0, #0xc]
|
|
strb r2, [r0, #0xd]
|
|
strb r2, [r0, #0xe]
|
|
strb r2, [r0, #0xf]
|
|
ldr r1, _0200A648 ; =sub_0200A78C
|
|
str r2, [r0, #0x10]
|
|
str r1, [r0, #0x14]
|
|
mov r1, #1
|
|
strb r1, [r0, #8]
|
|
bx lr
|
|
.align 2, 0
|
|
_0200A648: .word sub_0200A78C
|
|
arm_func_end sub_0200A618
|
|
|
|
arm_func_start sub_0200A64C
|
|
sub_0200A64C: ; 0x0200A64C
|
|
strh r1, [r0, #0xa]
|
|
add ip, r0, #0xc
|
|
mov r3, #4
|
|
_0200A658:
|
|
ldrb r1, [r2], #1
|
|
subs r3, r3, #1
|
|
strb r1, [ip], #1
|
|
bne _0200A658
|
|
mov r2, #0
|
|
ldr r1, _0200A684 ; =sub_0200A9E4
|
|
str r2, [r0, #0x10]
|
|
str r1, [r0, #0x14]
|
|
mov r1, #1
|
|
strb r1, [r0, #8]
|
|
bx lr
|
|
.align 2, 0
|
|
_0200A684: .word sub_0200A9E4
|
|
arm_func_end sub_0200A64C
|
|
|
|
arm_func_start sub_0200A688
|
|
sub_0200A688: ; 0x0200A688
|
|
strh r1, [r0, #0xa]
|
|
add ip, r0, #0xc
|
|
mov r3, #4
|
|
_0200A694:
|
|
ldrb r1, [r2], #1
|
|
subs r3, r3, #1
|
|
strb r1, [ip], #1
|
|
bne _0200A694
|
|
mov r2, #0
|
|
ldr r1, _0200A6C0 ; =sub_0200ACB0
|
|
str r2, [r0, #0x10]
|
|
str r1, [r0, #0x14]
|
|
mov r1, #1
|
|
strb r1, [r0, #8]
|
|
bx lr
|
|
.align 2, 0
|
|
_0200A6C0: .word sub_0200ACB0
|
|
arm_func_end sub_0200A688
|
|
|
|
arm_func_start sub_0200A6C4
|
|
sub_0200A6C4: ; 0x0200A6C4
|
|
strh r1, [r0, #0xa]
|
|
add ip, r0, #0xc
|
|
mov r3, #4
|
|
_0200A6D0:
|
|
ldrb r1, [r2], #1
|
|
subs r3, r3, #1
|
|
strb r1, [ip], #1
|
|
bne _0200A6D0
|
|
mov r2, #0
|
|
ldr r1, _0200A6FC ; =sub_0200AE38
|
|
str r2, [r0, #0x10]
|
|
str r1, [r0, #0x14]
|
|
mov r1, #1
|
|
strb r1, [r0, #8]
|
|
bx lr
|
|
.align 2, 0
|
|
_0200A6FC: .word sub_0200AE38
|
|
arm_func_end sub_0200A6C4
|
|
|
|
arm_func_start sub_0200A700
|
|
sub_0200A700: ; 0x0200A700
|
|
strh r1, [r0, #0xa]
|
|
add ip, r0, #0xc
|
|
mov r3, #4
|
|
_0200A70C:
|
|
ldrb r1, [r2], #1
|
|
subs r3, r3, #1
|
|
strb r1, [ip], #1
|
|
bne _0200A70C
|
|
mov r2, #0
|
|
ldr r1, _0200A738 ; =sub_0200B0AC
|
|
str r2, [r0, #0x10]
|
|
str r1, [r0, #0x14]
|
|
mov r1, #1
|
|
strb r1, [r0, #8]
|
|
bx lr
|
|
.align 2, 0
|
|
_0200A738: .word sub_0200B0AC
|
|
arm_func_end sub_0200A700
|
|
|
|
arm_func_start sub_0200A73C
|
|
sub_0200A73C: ; 0x0200A73C
|
|
stmdb sp!, {r4, lr}
|
|
ldr ip, [r0, #0x18]
|
|
ldr lr, [r0, #0x1c]
|
|
mov r4, #0
|
|
b _0200A77C
|
|
_0200A750:
|
|
ldrb r1, [ip, #1]
|
|
ldrb r2, [ip, #2]
|
|
ldrb r3, [ip], #4
|
|
and r1, r1, #0xf8
|
|
and r2, r2, #0xf8
|
|
mov r1, r1, lsl #2
|
|
and r3, r3, #0xf8
|
|
orr r1, r1, r2, lsl #7
|
|
orr r1, r1, r3, asr #3
|
|
strh r1, [lr], #2
|
|
add r4, r4, #1
|
|
_0200A77C:
|
|
ldr r1, [r0, #4]
|
|
cmp r4, r1
|
|
blt _0200A750
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_0200A73C
|
|
|
|
arm_func_start sub_0200A78C
|
|
sub_0200A78C: ; 0x0200A78C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldrh r2, [r0, #0xa]
|
|
ldr r1, [r0]
|
|
ldr r3, [r0, #0x18]
|
|
cmp r2, #0x100
|
|
ldr r1, [r1]
|
|
ldr ip, [r0, #0x1c]
|
|
blo _0200A7F0
|
|
mov r5, #0
|
|
b _0200A7E0
|
|
_0200A7B4:
|
|
ldrb r1, [r3, #1]
|
|
ldrb r2, [r3, #2]
|
|
ldrb r4, [r3], #4
|
|
and r1, r1, #0xf8
|
|
and r2, r2, #0xf8
|
|
mov r1, r1, lsl #2
|
|
and r4, r4, #0xf8
|
|
orr r1, r1, r2, lsl #7
|
|
orr r1, r1, r4, asr #3
|
|
strh r1, [ip], #2
|
|
add r5, r5, #1
|
|
_0200A7E0:
|
|
ldr r1, [r0, #4]
|
|
cmp r5, r1
|
|
blt _0200A7B4
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
_0200A7F0:
|
|
cmp r2, #0
|
|
bne _0200A898
|
|
cmp r1, #2
|
|
bne _0200A874
|
|
mov lr, #0
|
|
mov r1, lr
|
|
mov r2, lr
|
|
b _0200A864
|
|
_0200A810:
|
|
mov r4, r2
|
|
_0200A814:
|
|
add r4, r4, #1
|
|
cmp r4, #0xf0
|
|
strh r1, [ip], #2
|
|
add lr, lr, #1
|
|
blt _0200A814
|
|
mov r4, r1
|
|
_0200A82C:
|
|
ldrb r5, [r3, #1]
|
|
ldrb r6, [r3, #2]
|
|
ldrb r7, [r3], #4
|
|
and r5, r5, #0xf8
|
|
and r6, r6, #0xf8
|
|
mov r5, r5, lsl #2
|
|
add r4, r4, #1
|
|
and r7, r7, #0xf8
|
|
orr r5, r5, r6, lsl #7
|
|
orr r5, r5, r7, asr #3
|
|
cmp r4, #0x10
|
|
strh r5, [ip], #2
|
|
add lr, lr, #1
|
|
blt _0200A82C
|
|
_0200A864:
|
|
ldr r4, [r0, #4]
|
|
cmp lr, r4
|
|
blt _0200A810
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
_0200A874:
|
|
mov r3, #0
|
|
mov r2, r3
|
|
b _0200A888
|
|
_0200A880:
|
|
strh r2, [ip], #2
|
|
add r3, r3, #1
|
|
_0200A888:
|
|
ldr r1, [r0, #4]
|
|
cmp r3, r1
|
|
blt _0200A880
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
_0200A898:
|
|
cmp r1, #2
|
|
mov lr, #0
|
|
bne _0200A9D4
|
|
b _0200A95C
|
|
_0200A8A8:
|
|
mov r4, #0
|
|
_0200A8AC:
|
|
ldrb r1, [r3, #1]
|
|
ldrb r5, [r3, #2]
|
|
ldrb r6, [r3], #4
|
|
mul r7, r1, r2
|
|
mul r8, r5, r2
|
|
mul r1, r6, r2
|
|
mov r5, r7, asr #7
|
|
add r7, r7, r5, lsr #24
|
|
mov r6, r8, asr #7
|
|
mov r5, r1, asr #7
|
|
add r1, r1, r5, lsr #24
|
|
add r6, r8, r6, lsr #24
|
|
mov r1, r1, lsl #8
|
|
add r4, r4, #1
|
|
mov r7, r7, lsl #8
|
|
mov r5, r6, lsl #8
|
|
mov r6, r7, lsr #0x10
|
|
mov r7, r5, lsr #0x10
|
|
and r5, r6, #0xf8
|
|
mov r8, r1, lsr #0x10
|
|
mov r1, r5, lsl #2
|
|
and r6, r7, #0xf8
|
|
and r5, r8, #0xf8
|
|
orr r1, r1, r6, lsl #7
|
|
orr r1, r1, r5, asr #3
|
|
strh r1, [ip], #2
|
|
cmp r4, #0xf0
|
|
add lr, lr, #1
|
|
blt _0200A8AC
|
|
mov r1, #0
|
|
_0200A924:
|
|
ldrb r4, [r3, #1]
|
|
ldrb r5, [r3, #2]
|
|
ldrb r6, [r3], #4
|
|
and r4, r4, #0xf8
|
|
and r5, r5, #0xf8
|
|
mov r4, r4, lsl #2
|
|
add r1, r1, #1
|
|
and r6, r6, #0xf8
|
|
orr r4, r4, r5, lsl #7
|
|
orr r4, r4, r6, asr #3
|
|
cmp r1, #0x10
|
|
strh r4, [ip], #2
|
|
add lr, lr, #1
|
|
blt _0200A924
|
|
_0200A95C:
|
|
ldr r1, [r0, #4]
|
|
cmp lr, r1
|
|
blt _0200A8A8
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
_0200A96C:
|
|
ldrb r1, [r3, #1]
|
|
ldrb r4, [r3, #2]
|
|
ldrb r5, [r3], #4
|
|
mul r6, r1, r2
|
|
mul r7, r4, r2
|
|
mul r1, r5, r2
|
|
mov r4, r6, asr #7
|
|
add r6, r6, r4, lsr #24
|
|
mov r5, r7, asr #7
|
|
mov r4, r1, asr #7
|
|
add r1, r1, r4, lsr #24
|
|
add r5, r7, r5, lsr #24
|
|
mov r1, r1, lsl #8
|
|
mov r6, r6, lsl #8
|
|
mov r4, r5, lsl #8
|
|
mov r5, r6, lsr #0x10
|
|
mov r6, r4, lsr #0x10
|
|
and r4, r5, #0xf8
|
|
mov r7, r1, lsr #0x10
|
|
mov r1, r4, lsl #2
|
|
and r5, r6, #0xf8
|
|
and r4, r7, #0xf8
|
|
orr r1, r1, r5, lsl #7
|
|
orr r1, r1, r4, asr #3
|
|
strh r1, [ip], #2
|
|
add lr, lr, #1
|
|
_0200A9D4:
|
|
ldr r1, [r0, #4]
|
|
cmp lr, r1
|
|
blt _0200A96C
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
arm_func_end sub_0200A78C
|
|
|
|
arm_func_start sub_0200A9E4
|
|
sub_0200A9E4: ; 0x0200A9E4
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
ldr r1, [r0]
|
|
ldrh r5, [r0, #0xa]
|
|
ldr r1, [r1]
|
|
add r4, sp, #0
|
|
add r6, r0, #0xc
|
|
mov r3, #4
|
|
_0200AA00:
|
|
ldrb r2, [r6], #1
|
|
subs r3, r3, #1
|
|
strb r2, [r4], #1
|
|
bne _0200AA00
|
|
cmp r5, #0x100
|
|
ldr r2, [r0, #0x18]
|
|
ldr r4, [r0, #0x1c]
|
|
blo _0200AA64
|
|
mov r6, #0
|
|
b _0200AA54
|
|
_0200AA28:
|
|
ldrb r1, [r2, #1]
|
|
ldrb r3, [r2, #2]
|
|
ldrb r5, [r2], #4
|
|
and r1, r1, #0xf8
|
|
and r3, r3, #0xf8
|
|
mov r1, r1, lsl #2
|
|
and r5, r5, #0xf8
|
|
orr r1, r1, r3, lsl #7
|
|
orr r1, r1, r5, asr #3
|
|
strh r1, [r4], #2
|
|
add r6, r6, #1
|
|
_0200AA54:
|
|
ldr r1, [r0, #4]
|
|
cmp r6, r1
|
|
blt _0200AA28
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_0200AA64:
|
|
cmp r5, #0
|
|
bne _0200AB38
|
|
ldrb r3, [sp, #1]
|
|
ldrb r5, [sp, #2]
|
|
ldrb r6, [sp]
|
|
and r3, r3, #0xf8
|
|
and r5, r5, #0xf8
|
|
mov r3, r3, lsl #2
|
|
and r6, r6, #0xf8
|
|
orr r3, r3, r5, lsl #7
|
|
orr r3, r3, r6, asr #3
|
|
mov r3, r3, lsl #0x10
|
|
cmp r1, #2
|
|
mov r5, r3, lsr #0x10
|
|
bne _0200AB18
|
|
mov r6, #0
|
|
mov r3, r6
|
|
mov r1, r6
|
|
b _0200AB08
|
|
_0200AAB0:
|
|
mov r7, r3
|
|
_0200AAB4:
|
|
add r7, r7, #1
|
|
cmp r7, #0xf0
|
|
strh r5, [r4], #2
|
|
add r2, r2, #4
|
|
add r6, r6, #1
|
|
blt _0200AAB4
|
|
mov r7, r1
|
|
_0200AAD0:
|
|
ldrb r8, [r2, #1]
|
|
ldrb sb, [r2, #2]
|
|
ldrb sl, [r2], #4
|
|
and r8, r8, #0xf8
|
|
and sb, sb, #0xf8
|
|
mov r8, r8, lsl #2
|
|
add r7, r7, #1
|
|
and sl, sl, #0xf8
|
|
orr r8, r8, sb, lsl #7
|
|
orr r8, r8, sl, asr #3
|
|
cmp r7, #0x10
|
|
strh r8, [r4], #2
|
|
add r6, r6, #1
|
|
blt _0200AAD0
|
|
_0200AB08:
|
|
ldr r7, [r0, #4]
|
|
cmp r6, r7
|
|
blt _0200AAB0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_0200AB18:
|
|
mov r2, #0
|
|
b _0200AB28
|
|
_0200AB20:
|
|
strh r5, [r4], #2
|
|
add r2, r2, #1
|
|
_0200AB28:
|
|
ldr r1, [r0, #4]
|
|
cmp r2, r1
|
|
blt _0200AB20
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_0200AB38:
|
|
rsb r3, r5, #0x100
|
|
mov r3, r3, lsl #0x10
|
|
ldrb r8, [sp]
|
|
mov sb, r3, lsr #0x10
|
|
ldrb r7, [sp, #1]
|
|
ldrb r6, [sp, #2]
|
|
mul r3, r8, sb
|
|
mul ip, r7, sb
|
|
mul lr, r6, sb
|
|
cmp r1, #2
|
|
bne _0200AC30
|
|
mov r6, #0
|
|
b _0200AC20
|
|
_0200AB6C:
|
|
mov r7, #0
|
|
_0200AB70:
|
|
ldrb r1, [r2, #1]
|
|
ldrb fp, [r2, #2]
|
|
ldrb sb, [r2], #4
|
|
mla sl, r1, r5, ip
|
|
mla r8, fp, r5, lr
|
|
mla r1, sb, r5, r3
|
|
mov sb, sl, asr #7
|
|
add sb, sl, sb, lsr #24
|
|
mov fp, r8, asr #7
|
|
add r8, r8, fp, lsr #24
|
|
mov sl, r1, asr #7
|
|
mov sb, sb, lsl #8
|
|
add r1, r1, sl, lsr #24
|
|
mov r8, r8, lsl #8
|
|
mov r1, r1, lsl #8
|
|
mov r1, r1, lsr #0x10
|
|
add r7, r7, #1
|
|
mov sb, sb, lsr #0x10
|
|
mov sl, r8, lsr #0x10
|
|
and r8, sb, #0xf8
|
|
and sb, sl, #0xf8
|
|
mov r8, r8, lsl #2
|
|
and r1, r1, #0xf8
|
|
orr r8, r8, sb, lsl #7
|
|
orr r1, r8, r1, asr #3
|
|
strh r1, [r4], #2
|
|
cmp r7, #0xf0
|
|
add r6, r6, #1
|
|
blt _0200AB70
|
|
mov r7, #0
|
|
_0200ABE8:
|
|
ldrb r8, [r2, #1]
|
|
ldrb sb, [r2, #2]
|
|
ldrb r1, [r2], #4
|
|
and r8, r8, #0xf8
|
|
and sb, sb, #0xf8
|
|
mov r8, r8, lsl #2
|
|
and sl, r1, #0xf8
|
|
orr r1, r8, sb, lsl #7
|
|
add r7, r7, #1
|
|
orr r1, r1, sl, asr #3
|
|
cmp r7, #0x10
|
|
strh r1, [r4], #2
|
|
add r6, r6, #1
|
|
blt _0200ABE8
|
|
_0200AC20:
|
|
ldr r1, [r0, #4]
|
|
cmp r6, r1
|
|
blt _0200AB6C
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_0200AC30:
|
|
mov r7, #0
|
|
b _0200ACA0
|
|
_0200AC38:
|
|
ldrb r1, [r2, #1]
|
|
ldrb r6, [r2, #2]
|
|
ldrb r8, [r2], #4
|
|
mla sl, r1, r5, ip
|
|
mla r1, r6, r5, lr
|
|
mla r6, r8, r5, r3
|
|
mov r8, sl, asr #7
|
|
add sl, sl, r8, lsr #24
|
|
mov sb, r1, asr #7
|
|
mov r8, r6, asr #7
|
|
add sb, r1, sb, lsr #24
|
|
add r1, r6, r8, lsr #24
|
|
mov sl, sl, lsl #8
|
|
mov r6, sb, lsl #8
|
|
mov r8, sl, lsr #0x10
|
|
mov r1, r1, lsl #8
|
|
mov sb, r6, lsr #0x10
|
|
and r6, r8, #0xf8
|
|
mov sl, r1, lsr #0x10
|
|
mov r1, r6, lsl #2
|
|
and r8, sb, #0xf8
|
|
and r6, sl, #0xf8
|
|
orr r1, r1, r8, lsl #7
|
|
orr r1, r1, r6, asr #3
|
|
strh r1, [r4], #2
|
|
add r7, r7, #1
|
|
_0200ACA0:
|
|
ldr r1, [r0, #4]
|
|
cmp r7, r1
|
|
blt _0200AC38
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end sub_0200A9E4
|
|
|
|
arm_func_start sub_0200ACB0
|
|
sub_0200ACB0: ; 0x0200ACB0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #4
|
|
ldr r1, [r0]
|
|
ldrh r2, [r0, #0xa]
|
|
ldr r1, [r1]
|
|
add r5, sp, #0
|
|
add r6, r0, #0xc
|
|
mov r4, #4
|
|
_0200ACD0:
|
|
ldrb r3, [r6], #1
|
|
subs r4, r4, #1
|
|
strb r3, [r5], #1
|
|
bne _0200ACD0
|
|
cmp r2, #0x100
|
|
ldr r3, [r0, #0x18]
|
|
ldr r4, [r0, #0x1c]
|
|
blo _0200AD20
|
|
ldrb r2, [sp, #1]
|
|
ldrb r5, [sp, #2]
|
|
ldrb r6, [sp]
|
|
and r2, r2, #0xf8
|
|
and r5, r5, #0xf8
|
|
mov r2, r2, lsl #2
|
|
and r6, r6, #0xf8
|
|
orr r2, r2, r5, lsl #7
|
|
orr r2, r2, r6, asr #3
|
|
mov r2, r2, lsl #0x10
|
|
mov ip, r2, lsr #0x10
|
|
b _0200AD94
|
|
_0200AD20:
|
|
cmp r2, #0
|
|
moveq ip, #0
|
|
beq _0200AD94
|
|
ldrb r5, [sp, #1]
|
|
ldrb r7, [sp, #2]
|
|
ldrb ip, [sp]
|
|
mul r6, r5, r2
|
|
mul r8, r7, r2
|
|
mul r7, ip, r2
|
|
mov r2, r6, asr #7
|
|
mov r5, r8, asr #7
|
|
add ip, r6, r2, lsr #24
|
|
mov r2, r7, asr #7
|
|
add r5, r8, r5, lsr #24
|
|
mov ip, ip, lsl #8
|
|
add r2, r7, r2, lsr #24
|
|
mov r5, r5, lsl #8
|
|
mov r6, ip, lsr #0x10
|
|
mov r2, r2, lsl #8
|
|
mov r7, r5, lsr #0x10
|
|
and r5, r6, #0xf8
|
|
mov r8, r2, lsr #0x10
|
|
and r6, r7, #0xf8
|
|
mov r2, r5, lsl #2
|
|
and r5, r8, #0xf8
|
|
orr r2, r2, r6, lsl #7
|
|
orr r2, r2, r5, asr #3
|
|
mov r2, r2, lsl #0x10
|
|
mov ip, r2, lsr #0x10
|
|
_0200AD94:
|
|
cmp r1, #2
|
|
bne _0200AE14
|
|
mov lr, #0
|
|
mov r2, lr
|
|
mov r1, lr
|
|
b _0200AE04
|
|
_0200ADAC:
|
|
mov r5, r2
|
|
_0200ADB0:
|
|
add r5, r5, #1
|
|
cmp r5, #0xf0
|
|
strh ip, [r4], #2
|
|
add r3, r3, #4
|
|
add lr, lr, #1
|
|
blt _0200ADB0
|
|
mov r5, r1
|
|
_0200ADCC:
|
|
ldrb r6, [r3, #1]
|
|
ldrb r7, [r3, #2]
|
|
ldrb r8, [r3], #4
|
|
and r6, r6, #0xf8
|
|
and r7, r7, #0xf8
|
|
mov r6, r6, lsl #2
|
|
add r5, r5, #1
|
|
and r8, r8, #0xf8
|
|
orr r6, r6, r7, lsl #7
|
|
orr r6, r6, r8, asr #3
|
|
cmp r5, #0x10
|
|
strh r6, [r4], #2
|
|
add lr, lr, #1
|
|
blt _0200ADCC
|
|
_0200AE04:
|
|
ldr r5, [r0, #4]
|
|
cmp lr, r5
|
|
blt _0200ADAC
|
|
b _0200AE30
|
|
_0200AE14:
|
|
mov r2, #0
|
|
b _0200AE24
|
|
_0200AE1C:
|
|
strh ip, [r4], #2
|
|
add r2, r2, #1
|
|
_0200AE24:
|
|
ldr r1, [r0, #4]
|
|
cmp r2, r1
|
|
blt _0200AE1C
|
|
_0200AE30:
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
|
|
arm_func_end sub_0200ACB0
|
|
|
|
arm_func_start sub_0200AE38
|
|
sub_0200AE38: ; 0x0200AE38
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x18
|
|
mov sl, r0
|
|
ldr r1, [sl]
|
|
ldrh r0, [sl, #0xa]
|
|
ldr fp, [r1]
|
|
add r3, sp, #0x14
|
|
add r4, sl, #0xc
|
|
mov r2, #4
|
|
_0200AE5C:
|
|
ldrb r1, [r4], #1
|
|
subs r2, r2, #1
|
|
strb r1, [r3], #1
|
|
bne _0200AE5C
|
|
cmp r0, #0x100
|
|
ldr r4, [sl, #0x18]
|
|
ldr r5, [sl, #0x1c]
|
|
blo _0200AEC0
|
|
mov r3, #0
|
|
b _0200AEB0
|
|
_0200AE84:
|
|
ldrb r0, [r4, #1]
|
|
ldrb r1, [r4, #2]
|
|
ldrb r2, [r4], #4
|
|
and r0, r0, #0xf8
|
|
and r1, r1, #0xf8
|
|
mov r0, r0, lsl #2
|
|
and r2, r2, #0xf8
|
|
orr r0, r0, r1, lsl #7
|
|
orr r0, r0, r2, asr #3
|
|
strh r0, [r5], #2
|
|
add r3, r3, #1
|
|
_0200AEB0:
|
|
ldr r0, [sl, #4]
|
|
cmp r3, r0
|
|
blt _0200AE84
|
|
b _0200B0A4
|
|
_0200AEC0:
|
|
ldrb sb, [sp, #0x14]
|
|
ldrb r7, [sp, #0x15]
|
|
ldrb r3, [sp, #0x16]
|
|
rsb r6, sb, #0xff
|
|
mul r8, r6, r0
|
|
rsb r2, r7, #0xff
|
|
mov ip, r8, asr #7
|
|
add r8, r8, ip, lsr #24
|
|
add r8, sb, r8, asr #8
|
|
rsb r1, r3, #0xff
|
|
mul r6, r2, r0
|
|
mul r2, r1, r0
|
|
mov r0, r6, asr #7
|
|
mov r1, r2, asr #7
|
|
add r0, r6, r0, lsr #24
|
|
add r1, r2, r1, lsr #24
|
|
add r6, r7, r0, asr #8
|
|
add r2, r3, r1, asr #8
|
|
mov r0, r8, lsl #0x10
|
|
mov r1, r6, lsl #0x10
|
|
mov r2, r2, lsl #0x10
|
|
cmp fp, #2
|
|
mov r8, r0, lsr #0x10
|
|
mov r6, r1, lsr #0x10
|
|
mov r7, r2, lsr #0x10
|
|
mov sb, #0
|
|
bne _0200B098
|
|
b _0200B004
|
|
_0200AF30:
|
|
mov fp, #0
|
|
_0200AF34:
|
|
ldrb r2, [r4]
|
|
str r5, [sp]
|
|
mov r1, #0xff
|
|
mul r0, r2, r8
|
|
add r5, r5, #2
|
|
bl DivideInt
|
|
ldrb r2, [r4, #2]
|
|
str r0, [sp, #4]
|
|
mov r1, #0xff
|
|
mul r0, r2, r7
|
|
bl DivideInt
|
|
ldrb r2, [r4, #1]
|
|
str r0, [sp, #8]
|
|
mov r1, #0xff
|
|
mul r0, r2, r6
|
|
bl DivideInt
|
|
ldr r1, [sp, #4]
|
|
mov r0, r0, lsl #0x10
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
and r2, r1, #0xf8
|
|
ldr r1, [sp, #8]
|
|
mov r0, r0, lsr #0x10
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
and r0, r0, #0xf8
|
|
add fp, fp, #1
|
|
and r1, r1, #0xf8
|
|
mov r0, r0, lsl #2
|
|
orr r0, r0, r1, lsl #7
|
|
orr r1, r0, r2, asr #3
|
|
ldr r0, [sp]
|
|
add r4, r4, #4
|
|
strh r1, [r0]
|
|
cmp fp, #0xf0
|
|
add sb, sb, #1
|
|
blt _0200AF34
|
|
mov r1, #0
|
|
_0200AFCC:
|
|
ldrb r2, [r4, #1]
|
|
ldrb r3, [r4, #2]
|
|
ldrb r0, [r4], #4
|
|
and r2, r2, #0xf8
|
|
and r3, r3, #0xf8
|
|
mov r2, r2, lsl #2
|
|
and fp, r0, #0xf8
|
|
orr r0, r2, r3, lsl #7
|
|
add r1, r1, #1
|
|
orr r0, r0, fp, asr #3
|
|
cmp r1, #0x10
|
|
strh r0, [r5], #2
|
|
add sb, sb, #1
|
|
blt _0200AFCC
|
|
_0200B004:
|
|
ldr r0, [sl, #4]
|
|
cmp sb, r0
|
|
blt _0200AF30
|
|
b _0200B0A4
|
|
_0200B014:
|
|
ldrb r2, [r4]
|
|
mov fp, r5
|
|
mov r1, #0xff
|
|
mul r0, r2, r8
|
|
add r5, r5, #2
|
|
bl DivideInt
|
|
ldrb r2, [r4, #2]
|
|
str r0, [sp, #0xc]
|
|
mov r1, #0xff
|
|
mul r0, r2, r7
|
|
bl DivideInt
|
|
ldrb r2, [r4, #1]
|
|
str r0, [sp, #0x10]
|
|
mov r1, #0xff
|
|
mul r0, r2, r6
|
|
bl DivideInt
|
|
ldr r1, [sp, #0xc]
|
|
mov r0, r0, lsl #0x10
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
and r2, r1, #0xf8
|
|
ldr r1, [sp, #0x10]
|
|
mov r0, r0, lsr #0x10
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
and r0, r0, #0xf8
|
|
and r1, r1, #0xf8
|
|
mov r0, r0, lsl #2
|
|
orr r0, r0, r1, lsl #7
|
|
orr r0, r0, r2, asr #3
|
|
strh r0, [fp]
|
|
add r4, r4, #4
|
|
add sb, sb, #1
|
|
_0200B098:
|
|
ldr r0, [sl, #4]
|
|
cmp sb, r0
|
|
blt _0200B014
|
|
_0200B0A4:
|
|
add sp, sp, #0x18
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end sub_0200AE38
|
|
|
|
arm_func_start sub_0200B0AC
|
|
sub_0200B0AC: ; 0x0200B0AC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x18
|
|
mov sl, r0
|
|
ldr r0, [sl]
|
|
ldrh r3, [sl, #0xa]
|
|
ldr r2, [r0]
|
|
add r4, sp, #0x14
|
|
add r5, sl, #0xc
|
|
mov r1, #4
|
|
_0200B0D0:
|
|
ldrb r0, [r5], #1
|
|
subs r1, r1, #1
|
|
strb r0, [r4], #1
|
|
bne _0200B0D0
|
|
ldrb r0, [sp, #0x14]
|
|
ldrb r7, [sp, #0x15]
|
|
cmp r3, #0x100
|
|
movhs r3, #0x100
|
|
ldrb r5, [sp, #0x16]
|
|
mul r1, r0, r3
|
|
mul r0, r7, r3
|
|
mul r8, r5, r3
|
|
mov r3, r1, asr #7
|
|
mov r5, r0, asr #7
|
|
add r1, r1, r3, lsr #24
|
|
add r3, r0, r5, lsr #24
|
|
mov r0, r1, lsl #8
|
|
mov r7, r8, asr #7
|
|
add r5, r8, r7, lsr #24
|
|
mov r1, r3, lsl #8
|
|
mov r3, r5, lsl #8
|
|
ldr r4, [sl, #0x18]
|
|
ldr r6, [sl, #0x1c]
|
|
cmp r2, #2
|
|
mov sb, r0, lsr #0x10
|
|
mov r7, r1, lsr #0x10
|
|
mov r8, r3, lsr #0x10
|
|
mov r5, #0
|
|
bne _0200B2B0
|
|
b _0200B21C
|
|
_0200B148:
|
|
mov fp, #0
|
|
_0200B14C:
|
|
ldrb r2, [r4]
|
|
str r6, [sp]
|
|
mov r1, #0xff
|
|
mul r0, r2, sb
|
|
add r6, r6, #2
|
|
bl DivideInt
|
|
ldrb r2, [r4, #2]
|
|
str r0, [sp, #4]
|
|
mov r1, #0xff
|
|
mul r0, r2, r8
|
|
bl DivideInt
|
|
ldrb r2, [r4, #1]
|
|
str r0, [sp, #8]
|
|
mov r1, #0xff
|
|
mul r0, r2, r7
|
|
bl DivideInt
|
|
ldr r1, [sp, #4]
|
|
mov r0, r0, lsl #0x10
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
and r2, r1, #0xf8
|
|
ldr r1, [sp, #8]
|
|
mov r0, r0, lsr #0x10
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
and r0, r0, #0xf8
|
|
add fp, fp, #1
|
|
and r1, r1, #0xf8
|
|
mov r0, r0, lsl #2
|
|
orr r0, r0, r1, lsl #7
|
|
orr r1, r0, r2, asr #3
|
|
ldr r0, [sp]
|
|
add r4, r4, #4
|
|
strh r1, [r0]
|
|
cmp fp, #0xf0
|
|
add r5, r5, #1
|
|
blt _0200B14C
|
|
mov r1, #0
|
|
_0200B1E4:
|
|
ldrb r2, [r4, #1]
|
|
ldrb r3, [r4, #2]
|
|
ldrb r0, [r4], #4
|
|
and r2, r2, #0xf8
|
|
and r3, r3, #0xf8
|
|
mov r2, r2, lsl #2
|
|
and fp, r0, #0xf8
|
|
orr r0, r2, r3, lsl #7
|
|
add r1, r1, #1
|
|
orr r0, r0, fp, asr #3
|
|
cmp r1, #0x10
|
|
strh r0, [r6], #2
|
|
add r5, r5, #1
|
|
blt _0200B1E4
|
|
_0200B21C:
|
|
ldr r0, [sl, #4]
|
|
cmp r5, r0
|
|
blt _0200B148
|
|
b _0200B2BC
|
|
_0200B22C:
|
|
ldrb r2, [r4]
|
|
mov fp, r6
|
|
mov r1, #0xff
|
|
mul r0, r2, sb
|
|
add r6, r6, #2
|
|
bl DivideInt
|
|
ldrb r2, [r4, #2]
|
|
str r0, [sp, #0xc]
|
|
mov r1, #0xff
|
|
mul r0, r2, r8
|
|
bl DivideInt
|
|
ldrb r2, [r4, #1]
|
|
str r0, [sp, #0x10]
|
|
mov r1, #0xff
|
|
mul r0, r2, r7
|
|
bl DivideInt
|
|
ldr r1, [sp, #0xc]
|
|
mov r0, r0, lsl #0x10
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
and r2, r1, #0xf8
|
|
ldr r1, [sp, #0x10]
|
|
mov r0, r0, lsr #0x10
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
and r0, r0, #0xf8
|
|
and r1, r1, #0xf8
|
|
mov r0, r0, lsl #2
|
|
orr r0, r0, r1, lsl #7
|
|
orr r0, r0, r2, asr #3
|
|
strh r0, [fp]
|
|
add r4, r4, #4
|
|
add r5, r5, #1
|
|
_0200B2B0:
|
|
ldr r0, [sl, #4]
|
|
cmp r5, r0
|
|
blt _0200B22C
|
|
_0200B2BC:
|
|
add sp, sp, #0x18
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end sub_0200B0AC
|
|
|
|
arm_func_start sub_0200B2C4
|
|
sub_0200B2C4: ; 0x0200B2C4
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
strb r1, [r4]
|
|
mov r0, #0
|
|
strb r0, [r4, #1]
|
|
str r3, [r4, #0x10]
|
|
str r0, [r4, #4]
|
|
str r0, [r4, #8]
|
|
str r2, [r4, #0xc]
|
|
ldrb r2, [r4]
|
|
ldr r0, _0200B310 ; =0x02092AD8
|
|
ldr r1, [sp, #8]
|
|
ldr r0, [r0, r2, lsl #2]
|
|
str r0, [r4, #0x14]
|
|
bl MemAlloc
|
|
str r0, [r4, #0x18]
|
|
mov r0, r4
|
|
bl sub_0200B3D4
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0200B310: .word 0x02092AD8
|
|
arm_func_end sub_0200B2C4
|
|
|
|
arm_func_start sub_0200B314
|
|
sub_0200B314: ; 0x0200B314
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
ldr r0, [r4, #0x18]
|
|
bl MemFree
|
|
mov r0, #0
|
|
str r0, [r4, #0x18]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_0200B314
|
|
|
|
arm_func_start sub_0200B330
|
|
sub_0200B330: ; 0x0200B330
|
|
mov r1, #1
|
|
strb r1, [r0, #1]
|
|
bx lr
|
|
arm_func_end sub_0200B330
|
|
|
|
arm_func_start sub_0200B33C
|
|
sub_0200B33C: ; 0x0200B33C
|
|
bx lr
|
|
arm_func_end sub_0200B33C
|
|
|
|
arm_func_start sub_0200B340
|
|
sub_0200B340: ; 0x0200B340
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #4
|
|
mov r4, r0
|
|
ldr r0, _0200B3BC ; =0x000001FF
|
|
ldmib r4, {r1, r2}
|
|
and r1, r1, r0
|
|
mov r2, r2, lsl #0x17
|
|
ldr r0, [r4, #0xc]
|
|
orr r1, r1, r2, lsr #7
|
|
str r1, [r0]
|
|
ldrb r0, [r4, #1]
|
|
cmp r0, #0
|
|
beq _0200B3B4
|
|
ldr r5, [r4, #0x18]
|
|
ldr r1, [r4, #0x14]
|
|
mov r0, r5
|
|
ldr r6, [r4, #0x10]
|
|
bl sub_0207A2DC
|
|
ldr ip, [r4, #0x14]
|
|
mov r2, r6
|
|
mov r3, r5
|
|
mov r0, #3
|
|
mov r1, #1
|
|
str ip, [sp]
|
|
bl sub_02005E10
|
|
mov r0, #3
|
|
bl sub_02005D30
|
|
mov r0, #0
|
|
strb r0, [r4, #1]
|
|
_0200B3B4:
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0200B3BC: .word 0x000001FF
|
|
arm_func_end sub_0200B340
|
|
|
|
arm_func_start sub_0200B3C0
|
|
sub_0200B3C0: ; 0x0200B3C0
|
|
ldr r2, [r1]
|
|
ldr r1, [r1, #4]
|
|
str r2, [r0, #4]
|
|
str r1, [r0, #8]
|
|
bx lr
|
|
arm_func_end sub_0200B3C0
|
|
|
|
arm_func_start sub_0200B3D4
|
|
sub_0200B3D4: ; 0x0200B3D4
|
|
mov r3, #0
|
|
ldr ip, [r0, #0x18]
|
|
mov r2, r3
|
|
b _0200B3EC
|
|
_0200B3E4:
|
|
strh r2, [ip], #2
|
|
add r3, r3, #1
|
|
_0200B3EC:
|
|
ldr r1, [r0, #0x14]
|
|
cmp r3, r1, lsr #1
|
|
blo _0200B3E4
|
|
bx lr
|
|
arm_func_end sub_0200B3D4
|
|
|
|
arm_func_start sub_0200B3FC
|
|
sub_0200B3FC: ; 0x0200B3FC
|
|
ldrb r3, [r0]
|
|
cmp r3, #3
|
|
addls pc, pc, r3, lsl #2
|
|
bx lr
|
|
_0200B40C: ; jump table
|
|
b _0200B41C ; case 0
|
|
b _0200B438 ; case 1
|
|
b _0200B470 ; case 2
|
|
b _0200B48C ; case 3
|
|
_0200B41C:
|
|
ldr ip, [r0, #0x18]
|
|
ldr r0, [r1, #4]
|
|
ldr r3, [r1]
|
|
add r0, ip, r0, lsl #6
|
|
mov r1, r3, lsl #1
|
|
strh r2, [r1, r0]
|
|
bx lr
|
|
_0200B438:
|
|
ldr ip, [r1]
|
|
ldr r3, [r0, #0x18]
|
|
cmp ip, #0x20
|
|
ldrlt r0, [r1, #4]
|
|
movlt r1, ip, lsl #1
|
|
addlt r0, r3, r0, lsl #6
|
|
strlth r2, [r1, r0]
|
|
bxlt lr
|
|
ldr r0, [r1, #4]
|
|
add r0, r3, r0, lsl #6
|
|
add r0, r0, ip, lsl #1
|
|
add r0, r0, #0x700
|
|
strh r2, [r0, #0xc0]
|
|
bx lr
|
|
_0200B470:
|
|
ldr ip, [r0, #0x18]
|
|
ldr r0, [r1, #4]
|
|
ldr r3, [r1]
|
|
add r0, ip, r0, lsl #6
|
|
mov r1, r3, lsl #1
|
|
strh r2, [r1, r0]
|
|
bx lr
|
|
_0200B48C:
|
|
ldr ip, [r1, #4]
|
|
cmp ip, #0x40
|
|
bge _0200B4C4
|
|
ldr r1, [r1]
|
|
ldr r0, [r0, #0x18]
|
|
cmp r1, #0x20
|
|
movlt r1, r1, lsl #1
|
|
addlt r0, r0, ip, lsl #6
|
|
strlth r2, [r1, r0]
|
|
addge r0, r0, ip, lsl #6
|
|
addge r0, r0, r1, lsl #1
|
|
addge r0, r0, #0x700
|
|
strgeh r2, [r0, #0xc0]
|
|
bx lr
|
|
_0200B4C4:
|
|
ldr r3, [r1]
|
|
ldr r1, [r0, #0x18]
|
|
cmp r3, #0x20
|
|
subge r0, ip, #0x20
|
|
addge r0, r1, r0, lsl #6
|
|
addge r0, r0, r3, lsl #1
|
|
addge r0, r0, #0x1700
|
|
strgeh r2, [r0, #0xc0]
|
|
bxge lr
|
|
sub r0, ip, #0x20
|
|
add r0, r1, r0, lsl #6
|
|
add r0, r0, r3, lsl #1
|
|
add r0, r0, #0x1000
|
|
strh r2, [r0]
|
|
bx lr
|
|
arm_func_end sub_0200B3FC
|
|
|
|
arm_func_start sub_0200B500
|
|
sub_0200B500: ; 0x0200B500
|
|
ldr r0, [r0, #0x18]
|
|
bx lr
|
|
arm_func_end sub_0200B500
|
|
|
|
arm_func_start sub_0200B508
|
|
sub_0200B508: ; 0x0200B508
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
str r4, [r5]
|
|
str r2, [r5, #4]
|
|
mov r0, #0
|
|
strb r0, [r5, #0x14]
|
|
str r3, [r5, #0x18]
|
|
cmp r2, #0
|
|
strle r0, [r5, #0xc]
|
|
ble _0200B550
|
|
ldr r1, [sp, #0x10]
|
|
mov r0, r2, lsl #1
|
|
bl MemAlloc
|
|
str r0, [r5, #0xc]
|
|
ldr r1, [sp, #0x10]
|
|
mov r0, r4, lsl #3
|
|
bl MemAlloc
|
|
_0200B550:
|
|
ldr r1, [sp, #0x10]
|
|
str r0, [r5, #0x10]
|
|
mov r0, r4, lsl #3
|
|
bl MemAlloc
|
|
str r0, [r5, #0x1c]
|
|
mov r0, r5
|
|
bl sub_0200B67C
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_0200B508
|
|
|
|
arm_func_start sub_0200B570
|
|
sub_0200B570: ; 0x0200B570
|
|
mov r1, #1
|
|
strb r1, [r0, #0x14]
|
|
bx lr
|
|
arm_func_end sub_0200B570
|
|
|
|
arm_func_start sub_0200B57C
|
|
sub_0200B57C: ; 0x0200B57C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr ip, [r0, #8]
|
|
cmp ip, #0
|
|
ldmleia sp!, {r3, r4, r5, pc}
|
|
ldr r3, [r0]
|
|
ldr r2, [r0, #0x1c]
|
|
sub r1, r3, #1
|
|
add lr, r2, r1, lsl #3
|
|
sub r3, r3, ip
|
|
ldr r4, [r0, #0xc]
|
|
mov r2, #0x200
|
|
mov r1, #0
|
|
b _0200B5C4
|
|
_0200B5B0:
|
|
strh r2, [lr]
|
|
strh r1, [lr, #2]
|
|
strh r1, [lr, #4]
|
|
sub lr, lr, #8
|
|
sub r3, r3, #1
|
|
_0200B5C4:
|
|
cmp r3, #0
|
|
bgt _0200B5B0
|
|
ldr r5, [r0, #4]
|
|
mvn r3, #0
|
|
b _0200B61C
|
|
_0200B5D8:
|
|
ldrsh ip, [r4]
|
|
strh r3, [r4], #2
|
|
b _0200B610
|
|
_0200B5E4:
|
|
ldr r2, [r0, #0x10]
|
|
mov r1, ip, lsl #3
|
|
ldrh r1, [r2, r1]
|
|
add r2, r2, ip, lsl #3
|
|
strh r1, [lr]
|
|
ldrh r1, [r2, #2]
|
|
strh r1, [lr, #2]
|
|
ldrh r1, [r2, #4]
|
|
strh r1, [lr, #4]
|
|
ldrsh ip, [r2, #6]
|
|
sub lr, lr, #8
|
|
_0200B610:
|
|
cmp ip, #0
|
|
bge _0200B5E4
|
|
sub r5, r5, #1
|
|
_0200B61C:
|
|
cmp r5, #0
|
|
bgt _0200B5D8
|
|
mov r1, #0
|
|
str r1, [r0, #8]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_0200B57C
|
|
|
|
arm_func_start sub_0200B630
|
|
sub_0200B630: ; 0x0200B630
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
ldrb r0, [r6, #0x14]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
ldr r4, [r6, #0x1c]
|
|
ldr r1, [r6]
|
|
mov r0, r4
|
|
mov r1, r1, lsl #3
|
|
ldr r5, [r6, #0x18]
|
|
bl sub_0207A2DC
|
|
ldr r2, [r6]
|
|
mov r0, r5
|
|
mov r1, r4
|
|
mov r2, r2, lsl #3
|
|
bl Memcpy32
|
|
mov r0, #0
|
|
strb r0, [r6, #0x14]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end sub_0200B630
|
|
|
|
arm_func_start sub_0200B67C
|
|
sub_0200B67C: ; 0x0200B67C
|
|
stmdb sp!, {r3, lr}
|
|
ldr ip, [r0, #0x1c]
|
|
mov lr, #0
|
|
str lr, [r0, #8]
|
|
mov r3, #0x200
|
|
mov r2, lr
|
|
b _0200B6B0
|
|
_0200B698:
|
|
strh r3, [ip]
|
|
strh r2, [ip, #2]
|
|
strh r2, [ip, #4]
|
|
strh r2, [ip, #6]
|
|
add ip, ip, #8
|
|
add lr, lr, #1
|
|
_0200B6B0:
|
|
ldr r1, [r0]
|
|
cmp lr, r1
|
|
blt _0200B698
|
|
ldr r1, [r0, #4]
|
|
cmp r1, #0
|
|
ldmleia sp!, {r3, pc}
|
|
ldr r3, [r0, #0xc]
|
|
mov ip, #0
|
|
mvn r2, #0
|
|
b _0200B6E0
|
|
_0200B6D8:
|
|
strh r2, [r3], #2
|
|
add ip, ip, #1
|
|
_0200B6E0:
|
|
ldr r1, [r0, #4]
|
|
cmp ip, r1
|
|
blt _0200B6D8
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end sub_0200B67C
|
|
|
|
arm_func_start sub_0200B6F0
|
|
sub_0200B6F0: ; 0x0200B6F0
|
|
stmdb sp!, {r4, lr}
|
|
ldr r4, [r0, #8]
|
|
ldr r3, [r0]
|
|
cmp r4, r3
|
|
ldmgeia sp!, {r4, pc}
|
|
cmp r2, #0
|
|
movlt r2, #0
|
|
blt _0200B71C
|
|
ldr r3, [r0, #4]
|
|
cmp r2, r3
|
|
subge r2, r3, #1
|
|
_0200B71C:
|
|
ldrh r3, [r1]
|
|
ldr lr, [r0, #0x10]
|
|
mov ip, r4, lsl #3
|
|
strh r3, [lr, ip]
|
|
ldrh ip, [r1, #2]
|
|
add lr, lr, r4, lsl #3
|
|
mov r3, r2, lsl #1
|
|
strh ip, [lr, #2]
|
|
ldrh r1, [r1, #4]
|
|
strh r1, [lr, #4]
|
|
ldr r1, [r0, #0xc]
|
|
ldrsh r1, [r1, r3]
|
|
strh r1, [lr, #6]
|
|
ldr r2, [r0, #8]
|
|
add r1, r2, #1
|
|
str r1, [r0, #8]
|
|
ldr r0, [r0, #0xc]
|
|
strh r2, [r0, r3]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_0200B6F0
|
|
|
|
arm_func_start sub_0200B768
|
|
sub_0200B768: ; 0x0200B768
|
|
bx lr
|
|
arm_func_end sub_0200B768
|
|
|
|
arm_func_start sub_0200B76C
|
|
sub_0200B76C: ; 0x0200B76C
|
|
stmdb sp!, {r4, lr}
|
|
bl sub_0207621C
|
|
ldr r2, _0200B874 ; =0x04001000
|
|
mov r0, #3
|
|
ldr r1, [r2]
|
|
bic r1, r1, #0x10000
|
|
str r1, [r2]
|
|
bl sub_0207C164
|
|
bl sub_0207729C
|
|
bl sub_020772B0
|
|
bl sub_020772C4
|
|
bl sub_020772E8
|
|
bl sub_0207730C
|
|
bl sub_02077320
|
|
bl sub_02077370
|
|
bl sub_02077384
|
|
bl sub_02077398
|
|
ldr r0, _0200B878 ; =0x000001FF
|
|
bl sub_02076E90
|
|
mov r0, #0
|
|
mov r1, #0x6800000
|
|
mov r2, #0xa4000
|
|
bl sub_0207C358
|
|
mov r0, #0xc0
|
|
mov r1, #0x7000000
|
|
mov r2, #0x400
|
|
bl sub_0207C358
|
|
mov r0, #0
|
|
mov r1, #0x5000000
|
|
mov r2, #0x400
|
|
bl sub_0207C358
|
|
mov r0, #0xc0
|
|
ldr r1, _0200B87C ; =0x07000400
|
|
mov r2, #0x400
|
|
bl sub_0207C358
|
|
mov r0, #0
|
|
ldr r1, _0200B880 ; =0x05000400
|
|
mov r2, #0x400
|
|
bl sub_0207C358
|
|
bl sub_02019304
|
|
mov r4, r0
|
|
ldr r1, _0200B884 ; =0x02092AE8
|
|
mov r2, #0xc000
|
|
bl MemcpySimple
|
|
mov r2, r4
|
|
ldr r0, _0200B888 ; =0x06806000
|
|
mov r1, #0xc000
|
|
bl DecompressAtFromMemoryPointer
|
|
mov r0, #2
|
|
mov r1, #0
|
|
mov r2, r1
|
|
bl sub_020762A0
|
|
mov r0, #0
|
|
bl sub_02076308
|
|
ldr r0, _0200B88C ; =0x0400006C
|
|
mov r1, #0
|
|
bl sub_02076324
|
|
ldr r0, _0200B890 ; =0x0400106C
|
|
mov r1, #0
|
|
bl sub_02076324
|
|
bl sub_02076258
|
|
ldr r1, _0200B874 ; =0x04001000
|
|
ldr r0, [r1]
|
|
orr r0, r0, #0x10000
|
|
str r0, [r1]
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0200B874: .word 0x04001000
|
|
_0200B878: .word 0x000001FF
|
|
_0200B87C: .word 0x07000400
|
|
_0200B880: .word 0x05000400
|
|
_0200B884: .word 0x02092AE8
|
|
_0200B888: .word 0x06806000
|
|
_0200B88C: .word 0x0400006C
|
|
_0200B890: .word 0x0400106C
|
|
arm_func_end sub_0200B76C
|
|
|
|
arm_func_start sub_0200B894
|
|
sub_0200B894: ; 0x0200B894
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
add r0, r5, #0x1c
|
|
bl sub_0200A2CC
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl sub_0200B8D4
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end sub_0200B894
|
|
|
|
arm_func_start sub_0200B8B8
|
|
sub_0200B8B8: ; 0x0200B8B8
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
mov r1, #0
|
|
bl sub_0200B8D4
|
|
add r0, r4, #0x1c
|
|
bl sub_0200A2F4
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_0200B8B8
|
|
|
|
arm_func_start sub_0200B8D4
|
|
sub_0200B8D4: ; 0x0200B8D4
|
|
ldr r2, _0200B904 ; =0x02094AE8
|
|
mov r1, r1, lsl #1
|
|
mov r3, #0
|
|
ldrsh r1, [r2, r1]
|
|
str r3, [r0]
|
|
mov r2, #1
|
|
str r2, [r0, #4]
|
|
strh r1, [r0, #0x10]
|
|
strh r1, [r0, #0x14]
|
|
str r3, [r0, #8]
|
|
str r3, [r0, #0xc]
|
|
bx lr
|
|
.align 2, 0
|
|
_0200B904: .word 0x02094AE8
|
|
arm_func_end sub_0200B8D4
|
|
|
|
arm_func_start sub_0200B908
|
|
sub_0200B908: ; 0x0200B908
|
|
ldr ip, _0200B914 ; =_0200A314
|
|
add r0, r0, #0x1c
|
|
bx ip
|
|
.align 2, 0
|
|
_0200B914: .word _0200A314
|
|
arm_func_end sub_0200B908
|
|
|
|
arm_func_start sub_0200B918
|
|
sub_0200B918: ; 0x0200B918
|
|
ldr ip, _0200B924 ; =_0200A344
|
|
add r0, r0, #0x1c
|
|
bx ip
|
|
.align 2, 0
|
|
_0200B924: .word _0200A344
|
|
arm_func_end sub_0200B918
|
|
|
|
arm_func_start sub_0200B928
|
|
sub_0200B928: ; 0x0200B928
|
|
mov r2, #0
|
|
strh r2, [r0, #0x10]
|
|
cmp r1, #0
|
|
ldrnesh r2, [r0, #0x14]
|
|
cmpne r2, #0
|
|
bne _0200B958
|
|
mov r2, #0
|
|
strh r2, [r0, #0x14]
|
|
mov r1, #1
|
|
stmib r0, {r1, r2}
|
|
str r2, [r0, #0xc]
|
|
bx lr
|
|
_0200B958:
|
|
cmp r1, #0
|
|
movlt r1, #0x1e
|
|
cmp r2, #0
|
|
movlt r2, #2
|
|
strlt r2, [r0, #4]
|
|
ldrltsh r2, [r0, #0x14]
|
|
rsblt r2, r2, #0
|
|
movge r2, #3
|
|
strge r2, [r0, #4]
|
|
ldrgesh r2, [r0, #0x14]
|
|
strh r2, [r0, #0x12]
|
|
str r1, [r0, #8]
|
|
str r1, [r0, #0xc]
|
|
bx lr
|
|
arm_func_end sub_0200B928
|
|
|
|
arm_func_start sub_0200B990
|
|
sub_0200B990: ; 0x0200B990
|
|
ldr r3, _0200BA00 ; =0x02094AE8
|
|
mov ip, r1, lsl #1
|
|
ldrsh r3, [r3, ip]
|
|
cmp r2, #0
|
|
strh r3, [r0, #0x10]
|
|
ldrnesh r3, [r0, #0x10]
|
|
ldrnesh ip, [r0, #0x14]
|
|
cmpne ip, r3
|
|
bne _0200B9D4
|
|
ldrsh r3, [r0, #0x10]
|
|
mov r2, #1
|
|
mov r1, #0
|
|
strh r3, [r0, #0x14]
|
|
str r2, [r0, #4]
|
|
str r1, [r0, #8]
|
|
str r1, [r0, #0xc]
|
|
bx lr
|
|
_0200B9D4:
|
|
cmp r2, #0
|
|
movlt r2, #0x1e
|
|
cmp r3, #0
|
|
sublt r3, ip, r3
|
|
subge r3, r3, ip
|
|
strh r3, [r0, #0x12]
|
|
ldr r3, _0200BA04 ; =0x02094AF0
|
|
ldr r1, [r3, r1, lsl #2]
|
|
stmib r0, {r1, r2}
|
|
str r2, [r0, #0xc]
|
|
bx lr
|
|
.align 2, 0
|
|
_0200BA00: .word 0x02094AE8
|
|
_0200BA04: .word 0x02094AF0
|
|
arm_func_end sub_0200B990
|
|
|
|
arm_func_start sub_0200BA08
|
|
sub_0200BA08: ; 0x0200BA08
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #5
|
|
addls pc, pc, r0, lsl #2
|
|
b _0200BB58
|
|
_0200BA20: ; jump table
|
|
b _0200BB50 ; case 0
|
|
b _0200BB40 ; case 1
|
|
b _0200BA38 ; case 2
|
|
b _0200BA80 ; case 3
|
|
b _0200BAC8 ; case 4
|
|
b _0200BB04 ; case 5
|
|
_0200BA38:
|
|
ldr r0, [r4, #8]
|
|
sub r2, r0, #1
|
|
str r2, [r4, #8]
|
|
cmp r2, #0
|
|
ldrlesh r1, [r4, #0x10]
|
|
movle r0, #0
|
|
strleh r1, [r4, #0x14]
|
|
strle r0, [r4, #4]
|
|
ble _0200BA78
|
|
ldrsh r0, [r4, #0x12]
|
|
ldr r1, [r4, #0xc]
|
|
mul r0, r2, r0
|
|
bl DivideInt
|
|
ldrsh r1, [r4, #0x10]
|
|
sub r0, r1, r0
|
|
strh r0, [r4, #0x14]
|
|
_0200BA78:
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
_0200BA80:
|
|
ldr r0, [r4, #8]
|
|
sub r2, r0, #1
|
|
str r2, [r4, #8]
|
|
cmp r2, #0
|
|
ldrlesh r1, [r4, #0x10]
|
|
movle r0, #0
|
|
strleh r1, [r4, #0x14]
|
|
strle r0, [r4, #4]
|
|
ble _0200BAC0
|
|
ldrsh r0, [r4, #0x12]
|
|
ldr r1, [r4, #0xc]
|
|
mul r0, r2, r0
|
|
bl DivideInt
|
|
ldrsh r1, [r4, #0x10]
|
|
add r0, r1, r0
|
|
strh r0, [r4, #0x14]
|
|
_0200BAC0:
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
_0200BAC8:
|
|
ldr r0, [r4, #8]
|
|
sub r2, r0, #1
|
|
str r2, [r4, #8]
|
|
cmp r2, #0
|
|
ldrlesh r0, [r4, #0x10]
|
|
ble _0200BAF8
|
|
ldrsh r0, [r4, #0x12]
|
|
ldr r1, [r4, #0xc]
|
|
mul r0, r2, r0
|
|
bl DivideInt
|
|
ldrsh r1, [r4, #0x10]
|
|
sub r0, r1, r0
|
|
_0200BAF8:
|
|
strh r0, [r4, #0x14]
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
_0200BB04:
|
|
ldr r0, [r4, #8]
|
|
sub r2, r0, #1
|
|
str r2, [r4, #8]
|
|
cmp r2, #0
|
|
ldrlesh r0, [r4, #0x10]
|
|
ble _0200BB34
|
|
ldrsh r0, [r4, #0x12]
|
|
ldr r1, [r4, #0xc]
|
|
mul r0, r2, r0
|
|
bl DivideInt
|
|
ldrsh r1, [r4, #0x10]
|
|
add r0, r1, r0
|
|
_0200BB34:
|
|
strh r0, [r4, #0x14]
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
_0200BB40:
|
|
mov r0, #0
|
|
str r0, [r4, #4]
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
_0200BB50:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
_0200BB58:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_0200BA08
|
|
|
|
arm_func_start sub_0200BB60
|
|
sub_0200BB60: ; 0x0200BB60
|
|
ldr ip, _0200BB70 ; =sub_0200B928
|
|
mov r2, #1
|
|
str r2, [r0]
|
|
bx ip
|
|
.align 2, 0
|
|
_0200BB70: .word sub_0200B928
|
|
arm_func_end sub_0200BB60
|
|
|
|
arm_func_start sub_0200BB74
|
|
sub_0200BB74: ; 0x0200BB74
|
|
ldr ip, _0200BB84 ; =sub_0200B990
|
|
mov r3, #1
|
|
str r3, [r0]
|
|
bx ip
|
|
.align 2, 0
|
|
_0200BB84: .word sub_0200B990
|
|
arm_func_end sub_0200BB74
|
|
|
|
arm_func_start sub_0200BB88
|
|
sub_0200BB88: ; 0x0200BB88
|
|
mov r2, #1
|
|
str r2, [r0]
|
|
mov r2, #0
|
|
strh r2, [r0, #0x10]
|
|
cmp r1, #0
|
|
ldrnesh r2, [r0, #0x14]
|
|
cmpne r2, #0
|
|
bne _0200BBC0
|
|
mov r2, #0
|
|
strh r2, [r0, #0x14]
|
|
mov r1, #1
|
|
stmib r0, {r1, r2}
|
|
str r2, [r0, #0xc]
|
|
bx lr
|
|
_0200BBC0:
|
|
cmp r1, #0
|
|
movlt r1, #0x1e
|
|
cmp r2, #0
|
|
movlt r2, #4
|
|
strlt r2, [r0, #4]
|
|
ldrltsh r2, [r0, #0x14]
|
|
rsblt r2, r2, #0
|
|
movge r2, #5
|
|
strge r2, [r0, #4]
|
|
ldrgesh r2, [r0, #0x14]
|
|
strh r2, [r0, #0x12]
|
|
str r1, [r0, #8]
|
|
str r1, [r0, #0xc]
|
|
bx lr
|
|
arm_func_end sub_0200BB88
|
|
|
|
arm_func_start sub_0200BBF8
|
|
sub_0200BBF8: ; 0x0200BBF8
|
|
mov ip, #1
|
|
cmp r1, #0
|
|
movlt r1, #0x1e
|
|
str ip, [r0]
|
|
cmp r2, r3
|
|
movgt ip, #3
|
|
strgt ip, [r0, #4]
|
|
subgt ip, r2, r3
|
|
strgth ip, [r0, #0x12]
|
|
bgt _0200BC40
|
|
movlt ip, #2
|
|
strlt ip, [r0, #4]
|
|
sublt ip, r3, r2
|
|
strlth ip, [r0, #0x12]
|
|
movge ip, #1
|
|
strge ip, [r0, #4]
|
|
movge ip, #0
|
|
strgeh ip, [r0, #0x12]
|
|
_0200BC40:
|
|
str r1, [r0, #8]
|
|
str r1, [r0, #0xc]
|
|
strh r2, [r0, #0x14]
|
|
strh r3, [r0, #0x10]
|
|
bx lr
|
|
arm_func_end sub_0200BBF8
|
|
|
|
arm_func_start sub_0200BC54
|
|
sub_0200BC54: ; 0x0200BC54
|
|
ldr ip, _0200BC5C ; =sub_0200BA08
|
|
bx ip
|
|
.align 2, 0
|
|
_0200BC5C: .word sub_0200BA08
|
|
arm_func_end sub_0200BC54
|
|
|
|
arm_func_start sub_0200BC60
|
|
sub_0200BC60: ; 0x0200BC60
|
|
stmdb sp!, {r4, lr}
|
|
str r1, [r0]
|
|
add r4, r0, #0x16
|
|
mov lr, #4
|
|
_0200BC70:
|
|
ldrb ip, [r3], #1
|
|
subs lr, lr, #1
|
|
strb ip, [r4], #1
|
|
bne _0200BC70
|
|
cmp r1, #3
|
|
cmpne r1, #5
|
|
cmpne r1, #7
|
|
cmpne r1, #9
|
|
cmpne r1, #0xb
|
|
bne _0200BCA4
|
|
mov r1, #2
|
|
bl sub_0200B990
|
|
ldmia sp!, {r4, pc}
|
|
_0200BCA4:
|
|
mov r1, r2
|
|
bl sub_0200B928
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_0200BC60
|
|
|
|
arm_func_start sub_0200BCB0
|
|
sub_0200BCB0: ; 0x0200BCB0
|
|
stmdb sp!, {r4, lr}
|
|
str r1, [r0]
|
|
add r4, r0, #0x16
|
|
mov lr, #4
|
|
_0200BCC0:
|
|
ldrb ip, [r3], #1
|
|
subs lr, lr, #1
|
|
strb ip, [r4], #1
|
|
bne _0200BCC0
|
|
cmp r1, #1
|
|
bne _0200BCE4
|
|
mov r1, #1
|
|
bl sub_0200B990
|
|
ldmia sp!, {r4, pc}
|
|
_0200BCE4:
|
|
cmp r1, #3
|
|
cmpne r1, #5
|
|
cmpne r1, #7
|
|
cmpne r1, #9
|
|
cmpne r1, #0xb
|
|
bne _0200BD08
|
|
mov r1, r2
|
|
bl sub_0200B928
|
|
ldmia sp!, {r4, pc}
|
|
_0200BD08:
|
|
mov r1, #2
|
|
bl sub_0200B990
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end sub_0200BCB0
|
|
|
|
arm_func_start sub_0200BD14
|
|
sub_0200BD14: ; 0x0200BD14
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
arm_func_end sub_0200BD14
|
|
|
|
arm_func_start sub_0200BD2C
|
|
sub_0200BD2C: ; 0x0200BD2C
|
|
ldrsh r1, [r0, #0x10]
|
|
mvn r0, #0xff
|
|
cmp r1, r0
|
|
moveq r0, #1
|
|
bxeq lr
|
|
cmp r1, #0x100
|
|
moveq r0, #2
|
|
movne r0, #0
|
|
bx lr
|
|
arm_func_end sub_0200BD2C
|
|
|
|
arm_func_start sub_0200BD50
|
|
sub_0200BD50: ; 0x0200BD50
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #4
|
|
mov r4, r0
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
ldreq r0, [r4, #4]
|
|
cmpeq r0, #0
|
|
beq _0200C000
|
|
mov r0, r4
|
|
bl sub_0200BA08
|
|
cmp r0, #0
|
|
beq _0200BF90
|
|
ldr r0, [r4]
|
|
cmp r0, #0xb
|
|
addls pc, pc, r0, lsl #2
|
|
b _0200C000
|
|
_0200BD90: ; jump table
|
|
b _0200C000 ; case 0
|
|
b _0200BDC0 ; case 1
|
|
b _0200BDDC ; case 2
|
|
b _0200BDFC ; case 3
|
|
b _0200BE10 ; case 4
|
|
b _0200BE30 ; case 5
|
|
b _0200BE44 ; case 6
|
|
b _0200BEB0 ; case 7
|
|
b _0200BE44 ; case 8
|
|
b _0200BEB0 ; case 9
|
|
b _0200BF10 ; case 10
|
|
b _0200BF54 ; case 11
|
|
_0200BDC0:
|
|
ldrsh r1, [r4, #0x14]
|
|
add r0, r4, #0x1c
|
|
add r1, r1, #0x100
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
bl sub_0200A37C
|
|
b _0200C000
|
|
_0200BDDC:
|
|
ldrsh r1, [r4, #0x14]
|
|
add r0, r4, #0x1c
|
|
add r2, r4, #0x16
|
|
rsb r1, r1, #0x100
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
bl sub_0200A3A8
|
|
b _0200C000
|
|
_0200BDFC:
|
|
ldrh r1, [r4, #0x14]
|
|
add r0, r4, #0x1c
|
|
add r2, r4, #0x16
|
|
bl sub_0200A3DC
|
|
b _0200C000
|
|
_0200BE10:
|
|
ldrsh r1, [r4, #0x14]
|
|
add r0, r4, #0x1c
|
|
add r2, r4, #0x16
|
|
rsb r1, r1, #0x100
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
bl sub_0200A410
|
|
b _0200C000
|
|
_0200BE30:
|
|
ldrh r1, [r4, #0x14]
|
|
add r0, r4, #0x1c
|
|
add r2, r4, #0x16
|
|
bl sub_0200A444
|
|
b _0200C000
|
|
_0200BE44:
|
|
cmp r0, #6
|
|
beq _0200BE58
|
|
cmp r0, #8
|
|
beq _0200BE74
|
|
b _0200BE90
|
|
_0200BE58:
|
|
mov r1, #0x90
|
|
mov r0, #0xff
|
|
strb r1, [sp]
|
|
strb r1, [sp, #1]
|
|
strb r0, [sp, #2]
|
|
strb r0, [sp, #3]
|
|
b _0200BE90
|
|
_0200BE74:
|
|
mov r2, #0xff
|
|
mov r1, #0xc0
|
|
mov r0, #0x80
|
|
strb r2, [sp]
|
|
strb r1, [sp, #1]
|
|
strb r0, [sp, #2]
|
|
strb r2, [sp, #3]
|
|
_0200BE90:
|
|
ldrsh r1, [r4, #0x14]
|
|
add r2, sp, #0
|
|
add r0, r4, #0x1c
|
|
rsb r1, r1, #0x100
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
bl sub_0200A410
|
|
b _0200C000
|
|
_0200BEB0:
|
|
cmp r0, #7
|
|
beq _0200BEC4
|
|
cmp r0, #9
|
|
beq _0200BEE0
|
|
b _0200BEFC
|
|
_0200BEC4:
|
|
mov r1, #0x90
|
|
mov r0, #0xff
|
|
strb r1, [sp]
|
|
strb r1, [sp, #1]
|
|
strb r0, [sp, #2]
|
|
strb r0, [sp, #3]
|
|
b _0200BEFC
|
|
_0200BEE0:
|
|
mov r2, #0xff
|
|
mov r1, #0xc0
|
|
mov r0, #0x80
|
|
strb r2, [sp]
|
|
strb r1, [sp, #1]
|
|
strb r0, [sp, #2]
|
|
strb r2, [sp, #3]
|
|
_0200BEFC:
|
|
ldrh r1, [r4, #0x14]
|
|
add r2, sp, #0
|
|
add r0, r4, #0x1c
|
|
bl sub_0200A444
|
|
b _0200C000
|
|
_0200BF10:
|
|
mov r0, #0xff
|
|
strb r0, [sp]
|
|
strb r0, [sp, #1]
|
|
strb r0, [sp, #2]
|
|
strb r0, [sp, #3]
|
|
ldrsh r1, [r4, #0x14]
|
|
add r2, sp, #0
|
|
add r0, r4, #0x1c
|
|
add r3, r1, r1, lsl #1
|
|
mov r1, r3, asr #1
|
|
add r1, r3, r1, lsr #30
|
|
mov r1, r1, asr #2
|
|
rsb r1, r1, #0x100
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
bl sub_0200A3A8
|
|
b _0200C000
|
|
_0200BF54:
|
|
mov r0, #0xff
|
|
strb r0, [sp]
|
|
strb r0, [sp, #1]
|
|
strb r0, [sp, #2]
|
|
strb r0, [sp, #3]
|
|
ldrsh r1, [r4, #0x14]
|
|
add r2, sp, #0
|
|
add r0, r4, #0x1c
|
|
rsb r3, r1, #0x100
|
|
mov r1, r3, asr #1
|
|
add r1, r3, r1, lsr #30
|
|
mov r1, r1, lsl #0xe
|
|
mov r1, r1, lsr #0x10
|
|
bl sub_0200A3A8
|
|
b _0200C000
|
|
_0200BF90:
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #0
|
|
bne _0200C000
|
|
ldr r0, [r4]
|
|
cmp r0, #0xb
|
|
addls pc, pc, r0, lsl #2
|
|
b _0200C000
|
|
_0200BFAC: ; jump table
|
|
b _0200C000 ; case 0
|
|
b _0200C000 ; case 1
|
|
b _0200BFDC ; case 2
|
|
b _0200BFF0 ; case 3
|
|
b _0200BFDC ; case 4
|
|
b _0200BFF0 ; case 5
|
|
b _0200BFDC ; case 6
|
|
b _0200BFF0 ; case 7
|
|
b _0200BFDC ; case 8
|
|
b _0200BFF0 ; case 9
|
|
b _0200BFDC ; case 10
|
|
b _0200BFF0 ; case 11
|
|
_0200BFDC:
|
|
ldrsh r0, [r4, #0x14]
|
|
cmp r0, #0x100
|
|
movge r0, #0
|
|
strge r0, [r4]
|
|
b _0200C000
|
|
_0200BFF0:
|
|
ldrsh r0, [r4, #0x14]
|
|
cmp r0, #0
|
|
movle r0, #0
|
|
strle r0, [r4]
|
|
_0200C000:
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, pc}
|
|
arm_func_end sub_0200BD50
|
|
|
|
arm_func_start sub_0200C008
|
|
sub_0200C008: ; 0x0200C008
|
|
ldr ip, _0200C01C ; =sub_0200A29C
|
|
mov r3, r2, lsl #0x10
|
|
mov r2, r1
|
|
mov r1, r3, lsr #0x10
|
|
bx ip
|
|
.align 2, 0
|
|
_0200C01C: .word sub_0200A29C
|
|
arm_func_end sub_0200C008
|
|
|
|
arm_func_start sub_0200C020
|
|
sub_0200C020: ; 0x0200C020
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #4
|
|
ldr ip, [sp, #0x10]
|
|
cmp ip, #0
|
|
beq _0200C084
|
|
ldrb lr, [r1]
|
|
mov r4, #0xff
|
|
ldrb lr, [ip, lr, lsl #2]
|
|
mul lr, r3, lr
|
|
mov lr, lr, lsr #5
|
|
strb lr, [sp]
|
|
ldrb lr, [r1, #1]
|
|
add lr, ip, lr, lsl #2
|
|
ldrb lr, [lr, #1]
|
|
mul lr, r3, lr
|
|
mov lr, lr, lsr #5
|
|
strb lr, [sp, #1]
|
|
ldrb r1, [r1, #2]
|
|
add r1, ip, r1, lsl #2
|
|
ldrb r1, [r1, #2]
|
|
mul r1, r3, r1
|
|
mov r1, r1, lsr #5
|
|
strb r1, [sp, #2]
|
|
strb r4, [sp, #3]
|
|
b _0200C0BC
|
|
_0200C084:
|
|
ldrb r4, [r1]
|
|
mov ip, #0xff
|
|
mul lr, r4, r3
|
|
mov r4, lr, lsr #5
|
|
strb r4, [sp]
|
|
ldrb lr, [r1, #1]
|
|
mul r4, lr, r3
|
|
mov r4, r4, lsr #5
|
|
strb r4, [sp, #1]
|
|
ldrb r1, [r1, #2]
|
|
mul r3, r1, r3
|
|
mov r1, r3, lsr #5
|
|
strb r1, [sp, #2]
|
|
strb ip, [sp, #3]
|
|
_0200C0BC:
|
|
mov r1, r2, lsl #0x10
|
|
add r2, sp, #0
|
|
mov r1, r1, lsr #0x10
|
|
bl sub_0200A590
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, pc}
|
|
arm_func_end sub_0200C020
|
|
|
|
arm_func_start sub_0200C0D4
|
|
sub_0200C0D4: ; 0x0200C0D4
|
|
stmdb sp!, {r3, lr}
|
|
bl sub_0200C11C
|
|
bl sub_0200C168
|
|
bl sub_0200C24C
|
|
bl sub_0200C250
|
|
bl sub_0200C254
|
|
bl sub_0200C258
|
|
bl sub_0200C230
|
|
ldr r0, _0200C108 ; =0x020AF698
|
|
mov r1, #1
|
|
str r1, [r0]
|
|
bl sub_0200C10C
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0200C108: .word 0x020AF698
|
|
arm_func_end sub_0200C0D4
|
|
|
|
arm_func_start sub_0200C10C
|
|
sub_0200C10C: ; 0x0200C10C
|
|
bx lr
|
|
arm_func_end sub_0200C10C
|
|
|
|
arm_func_start GetDebugFlag1
|
|
GetDebugFlag1: ; 0x0200C110
|
|
mov r0, #0
|
|
bx lr
|
|
arm_func_end GetDebugFlag1
|
|
|
|
arm_func_start SetDebugFlag1
|
|
SetDebugFlag1: ; 0x0200C118
|
|
bx lr
|
|
arm_func_end SetDebugFlag1
|
|
|
|
arm_func_start sub_0200C11C
|
|
sub_0200C11C: ; 0x0200C11C
|
|
bx lr
|
|
arm_func_end sub_0200C11C
|
|
|
|
arm_func_start AppendProgPos
|
|
AppendProgPos: ; 0x0200C120
|
|
stmdb sp!, {r3, lr}
|
|
mov ip, r1
|
|
cmp r2, #0
|
|
ldreq r2, _0200C15C ; =0x02094AFC
|
|
cmp ip, #0
|
|
beq _0200C150
|
|
ldr r3, [ip, #4]
|
|
ldr r1, _0200C160 ; =0x02094B00
|
|
str r3, [sp]
|
|
ldr r3, [ip]
|
|
bl Sprintf
|
|
ldmia sp!, {r3, pc}
|
|
_0200C150:
|
|
ldr r1, _0200C164 ; =0x02094B1C
|
|
bl Sprintf
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0200C15C: .word 0x02094AFC
|
|
_0200C160: .word 0x02094B00
|
|
_0200C164: .word 0x02094B1C
|
|
arm_func_end AppendProgPos
|
|
|
|
arm_func_start sub_0200C168
|
|
sub_0200C168: ; 0x0200C168
|
|
bx lr
|
|
arm_func_end sub_0200C168
|
|
|
|
arm_func_start DebugPrintTrace
|
|
DebugPrintTrace: ; 0x0200C16C
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #0x100
|
|
mov r2, r0
|
|
cmp r1, #0
|
|
add r0, sp, #0
|
|
beq _0200C1A0
|
|
cmp r2, #0
|
|
beq _0200C194
|
|
bl AppendProgPos
|
|
b _0200C1BC
|
|
_0200C194:
|
|
ldr r2, _0200C1C4 ; =0x02094B34
|
|
bl AppendProgPos
|
|
b _0200C1BC
|
|
_0200C1A0:
|
|
cmp r2, #0
|
|
beq _0200C1B4
|
|
mov r1, r2
|
|
bl Strcpy
|
|
b _0200C1BC
|
|
_0200C1B4:
|
|
ldr r1, _0200C1C4 ; =0x02094B34
|
|
bl Strcpy
|
|
_0200C1BC:
|
|
add sp, sp, #0x100
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0200C1C4: .word 0x02094B34
|
|
arm_func_end DebugPrintTrace
|
|
|
|
arm_func_start DebugPrint0__0200C1C8
|
|
DebugPrint0__0200C1C8: ; 0x0200C1C8
|
|
stmdb sp!, {r0, r1, r2, r3}
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #0x100
|
|
add r0, sp, #0x108
|
|
bic r2, r0, #3
|
|
ldr r1, [sp, #0x108]
|
|
add r0, sp, #0
|
|
add r2, r2, #4
|
|
bl Vsprintf
|
|
add sp, sp, #0x100
|
|
ldmia sp!, {r3, lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
arm_func_end DebugPrint0__0200C1C8
|
|
|
|
arm_func_start DebugPrint0__0200C1FC
|
|
DebugPrint0__0200C1FC: ; 0x0200C1FC
|
|
stmdb sp!, {r0, r1, r2, r3}
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #0x100
|
|
add r0, sp, #0x108
|
|
bic r2, r0, #3
|
|
ldr r1, [sp, #0x108]
|
|
add r0, sp, #0
|
|
add r2, r2, #4
|
|
bl Vsprintf
|
|
add sp, sp, #0x100
|
|
ldmia sp!, {r3, lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
arm_func_end DebugPrint0__0200C1FC
|
|
|
|
arm_func_start sub_0200C230
|
|
sub_0200C230: ; 0x0200C230
|
|
bx lr
|
|
arm_func_end sub_0200C230
|
|
|
|
arm_func_start GetDebugFlag2
|
|
GetDebugFlag2: ; 0x0200C234
|
|
mov r0, #0
|
|
bx lr
|
|
arm_func_end GetDebugFlag2
|
|
|
|
arm_func_start SetDebugFlag2
|
|
SetDebugFlag2: ; 0x0200C23C
|
|
bx lr
|
|
arm_func_end SetDebugFlag2
|
|
|
|
arm_func_start DebugPrint
|
|
DebugPrint: ; 0x0200C240
|
|
stmdb sp!, {r0, r1, r2, r3}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
arm_func_end DebugPrint
|
|
|
|
arm_func_start sub_0200C24C
|
|
sub_0200C24C: ; 0x0200C24C
|
|
bx lr
|
|
arm_func_end sub_0200C24C
|
|
|
|
arm_func_start sub_0200C250
|
|
sub_0200C250: ; 0x0200C250
|
|
bx lr
|
|
arm_func_end sub_0200C250
|
|
|
|
arm_func_start sub_0200C254
|
|
sub_0200C254: ; 0x0200C254
|
|
bx lr
|
|
arm_func_end sub_0200C254
|
|
|
|
arm_func_start sub_0200C258
|
|
sub_0200C258: ; 0x0200C258
|
|
bx lr
|
|
arm_func_end sub_0200C258
|
|
|
|
arm_func_start FatalError
|
|
FatalError: ; 0x0200C25C
|
|
stmdb sp!, {r0, r1, r2, r3}
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #0x100
|
|
mov r1, r0
|
|
ldr r0, _0200C2CC ; =0x02094B40
|
|
bl DebugPrintTrace
|
|
ldr r1, [sp, #0x10c]
|
|
add r0, sp, #0
|
|
cmp r1, #0
|
|
beq _0200C2A4
|
|
add r2, sp, #0x10c
|
|
bic r2, r2, #3
|
|
add r2, r2, #4
|
|
bl Vsprintf
|
|
ldr r1, _0200C2D0 ; =0x02094B54
|
|
add r0, sp, #0
|
|
bl Strcat
|
|
b _0200C2AC
|
|
_0200C2A4:
|
|
ldr r1, _0200C2D4 ; =0x02094B58
|
|
bl Strcpy
|
|
_0200C2AC:
|
|
ldr r0, _0200C2D8 ; =0x02094B60
|
|
add r1, sp, #0
|
|
bl DebugPrint0__0200C1C8
|
|
bl WaitForever
|
|
add sp, sp, #0x100
|
|
ldmia sp!, {r3, lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
.align 2, 0
|
|
_0200C2CC: .word 0x02094B40
|
|
_0200C2D0: .word 0x02094B54
|
|
_0200C2D4: .word 0x02094B58
|
|
_0200C2D8: .word 0x02094B60
|
|
arm_func_end FatalError
|