summaryrefslogtreecommitdiff
path: root/arm9/modules/04/asm/thumb_04.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/modules/04/asm/thumb_04.s')
-rw-r--r--arm9/modules/04/asm/thumb_04.s3128
1 files changed, 3128 insertions, 0 deletions
diff --git a/arm9/modules/04/asm/thumb_04.s b/arm9/modules/04/asm/thumb_04.s
new file mode 100644
index 00000000..51ee9793
--- /dev/null
+++ b/arm9/modules/04/asm/thumb_04.s
@@ -0,0 +1,3128 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD04_021D74E0
+MOD04_021D74E0: ; 0x021D74E0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, _021D7644 ; =0x0220FBC0
+ add r4, r1, #0
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021D74F2
+ bl ErrorHandling
+_021D74F2:
+ ldr r1, _021D7648 ; =0x00001FAC
+ add r0, r4, #0
+ bl FUN_02016998
+ ldr r2, _021D7644 ; =0x0220FBC0
+ mov r1, #0x1f
+ str r0, [r2, #4]
+ add r0, #0x1f
+ bic r0, r1
+ mov r1, #0x1f
+ lsl r1, r1, #8
+ str r0, [r2]
+ str r5, [r0, r1]
+ add r3, r1, #0
+ ldr r6, [r2]
+ mov r0, #0
+ add r3, #0xc
+ str r0, [r6, r3]
+ add r3, r1, #0
+ ldr r6, [r2]
+ add r3, #0x10
+ str r0, [r6, r3]
+ add r3, r1, #0
+ ldr r6, [r2]
+ add r3, #0x14
+ str r0, [r6, r3]
+ add r3, r1, #0
+ ldr r6, [r2]
+ add r3, #0x44
+ str r0, [r6, r3]
+ ldr r0, [r2]
+ add r1, #0x54
+ str r4, [r0, r1]
+ ldr r1, _021D764C ; =0x0002B020
+ add r0, r4, #0
+ bl FUN_02016998
+ ldr r2, _021D7644 ; =0x0220FBC0
+ ldr r1, _021D7650 ; =0x00001F04
+ ldr r3, [r2]
+ str r0, [r3, r1]
+ ldr r0, [r2]
+ mov r2, #0
+ ldr r0, [r0, r1]
+ mov r1, #0x1f
+ add r0, #0x1f
+ bic r0, r1
+ mov r1, #0x2b
+ lsl r1, r1, #0xc
+ bl tempName_NNS_FndCreateExpHeapEx
+ ldr r1, _021D7644 ; =0x0220FBC0
+ ldr r3, _021D7654 ; =0x00001F08
+ ldr r2, [r1]
+ str r0, [r2, r3]
+ add r0, r3, #0
+ ldr r4, [r1]
+ mov r2, #0
+ add r0, #0x64
+ str r2, [r4, r0]
+ add r4, r3, #0
+ ldr r6, [r1]
+ sub r0, r2, #1
+ add r4, #0x54
+ str r0, [r6, r4]
+ add r4, r3, #0
+ ldr r6, [r1]
+ add r4, #0x38
+ str r2, [r6, r4]
+ add r4, r3, #0
+ ldr r6, [r1]
+ add r4, #0x48
+ str r0, [r6, r4]
+ add r4, r3, #0
+ ldr r6, [r1]
+ add r4, #0x58
+ str r0, [r6, r4]
+ add r0, r3, #0
+ ldr r4, [r1]
+ add r0, #0x5c
+ str r2, [r4, r0]
+ add r4, r3, #0
+ ldr r6, [r1]
+ mov r0, #1
+ add r4, #0x60
+ str r0, [r6, r4]
+ add r4, r3, #0
+ ldr r6, [r1]
+ add r4, #0x7a
+ strb r2, [r6, r4]
+ add r4, r3, #0
+ ldr r6, [r1]
+ add r4, #0x78
+ strb r2, [r6, r4]
+ add r4, r3, #0
+ ldr r6, [r1]
+ add r4, #0x79
+ strb r2, [r6, r4]
+ add r2, r3, #0
+ ldr r4, [r1]
+ add r2, #0x70
+ str r0, [r4, r2]
+ add r2, r3, #0
+ add r2, #0x74
+ ldr r4, [r1]
+ cmp r5, #0
+ str r0, [r4, r2]
+ beq _021D75FA
+ ldr r0, [r1]
+ sub r3, #8
+ ldr r0, [r0, r3]
+ bl FUN_020286EC
+ bl FUN_02028228
+ ldr r2, _021D7644 ; =0x0220FBC0
+ ldr r1, _021D7658 ; =0x00001EF0
+ ldr r3, [r2]
+ str r0, [r3, r1]
+ ldr r0, [r2]
+ add r1, #0x10
+ ldr r0, [r0, r1]
+ bl FUN_020286EC
+ mov r1, #0
+ bl FUN_0202838C
+ ldr r1, _021D7644 ; =0x0220FBC0
+ ldr r2, [r1]
+ mov r1, #0x11
+ lsl r1, r1, #8
+ str r0, [r2, r1]
+_021D75FA:
+ ldr r2, _021D7644 ; =0x0220FBC0
+ mov r0, #0
+ ldr r3, [r2]
+ ldr r1, _021D765C ; =0x00001F38
+ add r4, r0, #0
+ str r0, [r3, r1]
+ sub r1, #0x20
+_021D7608:
+ ldr r3, [r2]
+ add r3, r3, r0
+ add r0, r0, #1
+ strb r4, [r3, r1]
+ cmp r0, #0x20
+ blt _021D7608
+ bl FUN_021D85B4
+ ldr r0, _021D7644 ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D7658 ; =0x00001EF0
+ ldr r0, [r1, r0]
+ bl FUN_02096F80
+ cmp r0, #0
+ bne _021D762C
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021D762C:
+ ldr r0, _021D7644 ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D7658 ; =0x00001EF0
+ ldr r0, [r1, r0]
+ bl FUN_02096F18
+ cmp r0, #0
+ beq _021D7640
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021D7640:
+ mov r0, #2
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D7644: .word 0x0220FBC0
+_021D7648: .word 0x00001FAC
+_021D764C: .word 0x0002B020
+_021D7650: .word 0x00001F04
+_021D7654: .word 0x00001F08
+_021D7658: .word 0x00001EF0
+_021D765C: .word 0x00001F38
+
+ thumb_func_start FUN_021D7660
+FUN_021D7660: ; 0x021D7660
+ push {r3, lr}
+ ldr r0, _021D76A0 ; =0x0220FBC0
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021D7698
+ ldr r0, _021D76A4 ; =0x00001F08
+ ldr r0, [r1, r0]
+ bl thunk_FUN_020adc8c
+ ldr r0, _021D76A0 ; =0x0220FBC0
+ ldr r1, _021D76A8 ; =0x00001F54
+ ldr r2, [r0]
+ ldr r0, [r2, r1]
+ sub r1, #0x50
+ ldr r1, [r2, r1]
+ bl FUN_02016A8C
+ ldr r1, _021D76A0 ; =0x0220FBC0
+ ldr r0, _021D76A8 ; =0x00001F54
+ ldr r2, [r1]
+ ldr r1, [r1, #4]
+ ldr r0, [r2, r0]
+ bl FUN_02016A8C
+ ldr r0, _021D76A0 ; =0x0220FBC0
+ mov r1, #0
+ str r1, [r0, #4]
+ str r1, [r0]
+_021D7698:
+ bl FUN_021DD6F0
+ pop {r3, pc}
+ nop
+_021D76A0: .word 0x0220FBC0
+_021D76A4: .word 0x00001F08
+_021D76A8: .word 0x00001F54
+
+ thumb_func_start FUN_021D76AC
+FUN_021D76AC: ; 0x021D76AC
+ push {lr}
+ sub sp, #0x64
+ ldr r0, _021D779C ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D77A0 ; =0x00001F44
+ ldr r0, [r1, r0]
+ cmp r0, #4
+ bhi _021D7794
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D76C8: ; jump table
+ .short _021D76D2 - _021D76C8 - 2 ; case 0
+ .short _021D7708 - _021D76C8 - 2 ; case 1
+ .short _021D7736 - _021D76C8 - 2 ; case 2
+ .short _021D7784 - _021D76C8 - 2 ; case 3
+ .short _021D778A - _021D76C8 - 2 ; case 4
+_021D76D2:
+ ldr r0, _021D77A4 ; =FUN_021D7DA8
+ ldr r1, _021D77A8 ; =FUN_021D7DEC
+ bl FUN_021DD968
+ ldr r0, _021D779C ; =0x0220FBC0
+ mov r2, #1
+ ldr r1, [r0]
+ ldr r0, _021D77AC ; =0x00001EF4
+ mov r3, #0x14
+ add r0, r1, r0
+ mov r1, #2
+ bl FUN_021DDEE0
+ mov r0, #2
+ bl FUN_021DDE7C
+ bl FUN_021DDDCC
+ ldr r1, _021D779C ; =0x0220FBC0
+ ldr r0, _021D77A0 ; =0x00001F44
+ ldr r2, [r1]
+ mov r3, #1
+ str r3, [r2, r0]
+ ldr r1, [r1]
+ mov r2, #0
+ add r0, #0x14
+ str r2, [r1, r0]
+_021D7708:
+ bl FUN_021DDD7C
+ cmp r0, #0
+ beq _021D7730
+ bl FUN_021DDC1C
+ cmp r0, #4
+ bne _021D7724
+ ldr r0, _021D779C ; =0x0220FBC0
+ mov r2, #2
+ ldr r1, [r0]
+ ldr r0, _021D77A0 ; =0x00001F44
+ str r2, [r1, r0]
+ b _021D7736
+_021D7724:
+ ldr r0, _021D779C ; =0x0220FBC0
+ mov r2, #0xb
+ ldr r1, [r0]
+ ldr r0, _021D77A0 ; =0x00001F44
+ str r2, [r1, r0]
+ b _021D7736
+_021D7730:
+ bl FUN_021DDCE8
+ b _021D7794
+_021D7736:
+ bl FUN_021D7E18
+ cmp r0, #0
+ blt _021D7798
+ ldr r0, _021D779C ; =0x0220FBC0
+ ldr r3, _021D77B0 ; =0x0220BEA0
+ ldr r1, [r0]
+ ldr r0, _021D77B4 ; =0x0220BEAC
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ lsl r0, r0, #8
+ ldr r2, [r1, r0]
+ add r0, r0, #4
+ str r2, [sp, #0xc]
+ mov r2, #0x20
+ str r2, [sp, #0x10]
+ ldr r2, _021D77B8 ; =0x00001EF0
+ add r0, r1, r0
+ ldr r1, [r1, r2]
+ ldr r2, _021D77BC ; =0x000029E7
+ bl FUN_021E0374
+ add r0, sp, #0x14
+ bl OS_GetOwnerInfo
+ mov r1, #0
+ ldr r2, _021D77C0 ; =FUN_021D7A7C
+ add r0, sp, #0x18
+ add r3, r1, #0
+ bl FUN_021DFE64
+ ldr r0, _021D779C ; =0x0220FBC0
+ mov r2, #3
+ ldr r1, [r0]
+ ldr r0, _021D77A0 ; =0x00001F44
+ str r2, [r1, r0]
+_021D7784:
+ bl FUN_021DFF74
+ b _021D7794
+_021D778A:
+ bl FUN_021DFF74
+ add sp, #0x64
+ mov r0, #1
+ pop {pc}
+_021D7794:
+ bl FUN_021D7E18
+_021D7798:
+ add sp, #0x64
+ pop {pc}
+ .align 2, 0
+_021D779C: .word 0x0220FBC0
+_021D77A0: .word 0x00001F44
+_021D77A4: .word FUN_021D7DA8
+_021D77A8: .word FUN_021D7DEC
+_021D77AC: .word 0x00001EF4
+_021D77B0: .word 0x0220BEA0
+_021D77B4: .word 0x0220BEAC
+_021D77B8: .word 0x00001EF0
+_021D77BC: .word 0x000029E7
+_021D77C0: .word FUN_021D7A7C
+
+ thumb_func_start FUN_021D77C4
+FUN_021D77C4: ; 0x021D77C4
+ push {r3, r4}
+ ldr r3, _021D77D8 ; =0x0220FBC0
+ ldr r2, _021D77DC ; =0x00001F0C
+ ldr r4, [r3]
+ str r0, [r4, r2]
+ ldr r3, [r3]
+ add r0, r2, #4
+ str r1, [r3, r0]
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+_021D77D8: .word 0x0220FBC0
+_021D77DC: .word 0x00001F0C
+
+ thumb_func_start FUN_021D77E0
+FUN_021D77E0: ; 0x021D77E0
+ ldr r0, _021D77F8 ; =0x0220FBC0
+ ldr r2, [r0]
+ ldr r0, _021D77FC ; =0x00001F44
+ ldr r1, [r2, r0]
+ cmp r1, #9
+ bne _021D77F2
+ mov r1, #0xa
+ str r1, [r2, r0]
+ bx lr
+_021D77F2:
+ mov r1, #8
+ str r1, [r2, r0]
+ bx lr
+ .align 2, 0
+_021D77F8: .word 0x0220FBC0
+_021D77FC: .word 0x00001F44
+
+ thumb_func_start FUN_021D7800
+FUN_021D7800: ; 0x021D7800
+ push {r3, r4, r5, lr}
+ ldr r2, _021D78EC ; =0x0220FBC0
+ ldr r1, _021D78F0 ; =0x00001F44
+ ldr r4, [r2]
+ ldr r3, [r4, r1]
+ cmp r3, #0xb
+ bhi _021D78E4
+ add r5, r3, r3
+ add r5, pc
+ ldrh r5, [r5, #6]
+ lsl r5, r5, #0x10
+ asr r5, r5, #0x10
+ add pc, r5
+_021D781A: ; jump table
+ .short _021D78E4 - _021D781A - 2 ; case 0
+ .short _021D78E4 - _021D781A - 2 ; case 1
+ .short _021D78E4 - _021D781A - 2 ; case 2
+ .short _021D78E4 - _021D781A - 2 ; case 3
+ .short _021D78E4 - _021D781A - 2 ; case 4
+ .short _021D7832 - _021D781A - 2 ; case 5
+ .short _021D7864 - _021D781A - 2 ; case 6
+ .short _021D7886 - _021D781A - 2 ; case 7
+ .short _021D78AA - _021D781A - 2 ; case 8
+ .short _021D7864 - _021D781A - 2 ; case 9
+ .short _021D78C4 - _021D781A - 2 ; case 10
+ .short _021D78DE - _021D781A - 2 ; case 11
+_021D7832:
+ cmp r0, #0
+ beq _021D783A
+ mov r0, #6
+ str r0, [r4, r1]
+_021D783A:
+ ldr r0, _021D78EC ; =0x0220FBC0
+ ldr r2, _021D78F4 ; =0x00001F48
+ ldr r0, [r0]
+ ldr r1, [r0, r2]
+ cmp r1, #2
+ bne _021D78E4
+ add r1, r2, #0
+ add r1, #0x14
+ ldr r1, [r0, r1]
+ cmp r1, #0
+ blt _021D78E4
+ add r3, r0, r1
+ add r1, r2, #0
+ sub r1, #0x30
+ ldrb r1, [r3, r1]
+ cmp r1, #6
+ beq _021D78E4
+ mov r3, #9
+ sub r1, r2, #4
+ str r3, [r0, r1]
+ b _021D78E4
+_021D7864:
+ cmp r3, #0
+ bne _021D786E
+ bl FUN_021EA530
+ b _021D78E4
+_021D786E:
+ bl FUN_021DFA40
+ cmp r0, #1
+ bne _021D787C
+ bl FUN_021D77E0
+ b _021D78E4
+_021D787C:
+ cmp r0, #0
+ beq _021D78E4
+ bl FUN_021D77E0
+ b _021D78E4
+_021D7886:
+ mov r0, #1
+ add r1, #0x40
+ strh r0, [r4, r1]
+ bl FUN_021D8058
+ ldr r0, _021D78EC ; =0x0220FBC0
+ ldr r2, [r0]
+ ldr r0, _021D78F8 ; =0x00001F68
+ ldr r1, [r2, r0]
+ cmp r1, #0
+ beq _021D78A0
+ mov r1, #1
+ b _021D78A2
+_021D78A0:
+ mov r1, #0
+_021D78A2:
+ add r0, #0x10
+ str r1, [r2, r0]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D78AA:
+ mov r0, #4
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r3, [r2]
+ mov r4, #0
+ add r0, #8
+ str r4, [r3, r0]
+ ldr r0, [r2]
+ sub r3, r4, #1
+ add r1, #0x1c
+ str r3, [r0, r1]
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021D78C4:
+ mov r0, #4
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r3, [r2]
+ mov r4, #0
+ add r0, #8
+ str r4, [r3, r0]
+ ldr r0, [r2]
+ sub r3, r4, #1
+ add r1, #0x1c
+ str r3, [r0, r1]
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+_021D78DE:
+ bl FUN_021D7E18
+ pop {r3, r4, r5, pc}
+_021D78E4:
+ bl FUN_021D7F8C
+ pop {r3, r4, r5, pc}
+ nop
+_021D78EC: .word 0x0220FBC0
+_021D78F0: .word 0x00001F44
+_021D78F4: .word 0x00001F48
+_021D78F8: .word 0x00001F68
+
+ thumb_func_start FUN_021D78FC
+FUN_021D78FC: ; 0x021D78FC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #1
+ add r4, r1, #0
+ lsl r0, r0, #8
+ cmp r4, r0
+ blt _021D790E
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021D790E:
+ bl FUN_021DF95C
+ cmp r0, #0
+ bne _021D7930
+ ldr r0, _021D79A0 ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D79A4 ; =0x00001F0C
+ ldr r3, [r1, r0]
+ cmp r3, #0
+ beq _021D792C
+ lsl r2, r4, #0x10
+ mov r0, #0
+ add r1, r5, #0
+ lsr r2, r2, #0x10
+ blx r3
+_021D792C:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021D7930:
+ ldr r0, _021D79A0 ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D79A8 ; =0x00001F4C
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ bne _021D7946
+ mov r0, #0
+ bl FUN_021EB0FC
+ cmp r0, #0
+ bne _021D794A
+_021D7946:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021D794A:
+ ldr r1, _021D79A0 ; =0x0220FBC0
+ ldr r0, _021D79AC ; =0x00001F78
+ ldr r3, [r1]
+ mov r6, #1
+ ldr r2, [r3, r0]
+ lsl r2, r2, #8
+ orr r2, r6
+ lsl r6, r6, #0xc
+ str r2, [r3, r6]
+ add r3, r0, #0
+ ldr r2, [r1]
+ add r3, #8
+ ldrb r3, [r2, r3]
+ add r6, r3, #1
+ add r3, r0, #0
+ add r3, #8
+ strb r6, [r2, r3]
+ ldr r3, [r1]
+ add r0, #8
+ ldrb r0, [r3, r0]
+ ldr r2, _021D79B0 ; =0x00001002
+ strb r0, [r3, r2]
+ ldr r3, [r1]
+ add r1, r2, #2
+ add r0, r5, #0
+ add r1, r3, r1
+ add r2, r4, #0
+ bl MI_CpuCopy8
+ ldr r1, _021D79A0 ; =0x0220FBC0
+ ldr r0, _021D79A8 ; =0x00001F4C
+ ldr r2, [r1]
+ mov r3, #1
+ str r3, [r2, r0]
+ ldr r2, [r1]
+ lsl r1, r3, #0xc
+ add r1, r2, r1
+ mov r0, #0
+ add r2, r4, #4
+ bl FUN_021EB044
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D79A0: .word 0x0220FBC0
+_021D79A4: .word 0x00001F0C
+_021D79A8: .word 0x00001F4C
+_021D79AC: .word 0x00001F78
+_021D79B0: .word 0x00001002
+
+ thumb_func_start FUN_021D79B4
+FUN_021D79B4: ; 0x021D79B4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #1
+ add r4, r1, #0
+ lsl r0, r0, #8
+ cmp r4, r0
+ blt _021D79C6
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021D79C6:
+ bl FUN_021DF95C
+ cmp r0, #0
+ beq _021D79D2
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021D79D2:
+ ldr r0, _021D7A68 ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D7A6C ; =0x00001F4C
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ bne _021D79E8
+ mov r0, #1
+ bl FUN_021EB0FC
+ cmp r0, #0
+ bne _021D79EC
+_021D79E8:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021D79EC:
+ ldr r1, _021D7A68 ; =0x0220FBC0
+ ldr r0, _021D7A70 ; =0x00001F78
+ ldr r3, [r1]
+ mov r6, #1
+ ldr r2, [r3, r0]
+ lsl r2, r2, #8
+ orr r2, r6
+ lsl r6, r6, #0xc
+ str r2, [r3, r6]
+ add r3, r0, #0
+ ldr r2, [r1]
+ add r3, #8
+ ldrb r3, [r2, r3]
+ add r6, r3, #1
+ add r3, r0, #0
+ add r3, #8
+ strb r6, [r2, r3]
+ ldr r3, [r1]
+ add r0, #8
+ ldrb r0, [r3, r0]
+ ldr r2, _021D7A74 ; =0x00001002
+ strb r0, [r3, r2]
+ ldr r3, [r1]
+ add r1, r2, #2
+ add r0, r5, #0
+ add r1, r3, r1
+ add r2, r4, #0
+ bl MI_CpuCopy8
+ ldr r2, _021D7A68 ; =0x0220FBC0
+ ldr r1, _021D7A6C ; =0x00001F4C
+ ldr r3, [r2]
+ mov r0, #1
+ str r0, [r3, r1]
+ ldr r2, [r2]
+ lsl r1, r0, #0xc
+ add r1, r2, r1
+ add r2, r4, #4
+ bl FUN_021EB044
+ cmp r0, #0
+ bne _021D7A4C
+ ldr r1, _021D7A68 ; =0x0220FBC0
+ mov r0, #0
+ ldr r2, [r1]
+ ldr r1, _021D7A6C ; =0x00001F4C
+ str r0, [r2, r1]
+ pop {r4, r5, r6, pc}
+_021D7A4C:
+ ldr r0, _021D7A68 ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D7A78 ; =0x00001F10
+ ldr r3, [r1, r0]
+ cmp r3, #0
+ beq _021D7A62
+ lsl r2, r4, #0x10
+ mov r0, #0
+ add r1, r5, #0
+ lsr r2, r2, #0x10
+ blx r3
+_021D7A62:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ nop
+_021D7A68: .word 0x0220FBC0
+_021D7A6C: .word 0x00001F4C
+_021D7A70: .word 0x00001F78
+_021D7A74: .word 0x00001002
+_021D7A78: .word 0x00001F10
+
+ thumb_func_start FUN_021D7A7C
+FUN_021D7A7C: ; 0x021D7A7C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, _021D7AF8 ; =0x0220FBC0
+ add r4, r2, #0
+ ldr r1, [r0]
+ ldr r0, _021D7AFC ; =0x00001EF0
+ ldr r0, [r1, r0]
+ bl FUN_02096EB4
+ cmp r0, #0
+ beq _021D7AB0
+ ldr r0, _021D7AF8 ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D7AFC ; =0x00001EF0
+ ldr r0, [r1, r0]
+ bl thunk_FUN_02096e4c
+ ldr r0, _021D7AF8 ; =0x0220FBC0
+ ldr r1, [r0]
+ mov r0, #0x1f
+ lsl r0, r0, #8
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_020227A0
+_021D7AB0:
+ cmp r5, #0
+ bne _021D7AE8
+ ldr r0, _021D7B00 ; =FUN_021D7B70
+ str r4, [sp]
+ str r0, [sp, #4]
+ ldr r2, _021D7AF8 ; =0x0220FBC0
+ str r4, [sp, #8]
+ ldr r3, [r2]
+ ldr r2, _021D7AFC ; =0x00001EF0
+ ldr r1, _021D7B04 ; =FUN_021D7B48
+ ldr r2, [r3, r2]
+ ldr r3, _021D7B08 ; =FUN_021D7B6C
+ mov r0, #0
+ bl FUN_021DFDBC
+ cmp r0, #0
+ bne _021D7ADC
+ mov r0, #1
+ bl FUN_020336A0
+ add sp, #0xc
+ pop {r4, r5, pc}
+_021D7ADC:
+ ldr r0, _021D7B0C ; =FUN_021D7BBC
+ mov r1, #0
+ bl FUN_021E242C
+ add sp, #0xc
+ pop {r4, r5, pc}
+_021D7AE8:
+ ldr r0, _021D7AF8 ; =0x0220FBC0
+ mov r2, #0xb
+ ldr r1, [r0]
+ ldr r0, _021D7B10 ; =0x00001F44
+ str r2, [r1, r0]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_021D7AF8: .word 0x0220FBC0
+_021D7AFC: .word 0x00001EF0
+_021D7B00: .word FUN_021D7B70
+_021D7B04: .word FUN_021D7B48
+_021D7B08: .word FUN_021D7B6C
+_021D7B0C: .word FUN_021D7BBC
+_021D7B10: .word 0x00001F44
+
+ thumb_func_start FUN_021D7B14
+FUN_021D7B14: ; 0x021D7B14
+ push {r3, lr}
+ ldr r0, _021D7B3C ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D7B40 ; =0x00001F70
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021D7B3A
+ bl FUN_021DFA40
+ ldr r1, _021D7B3C ; =0x0220FBC0
+ mov r3, #0
+ ldr r2, [r1]
+ ldr r0, _021D7B44 ; =0x00001F60
+ mvn r3, r3
+ str r3, [r2, r0]
+ ldr r1, [r1]
+ mov r2, #0x11
+ sub r0, #0x1c
+ str r2, [r1, r0]
+_021D7B3A:
+ pop {r3, pc}
+ .align 2, 0
+_021D7B3C: .word 0x0220FBC0
+_021D7B40: .word 0x00001F70
+_021D7B44: .word 0x00001F60
+
+ thumb_func_start FUN_021D7B48
+FUN_021D7B48: ; 0x021D7B48
+ cmp r0, #0
+ bne _021D7B58
+ ldr r0, _021D7B64 ; =0x0220FBC0
+ mov r2, #4
+ ldr r1, [r0]
+ ldr r0, _021D7B68 ; =0x00001F44
+ str r2, [r1, r0]
+ bx lr
+_021D7B58:
+ ldr r0, _021D7B64 ; =0x0220FBC0
+ mov r2, #0xb
+ ldr r1, [r0]
+ ldr r0, _021D7B68 ; =0x00001F44
+ str r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_021D7B64: .word 0x0220FBC0
+_021D7B68: .word 0x00001F44
+
+ thumb_func_start FUN_021D7B6C
+FUN_021D7B6C: ; 0x021D7B6C
+ bx lr
+ .align 2, 0
+
+ thumb_func_start FUN_021D7B70
+FUN_021D7B70: ; 0x021D7B70
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D7BB8 ; =0x0220FBC0
+ add r4, r1, #0
+ ldr r1, [r0]
+ mov r0, #0x1f
+ lsl r0, r0, #8
+ ldr r0, [r1, r0]
+ bl FUN_020286EC
+ mov r1, #0
+ bl FUN_0202838C
+ add r1, r0, #0
+ ldr r0, _021D7BB8 ; =0x0220FBC0
+ ldr r2, [r0]
+ mov r0, #0x11
+ lsl r0, r0, #8
+ ldr r0, [r2, r0]
+ mov r2, #6
+ lsl r2, r2, #6
+ bl MI_CpuCopy8
+ ldr r0, _021D7BB8 ; =0x0220FBC0
+ ldr r1, [r0]
+ mov r0, #0x1f
+ lsl r0, r0, #8
+ ldr r0, [r1, r0]
+ bl FUN_020286EC
+ add r1, r5, #0
+ add r2, r4, #0
+ bl FUN_02028664
+ pop {r3, r4, r5, pc}
+ nop
+_021D7BB8: .word 0x0220FBC0
+
+ thumb_func_start FUN_021D7BBC
+FUN_021D7BBC: ; 0x021D7BBC
+ bx lr
+ .align 2, 0
+
+ thumb_func_start FUN_021D7BC0
+FUN_021D7BC0: ; 0x021D7BC0
+ push {r3, lr}
+ ldr r0, _021D7C1C ; =0x0220FBC0
+ mov r2, #7
+ ldr r1, [r0]
+ ldr r0, _021D7C20 ; =0x00001F44
+ str r2, [r1, r0]
+ bl FUN_021DF95C
+ cmp r0, #0
+ bne _021D7BDA
+ mov r2, #1
+ ldr r0, _021D7C1C ; =0x0220FBC0
+ b _021D7BDE
+_021D7BDA:
+ ldr r0, _021D7C1C ; =0x0220FBC0
+ mov r2, #0
+_021D7BDE:
+ ldr r1, [r0]
+ ldr r0, _021D7C24 ; =0x00001F50
+ str r2, [r1, r0]
+ ldr r0, _021D7C1C ; =0x0220FBC0
+ mov r2, #1
+ ldr r1, [r0]
+ ldr r0, _021D7C24 ; =0x00001F50
+ lsl r2, r2, #0xc
+ ldr r0, [r1, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_021EAE38
+ ldr r0, _021D7C1C ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D7C24 ; =0x00001F50
+ ldr r0, [r1, r0]
+ ldr r1, _021D7C28 ; =0x00002710
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_021EACF8
+ ldr r1, _021D7C1C ; =0x0220FBC0
+ ldr r0, _021D7C2C ; =0x00001F70
+ ldr r2, [r1]
+ mov r3, #0
+ str r3, [r2, r0]
+ ldr r1, [r1]
+ add r0, r0, #4
+ str r3, [r1, r0]
+ pop {r3, pc}
+ .align 2, 0
+_021D7C1C: .word 0x0220FBC0
+_021D7C20: .word 0x00001F44
+_021D7C24: .word 0x00001F50
+_021D7C28: .word 0x00002710
+_021D7C2C: .word 0x00001F70
+
+ thumb_func_start FUN_021D7C30
+FUN_021D7C30: ; 0x021D7C30
+ ldr r1, _021D7C44 ; =0x0220FBC0
+ ldr r0, _021D7C48 ; =0x00001F4C
+ ldr r2, [r1]
+ mov r3, #0
+ str r3, [r2, r0]
+ ldr r1, [r1]
+ add r0, #0x28
+ str r3, [r1, r0]
+ bx lr
+ nop
+_021D7C44: .word 0x0220FBC0
+_021D7C48: .word 0x00001F4C
+
+ thumb_func_start FUN_021D7C4C
+FUN_021D7C4C: ; 0x021D7C4C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r0, [sp]
+ add r4, r1, #0
+ ldrb r5, [r4, #1]
+ ldrb r3, [r4]
+ str r2, [sp, #4]
+ lsl r5, r5, #8
+ mov ip, r5
+ ldrb r5, [r4, #3]
+ add r7, r3, #0
+ ldr r3, _021D7D54 ; =0x0220FBC0
+ lsl r6, r5, #0x18
+ ldrb r5, [r4, #2]
+ lsl r5, r5, #0x10
+ orr r5, r6
+ mov r6, ip
+ orr r5, r6
+ orr r7, r5
+ ldr r6, [r3]
+ ldr r5, _021D7D58 ; =0x00001F70
+ mov r3, #1
+ str r3, [r6, r5]
+ lsl r3, r7, #0x18
+ lsr r3, r3, #0x18
+ cmp r3, #1
+ bne _021D7CB4
+ mov r0, #1
+ add r0, #0xff
+ tst r0, r7
+ beq _021D7C96
+ ldr r0, _021D7D54 ; =0x0220FBC0
+ add r5, #0xc
+ ldr r1, [r0]
+ mov r0, #1
+ str r0, [r1, r5]
+ b _021D7CA0
+_021D7C96:
+ ldr r0, _021D7D54 ; =0x0220FBC0
+ mov r1, #0
+ ldr r0, [r0]
+ add r5, #0xc
+ str r1, [r0, r5]
+_021D7CA0:
+ ldr r3, _021D7D54 ; =0x0220FBC0
+ ldr r1, _021D7D5C ; =0x00001F84
+ ldr r2, [r3]
+ mov r0, #0
+ strh r0, [r2, r1]
+ ldrb r6, [r4, #2]
+ ldr r5, [r3]
+ sub r2, r1, #3
+ strb r6, [r5, r2]
+ b _021D7CE4
+_021D7CB4:
+ bl FUN_021D8A54
+ cmp r0, #0
+ bne _021D7D4E
+ mov r0, #1
+ lsl r0, r0, #8
+ tst r0, r7
+ beq _021D7CD4
+ ldr r0, _021D7D54 ; =0x0220FBC0
+ mov r2, #1
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xc
+ str r2, [r1, r0]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_021D7CD4:
+ ldr r0, _021D7D54 ; =0x0220FBC0
+ mov r2, #0
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xc
+ str r2, [r1, r0]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_021D7CE4:
+ ldr r5, [r4]
+ ldr r2, [r3]
+ add r1, r1, #4
+ str r5, [r2, r1]
+ ldr r1, [sp, #4]
+ mov r2, #4
+ sub r6, r1, #4
+ add r1, r6, #0
+ bl FUN_021D7DA8
+ add r5, r0, #0
+ beq _021D7D4E
+ add r0, r4, #4
+ add r1, r5, #0
+ add r2, r6, #0
+ bl MI_CpuCopy8
+ bl FUN_021DF95C
+ cmp r0, #0
+ bne _021D7D2A
+ ldr r0, _021D7D54 ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D7D60 ; =0x00001F0C
+ ldr r3, [r1, r0]
+ cmp r3, #0
+ beq _021D7D44
+ ldr r2, [sp, #4]
+ ldr r0, [sp]
+ sub r2, r2, #4
+ lsl r2, r2, #0x10
+ add r1, r5, #0
+ lsr r2, r2, #0x10
+ blx r3
+ b _021D7D44
+_021D7D2A:
+ ldr r0, _021D7D54 ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D7D64 ; =0x00001F10
+ ldr r3, [r1, r0]
+ cmp r3, #0
+ beq _021D7D44
+ ldr r2, [sp, #4]
+ ldr r0, [sp]
+ sub r2, r2, #4
+ lsl r2, r2, #0x10
+ add r1, r5, #0
+ lsr r2, r2, #0x10
+ blx r3
+_021D7D44:
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r6, #0
+ bl FUN_021D7DEC
+_021D7D4E:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7D54: .word 0x0220FBC0
+_021D7D58: .word 0x00001F70
+_021D7D5C: .word 0x00001F84
+_021D7D60: .word 0x00001F0C
+_021D7D64: .word 0x00001F10
+
+ thumb_func_start FUN_021D7D68
+FUN_021D7D68: ; 0x021D7D68
+ push {r3, lr}
+ cmp r0, #0
+ bne _021D7D9A
+ bl FUN_021DF978
+ cmp r0, #1
+ bne _021D7D9A
+ ldr r0, _021D7D9C ; =0x0220FBC0
+ ldr r2, [r0]
+ ldr r0, _021D7DA0 ; =0x00001F44
+ ldr r1, [r2, r0]
+ cmp r1, #6
+ bne _021D7D86
+ mov r1, #8
+ b _021D7D88
+_021D7D86:
+ mov r1, #0x10
+_021D7D88:
+ str r1, [r2, r0]
+ ldr r0, _021D7D9C ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D7DA4 ; =0x00001F58
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021D7D9A
+ bl FUN_021D8C6C
+_021D7D9A:
+ pop {r3, pc}
+ .align 2, 0
+_021D7D9C: .word 0x0220FBC0
+_021D7DA0: .word 0x00001F44
+_021D7DA4: .word 0x00001F58
+
+ thumb_func_start FUN_021D7DA8
+FUN_021D7DA8: ; 0x021D7DA8
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r2, #0
+ bl OS_DisableInterrupts
+ add r4, r0, #0
+ ldr r0, _021D7DE4 ; =0x0220FBC0
+ add r2, r6, #0
+ ldr r1, [r0]
+ ldr r0, _021D7DE8 ; =0x00001F08
+ ldr r0, [r1, r0]
+ add r1, r5, #0
+ bl tempName_NNS_FndAllocFromExpHeapEx
+ add r5, r0, #0
+ bne _021D7DD8
+ mov r0, #1
+ bl FUN_020336A0
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021D7DD8:
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ add r0, r5, #0
+ pop {r4, r5, r6, pc}
+ nop
+_021D7DE4: .word 0x0220FBC0
+_021D7DE8: .word 0x00001F08
+
+ thumb_func_start FUN_021D7DEC
+FUN_021D7DEC: ; 0x021D7DEC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ beq _021D7E0C
+ bl OS_DisableInterrupts
+ add r4, r0, #0
+ ldr r0, _021D7E10 ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D7E14 ; =0x00001F08
+ ldr r0, [r1, r0]
+ add r1, r5, #0
+ bl FUN_020ADDF0
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+_021D7E0C:
+ pop {r3, r4, r5, pc}
+ nop
+_021D7E10: .word 0x0220FBC0
+_021D7E14: .word 0x00001F08
+
+ thumb_func_start FUN_021D7E18
+FUN_021D7E18: ; 0x021D7E18
+ push {r4, lr}
+ sub sp, #8
+ add r0, sp, #4
+ add r1, sp, #0
+ bl FUN_021DD718
+ add r4, r0, #0
+ beq _021D7EFA
+ ldr r0, [sp]
+ cmp r0, #7
+ bhi _021D7EFA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7E3A: ; jump table
+ .short _021D7EFA - _021D7E3A - 2 ; case 0
+ .short _021D7E4A - _021D7E3A - 2 ; case 1
+ .short _021D7EFA - _021D7E3A - 2 ; case 2
+ .short _021D7E66 - _021D7E3A - 2 ; case 3
+ .short _021D7EFA - _021D7E3A - 2 ; case 4
+ .short _021D7EFA - _021D7E3A - 2 ; case 5
+ .short _021D7E66 - _021D7E3A - 2 ; case 6
+ .short _021D7ECE - _021D7E3A - 2 ; case 7
+_021D7E4A:
+ bl FUN_021DD6F0
+ cmp r4, #0xa
+ blt _021D7E58
+ add sp, #8
+ add r0, r4, #0
+ pop {r4, pc}
+_021D7E58:
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ bne _021D7EFA
+ mov r0, #0
+ add sp, #8
+ mvn r0, r0
+ pop {r4, pc}
+_021D7E66:
+ ldr r0, _021D7F14 ; =0x0220FBC0
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021D7EB2
+ ldr r0, _021D7F18 ; =0x00001F44
+ ldr r0, [r1, r0]
+ cmp r0, #0x11
+ bhi _021D7EAE
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7E82: ; jump table
+ .short _021D7EAA - _021D7E82 - 2 ; case 0
+ .short _021D7EAA - _021D7E82 - 2 ; case 1
+ .short _021D7EAA - _021D7E82 - 2 ; case 2
+ .short _021D7EA6 - _021D7E82 - 2 ; case 3
+ .short _021D7EA6 - _021D7E82 - 2 ; case 4
+ .short _021D7EA6 - _021D7E82 - 2 ; case 5
+ .short _021D7EA6 - _021D7E82 - 2 ; case 6
+ .short _021D7EA6 - _021D7E82 - 2 ; case 7
+ .short _021D7EA6 - _021D7E82 - 2 ; case 8
+ .short _021D7EAE - _021D7E82 - 2 ; case 9
+ .short _021D7EAE - _021D7E82 - 2 ; case 10
+ .short _021D7EA6 - _021D7E82 - 2 ; case 11
+ .short _021D7EAE - _021D7E82 - 2 ; case 12
+ .short _021D7EAE - _021D7E82 - 2 ; case 13
+ .short _021D7EAE - _021D7E82 - 2 ; case 14
+ .short _021D7EA6 - _021D7E82 - 2 ; case 15
+ .short _021D7EA6 - _021D7E82 - 2 ; case 16
+ .short _021D7EA6 - _021D7E82 - 2 ; case 17
+_021D7EA6:
+ bl FUN_021E0200
+_021D7EAA:
+ bl FUN_021DDBBC
+_021D7EAE:
+ bl FUN_021DD6F0
+_021D7EB2:
+ ldr r0, _021D7F14 ; =0x0220FBC0
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _021D7EC0
+ ldr r0, _021D7F18 ; =0x00001F44
+ mov r1, #0xd
+ str r1, [r2, r0]
+_021D7EC0:
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ bne _021D7F10
+ mov r0, #0
+ add sp, #8
+ mvn r0, r0
+ pop {r4, pc}
+_021D7ECE:
+ ldr r1, _021D7F14 ; =0x0220FBC0
+ ldr r3, [r1]
+ cmp r3, #0
+ beq _021D7EEC
+ ldr r0, _021D7F18 ; =0x00001F44
+ mov r2, #0xe
+ str r2, [r3, r0]
+ ldr r1, [r1]
+ sub r0, #0x30
+ ldr r1, [r1, r0]
+ cmp r1, #0
+ beq _021D7EEC
+ ldr r0, [sp, #4]
+ neg r0, r0
+ blx r1
+_021D7EEC:
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ bne _021D7F10
+ mov r0, #0
+ add sp, #8
+ mvn r0, r0
+ pop {r4, pc}
+_021D7EFA:
+ ldr r0, _021D7F14 ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D7F1C ; =0x00001F82
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ beq _021D7F0E
+ mov r0, #1
+ add sp, #8
+ mvn r0, r0
+ pop {r4, pc}
+_021D7F0E:
+ mov r0, #0
+_021D7F10:
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_021D7F14: .word 0x0220FBC0
+_021D7F18: .word 0x00001F44
+_021D7F1C: .word 0x00001F82
+
+ thumb_func_start FUN_021D7F20
+FUN_021D7F20: ; 0x021D7F20
+ push {r3, r4, r5, lr}
+ ldr r0, _021D7F80 ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D7F84 ; =0x00001F4C
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ bne _021D7F7E
+ bl FUN_021DF95C
+ mov r1, #1
+ sub r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_021EB0FC
+ cmp r0, #0
+ beq _021D7F7E
+ ldr r4, _021D7F80 ; =0x0220FBC0
+ ldr r2, _021D7F84 ; =0x00001F4C
+ ldr r0, [r4]
+ mov r1, #1
+ str r1, [r0, r2]
+ add r1, r2, #0
+ ldr r0, [r4]
+ add r1, #0x2c
+ ldr r1, [r0, r1]
+ mov r3, #2
+ lsl r1, r1, #8
+ add r5, r1, #0
+ orr r5, r3
+ lsl r1, r3, #0xb
+ str r5, [r0, r1]
+ add r0, r2, #4
+ ldr r1, [r4]
+ lsl r2, r3, #0xb
+ ldr r0, [r1, r0]
+ add r1, r1, r2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r2, #4
+ bl FUN_021EB044
+ add r0, r4, #0
+ ldr r1, [r0]
+ ldr r0, _021D7F88 ; =0x00001F74
+ mov r2, #0
+ str r2, [r1, r0]
+_021D7F7E:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7F80: .word 0x0220FBC0
+_021D7F84: .word 0x00001F4C
+_021D7F88: .word 0x00001F74
+
+ thumb_func_start FUN_021D7F8C
+FUN_021D7F8C: ; 0x021D7F8C
+ push {r3, r4, r5, lr}
+ bl FUN_021DFF74
+ bl FUN_021D83F0
+ ldr r0, _021D800C ; =0x0220FBC0
+ ldr r1, _021D8010 ; =0x00001F58
+ ldr r2, [r0]
+ ldr r0, [r2, r1]
+ cmp r0, #0
+ beq _021D7FC2
+ add r0, r1, #0
+ add r0, #0x20
+ ldr r0, [r2, r0]
+ cmp r0, #1
+ bne _021D7FBA
+ add r1, #0x24
+ ldr r0, [r2, r1]
+ cmp r0, #1
+ bne _021D7FBA
+ bl FUN_021D8D04
+ b _021D7FBE
+_021D7FBA:
+ bl FUN_021D8CF0
+_021D7FBE:
+ bl FUN_021D8944
+_021D7FC2:
+ ldr r4, _021D800C ; =0x0220FBC0
+ ldr r3, _021D8014 ; =0x00001F44
+ ldr r1, [r4]
+ ldr r0, [r1, r3]
+ cmp r0, #0x11
+ bne _021D7FD2
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D7FD2:
+ cmp r0, #0x10
+ bne _021D7FDA
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021D7FDA:
+ cmp r0, #7
+ bne _021D8004
+ add r2, r3, #0
+ add r2, #0x30
+ add r0, r3, #0
+ ldr r2, [r1, r2]
+ add r0, #0x30
+ add r5, r2, #1
+ add r2, r3, #0
+ ldr r0, [r1, r0]
+ add r2, #0x30
+ str r5, [r1, r2]
+ cmp r0, #0x78
+ blt _021D8004
+ ldr r0, [r4]
+ add r3, #8
+ ldr r0, [r0, r3]
+ cmp r0, #0
+ bne _021D8004
+ bl FUN_021D7F20
+_021D8004:
+ bl FUN_021D7E18
+ pop {r3, r4, r5, pc}
+ nop
+_021D800C: .word 0x0220FBC0
+_021D8010: .word 0x00001F58
+_021D8014: .word 0x00001F44
+
+ thumb_func_start FUN_021D8018
+FUN_021D8018: ; 0x021D8018
+ push {r3, lr}
+ ldr r0, _021D803C ; =0x0220FBC0
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021D8034
+ ldr r0, _021D8040 ; =0x00001F44
+ ldr r0, [r1, r0]
+ cmp r0, #7
+ beq _021D802E
+ cmp r0, #0xf
+ bne _021D8034
+_021D802E:
+ bl FUN_021DF95C
+ pop {r3, pc}
+_021D8034:
+ mov r0, #0
+ mvn r0, r0
+ pop {r3, pc}
+ nop
+_021D803C: .word 0x0220FBC0
+_021D8040: .word 0x00001F44
+
+ thumb_func_start FUN_021D8044
+FUN_021D8044: ; 0x021D8044
+ ldr r0, _021D8050 ; =0x0220FBC0
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r0, _021D8054 ; =0x00001F58
+ str r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_021D8050: .word 0x0220FBC0
+_021D8054: .word 0x00001F58
+
+ thumb_func_start FUN_021D8058
+FUN_021D8058: ; 0x021D8058
+ push {r3, lr}
+ ldr r0, _021D80CC ; =0x0220FBC0
+ ldr r2, _021D80D0 ; =0x00001F6C
+ ldr r0, [r0]
+ ldr r1, [r0, r2]
+ cmp r1, #5
+ bhi _021D80AE
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D8072: ; jump table
+ .short _021D80AE - _021D8072 - 2 ; case 0
+ .short _021D80AE - _021D8072 - 2 ; case 1
+ .short _021D807E - _021D8072 - 2 ; case 2
+ .short _021D808A - _021D8072 - 2 ; case 3
+ .short _021D8096 - _021D8072 - 2 ; case 4
+ .short _021D80A2 - _021D8072 - 2 ; case 5
+_021D807E:
+ sub r2, #0x18
+ ldr r0, [r0, r2]
+ mov r1, #1
+ bl FUN_021D8A7C
+ b _021D80B8
+_021D808A:
+ sub r2, #0x18
+ ldr r0, [r0, r2]
+ mov r1, #2
+ bl FUN_021D8A7C
+ b _021D80B8
+_021D8096:
+ sub r2, #0x18
+ ldr r0, [r0, r2]
+ mov r1, #3
+ bl FUN_021D8A7C
+ b _021D80B8
+_021D80A2:
+ sub r2, #0x18
+ ldr r0, [r0, r2]
+ mov r1, #4
+ bl FUN_021D8A7C
+ b _021D80B8
+_021D80AE:
+ ldr r1, _021D80D4 ; =0x00001F54
+ ldr r0, [r0, r1]
+ mov r1, #4
+ bl FUN_021D8A7C
+_021D80B8:
+ ldr r0, _021D80D8 ; =FUN_021D8044
+ bl FUN_021D8C58
+ ldr r0, _021D80CC ; =0x0220FBC0
+ mov r2, #1
+ ldr r1, [r0]
+ ldr r0, _021D80DC ; =0x00001F58
+ str r2, [r1, r0]
+ pop {r3, pc}
+ nop
+_021D80CC: .word 0x0220FBC0
+_021D80D0: .word 0x00001F6C
+_021D80D4: .word 0x00001F54
+_021D80D8: .word FUN_021D8044
+_021D80DC: .word 0x00001F58
+
+ thumb_func_start FUN_021D80E0
+FUN_021D80E0: ; 0x021D80E0
+ push {r3, r4, r5, lr}
+ mov r1, #0x64
+ add r5, r0, #0
+ bl _s32_div_f
+ mov r1, #0xfa
+ add r4, r0, #0
+ add r0, r5, #0
+ lsl r1, r1, #2
+ bl _s32_div_f
+ ldr r2, _021D8270 ; =0x00004E84
+ cmp r5, r2
+ bne _021D8100
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D8100:
+ add r1, r2, #2
+ cmp r5, r1
+ blt _021D8110
+ add r1, r2, #7
+ cmp r5, r1
+ bgt _021D8110
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D8110:
+ ldr r1, _021D8274 ; =0x00004E8D
+ cmp r5, r1
+ bne _021D811A
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D811A:
+ add r1, r1, #2
+ cmp r5, r1
+ blt _021D812A
+ ldr r1, _021D8278 ; =0x00005207
+ cmp r5, r1
+ bgt _021D812A
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D812A:
+ ldr r1, _021D827C ; =0x0000CB24
+ cmp r5, r1
+ blt _021D813A
+ add r1, #0x5f
+ cmp r5, r1
+ bgt _021D813A
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D813A:
+ ldr r1, _021D8280 ; =0x0000CB88
+ cmp r5, r1
+ blt _021D814A
+ add r1, #0x5f
+ cmp r5, r1
+ bgt _021D814A
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D814A:
+ ldr r1, _021D8284 ; =0x0000CBEC
+ cmp r5, r1
+ blt _021D815A
+ add r1, #0x5f
+ cmp r5, r1
+ bgt _021D815A
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D815A:
+ ldr r1, _021D8288 ; =0x0000020B
+ cmp r4, r1
+ bne _021D8164
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D8164:
+ add r2, r1, #7
+ cmp r4, r2
+ bne _021D816E
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D816E:
+ add r2, r1, #0
+ add r2, #8
+ cmp r4, r2
+ bne _021D817A
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D817A:
+ add r2, r1, #0
+ add r2, #9
+ cmp r4, r2
+ bne _021D8186
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D8186:
+ ldr r3, _021D828C ; =0x00004E85
+ cmp r5, r3
+ bne _021D8190
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D8190:
+ cmp r0, #0x17
+ bne _021D8198
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D8198:
+ add r2, r3, #7
+ cmp r5, r2
+ bne _021D81A2
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021D81A2:
+ add r3, #9
+ cmp r5, r3
+ bne _021D81AC
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+_021D81AC:
+ add r2, r1, #0
+ sub r2, #0xb
+ cmp r4, r2
+ bne _021D81B8
+ mov r0, #4
+ pop {r3, r4, r5, pc}
+_021D81B8:
+ sub r1, #0x17
+ cmp r4, r1
+ bne _021D81C2
+ mov r0, #5
+ pop {r3, r4, r5, pc}
+_021D81C2:
+ ldr r1, _021D8290 ; =0x0000C738
+ cmp r5, r1
+ blt _021D81D2
+ add r1, #0x66
+ cmp r5, r1
+ bgt _021D81D2
+ mov r0, #6
+ pop {r3, r4, r5, pc}
+_021D81D2:
+ ldr r1, _021D8294 ; =0x0000C7A0
+ cmp r5, r1
+ blt _021D81E2
+ add r1, #0x5f
+ cmp r5, r1
+ bgt _021D81E2
+ mov r0, #6
+ pop {r3, r4, r5, pc}
+_021D81E2:
+ ldr r1, _021D8298 ; =0x00000201
+ cmp r4, r1
+ bne _021D81EC
+ mov r0, #6
+ pop {r3, r4, r5, pc}
+_021D81EC:
+ ldr r1, _021D829C ; =0x0000C79F
+ cmp r5, r1
+ bne _021D81F6
+ mov r0, #7
+ pop {r3, r4, r5, pc}
+_021D81F6:
+ ldr r1, _021D82A0 ; =0x0000CB20
+ cmp r5, r1
+ blt _021D8206
+ add r1, r1, #3
+ cmp r5, r1
+ bgt _021D8206
+ mov r0, #8
+ pop {r3, r4, r5, pc}
+_021D8206:
+ ldr r1, _021D82A4 ; =0x0000CB84
+ cmp r5, r1
+ blt _021D8216
+ add r1, r1, #3
+ cmp r5, r1
+ bgt _021D8216
+ mov r0, #8
+ pop {r3, r4, r5, pc}
+_021D8216:
+ ldr r1, _021D82A8 ; =0x0000CBE8
+ cmp r5, r1
+ blt _021D8226
+ add r1, r1, #3
+ cmp r5, r1
+ bgt _021D8226
+ mov r0, #8
+ pop {r3, r4, r5, pc}
+_021D8226:
+ ldr r1, _021D82AC ; =0x00013A2E
+ cmp r5, r1
+ bne _021D8230
+ mov r0, #9
+ pop {r3, r4, r5, pc}
+_021D8230:
+ cmp r0, #0x18
+ bne _021D8238
+ mov r0, #0xa
+ pop {r3, r4, r5, pc}
+_021D8238:
+ cmp r0, #0x19
+ bne _021D8240
+ mov r0, #0xa
+ pop {r3, r4, r5, pc}
+_021D8240:
+ cmp r0, #0x1f
+ bne _021D8248
+ mov r0, #0xa
+ pop {r3, r4, r5, pc}
+_021D8248:
+ cmp r0, #0x36
+ bne _021D8250
+ mov r0, #0xa
+ pop {r3, r4, r5, pc}
+_021D8250:
+ ldr r0, _021D82B0 ; =0x0000EA60
+ cmp r5, r0
+ blt _021D8260
+ ldr r0, _021D82B4 ; =0x0001869F
+ cmp r5, r0
+ bgt _021D8260
+ mov r0, #0xa
+ pop {r3, r4, r5, pc}
+_021D8260:
+ ldr r0, _021D82B8 ; =0x00002710
+ cmp r5, r0
+ bge _021D826A
+ mov r0, #0xb
+ pop {r3, r4, r5, pc}
+_021D826A:
+ mov r0, #0
+ mvn r0, r0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8270: .word 0x00004E84
+_021D8274: .word 0x00004E8D
+_021D8278: .word 0x00005207
+_021D827C: .word 0x0000CB24
+_021D8280: .word 0x0000CB88
+_021D8284: .word 0x0000CBEC
+_021D8288: .word 0x0000020B
+_021D828C: .word 0x00004E85
+_021D8290: .word 0x0000C738
+_021D8294: .word 0x0000C7A0
+_021D8298: .word 0x00000201
+_021D829C: .word 0x0000C79F
+_021D82A0: .word 0x0000CB20
+_021D82A4: .word 0x0000CB84
+_021D82A8: .word 0x0000CBE8
+_021D82AC: .word 0x00013A2E
+_021D82B0: .word 0x0000EA60
+_021D82B4: .word 0x0001869F
+_021D82B8: .word 0x00002710
+
+ thumb_func_start FUN_021D82BC
+FUN_021D82BC: ; 0x021D82BC
+ push {r3, lr}
+ cmp r0, #0
+ bne _021D8346
+ ldr r0, _021D8364 ; =0x0220FBC0
+ ldr r2, _021D8368 ; =0x00001F44
+ ldr r0, [r0]
+ ldr r1, [r0, r2]
+ cmp r1, #0x11
+ bhi _021D835E
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D82DA: ; jump table
+ .short _021D835E - _021D82DA - 2 ; case 0
+ .short _021D835E - _021D82DA - 2 ; case 1
+ .short _021D835E - _021D82DA - 2 ; case 2
+ .short _021D835E - _021D82DA - 2 ; case 3
+ .short _021D8342 - _021D82DA - 2 ; case 4
+ .short _021D82FE - _021D82DA - 2 ; case 5
+ .short _021D835E - _021D82DA - 2 ; case 6
+ .short _021D82FE - _021D82DA - 2 ; case 7
+ .short _021D835E - _021D82DA - 2 ; case 8
+ .short _021D835E - _021D82DA - 2 ; case 9
+ .short _021D835E - _021D82DA - 2 ; case 10
+ .short _021D835E - _021D82DA - 2 ; case 11
+ .short _021D835E - _021D82DA - 2 ; case 12
+ .short _021D8342 - _021D82DA - 2 ; case 13
+ .short _021D835E - _021D82DA - 2 ; case 14
+ .short _021D8328 - _021D82DA - 2 ; case 15
+ .short _021D8342 - _021D82DA - 2 ; case 16
+ .short _021D8342 - _021D82DA - 2 ; case 17
+_021D82FE:
+ add r2, #0x14
+ ldr r0, [r0, r2]
+ cmp r0, #0
+ beq _021D8316
+ bl FUN_021D8C08
+ ldr r0, _021D8364 ; =0x0220FBC0
+ mov r2, #0xf
+ ldr r1, [r0]
+ ldr r0, _021D8368 ; =0x00001F44
+ str r2, [r1, r0]
+ b _021D835E
+_021D8316:
+ bl FUN_021DFA40
+ ldr r0, _021D8364 ; =0x0220FBC0
+ mov r2, #0x10
+ ldr r1, [r0]
+ ldr r0, _021D8368 ; =0x00001F44
+ str r2, [r1, r0]
+ mov r0, #1
+ pop {r3, pc}
+_021D8328:
+ add r2, #0x14
+ ldr r0, [r0, r2]
+ cmp r0, #0
+ bne _021D835E
+ bl FUN_021DFA40
+ ldr r0, _021D8364 ; =0x0220FBC0
+ mov r2, #0x10
+ ldr r1, [r0]
+ ldr r0, _021D8368 ; =0x00001F44
+ str r2, [r1, r0]
+ mov r0, #1
+ pop {r3, pc}
+_021D8342:
+ mov r0, #1
+ pop {r3, pc}
+_021D8346:
+ ldr r0, _021D8364 ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D8368 ; =0x00001F44
+ ldr r0, [r1, r0]
+ cmp r0, #4
+ beq _021D835A
+ cmp r0, #0x10
+ beq _021D835A
+ cmp r0, #0x11
+ bne _021D835E
+_021D835A:
+ mov r0, #1
+ pop {r3, pc}
+_021D835E:
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_021D8364: .word 0x0220FBC0
+_021D8368: .word 0x00001F44
+
+ thumb_func_start FUN_021D836C
+FUN_021D836C: ; 0x021D836C
+ push {r3, r4}
+ ldr r2, _021D83A0 ; =0x0220FBC0
+ ldr r1, _021D83A4 ; =0x00001F44
+ ldr r3, [r2]
+ ldr r0, [r3, r1]
+ sub r0, #0x10
+ cmp r0, #1
+ bhi _021D8398
+ mov r4, #0
+ add r0, r1, #0
+ mvn r4, r4
+ add r0, #0xc
+ str r4, [r3, r0]
+ ldr r0, [r2]
+ mov r3, #4
+ str r3, [r0, r1]
+ ldr r0, [r2]
+ add r1, #0x1c
+ str r4, [r0, r1]
+ mov r0, #1
+ pop {r3, r4}
+ bx lr
+_021D8398:
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+ nop
+_021D83A0: .word 0x0220FBC0
+_021D83A4: .word 0x00001F44
+
+ thumb_func_start FUN_021D83A8
+FUN_021D83A8: ; 0x021D83A8
+ ldr r1, _021D83B8 ; =0x0220FBC0
+ ldr r2, [r1]
+ cmp r2, #0
+ beq _021D83B4
+ ldr r1, _021D83BC ; =0x00001F14
+ str r0, [r2, r1]
+_021D83B4:
+ bx lr
+ nop
+_021D83B8: .word 0x0220FBC0
+_021D83BC: .word 0x00001F14
+
+ thumb_func_start FUN_021D83C0
+FUN_021D83C0: ; 0x021D83C0
+ push {r3, lr}
+ bl FUN_021E0200
+ bl FUN_021DDBBC
+ bl FUN_021D8C6C
+ bl FUN_021D7660
+ pop {r3, pc}
+
+ thumb_func_start FUN_021D83D4
+FUN_021D83D4: ; 0x021D83D4
+ push {r3, r4}
+ ldr r3, _021D83E8 ; =0x0220FBC0
+ ldr r2, _021D83EC ; =0x00001F38
+ ldr r4, [r3]
+ str r0, [r4, r2]
+ ldr r3, [r3]
+ add r0, r2, #4
+ str r1, [r3, r0]
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+_021D83E8: .word 0x0220FBC0
+_021D83EC: .word 0x00001F38
+
+ thumb_func_start FUN_021D83F0
+FUN_021D83F0: ; 0x021D83F0
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r6, _021D8468 ; =0x0220FBC0
+ ldr r0, _021D846C ; =0x00001F38
+ ldr r1, [r6]
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021D8464
+ mov r7, #0
+_021D8400:
+ mov r1, #0x7d
+ ldr r0, [r6]
+ lsl r1, r1, #6
+ ldr r2, [r0, r1]
+ mov r1, #0x1f
+ add r5, r2, #0
+ and r5, r1
+ mov r1, #0xc
+ add r4, r5, #0
+ mul r4, r1
+ mov r1, #0x11
+ lsl r1, r1, #8
+ ldr r0, [r0, r1]
+ add r0, r0, r4
+ bl FUN_02097490
+ cmp r0, #0
+ beq _021D844A
+ mov r0, #0x11
+ ldr r2, [r6]
+ ldr r1, _021D846C ; =0x00001F38
+ lsl r0, r0, #8
+ ldr r0, [r2, r0]
+ ldr r3, _021D8470 ; =0x00001F3C
+ ldr r1, [r2, r1]
+ ldr r2, [r2, r3]
+ add r0, r0, r4
+ add r3, r2, #0
+ mul r3, r5
+ add r1, r1, r3
+ add r2, sp, #0
+ bl FUN_021E2578
+ ldr r1, [r6]
+ add r2, r1, r5
+ ldr r1, _021D8474 ; =0x00001F18
+ strb r0, [r2, r1]
+_021D844A:
+ mov r1, #0x7d
+ ldr r0, [r6]
+ lsl r1, r1, #6
+ ldr r1, [r0, r1]
+ add r7, r7, #1
+ add r2, r1, #1
+ mov r1, #0x1f
+ and r2, r1
+ mov r1, #0x7d
+ lsl r1, r1, #6
+ str r2, [r0, r1]
+ cmp r7, #4
+ blt _021D8400
+_021D8464:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8468: .word 0x0220FBC0
+_021D846C: .word 0x00001F38
+_021D8470: .word 0x00001F3C
+_021D8474: .word 0x00001F18
+
+ thumb_func_start FUN_021D8478
+FUN_021D8478: ; 0x021D8478
+ ldr r3, _021D847C ; =FUN_021E2454
+ bx r3
+ .align 2, 0
+_021D847C: .word FUN_021E2454
+
+ thumb_func_start FUN_021D8480
+FUN_021D8480: ; 0x021D8480
+ ldr r1, _021D848C ; =0x0220FBC0
+ ldr r1, [r1]
+ add r1, r1, r0
+ ldr r0, _021D8490 ; =0x00001F18
+ ldrb r0, [r1, r0]
+ bx lr
+ .align 2, 0
+_021D848C: .word 0x0220FBC0
+_021D8490: .word 0x00001F18
+
+ thumb_func_start FUN_021D8494
+FUN_021D8494: ; 0x021D8494
+ push {r3, lr}
+ ldr r1, _021D8510 ; =0x0220FBC0
+ ldr r3, [r1]
+ ldr r1, _021D8514 ; =0x00001F44
+ ldr r2, [r3, r1]
+ cmp r2, #4
+ beq _021D84A6
+ mov r0, #0
+ pop {r3, pc}
+_021D84A6:
+ add r1, #0x18
+ str r0, [r3, r1]
+ cmp r0, #0
+ bge _021D84C2
+ ldr r1, _021D8518 ; =FUN_021D8558
+ mov r2, #0
+ ldr r3, _021D851C ; =FUN_021D85A0
+ mov r0, #2
+ str r2, [sp]
+ bl FUN_021DFD18
+ mov r2, #1
+ ldr r0, _021D8510 ; =0x0220FBC0
+ b _021D84D2
+_021D84C2:
+ ldr r1, _021D8520 ; =FUN_021D8590
+ mov r2, #0
+ ldr r3, _021D851C ; =FUN_021D85A0
+ str r2, [sp]
+ bl FUN_021DFB20
+ ldr r0, _021D8510 ; =0x0220FBC0
+ mov r2, #2
+_021D84D2:
+ ldr r1, [r0]
+ ldr r0, _021D8524 ; =0x00001F48
+ str r2, [r1, r0]
+ ldr r0, _021D8510 ; =0x0220FBC0
+ mov r2, #5
+ ldr r1, [r0]
+ ldr r0, _021D8514 ; =0x00001F44
+ str r2, [r1, r0]
+ ldr r0, _021D8528 ; =FUN_021D7C30
+ bl FUN_021EAE18
+ ldr r0, _021D852C ; =FUN_021D7C4C
+ bl FUN_021EADF8
+ ldr r0, _021D8530 ; =FUN_021D7D68
+ mov r1, #0
+ bl FUN_021DFAF8
+ ldr r0, _021D8534 ; =FUN_021D7B14
+ bl FUN_021EADD8
+ ldr r1, _021D8510 ; =0x0220FBC0
+ ldr r0, _021D8538 ; =0x00001F4C
+ ldr r2, [r1]
+ mov r3, #0
+ str r3, [r2, r0]
+ ldr r1, [r1]
+ add r0, #0x3c
+ str r3, [r1, r0]
+ mov r0, #1
+ pop {r3, pc}
+ .align 2, 0
+_021D8510: .word 0x0220FBC0
+_021D8514: .word 0x00001F44
+_021D8518: .word FUN_021D8558
+_021D851C: .word FUN_021D85A0
+_021D8520: .word FUN_021D8590
+_021D8524: .word 0x00001F48
+_021D8528: .word FUN_021D7C30
+_021D852C: .word FUN_021D7C4C
+_021D8530: .word FUN_021D7D68
+_021D8534: .word FUN_021D7B14
+_021D8538: .word 0x00001F4C
+
+ thumb_func_start FUN_021D853C
+FUN_021D853C: ; 0x021D853C
+ ldr r0, _021D8550 ; =0x0220FBC0
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021D854A
+ ldr r0, _021D8554 ; =0x00001F5C
+ ldr r0, [r1, r0]
+ bx lr
+_021D854A:
+ mov r0, #0
+ mvn r0, r0
+ bx lr
+ .align 2, 0
+_021D8550: .word 0x0220FBC0
+_021D8554: .word 0x00001F5C
+
+ thumb_func_start FUN_021D8558
+FUN_021D8558: ; 0x021D8558
+ push {r3, lr}
+ cmp r0, #0
+ bne _021D8582
+ cmp r1, #0
+ bne _021D8572
+ ldr r0, _021D8584 ; =0x0220FBC0
+ ldr r2, [sp, #8]
+ ldr r1, [r0]
+ ldr r0, _021D8588 ; =0x00001F5C
+ str r2, [r1, r0]
+ bl FUN_021D7BC0
+ pop {r3, pc}
+_021D8572:
+ cmp r2, #0
+ bne _021D8582
+ ldr r0, _021D8584 ; =0x0220FBC0
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r0, _021D858C ; =0x00001F60
+ mvn r2, r2
+ str r2, [r1, r0]
+_021D8582:
+ pop {r3, pc}
+ .align 2, 0
+_021D8584: .word 0x0220FBC0
+_021D8588: .word 0x00001F5C
+_021D858C: .word 0x00001F60
+
+ thumb_func_start FUN_021D8590
+FUN_021D8590: ; 0x021D8590
+ push {r3, lr}
+ cmp r0, #0
+ bne _021D859E
+ cmp r1, #0
+ bne _021D859E
+ bl FUN_021D7BC0
+_021D859E:
+ pop {r3, pc}
+
+ thumb_func_start FUN_021D85A0
+FUN_021D85A0: ; 0x021D85A0
+ ldr r1, _021D85AC ; =0x0220FBC0
+ ldr r2, [r1]
+ ldr r1, _021D85B0 ; =0x00001F60
+ str r0, [r2, r1]
+ bx lr
+ nop
+_021D85AC: .word 0x0220FBC0
+_021D85B0: .word 0x00001F60
+
+ thumb_func_start FUN_021D85B4
+FUN_021D85B4: ; 0x021D85B4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ ldr r0, _021D8614 ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D8618 ; =0x00001EF0
+ ldr r0, [r1, r0]
+ bl FUN_02096F80
+ cmp r0, #0
+ bne _021D85D8
+ ldr r0, _021D8614 ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D8618 ; =0x00001EF0
+ ldr r0, [r1, r0]
+ add r1, sp, #0xc
+ bl FUN_02096CCC
+ b _021D85E6
+_021D85D8:
+ ldr r0, _021D8614 ; =0x0220FBC0
+ ldr r1, [r0]
+ ldr r0, _021D8618 ; =0x00001EF0
+ ldr r0, [r1, r0]
+ add r1, sp, #0
+ bl FUN_02096CCC
+_021D85E6:
+ mov r4, #0
+ mov r7, #0x11
+ ldr r6, _021D8614 ; =0x0220FBC0
+ add r5, r4, #0
+ lsl r7, r7, #8
+_021D85F0:
+ mov r0, #0x11
+ ldr r1, [r6]
+ lsl r0, r0, #8
+ ldr r0, [r1, r0]
+ add r0, r0, r5
+ bl FUN_02097484
+ ldr r0, [r6]
+ ldr r0, [r0, r7]
+ add r0, r0, r5
+ bl FUN_02097490
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, #0x20
+ blt _021D85F0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8614: .word 0x0220FBC0
+_021D8618: .word 0x00001EF0
+
+ thumb_func_start FUN_021D861C
+FUN_021D861C: ; 0x021D861C
+ ldr r3, _021D8620 ; =FUN_021D8CC8
+ bx r3
+ .align 2, 0
+_021D8620: .word FUN_021D8CC8
+
+ thumb_func_start FUN_021D8624
+FUN_021D8624: ; 0x021D8624
+ ldr r0, _021D8638 ; =0x0220FBC0
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021D8632
+ ldr r0, _021D863C ; =0x00001F68
+ ldr r0, [r1, r0]
+ bx lr
+_021D8632:
+ mov r0, #0
+ bx lr
+ nop
+_021D8638: .word 0x0220FBC0
+_021D863C: .word 0x00001F68
+
+ thumb_func_start FUN_021D8640
+FUN_021D8640: ; 0x021D8640
+ ldr r0, _021D8654 ; =0x0220FBC0
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021D864E
+ ldr r0, _021D8658 ; =0x00001F60
+ ldr r0, [r1, r0]
+ bx lr
+_021D864E:
+ mov r0, #0
+ bx lr
+ nop
+_021D8654: .word 0x0220FBC0
+_021D8658: .word 0x00001F60
+
+ thumb_func_start FUN_021D865C
+FUN_021D865C: ; 0x021D865C
+ ldr r0, _021D8670 ; =0x0220FBC0
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _021D866C
+ mov r1, #0
+ ldr r0, _021D8674 ; =0x00001F60
+ mvn r1, r1
+ str r1, [r2, r0]
+_021D866C:
+ bx lr
+ nop
+_021D8670: .word 0x0220FBC0
+_021D8674: .word 0x00001F60
+
+ thumb_func_start FUN_021D8678
+FUN_021D8678: ; 0x021D8678
+ ldr r1, _021D8684 ; =0x0220FBC0
+ ldr r2, [r1]
+ ldr r1, _021D8688 ; =0x00001F68
+ str r0, [r2, r1]
+ bx lr
+ nop
+_021D8684: .word 0x0220FBC0
+_021D8688: .word 0x00001F68
+
+ thumb_func_start FUN_021D868C
+FUN_021D868C: ; 0x021D868C
+ push {r3, r4, r5, lr}
+ bl MIC_Init
+ bl PM_Init
+ mov r0, #1
+ bl PM_SetAmp
+ mov r0, #3
+ bl PM_SetAmpGain
+ ldr r0, _021D8718 ; =0x0220FBC8
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r3, _021D871C ; =0x00003584
+ add r5, r2, #0
+ str r2, [r1, r3]
+ add r1, r3, #0
+ ldr r4, [r0, #4]
+ add r1, #0xc
+ str r2, [r4, r1]
+ ldr r4, [r0, #4]
+ add r1, r3, #4
+ str r2, [r4, r1]
+ add r1, r3, #0
+ ldr r4, [r0, #4]
+ add r1, #8
+ str r2, [r4, r1]
+ ldr r1, [r0, #4]
+ add r3, #0x10
+ str r2, [r1, r3]
+ ldr r3, _021D8720 ; =0x00003598
+ add r1, r2, #0
+_021D86CE:
+ ldr r4, [r0, #4]
+ add r2, r2, #1
+ add r4, r4, r5
+ add r5, r5, #2
+ strh r1, [r4, r3]
+ cmp r2, #0x10
+ blt _021D86CE
+ ldr r0, _021D8718 ; =0x0220FBC8
+ ldr r2, [r0, #4]
+ ldr r0, _021D8724 ; =0x000035B8
+ str r1, [r2, r0]
+ mov r0, #1
+ bl FUN_020AA770
+ bl FUN_020C01D0
+ ldr r0, _021D8718 ; =0x0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8728 ; =0x00003504
+ add r0, r1, r0
+ bl FUN_020C16FC
+ ldr r1, _021D8718 ; =0x0220FBC8
+ mov r0, #0
+ ldr r2, [r1, #4]
+ mov r1, #0xb1
+ lsl r1, r1, #6
+ add r1, r2, r1
+ mov r2, #0x22
+ lsl r2, r2, #6
+ bl MIi_CpuClearFast
+ ldr r0, _021D8718 ; =0x0220FBC8
+ mov r1, #0
+ str r1, [r0, #8]
+ pop {r3, r4, r5, pc}
+ nop
+_021D8718: .word 0x0220FBC8
+_021D871C: .word 0x00003584
+_021D8720: .word 0x00003598
+_021D8724: .word 0x000035B8
+_021D8728: .word 0x00003504
+
+ thumb_func_start FUN_021D872C
+FUN_021D872C: ; 0x021D872C
+ bx lr
+ .align 2, 0
+
+ thumb_func_start FUN_021D8730
+FUN_021D8730: ; 0x021D8730
+ push {r4, r5, r6, lr}
+ add r6, r2, #0
+ add r5, r3, #0
+ ldr r4, [sp, #0x14]
+ cmp r0, #0
+ bne _021D8748
+ ldr r0, [r6]
+ mov r1, #0
+ add r2, r5, #0
+ bl MI_CpuFill8
+ pop {r4, r5, r6, pc}
+_021D8748:
+ ldr r0, _021D87B8 ; =0x0220FBC8
+ ldr r2, [r0, #4]
+ ldr r0, _021D87BC ; =0x00003565
+ ldrb r1, [r2, r0]
+ cmp r1, #0
+ beq _021D876A
+ add r0, r0, #3
+ add r0, r2, r0
+ ldr r1, _021D87C0 ; =FUN_021D872C
+ mov r2, #0
+ bl MIC_StartAutoSamplingAsync
+ ldr r0, _021D87B8 ; =0x0220FBC8
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D87BC ; =0x00003565
+ strb r2, [r1, r0]
+_021D876A:
+ bl MIC_GetLastSamplingAddress
+ sub r0, r0, r4
+ cmp r0, r5
+ bhs _021D8776
+ add r4, r4, r5
+_021D8776:
+ ldr r0, _021D87C4 ; =0x027FFFA8
+ ldrh r1, [r0]
+ mov r0, #2
+ lsl r0, r0, #0xe
+ and r0, r1
+ asr r0, r0, #0xf
+ beq _021D878E
+ ldr r0, _021D87B8 ; =0x0220FBC8
+ ldr r1, [r0, #4]
+ mov r0, #0xb1
+ lsl r0, r0, #6
+ add r4, r1, r0
+_021D878E:
+ ldr r0, _021D87B8 ; =0x0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D87C8 ; =0x000034FC
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ bne _021D87A2
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_020AABDC
+_021D87A2:
+ ldr r0, [r6]
+ add r1, r5, #0
+ mov r2, #0
+ bl FUN_020AA824
+ ldr r0, _021D87B8 ; =0x0220FBC8
+ mov r2, #2
+ ldr r1, [r0, #4]
+ ldr r0, _021D87CC ; =0x00003564
+ strb r2, [r1, r0]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D87B8: .word 0x0220FBC8
+_021D87BC: .word 0x00003565
+_021D87C0: .word FUN_021D872C
+_021D87C4: .word 0x027FFFA8
+_021D87C8: .word 0x000034FC
+_021D87CC: .word 0x00003564
+
+ thumb_func_start FUN_021D87D0
+FUN_021D87D0: ; 0x021D87D0
+ push {r4, lr}
+ ldr r1, _021D8810 ; =0x0220FBC8
+ ldr r2, [r1, #4]
+ ldr r1, _021D8814 ; =0x00003560
+ ldr r1, [r2, r1]
+ cmp r1, #0
+ bne _021D880A
+ bl FUN_020ACD54
+ add r4, r0, #0
+ bne _021D87EA
+ mov r0, #0
+ pop {r4, pc}
+_021D87EA:
+ mov r1, #0
+ bl FUN_020ACBA0
+ cmp r0, #0
+ beq _021D87FE
+ add r0, r4, #0
+ bl FUN_020ACC84
+ mov r0, #0
+ pop {r4, pc}
+_021D87FE:
+ ldr r0, _021D8810 ; =0x0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8814 ; =0x00003560
+ str r4, [r1, r0]
+ mov r0, #1
+ pop {r4, pc}
+_021D880A:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_021D8810: .word 0x0220FBC8
+_021D8814: .word 0x00003560
+
+ thumb_func_start FUN_021D8818
+FUN_021D8818: ; 0x021D8818
+ push {r3, lr}
+ ldr r0, _021D8858 ; =0x0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D885C ; =0x00003560
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021D8852
+ ldr r1, [r0, #0xc]
+ cmp r1, #4
+ bne _021D8852
+ mov r1, #0
+ bl FUN_020ACAB0
+ cmp r0, #0
+ beq _021D883A
+ mov r0, #0
+ pop {r3, pc}
+_021D883A:
+ ldr r0, _021D8858 ; =0x0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D885C ; =0x00003560
+ ldr r0, [r1, r0]
+ bl FUN_020AADCC
+ cmp r0, #0
+ beq _021D884E
+ mov r0, #1
+ pop {r3, pc}
+_021D884E:
+ mov r0, #0
+ pop {r3, pc}
+_021D8852:
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_021D8858: .word 0x0220FBC8
+_021D885C: .word 0x00003560
+
+ thumb_func_start FUN_021D8860
+FUN_021D8860: ; 0x021D8860
+ push {r4, lr}
+ add r4, r2, #0
+ cmp r1, #0xc
+ bhi _021D8902
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8874: ; jump table
+ .short _021D8902 - _021D8874 - 2 ; case 0
+ .short _021D888E - _021D8874 - 2 ; case 1
+ .short _021D88F4 - _021D8874 - 2 ; case 2
+ .short _021D88FC - _021D8874 - 2 ; case 3
+ .short _021D88CE - _021D8874 - 2 ; case 4
+ .short _021D8902 - _021D8874 - 2 ; case 5
+ .short _021D8902 - _021D8874 - 2 ; case 6
+ .short _021D88DE - _021D8874 - 2 ; case 7
+ .short _021D88AE - _021D8874 - 2 ; case 8
+ .short _021D88C2 - _021D8874 - 2 ; case 9
+ .short _021D8902 - _021D8874 - 2 ; case 10
+ .short _021D88FC - _021D8874 - 2 ; case 11
+ .short _021D88FC - _021D8874 - 2 ; case 12
+_021D888E:
+ ldr r0, _021D8904 ; =0x0220FBC8
+ ldr r2, [r0, #4]
+ ldr r0, _021D8908 ; =0x00003560
+ ldr r1, [r2, r0]
+ cmp r1, #0
+ beq _021D88AA
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_020ACAB0
+ add r0, r4, #0
+ bl FUN_020ACC84
+ pop {r4, pc}
+_021D88AA:
+ str r4, [r2, r0]
+ pop {r4, pc}
+_021D88AE:
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020ACAB0
+ add r0, r4, #0
+ bl FUN_021D8910
+ bl FUN_021D8C6C
+ pop {r4, pc}
+_021D88C2:
+ add r0, r4, #0
+ bl FUN_021D8910
+ bl FUN_021D8C6C
+ pop {r4, pc}
+_021D88CE:
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_020ACAB0
+ add r0, r4, #0
+ bl FUN_021D8910
+ pop {r4, pc}
+_021D88DE:
+ add r0, r4, #0
+ bl FUN_020AADCC
+ cmp r0, #0
+ beq _021D8902
+ ldr r0, _021D8904 ; =0x0220FBC8
+ mov r2, #2
+ ldr r1, [r0, #4]
+ ldr r0, _021D890C ; =0x000034F8
+ str r2, [r1, r0]
+ pop {r4, pc}
+_021D88F4:
+ add r0, r4, #0
+ bl FUN_021D8910
+ pop {r4, pc}
+_021D88FC:
+ add r0, r4, #0
+ bl FUN_021D8910
+_021D8902:
+ pop {r4, pc}
+ .align 2, 0
+_021D8904: .word 0x0220FBC8
+_021D8908: .word 0x00003560
+_021D890C: .word 0x000034F8
+
+ thumb_func_start FUN_021D8910
+FUN_021D8910: ; 0x021D8910
+ push {r4, lr}
+ ldr r1, _021D893C ; =0x0220FBC8
+ add r4, r0, #0
+ ldr r2, [r1, #4]
+ ldr r1, _021D8940 ; =0x00003560
+ ldr r1, [r2, r1]
+ cmp r4, r1
+ bne _021D8936
+ bl FUN_020AACFC
+ add r0, r4, #0
+ bl FUN_020ACC84
+ ldr r0, _021D893C ; =0x0220FBC8
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D8940 ; =0x00003560
+ str r2, [r1, r0]
+ pop {r4, pc}
+_021D8936:
+ bl FUN_020ACC84
+ pop {r4, pc}
+ .align 2, 0
+_021D893C: .word 0x0220FBC8
+_021D8940: .word 0x00003560
+
+ thumb_func_start FUN_021D8944
+FUN_021D8944: ; 0x021D8944
+ push {r4, r5, r6, lr}
+ bl OS_GetTick
+ add r4, r0, #0
+ ldr r0, _021D8A3C ; =0x0220FBC8
+ add r5, r1, #0
+ ldr r0, [r0, #0xc]
+ sub r1, r4, r0
+ mov r0, #0xfa
+ lsl r0, r0, #8
+ mul r0, r1
+ ldr r1, _021D8A40 ; =0x000082EA
+ bl _u32_div_f
+ ldr r1, _021D8A3C ; =0x0220FBC8
+ ldr r3, _021D8A44 ; =0x0000411A
+ ldr r2, [r1, #8]
+ sub r0, r0, r3
+ add r2, r2, r0
+ ldr r0, _021D8A48 ; =0xFFFFD8F0
+ str r2, [r1, #8]
+ cmp r2, r0
+ bge _021D8976
+ mov r0, #0
+ str r0, [r1, #8]
+_021D8976:
+ ldr r0, _021D8A3C ; =0x0220FBC8
+ str r4, [r0, #0xc]
+ str r5, [r0, #0x10]
+ bl FUN_020AD8A8
+ ldr r4, _021D8A3C ; =0x0220FBC8
+ ldr r0, _021D8A44 ; =0x0000411A
+ ldr r1, [r4, #8]
+ cmp r1, r0
+ blt _021D899C
+ add r6, r0, #0
+ add r5, r0, #0
+_021D898E:
+ bl FUN_020AD8A8
+ ldr r0, [r4, #8]
+ sub r0, r0, r6
+ str r0, [r4, #8]
+ cmp r0, r5
+ bge _021D898E
+_021D899C:
+ ldr r0, _021D8A3C ; =0x0220FBC8
+ ldr r2, [r0, #4]
+ ldr r0, _021D8A4C ; =0x0000358C
+ ldr r1, [r2, r0]
+ cmp r1, #0
+ beq _021D89EC
+ sub r0, r0, #4
+ ldr r0, [r2, r0]
+ cmp r0, #3
+ bhi _021D89E2
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D89BC: ; jump table
+ .short _021D89C4 - _021D89BC - 2 ; case 0
+ .short _021D89CC - _021D89BC - 2 ; case 1
+ .short _021D89D4 - _021D89BC - 2 ; case 2
+ .short _021D89DC - _021D89BC - 2 ; case 3
+_021D89C4:
+ mov r0, #3
+ bl PM_SetAmpGain
+ b _021D89E2
+_021D89CC:
+ mov r0, #2
+ bl PM_SetAmpGain
+ b _021D89E2
+_021D89D4:
+ mov r0, #1
+ bl PM_SetAmpGain
+ b _021D89E2
+_021D89DC:
+ mov r0, #0
+ bl PM_SetAmpGain
+_021D89E2:
+ ldr r0, _021D8A3C ; =0x0220FBC8
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D8A4C ; =0x0000358C
+ str r2, [r1, r0]
+_021D89EC:
+ ldr r0, _021D8A3C ; =0x0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8A50 ; =0x000034F8
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021D8A00
+ cmp r0, #1
+ beq _021D8A3A
+ cmp r0, #2
+ pop {r4, r5, r6, pc}
+_021D8A00:
+ bl FUN_021D8018
+ cmp r0, #0
+ bne _021D8A1E
+ mov r0, #1
+ bl FUN_021D87D0
+ cmp r0, #0
+ beq _021D8A3A
+ ldr r0, _021D8A3C ; =0x0220FBC8
+ mov r2, #1
+ ldr r1, [r0, #4]
+ ldr r0, _021D8A50 ; =0x000034F8
+ str r2, [r1, r0]
+ pop {r4, r5, r6, pc}
+_021D8A1E:
+ bl FUN_021D8018
+ cmp r0, #1
+ bne _021D8A3A
+ mov r0, #0
+ bl FUN_021D8818
+ cmp r0, #0
+ beq _021D8A3A
+ ldr r0, _021D8A3C ; =0x0220FBC8
+ mov r2, #2
+ ldr r1, [r0, #4]
+ ldr r0, _021D8A50 ; =0x000034F8
+ str r2, [r1, r0]
+_021D8A3A:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D8A3C: .word 0x0220FBC8
+_021D8A40: .word 0x000082EA
+_021D8A44: .word 0x0000411A
+_021D8A48: .word 0xFFFFD8F0
+_021D8A4C: .word 0x0000358C
+_021D8A50: .word 0x000034F8
+
+ thumb_func_start FUN_021D8A54
+FUN_021D8A54: ; 0x021D8A54
+ push {r3, lr}
+ ldr r3, _021D8A78 ; =0x0220FBC8
+ ldr r3, [r3, #4]
+ cmp r3, #0
+ bne _021D8A62
+ mov r0, #0
+ pop {r3, pc}
+_021D8A62:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020AD834
+ cmp r0, #0
+ beq _021D8A72
+ mov r0, #1
+ pop {r3, pc}
+_021D8A72:
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_021D8A78: .word 0x0220FBC8
+
+ thumb_func_start FUN_021D8A7C
+FUN_021D8A7C: ; 0x021D8A7C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ ldr r2, _021D8BC8 ; =0x0220BAC0
+ add r4, r1, #0
+ ldrb r3, [r2]
+ add r1, sp, #0x10
+ add r5, r0, #0
+ strb r3, [r1]
+ ldrb r3, [r2, #1]
+ ldrb r2, [r2, #2]
+ strb r3, [r1, #1]
+ strb r2, [r1, #2]
+ ldr r1, _021D8BCC ; =0x0220FBC8
+ ldr r1, [r1, #4]
+ cmp r1, #0
+ bne _021D8ACA
+ ldr r1, _021D8BD0 ; =0x000035DC
+ bl FUN_02016998
+ ldr r2, _021D8BCC ; =0x0220FBC8
+ mov r1, #0x35
+ str r0, [r2]
+ add r0, #0x1f
+ lsr r0, r0, #5
+ lsl r0, r0, #5
+ str r0, [r2, #4]
+ lsl r1, r1, #8
+ str r5, [r0, r1]
+ add r0, r1, #0
+ ldr r5, _021D8BD4 ; =0x0220FBE0
+ ldr r3, [r2, #4]
+ sub r0, #0x40
+ str r5, [r3, r0]
+ ldr r0, [r2, #4]
+ mov r3, #0
+ sub r1, #0x3c
+ str r3, [r0, r1]
+ bl FUN_021D868C
+_021D8ACA:
+ ldr r5, _021D8BCC ; =0x0220FBC8
+ mov r7, #0x11
+ ldr r0, [r5, #4]
+ ldr r3, _021D8BD8 ; =0x00003568
+ mov r1, #3
+ str r1, [r0, r3]
+ add r1, r3, #0
+ ldr r0, [r5, #4]
+ sub r1, #0xa8
+ ldr r2, [r0, r1]
+ add r1, r3, #4
+ str r2, [r0, r1]
+ lsl r7, r7, #6
+ add r0, r3, #0
+ ldr r1, [r5, #4]
+ lsl r2, r7, #1
+ add r0, #8
+ str r2, [r1, r0]
+ mov r2, #0x41
+ add r0, r3, #0
+ ldr r1, [r5, #4]
+ lsl r2, r2, #6
+ add r0, #0xc
+ str r2, [r1, r0]
+ add r0, r3, #0
+ ldr r2, [r5, #4]
+ mov r1, #1
+ add r0, #0x10
+ str r1, [r2, r0]
+ add r2, r3, #0
+ ldr r6, [r5, #4]
+ mov r0, #0
+ add r2, #0x14
+ str r0, [r6, r2]
+ add r2, r3, #0
+ ldr r6, [r5, #4]
+ add r2, #0x18
+ str r0, [r6, r2]
+ sub r0, r3, #3
+ ldr r2, [r5, #4]
+ sub r3, #0x64
+ strb r1, [r2, r0]
+ ldr r0, [r5, #4]
+ add r2, sp, #0x10
+ add r0, r0, r3
+ bl FUN_020C169C
+ add r0, r5, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D8BDC ; =0x00003504
+ add r0, r1, r0
+ mov r1, #0
+ bl FUN_020C13C4
+ mov r0, #0x41
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _021D8BE0 ; =FUN_021D8730
+ add r1, r5, #0
+ str r0, [sp, #8]
+ mov r0, #0xd3
+ ldr r2, [r1, #4]
+ lsl r0, r0, #6
+ ldr r2, [r2, r0]
+ add r0, #0x44
+ str r2, [sp, #0xc]
+ ldr r3, [r1, #4]
+ mov r2, #0x8f
+ lsl r2, r2, #6
+ add r0, r3, r0
+ add r2, r3, r2
+ mov r1, #1
+ lsl r3, r7, #1
+ bl FUN_020C14AC
+ ldr r2, _021D8BCC ; =0x0220FBC8
+ ldr r1, _021D8BE4 ; =0x000034F8
+ ldr r0, [r2, #4]
+ mov r5, #0
+ str r5, [r0, r1]
+ add r0, r1, #0
+ ldr r3, [r2, #4]
+ add r0, #0x68
+ str r5, [r3, r0]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ ldr r0, [r2, #4]
+ sub r1, #0x30
+ add r0, r0, r1
+ str r0, [sp, #0x14]
+ mov r0, #2
+ str r0, [sp, #0x18]
+ bl FUN_021D8018
+ add r1, sp, #0x10
+ strb r0, [r1, #0x10]
+ ldr r0, _021D8BE8 ; =FUN_021D8860
+ str r0, [sp, #0x2c]
+ add r0, r5, #0
+ str r0, [sp, #0x30]
+ ldr r0, _021D8BCC ; =0x0220FBC8
+ ldr r0, [r0, #4]
+ str r0, [sp, #0x24]
+ mov r0, #0x8f
+ lsl r0, r0, #6
+ str r0, [sp, #0x28]
+ add r0, sp, #0x14
+ bl FUN_020AD93C
+ cmp r0, #0
+ ldr r0, _021D8BCC ; =0x0220FBC8
+ add r2, r5, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D8BEC ; =0x000034FC
+ str r2, [r1, r0]
+ add r0, r4, #0
+ bl FUN_020AA7A0
+ bl FUN_021D8BF0
+ mov r0, #1
+ bl FUN_020AA760
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D8BC8: .word 0x0220BAC0
+_021D8BCC: .word 0x0220FBC8
+_021D8BD0: .word 0x000035DC
+_021D8BD4: .word 0x0220FBE0
+_021D8BD8: .word 0x00003568
+_021D8BDC: .word 0x00003504
+_021D8BE0: .word FUN_021D8730
+_021D8BE4: .word 0x000034F8
+_021D8BE8: .word FUN_021D8860
+_021D8BEC: .word 0x000034FC
+
+ thumb_func_start FUN_021D8BF0
+FUN_021D8BF0: ; 0x021D8BF0
+ ldr r0, _021D8BFC ; =0x0220FBC8
+ ldr r3, _021D8C00 ; =0x020C1458
+ ldr r1, [r0, #4]
+ ldr r0, _021D8C04 ; =0x00003504
+ add r0, r1, r0
+ bx r3
+ .align 2, 0
+_021D8BFC: .word 0x0220FBC8
+_021D8C00: .word 0x020C1458
+_021D8C04: .word 0x00003504
+
+ thumb_func_start FUN_021D8C08
+FUN_021D8C08: ; 0x021D8C08
+ push {r3, lr}
+ ldr r0, _021D8C50 ; =0x0220FBC8
+ ldr r1, _021D8C54 ; =0x00003560
+ ldr r2, [r0, #4]
+ ldr r0, [r2, r1]
+ cmp r0, #0
+ beq _021D8C1E
+ sub r1, #0x68
+ ldr r1, [r2, r1]
+ cmp r1, #0
+ bne _021D8C24
+_021D8C1E:
+ bl FUN_021D8C6C
+ pop {r3, pc}
+_021D8C24:
+ cmp r1, #1
+ bne _021D8C38
+ mov r1, #2
+ bl FUN_020ACBA0
+ cmp r0, #0
+ beq _021D8C38
+ bl FUN_021D8C6C
+ pop {r3, pc}
+_021D8C38:
+ ldr r0, _021D8C50 ; =0x0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8C54 ; =0x00003560
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020ACBA0
+ cmp r0, #0
+ beq _021D8C4E
+ bl FUN_021D8C6C
+_021D8C4E:
+ pop {r3, pc}
+ .align 2, 0
+_021D8C50: .word 0x0220FBC8
+_021D8C54: .word 0x00003560
+
+ thumb_func_start FUN_021D8C58
+FUN_021D8C58: ; 0x021D8C58
+ ldr r1, _021D8C64 ; =0x0220FBC8
+ ldr r2, [r1, #4]
+ ldr r1, _021D8C68 ; =0x000034C4
+ str r0, [r2, r1]
+ bx lr
+ nop
+_021D8C64: .word 0x0220FBC8
+_021D8C68: .word 0x000034C4
+
+ thumb_func_start FUN_021D8C6C
+FUN_021D8C6C: ; 0x021D8C6C
+ push {r4, lr}
+ ldr r0, _021D8CBC ; =0x0220FBC8
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021D8CBA
+ ldr r1, [r0, #4]
+ ldr r0, _021D8CC0 ; =0x000034C4
+ ldr r4, [r1, r0]
+ bl MIC_StopAutoSampling
+ ldr r0, _021D8CBC ; =0x0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8CC4 ; =0x00003504
+ add r0, r1, r0
+ bl FUN_020C1430
+ ldr r0, _021D8CBC ; =0x0220FBC8
+ ldr r1, [r0, #4]
+ ldr r0, _021D8CC4 ; =0x00003504
+ add r0, r1, r0
+ bl FUN_020C1674
+ bl FUN_020AD904
+ ldr r1, _021D8CBC ; =0x0220FBC8
+ mov r0, #0x35
+ ldr r2, [r1, #4]
+ lsl r0, r0, #8
+ ldr r0, [r2, r0]
+ ldr r1, [r1]
+ bl FUN_02016A8C
+ mov r1, #0
+ ldr r0, _021D8CBC ; =0x0220FBC8
+ cmp r4, #0
+ str r1, [r0]
+ str r1, [r0, #4]
+ beq _021D8CBA
+ blx r4
+_021D8CBA:
+ pop {r4, pc}
+ .align 2, 0
+_021D8CBC: .word 0x0220FBC8
+_021D8CC0: .word 0x000034C4
+_021D8CC4: .word 0x00003504
+
+ thumb_func_start FUN_021D8CC8
+FUN_021D8CC8: ; 0x021D8CC8
+ push {r3, lr}
+ sub sp, #0x10
+ ldr r0, _021D8CEC ; =0x0220FBC8
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021D8CE6
+ add r0, sp, #0
+ bl FUN_020AD144
+ ldr r0, [sp, #4]
+ cmp r0, #2
+ ble _021D8CE6
+ ldr r0, [sp]
+ add sp, #0x10
+ pop {r3, pc}
+_021D8CE6:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, pc}
+ .align 2, 0
+_021D8CEC: .word 0x0220FBC8
+
+ thumb_func_start FUN_021D8CF0
+FUN_021D8CF0: ; 0x021D8CF0
+ ldr r0, _021D8CFC ; =0x0220FBC8
+ mov r2, #1
+ ldr r1, [r0, #4]
+ ldr r0, _021D8D00 ; =0x000034FC
+ str r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_021D8CFC: .word 0x0220FBC8
+_021D8D00: .word 0x000034FC
+
+ thumb_func_start FUN_021D8D04
+FUN_021D8D04: ; 0x021D8D04
+ ldr r0, _021D8D10 ; =0x0220FBC8
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r0, _021D8D14 ; =0x000034FC
+ str r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_021D8D10: .word 0x0220FBC8
+_021D8D14: .word 0x000034FC