diff options
Diffstat (limited to 'arm9/modules')
-rw-r--r-- | arm9/modules/52/asm/module_52.s | 2 | ||||
-rw-r--r-- | arm9/modules/57/asm/module_57.s | 4303 |
2 files changed, 4305 insertions, 0 deletions
diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s index b40034fb..24ecbec1 100644 --- a/arm9/modules/52/asm/module_52.s +++ b/arm9/modules/52/asm/module_52.s @@ -245,4 +245,6 @@ _021D76C4: .word 0x00000BB8 .section .rodata ; 0x021D76C8 + .global MOD52_UNK_021D76C8 +MOD52_UNK_021D76C8: ; 0x021D76C8 .incbin "baserom.nds", 0x299BE8, 0x208 diff --git a/arm9/modules/57/asm/module_57.s b/arm9/modules/57/asm/module_57.s new file mode 100644 index 00000000..01b106a0 --- /dev/null +++ b/arm9/modules/57/asm/module_57.s @@ -0,0 +1,4303 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD57_021D74E0 +MOD57_021D74E0: ; 0x021D74E0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, 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, _021D76E8 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D76EC ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + mov r2, #0xa + mov r0, #3 + mov r1, #0x19 + lsl r2, r2, #0xe + bl FUN_0201681C + ldr r1, _021D76F0 ; =0x00003320 + add r0, r5, #0 + mov r2, #0x19 + bl FUN_02006268 + ldr r2, _021D76F0 ; =0x00003320 + mov r1, #0 + add r4, r0, #0 + blx Call_FillMemWithValue + add r0, r5, #0 + bl FUN_0200628C + add r1, r4, #0 + add r1, #0xb4 + str r0, [r1] + mov r0, #0x19 + bl FUN_02016B94 + str r0, [r4] + add r0, r4, #0 + bl MOD57_021D79AC + bl MOD57_021D7A14 + ldr r0, [r4] + bl MOD57_021D7B94 + add r0, r4, #0 + bl MOD57_021D7CA4 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + mov r1, #0 + mov r0, #0x38 + add r2, r1, #0 + bl FUN_0200433C + ldr r0, _021D76F4 ; =0x000032F0 + add r0, r4, r0 + bl MOD57_021D95A8 + ldr r0, _021D76F8 ; =0x00000695 + bl FUN_020054C8 + ldr r0, _021D76FC ; =0x000030E4 + add r0, r4, r0 + bl MOD57_021D9184 + mov r0, #0 + add r1, r0, #0 + add r2, sp, #0xc + add r5, r0, #0 + mov r6, #1 +_021D7598: + add r3, r4, #0 + add r3, #0xb4 + ldr r3, [r3] + add r3, r3, r1 + ldr r3, [r3, #0x48] + lsl r3, r3, #0x1f + asr r3, r3, #0x1f + beq _021D75AC + strb r6, [r2] + b _021D75AE +_021D75AC: + strb r5, [r2] +_021D75AE: + add r0, r0, #1 + add r1, r1, #4 + add r2, r2, #1 + cmp r0, #8 + blt _021D7598 + ldr r0, _021D76FC ; =0x000030E4 + add r1, sp, #0xc + add r0, r4, r0 + bl MOD57_021D92F4 + ldr r0, [r4] + add r1, r4, #4 + bl MOD57_021D899C + mov r5, #0 + mov r6, #1 +_021D75CE: + add r0, r4, #0 + add r0, #0xb4 + ldr r0, [r0] + ldrb r0, [r0, #2] + asr r0, r5 + tst r0, r6 + beq _021D75E4 + add r0, r4, #0 + add r1, r5, #0 + bl MOD57_021D8428 +_021D75E4: + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #8 + blo _021D75CE + ldr r0, [r4] + mov r1, #3 + bl FUN_02017CD0 + add r1, r4, #0 + add r1, #0xb4 + ldr r1, [r1] + add r0, r4, #4 + bl MOD57_021D89F0 + add r0, r4, #0 + add r0, #0xb4 + ldr r0, [r0] + ldrb r0, [r0, #4] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + beq _021D761E + ldr r2, _021D7700 ; =0x0000330C + add r0, r4, #0 + ldr r2, [r4, r2] + add r0, #0x54 + mov r1, #1 + bl MOD57_021D9144 +_021D761E: + mov r1, #0xc3 + mov r5, #0 + lsl r1, r1, #6 + str r5, [r4, r1] + ldr r0, _021D7704 ; =0x00003318 + sub r2, r5, #1 + strb r5, [r4, r0] + add r1, #0x14 + str r2, [r4, r1] + add r1, r0, #0 + sub r1, #0x2c + str r5, [r4, r1] + add r0, r0, #5 + ldr r7, _021D76FC ; =0x000030E4 + strb r5, [r4, r0] +_021D763C: + ldr r0, _021D7708 ; =0x00003310 + add r2, r4, r5 + mov r1, #0 + strb r1, [r2, r0] + add r0, r4, #0 + add r0, #0xb4 + ldr r1, [r0] + lsl r0, r5, #2 + add r1, #0x48 + ldr r0, [r1, r0] + lsl r1, r0, #0x1f + asr r1, r1, #0x1f + beq _021D76A8 + asr r0, r0, #1 + bl MOD57_021D870C + add r6, r0, #0 + cmp r6, #4 + bhi _021D7680 + bne _021D7670 + add r0, r4, r7 + add r1, r5, #0 + mov r2, #0 + bl MOD57_021D951C + b _021D7680 +_021D7670: + mov r2, #3 + sub r2, r2, r6 + lsl r2, r2, #0x18 + add r0, r4, r7 + add r1, r5, #0 + lsr r2, r2, #0x18 + bl MOD57_021D951C +_021D7680: + cmp r6, #3 + bne _021D7694 + lsl r0, r5, #2 + add r1, r4, r0 + ldr r0, _021D770C ; =0x00003260 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 + b _021D76A8 +_021D7694: + cmp r6, #4 + bne _021D76A8 + lsl r0, r5, #2 + add r1, r4, r0 + mov r0, #0xca + lsl r0, r0, #6 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 +_021D76A8: + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #8 + blo _021D763C + bl MOD57_021D8588 + ldr r0, _021D7710 ; =MOD57_021D848C + mov r1, #0 + bl FUN_02015F10 + bl FUN_02033F20 + mov r0, #1 + mov r1, #0x2a + bl FUN_020051EC + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x19 + mov r1, #3 + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D76E8: .word 0xFFFFE0FF +_021D76EC: .word 0x04001000 +_021D76F0: .word 0x00003320 +_021D76F4: .word 0x000032F0 +_021D76F8: .word 0x00000695 +_021D76FC: .word 0x000030E4 +_021D7700: .word 0x0000330C +_021D7704: .word 0x00003318 +_021D7708: .word 0x00003310 +_021D770C: .word 0x00003260 +_021D7710: .word MOD57_021D848C + thumb_func_end MOD57_021D74E0 + + thumb_func_start MOD57_021D7714 +MOD57_021D7714: ; 0x021D7714 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #4 + bhi _021D7744 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7732: ; jump table + .short _021D773C - _021D7732 - 2 ; case 0 + .short _021D774C - _021D7732 - 2 ; case 1 + .short _021D786A - _021D7732 - 2 ; case 2 + .short _021D7878 - _021D7732 - 2 ; case 3 + .short _021D7886 - _021D7732 - 2 ; case 4 +_021D773C: + bl FUN_0200E308 + cmp r0, #0 + bne _021D7746 +_021D7744: + b _021D790C +_021D7746: + mov r0, #1 + str r0, [r5] + b _021D790C +_021D774C: + bl MOD57_021D81F8 + add r6, r0, #0 + cmp r6, #1 + bne _021D77CA + ldr r0, _021D7920 ; =0x000030D4 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021D779E + ldr r2, _021D7924 ; =0x000032EC + mov r1, #1 + add r0, r2, #0 + str r1, [r4, r2] + add r0, #0x31 + sub r2, #0x4c + strb r1, [r4, r0] + ldr r0, [r4, r2] + bl FUN_020200A0 + ldr r0, _021D7928 ; =0x000032A0 + mov r1, #1 + ldr r0, [r4, r0] + bl FUN_020200BC + ldr r0, _021D7928 ; =0x000032A0 + mov r1, #0xa + ldr r0, [r4, r0] + bl FUN_02020130 + ldr r0, _021D792C ; =0x0000331A + mov r2, #0 + strb r2, [r4, r0] + add r1, r0, #2 + strb r2, [r4, r1] + add r0, r0, #1 + strb r2, [r4, r0] + ldr r0, _021D7930 ; =0x000030D8 + str r2, [r4, r0] + mov r0, #4 + str r0, [r5] + b _021D7856 +_021D779E: + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + add r0, r4, #0 + add r0, #0xb4 + ldr r1, [r0] + lsl r0, r5, #2 + add r1, #0x48 + ldr r0, [r1, r0] + lsl r1, r0, #0x1f + asr r1, r1, #0x1f + beq _021D7856 + asr r0, r0, #1 + bl MOD57_021D870C + add r2, r0, #0 + ldr r0, _021D7934 ; =0x000032F0 + add r1, r5, #0 + add r0, r4, r0 + bl MOD57_021D95BC + b _021D7856 +_021D77CA: + cmp r6, #2 + ldr r1, _021D7924 ; =0x000032EC + bne _021D77F0 + ldr r0, [r4, r1] + cmp r0, #0 + beq _021D77E8 + ldr r0, _021D7920 ; =0x000030D4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D77E8 + mov r0, #0 + str r0, [r4, r1] + mov r0, #2 + add r1, #0x31 + strb r0, [r4, r1] +_021D77E8: + add r0, r4, #0 + bl MOD57_021D82BC + b _021D7856 +_021D77F0: + ldr r0, [r4, r1] + cmp r0, #0 + beq _021D780A + add r0, r1, #0 + add r0, #0x31 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021D780A + mov r0, #0 + str r0, [r4, r1] + mov r0, #2 + add r1, #0x31 + strb r0, [r4, r1] +_021D780A: + add r0, r4, #0 + add r0, #0xb4 + ldr r0, [r0] + ldrb r0, [r0, #4] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _021D7822 + mov r0, #0x33 + lsl r0, r0, #8 + add r0, r4, r0 + bl MOD57_021D874C +_021D7822: + cmp r6, #3 + bne _021D7832 + ldr r0, _021D792C ; =0x0000331A + mov r1, #0 + strb r1, [r4, r0] + mov r0, #3 + str r0, [r5] + b _021D7856 +_021D7832: + cmp r6, #4 + bne _021D7856 + ldr r0, _021D7938 ; =0x000005DC + bl FUN_020054C8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #0x19 + str r1, [sp, #8] + mov r1, #4 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + mov r0, #2 + str r0, [r5] +_021D7856: + add r1, r4, #0 + add r1, #0xb4 + ldr r1, [r1] + add r0, r4, #0 + ldrb r1, [r1, #4] + lsl r1, r1, #0x1e + lsr r1, r1, #0x1f + bl MOD57_021D88A4 + b _021D790C +_021D786A: + bl FUN_0200E308 + cmp r0, #0 + beq _021D790C + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D7878: + bl MOD57_021D7F20 + cmp r0, #0 + beq _021D790C + mov r0, #1 + str r0, [r5] + b _021D790C +_021D7886: + ldr r1, _021D793C ; =0x0000331D + ldrb r1, [r4, r1] + cmp r1, #0 + bne _021D78EA + bl MOD57_021D81F8 + cmp r0, #1 + bne _021D78B8 + ldr r0, _021D7920 ; =0x000030D4 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021D78EA + ldr r1, _021D7924 ; =0x000032EC + mov r2, #1 + add r0, r1, #0 + str r2, [r4, r1] + add r0, #0x31 + strb r2, [r4, r0] + add r0, r1, #0 + mov r2, #0 + add r0, #0x30 + strb r2, [r4, r0] + add r1, #0x2f + strb r2, [r4, r1] + b _021D78EA +_021D78B8: + cmp r0, #2 + bne _021D78D8 + ldr r1, _021D7924 ; =0x000032EC + ldr r0, [r4, r1] + cmp r0, #0 + beq _021D78EA + ldr r0, _021D7920 ; =0x000030D4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D78EA + mov r0, #0 + str r0, [r4, r1] + mov r0, #2 + add r1, #0x31 + strb r0, [r4, r1] + b _021D78EA +_021D78D8: + ldr r0, _021D7924 ; =0x000032EC + ldr r1, [r4, r0] + cmp r1, #0 + beq _021D78EA + mov r1, #0 + str r1, [r4, r0] + mov r1, #2 + add r0, #0x31 + strb r1, [r4, r0] +_021D78EA: + ldr r0, _021D7930 ; =0x000030D8 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021D78FC + add r0, r4, #0 + bl MOD57_021D80F8 + ldr r1, _021D7930 ; =0x000030D8 + str r0, [r4, r1] +_021D78FC: + ldr r0, _021D7930 ; =0x000030D8 + ldr r1, [r4, r0] + cmp r1, #0 + beq _021D790C + mov r1, #0 + str r1, [r4, r0] + mov r0, #1 + str r0, [r5] +_021D790C: + add r0, r4, #0 + bl MOD57_021D85F4 + ldr r0, _021D7940 ; =0x000030E4 + ldr r0, [r4, r0] + bl FUN_0201FDEC + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021D7920: .word 0x000030D4 +_021D7924: .word 0x000032EC +_021D7928: .word 0x000032A0 +_021D792C: .word 0x0000331A +_021D7930: .word 0x000030D8 +_021D7934: .word 0x000032F0 +_021D7938: .word 0x000005DC +_021D793C: .word 0x0000331D +_021D7940: .word 0x000030E4 + thumb_func_end MOD57_021D7714 + + thumb_func_start MOD57_021D7944 +MOD57_021D7944: ; 0x021D7944 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + bl MOD57_021D8588 + add r0, r4, #0 + bl MOD57_021D79F4 + ldr r0, _021D79A0 ; =0x000030E4 + add r0, r4, r0 + bl MOD57_021D94BC + ldr r0, _021D79A4 ; =0x000030B8 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, _021D79A8 ; =0x000032F8 + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r4, #4 + bl MOD57_021D89D4 + ldr r0, [r4] + bl MOD57_021D7EDC + bl FUN_0201CD04 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0x19 + bl FUN_020168D0 + mov r0, #1 + mov r1, #0x7f + bl FUN_020051EC + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D79A0: .word 0x000030E4 +_021D79A4: .word 0x000030B8 +_021D79A8: .word 0x000032F8 + thumb_func_end MOD57_021D7944 + + thumb_func_start MOD57_021D79AC +MOD57_021D79AC: ; 0x021D79AC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #4 + mov r1, #0x19 + bl FUN_020219F4 + ldr r1, _021D79E8 ; =0x00003308 + str r0, [r5, r1] + mov r0, #5 + mov r1, #0x19 + bl FUN_020219F4 + ldr r1, _021D79EC ; =0x0000330C + ldr r2, _021D79F0 ; =0x0000022D + str r0, [r5, r1] + mov r0, #0 + mov r1, #0x1a + mov r3, #0x19 + bl FUN_0200A86C + ldr r2, _021D79EC ; =0x0000330C + add r4, r0, #0 + ldr r2, [r5, r2] + mov r1, #0xb + bl FUN_0200A8E0 + add r0, r4, #0 + bl FUN_0200A8B8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D79E8: .word 0x00003308 +_021D79EC: .word 0x0000330C +_021D79F0: .word 0x0000022D + thumb_func_end MOD57_021D79AC + + thumb_func_start MOD57_021D79F4 +MOD57_021D79F4: ; 0x021D79F4 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021D7A0C ; =0x00003308 + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _021D7A10 ; =0x0000330C + ldr r0, [r4, r0] + bl FUN_02021A20 + pop {r4, pc} + nop +_021D7A0C: .word 0x00003308 +_021D7A10: .word 0x0000330C + thumb_func_end MOD57_021D79F4 + + thumb_func_start MOD57_021D7A14 +MOD57_021D7A14: ; 0x021D7A14 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D7A30 ; =0x021D9800 + add r3, sp, #0 + mov r2, #5 +_021D7A1E: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7A1E + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D7A30: .word 0x021D9800 + thumb_func_end MOD57_021D7A14 + + thumb_func_start MOD57_021D7A34 +MOD57_021D7A34: ; 0x021D7A34 + push {r3, r4, r5, lr} + cmp r1, #0 + beq _021D7AB6 + cmp r0, #5 + bhi _021D7AC4 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7A4A: ; jump table + .short _021D7A56 - _021D7A4A - 2 ; case 0 + .short _021D7A66 - _021D7A4A - 2 ; case 1 + .short _021D7A76 - _021D7A4A - 2 ; case 2 + .short _021D7A86 - _021D7A4A - 2 ; case 3 + .short _021D7A96 - _021D7A4A - 2 ; case 4 + .short _021D7AA6 - _021D7A4A - 2 ; case 5 +_021D7A56: + mov r0, #0x33 + mov r1, #0 + add r2, sp, #0 + mov r3, #0x19 + bl FUN_02006C08 + add r4, r0, #0 + b _021D7AC4 +_021D7A66: + mov r0, #0x33 + mov r1, #1 + add r2, sp, #0 + mov r3, #0x19 + bl FUN_02006C08 + add r4, r0, #0 + b _021D7AC4 +_021D7A76: + mov r0, #0x33 + mov r1, #2 + add r2, sp, #0 + mov r3, #0x19 + bl FUN_02006C08 + add r4, r0, #0 + b _021D7AC4 +_021D7A86: + mov r0, #0x33 + mov r1, #3 + add r2, sp, #0 + mov r3, #0x19 + bl FUN_02006C08 + add r4, r0, #0 + b _021D7AC4 +_021D7A96: + mov r0, #0x33 + mov r1, #4 + add r2, sp, #0 + mov r3, #0x19 + bl FUN_02006C08 + add r4, r0, #0 + b _021D7AC4 +_021D7AA6: + mov r0, #0x33 + mov r1, #5 + add r2, sp, #0 + mov r3, #0x19 + bl FUN_02006C08 + add r4, r0, #0 + b _021D7AC4 +_021D7AB6: + mov r0, #0x33 + mov r1, #6 + add r2, sp, #0 + mov r3, #0x19 + bl FUN_02006C08 + add r4, r0, #0 +_021D7AC4: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0, #0xc] + lsl r1, r1, #8 + blx DC_FlushRange + ldr r0, [sp] + mov r1, #0x20 + ldr r5, [r0, #0xc] + mov r2, #0x60 + add r0, r5, #0 + add r0, #0x20 + blx GXS_LoadBGPltt + mov r1, #0x1e + lsl r1, r1, #4 + add r0, r5, r1 + mov r2, #0x20 + blx GXS_LoadBGPltt + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + thumb_func_end MOD57_021D7A34 + + thumb_func_start MOD57_021D7AF4 +MOD57_021D7AF4: ; 0x021D7AF4 + push {r3, r4, lr} + sub sp, #4 + cmp r0, #0xa + beq _021D7B02 + cmp r0, #0xb + beq _021D7B12 + b _021D7B22 +_021D7B02: + mov r0, #0x33 + mov r1, #7 + add r2, sp, #0 + mov r3, #0x19 + bl FUN_02006C08 + add r4, r0, #0 + b _021D7B30 +_021D7B12: + mov r0, #0x33 + mov r1, #8 + add r2, sp, #0 + mov r3, #0x19 + bl FUN_02006C08 + add r4, r0, #0 + b _021D7B30 +_021D7B22: + mov r0, #0x33 + mov r1, #9 + add r2, sp, #0 + mov r3, #0x19 + bl FUN_02006C08 + add r4, r0, #0 +_021D7B30: + ldr r0, [sp] + mov r1, #0x20 + ldr r0, [r0, #0xc] + blx DC_FlushRange + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0, #0xc] + mov r2, #0x20 + blx GX_LoadBGPltt + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0, #0xc] + mov r2, #0x20 + blx GXS_LoadBGPltt + add r0, r4, #0 + bl FUN_02016A18 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD57_021D7AF4 + + thumb_func_start MOD57_021D7B5C +MOD57_021D7B5C: ; 0x021D7B5C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0x33 + mov r1, #0x29 + add r2, sp, #0 + mov r3, #0x19 + bl FUN_02006C08 + add r6, r0, #0 + ldr r0, [sp] + lsl r4, r4, #5 + ldr r5, [r0, #0xc] + mov r1, #0x20 + add r0, r5, r4 + blx DC_FlushRange + add r0, r5, r4 + mov r1, #0x80 + mov r2, #0x20 + blx GXS_LoadBGPltt + add r0, r6, #0 + bl FUN_02016A18 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD57_021D7B5C + + thumb_func_start MOD57_021D7B94 +MOD57_021D7B94: ; 0x021D7B94 + push {r4, r5, lr} + sub sp, #0x9c + ldr r2, _021D7C84 ; =0x04000304 + add r4, r0, #0 + ldrh r1, [r2] + ldr r0, _021D7C88 ; =0xFFFF7FFF + ldr r5, _021D7C8C ; =0x021D9764 + and r0, r1 + strh r0, [r2] + add r3, sp, #0x8c + 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, _021D7C90 ; =0x021D9774 + add r3, sp, #0x70 + 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, #7 + str r0, [r3] + add r0, r4, #0 + mov r3, #2 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #7 + bl FUN_02018744 + ldr r5, _021D7C94 ; =0x021D9790 + add r3, sp, #0x54 + 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, #5 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #5 + bl FUN_02018744 + ldr r5, _021D7C98 ; =0x021D97C8 + 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, #6 + str r0, [r3] + add r0, r4, #0 + mov r3, #1 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #6 + bl FUN_02018744 + ldr r5, _021D7C9C ; =0x021D97E4 + 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, #2 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + ldr r5, _021D7CA0 ; =0x021D97AC + 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, #3 + str r0, [r3] + add r0, r4, #0 + mov r3, #1 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + add sp, #0x9c + pop {r4, r5, pc} + .align 2, 0 +_021D7C84: .word 0x04000304 +_021D7C88: .word 0xFFFF7FFF +_021D7C8C: .word 0x021D9764 +_021D7C90: .word 0x021D9774 +_021D7C94: .word 0x021D9790 +_021D7C98: .word 0x021D97C8 +_021D7C9C: .word 0x021D97E4 +_021D7CA0: .word 0x021D97AC + thumb_func_end MOD57_021D7B94 + + thumb_func_start MOD57_021D7CA4 +MOD57_021D7CA4: ; 0x021D7CA4 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x33 + mov r1, #0 + add r2, sp, #0x14 + mov r3, #0x19 + bl FUN_02006C08 + add r5, r0, #0 + ldr r0, [sp, #0x14] + mov r1, #2 + ldr r0, [r0, #0xc] + lsl r1, r1, #8 + blx DC_FlushRange + ldr r0, [sp, #0x14] + mov r2, #2 + ldr r0, [r0, #0xc] + mov r1, #0 + lsl r2, r2, #8 + blx GXS_LoadBGPltt + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + add r0, #0xb4 + ldr r1, [r0] + ldrb r0, [r1, #3] + ldrb r1, [r1, #4] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1f + bl MOD57_021D7A34 + mov r0, #0x33 + mov r1, #0xa + add r2, sp, #0x10 + mov r3, #0x19 + bl FUN_02006C08 + add r5, r0, #0 + ldr r0, [sp, #0x10] + mov r1, #2 + ldr r0, [r0, #0xc] + lsl r1, r1, #8 + blx DC_FlushRange + ldr r0, [sp, #0x10] + mov r2, #2 + ldr r0, [r0, #0xc] + mov r1, #0 + lsl r2, r2, #8 + blx GX_LoadBGPltt + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + add r0, #0xb4 + ldr r0, [r0] + ldrb r0, [r0] + bl MOD57_021D7AF4 + add r0, r4, #0 + add r0, #0xb4 + ldr r0, [r0] + ldrb r1, [r0, #5] + cmp r1, #0xff + bne _021D7D9C + mov r2, #0 + mov r0, #0x33 + mov r1, #0x1b + mov r3, #0x19 + str r2, [sp] + bl FUN_02006C98 + ldr r1, _021D7ECC ; =0x000030B8 + str r0, [r4, r1] + ldr r0, [r4, r1] + cmp r0, #0 + bne _021D7D4C + bl ErrorHandling +_021D7D4C: + ldr r1, _021D7ECC ; =0x000030B8 + ldr r0, [r4, r1] + add r1, r1, #4 + add r1, r4, r1 + blx FUN_020B0030 + cmp r0, #0 + bne _021D7D60 + bl ErrorHandling +_021D7D60: + add r0, r4, #0 + add r0, #0xb4 + ldr r0, [r0] + ldr r3, _021D7ED0 ; =0x000032FC + ldrb r0, [r0, #4] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bne _021D7D86 + mov r0, #0x19 + str r0, [sp] + mov r0, #0x33 + mov r1, #0x23 + mov r2, #0 + add r3, r4, r3 + bl FUN_02006BDC + ldr r1, _021D7ED4 ; =0x000032F8 + str r0, [r4, r1] + b _021D7DF2 +_021D7D86: + mov r0, #0x19 + str r0, [sp] + mov r0, #0x33 + mov r1, #0x24 + mov r2, #0 + add r3, r4, r3 + bl FUN_02006BDC + ldr r1, _021D7ED4 ; =0x000032F8 + str r0, [r4, r1] + b _021D7DF2 +_021D7D9C: + lsl r3, r1, #2 + ldr r1, _021D7ED8 ; =0x021D9888 + mov r2, #0 + ldr r1, [r1, r3] + mov r0, #0x33 + mov r3, #0x19 + str r2, [sp] + bl FUN_02006C98 + ldr r1, _021D7ECC ; =0x000030B8 + str r0, [r4, r1] + ldr r0, [r4, r1] + cmp r0, #0 + bne _021D7DBC + bl ErrorHandling +_021D7DBC: + ldr r1, _021D7ECC ; =0x000030B8 + ldr r0, [r4, r1] + add r1, r1, #4 + add r1, r4, r1 + blx FUN_020B0030 + cmp r0, #0 + bne _021D7DD0 + bl ErrorHandling +_021D7DD0: + ldr r3, _021D7ED0 ; =0x000032FC + mov r0, #0x19 + str r0, [sp] + mov r0, #0x33 + mov r1, #0x2a + mov r2, #0 + add r3, r4, r3 + bl FUN_02006BDC + ldr r1, _021D7ED4 ; =0x000032F8 + str r0, [r4, r1] + add r0, r4, #0 + add r0, #0xb4 + ldr r0, [r0] + ldrb r0, [r0, #5] + bl MOD57_021D7B5C +_021D7DF2: + add r0, r4, #0 + bl MOD57_021D8690 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x19 + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x33 + mov r1, #0x17 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x19 + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x33 + mov r1, #0x1e + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x19 + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x33 + mov r1, #0x18 + mov r3, #5 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x19 + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x33 + mov r1, #0x20 + mov r3, #5 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0x19 + str r1, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x33 + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x19 + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x33 + mov r1, #0x21 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x19 + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x33 + mov r1, #0x1a + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x19 + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x33 + mov r1, #0x22 + mov r3, #3 + bl FUN_020068C8 + add r0, r4, #0 + add r0, #0xb4 + ldr r0, [r0] + add r4, #0xb8 + add r0, #0x68 + add r1, r4, #0 + bl MOD57_021D87DC + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_021D7ECC: .word 0x000030B8 +_021D7ED0: .word 0x000032FC +_021D7ED4: .word 0x000032F8 +_021D7ED8: .word 0x021D9888 + thumb_func_end MOD57_021D7CA4 + + thumb_func_start MOD57_021D7EDC +MOD57_021D7EDC: ; 0x021D7EDC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x1f + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #0x13 + mov r1, #0 + bl FUN_0201E74C + add r0, r4, #0 + mov r1, #7 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #3 + bl FUN_020178A0 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD57_021D7EDC + + thumb_func_start MOD57_021D7F20 +MOD57_021D7F20: ; 0x021D7F20 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + ldr r2, _021D80DC ; =0x0000331A + add r4, r0, #0 + ldrb r0, [r4, r2] + mov r5, #0 + cmp r0, #3 + bls _021D7F32 + b _021D8092 +_021D7F32: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7F3E: ; jump table + .short _021D7F46 - _021D7F3E - 2 ; case 0 + .short _021D7F74 - _021D7F3E - 2 ; case 1 + .short _021D7FB0 - _021D7F3E - 2 ; case 2 + .short _021D804C - _021D7F3E - 2 ; case 3 +_021D7F46: + mov r0, #8 + sub r2, #0x36 + str r0, [r4, r2] + ldr r1, _021D80E0 ; =0x000030C8 + lsl r2, r0, #9 + str r2, [r4, r1] + add r0, r1, #4 + str r2, [r4, r0] + ldr r0, [r4, r1] + add r0, #0x80 + str r0, [r4, r1] + add r0, r1, #4 + ldr r2, [r4, r0] + add r2, #0x80 + str r2, [r4, r0] + ldr r0, _021D80E4 ; =0x00000696 + bl FUN_020054C8 + ldr r0, _021D80DC ; =0x0000331A + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _021D8092 +_021D7F74: + add r0, r2, #0 + sub r0, #0x36 + ldr r3, [r4, r0] + ldr r1, _021D80E0 ; =0x000030C8 + mov r0, #0xc + mov r7, #2 + sub r0, r0, r3 + add r3, r7, #0 + ldr r6, [r4, r1] + lsl r3, r0 + sub r0, r6, r3 + str r0, [r4, r1] + ldr r0, [r4, r1] + cmp r0, #0 + bgt _021D7F9C + mov r0, #0x24 + str r0, [r4, r1] + ldrb r0, [r4, r2] + add r0, r0, #1 + strb r0, [r4, r2] +_021D7F9C: + ldr r0, _021D80E8 ; =0x000032E4 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #1 + bgt _021D8092 + mov r1, #1 + str r1, [r4, r0] + b _021D8092 +_021D7FB0: + mov r0, #0xc3 + lsl r0, r0, #6 + ldr r1, [r4, r0] + cmp r1, #0 + bne _021D8006 + mov r1, #1 + str r1, [r4, r0] + str r5, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + mov r0, #0x19 + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x33 + mov r1, #0x1f + mov r3, #6 + bl FUN_020068C8 + add r0, r4, #4 + add r1, r5, #0 + mov r2, #6 + bl MOD57_021D8FB8 + add r0, r4, #0 + bl MOD57_021D86E8 + ldr r0, [r4] + mov r1, #7 + bl FUN_02018744 + add r1, r4, #0 + add r1, #0xb4 + ldr r1, [r1] + add r0, r4, #4 + bl MOD57_021D8CF8 + add r2, r4, #0 + ldr r0, [r4] + mov r1, #7 + add r2, #0xb8 + bl MOD57_021D8830 + b _021D8042 +_021D8006: + str r5, [r4, r0] + str r5, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + mov r0, #0x19 + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x33 + mov r1, #0x1e + mov r3, #6 + bl FUN_020068C8 + add r0, r4, #4 + mov r1, #7 + mov r2, #0xa + bl MOD57_021D8FB8 + ldr r0, [r4] + mov r1, #7 + bl FUN_02018744 + add r0, r4, #0 + bl MOD57_021D8690 + add r1, r4, #0 + add r1, #0xb4 + ldr r1, [r1] + add r0, r4, #4 + bl MOD57_021D89F0 +_021D8042: + ldr r0, _021D80DC ; =0x0000331A + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + b _021D8092 +_021D804C: + add r0, r2, #0 + sub r0, #0x36 + ldr r0, [r4, r0] + add r1, r0, #1 + add r0, r2, #0 + sub r0, #0x36 + str r1, [r4, r0] + add r0, r2, #0 + sub r0, #0x36 + ldr r0, [r4, r0] + cmp r0, #8 + ble _021D806A + mov r0, #8 + sub r2, #0x36 + str r0, [r4, r2] +_021D806A: + ldr r2, _021D80E8 ; =0x000032E4 + ldr r3, _021D80E0 ; =0x000030C8 + ldr r6, [r4, r2] + mov r2, #0xc + mov r0, #2 + sub r2, r2, r6 + add r6, r0, #0 + ldr r1, [r4, r3] + lsl r6, r2 + add r1, r1, r6 + str r1, [r4, r3] + ldr r2, [r4, r3] + lsl r1, r0, #0xb + cmp r2, r1 + blt _021D8092 + str r1, [r4, r3] + str r1, [r4, r3] + add r0, r3, #4 + str r1, [r4, r0] + mov r5, #1 +_021D8092: + ldr r0, _021D80E0 ; =0x000030C8 + ldr r0, [r4, r0] + blx FX_Inv + add r6, r0, #0 + ldr r0, _021D80EC ; =0x000030CC + ldr r0, [r4, r0] + blx FX_Inv + mov r1, #0 + str r6, [sp, #0x10] + str r1, [sp, #0x14] + str r1, [sp, #0x18] + str r0, [sp, #0x1c] + blx OS_WaitVBlankIntr + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _021D80F0 ; =0x04001020 + add r1, sp, #0x10 + mov r2, #0x80 + mov r3, #0x60 + blx G2x_SetBGyAffine_ + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _021D80F4 ; =0x04001030 + add r1, sp, #0x10 + mov r2, #0x80 + mov r3, #0x60 + blx G2x_SetBGyAffine_ + add r0, r5, #0 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D80DC: .word 0x0000331A +_021D80E0: .word 0x000030C8 +_021D80E4: .word 0x00000696 +_021D80E8: .word 0x000032E4 +_021D80EC: .word 0x000030CC +_021D80F0: .word 0x04001020 +_021D80F4: .word 0x04001030 + thumb_func_end MOD57_021D7F20 + + thumb_func_start MOD57_021D80F8 +MOD57_021D80F8: ; 0x021D80F8 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r4, r0, #0 + ldr r0, _021D81E4 ; =0x0000331A + ldrb r1, [r4, r0] + cmp r1, #3 + bhi _021D81AE + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8112: ; jump table + .short _021D811A - _021D8112 - 2 ; case 0 + .short _021D8142 - _021D8112 - 2 ; case 1 + .short _021D8170 - _021D8112 - 2 ; case 2 + .short _021D81A8 - _021D8112 - 2 ; case 3 +_021D811A: + mov r2, #0 + sub r1, r0, #1 + strb r2, [r4, r1] + sub r1, r0, #2 + ldrb r1, [r4, r1] + cmp r1, #0 + bne _021D8134 + mov r2, #1 + ldr r1, _021D81E8 ; =0x000030D0 + lsl r2, r2, #0xc + str r2, [r4, r1] + mov r1, #1 + b _021D8136 +_021D8134: + mov r1, #2 +_021D8136: + strb r1, [r4, r0] + ldr r0, _021D81EC ; =0x00003318 + ldrb r0, [r4, r0] + bl MOD57_021D8894 + b _021D81AE +_021D8142: + sub r1, r0, #1 + ldrb r2, [r4, r1] + add r1, r2, #0 + add r3, r1, #1 + sub r1, r0, #1 + strb r3, [r4, r1] + ldr r3, _021D81E8 ; =0x000030D0 + lsl r5, r2, #2 + ldr r2, _021D81F0 ; =0x021D9850 + ldr r1, [r4, r3] + ldr r2, [r2, r5] + sub r1, r1, r2 + str r1, [r4, r3] + sub r1, r0, #1 + ldrb r1, [r4, r1] + cmp r1, #0xe + bne _021D81AE + mov r2, #1 + sub r1, r0, #2 + strb r2, [r4, r1] + mov r1, #3 + strb r1, [r4, r0] + b _021D81AE +_021D8170: + sub r1, r0, #1 + ldrb r2, [r4, r1] + ldr r5, _021D81E8 ; =0x000030D0 + add r1, r2, #0 + add r3, r1, #1 + sub r1, r0, #1 + strb r3, [r4, r1] + mov r3, #0xd + sub r2, r3, r2 + lsl r3, r2, #2 + ldr r2, _021D81F0 ; =0x021D9850 + ldr r1, [r4, r5] + ldr r2, [r2, r3] + add r1, r1, r2 + str r1, [r4, r5] + sub r1, r0, #1 + ldrb r1, [r4, r1] + cmp r1, #0xe + bne _021D81AE + mov r2, #0 + sub r1, r0, #2 + strb r2, [r4, r1] + mov r1, #1 + lsl r1, r1, #0xc + str r1, [r4, r5] + mov r1, #3 + strb r1, [r4, r0] + b _021D81AE +_021D81A8: + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D81AE: + mov r0, #1 + lsl r0, r0, #0xc + blx FX_Inv + add r5, r0, #0 + ldr r0, _021D81E8 ; =0x000030D0 + ldr r0, [r4, r0] + blx FX_Inv + mov r1, #0 + str r5, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + blx OS_WaitVBlankIntr + mov r3, #0 + str r3, [sp] + ldr r0, _021D81F4 ; =0x04000030 + add r1, sp, #8 + mov r2, #0x80 + str r3, [sp, #4] + blx G2x_SetBGyAffine_ + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D81E4: .word 0x0000331A +_021D81E8: .word 0x000030D0 +_021D81EC: .word 0x00003318 +_021D81F0: .word 0x021D9850 +_021D81F4: .word 0x04000030 + thumb_func_end MOD57_021D80F8 + + thumb_func_start MOD57_021D81F8 +MOD57_021D81F8: ; 0x021D81F8 + push {r4, r5, r6, lr} + mov r6, #0 + add r5, r0, #0 + ldr r0, _021D82A8 ; =0x000030D4 + sub r1, r6, #1 + str r1, [r5, r0] + ldr r1, _021D82AC ; =0x021C48F8 + add r4, r6, #0 + ldrh r1, [r1, #0x20] + cmp r1, #0 + beq _021D8214 + mov r1, #1 + sub r0, #0x10 + str r1, [r5, r0] +_021D8214: + add r1, r5, #0 + add r1, #0xb4 + ldr r1, [r1] + ldr r2, _021D82B0 ; =0x021D9754 + ldrb r1, [r1, #4] + ldr r0, [r5] + lsl r1, r1, #0x1f + lsr r1, r1, #0x1f + lsl r3, r1, #3 + ldr r1, _021D82B4 ; =0x00003318 + add r2, r2, r3 + ldrb r1, [r5, r1] + lsl r1, r1, #2 + ldr r1, [r1, r2] + bl MOD57_021D890C + ldr r1, _021D82A8 ; =0x000030D4 + str r0, [r5, r1] + mov r0, #0 + ldr r2, [r5, r1] + mvn r0, r0 + cmp r2, r0 + beq _021D8248 + mov r6, #1 + add r4, r6, #0 + b _021D8288 +_021D8248: + ldr r0, _021D82AC ; =0x021C48F8 + ldrh r0, [r0, #0x22] + cmp r0, #0 + beq _021D8282 + add r1, r5, #0 + add r1, #0xb4 + ldr r1, [r1] + ldr r2, _021D82B0 ; =0x021D9754 + ldrb r1, [r1, #4] + ldr r0, [r5] + lsl r1, r1, #0x1f + lsr r1, r1, #0x1f + lsl r3, r1, #3 + ldr r1, _021D82B4 ; =0x00003318 + add r2, r2, r3 + ldrb r1, [r5, r1] + lsl r1, r1, #2 + ldr r1, [r1, r2] + bl MOD57_021D8954 + ldr r1, _021D82A8 ; =0x000030D4 + str r0, [r5, r1] + sub r1, #0x10 + ldr r0, [r5, r1] + cmp r0, #0 + beq _021D8288 + mov r6, #1 + mov r4, #2 + b _021D8288 +_021D8282: + mov r0, #0 + sub r1, #0x10 + str r0, [r5, r1] +_021D8288: + cmp r6, #0 + bne _021D82A2 + ldr r0, _021D82B8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _021D829A + mov r4, #3 + b _021D82A2 +_021D829A: + mov r0, #2 + tst r0, r1 + beq _021D82A2 + mov r4, #4 +_021D82A2: + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_021D82A8: .word 0x000030D4 +_021D82AC: .word 0x021C48F8 +_021D82B0: .word 0x021D9754 +_021D82B4: .word 0x00003318 +_021D82B8: .word 0x021C48B8 + thumb_func_end MOD57_021D81F8 + + thumb_func_start MOD57_021D82BC +MOD57_021D82BC: ; 0x021D82BC + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _021D83BC ; =0x021C48F8 + ldr r6, _021D83C0 ; =0x0000FFFF + ldrh r3, [r0, #0x1c] + mov r4, #0 + cmp r3, r6 + beq _021D83AC + ldrh r0, [r0, #0x1e] + cmp r0, r6 + beq _021D83AC + ldr r1, _021D83C4 ; =0x000030DC + ldr r2, [r5, r1] + cmp r2, r6 + beq _021D83AC + add r0, r1, #4 + ldr r0, [r5, r0] + cmp r0, r6 + beq _021D83AC + sub r1, #8 + ldr r1, [r5, r1] + sub r0, r4, #1 + cmp r1, r0 + beq _021D83AC + cmp r1, #0 + beq _021D83AC + add r0, r5, #0 + add r0, #0xb4 + sub r1, r1, #1 + ldr r0, [r0] + lsl r1, r1, #2 + add r0, r0, r1 + ldr r0, [r0, #0x48] + lsl r0, r0, #0x1f + asr r0, r0, #0x1f + beq _021D83AC + cmp r2, r3 + ble _021D830E + sub r2, r2, r3 + sub r1, r4, #1 + b _021D8312 +_021D830E: + sub r2, r3, r2 + mov r1, #1 +_021D8312: + ldr r0, _021D83C8 ; =0x00003302 + cmp r2, #3 + strb r1, [r5, r0] + blt _021D8358 + cmp r2, #0x28 + bgt _021D8358 + ldr r0, _021D83BC ; =0x021C48F8 + ldrh r1, [r0, #0x1e] + ldr r0, _021D83CC ; =0x000030E0 + ldr r0, [r5, r0] + cmp r0, r1 + ble _021D8332 + sub r2, r0, r1 + mov r1, #0 + mvn r1, r1 + b _021D8336 +_021D8332: + sub r2, r1, r0 + mov r1, #1 +_021D8336: + ldr r0, _021D83D0 ; =0x00003303 + cmp r2, #0x28 + strb r1, [r5, r0] + bgt _021D834C + mov r0, #0x33 + lsl r0, r0, #8 + add r0, r5, r0 + mov r4, #1 + bl MOD57_021D875C + b _021D8398 +_021D834C: + mov r0, #0x33 + lsl r0, r0, #8 + add r0, r5, r0 + bl MOD57_021D8744 + b _021D8398 +_021D8358: + cmp r2, #0x28 + bgt _021D8398 + ldr r0, _021D83BC ; =0x021C48F8 + ldrh r1, [r0, #0x1e] + ldr r0, _021D83CC ; =0x000030E0 + ldr r0, [r5, r0] + cmp r0, r1 + ble _021D8370 + sub r2, r0, r1 + mov r1, #0 + mvn r1, r1 + b _021D8374 +_021D8370: + sub r2, r1, r0 + mov r1, #1 +_021D8374: + ldr r0, _021D83D0 ; =0x00003303 + cmp r2, #3 + strb r1, [r5, r0] + blt _021D838E + cmp r2, #0x28 + bgt _021D838E + mov r0, #0x33 + lsl r0, r0, #8 + add r0, r5, r0 + mov r4, #1 + bl MOD57_021D875C + b _021D8398 +_021D838E: + mov r0, #0x33 + lsl r0, r0, #8 + add r0, r5, r0 + bl MOD57_021D8744 +_021D8398: + cmp r4, #0 + beq _021D83AC + ldr r1, _021D83D4 ; =0x000030D4 + add r0, r5, #0 + ldr r1, [r5, r1] + sub r1, r1, #1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD57_021D84AC +_021D83AC: + ldr r1, _021D83BC ; =0x021C48F8 + ldr r0, _021D83C4 ; =0x000030DC + ldrh r2, [r1, #0x1c] + str r2, [r5, r0] + ldrh r1, [r1, #0x1e] + add r0, r0, #4 + str r1, [r5, r0] + pop {r4, r5, r6, pc} + .align 2, 0 +_021D83BC: .word 0x021C48F8 +_021D83C0: .word 0x0000FFFF +_021D83C4: .word 0x000030DC +_021D83C8: .word 0x00003302 +_021D83CC: .word 0x000030E0 +_021D83D0: .word 0x00003303 +_021D83D4: .word 0x000030D4 + thumb_func_end MOD57_021D82BC + + thumb_func_start MOD57_021D83D8 +MOD57_021D83D8: ; 0x021D83D8 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r4, r1, #0 + ldr r0, [r0] + mov r1, #2 + bl FUN_0201886C + add r7, r0, #0 + lsl r0, r4, #2 + add r0, #0x80 + lsl r0, r0, #0x10 + mov r2, #0 + lsr r3, r0, #0x10 +_021D83F2: + lsl r0, r2, #5 + add r4, r3, r0 + add r0, r2, #0 + add r0, #0x13 + lsl r0, r0, #6 + mov r1, #0 + add r5, r7, r0 +_021D8400: + lsl r6, r1, #1 + add r0, r1, r4 + add r6, r5, r6 + strh r0, [r6, #0x1c] + add r0, r1, #1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + cmp r1, #4 + blo _021D8400 + add r0, r2, #1 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + cmp r2, #4 + blo _021D83F2 + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + bl FUN_02017CD0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD57_021D83D8 + + thumb_func_start MOD57_021D8428 +MOD57_021D8428: ; 0x021D8428 + push {r3, r4, r5, r6, r7, lr} + lsr r5, r1, #0x1f + lsl r4, r1, #0x1e + sub r4, r4, r5 + mov r2, #0x1e + ror r4, r2 + add r2, r5, r4 + lsl r2, r2, #0x18 + lsr r4, r2, #0x18 + lsl r1, r1, #0x16 + mov r2, #7 + add r5, r4, #0 + lsr r1, r1, #0x18 + mul r5, r2 + mov r6, #3 + add r4, r6, r5 + lsl r4, r4, #0x18 + mov r3, #4 + mul r2, r1 + add r1, r3, r2 + lsl r1, r1, #0x18 + lsr r5, r1, #0x18 + ldr r0, [r0] + add r1, r6, #0 + lsr r4, r4, #0x18 + bl FUN_0201886C + mov r2, #0 + add r3, r0, r4 + add r0, r2, #0 +_021D8464: + add r6, r2, r5 + lsl r4, r2, #4 + lsl r6, r6, #5 + add r1, r0, #0 + add r4, #0xba + add r6, r3, r6 +_021D8470: + add r7, r1, r4 + strb r7, [r6, r1] + add r1, r1, #1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, #5 + blo _021D8470 + add r1, r2, #1 + lsl r1, r1, #0x18 + lsr r2, r1, #0x18 + cmp r2, #5 + blo _021D8464 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD57_021D8428 + + thumb_func_start MOD57_021D848C +MOD57_021D848C: ; 0x021D848C + push {r3, lr} + bl FUN_0201C30C + bl FUN_02009F80 + ldr r3, _021D84A4 ; =0x027E0000 + ldr r1, _021D84A8 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, pc} + .align 2, 0 +_021D84A4: .word 0x027E0000 +_021D84A8: .word 0x00003FF8 + thumb_func_end MOD57_021D848C + + thumb_func_start MOD57_021D84AC +MOD57_021D84AC: ; 0x021D84AC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, #0xb4 + add r4, r1, #0 + ldr r0, [r0] + lsl r6, r4, #2 + add r0, r0, r6 + ldr r0, [r0, #0x48] + asr r0, r0, #1 + add r1, r0, #1 + str r1, [sp] + cmp r1, #0xc8 + bge _021D8578 + bl MOD57_021D870C + add r7, r0, #0 + ldr r0, _021D857C ; =0x00003310 + ldr r2, _021D8580 ; =0x021D9734 + add r1, r5, r0 + ldrb r0, [r1, r4] + ldrb r2, [r2, r7] + add r0, r0, #1 + strb r0, [r1, r4] + ldrb r0, [r1, r4] + cmp r0, r2 + blo _021D8578 + mov r0, #0 + strb r0, [r1, r4] + add r0, r5, #0 + add r0, #0xb4 + ldr r2, [r0] + mov r1, #1 + add r2, #0x48 + ldr r0, [r2, r6] + and r1, r0 + asr r0, r0, #1 + add r0, r0, #1 + lsl r0, r0, #1 + orr r0, r1 + str r0, [r2, r6] + ldr r0, [sp] + bl MOD57_021D870C + add r6, r0, #0 + cmp r7, r6 + bls _021D850C + bl ErrorHandling +_021D850C: + cmp r7, r6 + bhs _021D8578 + cmp r6, #4 + bhi _021D8536 + cmp r6, #4 + ldr r0, _021D8584 ; =0x000030E4 + bne _021D8526 + add r0, r5, r0 + add r1, r4, #0 + mov r2, #0 + bl MOD57_021D951C + b _021D8536 +_021D8526: + mov r2, #3 + sub r2, r2, r6 + lsl r2, r2, #0x18 + add r0, r5, r0 + add r1, r4, #0 + lsr r2, r2, #0x18 + bl MOD57_021D951C +_021D8536: + cmp r6, #3 + bne _021D854E + add r4, #8 + lsl r0, r4, #2 + add r1, r5, r0 + mov r0, #0xc9 + lsl r0, r0, #6 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 + pop {r3, r4, r5, r6, r7, pc} +_021D854E: + cmp r6, #4 + bne _021D8578 + add r0, r4, #0 + add r0, #8 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0xc9 + lsl r0, r0, #6 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020200A0 + add r4, #0x10 + lsl r0, r4, #2 + add r1, r5, r0 + mov r0, #0xc9 + lsl r0, r0, #6 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 +_021D8578: + pop {r3, r4, r5, r6, r7, pc} + nop +_021D857C: .word 0x00003310 +_021D8580: .word 0x021D9734 +_021D8584: .word 0x000030E4 + thumb_func_end MOD57_021D84AC + + thumb_func_start MOD57_021D8588 +MOD57_021D8588: ; 0x021D8588 + push {r4, lr} + sub sp, #0x18 + mov r0, #1 + lsl r0, r0, #0xc + blx FX_Inv + add r4, r0, #0 + mov r0, #1 + lsl r0, r0, #0xc + blx FX_Inv + mov r1, #0 + str r4, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + blx OS_WaitVBlankIntr + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _021D85E8 ; =0x04001020 + add r1, sp, #8 + mov r2, #0x80 + mov r3, #0x60 + blx G2x_SetBGyAffine_ + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _021D85EC ; =0x04001030 + add r1, sp, #8 + mov r2, #0x80 + mov r3, #0x60 + blx G2x_SetBGyAffine_ + blx OS_WaitVBlankIntr + mov r3, #0 + str r3, [sp] + ldr r0, _021D85F0 ; =0x04000030 + add r1, sp, #8 + mov r2, #0x80 + str r3, [sp, #4] + blx G2x_SetBGyAffine_ + add sp, #0x18 + pop {r4, pc} + .align 2, 0 +_021D85E8: .word 0x04001020 +_021D85EC: .word 0x04001030 +_021D85F0: .word 0x04000030 + thumb_func_end MOD57_021D8588 + + thumb_func_start MOD57_021D85F4 +MOD57_021D85F4: ; 0x021D85F4 + push {r4, lr} + ldr r1, _021D862C ; =0x0000331D + add r4, r0, #0 + ldrb r1, [r4, r1] + cmp r1, #1 + bne _021D8614 + ldr r1, _021D8630 ; =0x021D973C + ldr r1, [r1, #0x10] + bl MOD57_021D8634 + cmp r0, #0 + beq _021D862A + ldr r0, _021D862C ; =0x0000331D + mov r1, #0 + strb r1, [r4, r0] + pop {r4, pc} +_021D8614: + cmp r1, #2 + bne _021D862A + ldr r1, _021D8630 ; =0x021D973C + ldr r1, [r1, #0x14] + bl MOD57_021D8634 + cmp r0, #0 + beq _021D862A + ldr r0, _021D862C ; =0x0000331D + mov r1, #0 + strb r1, [r4, r0] +_021D862A: + pop {r4, pc} + .align 2, 0 +_021D862C: .word 0x0000331D +_021D8630: .word 0x021D973C + thumb_func_end MOD57_021D85F4 + + thumb_func_start MOD57_021D8634 +MOD57_021D8634: ; 0x021D8634 + push {r4, lr} + ldr r2, _021D8688 ; =0x0000331C + add r4, r0, #0 + ldrb r0, [r4, r2] + lsl r0, r0, #1 + ldrb r3, [r1, r0] + cmp r3, #0 + bne _021D8650 + mov r1, #0 + sub r0, r2, #1 + strb r1, [r4, r0] + strb r1, [r4, r2] + mov r0, #1 + pop {r4, pc} +_021D8650: + sub r0, r2, #1 + ldrb r0, [r4, r0] + cmp r0, r3 + blo _021D8664 + mov r3, #0 + sub r0, r2, #1 + strb r3, [r4, r0] + ldrb r0, [r4, r2] + add r0, r0, #1 + strb r0, [r4, r2] +_021D8664: + ldr r0, _021D8688 ; =0x0000331C + ldrb r2, [r4, r0] + sub r0, r0, #1 + ldrb r0, [r4, r0] + lsl r2, r2, #1 + add r2, r2, #1 + ldrb r1, [r1, r2] + cmp r0, #0 + bne _021D867C + add r0, r4, #0 + bl MOD57_021D83D8 +_021D867C: + ldr r0, _021D868C ; =0x0000331B + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D8688: .word 0x0000331C +_021D868C: .word 0x0000331B + thumb_func_end MOD57_021D8634 + + thumb_func_start MOD57_021D8690 +MOD57_021D8690: ; 0x021D8690 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021D86E0 ; =0x000032FC + mov r1, #7 + ldr r0, [r5, r0] + ldr r4, [r0, #8] + ldr r0, _021D86E4 ; =0x000030BC + ldr r3, [r5, r0] + mov r0, #0 + str r0, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r5] + ldr r3, [r3, #0x10] + bl FUN_02017E14 + ldr r0, [r5] + mov r1, #7 + bl FUN_0201886C + cmp r0, #0 + beq _021D86CA + ldr r2, _021D86E0 ; =0x000032FC + ldr r0, [r5] + ldr r2, [r5, r2] + mov r1, #7 + add r2, #0xc + add r3, r4, #0 + bl FUN_02017DFC +_021D86CA: + mov r0, #0 + str r0, [sp] + ldr r2, _021D86E0 ; =0x000032FC + ldr r0, [r5] + ldr r2, [r5, r2] + mov r1, #7 + add r2, #0xc + add r3, r4, #0 + bl FUN_02017CE8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D86E0: .word 0x000032FC +_021D86E4: .word 0x000030BC + thumb_func_end MOD57_021D8690 + + thumb_func_start MOD57_021D86E8 +MOD57_021D86E8: ; 0x021D86E8 + push {r3, lr} + sub sp, #0x10 + mov r1, #6 + str r1, [sp] + str r1, [sp, #4] + mov r1, #9 + str r1, [sp, #8] + mov r1, #0x10 + str r1, [sp, #0xc] + ldr r0, [r0] + mov r1, #7 + mov r2, #0 + mov r3, #0x14 + bl FUN_02018540 + add sp, #0x10 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD57_021D86E8 + + thumb_func_start MOD57_021D870C +MOD57_021D870C: ; 0x021D870C + push {r3, lr} + cmp r0, #0 + blt _021D871A + cmp r0, #0x64 + bge _021D871A + mov r0, #0 + pop {r3, pc} +_021D871A: + cmp r0, #0x8c + bge _021D8722 + mov r0, #1 + pop {r3, pc} +_021D8722: + cmp r0, #0xaa + bge _021D872A + mov r0, #2 + pop {r3, pc} +_021D872A: + cmp r0, #0xbe + bge _021D8732 + mov r0, #3 + pop {r3, pc} +_021D8732: + cmp r0, #0xc8 + bge _021D873A + mov r0, #4 + pop {r3, pc} +_021D873A: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD57_021D870C + + thumb_func_start MOD57_021D8744 +MOD57_021D8744: ; 0x021D8744 + mov r1, #0 + strb r1, [r0, #2] + strb r1, [r0, #3] + bx lr + thumb_func_end MOD57_021D8744 + + thumb_func_start MOD57_021D874C +MOD57_021D874C: ; 0x021D874C + mov r1, #0 + strb r1, [r0] + strb r1, [r0, #1] + strb r1, [r0, #2] + strb r1, [r0, #3] + strb r1, [r0, #4] + bx lr + .align 2, 0 + thumb_func_end MOD57_021D874C + + thumb_func_start MOD57_021D875C +MOD57_021D875C: ; 0x021D875C + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, _021D87D4 ; =0x021D973C + ldr r1, [r0] + ldr r0, [r0, #4] + str r1, [sp] + str r0, [sp, #4] + mov r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + bne _021D8782 + mov r0, #1 + ldrsb r0, [r4, r0] + cmp r0, #0 + bne _021D8782 + ldr r0, _021D87D8 ; =0x00000692 + bl FUN_020054C8 +_021D8782: + mov r0, #0 + ldrsb r1, [r4, r0] + mov r0, #2 + ldrsb r0, [r4, r0] + mul r0, r1 + bmi _021D879A + mov r0, #1 + ldrsb r1, [r4, r0] + mov r0, #3 + ldrsb r0, [r4, r0] + mul r0, r1 + bpl _021D87BC +_021D879A: + ldrb r0, [r4, #4] + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + strb r0, [r4, #4] + ldrb r0, [r4, #4] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_020054C8 +_021D87BC: + mov r0, #2 + ldrsb r0, [r4, r0] + strb r0, [r4] + mov r0, #3 + ldrsb r0, [r4, r0] + strb r0, [r4, #1] + mov r0, #0 + strb r0, [r4, #2] + strb r0, [r4, #3] + add sp, #8 + pop {r4, pc} + nop +_021D87D4: .word 0x021D973C +_021D87D8: .word 0x00000692 + thumb_func_end MOD57_021D875C + + thumb_func_start MOD57_021D87DC +MOD57_021D87DC: ; 0x021D87DC + push {r4, r5, r6, r7} + mov r2, #3 + mov r4, #0 + lsl r2, r2, #0xc +_021D87E4: + asr r3, r4, #2 + lsr r3, r3, #0x1d + add r3, r4, r3 + asr r3, r3, #3 + lsr r6, r3, #0x1f + lsl r5, r3, #0x1d + sub r5, r5, r6 + mov r3, #0x1d + ror r5, r3 + add r3, r6, r5 + asr r5, r4, #5 + lsr r5, r5, #0x1a + lsl r3, r3, #0x18 + add r5, r4, r5 + lsr r3, r3, #0x18 + asr r5, r5, #6 + lsl r5, r5, #3 + add r3, r0, r3 + ldrb r3, [r5, r3] + lsr r7, r4, #0x1f + lsl r6, r4, #0x1d + sub r6, r6, r7 + mov r5, #0x1d + ror r6, r5 + add r5, r7, r6 + lsl r5, r5, #0x18 + add r6, r3, #0 + lsr r5, r5, #0x18 + asr r6, r5 + mov r3, #1 + and r3, r6 + strb r3, [r1, r4] + add r4, r4, #1 + cmp r4, r2 + blt _021D87E4 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 + thumb_func_end MOD57_021D87DC + + thumb_func_start MOD57_021D8830 +MOD57_021D8830: ; 0x021D8830 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r1, #0 + mov r1, #1 + str r1, [sp] + lsl r1, r7, #0x18 + mov r3, #3 + str r0, [sp, #4] + lsr r1, r1, #0x18 + lsl r3, r3, #0xc + bl FUN_02017E14 + lsl r1, r7, #0x18 + ldr r0, [sp, #4] + lsr r1, r1, #0x18 + bl FUN_0201886C + mov r4, #0 + add r1, r0, #0 + add r3, r4, #0 + add r0, r4, #0 +_021D885A: + add r5, r3, #0 + add r5, #0xe + lsl r5, r5, #6 + add r2, r0, #0 + add r5, r1, r5 +_021D8864: + lsl r6, r2, #1 + add r4, r4, #1 + add r2, r2, #1 + lsl r4, r4, #0x10 + lsl r2, r2, #0x18 + lsr r4, r4, #0x10 + add r6, r5, r6 + lsr r2, r2, #0x18 + strh r4, [r6, #8] + cmp r2, #0x18 + blo _021D8864 + add r2, r3, #1 + lsl r2, r2, #0x18 + lsr r3, r2, #0x18 + cmp r3, #8 + blo _021D885A + lsl r1, r7, #0x18 + ldr r0, [sp, #4] + lsr r1, r1, #0x18 + bl FUN_02017CD0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD57_021D8830 + + thumb_func_start MOD57_021D8894 +MOD57_021D8894: ; 0x021D8894 + ldr r3, _021D889C ; =0x020054C9 + ldr r0, _021D88A0 ; =0x00000699 + bx r3 + nop +_021D889C: .word 0x020054C9 +_021D88A0: .word 0x00000699 + thumb_func_end MOD57_021D8894 + + thumb_func_start MOD57_021D88A4 +MOD57_021D88A4: ; 0x021D88A4 + push {r4, lr} + add r4, r0, #0 + cmp r1, #0 + beq _021D8900 + mov r0, #0xc3 + lsl r0, r0, #6 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021D88F0 + ldr r2, _021D8904 ; =0x0000331E + ldrb r0, [r4, r2] + cmp r0, #0xf + bne _021D88DE + add r1, r4, #0 + add r1, #0xb4 + sub r2, #0x16 + ldr r1, [r1] + ldr r2, [r4, r2] + add r0, r4, #4 + bl MOD57_021D905C + ldr r2, _021D8908 ; =0x0000330C + add r0, r4, #0 + ldr r2, [r4, r2] + add r0, #0x54 + mov r1, #1 + bl MOD57_021D9144 + b _021D88F0 +_021D88DE: + cmp r0, #0 + bne _021D88F0 + sub r2, #0x12 + add r0, r4, #0 + ldr r2, [r4, r2] + add r0, #0x54 + mov r1, #0 + bl MOD57_021D9144 +_021D88F0: + ldr r0, _021D8904 ; =0x0000331E + mov r1, #0x1e + ldrb r0, [r4, r0] + add r0, r0, #1 + blx _s32_div_f + ldr r0, _021D8904 ; =0x0000331E + strb r1, [r4, r0] +_021D8900: + pop {r4, pc} + nop +_021D8904: .word 0x0000331E +_021D8908: .word 0x0000330C + thumb_func_end MOD57_021D88A4 + + thumb_func_start MOD57_021D890C +MOD57_021D890C: ; 0x021D890C + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + add r0, r1, #0 + bl FUN_02020988 + mov r1, #0 + add r4, r0, #0 + mvn r1, r1 + cmp r4, r1 + beq _021D894A + cmp r4, #0 + beq _021D894C + mov r1, #0x40 + add r0, sp, #4 + strh r1, [r0] + add r0, sp, #4 + str r0, [sp] + ldr r3, _021D8950 ; =0x021C48F8 + add r0, r5, #0 + ldrh r2, [r3, #0x1c] + ldrh r3, [r3, #0x1e] + mov r1, #2 + bl FUN_0201AFBC + cmp r0, #0 + bne _021D894A + mov r0, #0 + add sp, #8 + mvn r0, r0 + pop {r3, r4, r5, pc} +_021D894A: + add r0, r4, #0 +_021D894C: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8950: .word 0x021C48F8 + thumb_func_end MOD57_021D890C + + thumb_func_start MOD57_021D8954 +MOD57_021D8954: ; 0x021D8954 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + add r0, r1, #0 + bl FUN_02020968 + mov r1, #0 + add r4, r0, #0 + mvn r1, r1 + cmp r4, r1 + beq _021D8992 + cmp r4, #0 + beq _021D8994 + mov r1, #0x40 + add r0, sp, #4 + strh r1, [r0] + add r0, sp, #4 + str r0, [sp] + ldr r3, _021D8998 ; =0x021C48F8 + add r0, r5, #0 + ldrh r2, [r3, #0x1c] + ldrh r3, [r3, #0x1e] + mov r1, #2 + bl FUN_0201AFBC + cmp r0, #0 + bne _021D8992 + mov r0, #0 + add sp, #8 + mvn r0, r0 + pop {r3, r4, r5, pc} +_021D8992: + add r0, r4, #0 +_021D8994: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8998: .word 0x021C48F8 + thumb_func_end MOD57_021D8954 + + thumb_func_start MOD57_021D899C +MOD57_021D899C: ; 0x021D899C + push {r3, r4, r5, r6, r7, lr} + ldr r7, _021D89D0 ; =0x021D98F4 + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_021D89A6: + lsl r1, r4, #4 + lsl r2, r4, #3 + add r0, r5, #0 + add r1, r6, r1 + add r2, r7, r2 + bl FUN_02019150 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0xb + blo _021D89A6 + mov r2, #0 + add r0, r5, #0 + mov r1, #7 + mov r3, #1 + str r2, [sp] + bl FUN_02017F48 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D89D0: .word 0x021D98F4 + thumb_func_end MOD57_021D899C + + thumb_func_start MOD57_021D89D4 +MOD57_021D89D4: ; 0x021D89D4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021D89DA: + lsl r0, r4, #4 + add r0, r5, r0 + bl FUN_02019178 + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0xb + blo _021D89DA + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD57_021D89D4 + + thumb_func_start MOD57_021D89F0 +MOD57_021D89F0: ; 0x021D89F0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r1, #0 + mov r1, #0x88 + str r1, [sp] + mov r1, #0x10 + str r1, [sp, #4] + mov r1, #0 + add r2, r1, #0 + add r3, r1, #0 + add r7, r0, #0 + bl FUN_020196F4 + mov r1, #0 + mov r0, #0x88 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r7, #0 + add r0, #0x10 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + mov r1, #0 + mov r0, #0x88 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r7, #0 + add r0, #0x20 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + mov r1, #0 + mov r0, #0x88 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r7, #0 + add r0, #0x30 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + mov r1, #0 + mov r0, #0x88 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r7, #0 + add r0, #0x40 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + mov r1, #0 + mov r0, #0xe0 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r7, #0 + add r0, #0x50 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + mov r1, #0 + mov r0, #0xe0 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r7, #0 + add r0, #0x60 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + ldr r2, _021D8CEC ; =0x0000022D + mov r0, #0 + mov r1, #0x1a + mov r3, #0x19 + bl FUN_0200A86C + str r0, [sp, #0x14] + mov r0, #0x20 + mov r1, #0x19 + bl FUN_020219F4 + add r5, r0, #0 + mov r4, #0 +_021D8AA8: + cmp r4, #3 + bne _021D8AB6 + bne _021D8AE0 + ldrb r0, [r6, #4] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + beq _021D8AE0 +_021D8AB6: + ldr r1, _021D8CF0 ; =0x021D98C8 + lsl r2, r4, #2 + ldr r1, [r1, r2] + ldr r0, [sp, #0x14] + add r2, r5, #0 + bl FUN_0200A8E0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _021D8CF4 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + lsl r0, r4, #4 + add r0, r7, r0 + add r2, r5, #0 + add r3, r1, #0 + bl FUN_0201BDE0 +_021D8AE0: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #7 + blo _021D8AA8 + mov r0, #0x20 + mov r1, #0x19 + bl FUN_020219F4 + str r0, [sp, #0x10] + mov r0, #6 + mov r1, #0x20 + mov r2, #0x19 + bl FUN_0200AA90 + mov r2, #0 + str r5, [sp] + add r4, r0, #0 + ldrh r0, [r6, #0x28] + mov r1, #0x88 + add r3, r2, #0 + str r0, [sp, #4] + mov r0, #5 + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + add r0, r7, #0 + bl MOD57_021D8FD8 + add r1, r6, #0 + add r0, r5, #0 + add r1, #8 + bl FUN_02021E28 + add r0, r7, #0 + mov r2, #0 + add r0, #0x10 + mov r1, #0x88 + add r3, r2, #0 + str r5, [sp] + bl MOD57_021D9024 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r2, [r6, #0x1c] + add r0, r4, #0 + mov r1, #5 + mov r3, #6 + bl FUN_0200AD38 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x10] + mov r1, #0xe + bl FUN_0200A8E0 + ldr r2, [sp, #0x10] + add r0, r4, #0 + add r1, r5, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r5, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0x88 + sub r3, r1, r0 + mov r1, #0 + str r1, [sp] + ldr r0, _021D8CF4 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r7, #0 + str r1, [sp, #0xc] + add r0, #0x20 + add r2, r5, #0 + bl FUN_0201BDE0 + ldrb r0, [r6, #4] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + beq _021D8BA4 + str r5, [sp] + ldr r0, [r6, #0x20] + mov r2, #0 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + add r0, r7, #0 + add r0, #0x30 + mov r1, #0x88 + add r3, r2, #0 + bl MOD57_021D8FD8 +_021D8BA4: + str r5, [sp] + ldr r0, [r6, #0x24] + mov r2, #0 + str r0, [sp, #4] + mov r0, #9 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + add r0, r7, #0 + add r0, #0x40 + mov r1, #0x88 + add r3, r2, #0 + bl MOD57_021D8FD8 + ldrb r0, [r6, #4] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + beq _021D8C02 + ldr r0, [r6, #0x18] + bl FUN_02029EBC + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + mov r3, #3 + bl FUN_0200AD38 + ldr r0, [r6, #0x18] + bl FUN_02029EC0 + mov r3, #2 + add r2, r0, #0 + str r3, [sp] + mov r1, #1 + add r0, r4, #0 + str r1, [sp, #4] + bl FUN_0200AD38 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x10] + mov r1, #0x10 + bl FUN_0200A8E0 + b _021D8C32 +_021D8C02: + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldrh r2, [r6, #0x2a] + add r0, r4, #0 + mov r1, #0 + mov r3, #3 + bl FUN_0200AD38 + mov r3, #2 + add r2, r6, #0 + str r3, [sp] + mov r1, #1 + str r1, [sp, #4] + add r2, #0x2e + ldrb r2, [r2] + add r0, r4, #0 + bl FUN_0200AD38 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x10] + mov r1, #0xf + bl FUN_0200A8E0 +_021D8C32: + ldr r2, [sp, #0x10] + add r0, r4, #0 + add r1, r5, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r5, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xe0 + sub r3, r1, r0 + mov r1, #0 + str r1, [sp] + ldr r0, _021D8CF4 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r7, #0 + add r0, #0x50 + add r2, r5, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + mov r1, #2 + add r2, r6, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + add r2, #0x2f + ldrb r2, [r2] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_0200AD38 + add r2, r6, #0 + add r2, #0x30 + ldrb r2, [r2] + add r0, r4, #0 + mov r1, #3 + bl FUN_0200B764 + mov r3, #2 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + add r6, #0x31 + ldrb r2, [r6] + add r0, r4, #0 + mov r1, #4 + bl FUN_0200AD38 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x10] + mov r1, #0x11 + bl FUN_0200A8E0 + ldr r2, [sp, #0x10] + add r0, r4, #0 + add r1, r5, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r5, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xe0 + sub r3, r1, r0 + mov r1, #0 + str r1, [sp] + ldr r0, _021D8CF4 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r7, #0x60 + add r0, r7, #0 + add r2, r5, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_0200AB18 + add r0, r5, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x14] + bl FUN_0200A8B8 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8CEC: .word 0x0000022D +_021D8CF0: .word 0x021D98C8 +_021D8CF4: .word 0x00010200 + thumb_func_end MOD57_021D89F0 + + thumb_func_start MOD57_021D8CF8 +MOD57_021D8CF8: ; 0x021D8CF8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + mov r0, #0xe0 + str r0, [sp] + mov r0, #0x20 + str r1, [sp, #0x10] + mov r1, #0 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0x70 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + mov r1, #0 + mov r0, #0xe0 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0x80 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + mov r1, #0 + mov r0, #0xe0 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0x90 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + mov r1, #0 + mov r0, #0xe0 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0xa0 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + ldr r2, _021D8FAC ; =0x0000022D + mov r0, #0 + mov r1, #0x1a + mov r3, #0x19 + bl FUN_0200A86C + add r7, r0, #0 + mov r0, #0x20 + mov r1, #0x19 + bl FUN_020219F4 + add r5, r0, #0 + mov r4, #7 +_021D8D72: + ldr r1, _021D8FB0 ; =0x021D98C8 + lsl r2, r4, #2 + ldr r1, [r1, r2] + add r0, r7, #0 + add r2, r5, #0 + bl FUN_0200A8E0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _021D8FB4 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + lsl r0, r4, #4 + add r0, r6, r0 + add r2, r5, #0 + add r3, r1, #0 + bl FUN_0201BDE0 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0xb + blo _021D8D72 + mov r0, #0x20 + mov r1, #0x19 + bl FUN_020219F4 + str r0, [sp, #0x14] + mov r0, #5 + mov r1, #0x20 + mov r2, #0x19 + bl FUN_0200AA90 + ldr r1, [sp, #0x10] + add r4, r0, #0 + add r1, #0x33 + ldrb r1, [r1] + cmp r1, #0 + beq _021D8E3C + mov r1, #2 + str r1, [sp] + mov r2, #1 + str r2, [sp, #4] + ldr r2, [sp, #0x10] + add r3, r1, #0 + add r2, #0x32 + ldrb r2, [r2] + bl FUN_0200AD38 + ldr r2, [sp, #0x10] + add r0, r4, #0 + add r2, #0x33 + ldrb r2, [r2] + mov r1, #3 + bl FUN_0200B764 + mov r3, #2 + ldr r2, [sp, #0x10] + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + add r2, #0x34 + ldrb r2, [r2] + add r0, r4, #0 + mov r1, #4 + bl FUN_0200AD38 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r2, [sp, #0x10] + add r0, r4, #0 + ldrh r2, [r2, #0x2c] + mov r1, #0 + mov r3, #3 + bl FUN_0200AD38 + mov r3, #2 + ldr r2, [sp, #0x10] + str r3, [sp] + mov r1, #1 + str r1, [sp, #4] + add r2, #0x35 + ldrb r2, [r2] + add r0, r4, #0 + bl FUN_0200AD38 + ldr r2, [sp, #0x14] + add r0, r7, #0 + mov r1, #0x11 + bl FUN_0200A8E0 + ldr r2, [sp, #0x14] + add r0, r4, #0 + add r1, r5, #0 + bl FUN_0200B7B8 + b _021D8E74 +_021D8E3C: + ldr r2, [sp, #0x14] + add r0, r7, #0 + mov r1, #0xc + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r2, [sp, #0x14] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_0200ABB4 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r2, [sp, #0x14] + add r0, r4, #0 + mov r1, #1 + bl FUN_0200ABB4 + add r0, r7, #0 + mov r1, #0x14 + add r2, r5, #0 + bl FUN_0200A8E0 +_021D8E74: + mov r0, #0 + add r1, r5, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xe0 + sub r3, r1, r0 + mov r1, #0 + str r1, [sp] + ldr r0, _021D8FB4 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0x70 + add r2, r5, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r2, [sp, #0x14] + add r0, r7, #0 + mov r1, #0xf + bl FUN_0200A8E0 + ldr r2, [sp, #0x14] + add r0, r4, #0 + add r1, r5, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r5, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xe0 + sub r3, r1, r0 + mov r0, #0x10 + str r0, [sp] + mov r1, #0 + ldr r0, _021D8FB4 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0x70 + add r2, r5, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + mov r2, #0 + ldr r0, [sp, #0x10] + str r5, [sp] + ldr r0, [r0, #0x38] + mov r1, #0xe0 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0x80 + add r3, r2, #0 + bl MOD57_021D8FD8 + add r0, r7, #0 + mov r1, #0x12 + add r2, r5, #0 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + ldr r0, _021D8FB4 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0x90 + add r2, r5, #0 + mov r3, #0x70 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + mov r2, #0 + ldr r0, [sp, #0x10] + str r5, [sp] + ldr r0, [r0, #0x40] + mov r1, #0xe0 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0x90 + add r3, r2, #0 + bl MOD57_021D8FD8 + add r0, r7, #0 + mov r1, #0x13 + add r2, r5, #0 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + ldr r0, _021D8FB4 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0x90 + add r2, r5, #0 + mov r3, #0xb0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + str r5, [sp] + ldr r0, [r0, #0x3c] + mov r1, #0xe0 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0x90 + mov r2, #0x40 + mov r3, #0 + bl MOD57_021D8FD8 + mov r2, #0 + ldr r0, [sp, #0x10] + str r5, [sp] + ldr r0, [r0, #0x44] + add r6, #0xa0 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + add r0, r6, #0 + mov r1, #0xe0 + add r3, r2, #0 + bl MOD57_021D8FD8 + ldr r0, [sp, #0x14] + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_0200AB18 + add r0, r5, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_0200A8B8 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8FAC: .word 0x0000022D +_021D8FB0: .word 0x021D98C8 +_021D8FB4: .word 0x00010200 + thumb_func_end MOD57_021D8CF8 + + thumb_func_start MOD57_021D8FB8 +MOD57_021D8FB8: ; 0x021D8FB8 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + cmp r4, r6 + bhi _021D8FD6 +_021D8FC4: + lsl r0, r4, #4 + add r0, r5, r0 + bl FUN_02019570 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, r6 + bls _021D8FC4 +_021D8FD6: + pop {r4, r5, r6, pc} + thumb_func_end MOD57_021D8FB8 + + thumb_func_start MOD57_021D8FD8 +MOD57_021D8FD8: ; 0x021D8FD8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r0, #0 + mov r0, #1 + add r4, r2, #0 + str r0, [sp] + add r2, sp, #0x18 + add r5, r1, #0 + add r6, r3, #0 + ldrb r2, [r2, #0x18] + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x2c] + ldr r3, [sp, #0x34] + bl FUN_02021B04 + mov r0, #0 + ldr r1, [sp, #0x28] + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + add r3, r3, r4 + str r6, [sp] + mov r1, #0 + ldr r0, _021D9020 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + ldr r2, [sp, #0x28] + add r0, r7, #0 + sub r3, r5, r3 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9020: .word 0x00010200 + thumb_func_end MOD57_021D8FD8 + + thumb_func_start MOD57_021D9024 +MOD57_021D9024: ; 0x021D9024 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r0, #0 + add r5, r1, #0 + mov r0, #0 + add r4, r2, #0 + ldr r1, [sp, #0x28] + add r6, r3, #0 + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + add r3, r3, r4 + str r6, [sp] + mov r1, #0 + ldr r0, _021D9058 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + ldr r2, [sp, #0x28] + add r0, r7, #0 + sub r3, r5, r3 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D9058: .word 0x00010200 + thumb_func_end MOD57_021D9024 + + thumb_func_start MOD57_021D905C +MOD57_021D905C: ; 0x021D905C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + add r7, r0, #0 + ldr r0, [r5, #0x18] + cmp r0, #0 + bne _021D906E + bl ErrorHandling +_021D906E: + ldr r0, [r5, #0x18] + bl FUN_02029EBC + mov r0, #0x28 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r7, #0 + mov r1, #0 + add r0, #0x50 + mov r2, #0xb8 + add r3, r1, #0 + bl FUN_020196F4 + ldr r2, _021D913C ; =0x0000022D + mov r0, #0 + mov r1, #0x1a + mov r3, #0x19 + bl FUN_0200A86C + str r0, [sp, #0x10] + mov r0, #0x20 + mov r1, #0x19 + bl FUN_020219F4 + add r4, r0, #0 + mov r0, #0x20 + mov r1, #0x19 + bl FUN_020219F4 + str r0, [sp, #0x14] + mov r0, #2 + mov r1, #0x20 + mov r2, #0x19 + bl FUN_0200AA90 + add r6, r0, #0 + ldr r0, [r5, #0x18] + bl FUN_02029EBC + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r6, #0 + mov r1, #0 + mov r3, #3 + bl FUN_0200AD38 + ldr r0, [r5, #0x18] + bl FUN_02029EC0 + mov r3, #2 + add r2, r0, #0 + str r3, [sp] + mov r1, #1 + add r0, r6, #0 + str r1, [sp, #4] + bl FUN_0200AD38 + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x14] + mov r1, #0x10 + bl FUN_0200A8E0 + ldr r2, [sp, #0x14] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xe0 + sub r3, r1, r0 + mov r1, #0 + str r1, [sp] + ldr r0, _021D9140 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r7, #0x50 + add r0, r7, #0 + add r2, r4, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_0200A8B8 + add r0, r4, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x14] + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200AB18 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D913C: .word 0x0000022D +_021D9140: .word 0x00010200 + thumb_func_end MOD57_021D905C + + thumb_func_start MOD57_021D9144 +MOD57_021D9144: ; 0x021D9144 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + cmp r1, #0 + beq _021D9164 + mov r1, #0 + str r1, [sp] + ldr r3, _021D9180 ; =0x00010200 + str r1, [sp, #4] + str r3, [sp, #8] + mov r3, #0xcd + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add sp, #0x10 + pop {r4, pc} +_021D9164: + mov r1, #5 + str r1, [sp] + mov r1, #0x10 + str r1, [sp, #4] + mov r1, #0 + mov r2, #0xcd + add r3, r1, #0 + bl FUN_020196F4 + add r0, r4, #0 + bl FUN_020191D0 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_021D9180: .word 0x00010200 + thumb_func_end MOD57_021D9144 + + thumb_func_start MOD57_021D9184 +MOD57_021D9184: ; 0x021D9184 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + add r7, r0, #0 + bl MOD57_021D9578 + blx FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x80 + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x19 + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + mov r0, #0x19 + add r1, r7, #4 + add r2, r0, #0 + bl FUN_02008C9C + ldr r4, _021D92EC ; =0x021D994C + str r0, [r7] + mov r6, #0 + add r5, r7, #0 +_021D91BC: + ldrb r0, [r4] + add r1, r6, #0 + mov r2, #0x19 + bl FUN_02008DEC + mov r1, #0x4b + lsl r1, r1, #2 + str r0, [r5, r1] + add r6, r6, #1 + add r4, r4, #1 + add r5, r5, #4 + cmp r6, #4 + blt _021D91BC + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x19 + str r0, [sp, #8] + add r0, r1, #0 + ldr r0, [r7, r0] + mov r1, #0x33 + mov r2, #0x1c + mov r3, #0 + bl FUN_02008F34 + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [r7, r1] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, #9 + str r0, [sp, #8] + mov r0, #0x19 + sub r1, #0xc + str r0, [sp, #0xc] + ldr r0, [r7, r1] + mov r1, #0x33 + mov r2, #0xb + mov r3, #0 + bl FUN_02008FEC + mov r1, #5 + lsl r1, r1, #6 + str r0, [r7, r1] + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x19 + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r7, r1] + mov r1, #0x33 + mov r2, #0x25 + mov r3, #0 + bl FUN_020090AC + mov r1, #0x51 + lsl r1, r1, #2 + str r0, [r7, r1] + mov r0, #1 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x19 + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r7, r1] + mov r1, #0x33 + mov r2, #0x27 + mov r3, #0 + bl FUN_020090AC + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r7, r1] + sub r1, #0xc + ldr r0, [r7, r1] + bl FUN_02009A50 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r7, r0] + bl FUN_02009CF0 + ldr r3, _021D92F0 ; =0x021D9960 + add r2, sp, #0x1c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + 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, #0x33 + mov r1, #0x19 + bl FUN_02006670 + str r0, [sp, #0x14] + mov r0, #0x1e + lsl r0, r0, #4 + add r0, r7, r0 + mov r4, #0 + str r0, [sp, #0x18] +_021D9290: + lsl r6, r4, #2 + add r1, sp, #0x1c + ldr r0, [sp, #0x14] + ldr r1, [r1, r6] + mov r2, #0x19 + add r5, r7, r6 + bl FUN_02006704 + mov r1, #7 + lsl r1, r1, #6 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021D92CA + ldr r1, [sp, #0x18] + add r1, r1, r6 + blx FUN_020B0138 + cmp r0, #0 + bne _021D92CE + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02016A18 + bl ErrorHandling + b _021D92CE +_021D92CA: + bl ErrorHandling +_021D92CE: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #8 + blo _021D9290 + ldr r0, [sp, #0x14] + bl FUN_020066F4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + nop +_021D92EC: .word 0x021D994C +_021D92F0: .word 0x021D9960 + thumb_func_end MOD57_021D9184 + + thumb_func_start MOD57_021D92F4 +MOD57_021D92F4: ; 0x021D92F4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x88 + add r7, r1, #0 + mov r1, #1 + str r0, [sp, #0x2c] + str r1, [sp] + sub r0, r1, #2 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r0, #0x4b + lsl r0, r0, #2 + ldr r3, [sp, #0x2c] + str r1, [sp, #0x10] + ldr r3, [r3, r0] + add r4, r0, #4 + str r3, [sp, #0x14] + ldr r3, [sp, #0x2c] + ldr r3, [r3, r4] + add r4, r0, #0 + str r3, [sp, #0x18] + ldr r3, [sp, #0x2c] + add r4, #8 + ldr r3, [r3, r4] + add r0, #0xc + str r3, [sp, #0x1c] + ldr r3, [sp, #0x2c] + ldr r0, [r3, r0] + add r3, r1, #0 + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r0, sp, #0x64 + add r2, r1, #0 + bl FUN_02008AA4 + ldr r0, [sp, #0x2c] + mov r4, #0 + ldr r0, [r0] + ldr r6, _021D94B4 ; =0x021D99C0 + str r0, [sp, #0x34] + add r0, sp, #0x64 + str r0, [sp, #0x38] + mov r0, #1 + lsl r0, r0, #0xc + str r4, [sp, #0x3c] + str r4, [sp, #0x40] + str r4, [sp, #0x44] + str r0, [sp, #0x48] + str r0, [sp, #0x4c] + str r0, [sp, #0x50] + add r0, sp, #0x34 + strh r4, [r0, #0x20] + mov r0, #2 + str r0, [sp, #0x58] + mov r0, #1 + str r0, [sp, #0x5c] + mov r0, #0x19 + ldr r5, [sp, #0x2c] + str r0, [sp, #0x60] +_021D936E: + ldr r0, [r6] + lsl r0, r0, #0xc + str r0, [sp, #0x3c] + ldr r0, [r6, #4] + lsl r0, r0, #0xc + str r0, [sp, #0x40] + add r0, sp, #0x34 + bl FUN_0201FE94 + mov r1, #0x57 + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200BC + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_02020130 + ldrb r0, [r7, r4] + cmp r0, #0 + bne _021D93AE + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 +_021D93AE: + add r4, r4, #1 + add r6, #8 + add r5, r5, #4 + cmp r4, #8 + blt _021D936E + mov r0, #8 + ldr r4, _021D94B8 ; =0x021D9980 + ldr r5, [sp, #0x2c] + str r0, [sp, #0x30] + mov r6, #0 + mov r7, #1 +_021D93C4: + ldr r0, [r4] + str r7, [sp, #0x58] + lsl r0, r0, #0xc + str r0, [sp, #0x3c] + ldr r0, [r4, #4] + lsl r0, r0, #0xc + str r0, [sp, #0x40] + add r0, sp, #0x34 + bl FUN_0201FE94 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #8 + bl FUN_02020130 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r4, #8 + add r5, r5, #4 + cmp r6, #8 + blt _021D93C4 + ldr r0, [sp, #0x30] + ldr r4, _021D94B8 ; =0x021D9980 + add r0, #8 + str r0, [sp, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x30] + ldr r0, [sp, #0x30] + mov r6, #0 + lsl r1, r0, #2 + ldr r0, [sp, #0x2c] + mov r7, #1 + add r5, r0, r1 +_021D9424: + ldr r0, [r4] + str r7, [sp, #0x58] + lsl r0, r0, #0xc + str r0, [sp, #0x3c] + ldr r0, [r4, #4] + lsl r0, r0, #0xc + str r0, [sp, #0x40] + add r0, sp, #0x34 + bl FUN_0201FE94 + mov r1, #0x57 + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #9 + bl FUN_02020130 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r4, #8 + add r5, r5, #4 + cmp r6, #8 + blt _021D9424 + mov r1, #0 + add r0, sp, #0x84 + strb r1, [r0] + mov r0, #6 + lsl r0, r0, #0x10 + str r0, [sp, #0x3c] + mov r0, #0x22 + lsl r0, r0, #0xe + str r0, [sp, #0x40] + str r1, [sp, #0x58] + mov r1, #0x57 + ldr r0, [sp, #0x2c] + lsl r1, r1, #2 + add r4, r0, r1 + ldr r0, [sp, #0x30] + add r0, #8 + str r0, [sp, #0x30] + lsl r0, r0, #0x18 + lsr r5, r0, #0x16 + add r0, sp, #0x34 + bl FUN_0201FE94 + str r0, [r4, r5] + ldr r0, [r4, r5] + mov r1, #0 + bl FUN_020200BC + ldr r0, [r4, r5] + mov r1, #0xa + bl FUN_02020130 + ldr r0, [r4, r5] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x88 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D94B4: .word 0x021D99C0 +_021D94B8: .word 0x021D9980 + thumb_func_end MOD57_021D92F4 + + thumb_func_start MOD57_021D94BC +MOD57_021D94BC: ; 0x021D94BC + push {r4, r5, r6, lr} + mov r6, #7 + add r5, r0, #0 + mov r4, #0 + lsl r6, r6, #6 +_021D94C6: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, r6] + bl FUN_02016A18 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #8 + blo _021D94C6 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009C0C + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r5, r0] + bl FUN_02009E04 + mov r6, #0x4b + mov r4, #0 + lsl r6, r6, #2 +_021D94F4: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, r6] + bl FUN_02008E2C + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021D94F4 + ldr r0, [r5] + bl FUN_0201FD58 + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + pop {r4, r5, r6, pc} + thumb_func_end MOD57_021D94BC + + thumb_func_start MOD57_021D951C +MOD57_021D951C: ; 0x021D951C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #8 + blo _021D952E + bl ErrorHandling +_021D952E: + cmp r6, #3 + bls _021D9536 + bl ErrorHandling +_021D9536: + lsl r7, r4, #2 + mov r0, #0x57 + add r1, r5, r7 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02020354 + mov r1, #1 + blx FUN_020B19C4 + str r0, [sp] + lsl r0, r4, #5 + str r0, [sp, #4] + mov r0, #0x1e + add r1, r5, r7 + lsl r0, r0, #4 + ldr r0, [r1, r0] + lsl r5, r6, #5 + ldr r4, [r0, #0xc] + mov r1, #0x20 + add r0, r4, r5 + blx DC_FlushRange + ldr r2, [sp] + ldr r1, [sp, #4] + add r0, r4, r5 + add r1, r2, r1 + mov r2, #0x20 + blx GX_LoadOBJPltt + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD57_021D951C + + thumb_func_start MOD57_021D9578 +MOD57_021D9578: ; 0x021D9578 + push {r4, lr} + sub sp, #0x10 + ldr r4, _021D95A4 ; =0x021D9950 + 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_0201D040 + mov r0, #2 + mov r1, #0x19 + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_021D95A4: .word 0x021D9950 + thumb_func_end MOD57_021D9578 + + thumb_func_start MOD57_021D95A8 +MOD57_021D95A8: ; 0x021D95A8 + mov r2, #0 + mov r1, #0xff +_021D95AC: + strb r2, [r0] + strb r1, [r0, #1] + add r2, r2, #1 + add r0, r0, #2 + cmp r2, #4 + blt _021D95AC + bx lr + .align 2, 0 + thumb_func_end MOD57_021D95A8 + + thumb_func_start MOD57_021D95BC +MOD57_021D95BC: ; 0x021D95BC + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD57_021D95F4 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD57_021D9624 + cmp r0, #1 + beq _021D95F0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD57_021D965C + cmp r0, #1 + beq _021D95F0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD57_021D9694 + cmp r0, #1 +_021D95F0: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD57_021D95BC + + thumb_func_start MOD57_021D95F4 +MOD57_021D95F4: ; 0x021D95F4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r4, #0 + add r5, r7, #0 + mov r6, #0xff +_021D95FE: + ldrb r0, [r5, #1] + cmp r0, #0xff + beq _021D9612 + ldrb r0, [r5] + add r0, r0, #3 + bl FUN_020048BC + cmp r0, #0 + bne _021D9612 + strb r6, [r5, #1] +_021D9612: + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _021D95FE + add r0, r7, #0 + bl MOD57_021D96D8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD57_021D95F4 + + thumb_func_start MOD57_021D9624 +MOD57_021D9624: ; 0x021D9624 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r4, #0 + add r1, r6, #0 +_021D962E: + ldrb r0, [r1, #1] + cmp r5, r0 + bne _021D964E + lsl r7, r4, #1 + ldrb r0, [r6, r7] + add r1, r5, #0 + bl MOD57_021D96F4 + ldrb r2, [r6, r7] + add r0, r6, #0 + add r1, r4, #0 + add r3, r5, #0 + bl MOD57_021D96B0 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D964E: + add r4, r4, #1 + add r1, r1, #2 + cmp r4, #4 + blt _021D962E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD57_021D9624 + + thumb_func_start MOD57_021D965C +MOD57_021D965C: ; 0x021D965C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + mov r4, #0 + add r1, r5, #0 +_021D9666: + ldrb r0, [r1, #1] + cmp r0, #0xff + bne _021D9686 + lsl r6, r4, #1 + ldrb r0, [r5, r6] + add r1, r7, #0 + bl MOD57_021D96F4 + ldrb r2, [r5, r6] + add r0, r5, #0 + add r1, r4, #0 + add r3, r7, #0 + bl MOD57_021D96B0 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9686: + add r4, r4, #1 + add r1, r1, #2 + cmp r4, #4 + blt _021D9666 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD57_021D965C + + thumb_func_start MOD57_021D9694 +MOD57_021D9694: ; 0x021D9694 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrb r0, [r5, #6] + add r4, r1, #0 + bl MOD57_021D96F4 + ldrb r2, [r5, #6] + add r0, r5, #0 + mov r1, #3 + add r3, r4, #0 + bl MOD57_021D96B0 + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD57_021D9694 + + thumb_func_start MOD57_021D96B0 +MOD57_021D96B0: ; 0x021D96B0 + push {r4, r5} + cmp r1, #0 + ble _021D96CE + lsl r4, r1, #1 + add r4, r0, r4 +_021D96BA: + sub r5, r4, #2 + ldrb r5, [r5] + sub r1, r1, #1 + strb r5, [r4] + sub r5, r4, #1 + ldrb r5, [r5] + strb r5, [r4, #1] + sub r4, r4, #2 + cmp r1, #0 + bgt _021D96BA +_021D96CE: + strb r2, [r0] + strb r3, [r0, #1] + pop {r4, r5} + bx lr + .align 2, 0 + thumb_func_end MOD57_021D96B0 + + thumb_func_start MOD57_021D96D8 +MOD57_021D96D8: ; 0x021D96D8 + mov r3, #0 + mov r1, #0xff +_021D96DC: + ldrb r2, [r0] + cmp r2, #0xff + bne _021D96E8 + ldrb r2, [r0, #2] + strb r2, [r0] + strb r1, [r0, #2] +_021D96E8: + add r3, r3, #1 + add r0, r0, #2 + cmp r3, #4 + blt _021D96DC + bx lr + .align 2, 0 + thumb_func_end MOD57_021D96D8 + + thumb_func_start MOD57_021D96F4 +MOD57_021D96F4: ; 0x021D96F4 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r2, #0 + add r0, r5, #3 + add r4, r1, #0 + ldr r2, _021D9720 ; =0x00000694 + add r1, r0, #0 + bl FUN_020048A0 + ldr r2, _021D9724 ; =0x021D9A00 + lsl r3, r4, #1 + ldrh r2, [r2, r3] + mov r3, #4 + sub r4, r3, r6 + mov r3, #0x98 + mul r3, r4 + ldr r1, _021D9728 ; =0x0000FFFF + add r0, r5, #3 + sub r2, r2, r3 + bl FUN_02004D20 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D9720: .word 0x00000694 +_021D9724: .word 0x021D9A00 +_021D9728: .word 0x0000FFFF + thumb_func_end MOD57_021D96F4 + + .section .rodata + ; 0x021D972C + .incbin "baserom.nds", 0x2A844C, 0x2E4 |