summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-13 13:19:04 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-13 13:19:23 -0400
commit629a2330b5f01c666a299eb13f5da65e91cfdb65 (patch)
treecc72f82e11b6c9b5c46cb0ef4b8dd0b1a5c9e928
parente41306f4804014a85e6ef3d7c4d1efc9210fd342 (diff)
Disassemble modules 76 and 77
-rw-r--r--arm9/arm9.lcf50
-rw-r--r--arm9/global.inc10
-rw-r--r--arm9/modules/76/asm/module_76.s3226
-rw-r--r--arm9/modules/77/asm/module_77.s3214
4 files changed, 6494 insertions, 6 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index a783f588..cd289d09 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -2940,7 +2940,17 @@ SECTIONS {
SDK_OVERLAY_MODULE_76_ID = 76;
SDK_OVERLAY.MODULE_76.ID = 76;
SDK_OVERLAY.MODULE_76.START = .;
- FILE_2D5C00.o (.text) /* 0x2D1C00 */
+ module_76.o (.text)
+ module_76.o (.rodata)
+ module_76.o (.init)
+ SDK_OVERLAY.MODULE_76.SINIT_START = .;
+ module_76.o (.ctor)
+ module_76.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_76.SINIT_END = .;
+ . = ALIGN(32);
+ module_76.o (.sdata)
+ module_76.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_76.END = .;
SDK_OVERLAY.MODULE_76.SIZE = SDK_OVERLAY.MODULE_76.END - SDK_OVERLAY.MODULE_76.START;
@@ -2950,7 +2960,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_76.BSS_START = .;
- FILE_2D5C00.o (.bss)
+ module_76.o (.bss)
+ module_76.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_76.BSS_END = .;
SDK_OVERLAY.MODULE_76.BSS_SIZE = SDK_OVERLAY.MODULE_76.BSS_END - SDK_OVERLAY.MODULE_76.BSS_START;
@@ -2961,7 +2972,17 @@ SECTIONS {
SDK_OVERLAY_MODULE_77_ID = 77;
SDK_OVERLAY.MODULE_77.ID = 77;
SDK_OVERLAY.MODULE_77.START = .;
- FILE_2D7C00.o (.text) /* 0x2D3C00 */
+ module_77.o (.text)
+ module_77.o (.rodata)
+ module_77.o (.init)
+ SDK_OVERLAY.MODULE_77.SINIT_START = .;
+ module_77.o (.ctor)
+ module_77.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_77.SINIT_END = .;
+ . = ALIGN(32);
+ module_77.o (.sdata)
+ module_77.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_77.END = .;
SDK_OVERLAY.MODULE_77.SIZE = SDK_OVERLAY.MODULE_77.END - SDK_OVERLAY.MODULE_77.START;
@@ -2971,7 +2992,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_77.BSS_START = .;
- FILE_2D7C00.o (.bss)
+ module_77.o (.bss)
+ module_77.o (.sbss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_77.BSS_END = .;
SDK_OVERLAY.MODULE_77.BSS_SIZE = SDK_OVERLAY.MODULE_77.BSS_END - SDK_OVERLAY.MODULE_77.BSS_START;
@@ -3975,8 +3997,24 @@ SECTIONS {
WRITEW 75;
WRITEW 0;
- OVERLAY_TABLE(MODULE_76, 76)
- OVERLAY_TABLE(MODULE_77, 77)
+ WRITEW 76;
+ WRITEW ADDR(.MODULE_76);
+ WRITEW SDK_OVERLAY.MODULE_76.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_76.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_76.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_76.SINIT_END;
+ WRITEW 76;
+ WRITEW 0;
+
+ WRITEW 77;
+ WRITEW ADDR(.MODULE_77);
+ WRITEW SDK_OVERLAY.MODULE_77.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_77.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_77.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_77.SINIT_END;
+ WRITEW 77;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_78, 78)
OVERLAY_TABLE(MODULE_79, 79)
OVERLAY_TABLE(MODULE_80, 80)
diff --git a/arm9/global.inc b/arm9/global.inc
index a9bbc871..9278357b 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -5801,6 +5801,16 @@
.extern MOD04_021D861C
.extern MOD04_021D8640
.extern MOD04_021D8678
+.extern FUN_02029B08
+.extern FUN_02029B40
+.extern FUN_02029C00
+.extern FUN_02088D1C
+.extern FUN_02088D20
+.extern FUN_02088D4C
+.extern FUN_02088D68
+.extern FUN_02088D84
+.extern FUN_02088DA0
+.extern FUN_02088DBC
.extern FUN_020294F4
.extern FUN_02021C38
.extern FUN_0202822C
diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s
new file mode 100644
index 00000000..45257701
--- /dev/null
+++ b/arm9/modules/76/asm/module_76.s
@@ -0,0 +1,3226 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD76_021D74E0
+MOD76_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ mov r2, #2
+ add r5, r0, #0
+ mov r0, #3
+ mov r1, #0x43
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ mov r1, #0x62
+ add r0, r5, #0
+ lsl r1, r1, #2
+ mov r2, #0x43
+ bl FUN_02006268
+ mov r2, #0x62
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ bl FUN_0200628C
+ str r0, [r4]
+ add r0, r4, #0
+ bl MOD76_021D7638
+ ldr r1, [r4]
+ add r0, r4, #0
+ ldrh r1, [r1, #0x10]
+ mov r2, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD76_021D8C88
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD76_021D8354
+ mov r0, #0
+ str r0, [sp]
+ ldr r3, _021D7560 ; =0x0001020F
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #1
+ bl MOD76_021D7CC8
+ mov r0, #6
+ mov r1, #1
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xc8
+ bl FUN_02019220
+ add r0, r4, #0
+ bl MOD76_021D8CD4
+ ldr r0, _021D7564 ; =MOD76_021D76E8
+ add r1, r4, #0
+ bl FUN_02015F10
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7560: .word 0x0001020F
+_021D7564: .word MOD76_021D76E8
+ thumb_func_end MOD76_021D74E0
+
+ thumb_func_start MOD76_021D7568
+MOD76_021D7568: ; 0x021D7568
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ bl FUN_02006278
+ ldr r1, [r4]
+ add r5, r0, #0
+ cmp r1, #0xc
+ bhi _021D7606
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7584: ; jump table
+ .short _021D759E - _021D7584 - 2 ; case 0
+ .short _021D75A6 - _021D7584 - 2 ; case 1
+ .short _021D75AE - _021D7584 - 2 ; case 2
+ .short _021D75B6 - _021D7584 - 2 ; case 3
+ .short _021D75BE - _021D7584 - 2 ; case 4
+ .short _021D75C6 - _021D7584 - 2 ; case 5
+ .short _021D75CE - _021D7584 - 2 ; case 6
+ .short _021D75D6 - _021D7584 - 2 ; case 7
+ .short _021D75DE - _021D7584 - 2 ; case 8
+ .short _021D75E6 - _021D7584 - 2 ; case 9
+ .short _021D75EA - _021D7584 - 2 ; case 10
+ .short _021D75F2 - _021D7584 - 2 ; case 11
+ .short _021D75FC - _021D7584 - 2 ; case 12
+_021D759E:
+ bl MOD76_021D795C
+ str r0, [r4]
+ b _021D7606
+_021D75A6:
+ bl MOD76_021D7974
+ str r0, [r4]
+ b _021D7606
+_021D75AE:
+ bl MOD76_021D7A94
+ str r0, [r4]
+ b _021D7606
+_021D75B6:
+ bl MOD76_021D7AB4
+ str r0, [r4]
+ b _021D7606
+_021D75BE:
+ bl MOD76_021D7ADC
+ str r0, [r4]
+ b _021D7606
+_021D75C6:
+ bl MOD76_021D7B2C
+ str r0, [r4]
+ b _021D7606
+_021D75CE:
+ bl MOD76_021D7B80
+ str r0, [r4]
+ b _021D7606
+_021D75D6:
+ bl MOD76_021D7B98
+ str r0, [r4]
+ b _021D7606
+_021D75DE:
+ bl MOD76_021D7BC8
+ str r0, [r4]
+ b _021D7606
+_021D75E6:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D75EA:
+ bl MOD76_021D8D44
+ str r0, [r4]
+ b _021D7606
+_021D75F2:
+ bl MOD76_021D8D5C
+ str r0, [r4]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D75FC:
+ bl MOD76_021D8DEC
+ str r0, [r4]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D7606:
+ add r0, r5, #0
+ bl MOD76_021D882C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_0200BC1C
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D7568
+
+ thumb_func_start MOD76_021D761C
+MOD76_021D761C: ; 0x021D761C
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02006278
+ bl MOD76_021D76B8
+ add r0, r4, #0
+ bl FUN_0200627C
+ mov r0, #0x43
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD76_021D761C
+
+ thumb_func_start MOD76_021D7638
+MOD76_021D7638: ; 0x021D7638
+ push {r4, lr}
+ add r4, r0, #0
+ 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, _021D76AC ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D76B0 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #0x43
+ bl FUN_02016B94
+ str r0, [r4, #4]
+ mov r0, #0
+ mov r1, #0x43
+ bl FUN_02079A70
+ bl MOD76_021D7710
+ ldr r0, [r4, #4]
+ bl MOD76_021D7730
+ add r0, r4, #0
+ bl MOD76_021D7814
+ add r0, r4, #0
+ bl MOD76_021D8C4C
+ add r0, r4, #0
+ bl MOD76_021D7900
+ add r0, r4, #0
+ bl MOD76_021D789C
+ add r0, r4, #0
+ bl MOD76_021D7ECC
+ add r0, r4, #0
+ bl MOD76_021D7BE0
+ ldr r0, _021D76B4 ; =MOD76_021D76E8
+ add r1, r4, #0
+ bl FUN_02015F10
+ pop {r4, pc}
+ .align 2, 0
+_021D76AC: .word 0xFFFFE0FF
+_021D76B0: .word 0x04001000
+_021D76B4: .word MOD76_021D76E8
+ thumb_func_end MOD76_021D7638
+
+ thumb_func_start MOD76_021D76B8
+MOD76_021D76B8: ; 0x021D76B8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD76_021D7FAC
+ add r0, r4, #0
+ bl MOD76_021D78E8
+ ldr r0, [r4, #4]
+ bl MOD76_021D77E4
+ add r0, r4, #0
+ bl MOD76_021D7938
+ add r0, r4, #0
+ bl MOD76_021D87F8
+ bl FUN_0201C29C
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D76B8
+
+ thumb_func_start MOD76_021D76E8
+MOD76_021D76E8: ; 0x021D76E8
+ push {r3, lr}
+ ldr r0, [r0, #4]
+ bl FUN_0201AB60
+ bl FUN_0201C30C
+ bl FUN_0200BC30
+ ldr r3, _021D7708 ; =0x027E0000
+ ldr r1, _021D770C ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r3, pc}
+ nop
+_021D7708: .word 0x027E0000
+_021D770C: .word 0x00003FF8
+ thumb_func_end MOD76_021D76E8
+
+ thumb_func_start MOD76_021D7710
+MOD76_021D7710: ; 0x021D7710
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D772C ; =0x021D8F44
+ add r3, sp, #0
+ mov r2, #5
+_021D771A:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D771A
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D772C: .word 0x021D8F44
+ thumb_func_end MOD76_021D7710
+
+ thumb_func_start MOD76_021D7730
+MOD76_021D7730: ; 0x021D7730
+ push {r4, r5, lr}
+ sub sp, #0x64
+ ldr r5, _021D77D4 ; =0x021D8E4C
+ add r3, sp, #0x54
+ add r4, r0, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D77D8 ; =0x021D8E88
+ add r3, sp, #0x38
+ 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]
+ mov r1, #0
+ str r0, [r3]
+ add r0, r4, #0
+ add r3, r1, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02018744
+ ldr r5, _021D77DC ; =0x021D8EC0
+ add r3, sp, #0x1c
+ 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]
+ mov r1, #1
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018744
+ ldr r5, _021D77E0 ; =0x021D8EA4
+ 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]
+ mov r1, #2
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x43
+ bl FUN_02017F18
+ add sp, #0x64
+ pop {r4, r5, pc}
+ nop
+_021D77D4: .word 0x021D8E4C
+_021D77D8: .word 0x021D8E88
+_021D77DC: .word 0x021D8EC0
+_021D77E0: .word 0x021D8EA4
+ thumb_func_end MOD76_021D7730
+
+ thumb_func_start MOD76_021D77E4
+MOD76_021D77E4: ; 0x021D77E4
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x17
+ mov r1, #0
+ bl FUN_0201E6E4
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020178A0
+ mov r0, #0x43
+ add r1, r4, #0
+ bl FUN_02016A8C
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D77E4
+
+ thumb_func_start MOD76_021D7814
+MOD76_021D7814: ; 0x021D7814
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x43
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x71
+ mov r1, #0xa
+ mov r3, #2
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x43
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x71
+ mov r1, #0xb
+ mov r3, #2
+ bl FUN_020068C8
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x43
+ str r0, [sp, #4]
+ mov r0, #0x71
+ mov r1, #0xc
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r1, #7
+ mov r0, #0
+ lsl r1, r1, #6
+ mov r2, #0x43
+ bl FUN_02002EEC
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0x43
+ str r0, [sp, #4]
+ ldr r0, [r4, #4]
+ mov r2, #1
+ mov r3, #0xc
+ bl FUN_0200CB00
+ ldr r0, [r4]
+ ldr r0, [r0, #8]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x43
+ str r0, [sp, #4]
+ ldr r0, [r4, #4]
+ mov r1, #0
+ mov r2, #0xa
+ mov r3, #0xd
+ bl FUN_0200CD68
+ add sp, #0x10
+ pop {r4, pc}
+ thumb_func_end MOD76_021D7814
+
+ thumb_func_start MOD76_021D789C
+MOD76_021D789C: ; 0x021D789C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r5, r7, #0
+ ldr r4, _021D78E4 ; =0x021D8FC4
+ mov r6, #0
+ add r5, #8
+_021D78A8:
+ ldr r0, [r7, #4]
+ add r1, r5, #0
+ add r2, r4, #0
+ bl FUN_02019150
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ add r6, r6, #1
+ add r4, #8
+ add r5, #0x10
+ cmp r6, #0xf
+ blo _021D78A8
+ add r0, r7, #0
+ bl MOD76_021D7DAC
+ add r0, r7, #0
+ add r0, #0xc8
+ mov r1, #0xf
+ bl FUN_02019620
+ add r7, #0xc8
+ add r0, r7, #0
+ mov r1, #0
+ mov r2, #0xa
+ mov r3, #0xd
+ bl FUN_0200D0BC
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D78E4: .word 0x021D8FC4
+ thumb_func_end MOD76_021D789C
+
+ thumb_func_start MOD76_021D78E8
+MOD76_021D78E8: ; 0x021D78E8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+ add r5, #8
+_021D78F0:
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #0xf
+ blo _021D78F0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD76_021D78E8
+
+ thumb_func_start MOD76_021D7900
+MOD76_021D7900: ; 0x021D7900
+ push {r4, lr}
+ ldr r2, _021D7934 ; =0x0000024A
+ add r4, r0, #0
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x43
+ bl FUN_0200A86C
+ add r1, r4, #0
+ add r1, #0xf8
+ str r0, [r1]
+ mov r0, #0x43
+ bl FUN_0200AA80
+ add r1, r4, #0
+ add r1, #0xfc
+ str r0, [r1]
+ mov r0, #1
+ lsl r0, r0, #8
+ mov r1, #0x43
+ bl FUN_020219F4
+ mov r1, #1
+ lsl r1, r1, #8
+ str r0, [r4, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021D7934: .word 0x0000024A
+ thumb_func_end MOD76_021D7900
+
+ thumb_func_start MOD76_021D7938
+MOD76_021D7938: ; 0x021D7938
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ bl FUN_0200AB18
+ mov r0, #1
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D7938
+
+ thumb_func_start MOD76_021D795C
+MOD76_021D795C: ; 0x021D795C
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D7970
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+_021D7970:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD76_021D795C
+
+ thumb_func_start MOD76_021D7974
+MOD76_021D7974: ; 0x021D7974
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D7A88 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x30
+ tst r1, r0
+ beq _021D799C
+ ldr r0, _021D7A8C ; =0x000005DD
+ bl FUN_020054C8
+ ldr r2, [r5]
+ mov r0, #1
+ ldrb r1, [r2, #0x14]
+ eor r0, r1
+ strb r0, [r2, #0x14]
+ add r0, r5, #0
+ bl MOD76_021D7BE0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D799C:
+ add r0, #0xd4
+ add r1, sp, #0
+ ldr r0, [r5, r0]
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_02001448
+ mov r0, #0x41
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02001204
+ add r4, r0, #0
+ ldr r2, [r5]
+ mov r0, #0x41
+ add r1, r2, #0
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, #0x12
+ add r2, #0x10
+ bl FUN_02001448
+ ldr r2, [r5]
+ add r1, sp, #0
+ ldrh r1, [r1, #2]
+ ldrh r2, [r2, #0x12]
+ add r0, r5, #0
+ bl MOD76_021D8AC0
+ ldr r0, [r5]
+ ldrh r1, [r0, #0x10]
+ add r0, sp, #0
+ ldrh r0, [r0]
+ cmp r1, r0
+ beq _021D79EE
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ mov r2, #0
+ bl MOD76_021D8C88
+_021D79EE:
+ add r0, r5, #0
+ bl MOD76_021D8CD4
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _021D7A04
+ add r0, r0, #1
+ cmp r4, r0
+ beq _021D7A82
+ b _021D7A38
+_021D7A04:
+ ldr r0, _021D7A8C ; =0x000005DD
+ bl FUN_020054C8
+ ldr r1, [r5]
+ add r0, r5, #0
+ ldrh r1, [r1, #0x10]
+ mov r2, #1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD76_021D8C88
+ add r0, r5, #0
+ bl MOD76_021D8D24
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD76_021D853C
+ ldr r0, _021D7A90 ; =0x00000186
+ mov r1, #1
+ strb r1, [r5, r0]
+ mov r1, #3
+ lsl r0, r1, #7
+ str r1, [r5, r0]
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021D7A38:
+ ldr r0, _021D7A8C ; =0x000005DD
+ bl FUN_020054C8
+ ldr r1, [r5]
+ add r0, r5, #0
+ ldrh r1, [r1, #0x10]
+ mov r2, #1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD76_021D8C88
+ add r0, r5, #0
+ bl MOD76_021D8D24
+ add r0, r5, #0
+ bl MOD76_021D85E4
+ cmp r0, #4
+ bhs _021D7A6A
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD76_021D853C
+ mov r1, #0
+ b _021D7A74
+_021D7A6A:
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD76_021D853C
+ mov r1, #2
+_021D7A74:
+ ldr r0, _021D7A90 ; =0x00000186
+ strb r1, [r5, r0]
+ mov r1, #3
+ lsl r0, r1, #7
+ str r1, [r5, r0]
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021D7A82:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_021D7A88: .word 0x021C48B8
+_021D7A8C: .word 0x000005DD
+_021D7A90: .word 0x00000186
+ thumb_func_end MOD76_021D7974
+
+ thumb_func_start MOD76_021D7A94
+MOD76_021D7A94: ; 0x021D7A94
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D7AB0 ; =0x00000185
+ ldrb r0, [r4, r0]
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D7AAC
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+_021D7AAC:
+ mov r0, #2
+ pop {r4, pc}
+ .align 2, 0
+_021D7AB0: .word 0x00000185
+ thumb_func_end MOD76_021D7A94
+
+ thumb_func_start MOD76_021D7AB4
+MOD76_021D7AB4: ; 0x021D7AB4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ mov r0, #0x43
+ str r0, [sp]
+ ldr r0, [r4, #4]
+ ldr r1, _021D7AD8 ; =0x021D9034
+ mov r2, #1
+ mov r3, #0xc
+ bl FUN_02002198
+ mov r1, #0x43
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #4
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D7AD8: .word 0x021D9034
+ thumb_func_end MOD76_021D7AB4
+
+ thumb_func_start MOD76_021D7ADC
+MOD76_021D7ADC: ; 0x021D7ADC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x43
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x43
+ bl FUN_020021AC
+ cmp r0, #0
+ beq _021D7AFA
+ mov r1, #1
+ mvn r1, r1
+ cmp r0, r1
+ beq _021D7B0A
+ b _021D7B1A
+_021D7AFA:
+ ldr r1, _021D7B20 ; =0x00000186
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ lsl r2, r1, #3
+ ldr r1, _021D7B24 ; =0x021D8F1C
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r4, pc}
+_021D7B0A:
+ ldr r1, _021D7B20 ; =0x00000186
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ lsl r2, r1, #3
+ ldr r1, _021D7B28 ; =0x021D8F20
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r4, pc}
+_021D7B1A:
+ mov r0, #4
+ pop {r4, pc}
+ nop
+_021D7B20: .word 0x00000186
+_021D7B24: .word 0x021D8F1C
+_021D7B28: .word 0x021D8F20
+ thumb_func_end MOD76_021D7ADC
+
+ thumb_func_start MOD76_021D7B2C
+MOD76_021D7B2C: ; 0x021D7B2C
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ bl MOD76_021D8514
+ str r0, [sp]
+ ldr r1, [r4]
+ add r2, sp, #0
+ ldr r0, [r1]
+ ldrb r1, [r1, #0x17]
+ add r1, #0x36
+ bl FUN_02067830
+ mov r0, #0
+ str r0, [sp]
+ ldr r1, [r4]
+ add r2, sp, #0
+ ldr r0, [r1]
+ ldrb r1, [r1, #0x17]
+ add r1, #0x3e
+ bl FUN_02067830
+ add r0, r4, #0
+ bl MOD76_021D8514
+ mov r1, #0
+ bl FUN_0206AB30
+ str r0, [sp]
+ ldr r1, [r4]
+ add r2, sp, #0
+ ldr r0, [r1]
+ ldrb r1, [r1, #0x17]
+ add r1, #0x3a
+ bl FUN_02067830
+ ldr r0, [r4]
+ mov r1, #0
+ strb r1, [r0, #0x16]
+ mov r0, #8
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD76_021D7B2C
+
+ thumb_func_start MOD76_021D7B80
+MOD76_021D7B80: ; 0x021D7B80
+ push {r4, lr}
+ mov r1, #6
+ add r4, r0, #0
+ bl MOD76_021D853C
+ mov r0, #6
+ mov r1, #5
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ mov r0, #2
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D7B80
+
+ thumb_func_start MOD76_021D7B98
+MOD76_021D7B98: ; 0x021D7B98
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4]
+ ldrb r1, [r1, #0x17]
+ cmp r1, #4
+ bhs _021D7BAE
+ mov r1, #0xa
+ bl MOD76_021D853C
+ mov r1, #4
+ b _021D7BB6
+_021D7BAE:
+ mov r1, #7
+ bl MOD76_021D853C
+ mov r1, #3
+_021D7BB6:
+ ldr r0, _021D7BC4 ; =0x00000186
+ strb r1, [r4, r0]
+ mov r1, #3
+ lsl r0, r1, #7
+ str r1, [r4, r0]
+ mov r0, #2
+ pop {r4, pc}
+ .align 2, 0
+_021D7BC4: .word 0x00000186
+ thumb_func_end MOD76_021D7B98
+
+ thumb_func_start MOD76_021D7BC8
+MOD76_021D7BC8: ; 0x021D7BC8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #1
+ mov r1, #0x43
+ bl FUN_02079A70
+ mov r0, #6
+ mov r1, #9
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD76_021D7BC8
+
+ thumb_func_start MOD76_021D7BE0
+MOD76_021D7BE0: ; 0x021D7BE0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD76_021D8514
+ add r4, r0, #0
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x14]
+ cmp r0, #0
+ ldr r0, [r5, #4]
+ bne _021D7C3A
+ mov r2, #0
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_0201AEE4
+ add r0, r5, #0
+ add r0, #0x18
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x68
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0xb8
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #8
+ bl FUN_02019220
+ ldr r0, _021D7CC4 ; =0x0000FFFF
+ cmp r4, r0
+ beq _021D7C2E
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD76_021D800C
+ b _021D7CBC
+_021D7C2E:
+ mov r1, #1
+ add r0, r5, #0
+ mvn r1, r1
+ bl MOD76_021D800C
+ b _021D7CBC
+_021D7C3A:
+ mov r1, #2
+ add r3, r1, #0
+ mov r2, #0
+ add r3, #0xfe
+ bl FUN_0201AEE4
+ add r0, r5, #0
+ add r0, #8
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x28
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x38
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x48
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x58
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0xa8
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x78
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x88
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x98
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x18
+ bl FUN_02019220
+ ldr r0, _021D7CC4 ; =0x0000FFFF
+ cmp r4, r0
+ beq _021D7CA6
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD76_021D81AC
+ b _021D7CB0
+_021D7CA6:
+ mov r1, #1
+ add r0, r5, #0
+ mvn r1, r1
+ bl MOD76_021D81AC
+_021D7CB0:
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_0200C644
+_021D7CBC:
+ add r0, r5, #0
+ bl MOD76_021D8A58
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7CC4: .word 0x0000FFFF
+ thumb_func_end MOD76_021D7BE0
+
+ thumb_func_start MOD76_021D7CC8
+MOD76_021D7CC8: ; 0x021D7CC8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [sp, #0x28]
+ add r4, r1, #0
+ add r7, r3, #0
+ str r2, [sp, #0x10]
+ cmp r0, #0
+ beq _021D7CE4
+ cmp r0, #1
+ beq _021D7CE8
+ cmp r0, #2
+ beq _021D7D12
+ b _021D7D3E
+_021D7CE4:
+ mov r3, #0
+ b _021D7D3E
+_021D7CE8:
+ mov r1, #1
+ lsl r1, r1, #8
+ mov r0, #0
+ ldr r1, [r5, r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ add r1, r5, #0
+ lsr r6, r0, #0x18
+ add r1, #8
+ lsl r0, r4, #4
+ add r0, r1, r0
+ bl FUN_0201AB0C
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x18
+ sub r0, r0, r6
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ b _021D7D3E
+_021D7D12:
+ mov r1, #1
+ lsl r1, r1, #8
+ mov r0, #0
+ ldr r1, [r5, r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ lsl r0, r0, #0x18
+ add r1, r5, #0
+ lsr r6, r0, #0x18
+ add r1, #8
+ lsl r0, r4, #4
+ add r0, r1, r0
+ bl FUN_0201AB0C
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x18
+ sub r1, r0, r6
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ lsl r0, r0, #0x17
+ lsr r3, r0, #0x18
+_021D7D3E:
+ mov r0, #0
+ str r0, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ str r7, [sp, #8]
+ add r1, r5, #0
+ str r0, [sp, #0xc]
+ add r2, r2, #1
+ add r1, #8
+ lsl r0, r4, #4
+ add r0, r1, r0
+ ldr r1, [sp, #0x10]
+ ldr r2, [r5, r2]
+ bl FUN_0201BDE0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD76_021D7CC8
+
+ thumb_func_start MOD76_021D7D60
+MOD76_021D7D60: ; 0x021D7D60
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ add r6, r2, #0
+ add r7, r3, #0
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r0, sp, #0x10
+ ldrb r0, [r0, #0x10]
+ mov r1, #0
+ add r2, r6, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ add r3, r7, #0
+ bl FUN_0200AD38
+ add r0, r5, #0
+ mov r1, #1
+ add r0, #0xfc
+ lsl r1, r1, #8
+ ldr r0, [r0]
+ ldr r1, [r5, r1]
+ add r2, r4, #0
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D7D60
+
+ thumb_func_start MOD76_021D7DAC
+MOD76_021D7DAC: ; 0x021D7DAC
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r1, #0x1a
+ add r2, r1, #0
+ add r4, r0, #0
+ add r0, #0xf8
+ add r2, #0xe6
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r0, #2
+ mov r1, #0
+ str r0, [sp]
+ ldr r3, _021D7E9C ; =0x000F0E00
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD76_021D7CC8
+ mov r1, #0x1c
+ add r0, r4, #0
+ add r2, r1, #0
+ add r0, #0xf8
+ add r2, #0xe4
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r0, #2
+ str r0, [sp]
+ ldr r3, _021D7E9C ; =0x000F0E00
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD76_021D7CC8
+ mov r1, #0x16
+ add r0, r4, #0
+ add r2, r1, #0
+ add r0, #0xf8
+ add r2, #0xea
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r2, #0
+ ldr r3, _021D7E9C ; =0x000F0E00
+ add r0, r4, #0
+ mov r1, #2
+ str r2, [sp]
+ bl MOD76_021D7CC8
+ mov r1, #0x17
+ add r0, r4, #0
+ add r2, r1, #0
+ add r0, #0xf8
+ add r2, #0xe9
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r2, #0
+ ldr r3, _021D7E9C ; =0x000F0E00
+ add r0, r4, #0
+ mov r1, #3
+ str r2, [sp]
+ bl MOD76_021D7CC8
+ mov r1, #0x18
+ add r0, r4, #0
+ add r2, r1, #0
+ add r0, #0xf8
+ add r2, #0xe8
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r2, #0
+ ldr r3, _021D7E9C ; =0x000F0E00
+ add r0, r4, #0
+ mov r1, #4
+ str r2, [sp]
+ bl MOD76_021D7CC8
+ mov r1, #0x19
+ add r0, r4, #0
+ add r2, r1, #0
+ add r0, #0xf8
+ add r2, #0xe7
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r2, #0
+ ldr r3, _021D7EA0 ; =0x00010200
+ add r0, r4, #0
+ mov r1, #5
+ str r2, [sp]
+ bl MOD76_021D7CC8
+ mov r1, #0x1b
+ add r0, r4, #0
+ add r2, r1, #0
+ add r0, #0xf8
+ add r2, #0xe5
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r0, #2
+ str r0, [sp]
+ ldr r3, _021D7E9C ; =0x000F0E00
+ add r0, r4, #0
+ mov r1, #6
+ mov r2, #0
+ bl MOD76_021D7CC8
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D7E9C: .word 0x000F0E00
+_021D7EA0: .word 0x00010200
+ thumb_func_end MOD76_021D7DAC
+
+ thumb_func_start MOD76_021D7EA4
+MOD76_021D7EA4: ; 0x021D7EA4
+ push {r3, r4}
+ ldr r0, [r0]
+ ldr r1, _021D7EC8 ; =0x0000FFFF
+ ldr r4, [r0, #0xc]
+ mov r0, #1
+ mov r3, #0
+ lsl r0, r0, #8
+_021D7EB2:
+ ldrh r2, [r4]
+ cmp r2, r1
+ beq _021D7EC0
+ add r3, r3, #1
+ add r4, r4, #2
+ cmp r3, r0
+ blo _021D7EB2
+_021D7EC0:
+ add r0, r3, #0
+ pop {r3, r4}
+ bx lr
+ nop
+_021D7EC8: .word 0x0000FFFF
+ thumb_func_end MOD76_021D7EA4
+
+ thumb_func_start MOD76_021D7ECC
+MOD76_021D7ECC: ; 0x021D7ECC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ bl MOD76_021D7EA4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r1, r0, #1
+ mov r0, #0x61
+ lsl r0, r0, #2
+ strb r1, [r5, r0]
+ ldrb r0, [r5, r0]
+ mov r1, #0x43
+ bl FUN_02012838
+ mov r1, #0x42
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r2, #0x93
+ mov r0, #0
+ mov r1, #0x1a
+ lsl r2, r2, #2
+ mov r3, #0x43
+ bl FUN_0200A86C
+ add r7, r0, #0
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldrb r0, [r5, r0]
+ mov r4, #0
+ cmp r0, #0
+ bls _021D7F50
+ add r6, r4, #0
+_021D7F0E:
+ ldr r0, [r5]
+ ldr r0, [r0, #0xc]
+ ldrh r2, [r0, r6]
+ ldr r0, _021D7FA4 ; =0x0000FFFF
+ cmp r2, r0
+ beq _021D7F2A
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r7, #0
+ add r3, r2, #0
+ bl FUN_02012880
+ b _021D7F42
+_021D7F2A:
+ mov r0, #0x42
+ add r1, r5, #0
+ lsl r0, r0, #2
+ add r1, #0xf8
+ mov r2, #0x20
+ add r3, r2, #0
+ ldr r0, [r5, r0]
+ ldr r1, [r1]
+ sub r3, #0x22
+ bl FUN_02012880
+ b _021D7F50
+_021D7F42:
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldrb r0, [r5, r0]
+ add r4, r4, #1
+ add r6, r6, #2
+ cmp r4, r0
+ blo _021D7F0E
+_021D7F50:
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ ldr r4, _021D7FA8 ; =0x021D8EFC
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ add r0, #0x7c
+ str r1, [sp]
+ add r1, r5, #0
+ add r1, #0xd8
+ str r1, [sp, #0xc]
+ ldrb r1, [r5, r0]
+ add r0, sp, #0
+ strh r1, [r0, #0x10]
+ str r5, [sp, #0x1c]
+ ldr r3, [r5]
+ add r0, r2, #0
+ ldrh r1, [r3, #0x12]
+ ldrh r2, [r3, #0x10]
+ mov r3, #0x43
+ bl FUN_020010A8
+ mov r1, #0x41
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r5, #0xd8
+ add r0, r5, #0
+ bl FUN_02019220
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7FA4: .word 0x0000FFFF
+_021D7FA8: .word 0x021D8EFC
+ thumb_func_end MOD76_021D7ECC
+
+ thumb_func_start MOD76_021D7FAC
+MOD76_021D7FAC: ; 0x021D7FAC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r2, [r4]
+ mov r0, #0x41
+ add r1, r2, #0
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, #0x12
+ add r2, #0x10
+ bl FUN_02001300
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D7FAC
+
+ thumb_func_start MOD76_021D7FD0
+MOD76_021D7FD0: ; 0x021D7FD0
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ mov r1, #0x13
+ add r6, r2, #0
+ bl FUN_02001470
+ add r4, r0, #0
+ cmp r6, #1
+ beq _021D7FE8
+ ldr r0, _021D8004 ; =0x000005DD
+ bl FUN_020054C8
+_021D7FE8:
+ ldr r0, [r4]
+ ldrb r0, [r0, #0x14]
+ cmp r0, #0
+ bne _021D7FFA
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD76_021D800C
+ pop {r4, r5, r6, pc}
+_021D7FFA:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD76_021D81AC
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D8004: .word 0x000005DD
+ thumb_func_end MOD76_021D7FD0
+
+ thumb_func_start MOD76_021D8008
+MOD76_021D8008: ; 0x021D8008
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD76_021D8008
+
+ thumb_func_start MOD76_021D800C
+MOD76_021D800C: ; 0x021D800C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0xa8
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ add r0, #0x78
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ add r0, #0x88
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ add r0, #0x98
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _021D8050
+ b _021D815E
+_021D8050:
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_0206AB18
+ add r2, r0, #0
+ cmp r2, #1
+ bhi _021D8072
+ mov r1, #0x21
+ add r0, r5, #0
+ add r2, r1, #0
+ add r0, #0xf8
+ add r2, #0xdf
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ b _021D8080
+_021D8072:
+ mov r0, #1
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0x1d
+ mov r3, #3
+ bl MOD76_021D7D60
+_021D8080:
+ mov r0, #2
+ str r0, [sp]
+ ldr r3, _021D81A4 ; =0x00010200
+ add r0, r5, #0
+ mov r1, #7
+ mov r2, #0
+ bl MOD76_021D7CC8
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_0206AB18
+ add r2, r0, #0
+ bne _021D80B0
+ mov r1, #0x21
+ add r0, r5, #0
+ add r2, r1, #0
+ add r0, #0xf8
+ add r2, #0xdf
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ b _021D80BE
+_021D80B0:
+ mov r0, #1
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0x1e
+ mov r3, #3
+ bl MOD76_021D7D60
+_021D80BE:
+ mov r0, #2
+ str r0, [sp]
+ ldr r3, _021D81A4 ; =0x00010200
+ add r0, r5, #0
+ mov r1, #8
+ mov r2, #0
+ bl MOD76_021D7CC8
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0
+ bl FUN_0206AB30
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0x1f
+ mov r3, #2
+ bl MOD76_021D7D60
+ mov r0, #2
+ str r0, [sp]
+ ldr r3, _021D81A4 ; =0x00010200
+ add r0, r5, #0
+ mov r1, #9
+ mov r2, #0
+ bl MOD76_021D7CC8
+ ldr r2, _021D81A8 ; =0x0000024B
+ mov r0, #1
+ mov r1, #0x1a
+ mov r3, #0x43
+ bl FUN_0200A86C
+ mov r2, #1
+ lsl r2, r2, #8
+ ldr r2, [r5, r2]
+ add r1, r4, #0
+ add r6, r0, #0
+ bl FUN_0200A8E0
+ mov r2, #0
+ ldr r3, _021D81A4 ; =0x00010200
+ add r0, r5, #0
+ mov r1, #0xa
+ str r2, [sp]
+ bl MOD76_021D7CC8
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ lsl r1, r4, #0x10
+ add r0, r5, #0
+ lsr r1, r1, #0x10
+ bl MOD76_021D8BF8
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_0200C644
+ add r0, r5, #0
+ add r0, #0x28
+ bl FUN_02019220
+ add r0, r5, #0
+ add r0, #0x38
+ bl FUN_02019220
+ add r0, r5, #0
+ add r0, #0x48
+ bl FUN_02019220
+ add r0, r5, #0
+ add r0, #0x58
+ bl FUN_02019220
+ b _021D817E
+_021D815E:
+ add r0, r5, #0
+ add r0, #0x28
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x38
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x48
+ bl FUN_0201958C
+ add r0, r5, #0
+ add r0, #0x58
+ bl FUN_0201958C
+_021D817E:
+ add r0, r5, #0
+ add r0, #0xa8
+ bl FUN_02019220
+ add r0, r5, #0
+ add r0, #0x78
+ bl FUN_02019220
+ add r0, r5, #0
+ add r0, #0x88
+ bl FUN_02019220
+ add r5, #0x98
+ add r0, r5, #0
+ bl FUN_02019220
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D81A4: .word 0x00010200
+_021D81A8: .word 0x0000024B
+ thumb_func_end MOD76_021D800C
+
+ thumb_func_start MOD76_021D81AC
+MOD76_021D81AC: ; 0x021D81AC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0xb8
+ mov r1, #0
+ bl FUN_02019620
+ mov r1, #1
+ mvn r1, r1
+ cmp r4, r1
+ beq _021D8222
+ add r0, r4, #0
+ mov r1, #0xa
+ bl FUN_0206AB18
+ bl FUN_0208315C
+ add r6, r0, #0
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #0xc5
+ mov r3, #0x43
+ bl FUN_0200A86C
+ mov r2, #1
+ lsl r2, r2, #8
+ ldr r2, [r5, r2]
+ add r1, r6, #0
+ add r7, r0, #0
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ ldr r0, _021D8240 ; =0x00010200
+ add r2, r2, #1
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ ldr r2, [r5, r2]
+ add r0, #0xb8
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ lsl r1, r4, #0x10
+ add r0, r5, #0
+ lsr r1, r1, #0x10
+ bl MOD76_021D8300
+ add r0, r5, #0
+ add r0, #0x68
+ bl FUN_02019220
+ b _021D8232
+_021D8222:
+ add r0, r5, #0
+ lsr r1, r1, #0x10
+ bl MOD76_021D8300
+ add r0, r5, #0
+ add r0, #0x68
+ bl FUN_0201958C
+_021D8232:
+ add r5, #0xb8
+ add r0, r5, #0
+ bl FUN_02019220
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8240: .word 0x00010200
+ thumb_func_end MOD76_021D81AC
+
+ thumb_func_start MOD76_021D8244
+MOD76_021D8244: ; 0x021D8244
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #5
+ lsl r6, r2, #1
+ str r0, [sp]
+ add r4, r1, #0
+ mov r0, #1
+ add r7, r6, #0
+ str r0, [sp, #4]
+ add r7, #0x22
+ str r0, [sp, #8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ lsl r3, r7, #0x18
+ ldr r0, [r5, #4]
+ mov r1, #2
+ add r2, r4, #0
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r6, #0x23
+ str r0, [sp, #8]
+ mov r0, #0x10
+ add r2, r4, #1
+ str r0, [sp, #0xc]
+ lsl r2, r2, #0x10
+ lsl r3, r6, #0x18
+ ldr r0, [r5, #4]
+ mov r1, #2
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r2, r4, #0
+ str r0, [sp, #8]
+ mov r0, #0x10
+ add r2, #0x20
+ str r0, [sp, #0xc]
+ lsl r2, r2, #0x10
+ lsl r3, r7, #0x18
+ ldr r0, [r5, #4]
+ mov r1, #2
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x10
+ add r4, #0x21
+ str r0, [sp, #0xc]
+ lsl r2, r4, #0x10
+ lsl r3, r6, #0x18
+ ldr r0, [r5, #4]
+ mov r1, #2
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D8244
+
+ thumb_func_start MOD76_021D82D8
+MOD76_021D82D8: ; 0x021D82D8
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r4, #0
+ mov r6, #0x12
+_021D82E0:
+ lsl r2, r4, #0x18
+ add r0, r5, #0
+ add r1, r6, #0
+ lsr r2, r2, #0x18
+ bl MOD76_021D8244
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #6
+ blo _021D82E0
+ ldr r0, [r5, #4]
+ mov r1, #2
+ bl FUN_0201AC68
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD76_021D82D8
+
+ thumb_func_start MOD76_021D8300
+MOD76_021D8300: ; 0x021D8300
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD76_021D82D8
+ ldr r0, _021D8350 ; =0x0000FFFF
+ cmp r4, r0
+ beq _021D8344
+ add r0, r4, #0
+ mov r1, #0xa
+ bl FUN_0206AB18
+ bl FUN_02083114
+ mov r1, #0xa
+ bl _s32_div_f
+ lsl r0, r0, #0x18
+ asr r6, r0, #0x18
+ mov r4, #0
+ cmp r6, #0
+ ble _021D8344
+ mov r7, #0xe
+_021D832E:
+ lsl r2, r4, #0x18
+ add r0, r5, #0
+ add r1, r7, #0
+ lsr r2, r2, #0x18
+ bl MOD76_021D8244
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, r6
+ blt _021D832E
+_021D8344:
+ ldr r0, [r5, #4]
+ mov r1, #2
+ bl FUN_0201AC68
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8350: .word 0x0000FFFF
+ thumb_func_end MOD76_021D8300
+
+ thumb_func_start MOD76_021D8354
+MOD76_021D8354: ; 0x021D8354
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #0xa
+ bls _021D8360
+ b _021D84D8
+_021D8360:
+ add r1, r5, r5
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D836C: ; jump table
+ .short _021D8382 - _021D836C - 2 ; case 0
+ .short _021D839A - _021D836C - 2 ; case 1
+ .short _021D83AE - _021D836C - 2 ; case 2
+ .short _021D83C6 - _021D836C - 2 ; case 3
+ .short _021D83F2 - _021D836C - 2 ; case 4
+ .short _021D841E - _021D836C - 2 ; case 5
+ .short _021D844A - _021D836C - 2 ; case 6
+ .short _021D8476 - _021D836C - 2 ; case 7
+ .short _021D848A - _021D836C - 2 ; case 8
+ .short _021D84B6 - _021D836C - 2 ; case 9
+ .short _021D84C6 - _021D836C - 2 ; case 10
+_021D8382:
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ b _021D84D8
+_021D839A:
+ bl MOD76_021D8514
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_0200AD5C
+ b _021D84D8
+_021D83AE:
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ b _021D84D8
+_021D83C6:
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ add r0, r4, #0
+ bl MOD76_021D8514
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_0200AD5C
+ b _021D84D8
+_021D83F2:
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ add r0, r4, #0
+ bl MOD76_021D8514
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_0200AD5C
+ b _021D84D8
+_021D841E:
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ add r0, r4, #0
+ bl MOD76_021D8524
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_0200AD5C
+ b _021D84D8
+_021D844A:
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ add r0, r4, #0
+ bl MOD76_021D8514
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_0200AD5C
+ b _021D84D8
+_021D8476:
+ bl MOD76_021D8514
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_0200AD5C
+ b _021D84D8
+_021D848A:
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ add r0, r4, #0
+ bl MOD76_021D8514
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_0200AD5C
+ b _021D84D8
+_021D84B6:
+ ldr r2, [r4]
+ add r0, #0xfc
+ ldr r0, [r0]
+ ldr r2, [r2, #4]
+ mov r1, #2
+ bl FUN_0200ABC0
+ b _021D84D8
+_021D84C6:
+ bl MOD76_021D8524
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200AD5C
+_021D84D8:
+ ldr r1, [r4]
+ add r0, r4, #0
+ ldrb r2, [r1, #0x15]
+ add r0, #0xf8
+ mov r1, #0x2c
+ add r3, r2, #0
+ mul r3, r1
+ ldr r1, _021D8510 ; =0x021D8F6C
+ lsl r2, r5, #2
+ add r1, r1, r3
+ ldr r0, [r0]
+ ldr r1, [r2, r1]
+ bl FUN_0200A914
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0xfc
+ lsl r1, r1, #8
+ ldr r0, [r0]
+ ldr r1, [r4, r1]
+ add r2, r5, #0
+ bl FUN_0200B7B8
+ add r0, r5, #0
+ bl FUN_02021A20
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8510: .word 0x021D8F6C
+ thumb_func_end MOD76_021D8354
+
+ thumb_func_start MOD76_021D8514
+MOD76_021D8514: ; 0x021D8514
+ ldr r0, [r0]
+ ldr r2, [r0, #0xc]
+ ldrh r1, [r0, #0x12]
+ ldrh r0, [r0, #0x10]
+ add r0, r1, r0
+ lsl r0, r0, #1
+ ldrh r0, [r2, r0]
+ bx lr
+ thumb_func_end MOD76_021D8514
+
+ thumb_func_start MOD76_021D8524
+MOD76_021D8524: ; 0x021D8524
+ push {r3, lr}
+ ldr r1, [r0]
+ mov r2, #0
+ ldr r0, [r1]
+ ldrb r1, [r1, #0x17]
+ add r1, #0x36
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D8524
+
+ thumb_func_start MOD76_021D853C
+MOD76_021D853C: ; 0x021D853C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r5, r1, #0
+ add r0, #0xc8
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD76_021D8354
+ mov r0, #1
+ bl FUN_02002B60
+ mov r0, #0
+ bl FUN_02002B7C
+ ldr r0, [r4]
+ ldr r0, [r0, #8]
+ bl FUN_02024FF4
+ mov r3, #0
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D858C ; =MOD76_021D8594
+ mov r1, #1
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r2, #0xff
+ add r0, r4, #0
+ ldr r2, [r4, r2]
+ add r0, #0xc8
+ bl FUN_0201BD84
+ ldr r1, _021D8590 ; =0x00000185
+ strb r0, [r4, r1]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_021D858C: .word MOD76_021D8594
+_021D8590: .word 0x00000185
+ thumb_func_end MOD76_021D853C
+
+ thumb_func_start MOD76_021D8594
+MOD76_021D8594: ; 0x021D8594
+ push {r3, lr}
+ cmp r1, #5
+ bhi _021D85D6
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D85A6: ; jump table
+ .short _021D85D6 - _021D85A6 - 2 ; case 0
+ .short _021D85B2 - _021D85A6 - 2 ; case 1
+ .short _021D85B8 - _021D85A6 - 2 ; case 2
+ .short _021D85BE - _021D85A6 - 2 ; case 3
+ .short _021D85C6 - _021D85A6 - 2 ; case 4
+ .short _021D85CE - _021D85A6 - 2 ; case 5
+_021D85B2:
+ bl FUN_02005514
+ pop {r3, pc}
+_021D85B8:
+ bl FUN_02005CBC
+ pop {r3, pc}
+_021D85BE:
+ ldr r0, _021D85DC ; =0x000005E6
+ bl FUN_020054C8
+ b _021D85D6
+_021D85C6:
+ ldr r0, _021D85E0 ; =0x00000483
+ bl FUN_02005C28
+ b _021D85D6
+_021D85CE:
+ ldr r0, _021D85DC ; =0x000005E6
+ bl FUN_02005508
+ pop {r3, pc}
+_021D85D6:
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_021D85DC: .word 0x000005E6
+_021D85E0: .word 0x00000483
+ thumb_func_end MOD76_021D8594
+
+ thumb_func_start MOD76_021D85E4
+MOD76_021D85E4: ; 0x021D85E4
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+_021D85EC:
+ ldr r0, [r5]
+ add r1, r4, #0
+ ldr r0, [r0]
+ add r1, #0x36
+ add r2, r6, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021D8608
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021D85EC
+_021D8608:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD76_021D85E4
+
+ thumb_func_start MOD76_021D860C
+MOD76_021D860C: ; 0x021D860C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #3
+ bl MOD76_021D853C
+ add r0, r4, #0
+ bl MOD76_021D85E4
+ ldr r1, [r4]
+ strb r0, [r1, #0x17]
+ mov r0, #6
+ mov r1, #5
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ mov r0, #2
+ pop {r4, pc}
+ thumb_func_end MOD76_021D860C
+
+ thumb_func_start MOD76_021D862C
+MOD76_021D862C: ; 0x021D862C
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ add r0, #0xc8
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD76_021D8354
+ mov r0, #0
+ str r0, [sp]
+ ldr r3, _021D8678 ; =0x0001020F
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #1
+ bl MOD76_021D7CC8
+ add r0, r4, #0
+ add r0, #0xc8
+ bl FUN_02019220
+ ldr r1, [r4]
+ add r0, r4, #0
+ ldrh r1, [r1, #0x10]
+ mov r2, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD76_021D8C88
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD76_021D8CB4
+ mov r0, #1
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D8678: .word 0x0001020F
+ thumb_func_end MOD76_021D862C
+
+ thumb_func_start MOD76_021D867C
+MOD76_021D867C: ; 0x021D867C
+ ldr r0, [r0]
+ mov r1, #1
+ strb r1, [r0, #0x16]
+ mov r0, #8
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD76_021D867C
+
+ thumb_func_start MOD76_021D8688
+MOD76_021D8688: ; 0x021D8688
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ add r0, #0xc8
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD76_021D8354
+ mov r0, #0
+ str r0, [sp]
+ ldr r3, _021D86D4 ; =0x0001020F
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #1
+ bl MOD76_021D7CC8
+ add r0, r4, #0
+ add r0, #0xc8
+ bl FUN_02019220
+ ldr r1, [r4]
+ add r0, r4, #0
+ ldrh r1, [r1, #0x10]
+ mov r2, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD76_021D8C88
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD76_021D8CB4
+ mov r0, #1
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D86D4: .word 0x0001020F
+ thumb_func_end MOD76_021D8688
+
+ thumb_func_start MOD76_021D86D8
+MOD76_021D86D8: ; 0x021D86D8
+ mov r1, #6
+ mov r2, #0xa
+ lsl r1, r1, #6
+ str r2, [r0, r1]
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD76_021D86D8
+
+ thumb_func_start MOD76_021D86E4
+MOD76_021D86E4: ; 0x021D86E4
+ push {r4, lr}
+ mov r1, #7
+ add r4, r0, #0
+ bl MOD76_021D853C
+ ldr r0, _021D86FC ; =0x00000186
+ mov r1, #3
+ strb r1, [r4, r0]
+ sub r0, r0, #6
+ str r1, [r4, r0]
+ mov r0, #2
+ pop {r4, pc}
+ .align 2, 0
+_021D86FC: .word 0x00000186
+ thumb_func_end MOD76_021D86E4
+
+ thumb_func_start MOD76_021D8700
+MOD76_021D8700: ; 0x021D8700
+ push {r4, lr}
+ mov r1, #8
+ add r4, r0, #0
+ bl MOD76_021D853C
+ mov r0, #6
+ mov r1, #8
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ ldr r0, [r4]
+ mov r1, #1
+ strb r1, [r0, #0x16]
+ mov r0, #2
+ pop {r4, pc}
+ thumb_func_end MOD76_021D8700
+
+ thumb_func_start MOD76_021D871C
+MOD76_021D871C: ; 0x021D871C
+ push {r4, lr}
+ mov r1, #4
+ add r4, r0, #0
+ bl MOD76_021D853C
+ ldr r1, _021D8734 ; =0x00000186
+ mov r0, #2
+ mov r2, #3
+ strb r0, [r4, r1]
+ lsl r1, r2, #7
+ str r2, [r4, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021D8734: .word 0x00000186
+ thumb_func_end MOD76_021D871C
+
+ thumb_func_start MOD76_021D8738
+MOD76_021D8738: ; 0x021D8738
+ push {r4, lr}
+ mov r1, #5
+ add r4, r0, #0
+ bl MOD76_021D853C
+ mov r1, #6
+ lsl r0, r1, #6
+ str r1, [r4, r0]
+ mov r0, #2
+ pop {r4, pc}
+ thumb_func_end MOD76_021D8738
+
+ thumb_func_start MOD76_021D874C
+MOD76_021D874C: ; 0x021D874C
+ mov r1, #6
+ mov r2, #0xa
+ lsl r1, r1, #6
+ str r2, [r0, r1]
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD76_021D874C
+
+ thumb_func_start MOD76_021D8758
+MOD76_021D8758: ; 0x021D8758
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x4c
+ ldr r3, _021D87EC ; =0x021D8E70
+ add r2, sp, #0x34
+ add r4, r0, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ mov r0, #0x40
+ mov r1, #0x43
+ bl FUN_0201C24C
+ mov r0, #0x43
+ bl FUN_0200BB14
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ bl FUN_0200BB34
+ mov r7, #0x45
+ lsl r7, r7, #2
+ add r2, sp, #0x14
+ ldr r3, _021D87F0 ; =0x021D8EDC
+ str r0, [r4, r7]
+ ldmia r3!, {r0, r1}
+ add r6, r2, #0
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ ldr r5, _021D87F4 ; =0x021D8E5C
+ stmia r2!, {r0, r1}
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ add r1, r6, #0
+ str r0, [r3]
+ sub r0, r7, #4
+ ldr r0, [r4, r0]
+ mov r3, #0x20
+ bl FUN_0200BB6C
+ sub r1, r7, #4
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ mov r2, #0xd
+ bl FUN_0200BBF0
+ sub r1, r7, #4
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ add r2, sp, #0x34
+ bl FUN_0200BF60
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D87EC: .word 0x021D8E70
+_021D87F0: .word 0x021D8EDC
+_021D87F4: .word 0x021D8E5C
+ thumb_func_end MOD76_021D8758
+
+ thumb_func_start MOD76_021D87F8
+MOD76_021D87F8: ; 0x021D87F8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r6, #0x46
+ mov r4, #0
+ add r5, r7, #0
+ lsl r6, r6, #2
+_021D8804:
+ ldr r0, [r5, r6]
+ bl FUN_0200C3DC
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xd
+ blo _021D8804
+ mov r1, #0x11
+ lsl r1, r1, #4
+ ldr r0, [r7, r1]
+ add r1, r1, #4
+ ldr r1, [r7, r1]
+ bl FUN_0200C398
+ mov r0, #0x11
+ lsl r0, r0, #4
+ ldr r0, [r7, r0]
+ bl FUN_0200BD04
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD76_021D87F8
+
+ thumb_func_start MOD76_021D882C
+MOD76_021D882C: ; 0x021D882C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #1
+ mov r6, #0x46
+ add r5, r0, #0
+ mov r4, #0
+ lsl r7, r7, #0xc
+ lsl r6, r6, #2
+_021D883A:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ add r1, r7, #0
+ ldr r0, [r0]
+ bl FUN_020201E4
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0xd
+ blo _021D883A
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD76_021D882C
+
+ thumb_func_start MOD76_021D8854
+MOD76_021D8854: ; 0x021D8854
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _021D89D0 ; =0x0000B8A8
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #5
+ bl FUN_0200C00C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _021D89D4 ; =0x0000B8A9
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #8
+ bl FUN_0200C00C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _021D89D8 ; =0x0000B8AA
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #2
+ bl FUN_0200C00C
+ ldr r4, _021D89DC ; =0x0000B8AC
+ mov r7, #0x45
+ lsl r7, r7, #2
+ add r6, r4, #6
+_021D88BC:
+ mov r0, #0x11
+ str r4, [sp]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r7]
+ mov r2, #1
+ mov r3, #0
+ bl FUN_0206E130
+ add r4, r4, #1
+ cmp r4, r6
+ bls _021D88BC
+ ldr r0, _021D89E0 ; =0x0000B8AB
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #1
+ mov r3, #0
+ bl FUN_0206E2AC
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, _021D89D0 ; =0x0000B8A8
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #9
+ bl FUN_0200C06C
+ mov r1, #0x11
+ lsl r1, r1, #4
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ ldr r3, _021D89D4 ; =0x0000B8A9
+ mov r2, #1
+ bl FUN_0206E164
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D89D0 ; =0x0000B8A8
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #4]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #4
+ bl FUN_0200C124
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D89D4 ; =0x0000B8A9
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #4]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #7
+ bl FUN_0200C124
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D89D8 ; =0x0000B8AA
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #4]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #1
+ bl FUN_0200C124
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D89D0 ; =0x0000B8A8
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #4]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #3
+ bl FUN_0200C13C
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D89D4 ; =0x0000B8A9
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #4]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ mov r3, #6
+ bl FUN_0200C13C
+ mov r3, #0
+ mov r1, #0x11
+ ldr r0, _021D89D8 ; =0x0000B8AA
+ str r3, [sp]
+ lsl r1, r1, #4
+ str r0, [sp, #4]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x71
+ bl FUN_0200C13C
+ mov r1, #0x11
+ lsl r1, r1, #4
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r2, _021D89E0 ; =0x0000B8AB
+ ldr r1, [r5, r1]
+ add r3, r2, #0
+ bl FUN_0206E1D4
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D89D0: .word 0x0000B8A8
+_021D89D4: .word 0x0000B8A9
+_021D89D8: .word 0x0000B8AA
+_021D89DC: .word 0x0000B8AC
+_021D89E0: .word 0x0000B8AB
+ thumb_func_end MOD76_021D8854
+
+ thumb_func_start MOD76_021D89E4
+MOD76_021D89E4: ; 0x021D89E4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r2, #0
+ ldrb r0, [r0, #0x14]
+ cmp r0, #0
+ bne _021D8A00
+ add r0, r1, #0
+ mov r1, #3
+ bl FUN_0206AB18
+ add r6, r0, #0
+ b _021D8A0C
+_021D8A00:
+ add r0, r1, #0
+ mov r1, #0xb
+ bl FUN_0206AB18
+ add r6, r0, #0
+ add r6, #0x12
+_021D8A0C:
+ bl FUN_0206E12C
+ add r7, r0, #0
+ add r0, r6, #0
+ bl FUN_0206E0F0
+ add r3, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _021D8A54 ; =0x0000B8AC
+ mov r1, #0x11
+ add r0, r4, r0
+ lsl r1, r1, #4
+ str r0, [sp, #4]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ add r2, r7, #0
+ bl FUN_0200C9D8
+ add r0, r6, #0
+ bl FUN_0206E114
+ add r1, r0, #0
+ add r0, r4, #6
+ lsl r0, r0, #2
+ add r2, r5, r0
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r2, r0]
+ add r1, r1, #2
+ bl FUN_0200C66C
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8A54: .word 0x0000B8AC
+ thumb_func_end MOD76_021D89E4
+
+ thumb_func_start MOD76_021D8A58
+MOD76_021D8A58: ; 0x021D8A58
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r4, #0
+ mov r7, #0x20
+ add r5, r6, #0
+_021D8A62:
+ mov r0, #0x13
+ lsl r0, r0, #4
+ lsl r2, r7, #0x10
+ ldr r0, [r5, r0]
+ mov r1, #0x98
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ ldr r0, [r6]
+ mov r1, #0x61
+ lsl r1, r1, #2
+ ldrh r0, [r0, #0x12]
+ ldrb r1, [r6, r1]
+ add r0, r0, r4
+ sub r1, r1, #1
+ cmp r0, r1
+ blo _021D8A92
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ b _021D8AB4
+_021D8A92:
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_0200C644
+ ldr r2, [r6]
+ add r0, r6, #0
+ ldr r1, [r2, #0xc]
+ ldrh r2, [r2, #0x12]
+ add r2, r2, r4
+ lsl r2, r2, #1
+ ldrh r1, [r1, r2]
+ lsl r2, r4, #0x10
+ lsr r2, r2, #0x10
+ bl MOD76_021D89E4
+_021D8AB4:
+ add r4, r4, #1
+ add r7, #0x10
+ add r5, r5, #4
+ cmp r4, #7
+ blo _021D8A62
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD76_021D8A58
+
+ thumb_func_start MOD76_021D8AC0
+MOD76_021D8AC0: ; 0x021D8AC0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ str r2, [sp]
+ cmp r1, r2
+ bhs _021D8B30
+ ldr r0, [sp]
+ mov r6, #0
+ add r0, r0, #6
+ lsl r0, r0, #1
+ add r4, r5, #0
+ str r0, [sp, #4]
+ add r7, sp, #0xc
+_021D8ADA:
+ mov r0, #0x13
+ lsl r0, r0, #4
+ add r1, sp, #0xc
+ ldr r0, [r4, r0]
+ add r1, #2
+ add r2, sp, #0xc
+ bl FUN_0200C7A0
+ mov r0, #0
+ ldrsh r0, [r7, r0]
+ cmp r0, #0x20
+ bne _021D8B10
+ mov r0, #0x80
+ strh r0, [r7]
+ ldr r0, [r5]
+ ldr r1, [r0, #0xc]
+ ldr r0, [sp, #4]
+ ldrh r1, [r0, r1]
+ ldr r0, _021D8BF4 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021D8B14
+ lsl r2, r6, #0x10
+ add r0, r5, #0
+ lsr r2, r2, #0x10
+ bl MOD76_021D89E4
+ b _021D8B14
+_021D8B10:
+ sub r0, #0x10
+ strh r0, [r7]
+_021D8B14:
+ mov r0, #0x13
+ mov r1, #2
+ mov r2, #0
+ lsl r0, r0, #4
+ ldrsh r1, [r7, r1]
+ ldrsh r2, [r7, r2]
+ ldr r0, [r4, r0]
+ bl FUN_0200C714
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #7
+ blo _021D8ADA
+ b _021D8B94
+_021D8B30:
+ ldr r0, [sp]
+ cmp r1, r0
+ bls _021D8BF0
+ lsl r0, r0, #1
+ mov r6, #0
+ add r4, r5, #0
+ str r0, [sp, #8]
+ add r7, sp, #0xc
+_021D8B40:
+ mov r0, #0x13
+ lsl r0, r0, #4
+ add r1, sp, #0xc
+ ldr r0, [r4, r0]
+ add r1, #2
+ add r2, sp, #0xc
+ bl FUN_0200C7A0
+ mov r0, #0
+ ldrsh r0, [r7, r0]
+ cmp r0, #0x80
+ bne _021D8B76
+ mov r0, #0x20
+ strh r0, [r7]
+ ldr r0, [r5]
+ ldr r1, [r0, #0xc]
+ ldr r0, [sp, #8]
+ ldrh r1, [r0, r1]
+ ldr r0, _021D8BF4 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021D8B7A
+ lsl r2, r6, #0x10
+ add r0, r5, #0
+ lsr r2, r2, #0x10
+ bl MOD76_021D89E4
+ b _021D8B7A
+_021D8B76:
+ add r0, #0x10
+ strh r0, [r7]
+_021D8B7A:
+ mov r0, #0x13
+ mov r1, #2
+ mov r2, #0
+ lsl r0, r0, #4
+ ldrsh r1, [r7, r1]
+ ldrsh r2, [r7, r2]
+ ldr r0, [r4, r0]
+ bl FUN_0200C714
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #7
+ blo _021D8B40
+_021D8B94:
+ mov r6, #0
+ add r4, r5, #0
+ add r7, sp, #0xc
+_021D8B9A:
+ mov r0, #0x13
+ lsl r0, r0, #4
+ add r1, sp, #0xc
+ ldr r0, [r4, r0]
+ add r1, #2
+ add r2, sp, #0xc
+ bl FUN_0200C7A0
+ mov r0, #0
+ ldrsh r1, [r7, r0]
+ sub r1, #0x20
+ asr r0, r1, #3
+ lsr r0, r0, #0x1c
+ add r0, r1, r0
+ asr r0, r0, #4
+ strh r0, [r7]
+ mov r0, #0
+ ldrsh r1, [r7, r0]
+ ldr r0, [sp]
+ add r0, r0, r1
+ mov r1, #0x61
+ lsl r1, r1, #2
+ ldrb r1, [r5, r1]
+ sub r1, r1, #1
+ cmp r0, r1
+ blt _021D8BDC
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ b _021D8BE8
+_021D8BDC:
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_0200C644
+_021D8BE8:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #7
+ blo _021D8B9A
+_021D8BF0:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8BF4: .word 0x0000FFFF
+ thumb_func_end MOD76_021D8AC0
+
+ thumb_func_start MOD76_021D8BF8
+MOD76_021D8BF8: ; 0x021D8BF8
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r0, r1, #0
+ mov r1, #1
+ bl FUN_0206AB18
+ add r4, r0, #0
+ bl FUN_0206E2A8
+ add r6, r0, #0
+ add r0, r4, #0
+ bl FUN_0206E278
+ add r3, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _021D8C48 ; =0x0000B8AB
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [sp, #4]
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ add r2, r6, #0
+ bl FUN_0200C9D8
+ add r0, r4, #0
+ bl FUN_0206E290
+ add r1, r0, #0
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r1, #2
+ bl FUN_0200C66C
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ nop
+_021D8C48: .word 0x0000B8AB
+ thumb_func_end MOD76_021D8BF8
+
+ thumb_func_start MOD76_021D8C4C
+MOD76_021D8C4C: ; 0x021D8C4C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ bl MOD76_021D8758
+ add r0, r6, #0
+ bl MOD76_021D8854
+ ldr r4, _021D8C84 ; =0x021D903C
+ mov r7, #0
+ add r5, r6, #0
+_021D8C60:
+ mov r0, #0x11
+ mov r1, #0x45
+ lsl r0, r0, #4
+ lsl r1, r1, #2
+ ldr r0, [r6, r0]
+ ldr r1, [r6, r1]
+ add r2, r4, #0
+ bl FUN_0200C154
+ mov r1, #0x46
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r7, r7, #1
+ add r4, #0x34
+ add r5, r5, #4
+ cmp r7, #0xd
+ blo _021D8C60
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8C84: .word 0x021D903C
+ thumb_func_end MOD76_021D8C4C
+
+ thumb_func_start MOD76_021D8C88
+MOD76_021D8C88: ; 0x021D8C88
+ push {r3, r4, r5, lr}
+ add r3, r1, #0
+ add r5, r0, #0
+ add r4, r2, #0
+ mov r0, #0x4a
+ lsl r2, r3, #4
+ lsl r0, r0, #2
+ add r2, #0x20
+ lsl r2, r2, #0x10
+ ldr r0, [r5, r0]
+ mov r1, #0xc4
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ mov r0, #0x4a
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ bl FUN_0200C66C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D8C88
+
+ thumb_func_start MOD76_021D8CB4
+MOD76_021D8CB4: ; 0x021D8CB4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ bl FUN_0200C644
+ mov r0, #0x47
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ bl FUN_0200C644
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D8CB4
+
+ thumb_func_start MOD76_021D8CD4
+MOD76_021D8CD4: ; 0x021D8CD4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldrh r0, [r0, #0x12]
+ cmp r0, #0
+ beq _021D8CEE
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_0200C644
+ b _021D8CFA
+_021D8CEE:
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C644
+_021D8CFA:
+ ldr r0, [r4]
+ ldrh r0, [r0, #0x12]
+ add r2, r0, #7
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldrb r1, [r4, r0]
+ cmp r2, r1
+ bge _021D8D16
+ sub r0, #0x60
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_0200C644
+ pop {r4, pc}
+_021D8D16:
+ sub r0, #0x60
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D8CD4
+
+ thumb_func_start MOD76_021D8D24
+MOD76_021D8D24: ; 0x021D8D24
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD76_021D8D24
+
+ thumb_func_start MOD76_021D8D44
+MOD76_021D8D44: ; 0x021D8D44
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #1
+ mov r1, #0x43
+ bl FUN_02079A70
+ mov r0, #6
+ mov r1, #0xb
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD76_021D8D44
+
+ thumb_func_start MOD76_021D8D5C
+MOD76_021D8D5C: ; 0x021D8D5C
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r2, _021D8DE4 ; =0x021D8E48
+ add r1, sp, #0
+ ldrb r3, [r2]
+ add r4, r0, #0
+ strb r3, [r1]
+ ldrb r3, [r2, #1]
+ ldrb r2, [r2, #2]
+ strb r3, [r1, #1]
+ strb r2, [r1, #2]
+ bl MOD76_021D76B8
+ ldr r0, [r4]
+ mov r1, #0x53
+ ldr r0, [r0]
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4]
+ ldr r2, [r0, #8]
+ add r0, r1, #4
+ str r2, [r4, r0]
+ add r0, r1, #0
+ mov r2, #0
+ add r0, #0x11
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ add r0, #0x14
+ strb r2, [r4, r0]
+ mov r0, #1
+ add r1, #0x13
+ strb r0, [r4, r1]
+ add r0, r4, #0
+ bl MOD76_021D8514
+ mov r1, #0x59
+ lsl r1, r1, #2
+ strh r0, [r4, r1]
+ mov r2, #2
+ sub r0, r1, #6
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ mov r2, #1
+ add r0, #0x14
+ str r2, [r4, r0]
+ add r0, r1, #0
+ mov r2, #0
+ add r0, #0x10
+ sub r1, #0x18
+ str r2, [r4, r0]
+ add r0, r4, r1
+ add r1, sp, #0
+ bl FUN_0207B000
+ mov r1, #0x53
+ lsl r1, r1, #2
+ ldr r0, _021D8DE8 ; =0x020FA6E8
+ add r1, r4, r1
+ mov r2, #0x43
+ bl FUN_02006234
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #0xc
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D8DE4: .word 0x021D8E48
+_021D8DE8: .word 0x020FA6E8
+ thumb_func_end MOD76_021D8D5C
+
+ thumb_func_start MOD76_021D8DEC
+MOD76_021D8DEC: ; 0x021D8DEC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02006290
+ cmp r0, #0
+ beq _021D8E3E
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02006260
+ add r0, r4, #0
+ bl MOD76_021D7638
+ ldr r1, [r4]
+ add r0, r4, #0
+ ldrh r1, [r1, #0x10]
+ mov r2, #1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD76_021D8C88
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD76_021D8CB4
+ add r0, r4, #0
+ bl MOD76_021D8D24
+ ldr r0, _021D8E44 ; =0x00000162
+ ldr r1, [r4]
+ ldrb r2, [r4, r0]
+ add r0, #0x1e
+ strb r2, [r1, #0x17]
+ mov r1, #7
+ str r1, [r4, r0]
+ mov r0, #0
+ pop {r4, pc}
+_021D8E3E:
+ mov r0, #0xc
+ pop {r4, pc}
+ nop
+_021D8E44: .word 0x00000162
+ thumb_func_end MOD76_021D8DEC
+
+ .section .rodata
+ ; 0x021D8E48
+ .incbin "baserom.nds", 0x2D7568, 0x498
diff --git a/arm9/modules/77/asm/module_77.s b/arm9/modules/77/asm/module_77.s
new file mode 100644
index 00000000..7771341b
--- /dev/null
+++ b/arm9/modules/77/asm/module_77.s
@@ -0,0 +1,3214 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD77_021D74E0
+MOD77_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D75D4 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D75D8 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #3
+ mov r1, #0x32
+ lsl r2, r2, #7
+ bl FUN_0201681C
+ ldr r1, _021D75DC ; =0x0000C32C
+ add r0, r4, #0
+ mov r2, #0x32
+ bl FUN_02006268
+ ldr r2, _021D75DC ; =0x0000C32C
+ mov r1, #0
+ add r5, r0, #0
+ blx Call_FillMemWithValue
+ mov r0, #0x32
+ str r0, [r5]
+ ldr r0, _021D75E0 ; =0x020ECAC4
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021D753E
+ mov r1, #1
+ b _021D7540
+_021D753E:
+ mov r1, #0
+_021D7540:
+ ldr r0, _021D75E4 ; =0x0000C2F0
+ str r1, [r5, r0]
+ add r0, r4, #0
+ bl FUN_0200628C
+ add r4, r0, #0
+ bl FUN_02029AFC
+ str r0, [r5, #4]
+ bl FUN_02029B38
+ ldr r1, _021D75E8 ; =0x0000C314
+ str r0, [r5, r1]
+ ldr r0, [r5, #4]
+ bl FUN_02029B3C
+ ldr r1, _021D75EC ; =0x0000C318
+ str r0, [r5, r1]
+ ldr r0, [r5, #4]
+ bl FUN_02029C00
+ ldr r1, _021D75F0 ; =0x0000C324
+ str r0, [r5, r1]
+ add r0, r4, #0
+ bl LoadPlayerDataAddress
+ str r0, [r5, #8]
+ bl MOD77_021D7C24
+ bl MOD77_021D7C44
+ ldr r0, [r5]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201B2EC
+ ldr r0, [r5]
+ bl FUN_02016B94
+ ldr r1, _021D75F4 ; =0x0000C010
+ str r0, [r5, r1]
+ bl FUN_0201E788
+ bl FUN_0201BD5C
+ ldr r2, [r5]
+ mov r0, #8
+ mov r1, #0x40
+ bl FUN_0200AA90
+ ldr r1, _021D75F8 ; =0x0000C070
+ str r0, [r5, r1]
+ ldr r0, [r5]
+ bl FUN_0201EB64
+ ldr r1, _021D75FC ; =0x0000C2CC
+ str r0, [r5, r1]
+ mov r0, #0
+ add r1, #0x1c
+ str r0, [r5, r1]
+ ldr r0, _021D7600 ; =0x021C4918
+ mov r1, #1
+ strb r1, [r0, #5]
+ bl FUN_0201E7A0
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ add r0, r5, #0
+ bl MOD77_021D7C64
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D75D4: .word 0xFFFFE0FF
+_021D75D8: .word 0x04001000
+_021D75DC: .word 0x0000C32C
+_021D75E0: .word 0x020ECAC4
+_021D75E4: .word 0x0000C2F0
+_021D75E8: .word 0x0000C314
+_021D75EC: .word 0x0000C318
+_021D75F0: .word 0x0000C324
+_021D75F4: .word 0x0000C010
+_021D75F8: .word 0x0000C070
+_021D75FC: .word 0x0000C2CC
+_021D7600: .word 0x021C4918
+ thumb_func_end MOD77_021D74E0
+
+ thumb_func_start MOD77_021D7604
+MOD77_021D7604: ; 0x021D7604
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ bl FUN_02006278
+ ldr r1, [r5]
+ add r4, r0, #0
+ mov r7, #0
+ cmp r1, #0x12
+ bls _021D761A
+ b _021D7B66
+_021D761A:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7626: ; jump table
+ .short _021D764C - _021D7626 - 2 ; case 0
+ .short _021D76A8 - _021D7626 - 2 ; case 1
+ .short _021D76B6 - _021D7626 - 2 ; case 2
+ .short _021D76D6 - _021D7626 - 2 ; case 3
+ .short _021D76FA - _021D7626 - 2 ; case 4
+ .short _021D7744 - _021D7626 - 2 ; case 5
+ .short _021D776C - _021D7626 - 2 ; case 6
+ .short _021D77A2 - _021D7626 - 2 ; case 7
+ .short _021D77DE - _021D7626 - 2 ; case 8
+ .short _021D7838 - _021D7626 - 2 ; case 9
+ .short _021D7886 - _021D7626 - 2 ; case 10
+ .short _021D78DC - _021D7626 - 2 ; case 11
+ .short _021D78EE - _021D7626 - 2 ; case 12
+ .short _021D7916 - _021D7626 - 2 ; case 13
+ .short _021D7964 - _021D7626 - 2 ; case 14
+ .short _021D7A32 - _021D7626 - 2 ; case 15
+ .short _021D7B0E - _021D7626 - 2 ; case 16
+ .short _021D7B1C - _021D7626 - 2 ; case 17
+ .short _021D7B3E - _021D7626 - 2 ; case 18
+_021D764C:
+ ldr r2, _021D7968 ; =0x0000013E
+ ldr r3, [r4]
+ mov r0, #1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ ldr r1, _021D796C ; =0x0000C060
+ str r0, [r4, r1]
+ add r0, r4, #0
+ bl MOD77_021D8814
+ add r0, r4, #0
+ bl MOD77_021D7FAC
+ add r0, r7, #0
+ ldr r1, _021D7970 ; =0x0000C2EC
+ add r3, r0, #0
+ str r0, [r4, r1]
+ mov r1, #6
+ str r1, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ ldr r2, [r4]
+ str r2, [sp, #8]
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #1
+ str r0, [r5]
+ b _021D7B66
+_021D76A8:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D7780
+ mov r0, #2
+ str r0, [r5]
+ b _021D7B66
+_021D76B6:
+ add r1, r7, #0
+ mov r2, #1
+ bl MOD77_021D8294
+ cmp r0, #1
+ bne _021D7780
+ ldr r0, _021D7974 ; =0x0000C314
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D76D0
+ mov r0, #3
+ str r0, [r5]
+ b _021D7B66
+_021D76D0:
+ mov r0, #0xe
+ str r0, [r5]
+ b _021D7B66
+_021D76D6:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD77_021D8294
+ cmp r0, #1
+ bne _021D7780
+ ldr r0, _021D7978 ; =0x021D8F64
+ ldr r1, _021D797C ; =0x0000C024
+ str r0, [sp]
+ ldr r2, _021D7980 ; =0x021D8F18
+ ldr r3, _021D7984 ; =0x021D8FB4
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD77_021D8370
+ mov r0, #4
+ str r0, [r5]
+ b _021D7B66
+_021D76FA:
+ ldr r0, _021D7988 ; =0x0000C054
+ ldr r0, [r4, r0]
+ bl FUN_02001204
+ add r6, r0, #0
+ sub r0, r7, #1
+ cmp r6, r0
+ beq _021D7780
+ add r0, r4, #0
+ bl MOD77_021D84D8
+ ldr r0, _021D798C ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r6, #2
+ cmp r0, #4
+ bhi _021D7732
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7728: ; jump table
+ .short _021D773E - _021D7728 - 2 ; case 0
+ .short _021D7732 - _021D7728 - 2 ; case 1
+ .short _021D7732 - _021D7728 - 2 ; case 2
+ .short _021D7738 - _021D7728 - 2 ; case 3
+ .short _021D773E - _021D7728 - 2 ; case 4
+_021D7732:
+ mov r0, #0xe
+ str r0, [r5]
+ b _021D7B66
+_021D7738:
+ mov r0, #5
+ str r0, [r5]
+ b _021D7B66
+_021D773E:
+ mov r0, #0x11
+ str r0, [r5]
+ b _021D7B66
+_021D7744:
+ mov r1, #2
+ mov r2, #1
+ bl MOD77_021D8294
+ cmp r0, #1
+ bne _021D7780
+ ldr r0, [r4]
+ ldr r1, _021D7990 ; =0x021D8F38
+ str r0, [sp]
+ ldr r0, _021D7994 ; =0x0000C010
+ ldr r2, _021D7998 ; =0x000001D9
+ ldr r0, [r4, r0]
+ mov r3, #7
+ bl FUN_02002198
+ ldr r1, _021D799C ; =0x0000C05C
+ str r0, [r4, r1]
+ mov r0, #6
+ str r0, [r5]
+ b _021D7B66
+_021D776C:
+ ldr r0, _021D799C ; =0x0000C05C
+ ldr r1, [r4]
+ ldr r0, [r4, r0]
+ bl FUN_020021AC
+ cmp r0, #0
+ beq _021D7782
+ sub r1, r7, #2
+ cmp r0, r1
+ beq _021D779C
+_021D7780:
+ b _021D7B66
+_021D7782:
+ ldr r0, _021D79A0 ; =0x0000C2F0
+ ldr r1, [r4, r0]
+ cmp r1, #1
+ bne _021D7796
+ mov r1, #0x67
+ add r0, #0x2c
+ str r1, [r4, r0]
+ mov r0, #9
+ str r0, [r5]
+ b _021D7B66
+_021D7796:
+ mov r0, #7
+ str r0, [r5]
+ b _021D7B66
+_021D779C:
+ mov r0, #3
+ str r0, [r5]
+ b _021D7B66
+_021D77A2:
+ mov r1, #3
+ mov r2, #1
+ bl MOD77_021D8294
+ cmp r0, #1
+ bne _021D77EE
+ ldr r1, _021D79A4 ; =0x0000C31C
+ add r0, r7, #0
+ str r0, [r4, r1]
+ bl FUN_02088DA0
+ add r6, r0, #0
+ add r0, r7, #0
+ bl FUN_02088DBC
+ mov r1, #0x99
+ lsl r1, r1, #2
+ str r1, [sp]
+ ldr r1, _021D797C ; =0x0000C024
+ str r6, [sp, #4]
+ str r0, [sp, #8]
+ ldr r2, _021D79A8 ; =0x021D8F20
+ ldr r3, _021D79AC ; =0x021D8FD4
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD77_021D8418
+ mov r0, #8
+ str r0, [r5]
+ b _021D7B66
+_021D77DE:
+ ldr r0, _021D7988 ; =0x0000C054
+ ldr r0, [r4, r0]
+ bl FUN_02001204
+ add r6, r0, #0
+ sub r0, r7, #1
+ cmp r6, r0
+ bne _021D77F0
+_021D77EE:
+ b _021D7B66
+_021D77F0:
+ add r0, r4, #0
+ bl MOD77_021D84D8
+ ldr r0, _021D798C ; =0x000005DC
+ bl FUN_020054C8
+ sub r0, r7, #2
+ cmp r6, r0
+ beq _021D780A
+ add r0, r7, #0
+ bl FUN_02088DA0
+ ldrb r6, [r0, r6]
+_021D780A:
+ mov r0, #1
+ mvn r0, r0
+ cmp r6, r0
+ beq _021D7832
+ ldr r0, _021D79A4 ; =0x0000C31C
+ str r6, [r4, r0]
+ ldr r0, [r4, r0]
+ bl MOD77_021D8F04
+ cmp r0, #1
+ bne _021D7826
+ mov r0, #9
+ str r0, [r5]
+ b _021D7B66
+_021D7826:
+ ldr r0, _021D79B0 ; =0x0000C320
+ mov r1, #0
+ str r1, [r4, r0]
+ mov r0, #0xb
+ str r0, [r5]
+ b _021D7B66
+_021D7832:
+ mov r0, #3
+ str r0, [r5]
+ b _021D7B66
+_021D7838:
+ mov r1, #4
+ mov r2, #1
+ bl MOD77_021D8294
+ cmp r0, #1
+ bne _021D792A
+ ldr r0, _021D79B0 ; =0x0000C320
+ add r1, r7, #0
+ str r1, [r4, r0]
+ sub r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02088D20
+ add r6, r0, #0
+ bl FUN_02088D4C
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ bl FUN_02088DA0
+ str r0, [sp, #0x10]
+ add r0, r6, #0
+ bl FUN_02088DBC
+ ldr r1, [sp, #0xc]
+ ldr r2, _021D79A8 ; =0x021D8F20
+ str r1, [sp]
+ ldr r1, [sp, #0x10]
+ ldr r3, _021D79AC ; =0x021D8FD4
+ str r1, [sp, #4]
+ ldr r1, _021D797C ; =0x0000C024
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD77_021D8418
+ mov r0, #0xa
+ str r0, [r5]
+ b _021D7B66
+_021D7886:
+ ldr r0, _021D7988 ; =0x0000C054
+ ldr r0, [r4, r0]
+ bl FUN_02001204
+ add r6, r0, #0
+ sub r0, r7, #1
+ cmp r6, r0
+ beq _021D792A
+ add r0, r4, #0
+ bl MOD77_021D84D8
+ ldr r0, _021D798C ; =0x000005DC
+ bl FUN_020054C8
+ sub r0, r7, #2
+ cmp r6, r0
+ beq _021D78B6
+ ldr r0, _021D79A4 ; =0x0000C31C
+ ldr r0, [r4, r0]
+ bl FUN_02088D20
+ bl FUN_02088DA0
+ ldrb r6, [r0, r6]
+_021D78B6:
+ mov r0, #1
+ mvn r0, r0
+ cmp r6, r0
+ beq _021D78C8
+ ldr r0, _021D79B0 ; =0x0000C320
+ str r6, [r4, r0]
+ mov r0, #0xb
+ str r0, [r5]
+ b _021D7B66
+_021D78C8:
+ ldr r0, _021D79A0 ; =0x0000C2F0
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _021D78D6
+ mov r0, #3
+ str r0, [r5]
+ b _021D7B66
+_021D78D6:
+ mov r0, #7
+ str r0, [r5]
+ b _021D7B66
+_021D78DC:
+ ldr r2, _021D79A4 ; =0x0000C31C
+ ldr r1, [r4, r2]
+ add r2, r2, #4
+ ldr r2, [r4, r2]
+ bl MOD77_021D85E0
+ mov r0, #0xc
+ str r0, [r5]
+ b _021D7B66
+_021D78EE:
+ mov r1, #5
+ mov r2, #1
+ bl MOD77_021D8294
+ cmp r0, #1
+ bne _021D792A
+ ldr r0, [r4]
+ ldr r1, _021D7990 ; =0x021D8F38
+ str r0, [sp]
+ ldr r0, _021D7994 ; =0x0000C010
+ ldr r2, _021D7998 ; =0x000001D9
+ ldr r0, [r4, r0]
+ mov r3, #7
+ bl FUN_02002198
+ ldr r1, _021D799C ; =0x0000C05C
+ str r0, [r4, r1]
+ mov r0, #0xd
+ str r0, [r5]
+ b _021D7B66
+_021D7916:
+ ldr r0, _021D799C ; =0x0000C05C
+ ldr r1, [r4]
+ ldr r0, [r4, r0]
+ bl FUN_020021AC
+ cmp r0, #0
+ beq _021D792C
+ sub r1, r7, #2
+ cmp r0, r1
+ beq _021D7958
+_021D792A:
+ b _021D7B66
+_021D792C:
+ add r0, r4, #0
+ bl MOD77_021D8698
+ ldr r2, _021D79A4 ; =0x0000C31C
+ ldr r0, [r4, #4]
+ ldr r1, [r4, r2]
+ add r2, r2, #4
+ ldr r2, [r4, r2]
+ bl FUN_02029B08
+ ldr r0, _021D79A4 ; =0x0000C31C
+ add r1, r0, #0
+ ldr r2, [r4, r0]
+ sub r1, #8
+ str r2, [r4, r1]
+ add r1, r0, #4
+ ldr r1, [r4, r1]
+ sub r0, r0, #4
+ str r1, [r4, r0]
+ mov r0, #0xe
+ str r0, [r5]
+ b _021D7B66
+_021D7958:
+ add r0, r4, #0
+ bl MOD77_021D8698
+ mov r0, #3
+ str r0, [r5]
+ b _021D7B66
+_021D7964:
+ ldr r1, _021D79A0 ; =0x0000C2F0
+ b _021D79B4
+ .align 2, 0
+_021D7968: .word 0x0000013E
+_021D796C: .word 0x0000C060
+_021D7970: .word 0x0000C2EC
+_021D7974: .word 0x0000C314
+_021D7978: .word 0x021D8F64
+_021D797C: .word 0x0000C024
+_021D7980: .word 0x021D8F18
+_021D7984: .word 0x021D8FB4
+_021D7988: .word 0x0000C054
+_021D798C: .word 0x000005DC
+_021D7990: .word 0x021D8F38
+_021D7994: .word 0x0000C010
+_021D7998: .word 0x000001D9
+_021D799C: .word 0x0000C05C
+_021D79A0: .word 0x0000C2F0
+_021D79A4: .word 0x0000C31C
+_021D79A8: .word 0x021D8F20
+_021D79AC: .word 0x021D8FD4
+_021D79B0: .word 0x0000C320
+_021D79B4:
+ ldr r0, [r4, r1]
+ cmp r0, #1
+ bne _021D79CA
+ add r0, r1, #0
+ add r0, #0x34
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D79CA
+ add r0, r1, #4
+ strh r7, [r4, r0]
+ b _021D79D0
+_021D79CA:
+ ldr r0, _021D7B74 ; =0x0000C2F4
+ mov r1, #1
+ strh r1, [r4, r0]
+_021D79D0:
+ add r0, r4, #0
+ bl MOD77_021D8914
+ add r0, r4, #0
+ bl MOD77_021D7DCC
+ add r0, r4, #0
+ bl MOD77_021D8970
+ add r0, r4, #0
+ bl MOD77_021D89F4
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ ldr r0, _021D7B78 ; =0x0000C014
+ mov r2, #0
+ add r0, r4, r0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, _021D7B7C ; =0x0000C034
+ ldr r2, _021D7B80 ; =0x000001D9
+ add r0, r4, r0
+ mov r1, #0
+ mov r3, #7
+ bl FUN_0200CCA4
+ ldr r0, _021D7B84 ; =0x0000C314
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D7A1A
+ add r0, r4, #0
+ bl MOD77_021D8510
+_021D7A1A:
+ add r0, r4, #0
+ bl MOD77_021D86B4
+ ldr r0, _021D7B88 ; =0x0000C328
+ mov r1, #0
+ str r1, [r4, r0]
+ mov r1, #1
+ sub r0, #0x40
+ str r1, [r4, r0]
+ mov r0, #0xf
+ str r0, [r5]
+ b _021D7B66
+_021D7A32:
+ ldr r1, _021D7B8C ; =0x0000C2D8
+ ldrh r6, [r4, r1]
+ bl MOD77_021D7E24
+ ldr r0, _021D7B90 ; =0x021C48B8
+ mov r3, #2
+ ldr r1, [r0, #0x48]
+ add r0, r1, #0
+ tst r0, r3
+ bne _021D7A4E
+ ldr r0, _021D7B94 ; =0x0000C2F8
+ ldr r2, [r4, r0]
+ tst r2, r3
+ beq _021D7A94
+_021D7A4E:
+ ldr r0, _021D7B7C ; =0x0000C034
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200CCF8
+ ldr r0, _021D7B98 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ ldr r0, _021D7B78 ; =0x0000C014
+ mov r2, #0
+ add r0, r4, r0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, _021D7B84 ; =0x0000C314
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ bne _021D7A88
+ mov r1, #2
+ sub r0, #0x2c
+ str r1, [r4, r0]
+ mov r0, #3
+ str r0, [r5]
+ b _021D7B66
+_021D7A88:
+ add r0, r4, #0
+ bl MOD77_021D8698
+ mov r0, #0x11
+ str r0, [r5]
+ b _021D7B66
+_021D7A94:
+ lsl r2, r3, #9
+ tst r2, r1
+ beq _021D7AC0
+ add r2, r0, #0
+ add r2, #0x30
+ ldr r2, [r4, r2]
+ cmp r2, #0
+ bne _021D7AC0
+ mov r1, #1
+ add r0, #0x30
+ str r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD77_021D86B4
+ ldr r0, _021D7B88 ; =0x0000C328
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _021D7B66
+ ldr r0, _021D7B98 ; =0x000005DD
+ bl FUN_020054C8
+ b _021D7B66
+_021D7AC0:
+ ldr r0, _021D7B9C ; =0x00000403
+ tst r0, r1
+ beq _021D7ADA
+ ldr r0, _021D7B88 ; =0x0000C328
+ ldr r2, [r4, r0]
+ cmp r2, #1
+ bne _021D7ADA
+ mov r1, #0
+ str r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD77_021D86B4
+ b _021D7B66
+_021D7ADA:
+ ldr r2, _021D7B90 ; =0x021C48B8
+ add r0, r4, #0
+ ldr r2, [r2, #0x44]
+ bl MOD77_021D8B20
+ cmp r0, #1
+ bne _021D7AFA
+ ldr r0, _021D7B88 ; =0x0000C328
+ ldr r1, [r4, r0]
+ cmp r1, #1
+ bne _021D7AFA
+ mov r1, #0
+ str r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD77_021D86B4
+_021D7AFA:
+ ldr r0, _021D7B8C ; =0x0000C2D8
+ ldrh r0, [r4, r0]
+ cmp r6, r0
+ beq _021D7B66
+ mov r0, #0x10
+ str r0, [r5]
+ ldr r0, _021D7B98 ; =0x000005DD
+ bl FUN_020054C8
+ b _021D7B66
+_021D7B0E:
+ bl MOD77_021D8CF8
+ cmp r0, #1
+ bne _021D7B66
+ mov r0, #0xf
+ str r0, [r5]
+ b _021D7B66
+_021D7B1C:
+ ldr r0, _021D7BA0 ; =0x0000C2EC
+ add r1, r7, #0
+ str r7, [r4, r0]
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r2, r7, #0
+ str r0, [sp, #8]
+ add r0, r7, #0
+ add r3, r7, #0
+ bl FUN_0200E1D0
+ mov r0, #0x12
+ str r0, [r5]
+ b _021D7B66
+_021D7B3E:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D7B66
+ ldr r0, _021D7BA4 ; =0x0000C2E8
+ mov r1, #1
+ str r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD77_021D8248
+ add r0, r4, #0
+ bl MOD77_021D88D0
+ ldr r0, _021D7BA8 ; =0x0000C060
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ add r0, r7, #0
+ str r0, [r5]
+ mov r7, #1
+_021D7B66:
+ add r0, r4, #0
+ bl MOD77_021D8D84
+ add r0, r7, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D7B74: .word 0x0000C2F4
+_021D7B78: .word 0x0000C014
+_021D7B7C: .word 0x0000C034
+_021D7B80: .word 0x000001D9
+_021D7B84: .word 0x0000C314
+_021D7B88: .word 0x0000C328
+_021D7B8C: .word 0x0000C2D8
+_021D7B90: .word 0x021C48B8
+_021D7B94: .word 0x0000C2F8
+_021D7B98: .word 0x000005DD
+_021D7B9C: .word 0x00000403
+_021D7BA0: .word 0x0000C2EC
+_021D7BA4: .word 0x0000C2E8
+_021D7BA8: .word 0x0000C060
+ thumb_func_end MOD77_021D7604
+
+ thumb_func_start MOD77_021D7BAC
+MOD77_021D7BAC: ; 0x021D7BAC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ mov r0, #4
+ mov r1, #0
+ ldr r5, [r4]
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #8
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #0
+ bl FUN_0201E74C
+ ldr r0, _021D7C14 ; =0x0000C2CC
+ ldr r0, [r4, r0]
+ bl FUN_0201EB70
+ ldr r0, _021D7C18 ; =0x0000C070
+ ldr r0, [r4, r0]
+ bl FUN_0200AB18
+ bl FUN_0201B398
+ ldr r0, _021D7C1C ; =0x0000C010
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ add r0, r6, #0
+ bl FUN_0200627C
+ add r0, r5, #0
+ bl FUN_020168D0
+ ldr r0, _021D7C20 ; =0x021C4918
+ mov r1, #0
+ strb r1, [r0, #5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ nop
+_021D7C14: .word 0x0000C2CC
+_021D7C18: .word 0x0000C070
+_021D7C1C: .word 0x0000C010
+_021D7C20: .word 0x021C4918
+ thumb_func_end MOD77_021D7BAC
+
+ thumb_func_start MOD77_021D7C24
+MOD77_021D7C24: ; 0x021D7C24
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D7C40 ; =0x021D9084
+ add r3, sp, #0
+ mov r2, #5
+_021D7C2E:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7C2E
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D7C40: .word 0x021D9084
+ thumb_func_end MOD77_021D7C24
+
+ thumb_func_start MOD77_021D7C44
+MOD77_021D7C44: ; 0x021D7C44
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _021D7C60 ; =0x021D8F54
+ add r3, sp, #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
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021D7C60: .word 0x021D8F54
+ thumb_func_end MOD77_021D7C44
+
+ thumb_func_start MOD77_021D7C64
+MOD77_021D7C64: ; 0x021D7C64
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ mov r2, #0
+ str r0, [sp, #8]
+ str r2, [r0, #0xc]
+ str r2, [sp]
+ add r0, sp, #0x20
+ str r0, [sp, #4]
+ ldr r3, [sp, #8]
+ mov r0, #0x66
+ ldr r3, [r3]
+ mov r1, #0x12
+ bl FUN_02006D18
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ mov r1, #6
+ blx _u32_div_f
+ add r7, r0, #0
+ ldr r0, [sp, #0x18]
+ mov r5, #1
+ add r4, r0, #6
+ cmp r7, #1
+ ble _021D7CCA
+ ldr r6, [sp, #8]
+ add r6, #0xc
+_021D7C9A:
+ ldrh r0, [r4]
+ cmp r0, #2
+ beq _021D7CC2
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ mov r2, #2
+ mov r3, #4
+ add r1, r0, #0
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ ldr r1, [r1, #0xc]
+ bl MOD77_021D7D58
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+_021D7CC2:
+ add r5, r5, #1
+ add r4, r4, #6
+ cmp r5, r7
+ blt _021D7C9A
+_021D7CCA:
+ ldr r0, [sp, #0x18]
+ bl FUN_02016A18
+ mov r7, #1
+ bl FUN_02088D1C
+ str r0, [sp, #0x10]
+ cmp r0, #1
+ ble _021D7D52
+ ldr r6, [sp, #8]
+ add r6, #0xc
+_021D7CE0:
+ add r0, r7, #0
+ bl FUN_02088D84
+ add r1, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ add r0, sp, #0x1c
+ str r0, [sp, #4]
+ ldr r3, [sp, #8]
+ mov r0, #0x66
+ ldr r3, [r3]
+ mov r2, #0
+ bl FUN_02006D18
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x1c]
+ mov r5, #1
+ lsr r0, r0, #2
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ add r4, r0, #4
+ ldr r0, [sp, #0xc]
+ cmp r0, #1
+ ble _021D7D44
+_021D7D10:
+ add r0, r7, #0
+ bl FUN_02088D68
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ mov r2, #0
+ mov r3, #2
+ add r1, r0, #0
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ ldr r1, [r1, #0xc]
+ bl MOD77_021D7D58
+ ldr r0, [r6]
+ add r5, r5, #1
+ add r0, r0, #1
+ str r0, [r6]
+ ldr r0, [sp, #0xc]
+ add r4, r4, #4
+ cmp r5, r0
+ blt _021D7D10
+_021D7D44:
+ ldr r0, [sp, #0x14]
+ bl FUN_02016A18
+ ldr r0, [sp, #0x10]
+ add r7, r7, #1
+ cmp r7, r0
+ blt _021D7CE0
+_021D7D52:
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD77_021D7C64
+
+ thumb_func_start MOD77_021D7D58
+MOD77_021D7D58: ; 0x021D7D58
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ ldr r5, _021D7DC8 ; =0x021D903C
+ add r7, r2, #0
+ add r6, r3, #0
+ add r4, r0, #0
+ mov ip, r1
+ add r3, sp, #0xc
+ mov r2, #4
+_021D7D6A:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7D6A
+ ldr r0, [r5]
+ mov r1, #0x30
+ str r0, [r3]
+ mov r0, ip
+ add r5, r0, #0
+ mul r5, r1
+ add r0, r4, r5
+ strh r7, [r0, #0x10]
+ strh r6, [r0, #0x12]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, sp, #0xc
+ add r1, sp, #0
+ str r7, [sp]
+ str r6, [sp, #4]
+ bl MOD77_021D8AA8
+ add r3, r4, r5
+ add r6, sp, #0xc
+ add r3, #0x14
+ mov r2, #4
+_021D7D9C:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7D9C
+ ldr r0, [r6]
+ add r2, sp, #0x38
+ str r0, [r3]
+ ldrh r1, [r2, #0x10]
+ ldrh r2, [r2, #0x14]
+ ldr r0, [r4, #4]
+ bl FUN_02029B40
+ add r2, r4, r5
+ strh r0, [r2, #0x38]
+ add r0, sp, #0x38
+ ldrh r1, [r0, #0x10]
+ strh r1, [r2, #0x3a]
+ ldrh r0, [r0, #0x14]
+ strh r0, [r2, #0x3c]
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7DC8: .word 0x021D903C
+ thumb_func_end MOD77_021D7D58
+
+ thumb_func_start MOD77_021D7DCC
+MOD77_021D7DCC: ; 0x021D7DCC
+ push {r4, r5, r6, r7}
+ ldr r1, [r0, #0xc]
+ mov r4, #0
+ cmp r1, #0
+ bls _021D7E0A
+ ldr r1, _021D7E10 ; =0x0000C318
+ add r5, r0, #0
+ mov r3, #3
+ sub r2, r1, #4
+_021D7DDE:
+ ldrh r6, [r5, #0x3a]
+ ldr r7, [r0, r2]
+ cmp r7, r6
+ bne _021D7E00
+ ldrh r6, [r5, #0x3c]
+ ldr r7, [r0, r1]
+ cmp r7, r6
+ bne _021D7E00
+ strh r3, [r5, #0x38]
+ mov r6, #0x10
+ ldrsh r7, [r5, r6]
+ ldr r6, _021D7E14 ; =0x0000C2B4
+ str r7, [r0, r6]
+ mov r6, #0x12
+ ldrsh r7, [r5, r6]
+ ldr r6, _021D7E18 ; =0x0000C2B8
+ str r7, [r0, r6]
+_021D7E00:
+ ldr r6, [r0, #0xc]
+ add r4, r4, #1
+ add r5, #0x30
+ cmp r4, r6
+ blo _021D7DDE
+_021D7E0A:
+ pop {r4, r5, r6, r7}
+ bx lr
+ nop
+_021D7E10: .word 0x0000C318
+_021D7E14: .word 0x0000C2B4
+_021D7E18: .word 0x0000C2B8
+ thumb_func_end MOD77_021D7DCC
+
+ thumb_func_start MOD77_021D7E1C
+MOD77_021D7E1C: ; 0x021D7E1C
+ ldr r3, _021D7E20 ; =FUN_02088D20
+ bx r3
+ .align 2, 0
+_021D7E20: .word FUN_02088D20
+ thumb_func_end MOD77_021D7E1C
+
+ thumb_func_start MOD77_021D7E24
+MOD77_021D7E24: ; 0x021D7E24
+ push {r4, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ ldr r0, _021D7F2C ; =0x0000C2F8
+ mov r1, #0
+ str r1, [r4, r0]
+ ldr r1, _021D7F30 ; =0x021C48F8
+ ldrh r2, [r1, #0x20]
+ cmp r2, #0
+ beq _021D7E86
+ ldrh r2, [r1, #0x1c]
+ cmp r2, #0xc8
+ blo _021D7E54
+ cmp r2, #0xf8
+ bhi _021D7E54
+ ldrh r1, [r1, #0x1e]
+ cmp r1, #0xa8
+ blo _021D7E54
+ cmp r1, #0xb8
+ bhi _021D7E54
+ mov r1, #2
+ add sp, #0x18
+ str r1, [r4, r0]
+ pop {r4, pc}
+_021D7E54:
+ ldr r0, _021D7F34 ; =0x0000C2FC
+ mov r2, #0
+ add r1, r0, #0
+ str r2, [r4, r0]
+ add r1, #0xc
+ str r2, [r4, r1]
+ add r1, r0, #0
+ add r1, #0x10
+ str r2, [r4, r1]
+ add r1, r0, #0
+ add r1, #0x14
+ str r2, [r4, r1]
+ sub r1, r0, #4
+ str r2, [r4, r1]
+ ldr r2, _021D7F30 ; =0x021C48F8
+ add r1, r0, #4
+ ldrh r3, [r2, #0x1c]
+ str r3, [r4, r1]
+ add r1, r0, #0
+ ldrh r2, [r2, #0x1e]
+ add r1, #8
+ add r0, #0x14
+ str r2, [r4, r1]
+ mov r1, #4
+ str r1, [r4, r0]
+_021D7E86:
+ ldr r0, _021D7F30 ; =0x021C48F8
+ ldrh r0, [r0, #0x22]
+ cmp r0, #0
+ beq _021D7F02
+ ldr r1, _021D7F34 ; =0x0000C2FC
+ ldr r2, [r4, r1]
+ cmp r2, #0
+ beq _021D7E9E
+ cmp r2, #1
+ beq _021D7EBA
+ add sp, #0x18
+ pop {r4, pc}
+_021D7E9E:
+ add r0, r1, #0
+ add r0, #0x14
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D7EAE
+ add r0, r2, #1
+ str r0, [r4, r1]
+ b _021D7EBA
+_021D7EAE:
+ add r0, r1, #0
+ add r0, #0x14
+ ldr r0, [r4, r0]
+ add r1, #0x14
+ sub r0, r0, #1
+ str r0, [r4, r1]
+_021D7EBA:
+ add r0, sp, #0xc
+ mov r1, #0xc3
+ str r0, [sp]
+ add r0, sp, #8
+ lsl r1, r1, #8
+ str r0, [sp, #4]
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ add r2, sp, #0x14
+ add r3, sp, #0x10
+ bl MOD77_021D7F3C
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0xc]
+ orr r0, r1
+ ldr r1, _021D7F2C ; =0x0000C2F8
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r2, [sp, #0x10]
+ add r0, #0x10
+ str r2, [r4, r0]
+ ldr r2, [sp, #8]
+ add r0, r1, #0
+ add r0, #0x14
+ str r2, [r4, r0]
+ add r0, r1, #0
+ ldr r2, _021D7F30 ; =0x021C48F8
+ add r0, #8
+ ldrh r3, [r2, #0x1c]
+ add r1, #0xc
+ add sp, #0x18
+ str r3, [r4, r0]
+ ldrh r0, [r2, #0x1e]
+ str r0, [r4, r1]
+ pop {r4, pc}
+_021D7F02:
+ ldr r0, _021D7F38 ; =0x0000C310
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _021D7F10
+ mov r1, #1
+ sub r0, #0x18
+ str r1, [r4, r0]
+_021D7F10:
+ ldr r1, _021D7F34 ; =0x0000C2FC
+ mov r2, #0
+ add r0, r1, #0
+ str r2, [r4, r1]
+ add r0, #0xc
+ str r2, [r4, r0]
+ add r0, r1, #0
+ add r0, #0x10
+ str r2, [r4, r0]
+ add r1, #0x14
+ str r2, [r4, r1]
+ add sp, #0x18
+ pop {r4, pc}
+ nop
+_021D7F2C: .word 0x0000C2F8
+_021D7F30: .word 0x021C48F8
+_021D7F34: .word 0x0000C2FC
+_021D7F38: .word 0x0000C310
+ thumb_func_end MOD77_021D7E24
+
+ thumb_func_start MOD77_021D7F3C
+MOD77_021D7F3C: ; 0x021D7F3C
+ push {r3, r4, r5, r6, r7, lr}
+ mov lr, r0
+ ldr r0, _021D7FA4 ; =0x021C48F8
+ mov ip, r1
+ ldrh r5, [r0, #0x1c]
+ mov r1, #0
+ add r7, r2, #0
+ add r6, r3, #0
+ ldr r0, _021D7FA8 ; =0x0000FFFF
+ add r2, r1, #0
+ add r3, r1, #0
+ add r4, r1, #0
+ cmp r5, r0
+ beq _021D7F6C
+ mov r0, lr
+ sub r3, r5, r0
+ bpl _021D7F66
+ sub r0, r1, #1
+ eor r3, r0
+ mov r1, #0x10
+ b _021D7F6C
+_021D7F66:
+ cmp r3, #0
+ ble _021D7F6C
+ mov r1, #0x20
+_021D7F6C:
+ str r1, [r7]
+ mov r1, #0x3f
+ add r0, r3, #0
+ and r0, r1
+ str r0, [r6]
+ ldr r0, _021D7FA4 ; =0x021C48F8
+ ldrh r3, [r0, #0x1e]
+ ldr r0, _021D7FA8 ; =0x0000FFFF
+ cmp r3, r0
+ beq _021D7F94
+ mov r0, ip
+ sub r4, r3, r0
+ bpl _021D7F8E
+ sub r1, #0x40
+ eor r4, r1
+ mov r2, #0x80
+ b _021D7F94
+_021D7F8E:
+ cmp r4, #0
+ ble _021D7F94
+ mov r2, #0x40
+_021D7F94:
+ ldr r0, [sp, #0x18]
+ add r1, r4, #0
+ str r2, [r0]
+ mov r0, #0x3f
+ and r1, r0
+ ldr r0, [sp, #0x1c]
+ str r1, [r0]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7FA4: .word 0x021C48F8
+_021D7FA8: .word 0x0000FFFF
+ thumb_func_end MOD77_021D7F3C
+
+ thumb_func_start MOD77_021D7FAC
+MOD77_021D7FAC: ; 0x021D7FAC
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r0, _021D8208 ; =0x0000C010
+ ldr r2, _021D820C ; =0x021D8F7C
+ ldr r0, [r5, r0]
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, _021D8208 ; =0x0000C010
+ mov r1, #6
+ ldr r0, [r5, r0]
+ bl FUN_02018744
+ ldr r0, _021D8208 ; =0x0000C010
+ ldr r2, _021D8210 ; =0x021D8F98
+ ldr r0, [r5, r0]
+ mov r1, #7
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r2, _021D8208 ; =0x0000C010
+ str r0, [sp, #0xc]
+ ldr r2, [r5, r2]
+ mov r0, #0x81
+ mov r1, #5
+ mov r3, #7
+ bl FUN_0200687C
+ mov r0, #0x80
+ str r0, [sp]
+ ldr r0, [r5]
+ mov r1, #6
+ str r0, [sp, #4]
+ mov r0, #0x81
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ mov r1, #7
+ str r0, [sp, #0xc]
+ ldr r2, _021D8208 ; =0x0000C010
+ mov r0, #0x81
+ ldr r2, [r5, r2]
+ add r3, r1, #0
+ bl FUN_020068C8
+ ldr r0, [r5, #8]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [r5]
+ mov r1, #6
+ str r0, [sp, #4]
+ ldr r0, _021D8208 ; =0x0000C010
+ ldr r2, _021D8214 ; =0x000001E2
+ ldr r0, [r5, r0]
+ add r3, r1, #0
+ bl FUN_0200CD68
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r5]
+ ldr r2, _021D8218 ; =0x000001D9
+ str r0, [sp, #4]
+ ldr r0, _021D8208 ; =0x0000C010
+ mov r1, #6
+ ldr r0, [r5, r0]
+ mov r3, #7
+ bl FUN_0200CB00
+ ldr r2, [r5]
+ mov r0, #4
+ mov r1, #0x80
+ bl FUN_02002ED0
+ ldr r3, [r5]
+ mov r0, #6
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r1, _021D821C ; =0x00004753
+ mov r0, #6
+ bl FUN_02017FE4
+ ldr r1, _021D8208 ; =0x0000C010
+ ldr r2, _021D8220 ; =0x021D8F40
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ add r1, r5, r1
+ bl FUN_02019150
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ ldr r0, _021D8224 ; =0x0000C014
+ mov r2, #0
+ add r0, r5, r0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, _021D8224 ; =0x0000C014
+ ldr r2, _021D8214 ; =0x000001E2
+ add r0, r5, r0
+ mov r1, #0
+ mov r3, #6
+ bl FUN_0200D0BC
+ ldr r0, _021D8228 ; =0x0000C064
+ mov r3, #0
+ str r3, [r5, r0]
+ sub r0, #0x54
+ ldr r0, [r5, r0]
+ ldr r2, _021D820C ; =0x021D8F7C
+ mov r1, #2
+ bl FUN_02016C18
+ ldr r0, _021D8208 ; =0x0000C010
+ mov r1, #2
+ ldr r0, [r5, r0]
+ bl FUN_02018744
+ ldr r0, _021D8208 ; =0x0000C010
+ ldr r2, _021D8210 ; =0x021D8F98
+ ldr r0, [r5, r0]
+ mov r1, #3
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r2, _021D8208 ; =0x0000C010
+ str r0, [sp, #0xc]
+ ldr r2, [r5, r2]
+ mov r0, #0x81
+ mov r1, #5
+ mov r3, #3
+ bl FUN_0200687C
+ mov r0, #0x80
+ str r0, [sp]
+ ldr r0, [r5]
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x81
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r2, _021D8208 ; =0x0000C010
+ str r0, [sp, #0xc]
+ ldr r2, [r5, r2]
+ mov r0, #0x81
+ mov r1, #7
+ mov r3, #3
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r5]
+ ldr r2, _021D8218 ; =0x000001D9
+ str r0, [sp, #4]
+ ldr r0, _021D8208 ; =0x0000C010
+ mov r1, #2
+ ldr r0, [r5, r0]
+ mov r3, #7
+ bl FUN_0200CB00
+ ldr r2, [r5]
+ mov r0, #0
+ mov r1, #0x80
+ bl FUN_02002ED0
+ ldr r3, [r5]
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ mov r0, #2
+ mov r1, #0
+ bl FUN_02017FE4
+ ldr r1, [r5]
+ mov r0, #0x10
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r1, [r5]
+ mov r0, #2
+ bl FUN_02002C50
+ ldr r1, _021D822C ; =0x00004E56
+ add r0, sp, #0x10
+ strh r1, [r0, #6]
+ ldr r1, _021D8230 ; =0x00003571
+ mov r3, #0x82
+ strh r1, [r0, #4]
+ ldr r1, _021D8234 ; =0x0000208C
+ strh r1, [r0, #2]
+ ldr r1, _021D8238 ; =0x00007FFF
+ strh r1, [r0]
+ mov r0, #2
+ add r1, sp, #0x14
+ add r1, #2
+ add r2, r0, #0
+ bl FUN_02017FB4
+ mov r0, #2
+ add r1, sp, #0x14
+ add r2, r0, #0
+ mov r3, #0x84
+ bl FUN_02017FB4
+ mov r0, #2
+ add r1, sp, #0x10
+ add r1, #2
+ add r2, r0, #0
+ mov r3, #0x86
+ bl FUN_02017FB4
+ mov r0, #2
+ add r1, sp, #0x10
+ add r2, r0, #0
+ mov r3, #0x9e
+ bl FUN_02017FB4
+ ldr r1, _021D8208 ; =0x0000C010
+ ldr r2, _021D823C ; =0x021D8F30
+ ldr r0, [r5, r1]
+ add r1, #0x24
+ add r1, r5, r1
+ bl FUN_02019150
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ ldr r0, _021D8240 ; =0x0000C034
+ mov r2, #0
+ add r0, r5, r0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, _021D8244 ; =0x0000C060
+ mov r1, #0xc
+ ldr r0, [r5, r0]
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r0, #2
+ add r1, r4, #0
+ mov r2, #0
+ mov r3, #0x30
+ bl FUN_02002F40
+ mov r1, #0
+ add r3, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D8240 ; =0x0000C034
+ str r1, [sp, #8]
+ add r0, r5, r0
+ mov r1, #2
+ add r2, r4, #0
+ bl FUN_0201BD84
+ add r0, r4, #0
+ bl FUN_02021A20
+ mov r0, #2
+ bl FUN_02002CF8
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ nop
+_021D8208: .word 0x0000C010
+_021D820C: .word 0x021D8F7C
+_021D8210: .word 0x021D8F98
+_021D8214: .word 0x000001E2
+_021D8218: .word 0x000001D9
+_021D821C: .word 0x00004753
+_021D8220: .word 0x021D8F40
+_021D8224: .word 0x0000C014
+_021D8228: .word 0x0000C064
+_021D822C: .word 0x00004E56
+_021D8230: .word 0x00003571
+_021D8234: .word 0x0000208C
+_021D8238: .word 0x00007FFF
+_021D823C: .word 0x021D8F30
+_021D8240: .word 0x0000C034
+_021D8244: .word 0x0000C060
+ thumb_func_end MOD77_021D7FAC
+
+ thumb_func_start MOD77_021D8248
+MOD77_021D8248: ; 0x021D8248
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D8288 ; =0x0000C034
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _021D828C ; =0x0000C014
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _021D8290 ; =0x0000C010
+ mov r1, #2
+ ldr r0, [r4, r0]
+ bl FUN_020178A0
+ ldr r0, _021D8290 ; =0x0000C010
+ mov r1, #6
+ ldr r0, [r4, r0]
+ bl FUN_020178A0
+ ldr r0, _021D8290 ; =0x0000C010
+ mov r1, #3
+ ldr r0, [r4, r0]
+ bl FUN_020178A0
+ ldr r0, _021D8290 ; =0x0000C010
+ mov r1, #7
+ ldr r0, [r4, r0]
+ bl FUN_020178A0
+ pop {r4, pc}
+ nop
+_021D8288: .word 0x0000C034
+_021D828C: .word 0x0000C014
+_021D8290: .word 0x0000C010
+ thumb_func_end MOD77_021D8248
+
+ thumb_func_start MOD77_021D8294
+MOD77_021D8294: ; 0x021D8294
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, _021D8348 ; =0x0000C064
+ add r6, r1, #0
+ ldr r1, [r5, r0]
+ mov r4, #0
+ cmp r1, #0
+ beq _021D82B0
+ cmp r1, #1
+ beq _021D830A
+ cmp r1, #2
+ beq _021D832A
+ b _021D8340
+_021D82B0:
+ mov r1, #0xd8
+ str r1, [sp]
+ mov r1, #0x20
+ sub r0, #0x50
+ str r1, [sp, #4]
+ add r0, r5, r0
+ mov r1, #0xf
+ add r2, r4, #0
+ add r3, r4, #0
+ bl FUN_020196F4
+ mov r0, #1
+ ldr r1, [r5]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ ldr r2, _021D834C ; =0x0000C06C
+ add r1, r6, #0
+ str r0, [r5, r2]
+ add r0, r2, #0
+ sub r0, #0xc
+ ldr r0, [r5, r0]
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ ldr r0, [r5, #8]
+ bl FUN_02024FF4
+ add r3, r4, #0
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r2, _021D8350 ; =0x0000C014
+ str r3, [sp, #8]
+ add r0, r5, r2
+ add r2, #0x58
+ ldr r2, [r5, r2]
+ mov r1, #1
+ bl FUN_0201BD84
+ ldr r1, _021D8354 ; =0x0000C068
+ mov r2, #1
+ str r0, [r5, r1]
+ sub r0, r1, #4
+ str r2, [r5, r0]
+ b _021D8340
+_021D830A:
+ add r0, r0, #4
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D8340
+ ldr r0, _021D834C ; =0x0000C06C
+ ldr r0, [r5, r0]
+ bl FUN_02021A20
+ ldr r0, _021D8348 ; =0x0000C064
+ mov r1, #2
+ str r1, [r5, r0]
+ b _021D8340
+_021D832A:
+ cmp r2, #0
+ bne _021D8338
+ ldr r0, _021D8358 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _021D8340
+_021D8338:
+ ldr r0, _021D8348 ; =0x0000C064
+ mov r1, #0
+ str r1, [r5, r0]
+ mov r4, #1
+_021D8340:
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D8348: .word 0x0000C064
+_021D834C: .word 0x0000C06C
+_021D8350: .word 0x0000C014
+_021D8354: .word 0x0000C068
+_021D8358: .word 0x021C48B8
+ thumb_func_end MOD77_021D8294
+
+ thumb_func_start MOD77_021D835C
+MOD77_021D835C: ; 0x021D835C
+ push {r3, lr}
+ cmp r2, #0
+ bne _021D8368
+ ldr r0, _021D836C ; =0x000005DC
+ bl FUN_020054C8
+_021D8368:
+ pop {r3, pc}
+ nop
+_021D836C: .word 0x000005DC
+ thumb_func_end MOD77_021D835C
+
+ thumb_func_start MOD77_021D8370
+MOD77_021D8370: ; 0x021D8370
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0
+ ldr r0, _021D8400 ; =0x0000C010
+ add r6, r3, #0
+ ldr r0, [r5, r0]
+ str r1, [sp]
+ bl FUN_02019150
+ ldrh r0, [r6, #0x10]
+ ldr r1, [r5]
+ bl FUN_02012838
+ ldr r1, _021D8404 ; =0x0000C058
+ mov r7, #0
+ str r0, [r5, r1]
+ ldrh r0, [r6, #0x10]
+ cmp r0, #0
+ ble _021D83B2
+ ldr r4, [sp, #0x38]
+_021D8398:
+ ldr r0, _021D8404 ; =0x0000C058
+ ldr r1, _021D8408 ; =0x0000C060
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ ldr r2, [r4]
+ ldr r3, [r4, #4]
+ bl FUN_02012880
+ ldrh r0, [r6, #0x10]
+ add r7, r7, #1
+ add r4, #8
+ cmp r7, r0
+ blt _021D8398
+_021D83B2:
+ add r3, sp, #4
+ add r2, r3, #0
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, _021D8404 ; =0x0000C058
+ mov r1, #0
+ ldr r0, [r5, r0]
+ str r0, [sp, #4]
+ ldr r0, [sp]
+ str r0, [sp, #0x10]
+ ldr r0, _021D840C ; =MOD77_021D835C
+ str r0, [sp, #8]
+ ldr r3, [r5]
+ add r0, r2, #0
+ lsl r3, r3, #0x18
+ add r2, r1, #0
+ lsr r3, r3, #0x18
+ bl FUN_020010A8
+ ldr r1, _021D8410 ; =0x0000C054
+ ldr r2, _021D8414 ; =0x000001D9
+ str r0, [r5, r1]
+ ldr r0, [sp, #0x10]
+ mov r1, #1
+ mov r3, #7
+ bl FUN_0200CCA4
+ ldr r0, [sp]
+ bl FUN_020191D0
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D8400: .word 0x0000C010
+_021D8404: .word 0x0000C058
+_021D8408: .word 0x0000C060
+_021D840C: .word MOD77_021D835C
+_021D8410: .word 0x0000C054
+_021D8414: .word 0x000001D9
+ thumb_func_end MOD77_021D8370
+
+ thumb_func_start MOD77_021D8418
+MOD77_021D8418: ; 0x021D8418
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ ldr r0, _021D84C4 ; =0x0000C010
+ str r1, [sp]
+ ldr r0, [r5, r0]
+ str r3, [sp, #4]
+ ldr r7, [sp, #0x44]
+ ldr r6, [sp, #0x48]
+ bl FUN_02019150
+ ldr r2, [sp, #0x40]
+ ldr r3, [r5]
+ mov r0, #0
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ str r0, [sp, #8]
+ ldr r1, [r5]
+ add r0, r6, #0
+ bl FUN_02012838
+ ldr r1, _021D84C8 ; =0x0000C058
+ mov r4, #0
+ str r0, [r5, r1]
+ cmp r6, #0
+ bls _021D8462
+_021D844E:
+ ldr r0, _021D84C8 ; =0x0000C058
+ ldrb r2, [r7, r4]
+ ldr r0, [r5, r0]
+ ldr r1, [sp, #8]
+ add r3, r4, #0
+ bl FUN_02012880
+ add r4, r4, #1
+ cmp r4, r6
+ blo _021D844E
+_021D8462:
+ ldr r0, [sp, #8]
+ bl FUN_0200A8B8
+ ldr r4, [sp, #4]
+ add r3, sp, #0xc
+ ldmia r4!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ str r4, [sp, #4]
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ str r4, [sp, #4]
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ str r4, [sp, #4]
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, _021D84C8 ; =0x0000C058
+ mov r1, #0
+ ldr r0, [r5, r0]
+ str r4, [sp, #4]
+ str r0, [sp, #0xc]
+ add r0, sp, #0xc
+ strh r6, [r0, #0x10]
+ ldr r0, [sp]
+ str r0, [sp, #0x18]
+ ldr r0, _021D84CC ; =MOD77_021D835C
+ str r0, [sp, #0x10]
+ ldr r3, [r5]
+ add r0, r2, #0
+ lsl r3, r3, #0x18
+ add r2, r1, #0
+ lsr r3, r3, #0x18
+ bl FUN_020010A8
+ ldr r1, _021D84D0 ; =0x0000C054
+ ldr r2, _021D84D4 ; =0x000001D9
+ str r0, [r5, r1]
+ ldr r0, [sp, #0x18]
+ mov r1, #1
+ mov r3, #7
+ bl FUN_0200CCA4
+ ldr r0, [sp]
+ bl FUN_020191D0
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D84C4: .word 0x0000C010
+_021D84C8: .word 0x0000C058
+_021D84CC: .word MOD77_021D835C
+_021D84D0: .word 0x0000C054
+_021D84D4: .word 0x000001D9
+ thumb_func_end MOD77_021D8418
+
+ thumb_func_start MOD77_021D84D8
+MOD77_021D84D8: ; 0x021D84D8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D8504 ; =0x0000C024
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200CCF8
+ ldr r0, _021D8504 ; =0x0000C024
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, _021D8508 ; =0x0000C054
+ mov r1, #0
+ ldr r0, [r4, r0]
+ add r2, r1, #0
+ bl FUN_02001300
+ ldr r0, _021D850C ; =0x0000C058
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ pop {r4, pc}
+ .align 2, 0
+_021D8504: .word 0x0000C024
+_021D8508: .word 0x0000C054
+_021D850C: .word 0x0000C058
+ thumb_func_end MOD77_021D84D8
+
+ thumb_func_start MOD77_021D8510
+MOD77_021D8510: ; 0x021D8510
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #1
+ ldr r1, [r5]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ add r4, r0, #0
+ mov r0, #1
+ ldr r1, [r5]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ ldr r1, _021D85C4 ; =0x0000C010
+ add r6, r0, #0
+ ldr r0, [r5, r1]
+ add r1, #0x34
+ ldr r2, _021D85C8 ; =0x021D8F28
+ add r1, r5, r1
+ bl FUN_02019150
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x30
+ str r0, [sp, #4]
+ ldr r0, _021D85CC ; =0x0000C044
+ mov r2, #0
+ add r0, r5, r0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, _021D85CC ; =0x0000C044
+ ldr r2, _021D85D0 ; =0x000001D9
+ add r0, r5, r0
+ mov r1, #0
+ mov r3, #7
+ bl FUN_0200CCA4
+ ldr r0, _021D85D4 ; =0x0000C070
+ ldr r2, _021D85D8 ; =0x0000C314
+ ldr r0, [r5, r0]
+ ldr r2, [r5, r2]
+ mov r1, #0
+ bl FUN_0200B4A0
+ ldr r3, _021D85D8 ; =0x0000C314
+ ldr r0, _021D85D4 ; =0x0000C070
+ ldr r2, [r5, r3]
+ add r3, r3, #4
+ ldr r0, [r5, r0]
+ ldr r3, [r5, r3]
+ mov r1, #1
+ bl FUN_0200B4D8
+ ldr r0, _021D85DC ; =0x0000C060
+ mov r1, #0xd
+ ldr r0, [r5, r0]
+ add r2, r6, #0
+ bl FUN_0200A8E0
+ ldr r0, _021D85D4 ; =0x0000C070
+ add r1, r4, #0
+ ldr r0, [r5, r0]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ mov r1, #0
+ ldr r0, _021D85CC ; =0x0000C044
+ str r1, [sp]
+ str r1, [sp, #4]
+ add r0, r5, r0
+ add r2, r4, #0
+ add r3, r1, #0
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_02021A20
+ ldr r0, _021D85CC ; =0x0000C044
+ add r0, r5, r0
+ bl FUN_020191D0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D85C4: .word 0x0000C010
+_021D85C8: .word 0x021D8F28
+_021D85CC: .word 0x0000C044
+_021D85D0: .word 0x000001D9
+_021D85D4: .word 0x0000C070
+_021D85D8: .word 0x0000C314
+_021D85DC: .word 0x0000C060
+ thumb_func_end MOD77_021D8510
+
+ thumb_func_start MOD77_021D85E0
+MOD77_021D85E0: ; 0x021D85E0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ str r1, [sp, #0xc]
+ ldr r1, [r5]
+ mov r0, #0x40
+ add r4, r2, #0
+ bl FUN_020219F4
+ add r7, r0, #0
+ ldr r1, [r5]
+ mov r0, #0x40
+ bl FUN_020219F4
+ ldr r1, _021D8688 ; =0x0000C010
+ add r6, r0, #0
+ ldr r0, [r5, r1]
+ add r1, #0x34
+ ldr r2, _021D868C ; =0x021D8F28
+ add r1, r5, r1
+ bl FUN_02019150
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x30
+ str r0, [sp, #4]
+ ldr r0, _021D8690 ; =0x0000C044
+ mov r2, #0
+ add r0, r5, r0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, _021D8690 ; =0x0000C044
+ ldr r2, _021D8694 ; =0x000001D9
+ add r0, r5, r0
+ mov r1, #0
+ mov r3, #7
+ bl FUN_0200CCA4
+ ldr r0, [r5]
+ add r1, r4, #0
+ str r0, [sp]
+ ldr r0, [sp, #0xc]
+ add r2, r7, #0
+ add r3, r6, #0
+ bl MOD77_021D8E9C
+ cmp r4, #0
+ beq _021D865C
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r1, #0
+ ldr r0, _021D8690 ; =0x0000C044
+ add r2, r6, #0
+ add r0, r5, r0
+ add r3, r1, #0
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+_021D865C:
+ mov r1, #0
+ ldr r0, _021D8690 ; =0x0000C044
+ str r1, [sp]
+ str r1, [sp, #4]
+ add r0, r5, r0
+ add r2, r7, #0
+ add r3, r1, #0
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_02021A20
+ ldr r0, _021D8690 ; =0x0000C044
+ add r0, r5, r0
+ bl FUN_020191D0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8688: .word 0x0000C010
+_021D868C: .word 0x021D8F28
+_021D8690: .word 0x0000C044
+_021D8694: .word 0x000001D9
+ thumb_func_end MOD77_021D85E0
+
+ thumb_func_start MOD77_021D8698
+MOD77_021D8698: ; 0x021D8698
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D86B0 ; =0x0000C044
+ mov r1, #0
+ add r0, r4, r0
+ bl FUN_0200CCF8
+ ldr r0, _021D86B0 ; =0x0000C044
+ add r0, r4, r0
+ bl FUN_02019178
+ pop {r4, pc}
+ .align 2, 0
+_021D86B0: .word 0x0000C044
+ thumb_func_end MOD77_021D8698
+
+ thumb_func_start MOD77_021D86B4
+MOD77_021D86B4: ; 0x021D86B4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ ldr r0, _021D8808 ; =0x0000C328
+ ldr r1, [r5, r0]
+ cmp r1, #0
+ bne _021D870E
+ mov r0, #1
+ ldr r1, [r5]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ add r4, r0, #0
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x30
+ str r0, [sp, #4]
+ ldr r0, _021D880C ; =0x0000C014
+ mov r2, #0
+ add r0, r5, r0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, _021D8810 ; =0x0000C060
+ mov r1, #0xe
+ ldr r0, [r5, r0]
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r3, #0
+ ldr r0, _021D880C ; =0x0000C014
+ str r3, [sp]
+ str r3, [sp, #4]
+ add r0, r5, r0
+ mov r1, #1
+ add r2, r4, #0
+ str r3, [sp, #8]
+ bl FUN_0201BD84
+ add r0, r4, #0
+ bl FUN_02021A20
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+_021D870E:
+ add r2, r0, #0
+ sub r2, #0x74
+ ldr r3, [r5, r2]
+ mov r1, #0
+ add r2, r3, #0
+ sub r2, #0x30
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add r3, #0x30
+ str r2, [sp, #0x18]
+ lsl r2, r3, #0x10
+ asr r2, r2, #0x10
+ sub r0, #0x70
+ str r2, [sp, #0x14]
+ ldr r2, [r5, r0]
+ str r1, [sp, #0x1c]
+ add r0, r2, #0
+ sub r0, #0x30
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r2, #0x30
+ str r0, [sp, #0x10]
+ lsl r0, r2, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ bls _021D87FA
+ add r4, r5, #0
+_021D8748:
+ mov r0, #0x10
+ ldrsh r2, [r4, r0]
+ ldr r0, [sp, #0x18]
+ cmp r2, r0
+ ble _021D87EC
+ ldr r0, [sp, #0x14]
+ cmp r2, r0
+ bge _021D87EC
+ mov r0, #0x12
+ ldrsh r2, [r4, r0]
+ ldr r0, [sp, #0x10]
+ cmp r2, r0
+ ble _021D87EC
+ ldr r0, [sp, #0xc]
+ cmp r2, r0
+ bge _021D87EC
+ ldrh r0, [r4, #0x38]
+ cmp r0, #0
+ beq _021D87EC
+ ldr r1, [r5]
+ mov r0, #0x40
+ bl FUN_020219F4
+ add r7, r0, #0
+ ldr r1, [r5]
+ mov r0, #0x40
+ bl FUN_020219F4
+ add r6, r0, #0
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x30
+ str r0, [sp, #4]
+ ldr r0, _021D880C ; =0x0000C014
+ mov r2, #0
+ add r0, r5, r0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, [r5]
+ add r2, r7, #0
+ str r0, [sp]
+ ldrh r0, [r4, #0x3a]
+ ldrh r1, [r4, #0x3c]
+ add r3, r6, #0
+ bl MOD77_021D8E9C
+ ldrh r0, [r4, #0x3c]
+ cmp r0, #0
+ beq _021D87C8
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, _021D880C ; =0x0000C014
+ mov r1, #1
+ add r0, r5, r0
+ add r2, r6, #0
+ mov r3, #0
+ bl FUN_0201BD84
+_021D87C8:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, _021D880C ; =0x0000C014
+ mov r1, #1
+ add r0, r5, r0
+ add r2, r7, #0
+ mov r3, #0
+ bl FUN_0201BD84
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_02021A20
+ mov r1, #1
+_021D87EC:
+ ldr r0, [sp, #0x1c]
+ ldr r2, [r5, #0xc]
+ add r0, r0, #1
+ add r4, #0x30
+ str r0, [sp, #0x1c]
+ cmp r0, r2
+ blo _021D8748
+_021D87FA:
+ cmp r1, #0
+ bne _021D8804
+ ldr r0, _021D8808 ; =0x0000C328
+ mov r1, #0
+ str r1, [r5, r0]
+_021D8804:
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8808: .word 0x0000C328
+_021D880C: .word 0x0000C014
+_021D8810: .word 0x0000C060
+ thumb_func_end MOD77_021D86B4
+
+ thumb_func_start MOD77_021D8814
+MOD77_021D8814: ; 0x021D8814
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r2, [r4]
+ mov r0, #0x81
+ mov r1, #0
+ bl LoadFromNarc_2
+ ldr r2, _021D88B4 ; =0x0000C0CC
+ str r0, [r4, r2]
+ add r0, r2, #0
+ sub r1, r2, #4
+ sub r0, #0x58
+ add r0, r4, r0
+ add r1, r4, r1
+ add r2, r4, r2
+ bl FUN_0201B234
+ ldr r2, [r4]
+ mov r0, #0x81
+ mov r1, #1
+ bl LoadFromNarc_2
+ ldr r2, _021D88B8 ; =0x0000C294
+ str r0, [r4, r2]
+ add r0, r2, #0
+ add r1, r2, #0
+ sub r0, #0xc8
+ sub r1, #0x14
+ add r0, r4, r0
+ add r1, r4, r1
+ add r2, r4, r2
+ bl FUN_0201B234
+ ldr r2, [r4]
+ mov r0, #0x81
+ mov r1, #2
+ bl LoadFromNarc_2
+ ldr r2, _021D88BC ; =0x0000C298
+ str r0, [r4, r2]
+ add r0, r2, #0
+ add r1, r2, #0
+ sub r0, #0x78
+ sub r1, #0x14
+ add r0, r4, r0
+ add r1, r4, r1
+ add r2, r4, r2
+ bl FUN_0201B234
+ ldr r2, [r4]
+ mov r0, #0x81
+ mov r1, #3
+ bl LoadFromNarc_2
+ ldr r2, _021D88C0 ; =0x0000C28C
+ str r0, [r4, r2]
+ add r1, r2, #0
+ ldr r0, _021D88C4 ; =0x0000C124
+ sub r1, #0x14
+ add r0, r4, r0
+ add r1, r4, r1
+ add r2, r4, r2
+ bl FUN_0201B234
+ ldr r2, [r4]
+ mov r0, #0x81
+ mov r1, #4
+ bl LoadFromNarc_2
+ ldr r2, _021D88C8 ; =0x0000C290
+ str r0, [r4, r2]
+ add r1, r2, #0
+ ldr r0, _021D88CC ; =0x0000C178
+ sub r1, #0x14
+ add r0, r4, r0
+ add r1, r4, r1
+ add r2, r4, r2
+ bl FUN_0201B234
+ pop {r4, pc}
+ .align 2, 0
+_021D88B4: .word 0x0000C0CC
+_021D88B8: .word 0x0000C294
+_021D88BC: .word 0x0000C298
+_021D88C0: .word 0x0000C28C
+_021D88C4: .word 0x0000C124
+_021D88C8: .word 0x0000C290
+_021D88CC: .word 0x0000C178
+ thumb_func_end MOD77_021D8814
+
+ thumb_func_start MOD77_021D88D0
+MOD77_021D88D0: ; 0x021D88D0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D8900 ; =0x0000C290
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _021D8904 ; =0x0000C28C
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _021D8908 ; =0x0000C298
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _021D890C ; =0x0000C294
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _021D8910 ; =0x0000C0CC
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ pop {r4, pc}
+ nop
+_021D8900: .word 0x0000C290
+_021D8904: .word 0x0000C28C
+_021D8908: .word 0x0000C298
+_021D890C: .word 0x0000C294
+_021D8910: .word 0x0000C0CC
+ thumb_func_end MOD77_021D88D0
+
+ thumb_func_start MOD77_021D8914
+MOD77_021D8914: ; 0x021D8914
+ push {r4, r5}
+ ldr r1, _021D896C ; =0x0000C29C
+ mov r3, #0
+ str r3, [r0, r1]
+ add r2, r1, #4
+ str r3, [r0, r2]
+ add r2, r1, #0
+ add r2, #8
+ str r3, [r0, r2]
+ mov r2, #1
+ add r4, r1, #0
+ lsl r2, r2, #0xc
+ add r4, #0xc
+ str r2, [r0, r4]
+ add r4, r1, #0
+ add r4, #0x10
+ str r2, [r0, r4]
+ add r4, r1, #0
+ add r4, #0x14
+ str r2, [r0, r4]
+ mov r5, #0x69
+ add r4, r1, #0
+ lsl r5, r5, #6
+ add r4, #0x18
+ str r5, [r0, r4]
+ mov r5, #0x1f
+ add r4, r1, #0
+ lsl r5, r5, #0xa
+ add r4, #0x1c
+ str r5, [r0, r4]
+ add r4, r1, #0
+ add r4, #0x20
+ str r3, [r0, r4]
+ add r3, r1, #0
+ add r3, #0x24
+ str r2, [r0, r3]
+ add r3, r1, #0
+ add r3, #0x28
+ str r2, [r0, r3]
+ add r1, #0x2c
+ str r2, [r0, r1]
+ pop {r4, r5}
+ bx lr
+ nop
+_021D896C: .word 0x0000C29C
+ thumb_func_end MOD77_021D8914
+
+ thumb_func_start MOD77_021D8970
+MOD77_021D8970: ; 0x021D8970
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ ldr r6, _021D89E4 ; =0x021D8F48
+ add r4, r0, #0
+ ldmia r6!, {r0, r1}
+ add r5, sp, #8
+ add r2, r5, #0
+ stmia r5!, {r0, r1}
+ ldr r0, [r6]
+ add r1, r2, #0
+ str r0, [r5]
+ add r7, sp, #0x14
+ mov r3, #0
+ str r3, [r7]
+ str r3, [r7, #4]
+ str r3, [r7, #8]
+ ldr r0, _021D89E8 ; =0x0000C2CC
+ str r3, [sp]
+ ldr r0, [r4, r0]
+ ldr r2, _021D89EC ; =0x000005C1
+ str r0, [sp, #4]
+ add r0, r7, #0
+ bl FUN_0201ED5C
+ ldr r2, _021D89E8 ; =0x0000C2CC
+ mov r1, #0x19
+ ldr r2, [r4, r2]
+ mov r0, #0
+ lsl r1, r1, #0xe
+ bl FUN_0201EC94
+ ldr r1, _021D89E8 ; =0x0000C2CC
+ mov r0, #0
+ ldr r1, [r4, r1]
+ bl FUN_0201EE2C
+ ldr r0, _021D89E8 ; =0x0000C2CC
+ ldr r0, [r4, r0]
+ bl FUN_0201EB8C
+ ldr r0, _021D89F0 ; =0x0000C2F4
+ ldrh r1, [r4, r0]
+ cmp r1, #0
+ bne _021D89D0
+ mov r1, #1
+ sub r0, #0x1c
+ strh r1, [r4, r0]
+ b _021D89D6
+_021D89D0:
+ mov r1, #0
+ sub r0, #0x1c
+ strh r1, [r4, r0]
+_021D89D6:
+ add r0, r4, #0
+ bl MOD77_021D8CF8
+ cmp r0, #1
+ bne _021D89D6
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D89E4: .word 0x021D8F48
+_021D89E8: .word 0x0000C2CC
+_021D89EC: .word 0x000005C1
+_021D89F0: .word 0x0000C2F4
+ thumb_func_end MOD77_021D8970
+
+ thumb_func_start MOD77_021D89F4
+MOD77_021D89F4: ; 0x021D89F4
+ push {r4, lr}
+ ldr r3, _021D8A28 ; =0x0000C2DC
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [r4, r3]
+ add r1, r3, #4
+ str r0, [r4, r1]
+ add r1, r3, #0
+ ldr r2, _021D8A2C ; =0xFFFFF001
+ add r1, #8
+ str r2, [r4, r1]
+ ldr r1, [r4, r3]
+ add r2, r3, #4
+ add r3, #8
+ ldr r2, [r4, r2]
+ ldr r3, [r4, r3]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ blx FUN_020B8418
+ pop {r4, pc}
+ nop
+_021D8A28: .word 0x0000C2DC
+_021D8A2C: .word 0xFFFFF001
+ thumb_func_end MOD77_021D89F4
+
+ thumb_func_start MOD77_021D8A30
+MOD77_021D8A30: ; 0x021D8A30
+ push {r4, r5, lr}
+ sub sp, #0x24
+ add r4, r1, #0
+ ldr r1, [r4, #4]
+ ldr r3, _021D8AA4 ; =0x020FFA38
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ asr r1, r1, #4
+ lsl r2, r1, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r5, r0, #0
+ bl MTX_RotY33_
+ ldr r0, [r4]
+ ldr r3, _021D8AA4 ; =0x020FFA38
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #0
+ bl MTX_RotX33_
+ add r0, r5, #0
+ add r1, sp, #0
+ add r2, r5, #0
+ blx MTX_Concat33
+ ldr r0, [r4, #8]
+ ldr r3, _021D8AA4 ; =0x020FFA38
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #0
+ bl MTX_RotZ33_
+ add r0, r5, #0
+ add r1, sp, #0
+ add r2, r5, #0
+ blx MTX_Concat33
+ add sp, #0x24
+ pop {r4, r5, pc}
+ nop
+_021D8AA4: .word 0x020FFA38
+ thumb_func_end MOD77_021D8A30
+
+ thumb_func_start MOD77_021D8AA8
+MOD77_021D8AA8: ; 0x021D8AA8
+ push {r4, r5, lr}
+ sub sp, #0x24
+ add r4, r1, #0
+ ldr r1, [r4]
+ ldr r3, _021D8B1C ; =0x020FFA38
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ asr r1, r1, #4
+ lsl r2, r1, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r5, r0, #0
+ bl MTX_RotY33_
+ ldr r0, [r4, #4]
+ ldr r3, _021D8B1C ; =0x020FFA38
+ neg r0, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #0
+ bl MTX_RotX33_
+ add r0, r5, #0
+ add r1, sp, #0
+ add r2, r5, #0
+ blx MTX_Concat33
+ ldr r0, [r4, #8]
+ ldr r3, _021D8B1C ; =0x020FFA38
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ add r1, r2, #1
+ lsl r1, r1, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #0
+ bl MTX_RotZ33_
+ add r0, r5, #0
+ add r1, sp, #0
+ add r2, r5, #0
+ blx MTX_Concat33
+ add sp, #0x24
+ pop {r4, r5, pc}
+ .align 2, 0
+_021D8B1C: .word 0x020FFA38
+ thumb_func_end MOD77_021D8AA8
+
+ thumb_func_start MOD77_021D8B20
+MOD77_021D8B20: ; 0x021D8B20
+ push {r3, r4, r5, r6, r7, lr}
+ add r3, r0, #0
+ ldr r0, _021D8CD8 ; =0x0000C2B4
+ add r7, r2, #0
+ add r4, r0, #4
+ ldr r4, [r3, r4]
+ ldr r2, [r3, r0]
+ lsl r4, r4, #0x10
+ asr r4, r4, #0x10
+ lsl r2, r2, #0x10
+ mov lr, r4
+ mov r4, #1
+ mov r6, #0
+ asr r2, r2, #0x10
+ tst r1, r4
+ bne _021D8B4E
+ add r1, r0, #0
+ add r1, #0x44
+ ldr r4, [r3, r1]
+ mov r1, #1
+ mov ip, r4
+ tst r1, r4
+ beq _021D8B72
+_021D8B4E:
+ ldr r1, _021D8CDC ; =0x0000C2F4
+ ldrh r0, [r3, r1]
+ cmp r0, #1
+ bne _021D8B6E
+ add r0, r1, #0
+ sub r0, #0x1c
+ ldrh r0, [r3, r0]
+ cmp r0, #0
+ bne _021D8B68
+ mov r0, #1
+ sub r1, #0x1c
+ strh r0, [r3, r1]
+ b _021D8B6E
+_021D8B68:
+ mov r0, #0
+ sub r1, #0x1c
+ strh r0, [r3, r1]
+_021D8B6E:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021D8B72:
+ add r1, r0, #0
+ add r1, #0x24
+ ldrh r1, [r3, r1]
+ cmp r1, #0
+ bne _021D8BA4
+ add r1, r0, #0
+ add r1, #0x54
+ ldr r1, [r3, r1]
+ cmp r1, #0
+ bne _021D8B8E
+ add r0, #0x58
+ ldr r0, [r3, r0]
+ cmp r0, #0
+ beq _021D8B9C
+_021D8B8E:
+ lsl r0, r1, #0x16
+ ldr r1, _021D8CE0 ; =0x0000C30C
+ lsr r0, r0, #0x10
+ ldr r1, [r3, r1]
+ lsl r1, r1, #0x16
+ lsr r1, r1, #0x10
+ b _021D8BC8
+_021D8B9C:
+ mov r0, #1
+ lsl r0, r0, #9
+ add r1, r0, #0
+ b _021D8BC8
+_021D8BA4:
+ add r1, r0, #0
+ add r1, #0x54
+ ldr r1, [r3, r1]
+ cmp r1, #0
+ bne _021D8BB6
+ add r0, #0x58
+ ldr r0, [r3, r0]
+ cmp r0, #0
+ beq _021D8BC4
+_021D8BB6:
+ lsl r0, r1, #0x12
+ ldr r1, _021D8CE0 ; =0x0000C30C
+ lsr r0, r0, #0x10
+ ldr r1, [r3, r1]
+ lsl r1, r1, #0x12
+ lsr r1, r1, #0x10
+ b _021D8BC8
+_021D8BC4:
+ mov r0, #0x20
+ add r1, r0, #0
+_021D8BC8:
+ mov r4, #0x20
+ tst r4, r7
+ bne _021D8BD6
+ mov r5, ip
+ mov r4, #0x20
+ tst r4, r5
+ beq _021D8C02
+_021D8BD6:
+ ldr r6, _021D8CDC ; =0x0000C2F4
+ ldrh r4, [r3, r6]
+ cmp r4, #1
+ bne _021D8BEC
+ add r4, r6, #0
+ sub r4, #0x3c
+ ldr r4, [r3, r4]
+ sub r6, #0x3c
+ add r4, r4, r0
+ str r4, [r3, r6]
+ b _021D8C00
+_021D8BEC:
+ ldr r5, _021D8CE4 ; =0xFFFFD820
+ mov r4, lr
+ cmp r4, r5
+ bge _021D8C00
+ add r4, r6, #0
+ sub r4, #0x3c
+ ldr r4, [r3, r4]
+ sub r6, #0x3c
+ add r4, r4, r0
+ str r4, [r3, r6]
+_021D8C00:
+ mov r6, #1
+_021D8C02:
+ mov r4, #0x10
+ tst r4, r7
+ bne _021D8C12
+ ldr r4, _021D8CE8 ; =0x0000C2F8
+ ldr r5, [r3, r4]
+ mov r4, #0x10
+ tst r4, r5
+ beq _021D8C3E
+_021D8C12:
+ ldr r5, _021D8CDC ; =0x0000C2F4
+ ldrh r4, [r3, r5]
+ cmp r4, #1
+ bne _021D8C28
+ add r4, r5, #0
+ sub r4, #0x3c
+ ldr r4, [r3, r4]
+ sub r5, #0x3c
+ sub r0, r4, r0
+ str r0, [r3, r5]
+ b _021D8C3C
+_021D8C28:
+ ldr r4, _021D8CEC ; =0xFFFFCC80
+ mov r6, lr
+ cmp r6, r4
+ ble _021D8C3C
+ add r4, r5, #0
+ sub r4, #0x3c
+ ldr r4, [r3, r4]
+ sub r5, #0x3c
+ sub r0, r4, r0
+ str r0, [r3, r5]
+_021D8C3C:
+ mov r6, #1
+_021D8C3E:
+ mov r4, #0x40
+ add r0, r7, #0
+ tst r0, r4
+ bne _021D8C4E
+ ldr r0, _021D8CE8 ; =0x0000C2F8
+ ldr r0, [r3, r0]
+ tst r0, r4
+ beq _021D8C88
+_021D8C4E:
+ ldr r4, _021D8CDC ; =0x0000C2F4
+ ldrh r0, [r3, r4]
+ cmp r0, #1
+ bne _021D8C74
+ mov r0, #0x3e
+ add r5, r2, r1
+ lsl r0, r0, #8
+ cmp r5, r0
+ bge _021D8C6E
+ add r0, r4, #0
+ sub r0, #0x40
+ ldr r0, [r3, r0]
+ sub r4, #0x40
+ add r0, r0, r1
+ str r0, [r3, r4]
+ b _021D8C86
+_021D8C6E:
+ sub r4, #0x40
+ str r0, [r3, r4]
+ b _021D8C86
+_021D8C74:
+ ldr r0, _021D8CF0 ; =0x00002020
+ cmp r2, r0
+ bge _021D8C86
+ add r0, r4, #0
+ sub r0, #0x40
+ ldr r0, [r3, r0]
+ sub r4, #0x40
+ add r0, r0, r1
+ str r0, [r3, r4]
+_021D8C86:
+ mov r6, #1
+_021D8C88:
+ mov r4, #0x80
+ add r0, r7, #0
+ tst r0, r4
+ bne _021D8C98
+ ldr r0, _021D8CE8 ; =0x0000C2F8
+ ldr r0, [r3, r0]
+ tst r0, r4
+ beq _021D8CD2
+_021D8C98:
+ ldr r4, _021D8CDC ; =0x0000C2F4
+ ldrh r0, [r3, r4]
+ cmp r0, #1
+ bne _021D8CBC
+ ldr r0, _021D8CF4 ; =0xFFFFC200
+ sub r2, r2, r1
+ cmp r2, r0
+ ble _021D8CB6
+ add r0, r4, #0
+ sub r0, #0x40
+ ldr r0, [r3, r0]
+ sub r4, #0x40
+ sub r0, r0, r1
+ str r0, [r3, r4]
+ b _021D8CD0
+_021D8CB6:
+ sub r4, #0x40
+ str r0, [r3, r4]
+ b _021D8CD0
+_021D8CBC:
+ mov r0, #0x13
+ lsl r0, r0, #8
+ cmp r2, r0
+ ble _021D8CD0
+ add r0, r4, #0
+ sub r0, #0x40
+ ldr r0, [r3, r0]
+ sub r4, #0x40
+ sub r0, r0, r1
+ str r0, [r3, r4]
+_021D8CD0:
+ mov r6, #1
+_021D8CD2:
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8CD8: .word 0x0000C2B4
+_021D8CDC: .word 0x0000C2F4
+_021D8CE0: .word 0x0000C30C
+_021D8CE4: .word 0xFFFFD820
+_021D8CE8: .word 0x0000C2F8
+_021D8CEC: .word 0xFFFFCC80
+_021D8CF0: .word 0x00002020
+_021D8CF4: .word 0xFFFFC200
+ thumb_func_end MOD77_021D8B20
+
+ thumb_func_start MOD77_021D8CF8
+MOD77_021D8CF8: ; 0x021D8CF8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D8D7C ; =0x0000C2CC
+ ldr r0, [r5, r0]
+ bl FUN_0201F010
+ ldr r1, _021D8D80 ; =0x0000C2D8
+ mov r4, #0
+ ldrh r2, [r5, r1]
+ cmp r2, #0
+ beq _021D8D42
+ cmp r2, #1
+ bne _021D8D70
+ mov r2, #0x16
+ lsl r2, r2, #0xe
+ cmp r0, r2
+ ble _021D8D3A
+ mov r2, #2
+ lsl r2, r2, #0xe
+ sub r0, r0, r2
+ add r2, r1, #0
+ sub r2, #0x18
+ ldr r3, [r5, r2]
+ add r2, r1, #0
+ sub r3, #0x80
+ sub r2, #0x18
+ str r3, [r5, r2]
+ add r2, r1, #0
+ sub r2, #0x18
+ ldr r2, [r5, r2]
+ sub r1, #0x14
+ str r2, [r5, r1]
+ b _021D8D70
+_021D8D3A:
+ mov r0, #5
+ lsl r0, r0, #0x10
+ mov r4, #1
+ b _021D8D70
+_021D8D42:
+ mov r2, #0x12
+ lsl r2, r2, #0x10
+ cmp r0, r2
+ bge _021D8D6A
+ mov r2, #2
+ lsl r2, r2, #0xe
+ add r0, r0, r2
+ add r2, r1, #0
+ sub r2, #0x18
+ ldr r3, [r5, r2]
+ add r2, r1, #0
+ add r3, #0x80
+ sub r2, #0x18
+ str r3, [r5, r2]
+ add r2, r1, #0
+ sub r2, #0x18
+ ldr r2, [r5, r2]
+ sub r1, #0x14
+ str r2, [r5, r1]
+ b _021D8D70
+_021D8D6A:
+ mov r0, #0x4a
+ lsl r0, r0, #0xe
+ mov r4, #1
+_021D8D70:
+ ldr r1, _021D8D7C ; =0x0000C2CC
+ ldr r1, [r5, r1]
+ bl FUN_0201EFE0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8D7C: .word 0x0000C2CC
+_021D8D80: .word 0x0000C2D8
+ thumb_func_end MOD77_021D8CF8
+
+ thumb_func_start MOD77_021D8D84
+MOD77_021D8D84: ; 0x021D8D84
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x70
+ ldr r4, _021D8E74 ; =0x021D8FF4
+ add r5, r0, #0
+ add r3, sp, #0x4c
+ mov r2, #4
+_021D8D90:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D8D90
+ ldr r0, [r4]
+ str r0, [r3]
+ ldr r0, _021D8E78 ; =0x0000C2E8
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D8E6E
+ cmp r0, #1
+ beq _021D8DC2
+ cmp r0, #2
+ bne _021D8E6E
+ bl FUN_020222AC
+ mov r0, #0
+ mov r1, #1
+ bl FUN_020222B4
+ ldr r0, _021D8E78 ; =0x0000C2E8
+ mov r1, #0
+ add sp, #0x70
+ str r1, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D8DC2:
+ bl FUN_020222AC
+ bl FUN_0201EBA4
+ ldr r1, _021D8E7C ; =0x0000C2B4
+ add r0, sp, #0x4c
+ add r1, r5, r1
+ bl MOD77_021D8A30
+ ldr r3, _021D8E80 ; =0x0000C29C
+ ldr r0, _021D8E84 ; =0x0000C074
+ add r1, r5, r3
+ add r3, #0xc
+ add r0, r5, r0
+ add r2, sp, #0x4c
+ add r3, r5, r3
+ bl FUN_0201B26C
+ ldr r4, _021D8E88 ; =0x021D9060
+ add r3, sp, #0x28
+ mov r2, #4
+_021D8DEC:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D8DEC
+ ldr r0, [r4]
+ add r2, sp, #0x28
+ str r0, [r3]
+ ldr r3, _021D8E8C ; =0x0000C220
+ add r1, r3, #0
+ add r0, r5, r3
+ add r1, #0x7c
+ add r3, #0xa0
+ add r1, r5, r1
+ add r3, r5, r3
+ bl FUN_0201B26C
+ ldr r4, _021D8E90 ; =0x021D9018
+ add r3, sp, #4
+ mov r2, #4
+_021D8E12:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D8E12
+ ldr r0, [r4]
+ mov r7, #0
+ str r0, [r3]
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ bls _021D8E66
+ ldr r0, _021D8E94 ; =0x0000C0D0
+ add r6, r5, #0
+ add r0, r5, r0
+ add r6, #0x14
+ add r4, r5, #0
+ str r0, [sp]
+_021D8E32:
+ add r0, r6, #0
+ add r1, sp, #0x4c
+ add r2, sp, #4
+ blx MTX_Concat33
+ ldrh r2, [r4, #0x38]
+ cmp r2, #0
+ beq _021D8E5A
+ add r1, r2, #0
+ mov r0, #0x54
+ mul r1, r0
+ ldr r0, [sp]
+ ldr r3, _021D8E98 ; =0x0000C2C0
+ add r0, r0, r1
+ ldr r1, _021D8E80 ; =0x0000C29C
+ add r2, sp, #4
+ add r1, r5, r1
+ add r3, r5, r3
+ bl FUN_0201B26C
+_021D8E5A:
+ ldr r0, [r5, #0xc]
+ add r7, r7, #1
+ add r6, #0x30
+ add r4, #0x30
+ cmp r7, r0
+ blo _021D8E32
+_021D8E66:
+ mov r0, #0
+ mov r1, #1
+ bl FUN_020222B4
+_021D8E6E:
+ add sp, #0x70
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8E74: .word 0x021D8FF4
+_021D8E78: .word 0x0000C2E8
+_021D8E7C: .word 0x0000C2B4
+_021D8E80: .word 0x0000C29C
+_021D8E84: .word 0x0000C074
+_021D8E88: .word 0x021D9060
+_021D8E8C: .word 0x0000C220
+_021D8E90: .word 0x021D9018
+_021D8E94: .word 0x0000C0D0
+_021D8E98: .word 0x0000C2C0
+ thumb_func_end MOD77_021D8D84
+
+ thumb_func_start MOD77_021D8E9C
+MOD77_021D8E9C: ; 0x021D8E9C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ str r1, [sp]
+ add r6, r2, #0
+ str r3, [sp, #4]
+ bl MOD77_021D7E1C
+ ldr r7, [sp, #0x20]
+ mov r2, #0x99
+ add r4, r0, #0
+ mov r0, #0
+ mov r1, #0x1a
+ lsl r2, r2, #2
+ add r3, r7, #0
+ bl FUN_0200A86C
+ str r0, [sp, #8]
+ add r1, r5, #0
+ add r2, r6, #0
+ bl FUN_0200A8E0
+ ldr r0, [sp, #8]
+ bl FUN_0200A8B8
+ cmp r4, #0
+ bne _021D8EDA
+ mov r5, #0
+ mov r4, #1
+ str r5, [sp]
+ b _021D8EDC
+_021D8EDA:
+ mov r5, #1
+_021D8EDC:
+ add r0, r4, #0
+ bl FUN_02088D4C
+ add r2, r0, #0
+ mov r0, #0
+ mov r1, #0x1a
+ add r3, r7, #0
+ bl FUN_0200A86C
+ ldr r1, [sp]
+ ldr r2, [sp, #4]
+ add r4, r0, #0
+ bl FUN_0200A8E0
+ add r0, r4, #0
+ bl FUN_0200A8B8
+ add r0, r5, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD77_021D8E9C
+
+ thumb_func_start MOD77_021D8F04
+MOD77_021D8F04: ; 0x021D8F04
+ push {r3, lr}
+ bl MOD77_021D7E1C
+ cmp r0, #0
+ beq _021D8F12
+ mov r0, #1
+ pop {r3, pc}
+_021D8F12:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD77_021D8F04
+
+ .section .rodata
+ ; 0x021D8F18
+ .incbin "baserom.nds", 0x2D9638, 0x194