diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-13 11:23:07 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-13 11:23:07 -0400 |
commit | b7653869f1ca0dd547b561b403910f82c2eaf62b (patch) | |
tree | 9a796f23e6083d806510c2601ca42715f4a2e0a0 | |
parent | 45e8d55574fd97e5afbab239dff712e0a9b90772 (diff) |
Disassemble module 74
-rw-r--r-- | arm9/arm9.lcf | 34 | ||||
-rw-r--r-- | arm9/global.inc | 1 | ||||
-rw-r--r-- | arm9/modules/72/asm/module_72_dummy.s | 1 | ||||
-rw-r--r-- | arm9/modules/74/asm/module_74.s | 2022 |
4 files changed, 2056 insertions, 2 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index e38dc01e..4092859c 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -2871,11 +2871,33 @@ SECTIONS { SDK_OVERLAY.MODULE_73.BSS_SIZE = SDK_OVERLAY.MODULE_73.BSS_END - SDK_OVERLAY.MODULE_73.BSS_START; } >> MODULE_73 + .MODULE_74: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY_MODULE_74_ID = 74; + SDK_OVERLAY.MODULE_74.ID = 74; + SDK_OVERLAY.MODULE_74.START = .; + module_74.o (.text) + module_74.o (.rodata) + module_74.o (.init) + SDK_OVERLAY.MODULE_74.SINIT_START = .; + module_74.o (.ctor) + module_74.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_74.SINIT_END = .; + . = ALIGN(32); + module_74.o (.sdata) + module_74.o (.data) + . = ALIGN(32); + SDK_OVERLAY.MODULE_74.END = .; + SDK_OVERLAY.MODULE_74.SIZE = SDK_OVERLAY.MODULE_74.END - SDK_OVERLAY.MODULE_74.START; + } > MODULE_74 + .MODULE_74.bss : { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_74.BSS_START = .; - FILE_2CEA00.o (.bss) + module_74.o (.bss) + module_74.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_74.BSS_END = .; SDK_OVERLAY.MODULE_74.BSS_SIZE = SDK_OVERLAY.MODULE_74.BSS_END - SDK_OVERLAY.MODULE_74.BSS_START; @@ -3924,7 +3946,15 @@ SECTIONS { WRITEW 73; WRITEW 0; - OVERLAY_TABLE(MODULE_74, 74) + WRITEW 74; + WRITEW ADDR(.MODULE_74); + WRITEW SDK_OVERLAY.MODULE_74.SIZE; + WRITEW SDK_OVERLAY.MODULE_74.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_74.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_74.SINIT_END; + WRITEW 74; + WRITEW 0; + OVERLAY_TABLE(MODULE_75, 75) OVERLAY_TABLE(MODULE_76, 76) OVERLAY_TABLE(MODULE_77, 77) diff --git a/arm9/global.inc b/arm9/global.inc index 09a35bd8..27fc15d0 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5762,6 +5762,7 @@ .extern FUN_02027E30
.extern FUN_02027E94
.extern FUN_02029520
+.extern FUN_0202A878
.extern FUN_02060FAC
.extern FUN_020842D0
.extern FUN_020842D8
diff --git a/arm9/modules/72/asm/module_72_dummy.s b/arm9/modules/72/asm/module_72_dummy.s index e69de29b..8b137891 100644 --- a/arm9/modules/72/asm/module_72_dummy.s +++ b/arm9/modules/72/asm/module_72_dummy.s @@ -0,0 +1 @@ + diff --git a/arm9/modules/74/asm/module_74.s b/arm9/modules/74/asm/module_74.s new file mode 100644 index 00000000..7d5363dd --- /dev/null +++ b/arm9/modules/74/asm/module_74.s @@ -0,0 +1,2022 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD74_021D74E0 +MOD74_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_0200628C + mov r2, #1 + add r5, r0, #0 + mov r0, #3 + mov r1, #0x4a + lsl r2, r2, #0x10 + bl FUN_0201681C + mov r1, #0xad + add r0, r4, #0 + lsl r1, r1, #2 + mov r2, #0x4a + bl FUN_02006268 + mov r2, #0xad + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strb r0, [r4, #0xa] + ldr r0, [r5] + bl LoadPlayerDataAddress + str r0, [r4, #0x18] + ldr r0, [r5] + bl FUN_02029FC8 + str r0, [r4, #0x1c] + ldr r0, [r5] + bl FUN_0202A8D8 + str r0, [r4, #0x20] + ldr r0, [r5] + bl FUN_0202A8E4 + str r0, [r4, #0x24] + mov r0, #0x4a + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD74_021D74E0 + + thumb_func_start MOD74_021D7540 +MOD74_021D7540: ; 0x021D7540 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0200627C + ldr r0, [r4] + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD74_021D7540 + + thumb_func_start MOD74_021D755C +MOD74_021D755C: ; 0x021D755C + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + bl FUN_02006278 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #4 + bhi _021D760C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D757A: ; jump table + .short _021D7584 - _021D757A - 2 ; case 0 + .short _021D75AA - _021D757A - 2 ; case 1 + .short _021D75BA - _021D757A - 2 ; case 2 + .short _021D75EE - _021D757A - 2 ; case 3 + .short _021D75FE - _021D757A - 2 ; case 4 +_021D7584: + bl MOD74_021D7624 + cmp r0, #0 + beq _021D760C + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r5] + add r2, r1, #0 + str r0, [sp, #8] + mov r0, #3 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D760C +_021D75AA: + bl FUN_0200E308 + cmp r0, #0 + beq _021D760C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D760C +_021D75BA: + ldrh r1, [r5, #8] + cmp r1, #0 + bne _021D75C6 + bl MOD74_021D77AC + b _021D75CA +_021D75C6: + bl MOD74_021D790C +_021D75CA: + cmp r0, #0 + beq _021D760C + mov r0, #6 + str r0, [sp] + mov r0, #1 + mov r1, #0 + str r0, [sp, #4] + ldr r0, [r5] + add r2, r1, #0 + str r0, [sp, #8] + mov r0, #3 + add r3, r1, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D760C +_021D75EE: + bl FUN_0200E308 + cmp r0, #0 + beq _021D760C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D760C +_021D75FE: + bl MOD74_021D76E8 + cmp r0, #0 + beq _021D760C + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021D760C: + ldr r0, [r4] + cmp r0, #1 + blt _021D761C + cmp r0, #3 + bgt _021D761C + add r0, r5, #0 + bl MOD74_021D82D4 +_021D761C: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD74_021D755C + + thumb_func_start MOD74_021D7624 +MOD74_021D7624: ; 0x021D7624 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #4 + bhi _021D76D2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D763A: ; jump table + .short _021D7644 - _021D763A - 2 ; case 0 + .short _021D7684 - _021D763A - 2 ; case 1 + .short _021D7690 - _021D763A - 2 ; case 2 + .short _021D76B6 - _021D763A - 2 ; case 3 + .short _021D76C2 - _021D763A - 2 ; case 4 +_021D7644: + 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, _021D76DC ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D76E0 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + bl MOD74_021D7764 + mov r0, #0 + bl FUN_0200E388 + mov r0, #1 + bl FUN_0200E388 + add r0, r4, #0 + bl MOD74_021D7934 + b _021D76D2 +_021D7684: + bl MOD74_021D79F8 + add r0, r4, #0 + bl MOD74_021D7B20 + b _021D76D2 +_021D7690: + bl MOD74_021D7A88 + ldrh r0, [r4, #8] + cmp r0, #0 + bne _021D76A8 + add r0, r4, #0 + bl MOD74_021D7D1C + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + b _021D76D2 +_021D76A8: + add r0, r4, #0 + bl MOD74_021D7E9C + add r0, r4, #0 + bl MOD74_021D8008 + b _021D76D2 +_021D76B6: + bl MOD74_021D8200 + add r0, r4, #0 + bl MOD74_021D82F0 + b _021D76D2 +_021D76C2: + ldr r0, _021D76E4 ; =MOD74_021D7784 + add r1, r4, #0 + bl FUN_02015F10 + mov r0, #0 + str r0, [r4, #4] + mov r0, #1 + pop {r4, pc} +_021D76D2: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D76DC: .word 0xFFFFE0FF +_021D76E0: .word 0x04001000 +_021D76E4: .word MOD74_021D7784 + thumb_func_end MOD74_021D7624 + + thumb_func_start MOD74_021D76E8 +MOD74_021D76E8: ; 0x021D76E8 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #0 + beq _021D76F8 + cmp r1, #1 + beq _021D7722 + b _021D7752 +_021D76F8: + ldrh r1, [r4, #8] + cmp r1, #0 + beq _021D770E + bl MOD74_021D836C + add r0, r4, #0 + bl MOD74_021D82B0 + add r0, r4, #0 + bl MOD74_021D7F28 +_021D770E: + add r0, r4, #0 + bl MOD74_021D7AF0 + add r0, r4, #0 + bl MOD74_021D7BB4 + add r0, r4, #0 + bl MOD74_021D79C8 + b _021D7752 +_021D7722: + 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, _021D775C ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D7760 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #0 + str r0, [r4, #4] + mov r0, #1 + pop {r4, pc} +_021D7752: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D775C: .word 0xFFFFE0FF +_021D7760: .word 0x04001000 + thumb_func_end MOD74_021D76E8 + + thumb_func_start MOD74_021D7764 +MOD74_021D7764: ; 0x021D7764 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D7780 ; =0x021D8518 + add r3, sp, #0 + mov r2, #5 +_021D776E: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D776E + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D7780: .word 0x021D8518 + thumb_func_end MOD74_021D7764 + + thumb_func_start MOD74_021D7784 +MOD74_021D7784: ; 0x021D7784 + push {r4, lr} + add r4, r0, #0 + bl MOD74_021D82E8 + bl FUN_020AEEB8 + ldr r0, [r4, #0x10] + bl FUN_0201AB60 + ldr r3, _021D77A4 ; =0x027E0000 + ldr r1, _021D77A8 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + .align 2, 0 +_021D77A4: .word 0x027E0000 +_021D77A8: .word 0x00003FF8 + thumb_func_end MOD74_021D7784 + + thumb_func_start MOD74_021D77AC +MOD74_021D77AC: ; 0x021D77AC + ldr r0, _021D77C0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D77BA + mov r0, #1 + bx lr +_021D77BA: + mov r0, #0 + bx lr + nop +_021D77C0: .word 0x021C48B8 + thumb_func_end MOD74_021D77AC + + thumb_func_start MOD74_021D77C4 +MOD74_021D77C4: ; 0x021D77C4 + push {r3, r4, r5, lr} + sub sp, #8 + ldr r1, _021D78B8 ; =0x021C48B8 + add r4, r0, #0 + ldr r2, [r1, #0x48] + mov r1, #2 + mov r3, #0 + tst r1, r2 + beq _021D77DC + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D77DC: + mov r1, #1 + add r5, r2, #0 + tst r5, r1 + beq _021D7800 + ldrb r2, [r4, #0xb] + cmp r2, #0xa + blo _021D77F0 + add sp, #8 + add r0, r1, #0 + pop {r3, r4, r5, pc} +_021D77F0: + ldrb r1, [r4, #0xd] + add r1, r1, #1 + strb r1, [r4, #0xd] + bl MOD74_021D80D0 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D7800: + mov r0, #0x40 + tst r0, r2 + beq _021D7828 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _021D787A + sub r0, r0, #1 + strb r0, [r4, #0xb] + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _021D7820 + ldrb r0, [r4, #0xe] + add r3, r1, #0 + sub r0, r0, #1 + strb r0, [r4, #0xe] + b _021D787A +_021D7820: + sub r0, r0, #1 + strb r0, [r4, #0xf] + add r3, r1, #0 + b _021D787A +_021D7828: + mov r0, #0x80 + tst r0, r2 + beq _021D7850 + ldrb r0, [r4, #0xb] + cmp r0, #0xa + bhs _021D787A + add r0, r0, #1 + strb r0, [r4, #0xb] + ldrb r0, [r4, #0xf] + cmp r0, #1 + bls _021D7848 + ldrb r0, [r4, #0xe] + add r3, r1, #0 + add r0, r0, #1 + strb r0, [r4, #0xe] + b _021D787A +_021D7848: + add r0, r0, #1 + strb r0, [r4, #0xf] + add r3, r1, #0 + b _021D787A +_021D7850: + mov r0, #0x20 + tst r0, r2 + beq _021D7866 + ldrb r0, [r4, #0xc] + mov r1, #3 + add r0, r0, #2 + bl _s32_div_f + strb r1, [r4, #0xc] + mov r3, #1 + b _021D787A +_021D7866: + mov r0, #0x10 + tst r0, r2 + beq _021D787A + ldrb r0, [r4, #0xc] + mov r1, #3 + add r0, r0, #1 + bl _s32_div_f + strb r1, [r4, #0xc] + mov r3, #1 +_021D787A: + ldrb r0, [r4, #0xb] + cmp r0, #0xa + bne _021D7884 + mov r0, #2 + strb r0, [r4, #0xc] +_021D7884: + cmp r3, #0 + bne _021D788E + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D788E: + ldrb r1, [r4, #0xb] + ldrb r2, [r4, #0xc] + ldrb r3, [r4, #0xf] + add r0, r4, #0 + bl MOD74_021D83D4 + ldrb r0, [r4, #0xb] + add r1, r4, #0 + add r1, #0x7c + str r0, [sp] + ldrb r0, [r4, #0xc] + str r0, [sp, #4] + add r0, r4, #0 + ldrb r3, [r4, #0xe] + ldr r2, [r4, #0x34] + add r0, #0xbc + bl MOD74_021D7F44 + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D78B8: .word 0x021C48B8 + thumb_func_end MOD74_021D77C4 + + thumb_func_start MOD74_021D78BC +MOD74_021D78BC: ; 0x021D78BC + push {r4, lr} + ldr r1, _021D78E8 ; =0x021C48B8 + add r4, r0, #0 + ldr r2, [r1, #0x48] + mov r1, #1 + tst r1, r2 + beq _021D78D6 + bl MOD74_021D818C + ldrb r0, [r4, #0xd] + add r0, r0, #1 + strb r0, [r4, #0xd] + b _021D78E4 +_021D78D6: + mov r1, #2 + tst r1, r2 + beq _021D78E4 + bl MOD74_021D81E0 + mov r0, #0 + strb r0, [r4, #0xd] +_021D78E4: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D78E8: .word 0x021C48B8 + thumb_func_end MOD74_021D78BC + + thumb_func_start MOD74_021D78EC +MOD74_021D78EC: ; 0x021D78EC + push {r4, lr} + ldr r1, _021D7908 ; =0x021C48B8 + add r4, r0, #0 + ldr r2, [r1, #0x48] + mov r1, #3 + tst r1, r2 + beq _021D7902 + bl MOD74_021D81E0 + mov r0, #0 + strb r0, [r4, #0xd] +_021D7902: + mov r0, #0 + pop {r4, pc} + nop +_021D7908: .word 0x021C48B8 + thumb_func_end MOD74_021D78EC + + thumb_func_start MOD74_021D790C +MOD74_021D790C: ; 0x021D790C + push {r3, lr} + ldrb r1, [r0, #0xd] + cmp r1, #0 + beq _021D791E + cmp r1, #1 + beq _021D7924 + cmp r1, #2 + beq _021D792A + b _021D7930 +_021D791E: + bl MOD74_021D77C4 + pop {r3, pc} +_021D7924: + bl MOD74_021D78BC + pop {r3, pc} +_021D792A: + bl MOD74_021D78EC + pop {r3, pc} +_021D7930: + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD74_021D790C + + thumb_func_start MOD74_021D7934 +MOD74_021D7934: ; 0x021D7934 + push {r4, r5, r6, r7, lr} + sub sp, #0x64 + add r5, r0, #0 + ldr r0, [r5] + bl FUN_02016B94 + add r3, sp, #0 + ldr r4, _021D79C0 ; =0x021D84A0 + str r0, [r5, #0x10] + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r4, _021D79C4 ; =0x021D8570 + add r3, sp, #0x10 + mov r2, #0xa +_021D795C: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D795C + ldr r0, [r4] + mov r4, #0 + str r0, [r3] + ldrh r0, [r5, #8] + add r7, r4, #0 + add r0, r0, #2 + cmp r0, #0 + ble _021D799C + add r6, sp, #0x10 +_021D7976: + lsl r1, r4, #0x18 + ldr r0, [r5, #0x10] + lsr r1, r1, #0x18 + add r2, r6, #0 + mov r3, #0 + bl FUN_02016C18 + lsl r1, r4, #0x18 + ldr r0, [r5, #0x10] + lsr r1, r1, #0x18 + bl FUN_02018744 + ldrh r0, [r5, #8] + add r7, r7, #1 + add r4, r4, #1 + add r0, r0, #2 + add r6, #0x1c + cmp r7, r0 + blt _021D7976 +_021D799C: + mov r0, #0 + ldr r3, [r5] + mov r1, #0x20 + add r2, r0, #0 + bl FUN_02017F18 + ldrh r0, [r5, #8] + cmp r0, #0 + beq _021D79BA + ldr r3, [r5] + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 +_021D79BA: + add sp, #0x64 + pop {r4, r5, r6, r7, pc} + nop +_021D79C0: .word 0x021D84A0 +_021D79C4: .word 0x021D8570 + thumb_func_end MOD74_021D7934 + + thumb_func_start MOD74_021D79C8 +MOD74_021D79C8: ; 0x021D79C8 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldrh r0, [r6, #8] + mov r5, #0 + add r4, r5, #0 + add r0, r0, #2 + cmp r0, #0 + ble _021D79EE +_021D79D8: + lsl r1, r5, #0x18 + ldr r0, [r6, #0x10] + lsr r1, r1, #0x18 + add r5, r5, #1 + bl FUN_020178A0 + ldrh r0, [r6, #8] + add r4, r4, #1 + add r0, r0, #2 + cmp r4, r0 + blt _021D79D8 +_021D79EE: + ldr r0, [r6, #0x10] + bl FUN_02016A18 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD74_021D79C8 + + thumb_func_start MOD74_021D79F8 +MOD74_021D79F8: ; 0x021D79F8 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r1, [r5] + mov r0, #0x7b + bl FUN_02006670 + add r4, r0, #0 + mov r0, #5 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x10] + ldr r1, [r5] + add r2, r4, #0 + mov r3, #0x7b + bl FUN_02079B60 + mov r0, #4 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0x40 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x10] + ldr r1, [r5] + add r2, r4, #0 + mov r3, #0x7b + bl FUN_02079B60 + ldrh r0, [r5, #8] + cmp r0, #1 + bne _021D7A4E + mov r0, #7 + b _021D7A5A +_021D7A4E: + ldrb r0, [r5, #0xa] + cmp r0, #2 + bne _021D7A58 + mov r0, #8 + b _021D7A5A +_021D7A58: + mov r0, #6 +_021D7A5A: + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x10] + ldr r1, [r5] + add r2, r4, #0 + mov r3, #0x7b + bl FUN_02079B60 + add r0, r4, #0 + bl FUN_020066F4 + ldr r0, [r5, #0x10] + mov r1, #1 + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD74_021D79F8 + + thumb_func_start MOD74_021D7A88 +MOD74_021D7A88: ; 0x021D7A88 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldrh r0, [r6, #8] + cmp r0, #0 + bne _021D7AB8 + add r5, r6, #0 + ldr r4, _021D7AE8 ; =0x021D8540 + mov r7, #0 + add r5, #0x6c +_021D7A9A: + ldr r0, [r6, #0x10] + add r1, r5, #0 + add r2, r4, #0 + bl FUN_02019150 + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + add r7, r7, #1 + add r4, #8 + add r5, #0x10 + cmp r7, #5 + blt _021D7A9A + b _021D7ADC +_021D7AB8: + add r5, r6, #0 + ldr r4, _021D7AEC ; =0x021D84C4 + mov r7, #0 + add r5, #0x6c +_021D7AC0: + ldr r0, [r6, #0x10] + add r1, r5, #0 + add r2, r4, #0 + bl FUN_02019150 + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + add r7, r7, #1 + add r4, #8 + add r5, #0x10 + cmp r7, #3 + blt _021D7AC0 +_021D7ADC: + ldr r2, [r6] + mov r0, #0 + mov r1, #0x40 + bl FUN_02002ED0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D7AE8: .word 0x021D8540 +_021D7AEC: .word 0x021D84C4 + thumb_func_end MOD74_021D7A88 + + thumb_func_start MOD74_021D7AF0 +MOD74_021D7AF0: ; 0x021D7AF0 + push {r4, r5, r6, lr} + ldrh r1, [r0, #8] + cmp r1, #0 + bne _021D7AFC + mov r6, #5 + b _021D7AFE +_021D7AFC: + mov r6, #3 +_021D7AFE: + mov r4, #0 + cmp r6, #0 + ble _021D7B1C + add r5, r0, #0 + add r5, #0x6c +_021D7B08: + add r0, r5, #0 + bl FUN_02019570 + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, r6 + blt _021D7B08 +_021D7B1C: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD74_021D7AF0 + + thumb_func_start MOD74_021D7B20 +MOD74_021D7B20: ; 0x021D7B20 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r3, [r5] + mov r0, #0 + mov r1, #0x1a + mov r2, #0x11 + bl FUN_0200A86C + str r0, [r5, #0x28] + ldr r2, [r5] + mov r0, #2 + mov r1, #0x4c + bl FUN_0200AA90 + str r0, [r5, #0x2c] + ldr r1, [r5] + mov r0, #0x4c + bl FUN_020219F4 + str r0, [r5, #0x30] + mov r6, #0 + add r4, r5, #0 +_021D7B4C: + add r1, r6, #0 + ldr r0, [r5, #0x28] + add r1, #9 + bl FUN_0200A914 + str r0, [r4, #0x4c] + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #6 + blt _021D7B4C + ldr r0, [r5, #0x28] + mov r1, #0xf + bl FUN_0200A914 + str r0, [r5, #0x38] + ldr r0, [r5, #0x28] + mov r1, #0x11 + bl FUN_0200A914 + str r0, [r5, #0x3c] + ldr r0, [r5, #0x28] + mov r1, #0x12 + bl FUN_0200A914 + str r0, [r5, #0x34] + ldr r0, [r5, #0x28] + mov r1, #0x13 + bl FUN_0200A914 + str r0, [r5, #0x40] + ldr r0, [r5, #0x28] + mov r1, #0x14 + bl FUN_0200A914 + str r0, [r5, #0x44] + ldr r0, [r5, #0x28] + mov r1, #0x15 + bl FUN_0200A914 + str r0, [r5, #0x48] + ldr r0, [r5, #0x28] + mov r1, #0x16 + bl FUN_0200A914 + str r0, [r5, #0x64] + ldr r0, [r5, #0x28] + mov r1, #0x17 + bl FUN_0200A914 + str r0, [r5, #0x68] + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD74_021D7B20 + + thumb_func_start MOD74_021D7BB4 +MOD74_021D7BB4: ; 0x021D7BB4 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r6, #0x68] + bl FUN_02021A20 + ldr r0, [r6, #0x64] + bl FUN_02021A20 + ldr r0, [r6, #0x48] + bl FUN_02021A20 + ldr r0, [r6, #0x44] + bl FUN_02021A20 + ldr r0, [r6, #0x40] + bl FUN_02021A20 + ldr r0, [r6, #0x34] + bl FUN_02021A20 + ldr r0, [r6, #0x3c] + bl FUN_02021A20 + ldr r0, [r6, #0x38] + bl FUN_02021A20 + mov r4, #0 + add r5, r6, #0 +_021D7BEC: + ldr r0, [r5, #0x4c] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _021D7BEC + ldr r0, [r6, #0x30] + bl FUN_02021A20 + ldr r0, [r6, #0x2c] + bl FUN_0200AB18 + ldr r0, [r6, #0x28] + bl FUN_0200A8B8 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD74_021D7BB4 + + thumb_func_start MOD74_021D7C10 +MOD74_021D7C10: ; 0x021D7C10 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r7, r3, #0 + add r4, r1, #0 + ldr r0, [r5, #0x1c] + add r1, r7, #0 + add r6, r2, #0 + bl FUN_0202A150 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #0x1c] + add r1, r7, #1 + bl FUN_0202A150 + lsl r0, r0, #0x10 + add r6, #8 + lsr r7, r0, #0x10 + lsl r1, r6, #0x10 + ldr r0, [r5, #0x20] + lsr r1, r1, #0x10 + mov r2, #0 + bl FUN_0202A578 + lsl r2, r0, #0x10 + add r0, sp, #0x18 + ldrb r6, [r0, #0x10] + lsr r2, r2, #0xe + mov r0, #0xff + str r6, [sp] + str r0, [sp, #4] + mov r0, #0xc1 + lsl r0, r0, #0xa + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + add r2, r5, r2 + ldr r2, [r2, #0x4c] + add r0, r4, #0 + mov r3, #4 + bl FUN_0201BDE0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r5, #0x2c] + mov r1, #0 + add r2, r7, #0 + mov r3, #4 + bl FUN_0200AD38 + ldr r0, [r5, #0x2c] + ldr r1, [r5, #0x30] + ldr r2, [r5, #0x5c] + bl FUN_0200B7B8 + mov r0, #0 + ldr r1, [r5, #0x30] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xa4 + sub r3, r1, r0 + str r6, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7D18 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, #0x30] + add r0, r4, #0 + bl FUN_0201BDE0 + add r0, sp, #0x18 + ldrb r0, [r0, #0x10] + add r0, #0x18 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + str r6, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0xc1 + lsl r0, r0, #0xa + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + ldr r2, [r5, #0x54] + add r0, r4, #0 + mov r3, #4 + bl FUN_0201BDE0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r5, #0x2c] + ldr r2, [sp, #0x10] + mov r1, #0 + mov r3, #4 + bl FUN_0200AD38 + ldr r0, [r5, #0x2c] + ldr r1, [r5, #0x30] + ldr r2, [r5, #0x5c] + bl FUN_0200B7B8 + mov r0, #0 + ldr r1, [r5, #0x30] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xa4 + sub r3, r1, r0 + str r6, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7D18 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, #0x30] + add r0, r4, #0 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_020191D0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021D7D18: .word 0x00010200 + thumb_func_end MOD74_021D7C10 + + thumb_func_start MOD74_021D7D1C +MOD74_021D7D1C: ; 0x021D7D1C + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r0, #0 + ldrb r1, [r4, #0xa] + ldr r0, [r4, #0x28] + ldr r2, [r4, #0x30] + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r4, #0x30] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xc0 + sub r3, r1, r0 + mov r0, #8 + str r0, [sp] + mov r1, #0 + lsr r5, r3, #0x1f + add r5, r3, r5 + ldr r0, _021D7E94 ; =0x000F0200 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x30] + add r0, #0x6c + asr r3, r5, #1 + bl FUN_0201BDE0 + ldrb r1, [r4, #0xa] + ldr r0, [r4, #0x28] + ldr r2, [r4, #0x30] + add r1, r1, #3 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r0, #0xc1 + str r1, [sp, #4] + lsl r0, r0, #0xa + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x30] + add r0, #0x7c + add r3, r1, #0 + bl FUN_0201BDE0 + ldrb r1, [r4, #0xa] + ldr r0, [r4, #0x28] + ldr r2, [r4, #0x30] + add r1, r1, #6 + bl FUN_0200A8E0 + mov r0, #3 + str r0, [sp] + mov r1, #0 + mov r0, #0xc1 + str r1, [sp, #4] + lsl r0, r0, #0xa + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x30] + add r0, #0x8c + add r3, r1, #0 + bl FUN_0201BDE0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _021D7DB8 + cmp r0, #1 + beq _021D7DDE + cmp r0, #2 + beq _021D7E04 + add sp, #0x10 + pop {r3, r4, r5, pc} +_021D7DB8: + add r1, r4, #0 + mov r2, #0 + add r0, r4, #0 + add r1, #0x9c + mov r3, #0x35 + str r2, [sp] + bl MOD74_021D7C10 + mov r0, #3 + str r0, [sp] + add r0, r4, #0 + add r4, #0xac + add r1, r4, #0 + mov r2, #1 + mov r3, #0x37 + bl MOD74_021D7C10 + add sp, #0x10 + pop {r3, r4, r5, pc} +_021D7DDE: + mov r0, #0 + add r1, r4, #0 + str r0, [sp] + add r0, r4, #0 + add r1, #0x9c + mov r2, #2 + mov r3, #0x39 + bl MOD74_021D7C10 + add r0, r4, #0 + add r4, #0xac + mov r2, #3 + add r1, r4, #0 + mov r3, #0x3b + str r2, [sp] + bl MOD74_021D7C10 + add sp, #0x10 + pop {r3, r4, r5, pc} +_021D7E04: + ldr r0, [r4, #0x28] + ldr r2, [r4, #0x30] + mov r1, #0xc + bl FUN_0200A8E0 + mov r0, #0xa + str r0, [sp] + mov r1, #0 + mov r0, #0xc1 + str r1, [sp, #4] + lsl r0, r0, #0xa + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x30] + add r0, #0x9c + mov r3, #4 + bl FUN_0201BDE0 + ldr r0, [r4, #0x20] + mov r1, #0 + bl FUN_0202A444 + mov r1, #0 + add r2, r0, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4, #0x2c] + mov r3, #2 + bl FUN_0200AD38 + ldr r0, [r4, #0x2c] + ldr r1, [r4, #0x30] + ldr r2, [r4, #0x60] + bl FUN_0200B7B8 + mov r0, #0 + ldr r1, [r4, #0x30] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0x40 + sub r1, r1, r0 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r3, r0, #1 + mov r0, #0xa + str r0, [sp] + mov r1, #0 + ldr r0, _021D7E98 ; =0x00050600 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x30] + add r3, #0x40 + add r0, #0x9c + bl FUN_0201BDE0 + mov r0, #3 + str r0, [sp] + add r0, r4, #0 + add r4, #0xac + add r1, r4, #0 + mov r2, #4 + mov r3, #0x3d + bl MOD74_021D7C10 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D7E94: .word 0x000F0200 +_021D7E98: .word 0x00050600 + thumb_func_end MOD74_021D7D1C + + thumb_func_start MOD74_021D7E9C +MOD74_021D7E9C: ; 0x021D7E9C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + ldr r0, [r7, #0x24] + ldr r1, [r7] + bl FUN_0202A878 + str r0, [sp] + ldr r5, [sp] + mov r0, #0 + add r4, r7, #0 + str r0, [sp, #4] + add r4, #0xbc + add r6, r5, #0 +_021D7EB8: + add r0, r5, #0 + add r0, #0x20 + ldrb r0, [r0] + add r1, r4, #0 + add r1, #8 + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + strb r0, [r4, #4] + ldrb r0, [r5, #0x12] + mov r2, #8 + strb r0, [r4, #5] + ldrb r0, [r5, #0x13] + strb r0, [r4, #6] + add r0, r5, #0 + add r0, #0x20 + ldrb r0, [r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + strb r0, [r4, #7] + add r0, r5, #0 + add r0, #0x18 + bl MI_CpuCopy8 + ldr r1, [r7] + mov r0, #8 + bl FUN_020219F4 + str r0, [r4] + ldrb r0, [r4, #7] + cmp r0, #0 + ldr r0, [r4] + beq _021D7F06 + ldrb r1, [r4, #4] + lsl r1, r1, #2 + add r1, r7, r1 + ldr r1, [r1, #0x64] + bl FUN_02021A74 + b _021D7F0C +_021D7F06: + add r1, r6, #0 + bl FUN_02021E28 +_021D7F0C: + ldr r0, [sp, #4] + add r4, #0x10 + add r0, r0, #1 + add r5, #0x22 + add r6, #0x22 + str r0, [sp, #4] + cmp r0, #0x1e + blt _021D7EB8 + ldr r0, [sp] + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD74_021D7E9C + + thumb_func_start MOD74_021D7F28 +MOD74_021D7F28: ; 0x021D7F28 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021D7F2E: + add r0, r5, #0 + add r0, #0xbc + ldr r0, [r0] + bl FUN_02021A20 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #0x1e + blt _021D7F2E + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD74_021D7F28 + + thumb_func_start MOD74_021D7F44 +MOD74_021D7F44: ; 0x021D7F44 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + add r0, r1, #0 + mov r1, #0 + add r5, r2, #0 + add r4, r3, #0 + bl FUN_02019620 + cmp r4, #8 + blo _021D7F8C + mov r0, #2 + str r0, [sp, #0x18] + mov r0, #0 + add r1, r5, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0x28 + sub r0, r1, r0 + lsr r3, r0, #1 + mov r0, #0x34 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7FFC ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x14] + add r2, r5, #0 + add r3, #0xa0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + b _021D7F90 +_021D7F8C: + mov r0, #3 + str r0, [sp, #0x18] +_021D7F90: + lsl r0, r4, #1 + add r0, r4, r0 + str r0, [sp, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x18] + cmp r0, #0 + ble _021D7FF0 + ldr r7, [sp, #0x20] + mov r6, #4 +_021D7FA4: + mov r4, #0 + add r5, r4, #0 +_021D7FA8: + ldr r0, [sp, #0x1c] + add r1, r4, r7 + add r0, r0, r1 + lsl r1, r0, #4 + ldr r0, [sp, #0x10] + add r2, r0, r1 + ldrb r0, [r2, #4] + cmp r0, #0 + beq _021D7FBE + ldr r1, _021D8000 ; =0x000B0C00 + b _021D7FC0 +_021D7FBE: + ldr r1, _021D8004 ; =0x00090A00 +_021D7FC0: + str r6, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + ldr r2, [r2] + mov r1, #0 + add r3, r5, #0 + bl FUN_0201BDE0 + add r4, r4, #1 + add r5, #0x48 + cmp r4, #3 + blt _021D7FA8 + ldr r0, [sp, #0x20] + add r7, r7, #3 + add r1, r0, #1 + ldr r0, [sp, #0x18] + add r6, #0x18 + str r1, [sp, #0x20] + cmp r1, r0 + blt _021D7FA4 +_021D7FF0: + ldr r0, [sp, #0x14] + bl FUN_020191D0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_021D7FFC: .word 0x00010200 +_021D8000: .word 0x000B0C00 +_021D8004: .word 0x00090A00 + thumb_func_end MOD74_021D7F44 + + thumb_func_start MOD74_021D8008 +MOD74_021D8008: ; 0x021D8008 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4, #0x24] + add r1, sp, #0x10 + bl FUN_0202A864 + ldr r0, [r4, #0x30] + bl FUN_02021A4C + mov r1, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + add r2, sp, #0x10 + ldrb r2, [r2] + ldr r0, [r4, #0x2c] + mov r3, #2 + bl FUN_0200AD38 + mov r0, #2 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + add r2, sp, #0x10 + ldrb r2, [r2, #1] + ldr r0, [r4, #0x2c] + mov r3, #3 + bl FUN_0200AD38 + ldr r0, [r4, #0x2c] + ldr r1, [r4, #0x30] + ldr r2, [r4, #0x38] + bl FUN_0200B7B8 + mov r0, #0 + ldr r1, [r4, #0x30] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xc0 + sub r3, r1, r0 + mov r0, #4 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D80CC ; =0x000F0200 + lsr r5, r3, #0x1f + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + add r0, r4, #0 + add r5, r3, r5 + ldr r2, [r4, #0x30] + add r0, #0x6c + asr r3, r5, #1 + bl FUN_0201BDE0 + ldrb r1, [r4, #0xa] + ldr r0, [r4, #0x28] + ldr r2, [r4, #0x30] + add r1, #0x10 + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r4, #0x30] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xc0 + sub r3, r1, r0 + mov r0, #0x14 + str r0, [sp] + mov r1, #0 + lsr r5, r3, #0x1f + add r5, r3, r5 + ldr r0, _021D80CC ; =0x000F0200 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x30] + add r0, #0x6c + asr r3, r5, #1 + bl FUN_0201BDE0 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + add r0, r4, #0 + add r1, r4, #0 + ldr r2, [r4, #0x34] + add r0, #0xbc + add r1, #0x7c + bl MOD74_021D7F44 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_021D80CC: .word 0x000F0200 + thumb_func_end MOD74_021D8008 + + thumb_func_start MOD74_021D80D0 +MOD74_021D80D0: ; 0x021D80D0 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r0, #0 + ldrb r2, [r4, #0xb] + ldrb r3, [r4, #0xc] + add r0, #0xbc + lsl r1, r2, #1 + add r1, r2, r1 + add r1, r3, r1 + lsl r1, r1, #4 + add r5, r0, r1 + ldrb r2, [r5, #5] + cmp r2, #0 + bne _021D8108 + mov r0, #4 + str r0, [sp] + mov r1, #0 + ldr r0, _021D8188 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x48] + add r0, #0x8c + add r3, r1, #0 + bl FUN_0201BDE0 + b _021D8172 +_021D8108: + ldrb r0, [r5, #6] + cmp r0, #0 + ldr r0, [r4, #0x2c] + bne _021D813C + mov r1, #0 + bl FUN_0200B4A0 + ldr r0, [r4, #0x2c] + ldr r1, [r4, #0x30] + ldr r2, [r4, #0x44] + bl FUN_0200B7B8 + mov r0, #4 + str r0, [sp] + mov r1, #0 + ldr r0, _021D8188 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x30] + add r0, #0x8c + add r3, r1, #0 + bl FUN_0201BDE0 + b _021D8172 +_021D813C: + mov r1, #0 + bl FUN_0200B4A0 + ldrb r2, [r5, #5] + ldrb r3, [r5, #6] + ldr r0, [r4, #0x2c] + mov r1, #1 + bl FUN_0200B4D8 + ldr r0, [r4, #0x2c] + ldr r1, [r4, #0x30] + ldr r2, [r4, #0x40] + bl FUN_0200B7B8 + mov r0, #4 + str r0, [sp] + mov r1, #0 + ldr r0, _021D8188 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x30] + add r0, #0x8c + add r3, r1, #0 + bl FUN_0201BDE0 +_021D8172: + add r0, r4, #0 + add r0, #0x8c + bl FUN_020191D0 + add r0, r4, #0 + mov r1, #0 + bl MOD74_021D8388 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D8188: .word 0x00010200 + thumb_func_end MOD74_021D80D0 + + thumb_func_start MOD74_021D818C +MOD74_021D818C: ; 0x021D818C + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r0, #0 + ldrb r2, [r4, #0xb] + ldrb r3, [r4, #0xc] + add r0, #0xbc + lsl r1, r2, #1 + add r1, r2, r1 + add r1, r3, r1 + lsl r1, r1, #4 + add r0, r0, r1 + ldr r1, [r4] + add r0, #8 + bl FUN_020137D4 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x8c + mov r1, #0 + bl FUN_02019620 + mov r0, #4 + str r0, [sp] + mov r1, #0 + ldr r0, _021D81DC ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r4, #0x8c + add r0, r4, #0 + add r2, r5, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D81DC: .word 0x00010200 + thumb_func_end MOD74_021D818C + + thumb_func_start MOD74_021D81E0 +MOD74_021D81E0: ; 0x021D81E0 + push {r4, lr} + add r4, r0, #0 + add r0, #0x8c + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x8c + bl FUN_02019570 + add r0, r4, #0 + mov r1, #1 + bl MOD74_021D8388 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD74_021D81E0 + + thumb_func_start MOD74_021D8200 +MOD74_021D8200: ; 0x021D8200 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x50 + add r4, r0, #0 + ldr r1, [r4] + mov r0, #0x20 + bl FUN_0201C24C + ldr r0, [r4] + bl FUN_0200BB14 + mov r1, #0xa7 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + bl FUN_0200BB34 + mov r7, #0x2a + lsl r7, r7, #4 + add r2, sp, #0x30 + ldr r3, _021D82A4 ; =0x021D84F8 + 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, _021D82A8 ; =0x021D84B0 + stmia r2!, {r0, r1} + add r3, sp, #0x1c + 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, #4 + bl FUN_0200BBF0 + ldr r0, [r4] + bl FUN_0200A064 + ldr r0, [r4] + bl FUN_0200A06C + ldr r5, _021D82AC ; =0x021D84DC + 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] + sub r1, r7, #4 + str r0, [r3] + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + bl FUN_0200BD20 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + add sp, #0x50 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D82A4: .word 0x021D84F8 +_021D82A8: .word 0x021D84B0 +_021D82AC: .word 0x021D84DC + thumb_func_end MOD74_021D8200 + + thumb_func_start MOD74_021D82B0 +MOD74_021D82B0: ; 0x021D82B0 + push {r4, lr} + mov r1, #0xa7 + add r4, r0, #0 + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + bl FUN_0200BCE0 + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200BD04 + bl FUN_0201C29C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD74_021D82B0 + + thumb_func_start MOD74_021D82D4 +MOD74_021D82D4: ; 0x021D82D4 + push {r3, lr} + mov r1, #0x2a + lsl r1, r1, #4 + ldr r0, [r0, r1] + cmp r0, #0 + beq _021D82E4 + bl FUN_0200BC1C +_021D82E4: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD74_021D82D4 + + thumb_func_start MOD74_021D82E8 +MOD74_021D82E8: ; 0x021D82E8 + ldr r3, _021D82EC ; =0x0200BC31 + bx r3 + .align 2, 0 +_021D82EC: .word 0x0200BC31 + thumb_func_end MOD74_021D82E8 + + thumb_func_start MOD74_021D82F0 +MOD74_021D82F0: ; 0x021D82F0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r6, _021D8368 ; =0x021D85C4 + mov r7, #0 + add r4, r5, #0 +_021D82FA: + mov r0, #0xa7 + mov r1, #0x2a + lsl r0, r0, #2 + lsl r1, r1, #4 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + add r2, r6, #0 + bl FUN_0200BE38 + mov r1, #0xa9 + lsl r1, r1, #2 + str r0, [r4, r1] + add r7, r7, #1 + add r6, #0x28 + add r4, r4, #4 + cmp r7, #4 + blt _021D82FA + add r0, r1, #0 + add r0, #8 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0xaa + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0xa9 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0xab + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x2b + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0xaa + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #3 + bl FUN_02020238 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8368: .word 0x021D85C4 + thumb_func_end MOD74_021D82F0 + + thumb_func_start MOD74_021D836C +MOD74_021D836C: ; 0x021D836C + push {r4, r5, r6, lr} + mov r6, #0xa9 + add r5, r0, #0 + mov r4, #0 + lsl r6, r6, #2 +_021D8376: + ldr r0, [r5, r6] + bl FUN_0200BC14 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021D8376 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD74_021D836C + + thumb_func_start MOD74_021D8388 +MOD74_021D8388: ; 0x021D8388 + push {r3, r4, r5, lr} + add r5, r0, #0 + cmp r1, #0 + bne _021D83A0 + mov r0, #0xa9 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02020248 + mov r4, #0 + b _021D83AE +_021D83A0: + mov r0, #0xa9 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02020248 + mov r4, #1 +_021D83AE: + mov r0, #0xa9 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_020200BC + mov r0, #0xab + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_020200BC + mov r0, #0x2b + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_020200BC + pop {r3, r4, r5, pc} + thumb_func_end MOD74_021D8388 + + thumb_func_start MOD74_021D83D4 +MOD74_021D83D4: ; 0x021D83D4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrb r0, [r5, #0xe] + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r0, #8 + bne _021D8428 + mov r0, #0xaa + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + cmp r4, #0xa + bne _021D840E + mov r0, #0xaa + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02020208 + mov r0, #0xa9 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + b _021D8440 +_021D840E: + mov r0, #0xaa + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02020208 + mov r0, #0xa9 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + b _021D8440 +_021D8428: + mov r0, #0xa9 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0xaa + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 +_021D8440: + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _021D844C + cmp r0, #8 + beq _021D845A + b _021D8468 +_021D844C: + mov r0, #0xab + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + b _021D8480 +_021D845A: + mov r0, #0x2b + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + b _021D8480 +_021D8468: + mov r0, #0xab + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x2b + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 +_021D8480: + mov r1, #0x48 + mov r2, #0x18 + mov r0, #0xa9 + mul r1, r6 + mul r2, r7 + lsl r0, r0, #2 + add r1, #0x36 + add r2, #0x44 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r5, r0] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C6E4 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD74_021D83D4 + + .section .rodata + ; 0x021D84A0 + .incbin "baserom.nds", 0x2CF9C0, 0x1C4 + + .section .data + ; 0x021D8680 + .incbin "baserom.nds", 0x2CFBA0, 0x80 |