mirror of
https://github.com/pret/pokediamond.git
synced 2026-10-25 08:32:52 -05:00
8341 lines
144 KiB
ArmAsm
8341 lines
144 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
|
|
.text
|
|
|
|
thumb_func_start FUN_020023C0
|
|
FUN_020023C0: ; 0x020023C0
|
|
push {r3-r6, lr}
|
|
sub sp, #0xc
|
|
add r4, r0, #0x0
|
|
add r1, r4, #0x0
|
|
add r1, #0x24
|
|
ldrb r1, [r1, #0x0]
|
|
add r6, r4, #0x0
|
|
add r6, #0x1c
|
|
cmp r1, #0x6
|
|
bls _020023D6
|
|
b _02002838
|
|
_020023D6:
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #0x6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_020023E2: ; jump table (using 16-bit offset)
|
|
.short _020023F0 - _020023E2 - 2; case 0
|
|
.short _02002742 - _020023E2 - 2; case 1
|
|
.short _0200275C - _020023E2 - 2; case 2
|
|
.short _02002786 - _020023E2 - 2; case 3
|
|
.short _020027B6 - _020023E2 - 2; case 4
|
|
.short _0200280C - _020023E2 - 2; case 5
|
|
.short _02002818 - _020023E2 - 2; case 6
|
|
_020023F0:
|
|
ldr r0, _02002658 ; =0x021C48B8
|
|
ldr r1, [r0, #0x44]
|
|
mov r0, #0x3
|
|
tst r0, r1
|
|
beq _02002402
|
|
ldrb r0, [r6, #0x0]
|
|
lsl r0, r0, #0x1b
|
|
lsr r0, r0, #0x1f
|
|
bne _02002414
|
|
_02002402:
|
|
ldr r0, _0200265C ; =0x021C48F8
|
|
ldrh r0, [r0, #0x22]
|
|
cmp r0, #0x0
|
|
beq _02002432
|
|
ldr r0, _02002660 ; =0x02106FC4
|
|
ldrb r0, [r0, #0x0]
|
|
lsl r0, r0, #0x1b
|
|
lsr r0, r0, #0x1f
|
|
beq _02002432
|
|
_02002414:
|
|
add r0, r4, #0x0
|
|
mov r1, #0x0
|
|
add r0, #0x26
|
|
strb r1, [r0, #0x0]
|
|
add r0, r4, #0x0
|
|
add r0, #0x25
|
|
ldrb r0, [r0, #0x0]
|
|
lsl r0, r0, #0x19
|
|
lsr r0, r0, #0x19
|
|
beq _02002432
|
|
ldr r1, _02002660 ; =0x02106FC4
|
|
mov r0, #0x40
|
|
ldrb r2, [r1, #0x0]
|
|
orr r0, r2
|
|
strb r0, [r1, #0x0]
|
|
_02002432:
|
|
add r0, r4, #0x0
|
|
add r0, #0x26
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, #0x0
|
|
beq _0200248C
|
|
add r0, r4, #0x0
|
|
add r0, #0x25
|
|
ldrb r0, [r0, #0x0]
|
|
lsl r0, r0, #0x19
|
|
lsr r0, r0, #0x19
|
|
beq _0200248C
|
|
add r0, r4, #0x0
|
|
add r0, #0x26
|
|
ldrb r0, [r0, #0x0]
|
|
sub r1, r0, #0x1
|
|
add r0, r4, #0x0
|
|
add r0, #0x26
|
|
strb r1, [r0, #0x0]
|
|
ldr r0, _02002660 ; =0x02106FC4
|
|
ldrb r0, [r0, #0x0]
|
|
lsl r1, r0, #0x1f
|
|
lsr r1, r1, #0x1f
|
|
beq _02002486
|
|
ldr r1, _02002658 ; =0x021C48B8
|
|
ldr r2, [r1, #0x48]
|
|
mov r1, #0x3
|
|
tst r1, r2
|
|
bne _02002478
|
|
ldr r1, _0200265C ; =0x021C48F8
|
|
ldrh r1, [r1, #0x20]
|
|
cmp r1, #0x0
|
|
beq _02002486
|
|
lsl r0, r0, #0x1b
|
|
lsr r0, r0, #0x1f
|
|
beq _02002486
|
|
_02002478:
|
|
ldrb r1, [r6, #0x0]
|
|
mov r0, #0x10
|
|
add r4, #0x26
|
|
orr r0, r1
|
|
strb r0, [r6, #0x0]
|
|
mov r0, #0x0
|
|
strb r0, [r4, #0x0]
|
|
_02002486:
|
|
add sp, #0xc
|
|
mov r0, #0x3
|
|
pop {r3-r6, pc}
|
|
_0200248C:
|
|
add r0, r4, #0x0
|
|
add r0, #0x25
|
|
ldrb r0, [r0, #0x0]
|
|
lsl r0, r0, #0x19
|
|
lsr r1, r0, #0x19
|
|
add r0, r4, #0x0
|
|
add r0, #0x26
|
|
strb r1, [r0, #0x0]
|
|
ldr r0, [r4, #0x0]
|
|
ldrh r5, [r0, #0x0]
|
|
add r0, r0, #0x2
|
|
str r0, [r4, #0x0]
|
|
mov r0, #0xf1
|
|
lsl r0, r0, #0x8
|
|
cmp r5, r0
|
|
bne _020024B0
|
|
bl ErrorHandling
|
|
_020024B0:
|
|
ldr r0, _02002664 ; =0x0000F0FD
|
|
cmp r5, r0
|
|
bgt _020024DA
|
|
bge _0200250E
|
|
ldr r1, _02002668 ; =0x000025BD
|
|
cmp r5, r1
|
|
bgt _020024D0
|
|
sub r0, r1, #0x1
|
|
cmp r5, r0
|
|
blt _020024CE
|
|
bne _020024C8
|
|
b _020026D8
|
|
_020024C8:
|
|
cmp r5, r1
|
|
bne _020024CE
|
|
b _020026EC
|
|
_020024CE:
|
|
b _02002700
|
|
_020024D0:
|
|
mov r0, #0xe
|
|
lsl r0, r0, #0xc
|
|
cmp r5, r0
|
|
beq _020024F2
|
|
b _02002700
|
|
_020024DA:
|
|
ldr r0, _0200266C ; =0x0000FFFE
|
|
cmp r5, r0
|
|
bgt _020024E4
|
|
beq _0200251A
|
|
b _02002700
|
|
_020024E4:
|
|
add r0, r0, #0x1
|
|
cmp r5, r0
|
|
beq _020024EC
|
|
b _02002700
|
|
_020024EC:
|
|
add sp, #0xc
|
|
mov r0, #0x1
|
|
pop {r3-r6, pc}
|
|
_020024F2:
|
|
ldrb r0, [r4, #0xa]
|
|
mov r1, #0x1
|
|
strb r0, [r4, #0xc]
|
|
ldrb r0, [r4, #0x9]
|
|
bl FUN_02002E4C
|
|
ldrb r1, [r4, #0xf]
|
|
ldrb r2, [r4, #0xd]
|
|
add sp, #0xc
|
|
add r0, r1, r0
|
|
add r0, r2, r0
|
|
strb r0, [r4, #0xd]
|
|
mov r0, #0x2
|
|
pop {r3-r6, pc}
|
|
_0200250E:
|
|
ldr r0, [r4, #0x0]
|
|
add sp, #0xc
|
|
add r0, r0, #0x2
|
|
str r0, [r4, #0x0]
|
|
mov r0, #0x2
|
|
pop {r3-r6, pc}
|
|
_0200251A:
|
|
ldr r0, [r4, #0x0]
|
|
sub r0, r0, #0x2
|
|
str r0, [r4, #0x0]
|
|
bl FUN_0201B8E0
|
|
lsl r0, r0, #0x10
|
|
ldr r1, _02002670 ; =0x0000FE06
|
|
lsr r0, r0, #0x10
|
|
cmp r0, r1
|
|
bgt _02002552
|
|
blt _02002532
|
|
b _02002678
|
|
_02002532:
|
|
mov r1, #0x2
|
|
lsl r1, r1, #0x8
|
|
sub r1, r0, r1
|
|
cmp r1, #0x4
|
|
bhi _0200255C
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #0x6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_02002548: ; jump table (using 16-bit offset)
|
|
.short _020025B4 - _02002548 - 2; case 0
|
|
.short _020025DE - _02002548 - 2; case 1
|
|
.short _02002600 - _02002548 - 2; case 2
|
|
.short _02002618 - _02002548 - 2; case 3
|
|
.short _02002624 - _02002548 - 2; case 4
|
|
_02002552:
|
|
mov r1, #0xff
|
|
lsl r1, r1, #0x8
|
|
cmp r0, r1
|
|
bgt _0200255E
|
|
beq _02002566
|
|
_0200255C:
|
|
b _020026CA
|
|
_0200255E:
|
|
add r1, r1, #0x1
|
|
cmp r0, r1
|
|
beq _02002630
|
|
b _020026CA
|
|
_02002566:
|
|
ldr r0, [r4, #0x0]
|
|
mov r1, #0x0
|
|
bl FUN_0201B914
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
cmp r0, #0xff
|
|
bne _02002596
|
|
ldrb r0, [r4, #0x11]
|
|
ldrb r2, [r4, #0x17]
|
|
sub r1, r0, #0x1
|
|
lsr r0, r1, #0x1f
|
|
add r0, r1, r0
|
|
asr r0, r0, #0x1
|
|
add r0, #0x64
|
|
strb r0, [r4, #0x17]
|
|
cmp r2, #0x64
|
|
blo _02002644
|
|
cmp r2, #0x6b
|
|
bhs _02002644
|
|
sub r2, #0x64
|
|
lsl r0, r2, #0x10
|
|
lsr r0, r0, #0x10
|
|
b _0200259E
|
|
_02002596:
|
|
cmp r0, #0x64
|
|
blo _0200259E
|
|
strb r0, [r4, #0x17]
|
|
b _020026CA
|
|
_0200259E:
|
|
lsl r1, r0, #0x1
|
|
add r0, r1, #0x1
|
|
strb r0, [r4, #0x11]
|
|
add r0, r1, #0x2
|
|
strb r0, [r4, #0x13]
|
|
ldrb r0, [r4, #0x11]
|
|
ldrb r1, [r4, #0x12]
|
|
ldrb r2, [r4, #0x13]
|
|
bl FUN_0201C05C
|
|
b _020026CA
|
|
_020025B4:
|
|
ldr r0, [r4, #0x0]
|
|
mov r1, #0x0
|
|
bl FUN_0201B914
|
|
lsl r0, r0, #0x10
|
|
lsr r3, r0, #0x10
|
|
ldrb r1, [r4, #0xc]
|
|
ldrb r2, [r4, #0xd]
|
|
add r0, r4, #0x0
|
|
bl FUN_0201C1EC
|
|
add r0, r4, #0x0
|
|
add r0, #0x25
|
|
ldrb r0, [r0, #0x0]
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x1f
|
|
beq _020026CA
|
|
ldr r0, [r4, #0x4]
|
|
bl FUN_020191D0
|
|
b _020026CA
|
|
_020025DE:
|
|
ldr r0, [r4, #0x0]
|
|
mov r1, #0x0
|
|
bl FUN_0201B914
|
|
add r1, r4, #0x0
|
|
add r1, #0x26
|
|
strb r0, [r1, #0x0]
|
|
ldr r0, [r4, #0x0]
|
|
bl FUN_0201B8B8
|
|
str r0, [r4, #0x0]
|
|
mov r0, #0x6
|
|
add r4, #0x24
|
|
strb r0, [r4, #0x0]
|
|
add sp, #0xc
|
|
mov r0, #0x3
|
|
pop {r3-r6, pc}
|
|
_02002600:
|
|
ldr r0, [r4, #0x0]
|
|
mov r1, #0x0
|
|
bl FUN_0201B914
|
|
strh r0, [r4, #0x2a]
|
|
ldr r0, [r4, #0x0]
|
|
bl FUN_0201B8B8
|
|
str r0, [r4, #0x0]
|
|
add sp, #0xc
|
|
mov r0, #0x3
|
|
pop {r3-r6, pc}
|
|
_02002618:
|
|
ldr r0, [r4, #0x0]
|
|
mov r1, #0x0
|
|
bl FUN_0201B914
|
|
strb r0, [r4, #0xc]
|
|
b _020026CA
|
|
_02002624:
|
|
ldr r0, [r4, #0x0]
|
|
mov r1, #0x0
|
|
bl FUN_0201B914
|
|
strb r0, [r4, #0xd]
|
|
b _020026CA
|
|
_02002630:
|
|
ldr r0, [r4, #0x0]
|
|
mov r1, #0x0
|
|
bl FUN_0201B914
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
cmp r0, #0x64
|
|
beq _02002646
|
|
cmp r0, #0xc8
|
|
beq _0200264E
|
|
_02002644:
|
|
b _020026CA
|
|
_02002646:
|
|
mov r0, #0x0
|
|
strh r0, [r4, #0x14]
|
|
strb r0, [r4, #0x16]
|
|
b _020026CA
|
|
_0200264E:
|
|
ldr r0, _02002674 ; =0x0000FFFC
|
|
strh r0, [r4, #0x14]
|
|
mov r0, #0x0
|
|
strb r0, [r4, #0x16]
|
|
b _020026CA
|
|
.balign 4
|
|
_02002658: .word 0x021C48B8
|
|
_0200265C: .word 0x021C48F8
|
|
_02002660: .word 0x02106FC4
|
|
_02002664: .word 0x0000F0FD
|
|
_02002668: .word 0x000025BD
|
|
_0200266C: .word 0x0000FFFE
|
|
_02002670: .word 0x0000FE06
|
|
_02002674: .word 0x0000FFFC
|
|
_02002678:
|
|
ldr r0, [r4, #0x0]
|
|
mov r1, #0x0
|
|
bl FUN_0201B914
|
|
lsl r0, r0, #0x10
|
|
lsr r1, r0, #0x10
|
|
mov r0, #0xfe
|
|
lsl r0, r0, #0x8
|
|
cmp r1, r0
|
|
beq _020026AE
|
|
add r0, r0, #0x1
|
|
cmp r1, r0
|
|
bne _020026CA
|
|
add r0, r4, #0x0
|
|
mov r1, #0x2
|
|
add r0, #0x24
|
|
strb r1, [r0, #0x0]
|
|
add r0, r4, #0x0
|
|
bl FUN_0200284C
|
|
ldr r0, [r4, #0x0]
|
|
bl FUN_0201B8B8
|
|
str r0, [r4, #0x0]
|
|
add sp, #0xc
|
|
mov r0, #0x3
|
|
pop {r3-r6, pc}
|
|
_020026AE:
|
|
add r0, r4, #0x0
|
|
mov r1, #0x3
|
|
add r0, #0x24
|
|
strb r1, [r0, #0x0]
|
|
add r0, r4, #0x0
|
|
bl FUN_0200284C
|
|
ldr r0, [r4, #0x0]
|
|
bl FUN_0201B8B8
|
|
str r0, [r4, #0x0]
|
|
add sp, #0xc
|
|
mov r0, #0x3
|
|
pop {r3-r6, pc}
|
|
_020026CA:
|
|
ldr r0, [r4, #0x0]
|
|
bl FUN_0201B8B8
|
|
str r0, [r4, #0x0]
|
|
add sp, #0xc
|
|
mov r0, #0x2
|
|
pop {r3-r6, pc}
|
|
_020026D8:
|
|
add r0, r4, #0x0
|
|
mov r1, #0x2
|
|
add r0, #0x24
|
|
strb r1, [r0, #0x0]
|
|
add r0, r4, #0x0
|
|
bl FUN_0200284C
|
|
add sp, #0xc
|
|
mov r0, #0x3
|
|
pop {r3-r6, pc}
|
|
_020026EC:
|
|
add r0, r4, #0x0
|
|
mov r1, #0x3
|
|
add r0, #0x24
|
|
strb r1, [r0, #0x0]
|
|
add r0, r4, #0x0
|
|
bl FUN_0200284C
|
|
add sp, #0xc
|
|
mov r0, #0x3
|
|
pop {r3-r6, pc}
|
|
_02002700:
|
|
ldrb r0, [r6, #0x0]
|
|
add r1, r5, #0x0
|
|
lsl r0, r0, #0x1c
|
|
lsr r0, r0, #0x1c
|
|
bl FUN_02002D94
|
|
add r5, r0, #0x0
|
|
ldrb r0, [r4, #0xc]
|
|
add r2, r5, #0x0
|
|
add r3, r5, #0x0
|
|
str r0, [sp, #0x0]
|
|
ldrb r0, [r4, #0xd]
|
|
add r2, #0x80
|
|
add r3, #0x81
|
|
str r0, [sp, #0x4]
|
|
ldrh r0, [r4, #0x14]
|
|
add r1, r5, #0x0
|
|
str r0, [sp, #0x8]
|
|
ldrb r2, [r2, #0x0]
|
|
ldrb r3, [r3, #0x0]
|
|
ldr r0, [r4, #0x4]
|
|
bl FUN_0201974C
|
|
add r5, #0x80
|
|
ldrb r1, [r5, #0x0]
|
|
ldrb r0, [r4, #0xe]
|
|
ldrb r2, [r4, #0xc]
|
|
add sp, #0xc
|
|
add r0, r1, r0
|
|
add r0, r2, r0
|
|
strb r0, [r4, #0xc]
|
|
mov r0, #0x0
|
|
pop {r3-r6, pc}
|
|
_02002742:
|
|
bl FUN_02002B3C
|
|
cmp r0, #0x0
|
|
beq _02002756
|
|
add r0, r4, #0x0
|
|
bl FUN_02002A00
|
|
mov r0, #0x0
|
|
add r4, #0x24
|
|
strb r0, [r4, #0x0]
|
|
_02002756:
|
|
add sp, #0xc
|
|
mov r0, #0x3
|
|
pop {r3-r6, pc}
|
|
_0200275C:
|
|
bl FUN_02002B18
|
|
cmp r0, #0x0
|
|
beq _02002780
|
|
add r0, r4, #0x0
|
|
bl FUN_02002A00
|
|
ldrb r1, [r4, #0x12]
|
|
ldr r0, [r4, #0x4]
|
|
bl FUN_02019620
|
|
ldrb r0, [r4, #0xa]
|
|
strb r0, [r4, #0xc]
|
|
ldrb r0, [r4, #0xb]
|
|
strb r0, [r4, #0xd]
|
|
mov r0, #0x0
|
|
add r4, #0x24
|
|
strb r0, [r4, #0x0]
|
|
_02002780:
|
|
add sp, #0xc
|
|
mov r0, #0x3
|
|
pop {r3-r6, pc}
|
|
_02002786:
|
|
bl FUN_02002B18
|
|
cmp r0, #0x0
|
|
beq _020027B0
|
|
add r0, r4, #0x0
|
|
bl FUN_02002A00
|
|
ldrb r0, [r4, #0x9]
|
|
mov r1, #0x1
|
|
bl FUN_02002E4C
|
|
ldrb r1, [r4, #0xf]
|
|
add r1, r1, r0
|
|
add r0, r4, #0x0
|
|
add r0, #0x27
|
|
strb r1, [r0, #0x0]
|
|
ldrb r0, [r4, #0xa]
|
|
strb r0, [r4, #0xc]
|
|
mov r0, #0x4
|
|
add r4, #0x24
|
|
strb r0, [r4, #0x0]
|
|
_020027B0:
|
|
add sp, #0xc
|
|
mov r0, #0x3
|
|
pop {r3-r6, pc}
|
|
_020027B6:
|
|
add r0, #0x27
|
|
ldrb r2, [r0, #0x0]
|
|
cmp r2, #0x0
|
|
beq _02002800
|
|
cmp r2, #0x4
|
|
ldrb r5, [r4, #0x12]
|
|
bge _020027D8
|
|
lsl r3, r5, #0x4
|
|
orr r3, r5
|
|
lsl r3, r3, #0x18
|
|
ldr r0, [r4, #0x4]
|
|
mov r1, #0x0
|
|
lsr r3, r3, #0x18
|
|
bl FUN_0201A8C8
|
|
mov r1, #0x0
|
|
b _020027F2
|
|
_020027D8:
|
|
lsl r3, r5, #0x4
|
|
orr r3, r5
|
|
lsl r3, r3, #0x18
|
|
ldr r0, [r4, #0x4]
|
|
mov r1, #0x0
|
|
mov r2, #0x4
|
|
lsr r3, r3, #0x18
|
|
bl FUN_0201A8C8
|
|
add r0, r4, #0x0
|
|
add r0, #0x27
|
|
ldrb r0, [r0, #0x0]
|
|
sub r1, r0, #0x4
|
|
_020027F2:
|
|
add r0, r4, #0x0
|
|
add r0, #0x27
|
|
strb r1, [r0, #0x0]
|
|
ldr r0, [r4, #0x4]
|
|
bl FUN_020191D0
|
|
b _02002806
|
|
_02002800:
|
|
mov r0, #0x0
|
|
add r4, #0x24
|
|
strb r0, [r4, #0x0]
|
|
_02002806:
|
|
add sp, #0xc
|
|
mov r0, #0x3
|
|
pop {r3-r6, pc}
|
|
_0200280C:
|
|
mov r0, #0x0
|
|
add r4, #0x24
|
|
strb r0, [r4, #0x0]
|
|
add sp, #0xc
|
|
mov r0, #0x3
|
|
pop {r3-r6, pc}
|
|
_02002818:
|
|
add r0, #0x26
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, #0x0
|
|
beq _0200282C
|
|
add r0, r4, #0x0
|
|
add r0, #0x26
|
|
ldrb r0, [r0, #0x0]
|
|
add r4, #0x26
|
|
sub r0, r0, #0x1
|
|
b _02002830
|
|
_0200282C:
|
|
mov r0, #0x0
|
|
add r4, #0x24
|
|
_02002830:
|
|
add sp, #0xc
|
|
strb r0, [r4, #0x0]
|
|
mov r0, #0x3
|
|
pop {r3-r6, pc}
|
|
_02002838:
|
|
mov r0, #0x1
|
|
add sp, #0xc
|
|
pop {r3-r6, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02002840
|
|
FUN_02002840: ; 0x02002840
|
|
ldr r1, _02002848 ; =0x02106FC4
|
|
strh r0, [r1, #0x2]
|
|
bx lr
|
|
nop
|
|
_02002848: .word 0x02106FC4
|
|
|
|
thumb_func_start FUN_0200284C
|
|
FUN_0200284C: ; 0x0200284C
|
|
ldr r1, _02002874 ; =0x02106FC4
|
|
add r0, #0x1c
|
|
ldrb r1, [r1, #0x0]
|
|
lsl r1, r1, #0x1d
|
|
lsr r1, r1, #0x1f
|
|
beq _02002862
|
|
ldrb r2, [r0, #0x2]
|
|
mov r1, #0xff
|
|
bic r2, r1
|
|
strb r2, [r0, #0x2]
|
|
bx lr
|
|
_02002862:
|
|
ldrb r2, [r0, #0x1]
|
|
mov r1, #0x60
|
|
bic r2, r1
|
|
strb r2, [r0, #0x1]
|
|
ldrb r2, [r0, #0x1]
|
|
mov r1, #0x1f
|
|
bic r2, r1
|
|
strb r2, [r0, #0x1]
|
|
bx lr
|
|
.balign 4
|
|
_02002874: .word 0x02106FC4
|
|
|
|
thumb_func_start FUN_02002878
|
|
FUN_02002878: ; 0x02002878
|
|
push {r4-r7, lr}
|
|
sub sp, #0x2c
|
|
add r5, r0, #0x0
|
|
ldr r0, _020029F8 ; =0x02106FC4
|
|
add r4, r5, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
add r4, #0x1c
|
|
lsl r0, r0, #0x1d
|
|
lsr r0, r0, #0x1f
|
|
beq _0200288E
|
|
b _020029F4
|
|
_0200288E:
|
|
ldrb r0, [r4, #0x1]
|
|
lsl r1, r0, #0x1b
|
|
lsr r2, r1, #0x1b
|
|
beq _020028AC
|
|
mov r1, #0x1f
|
|
add r2, #0xff
|
|
bic r0, r1
|
|
lsl r1, r2, #0x18
|
|
lsr r2, r1, #0x18
|
|
mov r1, #0x1f
|
|
and r1, r2
|
|
orr r0, r1
|
|
add sp, #0x2c
|
|
strb r0, [r4, #0x1]
|
|
pop {r4-r7, pc}
|
|
_020028AC:
|
|
ldr r0, [r5, #0x4]
|
|
bl FUN_0201AB08
|
|
str r0, [sp, #0x20]
|
|
ldr r0, [r5, #0x4]
|
|
bl FUN_0201AB14
|
|
str r0, [sp, #0x24]
|
|
ldr r0, [r5, #0x4]
|
|
bl FUN_0201AB18
|
|
str r0, [sp, #0x28]
|
|
ldr r0, [r5, #0x4]
|
|
bl FUN_0201AB0C
|
|
ldr r1, _020029F8 ; =0x02106FC4
|
|
ldrh r6, [r1, #0x2]
|
|
ldr r1, [sp, #0x28]
|
|
add r7, r1, #0x2
|
|
ldr r1, [sp, #0x24]
|
|
add r2, r6, #0x0
|
|
add r0, r1, r0
|
|
str r0, [sp, #0x1c]
|
|
add r0, r0, #0x1
|
|
str r0, [sp, #0x18]
|
|
lsl r0, r7, #0x18
|
|
lsr r0, r0, #0x18
|
|
str r0, [sp, #0x0]
|
|
mov r0, #0x1
|
|
str r0, [sp, #0x4]
|
|
str r0, [sp, #0x8]
|
|
mov r0, #0x10
|
|
str r0, [sp, #0xc]
|
|
add r2, #0x12
|
|
mov r12, r2
|
|
ldrb r2, [r4, #0x1]
|
|
ldr r0, [r5, #0x4]
|
|
ldr r1, [sp, #0x20]
|
|
lsl r2, r2, #0x19
|
|
lsr r3, r2, #0x1e
|
|
ldr r2, _020029FC ; =0x020ECB50
|
|
ldr r0, [r0, #0x0]
|
|
ldrb r2, [r2, r3]
|
|
mov r3, r12
|
|
lsl r2, r2, #0x2
|
|
add r2, r3, r2
|
|
ldr r3, [sp, #0x18]
|
|
lsl r2, r2, #0x10
|
|
lsl r3, r3, #0x18
|
|
lsr r2, r2, #0x10
|
|
lsr r3, r3, #0x18
|
|
bl FUN_02018540
|
|
ldr r0, [sp, #0x1c]
|
|
ldr r1, [sp, #0x20]
|
|
add r0, r0, #0x2
|
|
str r0, [sp, #0x10]
|
|
lsl r0, r7, #0x18
|
|
lsr r0, r0, #0x18
|
|
str r0, [sp, #0x0]
|
|
mov r0, #0x1
|
|
str r0, [sp, #0x4]
|
|
str r0, [sp, #0x8]
|
|
mov r0, #0x10
|
|
str r0, [sp, #0xc]
|
|
ldrb r2, [r4, #0x1]
|
|
add r7, r6, #0x0
|
|
ldr r0, [r5, #0x4]
|
|
lsl r2, r2, #0x19
|
|
lsr r3, r2, #0x1e
|
|
ldr r2, _020029FC ; =0x020ECB50
|
|
add r7, #0x13
|
|
ldrb r2, [r2, r3]
|
|
ldr r3, [sp, #0x10]
|
|
ldr r0, [r0, #0x0]
|
|
lsl r2, r2, #0x2
|
|
add r2, r7, r2
|
|
lsl r2, r2, #0x10
|
|
lsl r3, r3, #0x18
|
|
lsr r2, r2, #0x10
|
|
lsr r3, r3, #0x18
|
|
bl FUN_02018540
|
|
ldr r0, [sp, #0x28]
|
|
add r7, r6, #0x0
|
|
add r0, r0, #0x3
|
|
str r0, [sp, #0x14]
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
str r0, [sp, #0x0]
|
|
mov r0, #0x1
|
|
str r0, [sp, #0x4]
|
|
str r0, [sp, #0x8]
|
|
mov r0, #0x10
|
|
str r0, [sp, #0xc]
|
|
ldrb r2, [r4, #0x1]
|
|
ldr r0, [r5, #0x4]
|
|
add r7, #0x14
|
|
lsl r2, r2, #0x19
|
|
lsr r3, r2, #0x1e
|
|
ldr r2, _020029FC ; =0x020ECB50
|
|
ldr r0, [r0, #0x0]
|
|
ldrb r2, [r2, r3]
|
|
ldr r3, [sp, #0x18]
|
|
ldr r1, [sp, #0x20]
|
|
lsl r2, r2, #0x2
|
|
add r2, r7, r2
|
|
lsl r2, r2, #0x10
|
|
lsl r3, r3, #0x18
|
|
lsr r2, r2, #0x10
|
|
lsr r3, r3, #0x18
|
|
bl FUN_02018540
|
|
ldr r0, [sp, #0x14]
|
|
add r6, #0x15
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
str r0, [sp, #0x0]
|
|
mov r0, #0x1
|
|
str r0, [sp, #0x4]
|
|
str r0, [sp, #0x8]
|
|
mov r0, #0x10
|
|
str r0, [sp, #0xc]
|
|
ldrb r2, [r4, #0x1]
|
|
ldr r0, [r5, #0x4]
|
|
ldr r1, [sp, #0x20]
|
|
lsl r2, r2, #0x19
|
|
lsr r3, r2, #0x1e
|
|
ldr r2, _020029FC ; =0x020ECB50
|
|
ldr r0, [r0, #0x0]
|
|
ldrb r2, [r2, r3]
|
|
ldr r3, [sp, #0x10]
|
|
lsl r2, r2, #0x2
|
|
add r2, r6, r2
|
|
lsl r2, r2, #0x10
|
|
lsl r3, r3, #0x18
|
|
lsr r2, r2, #0x10
|
|
lsr r3, r3, #0x18
|
|
bl FUN_02018540
|
|
ldr r0, [r5, #0x4]
|
|
ldr r1, [sp, #0x20]
|
|
ldr r0, [r0, #0x0]
|
|
bl FUN_02017CD0
|
|
ldrb r1, [r4, #0x1]
|
|
mov r0, #0x1f
|
|
bic r1, r0
|
|
mov r0, #0x8
|
|
orr r0, r1
|
|
strb r0, [r4, #0x1]
|
|
ldrb r2, [r4, #0x1]
|
|
mov r1, #0x60
|
|
add r0, r2, #0x0
|
|
bic r0, r1
|
|
lsl r1, r2, #0x19
|
|
lsr r1, r1, #0x1e
|
|
add r1, r1, #0x1
|
|
lsl r1, r1, #0x18
|
|
lsr r1, r1, #0x18
|
|
lsl r1, r1, #0x1e
|
|
lsr r1, r1, #0x19
|
|
orr r0, r1
|
|
strb r0, [r4, #0x1]
|
|
_020029F4:
|
|
add sp, #0x2c
|
|
pop {r4-r7, pc}
|
|
.balign 4
|
|
_020029F8: .word 0x02106FC4
|
|
_020029FC: .word 0x020ECB50
|
|
|
|
thumb_func_start FUN_02002A00
|
|
FUN_02002A00: ; 0x02002A00
|
|
push {r3-r7, lr}
|
|
sub sp, #0x18
|
|
add r5, r0, #0x0
|
|
ldr r0, [r5, #0x4]
|
|
bl FUN_0201AB08
|
|
str r0, [sp, #0x10]
|
|
ldr r0, [r5, #0x4]
|
|
bl FUN_0201AB14
|
|
str r0, [sp, #0x14]
|
|
ldr r0, [r5, #0x4]
|
|
bl FUN_0201AB18
|
|
add r6, r0, #0x0
|
|
ldr r0, [r5, #0x4]
|
|
bl FUN_0201AB0C
|
|
ldr r1, _02002A90 ; =0x02106FC4
|
|
add r7, r6, #0x2
|
|
ldrh r4, [r1, #0x2]
|
|
ldr r1, [sp, #0x14]
|
|
add r6, r1, r0
|
|
lsl r0, r7, #0x18
|
|
lsr r0, r0, #0x18
|
|
str r0, [sp, #0x0]
|
|
mov r0, #0x1
|
|
str r0, [sp, #0x4]
|
|
mov r0, #0x2
|
|
str r0, [sp, #0x8]
|
|
mov r0, #0x10
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [r5, #0x4]
|
|
add r2, r4, #0x0
|
|
add r2, #0xa
|
|
add r3, r6, #0x1
|
|
lsl r2, r2, #0x10
|
|
lsl r3, r3, #0x18
|
|
ldr r0, [r0, #0x0]
|
|
ldr r1, [sp, #0x10]
|
|
lsr r2, r2, #0x10
|
|
lsr r3, r3, #0x18
|
|
bl FUN_02018540
|
|
lsl r0, r7, #0x18
|
|
lsr r0, r0, #0x18
|
|
str r0, [sp, #0x0]
|
|
mov r0, #0x1
|
|
str r0, [sp, #0x4]
|
|
mov r0, #0x2
|
|
str r0, [sp, #0x8]
|
|
mov r0, #0x10
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [r5, #0x4]
|
|
add r4, #0xb
|
|
add r3, r6, #0x2
|
|
lsl r2, r4, #0x10
|
|
lsl r3, r3, #0x18
|
|
ldr r0, [r0, #0x0]
|
|
ldr r1, [sp, #0x10]
|
|
lsr r2, r2, #0x10
|
|
lsr r3, r3, #0x18
|
|
bl FUN_02018540
|
|
ldr r0, [r5, #0x4]
|
|
ldr r1, [sp, #0x10]
|
|
ldr r0, [r0, #0x0]
|
|
bl FUN_02017CD0
|
|
add sp, #0x18
|
|
pop {r3-r7, pc}
|
|
nop
|
|
_02002A90: .word 0x02106FC4
|
|
|
|
thumb_func_start FUN_02002A94
|
|
FUN_02002A94: ; 0x02002A94
|
|
push {r3, lr}
|
|
ldr r0, _02002ACC ; =0x021C48B8
|
|
ldr r1, [r0, #0x48]
|
|
mov r0, #0x3
|
|
tst r0, r1
|
|
bne _02002AB2
|
|
ldr r0, _02002AD0 ; =0x021C48F8
|
|
ldrh r0, [r0, #0x20]
|
|
cmp r0, #0x0
|
|
beq _02002AC6
|
|
ldr r0, _02002AD4 ; =0x02106FC4
|
|
ldrb r0, [r0, #0x0]
|
|
lsl r0, r0, #0x1b
|
|
lsr r0, r0, #0x1f
|
|
beq _02002AC6
|
|
_02002AB2:
|
|
ldr r0, _02002AD8 ; =0x000005DC
|
|
bl FUN_020054C8
|
|
ldr r1, _02002AD4 ; =0x02106FC4
|
|
mov r0, #0x80
|
|
ldrb r2, [r1, #0x0]
|
|
orr r0, r2
|
|
strb r0, [r1, #0x0]
|
|
mov r0, #0x1
|
|
pop {r3, pc}
|
|
_02002AC6:
|
|
mov r0, #0x0
|
|
pop {r3, pc}
|
|
nop
|
|
_02002ACC: .word 0x021C48B8
|
|
_02002AD0: .word 0x021C48F8
|
|
_02002AD4: .word 0x02106FC4
|
|
_02002AD8: .word 0x000005DC
|
|
|
|
thumb_func_start FUN_02002ADC
|
|
FUN_02002ADC: ; 0x02002ADC
|
|
push {r4, lr}
|
|
add r2, r0, #0x0
|
|
add r2, #0x1c
|
|
ldrb r1, [r2, #0x2]
|
|
add r4, r1, #0x0
|
|
cmp r4, #0x64
|
|
bne _02002AEE
|
|
mov r0, #0x1
|
|
pop {r4, pc}
|
|
_02002AEE:
|
|
mov r3, #0xff
|
|
bic r1, r3
|
|
add r3, r4, #0x1
|
|
lsl r3, r3, #0x18
|
|
lsr r3, r3, #0x18
|
|
lsl r3, r3, #0x18
|
|
lsr r3, r3, #0x18
|
|
orr r1, r3
|
|
strb r1, [r2, #0x2]
|
|
ldr r1, _02002B14 ; =0x02106FC4
|
|
ldrb r1, [r1, #0x0]
|
|
lsl r1, r1, #0x1a
|
|
lsr r1, r1, #0x1f
|
|
beq _02002B10
|
|
bl FUN_02002A94
|
|
pop {r4, pc}
|
|
_02002B10:
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
.balign 4
|
|
_02002B14: .word 0x02106FC4
|
|
|
|
thumb_func_start FUN_02002B18
|
|
FUN_02002B18: ; 0x02002B18
|
|
push {r4, lr}
|
|
ldr r1, _02002B38 ; =0x02106FC4
|
|
add r4, r0, #0x0
|
|
ldrb r1, [r1, #0x0]
|
|
lsl r1, r1, #0x1d
|
|
lsr r1, r1, #0x1f
|
|
beq _02002B2C
|
|
bl FUN_02002ADC
|
|
pop {r4, pc}
|
|
_02002B2C:
|
|
bl FUN_02002878
|
|
add r0, r4, #0x0
|
|
bl FUN_02002A94
|
|
pop {r4, pc}
|
|
.balign 4
|
|
_02002B38: .word 0x02106FC4
|
|
|
|
thumb_func_start FUN_02002B3C
|
|
FUN_02002B3C: ; 0x02002B3C
|
|
push {r3, lr}
|
|
ldr r1, _02002B5C ; =0x02106FC4
|
|
ldrb r1, [r1, #0x0]
|
|
lsl r1, r1, #0x1d
|
|
lsr r1, r1, #0x1f
|
|
beq _02002B52
|
|
bl FUN_02002ADC
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
pop {r3, pc}
|
|
_02002B52:
|
|
bl FUN_02002A94
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
pop {r3, pc}
|
|
.balign 4
|
|
_02002B5C: .word 0x02106FC4
|
|
|
|
thumb_func_start FUN_02002B60
|
|
FUN_02002B60: ; 0x02002B60
|
|
ldr r2, _02002B78 ; =0x02106FC4
|
|
mov r1, #0x1
|
|
ldrb r3, [r2, #0x0]
|
|
lsl r0, r0, #0x18
|
|
bic r3, r1
|
|
lsr r1, r0, #0x18
|
|
mov r0, #0x1
|
|
and r0, r1
|
|
orr r0, r3
|
|
strb r0, [r2, #0x0]
|
|
bx lr
|
|
nop
|
|
_02002B78: .word 0x02106FC4
|
|
|
|
thumb_func_start FUN_02002B7C
|
|
FUN_02002B7C: ; 0x02002B7C
|
|
push {r3-r4}
|
|
ldr r1, _02002BB4 ; =0x02106FC4
|
|
mov r3, #0x4
|
|
ldrb r2, [r1, #0x0]
|
|
mov r4, #0x1
|
|
bic r2, r3
|
|
add r3, r0, #0x0
|
|
and r3, r4
|
|
lsl r3, r3, #0x18
|
|
lsr r3, r3, #0x18
|
|
lsl r3, r3, #0x1f
|
|
lsr r3, r3, #0x1d
|
|
orr r2, r3
|
|
asr r0, r0, #0x1
|
|
and r0, r4
|
|
strb r2, [r1, #0x0]
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
lsl r0, r0, #0x1f
|
|
ldrb r2, [r1, #0x0]
|
|
mov r3, #0x20
|
|
lsr r0, r0, #0x1a
|
|
bic r2, r3
|
|
orr r0, r2
|
|
strb r0, [r1, #0x0]
|
|
pop {r3-r4}
|
|
bx lr
|
|
nop
|
|
_02002BB4: .word 0x02106FC4
|
|
|
|
thumb_func_start FUN_02002BB8
|
|
FUN_02002BB8: ; 0x02002BB8
|
|
ldr r2, _02002BD0 ; =0x02106FC4
|
|
lsl r0, r0, #0x18
|
|
ldrb r3, [r2, #0x0]
|
|
lsr r0, r0, #0x18
|
|
mov r1, #0x10
|
|
lsl r0, r0, #0x1f
|
|
bic r3, r1
|
|
lsr r0, r0, #0x1b
|
|
orr r0, r3
|
|
strb r0, [r2, #0x0]
|
|
bx lr
|
|
nop
|
|
_02002BD0: .word 0x02106FC4
|
|
|
|
thumb_func_start FUN_02002BD4
|
|
FUN_02002BD4: ; 0x02002BD4
|
|
ldr r0, _02002BE0 ; =0x02106FC4
|
|
ldrb r0, [r0, #0x0]
|
|
lsl r0, r0, #0x19
|
|
lsr r0, r0, #0x1f
|
|
bx lr
|
|
nop
|
|
_02002BE0: .word 0x02106FC4
|
|
|
|
thumb_func_start FUN_02002BE4
|
|
FUN_02002BE4: ; 0x02002BE4
|
|
ldr r1, _02002BF0 ; =0x02106FC4
|
|
mov r0, #0x40
|
|
ldrb r2, [r1, #0x0]
|
|
bic r2, r0
|
|
strb r2, [r1, #0x0]
|
|
bx lr
|
|
.balign 4
|
|
_02002BF0: .word 0x02106FC4
|
|
|
|
thumb_func_start FUN_02002BF4
|
|
FUN_02002BF4: ; 0x02002BF4
|
|
ldr r0, _02002C00 ; =0x02106FC4
|
|
ldrb r0, [r0, #0x0]
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x1f
|
|
bx lr
|
|
nop
|
|
_02002C00: .word 0x02106FC4
|
|
|
|
thumb_func_start FUN_02002C04
|
|
FUN_02002C04: ; 0x02002C04
|
|
ldr r1, _02002C10 ; =0x02106FC4
|
|
mov r0, #0x80
|
|
ldrb r2, [r1, #0x0]
|
|
bic r2, r0
|
|
strb r2, [r1, #0x0]
|
|
bx lr
|
|
.balign 4
|
|
_02002C10: .word 0x02106FC4
|
|
|
|
thumb_func_start FUN_02002C14
|
|
FUN_02002C14: ; 0x02002C14
|
|
push {r4, lr}
|
|
ldr r0, _02002C44 ; =0x02106FCC
|
|
ldr r4, _02002C48 ; =0x02106FC8
|
|
mov r1, #0x0
|
|
str r0, [r4, #0x0]
|
|
add r2, r1, #0x0
|
|
add r0, r1, #0x0
|
|
_02002C22:
|
|
ldr r3, [r4, #0x0]
|
|
add r1, r1, #0x1
|
|
add r3, r3, r2
|
|
add r3, #0x84
|
|
str r0, [r3, #0x0]
|
|
ldr r3, [r4, #0x0]
|
|
add r3, r3, r2
|
|
add r3, #0x94
|
|
add r2, r2, #0x4
|
|
str r0, [r3, #0x0]
|
|
cmp r1, #0x4
|
|
blo _02002C22
|
|
ldr r0, _02002C4C ; =0x020ECB64
|
|
bl FUN_0201BCBC
|
|
pop {r4, pc}
|
|
nop
|
|
_02002C44: .word 0x02106FCC
|
|
_02002C48: .word 0x02106FC8
|
|
_02002C4C: .word 0x020ECB64
|
|
|
|
thumb_func_start FUN_02002C50
|
|
FUN_02002C50: ; 0x02002C50
|
|
push {r3-r4, lr}
|
|
sub sp, #0x4
|
|
str r1, [sp, #0x0]
|
|
lsl r4, r0, #0x2
|
|
ldr r1, _02002C78 ; =0x020ECB54
|
|
ldr r3, _02002C7C ; =0x020ECB56
|
|
ldrh r1, [r1, r4]
|
|
ldrh r3, [r3, r4]
|
|
mov r0, #0xe
|
|
mov r2, #0x1
|
|
bl FUN_02021590
|
|
ldr r1, _02002C80 ; =0x02106FC8
|
|
ldr r1, [r1, #0x0]
|
|
add r1, r1, r4
|
|
add r1, #0x94
|
|
str r0, [r1, #0x0]
|
|
add sp, #0x4
|
|
pop {r3-r4, pc}
|
|
nop
|
|
_02002C78: .word 0x020ECB54
|
|
_02002C7C: .word 0x020ECB56
|
|
_02002C80: .word 0x02106FC8
|
|
|
|
thumb_func_start FUN_02002C84
|
|
FUN_02002C84: ; 0x02002C84
|
|
push {r3-r5, lr}
|
|
add r4, r0, #0x0
|
|
add r5, r1, #0x0
|
|
cmp r4, #0x4
|
|
blt _02002C92
|
|
bl ErrorHandling
|
|
_02002C92:
|
|
ldr r0, _02002CBC ; =0x02106FC8
|
|
lsl r4, r4, #0x2
|
|
ldr r0, [r0, #0x0]
|
|
add r0, r0, r4
|
|
add r0, #0x94
|
|
ldr r0, [r0, #0x0]
|
|
cmp r0, #0x0
|
|
bne _02002CA6
|
|
bl ErrorHandling
|
|
_02002CA6:
|
|
ldr r0, _02002CBC ; =0x02106FC8
|
|
mov r1, #0x0
|
|
ldr r0, [r0, #0x0]
|
|
add r2, r5, #0x0
|
|
add r0, r0, r4
|
|
add r0, #0x94
|
|
ldr r0, [r0, #0x0]
|
|
bl FUN_020215E0
|
|
pop {r3-r5, pc}
|
|
nop
|
|
_02002CBC: .word 0x02106FC8
|
|
|
|
thumb_func_start FUN_02002CC0
|
|
FUN_02002CC0: ; 0x02002CC0
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
cmp r4, #0x4
|
|
blt _02002CCC
|
|
bl ErrorHandling
|
|
_02002CCC:
|
|
ldr r0, _02002CF4 ; =0x02106FC8
|
|
lsl r4, r4, #0x2
|
|
ldr r0, [r0, #0x0]
|
|
add r0, r0, r4
|
|
add r0, #0x94
|
|
ldr r0, [r0, #0x0]
|
|
cmp r0, #0x0
|
|
bne _02002CE0
|
|
bl ErrorHandling
|
|
_02002CE0:
|
|
ldr r0, _02002CF4 ; =0x02106FC8
|
|
mov r1, #0x1
|
|
ldr r0, [r0, #0x0]
|
|
mov r2, #0x0
|
|
add r0, r0, r4
|
|
add r0, #0x94
|
|
ldr r0, [r0, #0x0]
|
|
bl FUN_020215E0
|
|
pop {r4, pc}
|
|
.balign 4
|
|
_02002CF4: .word 0x02106FC8
|
|
|
|
thumb_func_start FUN_02002CF8
|
|
FUN_02002CF8: ; 0x02002CF8
|
|
push {r3-r7, lr}
|
|
add r4, r0, #0x0
|
|
cmp r4, #0x4
|
|
blt _02002D04
|
|
bl ErrorHandling
|
|
_02002D04:
|
|
ldr r0, _02002D8C ; =0x02106FC8
|
|
lsl r6, r4, #0x2
|
|
ldr r7, [r0, #0x0]
|
|
add r0, r7, r6
|
|
add r0, #0x84
|
|
ldr r0, [r0, #0x0]
|
|
mov r12, r0
|
|
cmp r0, #0x0
|
|
beq _02002D68
|
|
ldr r2, _02002D90 ; =0x020ECB54
|
|
mov r1, #0x0
|
|
ldrh r0, [r2, r6]
|
|
add r3, r7, #0x0
|
|
_02002D1E:
|
|
cmp r1, r4
|
|
beq _02002D3E
|
|
ldrh r5, [r2, #0x0]
|
|
cmp r5, r0
|
|
bne _02002D3E
|
|
add r5, r3, #0x0
|
|
add r5, #0x94
|
|
ldr r5, [r5, #0x0]
|
|
cmp r5, #0x0
|
|
beq _02002D3E
|
|
lsl r0, r1, #0x2
|
|
add r2, r7, r0
|
|
add r2, #0x84
|
|
mov r0, r12
|
|
str r0, [r2, #0x0]
|
|
b _02002D48
|
|
_02002D3E:
|
|
add r1, r1, #0x1
|
|
add r2, r2, #0x4
|
|
add r3, r3, #0x4
|
|
cmp r1, #0x4
|
|
blo _02002D1E
|
|
_02002D48:
|
|
cmp r1, #0x4
|
|
bne _02002D68
|
|
ldr r0, _02002D8C ; =0x02106FC8
|
|
lsl r5, r4, #0x2
|
|
ldr r0, [r0, #0x0]
|
|
add r0, r0, r5
|
|
add r0, #0x84
|
|
ldr r0, [r0, #0x0]
|
|
bl FUN_02016A18
|
|
ldr r0, _02002D8C ; =0x02106FC8
|
|
mov r1, #0x0
|
|
ldr r0, [r0, #0x0]
|
|
add r0, r0, r5
|
|
add r0, #0x84
|
|
str r1, [r0, #0x0]
|
|
_02002D68:
|
|
ldr r0, _02002D8C ; =0x02106FC8
|
|
ldr r0, [r0, #0x0]
|
|
add r0, r0, r6
|
|
add r0, #0x94
|
|
ldr r0, [r0, #0x0]
|
|
cmp r0, #0x0
|
|
beq _02002D88
|
|
bl FUN_020215C8
|
|
ldr r0, _02002D8C ; =0x02106FC8
|
|
mov r2, #0x0
|
|
ldr r1, [r0, #0x0]
|
|
lsl r0, r4, #0x2
|
|
add r0, r1, r0
|
|
add r0, #0x94
|
|
str r2, [r0, #0x0]
|
|
_02002D88:
|
|
pop {r3-r7, pc}
|
|
nop
|
|
_02002D8C: .word 0x02106FC8
|
|
_02002D90: .word 0x020ECB54
|
|
|
|
thumb_func_start FUN_02002D94
|
|
FUN_02002D94: ; 0x02002D94
|
|
push {r3, lr}
|
|
ldr r2, _02002DAC ; =0x02106FC8
|
|
lsl r0, r0, #0x2
|
|
ldr r2, [r2, #0x0]
|
|
add r0, r2, r0
|
|
add r0, #0x94
|
|
ldr r0, [r0, #0x0]
|
|
bl FUN_02021750
|
|
ldr r0, _02002DAC ; =0x02106FC8
|
|
ldr r0, [r0, #0x0]
|
|
pop {r3, pc}
|
|
.balign 4
|
|
_02002DAC: .word 0x02106FC8
|
|
|
|
thumb_func_start FUN_02002DB0
|
|
FUN_02002DB0: ; 0x02002DB0
|
|
push {r4, lr}
|
|
add r3, r1, #0x0
|
|
add r3, #0x1c
|
|
ldrb r2, [r3, #0x1]
|
|
lsl r2, r2, #0x18
|
|
lsr r2, r2, #0x1f
|
|
bne _02002DD8
|
|
ldrb r2, [r3, #0x0]
|
|
mov r4, #0xf
|
|
lsl r0, r0, #0x18
|
|
bic r2, r4
|
|
lsr r4, r0, #0x18
|
|
mov r0, #0xf
|
|
and r0, r4
|
|
orr r0, r2
|
|
strb r0, [r3, #0x0]
|
|
ldrb r2, [r3, #0x1]
|
|
mov r0, #0x80
|
|
orr r0, r2
|
|
strb r0, [r3, #0x1]
|
|
_02002DD8:
|
|
add r0, r1, #0x0
|
|
bl FUN_020023C0
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_02002DE0
|
|
FUN_02002DE0: ; 0x02002DE0
|
|
push {r4-r6, lr}
|
|
lsl r4, r0, #0x2
|
|
ldr r0, _02002E10 ; =0x02106FC8
|
|
add r5, r1, #0x0
|
|
ldr r0, [r0, #0x0]
|
|
add r6, r2, #0x0
|
|
add r0, r0, r4
|
|
add r0, #0x94
|
|
ldr r0, [r0, #0x0]
|
|
cmp r0, #0x0
|
|
bne _02002DFA
|
|
bl ErrorHandling
|
|
_02002DFA:
|
|
ldr r0, _02002E10 ; =0x02106FC8
|
|
add r1, r5, #0x0
|
|
ldr r0, [r0, #0x0]
|
|
add r2, r6, #0x0
|
|
add r0, r0, r4
|
|
add r0, #0x94
|
|
ldr r0, [r0, #0x0]
|
|
bl FUN_020218D8
|
|
pop {r4-r6, pc}
|
|
nop
|
|
_02002E10: .word 0x02106FC8
|
|
|
|
thumb_func_start FUN_02002E14
|
|
FUN_02002E14: ; 0x02002E14
|
|
push {r4-r6, lr}
|
|
lsl r4, r0, #0x2
|
|
ldr r0, _02002E48 ; =0x02106FC8
|
|
add r5, r1, #0x0
|
|
ldr r0, [r0, #0x0]
|
|
add r6, r2, #0x0
|
|
add r0, r0, r4
|
|
add r0, #0x94
|
|
ldr r0, [r0, #0x0]
|
|
cmp r0, #0x0
|
|
bne _02002E2E
|
|
bl ErrorHandling
|
|
_02002E2E:
|
|
add r0, r5, #0x0
|
|
bl FUN_02021F2C
|
|
add r1, r0, #0x0
|
|
ldr r0, _02002E48 ; =0x02106FC8
|
|
add r2, r6, #0x0
|
|
ldr r0, [r0, #0x0]
|
|
add r0, r0, r4
|
|
add r0, #0x94
|
|
ldr r0, [r0, #0x0]
|
|
bl FUN_020218D8
|
|
pop {r4-r6, pc}
|
|
.balign 4
|
|
_02002E48: .word 0x02106FC8
|
|
|
|
thumb_func_start FUN_02002E4C
|
|
FUN_02002E4C: ; 0x02002E4C
|
|
mov r2, #0x0
|
|
cmp r1, #0x7
|
|
bhi _02002EAC
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #0x6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_02002E5E: ; jump table (using 16-bit offset)
|
|
.short _02002E6E - _02002E5E - 2; case 0
|
|
.short _02002E76 - _02002E5E - 2; case 1
|
|
.short _02002E7E - _02002E5E - 2; case 2
|
|
.short _02002E86 - _02002E5E - 2; case 3
|
|
.short _02002E8E - _02002E5E - 2; case 4
|
|
.short _02002E96 - _02002E5E - 2; case 5
|
|
.short _02002E9E - _02002E5E - 2; case 6
|
|
.short _02002EA6 - _02002E5E - 2; case 7
|
|
_02002E6E:
|
|
lsl r1, r0, #0x3
|
|
ldr r0, _02002EB0 ; =0x020ECB64
|
|
ldrb r2, [r0, r1]
|
|
b _02002EAC
|
|
_02002E76:
|
|
lsl r1, r0, #0x3
|
|
ldr r0, _02002EB4 ; =0x020ECB65
|
|
ldrb r2, [r0, r1]
|
|
b _02002EAC
|
|
_02002E7E:
|
|
lsl r1, r0, #0x3
|
|
ldr r0, _02002EB8 ; =0x020ECB66
|
|
ldrb r2, [r0, r1]
|
|
b _02002EAC
|
|
_02002E86:
|
|
lsl r1, r0, #0x3
|
|
ldr r0, _02002EBC ; =0x020ECB67
|
|
ldrb r2, [r0, r1]
|
|
b _02002EAC
|
|
_02002E8E:
|
|
lsl r1, r0, #0x3
|
|
ldr r0, _02002EC0 ; =0x020ECB68
|
|
ldrb r2, [r0, r1]
|
|
b _02002EAC
|
|
_02002E96:
|
|
lsl r1, r0, #0x3
|
|
ldr r0, _02002EC4 ; =0x020ECB69
|
|
ldrb r2, [r0, r1]
|
|
b _02002EAC
|
|
_02002E9E:
|
|
lsl r1, r0, #0x3
|
|
ldr r0, _02002EC8 ; =0x020ECB6A
|
|
ldrb r2, [r0, r1]
|
|
b _02002EAC
|
|
_02002EA6:
|
|
lsl r1, r0, #0x3
|
|
ldr r0, _02002ECC ; =0x020ECB6B
|
|
ldrb r2, [r0, r1]
|
|
_02002EAC:
|
|
add r0, r2, #0x0
|
|
bx lr
|
|
.balign 4
|
|
_02002EB0: .word 0x020ECB64
|
|
_02002EB4: .word 0x020ECB65
|
|
_02002EB8: .word 0x020ECB66
|
|
_02002EBC: .word 0x020ECB67
|
|
_02002EC0: .word 0x020ECB68
|
|
_02002EC4: .word 0x020ECB69
|
|
_02002EC8: .word 0x020ECB6A
|
|
_02002ECC: .word 0x020ECB6B
|
|
|
|
thumb_func_start FUN_02002ED0
|
|
FUN_02002ED0: ; 0x02002ED0
|
|
push {r4, lr}
|
|
sub sp, #0x8
|
|
add r4, r0, #0x0
|
|
mov r0, #0x20
|
|
str r0, [sp, #0x0]
|
|
add r3, r1, #0x0
|
|
str r2, [sp, #0x4]
|
|
mov r0, #0xe
|
|
mov r1, #0x6
|
|
add r2, r4, #0x0
|
|
bl FUN_02006930
|
|
add sp, #0x8
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_02002EEC
|
|
FUN_02002EEC: ; 0x02002EEC
|
|
push {r4, lr}
|
|
sub sp, #0x8
|
|
add r4, r0, #0x0
|
|
mov r0, #0x20
|
|
str r0, [sp, #0x0]
|
|
add r3, r1, #0x0
|
|
str r2, [sp, #0x4]
|
|
mov r0, #0xe
|
|
mov r1, #0x7
|
|
add r2, r4, #0x0
|
|
bl FUN_02006930
|
|
add sp, #0x8
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_02002F08
|
|
FUN_02002F08: ; 0x02002F08
|
|
push {r4-r6, lr}
|
|
lsl r4, r0, #0x2
|
|
ldr r0, _02002F3C ; =0x02106FC8
|
|
add r5, r1, #0x0
|
|
ldr r0, [r0, #0x0]
|
|
add r6, r2, #0x0
|
|
add r0, r0, r4
|
|
add r0, #0x94
|
|
ldr r0, [r0, #0x0]
|
|
cmp r0, #0x0
|
|
bne _02002F22
|
|
bl ErrorHandling
|
|
_02002F22:
|
|
add r0, r5, #0x0
|
|
bl FUN_02021F2C
|
|
add r1, r0, #0x0
|
|
ldr r0, _02002F3C ; =0x02106FC8
|
|
add r2, r6, #0x0
|
|
ldr r0, [r0, #0x0]
|
|
add r0, r0, r4
|
|
add r0, #0x94
|
|
ldr r0, [r0, #0x0]
|
|
bl FUN_02021934
|
|
pop {r4-r6, pc}
|
|
.balign 4
|
|
_02002F3C: .word 0x02106FC8
|
|
|
|
thumb_func_start FUN_02002F40
|
|
FUN_02002F40: ; 0x02002F40
|
|
push {r4, lr}
|
|
add r4, r3, #0x0
|
|
bl FUN_02002E14
|
|
cmp r0, r4
|
|
bhs _02002F52
|
|
sub r0, r4, r0
|
|
lsr r0, r0, #0x1
|
|
pop {r4, pc}
|
|
_02002F52:
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02002F58
|
|
FUN_02002F58: ; 0x02002F58
|
|
push {r3-r7, lr}
|
|
ldrh r2, [r0, #0x0]
|
|
ldr r1, _02002F8C ; =0x0000FFFF
|
|
mov r5, #0x1
|
|
cmp r2, r1
|
|
beq _02002F88
|
|
mov r6, #0xe
|
|
lsl r6, r6, #0xc
|
|
add r7, r1, #0x0
|
|
sub r4, r1, #0x1
|
|
_02002F6C:
|
|
cmp r2, r4
|
|
bne _02002F76
|
|
bl FUN_0201B8B8
|
|
b _02002F82
|
|
_02002F76:
|
|
cmp r2, r6
|
|
bne _02002F80
|
|
add r5, r5, #0x1
|
|
add r0, r0, #0x2
|
|
b _02002F82
|
|
_02002F80:
|
|
add r0, r0, #0x2
|
|
_02002F82:
|
|
ldrh r2, [r0, #0x0]
|
|
cmp r2, r7
|
|
bne _02002F6C
|
|
_02002F88:
|
|
add r0, r5, #0x0
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
_02002F8C: .word 0x0000FFFF
|
|
|
|
thumb_func_start FUN_02002F90
|
|
FUN_02002F90: ; 0x02002F90
|
|
push {r3, lr}
|
|
bl FUN_02021F2C
|
|
bl FUN_02002F58
|
|
pop {r3, pc}
|
|
|
|
thumb_func_start FUN_02002F9C
|
|
FUN_02002F9C: ; 0x02002F9C
|
|
push {r3-r5, lr}
|
|
lsl r4, r0, #0x2
|
|
ldr r0, _02002FCC ; =0x02106FC8
|
|
add r5, r1, #0x0
|
|
ldr r0, [r0, #0x0]
|
|
add r0, r0, r4
|
|
add r0, #0x94
|
|
ldr r0, [r0, #0x0]
|
|
cmp r0, #0x0
|
|
bne _02002FB4
|
|
bl ErrorHandling
|
|
_02002FB4:
|
|
add r0, r5, #0x0
|
|
bl FUN_02021F2C
|
|
add r1, r0, #0x0
|
|
ldr r0, _02002FCC ; =0x02106FC8
|
|
ldr r0, [r0, #0x0]
|
|
add r0, r0, r4
|
|
add r0, #0x94
|
|
ldr r0, [r0, #0x0]
|
|
bl FUN_0202199C
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
_02002FCC: .word 0x02106FC8
|
|
|
|
thumb_func_start FUN_02002FD0
|
|
FUN_02002FD0: ; 0x02002FD0
|
|
push {r4, lr}
|
|
mov r1, #0x12
|
|
lsl r1, r1, #0x4
|
|
bl FUN_02016998
|
|
mov r2, #0x12
|
|
mov r1, #0x0
|
|
lsl r2, r2, #0x4
|
|
add r4, r0, #0x0
|
|
blx MI_CpuFill8
|
|
add r0, r4, #0x0
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02002FEC
|
|
FUN_02002FEC: ; 0x02002FEC
|
|
ldr r3, _02002FF0 ; =FUN_02016A18
|
|
bx r3
|
|
.balign 4
|
|
_02002FF0: .word FUN_02016A18
|
|
|
|
thumb_func_start FUN_02002FF4
|
|
FUN_02002FF4: ; 0x02002FF4
|
|
push {r3-r4}
|
|
mov r4, #0x14
|
|
mul r4, r1
|
|
str r2, [r0, r4]
|
|
add r1, r0, r4
|
|
ldr r0, [sp, #0x8]
|
|
str r3, [r1, #0x4]
|
|
str r0, [r1, #0x8]
|
|
pop {r3-r4}
|
|
bx lr
|
|
|
|
thumb_func_start FUN_02003008
|
|
FUN_02003008: ; 0x02003008
|
|
push {r3-r7, lr}
|
|
sub sp, #0x8
|
|
add r4, r2, #0x0
|
|
add r5, r0, #0x0
|
|
add r6, r1, #0x0
|
|
str r3, [sp, #0x4]
|
|
add r0, r3, #0x0
|
|
add r1, r4, #0x0
|
|
bl FUN_02016998
|
|
add r7, r0, #0x0
|
|
ldr r0, [sp, #0x4]
|
|
add r1, r4, #0x0
|
|
bl FUN_02016998
|
|
add r3, r0, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, r6, #0x0
|
|
add r2, r7, #0x0
|
|
str r4, [sp, #0x0]
|
|
bl FUN_02002FF4
|
|
add sp, #0x8
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start FUN_02003038
|
|
FUN_02003038: ; 0x02003038
|
|
push {r3-r5, lr}
|
|
add r4, r0, #0x0
|
|
mov r0, #0x14
|
|
add r5, r1, #0x0
|
|
mul r5, r0
|
|
ldr r0, [r4, r5]
|
|
bl FUN_02016A18
|
|
add r0, r4, r5
|
|
ldr r0, [r0, #0x4]
|
|
bl FUN_02016A18
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02003054
|
|
FUN_02003054: ; 0x02003054
|
|
push {r3-r7, lr}
|
|
add r5, r0, #0x0
|
|
add r0, sp, #0x8
|
|
ldrh r7, [r0, #0x10]
|
|
add r6, r2, #0x0
|
|
mov r0, #0x14
|
|
mul r6, r0
|
|
str r1, [sp, #0x0]
|
|
add r0, r1, #0x0
|
|
ldr r1, [r5, r6]
|
|
lsl r4, r3, #0x1
|
|
add r1, r1, r4
|
|
add r2, r7, #0x0
|
|
blx MIi_CpuCopy16
|
|
add r1, r5, r6
|
|
ldr r1, [r1, #0x4]
|
|
ldr r0, [sp, #0x0]
|
|
add r1, r1, r4
|
|
add r2, r7, #0x0
|
|
blx MIi_CpuCopy16
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02003084
|
|
FUN_02003084: ; 0x02003084
|
|
push {r4-r6, lr}
|
|
sub sp, #0x8
|
|
add r5, r0, #0x0
|
|
add r0, r1, #0x0
|
|
add r1, r2, #0x0
|
|
add r2, sp, #0x4
|
|
ldr r4, [sp, #0x1c]
|
|
bl FUN_02006C08
|
|
add r6, r0, #0x0
|
|
bne _0200309E
|
|
bl ErrorHandling
|
|
_0200309E:
|
|
cmp r4, #0x0
|
|
bne _020030A6
|
|
ldr r0, [sp, #0x4]
|
|
ldr r4, [r0, #0x8]
|
|
_020030A6:
|
|
add r0, sp, #0x8
|
|
ldrh r0, [r0, #0x18]
|
|
ldr r2, [sp, #0x18]
|
|
mov r1, #0x14
|
|
mul r1, r2
|
|
add r1, r5, r1
|
|
lsl r0, r0, #0x1
|
|
ldr r1, [r1, #0x8]
|
|
add r0, r4, r0
|
|
cmp r0, r1
|
|
bls _020030C0
|
|
bl ErrorHandling
|
|
_020030C0:
|
|
lsl r0, r4, #0x10
|
|
lsr r0, r0, #0x10
|
|
str r0, [sp, #0x0]
|
|
ldr r1, [sp, #0x4]
|
|
add r3, sp, #0x8
|
|
ldr r2, [r1, #0xc]
|
|
ldrh r1, [r3, #0x1c]
|
|
ldrh r3, [r3, #0x18]
|
|
add r0, r5, #0x0
|
|
lsl r1, r1, #0x1
|
|
add r1, r2, r1
|
|
ldr r2, [sp, #0x18]
|
|
bl FUN_02003054
|
|
add r0, r6, #0x0
|
|
bl FUN_02016A18
|
|
add sp, #0x8
|
|
pop {r4-r6, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_020030E8
|
|
FUN_020030E8: ; 0x020030E8
|
|
push {r4, lr}
|
|
sub sp, #0x10
|
|
ldr r4, [sp, #0x18]
|
|
str r4, [sp, #0x0]
|
|
ldr r4, [sp, #0x1c]
|
|
str r4, [sp, #0x4]
|
|
add r4, sp, #0x8
|
|
ldrh r4, [r4, #0x18]
|
|
str r4, [sp, #0x8]
|
|
mov r4, #0x0
|
|
str r4, [sp, #0xc]
|
|
bl FUN_02003084
|
|
add sp, #0x10
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02003108
|
|
FUN_02003108: ; 0x02003108
|
|
push {r3-r7, lr}
|
|
add r4, r1, #0x0
|
|
mov r1, #0x14
|
|
add r6, r0, #0x0
|
|
mul r1, r4
|
|
add r5, r2, #0x0
|
|
add r1, r6, r1
|
|
add r7, r3, #0x0
|
|
lsl r0, r5, #0x1
|
|
ldr r1, [r1, #0x8]
|
|
add r0, r7, r0
|
|
cmp r0, r1
|
|
bls _02003126
|
|
bl ErrorHandling
|
|
_02003126:
|
|
cmp r4, #0x3
|
|
bhi _0200315E
|
|
add r0, r4, r4
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02003136: ; jump table (using 16-bit offset)
|
|
.short _0200313E - _02003136 - 2; case 0
|
|
.short _02003146 - _02003136 - 2; case 1
|
|
.short _0200314E - _02003136 - 2; case 2
|
|
.short _02003156 - _02003136 - 2; case 3
|
|
_0200313E:
|
|
bl FUN_020222E8
|
|
add r1, r0, #0x0
|
|
b _02003164
|
|
_02003146:
|
|
bl FUN_020222F8
|
|
add r1, r0, #0x0
|
|
b _02003164
|
|
_0200314E:
|
|
bl FUN_02022308
|
|
add r1, r0, #0x0
|
|
b _02003164
|
|
_02003156:
|
|
bl FUN_02022310
|
|
add r1, r0, #0x0
|
|
b _02003164
|
|
_0200315E:
|
|
bl ErrorHandling
|
|
pop {r3-r7, pc}
|
|
_02003164:
|
|
lsl r0, r7, #0x10
|
|
lsr r0, r0, #0x10
|
|
lsl r2, r5, #0x1
|
|
str r0, [sp, #0x0]
|
|
add r1, r1, r2
|
|
add r0, r6, #0x0
|
|
add r2, r4, #0x0
|
|
add r3, r5, #0x0
|
|
bl FUN_02003054
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_0200317C
|
|
FUN_0200317C: ; 0x0200317C
|
|
push {r3-r5, lr}
|
|
add r4, r2, #0x0
|
|
add r5, r3, #0x0
|
|
add r2, sp, #0x0
|
|
add r3, r4, #0x0
|
|
bl FUN_02006C08
|
|
add r4, r0, #0x0
|
|
bne _02003192
|
|
bl ErrorHandling
|
|
_02003192:
|
|
cmp r5, #0x0
|
|
bne _0200319A
|
|
ldr r0, [sp, #0x0]
|
|
ldr r5, [r0, #0x8]
|
|
_0200319A:
|
|
ldr r0, [sp, #0x0]
|
|
add r2, r5, #0x0
|
|
ldr r1, [r0, #0xc]
|
|
add r0, sp, #0x0
|
|
ldrh r0, [r0, #0x10]
|
|
lsl r0, r0, #0x1
|
|
add r0, r1, r0
|
|
ldr r1, [sp, #0x14]
|
|
blx MIi_CpuCopy16
|
|
add r0, r4, #0x0
|
|
bl FUN_02016A18
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_020031B8
|
|
FUN_020031B8: ; 0x020031B8
|
|
push {r3-r7, lr}
|
|
sub sp, #0x8
|
|
add r4, sp, #0x10
|
|
add r5, r0, #0x0
|
|
add r0, r1, #0x0
|
|
ldrh r1, [r4, #0x14]
|
|
add r6, r3, #0x0
|
|
str r1, [sp, #0x0]
|
|
ldrh r1, [r4, #0x10]
|
|
lsl r4, r2, #0x1
|
|
ldr r2, [sp, #0x0]
|
|
lsl r7, r1, #0x1
|
|
mov r1, #0x14
|
|
mul r6, r1
|
|
mul r1, r0
|
|
ldr r0, [r5, r1]
|
|
str r1, [sp, #0x4]
|
|
ldr r1, [r5, r6]
|
|
add r0, r0, r4
|
|
add r1, r1, r7
|
|
blx MIi_CpuCopy16
|
|
ldr r0, [sp, #0x4]
|
|
add r1, r5, r6
|
|
ldr r0, [r5, r0]
|
|
ldr r1, [r1, #0x4]
|
|
ldr r2, [sp, #0x0]
|
|
add r0, r0, r4
|
|
add r1, r1, r7
|
|
blx MIi_CpuCopy16
|
|
add sp, #0x8
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_020031FC
|
|
FUN_020031FC: ; 0x020031FC
|
|
mov r2, #0x14
|
|
mul r2, r1
|
|
ldr r0, [r0, r2]
|
|
bx lr
|
|
|
|
thumb_func_start FUN_02003204
|
|
FUN_02003204: ; 0x02003204
|
|
mov r2, #0x14
|
|
mul r2, r1
|
|
add r0, r0, r2
|
|
ldr r0, [r0, #0x4]
|
|
bx lr
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02003210
|
|
FUN_02003210: ; 0x02003210
|
|
push {r0-r3}
|
|
push {r3-r7, lr}
|
|
sub sp, #0x10
|
|
str r3, [sp, #0x8]
|
|
add r5, r0, #0x0
|
|
ldr r0, [sp, #0x38]
|
|
mov r6, #0x0
|
|
str r0, [sp, #0x38]
|
|
ldr r0, [sp, #0x3c]
|
|
add r7, r1, #0x0
|
|
str r0, [sp, #0x3c]
|
|
ldr r0, [sp, #0x40]
|
|
add r4, r6, #0x0
|
|
str r0, [sp, #0x40]
|
|
add r0, sp, #0x28
|
|
ldrh r0, [r0, #0x8]
|
|
str r0, [sp, #0xc]
|
|
_02003232:
|
|
add r0, r7, #0x0
|
|
add r1, r4, #0x0
|
|
bl FUN_02003314
|
|
cmp r0, #0x1
|
|
bne _020032A6
|
|
mov r0, #0x46
|
|
lsl r0, r0, #0x2
|
|
ldrh r0, [r5, r0]
|
|
add r1, r4, #0x0
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x12
|
|
bl FUN_02003314
|
|
cmp r0, #0x0
|
|
bne _020032A6
|
|
mov r0, #0x14
|
|
add r6, r4, #0x0
|
|
mul r6, r0
|
|
add r0, r4, #0x0
|
|
add r1, r5, r6
|
|
add r2, sp, #0x30
|
|
bl FUN_02003368
|
|
ldr r0, [sp, #0x3c]
|
|
add r1, sp, #0x28
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [sp, #0x40]
|
|
str r0, [sp, #0x4]
|
|
add r0, r5, r6
|
|
ldrh r1, [r1, #0x8]
|
|
ldr r2, [sp, #0x8]
|
|
ldr r3, [sp, #0x38]
|
|
add r0, #0xc
|
|
bl FUN_020033A4
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
bl FUN_02003328
|
|
cmp r4, #0x4
|
|
blo _02003294
|
|
mov r2, #0x1
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
lsl r2, r2, #0x8
|
|
bl FUN_0200359C
|
|
b _0200329E
|
|
_02003294:
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
mov r2, #0x10
|
|
bl FUN_0200359C
|
|
_0200329E:
|
|
ldr r1, [sp, #0xc]
|
|
add r0, sp, #0x28
|
|
strh r1, [r0, #0x8]
|
|
mov r6, #0x1
|
|
_020032A6:
|
|
add r0, r4, #0x1
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
cmp r4, #0xe
|
|
blo _02003232
|
|
cmp r6, #0x1
|
|
bne _02003300
|
|
mov r0, #0x46
|
|
lsl r0, r0, #0x2
|
|
ldrh r2, [r5, r0]
|
|
ldr r1, _0200330C ; =0xFFFF0003
|
|
and r1, r2
|
|
lsl r2, r2, #0x10
|
|
lsr r2, r2, #0x12
|
|
orr r2, r7
|
|
lsl r2, r2, #0x12
|
|
lsr r2, r2, #0x10
|
|
orr r1, r2
|
|
strh r1, [r5, r0]
|
|
add r1, r0, #0x2
|
|
ldrh r1, [r5, r1]
|
|
lsl r1, r1, #0x11
|
|
lsr r1, r1, #0x1f
|
|
bne _02003300
|
|
add r1, r0, #0x2
|
|
ldrh r2, [r5, r1]
|
|
mov r1, #0x1
|
|
lsl r1, r1, #0xe
|
|
orr r2, r1
|
|
add r1, r0, #0x2
|
|
strh r2, [r5, r1]
|
|
ldrh r2, [r5, r0]
|
|
mov r1, #0x3
|
|
bic r2, r1
|
|
mov r1, #0x1
|
|
orr r1, r2
|
|
strh r1, [r5, r0]
|
|
mov r2, #0x0
|
|
add r0, r0, #0x4
|
|
strb r2, [r5, r0]
|
|
ldr r0, _02003310 ; =FUN_02003464
|
|
add r1, r5, #0x0
|
|
sub r2, r2, #0x2
|
|
bl FUN_0200CA44
|
|
_02003300:
|
|
add r0, r6, #0x0
|
|
add sp, #0x10
|
|
pop {r3-r7}
|
|
pop {r3}
|
|
add sp, #0x10
|
|
bx r3
|
|
.balign 4
|
|
_0200330C: .word 0xFFFF0003
|
|
_02003310: .word FUN_02003464
|
|
|
|
thumb_func_start FUN_02003314
|
|
FUN_02003314: ; 0x02003314
|
|
mov r3, #0x1
|
|
add r2, r3, #0x0
|
|
lsl r2, r1
|
|
tst r0, r2
|
|
bne _02003320
|
|
mov r3, #0x0
|
|
_02003320:
|
|
lsl r0, r3, #0x18
|
|
lsr r0, r0, #0x18
|
|
bx lr
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02003328
|
|
FUN_02003328: ; 0x02003328
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
ldr r0, _02003360 ; =0x0000011A
|
|
add r4, r1, #0x0
|
|
ldrh r0, [r5, r0]
|
|
lsl r0, r0, #0x12
|
|
lsr r0, r0, #0x12
|
|
bl FUN_02003314
|
|
cmp r0, #0x1
|
|
beq _0200335E
|
|
ldr r3, _02003360 ; =0x0000011A
|
|
ldr r1, _02003364 ; =0xFFFFC000
|
|
ldrh r2, [r5, r3]
|
|
add r0, r2, #0x0
|
|
lsl r2, r2, #0x12
|
|
lsr r6, r2, #0x12
|
|
mov r2, #0x1
|
|
lsl r2, r4
|
|
orr r2, r6
|
|
lsl r2, r2, #0x10
|
|
and r0, r1
|
|
lsr r2, r2, #0x10
|
|
lsr r1, r1, #0x12
|
|
and r1, r2
|
|
orr r0, r1
|
|
strh r0, [r5, r3]
|
|
_0200335E:
|
|
pop {r4-r6, pc}
|
|
.balign 4
|
|
_02003360: .word 0x0000011A
|
|
_02003364: .word 0xFFFFC000
|
|
|
|
thumb_func_start FUN_02003368
|
|
FUN_02003368: ; 0x02003368
|
|
push {r4-r5}
|
|
cmp r0, #0x4
|
|
ldr r0, [r1, #0x8]
|
|
bge _02003374
|
|
lsl r0, r0, #0x13
|
|
b _02003378
|
|
_02003374:
|
|
lsr r0, r0, #0x9
|
|
lsl r0, r0, #0x18
|
|
_02003378:
|
|
mov r4, #0x0
|
|
lsr r0, r0, #0x18
|
|
add r5, r4, #0x0
|
|
cmp r0, #0x0
|
|
bls _02003398
|
|
mov r3, #0x1
|
|
_02003384:
|
|
add r1, r3, #0x0
|
|
lsl r1, r5
|
|
add r1, r4, r1
|
|
lsl r1, r1, #0x10
|
|
lsr r4, r1, #0x10
|
|
add r1, r5, #0x1
|
|
lsl r1, r1, #0x18
|
|
lsr r5, r1, #0x18
|
|
cmp r5, r0
|
|
blo _02003384
|
|
_02003398:
|
|
ldrh r0, [r2, #0x0]
|
|
and r0, r4
|
|
strh r0, [r2, #0x0]
|
|
pop {r4-r5}
|
|
bx lr
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_020033A4
|
|
FUN_020033A4: ; 0x020033A4
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
add r6, r1, #0x0
|
|
add r4, r3, #0x0
|
|
cmp r2, #0x0
|
|
bge _020033D4
|
|
add r0, r2, #0x0
|
|
blx abs
|
|
add r0, r0, #0x2
|
|
ldrh r1, [r5, #0x6]
|
|
mov r2, #0xf
|
|
lsl r0, r0, #0x10
|
|
bic r1, r2
|
|
lsr r2, r0, #0x10
|
|
mov r0, #0xf
|
|
and r0, r2
|
|
orr r0, r1
|
|
strh r0, [r5, #0x6]
|
|
ldrh r1, [r5, #0x2]
|
|
mov r0, #0x3f
|
|
bic r1, r0
|
|
strh r1, [r5, #0x2]
|
|
b _020033F2
|
|
_020033D4:
|
|
ldrh r1, [r5, #0x6]
|
|
mov r0, #0xf
|
|
bic r1, r0
|
|
mov r0, #0x2
|
|
orr r0, r1
|
|
strh r0, [r5, #0x6]
|
|
ldrh r0, [r5, #0x2]
|
|
mov r1, #0x3f
|
|
bic r0, r1
|
|
lsl r1, r2, #0x10
|
|
lsr r2, r1, #0x10
|
|
mov r1, #0x3f
|
|
and r1, r2
|
|
orr r0, r1
|
|
strh r0, [r5, #0x2]
|
|
_020033F2:
|
|
strh r6, [r5, #0x0]
|
|
ldrh r1, [r5, #0x2]
|
|
ldr r0, _02003454 ; =0xFFFFF83F
|
|
add r3, sp, #0x0
|
|
and r1, r0
|
|
lsl r0, r4, #0x1b
|
|
lsr r0, r0, #0x15
|
|
orr r0, r1
|
|
strh r0, [r5, #0x2]
|
|
ldrh r1, [r5, #0x2]
|
|
ldr r0, _02003458 ; =0xFFFF07FF
|
|
add r2, r1, #0x0
|
|
ldrb r1, [r3, #0x10]
|
|
and r2, r0
|
|
lsl r0, r1, #0x1b
|
|
lsr r0, r0, #0x10
|
|
orr r0, r2
|
|
strh r0, [r5, #0x2]
|
|
ldrh r0, [r5, #0x4]
|
|
ldr r2, _0200345C ; =0xFFFF8000
|
|
ldrh r6, [r3, #0x14]
|
|
lsr r3, r2, #0x11
|
|
and r0, r2
|
|
and r3, r6
|
|
orr r0, r3
|
|
strh r0, [r5, #0x4]
|
|
ldrh r3, [r5, #0x6]
|
|
ldr r0, _02003460 ; =0xFFFFFC0F
|
|
and r0, r3
|
|
ldrh r3, [r5, #0x2]
|
|
lsl r3, r3, #0x1a
|
|
lsr r3, r3, #0x1a
|
|
lsl r3, r3, #0x1a
|
|
lsr r3, r3, #0x16
|
|
orr r0, r3
|
|
strh r0, [r5, #0x6]
|
|
cmp r4, r1
|
|
ldrh r1, [r5, #0x4]
|
|
bhs _02003448
|
|
sub r0, r2, #0x1
|
|
and r0, r1
|
|
strh r0, [r5, #0x4]
|
|
pop {r4-r6, pc}
|
|
_02003448:
|
|
mov r0, #0x2
|
|
lsl r0, r0, #0xe
|
|
orr r0, r1
|
|
strh r0, [r5, #0x4]
|
|
pop {r4-r6, pc}
|
|
nop
|
|
_02003454: .word 0xFFFFF83F
|
|
_02003458: .word 0xFFFF07FF
|
|
_0200345C: .word 0xFFFF8000
|
|
_02003460: .word 0xFFFFFC0F
|
|
|
|
thumb_func_start FUN_02003464
|
|
FUN_02003464: ; 0x02003464
|
|
push {r4-r6, lr}
|
|
add r4, r1, #0x0
|
|
mov r1, #0x47
|
|
lsl r1, r1, #0x2
|
|
ldrb r2, [r4, r1]
|
|
add r5, r0, #0x0
|
|
cmp r2, #0x1
|
|
bne _020034A4
|
|
mov r2, #0x0
|
|
strb r2, [r4, r1]
|
|
sub r2, r1, #0x2
|
|
ldrh r3, [r4, r2]
|
|
ldr r2, _020034F4 ; =0xFFFFC000
|
|
add r5, r3, #0x0
|
|
and r5, r2
|
|
sub r3, r1, #0x2
|
|
strh r5, [r4, r3]
|
|
sub r3, r1, #0x4
|
|
ldrh r5, [r4, r3]
|
|
ldr r3, _020034F8 ; =0xFFFF0003
|
|
sub r2, r2, #0x1
|
|
and r5, r3
|
|
sub r3, r1, #0x4
|
|
strh r5, [r4, r3]
|
|
sub r3, r1, #0x2
|
|
ldrh r3, [r4, r3]
|
|
sub r1, r1, #0x2
|
|
and r2, r3
|
|
strh r2, [r4, r1]
|
|
bl FUN_0200CAB4
|
|
pop {r4-r6, pc}
|
|
_020034A4:
|
|
sub r0, r1, #0x4
|
|
ldrh r2, [r4, r0]
|
|
lsl r0, r2, #0x1e
|
|
lsr r0, r0, #0x1e
|
|
cmp r0, #0x1
|
|
bne _020034F0
|
|
sub r0, r1, #0x2
|
|
ldrh r0, [r4, r0]
|
|
ldr r3, _020034F4 ; =0xFFFFC000
|
|
lsl r2, r2, #0x10
|
|
lsr r6, r2, #0x12
|
|
lsr r2, r3, #0x12
|
|
and r0, r3
|
|
and r2, r6
|
|
orr r2, r0
|
|
sub r0, r1, #0x2
|
|
strh r2, [r4, r0]
|
|
add r0, r4, #0x0
|
|
bl FUN_02003500
|
|
add r0, r4, #0x0
|
|
bl FUN_02003520
|
|
mov r1, #0x46
|
|
lsl r1, r1, #0x2
|
|
ldrh r0, [r4, r1]
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x12
|
|
bne _020034F0
|
|
add r0, r1, #0x2
|
|
ldrh r2, [r4, r0]
|
|
ldr r0, _020034FC ; =0xFFFFBFFF
|
|
and r2, r0
|
|
add r0, r1, #0x2
|
|
strh r2, [r4, r0]
|
|
add r0, r5, #0x0
|
|
bl FUN_0200CAB4
|
|
_020034F0:
|
|
pop {r4-r6, pc}
|
|
nop
|
|
_020034F4: .word 0xFFFFC000
|
|
_020034F8: .word 0xFFFF0003
|
|
_020034FC: .word 0xFFFFBFFF
|
|
|
|
thumb_func_start FUN_02003500
|
|
FUN_02003500: ; 0x02003500
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
mov r4, #0x0
|
|
mov r6, #0x10
|
|
_02003508:
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
add r2, r6, #0x0
|
|
bl FUN_02003540
|
|
add r0, r4, #0x1
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
cmp r4, #0x4
|
|
blo _02003508
|
|
pop {r4-r6, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02003520
|
|
FUN_02003520: ; 0x02003520
|
|
push {r4-r6, lr}
|
|
mov r4, #0x4
|
|
add r6, r4, #0x0
|
|
add r5, r0, #0x0
|
|
add r6, #0xfc
|
|
_0200352A:
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
add r2, r6, #0x0
|
|
bl FUN_02003540
|
|
add r0, r4, #0x1
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
cmp r4, #0xe
|
|
blo _0200352A
|
|
pop {r4-r6, pc}
|
|
|
|
thumb_func_start FUN_02003540
|
|
FUN_02003540: ; 0x02003540
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
mov r0, #0x46
|
|
lsl r0, r0, #0x2
|
|
ldrh r0, [r5, r0]
|
|
add r4, r1, #0x0
|
|
add r6, r2, #0x0
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x12
|
|
bl FUN_02003314
|
|
cmp r0, #0x0
|
|
beq _02003594
|
|
mov r0, #0x14
|
|
mul r0, r4
|
|
add r2, r5, r0
|
|
ldrh r0, [r2, #0x12]
|
|
ldrh r3, [r2, #0xe]
|
|
lsl r1, r0, #0x16
|
|
lsl r3, r3, #0x1a
|
|
lsr r1, r1, #0x1a
|
|
lsr r3, r3, #0x1a
|
|
cmp r1, r3
|
|
bhs _02003584
|
|
ldr r3, _02003598 ; =0xFFFFFC0F
|
|
and r3, r0
|
|
add r0, r1, #0x1
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
lsl r0, r0, #0x1a
|
|
lsr r0, r0, #0x16
|
|
orr r0, r3
|
|
strh r0, [r2, #0x12]
|
|
pop {r4-r6, pc}
|
|
_02003584:
|
|
ldr r1, _02003598 ; =0xFFFFFC0F
|
|
and r0, r1
|
|
strh r0, [r2, #0x12]
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
add r2, r6, #0x0
|
|
bl FUN_0200359C
|
|
_02003594:
|
|
pop {r4-r6, pc}
|
|
nop
|
|
_02003598: .word 0xFFFFFC0F
|
|
|
|
thumb_func_start FUN_0200359C
|
|
FUN_0200359C: ; 0x0200359C
|
|
push {r4-r7, lr}
|
|
sub sp, #0xc
|
|
str r1, [sp, #0x4]
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [sp, #0x4]
|
|
mov r1, #0x14
|
|
mul r1, r0
|
|
ldr r0, [sp, #0x0]
|
|
mov r6, #0x0
|
|
add r5, r0, r1
|
|
add r0, r5, #0x0
|
|
str r0, [sp, #0x8]
|
|
add r0, #0xc
|
|
add r7, r2, #0x0
|
|
add r4, r6, #0x0
|
|
str r0, [sp, #0x8]
|
|
_020035BC:
|
|
ldrh r0, [r5, #0xc]
|
|
lsl r1, r6, #0x10
|
|
lsr r1, r1, #0x10
|
|
bl FUN_02003314
|
|
cmp r0, #0x0
|
|
beq _020035DC
|
|
ldr r0, [r5, #0x0]
|
|
lsl r1, r4, #0x1
|
|
ldr r2, [r5, #0x4]
|
|
add r0, r0, r1
|
|
add r1, r2, r1
|
|
ldr r2, [sp, #0x8]
|
|
add r3, r7, #0x0
|
|
bl FUN_020035F8
|
|
_020035DC:
|
|
add r6, r6, #0x1
|
|
add r4, r4, r7
|
|
cmp r6, #0x10
|
|
blo _020035BC
|
|
ldr r1, [sp, #0x4]
|
|
add r5, #0xc
|
|
lsl r1, r1, #0x18
|
|
ldr r0, [sp, #0x0]
|
|
lsr r1, r1, #0x18
|
|
add r2, r5, #0x0
|
|
bl FUN_02003684
|
|
add sp, #0xc
|
|
pop {r4-r7, pc}
|
|
|
|
thumb_func_start FUN_020035F8
|
|
FUN_020035F8: ; 0x020035F8
|
|
push {r3-r7, lr}
|
|
sub sp, #0x8
|
|
str r0, [sp, #0x4]
|
|
mov r0, #0x0
|
|
add r6, r1, #0x0
|
|
mov r12, r0
|
|
str r2, [sp, #0x0]
|
|
mov lr, r3
|
|
add r0, r3, #0x0
|
|
beq _02003680
|
|
_0200360C:
|
|
ldr r0, [sp, #0x4]
|
|
mov r1, #0x1f
|
|
ldrh r0, [r0, #0x0]
|
|
asr r2, r0, #0x5
|
|
add r5, r2, #0x0
|
|
and r5, r1
|
|
ldr r1, [sp, #0x0]
|
|
asr r4, r0, #0xa
|
|
ldrh r1, [r1, #0x4]
|
|
lsl r1, r1, #0x11
|
|
lsr r3, r1, #0x11
|
|
ldr r1, [sp, #0x0]
|
|
ldrh r1, [r1, #0x2]
|
|
lsl r1, r1, #0x15
|
|
lsr r2, r1, #0x1b
|
|
mov r1, #0x1f
|
|
and r1, r4
|
|
mov r4, #0x1f
|
|
and r0, r4
|
|
and r4, r3
|
|
sub r4, r4, r0
|
|
mul r4, r2
|
|
asr r4, r4, #0x4
|
|
add r0, r0, r4
|
|
lsl r0, r0, #0x18
|
|
lsr r7, r0, #0x18
|
|
asr r4, r3, #0xa
|
|
mov r0, #0x1f
|
|
and r0, r4
|
|
sub r0, r0, r1
|
|
mul r0, r2
|
|
asr r0, r0, #0x4
|
|
add r0, r1, r0
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
asr r3, r3, #0x5
|
|
mov r1, #0x1f
|
|
and r1, r3
|
|
sub r1, r1, r5
|
|
mul r1, r2
|
|
asr r1, r1, #0x4
|
|
add r1, r5, r1
|
|
lsl r1, r1, #0x18
|
|
lsl r0, r0, #0xa
|
|
lsr r1, r1, #0x13
|
|
orr r0, r1
|
|
orr r0, r7
|
|
strh r0, [r6, #0x0]
|
|
ldr r0, [sp, #0x4]
|
|
add r6, r6, #0x2
|
|
add r0, r0, #0x2
|
|
str r0, [sp, #0x4]
|
|
mov r0, r12
|
|
add r1, r0, #0x1
|
|
mov r0, lr
|
|
mov r12, r1
|
|
cmp r1, r0
|
|
blo _0200360C
|
|
_02003680:
|
|
add sp, #0x8
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start FUN_02003684
|
|
FUN_02003684: ; 0x02003684
|
|
push {r4-r5}
|
|
ldrh r4, [r2, #0x2]
|
|
lsl r3, r4, #0x10
|
|
lsl r4, r4, #0x15
|
|
lsr r3, r3, #0x1b
|
|
lsr r4, r4, #0x1b
|
|
cmp r4, r3
|
|
bne _020036BE
|
|
mov r3, #0x46
|
|
lsl r3, r3, #0x2
|
|
ldrh r4, [r0, r3]
|
|
mov r2, #0x1
|
|
lsl r2, r1
|
|
lsl r1, r4, #0x10
|
|
lsr r5, r1, #0x12
|
|
add r1, r5, #0x0
|
|
tst r1, r2
|
|
beq _0200371E
|
|
eor r2, r5
|
|
lsl r2, r2, #0x10
|
|
ldr r1, _02003724 ; =0xFFFF0003
|
|
lsr r2, r2, #0x10
|
|
lsl r2, r2, #0x12
|
|
and r1, r4
|
|
lsr r2, r2, #0x10
|
|
orr r1, r2
|
|
strh r1, [r0, r3]
|
|
pop {r4-r5}
|
|
bx lr
|
|
_020036BE:
|
|
ldrh r0, [r2, #0x4]
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x1f
|
|
bne _020036F4
|
|
lsl r0, r4, #0x10
|
|
asr r1, r0, #0x10
|
|
ldrh r0, [r2, #0x6]
|
|
lsl r0, r0, #0x1c
|
|
lsr r0, r0, #0x1c
|
|
add r0, r1, r0
|
|
lsl r0, r0, #0x10
|
|
asr r4, r0, #0x10
|
|
cmp r4, r3
|
|
ble _020036DE
|
|
lsl r0, r3, #0x10
|
|
asr r4, r0, #0x10
|
|
_020036DE:
|
|
ldrh r1, [r2, #0x2]
|
|
ldr r0, _02003728 ; =0xFFFFF83F
|
|
and r1, r0
|
|
lsl r0, r4, #0x10
|
|
lsr r0, r0, #0x10
|
|
lsl r0, r0, #0x1b
|
|
lsr r0, r0, #0x15
|
|
orr r0, r1
|
|
strh r0, [r2, #0x2]
|
|
pop {r4-r5}
|
|
bx lr
|
|
_020036F4:
|
|
lsl r0, r4, #0x10
|
|
asr r1, r0, #0x10
|
|
ldrh r0, [r2, #0x6]
|
|
lsl r0, r0, #0x1c
|
|
lsr r0, r0, #0x1c
|
|
sub r0, r1, r0
|
|
lsl r0, r0, #0x10
|
|
asr r4, r0, #0x10
|
|
cmp r4, r3
|
|
bge _0200370C
|
|
lsl r0, r3, #0x10
|
|
asr r4, r0, #0x10
|
|
_0200370C:
|
|
ldrh r1, [r2, #0x2]
|
|
ldr r0, _02003728 ; =0xFFFFF83F
|
|
and r1, r0
|
|
lsl r0, r4, #0x10
|
|
lsr r0, r0, #0x10
|
|
lsl r0, r0, #0x1b
|
|
lsr r0, r0, #0x15
|
|
orr r0, r1
|
|
strh r0, [r2, #0x2]
|
|
_0200371E:
|
|
pop {r4-r5}
|
|
bx lr
|
|
nop
|
|
_02003724: .word 0xFFFF0003
|
|
_02003728: .word 0xFFFFF83F
|
|
|
|
thumb_func_start FUN_0200372C
|
|
FUN_0200372C: ; 0x0200372C
|
|
push {r3-r7, lr}
|
|
add r6, r0, #0x0
|
|
ldr r0, _020038DC ; =0x0000011A
|
|
ldrh r1, [r6, r0]
|
|
lsl r1, r1, #0x10
|
|
lsr r1, r1, #0x1f
|
|
bne _02003748
|
|
sub r0, r0, #0x2
|
|
ldrh r0, [r6, r0]
|
|
lsl r0, r0, #0x1e
|
|
lsr r0, r0, #0x1e
|
|
cmp r0, #0x1
|
|
beq _02003748
|
|
b _020038DA
|
|
_02003748:
|
|
mov r7, #0x2
|
|
mov r5, #0x0
|
|
add r4, r6, #0x0
|
|
lsl r7, r7, #0xc
|
|
_02003750:
|
|
ldr r0, _020038DC ; =0x0000011A
|
|
ldrh r1, [r6, r0]
|
|
lsl r0, r1, #0x10
|
|
lsr r0, r0, #0x1f
|
|
bne _02003770
|
|
ldr r0, [r4, #0x4]
|
|
cmp r0, #0x0
|
|
beq _0200377C
|
|
lsl r0, r1, #0x12
|
|
lsl r1, r5, #0x10
|
|
lsr r0, r0, #0x12
|
|
lsr r1, r1, #0x10
|
|
bl FUN_02003314
|
|
cmp r0, #0x0
|
|
beq _0200377C
|
|
_02003770:
|
|
ldr r0, [r4, #0x4]
|
|
ldr r1, [r4, #0x8]
|
|
blx DC_FlushRange
|
|
cmp r5, #0xd
|
|
bls _0200377E
|
|
_0200377C:
|
|
b _020038A4
|
|
_0200377E:
|
|
add r0, r5, r5
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_0200378A: ; jump table (using 16-bit offset)
|
|
.short _020037A6 - _0200378A - 2; case 0
|
|
.short _020037B2 - _0200378A - 2; case 1
|
|
.short _020037BE - _0200378A - 2; case 2
|
|
.short _020037CA - _0200378A - 2; case 3
|
|
.short _020037D6 - _0200378A - 2; case 4
|
|
.short _020037EA - _0200378A - 2; case 5
|
|
.short _020037FE - _0200378A - 2; case 6
|
|
.short _02003814 - _0200378A - 2; case 7
|
|
.short _0200382A - _0200378A - 2; case 8
|
|
.short _0200383E - _0200378A - 2; case 9
|
|
.short _02003852 - _0200378A - 2; case 10
|
|
.short _02003868 - _0200378A - 2; case 11
|
|
.short _0200387E - _0200378A - 2; case 12
|
|
.short _02003892 - _0200378A - 2; case 13
|
|
_020037A6:
|
|
ldr r0, [r4, #0x4]
|
|
ldr r2, [r4, #0x8]
|
|
mov r1, #0x0
|
|
blx FUN_020C9550
|
|
b _020038A4
|
|
_020037B2:
|
|
ldr r0, [r4, #0x4]
|
|
ldr r2, [r4, #0x8]
|
|
mov r1, #0x0
|
|
blx FUN_020C94E8
|
|
b _020038A4
|
|
_020037BE:
|
|
ldr r0, [r4, #0x4]
|
|
ldr r2, [r4, #0x8]
|
|
mov r1, #0x0
|
|
blx FUN_020C9480
|
|
b _020038A4
|
|
_020037CA:
|
|
ldr r0, [r4, #0x4]
|
|
ldr r2, [r4, #0x8]
|
|
mov r1, #0x0
|
|
blx FUN_020C9418
|
|
b _020038A4
|
|
_020037D6:
|
|
blx FUN_020C8B10
|
|
ldr r0, [r4, #0x4]
|
|
ldr r2, [r4, #0x8]
|
|
mov r1, #0x0
|
|
blx FUN_020C8A90
|
|
blx FUN_020C8A2C
|
|
b _020038A4
|
|
_020037EA:
|
|
blx FUN_020C8B10
|
|
ldr r0, [r4, #0x4]
|
|
ldr r2, [r4, #0x8]
|
|
add r1, r7, #0x0
|
|
blx FUN_020C8A90
|
|
blx FUN_020C8A2C
|
|
b _020038A4
|
|
_020037FE:
|
|
blx FUN_020C8B10
|
|
mov r1, #0x1
|
|
ldr r0, [r4, #0x4]
|
|
ldr r2, [r4, #0x8]
|
|
lsl r1, r1, #0xe
|
|
blx FUN_020C8A90
|
|
blx FUN_020C8A2C
|
|
b _020038A4
|
|
_02003814:
|
|
blx FUN_020C8B10
|
|
mov r1, #0x6
|
|
ldr r0, [r4, #0x4]
|
|
ldr r2, [r4, #0x8]
|
|
lsl r1, r1, #0xc
|
|
blx FUN_020C8A90
|
|
blx FUN_020C8A2C
|
|
b _020038A4
|
|
_0200382A:
|
|
blx FUN_020C88CC
|
|
ldr r0, [r4, #0x4]
|
|
ldr r2, [r4, #0x8]
|
|
mov r1, #0x0
|
|
blx FUN_020C8858
|
|
blx FUN_020C880C
|
|
b _020038A4
|
|
_0200383E:
|
|
blx FUN_020C88CC
|
|
ldr r0, [r4, #0x4]
|
|
ldr r2, [r4, #0x8]
|
|
add r1, r7, #0x0
|
|
blx FUN_020C8858
|
|
blx FUN_020C880C
|
|
b _020038A4
|
|
_02003852:
|
|
blx FUN_020C88CC
|
|
mov r1, #0x1
|
|
ldr r0, [r4, #0x4]
|
|
ldr r2, [r4, #0x8]
|
|
lsl r1, r1, #0xe
|
|
blx FUN_020C8858
|
|
blx FUN_020C880C
|
|
b _020038A4
|
|
_02003868:
|
|
blx FUN_020C88CC
|
|
mov r1, #0x6
|
|
ldr r0, [r4, #0x4]
|
|
ldr r2, [r4, #0x8]
|
|
lsl r1, r1, #0xc
|
|
blx FUN_020C8858
|
|
blx FUN_020C880C
|
|
b _020038A4
|
|
_0200387E:
|
|
blx FUN_020C89BC
|
|
ldr r0, [r4, #0x4]
|
|
ldr r2, [r4, #0x8]
|
|
mov r1, #0x0
|
|
blx FUN_020C8948
|
|
blx FUN_020C88F0
|
|
b _020038A4
|
|
_02003892:
|
|
blx FUN_020C87E8
|
|
ldr r0, [r4, #0x4]
|
|
ldr r2, [r4, #0x8]
|
|
mov r1, #0x0
|
|
blx FUN_020C8774
|
|
blx FUN_020C8728
|
|
_020038A4:
|
|
add r5, r5, #0x1
|
|
add r4, #0x14
|
|
cmp r5, #0xe
|
|
bge _020038AE
|
|
b _02003750
|
|
_020038AE:
|
|
ldr r3, _020038DC ; =0x0000011A
|
|
ldr r1, _020038E0 ; =0xFFFFC000
|
|
sub r2, r3, #0x2
|
|
ldrh r2, [r6, r2]
|
|
ldrh r0, [r6, r3]
|
|
lsl r2, r2, #0x10
|
|
and r0, r1
|
|
lsr r2, r2, #0x12
|
|
lsr r1, r1, #0x12
|
|
and r1, r2
|
|
orr r0, r1
|
|
strh r0, [r6, r3]
|
|
ldrh r0, [r6, r3]
|
|
lsl r0, r0, #0x12
|
|
lsr r0, r0, #0x12
|
|
bne _020038DA
|
|
sub r0, r3, #0x2
|
|
ldrh r1, [r6, r0]
|
|
mov r0, #0x3
|
|
bic r1, r0
|
|
sub r0, r3, #0x2
|
|
strh r1, [r6, r0]
|
|
_020038DA:
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
_020038DC: .word 0x0000011A
|
|
_020038E0: .word 0xFFFFC000
|
|
|
|
thumb_func_start FUN_020038E4
|
|
FUN_020038E4: ; 0x020038E4
|
|
mov r1, #0x46
|
|
lsl r1, r1, #0x2
|
|
ldrh r0, [r0, r1]
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x12
|
|
bx lr
|
|
|
|
thumb_func_start FUN_020038F0
|
|
FUN_020038F0: ; 0x020038F0
|
|
push {r3-r4}
|
|
ldr r3, _0200390C ; =0x0000011A
|
|
lsl r1, r1, #0x10
|
|
ldrh r4, [r0, r3]
|
|
ldr r2, _02003910 ; =0xFFFF7FFF
|
|
lsr r1, r1, #0x10
|
|
lsl r1, r1, #0x1f
|
|
and r2, r4
|
|
lsr r1, r1, #0x10
|
|
orr r1, r2
|
|
strh r1, [r0, r3]
|
|
pop {r3-r4}
|
|
bx lr
|
|
nop
|
|
_0200390C: .word 0x0000011A
|
|
_02003910: .word 0xFFFF7FFF
|
|
|
|
thumb_func_start FUN_02003914
|
|
FUN_02003914: ; 0x02003914
|
|
push {r3-r7, lr}
|
|
sub sp, #0x8
|
|
add r6, r0, #0x0
|
|
str r3, [sp, #0x0]
|
|
mov r0, #0x14
|
|
add r4, r1, #0x0
|
|
mul r4, r0
|
|
add r0, sp, #0x10
|
|
ldrh r0, [r0, #0x14]
|
|
add r7, r2, #0x0
|
|
ldr r5, [sp, #0x20]
|
|
str r0, [sp, #0x4]
|
|
lsl r1, r0, #0x1
|
|
add r0, r6, r4
|
|
ldr r0, [r0, #0x8]
|
|
cmp r1, r0
|
|
bls _0200393A
|
|
bl ErrorHandling
|
|
_0200393A:
|
|
sub r0, r7, #0x1
|
|
cmp r0, #0x1
|
|
bhi _02003952
|
|
ldr r2, [r6, r4]
|
|
lsl r1, r5, #0x1
|
|
add r1, r2, r1
|
|
ldr r2, [sp, #0x4]
|
|
ldr r0, [sp, #0x0]
|
|
sub r2, r2, r5
|
|
lsl r2, r2, #0x1
|
|
blx MIi_CpuClear16
|
|
_02003952:
|
|
cmp r7, #0x0
|
|
beq _0200395A
|
|
cmp r7, #0x2
|
|
bne _0200396E
|
|
_0200395A:
|
|
add r1, r6, r4
|
|
ldr r2, [r1, #0x4]
|
|
lsl r1, r5, #0x1
|
|
add r1, r2, r1
|
|
ldr r2, [sp, #0x4]
|
|
ldr r0, [sp, #0x0]
|
|
sub r2, r2, r5
|
|
lsl r2, r2, #0x1
|
|
blx MIi_CpuClear16
|
|
_0200396E:
|
|
add sp, #0x8
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02003974
|
|
FUN_02003974: ; 0x02003974
|
|
push {r4-r7, lr}
|
|
sub sp, #0xc
|
|
str r0, [sp, #0x0]
|
|
add r0, sp, #0x10
|
|
ldrh r0, [r0, #0x10]
|
|
str r1, [sp, #0x4]
|
|
add r7, r2, #0x0
|
|
lsl r1, r0, #0x1b
|
|
lsr r1, r1, #0x1b
|
|
mov r12, r1
|
|
lsl r1, r0, #0x16
|
|
lsl r0, r0, #0x11
|
|
lsr r1, r1, #0x1b
|
|
lsr r0, r0, #0x1b
|
|
mov r2, #0x0
|
|
mov lr, r1
|
|
str r0, [sp, #0x8]
|
|
cmp r7, #0x0
|
|
bls _020039E2
|
|
_0200399A:
|
|
ldr r0, [sp, #0x0]
|
|
lsl r6, r2, #0x1
|
|
ldrh r4, [r0, r6]
|
|
lsl r0, r4, #0x1b
|
|
lsr r1, r0, #0x1b
|
|
lsl r0, r4, #0x16
|
|
lsl r4, r4, #0x11
|
|
lsr r5, r4, #0x1b
|
|
ldr r4, [sp, #0x8]
|
|
lsr r0, r0, #0x1b
|
|
sub r4, r4, r5
|
|
mul r4, r3
|
|
asr r4, r4, #0x4
|
|
add r4, r5, r4
|
|
lsl r5, r4, #0xa
|
|
mov r4, r12
|
|
sub r4, r4, r1
|
|
mul r4, r3
|
|
asr r4, r4, #0x4
|
|
add r1, r1, r4
|
|
mov r4, lr
|
|
sub r4, r4, r0
|
|
mul r4, r3
|
|
asr r4, r4, #0x4
|
|
add r0, r0, r4
|
|
lsl r0, r0, #0x5
|
|
orr r0, r1
|
|
add r1, r5, #0x0
|
|
orr r1, r0
|
|
ldr r0, [sp, #0x4]
|
|
strh r1, [r0, r6]
|
|
add r0, r2, #0x1
|
|
lsl r0, r0, #0x10
|
|
lsr r2, r0, #0x10
|
|
cmp r2, r7
|
|
blo _0200399A
|
|
_020039E2:
|
|
add sp, #0xc
|
|
pop {r4-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_020039E8
|
|
FUN_020039E8: ; 0x020039E8
|
|
push {r3-r7, lr}
|
|
sub sp, #0x8
|
|
add r7, r2, #0x0
|
|
add r5, r0, #0x0
|
|
mov r2, #0x14
|
|
add r6, r1, #0x0
|
|
mul r6, r2
|
|
str r3, [sp, #0x4]
|
|
ldr r1, [r5, r6]
|
|
mov r0, #0x0
|
|
add r4, r5, r6
|
|
cmp r1, #0x0
|
|
beq _02003A0A
|
|
ldr r1, [r4, #0x4]
|
|
cmp r1, #0x0
|
|
beq _02003A0A
|
|
mov r0, #0x1
|
|
_02003A0A:
|
|
cmp r0, #0x0
|
|
bne _02003A12
|
|
bl ErrorHandling
|
|
_02003A12:
|
|
add r3, sp, #0x10
|
|
ldrh r0, [r3, #0x14]
|
|
add r2, r5, r6
|
|
lsl r1, r7, #0x1
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [r4, #0x0]
|
|
ldr r2, [r2, #0x4]
|
|
add r0, r0, r1
|
|
add r1, r2, r1
|
|
ldrb r3, [r3, #0x10]
|
|
ldr r2, [sp, #0x4]
|
|
bl FUN_02003974
|
|
add sp, #0x8
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start FUN_02003A30
|
|
FUN_02003A30: ; 0x02003A30
|
|
push {r3-r7, lr}
|
|
sub sp, #0x8
|
|
str r3, [sp, #0x4]
|
|
add r5, r0, #0x0
|
|
add r6, r1, #0x0
|
|
add r4, r2, #0x0
|
|
ldr r7, [sp, #0x20]
|
|
beq _02003A60
|
|
_02003A40:
|
|
mov r0, #0x1
|
|
tst r0, r4
|
|
beq _02003A54
|
|
str r7, [sp, #0x0]
|
|
ldr r3, [sp, #0x4]
|
|
add r0, r5, #0x0
|
|
add r1, r6, #0x0
|
|
mov r2, #0x10
|
|
bl FUN_02003974
|
|
_02003A54:
|
|
lsl r0, r4, #0xf
|
|
lsr r4, r0, #0x10
|
|
add r6, #0x20
|
|
add r5, #0x20
|
|
cmp r4, #0x0
|
|
bne _02003A40
|
|
_02003A60:
|
|
add sp, #0x8
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start FUN_02003A64
|
|
FUN_02003A64: ; 0x02003A64
|
|
push {r4-r7, lr}
|
|
sub sp, #0xc
|
|
str r3, [sp, #0x8]
|
|
add r6, r0, #0x0
|
|
add r7, r1, #0x0
|
|
ldr r0, [sp, #0x20]
|
|
add r5, r2, #0x0
|
|
mov r1, #0x14
|
|
add r2, r7, #0x0
|
|
str r0, [sp, #0x20]
|
|
mul r2, r1
|
|
mov r4, #0x0
|
|
ldr r1, [r6, r2]
|
|
add r0, r4, #0x0
|
|
cmp r1, #0x0
|
|
beq _02003A8E
|
|
add r1, r6, r2
|
|
ldr r1, [r1, #0x4]
|
|
cmp r1, #0x0
|
|
beq _02003A8E
|
|
mov r0, #0x1
|
|
_02003A8E:
|
|
cmp r0, #0x0
|
|
bne _02003A96
|
|
bl ErrorHandling
|
|
_02003A96:
|
|
cmp r5, #0x0
|
|
beq _02003AC0
|
|
_02003A9A:
|
|
mov r0, #0x1
|
|
tst r0, r5
|
|
beq _02003AB6
|
|
ldr r0, [sp, #0x8]
|
|
lsl r2, r4, #0x10
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [sp, #0x20]
|
|
add r1, r7, #0x0
|
|
str r0, [sp, #0x4]
|
|
add r0, r6, #0x0
|
|
lsr r2, r2, #0x10
|
|
mov r3, #0x10
|
|
bl FUN_020039E8
|
|
_02003AB6:
|
|
lsl r0, r5, #0xf
|
|
lsr r5, r0, #0x10
|
|
add r4, #0x10
|
|
cmp r5, #0x0
|
|
bne _02003A9A
|
|
_02003AC0:
|
|
add sp, #0xc
|
|
pop {r4-r7, pc}
|
|
|
|
thumb_func_start FUN_02003AC4
|
|
FUN_02003AC4: ; 0x02003AC4
|
|
push {r3-r7, lr}
|
|
mov lr, r1
|
|
mov r12, r2
|
|
add r7, r3, #0x0
|
|
mov r4, #0x0
|
|
cmp r1, #0x0
|
|
ble _02003B3C
|
|
ldr r6, [sp, #0x18]
|
|
_02003AD4:
|
|
ldrh r3, [r0, #0x0]
|
|
mov r1, #0x1f
|
|
add r2, r3, #0x0
|
|
asr r5, r3, #0xa
|
|
and r2, r1
|
|
and r5, r1
|
|
mov r1, #0x1d
|
|
mul r1, r5
|
|
mov r5, #0x4c
|
|
mul r5, r2
|
|
asr r3, r3, #0x5
|
|
mov r2, #0x1f
|
|
and r3, r2
|
|
mov r2, #0x97
|
|
mul r2, r3
|
|
add r2, r5, r2
|
|
add r1, r1, r2
|
|
asr r3, r1, #0x8
|
|
mov r1, r12
|
|
add r2, r1, #0x0
|
|
mul r2, r3
|
|
lsl r1, r2, #0x10
|
|
lsr r1, r1, #0x10
|
|
asr r2, r1, #0x8
|
|
add r1, r7, #0x0
|
|
mul r1, r3
|
|
mul r3, r6
|
|
lsl r1, r1, #0x10
|
|
lsl r3, r3, #0x10
|
|
lsr r1, r1, #0x10
|
|
lsr r3, r3, #0x10
|
|
asr r1, r1, #0x8
|
|
asr r3, r3, #0x8
|
|
cmp r2, #0x1f
|
|
ble _02003B1C
|
|
mov r2, #0x1f
|
|
_02003B1C:
|
|
cmp r1, #0x1f
|
|
ble _02003B22
|
|
mov r1, #0x1f
|
|
_02003B22:
|
|
cmp r3, #0x1f
|
|
ble _02003B28
|
|
mov r3, #0x1f
|
|
_02003B28:
|
|
lsl r3, r3, #0xa
|
|
lsl r1, r1, #0x5
|
|
orr r1, r3
|
|
orr r1, r2
|
|
strh r1, [r0, #0x0]
|
|
add r4, r4, #0x1
|
|
mov r1, lr
|
|
add r0, r0, #0x2
|
|
cmp r4, r1
|
|
blt _02003AD4
|
|
_02003B3C:
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02003B40
|
|
FUN_02003B40: ; 0x02003B40
|
|
push {r3-r5, lr}
|
|
sub sp, #0x8
|
|
add r5, r0, #0x0
|
|
add r0, r1, #0x0
|
|
add r1, r2, #0x0
|
|
add r2, sp, #0x4
|
|
bl FUN_02006C08
|
|
add r4, r0, #0x0
|
|
bne _02003B58
|
|
bl ErrorHandling
|
|
_02003B58:
|
|
ldr r0, [sp, #0x1c]
|
|
cmp r0, #0x0
|
|
bne _02003B64
|
|
ldr r0, [sp, #0x4]
|
|
ldr r0, [r0, #0x8]
|
|
str r0, [sp, #0x1c]
|
|
_02003B64:
|
|
ldr r0, [sp, #0x2c]
|
|
ldr r2, [sp, #0x24]
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [sp, #0x4]
|
|
ldr r3, [sp, #0x28]
|
|
ldr r0, [r0, #0xc]
|
|
mov r1, #0x10
|
|
bl FUN_02003AC4
|
|
ldr r0, [sp, #0x1c]
|
|
add r3, sp, #0x8
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
str r0, [sp, #0x0]
|
|
ldr r1, [sp, #0x4]
|
|
ldrh r3, [r3, #0x18]
|
|
ldr r1, [r1, #0xc]
|
|
ldr r2, [sp, #0x18]
|
|
add r0, r5, #0x0
|
|
bl FUN_02003054
|
|
add r0, r4, #0x0
|
|
bl FUN_02016A18
|
|
add sp, #0x8
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_02003B98
|
|
FUN_02003B98: ; 0x02003B98
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
add r6, r1, #0x0
|
|
bl FUN_02003D30
|
|
add r4, r0, #0x0
|
|
blx FUN_020C01D0
|
|
bl FUN_020040C8
|
|
add r0, r4, #0x0
|
|
bl FUN_02004064
|
|
add r0, r4, #0x0
|
|
ldr r1, _02003C00 ; =0x000BBC00
|
|
add r0, #0x94
|
|
blx FUN_020C2A94
|
|
add r1, r4, #0x0
|
|
add r1, #0x90
|
|
str r0, [r1, #0x0]
|
|
add r2, r4, #0x0
|
|
add r2, #0x90
|
|
ldr r1, _02003C04 ; =0x02104780
|
|
ldr r2, [r2, #0x0]
|
|
add r0, r4, #0x0
|
|
mov r3, #0x0
|
|
blx FUN_020C26F8
|
|
add r0, r4, #0x0
|
|
add r0, #0x90
|
|
ldr r0, [r0, #0x0]
|
|
blx FUN_020C39CC
|
|
add r0, r4, #0x0
|
|
bl FUN_02004088
|
|
add r0, r4, #0x0
|
|
bl FUN_020040A4
|
|
ldr r0, _02003C08 ; =0x02107070
|
|
mov r1, #0x0
|
|
str r1, [r0, #0x4]
|
|
ldr r0, _02003C0C ; =0x000BCD4C
|
|
str r5, [r4, r0]
|
|
ldrh r0, [r6, #0x0]
|
|
lsl r0, r0, #0x1a
|
|
lsr r0, r0, #0x1e
|
|
bl FUN_02004D60
|
|
pop {r4-r6, pc}
|
|
nop
|
|
_02003C00: .word 0x000BBC00
|
|
_02003C04: .word 0x02104780
|
|
_02003C08: .word 0x02107070
|
|
_02003C0C: .word 0x000BCD4C
|
|
|
|
thumb_func_start FUN_02003C10
|
|
FUN_02003C10: ; 0x02003C10
|
|
push {r4, lr}
|
|
bl FUN_02003D30
|
|
add r4, r0, #0x0
|
|
bl FUN_02003D04
|
|
cmp r0, #0x0
|
|
bne _02003C30
|
|
ldr r0, _02003C3C ; =0x000BCD00
|
|
ldr r1, [r4, r0]
|
|
cmp r1, #0x0
|
|
ble _02003C2C
|
|
sub r1, r1, #0x1
|
|
str r1, [r4, r0]
|
|
_02003C2C:
|
|
bl FUN_02003C40
|
|
_02003C30:
|
|
bl FUN_02005CFC
|
|
blx FUN_020C01A0
|
|
pop {r4, pc}
|
|
nop
|
|
_02003C3C: .word 0x000BCD00
|
|
|
|
thumb_func_start FUN_02003C40
|
|
FUN_02003C40: ; 0x02003C40
|
|
push {r4, lr}
|
|
bl FUN_02003D30
|
|
add r4, r0, #0x0
|
|
ldr r0, _02003CDC ; =0x02107070
|
|
ldr r0, [r0, #0x0]
|
|
cmp r0, #0x6
|
|
bhi _02003CD8
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02003C5C: ; jump table (using 16-bit offset)
|
|
.short _02003CD8 - _02003C5C - 2; case 0
|
|
.short _02003C6A - _02003C5C - 2; case 1
|
|
.short _02003CD8 - _02003C5C - 2; case 2
|
|
.short _02003C72 - _02003C5C - 2; case 3
|
|
.short _02003C82 - _02003C5C - 2; case 4
|
|
.short _02003C92 - _02003C5C - 2; case 5
|
|
.short _02003CB0 - _02003C5C - 2; case 6
|
|
_02003C6A:
|
|
mov r0, #0x2
|
|
bl FUN_02003CE8
|
|
pop {r4, pc}
|
|
_02003C72:
|
|
bl FUN_02005404
|
|
cmp r0, #0x0
|
|
bne _02003CD8
|
|
mov r0, #0x2
|
|
bl FUN_02003CE8
|
|
pop {r4, pc}
|
|
_02003C82:
|
|
bl FUN_02005404
|
|
cmp r0, #0x0
|
|
bne _02003CD8
|
|
mov r0, #0x2
|
|
bl FUN_02003CE8
|
|
pop {r4, pc}
|
|
_02003C92:
|
|
bl FUN_02005404
|
|
cmp r0, #0x0
|
|
bne _02003CD8
|
|
bl FUN_02004D94
|
|
cmp r0, #0x0
|
|
bne _02003CD8
|
|
bl FUN_020040DC
|
|
ldr r0, _02003CE0 ; =0x000BCD0E
|
|
ldrh r0, [r4, r0]
|
|
bl FUN_0200521C
|
|
pop {r4, pc}
|
|
_02003CB0:
|
|
bl FUN_02005404
|
|
cmp r0, #0x0
|
|
bne _02003CD8
|
|
bl FUN_02004D94
|
|
cmp r0, #0x0
|
|
bne _02003CD8
|
|
bl FUN_020040DC
|
|
ldr r0, _02003CE0 ; =0x000BCD0E
|
|
ldrh r0, [r4, r0]
|
|
bl FUN_0200521C
|
|
ldr r1, _02003CE4 ; =0x000BCD08
|
|
mov r0, #0x7f
|
|
ldr r1, [r4, r1]
|
|
mov r2, #0x0
|
|
bl FUN_0200538C
|
|
_02003CD8:
|
|
pop {r4, pc}
|
|
nop
|
|
_02003CDC: .word 0x02107070
|
|
_02003CE0: .word 0x000BCD0E
|
|
_02003CE4: .word 0x000BCD08
|
|
|
|
thumb_func_start FUN_02003CE8
|
|
FUN_02003CE8: ; 0x02003CE8
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
bl FUN_02003D30
|
|
ldr r1, _02003CFC ; =0x000BCCFC
|
|
mov r2, #0x0
|
|
strh r2, [r0, r1]
|
|
ldr r0, _02003D00 ; =0x02107070
|
|
str r4, [r0, #0x0]
|
|
pop {r4, pc}
|
|
.balign 4
|
|
_02003CFC: .word 0x000BCCFC
|
|
_02003D00: .word 0x02107070
|
|
|
|
thumb_func_start FUN_02003D04
|
|
FUN_02003D04: ; 0x02003D04
|
|
push {r4, lr}
|
|
bl FUN_02003D30
|
|
add r4, r0, #0x0
|
|
mov r0, #0x2
|
|
bl FUN_020048BC
|
|
cmp r0, #0x0
|
|
beq _02003D1A
|
|
mov r0, #0x1
|
|
pop {r4, pc}
|
|
_02003D1A:
|
|
ldr r0, _02003D2C ; =0x000BCD12
|
|
ldrh r0, [r4, r0]
|
|
cmp r0, #0x0
|
|
beq _02003D26
|
|
mov r0, #0x1
|
|
pop {r4, pc}
|
|
_02003D26:
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
nop
|
|
_02003D2C: .word 0x000BCD12
|
|
|
|
thumb_func_start FUN_02003D30
|
|
FUN_02003D30: ; 0x02003D30
|
|
ldr r0, _02003D34 ; =0x02107078
|
|
bx lr
|
|
.balign 4
|
|
_02003D34: .word 0x02107078
|
|
|
|
thumb_func_start FUN_02003D38
|
|
FUN_02003D38: ; 0x02003D38
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
bl FUN_02003D30
|
|
cmp r4, #0x27
|
|
bls _02003D46
|
|
b _02003E92
|
|
_02003D46:
|
|
add r1, r4, r4
|
|
add r1, pc
|
|
ldrh r1, [r1, #0x6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_02003D52: ; jump table (using 16-bit offset)
|
|
.short _02003DA8 - _02003D52 - 2; case 0
|
|
.short _02003DAE - _02003D52 - 2; case 1
|
|
.short _02003DB4 - _02003D52 - 2; case 2
|
|
.short _02003DBA - _02003D52 - 2; case 3
|
|
.short _02003DC0 - _02003D52 - 2; case 4
|
|
.short _02003DA2 - _02003D52 - 2; case 5
|
|
.short _02003DC6 - _02003D52 - 2; case 6
|
|
.short _02003DCC - _02003D52 - 2; case 7
|
|
.short _02003DD2 - _02003D52 - 2; case 8
|
|
.short _02003DD8 - _02003D52 - 2; case 9
|
|
.short _02003DDE - _02003D52 - 2; case 10
|
|
.short _02003DE4 - _02003D52 - 2; case 11
|
|
.short _02003DEA - _02003D52 - 2; case 12
|
|
.short _02003DF0 - _02003D52 - 2; case 13
|
|
.short _02003DF6 - _02003D52 - 2; case 14
|
|
.short _02003DFC - _02003D52 - 2; case 15
|
|
.short _02003E02 - _02003D52 - 2; case 16
|
|
.short _02003E08 - _02003D52 - 2; case 17
|
|
.short _02003E0E - _02003D52 - 2; case 18
|
|
.short _02003E14 - _02003D52 - 2; case 19
|
|
.short _02003E1A - _02003D52 - 2; case 20
|
|
.short _02003E20 - _02003D52 - 2; case 21
|
|
.short _02003E26 - _02003D52 - 2; case 22
|
|
.short _02003E2C - _02003D52 - 2; case 23
|
|
.short _02003E32 - _02003D52 - 2; case 24
|
|
.short _02003E38 - _02003D52 - 2; case 25
|
|
.short _02003E3E - _02003D52 - 2; case 26
|
|
.short _02003E44 - _02003D52 - 2; case 27
|
|
.short _02003E4A - _02003D52 - 2; case 28
|
|
.short _02003E50 - _02003D52 - 2; case 29
|
|
.short _02003E56 - _02003D52 - 2; case 30
|
|
.short _02003E5C - _02003D52 - 2; case 31
|
|
.short _02003E62 - _02003D52 - 2; case 32
|
|
.short _02003E68 - _02003D52 - 2; case 33
|
|
.short _02003E6E - _02003D52 - 2; case 34
|
|
.short _02003E74 - _02003D52 - 2; case 35
|
|
.short _02003E7A - _02003D52 - 2; case 36
|
|
.short _02003E80 - _02003D52 - 2; case 37
|
|
.short _02003E86 - _02003D52 - 2; case 38
|
|
.short _02003E8C - _02003D52 - 2; case 39
|
|
_02003DA2:
|
|
ldr r1, _02003E9C ; =0x000BCCFE
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003DA8:
|
|
ldr r1, _02003EA0 ; =0x000BBCB8
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003DAE:
|
|
ldr r1, _02003EA4 ; =0x000BBCBC
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003DB4:
|
|
ldr r1, _02003EA8 ; =0x000BBCC0
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003DBA:
|
|
ldr r1, _02003EAC ; =0x000BBCE0
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003DC0:
|
|
ldr r1, _02003EB0 ; =0x000BCCE0
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003DC6:
|
|
ldr r1, _02003EB4 ; =0x000BCD00
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003DCC:
|
|
ldr r1, _02003EB8 ; =0x000BCD04
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003DD2:
|
|
ldr r1, _02003EBC ; =0x000BCD08
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003DD8:
|
|
ldr r1, _02003EC0 ; =0x000BCD0C
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003DDE:
|
|
ldr r1, _02003EC4 ; =0x000BCD0E
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003DE4:
|
|
ldr r1, _02003EC8 ; =0x000BCD10
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003DEA:
|
|
ldr r1, _02003ECC ; =0x000BCD11
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003DF0:
|
|
ldr r1, _02003ED0 ; =0x000BCD12
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003DF6:
|
|
ldr r1, _02003ED4 ; =0x000BCD14
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003DFC:
|
|
ldr r1, _02003ED8 ; =0x000BCD15
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E02:
|
|
ldr r1, _02003EDC ; =0x000BCD16
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E08:
|
|
ldr r1, _02003EE0 ; =0x000BCD17
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E0E:
|
|
ldr r1, _02003EE4 ; =0x000BCD18
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E14:
|
|
ldr r1, _02003EE8 ; =0x000BCD19
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E1A:
|
|
ldr r1, _02003EEC ; =0x000BCD1A
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E20:
|
|
ldr r1, _02003EF0 ; =0x000BCD1B
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E26:
|
|
ldr r1, _02003EF4 ; =0x000BCD1C
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E2C:
|
|
ldr r1, _02003EF8 ; =0x000BCD20
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E32:
|
|
ldr r1, _02003EFC ; =0x000BCD24
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E38:
|
|
ldr r1, _02003F00 ; =0x000BCD28
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E3E:
|
|
ldr r1, _02003F04 ; =0x000BCD2C
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E44:
|
|
ldr r1, _02003F08 ; =0x000BCD30
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E4A:
|
|
ldr r1, _02003F0C ; =0x000BCD34
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E50:
|
|
ldr r1, _02003F10 ; =0x000BCD38
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E56:
|
|
ldr r1, _02003F14 ; =0x000BCD39
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E5C:
|
|
ldr r1, _02003F18 ; =0x000BCD3A
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E62:
|
|
ldr r1, _02003F1C ; =0x000BCD3C
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E68:
|
|
ldr r1, _02003F20 ; =0x000BCD40
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E6E:
|
|
ldr r1, _02003F24 ; =0x000BCD48
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E74:
|
|
ldr r1, _02003F28 ; =0x000BCD4C
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E7A:
|
|
ldr r1, _02003F2C ; =0x000BCD50
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E80:
|
|
ldr r1, _02003F30 ; =0x000BCD54
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E86:
|
|
ldr r1, _02003F34 ; =0x000BCD58
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E8C:
|
|
ldr r1, _02003F38 ; =0x000BCD5C
|
|
add r0, r0, r1
|
|
pop {r4, pc}
|
|
_02003E92:
|
|
bl ErrorHandling
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
nop
|
|
_02003E9C: .word 0x000BCCFE
|
|
_02003EA0: .word 0x000BBCB8
|
|
_02003EA4: .word 0x000BBCBC
|
|
_02003EA8: .word 0x000BBCC0
|
|
_02003EAC: .word 0x000BBCE0
|
|
_02003EB0: .word 0x000BCCE0
|
|
_02003EB4: .word 0x000BCD00
|
|
_02003EB8: .word 0x000BCD04
|
|
_02003EBC: .word 0x000BCD08
|
|
_02003EC0: .word 0x000BCD0C
|
|
_02003EC4: .word 0x000BCD0E
|
|
_02003EC8: .word 0x000BCD10
|
|
_02003ECC: .word 0x000BCD11
|
|
_02003ED0: .word 0x000BCD12
|
|
_02003ED4: .word 0x000BCD14
|
|
_02003ED8: .word 0x000BCD15
|
|
_02003EDC: .word 0x000BCD16
|
|
_02003EE0: .word 0x000BCD17
|
|
_02003EE4: .word 0x000BCD18
|
|
_02003EE8: .word 0x000BCD19
|
|
_02003EEC: .word 0x000BCD1A
|
|
_02003EF0: .word 0x000BCD1B
|
|
_02003EF4: .word 0x000BCD1C
|
|
_02003EF8: .word 0x000BCD20
|
|
_02003EFC: .word 0x000BCD24
|
|
_02003F00: .word 0x000BCD28
|
|
_02003F04: .word 0x000BCD2C
|
|
_02003F08: .word 0x000BCD30
|
|
_02003F0C: .word 0x000BCD34
|
|
_02003F10: .word 0x000BCD38
|
|
_02003F14: .word 0x000BCD39
|
|
_02003F18: .word 0x000BCD3A
|
|
_02003F1C: .word 0x000BCD3C
|
|
_02003F20: .word 0x000BCD40
|
|
_02003F24: .word 0x000BCD48
|
|
_02003F28: .word 0x000BCD4C
|
|
_02003F2C: .word 0x000BCD50
|
|
_02003F30: .word 0x000BCD54
|
|
_02003F34: .word 0x000BCD58
|
|
_02003F38: .word 0x000BCD5C
|
|
|
|
thumb_func_start FUN_02003F3C
|
|
FUN_02003F3C: ; 0x02003F3C
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
bl FUN_02003D30
|
|
add r0, #0x90
|
|
ldr r0, [r0, #0x0]
|
|
blx FUN_020C290C
|
|
add r4, r0, #0x0
|
|
mov r0, #0x0
|
|
mvn r0, r0
|
|
cmp r4, r0
|
|
bne _02003F5A
|
|
bl ErrorHandling
|
|
_02003F5A:
|
|
cmp r5, #0x0
|
|
beq _02003F60
|
|
str r4, [r5, #0x0]
|
|
_02003F60:
|
|
add r0, r4, #0x0
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_02003F64
|
|
FUN_02003F64: ; 0x02003F64
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
bl FUN_02003D30
|
|
add r0, #0x90
|
|
ldr r0, [r0, #0x0]
|
|
add r1, r4, #0x0
|
|
blx FUN_020C2828
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_02003F78
|
|
FUN_02003F78: ; 0x02003F78
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
bl FUN_02003D30
|
|
add r1, r0, #0x0
|
|
add r1, #0x90
|
|
ldr r1, [r1, #0x0]
|
|
add r0, r4, #0x0
|
|
blx FUN_020C36A8
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02003F90
|
|
FUN_02003F90: ; 0x02003F90
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
bl FUN_02003D30
|
|
add r1, r0, #0x0
|
|
add r1, #0x90
|
|
ldr r1, [r1, #0x0]
|
|
add r0, r4, #0x0
|
|
blx FUN_020C3674
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02003FA8
|
|
FUN_02003FA8: ; 0x02003FA8
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
add r4, r1, #0x0
|
|
bl FUN_02003D30
|
|
add r2, r0, #0x0
|
|
add r2, #0x90
|
|
ldr r2, [r2, #0x0]
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
blx FUN_020C35E0
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02003FC4
|
|
FUN_02003FC4: ; 0x02003FC4
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
bl FUN_02003D30
|
|
add r1, r0, #0x0
|
|
add r1, #0x90
|
|
ldr r1, [r1, #0x0]
|
|
add r0, r4, #0x0
|
|
blx FUN_020C360C
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02003FDC
|
|
FUN_02003FDC: ; 0x02003FDC
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
bl FUN_02003D30
|
|
add r1, r0, #0x0
|
|
add r1, #0x90
|
|
ldr r1, [r1, #0x0]
|
|
add r0, r4, #0x0
|
|
blx FUN_020C3640
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02003FF4
|
|
FUN_02003FF4: ; 0x02003FF4
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
bl FUN_02003D30
|
|
add r4, r0, #0x0
|
|
cmp r5, #0x9
|
|
blt _02004008
|
|
bl ErrorHandling
|
|
mov r5, #0x0
|
|
_02004008:
|
|
ldr r0, _02004014 ; =0x000BBC94
|
|
add r1, r4, r0
|
|
lsl r0, r5, #0x2
|
|
add r0, r1, r0
|
|
pop {r3-r5, pc}
|
|
nop
|
|
_02004014: .word 0x000BBC94
|
|
|
|
thumb_func_start FUN_02004018
|
|
FUN_02004018: ; 0x02004018
|
|
push {r3, lr}
|
|
cmp r0, #0x7
|
|
bhi _0200405A
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_0200402A: ; jump table (using 16-bit offset)
|
|
.short _0200403E - _0200402A - 2; case 0
|
|
.short _0200403A - _0200402A - 2; case 1
|
|
.short _02004042 - _0200402A - 2; case 2
|
|
.short _02004046 - _0200402A - 2; case 3
|
|
.short _0200404A - _0200402A - 2; case 4
|
|
.short _0200404E - _0200402A - 2; case 5
|
|
.short _02004052 - _0200402A - 2; case 6
|
|
.short _02004056 - _0200402A - 2; case 7
|
|
_0200403A:
|
|
mov r0, #0x0
|
|
pop {r3, pc}
|
|
_0200403E:
|
|
mov r0, #0x1
|
|
pop {r3, pc}
|
|
_02004042:
|
|
mov r0, #0x2
|
|
pop {r3, pc}
|
|
_02004046:
|
|
mov r0, #0x3
|
|
pop {r3, pc}
|
|
_0200404A:
|
|
mov r0, #0x4
|
|
pop {r3, pc}
|
|
_0200404E:
|
|
mov r0, #0x5
|
|
pop {r3, pc}
|
|
_02004052:
|
|
mov r0, #0x6
|
|
pop {r3, pc}
|
|
_02004056:
|
|
mov r0, #0x7
|
|
pop {r3, pc}
|
|
_0200405A:
|
|
bl ErrorHandling
|
|
mov r0, #0x3
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004064
|
|
FUN_02004064: ; 0x02004064
|
|
push {r4, lr}
|
|
ldr r2, _02004080 ; =0x000BCD60
|
|
mov r1, #0x0
|
|
add r4, r0, #0x0
|
|
blx Call_FillMemWithValue
|
|
ldr r0, _02004084 ; =0x000BCD1C
|
|
mov r1, #0x0
|
|
_02004074:
|
|
add r1, r1, #0x1
|
|
str r1, [r4, r0]
|
|
add r4, r4, #0x4
|
|
cmp r1, #0x7
|
|
blt _02004074
|
|
pop {r4, pc}
|
|
.balign 4
|
|
_02004080: .word 0x000BCD60
|
|
_02004084: .word 0x000BCD1C
|
|
|
|
thumb_func_start FUN_02004088
|
|
FUN_02004088: ; 0x02004088
|
|
push {r3-r5, lr}
|
|
ldr r1, _020040A0 ; =0x000BBC94
|
|
mov r4, #0x0
|
|
add r5, r0, r1
|
|
_02004090:
|
|
add r0, r5, #0x0
|
|
blx FUN_020C0F80
|
|
add r4, r4, #0x1
|
|
add r5, r5, #0x4
|
|
cmp r4, #0x9
|
|
blt _02004090
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
_020040A0: .word 0x000BBC94
|
|
|
|
thumb_func_start FUN_020040A4
|
|
FUN_020040A4: ; 0x020040A4
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, _020040C0 ; =0x000BCD1C
|
|
add r0, r4, r0
|
|
bl FUN_02003F3C
|
|
mov r0, #0x0
|
|
bl FUN_02003F78
|
|
ldr r0, _020040C4 ; =0x000BCD20
|
|
add r0, r4, r0
|
|
bl FUN_02003F3C
|
|
pop {r4, pc}
|
|
.balign 4
|
|
_020040C0: .word 0x000BCD1C
|
|
_020040C4: .word 0x000BCD20
|
|
|
|
thumb_func_start FUN_020040C8
|
|
FUN_020040C8: ; 0x020040C8
|
|
push {r3, lr}
|
|
blx MIC_Init
|
|
mov r0, #0x1
|
|
blx PM_SetAmp
|
|
mov r0, #0x2
|
|
blx PM_SetAmpGain
|
|
pop {r3, pc}
|
|
|
|
thumb_func_start FUN_020040DC
|
|
FUN_020040DC: ; 0x020040DC
|
|
push {r3, lr}
|
|
mov r0, #0x7
|
|
mov r1, #0x0
|
|
blx FUN_020C1040
|
|
mov r0, #0x7
|
|
bl FUN_02003FF4
|
|
blx FUN_020C0F68
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_020040F4
|
|
FUN_020040F4: ; 0x020040F4
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
mov r0, #0x5
|
|
bl FUN_02003D38
|
|
strb r4, [r0, #0x0]
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004104
|
|
FUN_02004104: ; 0x02004104
|
|
push {r3, lr}
|
|
mov r0, #0x5
|
|
bl FUN_02003D38
|
|
ldrb r0, [r0, #0x0]
|
|
pop {r3, pc}
|
|
|
|
thumb_func_start FUN_02004110
|
|
FUN_02004110: ; 0x02004110
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
mov r0, #0x9
|
|
bl FUN_02003D38
|
|
strh r4, [r0, #0x0]
|
|
mov r0, #0x0
|
|
bl FUN_02004130
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_02004124
|
|
FUN_02004124: ; 0x02004124
|
|
push {r3, lr}
|
|
mov r0, #0x9
|
|
bl FUN_02003D38
|
|
ldrh r0, [r0, #0x0]
|
|
pop {r3, pc}
|
|
|
|
thumb_func_start FUN_02004130
|
|
FUN_02004130: ; 0x02004130
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
mov r0, #0xa
|
|
bl FUN_02003D38
|
|
strh r4, [r0, #0x0]
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004140
|
|
FUN_02004140: ; 0x02004140
|
|
push {r3, lr}
|
|
mov r0, #0xa
|
|
bl FUN_02003D38
|
|
ldrh r0, [r0, #0x0]
|
|
pop {r3, pc}
|
|
|
|
thumb_func_start FUN_0200414C
|
|
FUN_0200414C: ; 0x0200414C
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
mov r0, #0x1f
|
|
bl FUN_02003D38
|
|
strh r4, [r0, #0x0]
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_0200415C
|
|
FUN_0200415C: ; 0x0200415C
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
mov r0, #0x14
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
mov r0, #0x15
|
|
bl FUN_02003D38
|
|
cmp r5, #0x33
|
|
bhs _0200417A
|
|
strb r5, [r4, #0x0]
|
|
mov r1, #0x0
|
|
strb r1, [r0, #0x0]
|
|
pop {r3-r5, pc}
|
|
_0200417A:
|
|
strb r5, [r0, #0x0]
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004180
|
|
FUN_02004180: ; 0x02004180
|
|
push {r3, lr}
|
|
cmp r0, #0x39
|
|
bgt _020041DE
|
|
blt _0200418A
|
|
b _020042C8
|
|
_0200418A:
|
|
cmp r0, #0x35
|
|
bgt _020041CC
|
|
blt _02004192
|
|
b _0200429A
|
|
_02004192:
|
|
cmp r0, #0x33
|
|
bgt _020041C6
|
|
bge _0200427C
|
|
cmp r0, #0xe
|
|
bhi _020041CA
|
|
add r2, r0, r0
|
|
add r2, pc
|
|
ldrh r2, [r2, #0x6]
|
|
lsl r2, r2, #0x10
|
|
asr r2, r2, #0x10
|
|
add pc, r2
|
|
_020041A8: ; jump table (using 16-bit offset)
|
|
.short _0200432C - _020041A8 - 2; case 0
|
|
.short _02004222 - _020041A8 - 2; case 1
|
|
.short _0200422C - _020041A8 - 2; case 2
|
|
.short _02004236 - _020041A8 - 2; case 3
|
|
.short _02004240 - _020041A8 - 2; case 4
|
|
.short _0200424A - _020041A8 - 2; case 5
|
|
.short _0200425E - _020041A8 - 2; case 6
|
|
.short _0200429A - _020041A8 - 2; case 7
|
|
.short _02004268 - _020041A8 - 2; case 8
|
|
.short _02004222 - _020041A8 - 2; case 9
|
|
.short _02004222 - _020041A8 - 2; case 10
|
|
.short _02004254 - _020041A8 - 2; case 11
|
|
.short _02004272 - _020041A8 - 2; case 12
|
|
.short _0200422C - _020041A8 - 2; case 13
|
|
.short _02004222 - _020041A8 - 2; case 14
|
|
_020041C6:
|
|
cmp r0, #0x34
|
|
beq _02004290
|
|
_020041CA:
|
|
b _0200432C
|
|
_020041CC:
|
|
cmp r0, #0x37
|
|
bgt _020041D8
|
|
bge _020042AE
|
|
cmp r0, #0x36
|
|
beq _020042A4
|
|
b _0200432C
|
|
_020041D8:
|
|
cmp r0, #0x38
|
|
beq _020042BE
|
|
b _0200432C
|
|
_020041DE:
|
|
cmp r0, #0x3d
|
|
bgt _020041F8
|
|
blt _020041E6
|
|
b _020042F0
|
|
_020041E6:
|
|
cmp r0, #0x3b
|
|
bgt _020041F2
|
|
bge _020042DC
|
|
cmp r0, #0x3a
|
|
beq _020042D2
|
|
b _0200432C
|
|
_020041F2:
|
|
cmp r0, #0x3c
|
|
beq _020042E6
|
|
b _0200432C
|
|
_020041F8:
|
|
cmp r0, #0x3f
|
|
bgt _02004206
|
|
blt _02004200
|
|
b _02004304
|
|
_02004200:
|
|
cmp r0, #0x3e
|
|
beq _020042FA
|
|
b _0200432C
|
|
_02004206:
|
|
sub r0, #0x40
|
|
cmp r0, #0x3
|
|
bls _0200420E
|
|
b _0200432C
|
|
_0200420E:
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_0200421A: ; jump table (using 16-bit offset)
|
|
.short _0200430E - _0200421A - 2; case 0
|
|
.short _0200431E - _0200421A - 2; case 1
|
|
.short _02004286 - _0200421A - 2; case 2
|
|
.short _020042AE - _0200421A - 2; case 3
|
|
_02004222:
|
|
mov r0, #0x1
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_0200422C:
|
|
mov r0, #0x2
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_02004236:
|
|
mov r0, #0xd
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_02004240:
|
|
mov r0, #0x1
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_0200424A:
|
|
mov r0, #0x2
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_02004254:
|
|
mov r0, #0x1
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_0200425E:
|
|
mov r0, #0xb
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_02004268:
|
|
mov r0, #0x1
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_02004272:
|
|
mov r0, #0xe
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_0200427C:
|
|
mov r0, #0x3
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_02004286:
|
|
mov r0, #0x6
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_02004290:
|
|
mov r0, #0x5
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_0200429A:
|
|
mov r0, #0x9
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_020042A4:
|
|
mov r0, #0xa
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_020042AE:
|
|
ldr r0, _02004330 ; =0x000005E5
|
|
bl FUN_02003FDC
|
|
ldr r0, _02004330 ; =0x000005E5
|
|
bl FUN_02003FC4
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_020042BE:
|
|
mov r0, #0xc
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_020042C8:
|
|
mov r0, #0x7
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_020042D2:
|
|
mov r0, #0x8
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_020042DC:
|
|
mov r0, #0xf
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_020042E6:
|
|
mov r0, #0x3
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_020042F0:
|
|
mov r0, #0x5
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_020042FA:
|
|
mov r0, #0xf
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_02004304:
|
|
mov r0, #0x4
|
|
bl FUN_02003F78
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_0200430E:
|
|
ldr r0, _02004334 ; =0x000005ED
|
|
bl FUN_02003FDC
|
|
ldr r0, _02004334 ; =0x000005ED
|
|
bl FUN_02003FC4
|
|
add r1, r0, #0x0
|
|
b _0200432C
|
|
_0200431E:
|
|
ldr r0, _02004338 ; =0x000005EC
|
|
bl FUN_02003FDC
|
|
ldr r0, _02004338 ; =0x000005EC
|
|
bl FUN_02003FC4
|
|
add r1, r0, #0x0
|
|
_0200432C:
|
|
add r0, r1, #0x0
|
|
pop {r3, pc}
|
|
.balign 4
|
|
_02004330: .word 0x000005E5
|
|
_02004334: .word 0x000005ED
|
|
_02004338: .word 0x000005EC
|
|
|
|
thumb_func_start FUN_0200433C
|
|
FUN_0200433C: ; 0x0200433C
|
|
push {r3-r7, lr}
|
|
sub sp, #0x8
|
|
add r4, r0, #0x0
|
|
mov r0, #0x14
|
|
add r5, r1, #0x0
|
|
add r6, r2, #0x0
|
|
bl FUN_02003D38
|
|
str r0, [sp, #0x0]
|
|
mov r0, #0x15
|
|
bl FUN_02003D38
|
|
str r0, [sp, #0x4]
|
|
mov r0, #0xd
|
|
bl FUN_02003D38
|
|
add r7, r0, #0x0
|
|
cmp r4, #0x33
|
|
bhs _02004370
|
|
ldr r0, [sp, #0x0]
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, r4
|
|
bne _0200437E
|
|
add sp, #0x8
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_02004370:
|
|
ldr r0, [sp, #0x4]
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, r4
|
|
bne _0200437E
|
|
add sp, #0x8
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_0200437E:
|
|
add r0, r4, #0x0
|
|
bl FUN_0200415C
|
|
cmp r4, #0x39
|
|
bgt _020043DC
|
|
bge _02004458
|
|
cmp r4, #0x35
|
|
bgt _020043CA
|
|
bge _02004458
|
|
cmp r4, #0x33
|
|
bgt _020043C4
|
|
bge _02004458
|
|
cmp r4, #0xe
|
|
bhi _020043C8
|
|
add r0, r4, r4
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_020043A6: ; jump table (using 16-bit offset)
|
|
.short _020044A0 - _020043A6 - 2; case 0
|
|
.short _02004460 - _020043A6 - 2; case 1
|
|
.short _02004484 - _020043A6 - 2; case 2
|
|
.short _02004496 - _020043A6 - 2; case 3
|
|
.short _0200441C - _020043A6 - 2; case 4
|
|
.short _02004430 - _020043A6 - 2; case 5
|
|
.short _02004444 - _020043A6 - 2; case 6
|
|
.short _0200444E - _020043A6 - 2; case 7
|
|
.short _02004496 - _020043A6 - 2; case 8
|
|
.short _02004496 - _020043A6 - 2; case 9
|
|
.short _02004496 - _020043A6 - 2; case 10
|
|
.short _0200443A - _020043A6 - 2; case 11
|
|
.short _02004496 - _020043A6 - 2; case 12
|
|
.short _02004496 - _020043A6 - 2; case 13
|
|
.short _02004472 - _020043A6 - 2; case 14
|
|
_020043C4:
|
|
cmp r4, #0x34
|
|
beq _02004458
|
|
_020043C8:
|
|
b _020044A0
|
|
_020043CA:
|
|
cmp r4, #0x37
|
|
bgt _020043D6
|
|
bge _02004458
|
|
cmp r4, #0x36
|
|
beq _02004458
|
|
b _020044A0
|
|
_020043D6:
|
|
cmp r4, #0x38
|
|
beq _02004458
|
|
b _020044A0
|
|
_020043DC:
|
|
cmp r4, #0x3d
|
|
bgt _020043F4
|
|
bge _02004458
|
|
cmp r4, #0x3b
|
|
bgt _020043EE
|
|
bge _02004458
|
|
cmp r4, #0x3a
|
|
beq _02004458
|
|
b _020044A0
|
|
_020043EE:
|
|
cmp r4, #0x3c
|
|
beq _02004458
|
|
b _020044A0
|
|
_020043F4:
|
|
cmp r4, #0x3f
|
|
bgt _02004400
|
|
bge _02004458
|
|
cmp r4, #0x3e
|
|
beq _02004458
|
|
b _020044A0
|
|
_02004400:
|
|
add r0, r4, #0x0
|
|
sub r0, #0x40
|
|
cmp r0, #0x3
|
|
bhi _020044A0
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02004414: ; jump table (using 16-bit offset)
|
|
.short _02004458 - _02004414 - 2; case 0
|
|
.short _02004458 - _02004414 - 2; case 1
|
|
.short _02004458 - _02004414 - 2; case 2
|
|
.short _02004458 - _02004414 - 2; case 3
|
|
_0200441C:
|
|
mov r0, #0x0
|
|
bl FUN_0200516C
|
|
add r0, r5, #0x0
|
|
add r1, r6, #0x0
|
|
bl FUN_020044D4
|
|
mov r0, #0x0
|
|
strh r0, [r7, #0x0]
|
|
b _020044A0
|
|
_02004430:
|
|
add r0, r5, #0x0
|
|
add r1, r6, #0x0
|
|
bl FUN_02004648
|
|
b _020044A0
|
|
_0200443A:
|
|
add r0, r5, #0x0
|
|
add r1, r6, #0x0
|
|
bl FUN_02004680
|
|
b _020044A0
|
|
_02004444:
|
|
add r0, r5, #0x0
|
|
add r1, r6, #0x0
|
|
bl FUN_020046A0
|
|
b _020044A0
|
|
_0200444E:
|
|
add r0, r5, #0x0
|
|
add r1, r6, #0x0
|
|
bl FUN_020046C4
|
|
b _020044A0
|
|
_02004458:
|
|
add r0, r4, #0x0
|
|
bl FUN_020046E8
|
|
b _020044A0
|
|
_02004460:
|
|
mov r0, #0x1
|
|
bl FUN_0200516C
|
|
add r0, r4, #0x0
|
|
add r1, r5, #0x0
|
|
add r2, r6, #0x0
|
|
bl FUN_02004704
|
|
b _020044A0
|
|
_02004472:
|
|
mov r0, #0x2
|
|
bl FUN_0200516C
|
|
add r0, r4, #0x0
|
|
add r1, r5, #0x0
|
|
add r2, r6, #0x0
|
|
bl FUN_02004704
|
|
b _020044A0
|
|
_02004484:
|
|
mov r0, #0x0
|
|
bl FUN_0200516C
|
|
add r0, r4, #0x0
|
|
add r1, r5, #0x0
|
|
add r2, r6, #0x0
|
|
bl FUN_02004704
|
|
b _020044A0
|
|
_02004496:
|
|
add r0, r4, #0x0
|
|
add r1, r5, #0x0
|
|
add r2, r6, #0x0
|
|
bl FUN_02004704
|
|
_020044A0:
|
|
mov r0, #0x1
|
|
add sp, #0x8
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_020044A8
|
|
FUN_020044A8: ; 0x020044A8
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
mov r0, #0x17
|
|
bl FUN_02003D38
|
|
ldr r0, [r0, #0x0]
|
|
bl FUN_02003F64
|
|
mov r0, #0x18
|
|
bl FUN_02003D38
|
|
bl FUN_02003F3C
|
|
add r0, r4, #0x0
|
|
bl FUN_02004180
|
|
mov r0, #0x19
|
|
bl FUN_02003D38
|
|
bl FUN_02003F3C
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_020044D4
|
|
FUN_020044D4: ; 0x020044D4
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
mov r0, #0xb
|
|
bl FUN_02003D38
|
|
add r6, r0, #0x0
|
|
mov r0, #0x17
|
|
bl FUN_02003D38
|
|
mov r0, #0x1f
|
|
bl FUN_02003D38
|
|
mov r0, #0x0
|
|
bl FUN_02003FF4
|
|
bl FUN_020048EC
|
|
add r4, r0, #0x0
|
|
ldrb r0, [r6, #0x0]
|
|
cmp r0, #0x0
|
|
bne _0200450E
|
|
cmp r4, r5
|
|
bne _0200450E
|
|
bl FUN_02004140
|
|
mov r1, #0x12
|
|
lsl r1, r1, #0x6
|
|
cmp r0, r1
|
|
bne _02004566
|
|
_0200450E:
|
|
mov r0, #0x1
|
|
bl FUN_02004DBC
|
|
bl FUN_02005454
|
|
cmp r4, r5
|
|
beq _02004528
|
|
mov r0, #0x1
|
|
mov r1, #0x0
|
|
bl FUN_020047C8
|
|
bl FUN_0200541C
|
|
_02004528:
|
|
ldrb r0, [r6, #0x0]
|
|
cmp r0, #0x1
|
|
bne _02004560
|
|
mov r0, #0x2
|
|
bl FUN_02004748
|
|
bl FUN_02003F64
|
|
mov r0, #0x4
|
|
bl FUN_02004180
|
|
mov r0, #0x19
|
|
bl FUN_02003D38
|
|
bl FUN_02003F3C
|
|
cmp r4, r5
|
|
beq _02004554
|
|
mov r0, #0x1
|
|
mov r1, #0x0
|
|
bl FUN_020047C8
|
|
_02004554:
|
|
lsl r1, r4, #0x10
|
|
add r0, r5, #0x0
|
|
lsr r1, r1, #0x10
|
|
bl FUN_02004568
|
|
pop {r4-r6, pc}
|
|
_02004560:
|
|
add r0, r5, #0x0
|
|
bl FUN_0200521C
|
|
_02004566:
|
|
pop {r4-r6, pc}
|
|
|
|
thumb_func_start FUN_02004568
|
|
FUN_02004568: ; 0x02004568
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
mov r0, #0x1f
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
ldrh r0, [r4, #0x0]
|
|
bl FUN_02004900
|
|
ldr r1, _020045C0 ; =0x000003E9
|
|
cmp r0, r1
|
|
beq _02004594
|
|
add r1, r1, #0x2
|
|
cmp r0, r1
|
|
beq _02004594
|
|
add r0, r5, #0x0
|
|
mov r1, #0x4
|
|
bl FUN_02003FA8
|
|
bl ErrorHandling
|
|
b _0200459C
|
|
_02004594:
|
|
ldrh r0, [r4, #0x0]
|
|
mov r1, #0x6
|
|
bl FUN_02003FA8
|
|
_0200459C:
|
|
mov r0, #0x1a
|
|
bl FUN_02003D38
|
|
bl FUN_02003F3C
|
|
mov r0, #0x1
|
|
mov r1, #0x0
|
|
bl FUN_020047C8
|
|
mov r0, #0x7f
|
|
mov r1, #0x28
|
|
mov r2, #0x0
|
|
bl FUN_0200538C
|
|
mov r0, #0x0
|
|
bl FUN_02004DBC
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
_020045C0: .word 0x000003E9
|
|
|
|
thumb_func_start FUN_020045C4
|
|
FUN_020045C4: ; 0x020045C4
|
|
push {r3-r7, lr}
|
|
add r7, r0, #0x0
|
|
mov r0, #0x12
|
|
add r5, r1, #0x0
|
|
bl FUN_02003D38
|
|
add r6, r0, #0x0
|
|
mov r0, #0x1f
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
ldrb r0, [r6, #0x0]
|
|
cmp r0, #0x1
|
|
beq _020045E4
|
|
cmp r5, #0x0
|
|
bne _02004642
|
|
_020045E4:
|
|
mov r0, #0x1
|
|
bl FUN_02004748
|
|
bl FUN_02003F64
|
|
ldrh r0, [r4, #0x0]
|
|
mov r1, #0x2
|
|
bl FUN_02003FA8
|
|
mov r0, #0x18
|
|
bl FUN_02003D38
|
|
bl FUN_02003F3C
|
|
mov r0, #0x4
|
|
bl FUN_02004180
|
|
mov r0, #0x19
|
|
bl FUN_02003D38
|
|
bl FUN_02003F3C
|
|
ldrh r0, [r4, #0x0]
|
|
bl FUN_02004900
|
|
ldr r1, _02004644 ; =0x000003E9
|
|
cmp r0, r1
|
|
beq _02004630
|
|
add r1, r1, #0x2
|
|
cmp r0, r1
|
|
beq _02004630
|
|
add r0, r7, #0x0
|
|
mov r1, #0x4
|
|
bl FUN_02003FA8
|
|
bl ErrorHandling
|
|
b _02004638
|
|
_02004630:
|
|
ldrh r0, [r4, #0x0]
|
|
mov r1, #0x4
|
|
bl FUN_02003FA8
|
|
_02004638:
|
|
mov r0, #0x1a
|
|
bl FUN_02003D38
|
|
bl FUN_02003F3C
|
|
_02004642:
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
_02004644: .word 0x000003E9
|
|
|
|
thumb_func_start FUN_02004648
|
|
FUN_02004648: ; 0x02004648
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
mov r0, #0x17
|
|
bl FUN_02003D38
|
|
bl FUN_020051AC
|
|
mov r0, #0x2
|
|
bl FUN_02004748
|
|
bl FUN_02003F64
|
|
mov r0, #0x5
|
|
bl FUN_02004180
|
|
mov r0, #0x19
|
|
bl FUN_02003D38
|
|
bl FUN_02003F3C
|
|
mov r0, #0x1
|
|
bl FUN_02004DBC
|
|
add r0, r4, #0x0
|
|
bl FUN_0200521C
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004680
|
|
FUN_02004680: ; 0x02004680
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
mov r0, #0x17
|
|
bl FUN_02003D38
|
|
bl FUN_0200541C
|
|
bl FUN_02004810
|
|
mov r0, #0x4
|
|
bl FUN_020044A8
|
|
add r0, r4, #0x0
|
|
bl FUN_0200521C
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_020046A0
|
|
FUN_020046A0: ; 0x020046A0
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
mov r0, #0x17
|
|
bl FUN_02003D38
|
|
bl FUN_0200541C
|
|
mov r0, #0x6
|
|
bl FUN_020044A8
|
|
mov r0, #0x1
|
|
bl FUN_02004DBC
|
|
add r0, r4, #0x0
|
|
bl FUN_0200521C
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_020046C4
|
|
FUN_020046C4: ; 0x020046C4
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
mov r0, #0x17
|
|
bl FUN_02003D38
|
|
bl FUN_0200541C
|
|
mov r0, #0x7
|
|
bl FUN_020044A8
|
|
mov r0, #0x1
|
|
bl FUN_02004DBC
|
|
add r0, r4, #0x0
|
|
bl FUN_0200521C
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_020046E8
|
|
FUN_020046E8: ; 0x020046E8
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
bl FUN_02004738
|
|
add r0, r4, #0x0
|
|
bl FUN_02004180
|
|
mov r0, #0x1b
|
|
bl FUN_02003D38
|
|
bl FUN_02003F3C
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004704
|
|
FUN_02004704: ; 0x02004704
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
mov r0, #0x17
|
|
add r4, r1, #0x0
|
|
bl FUN_02003D38
|
|
bl FUN_0200541C
|
|
add r0, r5, #0x0
|
|
bl FUN_020044A8
|
|
add r0, r4, #0x0
|
|
bl FUN_0200521C
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004724
|
|
FUN_02004724: ; 0x02004724
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
bl FUN_02003D30
|
|
bl FUN_020051AC
|
|
add r0, r4, #0x0
|
|
bl FUN_0200521C
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_02004738
|
|
FUN_02004738: ; 0x02004738
|
|
push {r3, lr}
|
|
mov r0, #0x4
|
|
bl FUN_02004748
|
|
bl FUN_02003F64
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004748
|
|
FUN_02004748: ; 0x02004748
|
|
push {r3-r5, lr}
|
|
add r4, r0, #0x0
|
|
bl FUN_02003D30
|
|
cmp r4, #0x7
|
|
blt _02004762
|
|
bl ErrorHandling
|
|
mov r0, #0x1a
|
|
bl FUN_02003D38
|
|
ldr r0, [r0, #0x0]
|
|
pop {r3-r5, pc}
|
|
_02004762:
|
|
cmp r4, #0x6
|
|
bhi _020047C4
|
|
add r0, r4, r4
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02004772: ; jump table (using 16-bit offset)
|
|
.short _02004780 - _02004772 - 2; case 0
|
|
.short _0200478A - _02004772 - 2; case 1
|
|
.short _02004794 - _02004772 - 2; case 2
|
|
.short _0200479E - _02004772 - 2; case 3
|
|
.short _020047A8 - _02004772 - 2; case 4
|
|
.short _020047B2 - _02004772 - 2; case 5
|
|
.short _020047BC - _02004772 - 2; case 6
|
|
_02004780:
|
|
mov r0, #0x16
|
|
bl FUN_02003D38
|
|
add r5, r0, #0x0
|
|
b _020047C4
|
|
_0200478A:
|
|
mov r0, #0x17
|
|
bl FUN_02003D38
|
|
add r5, r0, #0x0
|
|
b _020047C4
|
|
_02004794:
|
|
mov r0, #0x18
|
|
bl FUN_02003D38
|
|
add r5, r0, #0x0
|
|
b _020047C4
|
|
_0200479E:
|
|
mov r0, #0x19
|
|
bl FUN_02003D38
|
|
add r5, r0, #0x0
|
|
b _020047C4
|
|
_020047A8:
|
|
mov r0, #0x1a
|
|
bl FUN_02003D38
|
|
add r5, r0, #0x0
|
|
b _020047C4
|
|
_020047B2:
|
|
mov r0, #0x1b
|
|
bl FUN_02003D38
|
|
add r5, r0, #0x0
|
|
b _020047C4
|
|
_020047BC:
|
|
mov r0, #0x1c
|
|
bl FUN_02003D38
|
|
add r5, r0, #0x0
|
|
_020047C4:
|
|
ldr r0, [r5, #0x0]
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_020047C8
|
|
FUN_020047C8: ; 0x020047C8
|
|
push {r4-r6, lr}
|
|
add r5, r1, #0x0
|
|
cmp r0, #0x1
|
|
bne _020047DC
|
|
mov r0, #0xb
|
|
bl FUN_02003D38
|
|
add r6, r0, #0x0
|
|
mov r4, #0x0
|
|
b _020047EA
|
|
_020047DC:
|
|
cmp r0, #0x7
|
|
bne _0200480E
|
|
mov r0, #0xc
|
|
bl FUN_02003D38
|
|
add r6, r0, #0x0
|
|
mov r4, #0x7
|
|
_020047EA:
|
|
cmp r5, #0x0
|
|
bne _02004800
|
|
add r0, r4, #0x0
|
|
bl FUN_02003FF4
|
|
bl FUN_020048EC
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
bl FUN_02004110
|
|
_02004800:
|
|
add r0, r4, #0x0
|
|
bl FUN_02003FF4
|
|
add r1, r5, #0x0
|
|
blx FUN_020C0F8C
|
|
strb r5, [r6, #0x0]
|
|
_0200480E:
|
|
pop {r4-r6, pc}
|
|
|
|
thumb_func_start FUN_02004810
|
|
FUN_02004810: ; 0x02004810
|
|
push {r4, lr}
|
|
mov r0, #0xb
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
mov r0, #0xc
|
|
bl FUN_02003D38
|
|
mov r1, #0x0
|
|
strb r1, [r4, #0x0]
|
|
strb r1, [r0, #0x0]
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_02004828
|
|
FUN_02004828: ; 0x02004828
|
|
push {r3-r5, lr}
|
|
add r5, r1, #0x0
|
|
add r4, r2, #0x0
|
|
bl FUN_02003FF4
|
|
add r1, r5, #0x0
|
|
add r2, r4, #0x0
|
|
blx FUN_020C0EF4
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_0200483C
|
|
FUN_0200483C: ; 0x0200483C
|
|
push {r4, lr}
|
|
add r4, r1, #0x0
|
|
bpl _02004844
|
|
mov r4, #0x0
|
|
_02004844:
|
|
cmp r4, #0x7f
|
|
ble _0200484A
|
|
mov r4, #0x7f
|
|
_0200484A:
|
|
bl FUN_02003FF4
|
|
add r1, r4, #0x0
|
|
blx FUN_020C0F30
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004858
|
|
FUN_02004858: ; 0x02004858
|
|
push {r3-r5, lr}
|
|
add r5, r1, #0x0
|
|
blx FUN_020C23FC
|
|
cmp r5, #0x1
|
|
beq _02004868
|
|
cmp r5, #0x8
|
|
bne _0200486C
|
|
_02004868:
|
|
mov r4, #0x7f
|
|
b _02004872
|
|
_0200486C:
|
|
cmp r0, #0x0
|
|
beq _0200488A
|
|
ldrb r4, [r0, #0x2]
|
|
_02004872:
|
|
bl FUN_020313EC
|
|
cmp r0, #0x1
|
|
bne _0200488A
|
|
add r0, r4, #0x0
|
|
mov r1, #0x5
|
|
blx _s32_div_f
|
|
add r1, r0, #0x0
|
|
add r0, r5, #0x0
|
|
bl FUN_0200483C
|
|
_0200488A:
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_0200488C
|
|
FUN_0200488C: ; 0x0200488C
|
|
push {r4, lr}
|
|
add r4, r1, #0x0
|
|
bl FUN_020048D0
|
|
bl FUN_02004018
|
|
add r1, r4, #0x0
|
|
bl FUN_0200483C
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_020048A0
|
|
FUN_020048A0: ; 0x020048A0
|
|
push {r3-r5, lr}
|
|
add r5, r1, #0x0
|
|
add r4, r2, #0x0
|
|
bl FUN_02003FF4
|
|
mov r2, #0x0
|
|
mvn r2, r2
|
|
add r1, r5, #0x0
|
|
add r3, r2, #0x0
|
|
str r4, [sp, #0x0]
|
|
blx FUN_020C3910
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_020048BC
|
|
FUN_020048BC: ; 0x020048BC
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
bpl _020048C6
|
|
bl ErrorHandling
|
|
_020048C6:
|
|
add r0, r4, #0x0
|
|
blx FUN_020C0F50
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_020048D0
|
|
FUN_020048D0: ; 0x020048D0
|
|
push {r3, lr}
|
|
cmp r0, #0x0
|
|
bne _020048DA
|
|
mov r0, #0xff
|
|
pop {r3, pc}
|
|
_020048DA:
|
|
blx FUN_020C23FC
|
|
cmp r0, #0x0
|
|
bne _020048E6
|
|
mov r0, #0xff
|
|
pop {r3, pc}
|
|
_020048E6:
|
|
ldrb r0, [r0, #0x5]
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_020048EC
|
|
FUN_020048EC: ; 0x020048EC
|
|
ldr r3, _020048F0 ; =FUN_020C0E14
|
|
bx r3
|
|
.balign 4
|
|
_020048F0: .word FUN_020C0E14
|
|
|
|
thumb_func_start FUN_020048F4
|
|
FUN_020048F4: ; 0x020048F4
|
|
push {r3, lr}
|
|
bl FUN_02004900
|
|
blx FUN_020C22D0
|
|
pop {r3, pc}
|
|
|
|
thumb_func_start FUN_02004900
|
|
FUN_02004900: ; 0x02004900
|
|
push {r3, lr}
|
|
blx FUN_020C23FC
|
|
cmp r0, #0x0
|
|
bne _0200490E
|
|
mov r0, #0x0
|
|
pop {r3, pc}
|
|
_0200490E:
|
|
ldrh r0, [r0, #0x0]
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004914
|
|
FUN_02004914: ; 0x02004914
|
|
ldr r3, _02004918 ; =MIC_StartAutoSampling
|
|
bx r3
|
|
.balign 4
|
|
_02004918: .word MIC_StartAutoSampling
|
|
|
|
thumb_func_start FUN_0200491C
|
|
FUN_0200491C: ; 0x0200491C
|
|
push {r3, lr}
|
|
bl FUN_02003D30
|
|
blx MIC_StopAutoSampling
|
|
pop {r3, pc}
|
|
|
|
thumb_func_start FUN_02004928
|
|
FUN_02004928: ; 0x02004928
|
|
push {r3, lr}
|
|
blx MIC_DoSamplingAsync
|
|
pop {r3, pc}
|
|
|
|
thumb_func_start FUN_02004930
|
|
FUN_02004930: ; 0x02004930
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
bl FUN_02003D30
|
|
mov r0, #0xf
|
|
bl FUN_02003D38
|
|
add r6, r0, #0x0
|
|
mov r0, #0x10
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
cmp r5, #0xe
|
|
beq _02004954
|
|
cmp r5, #0xf
|
|
beq _02004954
|
|
bl ErrorHandling
|
|
_02004954:
|
|
cmp r5, #0xe
|
|
bne _02004962
|
|
ldrb r0, [r6, #0x0]
|
|
cmp r0, #0x0
|
|
bne _02004962
|
|
bl ErrorHandling
|
|
_02004962:
|
|
cmp r5, #0xf
|
|
bne _02004970
|
|
ldrb r0, [r4, #0x0]
|
|
cmp r0, #0x0
|
|
bne _02004970
|
|
bl ErrorHandling
|
|
_02004970:
|
|
cmp r5, #0xe
|
|
bne _0200497C
|
|
mov r0, #0x0
|
|
bl FUN_02003D38
|
|
pop {r4-r6, pc}
|
|
_0200497C:
|
|
mov r0, #0x1
|
|
bl FUN_02003D38
|
|
pop {r4-r6, pc}
|
|
|
|
thumb_func_start FUN_02004984
|
|
FUN_02004984: ; 0x02004984
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
bl FUN_02003D30
|
|
mov r0, #0xf
|
|
bl FUN_02003D38
|
|
add r6, r0, #0x0
|
|
mov r0, #0x10
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
cmp r5, #0xe
|
|
beq _020049A8
|
|
cmp r5, #0xf
|
|
beq _020049A8
|
|
bl ErrorHandling
|
|
_020049A8:
|
|
cmp r5, #0xe
|
|
bne _020049D6
|
|
ldrb r0, [r6, #0x0]
|
|
cmp r0, #0x0
|
|
bne _020049D0
|
|
mov r0, #0x0
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
add r0, r5, #0x0
|
|
blx FUN_020C0688
|
|
str r0, [r4, #0x0]
|
|
cmp r0, #0x0
|
|
bne _020049CA
|
|
mov r0, #0x0
|
|
pop {r4-r6, pc}
|
|
_020049CA:
|
|
mov r0, #0x1
|
|
strb r0, [r6, #0x0]
|
|
b _020049FE
|
|
_020049D0:
|
|
bl ErrorHandling
|
|
b _020049FE
|
|
_020049D6:
|
|
ldrb r0, [r4, #0x0]
|
|
cmp r0, #0x0
|
|
bne _020049FA
|
|
mov r0, #0x1
|
|
bl FUN_02003D38
|
|
add r6, r0, #0x0
|
|
add r0, r5, #0x0
|
|
blx FUN_020C0688
|
|
str r0, [r6, #0x0]
|
|
cmp r0, #0x0
|
|
bne _020049F4
|
|
mov r0, #0x0
|
|
pop {r4-r6, pc}
|
|
_020049F4:
|
|
mov r0, #0x1
|
|
strb r0, [r4, #0x0]
|
|
b _020049FE
|
|
_020049FA:
|
|
bl ErrorHandling
|
|
_020049FE:
|
|
mov r0, #0x1
|
|
pop {r4-r6, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004A04
|
|
FUN_02004A04: ; 0x02004A04
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
bl FUN_02003D30
|
|
mov r0, #0xf
|
|
bl FUN_02003D38
|
|
add r6, r0, #0x0
|
|
mov r0, #0x10
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
cmp r5, #0xe
|
|
beq _02004A2A
|
|
cmp r5, #0xf
|
|
beq _02004A2A
|
|
bl ErrorHandling
|
|
pop {r4-r6, pc}
|
|
_02004A2A:
|
|
cmp r5, #0xe
|
|
bne _02004A4C
|
|
ldrb r0, [r6, #0x0]
|
|
cmp r0, #0x1
|
|
bne _02004A46
|
|
add r0, r5, #0x0
|
|
bl FUN_02004930
|
|
ldr r0, [r0, #0x0]
|
|
blx FUN_020C0670
|
|
mov r0, #0x0
|
|
strb r0, [r6, #0x0]
|
|
pop {r4-r6, pc}
|
|
_02004A46:
|
|
bl ErrorHandling
|
|
pop {r4-r6, pc}
|
|
_02004A4C:
|
|
ldrb r0, [r4, #0x0]
|
|
cmp r0, #0x1
|
|
bne _02004A64
|
|
add r0, r5, #0x0
|
|
bl FUN_02004930
|
|
ldr r0, [r0, #0x0]
|
|
blx FUN_020C0670
|
|
mov r0, #0x0
|
|
strb r0, [r4, #0x0]
|
|
pop {r4-r6, pc}
|
|
_02004A64:
|
|
bl ErrorHandling
|
|
pop {r4-r6, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004A6C
|
|
FUN_02004A6C: ; 0x02004A6C
|
|
push {r3-r5, lr}
|
|
sub sp, #0x18
|
|
add r3, r0, #0x0
|
|
ldr r0, [r3, #0x10]
|
|
add r4, r1, #0x0
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [r3, #0x14]
|
|
str r0, [sp, #0x4]
|
|
ldr r0, [r3, #0x18]
|
|
str r0, [sp, #0x8]
|
|
ldr r0, [r3, #0x1c]
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [r3, #0x20]
|
|
str r0, [sp, #0x10]
|
|
ldr r0, [r3, #0x24]
|
|
str r0, [sp, #0x14]
|
|
ldr r0, [r3, #0x0]
|
|
ldr r1, [r3, #0x4]
|
|
ldr r2, [r3, #0x8]
|
|
ldr r0, [r0, #0x0]
|
|
ldr r3, [r3, #0xc]
|
|
blx FUN_020C054C
|
|
add r5, r0, #0x0
|
|
bne _02004AA4
|
|
add r0, r4, #0x0
|
|
bl FUN_02004A04
|
|
_02004AA4:
|
|
add r0, r5, #0x0
|
|
add sp, #0x18
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004AAC
|
|
FUN_02004AAC: ; 0x02004AAC
|
|
push {r3, lr}
|
|
bl FUN_02004930
|
|
ldr r0, [r0, #0x0]
|
|
blx FUN_020C0510
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004ABC
|
|
FUN_02004ABC: ; 0x02004ABC
|
|
push {r3, lr}
|
|
bl FUN_02004930
|
|
ldr r0, [r0, #0x0]
|
|
blx FUN_020C03B8
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004ACC
|
|
FUN_02004ACC: ; 0x02004ACC
|
|
push {r4, lr}
|
|
add r4, r1, #0x0
|
|
cmp r4, #0x7f
|
|
bls _02004AD6
|
|
mov r4, #0x7f
|
|
_02004AD6:
|
|
bl FUN_02004930
|
|
ldr r0, [r0, #0x0]
|
|
add r1, r4, #0x0
|
|
blx FUN_020C041C
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_02004AE4
|
|
FUN_02004AE4: ; 0x02004AE4
|
|
push {r4, lr}
|
|
add r4, r1, #0x0
|
|
bl FUN_02004930
|
|
ldr r0, [r0, #0x0]
|
|
add r1, r4, #0x0
|
|
blx FUN_020C044C
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004AF8
|
|
FUN_02004AF8: ; 0x02004AF8
|
|
push {r3-r5, lr}
|
|
add r4, r0, #0x0
|
|
add r5, r1, #0x0
|
|
bl FUN_020313EC
|
|
cmp r0, #0x1
|
|
bne _02004B20
|
|
add r0, r4, #0x0
|
|
bl FUN_02004930
|
|
add r4, r0, #0x0
|
|
add r0, r5, #0x0
|
|
mov r1, #0x5
|
|
blx _s32_div_f
|
|
add r1, r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
blx FUN_020C04DC
|
|
pop {r3-r5, pc}
|
|
_02004B20:
|
|
add r0, r4, #0x0
|
|
bl FUN_02004930
|
|
ldr r0, [r0, #0x0]
|
|
add r1, r5, #0x0
|
|
blx FUN_020C04DC
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_02004B30
|
|
FUN_02004B30: ; 0x02004B30
|
|
push {r3-r7, lr}
|
|
sub sp, #0x30
|
|
add r6, r0, #0x0
|
|
str r1, [sp, #0x0]
|
|
str r2, [sp, #0x4]
|
|
add r5, r3, #0x0
|
|
bl FUN_02003D30
|
|
mov r0, #0x21
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
cmp r5, #0xe
|
|
beq _02004B54
|
|
cmp r5, #0xf
|
|
beq _02004B54
|
|
bl ErrorHandling
|
|
_02004B54:
|
|
add r0, r6, #0x0
|
|
blx FUN_020C226C
|
|
add r7, r0, #0x0
|
|
bne _02004B68
|
|
bl ErrorHandling
|
|
add sp, #0x30
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_02004B68:
|
|
ldr r0, [r7, #0x0]
|
|
lsl r0, r0, #0x8
|
|
lsr r0, r0, #0x8
|
|
blx FUN_020C217C
|
|
add r6, r0, #0x0
|
|
bne _02004B80
|
|
bl ErrorHandling
|
|
add sp, #0x30
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_02004B80:
|
|
cmp r5, #0xe
|
|
bne _02004BCE
|
|
ldr r0, [sp, #0x48]
|
|
add r1, r6, #0x0
|
|
bl FUN_02016998
|
|
str r0, [r4, #0x0]
|
|
cmp r0, #0x0
|
|
bne _02004B9C
|
|
bl ErrorHandling
|
|
add sp, #0x30
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_02004B9C:
|
|
mov r1, #0x0
|
|
add r2, r6, #0x0
|
|
blx Call_FillMemWithValue
|
|
ldr r0, [r7, #0x0]
|
|
ldr r1, [r4, #0x0]
|
|
lsl r0, r0, #0x8
|
|
lsr r0, r0, #0x8
|
|
add r2, r6, #0x0
|
|
mov r3, #0x0
|
|
blx FUN_020C2104
|
|
mov r1, #0x0
|
|
mvn r1, r1
|
|
cmp r0, r1
|
|
bne _02004BC6
|
|
bl ErrorHandling
|
|
add sp, #0x30
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_02004BC6:
|
|
ldr r0, [r4, #0x0]
|
|
add r1, r6, #0x0
|
|
bl FUN_02004C1C
|
|
_02004BCE:
|
|
add r0, r5, #0x0
|
|
bl FUN_02004930
|
|
mov r1, #0x0
|
|
str r1, [sp, #0xc]
|
|
str r0, [sp, #0x8]
|
|
ldr r0, [r4, #0x0]
|
|
str r0, [sp, #0x10]
|
|
ldr r0, _02004C18 ; =0x00003443
|
|
str r1, [sp, #0x14]
|
|
str r0, [sp, #0x20]
|
|
ldr r0, [sp, #0x0]
|
|
str r1, [sp, #0x18]
|
|
str r0, [sp, #0x24]
|
|
mov r0, #0x6
|
|
lsl r0, r0, #0xc
|
|
str r0, [sp, #0x28]
|
|
ldr r0, [sp, #0x4]
|
|
add r1, r5, #0x0
|
|
str r0, [sp, #0x2c]
|
|
add r0, sp, #0x8
|
|
str r6, [sp, #0x1c]
|
|
bl FUN_02004A6C
|
|
add r4, r0, #0x0
|
|
ldr r1, [sp, #0x0]
|
|
add r0, r5, #0x0
|
|
bl FUN_02004AF8
|
|
mov r0, #0xe
|
|
bl FUN_02003D38
|
|
mov r1, #0x1
|
|
strb r1, [r0, #0x0]
|
|
add r0, r4, #0x0
|
|
add sp, #0x30
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
_02004C18: .word 0x00003443
|
|
|
|
thumb_func_start FUN_02004C1C
|
|
FUN_02004C1C: ; 0x02004C1C
|
|
push {r3-r6}
|
|
mov r5, #0x0
|
|
lsr r6, r1, #0x1
|
|
beq _02004C36
|
|
sub r2, r1, #0x1
|
|
_02004C26:
|
|
sub r3, r2, r5
|
|
ldrb r4, [r0, r5]
|
|
ldrb r1, [r0, r3]
|
|
strb r1, [r0, r5]
|
|
add r5, r5, #0x1
|
|
strb r4, [r0, r3]
|
|
cmp r5, r6
|
|
blo _02004C26
|
|
_02004C36:
|
|
pop {r3-r6}
|
|
bx lr
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004C3C
|
|
FUN_02004C3C: ; 0x02004C3C
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
bl FUN_02003D30
|
|
mov r0, #0xe
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
mov r0, #0x21
|
|
bl FUN_02003D38
|
|
add r6, r0, #0x0
|
|
cmp r5, #0xe
|
|
beq _02004C60
|
|
cmp r5, #0xf
|
|
beq _02004C60
|
|
bl ErrorHandling
|
|
_02004C60:
|
|
add r0, r5, #0x0
|
|
bl FUN_02004AAC
|
|
ldrb r0, [r4, #0x0]
|
|
cmp r0, #0x1
|
|
bne _02004C76
|
|
mov r0, #0x0
|
|
strb r0, [r4, #0x0]
|
|
ldr r0, [r6, #0x0]
|
|
bl FUN_02016A18
|
|
_02004C76:
|
|
pop {r4-r6, pc}
|
|
|
|
thumb_func_start FUN_02004C78
|
|
FUN_02004C78: ; 0x02004C78
|
|
ldr r3, _02004C7C ; =FUN_020C1E58
|
|
bx r3
|
|
.balign 4
|
|
_02004C7C: .word FUN_020C1E58
|
|
|
|
thumb_func_start FUN_02004C80
|
|
FUN_02004C80: ; 0x02004C80
|
|
push {r3-r4, lr}
|
|
sub sp, #0x4
|
|
add r4, r0, #0x0
|
|
bl FUN_02003D30
|
|
mov r0, #0x3
|
|
bl FUN_02003D38
|
|
mov r1, #0x1
|
|
mov r3, #0xfa
|
|
lsl r1, r1, #0xc
|
|
mov r2, #0x0
|
|
lsl r3, r3, #0x6
|
|
str r4, [sp, #0x0]
|
|
blx FUN_020C1FF0
|
|
add sp, #0x4
|
|
pop {r3-r4, pc}
|
|
|
|
thumb_func_start FUN_02004CA4
|
|
FUN_02004CA4: ; 0x02004CA4
|
|
ldr r3, _02004CA8 ; =FUN_020C1F54
|
|
bx r3
|
|
.balign 4
|
|
_02004CA8: .word FUN_020C1F54
|
|
|
|
thumb_func_start FUN_02004CAC
|
|
FUN_02004CAC: ; 0x02004CAC
|
|
ldr r3, _02004CB0 ; =FUN_020C1FA4
|
|
bx r3
|
|
.balign 4
|
|
_02004CB0: .word FUN_020C1FA4
|
|
|
|
thumb_func_start FUN_02004CB4
|
|
FUN_02004CB4: ; 0x02004CB4
|
|
push {r3-r4, lr}
|
|
sub sp, #0xc
|
|
bl FUN_02003D30
|
|
mov r0, #0x4
|
|
bl FUN_02003D38
|
|
mov r1, #0x0
|
|
mov r2, #0x1c
|
|
blx MI_CpuFill8
|
|
mov r0, #0x3
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
mov r0, #0x4
|
|
bl FUN_02003D38
|
|
mov r2, #0x2
|
|
ldr r1, _02004CF4 ; =FUN_02005068
|
|
str r2, [sp, #0x0]
|
|
str r1, [sp, #0x4]
|
|
str r0, [sp, #0x8]
|
|
lsl r1, r2, #0xb
|
|
ldr r3, _02004CF8 ; =0x000055F0
|
|
add r0, r4, #0x0
|
|
mov r2, #0x0
|
|
blx FUN_020C1EA4
|
|
add sp, #0xc
|
|
pop {r3-r4, pc}
|
|
nop
|
|
_02004CF4: .word FUN_02005068
|
|
_02004CF8: .word 0x000055F0
|
|
|
|
thumb_func_start FUN_02004CFC
|
|
FUN_02004CFC: ; 0x02004CFC
|
|
ldr r3, _02004D00 ; =FUN_020C1E68
|
|
bx r3
|
|
.balign 4
|
|
_02004D00: .word FUN_020C1E68
|
|
|
|
thumb_func_start FUN_02004D04
|
|
FUN_02004D04: ; 0x02004D04
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
mov r0, #0x13
|
|
bl FUN_02003D38
|
|
cmp r4, #0x8
|
|
ble _02004D16
|
|
mov r4, #0x8
|
|
b _02004D1C
|
|
_02004D16:
|
|
cmp r4, #0x0
|
|
bge _02004D1C
|
|
mov r4, #0x0
|
|
_02004D1C:
|
|
strb r4, [r0, #0x0]
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_02004D20
|
|
FUN_02004D20: ; 0x02004D20
|
|
push {r3-r5, lr}
|
|
add r5, r1, #0x0
|
|
add r4, r2, #0x0
|
|
bl FUN_02003FF4
|
|
add r1, r5, #0x0
|
|
add r2, r4, #0x0
|
|
blx FUN_020C0EA4
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_02004D34
|
|
FUN_02004D34: ; 0x02004D34
|
|
push {r3-r5, lr}
|
|
add r5, r1, #0x0
|
|
add r4, r2, #0x0
|
|
bl FUN_020048D0
|
|
bl FUN_02004018
|
|
add r1, r5, #0x0
|
|
add r2, r4, #0x0
|
|
bl FUN_02004D20
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_02004D4C
|
|
FUN_02004D4C: ; 0x02004D4C
|
|
push {r3-r5, lr}
|
|
add r5, r1, #0x0
|
|
add r4, r2, #0x0
|
|
bl FUN_02003FF4
|
|
add r1, r5, #0x0
|
|
add r2, r4, #0x0
|
|
blx FUN_020C0E7C
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_02004D60
|
|
FUN_02004D60: ; 0x02004D60
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
blx FUN_020C0174
|
|
ldr r0, _02004D70 ; =0x021C3DD8
|
|
str r4, [r0, #0x0]
|
|
pop {r4, pc}
|
|
nop
|
|
_02004D70: .word 0x021C3DD8
|
|
|
|
thumb_func_start FUN_02004D74
|
|
FUN_02004D74: ; 0x02004D74
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
mov r0, #0x6
|
|
bl FUN_02003D38
|
|
str r4, [r0, #0x0]
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004D84
|
|
FUN_02004D84: ; 0x02004D84
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
mov r0, #0x7
|
|
bl FUN_02003D38
|
|
str r4, [r0, #0x0]
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004D94
|
|
FUN_02004D94: ; 0x02004D94
|
|
push {r3, lr}
|
|
mov r0, #0x7
|
|
bl FUN_02003D38
|
|
ldrh r1, [r0, #0x0]
|
|
cmp r1, #0x0
|
|
bne _02004DAA
|
|
mov r1, #0x0
|
|
strh r1, [r0, #0x0]
|
|
add r0, r1, #0x0
|
|
pop {r3, pc}
|
|
_02004DAA:
|
|
sub r1, r1, #0x1
|
|
strh r1, [r0, #0x0]
|
|
ldrh r0, [r0, #0x0]
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004DB4
|
|
FUN_02004DB4: ; 0x02004DB4
|
|
ldr r0, _02004DB8 ; =0x021C3DE0
|
|
bx lr
|
|
.balign 4
|
|
_02004DB8: .word 0x021C3DE0
|
|
|
|
thumb_func_start FUN_02004DBC
|
|
FUN_02004DBC: ; 0x02004DBC
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
mov r0, #0x12
|
|
bl FUN_02003D38
|
|
strb r4, [r0, #0x0]
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004DCC
|
|
FUN_02004DCC: ; 0x02004DCC
|
|
push {r4-r7, lr}
|
|
sub sp, #0xc
|
|
add r5, r0, #0x0
|
|
mov r0, #0x15
|
|
add r6, r1, #0x0
|
|
add r7, r2, #0x0
|
|
str r3, [sp, #0x8]
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
add r0, sp, #0x10
|
|
ldrb r0, [r0, #0x10]
|
|
ldr r3, [sp, #0x8]
|
|
add r1, r6, #0x0
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [sp, #0x24]
|
|
add r2, r7, #0x0
|
|
str r0, [sp, #0x4]
|
|
add r0, r5, #0x0
|
|
bl FUN_02004E44
|
|
mov r0, #0x0
|
|
strb r0, [r4, #0x0]
|
|
mov r0, #0x5
|
|
bl FUN_02003CE8
|
|
mov r0, #0x1
|
|
add sp, #0xc
|
|
pop {r4-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004E08
|
|
FUN_02004E08: ; 0x02004E08
|
|
push {r4-r7, lr}
|
|
sub sp, #0xc
|
|
add r5, r0, #0x0
|
|
mov r0, #0x8
|
|
add r6, r1, #0x0
|
|
add r7, r2, #0x0
|
|
str r3, [sp, #0x8]
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
add r0, sp, #0x10
|
|
ldrb r0, [r0, #0x14]
|
|
ldr r3, [sp, #0x8]
|
|
add r1, r6, #0x0
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [sp, #0x28]
|
|
add r2, r7, #0x0
|
|
str r0, [sp, #0x4]
|
|
add r0, r5, #0x0
|
|
bl FUN_02004E44
|
|
ldr r0, [sp, #0x20]
|
|
str r0, [r4, #0x0]
|
|
mov r0, #0x6
|
|
bl FUN_02003CE8
|
|
mov r0, #0x1
|
|
add sp, #0xc
|
|
pop {r4-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02004E44
|
|
FUN_02004E44: ; 0x02004E44
|
|
push {r3-r7, lr}
|
|
add r6, r2, #0x0
|
|
mov r0, #0x2
|
|
add r5, r1, #0x0
|
|
add r7, r3, #0x0
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
mov r0, #0x0
|
|
add r1, r6, #0x0
|
|
bl FUN_020053CC
|
|
mov r0, #0x0
|
|
bl FUN_02004110
|
|
add r0, r5, #0x0
|
|
bl FUN_02004130
|
|
add r0, r7, #0x0
|
|
bl FUN_02004D84
|
|
add r0, r5, #0x0
|
|
bl FUN_020048F4
|
|
str r0, [r4, #0x0]
|
|
add r0, sp, #0x8
|
|
ldrb r0, [r0, #0x10]
|
|
bl FUN_02004DBC
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start FUN_02004E80
|
|
FUN_02004E80: ; 0x02004E80
|
|
cmp r0, #0x0
|
|
bne _02004E88
|
|
mov r0, #0x0
|
|
bx lr
|
|
_02004E88:
|
|
add r0, #0xc
|
|
bx lr
|
|
|
|
thumb_func_start FUN_02004E8C
|
|
FUN_02004E8C: ; 0x02004E8C
|
|
cmp r0, #0x0
|
|
bne _02004E94
|
|
mov r0, #0x0
|
|
bx lr
|
|
_02004E94:
|
|
ldr r0, [r0, #0x8]
|
|
bx lr
|
|
|
|
thumb_func_start FUN_02004E98
|
|
FUN_02004E98: ; 0x02004E98
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
mov r0, #0x5
|
|
bl FUN_02004748
|
|
bl FUN_02003F64
|
|
lsl r0, r5, #0x10
|
|
lsr r4, r0, #0x10
|
|
ldr r0, _02004ECC ; =0x000001B9
|
|
cmp r4, r0
|
|
beq _02004EBC
|
|
add r0, #0x36
|
|
cmp r5, r0
|
|
bgt _02004EBA
|
|
cmp r5, #0x0
|
|
bne _02004EBC
|
|
_02004EBA:
|
|
mov r4, #0x1
|
|
_02004EBC:
|
|
add r0, r4, #0x0
|
|
bl FUN_02003FC4
|
|
add r0, r4, #0x0
|
|
bl FUN_02004ED0
|
|
pop {r3-r5, pc}
|
|
nop
|
|
_02004ECC: .word 0x000001B9
|
|
|
|
thumb_func_start FUN_02004ED0
|
|
FUN_02004ED0: ; 0x02004ED0
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
mov r0, #0x20
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
lsl r0, r5, #0x10
|
|
ldr r1, _02004F24 ; =0x000001B9
|
|
lsr r0, r0, #0x10
|
|
cmp r0, r1
|
|
beq _02004EF2
|
|
add r1, #0x36
|
|
cmp r5, r1
|
|
bgt _02004EF0
|
|
cmp r5, #0x0
|
|
bne _02004EF2
|
|
_02004EF0:
|
|
mov r0, #0x1
|
|
_02004EF2:
|
|
blx FUN_020C226C
|
|
cmp r0, #0x0
|
|
bne _02004F02
|
|
bl ErrorHandling
|
|
mov r0, #0x0
|
|
pop {r3-r5, pc}
|
|
_02004F02:
|
|
ldr r0, [r0, #0x0]
|
|
lsl r0, r0, #0x8
|
|
lsr r0, r0, #0x8
|
|
blx FUN_020C20DC
|
|
cmp r0, #0x0
|
|
bne _02004F18
|
|
bl ErrorHandling
|
|
mov r0, #0x0
|
|
pop {r3-r5, pc}
|
|
_02004F18:
|
|
mov r1, #0x0
|
|
blx SND_GetWaveDataAddress
|
|
str r0, [r4, #0x0]
|
|
pop {r3-r5, pc}
|
|
nop
|
|
_02004F24: .word 0x000001B9
|
|
|
|
thumb_func_start FUN_02004F28
|
|
FUN_02004F28: ; 0x02004F28
|
|
push {r4-r6, lr}
|
|
mov r0, #0x1
|
|
add r5, r1, #0x0
|
|
add r6, r2, #0x0
|
|
bl FUN_02004F64
|
|
mov r1, #0x3
|
|
add r4, r0, #0x0
|
|
add r0, r6, #0x0
|
|
lsl r1, r1, #0x8
|
|
ldr r5, [r5, #0x8]
|
|
blx _s32_div_f
|
|
lsl r1, r0, #0x1
|
|
bpl _02004F50
|
|
mov r0, #0x20
|
|
blx _s32_div_f
|
|
neg r0, r0
|
|
b _02004F5A
|
|
_02004F50:
|
|
cmp r1, #0x0
|
|
bne _02004F58
|
|
mov r0, #0x20
|
|
b _02004F5A
|
|
_02004F58:
|
|
lsl r0, r1, #0x5
|
|
_02004F5A:
|
|
mul r0, r4
|
|
cmp r0, r5
|
|
blo _02004F62
|
|
mov r0, #0x0
|
|
_02004F62:
|
|
pop {r4-r6, pc}
|
|
|
|
thumb_func_start FUN_02004F64
|
|
FUN_02004F64: ; 0x02004F64
|
|
push {r3, lr}
|
|
bl FUN_02003FF4
|
|
blx FUN_020C0DD4
|
|
pop {r3, pc}
|
|
|
|
thumb_func_start FUN_02004F70
|
|
FUN_02004F70: ; 0x02004F70
|
|
push {r3-r7, lr}
|
|
sub sp, #0x8
|
|
str r0, [sp, #0x0]
|
|
add r4, r1, #0x0
|
|
add r6, r2, #0x0
|
|
ldr r1, [sp, #0x0]
|
|
mov r0, #0x1
|
|
add r2, r3, #0x0
|
|
bl FUN_02004F28
|
|
add r1, r0, #0x0
|
|
mov r12, r0
|
|
sub r1, #0x64
|
|
bpl _02004F8E
|
|
mov r1, #0x0
|
|
_02004F8E:
|
|
ldr r0, [sp, #0x0]
|
|
mov r3, #0x0
|
|
add r0, r0, r1
|
|
ldrb r0, [r0, #0xc]
|
|
add r7, r3, #0x0
|
|
cmp r0, #0x80
|
|
bhs _02004FA0
|
|
mov r0, #0x1
|
|
b _02004FA2
|
|
_02004FA0:
|
|
sub r0, r3, #0x1
|
|
_02004FA2:
|
|
lsl r0, r0, #0x18
|
|
asr r5, r0, #0x18
|
|
mov r0, r12
|
|
cmp r1, r0
|
|
bhs _02005022
|
|
_02004FAC:
|
|
mov r0, #0x0
|
|
cmp r5, #0x0
|
|
ble _02004FC6
|
|
ldr r2, [sp, #0x0]
|
|
add r2, r2, r1
|
|
str r2, [sp, #0x4]
|
|
ldrb r2, [r2, #0xc]
|
|
cmp r2, #0x80
|
|
bls _02004FC2
|
|
mov r0, #0x1
|
|
b _02004FD8
|
|
_02004FC2:
|
|
add r3, r3, #0x1
|
|
b _02004FD8
|
|
_02004FC6:
|
|
ldr r2, [sp, #0x0]
|
|
add r2, r2, r1
|
|
str r2, [sp, #0x4]
|
|
ldrb r2, [r2, #0xc]
|
|
cmp r2, #0x80
|
|
bhs _02004FD6
|
|
mov r0, #0x1
|
|
b _02004FD8
|
|
_02004FD6:
|
|
add r3, r3, #0x1
|
|
_02004FD8:
|
|
cmp r0, #0x1
|
|
bne _0200501A
|
|
ldr r5, _02005064 ; =0x020ECB8C
|
|
mov r2, #0x0
|
|
_02004FE0:
|
|
ldrb r0, [r5, #0x0]
|
|
cmp r3, r0
|
|
bge _02004FEA
|
|
add r7, r2, #0x0
|
|
b _02004FF2
|
|
_02004FEA:
|
|
add r2, r2, #0x1
|
|
add r5, r5, #0x1
|
|
cmp r2, #0x9
|
|
blt _02004FE0
|
|
_02004FF2:
|
|
cmp r7, r6
|
|
blt _02004FF8
|
|
sub r7, r6, #0x1
|
|
_02004FF8:
|
|
cmp r3, #0x0
|
|
beq _02005006
|
|
sub r0, r6, #0x1
|
|
sub r0, r0, r7
|
|
ldrb r2, [r4, r0]
|
|
add r2, r2, #0x1
|
|
strb r2, [r4, r0]
|
|
_02005006:
|
|
ldr r0, [sp, #0x4]
|
|
mov r3, #0x0
|
|
ldrb r0, [r0, #0xc]
|
|
cmp r0, #0x80
|
|
bhs _02005014
|
|
mov r0, #0x1
|
|
b _02005016
|
|
_02005014:
|
|
sub r0, r3, #0x1
|
|
_02005016:
|
|
lsl r0, r0, #0x18
|
|
asr r5, r0, #0x18
|
|
_0200501A:
|
|
add r1, r1, #0x2
|
|
mov r0, r12
|
|
cmp r1, r0
|
|
blo _02004FAC
|
|
_02005022:
|
|
mov r2, #0x0
|
|
cmp r6, #0x0
|
|
ble _02005038
|
|
mov r0, #0x9
|
|
_0200502A:
|
|
ldrb r1, [r4, r2]
|
|
cmp r1, #0xa
|
|
blo _02005032
|
|
strb r0, [r4, r2]
|
|
_02005032:
|
|
add r2, r2, #0x1
|
|
cmp r2, r6
|
|
blt _0200502A
|
|
_02005038:
|
|
sub r2, r6, #0x1
|
|
mov r3, #0x0
|
|
cmp r2, #0x0
|
|
ble _02005060
|
|
_02005040:
|
|
ldrb r0, [r4, r3]
|
|
add r1, r4, r3
|
|
cmp r0, #0x0
|
|
bne _0200505A
|
|
ldrb r0, [r1, #0x1]
|
|
cmp r0, #0x0
|
|
beq _0200505A
|
|
add r0, r3, #0x1
|
|
ldrb r0, [r4, r0]
|
|
add sp, #0x8
|
|
lsr r0, r0, #0x1
|
|
strb r0, [r1, #0x0]
|
|
pop {r3-r7, pc}
|
|
_0200505A:
|
|
add r3, r3, #0x1
|
|
cmp r3, r2
|
|
blt _02005040
|
|
_02005060:
|
|
add sp, #0x8
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
_02005064: .word 0x020ECB8C
|
|
|
|
thumb_func_start FUN_02005068
|
|
FUN_02005068: ; 0x02005068
|
|
push {r3-r7, lr}
|
|
sub sp, #0x30
|
|
add r5, r0, #0x0
|
|
ldr r0, [sp, #0x48]
|
|
add r6, r1, #0x0
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0x13
|
|
str r2, [sp, #0x0]
|
|
add r4, r3, #0x0
|
|
bl FUN_02003D38
|
|
add r7, r0, #0x0
|
|
cmp r4, #0x1
|
|
beq _0200508A
|
|
ldr r0, [sp, #0x0]
|
|
lsr r0, r0, #0x1
|
|
str r0, [sp, #0x0]
|
|
_0200508A:
|
|
ldrb r2, [r7, #0x0]
|
|
cmp r2, #0x0
|
|
beq _0200515A
|
|
mov r0, #0x0
|
|
cmp r2, #0x0
|
|
ble _020050BC
|
|
add r1, sp, #0x10
|
|
_02005098:
|
|
ldr r3, [sp, #0x0]
|
|
sub r2, r3, r2
|
|
add r2, r0, r2
|
|
lsl r2, r2, #0x1
|
|
ldrsh r2, [r5, r2]
|
|
strh r2, [r1, #0x0]
|
|
ldrb r3, [r7, #0x0]
|
|
ldr r2, [sp, #0x0]
|
|
sub r2, r2, r3
|
|
add r2, r0, r2
|
|
lsl r2, r2, #0x1
|
|
ldrsh r2, [r6, r2]
|
|
add r0, r0, #0x1
|
|
strh r2, [r1, #0x2]
|
|
ldrb r2, [r7, #0x0]
|
|
add r1, r1, #0x4
|
|
cmp r0, r2
|
|
blt _02005098
|
|
_020050BC:
|
|
ldr r0, [sp, #0x0]
|
|
sub r4, r0, #0x1
|
|
sub r0, r2, #0x1
|
|
cmp r4, r0
|
|
blt _02005126
|
|
lsl r1, r4, #0x1
|
|
add r0, r5, r1
|
|
str r0, [sp, #0x8]
|
|
add r0, r6, r1
|
|
str r0, [sp, #0x4]
|
|
_020050D0:
|
|
mov r0, #0x0
|
|
add r1, r0, #0x0
|
|
cmp r2, #0x0
|
|
ble _020050E6
|
|
_020050D8:
|
|
sub r3, r4, r1
|
|
lsl r3, r3, #0x1
|
|
ldrsh r3, [r5, r3]
|
|
add r1, r1, #0x1
|
|
add r0, r0, r3
|
|
cmp r1, r2
|
|
blt _020050D8
|
|
_020050E6:
|
|
add r1, r2, #0x0
|
|
blx _s32_div_f
|
|
ldr r1, [sp, #0x8]
|
|
strh r0, [r1, #0x0]
|
|
mov r0, #0x0
|
|
ldrb r1, [r7, #0x0]
|
|
add r2, r0, #0x0
|
|
cmp r1, #0x0
|
|
ble _02005108
|
|
_020050FA:
|
|
sub r3, r4, r2
|
|
lsl r3, r3, #0x1
|
|
ldrsh r3, [r6, r3]
|
|
add r2, r2, #0x1
|
|
add r0, r0, r3
|
|
cmp r2, r1
|
|
blt _020050FA
|
|
_02005108:
|
|
blx _s32_div_f
|
|
ldr r1, [sp, #0x4]
|
|
sub r4, r4, #0x1
|
|
strh r0, [r1, #0x0]
|
|
ldr r0, [sp, #0x8]
|
|
ldrb r2, [r7, #0x0]
|
|
sub r0, r0, #0x2
|
|
str r0, [sp, #0x8]
|
|
add r0, r1, #0x0
|
|
sub r0, r0, #0x2
|
|
str r0, [sp, #0x4]
|
|
sub r0, r2, #0x1
|
|
cmp r4, r0
|
|
bge _020050D0
|
|
_02005126:
|
|
mov r1, #0x0
|
|
cmp r2, #0x0
|
|
ble _0200514A
|
|
add r0, sp, #0x10
|
|
mov r4, #0x2
|
|
_02005130:
|
|
mov r2, #0x0
|
|
ldrsh r3, [r0, r2]
|
|
ldr r2, [sp, #0xc]
|
|
add r1, r1, #0x1
|
|
strh r3, [r2, #0x0]
|
|
ldrsh r3, [r0, r4]
|
|
add r0, r0, #0x4
|
|
strh r3, [r2, #0x2]
|
|
add r2, r2, #0x4
|
|
str r2, [sp, #0xc]
|
|
ldrb r2, [r7, #0x0]
|
|
cmp r1, r2
|
|
blt _02005130
|
|
_0200514A:
|
|
ldr r1, [sp, #0x0]
|
|
add r0, r5, #0x0
|
|
blx DC_FlushRange
|
|
ldr r1, [sp, #0x0]
|
|
add r0, r6, #0x0
|
|
blx DC_FlushRange
|
|
_0200515A:
|
|
add sp, #0x30
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02005160
|
|
FUN_02005160: ; 0x02005160
|
|
ldr r3, _02005168 ; =FUN_020C1148
|
|
add r1, r0, #0x0
|
|
mov r0, #0x7
|
|
bx r3
|
|
.balign 4
|
|
_02005168: .word FUN_020C1148
|
|
|
|
thumb_func_start FUN_0200516C
|
|
FUN_0200516C: ; 0x0200516C
|
|
push {r3, lr}
|
|
cmp r0, #0x0
|
|
bne _02005180
|
|
ldr r0, _020051A4 ; =0x000007FF
|
|
bl FUN_02005160
|
|
mov r0, #0x0
|
|
bl FUN_02004CA4
|
|
b _0200519C
|
|
_02005180:
|
|
cmp r0, #0x1
|
|
ldr r0, _020051A8 ; =0x00007FFF
|
|
bne _02005192
|
|
bl FUN_02005160
|
|
mov r0, #0x1e
|
|
bl FUN_02004C80
|
|
b _0200519C
|
|
_02005192:
|
|
bl FUN_02005160
|
|
mov r0, #0xf
|
|
bl FUN_02004C80
|
|
_0200519C:
|
|
bl FUN_02004C78
|
|
pop {r3, pc}
|
|
nop
|
|
_020051A4: .word 0x000007FF
|
|
_020051A8: .word 0x00007FFF
|
|
|
|
thumb_func_start FUN_020051AC
|
|
FUN_020051AC: ; 0x020051AC
|
|
push {r3, lr}
|
|
bl FUN_02005404
|
|
cmp r0, #0x0
|
|
bne _020051E0
|
|
mov r0, #0x0
|
|
bl FUN_02003FF4
|
|
bl FUN_020048EC
|
|
mov r1, #0x0
|
|
mvn r1, r1
|
|
cmp r0, r1
|
|
beq _020051E0
|
|
bl FUN_02004124
|
|
ldr r1, _020051E8 ; =0x0000047E
|
|
cmp r0, r1
|
|
beq _020051E0
|
|
bl FUN_02005454
|
|
mov r0, #0x1
|
|
add r1, r0, #0x0
|
|
bl FUN_020047C8
|
|
pop {r3, pc}
|
|
_020051E0:
|
|
bl FUN_0200541C
|
|
pop {r3, pc}
|
|
nop
|
|
_020051E8: .word 0x0000047E
|
|
|
|
thumb_func_start FUN_020051EC
|
|
FUN_020051EC: ; 0x020051EC
|
|
ldr r3, _020051F0 ; =FUN_020C1180
|
|
bx r3
|
|
.balign 4
|
|
_020051F0: .word FUN_020C1180
|
|
|
|
thumb_func_start FUN_020051F4
|
|
FUN_020051F4: ; 0x020051F4
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
bl FUN_020048D0
|
|
bl FUN_02004018
|
|
add r4, r0, #0x0
|
|
bl FUN_02003FF4
|
|
add r1, r5, #0x0
|
|
blx FUN_020C3980
|
|
add r6, r0, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
bl FUN_0200526C
|
|
add r0, r6, #0x0
|
|
pop {r4-r6, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_0200521C
|
|
FUN_0200521C: ; 0x0200521C
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
bl FUN_020048D0
|
|
add r4, r0, #0x0
|
|
bl FUN_02004018
|
|
add r6, r0, #0x0
|
|
cmp r4, #0x7
|
|
bne _0200523E
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
add r2, r6, #0x0
|
|
bl FUN_02005288
|
|
add r4, r0, #0x0
|
|
b _02005258
|
|
_0200523E:
|
|
cmp r4, #0x1
|
|
bne _02005250
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
add r2, r6, #0x0
|
|
bl FUN_020052B8
|
|
add r4, r0, #0x0
|
|
b _02005258
|
|
_02005250:
|
|
bl ErrorHandling
|
|
mov r0, #0x0
|
|
pop {r4-r6, pc}
|
|
_02005258:
|
|
mov r0, #0x0
|
|
bl FUN_02004DBC
|
|
add r0, r5, #0x0
|
|
add r1, r6, #0x0
|
|
bl FUN_0200526C
|
|
add r0, r4, #0x0
|
|
pop {r4-r6, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_0200526C
|
|
FUN_0200526C: ; 0x0200526C
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
add r4, r1, #0x0
|
|
bl FUN_02004110
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
bl FUN_02004858
|
|
mov r0, #0x1
|
|
bl FUN_02003CE8
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02005288
|
|
FUN_02005288: ; 0x02005288
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
mov r0, #0x3
|
|
add r4, r2, #0x0
|
|
bl FUN_02004748
|
|
bl FUN_02003F64
|
|
add r0, r5, #0x0
|
|
bl FUN_02003F90
|
|
mov r0, #0x1a
|
|
bl FUN_02003D38
|
|
bl FUN_02003F3C
|
|
add r0, r4, #0x0
|
|
bl FUN_02003FF4
|
|
add r1, r5, #0x0
|
|
blx FUN_020C3980
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_020052B8
|
|
FUN_020052B8: ; 0x020052B8
|
|
push {r3-r6, lr}
|
|
sub sp, #0x4
|
|
add r5, r0, #0x0
|
|
mov r0, #0x12
|
|
add r6, r2, #0x0
|
|
bl FUN_02003D38
|
|
mov r0, #0x1f
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
mov r0, #0x0
|
|
bl FUN_02003FF4
|
|
bl FUN_020048EC
|
|
bl FUN_02004900
|
|
add r1, r0, #0x0
|
|
add r0, r5, #0x0
|
|
bl FUN_020045C4
|
|
add r0, r6, #0x0
|
|
bl FUN_02003FF4
|
|
add r6, r0, #0x0
|
|
ldrh r0, [r4, #0x0]
|
|
bl FUN_02004900
|
|
mov r1, #0x0
|
|
mvn r1, r1
|
|
add r2, r0, #0x0
|
|
add r0, r6, #0x0
|
|
add r3, r1, #0x0
|
|
str r5, [sp, #0x0]
|
|
blx FUN_020C3910
|
|
add sp, #0x4
|
|
pop {r3-r6, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02005308
|
|
FUN_02005308: ; 0x02005308
|
|
push {r3-r5, lr}
|
|
add r5, r1, #0x0
|
|
cmp r0, #0x4
|
|
beq _02005318
|
|
bl ErrorHandling
|
|
mov r0, #0x0
|
|
pop {r3-r5, pc}
|
|
_02005318:
|
|
add r0, r5, #0x0
|
|
bl FUN_020048D0
|
|
cmp r0, #0x7
|
|
beq _0200532A
|
|
bl ErrorHandling
|
|
mov r0, #0x0
|
|
pop {r3-r5, pc}
|
|
_0200532A:
|
|
add r0, r5, #0x0
|
|
mov r1, #0x1
|
|
bl FUN_02003FA8
|
|
mov r0, #0x7
|
|
bl FUN_02003FF4
|
|
add r1, r5, #0x0
|
|
blx FUN_020C3980
|
|
add r4, r0, #0x0
|
|
add r0, r5, #0x0
|
|
bl FUN_02004110
|
|
mov r0, #0x1
|
|
bl FUN_02003CE8
|
|
add r0, r4, #0x0
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_02005350
|
|
FUN_02005350: ; 0x02005350
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
blx FUN_020C0FDC
|
|
add r0, r4, #0x0
|
|
bl FUN_020048D0
|
|
cmp r0, #0xff
|
|
beq _0200536E
|
|
bl FUN_02004018
|
|
bl FUN_02003FF4
|
|
blx FUN_020C0F68
|
|
_0200536E:
|
|
bl FUN_02005374
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_02005374
|
|
FUN_02005374: ; 0x02005374
|
|
push {r3, lr}
|
|
mov r0, #0x0
|
|
bl FUN_02004110
|
|
mov r0, #0x0
|
|
bl FUN_02004130
|
|
mov r0, #0x0
|
|
bl FUN_02003CE8
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_0200538C
|
|
FUN_0200538C: ; 0x0200538C
|
|
push {r3-r7, lr}
|
|
add r6, r0, #0x0
|
|
add r5, r1, #0x0
|
|
add r4, r2, #0x0
|
|
bl FUN_02004124
|
|
bl FUN_020048D0
|
|
cmp r0, #0xff
|
|
beq _020053C8
|
|
bl FUN_02004018
|
|
add r7, r0, #0x0
|
|
cmp r4, #0x0
|
|
bne _020053B2
|
|
mov r1, #0x0
|
|
add r2, r1, #0x0
|
|
bl FUN_02004828
|
|
_020053B2:
|
|
add r0, r7, #0x0
|
|
add r1, r6, #0x0
|
|
add r2, r5, #0x0
|
|
bl FUN_02004828
|
|
add r0, r5, #0x0
|
|
bl FUN_02004D74
|
|
mov r0, #0x3
|
|
bl FUN_02003CE8
|
|
_020053C8:
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_020053CC
|
|
FUN_020053CC: ; 0x020053CC
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
add r4, r1, #0x0
|
|
bl FUN_02004124
|
|
bl FUN_020048D0
|
|
add r6, r0, #0x0
|
|
cmp r6, #0xff
|
|
beq _02005402
|
|
bl FUN_02005404
|
|
cmp r0, #0x0
|
|
bne _020053FC
|
|
add r0, r6, #0x0
|
|
bl FUN_02004018
|
|
add r1, r5, #0x0
|
|
add r2, r4, #0x0
|
|
bl FUN_02004828
|
|
add r0, r4, #0x0
|
|
bl FUN_02004D74
|
|
_020053FC:
|
|
mov r0, #0x4
|
|
bl FUN_02003CE8
|
|
_02005402:
|
|
pop {r4-r6, pc}
|
|
|
|
thumb_func_start FUN_02005404
|
|
FUN_02005404: ; 0x02005404
|
|
push {r3, lr}
|
|
mov r0, #0x6
|
|
bl FUN_02003D38
|
|
ldrh r0, [r0, #0x0]
|
|
pop {r3, pc}
|
|
|
|
thumb_func_start FUN_02005410
|
|
FUN_02005410: ; 0x02005410
|
|
push {r3, lr}
|
|
bl FUN_020048D0
|
|
bl FUN_020048BC
|
|
pop {r3, pc}
|
|
|
|
thumb_func_start FUN_0200541C
|
|
FUN_0200541C: ; 0x0200541C
|
|
push {r3-r5, lr}
|
|
mov r0, #0xf
|
|
bl FUN_02003D38
|
|
add r5, r0, #0x0
|
|
mov r0, #0x10
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
mov r0, #0x0
|
|
blx FUN_020C0F9C
|
|
ldrb r0, [r5, #0x0]
|
|
cmp r0, #0x1
|
|
bne _02005440
|
|
mov r0, #0xe
|
|
bl FUN_02004AAC
|
|
_02005440:
|
|
ldrb r0, [r4, #0x0]
|
|
cmp r0, #0x1
|
|
bne _0200544C
|
|
mov r0, #0xf
|
|
bl FUN_02004AAC
|
|
_0200544C:
|
|
mov r0, #0x0
|
|
bl FUN_02003CE8
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_02005454
|
|
FUN_02005454: ; 0x02005454
|
|
push {r3-r7, lr}
|
|
mov r0, #0xf
|
|
bl FUN_02003D38
|
|
add r7, r0, #0x0
|
|
mov r0, #0x10
|
|
bl FUN_02003D38
|
|
add r6, r0, #0x0
|
|
mov r0, #0x7
|
|
bl FUN_02003FF4
|
|
mov r1, #0x0
|
|
blx FUN_020C10A4
|
|
bl FUN_02005374
|
|
mov r5, #0x0
|
|
add r4, r5, #0x0
|
|
_0200547A:
|
|
add r0, r5, #0x3
|
|
add r1, r4, #0x0
|
|
bl FUN_020054F8
|
|
add r5, r5, #0x1
|
|
cmp r5, #0x4
|
|
blt _0200547A
|
|
mov r0, #0x0
|
|
bl FUN_02005614
|
|
ldrb r0, [r7, #0x0]
|
|
cmp r0, #0x1
|
|
bne _0200549A
|
|
mov r0, #0xe
|
|
bl FUN_02004AAC
|
|
_0200549A:
|
|
ldrb r0, [r6, #0x0]
|
|
cmp r0, #0x1
|
|
bne _020054A6
|
|
mov r0, #0xf
|
|
bl FUN_02004AAC
|
|
_020054A6:
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start FUN_020054A8
|
|
FUN_020054A8: ; 0x020054A8
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
add r4, r1, #0x0
|
|
bl FUN_020054C8
|
|
add r6, r0, #0x0
|
|
ldr r1, _020054C4 ; =0x0000FFFF
|
|
add r0, r5, #0x0
|
|
add r2, r4, #0x0
|
|
bl FUN_02005530
|
|
add r0, r6, #0x0
|
|
pop {r4-r6, pc}
|
|
nop
|
|
_020054C4: .word 0x0000FFFF
|
|
|
|
thumb_func_start FUN_020054C8
|
|
FUN_020054C8: ; 0x020054C8
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
bl FUN_020048D0
|
|
bl FUN_02004018
|
|
add r4, r0, #0x0
|
|
bl FUN_02003FF4
|
|
add r1, r5, #0x0
|
|
blx FUN_020C3980
|
|
add r6, r0, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
bl FUN_02004858
|
|
add r0, r6, #0x0
|
|
pop {r4-r6, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_020054F0
|
|
FUN_020054F0: ; 0x020054F0
|
|
ldr r3, _020054F4 ; =FUN_020C0FDC
|
|
bx r3
|
|
.balign 4
|
|
_020054F4: .word FUN_020C0FDC
|
|
|
|
thumb_func_start FUN_020054F8
|
|
FUN_020054F8: ; 0x020054F8
|
|
push {r4, lr}
|
|
add r4, r1, #0x0
|
|
bl FUN_02003FF4
|
|
add r1, r4, #0x0
|
|
blx FUN_020C10A4
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_02005508
|
|
FUN_02005508: ; 0x02005508
|
|
push {r3, lr}
|
|
bl FUN_020048D0
|
|
bl FUN_020048BC
|
|
pop {r3, pc}
|
|
|
|
thumb_func_start FUN_02005514
|
|
FUN_02005514: ; 0x02005514
|
|
push {r4, lr}
|
|
mov r4, #0x0
|
|
_02005518:
|
|
add r0, r4, #0x3
|
|
bl FUN_020048BC
|
|
cmp r0, #0x1
|
|
bne _02005526
|
|
mov r0, #0x1
|
|
pop {r4, pc}
|
|
_02005526:
|
|
add r4, r4, #0x1
|
|
cmp r4, #0x4
|
|
blt _02005518
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_02005530
|
|
FUN_02005530: ; 0x02005530
|
|
push {r3-r5, lr}
|
|
add r5, r1, #0x0
|
|
add r4, r2, #0x0
|
|
bl FUN_020048D0
|
|
bl FUN_02004018
|
|
bl FUN_02003FF4
|
|
add r1, r5, #0x0
|
|
add r2, r4, #0x0
|
|
blx FUN_020C0E7C
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_0200554C
|
|
FUN_0200554C: ; 0x0200554C
|
|
push {r3-r7, lr}
|
|
add r6, r0, #0x0
|
|
mov r0, #0x3
|
|
bl FUN_02004018
|
|
ldr r7, _02005574 ; =0x0000FFFF
|
|
add r4, r0, #0x0
|
|
mov r5, #0x0
|
|
_0200555C:
|
|
add r0, r4, r5
|
|
bl FUN_02003FF4
|
|
add r1, r7, #0x0
|
|
add r2, r6, #0x0
|
|
blx FUN_020C0E7C
|
|
add r5, r5, #0x1
|
|
cmp r5, #0x4
|
|
blt _0200555C
|
|
pop {r3-r7, pc}
|
|
nop
|
|
_02005574: .word 0x0000FFFF
|
|
|
|
thumb_func_start FUN_02005578
|
|
FUN_02005578: ; 0x02005578
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
mov r0, #0x11
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
mov r0, #0x23
|
|
bl FUN_02003D38
|
|
ldr r1, _02005610 ; =0x000001B9
|
|
cmp r5, r1
|
|
beq _0200559C
|
|
add r1, #0x36
|
|
cmp r5, r1
|
|
bhi _0200559A
|
|
cmp r5, #0x0
|
|
bne _0200559C
|
|
_0200559A:
|
|
mov r5, #0x1
|
|
_0200559C:
|
|
ldr r1, _02005610 ; =0x000001B9
|
|
cmp r5, r1
|
|
bne _020055BC
|
|
mov r1, #0x0
|
|
ldr r0, [r0, #0x0]
|
|
mov r2, #0x7f
|
|
add r3, r1, #0x0
|
|
bl FUN_02005D48
|
|
cmp r0, #0x1
|
|
bne _020055BC
|
|
mov r0, #0x0
|
|
bl FUN_02005E80
|
|
mov r0, #0x1
|
|
pop {r3-r5, pc}
|
|
_020055BC:
|
|
ldrb r0, [r4, #0x0]
|
|
cmp r0, #0x0
|
|
bne _020055E8
|
|
mov r0, #0x0
|
|
bl FUN_02005614
|
|
mov r0, #0x1
|
|
bl FUN_02003FF4
|
|
mov r1, #0x2
|
|
str r1, [sp, #0x0]
|
|
sub r1, r1, #0x3
|
|
add r2, r5, #0x0
|
|
add r3, r1, #0x0
|
|
blx FUN_020C3910
|
|
add r4, r0, #0x0
|
|
add r0, r5, #0x0
|
|
mov r1, #0x1
|
|
bl FUN_02004858
|
|
b _02005606
|
|
_020055E8:
|
|
mov r0, #0x8
|
|
bl FUN_02003FF4
|
|
mov r1, #0x2
|
|
str r1, [sp, #0x0]
|
|
sub r1, r1, #0x3
|
|
add r2, r5, #0x0
|
|
add r3, r1, #0x0
|
|
blx FUN_020C3910
|
|
add r4, r0, #0x0
|
|
add r0, r5, #0x0
|
|
mov r1, #0x8
|
|
bl FUN_02004858
|
|
_02005606:
|
|
mov r0, #0x0
|
|
bl FUN_02005E80
|
|
add r0, r4, #0x0
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
_02005610: .word 0x000001B9
|
|
|
|
thumb_func_start FUN_02005614
|
|
FUN_02005614: ; 0x02005614
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
mov r0, #0xf
|
|
bl FUN_02003D38
|
|
add r6, r0, #0x0
|
|
mov r0, #0x10
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
mov r0, #0xe
|
|
bl FUN_02003D38
|
|
mov r0, #0x1
|
|
bl FUN_02003FF4
|
|
add r1, r5, #0x0
|
|
blx FUN_020C10A4
|
|
mov r0, #0x8
|
|
bl FUN_02003FF4
|
|
add r1, r5, #0x0
|
|
blx FUN_020C10A4
|
|
ldrb r0, [r6, #0x0]
|
|
cmp r0, #0x1
|
|
bne _02005658
|
|
mov r0, #0xe
|
|
bl FUN_02004C3C
|
|
mov r0, #0xe
|
|
bl FUN_02004A04
|
|
_02005658:
|
|
ldrb r0, [r4, #0x0]
|
|
cmp r0, #0x1
|
|
bne _0200566A
|
|
mov r0, #0xf
|
|
bl FUN_02004C3C
|
|
mov r0, #0xf
|
|
bl FUN_02004A04
|
|
_0200566A:
|
|
bl FUN_02005DFC
|
|
pop {r4-r6, pc}
|
|
|
|
thumb_func_start FUN_02005670
|
|
FUN_02005670: ; 0x02005670
|
|
push {r3-r5, lr}
|
|
mov r0, #0xf
|
|
bl FUN_02003D38
|
|
add r5, r0, #0x0
|
|
mov r0, #0x10
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
mov r0, #0xe
|
|
bl FUN_02003D38
|
|
ldrb r0, [r5, #0x0]
|
|
cmp r0, #0x1
|
|
bne _02005696
|
|
mov r0, #0xe
|
|
bl FUN_02004ABC
|
|
pop {r3-r5, pc}
|
|
_02005696:
|
|
ldrb r0, [r4, #0x0]
|
|
cmp r0, #0x1
|
|
bne _020056A4
|
|
mov r0, #0xf
|
|
bl FUN_02004ABC
|
|
pop {r3-r5, pc}
|
|
_020056A4:
|
|
mov r0, #0x0
|
|
bl FUN_020048BC
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_020056AC
|
|
FUN_020056AC: ; 0x020056AC
|
|
push {r3-r7, lr}
|
|
sub sp, #0x20
|
|
str r0, [sp, #0x4]
|
|
mov r0, #0xf
|
|
str r1, [sp, #0x8]
|
|
add r5, r2, #0x0
|
|
add r6, r3, #0x0
|
|
ldr r7, [sp, #0x38]
|
|
bl FUN_02003D38
|
|
str r0, [sp, #0x14]
|
|
mov r0, #0x10
|
|
bl FUN_02003D38
|
|
str r0, [sp, #0x10]
|
|
mov r0, #0x11
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
mov r0, #0x1d
|
|
bl FUN_02003D38
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0x23
|
|
bl FUN_02003D38
|
|
lsr r0, r5, #0x1f
|
|
add r0, r5, r0
|
|
asr r0, r0, #0x1
|
|
str r0, [sp, #0x1c]
|
|
add r0, #0x40
|
|
str r0, [sp, #0x1c]
|
|
add r0, r6, #0x0
|
|
str r0, [sp, #0x18]
|
|
sub r0, #0x1e
|
|
str r0, [sp, #0x18]
|
|
cmp r0, #0x0
|
|
bgt _020056FC
|
|
mov r0, #0x1
|
|
str r0, [sp, #0x18]
|
|
_020056FC:
|
|
mov r0, #0x0
|
|
strb r0, [r4, #0x0]
|
|
ldr r0, [sp, #0x14]
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, #0x1
|
|
bne _02005714
|
|
mov r0, #0xe
|
|
bl FUN_02004C3C
|
|
mov r0, #0xe
|
|
bl FUN_02004A04
|
|
_02005714:
|
|
ldr r0, [sp, #0x10]
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, #0x1
|
|
bne _02005728
|
|
mov r0, #0xf
|
|
bl FUN_02004C3C
|
|
mov r0, #0xf
|
|
bl FUN_02004A04
|
|
_02005728:
|
|
ldr r4, [sp, #0x8]
|
|
ldr r0, _02005AB4 ; =0x000001B9
|
|
add r1, r4, #0x0
|
|
cmp r1, r0
|
|
beq _0200573E
|
|
add r0, #0x36
|
|
cmp r1, r0
|
|
bhi _0200573C
|
|
add r0, r4, #0x0
|
|
bne _0200573E
|
|
_0200573C:
|
|
mov r4, #0x1
|
|
_0200573E:
|
|
ldr r0, _02005AB4 ; =0x000001B9
|
|
ldr r1, [sp, #0x8]
|
|
cmp r1, r0
|
|
bne _020057B4
|
|
ldr r1, [sp, #0x4]
|
|
cmp r1, #0xc
|
|
bhi _020057AE
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #0x6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_02005758: ; jump table (using 16-bit offset)
|
|
.short _02005772 - _02005758 - 2; case 0
|
|
.short _02005772 - _02005758 - 2; case 1
|
|
.short _02005772 - _02005758 - 2; case 2
|
|
.short _020057AE - _02005758 - 2; case 3
|
|
.short _020057AE - _02005758 - 2; case 4
|
|
.short _02005772 - _02005758 - 2; case 5
|
|
.short _020057AE - _02005758 - 2; case 6
|
|
.short _020057AE - _02005758 - 2; case 7
|
|
.short _020057AE - _02005758 - 2; case 8
|
|
.short _020057AE - _02005758 - 2; case 9
|
|
.short _020057AE - _02005758 - 2; case 10
|
|
.short _02005772 - _02005758 - 2; case 11
|
|
.short _02005772 - _02005758 - 2; case 12
|
|
_02005772:
|
|
bl FUN_02005578
|
|
ldr r0, [sp, #0xc]
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, #0x0
|
|
bne _02005794
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x1
|
|
add r2, r5, #0x0
|
|
bl FUN_02004D4C
|
|
add r0, r4, #0x0
|
|
mov r1, #0x1
|
|
add r2, r6, #0x0
|
|
bl FUN_02005AC8
|
|
b _020057A8
|
|
_02005794:
|
|
ldr r1, [sp, #0x1c]
|
|
mov r0, #0xe
|
|
lsl r1, r1, #0x18
|
|
lsr r1, r1, #0x18
|
|
bl FUN_02004ACC
|
|
mov r0, #0xe
|
|
add r1, r6, #0x0
|
|
bl FUN_02004AF8
|
|
_020057A8:
|
|
add sp, #0x20
|
|
mov r0, #0x1
|
|
pop {r3-r7, pc}
|
|
_020057AE:
|
|
mov r0, #0x1
|
|
bl FUN_02005E80
|
|
_020057B4:
|
|
ldr r0, [sp, #0x4]
|
|
cmp r0, #0xe
|
|
bls _020057BC
|
|
b _02005AC2
|
|
_020057BC:
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_020057C8: ; jump table (using 16-bit offset)
|
|
.short _020057E6 - _020057C8 - 2; case 0
|
|
.short _02005802 - _020057C8 - 2; case 1
|
|
.short _02005826 - _020057C8 - 2; case 2
|
|
.short _02005868 - _020057C8 - 2; case 3
|
|
.short _020058B2 - _020057C8 - 2; case 4
|
|
.short _02005900 - _020057C8 - 2; case 5
|
|
.short _02005928 - _020057C8 - 2; case 6
|
|
.short _0200596C - _020057C8 - 2; case 7
|
|
.short _0200599C - _020057C8 - 2; case 8
|
|
.short _020059CA - _020057C8 - 2; case 9
|
|
.short _020059FE - _020057C8 - 2; case 10
|
|
.short _02005A2E - _020057C8 - 2; case 11
|
|
.short _02005A56 - _020057C8 - 2; case 12
|
|
.short _02005A86 - _020057C8 - 2; case 13
|
|
.short _02005ABC - _020057C8 - 2; case 14
|
|
_020057E6:
|
|
add r0, r4, #0x0
|
|
bl FUN_02005578
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x1
|
|
add r2, r5, #0x0
|
|
bl FUN_02004D4C
|
|
add r0, r4, #0x0
|
|
mov r1, #0x1
|
|
add r2, r6, #0x0
|
|
bl FUN_02005AC8
|
|
b _02005AC2
|
|
_02005802:
|
|
add r0, r4, #0x0
|
|
bl FUN_02005578
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x1
|
|
add r2, r5, #0x0
|
|
bl FUN_02004D4C
|
|
add r0, r4, #0x0
|
|
mov r1, #0x1
|
|
add r2, r6, #0x0
|
|
bl FUN_02005AC8
|
|
mov r0, #0x14
|
|
add r1, r7, #0x0
|
|
bl FUN_02005AE0
|
|
b _02005AC2
|
|
_02005826:
|
|
add r0, r4, #0x0
|
|
bl FUN_02005578
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x1
|
|
add r2, r5, #0x0
|
|
bl FUN_02004D4C
|
|
add r0, r4, #0x0
|
|
mov r1, #0x1
|
|
add r2, r6, #0x0
|
|
bl FUN_02005AC8
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x1
|
|
mov r2, #0x40
|
|
bl FUN_02004D20
|
|
add r0, r4, #0x0
|
|
mov r1, #0x14
|
|
bl FUN_02005BC8
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x8
|
|
add r2, r5, #0x0
|
|
bl FUN_02004D4C
|
|
ldr r2, [sp, #0x18]
|
|
add r0, r4, #0x0
|
|
mov r1, #0x8
|
|
bl FUN_02005AC8
|
|
b _02005AC2
|
|
_02005868:
|
|
add r0, r4, #0x0
|
|
bl FUN_02005578
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x1
|
|
add r2, r5, #0x0
|
|
bl FUN_02004D4C
|
|
add r0, r4, #0x0
|
|
mov r1, #0x1
|
|
add r2, r6, #0x0
|
|
bl FUN_02005AC8
|
|
mov r0, #0x1e
|
|
add r1, r7, #0x0
|
|
bl FUN_02005AE0
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x1
|
|
mov r2, #0xc0
|
|
bl FUN_02004D20
|
|
add r0, r4, #0x0
|
|
mov r1, #0x10
|
|
bl FUN_02005BC8
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x8
|
|
add r2, r5, #0x0
|
|
bl FUN_02004D4C
|
|
ldr r2, [sp, #0x18]
|
|
add r0, r4, #0x0
|
|
mov r1, #0x8
|
|
bl FUN_02005AC8
|
|
b _02005AC2
|
|
_020058B2:
|
|
mov r0, #0xe
|
|
bl FUN_02004984
|
|
ldr r2, [sp, #0x1c]
|
|
add r0, r4, #0x0
|
|
add r1, r6, #0x0
|
|
mov r3, #0xe
|
|
str r7, [sp, #0x0]
|
|
bl FUN_02004B30
|
|
ldr r1, [sp, #0x1c]
|
|
mov r0, #0xe
|
|
lsl r1, r1, #0x18
|
|
lsr r1, r1, #0x18
|
|
bl FUN_02004ACC
|
|
mov r0, #0xf
|
|
add r1, r7, #0x0
|
|
bl FUN_02005AE0
|
|
mov r1, #0x86
|
|
mov r0, #0xe
|
|
lsl r1, r1, #0x8
|
|
bl FUN_02004AE4
|
|
mov r1, #0x3f
|
|
ldr r2, [sp, #0x18]
|
|
ldr r3, [sp, #0x1c]
|
|
add r0, r4, #0x0
|
|
mvn r1, r1
|
|
str r7, [sp, #0x0]
|
|
bl FUN_02005BF8
|
|
mov r1, #0x86
|
|
mov r0, #0xf
|
|
lsl r1, r1, #0x8
|
|
bl FUN_02004AE4
|
|
b _02005AC2
|
|
_02005900:
|
|
add r0, r4, #0x0
|
|
bl FUN_02005578
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x1
|
|
add r2, r5, #0x0
|
|
bl FUN_02004D4C
|
|
add r0, r4, #0x0
|
|
mov r1, #0x1
|
|
add r2, r6, #0x0
|
|
bl FUN_02005AC8
|
|
mov r0, #0x1
|
|
add r2, r0, #0x0
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
sub r2, #0xe1
|
|
bl FUN_02004D20
|
|
b _02005AC2
|
|
_02005928:
|
|
add r0, r4, #0x0
|
|
bl FUN_02005578
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x1
|
|
add r2, r5, #0x0
|
|
bl FUN_02004D4C
|
|
add r0, r4, #0x0
|
|
mov r1, #0x1
|
|
add r2, r6, #0x0
|
|
bl FUN_02005AC8
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x1
|
|
mov r2, #0x2c
|
|
bl FUN_02004D20
|
|
mov r1, #0x3f
|
|
add r0, r4, #0x0
|
|
mvn r1, r1
|
|
bl FUN_02005BC8
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x8
|
|
add r2, r5, #0x0
|
|
bl FUN_02004D4C
|
|
ldr r2, [sp, #0x18]
|
|
add r0, r4, #0x0
|
|
mov r1, #0x8
|
|
bl FUN_02005AC8
|
|
b _02005AC2
|
|
_0200596C:
|
|
add r0, r4, #0x0
|
|
bl FUN_02005578
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x1
|
|
add r2, r5, #0x0
|
|
bl FUN_02004D4C
|
|
add r0, r4, #0x0
|
|
mov r1, #0x1
|
|
add r2, r6, #0x0
|
|
bl FUN_02005AC8
|
|
mov r0, #0xb
|
|
add r1, r7, #0x0
|
|
bl FUN_02005AE0
|
|
mov r0, #0x1
|
|
add r2, r0, #0x0
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
sub r2, #0x81
|
|
bl FUN_02004D20
|
|
b _02005AC2
|
|
_0200599C:
|
|
add r0, r4, #0x0
|
|
bl FUN_02005578
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x1
|
|
add r2, r5, #0x0
|
|
bl FUN_02004D4C
|
|
add r0, r4, #0x0
|
|
mov r1, #0x1
|
|
add r2, r6, #0x0
|
|
bl FUN_02005AC8
|
|
mov r0, #0x3c
|
|
add r1, r7, #0x0
|
|
bl FUN_02005AE0
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x1
|
|
mov r2, #0x3c
|
|
bl FUN_02004D20
|
|
b _02005AC2
|
|
_020059CA:
|
|
mov r0, #0xe
|
|
bl FUN_02004984
|
|
ldr r2, [sp, #0x1c]
|
|
add r0, r4, #0x0
|
|
add r1, r6, #0x0
|
|
mov r3, #0xe
|
|
str r7, [sp, #0x0]
|
|
bl FUN_02004B30
|
|
ldr r1, [sp, #0x1c]
|
|
mov r0, #0xe
|
|
lsl r1, r1, #0x18
|
|
lsr r1, r1, #0x18
|
|
bl FUN_02004ACC
|
|
mov r0, #0xd
|
|
add r1, r7, #0x0
|
|
bl FUN_02005AE0
|
|
mov r1, #0x1a
|
|
mov r0, #0xe
|
|
lsl r1, r1, #0xa
|
|
bl FUN_02004AE4
|
|
b _02005AC2
|
|
_020059FE:
|
|
add r0, r4, #0x0
|
|
bl FUN_02005578
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x1
|
|
add r2, r5, #0x0
|
|
bl FUN_02004D4C
|
|
add r0, r4, #0x0
|
|
mov r1, #0x1
|
|
add r2, r6, #0x0
|
|
bl FUN_02005AC8
|
|
mov r0, #0x64
|
|
add r1, r7, #0x0
|
|
bl FUN_02005AE0
|
|
mov r0, #0x1
|
|
add r2, r0, #0x0
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
sub r2, #0x2d
|
|
bl FUN_02004D20
|
|
b _02005AC2
|
|
_02005A2E:
|
|
add r0, r4, #0x0
|
|
bl FUN_02005578
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x1
|
|
add r2, r5, #0x0
|
|
bl FUN_02004D4C
|
|
add r0, r4, #0x0
|
|
mov r1, #0x1
|
|
add r2, r6, #0x0
|
|
bl FUN_02005AC8
|
|
mov r0, #0x1
|
|
add r2, r0, #0x0
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
sub r2, #0x61
|
|
bl FUN_02004D20
|
|
b _02005AC2
|
|
_02005A56:
|
|
add r0, r4, #0x0
|
|
bl FUN_02005578
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x1
|
|
add r2, r5, #0x0
|
|
bl FUN_02004D4C
|
|
add r0, r4, #0x0
|
|
mov r1, #0x1
|
|
add r2, r6, #0x0
|
|
bl FUN_02005AC8
|
|
mov r0, #0x14
|
|
add r1, r7, #0x0
|
|
bl FUN_02005AE0
|
|
mov r0, #0x1
|
|
add r2, r0, #0x0
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
sub r2, #0x61
|
|
bl FUN_02004D20
|
|
b _02005AC2
|
|
_02005A86:
|
|
add r0, r4, #0x0
|
|
bl FUN_02005578
|
|
add r0, r4, #0x0
|
|
mov r1, #0x1
|
|
mov r2, #0x7f
|
|
bl FUN_02005AC8
|
|
add r0, r4, #0x0
|
|
mov r1, #0x14
|
|
bl FUN_02005BC8
|
|
ldr r1, _02005AB8 ; =0x0000FFFF
|
|
mov r0, #0x8
|
|
add r2, r5, #0x0
|
|
bl FUN_02004D4C
|
|
mov r0, #0x8
|
|
add r1, r6, #0x0
|
|
mov r2, #0x0
|
|
bl FUN_02004828
|
|
b _02005AC2
|
|
.balign 4
|
|
_02005AB4: .word 0x000001B9
|
|
_02005AB8: .word 0x0000FFFF
|
|
_02005ABC:
|
|
add r0, r4, #0x0
|
|
bl FUN_02005578
|
|
_02005AC2:
|
|
mov r0, #0x1
|
|
add sp, #0x20
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start FUN_02005AC8
|
|
FUN_02005AC8: ; 0x02005AC8
|
|
push {r3-r5, lr}
|
|
add r4, r1, #0x0
|
|
add r5, r0, #0x0
|
|
add r0, r4, #0x0
|
|
add r1, r2, #0x0
|
|
bl FUN_0200483C
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
bl FUN_02004858
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_02005AE0
|
|
FUN_02005AE0: ; 0x02005AE0
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
add r4, r1, #0x0
|
|
mov r0, #0x22
|
|
bl FUN_02003D38
|
|
add r6, r0, #0x0
|
|
bl FUN_02005BA0
|
|
add r0, r4, #0x0
|
|
mov r1, #0x8
|
|
bl FUN_02016998
|
|
add r4, r0, #0x0
|
|
bne _02005B04
|
|
bl ErrorHandling
|
|
pop {r4-r6, pc}
|
|
_02005B04:
|
|
mov r2, #0x0
|
|
strb r2, [r4, #0x0]
|
|
strb r2, [r4, #0x1]
|
|
strb r2, [r4, #0x2]
|
|
strb r2, [r4, #0x3]
|
|
strb r2, [r4, #0x4]
|
|
strb r2, [r4, #0x5]
|
|
strb r2, [r4, #0x6]
|
|
strb r2, [r4, #0x7]
|
|
ldr r0, _02005B28 ; =FUN_02005B2C
|
|
add r1, r4, #0x0
|
|
str r5, [r4, #0x0]
|
|
bl FUN_0200CA44
|
|
str r0, [r4, #0x4]
|
|
str r0, [r6, #0x0]
|
|
pop {r4-r6, pc}
|
|
nop
|
|
_02005B28: .word FUN_02005B2C
|
|
|
|
thumb_func_start FUN_02005B2C
|
|
FUN_02005B2C: ; 0x02005B2C
|
|
push {r4-r6, lr}
|
|
mov r0, #0xf
|
|
add r5, r1, #0x0
|
|
bl FUN_02003D38
|
|
add r6, r0, #0x0
|
|
mov r0, #0x10
|
|
bl FUN_02003D38
|
|
ldr r2, [r5, #0x0]
|
|
add r4, r0, #0x0
|
|
cmp r2, #0xa
|
|
bne _02005B58
|
|
mov r0, #0x1
|
|
mov r1, #0x0
|
|
bl FUN_02004828
|
|
ldr r2, [r5, #0x0]
|
|
mov r0, #0x8
|
|
mov r1, #0x0
|
|
bl FUN_02004828
|
|
_02005B58:
|
|
ldr r0, [r5, #0x0]
|
|
sub r0, r0, #0x1
|
|
str r0, [r5, #0x0]
|
|
bl FUN_02005670
|
|
cmp r0, #0x0
|
|
bne _02005B6A
|
|
mov r0, #0x0
|
|
str r0, [r5, #0x0]
|
|
_02005B6A:
|
|
ldr r0, [r5, #0x0]
|
|
cmp r0, #0x0
|
|
bgt _02005B9E
|
|
mov r0, #0x0
|
|
bl FUN_02005614
|
|
ldrb r0, [r6, #0x0]
|
|
cmp r0, #0x1
|
|
bne _02005B88
|
|
mov r0, #0xe
|
|
bl FUN_02004C3C
|
|
mov r0, #0xe
|
|
bl FUN_02004A04
|
|
_02005B88:
|
|
ldrb r0, [r4, #0x0]
|
|
cmp r0, #0x1
|
|
bne _02005B9A
|
|
mov r0, #0xf
|
|
bl FUN_02004C3C
|
|
mov r0, #0xf
|
|
bl FUN_02004A04
|
|
_02005B9A:
|
|
bl FUN_02005BA0
|
|
_02005B9E:
|
|
pop {r4-r6, pc}
|
|
|
|
thumb_func_start FUN_02005BA0
|
|
FUN_02005BA0: ; 0x02005BA0
|
|
push {r3-r5, lr}
|
|
mov r0, #0x22
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
cmp r0, #0x0
|
|
beq _02005BC2
|
|
bl FUN_0201B6C8
|
|
add r5, r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
bl FUN_0200CAB4
|
|
add r0, r5, #0x0
|
|
bl FUN_02016A18
|
|
_02005BC2:
|
|
mov r0, #0x0
|
|
str r0, [r4, #0x0]
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_02005BC8
|
|
FUN_02005BC8: ; 0x02005BC8
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
mov r0, #0x11
|
|
add r4, r1, #0x0
|
|
bl FUN_02003D38
|
|
mov r1, #0x1
|
|
strb r1, [r0, #0x0]
|
|
add r0, r1, #0x0
|
|
bl FUN_02005E80
|
|
add r0, r5, #0x0
|
|
bl FUN_02005578
|
|
add r5, r0, #0x0
|
|
ldr r1, _02005BF4 ; =0x0000FFFF
|
|
mov r0, #0x8
|
|
add r2, r4, #0x0
|
|
bl FUN_02004D20
|
|
add r0, r5, #0x0
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
_02005BF4: .word 0x0000FFFF
|
|
|
|
thumb_func_start FUN_02005BF8
|
|
FUN_02005BF8: ; 0x02005BF8
|
|
push {r3-r6, lr}
|
|
sub sp, #0x4
|
|
add r5, r0, #0x0
|
|
mov r0, #0x11
|
|
add r4, r2, #0x0
|
|
add r6, r3, #0x0
|
|
bl FUN_02003D38
|
|
mov r1, #0x1
|
|
strb r1, [r0, #0x0]
|
|
mov r0, #0xf
|
|
bl FUN_02004984
|
|
ldr r0, [sp, #0x18]
|
|
add r1, r4, #0x0
|
|
str r0, [sp, #0x0]
|
|
add r0, r5, #0x0
|
|
add r2, r6, #0x0
|
|
mov r3, #0xf
|
|
bl FUN_02004B30
|
|
add sp, #0x4
|
|
pop {r3-r6, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02005C28
|
|
FUN_02005C28: ; 0x02005C28
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
bl FUN_020048F4
|
|
add r0, r5, #0x0
|
|
bl FUN_02005CEC
|
|
bl FUN_02004124
|
|
bl FUN_020048D0
|
|
cmp r0, #0xff
|
|
beq _02005C48
|
|
mov r1, #0x1
|
|
bl FUN_020047C8
|
|
_02005C48:
|
|
mov r0, #0x1c
|
|
bl FUN_02003D38
|
|
bl FUN_02003F3C
|
|
add r0, r5, #0x0
|
|
mov r1, #0x3
|
|
bl FUN_02003FA8
|
|
mov r0, #0x2
|
|
bl FUN_02003FF4
|
|
add r1, r5, #0x0
|
|
blx FUN_020C3980
|
|
add r4, r0, #0x0
|
|
add r0, r5, #0x0
|
|
mov r1, #0x2
|
|
bl FUN_02004858
|
|
add r0, r4, #0x0
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_02005C74
|
|
FUN_02005C74: ; 0x02005C74
|
|
push {r4, lr}
|
|
mov r0, #0xd
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
mov r0, #0x2
|
|
bl FUN_020048BC
|
|
cmp r0, #0x0
|
|
beq _02005C8C
|
|
mov r0, #0x1
|
|
pop {r4, pc}
|
|
_02005C8C:
|
|
ldrh r0, [r4, #0x0]
|
|
cmp r0, #0x0
|
|
beq _02005C9A
|
|
sub r0, r0, #0x1
|
|
strh r0, [r4, #0x0]
|
|
mov r0, #0x1
|
|
pop {r4, pc}
|
|
_02005C9A:
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02005CA0
|
|
FUN_02005CA0: ; 0x02005CA0
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
mov r0, #0x2
|
|
bl FUN_02003FF4
|
|
add r1, r4, #0x0
|
|
blx FUN_020C10A4
|
|
mov r0, #0x6
|
|
bl FUN_02004748
|
|
bl FUN_02003F64
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_02005CBC
|
|
FUN_02005CBC: ; 0x02005CBC
|
|
push {r3, lr}
|
|
mov r0, #0xd
|
|
bl FUN_02003D38
|
|
bl FUN_02005C74
|
|
cmp r0, #0x1
|
|
bne _02005CD0
|
|
mov r0, #0x1
|
|
pop {r3, pc}
|
|
_02005CD0:
|
|
mov r0, #0x0
|
|
bl FUN_02005CA0
|
|
bl FUN_02004124
|
|
bl FUN_020048D0
|
|
cmp r0, #0xff
|
|
beq _02005CE8
|
|
mov r1, #0x0
|
|
bl FUN_020047C8
|
|
_02005CE8:
|
|
mov r0, #0x0
|
|
pop {r3, pc}
|
|
|
|
thumb_func_start FUN_02005CEC
|
|
FUN_02005CEC: ; 0x02005CEC
|
|
push {r3, lr}
|
|
mov r0, #0xd
|
|
bl FUN_02003D38
|
|
mov r1, #0xf
|
|
strh r1, [r0, #0x0]
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02005CFC
|
|
FUN_02005CFC: ; 0x02005CFC
|
|
push {r3, lr}
|
|
mov r0, #0x1d
|
|
bl FUN_02003D38
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, #0x1
|
|
bne _02005D1C
|
|
mov r0, #0xe
|
|
bl FUN_02004ABC
|
|
cmp r0, #0x0
|
|
bne _02005D1C
|
|
bl FUN_02005DFC
|
|
mov r0, #0x1
|
|
pop {r3, pc}
|
|
_02005D1C:
|
|
mov r0, #0x0
|
|
pop {r3, pc}
|
|
|
|
thumb_func_start FUN_02005D20
|
|
FUN_02005D20: ; 0x02005D20
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
mov r0, #0x1e
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
add r0, r5, #0x0
|
|
bl FUN_02029F04
|
|
cmp r0, #0x0
|
|
bne _02005D3A
|
|
mov r0, #0x0
|
|
pop {r3-r5, pc}
|
|
_02005D3A:
|
|
ldrb r0, [r4, #0x0]
|
|
cmp r0, #0x1
|
|
beq _02005D44
|
|
mov r0, #0x1
|
|
pop {r3-r5, pc}
|
|
_02005D44:
|
|
mov r0, #0x0
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_02005D48
|
|
FUN_02005D48: ; 0x02005D48
|
|
push {r3-r7, lr}
|
|
sub sp, #0x30
|
|
add r6, r0, #0x0
|
|
add r5, r2, #0x0
|
|
add r7, r3, #0x0
|
|
bl FUN_02004DB4
|
|
str r0, [sp, #0x0]
|
|
mov r0, #0x1d
|
|
bl FUN_02003D38
|
|
str r0, [sp, #0x4]
|
|
add r0, r6, #0x0
|
|
bl FUN_02005D20
|
|
cmp r0, #0x0
|
|
bne _02005D70
|
|
add sp, #0x30
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_02005D70:
|
|
mov r0, #0x0
|
|
bl FUN_02005614
|
|
bl FUN_02005DFC
|
|
mov r0, #0xe
|
|
bl FUN_02004984
|
|
bl FUN_0201B9EC
|
|
lsr r2, r0, #0x1f
|
|
lsl r1, r0, #0x13
|
|
sub r1, r1, r2
|
|
mov r0, #0x13
|
|
ror r1, r0
|
|
add r0, r2, r1
|
|
lsl r0, r0, #0x10
|
|
lsr r4, r0, #0x10
|
|
add r0, r6, #0x0
|
|
bl FUN_02029F10
|
|
add r1, r0, #0x0
|
|
ldr r0, [sp, #0x0]
|
|
bl FUN_02029F14
|
|
mov r0, #0xe
|
|
bl FUN_02004930
|
|
str r0, [sp, #0x8]
|
|
mov r0, #0x0
|
|
str r0, [sp, #0xc]
|
|
bl FUN_02004DB4
|
|
str r0, [sp, #0x10]
|
|
mov r0, #0x0
|
|
str r0, [sp, #0x14]
|
|
str r0, [sp, #0x18]
|
|
mov r0, #0x7d
|
|
lsl r0, r0, #0x4
|
|
str r0, [sp, #0x1c]
|
|
str r0, [sp, #0x20]
|
|
mov r0, #0x2
|
|
lsl r0, r0, #0xe
|
|
add r0, r4, r0
|
|
str r0, [sp, #0x28]
|
|
lsr r0, r7, #0x1f
|
|
add r0, r7, r0
|
|
asr r0, r0, #0x1
|
|
add r0, #0x40
|
|
str r0, [sp, #0x2c]
|
|
add r0, sp, #0x8
|
|
mov r1, #0xe
|
|
str r5, [sp, #0x24]
|
|
bl FUN_02004A6C
|
|
add r4, r0, #0x0
|
|
mov r0, #0xe
|
|
add r1, r5, #0x0
|
|
bl FUN_02004AF8
|
|
ldr r0, [sp, #0x4]
|
|
mov r1, #0x1
|
|
strb r1, [r0, #0x0]
|
|
mov r0, #0x0
|
|
bl FUN_02005E80
|
|
add r0, r4, #0x0
|
|
add sp, #0x30
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02005DFC
|
|
FUN_02005DFC: ; 0x02005DFC
|
|
push {r3-r5, lr}
|
|
mov r0, #0xf
|
|
bl FUN_02003D38
|
|
add r5, r0, #0x0
|
|
mov r0, #0x1d
|
|
bl FUN_02003D38
|
|
add r4, r0, #0x0
|
|
ldrb r0, [r5, #0x0]
|
|
cmp r0, #0x1
|
|
bne _02005E20
|
|
mov r0, #0xe
|
|
bl FUN_02004C3C
|
|
mov r0, #0xe
|
|
bl FUN_02004A04
|
|
_02005E20:
|
|
mov r0, #0x0
|
|
strb r0, [r4, #0x0]
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02005E28
|
|
FUN_02005E28: ; 0x02005E28
|
|
push {lr}
|
|
sub sp, #0x1c
|
|
mov r0, #0x2
|
|
str r0, [sp, #0x0]
|
|
bl FUN_02004DB4
|
|
mov r1, #0x7d
|
|
str r0, [sp, #0x4]
|
|
lsl r1, r1, #0x4
|
|
mov r0, #0x1f
|
|
str r1, [sp, #0x8]
|
|
tst r0, r1
|
|
beq _02005E48
|
|
mov r0, #0x1f
|
|
bic r1, r0
|
|
str r1, [sp, #0x8]
|
|
_02005E48:
|
|
ldr r0, _02005E60 ; =0x00004174
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0x0
|
|
str r0, [sp, #0x10]
|
|
str r0, [sp, #0x14]
|
|
str r0, [sp, #0x18]
|
|
add r0, sp, #0x0
|
|
bl FUN_02004914
|
|
add sp, #0x1c
|
|
pop {pc}
|
|
nop
|
|
_02005E60: .word 0x00004174
|
|
|
|
thumb_func_start FUN_02005E64
|
|
FUN_02005E64: ; 0x02005E64
|
|
ldr r3, _02005E68 ; =FUN_0200491C
|
|
bx r3
|
|
.balign 4
|
|
_02005E68: .word FUN_0200491C
|
|
|
|
thumb_func_start FUN_02005E6C
|
|
FUN_02005E6C: ; 0x02005E6C
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
bl FUN_02004DB4
|
|
add r1, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl FUN_02029F4C
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02005E80
|
|
FUN_02005E80: ; 0x02005E80
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
mov r0, #0x1e
|
|
bl FUN_02003D38
|
|
strb r4, [r0, #0x0]
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02005E90
|
|
FUN_02005E90: ; 0x02005E90
|
|
push {r3-r7, lr}
|
|
add r5, r0, #0x0
|
|
mov r0, #0x23
|
|
add r7, r1, #0x0
|
|
add r4, r2, #0x0
|
|
add r6, r3, #0x0
|
|
bl FUN_02003D38
|
|
cmp r5, #0x0
|
|
bne _02005EB2
|
|
ldr r0, [r0, #0x0]
|
|
add r1, r7, #0x0
|
|
add r2, r4, #0x0
|
|
add r3, r6, #0x0
|
|
bl FUN_02005D48
|
|
b _02005EBE
|
|
_02005EB2:
|
|
add r0, r5, #0x0
|
|
add r1, r7, #0x0
|
|
add r2, r4, #0x0
|
|
add r3, r6, #0x0
|
|
bl FUN_02005D48
|
|
_02005EBE:
|
|
cmp r0, #0x0
|
|
bne _02005ED8
|
|
mov r0, #0x1
|
|
bl FUN_02005E80
|
|
mov r0, #0xb
|
|
str r0, [sp, #0x0]
|
|
ldr r1, _02005EDC ; =0x000001B9
|
|
mov r0, #0x0
|
|
add r2, r6, #0x0
|
|
add r3, r4, #0x0
|
|
bl FUN_020056AC
|
|
_02005ED8:
|
|
pop {r3-r7, pc}
|
|
nop
|
|
_02005EDC: .word 0x000001B9
|
|
|
|
thumb_func_start FUN_02005EE0
|
|
FUN_02005EE0: ; 0x02005EE0
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
bl FUN_02029F04
|
|
cmp r0, #0x0
|
|
bne _02005EF0
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
_02005EF0:
|
|
add r0, r4, #0x0
|
|
bl FUN_02029F10
|
|
mov r1, #0xf
|
|
ldrsb r0, [r0, r1]
|
|
sub r1, #0x2d
|
|
cmp r0, r1
|
|
bge _02005F04
|
|
mov r0, #0x1
|
|
pop {r4, pc}
|
|
_02005F04:
|
|
cmp r0, #0x1e
|
|
blt _02005F10
|
|
cmp r0, #0x80
|
|
bge _02005F10
|
|
mov r0, #0x2
|
|
pop {r4, pc}
|
|
_02005F10:
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_02005F14
|
|
FUN_02005F14: ; 0x02005F14
|
|
cmp r0, #0xb
|
|
bgt _02005F2E
|
|
bge _02005F32
|
|
cmp r0, #0x5
|
|
bgt _02005F36
|
|
cmp r0, #0x0
|
|
blt _02005F36
|
|
beq _02005F32
|
|
cmp r0, #0x1
|
|
beq _02005F32
|
|
cmp r0, #0x5
|
|
beq _02005F32
|
|
b _02005F36
|
|
_02005F2E:
|
|
cmp r0, #0xc
|
|
bne _02005F36
|
|
_02005F32:
|
|
mov r0, #0x1
|
|
bx lr
|
|
_02005F36:
|
|
mov r0, #0x0
|
|
bx lr
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02005F3C
|
|
FUN_02005F3C: ; 0x02005F3C
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x4]
|
|
cmp r0, #0x1
|
|
beq _02005F4A
|
|
bl ErrorHandling
|
|
_02005F4A:
|
|
ldr r1, [r4, #0x0]
|
|
mov r0, #0x0
|
|
blx FS_UnloadOverlay
|
|
cmp r0, #0x1
|
|
beq _02005F5A
|
|
bl ErrorHandling
|
|
_02005F5A:
|
|
mov r0, #0x0
|
|
str r0, [r4, #0x4]
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_02005F60
|
|
FUN_02005F60: ; 0x02005F60
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
bl FUN_02005F90
|
|
bl FUN_0200610C
|
|
mov r2, #0x0
|
|
add r3, r0, #0x0
|
|
_02005F70:
|
|
ldr r1, [r3, #0x4]
|
|
cmp r1, #0x1
|
|
bne _02005F86
|
|
ldr r1, [r3, #0x0]
|
|
cmp r4, r1
|
|
bne _02005F86
|
|
lsl r1, r2, #0x3
|
|
add r0, r0, r1
|
|
bl FUN_02005F3C
|
|
pop {r4, pc}
|
|
_02005F86:
|
|
add r2, r2, #0x1
|
|
add r3, #0x8
|
|
cmp r2, #0x8
|
|
blt _02005F70
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_02005F90
|
|
FUN_02005F90: ; 0x02005F90
|
|
push {lr}
|
|
sub sp, #0x2c
|
|
add r2, r0, #0x0
|
|
add r0, sp, #0x0
|
|
mov r1, #0x0
|
|
blx FS_LoadOverlayInfo
|
|
cmp r0, #0x1
|
|
beq _02005FA6
|
|
bl ErrorHandling
|
|
_02005FA6:
|
|
mov r0, #0x2
|
|
ldr r2, [sp, #0x4]
|
|
lsl r0, r0, #0x18
|
|
cmp r2, r0
|
|
bhi _02005FBC
|
|
lsr r0, r0, #0x1
|
|
cmp r2, r0
|
|
blo _02005FBC
|
|
add sp, #0x2c
|
|
mov r0, #0x1
|
|
pop {pc}
|
|
_02005FBC:
|
|
mov r0, #0x1
|
|
ldr r1, _02005FD8 ; =0x027E0000
|
|
lsl r0, r0, #0xe
|
|
add r0, r1, r0
|
|
cmp r2, r0
|
|
bhi _02005FD2
|
|
cmp r2, r1
|
|
blo _02005FD2
|
|
add sp, #0x2c
|
|
mov r0, #0x2
|
|
pop {pc}
|
|
_02005FD2:
|
|
mov r0, #0x0
|
|
add sp, #0x2c
|
|
pop {pc}
|
|
.balign 4
|
|
_02005FD8: .word 0x027E0000
|
|
|
|
thumb_func_start FUN_02005FDC
|
|
FUN_02005FDC: ; 0x02005FDC
|
|
push {r3-r7, lr}
|
|
add r4, r1, #0x0
|
|
mov r1, #0x0
|
|
mvn r1, r1
|
|
add r5, r0, #0x0
|
|
str r1, [sp, #0x0]
|
|
bl FUN_02006090
|
|
cmp r0, #0x0
|
|
bne _02005FF4
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_02005FF4:
|
|
add r0, r5, #0x0
|
|
bl FUN_02005F90
|
|
add r7, r0, #0x0
|
|
bl FUN_0200610C
|
|
add r3, r0, #0x0
|
|
mov r6, #0x0
|
|
add r1, r3, #0x0
|
|
_02006006:
|
|
ldr r0, [r1, #0x4]
|
|
cmp r0, #0x0
|
|
bne _02006018
|
|
lsl r1, r6, #0x3
|
|
add r2, r3, r1
|
|
mov r0, #0x1
|
|
str r0, [r2, #0x4]
|
|
str r5, [r3, r1]
|
|
b _02006020
|
|
_02006018:
|
|
add r6, r6, #0x1
|
|
add r1, #0x8
|
|
cmp r6, #0x8
|
|
blt _02006006
|
|
_02006020:
|
|
cmp r6, #0x8
|
|
blt _0200602C
|
|
bl ErrorHandling
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_0200602C:
|
|
sub r6, r7, #0x1
|
|
cmp r6, #0x1
|
|
bhi _0200603C
|
|
mov r0, #0x0
|
|
mvn r0, r0
|
|
blx FS_SetDefaultDMA
|
|
str r0, [sp, #0x0]
|
|
_0200603C:
|
|
cmp r4, #0x0
|
|
beq _0200604A
|
|
cmp r4, #0x1
|
|
beq _02006056
|
|
cmp r4, #0x2
|
|
beq _02006062
|
|
b _0200606E
|
|
_0200604A:
|
|
mov r0, #0x0
|
|
add r1, r5, #0x0
|
|
bl FUN_02006168
|
|
add r4, r0, #0x0
|
|
b _02006076
|
|
_02006056:
|
|
mov r0, #0x0
|
|
add r1, r5, #0x0
|
|
bl FUN_02006170
|
|
add r4, r0, #0x0
|
|
b _02006076
|
|
_02006062:
|
|
mov r0, #0x0
|
|
add r1, r5, #0x0
|
|
bl FUN_020061A8
|
|
add r4, r0, #0x0
|
|
b _02006076
|
|
_0200606E:
|
|
bl ErrorHandling
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_02006076:
|
|
cmp r6, #0x1
|
|
bhi _02006080
|
|
ldr r0, [sp, #0x0]
|
|
blx FS_SetDefaultDMA
|
|
_02006080:
|
|
cmp r4, #0x0
|
|
bne _0200608C
|
|
bl ErrorHandling
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_0200608C:
|
|
mov r0, #0x1
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start FUN_02006090
|
|
FUN_02006090: ; 0x02006090
|
|
push {r3-r7, lr}
|
|
sub sp, #0x10
|
|
add r1, sp, #0xc
|
|
add r2, sp, #0x8
|
|
add r4, r0, #0x0
|
|
bl FUN_02006130
|
|
cmp r0, #0x0
|
|
bne _020060A8
|
|
add sp, #0x10
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_020060A8:
|
|
add r0, r4, #0x0
|
|
bl FUN_02005F90
|
|
bl FUN_0200610C
|
|
add r5, r0, #0x0
|
|
mov r4, #0x0
|
|
add r6, sp, #0x4
|
|
add r7, sp, #0x0
|
|
_020060BA:
|
|
ldr r0, [r5, #0x4]
|
|
cmp r0, #0x1
|
|
bne _020060FC
|
|
ldr r0, [r5, #0x0]
|
|
add r1, r6, #0x0
|
|
add r2, r7, #0x0
|
|
bl FUN_02006130
|
|
cmp r0, #0x1
|
|
bne _020060FC
|
|
ldr r1, [sp, #0x4]
|
|
ldr r2, [sp, #0xc]
|
|
cmp r2, r1
|
|
blo _020060DC
|
|
ldr r0, [sp, #0x0]
|
|
cmp r2, r0
|
|
blo _020060F2
|
|
_020060DC:
|
|
ldr r3, [sp, #0x8]
|
|
cmp r3, r1
|
|
bls _020060E8
|
|
ldr r0, [sp, #0x0]
|
|
cmp r3, r0
|
|
bls _020060F2
|
|
_020060E8:
|
|
cmp r2, r1
|
|
bhi _020060FC
|
|
ldr r0, [sp, #0x0]
|
|
cmp r3, r0
|
|
blo _020060FC
|
|
_020060F2:
|
|
bl ErrorHandling
|
|
add sp, #0x10
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_020060FC:
|
|
add r4, r4, #0x1
|
|
add r5, #0x8
|
|
cmp r4, #0x8
|
|
blt _020060BA
|
|
mov r0, #0x1
|
|
add sp, #0x10
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_0200610C
|
|
FUN_0200610C: ; 0x0200610C
|
|
cmp r0, #0x0
|
|
beq _02006118
|
|
cmp r0, #0x1
|
|
beq _0200611C
|
|
cmp r0, #0x2
|
|
beq _02006120
|
|
_02006118:
|
|
ldr r0, _02006124 ; =0x021C45B0
|
|
bx lr
|
|
_0200611C:
|
|
ldr r0, _02006128 ; =0x021C45F0
|
|
bx lr
|
|
_02006120:
|
|
ldr r0, _0200612C ; =0x021C4630
|
|
bx lr
|
|
.balign 4
|
|
_02006124: .word 0x021C45B0
|
|
_02006128: .word 0x021C45F0
|
|
_0200612C: .word 0x021C4630
|
|
|
|
thumb_func_start FUN_02006130
|
|
FUN_02006130: ; 0x02006130
|
|
push {r4-r5, lr}
|
|
sub sp, #0x2c
|
|
add r3, r0, #0x0
|
|
add r5, r1, #0x0
|
|
add r4, r2, #0x0
|
|
add r0, sp, #0x0
|
|
mov r1, #0x0
|
|
add r2, r3, #0x0
|
|
blx FS_LoadOverlayInfo
|
|
cmp r0, #0x0
|
|
bne _02006152
|
|
bl ErrorHandling
|
|
add sp, #0x2c
|
|
mov r0, #0x0
|
|
pop {r4-r5, pc}
|
|
_02006152:
|
|
ldr r2, [sp, #0x4]
|
|
str r2, [r5, #0x0]
|
|
ldr r1, [sp, #0x8]
|
|
ldr r0, [sp, #0xc]
|
|
add r0, r1, r0
|
|
add r0, r2, r0
|
|
str r0, [r4, #0x0]
|
|
mov r0, #0x1
|
|
add sp, #0x2c
|
|
pop {r4-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02006168
|
|
FUN_02006168: ; 0x02006168
|
|
ldr r3, _0200616C ; =FS_LoadOverlay
|
|
bx r3
|
|
.balign 4
|
|
_0200616C: .word FS_LoadOverlay
|
|
|
|
thumb_func_start FUN_02006170
|
|
FUN_02006170: ; 0x02006170
|
|
push {lr}
|
|
sub sp, #0x2c
|
|
add r3, r0, #0x0
|
|
add r2, r1, #0x0
|
|
add r0, sp, #0x0
|
|
add r1, r3, #0x0
|
|
blx FS_LoadOverlayInfo
|
|
cmp r0, #0x0
|
|
bne _0200618A
|
|
add sp, #0x2c
|
|
mov r0, #0x0
|
|
pop {pc}
|
|
_0200618A:
|
|
add r0, sp, #0x0
|
|
blx FS_LoadOverlayImage
|
|
cmp r0, #0x0
|
|
bne _0200619A
|
|
add sp, #0x2c
|
|
mov r0, #0x0
|
|
pop {pc}
|
|
_0200619A:
|
|
add r0, sp, #0x0
|
|
blx FS_StartOverlay
|
|
mov r0, #0x1
|
|
add sp, #0x2c
|
|
pop {pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_020061A8
|
|
FUN_020061A8: ; 0x020061A8
|
|
push {lr}
|
|
sub sp, #0x74
|
|
add r3, r0, #0x0
|
|
add r2, r1, #0x0
|
|
add r0, sp, #0x0
|
|
add r1, r3, #0x0
|
|
blx FS_LoadOverlayInfo
|
|
cmp r0, #0x0
|
|
bne _020061C2
|
|
add sp, #0x74
|
|
mov r0, #0x0
|
|
pop {pc}
|
|
_020061C2:
|
|
add r0, sp, #0x2c
|
|
blx FS_InitFile
|
|
add r0, sp, #0x0
|
|
add r1, sp, #0x2c
|
|
blx FS_LoadOverlayImageAsync
|
|
add r0, sp, #0x2c
|
|
blx FS_WaitAsync
|
|
add r0, sp, #0x2c
|
|
blx FS_CloseFile
|
|
add r0, sp, #0x0
|
|
blx FS_StartOverlay
|
|
mov r0, #0x1
|
|
add sp, #0x74
|
|
pop {pc}
|
|
|
|
thumb_func_start FUN_020061E8
|
|
FUN_020061E8: ; 0x020061E8
|
|
push {r3-r7, lr}
|
|
add r5, r1, #0x0
|
|
add r6, r0, #0x0
|
|
add r7, r2, #0x0
|
|
cmp r5, #0x0
|
|
beq _0200620C
|
|
add r0, r3, #0x0
|
|
bl FUN_02016998
|
|
add r4, r0, #0x0
|
|
bne _02006202
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_02006202:
|
|
mov r1, #0x0
|
|
add r2, r5, #0x0
|
|
blx Call_FillMemWithValue
|
|
b _0200620E
|
|
_0200620C:
|
|
mov r4, #0x0
|
|
_0200620E:
|
|
add r0, r6, #0x0
|
|
add r1, r4, #0x0
|
|
add r2, r7, #0x0
|
|
bl FUN_0200CA44
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_0200621C
|
|
FUN_0200621C: ; 0x0200621C
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
bl FUN_0201B6C8
|
|
cmp r0, #0x0
|
|
beq _0200622C
|
|
bl FUN_02016A18
|
|
_0200622C:
|
|
add r0, r4, #0x0
|
|
bl FUN_0200CAB4
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_02006234
|
|
FUN_02006234: ; 0x02006234
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
add r4, r1, #0x0
|
|
add r0, r2, #0x0
|
|
mov r1, #0x28
|
|
bl FUN_02016998
|
|
add r3, r0, #0x0
|
|
add r2, r3, #0x0
|
|
ldmia r5!, {r0-r1}
|
|
stmia r2!, {r0-r1}
|
|
ldmia r5!, {r0-r1}
|
|
stmia r2!, {r0-r1}
|
|
mov r0, #0x0
|
|
str r0, [r3, #0x10]
|
|
str r0, [r3, #0x14]
|
|
str r4, [r3, #0x18]
|
|
str r0, [r3, #0x1c]
|
|
str r0, [r3, #0x20]
|
|
str r0, [r3, #0x24]
|
|
add r0, r3, #0x0
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start FUN_02006260
|
|
FUN_02006260: ; 0x02006260
|
|
ldr r3, _02006264 ; =FUN_02016A18
|
|
bx r3
|
|
.balign 4
|
|
_02006264: .word FUN_02016A18
|
|
|
|
thumb_func_start FUN_02006268
|
|
FUN_02006268: ; 0x02006268
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
add r0, r2, #0x0
|
|
bl FUN_02016998
|
|
str r0, [r4, #0x1c]
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start FUN_02006278
|
|
FUN_02006278: ; 0x02006278
|
|
ldr r0, [r0, #0x1c]
|
|
bx lr
|
|
|
|
thumb_func_start FUN_0200627C
|
|
FUN_0200627C: ; 0x0200627C
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x1c]
|
|
bl FUN_02016A18
|
|
mov r0, #0x0
|
|
str r0, [r4, #0x1c]
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start FUN_0200628C
|
|
FUN_0200628C: ; 0x0200628C
|
|
ldr r0, [r0, #0x18]
|
|
bx lr
|
|
|
|
thumb_func_start FUN_02006290
|
|
FUN_02006290: ; 0x02006290
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r1, [r4, #0x10]
|
|
cmp r1, #0x3
|
|
bhi _0200630E
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #0x6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_020062A6: ; jump table (using 16-bit offset)
|
|
.short _020062AE - _020062A6 - 2; case 0
|
|
.short _020062C2 - _020062A6 - 2; case 1
|
|
.short _020062DA - _020062A6 - 2; case 2
|
|
.short _020062F0 - _020062A6 - 2; case 3
|
|
_020062AE:
|
|
mov r1, #0x0
|
|
ldr r0, [r4, #0xc]
|
|
mvn r1, r1
|
|
cmp r0, r1
|
|
beq _020062BE
|
|
mov r1, #0x2
|
|
bl FUN_02005FDC
|
|
_020062BE:
|
|
mov r0, #0x1
|
|
str r0, [r4, #0x10]
|
|
_020062C2:
|
|
add r1, r4, #0x0
|
|
ldr r2, [r4, #0x0]
|
|
add r0, r4, #0x0
|
|
add r1, #0x14
|
|
blx r2
|
|
cmp r0, #0x1
|
|
bne _0200630E
|
|
mov r0, #0x2
|
|
str r0, [r4, #0x10]
|
|
mov r0, #0x0
|
|
str r0, [r4, #0x14]
|
|
b _0200630E
|
|
_020062DA:
|
|
add r1, r4, #0x0
|
|
ldr r2, [r4, #0x4]
|
|
add r1, #0x14
|
|
blx r2
|
|
cmp r0, #0x1
|
|
bne _0200630E
|
|
mov r0, #0x3
|
|
str r0, [r4, #0x10]
|
|
mov r0, #0x0
|
|
str r0, [r4, #0x14]
|
|
b _0200630E
|
|
_020062F0:
|
|
add r1, r4, #0x0
|
|
ldr r2, [r4, #0x8]
|
|
add r1, #0x14
|
|
blx r2
|
|
cmp r0, #0x1
|
|
bne _0200630E
|
|
mov r1, #0x0
|
|
ldr r0, [r4, #0xc]
|
|
mvn r1, r1
|
|
cmp r0, r1
|
|
beq _0200630A
|
|
bl FUN_02005F60
|
|
_0200630A:
|
|
mov r0, #0x1
|
|
pop {r4, pc}
|
|
_0200630E:
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
.balign 4
|