diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-13 13:19:04 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-13 13:19:23 -0400 |
commit | 629a2330b5f01c666a299eb13f5da65e91cfdb65 (patch) | |
tree | cc72f82e11b6c9b5c46cb0ef4b8dd0b1a5c9e928 | |
parent | e41306f4804014a85e6ef3d7c4d1efc9210fd342 (diff) |
Disassemble modules 76 and 77
-rw-r--r-- | arm9/arm9.lcf | 50 | ||||
-rw-r--r-- | arm9/global.inc | 10 | ||||
-rw-r--r-- | arm9/modules/76/asm/module_76.s | 3226 | ||||
-rw-r--r-- | arm9/modules/77/asm/module_77.s | 3214 |
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 |