summaryrefslogtreecommitdiff
path: root/asm/unk_020023C0.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/unk_020023C0.s')
-rw-r--r--asm/unk_020023C0.s16680
1 files changed, 8340 insertions, 8340 deletions
diff --git a/asm/unk_020023C0.s b/asm/unk_020023C0.s
index ec0f13f1..cd02d807 100644
--- a/asm/unk_020023C0.s
+++ b/asm/unk_020023C0.s
@@ -1,8340 +1,8340 @@
- .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 FUN_020DE3F0
- 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 FUN_020DF4A4
- 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 FUN_020D5168
- mov r0, #0x2
- blx FUN_020D5150
- 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 FUN_020DF4A4
- 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 FUN_020DF4A4
- 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
+ .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