summaryrefslogtreecommitdiff
path: root/arm9/modules/66/asm/module_66.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/modules/66/asm/module_66.s')
-rw-r--r--arm9/modules/66/asm/module_66.s4216
1 files changed, 4216 insertions, 0 deletions
diff --git a/arm9/modules/66/asm/module_66.s b/arm9/modules/66/asm/module_66.s
new file mode 100644
index 00000000..709a8b84
--- /dev/null
+++ b/arm9/modules/66/asm/module_66.s
@@ -0,0 +1,4216 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD66_021D74E0
+MOD66_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl FUN_0200628C
+ mov r2, #2
+ add r5, r0, #0
+ mov r0, #3
+ mov r1, #0x11
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ add r0, r4, #0
+ mov r1, #0xe4
+ mov r2, #0x11
+ bl FUN_02006268
+ mov r1, #0
+ mov r2, #0xe4
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ ldr r0, _021D7534 ; =0x00000139
+ str r5, [r4, #0x2c]
+ ldrb r0, [r5, r0]
+ cmp r0, #3
+ bhs _021D7516
+ b _021D7518
+_021D7516:
+ mov r0, #0
+_021D7518:
+ strb r0, [r4]
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldrh r0, [r5, r0]
+ mov r1, #0
+ add r2, r1, #0
+ strh r0, [r4, #2]
+ mov r0, #0x11
+ str r0, [r4, #4]
+ mov r0, #0x37
+ bl FUN_0200433C
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7534: .word 0x00000139
+ thumb_func_end MOD66_021D74E0
+
+ thumb_func_start MOD66_021D7538
+MOD66_021D7538: ; 0x021D7538
+ push {r4, lr}
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ cmp r1, #8
+ bhi _021D75AA
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7552: ; jump table
+ .short _021D7564 - _021D7552 - 2 ; case 0
+ .short _021D756C - _021D7552 - 2 ; case 1
+ .short _021D75AA - _021D7552 - 2 ; case 2
+ .short _021D7574 - _021D7552 - 2 ; case 3
+ .short _021D7582 - _021D7552 - 2 ; case 4
+ .short _021D75AA - _021D7552 - 2 ; case 5
+ .short _021D7590 - _021D7552 - 2 ; case 6
+ .short _021D75A6 - _021D7552 - 2 ; case 7
+ .short _021D759E - _021D7552 - 2 ; case 8
+_021D7564:
+ bl MOD66_021D7A88
+ str r0, [r4, #8]
+ b _021D75AA
+_021D756C:
+ bl MOD66_021D7AB0
+ str r0, [r4, #8]
+ b _021D75AA
+_021D7574:
+ bl MOD66_021D7AE8
+ str r0, [r4, #8]
+ add r0, r4, #0
+ bl MOD66_021D77C4
+ b _021D75AA
+_021D7582:
+ bl MOD66_021D7AFC
+ str r0, [r4, #8]
+ add r0, r4, #0
+ bl MOD66_021D77C4
+ b _021D75AA
+_021D7590:
+ bl MOD66_021D7B38
+ str r0, [r4, #8]
+ add r0, r4, #0
+ bl MOD66_021D77C4
+ b _021D75AA
+_021D759E:
+ bl MOD66_021D7B94
+ str r0, [r4, #8]
+ b _021D75AA
+_021D75A6:
+ mov r0, #1
+ pop {r4, pc}
+_021D75AA:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD66_021D7538
+
+ thumb_func_start MOD66_021D75B0
+MOD66_021D75B0: ; 0x021D75B0
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02006278
+ add r0, r4, #0
+ bl FUN_0200627C
+ mov r0, #0x11
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD66_021D75B0
+
+ thumb_func_start MOD66_021D75C8
+MOD66_021D75C8: ; 0x021D75C8
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r2, [r4]
+ mov r1, #0x24
+ add r3, r2, #0
+ mul r3, r1
+ ldr r1, _021D75FC ; =0x021D95E8
+ ldr r1, [r1, r3]
+ cmp r1, #0
+ beq _021D75DE
+ blx r1
+_021D75DE:
+ bl FUN_020AEEB8
+ add r0, r4, #0
+ bl MOD66_021D9220
+ ldr r0, [r4, #0x28]
+ bl FUN_0201AB60
+ ldr r3, _021D7600 ; =0x027E0000
+ ldr r1, _021D7604 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021D75FC: .word 0x021D95E8
+_021D7600: .word 0x027E0000
+_021D7604: .word 0x00003FF8
+ thumb_func_end MOD66_021D75C8
+
+ thumb_func_start MOD66_021D7608
+MOD66_021D7608: ; 0x021D7608
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D7624 ; =0x021D95A0
+ add r3, sp, #0
+ mov r2, #5
+_021D7612:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7612
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D7624: .word 0x021D95A0
+ thumb_func_end MOD66_021D7608
+
+ thumb_func_start MOD66_021D7628
+MOD66_021D7628: ; 0x021D7628
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021D763C
+ cmp r0, #1
+ beq _021D76E4
+ cmp r0, #2
+ beq _021D7710
+ b _021D772E
+_021D763C:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D7738 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D773C ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ ldr r0, [r4, #0x2c]
+ ldr r1, [r0]
+ cmp r1, #0
+ bne _021D767C
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ bne _021D767C
+ mov r0, #3
+ str r0, [r4, #0x20]
+ mov r0, #0x1b
+ str r0, [r4, #0x24]
+ b _021D7694
+_021D767C:
+ asr r0, r1, #4
+ lsr r0, r0, #0x1b
+ add r0, r1, r0
+ asr r0, r0, #5
+ str r0, [r4, #0x20]
+ ldr r0, [r4, #0x2c]
+ ldr r1, [r0, #4]
+ asr r0, r1, #4
+ lsr r0, r0, #0x1b
+ add r0, r1, r0
+ asr r0, r0, #5
+ str r0, [r4, #0x24]
+_021D7694:
+ ldr r0, [r4, #0x20]
+ ldr r2, _021D7740 ; =0x0000017E
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x24]
+ mov r1, #0x1a
+ str r0, [r4, #0x1c]
+ ldr r3, [r4, #4]
+ mov r0, #1
+ bl FUN_0200A86C
+ add r1, r4, #0
+ add r1, #0x80
+ str r0, [r1]
+ mov r2, #0x8b
+ ldr r3, [r4, #4]
+ mov r0, #1
+ mov r1, #0x1a
+ lsl r2, r2, #2
+ bl FUN_0200A86C
+ add r1, r4, #0
+ add r1, #0x84
+ str r0, [r1]
+ ldr r1, [r4, #4]
+ mov r0, #0x16
+ bl FUN_020219F4
+ add r1, r4, #0
+ add r1, #0x88
+ str r0, [r1]
+ ldr r0, [r4, #4]
+ bl FUN_020345A8
+ str r0, [r4, #0x30]
+ ldr r0, _021D7744 ; =0x021D9AA0
+ ldr r1, [r4, #4]
+ bl MOD66_021D94A4
+ str r0, [r4, #0x40]
+ b _021D772E
+_021D76E4:
+ bl MOD66_021D7608
+ ldr r0, [r4, #4]
+ bl FUN_02016B94
+ str r0, [r4, #0x28]
+ ldr r1, [r4, #0x28]
+ add r0, r4, #0
+ bl MOD66_021D77E4
+ add r0, r4, #0
+ bl MOD66_021D78B4
+ bl FUN_0201CC08
+ mov r0, #4
+ bl FUN_0201CC24
+ add r0, r4, #0
+ bl MOD66_021D913C
+ b _021D772E
+_021D7710:
+ ldr r0, _021D7748 ; =MOD66_021D75C8
+ add r1, r4, #0
+ bl FUN_02015F10
+ ldrb r1, [r4]
+ mov r0, #0x24
+ add r2, r1, #0
+ mul r2, r0
+ ldr r0, _021D774C ; =0x021D95D8
+ ldr r0, [r0, r2]
+ str r0, [r4, #0x38]
+ mov r0, #0
+ str r0, [r4, #0xc]
+ mov r0, #1
+ pop {r4, pc}
+_021D772E:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_021D7738: .word 0xFFFFE0FF
+_021D773C: .word 0x04001000
+_021D7740: .word 0x0000017E
+_021D7744: .word 0x021D9AA0
+_021D7748: .word MOD66_021D75C8
+_021D774C: .word 0x021D95D8
+ thumb_func_end MOD66_021D7628
+
+ thumb_func_start MOD66_021D7750
+MOD66_021D7750: ; 0x021D7750
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_0201CD04
+ mov r0, #0x1f
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #0x1f
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ add r0, r5, #0
+ bl MOD66_021D91F4
+ add r0, r5, #0
+ bl MOD66_021D7A34
+ mov r4, #0
+_021D7782:
+ lsl r1, r4, #0x18
+ ldr r0, [r5, #0x28]
+ lsr r1, r1, #0x18
+ bl FUN_020178A0
+ add r4, r4, #1
+ cmp r4, #8
+ blt _021D7782
+ ldr r0, [r5, #0x28]
+ bl FUN_02016A18
+ ldr r0, [r5, #0x40]
+ bl MOD66_021D9544
+ ldr r0, [r5, #0x30]
+ bl FUN_020345DC
+ add r0, r5, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ bl FUN_02021A20
+ add r0, r5, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ bl FUN_0200A8B8
+ add r5, #0x80
+ ldr r0, [r5]
+ bl FUN_0200A8B8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD66_021D7750
+
+ thumb_func_start MOD66_021D77C4
+MOD66_021D77C4: ; 0x021D77C4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r2, [r4]
+ mov r1, #0x24
+ add r3, r2, #0
+ mul r3, r1
+ ldr r1, _021D77E0 ; =0x021D95E0
+ ldr r1, [r1, r3]
+ blx r1
+ add r0, r4, #0
+ bl MOD66_021D9214
+ pop {r4, pc}
+ nop
+_021D77E0: .word 0x021D95E0
+ thumb_func_end MOD66_021D77C4
+
+ thumb_func_start MOD66_021D77E4
+MOD66_021D77E4: ; 0x021D77E4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xf4
+ ldr r4, _021D78AC ; =0x021D9590
+ add r3, sp, #4
+ str r0, [sp]
+ add r6, r1, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r4, _021D78B0 ; =0x021D9634
+ add r3, sp, #0x14
+ mov r2, #0x1c
+_021D7806:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7806
+ mov r4, #0
+ add r7, r4, #0
+ add r5, sp, #0x14
+_021D7814:
+ lsl r1, r4, #0x18
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ add r2, r5, #0
+ mov r3, #0
+ bl FUN_02016C18
+ lsl r1, r4, #0x18
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ add r4, r4, #1
+ bl FUN_02018744
+ add r7, r7, #1
+ add r5, #0x1c
+ cmp r7, #8
+ blt _021D7814
+ ldr r3, [sp]
+ mov r0, #0
+ ldr r3, [r3, #4]
+ mov r1, #0x20
+ add r2, r0, #0
+ bl FUN_02017F18
+ ldr r3, [sp]
+ mov r0, #1
+ ldr r3, [r3, #4]
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r3, [sp]
+ mov r0, #2
+ ldr r3, [r3, #4]
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r3, [sp]
+ mov r0, #3
+ ldr r3, [r3, #4]
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r3, [sp]
+ mov r0, #4
+ ldr r3, [r3, #4]
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r3, [sp]
+ mov r0, #5
+ ldr r3, [r3, #4]
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r3, [sp]
+ mov r0, #6
+ ldr r3, [r3, #4]
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r3, [sp]
+ mov r0, #7
+ ldr r3, [r3, #4]
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ add sp, #0xf4
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D78AC: .word 0x021D9590
+_021D78B0: .word 0x021D9634
+ thumb_func_end MOD66_021D77E4
+
+ thumb_func_start MOD66_021D78B4
+MOD66_021D78B4: ; 0x021D78B4
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r1, [r5, #4]
+ mov r0, #0x11
+ bl FUN_02006670
+ add r4, r0, #0
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #4]
+ add r2, r4, #0
+ mov r3, #0x11
+ bl FUN_02079B60
+ mov r0, #0x14
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #4]
+ add r2, r4, #0
+ mov r3, #0x11
+ bl FUN_02079B60
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #4]
+ add r2, r4, #0
+ mov r3, #0x11
+ bl FUN_02079B60
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #4]
+ add r2, r4, #0
+ mov r3, #0x11
+ bl FUN_02079B60
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #4]
+ add r2, r4, #0
+ mov r3, #0x11
+ bl FUN_02079B60
+ ldr r0, [r5, #4]
+ add r3, r5, #0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0x11
+ mov r2, #0x18
+ add r3, #0xb8
+ bl FUN_02079C40
+ add r1, r5, #0
+ add r1, #0x98
+ str r0, [r1]
+ ldr r0, [r5, #4]
+ add r3, r5, #0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0x11
+ mov r2, #0x16
+ add r3, #0xbc
+ bl FUN_02079C40
+ add r1, r5, #0
+ add r1, #0x9c
+ str r0, [r1]
+ ldr r0, [r5, #4]
+ add r3, r5, #0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0x11
+ mov r2, #0x17
+ add r3, #0xc0
+ bl FUN_02079C40
+ add r1, r5, #0
+ add r1, #0xa0
+ str r0, [r1]
+ ldr r0, [r5, #4]
+ add r3, r5, #0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0x11
+ mov r2, #0x19
+ add r3, #0xc4
+ bl FUN_02079C40
+ add r1, r5, #0
+ add r1, #0xa4
+ str r0, [r1]
+ ldr r0, [r5, #4]
+ add r3, r5, #0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0x11
+ mov r2, #0x1a
+ add r3, #0xc8
+ bl FUN_02079C40
+ add r1, r5, #0
+ add r1, #0xa8
+ str r0, [r1]
+ ldr r0, [r5, #4]
+ add r3, r5, #0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0x11
+ mov r2, #0x1b
+ add r3, #0xcc
+ bl FUN_02079C40
+ add r1, r5, #0
+ add r1, #0xac
+ str r0, [r1]
+ ldr r0, [r5, #4]
+ add r3, r5, #0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0x11
+ mov r2, #0x1c
+ add r3, #0xd0
+ bl FUN_02079C40
+ add r1, r5, #0
+ add r1, #0xb0
+ str r0, [r1]
+ ldr r0, [r5, #4]
+ add r3, r5, #0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0x11
+ mov r2, #0x1d
+ add r3, #0xd4
+ bl FUN_02079C40
+ add r1, r5, #0
+ add r1, #0xb4
+ str r0, [r1]
+ add r0, r4, #0
+ bl FUN_020066F4
+ mov r1, #0x1e
+ ldr r2, [r5, #4]
+ mov r0, #0
+ lsl r1, r1, #4
+ bl FUN_02002ED0
+ mov r1, #0x1e
+ ldr r2, [r5, #4]
+ mov r0, #4
+ lsl r1, r1, #4
+ bl FUN_02002ED0
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD66_021D78B4
+
+ thumb_func_start MOD66_021D7A34
+MOD66_021D7A34: ; 0x021D7A34
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r0, r4, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r0, r4, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r0, r4, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r4, #0x98
+ ldr r0, [r4]
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD66_021D7A34
+
+ thumb_func_start MOD66_021D7A88
+MOD66_021D7A88: ; 0x021D7A88
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD66_021D7628
+ cmp r0, #1
+ beq _021D7A98
+ mov r0, #0
+ pop {r4, pc}
+_021D7A98:
+ ldrb r2, [r4]
+ mov r1, #0x24
+ add r0, r4, #0
+ add r3, r2, #0
+ mul r3, r1
+ ldr r1, _021D7AAC ; =0x021D95C8
+ ldr r1, [r1, r3]
+ blx r1
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+_021D7AAC: .word 0x021D95C8
+ thumb_func_end MOD66_021D7A88
+
+ thumb_func_start MOD66_021D7AB0
+MOD66_021D7AB0: ; 0x021D7AB0
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r2, [r4]
+ mov r1, #0x24
+ add r3, r2, #0
+ mul r3, r1
+ ldr r1, _021D7AE0 ; =0x021D95CC
+ ldr r1, [r1, r3]
+ blx r1
+ cmp r0, #1
+ beq _021D7ACA
+ mov r0, #1
+ pop {r4, pc}
+_021D7ACA:
+ ldrb r2, [r4]
+ mov r1, #0x24
+ add r0, r4, #0
+ add r3, r2, #0
+ mul r3, r1
+ ldr r1, _021D7AE4 ; =0x021D95D0
+ ldr r1, [r1, r3]
+ blx r1
+ mov r0, #3
+ pop {r4, pc}
+ nop
+_021D7AE0: .word 0x021D95CC
+_021D7AE4: .word 0x021D95D0
+ thumb_func_end MOD66_021D7AB0
+
+ thumb_func_start MOD66_021D7AE8
+MOD66_021D7AE8: ; 0x021D7AE8
+ push {r3, lr}
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D7AF6
+ mov r0, #4
+ pop {r3, pc}
+_021D7AF6:
+ mov r0, #3
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD66_021D7AE8
+
+ thumb_func_start MOD66_021D7AFC
+MOD66_021D7AFC: ; 0x021D7AFC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x38]
+ blx r1
+ cmp r0, #1
+ beq _021D7B1C
+ ldrb r2, [r4]
+ mov r1, #0x24
+ add r0, r4, #0
+ add r3, r2, #0
+ mul r3, r1
+ ldr r1, _021D7B30 ; =0x021D95DC
+ ldr r1, [r1, r3]
+ blx r1
+ mov r0, #4
+ pop {r4, pc}
+_021D7B1C:
+ ldrb r2, [r4]
+ mov r1, #0x24
+ add r0, r4, #0
+ add r3, r2, #0
+ mul r3, r1
+ ldr r1, _021D7B34 ; =0x021D95D4
+ ldr r1, [r1, r3]
+ blx r1
+ mov r0, #6
+ pop {r4, pc}
+ .align 2, 0
+_021D7B30: .word 0x021D95DC
+_021D7B34: .word 0x021D95D4
+ thumb_func_end MOD66_021D7AFC
+
+ thumb_func_start MOD66_021D7B38
+MOD66_021D7B38: ; 0x021D7B38
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D7B76
+ mov r1, #0
+ ldr r0, _021D7B8C ; =0x04000050
+ add r2, r1, #0
+ mov r3, #0x1f
+ str r1, [sp]
+ bl G2x_SetBlendAlpha_
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0
+ bl FUN_0200E388
+ mov r0, #1
+ bl FUN_0200E388
+ add sp, #4
+ mov r0, #8
+ pop {r3, r4, pc}
+_021D7B76:
+ ldrb r2, [r4]
+ mov r1, #0x24
+ add r0, r4, #0
+ add r3, r2, #0
+ mul r3, r1
+ ldr r1, _021D7B90 ; =0x021D95DC
+ ldr r1, [r1, r3]
+ blx r1
+ mov r0, #6
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D7B8C: .word 0x04000050
+_021D7B90: .word 0x021D95DC
+ thumb_func_end MOD66_021D7B38
+
+ thumb_func_start MOD66_021D7B94
+MOD66_021D7B94: ; 0x021D7B94
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r2, [r4]
+ mov r1, #0x24
+ add r3, r2, #0
+ mul r3, r1
+ ldr r1, _021D7BB0 ; =0x021D95E4
+ ldr r1, [r1, r3]
+ blx r1
+ add r0, r4, #0
+ bl MOD66_021D7750
+ mov r0, #7
+ pop {r4, pc}
+ .align 2, 0
+_021D7BB0: .word 0x021D95E4
+ thumb_func_end MOD66_021D7B94
+
+ thumb_func_start MOD66_021D7BB4
+MOD66_021D7BB4: ; 0x021D7BB4
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #0x11
+ ldr r0, [r4, #4]
+ lsl r1, r1, #4
+ bl FUN_02016998
+ mov r2, #0x11
+ mov r1, #0
+ lsl r2, r2, #4
+ str r0, [r4, #0x34]
+ bl Call_FillMemWithValue
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD66_021D7BB4
+
+ thumb_func_start MOD66_021D7BD4
+MOD66_021D7BD4: ; 0x021D7BD4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r4, [r5, #0x34]
+ bl MOD66_021D89B8
+ ldrb r0, [r5]
+ cmp r0, #2
+ beq _021D7BEA
+ add r0, r5, #0
+ bl MOD66_021D8E34
+_021D7BEA:
+ add r0, r4, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl MOD66_021D9350
+ add r0, r5, #0
+ bl MOD66_021D8670
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD66_021D7BD4
+
+ thumb_func_start MOD66_021D7C04
+MOD66_021D7C04: ; 0x021D7C04
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r4, [r5, #0x34]
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _021D7C16
+ cmp r1, #1
+ beq _021D7C60
+ b _021D7CA2
+_021D7C16:
+ ldr r1, [r5, #0x18]
+ str r1, [r4, #0x18]
+ ldr r1, [r5, #0x1c]
+ str r1, [r4, #0x1c]
+ mov r1, #0
+ mvn r1, r1
+ str r1, [r4, #0x20]
+ ldr r1, [r4, #0x18]
+ lsl r2, r1, #4
+ add r1, r4, #0
+ sub r2, #0x68
+ add r1, #0x8c
+ str r2, [r1]
+ ldr r1, [r4, #0x1c]
+ lsl r2, r1, #4
+ add r1, r4, #0
+ sub r2, #0x60
+ add r1, #0x90
+ str r2, [r1]
+ add r1, r4, #0
+ add r2, r4, #0
+ add r1, #0x8c
+ add r2, #0x90
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl MOD66_021D8BF0
+ add r0, r5, #0
+ bl MOD66_021D8554
+ ldrb r0, [r5]
+ cmp r0, #2
+ beq _021D7CA2
+ add r0, r5, #0
+ bl MOD66_021D8CD0
+ b _021D7CA2
+_021D7C60:
+ bl MOD66_021D8838
+ add r0, r5, #0
+ bl MOD66_021D8AF4
+ ldr r0, [r5, #4]
+ add r1, r5, #0
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xd8
+ add r1, #0xdc
+ mov r2, #0x49
+ ldr r3, [r5, #0x2c]
+ lsl r2, r2, #2
+ add r2, r3, r2
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r3, #0x14
+ bl MOD66_021D9228
+ add r1, r4, #0
+ add r1, #0x9c
+ str r0, [r1]
+ add r0, r5, #0
+ bl MOD66_021D818C
+ add r0, r5, #0
+ bl MOD66_021D8140
+ mov r0, #0
+ str r0, [r4]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D7CA2:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD66_021D7C04
+
+ thumb_func_start MOD66_021D7CAC
+MOD66_021D7CAC: ; 0x021D7CAC
+ push {lr}
+ sub sp, #0xc
+ mov r3, #0
+ str r3, [r0, #0x14]
+ mov r1, #6
+ str r1, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ ldr r0, [r0, #4]
+ mov r2, #0x25
+ str r0, [sp, #8]
+ add r0, r1, #0
+ mov r1, #0x11
+ bl FUN_0200E1D0
+ ldr r0, _021D7CF0 ; =0x0000068F
+ bl FUN_020054C8
+ mov r0, #0
+ bl FUN_0200E394
+ mov r0, #1
+ bl FUN_0200E394
+ mov r1, #4
+ ldr r0, _021D7CF4 ; =0x04000050
+ mov r2, #8
+ mov r3, #0x1c
+ str r1, [sp]
+ bl G2x_SetBlendAlpha_
+ mov r0, #0
+ add sp, #0xc
+ pop {pc}
+ .align 2, 0
+_021D7CF0: .word 0x0000068F
+_021D7CF4: .word 0x04000050
+ thumb_func_end MOD66_021D7CAC
+
+ thumb_func_start MOD66_021D7CF8
+MOD66_021D7CF8: ; 0x021D7CF8
+ push {lr}
+ sub sp, #0xc
+ mov r3, #0
+ str r3, [r0, #0x14]
+ mov r1, #6
+ str r1, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ ldr r0, [r0, #4]
+ mov r1, #0x10
+ str r0, [sp, #8]
+ mov r0, #2
+ mov r2, #0x24
+ bl FUN_0200E1D0
+ mov r0, #0x69
+ lsl r0, r0, #4
+ bl FUN_020054C8
+ mov r0, #0
+ add sp, #0xc
+ pop {pc}
+ thumb_func_end MOD66_021D7CF8
+
+ thumb_func_start MOD66_021D7D24
+MOD66_021D7D24: ; 0x021D7D24
+ push {lr}
+ sub sp, #0xc
+ mov r3, #0
+ str r3, [r0, #0x14]
+ mov r1, #6
+ str r1, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ ldr r0, [r0, #4]
+ mov r1, #0x11
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ ldr r0, _021D7D64 ; =0x0000068F
+ bl FUN_020054C8
+ mov r0, #0
+ bl FUN_0200E394
+ mov r1, #4
+ ldr r0, _021D7D68 ; =0x04000050
+ mov r2, #8
+ mov r3, #0x1c
+ str r1, [sp]
+ bl G2x_SetBlendAlpha_
+ mov r0, #0
+ add sp, #0xc
+ pop {pc}
+ nop
+_021D7D64: .word 0x0000068F
+_021D7D68: .word 0x04000050
+ thumb_func_end MOD66_021D7D24
+
+ thumb_func_start MOD66_021D7D6C
+MOD66_021D7D6C: ; 0x021D7D6C
+ push {lr}
+ sub sp, #0xc
+ mov r3, #0
+ str r3, [r0, #0x14]
+ mov r1, #6
+ str r1, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ ldr r0, [r0, #4]
+ mov r1, #0x10
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ mov r0, #0x69
+ lsl r0, r0, #4
+ bl FUN_020054C8
+ mov r0, #0
+ add sp, #0xc
+ pop {pc}
+ thumb_func_end MOD66_021D7D6C
+
+ thumb_func_start MOD66_021D7D98
+MOD66_021D7D98: ; 0x021D7D98
+ push {r3, lr}
+ ldr r1, [r0, #0x34]
+ ldrb r3, [r1, #0x14]
+ cmp r3, #1
+ bhi _021D7DB6
+ ldr r1, _021D7DCC ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ mov r1, #2
+ tst r1, r2
+ beq _021D7DB6
+ ldr r0, _021D7DD0 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #1
+ pop {r3, pc}
+_021D7DB6:
+ cmp r3, #1
+ bls _021D7DBE
+ mov r0, #0
+ pop {r3, pc}
+_021D7DBE:
+ ldr r1, _021D7DCC ; =0x021C48B8
+ ldr r1, [r1, #0x44]
+ bl MOD66_021D8054
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_021D7DCC: .word 0x021C48B8
+_021D7DD0: .word 0x000005DD
+ thumb_func_end MOD66_021D7D98
+
+ thumb_func_start MOD66_021D7DD4
+MOD66_021D7DD4: ; 0x021D7DD4
+ push {r3, lr}
+ ldr r1, [r0, #0x34]
+ ldrb r1, [r1, #0x14]
+ cmp r1, #1
+ bhi _021D7E0E
+ ldr r2, _021D7E24 ; =0x021C48B8
+ ldr r3, [r2, #0x48]
+ mov r2, #1
+ tst r2, r3
+ beq _021D7DFE
+ bl MOD66_021D90F0
+ cmp r0, #0
+ beq _021D7DFA
+ ldr r0, _021D7E28 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #1
+ pop {r3, pc}
+_021D7DFA:
+ mov r0, #0
+ pop {r3, pc}
+_021D7DFE:
+ mov r2, #2
+ tst r2, r3
+ beq _021D7E0E
+ ldr r0, _021D7E28 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #1
+ pop {r3, pc}
+_021D7E0E:
+ cmp r1, #1
+ bls _021D7E16
+ mov r0, #0
+ pop {r3, pc}
+_021D7E16:
+ ldr r1, _021D7E24 ; =0x021C48B8
+ ldr r1, [r1, #0x44]
+ bl MOD66_021D8054
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_021D7E24: .word 0x021C48B8
+_021D7E28: .word 0x000005DD
+ thumb_func_end MOD66_021D7DD4
+
+ thumb_func_start MOD66_021D7E2C
+MOD66_021D7E2C: ; 0x021D7E2C
+ push {r3, lr}
+ ldr r2, _021D7E4C ; =0x021C48B8
+ mov r1, #2
+ ldr r3, [r2, #0x48]
+ tst r1, r3
+ beq _021D7E42
+ ldr r0, _021D7E50 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #1
+ pop {r3, pc}
+_021D7E42:
+ ldr r1, [r2, #0x44]
+ bl MOD66_021D8054
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+_021D7E4C: .word 0x021C48B8
+_021D7E50: .word 0x000005DD
+ thumb_func_end MOD66_021D7E2C
+
+ thumb_func_start MOD66_021D7E54
+MOD66_021D7E54: ; 0x021D7E54
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r4, [r5, #0x34]
+ mov r1, #1
+ ldrb r2, [r4, #0x12]
+ tst r1, r2
+ beq _021D7E80
+ ldrb r1, [r4, #0x15]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ cmp r1, #2
+ blo _021D7E94
+ bl MOD66_021D8140
+ mov r0, #0
+ strb r0, [r4, #0x12]
+ strh r0, [r4, #0x16]
+ ldrb r1, [r4, #0x15]
+ mov r0, #0xf
+ bic r1, r0
+ strb r1, [r4, #0x15]
+ b _021D7E94
+_021D7E80:
+ ldrb r1, [r4, #0x10]
+ cmp r1, #1
+ bne _021D7E94
+ ldrh r1, [r4, #0x16]
+ cmp r1, #1
+ bne _021D7E94
+ ldr r2, [r4, #0x20]
+ mov r1, #0
+ bl MOD66_021D8480
+_021D7E94:
+ add r0, r5, #0
+ bl MOD66_021D8380
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD66_021D7E54
+
+ thumb_func_start MOD66_021D7EA0
+MOD66_021D7EA0: ; 0x021D7EA0
+ push {r3, lr}
+ add r1, r0, #0
+ ldr r0, [r1, #0x34]
+ ldrb r1, [r1]
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl MOD66_021D945C
+ mov r0, #0
+ pop {r3, pc}
+ thumb_func_end MOD66_021D7EA0
+
+ thumb_func_start MOD66_021D7EB4
+MOD66_021D7EB4: ; 0x021D7EB4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ add r1, r6, #0
+ add r1, #0x94
+ ldr r5, [r1]
+ add r1, r6, #0
+ add r1, #0x90
+ ldr r7, [r1]
+ add r1, r6, #0
+ add r1, #0x8c
+ ldr r1, [r1]
+ ldr r4, [r6, #0x34]
+ cmp r1, #0
+ bne _021D7ED8
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021D7ED8:
+ add r1, r6, #0
+ mov r2, #0
+ add r1, #0x8c
+ str r2, [r1]
+ cmp r5, #0
+ bne _021D7EF8
+ add r4, #0x58
+ add r1, r4, #0
+ bl MOD66_021D82B8
+ add r0, r6, #0
+ bl MOD66_021D8494
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021D7EF8:
+ add r1, r4, #0
+ add r1, #0x58
+ add r2, r5, #0
+ bl MOD66_021D82B8
+ add r0, r6, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ bl FUN_02021A4C
+ ldr r2, [r4, #0x18]
+ ldr r3, [r4, #0x1c]
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD66_021D81B4
+ ldrh r0, [r5, #4]
+ ldr r2, _021D7FA0 ; =0x0000013B
+ mov r1, #4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldrh r0, [r5, #6]
+ mov r3, #0xe
+ str r0, [sp, #4]
+ ldr r0, [r6, #4]
+ str r0, [sp, #8]
+ ldr r0, [r6, #0x28]
+ bl FUN_0200D300
+ ldrh r0, [r5, #4]
+ cmp r0, #1
+ bhi _021D7F40
+ add r7, r4, #0
+ add r7, #0x38
+ b _021D7F44
+_021D7F40:
+ add r7, r4, #0
+ add r7, #0x48
+_021D7F44:
+ str r7, [r4, #0x78]
+ ldrb r0, [r4, #0x15]
+ mov r1, #0xf0
+ ldr r2, _021D7FA0 ; =0x0000013B
+ bic r0, r1
+ ldrh r1, [r5, #4]
+ mov r3, #0xe
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x18
+ orr r0, r1
+ strb r0, [r4, #0x15]
+ ldrh r0, [r5, #4]
+ mov r1, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ add r0, r7, #0
+ bl FUN_0200D6F8
+ add r0, r7, #0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ add r6, #0x88
+ ldr r2, [r6]
+ add r0, r7, #0
+ mov r1, #1
+ bl FUN_0201BD84
+ add r0, r7, #0
+ bl FUN_020191D0
+ add r4, #0x58
+ add r0, r4, #0
+ bl FUN_020191D0
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7FA0: .word 0x0000013B
+ thumb_func_end MOD66_021D7EB4
+
+ thumb_func_start MOD66_021D7FA4
+MOD66_021D7FA4: ; 0x021D7FA4
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #1
+ sub r0, r0, r6
+ ldr r1, _021D7FF4 ; =0x021D9720
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl FUN_02020988
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ beq _021D7FC8
+ cmp r6, #1
+ bne _021D7FCE
+_021D7FC8:
+ add sp, #8
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_021D7FCE:
+ mov r1, #0x12
+ add r0, sp, #4
+ strh r1, [r0]
+ add r0, sp, #4
+ str r0, [sp]
+ ldr r3, _021D7FF8 ; =0x021C48F8
+ ldr r0, [r5, #0x28]
+ ldrh r2, [r3, #0x1c]
+ ldrh r3, [r3, #0x1e]
+ mov r1, #5
+ bl FUN_0201AFBC
+ cmp r0, #0
+ beq _021D7FEE
+ mov r4, #0
+ mvn r4, r4
+_021D7FEE:
+ add r0, r4, #0
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D7FF4: .word 0x021D9720
+_021D7FF8: .word 0x021C48F8
+ thumb_func_end MOD66_021D7FA4
+
+ thumb_func_start MOD66_021D7FFC
+MOD66_021D7FFC: ; 0x021D7FFC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r1, [r5, #0x2c]
+ ldr r0, _021D8050 ; =0x00000139
+ ldr r4, [r5, #0x34]
+ ldrb r0, [r1, r0]
+ cmp r0, #2
+ bne _021D8010
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D8010:
+ bl FUN_02020A98
+ cmp r0, #0
+ ldrb r0, [r4, #0x14]
+ beq _021D803E
+ cmp r0, #0
+ bne _021D804C
+ ldrb r1, [r4, #0x10]
+ add r0, r5, #0
+ bl MOD66_021D7FA4
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _021D804C
+ ldrb r1, [r4, #0x10]
+ add r0, r5, #0
+ bl MOD66_021D8E70
+ mov r0, #3
+ strb r0, [r4, #0x14]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D803E:
+ cmp r0, #3
+ beq _021D8046
+ cmp r0, #1
+ bne _021D804C
+_021D8046:
+ ldrb r0, [r4, #0x14]
+ sub r0, r0, #1
+ strb r0, [r4, #0x14]
+_021D804C:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8050: .word 0x00000139
+ thumb_func_end MOD66_021D7FFC
+
+ thumb_func_start MOD66_021D8054
+MOD66_021D8054: ; 0x021D8054
+ push {r3, r4, r5, lr}
+ ldr r4, [r0, #0x34]
+ add r5, r1, #0
+ ldrb r1, [r4, #0x11]
+ cmp r1, #0
+ beq _021D8084
+ mov r0, #0xf0
+ tst r0, r5
+ bne _021D813C
+ ldrb r2, [r4, #0x15]
+ lsl r0, r2, #0x1c
+ lsr r1, r0, #0x1c
+ cmp r1, #1
+ bne _021D813C
+ mov r0, #0xf
+ bic r2, r0
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r0, #0xf
+ and r0, r1
+ orr r0, r2
+ strb r0, [r4, #0x15]
+ pop {r3, r4, r5, pc}
+_021D8084:
+ bl MOD66_021D7FFC
+ cmp r0, #0
+ bne _021D813C
+ mov r0, #0xf0
+ tst r0, r5
+ bne _021D80B0
+ ldrb r2, [r4, #0x15]
+ lsl r0, r2, #0x1c
+ lsr r1, r0, #0x1c
+ cmp r1, #1
+ bne _021D813C
+ mov r0, #0xf
+ bic r2, r0
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r0, #0xf
+ and r0, r1
+ orr r0, r2
+ strb r0, [r4, #0x15]
+ pop {r3, r4, r5, pc}
+_021D80B0:
+ mov r0, #0x40
+ tst r0, r5
+ beq _021D80C8
+ ldr r0, [r4, #0x1c]
+ cmp r0, #7
+ blt _021D80C8
+ sub r0, r0, #1
+ str r0, [r4, #0x1c]
+ ldrb r1, [r4, #0x11]
+ mov r0, #8
+ orr r0, r1
+ strb r0, [r4, #0x11]
+_021D80C8:
+ mov r0, #0x80
+ tst r0, r5
+ beq _021D80E0
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0x1b
+ bgt _021D80E0
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ ldrb r1, [r4, #0x11]
+ mov r0, #4
+ orr r0, r1
+ strb r0, [r4, #0x11]
+_021D80E0:
+ mov r0, #0x10
+ tst r0, r5
+ beq _021D80F8
+ ldr r0, [r4, #0x18]
+ cmp r0, #0x1b
+ bgt _021D80F8
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ ldrb r1, [r4, #0x11]
+ mov r0, #1
+ orr r0, r1
+ strb r0, [r4, #0x11]
+_021D80F8:
+ mov r0, #0x20
+ tst r0, r5
+ beq _021D8110
+ ldr r0, [r4, #0x18]
+ cmp r0, #2
+ blt _021D8110
+ sub r0, r0, #1
+ str r0, [r4, #0x18]
+ ldrb r1, [r4, #0x11]
+ mov r0, #2
+ orr r0, r1
+ strb r0, [r4, #0x11]
+_021D8110:
+ mov r0, #3
+ strb r0, [r4, #0x13]
+ ldrb r1, [r4, #0x11]
+ mov r0, #0x80
+ orr r0, r1
+ strb r0, [r4, #0x11]
+ ldrb r0, [r4, #0x12]
+ cmp r0, #0
+ beq _021D8128
+ ldrh r0, [r4, #0x16]
+ add r0, r0, #1
+ b _021D812A
+_021D8128:
+ mov r0, #0
+_021D812A:
+ strh r0, [r4, #0x16]
+ mov r0, #0
+ strb r0, [r4, #0x12]
+ ldrb r1, [r4, #0x15]
+ mov r0, #0xf
+ bic r1, r0
+ mov r0, #1
+ orr r0, r1
+ strb r0, [r4, #0x15]
+_021D813C:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD66_021D8054
+
+ thumb_func_start MOD66_021D8140
+MOD66_021D8140: ; 0x021D8140
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r4, [r5, #0x34]
+ ldr r1, [r4, #0x1c]
+ str r1, [sp]
+ add r1, r4, #0
+ ldr r2, [r4, #0x20]
+ ldr r3, [r4, #0x18]
+ add r1, #0x28
+ bl MOD66_021D820C
+ add r0, r4, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ ldr r1, [r4, #0x20]
+ ldr r2, [r4, #0x18]
+ ldr r3, [r4, #0x1c]
+ bl MOD66_021D93F4
+ ldrb r0, [r4, #0x10]
+ cmp r0, #1
+ bne _021D818A
+ add r1, r4, #0
+ add r1, #0xa0
+ ldr r1, [r1]
+ ldr r2, [r4, #0x20]
+ add r0, r5, #0
+ bl MOD66_021D8480
+ ldr r0, [r5, #0x28]
+ mov r1, #4
+ bl FUN_0201AC68
+ ldr r0, [r5, #0x28]
+ mov r1, #5
+ bl FUN_0201AC68
+_021D818A:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD66_021D8140
+
+ thumb_func_start MOD66_021D818C
+MOD66_021D818C: ; 0x021D818C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r4, [r5, #0x34]
+ ldr r0, [r4, #0x20]
+ str r0, [r4, #0x24]
+ ldr r0, [r5, #0x30]
+ ldr r1, [r4, #0x18]
+ ldr r2, [r4, #0x1c]
+ bl FUN_020345F0
+ str r0, [r4, #0x20]
+ ldrh r3, [r5, #2]
+ ldr r0, [r5, #0x40]
+ ldr r1, [r4, #0x18]
+ ldr r2, [r4, #0x1c]
+ bl MOD66_021D9558
+ add r4, #0xa0
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD66_021D818C
+
+ thumb_func_start MOD66_021D81B4
+MOD66_021D81B4: ; 0x021D81B4
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ cmp r1, #0
+ beq _021D81CA
+ add r0, r1, #0
+ ldr r1, [r4, #4]
+ add r4, #0x88
+ ldr r2, [r4]
+ bl FUN_02064E60
+ pop {r3, r4, r5, pc}
+_021D81CA:
+ ldr r5, _021D8204 ; =0x021D97B4
+ mov r1, #0
+_021D81CE:
+ ldrh r0, [r5]
+ cmp r2, r0
+ bne _021D81EC
+ ldrh r0, [r5, #2]
+ cmp r3, r0
+ bne _021D81EC
+ ldr r0, _021D8208 ; =0x021D97B8
+ lsl r1, r1, #3
+ ldr r0, [r0, r1]
+ ldr r1, [r4, #4]
+ add r4, #0x88
+ ldr r2, [r4]
+ bl FUN_02064E60
+ pop {r3, r4, r5, pc}
+_021D81EC:
+ add r1, r1, #1
+ add r5, #8
+ cmp r1, #0xd
+ blo _021D81CE
+ ldr r1, [r4, #4]
+ add r4, #0x88
+ ldr r2, [r4]
+ mov r0, #0
+ bl FUN_02064E60
+ pop {r3, r4, r5, pc}
+ nop
+_021D8204: .word 0x021D97B4
+_021D8208: .word 0x021D97B8
+ thumb_func_end MOD66_021D81B4
+
+ thumb_func_start MOD66_021D820C
+MOD66_021D820C: ; 0x021D820C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ add r4, r1, #0
+ ldr r6, [r5, #0x34]
+ add r7, r2, #0
+ str r3, [sp, #0x10]
+ bl FUN_02021A4C
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02019620
+ add r6, #0xa0
+ ldr r0, [r6]
+ cmp r0, #0
+ beq _021D8278
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0x28]
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD66_021D81B4
+ ldrb r0, [r5]
+ cmp r0, #1
+ bne _021D8248
+ mov r3, #0x7a
+ b _021D825C
+_021D8248:
+ add r1, r5, #0
+ add r1, #0x88
+ mov r0, #0
+ ldr r1, [r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xd0
+ sub r0, r1, r0
+ lsr r3, r0, #1
+_021D825C:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D82B4 ; =0x00010200
+ add r2, r5, #0
+ str r0, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ add r2, #0x88
+ ldr r2, [r2]
+ add r0, r4, #0
+ bl FUN_0201BDE0
+_021D8278:
+ ldrb r0, [r5]
+ cmp r0, #1
+ bne _021D82AA
+ add r5, #0x84
+ ldr r0, [r5]
+ mov r1, #0
+ bl FUN_0200A914
+ add r5, r0, #0
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D82B4 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r2, r5, #0
+ add r3, r1, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r5, #0
+ bl FUN_02021A20
+_021D82AA:
+ add r0, r4, #0
+ bl FUN_020191D0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D82B4: .word 0x00010200
+ thumb_func_end MOD66_021D820C
+
+ thumb_func_start MOD66_021D82B8
+MOD66_021D82B8: ; 0x021D82B8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r6, r1, #0
+ add r4, r2, #0
+ bne _021D82DC
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r6, #0
+ bl FUN_020191D0
+ add r0, r6, #0
+ bl FUN_02019570
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_021D82DC:
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_02019620
+ ldrh r1, [r4, #8]
+ ldr r0, _021D8378 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021D832C
+ ldr r2, [r5, #0x2c]
+ ldrh r0, [r4, #0x16]
+ add r2, #0x5c
+ ldrb r0, [r2, r0]
+ lsl r2, r0, #0x1e
+ lsr r2, r2, #0x1e
+ beq _021D8300
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1e
+ beq _021D832C
+_021D8300:
+ add r0, r5, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ bl FUN_0200A914
+ add r7, r0, #0
+ ldrh r0, [r4, #0xe]
+ mov r1, #0
+ add r2, r7, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D837C ; =0x00010200
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldrh r3, [r4, #0xc]
+ add r0, r6, #0
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_02021A20
+_021D832C:
+ ldrh r1, [r4, #0xa]
+ ldr r0, _021D8378 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021D8372
+ ldr r2, [r5, #0x2c]
+ ldrh r0, [r4, #0x16]
+ add r2, #0x5c
+ ldrb r0, [r2, r0]
+ lsl r2, r0, #0x1a
+ lsr r2, r2, #0x1e
+ beq _021D8348
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1e
+ beq _021D8372
+_021D8348:
+ add r5, #0x84
+ ldr r0, [r5]
+ bl FUN_0200A914
+ add r5, r0, #0
+ ldrh r0, [r4, #0x12]
+ mov r1, #0
+ add r2, r5, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D837C ; =0x00010200
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldrh r3, [r4, #0x10]
+ add r0, r6, #0
+ bl FUN_0201BDE0
+ add r0, r5, #0
+ bl FUN_02021A20
+_021D8372:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8378: .word 0x0000FFFF
+_021D837C: .word 0x00010200
+ thumb_func_end MOD66_021D82B8
+
+ thumb_func_start MOD66_021D8380
+MOD66_021D8380: ; 0x021D8380
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r0, #0
+ ldr r5, [r6, #0x34]
+ mov r4, #5
+ ldrb r1, [r5, #0x13]
+ cmp r1, #0
+ beq _021D847C
+ sub r0, r1, #1
+ strb r0, [r5, #0x13]
+ cmp r1, #3
+ bne _021D83F0
+ ldr r1, [r5, #0x18]
+ add r0, r4, #0
+ mov r2, #7
+ add r3, r1, #0
+ mul r3, r2
+ add r3, #0x19
+ lsl r1, r3, #0x10
+ ldr r3, [r5, #0x1c]
+ add r0, #0xff
+ mul r2, r3
+ sub r2, #0x22
+ lsl r2, r2, #0x10
+ ldr r0, [r5, r0]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C6E4
+ add r0, r4, #0
+ add r0, #0xff
+ mov r1, #1
+ ldr r0, [r5, r0]
+ lsl r1, r1, #0xc
+ bl FUN_020201E4
+ add r0, r6, #0
+ bl MOD66_021D818C
+ ldr r0, [r5, #0x18]
+ ldr r7, [r5, #0x1c]
+ str r0, [sp, #4]
+ ldr r0, [r6, #0x30]
+ ldr r1, [sp, #4]
+ add r2, r7, #0
+ bl FUN_020345F0
+ add r1, r5, #0
+ add r2, r0, #0
+ ldr r3, [sp, #4]
+ add r0, r6, #0
+ add r1, #0x28
+ str r7, [sp]
+ bl MOD66_021D820C
+ add r4, r4, #1
+_021D83F0:
+ ldrb r1, [r5, #0x11]
+ mov r0, #8
+ tst r0, r1
+ beq _021D8406
+ add r0, r5, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ sub r1, r0, r4
+ add r0, r5, #0
+ add r0, #0x90
+ str r1, [r0]
+_021D8406:
+ ldrb r1, [r5, #0x11]
+ mov r0, #4
+ tst r0, r1
+ beq _021D841C
+ add r0, r5, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ add r1, r0, r4
+ add r0, r5, #0
+ add r0, #0x90
+ str r1, [r0]
+_021D841C:
+ ldrb r1, [r5, #0x11]
+ mov r0, #1
+ tst r0, r1
+ beq _021D8432
+ add r0, r5, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ add r1, r0, r4
+ add r0, r5, #0
+ add r0, #0x8c
+ str r1, [r0]
+_021D8432:
+ ldrb r1, [r5, #0x11]
+ mov r0, #2
+ tst r0, r1
+ beq _021D8448
+ add r0, r5, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ sub r1, r0, r4
+ add r0, r5, #0
+ add r0, #0x8c
+ str r1, [r0]
+_021D8448:
+ add r1, r5, #0
+ add r2, r5, #0
+ add r1, #0x8c
+ add r2, #0x90
+ ldr r1, [r1]
+ ldr r2, [r2]
+ add r0, r6, #0
+ bl MOD66_021D8BF0
+ ldrb r0, [r5, #0x13]
+ cmp r0, #0
+ bne _021D847C
+ mov r0, #1
+ strb r0, [r5, #0x12]
+ mov r2, #0
+ strb r2, [r5, #0x11]
+ ldr r1, [r5, #0x24]
+ ldr r0, [r5, #0x20]
+ cmp r1, r0
+ beq _021D847C
+ add r5, #0x9c
+ ldr r0, [r5]
+ sub r1, r2, #1
+ add r3, r2, #0
+ bl MOD66_021D93F4
+_021D847C:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD66_021D8380
+
+ thumb_func_start MOD66_021D8480
+MOD66_021D8480: ; 0x021D8480
+ add r3, r0, #0
+ add r3, #0x90
+ str r2, [r3]
+ add r2, r0, #0
+ add r2, #0x94
+ str r1, [r2]
+ mov r1, #1
+ add r0, #0x8c
+ str r1, [r0]
+ bx lr
+ thumb_func_end MOD66_021D8480
+
+ thumb_func_start MOD66_021D8494
+MOD66_021D8494: ; 0x021D8494
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r4, [r6, #0x34]
+ mov r1, #0
+ ldr r5, [r4, #0x78]
+ str r1, [r4, #0x78]
+ cmp r5, #0
+ beq _021D84C6
+ add r0, r5, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ bl FUN_02019570
+ ldrb r1, [r4, #0x15]
+ add r0, r5, #0
+ mov r2, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1c
+ bl FUN_0200D7A0
+ ldr r0, [r6, #0x28]
+ mov r1, #4
+ bl FUN_0201AC68
+_021D84C6:
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD66_021D8494
+
+ thumb_func_start MOD66_021D84C8
+MOD66_021D84C8: ; 0x021D84C8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ add r0, #0xcc
+ add r5, r1, #0
+ ldr r0, [r0]
+ mov r1, #0xc
+ str r1, [sp]
+ mov r1, #2
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ str r1, [sp, #8]
+ mov r3, #0
+ str r3, [sp, #0xc]
+ mov r1, #7
+ str r1, [sp, #0x10]
+ ldrh r1, [r0]
+ mov r2, #0xa
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r1, #5
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x28]
+ bl FUN_020181EC
+ add r4, #0x84
+ ldr r0, [r4]
+ mov r1, #1
+ bl FUN_0200A914
+ add r6, r0, #0
+ mov r0, #0
+ add r1, r6, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0x50
+ sub r4, r1, r0
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D8550 ; =0x00010200
+ add r2, r6, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ lsr r3, r4, #1
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r5, #0
+ bl FUN_020191D0
+ add r0, r6, #0
+ bl FUN_02021A20
+ add sp, #0x1c
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D8550: .word 0x00010200
+ thumb_func_end MOD66_021D84C8
+
+ thumb_func_start MOD66_021D8554
+MOD66_021D8554: ; 0x021D8554
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r4, [r5, #0x34]
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #0x1d
+ str r0, [sp, #4]
+ mov r3, #3
+ str r3, [sp, #8]
+ mov r0, #0xf
+ str r0, [sp, #0xc]
+ mov r0, #0xea
+ lsl r0, r0, #2
+ str r0, [sp, #0x10]
+ add r1, r4, #0
+ ldr r0, [r5, #0x28]
+ add r1, #0x28
+ mov r2, #1
+ bl FUN_02019064
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #0x15
+ str r0, [sp, #4]
+ mov r2, #4
+ add r1, r4, #0
+ str r2, [sp, #8]
+ mov r0, #0xe
+ str r0, [sp, #0xc]
+ ldr r0, _021D8660 ; =0x000003AB
+ add r1, #0x38
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x28]
+ mov r3, #9
+ bl FUN_02019064
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #4]
+ mov r2, #4
+ add r1, r4, #0
+ str r2, [sp, #8]
+ mov r0, #0xe
+ str r0, [sp, #0xc]
+ ldr r0, _021D8664 ; =0x0000033B
+ add r1, #0x48
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x28]
+ mov r3, #2
+ bl FUN_02019064
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #4]
+ mov r0, #0xe
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, _021D8668 ; =0x000001B3
+ add r1, r4, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x28]
+ add r1, #0x58
+ mov r2, #4
+ mov r3, #1
+ bl FUN_02019064
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xf
+ str r0, [sp, #0xc]
+ ldr r0, _021D866C ; =0x0000019F
+ add r1, r4, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x28]
+ add r1, #0x68
+ mov r2, #4
+ mov r3, #0xb
+ bl FUN_02019064
+ add r0, r4, #0
+ add r0, #0x28
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r4, #0
+ add r0, #0x38
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r4, #0
+ add r0, #0x48
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r4, #0
+ add r0, #0x58
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r4, #0
+ add r0, #0x68
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r4, #0
+ add r0, #0x28
+ bl FUN_020191D0
+ add r0, r4, #0
+ add r0, #0x38
+ bl FUN_02019570
+ add r0, r4, #0
+ add r0, #0x48
+ bl FUN_02019570
+ add r0, r4, #0
+ add r0, #0x58
+ bl FUN_02019570
+ add r4, #0x68
+ add r0, r4, #0
+ bl FUN_02019570
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_021D8660: .word 0x000003AB
+_021D8664: .word 0x0000033B
+_021D8668: .word 0x000001B3
+_021D866C: .word 0x0000019F
+ thumb_func_end MOD66_021D8554
+
+ thumb_func_start MOD66_021D8670
+MOD66_021D8670: ; 0x021D8670
+ push {r3, r4, r5, lr}
+ ldr r4, [r0, #0x34]
+ mov r5, #0
+ add r4, #0x28
+_021D8678:
+ lsl r0, r5, #4
+ add r0, r4, r0
+ bl FUN_02019178
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r5, #5
+ blo _021D8678
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD66_021D8670
+
+ thumb_func_start MOD66_021D868C
+MOD66_021D868C: ; 0x021D868C
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ add r4, r1, #0
+ cmp r2, #0
+ beq _021D86CA
+ add r0, #0xd0
+ ldr r0, [r0]
+ mov r1, #0x20
+ str r1, [sp]
+ mov r1, #0x18
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ mov r2, #0
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldrh r1, [r0]
+ add r3, r2, #0
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r1, #5
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x28]
+ bl FUN_02018170
+_021D86CA:
+ add r0, r5, #0
+ add r0, #0xcc
+ ldr r0, [r0]
+ mov r2, #6
+ str r2, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ str r1, [sp, #8]
+ add r1, r4, #0
+ mul r1, r2
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0xc]
+ mov r1, #0
+ str r1, [sp, #0x10]
+ ldrh r1, [r0]
+ mov r2, #0xd
+ mov r3, #0xa
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r1, #5
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x28]
+ bl FUN_020181EC
+ add sp, #0x1c
+ pop {r4, r5, pc}
+ thumb_func_end MOD66_021D868C
+
+ thumb_func_start MOD66_021D870C
+MOD66_021D870C: ; 0x021D870C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0
+ lsl r0, r1, #2
+ str r1, [sp, #0x1c]
+ mov r1, #6
+ add r2, r0, #0
+ mul r2, r1
+ ldr r1, _021D8834 ; =0x021D9754
+ add r3, r0, #1
+ add r6, r1, r2
+ mov r1, #6
+ add r2, r3, #0
+ mul r2, r1
+ ldr r1, _021D8834 ; =0x021D9754
+ mov r4, #6
+ add r3, r1, r2
+ add r1, r0, #2
+ mul r4, r1
+ ldr r1, _021D8834 ; =0x021D9754
+ add r0, r0, #3
+ add r4, r1, r4
+ mov r1, #6
+ mul r1, r0
+ ldr r0, _021D8834 ; =0x021D9754
+ str r1, [sp, #0x20]
+ add r7, r0, r1
+ add r0, r5, #0
+ add r0, #0xc0
+ ldrb r1, [r3, #4]
+ ldr r0, [r0]
+ str r1, [sp]
+ ldrb r1, [r3, #5]
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ str r1, [sp, #8]
+ ldr r1, _021D8834 ; =0x021D9754
+ ldrb r1, [r1, r2]
+ str r1, [sp, #0xc]
+ ldrb r1, [r3, #1]
+ str r1, [sp, #0x10]
+ ldrh r1, [r0]
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r1, #2
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldrb r2, [r3, #2]
+ ldrb r3, [r3, #3]
+ ldr r0, [r5, #0x28]
+ bl FUN_02018170
+ add r0, r5, #0
+ add r0, #0xd4
+ ldrb r1, [r7, #4]
+ ldr r0, [r0]
+ ldr r2, _021D8834 ; =0x021D9754
+ str r1, [sp]
+ ldrb r1, [r7, #5]
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ str r1, [sp, #8]
+ ldr r1, [sp, #0x20]
+ ldrb r1, [r2, r1]
+ str r1, [sp, #0xc]
+ ldrb r1, [r7, #1]
+ str r1, [sp, #0x10]
+ ldrh r1, [r0]
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r1, #6
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldrb r2, [r7, #2]
+ ldrb r3, [r7, #3]
+ ldr r0, [r5, #0x28]
+ bl FUN_020181EC
+ ldr r0, [sp, #0x1c]
+ cmp r0, #2
+ beq _021D882E
+ add r0, r5, #0
+ add r0, #0xc0
+ ldrb r1, [r6, #4]
+ ldr r0, [r0]
+ str r1, [sp]
+ ldrb r1, [r6, #5]
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ str r1, [sp, #8]
+ ldrb r1, [r6]
+ str r1, [sp, #0xc]
+ ldrb r1, [r6, #1]
+ str r1, [sp, #0x10]
+ ldrh r1, [r0]
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r1, #3
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldrb r2, [r6, #2]
+ ldrb r3, [r6, #3]
+ ldr r0, [r5, #0x28]
+ bl FUN_02018170
+ add r0, r5, #0
+ add r0, #0xd4
+ ldrb r1, [r4, #4]
+ ldr r0, [r0]
+ str r1, [sp]
+ ldrb r1, [r4, #5]
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ str r1, [sp, #8]
+ ldrb r1, [r4]
+ str r1, [sp, #0xc]
+ ldrb r1, [r4, #1]
+ str r1, [sp, #0x10]
+ ldrh r1, [r0]
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r1, #7
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldrb r2, [r4, #2]
+ ldrb r3, [r4, #3]
+ ldr r0, [r5, #0x28]
+ bl FUN_020181EC
+_021D882E:
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D8834: .word 0x021D9754
+ thumb_func_end MOD66_021D870C
+
+ thumb_func_start MOD66_021D8838
+MOD66_021D8838: ; 0x021D8838
+ push {r3, r4, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ mov r1, #0x20
+ str r1, [sp]
+ mov r1, #0x18
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ mov r2, #0
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldrh r1, [r0]
+ add r3, r2, #0
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r1, #2
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x28]
+ bl FUN_02018170
+ add r0, r4, #0
+ add r0, #0xbc
+ mov r2, #0
+ ldr r0, [r0]
+ mov r1, #0x20
+ str r1, [sp]
+ mov r1, #0x18
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldrh r1, [r0]
+ add r3, r2, #0
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r1, #3
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x28]
+ bl FUN_02018170
+ ldrb r0, [r4]
+ cmp r0, #1
+ beq _021D88DE
+ add r0, r4, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ mov r1, #2
+ str r1, [sp]
+ mov r1, #3
+ add r2, r0, #0
+ str r1, [sp, #4]
+ add r2, #0xc
+ str r2, [sp, #8]
+ mov r2, #0
+ str r2, [sp, #0xc]
+ mov r3, #0x15
+ str r3, [sp, #0x10]
+ ldrh r2, [r0]
+ lsl r2, r2, #0x15
+ lsr r2, r2, #0x18
+ str r2, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r2, #0x10
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x28]
+ bl FUN_02018170
+_021D88DE:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD66_021D868C
+ add r0, r4, #0
+ add r0, #0xc8
+ mov r2, #0
+ ldr r0, [r0]
+ mov r1, #0x40
+ str r1, [sp]
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldrh r1, [r0]
+ add r3, r2, #0
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r1, #6
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x28]
+ bl FUN_020181EC
+ add r0, r4, #0
+ add r0, #0xc4
+ mov r2, #0
+ ldr r0, [r0]
+ mov r1, #0x40
+ str r1, [sp]
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldrh r1, [r0]
+ add r3, r2, #0
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r1, #7
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x28]
+ bl FUN_020181EC
+ ldrh r1, [r4, #2]
+ mov r0, #1
+ tst r0, r1
+ beq _021D895C
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD66_021D870C
+_021D895C:
+ ldrh r1, [r4, #2]
+ mov r0, #2
+ tst r0, r1
+ beq _021D896C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD66_021D870C
+_021D896C:
+ ldrh r1, [r4, #2]
+ mov r0, #4
+ tst r0, r1
+ beq _021D897C
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD66_021D870C
+_021D897C:
+ ldrh r1, [r4, #2]
+ mov r0, #8
+ tst r0, r1
+ beq _021D898C
+ add r0, r4, #0
+ mov r1, #3
+ bl MOD66_021D870C
+_021D898C:
+ ldr r0, [r4, #0x28]
+ mov r1, #2
+ bl FUN_0201AC68
+ ldr r0, [r4, #0x28]
+ mov r1, #3
+ bl FUN_0201AC68
+ ldr r0, [r4, #0x28]
+ mov r1, #5
+ bl FUN_0201AC68
+ ldr r0, [r4, #0x28]
+ mov r1, #6
+ bl FUN_0201AC68
+ ldr r0, [r4, #0x28]
+ mov r1, #7
+ bl FUN_0201AC68
+ add sp, #0x1c
+ pop {r3, r4, pc}
+ thumb_func_end MOD66_021D8838
+
+ thumb_func_start MOD66_021D89B8
+MOD66_021D89B8: ; 0x021D89B8
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ mov r1, #6
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #0x28]
+ mov r1, #7
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ mov r2, #0
+ ldr r0, [r4, #0x28]
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_020179E0
+ mov r2, #0
+ ldr r0, [r4, #0x28]
+ mov r1, #7
+ add r3, r2, #0
+ bl FUN_020179E0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x28]
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02018540
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x28]
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x28]
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x28]
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x28]
+ mov r1, #4
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x28]
+ mov r1, #5
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x28]
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x28]
+ mov r1, #7
+ add r3, r2, #0
+ bl FUN_02018540
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ bl FUN_0201AC68
+ ldr r0, [r4, #0x28]
+ mov r1, #1
+ bl FUN_0201AC68
+ ldr r0, [r4, #0x28]
+ mov r1, #2
+ bl FUN_0201AC68
+ ldr r0, [r4, #0x28]
+ mov r1, #3
+ bl FUN_0201AC68
+ ldr r0, [r4, #0x28]
+ mov r1, #4
+ bl FUN_0201AC68
+ ldr r0, [r4, #0x28]
+ mov r1, #5
+ bl FUN_0201AC68
+ ldr r0, [r4, #0x28]
+ mov r1, #6
+ bl FUN_0201AC68
+ ldr r0, [r4, #0x28]
+ mov r1, #7
+ bl FUN_0201AC68
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD66_021D89B8
+
+ thumb_func_start MOD66_021D8AF4
+MOD66_021D8AF4: ; 0x021D8AF4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r1, r5, #0
+ add r0, #0xd8
+ add r1, #0xdc
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r2, _021D8BE4 ; =0x021D981C
+ ldr r4, [r5, #0x34]
+ bl FUN_0200BE38
+ mov r1, #1
+ lsl r1, r1, #8
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r1, #1
+ lsl r1, r1, #8
+ ldr r0, [r4, r1]
+ lsl r1, r1, #4
+ bl FUN_020200D8
+ mov r0, #1
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ mov r1, #0x80
+ mov r2, #0x6c
+ bl FUN_0200C6E4
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xd8
+ add r1, #0xdc
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r2, _021D8BE8 ; =0x021D9844
+ bl FUN_0200BE38
+ mov r1, #0x41
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x41
+ lsl r0, r0, #2
+ mov r1, #2
+ ldr r0, [r4, r0]
+ lsl r1, r1, #0xc
+ bl FUN_020200D8
+ mov r0, #0x41
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r1, [r4, #0x18]
+ mov r0, #0x41
+ lsl r0, r0, #2
+ mov r2, #7
+ add r3, r1, #0
+ mul r3, r2
+ add r3, #0x19
+ lsl r1, r3, #0x10
+ ldr r3, [r4, #0x1c]
+ ldr r0, [r4, r0]
+ mul r2, r3
+ sub r2, #0x22
+ lsl r2, r2, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C6E4
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xd8
+ add r1, #0xdc
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r2, _021D8BEC ; =0x021D986C
+ bl FUN_0200BE38
+ mov r1, #0x42
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r1, [r5, #0x2c]
+ mov r0, #0x42
+ ldr r1, [r1, #0xc]
+ lsl r0, r0, #2
+ lsl r1, r1, #0x10
+ ldr r0, [r4, r0]
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+ ldr r1, [r4, #0x18]
+ mov r0, #0x42
+ lsl r0, r0, #2
+ mov r2, #7
+ add r3, r1, #0
+ mul r3, r2
+ add r3, #0x19
+ lsl r1, r3, #0x10
+ ldr r3, [r4, #0x1c]
+ ldr r0, [r4, r0]
+ mul r2, r3
+ sub r2, #0x22
+ lsl r2, r2, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C6E4
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8BE4: .word 0x021D981C
+_021D8BE8: .word 0x021D9844
+_021D8BEC: .word 0x021D986C
+ thumb_func_end MOD66_021D8AF4
+
+ thumb_func_start MOD66_021D8BF0
+MOD66_021D8BF0: ; 0x021D8BF0
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ cmp r4, #8
+ bge _021D8C16
+ ldr r0, [r5, #0x28]
+ mov r1, #6
+ mov r2, #0
+ mov r3, #8
+ bl FUN_0201AEE4
+ ldr r0, [r5, #0x28]
+ mov r1, #7
+ mov r2, #0
+ mov r3, #8
+ bl FUN_0201AEE4
+ b _021D8C4A
+_021D8C16:
+ cmp r4, #0xf8
+ ldr r0, [r5, #0x28]
+ ble _021D8C34
+ mov r1, #6
+ mov r2, #0
+ mov r3, #0xf8
+ bl FUN_0201AEE4
+ ldr r0, [r5, #0x28]
+ mov r1, #7
+ mov r2, #0
+ mov r3, #0xf8
+ bl FUN_0201AEE4
+ b _021D8C4A
+_021D8C34:
+ mov r1, #6
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_0201AEE4
+ ldr r0, [r5, #0x28]
+ mov r1, #7
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_0201AEE4
+_021D8C4A:
+ cmp r6, #0x50
+ bge _021D8C68
+ ldr r0, [r5, #0x28]
+ mov r1, #6
+ mov r2, #3
+ mov r3, #0x50
+ bl FUN_0201AEE4
+ ldr r0, [r5, #0x28]
+ mov r1, #7
+ mov r2, #3
+ mov r3, #0x50
+ bl FUN_0201AEE4
+ pop {r4, r5, r6, pc}
+_021D8C68:
+ mov r3, #0x13
+ lsl r3, r3, #4
+ cmp r6, r3
+ ldr r0, [r5, #0x28]
+ ble _021D8C8A
+ mov r1, #6
+ mov r2, #3
+ bl FUN_0201AEE4
+ mov r3, #0x13
+ ldr r0, [r5, #0x28]
+ mov r1, #7
+ mov r2, #3
+ lsl r3, r3, #4
+ bl FUN_0201AEE4
+ pop {r4, r5, r6, pc}
+_021D8C8A:
+ mov r1, #6
+ mov r2, #3
+ add r3, r6, #0
+ bl FUN_0201AEE4
+ ldr r0, [r5, #0x28]
+ mov r1, #7
+ mov r2, #3
+ add r3, r6, #0
+ bl FUN_0201AEE4
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD66_021D8BF0
+
+ thumb_func_start MOD66_021D8CA4
+MOD66_021D8CA4: ; 0x021D8CA4
+ push {r4, r5}
+ ldr r5, [r0]
+ mov r4, #0
+ cmp r5, #0
+ ble _021D8CC8
+_021D8CAE:
+ ldr r3, [r0, #0xc]
+ cmp r1, r3
+ bne _021D8CC0
+ ldr r3, [r0, #0x10]
+ cmp r2, r3
+ bne _021D8CC0
+ add r0, r4, #0
+ pop {r4, r5}
+ bx lr
+_021D8CC0:
+ add r4, r4, #1
+ add r0, #0x10
+ cmp r4, r5
+ blt _021D8CAE
+_021D8CC8:
+ mov r0, #0
+ mvn r0, r0
+ pop {r4, r5}
+ bx lr
+ thumb_func_end MOD66_021D8CA4
+
+ thumb_func_start MOD66_021D8CD0
+MOD66_021D8CD0: ; 0x021D8CD0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ ldr r0, [r6, #0x34]
+ mov r1, #0
+ str r0, [sp, #8]
+ add r0, #0xa4
+ mov r2, #0x5c
+ bl MI_CpuFill8
+ mov r0, #0
+ ldr r7, [sp, #8]
+ str r0, [sp, #4]
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ add r7, #0xa4
+ str r0, [sp, #0xc]
+ add r0, #0xb0
+ str r0, [sp, #0xc]
+_021D8CF6:
+ ldr r1, [r6, #0x2c]
+ ldr r0, [sp]
+ add r1, #0x20
+ add r4, r1, r0
+ ldrh r0, [r4, #0xa]
+ cmp r0, #0
+ beq _021D8DAA
+ ldr r1, [r4]
+ ldr r0, [r6, #0x20]
+ cmp r1, r0
+ bne _021D8D14
+ ldr r2, [r4, #4]
+ ldr r0, [r6, #0x24]
+ cmp r2, r0
+ beq _021D8D9A
+_021D8D14:
+ ldr r2, [r4, #4]
+ add r0, r7, #0
+ bl MOD66_021D8CA4
+ cmp r0, #0
+ bge _021D8D32
+ ldr r0, [sp, #8]
+ add r0, #0xa4
+ ldr r1, [r0]
+ ldr r0, [r7]
+ lsl r1, r1, #4
+ add r0, r0, #1
+ str r0, [r7]
+ ldr r0, [sp, #0xc]
+ b _021D8D36
+_021D8D32:
+ lsl r1, r0, #4
+ ldr r0, [sp, #0xc]
+_021D8D36:
+ add r5, r0, r1
+ ldr r0, [r4]
+ str r0, [r5]
+ ldr r0, [r4, #4]
+ str r0, [r5, #4]
+ ldrh r0, [r4, #8]
+ cmp r0, #3
+ bls _021D8D4A
+ mov r0, #0
+ b _021D8D50
+_021D8D4A:
+ lsl r1, r0, #1
+ ldr r0, _021D8DD4 ; =0x021D9718
+ ldrh r0, [r0, r1]
+_021D8D50:
+ strh r0, [r5, #8]
+ ldr r0, [sp, #4]
+ add r1, r6, #0
+ strb r0, [r5, #0xa]
+ mov r0, #1
+ strb r0, [r5, #0xb]
+ add r0, r6, #0
+ add r0, #0xd8
+ add r1, #0xdc
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r2, _021D8DD8 ; =0x021D972C
+ bl FUN_0200BE38
+ str r0, [r5, #0xc]
+ ldr r2, [r5]
+ mov r1, #7
+ mul r1, r2
+ add r1, #0x19
+ lsl r1, r1, #0x10
+ ldr r3, [r5, #4]
+ mov r2, #7
+ mul r2, r3
+ sub r2, #0x22
+ lsl r2, r2, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C6E4
+ ldr r0, [r5, #0xc]
+ mov r1, #2
+ bl FUN_02020310
+ ldr r0, [r5, #0xc]
+ mov r1, #0
+ bl FUN_020200A0
+_021D8D9A:
+ ldr r0, [sp]
+ add r0, #0xc
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+ cmp r0, #5
+ blt _021D8CF6
+_021D8DAA:
+ ldr r0, [sp, #8]
+ add r0, #0xa4
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D8DD0
+ sub r1, r0, #1
+ ldr r0, [sp, #8]
+ mov r2, #1
+ add r0, #0xae
+ strb r1, [r0]
+ ldr r1, [sp, #8]
+ ldr r0, _021D8DDC ; =MOD66_021D8DE0
+ add r1, #0xa4
+ bl FUN_0200CA44
+ ldr r1, [sp, #8]
+ add r1, #0xa8
+ str r1, [sp, #8]
+ str r0, [r1]
+_021D8DD0:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8DD4: .word 0x021D9718
+_021D8DD8: .word 0x021D972C
+_021D8DDC: .word MOD66_021D8DE0
+ thumb_func_end MOD66_021D8CD0
+
+ thumb_func_start MOD66_021D8DE0
+MOD66_021D8DE0: ; 0x021D8DE0
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #8]
+ add r1, r0, #1
+ strh r1, [r4, #8]
+ mov r1, #0x1a
+ bl _s32_div_f
+ cmp r1, #0
+ bgt _021D8E30
+ ldrb r0, [r4, #0xb]
+ mov r1, #0
+ lsl r0, r0, #4
+ add r0, r4, r0
+ ldr r0, [r0, #0x18]
+ bl FUN_020200A0
+ ldrb r0, [r4, #0xa]
+ mov r1, #1
+ lsl r0, r0, #4
+ add r0, r4, r0
+ ldr r0, [r0, #0x18]
+ bl FUN_020200A0
+ ldrb r0, [r4, #0xa]
+ strb r0, [r4, #0xb]
+ ldr r1, [r4]
+ ldrb r2, [r4, #0xa]
+ sub r0, r1, #1
+ add r0, r2, r0
+ bl _s32_div_f
+ strb r1, [r4, #0xa]
+ mov r0, #0x41
+ ldrh r1, [r4, #8]
+ lsl r0, r0, #2
+ cmp r1, r0
+ bls _021D8E30
+ mov r0, #1
+ strh r0, [r4, #8]
+_021D8E30:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD66_021D8DE0
+
+ thumb_func_start MOD66_021D8E34
+MOD66_021D8E34: ; 0x021D8E34
+ push {r4, r5, r6, lr}
+ ldr r6, [r0, #0x34]
+ add r0, r6, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D8E46
+ bl FUN_0200CAB4
+_021D8E46:
+ add r0, r6, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ mov r4, #0
+ cmp r0, #0
+ ble _021D8E6C
+ add r5, r6, #0
+_021D8E54:
+ add r0, r5, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ bl FUN_0200BC14
+ add r0, r6, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, r0
+ blt _021D8E54
+_021D8E6C:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD66_021D8E34
+
+ thumb_func_start MOD66_021D8E70
+MOD66_021D8E70: ; 0x021D8E70
+ push {r4, lr}
+ add r3, r0, #0
+ ldr r4, [r3, #0x34]
+ mov r2, #0
+ str r2, [r4, #4]
+ str r2, [r4, #8]
+ cmp r1, #0
+ bne _021D8E90
+ ldr r0, _021D8EA0 ; =MOD66_021D8EA8
+ add r1, r3, #0
+ bl FUN_0200CA44
+ mov r1, #0x43
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r4, pc}
+_021D8E90:
+ ldr r0, _021D8EA4 ; =MOD66_021D9020
+ add r1, r3, #0
+ bl FUN_0200CA44
+ mov r1, #0x43
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021D8EA0: .word MOD66_021D8EA8
+_021D8EA4: .word MOD66_021D9020
+ thumb_func_end MOD66_021D8E70
+
+ thumb_func_start MOD66_021D8EA8
+MOD66_021D8EA8: ; 0x021D8EA8
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ ldr r4, [r5, #0x34]
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #4
+ bls _021D8EBA
+ b _021D9014
+_021D8EBA:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8EC6: ; jump table
+ .short _021D8ED0 - _021D8EC6 - 2 ; case 0
+ .short _021D8F04 - _021D8EC6 - 2 ; case 1
+ .short _021D8F40 - _021D8EC6 - 2 ; case 2
+ .short _021D8F7C - _021D8EC6 - 2 ; case 3
+ .short _021D8FF2 - _021D8EC6 - 2 ; case 4
+_021D8ED0:
+ mov r0, #1
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #1
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #1
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_02020208
+ ldr r0, _021D9018 ; =0x000005E4
+ bl FUN_020054C8
+ ldr r0, [r4, #4]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, r6, pc}
+_021D8F04:
+ ldr r1, [r4, #8]
+ mov r0, #0x1f
+ lsr r3, r1, #0x1f
+ lsl r2, r1, #0x1f
+ sub r2, r2, r3
+ ror r2, r0
+ add r0, r3, r2
+ beq _021D8F2C
+ add r3, r1, r3
+ ldr r1, _021D901C ; =0x021D9714
+ asr r2, r3, #1
+ ldrb r1, [r1, r2]
+ add r0, r5, #0
+ mov r2, #0
+ bl MOD66_021D868C
+ ldr r0, [r5, #0x28]
+ mov r1, #5
+ bl FUN_0201AC68
+_021D8F2C:
+ ldr r1, [r4, #8]
+ add r0, r1, #1
+ str r0, [r4, #8]
+ cmp r1, #7
+ ble _021D9014
+ ldr r0, [r4, #4]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, r6, pc}
+_021D8F40:
+ mov r0, #1
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #1
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_020200BC
+ mov r3, #0
+ str r3, [r5, #0x14]
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r5, #4]
+ mov r1, #0xd
+ str r0, [sp, #8]
+ mov r0, #4
+ mov r2, #2
+ bl FUN_0200E1D0
+ ldr r0, [r4, #4]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, r6, pc}
+_021D8F7C:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9014
+ mov r0, #1
+ strb r0, [r4, #0x10]
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x28]
+ mov r1, #4
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x28]
+ mov r1, #5
+ add r3, r2, #0
+ bl FUN_02018540
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x68
+ bl MOD66_021D84C8
+ add r0, r5, #0
+ bl MOD66_021D818C
+ add r0, r5, #0
+ bl MOD66_021D8140
+ mov r3, #0
+ str r3, [r5, #0x14]
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r5, #4]
+ mov r1, #0xd
+ str r0, [sp, #8]
+ mov r0, #4
+ mov r2, #5
+ bl FUN_0200E1D0
+ ldr r0, [r4, #4]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, r6, pc}
+_021D8FF2:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9014
+ mov r0, #0
+ str r0, [r4, #8]
+ str r0, [r4, #4]
+ ldrb r0, [r4, #0x14]
+ sub r0, r0, #2
+ strb r0, [r4, #0x14]
+ add r0, r6, #0
+ bl FUN_0200CAB4
+ mov r0, #0x43
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_021D9014:
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D9018: .word 0x000005E4
+_021D901C: .word 0x021D9714
+ thumb_func_end MOD66_021D8EA8
+
+ thumb_func_start MOD66_021D9020
+MOD66_021D9020: ; 0x021D9020
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ ldr r4, [r5, #0x34]
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021D903C
+ cmp r0, #1
+ beq _021D9066
+ cmp r0, #2
+ beq _021D90C4
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+_021D903C:
+ mov r3, #0
+ str r3, [r5, #0x14]
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r5, #4]
+ mov r1, #0xd
+ str r0, [sp, #8]
+ mov r0, #4
+ mov r2, #2
+ bl FUN_0200E1D0
+ ldr r0, _021D90EC ; =0x00000691
+ bl FUN_020054C8
+ ldr r0, [r4, #4]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, r6, pc}
+_021D9066:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D90E8
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x28]
+ mov r1, #4
+ add r3, r2, #0
+ bl FUN_02018540
+ add r0, r5, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD66_021D868C
+ ldr r0, [r5, #0x28]
+ mov r1, #4
+ bl FUN_0201AC68
+ ldr r0, [r5, #0x28]
+ mov r1, #5
+ bl FUN_0201AC68
+ mov r3, #0
+ str r3, [r5, #0x14]
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r5, #4]
+ mov r1, #0xd
+ str r0, [sp, #8]
+ mov r0, #4
+ mov r2, #5
+ bl FUN_0200E1D0
+ ldr r0, [r4, #4]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r4, r5, r6, pc}
+_021D90C4:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D90E8
+ mov r0, #0
+ strb r0, [r4, #0x10]
+ str r0, [r4, #4]
+ str r0, [r4, #8]
+ ldrb r0, [r4, #0x14]
+ sub r0, r0, #2
+ strb r0, [r4, #0x14]
+ add r0, r6, #0
+ bl FUN_0200CAB4
+ mov r0, #0x43
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_021D90E8:
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D90EC: .word 0x00000691
+ thumb_func_end MOD66_021D9020
+
+ thumb_func_start MOD66_021D90F0
+MOD66_021D90F0: ; 0x021D90F0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r4, [r5, #0x34]
+ add r0, r4, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D9104
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D9104:
+ add r0, r4, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ ldr r1, [r4, #0x20]
+ ldr r2, [r4, #0x18]
+ ldr r3, [r4, #0x1c]
+ bl MOD66_021D9390
+ cmp r0, #0
+ beq _021D911E
+ ldr r0, [r0, #0x14]
+ cmp r0, #0
+ bne _021D9122
+_021D911E:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D9122:
+ ldr r1, [r5, #0x2c]
+ mov r0, #1
+ str r0, [r1, #0x10]
+ ldr r2, [r4, #0x18]
+ ldr r1, [r5, #0x2c]
+ str r2, [r1, #0x14]
+ ldr r2, [r4, #0x1c]
+ ldr r1, [r5, #0x2c]
+ str r2, [r1, #0x18]
+ ldr r2, [r4, #0x20]
+ ldr r1, [r5, #0x2c]
+ str r2, [r1, #0x1c]
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD66_021D90F0
+
+ thumb_func_start MOD66_021D913C
+MOD66_021D913C: ; 0x021D913C
+ push {r4, r5, r6, lr}
+ sub sp, #0x50
+ add r4, r0, #0
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ ldr r1, [r4, #4]
+ mov r0, #0x20
+ bl FUN_0201C24C
+ ldr r0, [r4, #4]
+ bl FUN_0200BB14
+ add r1, r4, #0
+ add r1, #0xd8
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0xd8
+ ldr r0, [r0]
+ bl FUN_0200BB34
+ add r1, r4, #0
+ add r1, #0xdc
+ add r2, sp, #0x30
+ ldr r5, _021D91E8 ; =0x021D98C4
+ str r0, [r1]
+ ldmia r5!, {r0, r1}
+ add r3, r2, #0
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ ldr r6, _021D91EC ; =0x021D9894
+ stmia r2!, {r0, r1}
+ add r5, sp, #0x1c
+ ldmia r6!, {r0, r1}
+ add r2, r5, #0
+ stmia r5!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r5!, {r0, r1}
+ ldr r0, [r6]
+ add r1, r3, #0
+ str r0, [r5]
+ add r0, r4, #0
+ add r0, #0xd8
+ ldr r0, [r0]
+ mov r3, #0x20
+ bl FUN_0200BB6C
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xd8
+ add r1, #0xdc
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x1c
+ bl FUN_0200BBF0
+ ldr r5, _021D91F0 ; =0x021D98A8
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ add r0, r4, #0
+ add r0, #0xd8
+ add r4, #0xdc
+ ldr r0, [r0]
+ ldr r1, [r4]
+ bl FUN_0200BD20
+ add sp, #0x50
+ pop {r4, r5, r6, pc}
+ nop
+_021D91E8: .word 0x021D98C4
+_021D91EC: .word 0x021D9894
+_021D91F0: .word 0x021D98A8
+ thumb_func_end MOD66_021D913C
+
+ thumb_func_start MOD66_021D91F4
+MOD66_021D91F4: ; 0x021D91F4
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ add r0, #0xd8
+ add r1, #0xdc
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl FUN_0200BCE0
+ add r4, #0xd8
+ ldr r0, [r4]
+ bl FUN_0200BD04
+ bl FUN_0201C29C
+ pop {r4, pc}
+ thumb_func_end MOD66_021D91F4
+
+ thumb_func_start MOD66_021D9214
+MOD66_021D9214: ; 0x021D9214
+ ldr r3, _021D921C ; =0x0200BC1D
+ add r0, #0xdc
+ ldr r0, [r0]
+ bx r3
+ .align 2, 0
+_021D921C: .word 0x0200BC1D
+ thumb_func_end MOD66_021D9214
+
+ thumb_func_start MOD66_021D9220
+MOD66_021D9220: ; 0x021D9220
+ ldr r3, _021D9224 ; =0x0200BC31
+ bx r3
+ .align 2, 0
+_021D9224: .word 0x0200BC31
+ thumb_func_end MOD66_021D9220
+
+ thumb_func_start MOD66_021D9228
+MOD66_021D9228: ; 0x021D9228
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r5, [sp, #0x28]
+ str r0, [sp]
+ str r1, [sp, #4]
+ add r0, r5, #0
+ mov r1, #0xc
+ str r2, [sp, #8]
+ add r4, r3, #0
+ bl FUN_02016998
+ add r7, r0, #0
+ mov r0, #0
+ strb r0, [r7]
+ strb r0, [r7, #1]
+ strb r0, [r7, #2]
+ strb r0, [r7, #3]
+ strb r0, [r7, #4]
+ strb r0, [r7, #5]
+ strb r0, [r7, #6]
+ strb r0, [r7, #7]
+ strb r0, [r7, #8]
+ strb r0, [r7, #9]
+ strb r0, [r7, #0xa]
+ strb r0, [r7, #0xb]
+ strh r4, [r7]
+ ldrh r2, [r7]
+ mov r1, #0x1c
+ add r0, r5, #0
+ mul r1, r2
+ bl FUN_02016998
+ str r0, [r7, #8]
+ ldrh r3, [r7]
+ mov r2, #0x1c
+ mov r1, #0
+ mul r2, r3
+ bl Call_FillMemWithValue
+ ldrh r0, [r7]
+ mov r6, #0
+ ldr r5, _021D9344 ; =0x021D990C
+ cmp r0, #0
+ ble _021D933E
+ str r6, [sp, #0xc]
+_021D9282:
+ ldr r0, [r7, #8]
+ ldr r1, [sp, #0xc]
+ ldr r2, [r5]
+ add r4, r0, r1
+ str r2, [r0, r1]
+ ldrb r0, [r5, #8]
+ ldr r1, [sp, #4]
+ ldr r2, _021D9348 ; =0x021D98E4
+ strb r0, [r4, #8]
+ ldrb r0, [r5, #9]
+ strb r0, [r4, #9]
+ ldrh r0, [r5, #0xa]
+ strh r0, [r4, #0xa]
+ ldr r0, [r5, #0xc]
+ str r0, [r4, #0xc]
+ ldr r0, [r5, #0x10]
+ str r0, [r4, #0x10]
+ ldr r0, [sp, #8]
+ ldrb r0, [r0, r6]
+ str r0, [r4, #0x14]
+ ldr r0, [sp]
+ bl FUN_0200BE38
+ str r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r1, [r4, #0x14]
+ cmp r1, #0
+ beq _021D92CC
+ ldrb r2, [r4, #9]
+ ldr r0, [r4, #0x18]
+ add r2, r2, #5
+ add r1, r2, r1
+ bl FUN_02020248
+ b _021D92E2
+_021D92CC:
+ ldrh r1, [r4, #0xa]
+ ldr r0, _021D934C ; =0x0000FFFF
+ add r0, r1, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #1
+ bhi _021D92E2
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_020200A0
+_021D92E2:
+ ldrb r0, [r4, #8]
+ cmp r0, #0
+ beq _021D92FA
+ lsl r0, r0, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _021D9308
+_021D92FA:
+ lsl r0, r0, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_021D9308:
+ bl _ffix
+ add r1, r0, #0
+ ldr r0, [r4, #0x18]
+ bl FUN_020201E4
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x10]
+ add r1, #0x19
+ sub r2, #0x22
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ ldr r0, [r4, #0x18]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C6E4
+ ldr r0, [sp, #0xc]
+ add r5, #0x14
+ add r0, #0x1c
+ str r0, [sp, #0xc]
+ add r0, r6, #1
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ ldrh r0, [r7]
+ cmp r6, r0
+ blt _021D9282
+_021D933E:
+ add r0, r7, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9344: .word 0x021D990C
+_021D9348: .word 0x021D98E4
+_021D934C: .word 0x0000FFFF
+ thumb_func_end MOD66_021D9228
+
+ thumb_func_start MOD66_021D9350
+MOD66_021D9350: ; 0x021D9350
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldrh r0, [r5]
+ mov r6, #0
+ cmp r0, #0
+ ble _021D9380
+ add r4, r6, #0
+_021D935E:
+ ldr r0, [r5, #8]
+ mov r1, #0
+ add r7, r0, r4
+ ldr r0, [r7, #0x18]
+ add r2, r1, #0
+ bl FUN_0202008C
+ ldr r0, [r7, #0x18]
+ bl FUN_0201FFC8
+ add r0, r6, #1
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ ldrh r0, [r5]
+ add r4, #0x1c
+ cmp r6, r0
+ blt _021D935E
+_021D9380:
+ ldr r0, [r5, #8]
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD66_021D9350
+
+ thumb_func_start MOD66_021D9390
+MOD66_021D9390: ; 0x021D9390
+ push {r3, r4, r5, r6}
+ ldrh r5, [r0]
+ mov r4, #0
+ cmp r5, #0
+ ble _021D93EC
+ ldr r0, [r0, #8]
+_021D939C:
+ ldr r6, [r0]
+ cmp r6, r1
+ bne _021D93E0
+ ldrh r6, [r0, #0xa]
+ cmp r6, #3
+ bhi _021D93E0
+ add r6, r6, r6
+ add r6, pc
+ ldrh r6, [r6, #6]
+ lsl r6, r6, #0x10
+ asr r6, r6, #0x10
+ add pc, r6
+_021D93B4: ; jump table
+ .short _021D93BC - _021D93B4 - 2 ; case 0
+ .short _021D93C0 - _021D93B4 - 2 ; case 1
+ .short _021D93CC - _021D93B4 - 2 ; case 2
+ .short _021D93D8 - _021D93B4 - 2 ; case 3
+_021D93BC:
+ pop {r3, r4, r5, r6}
+ bx lr
+_021D93C0:
+ cmp r2, #9
+ bne _021D93E0
+ cmp r3, #0x1c
+ bne _021D93E0
+ pop {r3, r4, r5, r6}
+ bx lr
+_021D93CC:
+ cmp r2, #0x1a
+ bne _021D93E0
+ cmp r3, #0x12
+ bne _021D93E0
+ pop {r3, r4, r5, r6}
+ bx lr
+_021D93D8:
+ cmp r2, #0x1a
+ bne _021D93E0
+ cmp r3, #0x11
+ beq _021D93EE
+_021D93E0:
+ add r4, r4, #1
+ lsl r4, r4, #0x10
+ asr r4, r4, #0x10
+ add r0, #0x1c
+ cmp r4, r5
+ blt _021D939C
+_021D93EC:
+ mov r0, #0
+_021D93EE:
+ pop {r3, r4, r5, r6}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD66_021D9390
+
+ thumb_func_start MOD66_021D93F4
+MOD66_021D93F4: ; 0x021D93F4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bne _021D93FE
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D93FE:
+ bl MOD66_021D9390
+ add r4, r0, #0
+ beq _021D940C
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ bne _021D9426
+_021D940C:
+ ldr r3, [r5, #4]
+ cmp r3, #0
+ beq _021D9420
+ ldrb r1, [r3, #9]
+ ldr r0, [r3, #0x18]
+ add r2, r1, #5
+ ldr r1, [r3, #0x14]
+ add r1, r2, r1
+ bl FUN_02020248
+_021D9420:
+ mov r0, #0
+ str r0, [r5, #4]
+ pop {r3, r4, r5, pc}
+_021D9426:
+ ldr r1, [r5, #4]
+ cmp r1, #0
+ bne _021D9434
+ mov r0, #0
+ strb r0, [r5, #2]
+ strb r0, [r5, #3]
+ b _021D9450
+_021D9434:
+ ldrh r2, [r4, #0xa]
+ ldr r0, _021D9458 ; =0x0000FFFE
+ add r0, r2, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #1
+ bhi _021D9450
+ ldrb r2, [r1, #9]
+ ldr r0, [r1, #0x18]
+ ldr r1, [r1, #0x14]
+ add r2, r2, #5
+ add r1, r2, r1
+ bl FUN_02020248
+_021D9450:
+ str r4, [r5, #4]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_021D9458: .word 0x0000FFFE
+ thumb_func_end MOD66_021D93F4
+
+ thumb_func_start MOD66_021D945C
+MOD66_021D945C: ; 0x021D945C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r3, [r4, #4]
+ cmp r3, #0
+ beq _021D94A0
+ cmp r1, #1
+ bne _021D94A0
+ ldrb r0, [r4, #3]
+ cmp r0, #0
+ ldr r0, [r3, #0x18]
+ bne _021D947C
+ ldrb r1, [r3, #9]
+ add r1, #8
+ bl FUN_02020248
+ b _021D9488
+_021D947C:
+ ldrb r1, [r3, #9]
+ add r2, r1, #5
+ ldr r1, [r3, #0x14]
+ add r1, r2, r1
+ bl FUN_02020248
+_021D9488:
+ ldrb r0, [r4, #2]
+ add r0, r0, #1
+ strb r0, [r4, #2]
+ ldrb r0, [r4, #2]
+ cmp r0, #0x10
+ bne _021D94A0
+ mov r0, #0
+ strb r0, [r4, #2]
+ ldrb r1, [r4, #3]
+ mov r0, #1
+ eor r0, r1
+ strb r0, [r4, #3]
+_021D94A0:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD66_021D945C
+
+ thumb_func_start MOD66_021D94A4
+MOD66_021D94A4: ; 0x021D94A4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x4c
+ add r5, r0, #0
+ add r0, sp, #4
+ add r4, r1, #0
+ bl FS_InitFile
+ add r0, sp, #4
+ add r1, r5, #0
+ bl FS_OpenFile
+ cmp r0, #0
+ bne _021D94C8
+ bl ErrorHandling
+ add sp, #0x4c
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021D94C8:
+ add r0, sp, #4
+ add r1, sp, #0
+ mov r2, #4
+ bl FS_ReadFile
+ cmp r0, #0
+ bge _021D94DA
+ bl ErrorHandling
+_021D94DA:
+ add r0, r4, #0
+ mov r1, #8
+ bl FUN_02016998
+ add r6, r0, #0
+ mov r0, #0
+ strb r0, [r6]
+ strb r0, [r6, #1]
+ strb r0, [r6, #2]
+ strb r0, [r6, #3]
+ strb r0, [r6, #4]
+ strb r0, [r6, #5]
+ strb r0, [r6, #6]
+ strb r0, [r6, #7]
+ ldr r2, [sp]
+ mov r1, #0x18
+ add r0, r4, #0
+ mul r1, r2
+ bl FUN_02016998
+ str r0, [r6, #4]
+ ldr r3, [sp]
+ mov r2, #0x18
+ mov r1, #0
+ mul r2, r3
+ bl Call_FillMemWithValue
+ ldr r0, [sp]
+ mov r4, #0
+ str r0, [r6]
+ cmp r0, #0
+ ble _021D9536
+ add r5, r4, #0
+_021D951C:
+ ldr r0, [r6, #4]
+ mov r2, #0x18
+ add r7, r0, r5
+ add r0, sp, #4
+ add r1, r7, #0
+ bl FS_ReadFile
+ strh r4, [r7, #0x16]
+ ldr r0, [r6]
+ add r4, r4, #1
+ add r5, #0x18
+ cmp r4, r0
+ blt _021D951C
+_021D9536:
+ add r0, sp, #4
+ bl FS_CloseFile
+ add r0, r6, #0
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD66_021D94A4
+
+ thumb_func_start MOD66_021D9544
+MOD66_021D9544: ; 0x021D9544
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD66_021D9544
+
+ thumb_func_start MOD66_021D9558
+MOD66_021D9558: ; 0x021D9558
+ push {r3, r4, r5, r6}
+ ldr r6, [r0]
+ mov r5, #0
+ cmp r6, #0
+ ble _021D9588
+ ldr r0, [r0, #4]
+_021D9564:
+ ldrh r4, [r0]
+ cmp r4, r1
+ bne _021D9580
+ ldrh r4, [r0, #2]
+ cmp r4, r2
+ bne _021D9580
+ ldrh r1, [r0, #0x14]
+ cmp r1, #0
+ beq _021D958A
+ tst r1, r3
+ bne _021D958A
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+_021D9580:
+ add r5, r5, #1
+ add r0, #0x18
+ cmp r5, r6
+ blt _021D9564
+_021D9588:
+ mov r0, #0
+_021D958A:
+ pop {r3, r4, r5, r6}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD66_021D9558
+
+ .section .rodata
+ ; 0x021D9590
+ .incbin "baserom.nds", 0x2BE4B0, 0x50C
+
+ .section .data
+ ; 0x021D9AA0
+ .incbin "baserom.nds", 0x2BE9C0, 0xA0