summaryrefslogtreecommitdiff
path: root/arm9/asm/unk_020023C0.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/asm/unk_020023C0.s')
-rw-r--r--arm9/asm/unk_020023C0.s8340
1 files changed, 8340 insertions, 0 deletions
diff --git a/arm9/asm/unk_020023C0.s b/arm9/asm/unk_020023C0.s
new file mode 100644
index 00000000..2024d9d7
--- /dev/null
+++ b/arm9/asm/unk_020023C0.s
@@ -0,0 +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 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 GX_LoadBGPltt
+ b _020038A4
+_020037B2:
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx GXS_LoadBGPltt
+ b _020038A4
+_020037BE:
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx GX_LoadOBJPltt
+ b _020038A4
+_020037CA:
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx GXS_LoadOBJPltt
+ b _020038A4
+_020037D6:
+ blx GX_BeginLoadBGExtPltt
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx GX_LoadBGExtPltt
+ blx GX_EndLoadBGExtPltt
+ b _020038A4
+_020037EA:
+ blx GX_BeginLoadBGExtPltt
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ add r1, r7, #0x0
+ blx GX_LoadBGExtPltt
+ blx GX_EndLoadBGExtPltt
+ b _020038A4
+_020037FE:
+ blx GX_BeginLoadBGExtPltt
+ mov r1, #0x1
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ lsl r1, r1, #0xe
+ blx GX_LoadBGExtPltt
+ blx GX_EndLoadBGExtPltt
+ b _020038A4
+_02003814:
+ blx GX_BeginLoadBGExtPltt
+ mov r1, #0x6
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ lsl r1, r1, #0xc
+ blx GX_LoadBGExtPltt
+ blx GX_EndLoadBGExtPltt
+ b _020038A4
+_0200382A:
+ blx GXS_BeginLoadBGExtPltt
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx GXS_LoadBGExtPltt
+ blx GXS_EndLoadBGExtPltt
+ b _020038A4
+_0200383E:
+ blx GXS_BeginLoadBGExtPltt
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ add r1, r7, #0x0
+ blx GXS_LoadBGExtPltt
+ blx GXS_EndLoadBGExtPltt
+ b _020038A4
+_02003852:
+ blx GXS_BeginLoadBGExtPltt
+ mov r1, #0x1
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ lsl r1, r1, #0xe
+ blx GXS_LoadBGExtPltt
+ blx GXS_EndLoadBGExtPltt
+ b _020038A4
+_02003868:
+ blx GXS_BeginLoadBGExtPltt
+ mov r1, #0x6
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ lsl r1, r1, #0xc
+ blx GXS_LoadBGExtPltt
+ blx GXS_EndLoadBGExtPltt
+ b _020038A4
+_0200387E:
+ blx GX_BeginLoadOBJExtPltt
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx GX_LoadOBJExtPltt
+ blx GX_EndLoadOBJExtPltt
+ b _020038A4
+_02003892:
+ blx GXS_BeginLoadOBJExtPltt
+ ldr r0, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ mov r1, #0x0
+ blx GXS_LoadOBJExtPltt
+ blx GXS_EndLoadOBJExtPltt
+_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