summaryrefslogtreecommitdiff
path: root/arm9/asm/unk_02000E0C.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/asm/unk_02000E0C.s')
-rw-r--r--arm9/asm/unk_02000E0C.s2758
1 files changed, 2758 insertions, 0 deletions
diff --git a/arm9/asm/unk_02000E0C.s b/arm9/asm/unk_02000E0C.s
new file mode 100644
index 00000000..50b0dace
--- /dev/null
+++ b/arm9/asm/unk_02000E0C.s
@@ -0,0 +1,2758 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ thumb_func_start FUN_02000E0C
+FUN_02000E0C: ; 0x02000E0C
+ push {r3, lr}
+ ldr r0, _02000E74 ; =0x02106FA0
+ ldr r1, [r0, #0xc]
+ cmp r1, #0x0
+ bne _02000E4A
+ ldr r1, [r0, #0x14]
+ cmp r1, #0x0
+ beq _02000E70
+ mov r1, #0x0
+ ldr r0, [r0, #0x10]
+ mvn r1, r1
+ cmp r0, r1
+ beq _02000E2C
+ mov r1, #0x0
+ bl FUN_02005FDC
+_02000E2C:
+ ldr r0, _02000E74 ; =0x02106FA0
+ mov r2, #0x0
+ ldr r1, [r0, #0x10]
+ str r1, [r0, #0x8]
+ ldr r0, [r0, #0x14]
+ ldr r1, _02000E78 ; =0x02106FB8
+ bl FUN_02006234
+ ldr r1, _02000E74 ; =0x02106FA0
+ str r0, [r1, #0xc]
+ mov r0, #0x0
+ mvn r0, r0
+ str r0, [r1, #0x10]
+ mov r0, #0x0
+ str r0, [r1, #0x14]
+_02000E4A:
+ ldr r0, _02000E74 ; =0x02106FA0
+ ldr r0, [r0, #0xc]
+ bl FUN_02006290
+ cmp r0, #0x0
+ beq _02000E70
+ ldr r0, _02000E74 ; =0x02106FA0
+ ldr r0, [r0, #0xc]
+ bl FUN_02006260
+ ldr r0, _02000E74 ; =0x02106FA0
+ mov r1, #0x0
+ str r1, [r0, #0xc]
+ ldr r0, [r0, #0x8]
+ sub r1, r1, #0x1
+ cmp r0, r1
+ beq _02000E70
+ bl FUN_02005F60
+_02000E70:
+ pop {r3, pc}
+ nop
+_02000E74: .word 0x02106FA0
+_02000E78: .word 0x02106FB8
+
+ thumb_func_start FUN_02000E7C
+FUN_02000E7C: ; 0x02000E7C
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, _02000E98 ; =0x02106FA0
+ add r4, r1, #0x0
+ ldr r0, [r0, #0x14]
+ cmp r0, #0x0
+ beq _02000E8E
+ bl ErrorHandling
+_02000E8E:
+ ldr r0, _02000E98 ; =0x02106FA0
+ str r5, [r0, #0x10]
+ str r4, [r0, #0x14]
+ pop {r3-r5, pc}
+ nop
+_02000E98: .word 0x02106FA0
+
+ thumb_func_start FUN_02000E9C
+FUN_02000E9C: ; 0x02000E9C
+ push {r3, lr}
+ bl FUN_0202FB80
+ mov r0, #0x1
+ add r1, r0, #0x0
+ blx OS_WaitIrq
+ ldr r0, _02000EC4 ; =0x021C48B8
+ ldr r1, [r0, #0x2c]
+ add r1, r1, #0x1
+ str r1, [r0, #0x2c]
+ mov r1, #0x0
+ str r1, [r0, #0x30]
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _02000EC0
+ ldr r0, [r0, #0x4]
+ blx r1
+_02000EC0:
+ pop {r3, pc}
+ nop
+_02000EC4: .word 0x021C48B8
+
+ thumb_func_start FUN_02000EC8
+FUN_02000EC8: ; 0x02000EC8
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02033678
+ cmp r0, #0x0
+ beq _02000EE2
+ blx CARD_TryWaitBackupAsync
+ cmp r0, #0x1
+ bne _02000EE2
+ add r0, r4, #0x0
+ blx OS_ResetSystem
+_02000EE2:
+ bl FUN_02000E9C
+ pop {r4, pc}
+
+ thumb_func_start FUN_02000EE8
+FUN_02000EE8: ; 0x02000EE8
+ push {r3, lr}
+ bl FUN_020335B8
+ add r1, r0, #0x0
+ cmp r1, #0x1
+ beq _02000EFE
+ cmp r1, #0x2
+ beq _02000F06
+ cmp r1, #0x3
+ beq _02000F0E
+ pop {r3, pc}
+_02000EFE:
+ mov r0, #0x1
+ bl FUN_02000F4C
+ pop {r3, pc}
+_02000F06:
+ mov r0, #0x0
+ bl FUN_02000F4C
+ pop {r3, pc}
+_02000F0E:
+ mov r0, #0x1
+ bl FUN_02000F4C
+ pop {r3, pc}
+ .balign 4
+
+ thumb_func_start FUN_02000F18
+FUN_02000F18: ; 0x02000F18
+ push {r4, lr}
+ ldr r1, _02000F48 ; =0x00007FFF
+ add r4, r0, #0x0
+ mov r0, #0x0
+ bl FUN_0200E3A0
+ ldr r1, _02000F48 ; =0x00007FFF
+ mov r0, #0x1
+ bl FUN_0200E3A0
+ bl FUN_02032DAC
+ cmp r0, #0x0
+ beq _02000F3C
+ bl FUN_020225F8
+ bl FUN_0202287C
+_02000F3C:
+ bl FUN_02000FE8
+ add r0, r4, #0x0
+ bl FUN_02000EC8
+ b _02000F3C
+ .balign 4
+_02000F48: .word 0x00007FFF
+
+ thumb_func_start FUN_02000F4C
+FUN_02000F4C: ; 0x02000F4C
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ cmp r1, #0x3
+ bne _02000F60
+ mov r0, #0x0
+ mov r1, #0x3
+ add r2, r0, #0x0
+ bl FUN_02033F70
+ b _02000F7A
+_02000F60:
+ cmp r6, #0x0
+ bne _02000F70
+ mov r0, #0x0
+ mov r1, #0x2
+ add r2, r0, #0x0
+ bl FUN_02033F70
+ b _02000F7A
+_02000F70:
+ mov r0, #0x0
+ add r1, r0, #0x0
+ add r2, r0, #0x0
+ bl FUN_02033F70
+_02000F7A:
+ bl FUN_02032DAC
+ ldr r5, _02000FA0 ; =0x021C48B8
+ mov r4, #0x1
+_02000F82:
+ bl FUN_02000FE8
+ bl FUN_02016464
+ ldr r0, [r5, #0x48]
+ tst r0, r4
+ bne _02000F96
+ bl FUN_02000E9C
+ b _02000F82
+_02000F96:
+ add r0, r6, #0x0
+ bl FUN_02000F18
+ pop {r4-r6, pc}
+ nop
+_02000FA0: .word 0x021C48B8
+
+ thumb_func_start FUN_02000FA4
+FUN_02000FA4: ; 0x02000FA4
+ push {r4-r5, lr}
+ sub sp, #0x1c
+ add r0, sp, #0xc
+ add r1, sp, #0x0
+ bl FUN_0201265C
+ ldr r0, _02000FE4 ; =0x021C48B8
+ ldr r3, [sp, #0x10]
+ ldr r4, [r0, #0x2c]
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x8]
+ ldr r5, [sp, #0x14]
+ add r0, r1, r0
+ lsl r2, r0, #0x18
+ ldr r0, [sp, #0x0]
+ lsl r3, r3, #0x8
+ lsl r1, r0, #0x10
+ mul r3, r5
+ ldr r0, [sp, #0xc]
+ lsl r3, r3, #0x10
+ add r0, r0, r3
+ add r0, r1, r0
+ add r5, r2, r0
+ add r0, r4, r5
+ bl FUN_0201BA1C
+ add r0, r4, r5
+ bl FUN_0201B9E0
+ add sp, #0x1c
+ pop {r4-r5, pc}
+ nop
+_02000FE4: .word 0x021C48B8
+
+ thumb_func_start FUN_02000FE8
+FUN_02000FE8: ; 0x02000FE8
+ push {r3-r7, lr}
+ sub sp, #0x8
+ ldr r0, _0200109C ; =0x027FFFA8
+ ldrh r1, [r0, #0x0]
+ mov r0, #0x2
+ lsl r0, r0, #0xe
+ and r0, r1
+ asr r0, r0, #0xf
+ beq _0200107E
+ ldr r0, _020010A0 ; =0x021C4918
+ ldrb r0, [r0, #0x7]
+ cmp r0, #0x0
+ bne _02001064
+ bl FUN_0201CE04
+ blx CTRDG_IsPulledOut
+ cmp r0, #0x1
+ bne _02001014
+ ldr r0, _020010A4 ; =0x02106FA0
+ mov r1, #0x1
+ str r1, [r0, #0x4]
+_02001014:
+ ldr r6, _020010A4 ; =0x02106FA0
+ mov r0, #0xc
+ ldr r1, [r6, #0x4]
+ ldr r4, _0200109C ; =0x027FFFA8
+ mov r2, #0x10
+ add r5, r0, #0x0
+ ldr r7, _020010A0 ; =0x021C4918
+ orr r5, r2
+_02001024:
+ ldrb r2, [r7, #0x6]
+ mov r0, #0xc
+ cmp r2, #0x0
+ beq _02001032
+ cmp r1, #0x0
+ bne _02001032
+ add r0, r5, #0x0
+_02001032:
+ mov r1, #0x0
+ add r2, r1, #0x0
+ blx PM_GoSleepMode
+ blx CARD_IsPulledOut
+ cmp r0, #0x0
+ beq _02001048
+ blx PM_ForceToPowerOff
+ b _0200105C
+_02001048:
+ ldrh r1, [r4, #0x0]
+ mov r0, #0x2
+ lsl r0, r0, #0xe
+ and r0, r1
+ asr r0, r0, #0xf
+ beq _0200105C
+ mov r0, #0x1
+ str r0, [r6, #0x4]
+ add r1, r0, #0x0
+ b _02001024
+_0200105C:
+ bl FUN_0201CDD0
+ add sp, #0x8
+ pop {r3-r7, pc}
+_02001064:
+ add r0, sp, #0x4
+ add r1, sp, #0x0
+ blx PM_GetBackLight
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x1
+ bne _02001096
+ mov r0, #0x2
+ mov r1, #0x0
+ blx PM_SetBackLight
+ add sp, #0x8
+ pop {r3-r7, pc}
+_0200107E:
+ add r0, sp, #0x4
+ add r1, sp, #0x0
+ blx PM_GetBackLight
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ bne _02001096
+ ldr r1, _020010A4 ; =0x02106FA0
+ mov r0, #0x2
+ ldr r1, [r1, #0x0]
+ blx PM_SetBackLight
+_02001096:
+ add sp, #0x8
+ pop {r3-r7, pc}
+ nop
+_0200109C: .word 0x027FFFA8
+_020010A0: .word 0x021C4918
+_020010A4: .word 0x02106FA0
+
+ thumb_func_start FUN_020010A8
+FUN_020010A8: ; 0x020010A8
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r0, r3, #0x0
+ mov r1, #0x38
+ add r7, r2, #0x0
+ str r3, [sp, #0x0]
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r3, r5, #0x0
+ add r2, r4, #0x0
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldr r0, [sp, #0x0]
+ bl FUN_02013690
+ str r0, [r4, #0x28]
+ strh r6, [r4, #0x2c]
+ add r1, r4, #0x0
+ strh r7, [r4, #0x2e]
+ mov r0, #0x0
+ add r1, #0x30
+ strb r0, [r1, #0x0]
+ add r1, r4, #0x0
+ add r1, #0x31
+ strb r0, [r1, #0x0]
+ add r1, r4, #0x0
+ mov r2, #0xff
+ add r1, #0x32
+ strb r2, [r1, #0x0]
+ add r1, r4, #0x0
+ add r1, #0x33
+ strb r0, [r1, #0x0]
+ add r1, r4, #0x0
+ ldr r0, [sp, #0x0]
+ add r1, #0x34
+ strb r0, [r1, #0x0]
+ add r0, r4, #0x0
+ ldrb r1, [r4, #0x17]
+ add r0, #0x20
+ ldrb r2, [r0, #0x0]
+ lsl r1, r1, #0x18
+ mov r0, #0xf
+ lsr r3, r1, #0x1c
+ mov r1, #0xf
+ bic r2, r0
+ and r3, r1
+ orr r3, r2
+ add r2, r4, #0x0
+ add r2, #0x20
+ strb r3, [r2, #0x0]
+ add r2, r4, #0x0
+ add r2, #0x20
+ ldrb r2, [r2, #0x0]
+ mov r3, #0xf0
+ bic r2, r3
+ ldrb r3, [r4, #0x18]
+ lsl r3, r3, #0x1c
+ lsr r3, r3, #0x1c
+ lsl r3, r3, #0x1c
+ lsr r3, r3, #0x18
+ orr r3, r2
+ add r2, r4, #0x0
+ add r2, #0x20
+ strb r3, [r2, #0x0]
+ add r2, r4, #0x0
+ add r2, #0x21
+ ldrb r2, [r2, #0x0]
+ bic r2, r0
+ ldrb r0, [r4, #0x18]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ and r0, r1
+ add r1, r2, #0x0
+ orr r1, r0
+ add r0, r4, #0x0
+ add r0, #0x21
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x22
+ ldrb r0, [r0, #0x0]
+ mov r1, #0x3f
+ bic r0, r1
+ ldrh r1, [r4, #0x1a]
+ lsl r1, r1, #0x1d
+ lsr r1, r1, #0x1d
+ lsl r1, r1, #0x18
+ lsr r2, r1, #0x18
+ mov r1, #0x3f
+ and r1, r2
+ orr r1, r0
+ add r0, r4, #0x0
+ add r0, #0x22
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x24
+ ldrb r0, [r0, #0x0]
+ mov r1, #0x7f
+ bic r0, r1
+ ldrh r1, [r4, #0x1a]
+ lsl r1, r1, #0x11
+ lsr r1, r1, #0x1a
+ lsl r1, r1, #0x18
+ lsr r2, r1, #0x18
+ mov r1, #0x7f
+ and r1, r2
+ orr r1, r0
+ add r0, r4, #0x0
+ add r0, #0x24
+ strb r1, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x24
+ ldrb r1, [r0, #0x0]
+ mov r0, #0x80
+ bic r1, r0
+ add r0, r4, #0x0
+ add r0, #0x24
+ strb r1, [r0, #0x0]
+ ldrh r1, [r4, #0x10]
+ ldrh r0, [r4, #0x12]
+ cmp r1, r0
+ bhs _020011AC
+ strh r1, [r4, #0x12]
+_020011AC:
+ ldrb r2, [r4, #0x18]
+ ldr r0, [r4, #0x28]
+ lsl r1, r2, #0x1c
+ lsr r1, r1, #0x1c
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldrb r1, [r4, #0x17]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x1c
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1c
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x18
+ lsr r1, r1, #0x8
+ lsr r2, r2, #0x10
+ orr r1, r2
+ orr r1, r3
+ bl FUN_020136E0
+ ldrb r1, [r4, #0x18]
+ ldr r0, [r4, #0xc]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ bl FUN_02019620
+ ldrh r1, [r4, #0x2c]
+ ldrh r3, [r4, #0x12]
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_02001714
+ add r0, r4, #0x0
+ bl FUN_020017AC
+ add r0, r4, #0x0
+ mov r1, #0x1
+ bl FUN_02001B64
+ ldr r0, [r5, #0xc]
+ bl FUN_020191D0
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02001204
+FUN_02001204: ; 0x02001204
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r1, r4, #0x0
+ ldr r6, _020012FC ; =0x021C48B8
+ mov r3, #0x0
+ add r1, #0x33
+ strb r3, [r1, #0x0]
+ ldr r1, [r6, #0x48]
+ mov r2, #0x1
+ add r5, r1, #0x0
+ tst r5, r2
+ beq _0200122C
+ ldrh r1, [r4, #0x2c]
+ ldrh r0, [r4, #0x2e]
+ ldr r2, [r4, #0x0]
+ add r0, r1, r0
+ lsl r0, r0, #0x3
+ add r0, r2, r0
+ ldr r0, [r0, #0x4]
+ pop {r4-r6, pc}
+_0200122C:
+ mov r5, #0x2
+ tst r1, r5
+ beq _02001236
+ sub r0, r5, #0x4
+ pop {r4-r6, pc}
+_02001236:
+ ldr r5, [r6, #0x4c]
+ mov r1, #0x40
+ tst r1, r5
+ beq _02001254
+ add r1, r2, #0x0
+ bl FUN_02001AA4
+ cmp r0, #0x0
+ bne _0200124E
+ mov r0, #0x1
+ add r4, #0x33
+ strb r0, [r4, #0x0]
+_0200124E:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001254:
+ mov r1, #0x80
+ add r3, r5, #0x0
+ tst r3, r1
+ beq _02001274
+ add r1, r2, #0x0
+ add r3, r2, #0x0
+ bl FUN_02001AA4
+ cmp r0, #0x0
+ bne _0200126E
+ mov r0, #0x2
+ add r4, #0x33
+ strb r0, [r4, #0x0]
+_0200126E:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001274:
+ ldrh r0, [r4, #0x1a]
+ lsl r0, r0, #0x17
+ lsr r0, r0, #0x1e
+ beq _02001284
+ cmp r0, #0x1
+ beq _0200128A
+ cmp r0, #0x2
+ beq _0200129C
+_02001284:
+ mov r0, #0x0
+ add r1, r0, #0x0
+ b _020012AC
+_0200128A:
+ mov r0, #0x20
+ mov r1, #0x10
+ and r0, r5
+ and r1, r5
+ lsl r0, r0, #0x10
+ lsl r1, r1, #0x10
+ lsr r0, r0, #0x10
+ lsr r1, r1, #0x10
+ b _020012AC
+_0200129C:
+ lsl r0, r1, #0x2
+ add r1, #0x80
+ and r0, r5
+ and r1, r5
+ lsl r0, r0, #0x10
+ lsl r1, r1, #0x10
+ lsr r0, r0, #0x10
+ lsr r1, r1, #0x10
+_020012AC:
+ cmp r0, #0x0
+ beq _020012D0
+ ldrh r2, [r4, #0x12]
+ add r0, r4, #0x0
+ mov r1, #0x1
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r3, #0x0
+ bl FUN_02001AA4
+ cmp r0, #0x0
+ bne _020012CA
+ mov r0, #0x3
+ add r4, #0x33
+ strb r0, [r4, #0x0]
+_020012CA:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_020012D0:
+ cmp r1, #0x0
+ beq _020012F4
+ ldrh r2, [r4, #0x12]
+ mov r1, #0x1
+ add r0, r4, #0x0
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ add r3, r1, #0x0
+ bl FUN_02001AA4
+ cmp r0, #0x0
+ bne _020012EE
+ mov r0, #0x4
+ add r4, #0x33
+ strb r0, [r4, #0x0]
+_020012EE:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_020012F4:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+ nop
+_020012FC: .word 0x021C48B8
+
+ thumb_func_start FUN_02001300
+FUN_02001300: ; 0x02001300
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r1, #0x0
+ beq _0200130C
+ ldrh r0, [r4, #0x2c]
+ strh r0, [r1, #0x0]
+_0200130C:
+ cmp r2, #0x0
+ beq _02001314
+ ldrh r0, [r4, #0x2e]
+ strh r0, [r2, #0x0]
+_02001314:
+ ldr r0, [r4, #0x28]
+ bl FUN_020136C0
+ add r0, r4, #0x0
+ add r0, #0x34
+ ldrb r0, [r0, #0x0]
+ add r1, r4, #0x0
+ bl FUN_02016A8C
+ pop {r4, pc}
+
+ thumb_func_start FUN_02001328
+FUN_02001328: ; 0x02001328
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldrb r1, [r4, #0x18]
+ ldr r0, [r4, #0xc]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ bl FUN_02019620
+ ldrh r1, [r4, #0x2c]
+ ldrh r3, [r4, #0x12]
+ add r0, r4, #0x0
+ mov r2, #0x0
+ bl FUN_02001714
+ add r0, r4, #0x0
+ bl FUN_020017AC
+ ldr r0, [r4, #0xc]
+ bl FUN_020191D0
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02001354
+FUN_02001354: ; 0x02001354
+ push {r4-r6, lr}
+ add r4, r0, #0x0
+ add r6, r1, #0x0
+ beq _0200136E
+ add r5, r4, #0x0
+ ldmia r6!, {r0-r1}
+ stmia r5!, {r0-r1}
+ ldmia r6!, {r0-r1}
+ stmia r5!, {r0-r1}
+ ldmia r6!, {r0-r1}
+ stmia r5!, {r0-r1}
+ ldmia r6!, {r0-r1}
+ stmia r5!, {r0-r1}
+_0200136E:
+ strh r2, [r4, #0x2c]
+ add r0, r4, #0x0
+ strh r3, [r4, #0x2e]
+ mov r3, #0x0
+ add r0, #0x30
+ strb r3, [r0, #0x0]
+ add r0, r4, #0x0
+ add r0, #0x31
+ add r1, sp, #0x0
+ strb r3, [r0, #0x0]
+ ldrh r0, [r1, #0x14]
+ cmp r0, #0x40
+ bne _02001398
+ ldrh r1, [r1, #0x10]
+ add r0, r4, #0x0
+ mov r2, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02001AA4
+ b _020013AC
+_02001398:
+ cmp r0, #0x80
+ bne _020013AC
+ ldrh r1, [r1, #0x10]
+ mov r2, #0x1
+ add r0, r4, #0x0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r3, r2, #0x0
+ bl FUN_02001AA4
+_020013AC:
+ ldr r1, [sp, #0x18]
+ cmp r1, #0x0
+ beq _020013B6
+ ldrh r0, [r4, #0x2c]
+ strh r0, [r1, #0x0]
+_020013B6:
+ ldr r1, [sp, #0x1c]
+ cmp r1, #0x0
+ beq _020013C0
+ ldrh r0, [r4, #0x2e]
+ strh r0, [r1, #0x0]
+_020013C0:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_020013C8
+FUN_020013C8: ; 0x020013C8
+ push {r4, lr}
+ sub sp, #0x10
+ mov r4, #0x0
+ str r4, [sp, #0x0]
+ add r4, sp, #0x8
+ ldrh r4, [r4, #0x10]
+ str r4, [sp, #0x4]
+ ldr r4, [sp, #0x1c]
+ str r4, [sp, #0x8]
+ ldr r4, [sp, #0x20]
+ str r4, [sp, #0xc]
+ bl FUN_02001354
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020013E8
+FUN_020013E8: ; 0x020013E8
+ push {r3-r6}
+ add r4, r0, #0x0
+ add r4, #0x20
+ ldrb r6, [r4, #0x0]
+ mov r4, #0xf
+ mov r5, #0xf
+ bic r6, r4
+ and r1, r5
+ orr r6, r1
+ add r1, r0, #0x0
+ add r1, #0x20
+ strb r6, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x20
+ lsl r2, r2, #0x1c
+ ldrb r1, [r1, #0x0]
+ mov r6, #0xf0
+ lsr r2, r2, #0x18
+ bic r1, r6
+ orr r2, r1
+ add r1, r0, #0x0
+ add r1, #0x20
+ strb r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x21
+ ldrb r2, [r1, #0x0]
+ add r1, r3, #0x0
+ and r1, r5
+ bic r2, r4
+ orr r2, r1
+ add r1, r0, #0x0
+ add r1, #0x21
+ strb r2, [r1, #0x0]
+ add r1, r0, #0x0
+ add r1, #0x24
+ ldrb r2, [r1, #0x0]
+ mov r1, #0x80
+ add r0, #0x24
+ orr r1, r2
+ strb r1, [r0, #0x0]
+ pop {r3-r6}
+ bx lr
+
+ thumb_func_start FUN_0200143C
+FUN_0200143C: ; 0x0200143C
+ ldrh r2, [r0, #0x2c]
+ ldrh r0, [r0, #0x2e]
+ add r0, r2, r0
+ strh r0, [r1, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02001448
+FUN_02001448: ; 0x02001448
+ cmp r1, #0x0
+ beq _02001450
+ ldrh r3, [r0, #0x2c]
+ strh r3, [r1, #0x0]
+_02001450:
+ cmp r2, #0x0
+ beq _02001458
+ ldrh r0, [r0, #0x2e]
+ strh r0, [r2, #0x0]
+_02001458:
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0200145C
+FUN_0200145C: ; 0x0200145C
+ add r0, #0x33
+ ldrb r0, [r0, #0x0]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02001464
+FUN_02001464: ; 0x02001464
+ ldr r2, [r0, #0x0]
+ lsl r0, r1, #0x3
+ add r0, r2, r0
+ ldr r0, [r0, #0x4]
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_02001470
+FUN_02001470: ; 0x02001470
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r1, #0x13
+ bhi _02001532
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02001484: ; jump table (using 16-bit offset)
+ .short _020014AC - _02001484 - 2; case 0
+ .short _020014B0 - _02001484 - 2; case 1
+ .short _020014B4 - _02001484 - 2; case 2
+ .short _020014B8 - _02001484 - 2; case 3
+ .short _02001532 - _02001484 - 2; case 4
+ .short _020014BC - _02001484 - 2; case 5
+ .short _020014C0 - _02001484 - 2; case 6
+ .short _020014C4 - _02001484 - 2; case 7
+ .short _020014C8 - _02001484 - 2; case 8
+ .short _020014D0 - _02001484 - 2; case 9
+ .short _020014EA - _02001484 - 2; case 10
+ .short _020014F2 - _02001484 - 2; case 11
+ .short _020014FA - _02001484 - 2; case 12
+ .short _02001502 - _02001484 - 2; case 13
+ .short _0200150A - _02001484 - 2; case 14
+ .short _02001512 - _02001484 - 2; case 15
+ .short _0200151A - _02001484 - 2; case 16
+ .short _02001522 - _02001484 - 2; case 17
+ .short _0200152A - _02001484 - 2; case 18
+ .short _0200152E - _02001484 - 2; case 19
+_020014AC:
+ ldr r0, [r4, #0x4]
+ pop {r4, pc}
+_020014B0:
+ ldr r0, [r4, #0x8]
+ pop {r4, pc}
+_020014B4:
+ ldrh r0, [r4, #0x10]
+ pop {r4, pc}
+_020014B8:
+ ldrh r0, [r4, #0x12]
+ pop {r4, pc}
+_020014BC:
+ ldrb r0, [r4, #0x14]
+ pop {r4, pc}
+_020014C0:
+ ldrb r0, [r4, #0x15]
+ pop {r4, pc}
+_020014C4:
+ ldrb r0, [r4, #0x16]
+ pop {r4, pc}
+_020014C8:
+ ldrb r0, [r4, #0x17]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ pop {r4, pc}
+_020014D0:
+ ldrh r0, [r4, #0x1a]
+ mov r1, #0x1
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1a
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02002E4C
+ ldrh r1, [r4, #0x1a]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x1c
+ add r0, r1, r0
+ pop {r4, pc}
+_020014EA:
+ ldrb r0, [r4, #0x17]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ pop {r4, pc}
+_020014F2:
+ ldrb r0, [r4, #0x18]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ pop {r4, pc}
+_020014FA:
+ ldrb r0, [r4, #0x18]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ pop {r4, pc}
+_02001502:
+ ldrh r0, [r4, #0x1a]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1d
+ pop {r4, pc}
+_0200150A:
+ ldrh r0, [r4, #0x1a]
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x1c
+ pop {r4, pc}
+_02001512:
+ ldrh r0, [r4, #0x1a]
+ lsl r0, r0, #0x17
+ lsr r0, r0, #0x1e
+ pop {r4, pc}
+_0200151A:
+ ldrh r0, [r4, #0x1a]
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1a
+ pop {r4, pc}
+_02001522:
+ ldrh r0, [r4, #0x1a]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x1f
+ pop {r4, pc}
+_0200152A:
+ ldr r0, [r4, #0xc]
+ pop {r4, pc}
+_0200152E:
+ ldr r0, [r4, #0x1c]
+ pop {r4, pc}
+_02001532:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+
+ thumb_func_start FUN_02001538
+FUN_02001538: ; 0x02001538
+ cmp r1, #0x13
+ bls _0200153E
+ b _02001648
+_0200153E:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0200154A: ; jump table (using 16-bit offset)
+ .short _02001572 - _0200154A - 2; case 0
+ .short _02001576 - _0200154A - 2; case 1
+ .short _0200157A - _0200154A - 2; case 2
+ .short _0200157E - _0200154A - 2; case 3
+ .short _02001648 - _0200154A - 2; case 4
+ .short _02001582 - _0200154A - 2; case 5
+ .short _02001586 - _0200154A - 2; case 6
+ .short _0200158A - _0200154A - 2; case 7
+ .short _0200158E - _0200154A - 2; case 8
+ .short _02001648 - _0200154A - 2; case 9
+ .short _020015A2 - _0200154A - 2; case 10
+ .short _020015B6 - _0200154A - 2; case 11
+ .short _020015CA - _0200154A - 2; case 12
+ .short _020015DE - _0200154A - 2; case 13
+ .short _020015F2 - _0200154A - 2; case 14
+ .short _02001606 - _0200154A - 2; case 15
+ .short _0200161A - _0200154A - 2; case 16
+ .short _0200162E - _0200154A - 2; case 17
+ .short _02001642 - _0200154A - 2; case 18
+ .short _02001646 - _0200154A - 2; case 19
+_02001572:
+ str r2, [r0, #0x4]
+ bx lr
+_02001576:
+ str r2, [r0, #0x8]
+ bx lr
+_0200157A:
+ strh r2, [r0, #0x10]
+ bx lr
+_0200157E:
+ strh r2, [r0, #0x12]
+ bx lr
+_02001582:
+ strb r2, [r0, #0x14]
+ bx lr
+_02001586:
+ strb r2, [r0, #0x15]
+ bx lr
+_0200158A:
+ strb r2, [r0, #0x16]
+ bx lr
+_0200158E:
+ ldrb r3, [r0, #0x17]
+ mov r1, #0xf
+ bic r3, r1
+ lsl r1, r2, #0x18
+ lsr r2, r1, #0x18
+ mov r1, #0xf
+ and r1, r2
+ orr r1, r3
+ strb r1, [r0, #0x17]
+ bx lr
+_020015A2:
+ ldrb r3, [r0, #0x17]
+ mov r1, #0xf0
+ bic r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x18
+ orr r1, r3
+ strb r1, [r0, #0x17]
+ bx lr
+_020015B6:
+ ldrb r3, [r0, #0x18]
+ mov r1, #0xf
+ bic r3, r1
+ lsl r1, r2, #0x18
+ lsr r2, r1, #0x18
+ mov r1, #0xf
+ and r1, r2
+ orr r1, r3
+ strb r1, [r0, #0x18]
+ bx lr
+_020015CA:
+ ldrb r3, [r0, #0x18]
+ mov r1, #0xf0
+ bic r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x18
+ orr r1, r3
+ strb r1, [r0, #0x18]
+ bx lr
+_020015DE:
+ ldrh r3, [r0, #0x1a]
+ mov r1, #0x7
+ bic r3, r1
+ lsl r1, r2, #0x18
+ lsr r2, r1, #0x18
+ mov r1, #0x7
+ and r1, r2
+ orr r1, r3
+ strh r1, [r0, #0x1a]
+ bx lr
+_020015F2:
+ ldrh r3, [r0, #0x1a]
+ mov r1, #0x78
+ bic r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x19
+ orr r1, r3
+ strh r1, [r0, #0x1a]
+ bx lr
+_02001606:
+ ldrh r3, [r0, #0x1a]
+ ldr r1, _0200164C ; =0xFFFFFE7F
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1e
+ lsr r1, r1, #0x17
+ orr r1, r3
+ strh r1, [r0, #0x1a]
+ bx lr
+_0200161A:
+ ldrh r3, [r0, #0x1a]
+ ldr r1, _02001650 ; =0xFFFF81FF
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x11
+ orr r1, r3
+ strh r1, [r0, #0x1a]
+ bx lr
+_0200162E:
+ ldrh r3, [r0, #0x1a]
+ ldr r1, _02001654 ; =0xFFFF7FFF
+ and r3, r1
+ lsl r1, r2, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1f
+ lsr r1, r1, #0x10
+ orr r1, r3
+ strh r1, [r0, #0x1a]
+ bx lr
+_02001642:
+ str r2, [r0, #0xc]
+ bx lr
+_02001646:
+ str r2, [r0, #0x1c]
+_02001648:
+ bx lr
+ nop
+_0200164C: .word 0xFFFFFE7F
+_02001650: .word 0xFFFF81FF
+_02001654: .word 0xFFFF7FFF
+
+ thumb_func_start FUN_02001658
+FUN_02001658: ; 0x02001658
+ str r1, [r0, #0x0]
+ bx lr
+
+ thumb_func_start FUN_0200165C
+FUN_0200165C: ; 0x0200165C
+ push {r4-r6, lr}
+ sub sp, #0x18
+ add r5, r1, #0x0
+ add r6, r0, #0x0
+ add r4, r2, #0x0
+ cmp r5, #0x0
+ beq _02001710
+ add r0, #0x24
+ ldrb r0, [r0, #0x0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ str r3, [sp, #0x0]
+ beq _020016CC
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ add r0, #0x20
+ ldrb r2, [r0, #0x0]
+ add r3, r4, #0x0
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x1c
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ lsl r0, r2, #0x1c
+ add r2, r6, #0x0
+ add r2, #0x21
+ ldrb r2, [r2, #0x0]
+ lsr r0, r0, #0x1c
+ lsl r0, r0, #0x18
+ lsl r2, r2, #0x1c
+ lsr r2, r2, #0x1c
+ lsl r2, r2, #0x18
+ lsr r0, r0, #0x8
+ lsr r2, r2, #0x10
+ orr r0, r2
+ orr r0, r1
+ str r0, [sp, #0x8]
+ add r0, r6, #0x0
+ add r0, #0x22
+ ldrb r0, [r0, #0x0]
+ add r2, r5, #0x0
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1a
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldr r0, [r6, #0xc]
+ add r6, #0x24
+ ldrb r1, [r6, #0x0]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x19
+ bl FUN_0201BE3C
+ add sp, #0x18
+ pop {r4-r6, pc}
+_020016CC:
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ ldrb r1, [r6, #0x18]
+ add r3, r4, #0x0
+ lsl r0, r1, #0x1c
+ lsr r0, r0, #0x1c
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ ldrb r0, [r6, #0x17]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1c
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ lsl r0, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r0, r0, #0x8
+ lsr r1, r1, #0x10
+ orr r0, r1
+ orr r0, r2
+ str r0, [sp, #0x8]
+ ldrh r0, [r6, #0x1a]
+ add r2, r5, #0x0
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1d
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldrh r1, [r6, #0x1a]
+ ldr r0, [r6, #0xc]
+ lsl r1, r1, #0x11
+ lsr r1, r1, #0x1a
+ bl FUN_0201BE3C
+_02001710:
+ add sp, #0x18
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02001714
+FUN_02001714: ; 0x02001714
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0x0
+ str r3, [sp, #0x0]
+ ldrh r0, [r5, #0x1a]
+ add r4, r1, #0x0
+ mov r1, #0x1
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1a
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r6, r2, #0x0
+ bl FUN_02002E4C
+ ldrh r1, [r5, #0x1a]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x1c
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ ble _020017A6
+_02001748:
+ ldr r1, [r5, #0x0]
+ lsl r0, r4, #0x3
+ str r0, [sp, #0x8]
+ add r0, r1, r0
+ ldr r1, [r0, #0x4]
+ mov r0, #0x2
+ mvn r0, r0
+ cmp r1, r0
+ beq _02001760
+ ldrb r0, [r5, #0x15]
+ str r0, [sp, #0x4]
+ b _02001764
+_02001760:
+ ldrb r0, [r5, #0x14]
+ str r0, [sp, #0x4]
+_02001764:
+ ldrb r0, [r5, #0x17]
+ lsl r0, r0, #0x1c
+ lsr r3, r0, #0x1c
+ ldr r0, [sp, #0xc]
+ add r2, r0, #0x0
+ mul r2, r6
+ add r0, r3, r2
+ lsl r0, r0, #0x18
+ ldr r3, [r5, #0x8]
+ lsr r7, r0, #0x18
+ cmp r3, #0x0
+ beq _02001782
+ add r0, r5, #0x0
+ add r2, r7, #0x0
+ blx r3
+_02001782:
+ ldr r2, [r5, #0x0]
+ ldr r1, [sp, #0x8]
+ add r0, r5, #0x0
+ ldr r1, [r2, r1]
+ ldr r2, [sp, #0x4]
+ add r3, r7, #0x0
+ bl FUN_0200165C
+ add r0, r4, #0x1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [sp, #0x10]
+ add r6, r6, #0x1
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x0]
+ str r1, [sp, #0x10]
+ cmp r1, r0
+ blt _02001748
+_020017A6:
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020017AC
+FUN_020017AC: ; 0x020017AC
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0x1a]
+ mov r1, #0x1
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1a
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02002E4C
+ ldrh r1, [r4, #0x1a]
+ ldrh r5, [r4, #0x2e]
+ lsl r2, r1, #0x19
+ lsr r2, r2, #0x1c
+ add r0, r2, r0
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ ldrb r0, [r4, #0x17]
+ mul r3, r5
+ ldrb r2, [r4, #0x16]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ add r0, r0, r3
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x1f
+ cmp r0, #0x3
+ bhi _02001802
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020017F2: ; jump table (using 16-bit offset)
+ .short _020017FA - _020017F2 - 2; case 0
+ .short _02001802 - _020017F2 - 2; case 1
+ .short _02001802 - _020017F2 - 2; case 2
+ .short _02001802 - _020017F2 - 2; case 3
+_020017FA:
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0xc]
+ bl FUN_020136F8
+_02001802:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02001804
+FUN_02001804: ; 0x02001804
+ push {r3-r5, lr}
+ sub sp, #0x8
+ add r4, r0, #0x0
+ ldrh r0, [r4, #0x1a]
+ add r5, r1, #0x0
+ lsl r1, r0, #0x10
+ lsr r1, r1, #0x1f
+ cmp r1, #0x3
+ bhi _02001868
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02001822: ; jump table (using 16-bit offset)
+ .short _0200182A - _02001822 - 2; case 0
+ .short _02001868 - _02001822 - 2; case 1
+ .short _02001868 - _02001822 - 2; case 2
+ .short _02001868 - _02001822 - 2; case 3
+_0200182A:
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1a
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ bl FUN_02002E4C
+ ldrh r1, [r4, #0x1a]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x1c
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ mov r0, #0x8
+ str r0, [sp, #0x0]
+ mov r0, #0x10
+ str r0, [sp, #0x4]
+ ldrb r1, [r4, #0x18]
+ ldr r0, [r4, #0xc]
+ ldrb r2, [r4, #0x16]
+ ldrb r4, [r4, #0x17]
+ lsl r1, r1, #0x1c
+ mul r3, r5
+ lsl r4, r4, #0x1c
+ lsr r4, r4, #0x1c
+ add r3, r4, r3
+ lsl r3, r3, #0x10
+ lsr r1, r1, #0x1c
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+_02001868:
+ add sp, #0x8
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_0200186C
+FUN_0200186C: ; 0x0200186C
+ push {r4-r7}
+ ldrh r4, [r0, #0x2e]
+ ldrh r3, [r0, #0x2c]
+ cmp r1, #0x0
+ ldrh r2, [r0, #0x12]
+ bne _020018FE
+ cmp r2, #0x1
+ bne _02001880
+ mov r1, #0x0
+ b _02001898
+_02001880:
+ lsr r7, r2, #0x1f
+ lsl r6, r2, #0x1f
+ sub r6, r6, r7
+ mov r5, #0x1f
+ ror r6, r5
+ lsr r1, r2, #0x1
+ add r5, r7, r6
+ add r1, r1, r5
+ sub r1, r2, r1
+ sub r1, r1, #0x1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+_02001898:
+ cmp r3, #0x0
+ bne _020018CC
+ cmp r4, #0x0
+ beq _020018C6
+ ldr r2, [r0, #0x0]
+ lsl r1, r3, #0x3
+ mov r3, #0x2
+ add r1, r2, r1
+ mvn r3, r3
+_020018AA:
+ sub r2, r4, #0x1
+ lsl r2, r2, #0x10
+ lsr r4, r2, #0x10
+ lsl r2, r4, #0x3
+ add r2, r1, r2
+ ldr r2, [r2, #0x4]
+ cmp r2, r3
+ beq _020018C2
+ strh r4, [r0, #0x2e]
+ mov r0, #0x1
+ pop {r4-r7}
+ bx lr
+_020018C2:
+ cmp r4, #0x0
+ bne _020018AA
+_020018C6:
+ mov r0, #0x0
+ pop {r4-r7}
+ bx lr
+_020018CC:
+ cmp r4, r1
+ bls _020018F6
+ ldr r5, [r0, #0x0]
+ lsl r2, r3, #0x3
+ add r2, r5, r2
+ mov r5, #0x2
+ mvn r5, r5
+_020018DA:
+ sub r4, r4, #0x1
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ lsl r6, r4, #0x3
+ add r6, r2, r6
+ ldr r6, [r6, #0x4]
+ cmp r6, r5
+ beq _020018F2
+ strh r4, [r0, #0x2e]
+ mov r0, #0x1
+ pop {r4-r7}
+ bx lr
+_020018F2:
+ cmp r4, r1
+ bhi _020018DA
+_020018F6:
+ strh r1, [r0, #0x2e]
+ sub r1, r3, #0x1
+ strh r1, [r0, #0x2c]
+ b _02001984
+_020018FE:
+ cmp r2, #0x1
+ bne _02001906
+ mov r5, #0x0
+ b _0200191A
+_02001906:
+ lsr r7, r2, #0x1f
+ lsl r6, r2, #0x1f
+ sub r6, r6, r7
+ mov r5, #0x1f
+ ror r6, r5
+ lsr r1, r2, #0x1
+ add r5, r7, r6
+ add r1, r1, r5
+ lsl r1, r1, #0x10
+ lsr r5, r1, #0x10
+_0200191A:
+ ldrh r1, [r0, #0x10]
+ sub r1, r1, r2
+ cmp r3, r1
+ bne _02001954
+ sub r2, r2, #0x1
+ cmp r4, r2
+ bge _0200194E
+ ldr r5, [r0, #0x0]
+ lsl r1, r3, #0x3
+ add r1, r5, r1
+ mov r5, #0x2
+ mvn r5, r5
+_02001932:
+ add r3, r4, #0x1
+ lsl r3, r3, #0x10
+ lsr r4, r3, #0x10
+ lsl r3, r4, #0x3
+ add r3, r1, r3
+ ldr r3, [r3, #0x4]
+ cmp r3, r5
+ beq _0200194A
+ strh r4, [r0, #0x2e]
+ mov r0, #0x1
+ pop {r4-r7}
+ bx lr
+_0200194A:
+ cmp r4, r2
+ blt _02001932
+_0200194E:
+ mov r0, #0x0
+ pop {r4-r7}
+ bx lr
+_02001954:
+ cmp r4, r5
+ bhs _0200197E
+ ldr r2, [r0, #0x0]
+ lsl r1, r3, #0x3
+ mov r6, #0x2
+ add r1, r2, r1
+ mvn r6, r6
+_02001962:
+ add r2, r4, #0x1
+ lsl r2, r2, #0x10
+ lsr r4, r2, #0x10
+ lsl r2, r4, #0x3
+ add r2, r1, r2
+ ldr r2, [r2, #0x4]
+ cmp r2, r6
+ beq _0200197A
+ strh r4, [r0, #0x2e]
+ mov r0, #0x1
+ pop {r4-r7}
+ bx lr
+_0200197A:
+ cmp r4, r5
+ blo _02001962
+_0200197E:
+ strh r5, [r0, #0x2e]
+ add r1, r3, #0x1
+ strh r1, [r0, #0x2c]
+_02001984:
+ mov r0, #0x2
+ pop {r4-r7}
+ bx lr
+ .balign 4
+
+ thumb_func_start FUN_0200198C
+FUN_0200198C: ; 0x0200198C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldrh r0, [r5, #0x12]
+ add r4, r1, #0x0
+ add r7, r2, #0x0
+ cmp r4, r0
+ blt _020019B8
+ ldrb r1, [r5, #0x18]
+ ldr r0, [r5, #0xc]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ bl FUN_02019620
+ ldrh r1, [r5, #0x2c]
+ ldrh r3, [r5, #0x12]
+ add r0, r5, #0x0
+ mov r2, #0x0
+ bl FUN_02001714
+ add sp, #0x8
+ pop {r3-r7, pc}
+_020019B8:
+ ldrh r0, [r5, #0x1a]
+ mov r1, #0x1
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1a
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_02002E4C
+ ldrh r1, [r5, #0x1a]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x1c
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r7, #0x0
+ ldrb r0, [r5, #0x18]
+ bne _02001A46
+ lsl r0, r0, #0x1c
+ lsr r7, r0, #0x1c
+ add r2, r4, #0x0
+ lsl r3, r7, #0x4
+ mul r2, r6
+ orr r3, r7
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ ldr r0, [r5, #0xc]
+ mov r1, #0x1
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_0201A8C8
+ ldrh r1, [r5, #0x2c]
+ add r0, r5, #0x0
+ mov r2, #0x0
+ add r3, r4, #0x0
+ bl FUN_02001714
+ ldrb r0, [r5, #0x17]
+ lsl r0, r0, #0x1c
+ lsr r2, r0, #0x1c
+ ldrh r0, [r5, #0x12]
+ add r1, r0, #0x0
+ mul r1, r6
+ add r0, r2, r1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [r5, #0xc]
+ bl FUN_0201AB0C
+ add r6, r0, #0x0
+ ldr r0, [r5, #0xc]
+ bl FUN_0201AB10
+ lsl r0, r0, #0x3
+ lsl r1, r6, #0x13
+ sub r0, r0, r4
+ lsr r1, r1, #0x10
+ lsl r0, r0, #0x10
+ str r1, [sp, #0x0]
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x4]
+ ldrb r1, [r5, #0x18]
+ ldr r0, [r5, #0xc]
+ mov r2, #0x0
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ add r3, r4, #0x0
+ bl FUN_020196F4
+ add sp, #0x8
+ pop {r3-r7, pc}
+_02001A46:
+ lsl r0, r0, #0x1c
+ lsr r3, r0, #0x1c
+ add r2, r4, #0x0
+ mul r2, r6
+ lsl r6, r3, #0x4
+ orr r3, r6
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ ldr r0, [r5, #0xc]
+ mov r1, #0x0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_0201A8C8
+ ldrh r0, [r5, #0x12]
+ ldrh r1, [r5, #0x2c]
+ add r3, r4, #0x0
+ sub r2, r0, r4
+ add r1, r1, r2
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, r5, #0x0
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ bl FUN_02001714
+ ldr r0, [r5, #0xc]
+ bl FUN_0201AB0C
+ lsl r0, r0, #0x13
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x0]
+ ldrb r0, [r5, #0x17]
+ mov r2, #0x0
+ add r3, r2, #0x0
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ str r0, [sp, #0x4]
+ ldrb r1, [r5, #0x18]
+ ldr r0, [r5, #0xc]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ bl FUN_020196F4
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02001AA4
+FUN_02001AA4: ; 0x02001AA4
+ push {r3-r7, lr}
+ sub sp, #0x10
+ str r1, [sp, #0x0]
+ str r2, [sp, #0x4]
+ add r4, r0, #0x0
+ str r3, [sp, #0x8]
+ ldrh r0, [r4, #0x2e]
+ mov r6, #0x0
+ add r5, r6, #0x0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x4]
+ add r7, r6, #0x0
+ cmp r0, #0x0
+ bls _02001AF6
+_02001AC0:
+ ldr r1, [sp, #0x8]
+ add r0, r4, #0x0
+ bl FUN_0200186C
+ orr r5, r0
+ cmp r0, #0x2
+ bne _02001AEA
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldrh r1, [r4, #0x2c]
+ ldrh r0, [r4, #0x2e]
+ ldr r2, [r4, #0x0]
+ add r0, r1, r0
+ lsl r0, r0, #0x3
+ add r0, r2, r0
+ ldr r1, [r0, #0x4]
+ mov r0, #0x2
+ mvn r0, r0
+ cmp r1, r0
+ beq _02001AC0
+_02001AEA:
+ add r0, r7, #0x1
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r0, [sp, #0x4]
+ cmp r7, r0
+ blo _02001AC0
+_02001AF6:
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ beq _02001B5E
+ cmp r5, #0x3
+ bhi _02001B14
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02001B0C: ; jump table (using 16-bit offset)
+ .short _02001B14 - _02001B0C - 2; case 0
+ .short _02001B1A - _02001B0C - 2; case 1
+ .short _02001B38 - _02001B0C - 2; case 2
+ .short _02001B38 - _02001B0C - 2; case 3
+_02001B14:
+ add sp, #0x10
+ mov r0, #0x1
+ pop {r3-r7, pc}
+_02001B1A:
+ ldr r1, [sp, #0xc]
+ add r0, r4, #0x0
+ bl FUN_02001804
+ add r0, r4, #0x0
+ bl FUN_020017AC
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02001B64
+ ldr r0, [r4, #0xc]
+ bl FUN_020191D0
+ b _02001B5E
+_02001B38:
+ ldr r1, [sp, #0xc]
+ add r0, r4, #0x0
+ bl FUN_02001804
+ ldr r2, [sp, #0x8]
+ add r0, r4, #0x0
+ add r1, r6, #0x0
+ bl FUN_0200198C
+ add r0, r4, #0x0
+ bl FUN_020017AC
+ add r0, r4, #0x0
+ mov r1, #0x0
+ bl FUN_02001B64
+ ldr r0, [r4, #0xc]
+ bl FUN_020191D0
+_02001B5E:
+ mov r0, #0x0
+ add sp, #0x10
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02001B64
+FUN_02001B64: ; 0x02001B64
+ push {r3-r5, lr}
+ ldr r3, [r0, #0x4]
+ add r2, r1, #0x0
+ cmp r3, #0x0
+ beq _02001B7E
+ ldrh r5, [r0, #0x2c]
+ ldrh r4, [r0, #0x2e]
+ ldr r1, [r0, #0x0]
+ add r4, r5, r4
+ lsl r4, r4, #0x3
+ add r1, r1, r4
+ ldr r1, [r1, #0x4]
+ blx r3
+_02001B7E:
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02001B80
+FUN_02001B80: ; 0x02001B80
+ ldr r3, _02001B88 ; =FUN_020191D0
+ ldr r0, [r0, #0xc]
+ bx r3
+ nop
+_02001B88: .word FUN_020191D0
+
+ thumb_func_start FUN_02001B8C
+FUN_02001B8C: ; 0x02001B8C
+ push {r3-r7, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ str r3, [sp, #0x0]
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x10]
+ add r6, r1, #0x0
+ mov r1, #0x20
+ add r7, r2, #0x0
+ str r0, [sp, #0x4]
+ bl FUN_02016998
+ add r4, r0, #0x0
+ add r3, r5, #0x0
+ ldmia r3!, {r0-r1}
+ add r2, r4, #0x0
+ stmia r2!, {r0-r1}
+ ldr r0, [r3, #0x0]
+ str r0, [r2, #0x0]
+ ldr r0, [sp, #0x4]
+ bl FUN_02013690
+ str r0, [r4, #0xc]
+ ldr r0, [sp, #0x24]
+ str r0, [r4, #0x10]
+ ldr r0, [sp, #0x0]
+ strb r0, [r4, #0x15]
+ add r0, r4, #0x0
+ bl FUN_02001FB4
+ strb r0, [r4, #0x16]
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x10]
+ mov r1, #0x0
+ strb r0, [r4, #0x1c]
+ strb r6, [r4, #0x17]
+ strb r7, [r4, #0x18]
+ ldrb r0, [r5, #0x8]
+ bl FUN_02002E4C
+ add r6, r0, #0x0
+ ldrb r0, [r5, #0x8]
+ mov r1, #0x2
+ bl FUN_02002E4C
+ add r0, r6, r0
+ strb r0, [r4, #0x19]
+ ldrb r0, [r5, #0x8]
+ mov r1, #0x1
+ bl FUN_02002E4C
+ add r6, r0, #0x0
+ ldrb r0, [r5, #0x8]
+ mov r1, #0x3
+ bl FUN_02002E4C
+ add r0, r6, r0
+ strb r0, [r4, #0x1a]
+ add r0, r4, #0x0
+ bl FUN_02001FF4
+ add r0, r4, #0x0
+ bl FUN_02002080
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02001C14
+FUN_02001C14: ; 0x02001C14
+ push {r4, lr}
+ sub sp, #0x8
+ add r4, sp, #0x0
+ ldrb r4, [r4, #0x10]
+ str r4, [sp, #0x0]
+ ldr r4, [sp, #0x14]
+ str r4, [sp, #0x4]
+ bl FUN_02001B8C
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x4]
+ bl FUN_020191D0
+ add r0, r4, #0x0
+ add sp, #0x8
+ pop {r4, pc}
+
+ thumb_func_start FUN_02001C34
+FUN_02001C34: ; 0x02001C34
+ push {r4-r6, lr}
+ sub sp, #0x8
+ add r5, r0, #0x0
+ ldrb r0, [r5, #0x8]
+ add r6, r1, #0x0
+ add r4, r2, #0x0
+ mov r1, #0x0
+ bl FUN_02002E4C
+ add r1, r0, #0x0
+ str r4, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ add r0, r5, #0x0
+ mov r2, #0x0
+ add r3, r6, #0x0
+ bl FUN_02001C14
+ add sp, #0x8
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02001C5C
+FUN_02001C5C: ; 0x02001C5C
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r1, #0x0
+ beq _02001C68
+ ldrb r0, [r4, #0x15]
+ strb r0, [r1, #0x0]
+_02001C68:
+ ldr r0, [r4, #0xc]
+ bl FUN_020136C0
+ ldrb r0, [r4, #0x1c]
+ add r1, r4, #0x0
+ bl FUN_02016A8C
+ pop {r4, pc}
+
+ thumb_func_start FUN_02001C78
+FUN_02001C78: ; 0x02001C78
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ mov r1, #0x0
+ ldr r2, _02001D24 ; =0x021C48B8
+ strb r1, [r4, #0x1b]
+ ldr r2, [r2, #0x48]
+ mov r5, #0x1
+ add r3, r2, #0x0
+ tst r3, r5
+ beq _02001C9E
+ ldr r0, _02001D28 ; =0x000005DC
+ bl FUN_020054C8
+ ldrb r0, [r4, #0x15]
+ ldr r1, [r4, #0x0]
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ ldr r0, [r0, #0x4]
+ pop {r3-r5, pc}
+_02001C9E:
+ ldr r3, [r4, #0x10]
+ tst r3, r2
+ beq _02001CAE
+ ldr r0, _02001D28 ; =0x000005DC
+ bl FUN_020054C8
+ sub r0, r5, #0x3
+ pop {r3-r5, pc}
+_02001CAE:
+ mov r3, #0x40
+ tst r3, r2
+ beq _02001CC8
+ ldr r2, _02001D28 ; =0x000005DC
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001CC2
+ add r0, r5, #0x0
+ strb r0, [r4, #0x1b]
+_02001CC2:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_02001CC8:
+ mov r1, #0x80
+ tst r1, r2
+ beq _02001CE4
+ ldr r2, _02001D28 ; =0x000005DC
+ add r1, r5, #0x0
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001CDE
+ mov r0, #0x2
+ strb r0, [r4, #0x1b]
+_02001CDE:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_02001CE4:
+ mov r1, #0x20
+ tst r1, r2
+ beq _02001D00
+ ldr r2, _02001D28 ; =0x000005DC
+ mov r1, #0x2
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001CFA
+ mov r0, #0x3
+ strb r0, [r4, #0x1b]
+_02001CFA:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_02001D00:
+ mov r1, #0x10
+ tst r2, r1
+ beq _02001D1C
+ ldr r2, _02001D28 ; =0x000005DC
+ mov r1, #0x3
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001D16
+ mov r0, #0x4
+ strb r0, [r4, #0x1b]
+_02001D16:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r3-r5, pc}
+_02001D1C:
+ sub r1, #0x11
+ add r0, r1, #0x0
+ pop {r3-r5, pc}
+ nop
+_02001D24: .word 0x021C48B8
+_02001D28: .word 0x000005DC
+
+ thumb_func_start FUN_02001D2C
+FUN_02001D2C: ; 0x02001D2C
+ push {r4-r6, lr}
+ add r2, r1, #0x0
+ add r4, r0, #0x0
+ mov r1, #0x0
+ ldr r3, _02001DD4 ; =0x021C48B8
+ strb r1, [r4, #0x1b]
+ ldr r5, [r3, #0x48]
+ mov r3, #0x1
+ add r6, r5, #0x0
+ tst r6, r3
+ beq _02001D54
+ ldr r0, _02001DD8 ; =0x000005DC
+ bl FUN_020054C8
+ ldrb r0, [r4, #0x15]
+ ldr r1, [r4, #0x0]
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ ldr r0, [r0, #0x4]
+ pop {r4-r6, pc}
+_02001D54:
+ ldr r6, [r4, #0x10]
+ tst r6, r5
+ beq _02001D66
+ ldr r0, _02001DD8 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x1
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001D66:
+ mov r6, #0x40
+ tst r6, r5
+ beq _02001D7E
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001D78
+ mov r0, #0x1
+ strb r0, [r4, #0x1b]
+_02001D78:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001D7E:
+ mov r1, #0x80
+ tst r1, r5
+ beq _02001D98
+ add r1, r3, #0x0
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001D92
+ mov r0, #0x2
+ strb r0, [r4, #0x1b]
+_02001D92:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001D98:
+ mov r1, #0x20
+ tst r1, r5
+ beq _02001DB2
+ mov r1, #0x2
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001DAC
+ mov r0, #0x3
+ strb r0, [r4, #0x1b]
+_02001DAC:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001DB2:
+ mov r1, #0x10
+ add r3, r5, #0x0
+ tst r3, r1
+ beq _02001DCE
+ mov r1, #0x3
+ bl FUN_02001E64
+ cmp r0, #0x1
+ bne _02001DC8
+ mov r0, #0x4
+ strb r0, [r4, #0x1b]
+_02001DC8:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4-r6, pc}
+_02001DCE:
+ sub r1, #0x11
+ add r0, r1, #0x0
+ pop {r4-r6, pc}
+ .balign 4
+_02001DD4: .word 0x021C48B8
+_02001DD8: .word 0x000005DC
+
+ thumb_func_start FUN_02001DDC
+FUN_02001DDC: ; 0x02001DDC
+ push {r4, lr}
+ add r4, r0, #0x0
+ cmp r1, #0x5
+ bhi _02001E52
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02001DF0: ; jump table (using 16-bit offset)
+ .short _02001DFC - _02001DF0 - 2; case 0
+ .short _02001E0E - _02001DF0 - 2; case 1
+ .short _02001E1A - _02001DF0 - 2; case 2
+ .short _02001E28 - _02001DF0 - 2; case 3
+ .short _02001E36 - _02001DF0 - 2; case 4
+ .short _02001E44 - _02001DF0 - 2; case 5
+_02001DFC:
+ ldr r0, _02001E58 ; =0x000005DC
+ bl FUN_020054C8
+ ldrb r0, [r4, #0x15]
+ ldr r1, [r4, #0x0]
+ lsl r0, r0, #0x3
+ add r0, r1, r0
+ ldr r0, [r0, #0x4]
+ pop {r4, pc}
+_02001E0E:
+ ldr r0, _02001E58 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x1
+ mvn r0, r0
+ pop {r4, pc}
+_02001E1A:
+ ldr r2, _02001E58 ; =0x000005DC
+ mov r1, #0x0
+ bl FUN_02001E64
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+_02001E28:
+ ldr r2, _02001E58 ; =0x000005DC
+ mov r1, #0x1
+ bl FUN_02001E64
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+_02001E36:
+ ldr r2, _02001E58 ; =0x000005DC
+ mov r1, #0x2
+ bl FUN_02001E64
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+_02001E44:
+ ldr r2, _02001E58 ; =0x000005DC
+ mov r1, #0x3
+ bl FUN_02001E64
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+_02001E52:
+ mov r0, #0x0
+ mvn r0, r0
+ pop {r4, pc}
+ .balign 4
+_02001E58: .word 0x000005DC
+
+ thumb_func_start FUN_02001E5C
+FUN_02001E5C: ; 0x02001E5C
+ ldrb r0, [r0, #0x15]
+ bx lr
+
+ thumb_func_start FUN_02001E60
+FUN_02001E60: ; 0x02001E60
+ ldrb r0, [r0, #0x1b]
+ bx lr
+
+ thumb_func_start FUN_02001E64
+FUN_02001E64: ; 0x02001E64
+ push {r4-r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0x0
+ add r6, r2, #0x0
+ ldrb r4, [r5, #0x15]
+ bl FUN_02001EBC
+ cmp r0, #0x0
+ bne _02001E7C
+ add sp, #0xc
+ mov r0, #0x0
+ pop {r4-r7, pc}
+_02001E7C:
+ ldrb r0, [r5, #0x8]
+ mov r1, #0x6
+ bl FUN_02002E4C
+ add r1, sp, #0x8
+ add r7, r0, #0x0
+ add r0, r5, #0x0
+ add r1, #0x1
+ add r2, sp, #0x8
+ add r3, r4, #0x0
+ bl FUN_020020B0
+ mov r0, #0x8
+ str r0, [sp, #0x0]
+ ldrb r0, [r5, #0x1a]
+ add r3, sp, #0x8
+ add r1, r7, #0x0
+ str r0, [sp, #0x4]
+ ldrb r2, [r3, #0x1]
+ ldrb r3, [r3, #0x0]
+ ldr r0, [r5, #0x4]
+ bl FUN_020196F4
+ add r0, r5, #0x0
+ bl FUN_02002080
+ add r0, r6, #0x0
+ bl FUN_020054C8
+ mov r0, #0x1
+ add sp, #0xc
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_02001EBC
+FUN_02001EBC: ; 0x02001EBC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ cmp r1, #0x0
+ bne _02001EFA
+ ldrb r6, [r5, #0xa]
+ cmp r6, #0x1
+ bhi _02001ECE
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001ECE:
+ ldrb r4, [r5, #0x15]
+ add r1, r6, #0x0
+ add r0, r4, #0x0
+ blx _s32_div_f
+ cmp r1, #0x0
+ bne _02001EF2
+ ldrb r0, [r5, #0xb]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1e
+ bne _02001EE8
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001EE8:
+ sub r0, r6, #0x1
+ add r0, r4, r0
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001EF2:
+ sub r0, r4, #0x1
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001EFA:
+ cmp r1, #0x1
+ bne _02001F32
+ ldrb r1, [r5, #0xa]
+ cmp r1, #0x1
+ bhi _02001F08
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F08:
+ ldrb r6, [r5, #0x15]
+ sub r4, r1, #0x1
+ add r0, r6, #0x0
+ blx _s32_div_f
+ cmp r4, r1
+ bne _02001F2A
+ ldrb r0, [r5, #0xb]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1e
+ bne _02001F22
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F22:
+ sub r0, r6, r4
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001F2A:
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001F32:
+ cmp r1, #0x2
+ bne _02001F68
+ ldrb r3, [r5, #0x9]
+ cmp r3, #0x1
+ bhi _02001F40
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F40:
+ ldrb r2, [r5, #0xa]
+ ldrb r1, [r5, #0x15]
+ cmp r1, r2
+ bhs _02001F60
+ ldrb r0, [r5, #0xb]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1e
+ bne _02001F54
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F54:
+ sub r0, r3, #0x1
+ mul r0, r2
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001F60:
+ sub r0, r1, r2
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001F68:
+ ldrb r2, [r5, #0x9]
+ cmp r2, #0x1
+ bhi _02001F72
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F72:
+ ldrb r1, [r5, #0xa]
+ ldrb r0, [r5, #0x15]
+ sub r2, r2, #0x1
+ mul r2, r1
+ cmp r0, r2
+ blt _02001F94
+ ldrb r2, [r5, #0xb]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x1e
+ bne _02001F8A
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001F8A:
+ blx _s32_div_f
+ lsl r0, r1, #0x18
+ asr r2, r0, #0x18
+ b _02001F9A
+_02001F94:
+ add r0, r0, r1
+ lsl r0, r0, #0x18
+ asr r2, r0, #0x18
+_02001F9A:
+ ldr r1, [r5, #0x0]
+ lsl r0, r2, #0x3
+ add r0, r1, r0
+ ldr r1, [r0, #0x4]
+ mov r0, #0x2
+ mvn r0, r0
+ cmp r1, r0
+ bne _02001FAE
+ mov r0, #0x0
+ pop {r4-r6, pc}
+_02001FAE:
+ strb r2, [r5, #0x15]
+ mov r0, #0x1
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02001FB4
+FUN_02001FB4: ; 0x02001FB4
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ ldrb r1, [r5, #0x9]
+ ldrb r0, [r5, #0xa]
+ mov r6, #0x0
+ add r4, r6, #0x0
+ mul r0, r1
+ cmp r0, #0x0
+ ble _02001FF0
+ add r7, r6, #0x0
+_02001FC8:
+ ldr r2, [r5, #0x0]
+ lsl r1, r4, #0x3
+ ldr r1, [r2, r1]
+ ldrb r0, [r5, #0x8]
+ add r2, r7, #0x0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r6, r0
+ bhs _02001FE0
+ add r6, r0, #0x0
+_02001FE0:
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldrb r1, [r5, #0x9]
+ ldrb r0, [r5, #0xa]
+ mul r0, r1
+ cmp r4, r0
+ blt _02001FC8
+_02001FF0:
+ add r0, r6, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02001FF4
+FUN_02001FF4: ; 0x02001FF4
+ push {r3-r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0x0
+ ldrb r0, [r5, #0x8]
+ mov r1, #0x6
+ bl FUN_02002E4C
+ add r1, r0, #0x0
+ ldr r0, [r5, #0x4]
+ bl FUN_02019620
+ ldrb r0, [r5, #0x19]
+ ldrb r1, [r5, #0x16]
+ ldrb r7, [r5, #0x17]
+ lsl r0, r0, #0x1
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xc]
+ ldrb r0, [r5, #0x9]
+ mov r6, #0x0
+ cmp r0, #0x0
+ bls _0200207C
+_02002022:
+ ldrb r2, [r5, #0xa]
+ mov r4, #0x0
+ cmp r2, #0x0
+ bls _02002068
+_0200202A:
+ ldrb r3, [r5, #0xb]
+ mul r2, r6
+ ldrb r0, [r5, #0x1a]
+ lsl r3, r3, #0x1c
+ lsr r3, r3, #0x1c
+ add r0, r0, r3
+ ldrb r1, [r5, #0x18]
+ mul r0, r4
+ add r2, r4, r2
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0xff
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ ldr r3, [r5, #0x0]
+ lsl r2, r2, #0x3
+ ldr r2, [r3, r2]
+ ldrb r1, [r5, #0x8]
+ ldr r0, [r5, #0x4]
+ add r3, r7, #0x0
+ bl FUN_0201BD84
+ add r0, r4, #0x1
+ lsl r0, r0, #0x18
+ ldrb r2, [r5, #0xa]
+ lsr r4, r0, #0x18
+ cmp r4, r2
+ blo _0200202A
+_02002068:
+ ldr r0, [sp, #0xc]
+ add r0, r7, r0
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ add r0, r6, #0x1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldrb r0, [r5, #0x9]
+ cmp r6, r0
+ blo _02002022
+_0200207C:
+ add sp, #0x10
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02002080
+FUN_02002080: ; 0x02002080
+ push {r3-r4, lr}
+ sub sp, #0x4
+ add r4, r0, #0x0
+ ldrb r1, [r4, #0xb]
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x1e
+ cmp r1, #0x1
+ beq _020020AA
+ ldrb r3, [r4, #0x15]
+ add r1, sp, #0x0
+ add r1, #0x1
+ add r2, sp, #0x0
+ bl FUN_020020B0
+ add r3, sp, #0x0
+ ldrb r2, [r3, #0x1]
+ ldrb r3, [r3, #0x0]
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x4]
+ bl FUN_020136F8
+_020020AA:
+ add sp, #0x4
+ pop {r3-r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020020B0
+FUN_020020B0: ; 0x020020B0
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r7, r3, #0x0
+ ldrb r1, [r5, #0xa]
+ add r0, r7, #0x0
+ add r6, r2, #0x0
+ blx _s32_div_f
+ ldrb r2, [r5, #0x19]
+ ldrb r1, [r5, #0x16]
+ lsl r2, r2, #0x1
+ add r1, r1, r2
+ mul r1, r0
+ strb r1, [r4, #0x0]
+ ldrb r1, [r5, #0xa]
+ add r0, r7, #0x0
+ blx _s32_div_f
+ ldrb r2, [r5, #0xb]
+ ldrb r3, [r5, #0x1a]
+ ldrb r0, [r5, #0x18]
+ lsl r2, r2, #0x1c
+ lsr r2, r2, #0x1c
+ add r2, r3, r2
+ mul r2, r1
+ add r0, r0, r2
+ strb r0, [r6, #0x0]
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020020EC
+FUN_020020EC: ; 0x020020EC
+ push {r3-r7, lr}
+ sub sp, #0x20
+ ldr r5, [sp, #0x3c]
+ str r2, [sp, #0xc]
+ add r7, r0, #0x0
+ str r1, [sp, #0x8]
+ str r3, [sp, #0x10]
+ ldr r2, _02002194 ; =0x00000141
+ mov r0, #0x1
+ mov r1, #0x1a
+ add r3, r5, #0x0
+ bl FUN_0200A86C
+ add r4, r0, #0x0
+ mov r0, #0x2
+ add r1, r5, #0x0
+ bl FUN_02012838
+ add r1, r4, #0x0
+ mov r2, #0x29
+ mov r3, #0x0
+ add r6, r0, #0x0
+ bl FUN_02012880
+ mov r3, #0x2a
+ add r2, r3, #0x0
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ sub r3, #0x2c
+ bl FUN_02012880
+ add r0, r4, #0x0
+ bl FUN_0200A8B8
+ add r0, r5, #0x0
+ mov r1, #0x1
+ str r6, [sp, #0x14]
+ bl FUN_02018FF4
+ add r1, r0, #0x0
+ str r1, [sp, #0x18]
+ mov r0, #0x0
+ add r3, sp, #0x14
+ strb r0, [r3, #0x8]
+ mov r0, #0x1
+ strb r0, [r3, #0x9]
+ mov r0, #0x2
+ strb r0, [r3, #0xa]
+ ldrb r0, [r3, #0xb]
+ mov r2, #0xf
+ bic r0, r2
+ strb r0, [r3, #0xb]
+ ldrb r4, [r3, #0xb]
+ mov r0, #0x30
+ bic r4, r0
+ strb r4, [r3, #0xb]
+ ldrb r0, [r3, #0xb]
+ bic r0, r2
+ strb r0, [r3, #0xb]
+ ldr r2, [sp, #0x8]
+ add r0, r7, #0x0
+ bl FUN_02019150
+ ldr r0, [sp, #0x18]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x10]
+ mov r1, #0x1
+ bl FUN_0200CCA4
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x0]
+ mov r0, #0x2
+ str r0, [sp, #0x4]
+ add r3, sp, #0x28
+ ldrb r3, [r3, #0x10]
+ add r0, sp, #0x14
+ mov r1, #0x8
+ mov r2, #0x0
+ bl FUN_02001C14
+ add sp, #0x20
+ pop {r3-r7, pc}
+ nop
+_02002194: .word 0x00000141
+
+ thumb_func_start FUN_02002198
+FUN_02002198: ; 0x02002198
+ push {r4, lr}
+ sub sp, #0x8
+ mov r4, #0x0
+ str r4, [sp, #0x0]
+ ldr r4, [sp, #0x10]
+ str r4, [sp, #0x4]
+ bl FUN_020020EC
+ add sp, #0x8
+ pop {r4, pc}
+
+ thumb_func_start FUN_020021AC
+FUN_020021AC: ; 0x020021AC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ bl FUN_02001C78
+ add r6, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r6, r0
+ beq _020021C8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020021EC
+_020021C8:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020021CC
+FUN_020021CC: ; 0x020021CC
+ push {r4-r6, lr}
+ add r5, r0, #0x0
+ add r4, r2, #0x0
+ bl FUN_02001DDC
+ add r6, r0, #0x0
+ mov r0, #0x0
+ mvn r0, r0
+ cmp r6, r0
+ beq _020021E8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ bl FUN_020021EC
+_020021E8:
+ add r0, r6, #0x0
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_020021EC
+FUN_020021EC: ; 0x020021EC
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ ldr r0, [r5, #0x4]
+ add r4, r1, #0x0
+ mov r1, #0x0
+ bl FUN_0200CCF8
+ ldr r0, [r5, #0x4]
+ bl FUN_02019178
+ ldr r1, [r5, #0x4]
+ add r0, r4, #0x0
+ bl FUN_02016A8C
+ ldr r0, [r5, #0x0]
+ bl FUN_02012870
+ add r0, r5, #0x0
+ mov r1, #0x0
+ bl FUN_02001C5C
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02002218
+FUN_02002218: ; 0x02002218
+ push {r4, lr}
+ sub sp, #0x18
+ mov r4, #0x8
+ lsl r1, r1, #0x10
+ str r4, [sp, #0x0]
+ mov r3, #0x10
+ str r3, [sp, #0x4]
+ lsr r1, r1, #0x10
+ str r1, [sp, #0x8]
+ lsl r1, r2, #0x10
+ lsr r1, r1, #0x10
+ str r1, [sp, #0xc]
+ str r4, [sp, #0x10]
+ ldr r1, _02002244 ; =0x020ECAC8
+ mov r2, #0x0
+ str r3, [sp, #0x14]
+ add r3, r2, #0x0
+ bl FUN_02019658
+ add sp, #0x18
+ pop {r4, pc}
+ nop
+_02002244: .word 0x020ECAC8