Files
pokediamond/asm/unk_020023C0.s
2020-04-23 14:38:30 +03:00

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