diff options
Diffstat (limited to 'arm9/modules/13/asm/module_13_thumb.s')
-rw-r--r-- | arm9/modules/13/asm/module_13_thumb.s | 14791 |
1 files changed, 14791 insertions, 0 deletions
diff --git a/arm9/modules/13/asm/module_13_thumb.s b/arm9/modules/13/asm/module_13_thumb.s new file mode 100644 index 00000000..c231800c --- /dev/null +++ b/arm9/modules/13/asm/module_13_thumb.s @@ -0,0 +1,14791 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD13_022172DC +MOD13_022172DC: ; 0x022172DC + str r0, [r1] + mov r0, #1 + strh r0, [r1, #4] + bx lr + + thumb_func_start MOD13_022172E4 +MOD13_022172E4: ; 0x022172E4 + mov r1, #0 + str r1, [r0] + strh r1, [r0, #4] + strh r1, [r0, #6] + bx lr + .align 2, 0 + + thumb_func_start MOD13_022172F0 +MOD13_022172F0: ; 0x022172F0 + push {r4, lr} + sub sp, #0x10 + ldr r0, _02217358 ; =0x02240B3C + ldr r0, [r0] + cmp r0, #0 + bne _02217334 + mov r4, #0 + add r0, sp, #0 + add r1, r4, #0 + mov r2, #0xc + bl MOD13_022174C0 + add r0, sp, #0 + bl RTC_GetTime + cmp r0, #0 + bne _02217322 + ldr r0, [sp] + lsl r0, r0, #0xa + add r1, r4, r0 + ldr r0, [sp, #4] + lsl r0, r0, #3 + add r1, r1, r0 + ldr r0, [sp, #8] + add r4, r1, r0 +_02217322: + ldr r0, _0221735C ; =0x02240B54 + str r4, [r0] + ldr r1, _02217360 ; =0x5D588B65 + str r1, [r0, #4] + ldr r1, _02217364 ; =0x00269EC3 + str r1, [r0, #8] + mov r1, #1 + ldr r0, _02217358 ; =0x02240B3C + str r1, [r0] +_02217334: + ldr r0, _0221735C ; =0x02240B54 + ldr r3, [r0, #8] + ldr r2, [r0, #4] + ldr r1, [r0] + mul r2, r1 + add r1, r3, r2 + str r1, [r0] + lsr r1, r1, #0x10 + ldr r0, _02217368 ; =0x00007FFF + mul r1, r0 + lsr r0, r1, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add sp, #0x10 + pop {r4} + pop {r3} + bx r3 + nop +_02217358: .word 0x02240B3C +_0221735C: .word 0x02240B54 +_02217360: .word 0x5D588B65 +_02217364: .word 0x00269EC3 +_02217368: .word 0x00007FFF + + thumb_func_start MOD13_0221736C +MOD13_0221736C: ; 0x0221736C + mov r2, #0 + ldrsb r1, [r0, r2] + cmp r1, #0 + beq _0221737C +_02217374: + add r2, r2, #1 + ldrsb r1, [r0, r2] + cmp r1, #0 + bne _02217374 +_0221737C: + add r0, r2, #0 + bx lr + + thumb_func_start MOD13_02217380 +MOD13_02217380: ; 0x02217380 + asr r2, r0, #8 + mov r1, #0xff + and r2, r1 + lsl r1, r0, #8 + ldr r0, _02217394 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + bx lr + .align 2, 0 +_02217394: .word 0x0000FF00 + + thumb_func_start MOD13_02217398 +MOD13_02217398: ; 0x02217398 + push {r4} + sub sp, #4 + lsl r1, r0, #0x18 + ldr r2, _022173C4 ; =0xFF000000 + and r1, r2 + lsl r4, r0, #8 + ldr r2, _022173C8 ; =0x00FF0000 + and r4, r2 + lsr r3, r0, #0x18 + mov r2, #0xff + and r3, r2 + lsr r2, r0, #8 + ldr r0, _022173CC ; =0x0000FF00 + and r2, r0 + orr r3, r2 + orr r4, r3 + orr r1, r4 + add r0, r1, #0 + add sp, #4 + pop {r4} + bx lr + nop +_022173C4: .word 0xFF000000 +_022173C8: .word 0x00FF0000 +_022173CC: .word 0x0000FF00 + + thumb_func_start MOD13_022173D0 +MOD13_022173D0: ; 0x022173D0 + asr r2, r0, #8 + mov r1, #0xff + and r2, r1 + lsl r1, r0, #8 + ldr r0, _022173E4 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + bx lr + .align 2, 0 +_022173E4: .word 0x0000FF00 + + thumb_func_start MOD13_022173E8 +MOD13_022173E8: ; 0x022173E8 + push {r4} + sub sp, #4 + lsl r1, r0, #0x18 + ldr r2, _02217414 ; =0xFF000000 + and r1, r2 + lsl r4, r0, #8 + ldr r2, _02217418 ; =0x00FF0000 + and r4, r2 + lsr r3, r0, #0x18 + mov r2, #0xff + and r3, r2 + lsr r2, r0, #8 + ldr r0, _0221741C ; =0x0000FF00 + and r2, r0 + orr r3, r2 + orr r4, r3 + orr r1, r4 + add r0, r1, #0 + add sp, #4 + pop {r4} + bx lr + nop +_02217414: .word 0xFF000000 +_02217418: .word 0x00FF0000 +_0221741C: .word 0x0000FF00 + + thumb_func_start MOD13_02217420 +MOD13_02217420: ; 0x02217420 + ldr r3, _02217424 ; =0x0209A7B8 + bx r3 + .align 2, 0 +_02217424: .word 0x0209A7B8 + + thumb_func_start MOD13_02217428 +MOD13_02217428: ; 0x02217428 + strb r2, [r1] + ldr r3, _02217430 ; =0x0209A9A4 + bx r3 + nop +_02217430: .word 0x0209A9A4 + + thumb_func_start MOD13_02217434 +MOD13_02217434: ; 0x02217434 + ldr r3, _02217438 ; =0x0209A9D0 + bx r3 + .align 2, 0 +_02217438: .word 0x0209A9D0 + + thumb_func_start MOD13_0221743C +MOD13_0221743C: ; 0x0221743C + bx lr + .align 2, 0 + + thumb_func_start MOD13_02217440 +MOD13_02217440: ; 0x02217440 + push {r4, r5, lr} + sub sp, #4 + ldr r5, [sp, #0x14] + ldr r4, [sp, #0x10] + strb r5, [r4] + str r4, [sp] + bl FUN_0209A7D0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + + thumb_func_start MOD13_02217458 +MOD13_02217458: ; 0x02217458 + push {r4, r5, r6, lr} + sub sp, #8 + ldr r5, [sp, #0x18] + mov r4, #0 + ldr r2, [r1] + ldr r0, [r1, #4] + str r2, [sp] + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, _022174A0 ; =0x01FF6210 + mul r0, r1 + mov r1, #0x40 + bl _s32_div_f + asr r1, r0, #0x1f + add r6, r4, r0 + adc r4, r1 + ldr r0, [r5, #4] + ldr r1, _022174A0 ; =0x01FF6210 + mul r0, r1 + mov r1, #0x40 + bl _s32_div_f + asr r1, r0, #0x1f + add r2, r6, r0 + adc r4, r1 + add r0, sp, #0 + mov r1, #1 + add r3, r4, #0 + bl FUN_0209A0AC + add sp, #8 + pop {r4, r5, r6} + pop {r3} + bx r3 + nop +_022174A0: .word 0x01FF6210 + + thumb_func_start MOD13_022174A4 +MOD13_022174A4: ; 0x022174A4 + push {r4, r5, lr} + sub sp, #4 + ldr r4, [sp, #0x14] + ldr r5, [r4] + ldr r4, [sp, #0x10] + strb r5, [r4] + str r4, [sp] + bl FUN_0209A880 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_022174C0 +MOD13_022174C0: ; 0x022174C0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + ldr r3, _022174C8 ; =0x020CE34C + bx r3 + .align 2, 0 +_022174C8: .word 0x020CE34C + + thumb_func_start MOD13_022174CC +MOD13_022174CC: ; 0x022174CC + add r3, r0, #0 + add r0, r1, #0 + add r1, r3, #0 + ldr r3, _022174D8 ; =0x020CE3E0 + bx r3 + nop +_022174D8: .word 0x020CE3E0 + + thumb_func_start MOD13_022174DC +MOD13_022174DC: ; 0x022174DC + push {r4} + sub sp, #4 + mov r4, #0 + b _022174E8 +_022174E4: + add r0, r0, #1 + add r1, r1, #1 +_022174E8: + add r3, r2, #0 + sub r2, r2, #1 + cmp r3, #0 + ble _022174FA + ldrb r4, [r0] + ldrb r3, [r1] + sub r4, r4, r3 + cmp r4, #0 + beq _022174E4 +_022174FA: + add r0, r4, #0 + add sp, #4 + pop {r4} + bx lr + .align 2, 0 + + thumb_func_start MOD13_02217504 +MOD13_02217504: ; 0x02217504 + push {lr} + sub sp, #4 + bl THUNK_FUN_02099BC8 + cmp r0, #0 + bge _0221751A + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r3} + bx r3 +_0221751A: + bl MOD13_02219C60 + cmp r0, #0 + beq _02217526 + mov r0, #1 + b _02217528 +_02217526: + mov r0, #0 +_02217528: + neg r0, r0 + add sp, #4 + pop {r3} + bx r3 + + thumb_func_start MOD13_02217530 +MOD13_02217530: ; 0x02217530 + push {r4, r5, lr} + sub sp, #4 + add r5, r1, #0 + add r4, r2, #0 + bl MOD13_022173E8 + ldr r1, _0221758C ; =0x0223F7C8 + str r0, [r1, #0x10] + add r0, r5, #0 + bl MOD13_022173E8 + ldr r1, _0221758C ; =0x0223F7C8 + str r0, [r1, #0x14] + add r0, r4, #0 + bl MOD13_022173E8 + ldr r1, _0221758C ; =0x0223F7C8 + str r0, [r1, #0x18] + add r0, r1, #0 + bl FUN_0209A2C0 + cmp r0, #0 + bge _0221756A + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 +_0221756A: + ldr r5, _02217590 ; =0x021C8F04 + ldr r0, [r5] + cmp r0, #0 + bne _02217580 + mov r4, #0x64 +_02217574: + add r0, r4, #0 + bl OS_Sleep + ldr r0, [r5] + cmp r0, #0 + beq _02217574 +_02217580: + mov r0, #0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + nop +_0221758C: .word 0x0223F7C8 +_02217590: .word 0x021C8F04 + + thumb_func_start MOD13_02217594 +MOD13_02217594: ; 0x02217594 + push {lr} + sub sp, #4 + add r0, r1, #0 + ldr r1, _022175A8 ; =0x0224190C + ldr r1, [r1] + blx r1 + add sp, #4 + pop {r3} + bx r3 + nop +_022175A8: .word 0x0224190C + + thumb_func_start MOD13_022175AC +MOD13_022175AC: ; 0x022175AC + push {lr} + sub sp, #4 + cmp r1, #0 + ble _022175C2 + add r0, r1, #0 + ldr r1, _022175CC ; =0x02241900 + ldr r1, [r1] + blx r1 + add sp, #4 + pop {r3} + bx r3 +_022175C2: + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 + nop +_022175CC: .word 0x02241900 + + thumb_func_start MOD13_022175D0 +MOD13_022175D0: ; 0x022175D0 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + add r0, r6, #0 + mov r1, #2 + bl _s32_div_f + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, r7 + add r2, r7, #0 + bl MOD13_022174CC + add r0, r4, r7 + add r1, r5, #0 + add r2, r7, #0 + bl MOD13_022174CC + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD13_022174CC + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221760C +MOD13_0221760C: ; 0x0221760C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, r2, #0 + mov r1, #2 + bl _s32_div_f + mov r6, #0 + cmp r0, #0 + ble _02217630 +_02217620: + add r3, r0, r6 + ldrb r2, [r4, r3] + ldrsb r1, [r5, r6] + eor r2, r1 + strb r2, [r4, r3] + add r6, r6, #1 + cmp r6, r0 + blt _02217620 +_02217630: + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217638 +MOD13_02217638: ; 0x02217638 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r1, #0 + str r3, [sp] + ldr r4, [sp, #0x18] + add r0, r2, #0 + mov r1, #2 + bl _s32_div_f + add r7, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + bl _s32_div_f + add r2, r1, #0 + mov r1, #0 + cmp r7, #0 + ble _0221767A + add r6, r1, #0 +_02217660: + strb r1, [r5, r1] + ldrsb r0, [r5, r1] + ldr r3, [sp] + ldrsb r3, [r3, r2] + add r2, r2, #1 + eor r0, r3 + strb r0, [r5, r1] + cmp r2, r4 + blt _02217674 + add r2, r6, #0 +_02217674: + add r1, r1, #1 + cmp r1, r7 + blt _02217660 +_0221767A: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217684 +MOD13_02217684: ; 0x02217684 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + add r5, r1, #0 + str r2, [sp, #4] + str r3, [sp, #8] + add r0, r5, #0 + mov r1, #2 + bl _s32_div_f + bl MOD13_022198B4 + add r6, r0, #0 + cmp r6, #0 + bne _022176AE + mov r0, #0 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022176AE: + add r0, r5, #0 + bl MOD13_022198B4 + str r0, [sp, #0xc] + cmp r0, #0 + bne _022176CC + add r0, r6, #0 + bl MOD13_022198A0 + mov r0, #0 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022176CC: + mov r4, #0 +_022176CE: + ldr r0, [sp, #8] + str r0, [sp] + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + ldr r3, [sp, #4] + bl MOD13_02217638 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + bl MOD13_0221760C + add r0, r7, #0 + add r1, r5, #0 + ldr r2, [sp, #0xc] + bl MOD13_022175D0 + add r4, r4, #1 + cmp r4, #2 + blt _022176CE + add r0, r6, #0 + bl MOD13_022198A0 + ldr r0, [sp, #0xc] + bl MOD13_022198A0 + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217710 +MOD13_02217710: ; 0x02217710 + push {r4, r5, r6, r7} + mov r6, #0 + add r4, r6, #0 + ldr r2, _02217744 ; =0xEDB88320 + mov r3, #1 +_0221771A: + add r7, r6, #0 + add r5, r4, #0 +_0221771E: + add r0, r7, #0 + and r0, r3 + cmp r0, #0 + beq _0221772C + lsr r7, r7, #1 + eor r7, r2 + b _0221772E +_0221772C: + lsr r7, r7, #1 +_0221772E: + add r5, r5, #1 + cmp r5, #8 + blt _0221771E + stmia r1!, {r7} + add r6, r6, #1 + ldr r0, _02217748 ; =0x00000100 + cmp r6, r0 + blt _0221771A + pop {r4, r5, r6, r7} + bx lr + nop +_02217744: .word 0xEDB88320 +_02217748: .word 0x00000100 + + thumb_func_start MOD13_0221774C +MOD13_0221774C: ; 0x0221774C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r7, r1, #0 + add r4, r2, #0 + ldr r6, [sp, #0x18] + cmp r3, #0 + bne _02217764 + add r0, r3, #0 + add r1, r6, #0 + bl MOD13_02217710 +_02217764: + mov r1, #0 + cmp r4, #0 + ble _02217782 + mov r2, #0xff +_0221776C: + lsr r0, r5, #8 + ldrb r3, [r7, r1] + eor r5, r3 + and r5, r2 + lsl r3, r5, #2 + ldr r3, [r6, r3] + add r5, r0, #0 + eor r5, r3 + add r1, r1, #1 + cmp r1, r4 + blt _0221776C +_02217782: + add r0, r5, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221778C +MOD13_0221778C: ; 0x0221778C + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r2, r1, #0 + ldr r0, _022177B4 ; =0x02240E60 + str r0, [sp] + mov r3, #0 + mvn r0, r3 + add r1, r4, #0 + bl MOD13_0221774C + mov r1, #0 + mvn r1, r1 + eor r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add sp, #8 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_022177B4: .word 0x02240E60 + + thumb_func_start MOD13_022177B8 +MOD13_022177B8: ; 0x022177B8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + ldr r4, [r5, #8] + ldr r0, [r5, #0xc] + str r0, [sp] + ldr r0, [r5] + add r0, r0, #1 + ldr r1, [sp] + bl _u32_div_f + lsl r0, r1, #0x18 + lsr r6, r0, #0x18 + ldrb r7, [r4, r6] + ldr r0, [r5, #4] + add r0, r7, r0 + ldr r1, [sp] + bl _u32_div_f + lsl r0, r1, #0x18 + lsr r1, r0, #0x18 + ldrb r0, [r4, r1] + str r6, [r5] + str r1, [r5, #4] + strb r7, [r4, r1] + strb r0, [r4, r6] + add r0, r7, r0 + ldr r1, [r5, #0xc] + bl _u32_div_f + ldrb r0, [r4, r1] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217800 +MOD13_02217800: ; 0x02217800 + push {r4, r5, r6, r7, lr} + sub sp, #4 + str r0, [sp] + add r5, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + mov r4, #0 + cmp r7, #0 + bls _02217828 +_02217812: + ldr r0, [sp] + bl MOD13_022177B8 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldrb r0, [r6, r4] + eor r1, r0 + strb r1, [r5, r4] + add r4, r4, #1 + cmp r4, r7 + blo _02217812 +_02217828: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_02217830 +MOD13_02217830: ; 0x02217830 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + str r1, [sp, #4] + str r2, [sp, #8] + str r3, [sp, #0xc] + ldr r5, [r0, #8] + mov r0, #0 + ldr r1, [sp] + str r0, [r1, #4] + ldr r2, [r1, #4] + str r2, [r1] + lsl r2, r3, #0 + str r2, [r1, #0xc] + lsl r1, r3, #0 + cmp r1, #0 + bls _0221785C +_02217852: + strb r0, [r5, r0] + add r0, r0, #1 + ldr r1, [sp, #0xc] + cmp r0, r1 + blo _02217852 +_0221785C: + mov r1, #0 + add r6, r1, #0 + add r4, r1, #0 + ldr r0, [sp, #0xc] + cmp r0, #0 + bls _02217894 + str r1, [sp, #0x10] +_0221786A: + ldrb r7, [r5, r4] + ldr r0, [sp, #4] + ldrb r0, [r0, r6] + add r0, r1, r0 + add r0, r7, r0 + ldr r1, [sp] + ldr r1, [r1, #0xc] + bl _u32_div_f + ldrb r0, [r5, r1] + strb r7, [r5, r1] + strb r0, [r5, r4] + add r6, r6, #1 + ldr r0, [sp, #8] + cmp r6, r0 + blo _0221788C + ldr r6, [sp, #0x10] +_0221788C: + add r4, r4, #1 + ldr r0, [sp, #0xc] + cmp r4, r0 + blo _0221786A +_02217894: + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221789C +MOD13_0221789C: ; 0x0221789C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + add r0, r4, #0 + bl MOD13_022198B4 + str r0, [sp, #8] + cmp r0, #0 + bne _022178C6 + mov r0, #2 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022178C6: + ldr r0, _02217928 ; =0x02240B7C + ldr r1, [sp, #0x28] + mov r2, #2 + bl MOD13_022174CC + ldr r0, _0221792C ; =0x02240B7E + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x30] + bl MOD13_022174CC + add r0, sp, #0 + ldr r1, _02217928 ; =0x02240B7C + ldr r2, [sp, #0x30] + add r2, r2, #2 + add r3, r4, #0 + bl MOD13_02217830 + add r0, sp, #0 + add r1, r5, #0 + add r2, r7, #0 + add r3, r4, #0 + bl MOD13_02217800 + add r0, r5, #0 + add r1, r4, #0 + bl MOD13_0221778C + cmp r0, r6 + beq _02217918 + mov r0, #0x12 + bl MOD13_02218BF4 + ldr r0, [sp, #8] + bl MOD13_022198A0 + mov r0, #0 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217918: + ldr r0, [sp, #8] + bl MOD13_022198A0 + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02217928: .word 0x02240B7C +_0221792C: .word 0x02240B7E + + thumb_func_start MOD13_02217930 +MOD13_02217930: ; 0x02217930 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + add r7, r1, #0 + add r5, r2, #0 + add r4, r3, #0 + add r1, r5, #0 + bl MOD13_0221778C + strb r0, [r4] + add r0, r5, #0 + bl MOD13_022198B4 + str r0, [sp, #0xc] + cmp r0, #0 + bne _0221795C + mov r0, #0 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221795C: + bl MOD13_022172F0 + add r1, sp, #0 + strh r0, [r1] + ldr r0, [sp, #0x28] + add r1, sp, #0 + mov r2, #2 + bl MOD13_022174CC + ldr r0, _022179AC ; =0x02240B7C + ldr r1, [sp, #0x28] + mov r2, #2 + bl MOD13_022174CC + ldr r0, _022179B0 ; =0x02240B7E + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x30] + bl MOD13_022174CC + add r0, sp, #4 + ldr r1, _022179AC ; =0x02240B7C + ldr r2, [sp, #0x30] + add r2, r2, #2 + add r3, r5, #0 + bl MOD13_02217830 + add r0, sp, #4 + add r1, r7, #0 + add r2, r6, #0 + add r3, r5, #0 + bl MOD13_02217800 + ldr r0, [sp, #0xc] + bl MOD13_022198A0 + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_022179AC: .word 0x02240B7C +_022179B0: .word 0x02240B7E + + thumb_func_start MOD13_022179B4 +MOD13_022179B4: ; 0x022179B4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + add r7, r3, #0 + add r0, sp, #8 + mov r1, #0 + mov r2, #8 + bl MOD13_022174C0 + mov r1, #2 + add r0, sp, #8 + strb r1, [r0, #1] + ldr r0, _02217A14 ; =0x00005790 + bl MOD13_022173D0 + add r1, sp, #8 + strh r0, [r1, #2] + ldr r0, _02217A18 ; =0x02240B60 + ldr r0, [r0, #0x10] + bl MOD13_022173E8 + str r0, [sp, #0xc] + cmp r4, #0xff + beq _022179F2 + ldr r1, _02217A18 ; =0x02240B60 + mov r0, #0x18 + ldrsb r0, [r1, r0] + cmp r0, #0 + bne _022179F8 +_022179F2: + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0xc] +_022179F8: + add r0, sp, #8 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + mov r3, #0 + bl MOD13_02217440 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02217A14: .word 0x00005790 +_02217A18: .word 0x02240B60 + + thumb_func_start MOD13_02217A1C +MOD13_02217A1C: ; 0x02217A1C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + mov r0, #1 + bl MOD13_022173D0 + strh r0, [r5] + mov r0, #0 + strh r0, [r5, #2] + strh r0, [r5, #4] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #6] + mov r0, #0 + strh r0, [r5, #8] + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #0xa] + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #0xc] + add r1, sp, #8 + mov r0, #0x10 + ldrsb r0, [r1, r0] + strb r0, [r5, #0xe] + mov r0, #0x14 + ldrsb r0, [r1, r0] + strb r0, [r5, #0xf] + add r5, #0x10 + add r0, r5, #0 + ldr r1, [sp, #0x20] + mov r2, #8 + bl MOD13_022174CC + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217A7C +MOD13_02217A7C: ; 0x02217A7C + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + add r4, r3, #0 + cmp r0, #1 + bne _02217AC0 + mov r1, #1 + ldr r0, [sp, #0x18] + strh r1, [r0] + add r0, r5, #2 + str r0, [sp] + ldr r0, _02217AD4 ; =0x02240B4C + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + add r0, r2, #0 + add r1, r5, #4 + mov r2, #0 + ldrsh r2, [r4, r2] + ldr r3, [sp, #0x1c] + bl MOD13_02217930 + ldrh r0, [r4] + bl MOD13_022173D0 + strh r0, [r5] + mov r0, #0 + ldrsh r0, [r4, r0] + add r0, r0, #4 + strh r0, [r4] + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 +_02217AC0: + add r0, r5, #0 + add r1, r2, #0 + mov r2, #0 + ldrsh r2, [r4, r2] + bl MOD13_022174CC + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 + .align 2, 0 +_02217AD4: .word 0x02240B4C + + thumb_func_start MOD13_02217AD8 +MOD13_02217AD8: ; 0x02217AD8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + mov r6, #0 + ldr r1, _02217B60 ; =0x02240B60 + mov r0, #0x19 + ldrsb r0, [r1, r0] + strb r0, [r5] + mov r0, #1 + strb r0, [r5, #1] + ldr r0, [r1, #4] + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + add r0, r5, #6 + ldr r1, [r1] + add r2, r4, #0 + bl MOD13_022174CC + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #2] + add r0, r4, #6 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, r0, #1 + mov r1, #2 + bl _s32_div_f + lsl r0, r0, #0x11 + asr r7, r0, #0x10 + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #4] + add r0, r6, r7 + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + add r4, r5, r7 + mov r0, #0x60 + strb r0, [r5, r7] + mov r0, #0 + strb r0, [r4, #1] + bl MOD13_022173D0 + strh r0, [r4, #4] + mov r0, #0xe + bl MOD13_022173E8 + str r0, [sp] + add r0, r4, #6 + add r1, sp, #0 + mov r2, #4 + bl MOD13_022174CC + mov r0, #4 + bl MOD13_022173D0 + strh r0, [r4, #2] + add r6, #0xa + lsl r0, r6, #0x10 + asr r0, r0, #0x10 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02217B60: .word 0x02240B60 + + thumb_func_start MOD13_02217B64 +MOD13_02217B64: ; 0x02217B64 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r1, #0 + add r6, r2, #0 + ldr r0, _02217BC4 ; =0x02240B48 + ldr r4, [r0] + add r0, r4, #0 + mov r1, #0 + ldr r2, _02217BC8 ; =0x000005DC + bl MOD13_022174C0 + add r0, sp, #0xc + add r5, #0x10 + add r1, r5, #0 + mov r2, #8 + bl MOD13_022174CC + ldr r0, _02217BCC ; =0x0223F820 + bl MOD13_0221736C + add r3, r0, #0 + add r0, sp, #0xc + mov r1, #8 + ldr r2, _02217BCC ; =0x0223F820 + bl MOD13_02217684 + mov r2, #0 + str r2, [sp] + mov r0, #0x11 + str r0, [sp, #4] + add r0, sp, #0xc + str r0, [sp, #8] + add r0, r4, #0 + ldr r1, _02217BD0 ; =0x00003000 + add r3, r2, #0 + bl MOD13_02217A1C + add r0, r4, #0 + mov r1, #0x18 + mov r2, #0 + add r3, r6, #0 + bl MOD13_022179B4 + mov r0, #0 + add sp, #0x18 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_02217BC4: .word 0x02240B48 +_02217BC8: .word 0x000005DC +_02217BCC: .word 0x0223F820 +_02217BD0: .word 0x00003000 + + thumb_func_start MOD13_02217BD4 +MOD13_02217BD4: ; 0x02217BD4 + push {r4, r5, r6, lr} + sub sp, #0x28 + add r5, r1, #0 + add r6, r2, #0 + mov r1, #0 + add r0, sp, #0xc + strb r1, [r0] + strh r1, [r0, #2] + strh r1, [r0, #4] + ldr r0, _02217CB0 ; =0x02240B48 + ldr r4, [r0] + add r0, sp, #0x1c + mov r2, #8 + bl MOD13_022174C0 + add r0, r4, #0 + mov r1, #0 + ldr r2, _02217CB4 ; =0x000005DC + bl MOD13_022174C0 + mov r1, #2 + add r0, sp, #0xc + strb r1, [r0, #0x10] + mov r1, #0 + strb r1, [r0, #0x11] + mov r0, #4 + bl MOD13_022173D0 + add r1, sp, #0xc + strh r0, [r1, #0x12] + ldr r0, _02217CB8 ; =0x02240B60 + ldr r0, [r0, #8] + str r0, [sp, #0x20] + bl MOD13_022173E8 + str r0, [sp, #0x20] + mov r1, #8 + add r0, sp, #0xc + strh r1, [r0, #2] + add r0, sp, #0x10 + str r0, [sp] + add r0, sp, #0xc + str r0, [sp, #4] + ldr r0, _02217CBC ; =0x02240B34 + ldr r0, [r0] + add r1, r4, #0 + add r1, #0x18 + add r2, sp, #0x1c + add r3, sp, #0xc + add r3, #2 + bl MOD13_02217A7C + add r0, sp, #0x10 + add r0, #2 + add r5, #8 + add r1, r5, #0 + mov r2, #8 + bl MOD13_022174CC + add r0, sp, #0x10 + add r0, #2 + mov r1, #8 + ldr r2, _02217CC0 ; =0x0223F820 + mov r3, #6 + bl MOD13_02217684 + cmp r0, #0 + beq _02217C6E + mov r0, #2 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + add sp, #0x28 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02217C6E: + add r3, sp, #0xc + mov r0, #0 + ldrsb r0, [r3, r0] + str r0, [sp] + mov r0, #0x11 + str r0, [sp, #4] + add r0, sp, #0x10 + add r0, #2 + str r0, [sp, #8] + add r0, r4, #0 + ldr r1, _02217CC4 ; =0x00002000 + mov r2, #2 + ldrsh r2, [r3, r2] + mov r5, #4 + ldrsh r3, [r3, r5] + bl MOD13_02217A1C + add r2, sp, #0xc + mov r1, #2 + ldrsh r0, [r2, r1] + add r0, #0x18 + strh r0, [r2, #2] + add r0, r4, #0 + ldrsh r1, [r2, r1] + mov r2, #0 + add r3, r6, #0 + bl MOD13_022179B4 + mov r0, #0 + add sp, #0x28 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_02217CB0: .word 0x02240B48 +_02217CB4: .word 0x000005DC +_02217CB8: .word 0x02240B60 +_02217CBC: .word 0x02240B34 +_02217CC0: .word 0x0223F820 +_02217CC4: .word 0x00002000 + + thumb_func_start MOD13_02217CC8 +MOD13_02217CC8: ; 0x02217CC8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r7, r1, #0 + str r2, [sp, #0xc] + mov r1, #0 + add r0, sp, #0x10 + strb r1, [r0] + strh r1, [r0, #2] + strh r1, [r0, #4] + ldr r0, _02217E08 ; =0x02240B48 + ldr r5, [r0] + add r0, r5, #0 + ldr r2, _02217E0C ; =0x000005DC + bl MOD13_022174C0 + ldr r0, _02217E10 ; =0x00000210 + bl MOD13_022198B4 + add r4, r0, #0 + cmp r4, #0 + bne _02217D04 + mov r0, #2 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217D04: + mov r1, #0 + ldr r2, _02217E10 ; =0x00000210 + bl MOD13_022174C0 + add r6, r5, #0 + add r6, #0x18 + ldr r0, _02217E14 ; =0x02240B4C + add r1, r7, #0 + mov r2, #8 + bl MOD13_022174CC + add r0, sp, #0x14 + add r0, #2 + ldr r1, _02217E14 ; =0x02240B4C + mov r2, #8 + bl MOD13_022174CC + add r0, r4, #4 + bl MOD13_02217AD8 + add r1, sp, #0x10 + strh r0, [r1, #2] + mov r0, #2 + ldrsh r0, [r1, r0] + cmp r0, #0 + bge _02217D54 + mov r0, #3 + bl MOD13_02218BF4 + cmp r4, #0 + beq _02217D48 + add r0, r4, #0 + bl MOD13_022198A0 +_02217D48: + mov r0, #0 + mvn r0, r0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217D54: + mov r0, #0 + strb r0, [r4] + ldrh r0, [r1, #2] + bl MOD13_022173D0 + strh r0, [r4, #2] + add r1, sp, #0x10 + mov r0, #2 + ldrsh r0, [r1, r0] + add r0, r0, #4 + strh r0, [r1, #2] + add r0, sp, #0x14 + str r0, [sp] + add r0, sp, #0x10 + str r0, [sp, #4] + mov r0, #0 + add r1, r6, #0 + add r2, r4, #0 + add r3, sp, #0x10 + add r3, #2 + bl MOD13_02217A7C + add r1, sp, #0x10 + mov r0, #4 + ldrsh r2, [r1, r0] + mov r0, #0x10 + orr r2, r0 + strh r2, [r1, #4] + add r0, sp, #0x14 + add r0, #2 + mov r1, #8 + ldr r2, _02217E18 ; =0x0223F820 + mov r3, #6 + bl MOD13_02217684 + cmp r0, #0 + beq _02217DBA + mov r0, #2 + bl MOD13_02218BF4 + cmp r4, #0 + beq _02217DAE + add r0, r4, #0 + bl MOD13_022198A0 +_02217DAE: + mov r0, #0 + mvn r0, r0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217DBA: + add r3, sp, #0x10 + mov r0, #0 + ldrsb r0, [r3, r0] + str r0, [sp] + mov r0, #0x11 + str r0, [sp, #4] + add r0, sp, #0x14 + add r0, #2 + str r0, [sp, #8] + add r0, r5, #0 + ldr r1, _02217E1C ; =0x00001000 + mov r2, #2 + ldrsh r2, [r3, r2] + mov r6, #4 + ldrsh r3, [r3, r6] + bl MOD13_02217A1C + add r2, sp, #0x10 + mov r1, #2 + ldrsh r0, [r2, r1] + add r0, #0x18 + strh r0, [r2, #2] + add r0, r5, #0 + ldrsh r1, [r2, r1] + mov r2, #0xff + ldr r3, [sp, #0xc] + bl MOD13_022179B4 + cmp r4, #0 + beq _02217DFC + add r0, r4, #0 + bl MOD13_022198A0 +_02217DFC: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02217E08: .word 0x02240B48 +_02217E0C: .word 0x000005DC +_02217E10: .word 0x00000210 +_02217E14: .word 0x02240B4C +_02217E18: .word 0x0223F820 +_02217E1C: .word 0x00001000 + + thumb_func_start MOD13_02217E20 +MOD13_02217E20: ; 0x02217E20 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + cmp r0, #0 + beq _02217E36 + cmp r0, #1 + beq _02217E4C + cmp r0, #2 + beq _02217E62 + b _02217E78 +_02217E36: + mov r0, #2 + bl MOD13_02218870 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD13_02217CC8 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02217E4C: + mov r0, #3 + bl MOD13_02218870 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD13_02217BD4 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02217E62: + mov r0, #5 + bl MOD13_02218870 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD13_02217B64 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02217E78: + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217E84 +MOD13_02217E84: ; 0x02217E84 + mov r2, #0 + mov r1, #0x10 + and r0, r1 + cmp r0, #0 + beq _02217E90 + mov r2, #1 +_02217E90: + add r0, r2, #0 + bx lr + + thumb_func_start MOD13_02217E94 +MOD13_02217E94: ; 0x02217E94 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + add r4, r1, #0 + add r6, r2, #0 + str r3, [sp, #4] + mov r5, #0 + cmp r6, #0 + bgt _02217EB2 + mov r0, #1 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217EB2: + ldr r1, _02217FA0 ; =0x0223F7B8 + add r7, r1, r0 +_02217EB6: + add r2, r4, #0 + ldrb r1, [r4] + ldrb r0, [r7] + cmp r1, r0 + beq _02217EDC + ldrh r0, [r4, #2] + bl MOD13_02217380 + add r0, r0, #4 + add r4, r4, r0 + sub r6, r6, r0 + cmp r6, #0 + bgt _02217EB6 + mov r0, #3 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217EDC: + add r4, r4, #4 + ldrh r0, [r2, #2] + bl MOD13_02217380 + add r7, r0, #0 + ldr r0, _02217FA4 ; =0x00000350 + ldr r1, [sp] + mul r1, r0 + ldr r0, [sp, #4] + add r6, r0, r1 + ldr r0, [sp, #0x28] + ldr r1, [sp] + add r1, r1, #3 + lsl r1, r1, #7 + add r0, r0, r1 + str r0, [sp, #8] + mov r0, #2 + mvn r0, r0 + str r0, [sp, #0xc] +_02217F02: + ldrb r0, [r4] + cmp r0, #0xa + bhi _02217F76 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_02217F16: ; jump table + .short _02217F76 - _02217F16 + 1 ; case 0 + .short _02217F76 - _02217F16 + 1 ; case 1 + .short _02217F76 - _02217F16 + 1 ; case 2 + .short _02217F2C - _02217F16 + 1 ; case 3 + .short _02217F3C - _02217F16 + 1 ; case 4 + .short _02217F4C - _02217F16 + 1 ; case 5 + .short _02217F5C - _02217F16 + 1 ; case 6 + .short _02217F76 - _02217F16 + 1 ; case 7 + .short _02217F76 - _02217F16 + 1 ; case 8 + .short _02217F76 - _02217F16 + 1 ; case 9 + .short _02217F6C - _02217F16 + 1 ; case 10 +_02217F2C: + add r0, r4, #0 + add r1, r6, #0 + add r1, #8 + bl MOD13_022180CC + mov r1, #1 + orr r5, r1 + b _02217F78 +_02217F3C: + add r0, r4, #0 + ldr r1, _02217FA8 ; =0x00000138 + add r1, r6, r1 + bl MOD13_022180CC + mov r1, #2 + orr r5, r1 + b _02217F78 +_02217F4C: + add r0, r4, #0 + ldr r1, _02217FAC ; =0x00000268 + add r1, r6, r1 + bl MOD13_02217FFC + mov r1, #4 + orr r5, r1 + b _02217F78 +_02217F5C: + add r0, r4, #0 + ldr r1, _02217FB0 ; =0x000002D8 + add r1, r6, r1 + bl MOD13_02217FFC + mov r1, #8 + orr r5, r1 + b _02217F78 +_02217F6C: + add r0, r4, #0 + ldr r1, [sp, #8] + bl MOD13_02217FB8 + b _02217F78 +_02217F76: + ldr r0, [sp, #0xc] +_02217F78: + cmp r0, #0 + bne _02217F96 + ldrh r0, [r4, #2] + bl MOD13_02217380 + add r0, r0, #4 + add r4, r4, r0 + sub r7, r7, r0 + cmp r7, #0 + bgt _02217F02 + ldr r0, _02217FB4 ; =0x02240B60 + ldr r1, [r0, #0xc] + orr r1, r5 + str r1, [r0, #0xc] + mov r0, #0 +_02217F96: + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02217FA0: .word 0x0223F7B8 +_02217FA4: .word 0x00000350 +_02217FA8: .word 0x00000138 +_02217FAC: .word 0x00000268 +_02217FB0: .word 0x000002D8 +_02217FB4: .word 0x02240B60 + + thumb_func_start MOD13_02217FB8 +MOD13_02217FB8: ; 0x02217FB8 + push {r4, r5, lr} + sub sp, #4 + add r5, r1, #0 + add r4, r0, #6 + ldrh r0, [r4, #2] + bl MOD13_02217380 + add r2, r0, #0 + cmp r2, #0 + bgt _02217FD8 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 +_02217FD8: + ldrb r0, [r4] + cmp r0, #0x70 + beq _02217FEA + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 +_02217FEA: + add r0, r5, #0 + add r1, r4, #6 + bl MOD13_022174CC + mov r0, #0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + + thumb_func_start MOD13_02217FFC +MOD13_02217FFC: ; 0x02217FFC + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r7, r0, #0 + add r6, r1, #0 + add r5, r7, #6 +_02218006: + ldrh r0, [r5, #2] + bl MOD13_02217380 + add r4, r0, #0 + ldrb r0, [r5] + cmp r0, #0x35 + bgt _0221801E + cmp r0, #0x35 + bge _0221803E + cmp r0, #0x30 + beq _0221802E + b _0221804E +_0221801E: + cmp r0, #0x40 + bgt _02218028 + cmp r0, #0x40 + beq _0221802E + b _0221804E +_02218028: + cmp r0, #0x45 + beq _0221803E + b _0221804E +_0221802E: + cmp r4, #0x40 + bls _0221804E + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221803E: + cmp r4, #0x21 + bls _0221804E + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221804E: + cmp r0, #0x35 + bgt _0221805C + cmp r0, #0x35 + bge _0221807C + cmp r0, #0x30 + beq _0221806C + b _022180A4 +_0221805C: + cmp r0, #0x40 + bgt _02218066 + cmp r0, #0x40 + beq _0221806C + b _022180A4 +_02218066: + cmp r0, #0x45 + beq _0221807C + b _022180A4 +_0221806C: + add r0, r6, #0 + add r0, #0x30 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + str r4, [r6, #4] + b _022180B0 +_0221807C: + cmp r4, #0 + beq _02218096 + sub r0, r4, #1 + add r0, r5, r0 + ldrb r0, [r0, #6] + cmp r0, #0 + beq _02218096 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218096: + add r0, r6, #0 + add r0, #8 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + b _022180B0 +_022180A4: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022180B0: + ldrh r0, [r5, #4] + cmp r0, #0 + beq _022180C0 + bl MOD13_02217380 + add r1, r7, #6 + add r5, r1, r0 + b _02218006 +_022180C0: + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_022180CC +MOD13_022180CC: ; 0x022180CC + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r7, r0, #0 + add r6, r1, #0 + add r5, r7, #6 +_022180D6: + ldrh r0, [r5, #2] + bl MOD13_02217380 + add r4, r0, #0 + ldrb r0, [r5] + cmp r0, #0x21 + bgt _02218114 + cmp r0, #0x21 + bge _02218138 + cmp r0, #0x15 + bgt _0221810E + add r1, r0, #0 + sub r1, #0x10 + cmp r1, #0 + blt _02218158 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #8] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r1, pc + bx r1 +_02218102: ; jump table + .short _02218128 - _02218102 + 1 ; case 0 + .short _02218128 - _02218102 + 1 ; case 1 + .short _02218128 - _02218102 + 1 ; case 2 + .short _02218128 - _02218102 + 1 ; case 3 + .short _02218158 - _02218102 + 1 ; case 4 + .short _02218148 - _02218102 + 1 ; case 5 +_0221810E: + cmp r0, #0x20 + beq _02218138 + b _02218158 +_02218114: + cmp r0, #0x23 + bgt _02218122 + cmp r0, #0x23 + bge _02218138 + cmp r0, #0x22 + beq _02218138 + b _02218158 +_02218122: + cmp r0, #0x25 + beq _02218148 + b _02218158 +_02218128: + cmp r4, #5 + bls _02218158 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218138: + cmp r4, #0xd + bls _02218158 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218148: + cmp r4, #0x21 + bls _02218158 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218158: + cmp r0, #0x21 + bgt _0221818C + cmp r0, #0x21 + bge _022181B0 + cmp r0, #0x15 + bgt _02218186 + add r1, r0, #0 + sub r1, #0x10 + cmp r1, #0 + blt _02218208 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #8] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r1, pc + bx r1 +_0221817A: ; jump table + .short _022181A0 - _0221817A + 1 ; case 0 + .short _022181B0 - _0221817A + 1 ; case 1 + .short _022181C0 - _0221817A + 1 ; case 2 + .short _022181D0 - _0221817A + 1 ; case 3 + .short _02218208 - _0221817A + 1 ; case 4 + .short _022181E0 - _0221817A + 1 ; case 5 +_02218186: + cmp r0, #0x20 + beq _022181A0 + b _02218208 +_0221818C: + cmp r0, #0x23 + bgt _0221819A + cmp r0, #0x23 + bge _022181D0 + cmp r0, #0x22 + beq _022181C0 + b _02218208 +_0221819A: + cmp r0, #0x25 + beq _022181E0 + b _02218208 +_022181A0: + add r0, r6, #0 + add r0, #0x30 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + str r4, [r6, #4] + b _02218214 +_022181B0: + add r0, r6, #0 + add r0, #0x70 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + str r4, [r6, #4] + b _02218214 +_022181C0: + add r0, r6, #0 + add r0, #0xb0 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + str r4, [r6, #4] + b _02218214 +_022181D0: + add r0, r6, #0 + add r0, #0xf0 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + str r4, [r6, #4] + b _02218214 +_022181E0: + cmp r4, #0 + beq _022181FA + sub r0, r4, #1 + add r0, r5, r0 + ldrb r0, [r0, #6] + cmp r0, #0 + beq _022181FA + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022181FA: + add r0, r6, #0 + add r0, #8 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + b _02218214 +_02218208: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218214: + ldrh r0, [r5, #4] + cmp r0, #0 + beq _02218224 + bl MOD13_02217380 + add r1, r7, #6 + add r5, r1, r0 + b _022180D6 +_02218224: + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02218230 +MOD13_02218230: ; 0x02218230 + push {r4, r5} + mov r5, #0 + sub r2, r1, #1 + add r3, r0, r2 + add r4, r5, #0 + cmp r1, #0 + ble _0221824C +_0221823E: + lsl r2, r5, #8 + ldrb r0, [r3] + sub r3, r3, #1 + add r5, r2, r0 + add r4, r4, #1 + cmp r4, r1 + blt _0221823E +_0221824C: + add r0, r5, #0 + pop {r4, r5} + bx lr + .align 2, 0 + + thumb_func_start MOD13_02218254 +MOD13_02218254: ; 0x02218254 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r1, #0 + add r0, r5, #0 + mov r1, #0 + ldr r2, _02218320 ; =0x00000104 + bl MOD13_022174C0 + add r4, r6, #0 + ldr r7, _02218324 ; =0x02240B60 +_0221826A: + ldrh r0, [r4, #2] + bl MOD13_02217380 + add r2, r0, #0 + cmp r2, #0 + bgt _02218282 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218282: + ldrb r0, [r4] + cmp r0, #6 + bhi _022182FC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_02218296: ; jump table + .short _022182A4 - _02218296 + 1 ; case 0 + .short _022182AE - _02218296 + 1 ; case 1 + .short _022182BA - _02218296 + 1 ; case 2 + .short _022182C6 - _02218296 + 1 ; case 3 + .short _022182C6 - _02218296 + 1 ; case 4 + .short _022182DC - _02218296 + 1 ; case 5 + .short _022182EC - _02218296 + 1 ; case 6 +_022182A4: + add r0, r5, #0 + add r1, r4, #6 + bl MOD13_022174CC + b _02218308 +_022182AE: + add r0, r5, #0 + add r0, #0x80 + add r1, r4, #6 + bl MOD13_022174CC + b _02218308 +_022182BA: + ldr r0, _02218328 ; =0x00000100 + add r0, r5, r0 + add r1, r4, #6 + bl MOD13_022174CC + b _02218308 +_022182C6: + ldrb r0, [r4, #6] + bl MOD13_02217380 + cmp r0, #0 + bgt _02218308 + mov r0, #1 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022182DC: + add r0, r4, #6 + add r1, r2, #0 + bl MOD13_02218230 + bl MOD13_02217398 + str r0, [r7, #0x10] + b _02218308 +_022182EC: + add r0, r4, #6 + add r1, r2, #0 + bl MOD13_02218230 + bl MOD13_02217398 + str r0, [r7, #0x14] + b _02218308 +_022182FC: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218308: + ldrh r0, [r4, #4] + cmp r0, #0 + beq _02218316 + bl MOD13_02217380 + add r4, r6, r0 + b _0221826A +_02218316: + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02218320: .word 0x00000104 +_02218324: .word 0x02240B60 +_02218328: .word 0x00000100 + + thumb_func_start MOD13_0221832C +MOD13_0221832C: ; 0x0221832C + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r4, #0 + ldr r0, _0221837C ; =0x0223F820 + bl MOD13_0221736C + add r3, r0, #0 + add r0, r5, #0 + mov r1, #8 + ldr r2, _0221837C ; =0x0223F820 + bl MOD13_02217684 + add r0, r6, #0 + add r1, r5, #0 + mov r2, #6 + bl MOD13_022174DC + cmp r0, #0 + beq _0221835A + lsl r0, r4, #0 + mvn r4, r0 + b _02218372 +_0221835A: + ldrh r0, [r6, #6] + bl MOD13_02217380 + add r6, r0, #0 + ldrh r0, [r5, #6] + bl MOD13_02217380 + add r1, r6, #1 + cmp r1, r0 + beq _02218372 + mov r0, #1 + mvn r4, r0 +_02218372: + add r0, r4, #0 + pop {r4, r5, r6} + pop {r3} + bx r3 + nop +_0221837C: .word 0x0223F820 + + thumb_func_start MOD13_02218380 +MOD13_02218380: ; 0x02218380 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r4, #0 + add r6, r4, #0 + ldr r3, _022183C0 ; =0x02240B4C +_0221838A: + ldrb r2, [r3] + cmp r2, #0 + beq _02218394 + mov r5, #1 + b _0221839C +_02218394: + add r3, r3, #1 + add r6, r6, #1 + cmp r6, #6 + blt _0221838A +_0221839C: + cmp r5, #0 + beq _022183B0 + ldr r0, _022183C0 ; =0x02240B4C + mov r2, #6 + bl MOD13_022174DC + cmp r0, #0 + beq _022183B8 + mov r4, #1 + b _022183B8 +_022183B0: + ldr r1, _022183C4 ; =0x00001000 + cmp r0, r1 + beq _022183B8 + mov r4, #2 +_022183B8: + add r0, r4, #0 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_022183C0: .word 0x02240B4C +_022183C4: .word 0x00001000 + + thumb_func_start MOD13_022183C8 +MOD13_022183C8: ; 0x022183C8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r4, r5, #0 + add r4, #0x18 + add r0, sp, #0xc + add r1, r5, #0 + add r1, #0x10 + mov r2, #8 + bl MOD13_022174CC + ldr r0, _022184CC ; =0x0223F820 + bl MOD13_0221736C + add r3, r0, #0 + add r0, sp, #0xc + mov r1, #8 + ldr r2, _022184CC ; =0x0223F820 + bl MOD13_02217684 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0221840A + mov r0, #2 + bl MOD13_02218BF4 + mov r0, #0x63 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221840A: + ldrh r0, [r5, #6] + bl MOD13_02217380 + add r1, sp, #0xc + bl MOD13_02218380 + cmp r0, #0 + bne _022184C4 + ldrh r0, [r5, #6] + bl MOD13_02217380 + ldr r1, _022184D0 ; =0x00001000 + cmp r0, r1 + bne _02218430 + ldr r0, _022184D4 ; =0x02240B4C + add r1, sp, #0xc + mov r2, #8 + bl MOD13_022174CC +_02218430: + ldrh r0, [r5, #0xc] + bl MOD13_02217380 + mov r1, #0xf + and r0, r1 + cmp r0, #0 + bne _02218448 + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218448: + ldrh r0, [r4] + bl MOD13_02217380 + add r6, r0, #0 + bl MOD13_022198B4 + add r7, r0, #0 + cmp r7, #0 + bne _0221846A + mov r0, #2 + bl MOD13_02218BF4 + mov r0, #0x64 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221846A: + add r0, r4, #2 + str r0, [sp] + ldr r0, _022184D4 ; =0x02240B4C + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + add r0, r4, #4 + add r1, r7, #0 + add r2, r6, #0 + ldrb r3, [r5, #0xe] + bl MOD13_0221789C + cmp r0, #0 + bge _022184A8 + add r0, r7, #0 + bl MOD13_022198A0 + bl MOD13_02218BE8 + cmp r0, #2 + bne _0221849E + mov r0, #0x64 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221849E: + mov r0, #0xc8 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022184A8: + add r0, r4, #0 + add r1, r7, #0 + add r2, r6, #0 + bl MOD13_022174CC + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #0xa] + add r0, r7, #0 + bl MOD13_022198A0 + mov r0, #0 +_022184C4: + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_022184CC: .word 0x0223F820 +_022184D0: .word 0x00001000 +_022184D4: .word 0x02240B4C + + thumb_func_start MOD13_022184D8 +MOD13_022184D8: ; 0x022184D8 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r2, #0 + cmp r6, #2 + beq _022184EE + ldr r1, [r5] + add r1, r1, #1 + str r1, [r5] + pop {r4, r5, r6} + pop {r3} + bx r3 +_022184EE: + add r4, r1, #0 + add r4, #0x24 + add r3, #0x10 + add r0, r3, #0 + add r1, #0xc + add r1, #0x10 + bl MOD13_0221832C + cmp r0, #0 + bge _02218510 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02218510: + ldrb r0, [r4] + cmp r0, #7 + beq _02218524 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02218524: + ldrh r0, [r4, #2] + bl MOD13_02217380 + cmp r0, #0 + bne _0221853C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221853C: + ldr r0, [r4, #4] + bl MOD13_02217398 + cmp r0, #0 + bne _0221854E + mov r0, #0x64 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221854E: + ldr r0, [r4, #4] + bl MOD13_02217398 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + bne _0221856C + mov r0, #0x14 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221856C: + ldr r0, [r4, #4] + bl MOD13_02217398 + mov r1, #2 + mvn r1, r1 + cmp r0, r1 + bne _0221858A + mov r0, #0x15 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221858A: + mov r0, #0x18 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221859C +MOD13_0221859C: ; 0x0221859C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r2, #0 + cmp r6, #1 + beq _022185B6 + ldr r1, [r5] + add r1, r1, #1 + str r1, [r5] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022185B6: + add r7, r1, #0 + add r7, #0xc + add r4, r1, #0 + add r4, #0x24 + add r3, #8 + add r0, r3, #0 + add r1, r7, #0 + add r1, #0x10 + bl MOD13_0221832C + cmp r0, #0 + bge _022185DE + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022185DE: + ldrh r0, [r4, #2] + bl MOD13_02217380 + cmp r0, #0 + bne _022185F8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022185F8: + ldrb r0, [r4] + cmp r0, #7 + bne _0221863C + ldr r0, [r4, #4] + bl MOD13_02217398 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + bne _02218614 + mov r0, #0x14 + bl MOD13_02218BF4 + b _02218630 +_02218614: + ldr r0, [r4, #4] + bl MOD13_02217398 + mov r1, #2 + mvn r1, r1 + cmp r0, r1 + bne _0221862A + mov r0, #0x15 + bl MOD13_02218BF4 + b _02218630 +_0221862A: + mov r0, #0x18 + bl MOD13_02218BF4 +_02218630: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221863C: + ldr r0, _02218694 ; =0x02241260 + mov r1, #0 + ldr r2, _02218698 ; =0x000006A0 + bl MOD13_022174C0 + ldrh r0, [r7, #0xa] + bl MOD13_02217380 + add r2, r0, #0 + ldr r0, _0221869C ; =0x02240BE0 + str r0, [sp] + mov r0, #0 + add r1, r4, #0 + ldr r3, _02218694 ; =0x02241260 + bl MOD13_02217E94 + cmp r0, #0 + bge _02218670 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218670: + ldr r0, _022186A0 ; =0x02240B60 + ldr r1, [r0, #0xc] + ldr r0, [r0, #8] + and r1, r0 + cmp r1, #0 + bne _02218686 + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218686: + mov r0, #0 + str r0, [r5] + mov r0, #2 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02218694: .word 0x02241260 +_02218698: .word 0x000006A0 +_0221869C: .word 0x02240BE0 +_022186A0: .word 0x02240B60 + + thumb_func_start MOD13_022186A4 +MOD13_022186A4: ; 0x022186A4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r2, #0 + cmp r6, #0 + beq _022186BE + ldr r1, [r5] + add r1, r1, #1 + str r1, [r5] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022186BE: + add r7, r1, #0 + add r7, #0xc + add r4, r1, #0 + add r4, #0x24 + add r0, r3, #0 + add r1, r7, #0 + add r1, #0x10 + bl MOD13_0221832C + cmp r0, #0 + bge _022186E4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022186E4: + ldrh r0, [r4, #2] + bl MOD13_02217380 + cmp r0, #0 + bne _022186FE + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022186FE: + ldrb r0, [r4] + cmp r0, #7 + bne _02218744 + add r5, r4, #4 + ldr r0, [r4, #4] + bl MOD13_02217398 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + bne _0221871C + mov r0, #0x14 + bl MOD13_02218BF4 + b _02218738 +_0221871C: + ldr r0, [r5] + bl MOD13_02217398 + mov r1, #2 + mvn r1, r1 + cmp r0, r1 + bne _02218732 + mov r0, #0x15 + bl MOD13_02218BF4 + b _02218738 +_02218732: + mov r0, #0x18 + bl MOD13_02218BF4 +_02218738: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218744: + cmp r0, #1 + beq _02218758 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218758: + add r0, r4, #4 + ldr r1, _022187AC ; =0x02240BE0 + bl MOD13_02218254 + cmp r0, #0 + bge _0221878E + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + bne _0221877E + mov r0, #0x16 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221877E: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221878E: + ldrh r0, [r7, #0xc] + bl MOD13_02217380 + bl MOD13_02217E84 + ldr r1, _022187B0 ; =0x02240B34 + str r0, [r1] + mov r0, #0 + str r0, [r5] + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_022187AC: .word 0x02240BE0 +_022187B0: .word 0x02240B34 + + thumb_func_start MOD13_022187B4 +MOD13_022187B4: ; 0x022187B4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + str r3, [sp] + add r7, r6, #0 + add r7, #0xc + ldrh r0, [r6, #0xc] + bl MOD13_02217380 + cmp r0, #1 + bhs _022187DE + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + add r0, r5, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022187DE: + ldrb r0, [r7, #0xf] + cmp r0, #0x11 + beq _022187F4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + add r0, r5, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022187F4: + add r0, r6, #0 + add r0, #0xc + bl MOD13_022183C8 + cmp r0, #0 + ble _02218810 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + add r0, r5, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218810: + ldrh r0, [r7, #6] + bl MOD13_02217380 + ldr r1, _02218864 ; =0x00001010 + cmp r0, r1 + beq _0221882A + ldr r1, _02218868 ; =0x00002010 + cmp r0, r1 + beq _0221883A + ldr r1, _0221886C ; =0x00003010 + cmp r0, r1 + beq _0221884A + b _02218858 +_0221882A: + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + ldr r3, [sp] + bl MOD13_022186A4 + add r5, r0, #0 + b _02218858 +_0221883A: + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + ldr r3, [sp] + bl MOD13_0221859C + add r5, r0, #0 + b _02218858 +_0221884A: + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + ldr r3, [sp] + bl MOD13_022184D8 + add r5, r0, #0 +_02218858: + add r0, r5, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02218864: .word 0x00001010 +_02218868: .word 0x00002010 +_0221886C: .word 0x00003010 + + thumb_func_start MOD13_02218870 +MOD13_02218870: ; 0x02218870 + push {lr} + sub sp, #4 + mov r3, #0 + mvn r1, r3 + cmp r0, r1 + bne _02218888 + ldr r1, _022188A4 ; =0x0223F7C4 + str r0, [r1] + add r0, r3, #0 + add sp, #4 + pop {r3} + bx r3 +_02218888: + ldr r1, _022188A4 ; =0x0223F7C4 + ldr r2, [r1] + cmp r2, r0 + beq _0221889C + str r0, [r1] + bl MOD13_022198C8 + add sp, #4 + pop {r3} + bx r3 +_0221889C: + add r0, r3, #0 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_022188A4: .word 0x0223F7C4 + + thumb_func_start MOD13_022188A8 +MOD13_022188A8: ; 0x022188A8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + mov r4, #0 + cmp r6, #0 + ble _022188D8 +_022188B8: + add r0, r5, #0 + add r1, r7, #0 + mov r2, #6 + bl MOD13_022174CC + bl MOD13_022172F0 + strh r0, [r5, #6] + ldrh r0, [r5, #6] + bl MOD13_022173D0 + strh r0, [r5, #6] + add r5, #8 + add r4, r4, #1 + cmp r4, r6 + blt _022188B8 +_022188D8: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_022188E0 +MOD13_022188E0: ; 0x022188E0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02218924 ; =0x0223F828 + bl MOD13_0221736C + str r0, [r4] + add r0, r4, #4 + ldr r1, _02218924 ; =0x0223F828 + ldr r2, [r4] + bl MOD13_022174CC + mov r0, #1 + str r0, [r4, #0x24] + ldr r0, _02218928 ; =0x0223F820 + bl MOD13_0221736C + str r0, [r4, #0x28] + ldr r2, [r4, #0x28] + cmp r2, #0xd + bls _02218912 + mov r0, #0 + mvn r0, r0 + pop {r4} + pop {r3} + bx r3 +_02218912: + add r4, #0x2c + add r0, r4, #0 + ldr r1, _02218928 ; =0x0223F820 + bl MOD13_022174CC + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_02218924: .word 0x0223F828 +_02218928: .word 0x0223F820 + + thumb_func_start MOD13_0221892C +MOD13_0221892C: ; 0x0221892C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r4, #0 + str r4, [sp, #4] + ldr r0, [r5] + str r0, [sp] + cmp r0, #0 + bne _02218948 + mov r0, #5 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218948: + cmp r0, #0x40 + bls _02218950 + mov r0, #0x40 + str r0, [sp] +_02218950: + mov r7, #0 + ldr r0, [sp] + cmp r0, #0 + ble _02218994 + add r6, r5, #0 + add r6, #8 +_0221895C: + ldr r1, [r5, #0x54] + mov r0, #1 + and r1, r0 + cmp r1, #0 + beq _02218988 + ldr r0, _022189B0 ; =0x0223F828 + bl MOD13_0221736C + ldr r1, [r5, #4] + cmp r1, r0 + bne _02218988 + ldr r0, _022189B0 ; =0x0223F828 + bl MOD13_0221736C + add r2, r0, #0 + add r0, r6, #0 + ldr r1, _022189B0 ; =0x0223F828 + bl MOD13_022174DC + cmp r0, #0 + bne _02218988 + add r4, r4, #1 +_02218988: + add r5, #0x54 + add r6, #0x54 + add r7, r7, #1 + ldr r0, [sp] + cmp r7, r0 + blt _0221895C +_02218994: + cmp r4, #1 + ble _0221899C + mov r0, #4 + str r0, [sp, #4] +_0221899C: + cmp r4, #0 + bne _022189A4 + mov r0, #5 + str r0, [sp, #4] +_022189A4: + ldr r0, [sp, #4] + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_022189B0: .word 0x0223F828 + + thumb_func_start MOD13_022189B4 +MOD13_022189B4: ; 0x022189B4 + mov r3, #0 + cmp r1, #0 + ble _022189D2 +_022189BA: + ldrb r2, [r0] + add r0, r0, #1 + cmp r2, #0x20 + blo _022189C6 + cmp r2, #0x7f + bls _022189CC +_022189C6: + mov r0, #0 + mvn r0, r0 + bx lr +_022189CC: + add r3, r3, #1 + cmp r3, r1 + blt _022189BA +_022189D2: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD13_022189D8 +MOD13_022189D8: ; 0x022189D8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + ldr r0, _02218BC4 ; =0x00000117 + add r5, r7, r0 + ldr r4, _02218BC8 ; =0x02241268 + ldr r6, _02218BCC ; =0x02241398 + ldr r0, _02218BD0 ; =0x022414C8 + str r0, [sp] + ldr r0, _02218BD4 ; =0x02241538 + str r0, [sp, #4] + cmp r5, #0 + bne _022189FE + mov r0, #0 + mvn r0, r0 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022189FE: + ldr r0, _02218BD8 ; =0x02240B60 + ldr r1, [r0, #8] + ldr r0, [r0, #0xc] + and r1, r0 + strh r1, [r7] + add r0, r5, #0 + mov r1, #0 + ldr r2, _02218BDC ; =0x00000154 + bl MOD13_022174C0 + ldrh r1, [r7] + mov r0, #1 + and r1, r0 + cmp r1, #0 + beq _02218A7E + add r0, r5, #0 + add r1, r4, #0 + add r1, #0x30 + ldr r2, [r4, #4] + bl MOD13_022174CC + add r0, r5, #6 + add r1, r4, #0 + add r1, #0x70 + ldr r2, [r4, #4] + bl MOD13_022174CC + add r0, r5, #0 + add r0, #0xc + add r1, r4, #0 + add r1, #0xb0 + ldr r2, [r4, #4] + bl MOD13_022174CC + add r0, r5, #0 + add r0, #0x12 + add r1, r4, #0 + add r1, #0xf0 + ldr r2, [r4, #4] + bl MOD13_022174CC + add r0, r4, #0 + add r0, #8 + bl MOD13_0221736C + add r1, r0, #0 + add r0, r4, #0 + add r0, #8 + bl MOD13_022189B4 + cmp r0, #0 + beq _02218A68 + b _02218BAE +_02218A68: + add r0, r4, #0 + add r0, #8 + bl MOD13_0221736C + add r2, r0, #0 + add r0, r5, #0 + add r0, #0x18 + add r4, #8 + add r1, r4, #0 + bl MOD13_022174CC +_02218A7E: + ldrh r1, [r7] + mov r0, #2 + and r1, r0 + cmp r1, #0 + beq _02218AEC + add r0, r5, #0 + add r0, #0x39 + add r1, r6, #0 + add r1, #0x30 + ldr r2, [r6, #4] + bl MOD13_022174CC + add r0, r5, #0 + add r0, #0x47 + add r1, r6, #0 + add r1, #0x70 + ldr r2, [r6, #4] + bl MOD13_022174CC + add r0, r5, #0 + add r0, #0x55 + add r1, r6, #0 + add r1, #0xb0 + ldr r2, [r6, #4] + bl MOD13_022174CC + add r0, r5, #0 + add r0, #0x63 + add r1, r6, #0 + add r1, #0xf0 + ldr r2, [r6, #4] + bl MOD13_022174CC + add r0, r6, #0 + add r0, #8 + bl MOD13_0221736C + add r1, r0, #0 + add r0, r6, #0 + add r0, #8 + bl MOD13_022189B4 + cmp r0, #0 + bne _02218BAE + add r0, r6, #0 + add r0, #8 + bl MOD13_0221736C + add r2, r0, #0 + add r0, r5, #0 + add r0, #0x71 + add r6, #8 + add r1, r6, #0 + bl MOD13_022174CC +_02218AEC: + ldrh r1, [r7] + mov r0, #4 + and r1, r0 + cmp r1, #0 + beq _02218B46 + ldr r0, [sp] + add r0, #0x30 + ldr r1, [sp] + ldr r1, [r1, #4] + sub r1, r1, #1 + bl MOD13_022189B4 + cmp r0, #0 + bne _02218BAE + add r0, r5, #0 + add r0, #0x92 + ldr r1, [sp] + add r1, #0x30 + ldr r2, [sp] + ldr r2, [r2, #4] + bl MOD13_022174CC + ldr r0, [sp] + add r0, #8 + bl MOD13_0221736C + add r1, r0, #0 + ldr r0, [sp] + add r0, #8 + bl MOD13_022189B4 + cmp r0, #0 + bne _02218BAE + ldr r0, [sp] + add r0, #8 + bl MOD13_0221736C + add r2, r0, #0 + add r0, r5, #0 + add r0, #0xd2 + ldr r1, [sp] + add r1, #8 + str r1, [sp] + bl MOD13_022174CC +_02218B46: + ldrh r1, [r7] + mov r0, #8 + and r1, r0 + cmp r1, #0 + beq _02218BA0 + ldr r0, [sp, #4] + add r0, #0x30 + ldr r1, [sp, #4] + ldr r1, [r1, #4] + sub r1, r1, #1 + bl MOD13_022189B4 + cmp r0, #0 + bne _02218BAE + add r0, r5, #0 + add r0, #0xf3 + ldr r1, [sp, #4] + add r1, #0x30 + ldr r2, [sp, #4] + ldr r2, [r2, #4] + bl MOD13_022174CC + ldr r0, [sp, #4] + add r0, #8 + bl MOD13_0221736C + add r1, r0, #0 + ldr r0, [sp, #4] + add r0, #8 + bl MOD13_022189B4 + cmp r0, #0 + bne _02218BAE + ldr r0, [sp, #4] + add r0, #8 + bl MOD13_0221736C + add r2, r0, #0 + ldr r0, _02218BE0 ; =0x00000133 + add r0, r5, r0 + ldr r1, [sp, #4] + add r1, #8 + str r1, [sp, #4] + bl MOD13_022174CC +_02218BA0: + mov r0, #0 + ldr r1, _02218BE4 ; =0x00000116 + strb r0, [r7, r1] + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218BAE: + add r0, r5, #0 + mov r1, #0 + ldr r2, _02218BDC ; =0x00000154 + bl MOD13_022174C0 + mov r0, #0 + mvn r0, r0 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02218BC4: .word 0x00000117 +_02218BC8: .word 0x02241268 +_02218BCC: .word 0x02241398 +_02218BD0: .word 0x022414C8 +_02218BD4: .word 0x02241538 +_02218BD8: .word 0x02240B60 +_02218BDC: .word 0x00000154 +_02218BE0: .word 0x00000133 +_02218BE4: .word 0x00000116 + + thumb_func_start MOD13_02218BE8 +MOD13_02218BE8: ; 0x02218BE8 + ldr r0, _02218BF0 ; =0x02240B44 + ldr r0, [r0] + bx lr + nop +_02218BF0: .word 0x02240B44 + + thumb_func_start MOD13_02218BF4 +MOD13_02218BF4: ; 0x02218BF4 + ldr r1, _02218BFC ; =0x02240B44 + str r0, [r1] + bx lr + nop +_02218BFC: .word 0x02240B44 + + thumb_func_start MOD13_02218C00 +MOD13_02218C00: ; 0x02218C00 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02218C44 ; =0x02240B4C + mov r1, #0 + mov r2, #8 + bl MOD13_022174C0 + mov r1, #1 + ldr r0, _02218C48 ; =0x02240B44 + str r1, [r0] + ldr r0, _02218C4C ; =0x02240B60 + mov r1, #0 + mov r2, #0x1c + bl MOD13_022174C0 + add r0, r4, #6 + ldr r1, _02218C4C ; =0x02240B60 + str r0, [r1] + ldrh r0, [r4, #4] + str r0, [r1, #4] + ldrh r2, [r4] + mov r0, #0xf + and r2, r0 + str r2, [r1, #8] + ldrb r0, [r4, #2] + strb r0, [r1, #0x19] + mov r2, #0 + str r2, [r1, #0xc] + ldr r0, _02218C50 ; =0xC0A80B01 + str r0, [r1, #0x10] + strb r2, [r1, #0x18] + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_02218C44: .word 0x02240B4C +_02218C48: .word 0x02240B44 +_02218C4C: .word 0x02240B60 +_02218C50: .word 0xC0A80B01 + + thumb_func_start MOD13_02218C54 +MOD13_02218C54: ; 0x02218C54 + push {lr} + sub sp, #4 + ldr r0, _02218C84 ; =0x02240B40 + ldr r0, [r0] + cmp r0, #0 + beq _02218C6A + bl MOD13_022198A0 + mov r1, #0 + ldr r0, _02218C84 ; =0x02240B40 + str r1, [r0] +_02218C6A: + ldr r0, _02218C88 ; =0x02240B38 + ldr r0, [r0] + cmp r0, #0 + beq _02218C7C + bl MOD13_022198A0 + mov r1, #0 + ldr r0, _02218C88 ; =0x02240B38 + str r1, [r0] +_02218C7C: + add sp, #4 + pop {r3} + bx r3 + nop +_02218C84: .word 0x02240B40 +_02218C88: .word 0x02240B38 + + thumb_func_start MOD13_02218C8C +MOD13_02218C8C: ; 0x02218C8C + add r3, r0, #0 + and r3, r1 + mvn r2, r1 + bic r0, r1 + add r1, r0, #1 + add r0, r3, #0 + orr r0, r1 + add r1, r3, #0 + orr r1, r2 + cmp r0, r1 + blo _02218CA8 + mov r1, #1 + add r0, r3, #0 + orr r0, r1 +_02218CA8: + bx lr + .align 2, 0 + + thumb_func_start MOD13_02218CAC +MOD13_02218CAC: ; 0x02218CAC + push {r4, r5, r6, r7, lr} + sub sp, #0xcc + str r0, [sp, #8] + ldr r1, _02219044 ; =0x0223F7C0 + ldrh r2, [r1] + add r0, sp, #0x30 + strh r2, [r0] + ldrh r1, [r1, #2] + strh r1, [r0, #2] + add r1, sp, #0x34 + mov r0, #0 + str r0, [sp, #0x14] + strh r0, [r1] + strh r0, [r1, #2] + mov r0, #1 + str r0, [sp, #0x38] + ldr r0, [sp, #0x14] + str r0, [sp, #0x3c] + str r0, [sp, #0x1c] + add r0, sp, #0x64 + ldr r1, [sp, #0x14] + mov r2, #0x18 + bl MOD13_022174C0 + ldr r1, _02219048 ; =0x00000106 + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + add r1, sp, #0x30 + strh r0, [r1] + mov r0, #0 + ldrsh r2, [r1, r0] + mvn r0, r0 + cmp r2, r0 + bne _02218CF4 + mov r0, #0xa + strh r0, [r1] +_02218CF4: + ldr r1, _0221904C ; =0x0000010A + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + add r1, sp, #0x30 + strh r0, [r1, #4] + mov r0, #4 + ldrsh r2, [r1, r0] + mov r0, #0 + mvn r0, r0 + cmp r2, r0 + bne _02218D0E + mov r0, #0xa + strh r0, [r1, #4] +_02218D0E: + ldr r1, _02219050 ; =0x00000108 + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + add r1, sp, #0x30 + strh r0, [r1, #2] + mov r0, #2 + ldrsh r2, [r1, r0] + mov r0, #0 + mvn r0, r0 + cmp r2, r0 + bne _02218D28 + mov r0, #0x64 + strh r0, [r1, #2] +_02218D28: + ldr r1, _02219054 ; =0x0000010C + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + add r1, sp, #0x30 + strh r0, [r1, #6] + mov r0, #6 + ldrsh r2, [r1, r0] + mov r0, #0 + mvn r0, r0 + cmp r2, r0 + bne _02218D42 + mov r0, #0x64 + strh r0, [r1, #6] +_02218D42: + ldr r1, _02219058 ; =0x0000010E + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + str r0, [sp, #0x10] + mov r0, #0 + mvn r1, r0 + ldr r0, [sp, #0x10] + cmp r0, r1 + bne _02218D58 + ldr r0, _0221905C ; =0x000007D0 + str r0, [sp, #0x10] +_02218D58: + ldr r0, [sp, #8] + bl MOD13_02218C00 + ldr r0, _02219060 ; =0x02240B60 + ldr r1, [r0, #8] + mov r0, #1 + and r1, r0 + cmp r1, #1 + beq _02218D88 + mov r0, #0x13 + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218D88: + mov r4, #0 + add r0, r4, #0 + bl MOD13_02218870 + mov r1, #2 + add r0, sp, #0x30 + ldrsh r7, [r0, r1] + lsl r6, r4, #0 + ldr r5, _02219068 ; =0x02240B38 +_02218D9A: + ldr r0, [r5] + cmp r0, #0 + beq _02218DA6 + bl MOD13_022198A0 + str r6, [r5] +_02218DA6: + add r0, r5, #0 + bl MOD13_02219AD0 + mvn r1, r6 + cmp r0, r1 + bne _02218DCA + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218DCA: + ldr r0, [r5] + bl MOD13_0221892C + cmp r0, #4 + bne _02218DEC + mov r2, #2 + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218DEC: + cmp r0, #0 + beq _02218E1E + add r0, sp, #0x30 + ldrsh r0, [r0, r6] + cmp r4, r0 + blt _02218E10 + mov r2, #1 + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218E10: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _02218D9A +_02218E1E: + mov r0, #1 + bl MOD13_02218870 + add r0, sp, #0x7c + mov r1, #0 + mov r2, #0x3c + bl MOD13_022174C0 + add r0, sp, #0x7c + bl MOD13_022188E0 + cmp r0, #0 + beq _02218E50 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218E50: + mov r0, #0x58 + bl MOD13_022198B4 + ldr r1, _0221906C ; =0x02240B40 + str r0, [r1] + cmp r0, #0 + bne _02218E76 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218E76: + mov r1, #0 + mov r2, #0x58 + bl MOD13_022174C0 + mov r4, #0 + add r0, sp, #0x30 + ldrsh r0, [r0, r4] + cmp r0, #0 + ble _02218EDA + add r6, r4, #0 + add r5, r4, #0 +_02218E8C: + add r0, sp, #0x7c + ldr r1, _0221906C ; =0x02240B40 + ldr r1, [r1] + bl MOD13_022198EC + mvn r1, r5 + cmp r0, r1 + bne _02218EB4 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218EB4: + cmp r0, #0 + bne _02218EC6 + cmp r0, #0 + bne _02218EDA + ldr r0, _0221906C ; =0x02240B40 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #1 + beq _02218EDA +_02218EC6: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + add r0, sp, #0x30 + ldrsh r0, [r0, r6] + cmp r4, r0 + blt _02218E8C +_02218EDA: + add r1, sp, #0x30 + mov r0, #0 + ldrsh r0, [r1, r0] + cmp r4, r0 + bne _02218EFC + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218EFC: + ldr r0, _02219070 ; =0xC0A80B65 + mov r1, #0xff + mvn r1, r1 + add r2, r0, #0 + bl MOD13_02217530 + cmp r0, #0 + beq _02218F2A + mov r0, #0xc + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218F2A: + bl MOD13_02218C54 + mov r0, #3 + add r1, sp, #0x64 + ldr r3, _02219074 ; =0x00000110 + ldr r2, [sp, #8] + add r2, r2, r3 + bl MOD13_022188A8 + mov r0, #2 + add r1, r0, #0 + mov r2, #0 + bl MOD13_02217434 + ldr r1, _02219078 ; =0x0223F7BC + str r0, [r1] + cmp r0, #0 + bge _02218F66 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218F66: + mov r1, #4 + str r1, [sp] + ldr r1, _0221907C ; =0x0000FFFF + mov r2, #1 + add r3, sp, #0x38 + bl MOD13_0221743C + cmp r0, #0 + bge _02218F96 + mov r0, #0xb + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218F96: + add r0, sp, #0x5c + mov r1, #0 + mov r2, #8 + bl MOD13_022174C0 + mov r1, #2 + add r0, sp, #0x5c + strb r1, [r0, #1] + ldr r0, _02219070 ; =0xC0A80B65 + bl MOD13_022173E8 + str r0, [sp, #0x60] + ldr r0, _02219080 ; =0x00005790 + bl MOD13_022173D0 + add r1, sp, #0x30 + strh r0, [r1, #0x2e] + ldr r0, _02219078 ; =0x0223F7BC + ldr r0, [r0] + add r1, sp, #0x5c + mov r2, #8 + bl MOD13_02217428 + cmp r0, #0 + bge _02218FE0 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218FE0: + mov r5, #0 + ldr r6, _02219068 ; =0x02240B38 + mvn r0, r5 + str r0, [sp, #0x28] +_02218FE8: + ldr r0, _02219084 ; =0x02240B48 + ldr r0, [r0] + str r0, [sp, #0x20] + add r0, sp, #0xb8 + add r1, r5, #0 + mov r2, #0x14 + bl MOD13_022174C0 + ldr r0, _02219070 ; =0xC0A80B65 + str r0, [sp, #0xc8] + ldr r0, _02219088 ; =0xC0A80B01 + str r0, [sp, #0xb8] + ldr r0, [sp, #0x10] + ldr r1, _0221908C ; =0x000003E8 + bl _s32_div_f + str r0, [sp, #0x24] + ldr r0, [sp, #0x10] + ldr r1, _0221908C ; =0x000003E8 + bl _s32_div_f + str r1, [sp, #0xc] + ldr r0, _0221908C ; =0x000003E8 + mul r1, r0 + str r1, [sp, #0xc] +_0221901A: + ldr r0, [sp, #0x14] + cmp r0, #1 + beq _02219022 + b _0221930A +_02219022: + ldr r1, _02219060 ; =0x02240B60 + mov r0, #0x18 + ldrsb r0, [r1, r0] + cmp r0, #1 + bne _0221902E + b _0221930A +_0221902E: + ldr r0, _02219078 ; =0x0223F7BC + ldr r0, [r0] + mvn r1, r5 + cmp r0, r1 + beq _0221903C + bl MOD13_02217420 +_0221903C: + ldr r1, [sp, #0x28] + ldr r0, _02219078 ; =0x0223F7BC + b _02219090 + nop +_02219044: .word 0x0223F7C0 +_02219048: .word 0x00000106 +_0221904C: .word 0x0000010A +_02219050: .word 0x00000108 +_02219054: .word 0x0000010C +_02219058: .word 0x0000010E +_0221905C: .word 0x000007D0 +_02219060: .word 0x02240B60 +_02219064: .word 0x00000116 +_02219068: .word 0x02240B38 +_0221906C: .word 0x02240B40 +_02219070: .word 0xC0A80B65 +_02219074: .word 0x00000110 +_02219078: .word 0x0223F7BC +_0221907C: .word 0x0000FFFF +_02219080: .word 0x00005790 +_02219084: .word 0x02240B48 +_02219088: .word 0xC0A80B01 +_0221908C: .word 0x000003E8 +_02219090: + str r1, [r0] + bl MOD13_02217504 + cmp r0, #0 + beq _022190B2 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022190B2: + mov r0, #0x58 + bl MOD13_022198B4 + str r0, [r6] + cmp r0, #0 + bne _022190D6 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022190D6: + ldr r0, [r6] + cmp r0, #0 + beq _022190E2 + bl MOD13_022198A0 + str r5, [r6] +_022190E2: + add r0, r6, #0 + bl MOD13_02219AD0 + str r0, [sp, #0x2c] + mvn r1, r5 + cmp r0, r1 + bne _02219108 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219108: + ldr r0, [r6] + bl MOD13_0221892C + cmp r0, #4 + bne _0221912A + mov r2, #2 + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221912A: + cmp r0, #0 + beq _0221915C + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + blt _0221914E + mov r2, #1 + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221914E: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _022190D6 +_0221915C: + mvn r1, r5 + ldr r0, [sp, #0x2c] + cmp r0, r1 + bne _0221917C + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221917C: + mov r0, #0x58 + bl MOD13_022198B4 + ldr r1, _02219418 ; =0x02240B40 + str r0, [r1] + cmp r0, #0 + bne _022191A2 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022191A2: + add r1, r5, #0 + mov r2, #0x58 + bl MOD13_022174C0 + add r4, r5, #0 + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r0, #0 + ble _02219202 +_022191B4: + add r0, sp, #0x7c + ldr r1, _02219418 ; =0x02240B40 + ldr r1, [r1] + bl MOD13_022198EC + mvn r1, r5 + cmp r0, r1 + bne _022191DC + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022191DC: + cmp r0, #0 + bne _022191EE + cmp r0, #0 + bne _02219202 + ldr r0, _02219418 ; =0x02240B40 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #1 + beq _02219202 +_022191EE: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + blt _022191B4 +_02219202: + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + bne _02219222 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219222: + ldr r0, _0221941C ; =0x02240B60 + ldr r0, [r0, #0x10] + ldr r1, _0221941C ; =0x02240B60 + ldr r1, [r1, #0x14] + bl MOD13_02218C8C + str r0, [sp, #0x1c] + ldr r1, _0221941C ; =0x02240B60 + ldr r1, [r1, #0x14] + lsl r2, r0, #0 + bl MOD13_02217530 + cmp r0, #0 + beq _0221925C + mov r0, #0xc + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221925C: + mov r1, #1 + ldr r0, _0221941C ; =0x02240B60 + strb r1, [r0, #0x18] + bl MOD13_02218C54 + mov r0, #2 + lsl r1, r0, #0 + add r2, r5, #0 + bl MOD13_02217434 + ldr r1, _02219420 ; =0x0223F7BC + str r0, [r1] + cmp r0, #0 + bge _02219290 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219290: + mov r1, #4 + str r1, [sp] + ldr r1, _02219424 ; =0x0000FFFF + mov r2, #1 + add r3, sp, #0x38 + bl MOD13_0221743C + cmp r0, #0 + bge _022192C0 + mov r0, #0xb + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022192C0: + add r0, sp, #0x5c + add r1, r5, #0 + mov r2, #8 + bl MOD13_022174C0 + mov r1, #2 + add r0, sp, #0x5c + strb r1, [r0, #1] + ldr r0, [sp, #0x1c] + bl MOD13_022173E8 + str r0, [sp, #0x60] + ldr r0, _02219428 ; =0x00005790 + bl MOD13_022173D0 + add r1, sp, #0x30 + strh r0, [r1, #0x2e] + ldr r0, _02219420 ; =0x0223F7BC + ldr r0, [r0] + add r1, sp, #0x5c + mov r2, #8 + bl MOD13_02217428 + cmp r0, #0 + bge _0221930A + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221930A: + ldr r0, [sp, #0x14] + add r1, sp, #0xb8 + add r2, sp, #0x64 + ldr r3, _02219420 ; =0x0223F7BC + ldr r3, [r3] + bl MOD13_02217E20 + mvn r1, r5 + cmp r0, r1 + bne _02219340 + ldr r1, _0221942C ; =0x00001000 + ldr r0, [sp, #0x14] + add r0, r0, r1 + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219340: + ldr r0, [sp, #0x20] + add r1, r5, #0 + ldr r2, _02219430 ; =0x000005F8 + bl MOD13_022174C0 + add r0, sp, #0x4c + bl MOD13_022172E4 + ldr r0, _02219420 ; =0x0223F7BC + ldr r0, [r0] + add r1, sp, #0x4c + bl MOD13_022172DC + ldr r0, [sp, #0x24] + str r0, [sp, #0x54] + ldr r0, [sp, #0xc] + str r0, [sp, #0x58] + add r0, sp, #0x54 + str r0, [sp] + ldr r0, _02219420 ; =0x0223F7BC + ldr r0, [r0] + add r0, r0, #1 + add r1, sp, #0x4c + add r2, r5, #0 + add r3, r5, #0 + bl MOD13_02217458 + cmp r0, #0 + bgt _022193BA + ldr r0, [sp, #0x3c] + add r2, r0, #1 + str r2, [sp, #0x3c] + add r1, sp, #0x30 + mov r0, #4 + ldrsh r0, [r1, r0] + cmp r2, r0 + ble _022193B0 + ldr r0, [sp, #0x14] + cmp r0, #0 + bne _02219398 + mov r0, #0xf + bl MOD13_02218BF4 + b _022193AA +_02219398: + cmp r0, #1 + bne _022193A4 + mov r0, #0x10 + bl MOD13_02218BF4 + b _022193AA +_022193A4: + mov r0, #0x11 + bl MOD13_02218BF4 +_022193AA: + mov r0, #0 + mvn r4, r0 + b _022196C6 +_022193B0: + mov r0, #6 + ldrsh r0, [r1, r0] + bl MOD13_022198E4 + b _0221901A +_022193BA: + mov r0, #8 + str r0, [sp, #0x48] + add r0, sp, #0x40 + str r0, [sp] + add r0, sp, #0x48 + str r0, [sp, #4] + ldr r0, _02219420 ; =0x0223F7BC + ldr r0, [r0] + ldr r1, [sp, #0x20] + add r1, #0xc + ldr r2, _02219434 ; =0x000005DC + add r3, r5, #0 + bl MOD13_022174A4 + add r2, r0, #0 + ldr r0, _02219420 ; =0x0223F7BC + ldr r1, [r0] + ldr r0, [sp, #0x20] + str r1, [r0] + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + bl MOD13_02217380 + ldr r1, [sp, #0x20] + str r0, [r1, #4] + ldr r0, _02219420 ; =0x0223F7BC + ldr r0, [r0] + str r0, [sp] + ldr r0, [sp, #0x14] + add r2, sp, #0x3c + add r3, sp, #0x64 + bl MOD13_022187B4 + str r0, [sp, #0x18] + cmp r0, #0x64 + bne _02219406 + mov r4, #0 + b _022196C6 +_02219406: + mvn r1, r5 + cmp r0, r1 + bne _02219438 + mov r0, #0 + mvn r4, r0 + b _022196C6 + nop +_02219414: .word 0x00000116 +_02219418: .word 0x02240B40 +_0221941C: .word 0x02240B60 +_02219420: .word 0x0223F7BC +_02219424: .word 0x0000FFFF +_02219428: .word 0x00005790 +_0221942C: .word 0x00001000 +_02219430: .word 0x000005F8 +_02219434: .word 0x000005DC +_02219438: + ldr r1, [sp, #0x14] + cmp r1, r0 + bne _02219440 + b _02219688 +_02219440: + cmp r0, #2 + beq _02219446 + b _02219682 +_02219446: + ldr r0, _02219780 ; =0x0223F7BC + ldr r0, [r0] + mvn r1, r5 + cmp r0, r1 + beq _02219454 + bl MOD13_02217420 +_02219454: + ldr r1, [sp, #0x28] + ldr r0, _02219780 ; =0x0223F7BC + str r1, [r0] + bl MOD13_02217504 + cmp r0, #0 + beq _0221947A + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221947A: + add r4, r5, #0 + mov r0, #4 + bl MOD13_02218870 +_02219482: + ldr r0, [r6] + cmp r0, #0 + beq _0221948E + bl MOD13_022198A0 + str r5, [r6] +_0221948E: + add r0, r6, #0 + bl MOD13_02219AD0 + mvn r1, r5 + cmp r0, r1 + bne _022194B2 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022194B2: + ldr r0, [r6] + bl MOD13_0221892C + cmp r0, #4 + bne _022194D4 + mov r2, #2 + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022194D4: + cmp r0, #0 + beq _02219506 + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + blt _022194F8 + mov r2, #1 + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022194F8: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _02219482 +_02219506: + mov r0, #0x58 + bl MOD13_022198B4 + ldr r1, _02219788 ; =0x02240B40 + str r0, [r1] + cmp r0, #0 + bne _0221952C + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221952C: + add r1, r5, #0 + mov r2, #0x58 + bl MOD13_022174C0 + add r4, r5, #0 + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r0, #0 + ble _0221958C +_0221953E: + add r0, sp, #0x7c + ldr r1, _02219788 ; =0x02240B40 + ldr r1, [r1] + bl MOD13_022198EC + mvn r1, r5 + cmp r0, r1 + bne _02219566 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219566: + cmp r0, #0 + bne _02219578 + cmp r0, #0 + bne _0221958C + ldr r0, _02219788 ; =0x02240B40 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #1 + beq _0221958C +_02219578: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + blt _0221953E +_0221958C: + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + bne _022195AC + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022195AC: + ldr r0, [sp, #0x1c] + ldr r1, _0221978C ; =0x02240B60 + ldr r1, [r1, #0x14] + lsl r2, r0, #0 + bl MOD13_02217530 + cmp r0, #0 + beq _022195DA + mov r0, #0xc + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022195DA: + bl MOD13_02218C54 + mov r0, #2 + lsl r1, r0, #0 + add r2, r5, #0 + bl MOD13_02217434 + ldr r1, _02219780 ; =0x0223F7BC + str r0, [r1] + cmp r0, #0 + bge _02219608 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219608: + mov r1, #4 + str r1, [sp] + ldr r1, _02219790 ; =0x0000FFFF + mov r2, #1 + add r3, sp, #0x38 + bl MOD13_0221743C + cmp r0, #0 + bge _02219638 + mov r0, #0xb + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219638: + add r0, sp, #0x5c + add r1, r5, #0 + mov r2, #8 + bl MOD13_022174C0 + mov r1, #2 + add r0, sp, #0x5c + strb r1, [r0, #1] + ldr r0, [sp, #0x1c] + bl MOD13_022173E8 + str r0, [sp, #0x60] + ldr r0, _02219794 ; =0x00005790 + bl MOD13_022173D0 + add r1, sp, #0x30 + strh r0, [r1, #0x2e] + ldr r0, _02219780 ; =0x0223F7BC + ldr r0, [r0] + add r1, sp, #0x5c + mov r2, #8 + bl MOD13_02217428 + cmp r0, #0 + bge _02219682 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219682: + ldr r0, [sp, #0x18] + str r0, [sp, #0x14] + b _02218FE8 +_02219688: + str r0, [sp, #0x14] + ldr r2, [sp, #0x3c] + add r1, sp, #0x30 + mov r0, #4 + ldrsh r0, [r1, r0] + cmp r2, r0 + ble _022196BC + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _022196A4 + mov r0, #0xf + bl MOD13_02218BF4 + b _022196B6 +_022196A4: + cmp r0, #1 + bne _022196B0 + mov r0, #0x10 + bl MOD13_02218BF4 + b _022196B6 +_022196B0: + mov r0, #0x11 + bl MOD13_02218BF4 +_022196B6: + mov r0, #0 + mvn r4, r0 + b _022196C6 +_022196BC: + mov r0, #6 + ldrsh r0, [r1, r0] + bl MOD13_022198E4 + b _02218FE8 +_022196C6: + ldr r0, _02219780 ; =0x0223F7BC + ldr r0, [r0] + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _022196D6 + bl MOD13_02217420 +_022196D6: + mov r0, #0 + mvn r1, r0 + ldr r0, _02219780 ; =0x0223F7BC + str r1, [r0] + bl MOD13_02217504 + cmp r0, #0 + beq _022196FE + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022196FE: + cmp r4, #0 + beq _02219754 + bl MOD13_02218BE8 + sub r0, #0xf + cmp r0, #6 + bhi _0221973C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221971A: ; jump table + .short _02219728 - _0221971A + 1 ; case 0 + .short _0221972C - _0221971A + 1 ; case 1 + .short _02219730 - _0221971A + 1 ; case 2 + .short _0221973C - _0221971A + 1 ; case 3 + .short _0221973C - _0221971A + 1 ; case 4 + .short _02219734 - _0221971A + 1 ; case 5 + .short _02219738 - _0221971A + 1 ; case 6 +_02219728: + mov r2, #3 + b _0221973E +_0221972C: + mov r2, #4 + b _0221973E +_02219730: + mov r2, #5 + b _0221973E +_02219734: + mov r2, #7 + b _0221973E +_02219738: + mov r2, #8 + b _0221973E +_0221973C: + mov r2, #0xf +_0221973E: + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219754: + ldr r0, [sp, #8] + bl MOD13_022189D8 + cmp r0, #0 + beq _02219776 + mov r2, #6 + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219776: + mov r0, #0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02219780: .word 0x0223F7BC +_02219784: .word 0x00000116 +_02219788: .word 0x02240B40 +_0221978C: .word 0x02240B60 +_02219790: .word 0x0000FFFF +_02219794: .word 0x00005790 + + thumb_func_start MOD13_02219798 +MOD13_02219798: ; 0x02219798 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02219870 ; =0x00000106 + ldrsh r1, [r4, r0] + cmp r1, #0 + beq _022197E6 + mov r0, #0 + mvn r2, r0 + cmp r1, r2 + blt _022197E6 + ldr r1, _02219874 ; =0x00000108 + ldrsh r1, [r4, r1] + cmp r1, r2 + blt _022197E6 + ldr r1, _02219878 ; =0x0000010A + ldrsh r1, [r4, r1] + cmp r1, #0 + beq _022197E6 + cmp r1, r2 + blt _022197E6 + ldr r1, _0221987C ; =0x0000010C + ldrsh r1, [r4, r1] + cmp r1, r2 + blt _022197E6 + ldr r1, _02219880 ; =0x0000010E + ldrsh r1, [r4, r1] + cmp r1, r2 + blt _022197E6 + ldrh r2, [r4, #4] + cmp r2, #0 + beq _022197E6 + ldr r1, _02219884 ; =0x00000100 + cmp r2, r1 + bhi _022197E6 + sub r1, r2, #1 + add r1, r4, r1 + ldrb r1, [r1, #6] + cmp r1, #0 + beq _022197EA +_022197E6: + mov r0, #0 + mvn r0, r0 +_022197EA: + ldr r1, _02219888 ; =0x02241900 + ldr r1, [r1] + cmp r1, #0 + beq _022197FA + ldr r1, _0221988C ; =0x0224190C + ldr r1, [r1] + cmp r1, #0 + bne _022197FE +_022197FA: + mov r0, #0 + mvn r0, r0 +_022197FE: + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0221981A + mov r1, #0xf + ldr r0, _02219890 ; =0x00000116 + strb r1, [r4, r0] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + pop {r4} + pop {r3} + bx r3 +_0221981A: + ldr r0, _02219894 ; =0x000005F8 + bl MOD13_022198B4 + ldr r1, _02219898 ; =0x02240B48 + str r0, [r1] + cmp r0, #0 + bne _0221983C + mov r1, #0xf + ldr r0, _02219890 ; =0x00000116 + strb r1, [r4, r0] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + pop {r4} + pop {r3} + bx r3 +_0221983C: + mov r0, #0 + mvn r0, r0 + bl MOD13_02218870 + add r0, r4, #0 + bl MOD13_02218CAC + add r4, r0, #0 + ldr r0, _02219898 ; =0x02240B48 + ldr r0, [r0] + bl MOD13_022198A0 + bl MOD13_02218C54 + ldr r0, _0221989C ; =0x0223F7BC + ldr r0, [r0] + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02219868 + bl MOD13_02217420 +_02219868: + add r0, r4, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_02219870: .word 0x00000106 +_02219874: .word 0x00000108 +_02219878: .word 0x0000010A +_0221987C: .word 0x0000010C +_02219880: .word 0x0000010E +_02219884: .word 0x00000100 +_02219888: .word 0x02241900 +_0221988C: .word 0x0224190C +_02219890: .word 0x00000116 +_02219894: .word 0x000005F8 +_02219898: .word 0x02240B48 +_0221989C: .word 0x0223F7BC + + thumb_func_start MOD13_022198A0 +MOD13_022198A0: ; 0x022198A0 + push {lr} + sub sp, #4 + ldr r1, _022198B0 ; =0x0224190C + ldr r1, [r1] + blx r1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_022198B0: .word 0x0224190C + + thumb_func_start MOD13_022198B4 +MOD13_022198B4: ; 0x022198B4 + push {lr} + sub sp, #4 + ldr r1, _022198C4 ; =0x02241900 + ldr r1, [r1] + blx r1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_022198C4: .word 0x02241900 + + thumb_func_start MOD13_022198C8 +MOD13_022198C8: ; 0x022198C8 + push {lr} + sub sp, #4 + ldr r1, _022198E0 ; =0x02241904 + ldr r1, [r1] + cmp r1, #0 + beq _022198D6 + blx r1 +_022198D6: + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 + nop +_022198E0: .word 0x02241904 + + thumb_func_start MOD13_022198E4 +MOD13_022198E4: ; 0x022198E4 + ldr r3, _022198E8 ; =0x020CAFC0 + bx r3 + .align 2, 0 +_022198E8: .word 0x020CAFC0 + + thumb_func_start MOD13_022198EC +MOD13_022198EC: ; 0x022198EC + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + str r0, [sp, #4] + str r1, [sp, #8] + mov r4, #1 + mov r0, #0 + str r0, [sp, #0x14] + mvn r0, r0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + ldr r0, [r0, #0x24] + cmp r0, #0 + bne _0221990A + ldr r6, _02219AA8 ; =0x00080000 + b _02219910 +_0221990A: + cmp r0, #1 + bne _02219910 + ldr r6, _02219AAC ; =0x000C0000 +_02219910: + ldr r0, _02219AB0 ; =0x02241940 + mov r1, #0 + mov r2, #0x60 + bl MI_CpuFill8 + ldr r0, [sp, #4] + ldr r0, [r0, #0x28] + cmp r0, #5 + bne _0221992A + mov r1, #1 + ldr r0, _02219AB0 ; =0x02241940 + strb r1, [r0] + b _0221994E +_0221992A: + cmp r0, #0xd + bne _02219936 + mov r1, #2 + ldr r0, _02219AB0 ; =0x02241940 + strb r1, [r0] + b _0221994E +_02219936: + cmp r0, #0x10 + bne _02219942 + mov r1, #3 + ldr r0, _02219AB0 ; =0x02241940 + strb r1, [r0] + b _0221994E +_02219942: + mov r0, #0 + mvn r0, r0 + add sp, #0x4c + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221994E: + mov r1, #0 + ldr r0, _02219AB0 ; =0x02241940 + strb r1, [r0, #1] + ldr r0, [sp, #4] + add r0, #0x2c + ldr r1, _02219AB4 ; =0x02241942 + ldr r2, [sp, #4] + ldr r2, [r2, #0x28] + bl MI_CpuCopy8 + bl FUN_020A84D8 + mov r0, #0 + ldr r1, [sp, #4] + add r1, r1, #4 + ldr r2, [sp, #4] + ldr r2, [r2] + ldr r3, _02219AB8 ; =0x0030BFFE + bl MOD13_0221A1E8 + cmp r0, #0 + bne _0221997C + b _02219A8A +_0221997C: + mov r0, #0 + str r0, [sp, #0x10] + add r0, sp, #0x1c + bl OS_CreateAlarm + mov r0, #0x12 + str r0, [sp] + add r0, sp, #0x1c + ldr r1, _02219ABC ; =0x003FEC42 + mov r2, #0 + ldr r3, _02219AC0 ; =MOD13_02219E48 + bl OS_SetAlarm + ldr r0, _02219AC4 ; =0x00030000 + orr r6, r0 + ldr r7, _02219AC8 ; =0x022419A0 + mov r5, #0 +_0221999E: + ldr r0, _02219ACC ; =0x02241920 + add r1, sp, #0x18 + mov r2, #1 + bl OS_ReceiveMessage + ldr r0, [sp, #0x18] + cmp r0, #0x13 + bhi _02219A6A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_022199BC: ; jump table + .short _02219A6A - _022199BC + 1 ; case 0 + .short _02219A6A - _022199BC + 1 ; case 1 + .short _02219A6A - _022199BC + 1 ; case 2 + .short _02219A6A - _022199BC + 1 ; case 3 + .short _02219A6C - _022199BC + 1 ; case 4 + .short _022199EE - _022199BC + 1 ; case 5 + .short _02219A6A - _022199BC + 1 ; case 6 + .short _02219A6A - _022199BC + 1 ; case 7 + .short _02219A6C - _022199BC + 1 ; case 8 + .short _02219A6A - _022199BC + 1 ; case 9 + .short _02219A2A - _022199BC + 1 ; case 10 + .short _02219A6A - _022199BC + 1 ; case 11 + .short _02219A44 - _022199BC + 1 ; case 12 + .short _02219A4A - _022199BC + 1 ; case 13 + .short _02219A6A - _022199BC + 1 ; case 14 + .short _02219A6A - _022199BC + 1 ; case 15 + .short _02219A6A - _022199BC + 1 ; case 16 + .short _02219A6A - _022199BC + 1 ; case 17 + .short _022199E4 - _022199BC + 1 ; case 18 + .short _02219A6C - _022199BC + 1 ; case 19 +_022199E4: + ldr r0, [sp, #0x14] + cmp r0, #0 + bne _02219A6C + add r4, r5, #0 + b _02219A6C +_022199EE: + ldr r0, [sp, #0x14] + cmp r0, #0 + bne _02219A6C + add r0, sp, #0x1c + bl OS_CancelAlarm + add r0, r7, #0 + mov r1, #1 + bl MOD13_0221A2FC + cmp r0, #1 + beq _02219A0A + add r4, r5, #0 + b _02219A6C +_02219A0A: + ldr r0, [sp, #4] + add r1, r7, #0 + bl MOD13_02219E80 + add r0, r7, #0 + ldr r1, _02219AB0 ; =0x02241940 + add r2, r6, #0 + bl MOD13_0221A04C + cmp r0, #0 + bne _02219A24 + add r4, r5, #0 + b _02219A6C +_02219A24: + mov r0, #1 + str r0, [sp, #0x14] + b _02219A6C +_02219A2A: + ldr r0, [sp, #4] + add r1, r7, #0 + bl MOD13_02219E80 + add r0, r7, #0 + ldr r1, _02219AB0 ; =0x02241940 + add r2, r6, #0 + bl MOD13_0221A04C + cmp r0, #0 + bne _02219A6C + add r4, r5, #0 + b _02219A6C +_02219A44: + str r5, [sp, #0xc] + add r4, r5, #0 + b _02219A6C +_02219A4A: + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #3 + bge _02219A66 + add r0, r7, #0 + ldr r1, _02219AB0 ; =0x02241940 + add r2, r6, #0 + bl MOD13_0221A04C + cmp r0, #0 + bne _02219A6C + add r4, r5, #0 + b _02219A6C +_02219A66: + add r4, r5, #0 + b _02219A6C +_02219A6A: + add r4, r5, #0 +_02219A6C: + cmp r4, #0 + bne _0221999E + add r0, sp, #0x1c + bl OS_CancelAlarm + ldr r5, _02219ACC ; =0x02241920 + add r4, sp, #0x18 + mov r6, #0 +_02219A7C: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl OS_ReceiveMessage + cmp r0, #1 + beq _02219A7C +_02219A8A: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _02219A94 + mov r2, #1 + b _02219A96 +_02219A94: + mov r2, #0 +_02219A96: + ldr r0, [sp, #8] + ldr r1, _02219AC8 ; =0x022419A0 + bl MOD13_02219E70 + ldr r0, [sp, #0xc] + add sp, #0x4c + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02219AA8: .word 0x00080000 +_02219AAC: .word 0x000C0000 +_02219AB0: .word 0x02241940 +_02219AB4: .word 0x02241942 +_02219AB8: .word 0x0030BFFE +_02219ABC: .word 0x003FEC42 +_02219AC0: .word MOD13_02219E48 +_02219AC4: .word 0x00030000 +_02219AC8: .word 0x022419A0 +_02219ACC: .word 0x02241920 + + thumb_func_start MOD13_02219AD0 +MOD13_02219AD0: ; 0x02219AD0 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + str r0, [sp, #4] + mov r6, #0 + mvn r0, r6 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + add r7, r6, #0 + add r5, r6, #0 + ldr r0, _02219C44 ; =0x02241900 + ldr r1, [r0] + cmp r1, #0 + beq _02219AF4 + ldr r0, _02219C48 ; =0x0224190C + ldr r0, [r0] + cmp r0, #0 + bne _02219B00 +_02219AF4: + mov r0, #0 + mvn r0, r0 + add sp, #0x44 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219B00: + ldr r0, _02219C4C ; =0x00003000 + blx r1 + add r4, r0, #0 + cmp r4, #0 + bne _02219B16 + lsl r0, r6, #0 + mvn r0, r0 + add sp, #0x44 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219B16: + str r4, [sp, #0x10] + lsl r0, r6, #0 + add r1, r0, #0 + add r2, r0, #0 + ldr r3, _02219C50 ; =0x0030BFFE + bl MOD13_0221A1E8 + cmp r0, #0 + bne _02219B2A + b _02219C30 +_02219B2A: + add r0, sp, #0x18 + bl OS_CreateAlarm + mov r0, #0x13 + str r0, [sp] + add r0, sp, #0x18 + ldr r1, _02219C54 ; =0x003FEC42 + lsl r2, r6, #0 + ldr r3, _02219C58 ; =MOD13_02219E48 + bl OS_SetAlarm +_02219B40: + ldr r0, _02219C5C ; =0x02241920 + add r1, sp, #0x14 + mov r2, #1 + bl OS_ReceiveMessage + ldr r0, [sp, #0x14] + cmp r0, #0x13 + bhi _02219C16 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_02219B5E: ; jump table + .short _02219C16 - _02219B5E + 1 ; case 0 + .short _02219C16 - _02219B5E + 1 ; case 1 + .short _02219C16 - _02219B5E + 1 ; case 2 + .short _02219C16 - _02219B5E + 1 ; case 3 + .short _02219BCC - _02219B5E + 1 ; case 4 + .short _02219BA4 - _02219B5E + 1 ; case 5 + .short _02219C16 - _02219B5E + 1 ; case 6 + .short _02219C16 - _02219B5E + 1 ; case 7 + .short _02219BCC - _02219B5E + 1 ; case 8 + .short _02219C16 - _02219B5E + 1 ; case 9 + .short _02219BC6 - _02219B5E + 1 ; case 10 + .short _02219C16 - _02219B5E + 1 ; case 11 + .short _02219C16 - _02219B5E + 1 ; case 12 + .short _02219C16 - _02219B5E + 1 ; case 13 + .short _02219C16 - _02219B5E + 1 ; case 14 + .short _02219C16 - _02219B5E + 1 ; case 15 + .short _02219C16 - _02219B5E + 1 ; case 16 + .short _02219C16 - _02219B5E + 1 ; case 17 + .short _02219BCC - _02219B5E + 1 ; case 18 + .short _02219B86 - _02219B5E + 1 ; case 19 +_02219B86: + cmp r6, #0 + bne _02219BCC + cmp r5, #0 + beq _02219B98 + add r0, r4, #0 + mov r1, #0x40 + bl MOD13_0221A2FC + add r7, r0, #0 +_02219B98: + bl MOD13_0221A1A4 + cmp r0, #0 + beq _02219C16 + mov r6, #1 + b _02219BCC +_02219BA4: + cmp r6, #0 + bne _02219BCC + cmp r5, #8 + bge _02219BB0 + add r5, r5, #1 + b _02219BCC +_02219BB0: + add r0, r4, #0 + mov r1, #0x40 + bl MOD13_0221A2FC + add r7, r0, #0 + bl MOD13_0221A1A4 + cmp r0, #0 + beq _02219C16 + mov r6, #1 + b _02219BCC +_02219BC6: + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #8] +_02219BCC: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _02219B40 + cmp r7, #0 + beq _02219BEA + sub r0, r7, #1 + mov r1, #0x54 + mul r0, r1 + add r0, #0x58 + ldr r1, _02219C44 ; =0x02241900 + ldr r1, [r1] + blx r1 + cmp r0, #0 + bne _02219BF6 + b _02219C16 +_02219BEA: + mov r0, #0x58 + ldr r1, _02219C44 ; =0x02241900 + ldr r1, [r1] + blx r1 + cmp r0, #0 + beq _02219C16 +_02219BF6: + ldr r1, [sp, #4] + str r0, [r1] + str r7, [r0] + mov r6, #0 + cmp r7, #0 + ble _02219C16 + add r5, r0, #4 +_02219C04: + add r0, r4, #0 + add r1, r5, #0 + bl MOD13_02219EB4 + add r4, #0xc0 + add r5, #0x54 + add r6, r6, #1 + cmp r6, r7 + blt _02219C04 +_02219C16: + add r0, sp, #0x18 + bl OS_CancelAlarm + ldr r5, _02219C5C ; =0x02241920 + add r4, sp, #0x14 + mov r6, #0 +_02219C22: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl OS_ReceiveMessage + cmp r0, #1 + beq _02219C22 +_02219C30: + ldr r0, [sp, #0x10] + ldr r1, _02219C48 ; =0x0224190C + ldr r1, [r1] + blx r1 + ldr r0, [sp, #8] + add sp, #0x44 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02219C44: .word 0x02241900 +_02219C48: .word 0x0224190C +_02219C4C: .word 0x00003000 +_02219C50: .word 0x0030BFFE +_02219C54: .word 0x003FEC42 +_02219C58: .word MOD13_02219E48 +_02219C5C: .word 0x02241920 + + thumb_func_start MOD13_02219C60 +MOD13_02219C60: ; 0x02219C60 + push {r4, r5, r6, r7, lr} + sub sp, #4 + mov r0, #0 + mvn r4, r0 + bl MOD13_0221A164 + cmp r0, #0 + beq _02219C8C + mov r5, #0 + ldr r6, _02219C98 ; =0x02241920 + add r7, sp, #0 +_02219C76: + add r0, r6, #0 + add r1, r7, #0 + mov r2, #1 + bl OS_ReceiveMessage + ldr r0, [sp] + cmp r0, #0xe + bne _02219C88 + add r4, r5, #0 +_02219C88: + cmp r5, #0 + bne _02219C76 +_02219C8C: + add r0, r4, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02219C98: .word 0x02241920 + + thumb_func_start MOD13_02219C9C +MOD13_02219C9C: ; 0x02219C9C + push {r4, r5, lr} + sub sp, #4 + mov r4, #1 + mov r0, #0 + mvn r5, r0 + ldr r0, _02219D48 ; =0x0224190C + ldr r0, [r0] + cmp r0, #0 + bne _02219CB8 + add r0, r5, #0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 +_02219CB8: + bl MOD13_0221A0FC + cmp r0, #0 + bne _02219CCC + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 +_02219CCC: + ldr r0, _02219D4C ; =0x02241920 + add r1, sp, #0 + mov r2, #1 + bl OS_ReceiveMessage + ldr r0, [sp] + cmp r0, #0x14 + bhi _02219D24 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_02219CEA: ; jump table + .short _02219D24 - _02219CEA + 1 ; case 0 + .short _02219D24 - _02219CEA + 1 ; case 1 + .short _02219D24 - _02219CEA + 1 ; case 2 + .short _02219D24 - _02219CEA + 1 ; case 3 + .short _02219D26 - _02219CEA + 1 ; case 4 + .short _02219D26 - _02219CEA + 1 ; case 5 + .short _02219D24 - _02219CEA + 1 ; case 6 + .short _02219D24 - _02219CEA + 1 ; case 7 + .short _02219D24 - _02219CEA + 1 ; case 8 + .short _02219D24 - _02219CEA + 1 ; case 9 + .short _02219D24 - _02219CEA + 1 ; case 10 + .short _02219D24 - _02219CEA + 1 ; case 11 + .short _02219D24 - _02219CEA + 1 ; case 12 + .short _02219D24 - _02219CEA + 1 ; case 13 + .short _02219D24 - _02219CEA + 1 ; case 14 + .short _02219D24 - _02219CEA + 1 ; case 15 + .short _02219D24 - _02219CEA + 1 ; case 16 + .short _02219D24 - _02219CEA + 1 ; case 17 + .short _02219D24 - _02219CEA + 1 ; case 18 + .short _02219D24 - _02219CEA + 1 ; case 19 + .short _02219D14 - _02219CEA + 1 ; case 20 +_02219D14: + mov r4, #0 + add r5, r4, #0 + ldr r0, _02219D50 ; =0x02241908 + ldr r0, [r0] + ldr r1, _02219D48 ; =0x0224190C + ldr r1, [r1] + blx r1 + b _02219D26 +_02219D24: + mov r4, #0 +_02219D26: + cmp r4, #0 + bne _02219CCC + bl OS_DisableInterrupts + mov r2, #0 + ldr r1, _02219D54 ; =0x02241900 + str r2, [r1] + ldr r1, _02219D48 ; =0x0224190C + str r2, [r1] + bl OS_RestoreInterrupts + add r0, r5, #0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + nop +_02219D48: .word 0x0224190C +_02219D4C: .word 0x02241920 +_02219D50: .word 0x02241908 +_02219D54: .word 0x02241900 + + thumb_func_start MOD13_02219D58 +MOD13_02219D58: ; 0x02219D58 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r6, r1, #0 + mov r4, #1 + ldr r0, _02219E2C ; =0x02241920 + ldr r1, _02219E30 ; =0x02241910 + mov r2, #4 + bl OS_InitMessageQueue + cmp r5, #0 + beq _02219D74 + cmp r6, #0 + bne _02219D80 +_02219D74: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219D80: + bl OS_DisableInterrupts + ldr r1, _02219E34 ; =0x02241900 + str r5, [r1] + ldr r1, _02219E38 ; =0x0224190C + str r6, [r1] + bl OS_RestoreInterrupts + ldr r0, _02219E3C ; =0x00005890 + ldr r1, _02219E34 ; =0x02241900 + ldr r1, [r1] + blx r1 + add r1, r0, #0 + ldr r0, _02219E40 ; =0x02241908 + str r1, [r0] + cmp r1, #0 + bne _02219DAE + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219DAE: + ldr r0, _02219E44 ; =MOD13_02219E5C + ldr r2, _02219E3C ; =0x00005890 + bl MOD13_02219F54 + cmp r0, #0 + bne _02219DBC + mov r4, #0 +_02219DBC: + cmp r4, #0 + beq _02219E14 + ldr r5, _02219E2C ; =0x02241920 + add r6, sp, #0 + mov r7, #1 +_02219DC6: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl OS_ReceiveMessage + ldr r0, [sp] + cmp r0, #0xf + bhi _02219E0E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_02219DE4: ; jump table + .short _02219E0E - _02219DE4 + 1 ; case 0 + .short _02219E0E - _02219DE4 + 1 ; case 1 + .short _02219E0E - _02219DE4 + 1 ; case 2 + .short _02219E0E - _02219DE4 + 1 ; case 3 + .short _02219E10 - _02219DE4 + 1 ; case 4 + .short _02219E10 - _02219DE4 + 1 ; case 5 + .short _02219E04 - _02219DE4 + 1 ; case 6 + .short _02219E0E - _02219DE4 + 1 ; case 7 + .short _02219E0E - _02219DE4 + 1 ; case 8 + .short _02219E0E - _02219DE4 + 1 ; case 9 + .short _02219E0E - _02219DE4 + 1 ; case 10 + .short _02219E0E - _02219DE4 + 1 ; case 11 + .short _02219E0E - _02219DE4 + 1 ; case 12 + .short _02219E0E - _02219DE4 + 1 ; case 13 + .short _02219E0E - _02219DE4 + 1 ; case 14 + .short _02219E0E - _02219DE4 + 1 ; case 15 +_02219E04: + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219E0E: + mov r4, #0 +_02219E10: + cmp r4, #0 + bne _02219DC6 +_02219E14: + ldr r0, _02219E40 ; =0x02241908 + ldr r0, [r0] + ldr r1, _02219E38 ; =0x0224190C + ldr r1, [r1] + blx r1 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02219E2C: .word 0x02241920 +_02219E30: .word 0x02241910 +_02219E34: .word 0x02241900 +_02219E38: .word 0x0224190C +_02219E3C: .word 0x00005890 +_02219E40: .word 0x02241908 +_02219E44: .word MOD13_02219E5C + + thumb_func_start MOD13_02219E48 +MOD13_02219E48: ; 0x02219E48 + add r1, r0, #0 + ldr r0, _02219E54 ; =0x02241920 + mov r2, #0 + ldr r3, _02219E58 ; =0x020CBDC4 + bx r3 + nop +_02219E54: .word 0x02241920 +_02219E58: .word 0x020CBDC4 + + thumb_func_start MOD13_02219E5C +MOD13_02219E5C: ; 0x02219E5C + add r1, r0, #0 + ldr r0, _02219E68 ; =0x02241920 + mov r2, #0 + ldr r3, _02219E6C ; =0x020CBDC4 + bx r3 + nop +_02219E68: .word 0x02241920 +_02219E6C: .word 0x020CBDC4 + + thumb_func_start MOD13_02219E70 +MOD13_02219E70: ; 0x02219E70 + add r3, r0, #0 + str r2, [r3] + add r0, r1, #0 + add r1, r3, #4 + ldr r3, _02219E7C ; =MOD13_02219EB4 + bx r3 + .align 2, 0 +_02219E7C: .word MOD13_02219EB4 + + thumb_func_start MOD13_02219E80 +MOD13_02219E80: ; 0x02219E80 + push {r4, r5, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + mov r1, #0 + add r0, sp, #0 + strh r1, [r0] + ldrh r0, [r0] + add r1, r4, #0 + add r1, #0xc + mov r2, #0x20 + bl MIi_CpuClear16 + ldr r0, [r5] + strh r0, [r4, #0xa] + add r0, r5, #4 + add r1, r4, #0 + add r1, #0xc + ldrh r2, [r4, #0xa] + bl MI_CpuCopy8 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02219EB4 +MOD13_02219EB4: ; 0x02219EB4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + ldrh r0, [r5, #0xa] + str r0, [r4] + add r0, r5, #0 + add r0, #0xc + add r1, r4, #4 + mov r2, #0x20 + bl MIi_CpuCopy16 + ldrh r0, [r5, #0x36] + str r0, [r4, #0x24] + add r0, r5, #4 + add r1, r4, #0 + add r1, #0x30 + mov r2, #6 + bl MIi_CpuCopy16 + mov r2, #0 + add r3, r2, #0 + ldr r1, _02219F50 ; =0x0223F834 +_02219EE2: + ldrh r6, [r5, #0x30] + ldrh r0, [r1] + and r6, r0 + cmp r6, #0 + beq _02219F10 + add r0, r4, r2 + ldrb r7, [r1, #2] + add r6, r0, #0 + add r6, #0x3c + strb r7, [r6] + ldrh r7, [r5, #0x2e] + ldrh r6, [r1] + and r7, r6 + cmp r7, #0 + beq _02219F0E + add r6, r0, #0 + add r6, #0x3c + ldrb r7, [r6] + mov r6, #0x80 + orr r7, r6 + add r0, #0x3c + strb r7, [r0] +_02219F0E: + add r2, r2, #1 +_02219F10: + add r1, r1, #4 + add r3, r3, #1 + cmp r3, #0xc + blt _02219EE2 + str r2, [r4, #0x38] + ldrh r0, [r5, #0x32] + str r0, [r4, #0x4c] + ldrh r1, [r5, #0x2c] + mov r0, #3 + and r1, r0 + cmp r1, #1 + bne _02219F34 + mov r0, #1 + str r0, [r4, #0x50] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219F34: + cmp r1, #2 + bne _02219F44 + mov r0, #2 + str r0, [r4, #0x50] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219F44: + mov r0, #0 + str r0, [r4, #0x50] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02219F50: .word 0x0223F834 + + thumb_func_start MOD13_02219F54 +MOD13_02219F54: ; 0x02219F54 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221A028 ; =0x02241A84 + str r5, [r0] + add r2, r5, #0 + add r2, #0x53 + mov r0, #3 + bic r2, r0 + ldr r0, _0221A02C ; =0x02241A68 + str r2, [r0] + add r1, r2, #0 + add r1, #0x2f + mov r3, #0x1f + bic r1, r3 + ldr r3, _0221A030 ; =0x02241A60 + str r1, [r3] + ldr r3, _0221A034 ; =0x0000231F + add r1, r1, r3 + mov r3, #0x1f + bic r1, r3 + ldr r3, _0221A038 ; =0x02241A80 + str r1, [r3] + add r1, #0xdf + mov r3, #0x1f + bic r1, r3 + str r1, [r2, #4] + ldr r1, [r0] + add r3, r5, r7 + ldr r2, [r1, #4] + sub r2, r3, r2 + str r2, [r1, #8] + mov r2, #0 + ldr r1, [r0] + str r2, [r1, #0xc] + ldr r1, [r0] + mov r0, #3 + str r0, [r1] + ldr r0, _0221A03C ; =0x02241A7C + str r6, [r0] + ldr r0, _0221A040 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #0 + bne _02219FDA + ldr r0, _0221A030 ; =0x02241A60 + ldr r0, [r0] + ldr r1, _0221A044 ; =0x00002300 + bl FUN_020A7E80 + cmp r0, #0 + beq _02219FD4 + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219FD4: + mov r1, #1 + ldr r0, _0221A040 ; =0x02241A78 + str r1, [r0] +_02219FDA: + ldr r0, _0221A040 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #1 + bne _0221A016 + ldr r0, _0221A02C ; =0x02241A68 + ldr r0, [r0] + ldr r1, _0221A048 ; =MOD13_0221A3CC + bl FUN_020A7BD4 + cmp r0, #3 + beq _0221A000 + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A000: + mov r1, #4 + ldr r0, _0221A040 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A016: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221A028: .word 0x02241A84 +_0221A02C: .word 0x02241A68 +_0221A030: .word 0x02241A60 +_0221A034: .word 0x0000231F +_0221A038: .word 0x02241A80 +_0221A03C: .word 0x02241A7C +_0221A040: .word 0x02241A78 +_0221A044: .word 0x00002300 +_0221A048: .word MOD13_0221A3CC + + thumb_func_start MOD13_0221A04C +MOD13_0221A04C: ; 0x0221A04C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r7, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221A0EC ; =0x02241A6C + str r6, [r0] + cmp r5, #0 + beq _0221A072 + add r0, r5, #0 + ldr r1, _0221A0F0 ; =0x02241A84 + ldr r1, [r1] + mov r2, #0x50 + bl MI_CpuCopy8 + b _0221A07E +_0221A072: + ldr r0, _0221A0F0 ; =0x02241A84 + ldr r0, [r0] + mov r1, #0 + mov r2, #0x50 + bl MI_CpuFill8 +_0221A07E: + add r0, r7, #0 + ldr r1, _0221A0F4 ; =0x02241A80 + ldr r1, [r1] + mov r2, #0xc0 + bl MIi_CpuCopy32 + bl MOD13_0221A348 + cmp r0, #1 + bne _0221A0A8 + mov r1, #8 + ldr r0, _0221A0F8 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A0A8: + ldr r0, _0221A0F8 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #3 + bne _0221A0DA + ldr r0, _0221A0F4 ; =0x02241A80 + ldr r0, [r0] + ldr r1, _0221A0F0 ; =0x02241A84 + ldr r1, [r1] + ldr r2, _0221A0EC ; =0x02241A6C + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221A0DA + mov r1, #8 + ldr r0, _0221A0F8 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A0DA: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221A0EC: .word 0x02241A6C +_0221A0F0: .word 0x02241A84 +_0221A0F4: .word 0x02241A80 +_0221A0F8: .word 0x02241A78 + + thumb_func_start MOD13_0221A0FC +MOD13_0221A0FC: ; 0x0221A0FC + push {r4, lr} + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221A160 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #3 + bne _0221A136 + bl FUN_020A7AC8 + cmp r0, #3 + beq _0221A122 + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 +_0221A122: + mov r1, #2 + ldr r0, _0221A160 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221A136: + bl MOD13_0221A348 + cmp r0, #1 + bne _0221A152 + mov r1, #2 + ldr r0, _0221A160 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221A152: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221A160: .word 0x02241A78 + + thumb_func_start MOD13_0221A164 +MOD13_0221A164: ; 0x0221A164 + push {r4, lr} + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221A1A0 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #7 + bne _0221A190 + bl FUN_020A7488 + cmp r0, #3 + bne _0221A190 + mov r1, #4 + ldr r0, _0221A1A0 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221A190: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + nop +_0221A1A0: .word 0x02241A78 + + thumb_func_start MOD13_0221A1A4 +MOD13_0221A1A4: ; 0x0221A1A4 + push {r4, lr} + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221A1E4 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #5 + bne _0221A1D6 + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + bl FUN_020A7A90 + cmp r0, #3 + bne _0221A1D6 + mov r1, #4 + ldr r0, _0221A1E4 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221A1D6: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221A1E4: .word 0x02241A78 + + thumb_func_start MOD13_0221A1E8 +MOD13_0221A1E8: ; 0x0221A1E8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + str r3, [sp] + bl OS_DisableInterrupts + add r7, r0, #0 + ldr r1, _0221A2DC ; =0x02241A64 + ldr r0, [sp] + str r0, [r1] + cmp r5, #0 + beq _0221A21E + mov r2, #0 + ldr r1, _0221A2E0 ; =0x02241A88 +_0221A208: + ldrb r0, [r5] + add r5, r5, #1 + strb r0, [r1] + add r1, r1, #1 + add r2, r2, #1 + cmp r2, #6 + blt _0221A208 + ldr r1, _0221A2E0 ; =0x02241A88 + ldr r0, _0221A2E4 ; =0x02241A70 + str r1, [r0] + b _0221A22E +_0221A21E: + ldr r0, _0221A2E0 ; =0x02241A88 + mov r1, #0xff + mov r2, #6 + bl MI_CpuFill8 + ldr r1, _0221A2E8 ; =0x020FF590 + ldr r0, _0221A2E4 ; =0x02241A70 + str r1, [r0] +_0221A22E: + cmp r4, #0 + beq _0221A26C + cmp r6, #0 + ble _0221A26C + cmp r6, #0x20 + bgt _0221A26C + mov r1, #0 + cmp r6, #0 + ble _0221A250 + ldr r2, _0221A2EC ; =0x02241A90 +_0221A242: + ldrb r0, [r4] + add r4, r4, #1 + strb r0, [r2] + add r2, r2, #1 + add r1, r1, #1 + cmp r1, r6 + blt _0221A242 +_0221A250: + cmp r1, #0x20 + bge _0221A264 + ldr r0, _0221A2EC ; =0x02241A90 + add r2, r0, r1 + mov r0, #0 +_0221A25A: + strb r0, [r2] + add r2, r2, #1 + add r1, r1, #1 + cmp r1, #0x20 + blt _0221A25A +_0221A264: + ldr r1, _0221A2EC ; =0x02241A90 + ldr r0, _0221A2F0 ; =0x02241A74 + str r1, [r0] + b _0221A27C +_0221A26C: + ldr r0, _0221A2EC ; =0x02241A90 + mov r1, #0xff + mov r2, #0x20 + bl MI_CpuFill8 + ldr r1, _0221A2F4 ; =0x020FF598 + ldr r0, _0221A2F0 ; =0x02241A74 + str r1, [r0] +_0221A27C: + ldr r0, _0221A2F8 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #3 + bne _0221A2AE + ldr r0, _0221A2E4 ; =0x02241A70 + ldr r0, [r0] + ldr r1, _0221A2F0 ; =0x02241A74 + ldr r1, [r1] + ldr r2, _0221A2DC ; =0x02241A64 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221A2CC + mov r1, #6 + ldr r0, _0221A2F8 ; =0x02241A78 + str r1, [r0] + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A2AE: + bl MOD13_0221A348 + cmp r0, #1 + bne _0221A2CC + mov r1, #6 + ldr r0, _0221A2F8 ; =0x02241A78 + str r1, [r0] + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A2CC: + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221A2DC: .word 0x02241A64 +_0221A2E0: .word 0x02241A88 +_0221A2E4: .word 0x02241A70 +_0221A2E8: .word 0x020FF590 +_0221A2EC: .word 0x02241A90 +_0221A2F0: .word 0x02241A74 +_0221A2F4: .word 0x020FF598 +_0221A2F8: .word 0x02241A78 + + thumb_func_start MOD13_0221A2FC +MOD13_0221A2FC: ; 0x0221A2FC + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r7, r1, #0 + mov r0, #1 + bl FUN_020A83D0 + bl FUN_020A846C + add r6, r0, #0 + cmp r6, #0 + ble _0221A336 + mov r4, #0 + cmp r6, #0 + ble _0221A336 +_0221A31A: + cmp r4, r7 + bge _0221A336 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_020A8358 + add r1, r5, #0 + mov r2, #0xc0 + bl MIi_CpuCopy32 + add r4, r4, #1 + add r5, #0xc0 + cmp r4, r6 + blt _0221A31A +_0221A336: + mov r0, #0 + bl FUN_020A83D0 + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221A348 +MOD13_0221A348: ; 0x0221A348 + push {lr} + sub sp, #4 + ldr r0, _0221A3C0 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #8 + bhi _0221A3B0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221A362: ; jump table + .short _0221A3B0 - _0221A362 + 1 ; case 0 + .short _0221A39A - _0221A362 + 1 ; case 1 + .short _0221A3B0 - _0221A362 + 1 ; case 2 + .short _0221A3B0 - _0221A362 + 1 ; case 3 + .short _0221A3B0 - _0221A362 + 1 ; case 4 + .short _0221A374 - _0221A362 + 1 ; case 5 + .short _0221A3B0 - _0221A362 + 1 ; case 6 + .short _0221A38A - _0221A362 + 1 ; case 7 + .short _0221A3B0 - _0221A362 + 1 ; case 8 +_0221A374: + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + bl FUN_020A7A90 + cmp r0, #3 + beq _0221A3B8 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221A38A: + bl FUN_020A7488 + cmp r0, #3 + beq _0221A3B8 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221A39A: + ldr r0, _0221A3C4 ; =0x02241A68 + ldr r0, [r0] + ldr r1, _0221A3C8 ; =MOD13_0221A3CC + bl FUN_020A7BD4 + cmp r0, #3 + beq _0221A3B8 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221A3B0: + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221A3B8: + mov r0, #1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221A3C0: .word 0x02241A78 +_0221A3C4: .word 0x02241A68 +_0221A3C8: .word MOD13_0221A3CC + + thumb_func_start MOD13_0221A3CC +MOD13_0221A3CC: ; 0x0221A3CC + push {lr} + sub sp, #4 + cmp r0, #0 + bne _0221A3D6 + b _0221A750 +_0221A3D6: + mov r1, #0 + ldrsh r2, [r0, r1] + cmp r2, #7 + bls _0221A3E0 + b _0221A742 +_0221A3E0: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #8] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add r2, pc + bx r2 +_0221A3EE: ; jump table + .short _0221A742 - _0221A3EE + 1 ; case 0 + .short _0221A3FE - _0221A3EE + 1 ; case 1 + .short _0221A6E4 - _0221A3EE + 1 ; case 2 + .short _0221A4AE - _0221A3EE + 1 ; case 3 + .short _0221A536 - _0221A3EE + 1 ; case 4 + .short _0221A4F2 - _0221A3EE + 1 ; case 5 + .short _0221A610 - _0221A3EE + 1 ; case 6 + .short _0221A728 - _0221A3EE + 1 ; case 7 +_0221A3FE: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A494 + ldr r0, _0221A758 ; =0x02241A78 + ldr r2, [r0] + cmp r2, #4 + bne _0221A426 + mov r2, #3 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A41C + b _0221A750 +_0221A41C: + mov r0, #6 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A426: + cmp r2, #6 + bne _0221A45C + ldr r0, _0221A760 ; =0x02241A70 + ldr r0, [r0] + ldr r1, _0221A764 ; =0x02241A74 + ldr r1, [r1] + ldr r2, _0221A768 ; =0x02241A64 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221A440 + b _0221A750 +_0221A440: + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A450 + b _0221A750 +_0221A450: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A45C: + cmp r2, #8 + beq _0221A462 + b _0221A750 +_0221A462: + ldr r0, _0221A76C ; =0x02241A80 + ldr r0, [r0] + ldr r1, _0221A770 ; =0x02241A84 + ldr r1, [r1] + ldr r2, _0221A774 ; =0x02241A6C + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221A478 + b _0221A750 +_0221A478: + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A488 + b _0221A750 +_0221A488: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A494: + mov r3, #1 + ldr r0, _0221A758 ; =0x02241A78 + str r3, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r3, [r0] + cmp r3, #0 + bne _0221A4A4 + b _0221A750 +_0221A4A4: + add r0, r2, #0 + blx r3 + add sp, #4 + pop {r3} + bx r3 +_0221A4AE: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A4D8 + ldr r0, _0221A758 ; =0x02241A78 + ldr r2, [r0] + cmp r2, #6 + beq _0221A4C0 + b _0221A750 +_0221A4C0: + mov r2, #5 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A4CE + b _0221A750 +_0221A4CE: + mov r0, #8 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A4D8: + mov r2, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A4E8 + b _0221A750 +_0221A4E8: + mov r0, #9 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A4F2: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A51C + ldr r0, _0221A758 ; =0x02241A78 + ldr r2, [r0] + cmp r2, #8 + beq _0221A504 + b _0221A750 +_0221A504: + mov r2, #7 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A512 + b _0221A750 +_0221A512: + mov r0, #0xc + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A51C: + mov r2, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A52C + b _0221A750 +_0221A52C: + mov r0, #0xd + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A536: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A5F6 + ldr r0, _0221A758 ; =0x02241A78 + ldr r2, [r0] + cmp r2, #4 + bne _0221A55E + mov r2, #3 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A554 + b _0221A750 +_0221A554: + mov r0, #0xa + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A55E: + cmp r2, #6 + bne _0221A594 + ldr r0, _0221A760 ; =0x02241A70 + ldr r0, [r0] + ldr r1, _0221A764 ; =0x02241A74 + ldr r1, [r1] + ldr r2, _0221A768 ; =0x02241A64 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221A578 + b _0221A750 +_0221A578: + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A588 + b _0221A750 +_0221A588: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A594: + cmp r2, #2 + bne _0221A5BE + bl FUN_020A7AC8 + cmp r0, #3 + bne _0221A5A2 + b _0221A750 +_0221A5A2: + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A5B2 + b _0221A750 +_0221A5B2: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A5BE: + cmp r2, #8 + beq _0221A5C4 + b _0221A750 +_0221A5C4: + ldr r0, _0221A76C ; =0x02241A80 + ldr r0, [r0] + ldr r1, _0221A770 ; =0x02241A84 + ldr r1, [r1] + ldr r2, _0221A774 ; =0x02241A6C + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221A5DA + b _0221A750 +_0221A5DA: + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A5EA + b _0221A750 +_0221A5EA: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A5F6: + mov r2, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A606 + b _0221A750 +_0221A606: + mov r0, #0xb + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A610: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A6CC + ldr r0, _0221A758 ; =0x02241A78 + ldr r2, [r0] + cmp r2, #4 + bne _0221A638 + mov r2, #3 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A62E + b _0221A750 +_0221A62E: + mov r0, #0xe + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A638: + cmp r2, #6 + bne _0221A66A + ldr r0, _0221A760 ; =0x02241A70 + ldr r0, [r0] + ldr r1, _0221A764 ; =0x02241A74 + ldr r1, [r1] + ldr r2, _0221A768 ; =0x02241A64 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + beq _0221A750 + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A66A: + cmp r2, #2 + bne _0221A690 + bl FUN_020A7AC8 + cmp r0, #3 + beq _0221A750 + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A690: + cmp r2, #8 + bne _0221A6C2 + ldr r0, _0221A76C ; =0x02241A80 + ldr r0, [r0] + ldr r1, _0221A770 ; =0x02241A84 + ldr r1, [r1] + ldr r2, _0221A774 ; =0x02241A6C + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + beq _0221A750 + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A6C2: + mov r1, #3 + str r1, [r0] + add sp, #4 + pop {r3} + bx r3 +_0221A6CC: + mov r2, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #0xf + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A6E4: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A710 + ldr r0, _0221A758 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #2 + bne _0221A750 + bl FUN_020A7E0C + mov r1, #0 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #0x14 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A710: + mov r3, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r3, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r3, [r0] + cmp r3, #0 + beq _0221A750 + add r0, r2, #0 + blx r3 + add sp, #4 + pop {r3} + bx r3 +_0221A728: + ldr r0, _0221A758 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #5 + bne _0221A750 + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #5 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A742: + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #1 + mov r1, #0 + blx r2 +_0221A750: + add sp, #4 + pop {r3} + bx r3 + nop +_0221A758: .word 0x02241A78 +_0221A75C: .word 0x02241A7C +_0221A760: .word 0x02241A70 +_0221A764: .word 0x02241A74 +_0221A768: .word 0x02241A64 +_0221A76C: .word 0x02241A80 +_0221A770: .word 0x02241A84 +_0221A774: .word 0x02241A6C + + thumb_func_start MOD13_0221A778 +MOD13_0221A778: ; 0x0221A778 + push {lr} + sub sp, #0xc + add r0, sp, #0 + bl MOD13_0221A7AC + add r0, sp, #0 + ldr r1, _0221A790 ; =0x02241B2C + ldr r1, [r1] + blx r1 + add sp, #0xc + pop {r3} + bx r3 + .align 2, 0 +_0221A790: .word 0x02241B2C + + thumb_func_start MOD13_0221A794 +MOD13_0221A794: ; 0x0221A794 + push {lr} + sub sp, #4 + ldr r1, _0221A7A8 ; =0x02241CA8 + mov r2, #0xe8 + bl memcpy + mov r0, #1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221A7A8: .word 0x02241CA8 + + thumb_func_start MOD13_0221A7AC +MOD13_0221A7AC: ; 0x0221A7AC + push {r4, lr} + add r4, r0, #0 + ldr r0, _0221A7E0 ; =0x02241AE8 + ldr r0, [r0] + str r0, [r4] + ldr r0, _0221A7E4 ; =0x0223F870 + ldr r1, [r0] + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + bne _0221A7C6 + str r0, [r4, #4] + b _0221A7D2 +_0221A7C6: + bl MOD13_0221AA90 + ldr r1, _0221A7E4 ; =0x0223F870 + ldr r1, [r1] + sub r0, r1, r0 + str r0, [r4, #4] +_0221A7D2: + ldr r0, _0221A7E8 ; =0x02241B28 + ldr r0, [r0] + str r0, [r4, #8] + mov r0, #1 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221A7E0: .word 0x02241AE8 +_0221A7E4: .word 0x0223F870 +_0221A7E8: .word 0x02241B28 + + thumb_func_start MOD13_0221A7EC +MOD13_0221A7EC: ; 0x0221A7EC + push {r4, r5, r6, lr} + ldr r0, _0221A884 ; =0x02241B14 + ldr r0, [r0] + cmp r0, #0 + beq _0221A862 + ldr r4, _0221A888 ; =0x02241AE8 + ldr r6, [r4] + mov r1, #1 + ldr r0, _0221A88C ; =0x02241AC0 + str r1, [r0] + mov r5, #0x64 + b _0221A80A +_0221A804: + add r0, r5, #0 + bl OS_Sleep +_0221A80A: + ldr r0, [r4] + cmp r0, #1 + blt _0221A814 + cmp r0, #5 + ble _0221A804 +_0221A814: + ldr r0, _0221A890 ; =0x000001F4 + bl OS_Sleep + ldr r0, _0221A894 ; =0x02241BE8 + bl OS_IsThreadTerminated + cmp r0, #0 + bne _0221A83C + ldr r4, _0221A894 ; =0x02241BE8 +_0221A826: + add r0, r4, #0 + bl OS_WakeupThreadDirect + add r0, r4, #0 + bl OS_JoinThread + add r0, r4, #0 + bl OS_IsThreadTerminated + cmp r0, #0 + beq _0221A826 +_0221A83C: + ldr r0, _0221A898 ; =0x02241AE0 + ldr r0, [r0] + cmp r0, #0 + beq _0221A850 + ldr r1, _0221A89C ; =0x02241ABC + ldr r1, [r1] + blx r1 + mov r1, #0 + ldr r0, _0221A898 ; =0x02241AE0 + str r1, [r0] +_0221A850: + mov r1, #0 + ldr r0, _0221A884 ; =0x02241B14 + str r1, [r0] + ldr r0, _0221A888 ; =0x02241AE8 + ldr r0, [r0] + cmp r6, r0 + beq _0221A862 + bl MOD13_0221A778 +_0221A862: + ldr r0, _0221A8A0 ; =0x02241B24 + ldr r0, [r0] + cmp r0, #0 + ble _0221A87A + bl MOD13_0221DAF4 + mov r2, #0 + ldr r1, _0221A8A0 ; =0x02241B24 + str r2, [r1] + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221A87A: + mov r0, #9 + mvn r0, r0 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_0221A884: .word 0x02241B14 +_0221A888: .word 0x02241AE8 +_0221A88C: .word 0x02241AC0 +_0221A890: .word 0x000001F4 +_0221A894: .word 0x02241BE8 +_0221A898: .word 0x02241AE0 +_0221A89C: .word 0x02241ABC +_0221A8A0: .word 0x02241B24 + + thumb_func_start MOD13_0221A8A4 +MOD13_0221A8A4: ; 0x0221A8A4 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, _0221A998 ; =0x02241AE8 + ldr r0, [r0] + cmp r0, #1 + blt _0221A8C2 + cmp r0, #5 + bgt _0221A8C2 + mov r0, #9 + mvn r0, r0 + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 +_0221A8C2: + ldr r0, _0221A99C ; =0x0223F874 + str r1, [r0] + mov r5, #7 + ldr r0, _0221A998 ; =0x02241AE8 + str r5, [r0] + ldr r0, _0221A9A0 ; =0x02241B2C + str r2, [r0] + ldr r0, _0221A9A4 ; =0x02241AB4 + str r3, [r0] + ldr r2, [sp, #0x18] + ldr r0, _0221A9A8 ; =0x02241ABC + str r2, [r0] + ldr r2, [sp, #0x1c] + ldr r0, _0221A9AC ; =0x0223F86C + str r2, [r0] + add r0, r1, #0 + bl MOD13_0221DB54 + mov r2, #1 + ldr r1, _0221A9B0 ; =0x02241B24 + str r2, [r1] + cmp r0, #0 + bge _0221A8FC + ldr r1, _0221A9B4 ; =0x02241B28 + str r0, [r1] + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 +_0221A8FC: + ldr r0, _0221A9AC ; =0x0223F86C + ldr r0, [r0] + ldr r1, _0221A9A4 ; =0x02241AB4 + ldr r1, [r1] + blx r1 + ldr r1, _0221A9B8 ; =0x02241AE0 + str r0, [r1] + cmp r0, #0 + bne _0221A91E + mov r0, #0 + mvn r0, r0 + ldr r1, _0221A9B4 ; =0x02241B28 + str r0, [r1] + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 +_0221A91E: + bl OS_IsThreadAvailable + cmp r0, #1 + beq _0221A936 + mov r0, #8 + mvn r0, r0 + ldr r1, _0221A9B4 ; =0x02241B28 + str r0, [r1] + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 +_0221A936: + ldr r0, _0221A9AC ; =0x0223F86C + ldr r3, [r0] + str r3, [sp] + str r4, [sp, #4] + ldr r0, _0221A9BC ; =0x02241BE8 + ldr r1, _0221A9C0 ; =MOD13_0221C618 + mov r2, #0 + ldr r4, _0221A9B8 ; =0x02241AE0 + ldr r5, [r4] + mov r4, #7 + bic r3, r4 + add r3, r5, r3 + bl OS_CreateThread + mov r1, #1 + ldr r0, _0221A998 ; =0x02241AE8 + str r1, [r0] + bl MOD13_0221AA90 + ldr r1, _0221A9C4 ; =0x0000EA60 + add r1, r0, r1 + ldr r0, _0221A9C8 ; =0x0223F870 + str r1, [r0] + mov r0, #0 + ldr r1, _0221A9CC ; =0x02241AC0 + str r0, [r1] + ldr r5, _0221A9D0 ; =0x02241CA8 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 +_0221A972: + stmia r5!, {r0, r1, r2, r3} + stmia r5!, {r0, r1, r2, r3} + sub r4, r4, #1 + cmp r4, #0 + bne _0221A972 + stmia r5!, {r0, r1} + bl MOD13_0221A778 + ldr r0, _0221A9BC ; =0x02241BE8 + bl OS_WakeupThreadDirect + mov r0, #1 + ldr r1, _0221A9D4 ; =0x02241B14 + str r0, [r1] + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 + nop +_0221A998: .word 0x02241AE8 +_0221A99C: .word 0x0223F874 +_0221A9A0: .word 0x02241B2C +_0221A9A4: .word 0x02241AB4 +_0221A9A8: .word 0x02241ABC +_0221A9AC: .word 0x0223F86C +_0221A9B0: .word 0x02241B24 +_0221A9B4: .word 0x02241B28 +_0221A9B8: .word 0x02241AE0 +_0221A9BC: .word 0x02241BE8 +_0221A9C0: .word MOD13_0221C618 +_0221A9C4: .word 0x0000EA60 +_0221A9C8: .word 0x0223F870 +_0221A9CC: .word 0x02241AC0 +_0221A9D0: .word 0x02241CA8 +_0221A9D4: .word 0x02241B14 + + thumb_func_start MOD13_0221A9D8 +MOD13_0221A9D8: ; 0x0221A9D8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + str r0, [sp] + add r6, r1, #0 + lsl r5, r0, #0 + mov r4, #0 + add r7, r4, #0 +_0221A9E6: + add r0, r5, #0 + ldrsb r1, [r6, r7] + add r6, r6, #1 + bl MOD13_0221AA14 + add r1, r5, r0 + add r5, r1, #0 + cmp r4, #5 + bge _0221A9FE + add r5, r1, #1 + mov r0, #0x3a + strb r0, [r1] +_0221A9FE: + add r4, r4, #1 + cmp r4, #6 + blt _0221A9E6 + mov r0, #0 + strb r0, [r5] + ldr r0, [sp] + sub r0, r5, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221AA14 +MOD13_0221AA14: ; 0x0221AA14 + push {r4, r5} + add r2, r0, #0 + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + mov r1, #0xf0 + add r3, r4, #0 + and r3, r1 + asr r3, r3, #4 + mov r5, #0 + mov r1, #0xf + and r4, r1 +_0221AA2A: + cmp r3, #9 + bgt _0221AA36 + add r3, #0x30 + strb r3, [r2] + add r2, r2, #1 + b _0221AA3C +_0221AA36: + add r3, #0x37 + strb r3, [r2] + add r2, r2, #1 +_0221AA3C: + add r3, r4, #0 + add r5, r5, #1 + cmp r5, #2 + blt _0221AA2A + mov r1, #0 + strb r1, [r2] + sub r0, r2, r0 + pop {r4, r5} + bx lr + .align 2, 0 + + thumb_func_start MOD13_0221AA50 +MOD13_0221AA50: ; 0x0221AA50 + push {lr} + sub sp, #4 + ldr r1, _0221AA60 ; =0x02241ABC + ldr r1, [r1] + blx r1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221AA60: .word 0x02241ABC + + thumb_func_start MOD13_0221AA64 +MOD13_0221AA64: ; 0x0221AA64 + push {r4, r5, lr} + sub sp, #4 + add r4, r0, #0 + mul r4, r1 + add r0, r4, #0 + ldr r1, _0221AA8C ; =0x02241AB4 + ldr r1, [r1] + blx r1 + add r5, r0, #0 + cmp r5, #0 + beq _0221AA82 + mov r1, #0 + add r2, r4, #0 + bl Call_FillMemWithValue +_0221AA82: + add r0, r5, #0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + .align 2, 0 +_0221AA8C: .word 0x02241AB4 + + thumb_func_start MOD13_0221AA90 +MOD13_0221AA90: ; 0x0221AA90 + push {lr} + sub sp, #4 + bl OS_GetTick + lsr r2, r0, #0x1a + lsl r1, r1, #6 + orr r1, r2 + lsl r0, r0, #6 + ldr r2, _0221AAB0 ; =0x000082EA + mov r3, #0 + bl _ll_udiv + add sp, #4 + pop {r3} + bx r3 + nop +_0221AAB0: .word 0x000082EA + + thumb_func_start MOD13_0221AAB4 +MOD13_0221AAB4: ; 0x0221AAB4 + push {r4, r5, r6, lr} + sub sp, #0x58 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r0, sp, #0 + bl MOD13_0221B4AC + add r0, sp, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD13_0221B42C + add r0, r5, #0 + add r1, sp, #0 + bl MOD13_0221B3D0 + add sp, #0x58 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221AAE0 +MOD13_0221AAE0: ; 0x0221AAE0 + mov r3, #0 + cmp r2, #0 + bls _0221AAF4 + lsl r1, r1, #0x18 + asr r1, r1, #0x18 +_0221AAEA: + strb r1, [r0] + add r0, r0, #1 + add r3, r3, #1 + cmp r3, r2 + blo _0221AAEA +_0221AAF4: + bx lr + .align 2, 0 + + thumb_func_start MOD13_0221AAF8 +MOD13_0221AAF8: ; 0x0221AAF8 + push {r4} + sub sp, #4 + mov r4, #0 + cmp r2, #0 + bls _0221AB0C +_0221AB02: + ldrb r3, [r1, r4] + strb r3, [r0, r4] + add r4, r4, #1 + cmp r4, r2 + blo _0221AB02 +_0221AB0C: + add sp, #4 + pop {r4} + bx lr + .align 2, 0 + + thumb_func_start MOD13_0221AB14 +MOD13_0221AB14: ; 0x0221AB14 + push {r4, r5, r6, r7} + mov r6, #0 + cmp r2, #0 + bls _0221AB3E +_0221AB1C: + add r3, r6, #3 + ldrb r3, [r1, r3] + lsl r5, r3, #0x18 + add r3, r6, #2 + ldrb r3, [r1, r3] + lsl r4, r3, #0x10 + ldrb r3, [r1, r6] + add r7, r6, #1 + ldrb r7, [r1, r7] + lsl r7, r7, #8 + orr r3, r7 + orr r4, r3 + orr r5, r4 + stmia r0!, {r5} + add r6, r6, #4 + cmp r6, r2 + blo _0221AB1C +_0221AB3E: + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 + + thumb_func_start MOD13_0221AB44 +MOD13_0221AB44: ; 0x0221AB44 + push {r4, r5} + mov r3, #0 + cmp r2, #0 + bls _0221AB70 +_0221AB4C: + ldr r4, [r1] + strb r4, [r0, r3] + ldr r4, [r1] + lsr r5, r4, #8 + add r4, r3, #1 + strb r5, [r0, r4] + ldr r4, [r1] + lsr r5, r4, #0x10 + add r4, r3, #2 + strb r5, [r0, r4] + ldr r4, [r1] + lsr r5, r4, #0x18 + add r4, r3, #3 + strb r5, [r0, r4] + add r1, r1, #4 + add r3, r3, #4 + cmp r3, r2 + blo _0221AB4C +_0221AB70: + pop {r4, r5} + bx lr + + thumb_func_start MOD13_0221AB74 +MOD13_0221AB74: ; 0x0221AB74 + push {r4, r5, r6, r7, lr} + sub sp, #0x84 + add r5, r0, #0 + ldr r0, [r5] + str r0, [sp] + ldr r4, [r5, #4] + ldr r6, [r5, #8] + ldr r7, [r5, #0xc] + add r0, sp, #0x40 + mov r2, #0x40 + bl MOD13_0221AB14 + ldr r0, [sp, #0x40] + str r0, [sp, #4] + add r1, r4, #0 + and r1, r6 + mvn r0, r4 + and r0, r7 + orr r1, r0 + ldr r0, [sp, #4] + add r1, r0, r1 + ldr r0, _0221AF8C ; =0x28955B88 + sub r1, r1, r0 + ldr r0, [sp] + add r0, r0, r1 + lsl r1, r0, #7 + lsr r0, r0, #0x19 + orr r1, r0 + add r0, r1, r4 + ldr r1, [sp, #0x44] + str r1, [sp, #8] + add r1, r0, #0 + and r1, r4 + mvn r2, r0 + and r2, r6 + orr r1, r2 + ldr r2, [sp, #8] + add r2, r2, r1 + ldr r1, _0221AF90 ; =0x173848AA + sub r1, r2, r1 + add r1, r7, r1 + lsl r2, r1, #0xc + lsr r1, r1, #0x14 + orr r2, r1 + add r3, r2, r0 + ldr r1, [sp, #0x48] + str r1, [sp, #0xc] + add r1, r3, #0 + and r1, r0 + mvn r2, r3 + and r2, r4 + orr r1, r2 + ldr r2, [sp, #0xc] + add r2, r2, r1 + ldr r1, _0221AF94 ; =0x242070DB + add r1, r2, r1 + add r1, r6, r1 + lsl r2, r1, #0x11 + lsr r1, r1, #0xf + orr r2, r1 + add r2, r2, r3 + ldr r1, [sp, #0x4c] + str r1, [sp, #0x10] + add r1, r2, #0 + and r1, r3 + mvn r6, r2 + and r6, r0 + orr r1, r6 + ldr r6, [sp, #0x10] + add r6, r6, r1 + ldr r1, _0221AF98 ; =0x3E423112 + sub r1, r6, r1 + add r1, r4, r1 + lsl r4, r1, #0x16 + lsr r1, r1, #0xa + orr r4, r1 + add r1, r4, r2 + ldr r4, [sp, #0x50] + str r4, [sp, #0x14] + add r4, r1, #0 + and r4, r2 + mvn r6, r1 + and r6, r3 + orr r4, r6 + ldr r6, [sp, #0x14] + add r6, r6, r4 + ldr r4, _0221AF9C ; =0x0A83F051 + sub r4, r6, r4 + add r0, r0, r4 + lsl r4, r0, #7 + lsr r0, r0, #0x19 + orr r4, r0 + add r4, r4, r1 + ldr r0, [sp, #0x54] + str r0, [sp, #0x18] + add r0, r4, #0 + and r0, r1 + mvn r6, r4 + and r6, r2 + orr r0, r6 + ldr r6, [sp, #0x18] + add r6, r6, r0 + ldr r0, _0221AFA0 ; =0x4787C62A + add r0, r6, r0 + add r0, r3, r0 + lsl r3, r0, #0xc + lsr r0, r0, #0x14 + orr r3, r0 + add r3, r3, r4 + ldr r0, [sp, #0x58] + str r0, [sp, #0x1c] + add r0, r3, #0 + and r0, r4 + mvn r6, r3 + and r6, r1 + orr r0, r6 + ldr r6, [sp, #0x1c] + add r6, r6, r0 + ldr r0, _0221AFA4 ; =0x57CFB9ED + sub r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #0x11 + lsr r0, r0, #0xf + orr r2, r0 + add r0, r2, r3 + ldr r2, [sp, #0x5c] + str r2, [sp, #0x20] + add r2, r0, #0 + and r2, r3 + mvn r6, r0 + and r6, r4 + orr r2, r6 + ldr r6, [sp, #0x20] + add r6, r6, r2 + ldr r2, _0221AFA8 ; =0x02B96AFF + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0x16 + lsr r1, r1, #0xa + orr r2, r1 + add r6, r2, r0 + ldr r1, [sp, #0x60] + str r1, [sp, #0x24] + add r1, r6, #0 + and r1, r0 + mvn r2, r6 + and r2, r3 + orr r1, r2 + ldr r2, [sp, #0x24] + add r2, r2, r1 + ldr r1, _0221AFAC ; =0x698098D8 + add r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #7 + lsr r1, r1, #0x19 + orr r2, r1 + add r2, r2, r6 + ldr r1, [sp, #0x64] + str r1, [sp, #0x28] + add r1, r2, #0 + and r1, r6 + mvn r4, r2 + and r4, r0 + orr r1, r4 + ldr r4, [sp, #0x28] + add r4, r4, r1 + ldr r1, _0221AFB0 ; =0x74BB0851 + sub r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0xc + lsr r1, r1, #0x14 + orr r3, r1 + add r1, r3, r2 + ldr r3, [sp, #0x68] + str r3, [sp, #0x2c] + add r3, r1, #0 + and r3, r2 + mvn r4, r1 + and r4, r6 + orr r3, r4 + ldr r4, [sp, #0x2c] + add r4, r4, r3 + ldr r3, _0221AFB4 ; =0x0000A44F + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0x11 + lsr r0, r0, #0xf + orr r3, r0 + add r4, r3, r1 + ldr r0, [sp, #0x6c] + str r0, [sp, #0x30] + add r0, r4, #0 + and r0, r1 + mvn r3, r4 + and r3, r2 + orr r0, r3 + ldr r3, [sp, #0x30] + add r3, r3, r0 + ldr r0, _0221AFB8 ; =0x76A32842 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0x16 + lsr r0, r0, #0xa + orr r3, r0 + add r3, r3, r4 + ldr r0, [sp, #0x70] + str r0, [sp, #0x34] + add r0, r3, #0 + and r0, r4 + mvn r6, r3 + and r6, r1 + orr r0, r6 + ldr r6, [sp, #0x34] + add r6, r6, r0 + ldr r0, _0221AFBC ; =0x6B901122 + add r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #7 + lsr r0, r0, #0x19 + orr r2, r0 + add r0, r2, r3 + ldr r2, [sp, #0x74] + str r2, [sp, #0x38] + add r2, r0, #0 + and r2, r3 + mvn r6, r0 + and r6, r4 + orr r2, r6 + ldr r6, [sp, #0x38] + add r6, r6, r2 + ldr r2, _0221AFC0 ; =0x02678E6D + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0xc + lsr r1, r1, #0x14 + orr r2, r1 + add r6, r2, r0 + mvn r2, r6 + ldr r7, [sp, #0x78] + add r1, r6, #0 + and r1, r0 + and r2, r3 + orr r1, r2 + add r2, r7, r1 + ldr r1, _0221AFC4 ; =0x5986BC72 + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #0x11 + lsr r1, r1, #0xf + orr r2, r1 + add r2, r2, r6 + mvn r4, r2 + ldr r1, [sp, #0x7c] + str r1, [sp, #0x3c] + add r1, r2, #0 + and r1, r6 + and r4, r0 + orr r1, r4 + ldr r4, [sp, #0x3c] + add r4, r4, r1 + ldr r1, _0221AFC8 ; =0x49B40821 + add r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0x16 + lsr r1, r1, #0xa + orr r3, r1 + add r1, r3, r2 + add r3, r1, #0 + and r3, r6 + add r4, r2, #0 + bic r4, r6 + orr r3, r4 + ldr r4, [sp, #8] + add r4, r4, r3 + ldr r3, _0221AFCC ; =0x09E1DA9E + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #5 + lsr r0, r0, #0x1b + orr r3, r0 + add r4, r3, r1 + add r0, r4, #0 + and r0, r2 + add r3, r1, #0 + bic r3, r2 + orr r0, r3 + ldr r3, [sp, #0x1c] + add r3, r3, r0 + ldr r0, _0221AFD0 ; =0x3FBF4CC0 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #9 + lsr r0, r0, #0x17 + orr r3, r0 + add r3, r3, r4 + add r0, r3, #0 + and r0, r1 + add r6, r4, #0 + bic r6, r1 + orr r0, r6 + ldr r6, [sp, #0x30] + add r6, r6, r0 + ldr r0, _0221AFD4 ; =0x265E5A51 + add r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #0xe + lsr r0, r0, #0x12 + orr r2, r0 + add r0, r2, r3 + add r2, r0, #0 + and r2, r4 + add r6, r3, #0 + bic r6, r4 + orr r2, r6 + ldr r6, [sp, #4] + add r6, r6, r2 + ldr r2, _0221AFD8 ; =0x16493856 + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0x14 + lsr r1, r1, #0xc + orr r2, r1 + add r6, r2, r0 + add r1, r6, #0 + and r1, r3 + add r2, r0, #0 + bic r2, r3 + orr r1, r2 + ldr r2, [sp, #0x18] + add r2, r2, r1 + ldr r1, _0221AFDC ; =0x29D0EFA3 + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #5 + lsr r1, r1, #0x1b + orr r2, r1 + add r2, r2, r6 + add r1, r2, #0 + and r1, r0 + add r4, r6, #0 + bic r4, r0 + orr r1, r4 + ldr r4, [sp, #0x2c] + add r4, r4, r1 + ldr r1, _0221AFE0 ; =0x02441453 + add r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #9 + lsr r1, r1, #0x17 + orr r3, r1 + add r1, r3, r2 + add r3, r1, #0 + and r3, r6 + add r4, r2, #0 + bic r4, r6 + orr r3, r4 + ldr r4, [sp, #0x3c] + add r4, r4, r3 + ldr r3, _0221AFE4 ; =0x275E197F + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0xe + lsr r0, r0, #0x12 + orr r3, r0 + add r4, r3, r1 + add r0, r4, #0 + and r0, r2 + add r3, r1, #0 + bic r3, r2 + orr r0, r3 + ldr r3, [sp, #0x14] + add r3, r3, r0 + ldr r0, _0221AFE8 ; =0x182C0438 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0x14 + lsr r0, r0, #0xc + orr r3, r0 + add r3, r3, r4 + add r0, r3, #0 + and r0, r1 + add r6, r4, #0 + bic r6, r1 + orr r0, r6 + ldr r6, [sp, #0x28] + add r6, r6, r0 + ldr r0, _0221AFEC ; =0x21E1CDE6 + add r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #5 + lsr r0, r0, #0x1b + orr r2, r0 + add r0, r2, r3 + add r6, r0, #0 + and r6, r4 + add r2, r3, #0 + bic r2, r4 + orr r6, r2 + add r6, r7, r6 + ldr r2, _0221AFF0 ; =0x3CC8F82A + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #9 + lsr r1, r1, #0x17 + orr r2, r1 + add r6, r2, r0 + add r1, r6, #0 + and r1, r3 + add r2, r0, #0 + bic r2, r3 + orr r1, r2 + ldr r2, [sp, #0x10] + add r2, r2, r1 + ldr r1, _0221AFF4 ; =0x0B2AF279 + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #0xe + lsr r1, r1, #0x12 + orr r2, r1 + add r2, r2, r6 + add r1, r2, #0 + and r1, r0 + add r4, r6, #0 + bic r4, r0 + orr r1, r4 + ldr r4, [sp, #0x24] + add r4, r4, r1 + ldr r1, _0221AFF8 ; =0x455A14ED + add r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0x14 + lsr r1, r1, #0xc + orr r3, r1 + add r1, r3, r2 + add r3, r1, #0 + and r3, r6 + add r4, r2, #0 + bic r4, r6 + orr r3, r4 + ldr r4, [sp, #0x38] + add r4, r4, r3 + ldr r3, _0221AFFC ; =0x561C16FB + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #5 + lsr r0, r0, #0x1b + orr r3, r0 + add r4, r3, r1 + add r0, r4, #0 + and r0, r2 + add r3, r1, #0 + bic r3, r2 + orr r0, r3 + ldr r3, [sp, #0xc] + add r3, r3, r0 + ldr r0, _0221B000 ; =0x03105C08 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #9 + lsr r0, r0, #0x17 + orr r3, r0 + add r3, r3, r4 + add r0, r3, #0 + and r0, r1 + add r6, r4, #0 + bic r6, r1 + orr r0, r6 + ldr r6, [sp, #0x20] + add r6, r6, r0 + ldr r0, _0221B004 ; =0x676F02D9 + add r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #0xe + lsr r0, r0, #0x12 + orr r2, r0 + add r0, r2, r3 + add r2, r0, #0 + and r2, r4 + add r6, r3, #0 + bic r6, r4 + orr r2, r6 + ldr r6, [sp, #0x34] + add r6, r6, r2 + ldr r2, _0221B008 ; =0x72D5B376 + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0x14 + lsr r1, r1, #0xc + orr r2, r1 + add r6, r2, r0 + add r2, r6, #0 + eor r2, r0 + add r1, r3, #0 + eor r1, r2 + ldr r2, [sp, #0x18] + add r2, r2, r1 + ldr r1, _0221B00C ; =0x0005C6BE + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #4 + lsr r1, r1, #0x1c + orr r2, r1 + add r2, r2, r6 + add r4, r2, #0 + eor r4, r6 + add r1, r0, #0 + eor r1, r4 + ldr r4, [sp, #0x24] + add r4, r4, r1 + ldr r1, _0221B010 ; =0x788E097F + sub r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0xb + lsr r1, r1, #0x15 + orr r3, r1 + add r1, r3, r2 + add r4, r1, #0 + eor r4, r2 + add r3, r6, #0 + eor r3, r4 + ldr r4, [sp, #0x30] + add r4, r4, r3 + ldr r3, _0221B014 ; =0x6D9D6122 + b _0221B018 + .align 2, 0 +_0221AF8C: .word 0x28955B88 +_0221AF90: .word 0x173848AA +_0221AF94: .word 0x242070DB +_0221AF98: .word 0x3E423112 +_0221AF9C: .word 0x0A83F051 +_0221AFA0: .word 0x4787C62A +_0221AFA4: .word 0x57CFB9ED +_0221AFA8: .word 0x02B96AFF +_0221AFAC: .word 0x698098D8 +_0221AFB0: .word 0x74BB0851 +_0221AFB4: .word 0x0000A44F +_0221AFB8: .word 0x76A32842 +_0221AFBC: .word 0x6B901122 +_0221AFC0: .word 0x02678E6D +_0221AFC4: .word 0x5986BC72 +_0221AFC8: .word 0x49B40821 +_0221AFCC: .word 0x09E1DA9E +_0221AFD0: .word 0x3FBF4CC0 +_0221AFD4: .word 0x265E5A51 +_0221AFD8: .word 0x16493856 +_0221AFDC: .word 0x29D0EFA3 +_0221AFE0: .word 0x02441453 +_0221AFE4: .word 0x275E197F +_0221AFE8: .word 0x182C0438 +_0221AFEC: .word 0x21E1CDE6 +_0221AFF0: .word 0x3CC8F82A +_0221AFF4: .word 0x0B2AF279 +_0221AFF8: .word 0x455A14ED +_0221AFFC: .word 0x561C16FB +_0221B000: .word 0x03105C08 +_0221B004: .word 0x676F02D9 +_0221B008: .word 0x72D5B376 +_0221B00C: .word 0x0005C6BE +_0221B010: .word 0x788E097F +_0221B014: .word 0x6D9D6122 +_0221B018: + add r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0x10 + lsr r0, r0, #0x10 + orr r3, r0 + add r4, r3, r1 + add r0, r4, #0 + eor r0, r1 + add r3, r2, #0 + eor r3, r0 + add r3, r7, r3 + ldr r0, _0221B35C ; =0x021AC7F4 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0x17 + lsr r0, r0, #9 + orr r3, r0 + add r3, r3, r4 + add r6, r3, #0 + eor r6, r4 + add r0, r1, #0 + eor r0, r6 + ldr r6, [sp, #8] + add r6, r6, r0 + ldr r0, _0221B360 ; =0x5B4115BC + sub r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #4 + lsr r0, r0, #0x1c + orr r2, r0 + add r0, r2, r3 + add r6, r0, #0 + eor r6, r3 + add r2, r4, #0 + eor r2, r6 + ldr r6, [sp, #0x14] + add r6, r6, r2 + ldr r2, _0221B364 ; =0x4BDECFA9 + add r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0xb + lsr r1, r1, #0x15 + orr r2, r1 + add r6, r2, r0 + add r2, r6, #0 + eor r2, r0 + add r1, r3, #0 + eor r1, r2 + ldr r2, [sp, #0x20] + add r2, r2, r1 + ldr r1, _0221B368 ; =0x0944B4A0 + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #0x10 + lsr r1, r1, #0x10 + orr r2, r1 + add r2, r2, r6 + add r4, r2, #0 + eor r4, r6 + add r1, r0, #0 + eor r1, r4 + ldr r4, [sp, #0x2c] + add r4, r4, r1 + ldr r1, _0221B36C ; =0x41404390 + sub r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0x17 + lsr r1, r1, #9 + orr r3, r1 + add r1, r3, r2 + add r4, r1, #0 + eor r4, r2 + add r3, r6, #0 + eor r3, r4 + ldr r4, [sp, #0x38] + add r4, r4, r3 + ldr r3, _0221B370 ; =0x289B7EC6 + add r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #4 + lsr r0, r0, #0x1c + orr r3, r0 + add r4, r3, r1 + add r3, r4, #0 + eor r3, r1 + add r0, r2, #0 + eor r0, r3 + ldr r3, [sp, #4] + add r3, r3, r0 + ldr r0, _0221B374 ; =0x155ED806 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0xb + lsr r0, r0, #0x15 + orr r3, r0 + add r3, r3, r4 + add r6, r3, #0 + eor r6, r4 + add r0, r1, #0 + eor r0, r6 + ldr r6, [sp, #0x10] + add r6, r6, r0 + ldr r0, _0221B378 ; =0x2B10CF7B + sub r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #0x10 + lsr r0, r0, #0x10 + orr r2, r0 + add r0, r2, r3 + add r6, r0, #0 + eor r6, r3 + add r2, r4, #0 + eor r2, r6 + ldr r6, [sp, #0x1c] + add r6, r6, r2 + ldr r2, _0221B37C ; =0x04881D05 + add r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0x17 + lsr r1, r1, #9 + orr r2, r1 + add r6, r2, r0 + add r2, r6, #0 + eor r2, r0 + add r1, r3, #0 + eor r1, r2 + ldr r2, [sp, #0x28] + add r2, r2, r1 + ldr r1, _0221B380 ; =0x262B2FC7 + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #4 + lsr r1, r1, #0x1c + orr r2, r1 + add r2, r2, r6 + add r4, r2, #0 + eor r4, r6 + add r1, r0, #0 + eor r1, r4 + ldr r4, [sp, #0x34] + add r4, r4, r1 + ldr r1, _0221B384 ; =0x1924661B + sub r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0xb + lsr r1, r1, #0x15 + orr r3, r1 + add r1, r3, r2 + add r4, r1, #0 + eor r4, r2 + add r3, r6, #0 + eor r3, r4 + ldr r4, [sp, #0x3c] + add r4, r4, r3 + ldr r3, _0221B388 ; =0x1FA27CF8 + add r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0x10 + lsr r0, r0, #0x10 + orr r3, r0 + add r4, r3, r1 + add r3, r4, #0 + eor r3, r1 + add r0, r2, #0 + eor r0, r3 + ldr r3, [sp, #0xc] + add r3, r3, r0 + ldr r0, _0221B38C ; =0x3B53A99B + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0x17 + lsr r0, r0, #9 + orr r3, r0 + add r3, r3, r4 + mvn r6, r1 + add r0, r3, #0 + orr r0, r6 + add r6, r4, #0 + eor r6, r0 + ldr r0, [sp, #4] + add r6, r0, r6 + ldr r0, _0221B390 ; =0x0BD6DDBC + sub r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #6 + lsr r0, r0, #0x1a + orr r2, r0 + add r0, r2, r3 + mvn r6, r4 + add r2, r0, #0 + orr r2, r6 + add r6, r3, #0 + eor r6, r2 + ldr r2, [sp, #0x20] + add r6, r2, r6 + ldr r2, _0221B394 ; =0x432AFF97 + add r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0xa + lsr r1, r1, #0x16 + orr r2, r1 + add r1, r2, r0 + mvn r2, r3 + add r6, r1, #0 + orr r6, r2 + add r2, r0, #0 + eor r2, r6 + add r6, r7, r2 + ldr r2, _0221B398 ; =0x546BDC59 + sub r2, r6, r2 + add r2, r4, r2 + lsl r4, r2, #0xf + lsr r2, r2, #0x11 + orr r4, r2 + add r2, r4, r1 + mvn r6, r0 + add r4, r2, #0 + orr r4, r6 + add r6, r1, #0 + eor r6, r4 + ldr r4, [sp, #0x18] + add r6, r4, r6 + ldr r4, _0221B39C ; =0x036C5FC7 + sub r4, r6, r4 + add r3, r3, r4 + lsl r4, r3, #0x15 + lsr r3, r3, #0xb + orr r4, r3 + add r4, r4, r2 + mvn r6, r1 + add r3, r4, #0 + orr r3, r6 + add r6, r2, #0 + eor r6, r3 + ldr r3, [sp, #0x34] + add r6, r3, r6 + ldr r3, _0221B3A0 ; =0x655B59C3 + add r3, r6, r3 + add r0, r0, r3 + lsl r3, r0, #6 + lsr r0, r0, #0x1a + orr r3, r0 + add r3, r3, r4 + mvn r6, r2 + add r0, r3, #0 + orr r0, r6 + add r6, r4, #0 + eor r6, r0 + ldr r0, [sp, #0x10] + add r6, r0, r6 + ldr r0, _0221B3A4 ; =0x70F3336E + sub r0, r6, r0 + add r0, r1, r0 + lsl r1, r0, #0xa + lsr r0, r0, #0x16 + orr r1, r0 + add r0, r1, r3 + mvn r6, r4 + add r1, r0, #0 + orr r1, r6 + add r6, r3, #0 + eor r6, r1 + ldr r1, [sp, #0x2c] + add r6, r1, r6 + ldr r1, _0221B3A8 ; =0x00100B83 + sub r1, r6, r1 + add r1, r2, r1 + lsl r2, r1, #0xf + lsr r1, r1, #0x11 + orr r2, r1 + add r6, r2, r0 + mvn r2, r3 + add r1, r6, #0 + orr r1, r2 + add r2, r0, #0 + eor r2, r1 + ldr r1, [sp, #8] + add r2, r1, r2 + ldr r1, _0221B3AC ; =0x7A7BA22F + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #0x15 + lsr r1, r1, #0xb + orr r2, r1 + add r2, r2, r6 + mvn r4, r0 + add r1, r2, #0 + orr r1, r4 + add r4, r6, #0 + eor r4, r1 + ldr r1, [sp, #0x24] + add r4, r1, r4 + ldr r1, _0221B3B0 ; =0x6FA87E4F + add r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #6 + lsr r1, r1, #0x1a + orr r3, r1 + add r1, r3, r2 + mvn r4, r6 + add r3, r1, #0 + orr r3, r4 + add r4, r2, #0 + eor r4, r3 + ldr r3, [sp, #0x3c] + add r4, r3, r4 + ldr r3, _0221B3B4 ; =0x01D31920 + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0xa + lsr r0, r0, #0x16 + orr r3, r0 + add r4, r3, r1 + mvn r3, r2 + add r0, r4, #0 + orr r0, r3 + add r3, r1, #0 + eor r3, r0 + ldr r0, [sp, #0x1c] + add r3, r0, r3 + ldr r0, _0221B3B8 ; =0x5CFEBCEC + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0xf + lsr r0, r0, #0x11 + orr r3, r0 + add r3, r3, r4 + mvn r6, r1 + add r0, r3, #0 + orr r0, r6 + add r6, r4, #0 + eor r6, r0 + ldr r0, [sp, #0x38] + add r6, r0, r6 + ldr r0, _0221B3BC ; =0x4E0811A1 + add r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #0x15 + lsr r0, r0, #0xb + orr r2, r0 + add r0, r2, r3 + mvn r6, r4 + add r2, r0, #0 + orr r2, r6 + add r6, r3, #0 + eor r6, r2 + ldr r2, [sp, #0x14] + add r6, r2, r6 + ldr r2, _0221B3C0 ; =0x08AC817E + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #6 + lsr r1, r1, #0x1a + orr r2, r1 + add r6, r2, r0 + mvn r2, r3 + add r1, r6, #0 + orr r1, r2 + add r2, r0, #0 + eor r2, r1 + ldr r1, [sp, #0x30] + add r2, r1, r2 + ldr r1, _0221B3C4 ; =0x42C50DCB + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #0xa + lsr r1, r1, #0x16 + orr r2, r1 + add r2, r2, r6 + mvn r4, r0 + add r1, r2, #0 + orr r1, r4 + add r4, r6, #0 + eor r4, r1 + ldr r1, [sp, #0xc] + add r4, r1, r4 + ldr r1, _0221B3C8 ; =0x2AD7D2BB + add r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0xf + lsr r1, r1, #0x11 + orr r3, r1 + add r1, r3, r2 + mvn r4, r6 + add r3, r1, #0 + orr r3, r4 + add r4, r2, #0 + eor r4, r3 + ldr r3, [sp, #0x28] + add r4, r3, r4 + ldr r3, _0221B3CC ; =0x14792C6F + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0x15 + lsr r0, r0, #0xb + orr r3, r0 + add r0, r3, r1 + ldr r3, [r5] + add r3, r3, r6 + str r3, [r5] + ldr r3, [r5, #4] + add r0, r3, r0 + str r0, [r5, #4] + ldr r0, [r5, #8] + add r0, r0, r1 + str r0, [r5, #8] + ldr r0, [r5, #0xc] + add r0, r0, r2 + str r0, [r5, #0xc] + add r0, sp, #0x40 + mov r1, #0 + mov r2, #0x40 + bl MOD13_0221AAE0 + add sp, #0x84 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221B35C: .word 0x021AC7F4 +_0221B360: .word 0x5B4115BC +_0221B364: .word 0x4BDECFA9 +_0221B368: .word 0x0944B4A0 +_0221B36C: .word 0x41404390 +_0221B370: .word 0x289B7EC6 +_0221B374: .word 0x155ED806 +_0221B378: .word 0x2B10CF7B +_0221B37C: .word 0x04881D05 +_0221B380: .word 0x262B2FC7 +_0221B384: .word 0x1924661B +_0221B388: .word 0x1FA27CF8 +_0221B38C: .word 0x3B53A99B +_0221B390: .word 0x0BD6DDBC +_0221B394: .word 0x432AFF97 +_0221B398: .word 0x546BDC59 +_0221B39C: .word 0x036C5FC7 +_0221B3A0: .word 0x655B59C3 +_0221B3A4: .word 0x70F3336E +_0221B3A8: .word 0x00100B83 +_0221B3AC: .word 0x7A7BA22F +_0221B3B0: .word 0x6FA87E4F +_0221B3B4: .word 0x01D31920 +_0221B3B8: .word 0x5CFEBCEC +_0221B3BC: .word 0x4E0811A1 +_0221B3C0: .word 0x08AC817E +_0221B3C4: .word 0x42C50DCB +_0221B3C8: .word 0x2AD7D2BB +_0221B3CC: .word 0x14792C6F + + thumb_func_start MOD13_0221B3D0 +MOD13_0221B3D0: ; 0x0221B3D0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + add r0, sp, #0 + add r1, #0x10 + mov r2, #8 + bl MOD13_0221AB44 + ldr r0, [r4, #0x10] + lsr r1, r0, #3 + mov r0, #0x3f + and r1, r0 + cmp r1, #0x38 + bhs _0221B3F4 + mov r0, #0x38 + sub r2, r0, r1 + b _0221B3F8 +_0221B3F4: + mov r0, #0x78 + sub r2, r0, r1 +_0221B3F8: + add r0, r4, #0 + ldr r1, _0221B428 ; =0x0223F894 + bl MOD13_0221B42C + add r0, r4, #0 + add r1, sp, #0 + mov r2, #8 + bl MOD13_0221B42C + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x10 + bl MOD13_0221AB44 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x58 + bl MOD13_0221AAE0 + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 + nop +_0221B428: .word 0x0223F894 + + thumb_func_start MOD13_0221B42C +MOD13_0221B42C: ; 0x0221B42C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + ldr r3, [r5, #0x10] + lsr r0, r3, #3 + mov r1, #0x3f + and r0, r1 + lsl r2, r6, #3 + add r1, r3, r2 + str r1, [r5, #0x10] + ldr r1, [r5, #0x10] + cmp r1, r2 + bhs _0221B450 + ldr r1, [r5, #0x14] + add r1, r1, #1 + str r1, [r5, #0x14] +_0221B450: + ldr r2, [r5, #0x14] + lsr r1, r6, #0x1d + add r1, r2, r1 + str r1, [r5, #0x14] + mov r1, #0x40 + sub r4, r1, r0 + cmp r6, r4 + blo _0221B496 + add r1, r5, #0 + add r1, #0x18 + add r0, r1, r0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD13_0221AAF8 + add r0, r5, #0 + add r1, r5, #0 + add r1, #0x18 + bl MOD13_0221AB74 + add r0, r4, #0 + add r0, #0x3f + cmp r0, r6 + bhs _0221B492 +_0221B480: + add r0, r5, #0 + add r1, r7, r4 + bl MOD13_0221AB74 + add r4, #0x40 + add r0, r4, #0 + add r0, #0x3f + cmp r0, r6 + blo _0221B480 +_0221B492: + mov r0, #0 + b _0221B498 +_0221B496: + mov r4, #0 +_0221B498: + add r5, #0x18 + add r0, r5, r0 + add r1, r7, r4 + sub r2, r6, r4 + bl MOD13_0221AAF8 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221B4AC +MOD13_0221B4AC: ; 0x0221B4AC + mov r1, #0 + str r1, [r0, #0x14] + ldr r1, [r0, #0x14] + str r1, [r0, #0x10] + ldr r1, _0221B4C8 ; =0x67452301 + str r1, [r0] + ldr r1, _0221B4CC ; =0xEFCDAB89 + str r1, [r0, #4] + ldr r1, _0221B4D0 ; =0x98BADCFE + str r1, [r0, #8] + ldr r1, _0221B4D4 ; =0x10325476 + str r1, [r0, #0xc] + bx lr + nop +_0221B4C8: .word 0x67452301 +_0221B4CC: .word 0xEFCDAB89 +_0221B4D0: .word 0x98BADCFE +_0221B4D4: .word 0x10325476 + + thumb_func_start MOD13_0221B4D8 +MOD13_0221B4D8: ; 0x0221B4D8 + push {r4, r5, r6, r7} + sub sp, #0x60 + add r4, r1, #0 + add r1, r2, #0 + str r3, [sp] + ldr r2, [r0] + str r2, [sp, #4] + ldrb r5, [r1, #3] + ldrb r2, [r1, #2] + lsl r3, r2, #8 + ldrb r2, [r1] + lsl r2, r2, #0x18 + ldrb r6, [r1, #1] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #4] + eor r2, r5 + str r2, [sp, #4] + ldr r2, [r0, #4] + str r2, [sp, #8] + ldrb r5, [r1, #7] + ldrb r2, [r1, #6] + lsl r3, r2, #8 + ldrb r2, [r1, #4] + lsl r2, r2, #0x18 + ldrb r6, [r1, #5] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #8] + eor r2, r5 + str r2, [sp, #8] + ldr r2, [r0, #8] + str r2, [sp, #0x2c] + ldrb r5, [r1, #0xb] + ldrb r2, [r1, #0xa] + lsl r3, r2, #8 + ldrb r2, [r1, #8] + lsl r2, r2, #0x18 + ldrb r6, [r1, #9] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #0x2c] + eor r2, r5 + str r2, [sp, #0x2c] + ldr r6, [r0, #0xc] + ldrb r5, [r1, #0xf] + ldrb r2, [r1, #0xe] + lsl r3, r2, #8 + ldrb r2, [r1, #0xc] + lsl r2, r2, #0x18 + ldrb r1, [r1, #0xd] + lsl r1, r1, #0x10 + eor r2, r1 + eor r3, r2 + eor r5, r3 + eor r6, r5 + asr r1, r4, #1 + str r1, [sp, #0xc] + mov r2, #0xff +_0221B55A: + ldr r1, [r0, #0x10] + str r1, [sp, #0x10] + ldr r1, [sp, #8] + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E0 ; =0x0223C86C + ldr r5, [r1, r3] + ldr r1, [sp, #0x2c] + lsr r1, r1, #8 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E4 ; =0x0223C46C + ldr r4, [r1, r3] + ldr r1, [sp, #4] + lsr r1, r1, #0x18 + lsl r3, r1, #2 + ldr r1, _0221B8E8 ; =0x0223E46C + ldr r7, [r1, r3] + lsr r1, r6, #0x10 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8EC ; =0x0223E86C + ldr r1, [r1, r3] + eor r7, r1 + eor r4, r7 + eor r5, r4 + ldr r1, [sp, #0x10] + eor r1, r5 + str r1, [sp, #0x10] + ldr r1, [r0, #0x14] + str r1, [sp, #0x14] + ldr r1, [sp, #0x2c] + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E0 ; =0x0223C86C + ldr r5, [r1, r3] + lsr r1, r6, #8 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E4 ; =0x0223C46C + ldr r4, [r1, r3] + ldr r1, [sp, #8] + lsr r1, r1, #0x18 + lsl r3, r1, #2 + ldr r1, _0221B8E8 ; =0x0223E46C + ldr r7, [r1, r3] + ldr r1, [sp, #4] + lsr r1, r1, #0x10 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8EC ; =0x0223E86C + ldr r1, [r1, r3] + eor r7, r1 + eor r4, r7 + eor r5, r4 + ldr r1, [sp, #0x14] + eor r1, r5 + str r1, [sp, #0x14] + ldr r5, [r0, #0x18] + add r1, r6, #0 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E0 ; =0x0223C86C + ldr r4, [r1, r3] + ldr r1, [sp, #4] + lsr r1, r1, #8 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E4 ; =0x0223C46C + ldr r1, [r1, r3] + str r1, [sp, #0x18] + ldr r1, [sp, #0x2c] + lsr r1, r1, #0x18 + lsl r3, r1, #2 + ldr r1, _0221B8E8 ; =0x0223E46C + ldr r7, [r1, r3] + ldr r1, [sp, #8] + lsr r1, r1, #0x10 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8EC ; =0x0223E86C + ldr r1, [r1, r3] + eor r7, r1 + ldr r1, [sp, #0x18] + eor r1, r7 + str r1, [sp, #0x18] + eor r4, r1 + eor r5, r4 + ldr r1, [r0, #0x1c] + ldr r3, [sp, #4] + and r3, r2 + str r3, [sp, #4] + lsl r4, r3, #2 + ldr r3, _0221B8E0 ; =0x0223C86C + ldr r3, [r3, r4] + str r3, [sp, #0x30] + ldr r3, [sp, #8] + lsr r3, r3, #8 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E4 ; =0x0223C46C + ldr r7, [r3, r4] + lsr r3, r6, #0x18 + lsl r4, r3, #2 + ldr r3, _0221B8E8 ; =0x0223E46C + ldr r6, [r3, r4] + ldr r3, [sp, #0x2c] + lsr r3, r3, #0x10 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8EC ; =0x0223E86C + ldr r3, [r3, r4] + eor r6, r3 + eor r7, r6 + ldr r3, [sp, #0x30] + eor r3, r7 + str r3, [sp, #0x30] + eor r1, r3 + add r0, #0x20 + ldr r3, [sp, #0xc] + sub r3, r3, #1 + str r3, [sp, #0xc] + cmp r3, #0 + beq _0221B746 + ldr r3, [r0] + str r3, [sp, #4] + ldr r3, [sp, #0x14] + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E0 ; =0x0223C86C + ldr r6, [r3, r4] + lsr r3, r5, #8 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E4 ; =0x0223C46C + ldr r3, [r3, r4] + str r3, [sp, #0x34] + ldr r3, [sp, #0x10] + lsr r3, r3, #0x18 + lsl r4, r3, #2 + ldr r3, _0221B8E8 ; =0x0223E46C + ldr r7, [r3, r4] + lsr r3, r1, #0x10 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8EC ; =0x0223E86C + ldr r3, [r3, r4] + eor r7, r3 + ldr r3, [sp, #0x34] + eor r3, r7 + str r3, [sp, #0x34] + eor r6, r3 + ldr r3, [sp, #4] + eor r3, r6 + str r3, [sp, #4] + ldr r3, [r0, #4] + str r3, [sp, #8] + add r3, r5, #0 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E0 ; =0x0223C86C + ldr r6, [r3, r4] + lsr r3, r1, #8 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E4 ; =0x0223C46C + ldr r3, [r3, r4] + str r3, [sp, #0x38] + ldr r3, [sp, #0x14] + lsr r3, r3, #0x18 + lsl r4, r3, #2 + ldr r3, _0221B8E8 ; =0x0223E46C + ldr r7, [r3, r4] + ldr r3, [sp, #0x10] + lsr r3, r3, #0x10 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8EC ; =0x0223E86C + ldr r3, [r3, r4] + eor r7, r3 + ldr r3, [sp, #0x38] + eor r3, r7 + str r3, [sp, #0x38] + eor r6, r3 + ldr r3, [sp, #8] + eor r3, r6 + str r3, [sp, #8] + ldr r3, [r0, #8] + str r3, [sp, #0x2c] + add r3, r1, #0 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E0 ; =0x0223C86C + ldr r6, [r3, r4] + ldr r3, [sp, #0x10] + lsr r3, r3, #8 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E4 ; =0x0223C46C + ldr r3, [r3, r4] + str r3, [sp, #0x1c] + lsr r3, r5, #0x18 + lsl r4, r3, #2 + ldr r3, _0221B8E8 ; =0x0223E46C + ldr r7, [r3, r4] + ldr r3, [sp, #0x14] + lsr r3, r3, #0x10 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8EC ; =0x0223E86C + ldr r3, [r3, r4] + eor r7, r3 + ldr r3, [sp, #0x1c] + eor r3, r7 + str r3, [sp, #0x1c] + eor r6, r3 + ldr r3, [sp, #0x2c] + eor r3, r6 + str r3, [sp, #0x2c] + ldr r6, [r0, #0xc] + ldr r3, [sp, #0x10] + and r3, r2 + str r3, [sp, #0x10] + lsl r4, r3, #2 + ldr r3, _0221B8E0 ; =0x0223C86C + ldr r7, [r3, r4] + ldr r3, [sp, #0x14] + lsr r3, r3, #8 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E4 ; =0x0223C46C + ldr r3, [r3, r4] + lsr r1, r1, #0x18 + lsl r4, r1, #2 + ldr r1, _0221B8E8 ; =0x0223E46C + ldr r1, [r1, r4] + lsr r4, r5, #0x10 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221B8EC ; =0x0223E86C + ldr r4, [r4, r5] + eor r1, r4 + eor r3, r1 + eor r7, r3 + eor r6, r7 + b _0221B55A +_0221B746: + ldr r3, [r0] + ldr r4, [sp, #0x14] + mov r2, #0xff + and r4, r2 + lsl r4, r4, #2 + ldr r2, _0221B8F0 ; =0x0223CC6C + ldr r6, [r2, r4] + str r6, [sp, #0x20] + mov r4, #0xff + and r6, r4 + str r6, [sp, #0x20] + lsr r6, r5, #8 + and r6, r4 + lsl r4, r6, #2 + ldr r7, [r2, r4] + ldr r4, _0221B8F4 ; =0x0000FF00 + and r7, r4 + ldr r4, [sp, #0x10] + lsr r4, r4, #0x18 + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x54] + ldr r6, _0221B8F8 ; =0xFF000000 + and r4, r6 + str r4, [sp, #0x54] + lsr r4, r1, #0x10 + str r4, [sp, #0x40] + mov r6, #0xff + and r4, r6 + str r4, [sp, #0x40] + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x3c] + ldr r4, _0221B8FC ; =0x00FF0000 + ldr r6, [sp, #0x3c] + and r6, r4 + str r6, [sp, #0x3c] + ldr r4, [sp, #0x54] + eor r4, r6 + str r4, [sp, #0x54] + eor r7, r4 + ldr r4, [sp, #0x20] + eor r4, r7 + str r4, [sp, #0x20] + eor r3, r4 + lsr r6, r3, #0x18 + ldr r4, [sp] + strb r6, [r4] + lsr r6, r3, #0x10 + strb r6, [r4, #1] + lsr r6, r3, #8 + strb r6, [r4, #2] + strb r3, [r4, #3] + ldr r3, [r0, #4] + add r6, r5, #0 + mov r4, #0xff + and r6, r4 + lsl r4, r6, #2 + ldr r6, [r2, r4] + str r6, [sp, #0x24] + mov r4, #0xff + and r6, r4 + str r6, [sp, #0x24] + lsr r6, r1, #8 + and r6, r4 + lsl r4, r6, #2 + ldr r7, [r2, r4] + ldr r4, _0221B8F4 ; =0x0000FF00 + and r7, r4 + ldr r4, [sp, #0x14] + lsr r4, r4, #0x18 + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x58] + ldr r6, _0221B8F8 ; =0xFF000000 + and r4, r6 + str r4, [sp, #0x58] + ldr r4, [sp, #0x10] + lsr r4, r4, #0x10 + str r4, [sp, #0x48] + mov r6, #0xff + and r4, r6 + str r4, [sp, #0x48] + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x44] + ldr r4, _0221B8FC ; =0x00FF0000 + ldr r6, [sp, #0x44] + and r6, r4 + str r6, [sp, #0x44] + ldr r4, [sp, #0x58] + eor r4, r6 + str r4, [sp, #0x58] + eor r7, r4 + ldr r4, [sp, #0x24] + eor r4, r7 + str r4, [sp, #0x24] + eor r3, r4 + lsr r6, r3, #0x18 + ldr r4, [sp] + strb r6, [r4, #4] + lsr r6, r3, #0x10 + strb r6, [r4, #5] + lsr r6, r3, #8 + strb r6, [r4, #6] + strb r3, [r4, #7] + ldr r3, [r0, #8] + add r6, r1, #0 + mov r4, #0xff + and r6, r4 + lsl r4, r6, #2 + ldr r6, [r2, r4] + str r6, [sp, #0x28] + mov r4, #0xff + and r6, r4 + str r6, [sp, #0x28] + ldr r4, [sp, #0x10] + lsr r6, r4, #8 + mov r4, #0xff + and r6, r4 + lsl r4, r6, #2 + ldr r7, [r2, r4] + ldr r4, _0221B8F4 ; =0x0000FF00 + and r7, r4 + lsr r4, r5, #0x18 + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x5c] + ldr r6, _0221B8F8 ; =0xFF000000 + and r4, r6 + str r4, [sp, #0x5c] + ldr r4, [sp, #0x14] + lsr r4, r4, #0x10 + str r4, [sp, #0x50] + mov r6, #0xff + and r4, r6 + str r4, [sp, #0x50] + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x4c] + ldr r4, _0221B8FC ; =0x00FF0000 + ldr r6, [sp, #0x4c] + and r6, r4 + str r6, [sp, #0x4c] + ldr r4, [sp, #0x5c] + eor r4, r6 + str r4, [sp, #0x5c] + eor r7, r4 + ldr r4, [sp, #0x28] + eor r4, r7 + str r4, [sp, #0x28] + eor r3, r4 + lsr r6, r3, #0x18 + ldr r4, [sp] + strb r6, [r4, #8] + lsr r6, r3, #0x10 + strb r6, [r4, #9] + lsr r6, r3, #8 + strb r6, [r4, #0xa] + strb r3, [r4, #0xb] + ldr r6, [r0, #0xc] + ldr r3, [sp, #0x10] + mov r0, #0xff + and r3, r0 + str r3, [sp, #0x10] + lsl r0, r3, #2 + ldr r4, [r2, r0] + mov r0, #0xff + and r4, r0 + ldr r0, [sp, #0x14] + lsr r3, r0, #8 + mov r0, #0xff + and r3, r0 + lsl r0, r3, #2 + ldr r3, [r2, r0] + ldr r0, _0221B8F4 ; =0x0000FF00 + and r3, r0 + lsr r0, r1, #0x18 + lsl r0, r0, #2 + ldr r0, [r2, r0] + ldr r1, _0221B8F8 ; =0xFF000000 + and r0, r1 + lsr r5, r5, #0x10 + mov r1, #0xff + and r5, r1 + lsl r1, r5, #2 + ldr r2, [r2, r1] + ldr r1, _0221B8FC ; =0x00FF0000 + and r2, r1 + eor r0, r2 + eor r3, r0 + eor r4, r3 + eor r6, r4 + lsr r1, r6, #0x18 + ldr r0, [sp] + strb r1, [r0, #0xc] + lsr r1, r6, #0x10 + strb r1, [r0, #0xd] + lsr r1, r6, #8 + strb r1, [r0, #0xe] + strb r6, [r0, #0xf] + add sp, #0x60 + pop {r4, r5, r6, r7} + bx lr + nop +_0221B8E0: .word 0x0223C86C +_0221B8E4: .word 0x0223C46C +_0221B8E8: .word 0x0223E46C +_0221B8EC: .word 0x0223E86C +_0221B8F0: .word 0x0223CC6C +_0221B8F4: .word 0x0000FF00 +_0221B8F8: .word 0xFF000000 +_0221B8FC: .word 0x00FF0000 + + thumb_func_start MOD13_0221B900 +MOD13_0221B900: ; 0x0221B900 + push {r4, r5, r6, r7} + sub sp, #0x60 + add r4, r1, #0 + add r1, r2, #0 + str r3, [sp] + ldr r2, [r0] + str r2, [sp, #4] + ldrb r5, [r1, #3] + ldrb r2, [r1, #2] + lsl r3, r2, #8 + ldrb r2, [r1] + lsl r2, r2, #0x18 + ldrb r6, [r1, #1] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #4] + eor r2, r5 + str r2, [sp, #4] + ldr r2, [r0, #4] + str r2, [sp, #8] + ldrb r5, [r1, #7] + ldrb r2, [r1, #6] + lsl r3, r2, #8 + ldrb r2, [r1, #4] + lsl r2, r2, #0x18 + ldrb r6, [r1, #5] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #8] + eor r2, r5 + str r2, [sp, #8] + ldr r2, [r0, #8] + str r2, [sp, #0x2c] + ldrb r5, [r1, #0xb] + ldrb r2, [r1, #0xa] + lsl r3, r2, #8 + ldrb r2, [r1, #8] + lsl r2, r2, #0x18 + ldrb r6, [r1, #9] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #0x2c] + eor r2, r5 + str r2, [sp, #0x2c] + ldr r6, [r0, #0xc] + ldrb r5, [r1, #0xf] + ldrb r2, [r1, #0xe] + lsl r3, r2, #8 + ldrb r2, [r1, #0xc] + lsl r2, r2, #0x18 + ldrb r1, [r1, #0xd] + lsl r1, r1, #0x10 + eor r2, r1 + eor r3, r2 + eor r5, r3 + eor r6, r5 + asr r1, r4, #1 + str r1, [sp, #0xc] + mov r2, #0xff +_0221B982: + ldr r1, [r0, #0x10] + str r1, [sp, #0x10] + add r1, r6, #0 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD00 ; =0x0223DC6C + ldr r5, [r1, r3] + ldr r1, [sp, #0x2c] + lsr r1, r1, #8 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD04 ; =0x0223D86C + ldr r4, [r1, r3] + ldr r1, [sp, #4] + lsr r1, r1, #0x18 + lsl r3, r1, #2 + ldr r1, _0221BD08 ; =0x0223D06C + ldr r7, [r1, r3] + ldr r1, [sp, #8] + lsr r1, r1, #0x10 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD0C ; =0x0223D46C + ldr r1, [r1, r3] + eor r7, r1 + eor r4, r7 + eor r5, r4 + ldr r1, [sp, #0x10] + eor r1, r5 + str r1, [sp, #0x10] + ldr r1, [r0, #0x14] + str r1, [sp, #0x14] + ldr r1, [sp, #4] + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD00 ; =0x0223DC6C + ldr r5, [r1, r3] + lsr r1, r6, #8 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD04 ; =0x0223D86C + ldr r4, [r1, r3] + ldr r1, [sp, #8] + lsr r1, r1, #0x18 + lsl r3, r1, #2 + ldr r1, _0221BD08 ; =0x0223D06C + ldr r7, [r1, r3] + ldr r1, [sp, #0x2c] + lsr r1, r1, #0x10 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD0C ; =0x0223D46C + ldr r1, [r1, r3] + eor r7, r1 + eor r4, r7 + eor r5, r4 + ldr r1, [sp, #0x14] + eor r1, r5 + str r1, [sp, #0x14] + ldr r3, [r0, #0x18] + ldr r1, [sp, #8] + and r1, r2 + lsl r4, r1, #2 + ldr r1, _0221BD00 ; =0x0223DC6C + ldr r1, [r1, r4] + ldr r4, [sp, #4] + lsr r4, r4, #8 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD04 ; =0x0223D86C + ldr r7, [r4, r5] + ldr r4, [sp, #0x2c] + lsr r4, r4, #0x18 + lsl r5, r4, #2 + ldr r4, _0221BD08 ; =0x0223D06C + ldr r4, [r4, r5] + str r4, [sp, #0x18] + lsr r4, r6, #0x10 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD0C ; =0x0223D46C + ldr r5, [r4, r5] + ldr r4, [sp, #0x18] + eor r4, r5 + str r4, [sp, #0x18] + eor r7, r4 + eor r1, r7 + eor r3, r1 + ldr r1, [r0, #0x1c] + ldr r4, [sp, #0x2c] + and r4, r2 + str r4, [sp, #0x2c] + lsl r5, r4, #2 + ldr r4, _0221BD00 ; =0x0223DC6C + ldr r4, [r4, r5] + str r4, [sp, #0x30] + ldr r4, [sp, #8] + lsr r4, r4, #8 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD04 ; =0x0223D86C + ldr r7, [r4, r5] + lsr r4, r6, #0x18 + lsl r5, r4, #2 + ldr r4, _0221BD08 ; =0x0223D06C + ldr r6, [r4, r5] + ldr r4, [sp, #4] + lsr r4, r4, #0x10 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD0C ; =0x0223D46C + ldr r4, [r4, r5] + eor r6, r4 + eor r7, r6 + ldr r4, [sp, #0x30] + eor r4, r7 + str r4, [sp, #0x30] + eor r1, r4 + add r0, #0x20 + ldr r4, [sp, #0xc] + sub r4, r4, #1 + str r4, [sp, #0xc] + cmp r4, #0 + beq _0221BB6A + ldr r4, [r0] + str r4, [sp, #4] + add r4, r1, #0 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD00 ; =0x0223DC6C + ldr r6, [r4, r5] + lsr r4, r3, #8 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD04 ; =0x0223D86C + ldr r4, [r4, r5] + str r4, [sp, #0x34] + ldr r4, [sp, #0x10] + lsr r4, r4, #0x18 + lsl r5, r4, #2 + ldr r4, _0221BD08 ; =0x0223D06C + ldr r7, [r4, r5] + ldr r4, [sp, #0x14] + lsr r4, r4, #0x10 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD0C ; =0x0223D46C + ldr r4, [r4, r5] + eor r7, r4 + ldr r4, [sp, #0x34] + eor r4, r7 + str r4, [sp, #0x34] + eor r6, r4 + ldr r4, [sp, #4] + eor r4, r6 + str r4, [sp, #4] + ldr r4, [r0, #4] + str r4, [sp, #8] + ldr r4, [sp, #0x10] + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD00 ; =0x0223DC6C + ldr r6, [r4, r5] + lsr r4, r1, #8 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD04 ; =0x0223D86C + ldr r4, [r4, r5] + str r4, [sp, #0x38] + ldr r4, [sp, #0x14] + lsr r4, r4, #0x18 + lsl r5, r4, #2 + ldr r4, _0221BD08 ; =0x0223D06C + ldr r7, [r4, r5] + lsr r4, r3, #0x10 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD0C ; =0x0223D46C + ldr r4, [r4, r5] + eor r7, r4 + ldr r4, [sp, #0x38] + eor r4, r7 + str r4, [sp, #0x38] + eor r6, r4 + ldr r4, [sp, #8] + eor r4, r6 + str r4, [sp, #8] + ldr r4, [r0, #8] + str r4, [sp, #0x2c] + ldr r4, [sp, #0x14] + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD00 ; =0x0223DC6C + ldr r4, [r4, r5] + ldr r5, [sp, #0x10] + lsr r5, r5, #8 + and r5, r2 + lsl r6, r5, #2 + ldr r5, _0221BD04 ; =0x0223D86C + ldr r7, [r5, r6] + lsr r5, r3, #0x18 + lsl r6, r5, #2 + ldr r5, _0221BD08 ; =0x0223D06C + ldr r5, [r5, r6] + str r5, [sp, #0x1c] + lsr r5, r1, #0x10 + and r5, r2 + lsl r6, r5, #2 + ldr r5, _0221BD0C ; =0x0223D46C + ldr r6, [r5, r6] + ldr r5, [sp, #0x1c] + eor r5, r6 + str r5, [sp, #0x1c] + eor r7, r5 + eor r4, r7 + ldr r5, [sp, #0x2c] + eor r5, r4 + str r5, [sp, #0x2c] + ldr r6, [r0, #0xc] + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221BD00 ; =0x0223DC6C + ldr r3, [r3, r4] + ldr r4, [sp, #0x14] + lsr r4, r4, #8 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD04 ; =0x0223D86C + ldr r7, [r4, r5] + lsr r1, r1, #0x18 + lsl r4, r1, #2 + ldr r1, _0221BD08 ; =0x0223D06C + ldr r5, [r1, r4] + ldr r1, [sp, #0x10] + lsr r1, r1, #0x10 + and r1, r2 + lsl r4, r1, #2 + ldr r1, _0221BD0C ; =0x0223D46C + ldr r1, [r1, r4] + eor r5, r1 + eor r7, r5 + eor r3, r7 + eor r6, r3 + b _0221B982 +_0221BB6A: + ldr r4, [r0] + add r5, r1, #0 + mov r2, #0xff + and r5, r2 + lsl r5, r5, #2 + ldr r2, _0221BD10 ; =0x0223E06C + ldr r6, [r2, r5] + str r6, [sp, #0x20] + mov r5, #0xff + and r6, r5 + str r6, [sp, #0x20] + lsr r6, r3, #8 + and r6, r5 + lsl r5, r6, #2 + ldr r7, [r2, r5] + ldr r5, _0221BD14 ; =0x0000FF00 + and r7, r5 + ldr r5, [sp, #0x10] + lsr r5, r5, #0x18 + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x54] + ldr r6, _0221BD18 ; =0xFF000000 + and r5, r6 + str r5, [sp, #0x54] + ldr r5, [sp, #0x14] + lsr r5, r5, #0x10 + str r5, [sp, #0x40] + mov r6, #0xff + and r5, r6 + str r5, [sp, #0x40] + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x3c] + ldr r5, _0221BD1C ; =0x00FF0000 + ldr r6, [sp, #0x3c] + and r6, r5 + str r6, [sp, #0x3c] + ldr r5, [sp, #0x54] + eor r5, r6 + str r5, [sp, #0x54] + eor r7, r5 + ldr r5, [sp, #0x20] + eor r5, r7 + str r5, [sp, #0x20] + eor r4, r5 + lsr r6, r4, #0x18 + ldr r5, [sp] + strb r6, [r5] + lsr r6, r4, #0x10 + strb r6, [r5, #1] + lsr r6, r4, #8 + strb r6, [r5, #2] + strb r4, [r5, #3] + ldr r4, [r0, #4] + ldr r6, [sp, #0x10] + mov r5, #0xff + and r6, r5 + lsl r5, r6, #2 + ldr r6, [r2, r5] + str r6, [sp, #0x24] + mov r5, #0xff + and r6, r5 + str r6, [sp, #0x24] + lsr r6, r1, #8 + and r6, r5 + lsl r5, r6, #2 + ldr r7, [r2, r5] + ldr r5, _0221BD14 ; =0x0000FF00 + and r7, r5 + ldr r5, [sp, #0x14] + lsr r5, r5, #0x18 + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x58] + ldr r6, _0221BD18 ; =0xFF000000 + and r5, r6 + str r5, [sp, #0x58] + lsr r5, r3, #0x10 + str r5, [sp, #0x48] + mov r6, #0xff + and r5, r6 + str r5, [sp, #0x48] + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x44] + ldr r5, _0221BD1C ; =0x00FF0000 + ldr r6, [sp, #0x44] + and r6, r5 + str r6, [sp, #0x44] + ldr r5, [sp, #0x58] + eor r5, r6 + str r5, [sp, #0x58] + eor r7, r5 + ldr r5, [sp, #0x24] + eor r5, r7 + str r5, [sp, #0x24] + eor r4, r5 + lsr r6, r4, #0x18 + ldr r5, [sp] + strb r6, [r5, #4] + lsr r6, r4, #0x10 + strb r6, [r5, #5] + lsr r6, r4, #8 + strb r6, [r5, #6] + strb r4, [r5, #7] + ldr r4, [r0, #8] + ldr r6, [sp, #0x14] + mov r5, #0xff + and r6, r5 + lsl r5, r6, #2 + ldr r6, [r2, r5] + str r6, [sp, #0x28] + mov r5, #0xff + and r6, r5 + str r6, [sp, #0x28] + ldr r5, [sp, #0x10] + lsr r6, r5, #8 + mov r5, #0xff + and r6, r5 + lsl r5, r6, #2 + ldr r7, [r2, r5] + ldr r5, _0221BD14 ; =0x0000FF00 + and r7, r5 + lsr r5, r3, #0x18 + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x5c] + ldr r6, _0221BD18 ; =0xFF000000 + and r5, r6 + str r5, [sp, #0x5c] + lsr r5, r1, #0x10 + str r5, [sp, #0x50] + mov r6, #0xff + and r5, r6 + str r5, [sp, #0x50] + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x4c] + ldr r5, _0221BD1C ; =0x00FF0000 + ldr r6, [sp, #0x4c] + and r6, r5 + str r6, [sp, #0x4c] + ldr r5, [sp, #0x5c] + eor r5, r6 + str r5, [sp, #0x5c] + eor r7, r5 + ldr r5, [sp, #0x28] + eor r5, r7 + str r5, [sp, #0x28] + eor r4, r5 + lsr r6, r4, #0x18 + ldr r5, [sp] + strb r6, [r5, #8] + lsr r6, r4, #0x10 + strb r6, [r5, #9] + lsr r6, r4, #8 + strb r6, [r5, #0xa] + strb r4, [r5, #0xb] + ldr r5, [r0, #0xc] + mov r0, #0xff + and r3, r0 + lsl r0, r3, #2 + ldr r4, [r2, r0] + mov r0, #0xff + and r4, r0 + ldr r0, [sp, #0x14] + lsr r3, r0, #8 + mov r0, #0xff + and r3, r0 + lsl r0, r3, #2 + ldr r3, [r2, r0] + ldr r0, _0221BD14 ; =0x0000FF00 + and r3, r0 + lsr r0, r1, #0x18 + lsl r0, r0, #2 + ldr r0, [r2, r0] + ldr r1, _0221BD18 ; =0xFF000000 + and r0, r1 + ldr r1, [sp, #0x10] + lsr r6, r1, #0x10 + mov r1, #0xff + and r6, r1 + lsl r1, r6, #2 + ldr r2, [r2, r1] + ldr r1, _0221BD1C ; =0x00FF0000 + and r2, r1 + eor r0, r2 + eor r3, r0 + eor r4, r3 + eor r5, r4 + lsr r1, r5, #0x18 + ldr r0, [sp] + strb r1, [r0, #0xc] + lsr r1, r5, #0x10 + strb r1, [r0, #0xd] + lsr r1, r5, #8 + strb r1, [r0, #0xe] + strb r5, [r0, #0xf] + add sp, #0x60 + pop {r4, r5, r6, r7} + bx lr + nop +_0221BD00: .word 0x0223DC6C +_0221BD04: .word 0x0223D86C +_0221BD08: .word 0x0223D06C +_0221BD0C: .word 0x0223D46C +_0221BD10: .word 0x0223E06C +_0221BD14: .word 0x0000FF00 +_0221BD18: .word 0xFF000000 +_0221BD1C: .word 0x00FF0000 + + thumb_func_start MOD13_0221BD20 +MOD13_0221BD20: ; 0x0221BD20 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD13_0221BEE4 + str r0, [sp] + mov r6, #0 + lsl r5, r0, #2 + cmp r5, #0 + ble _0221BD84 + str r4, [sp, #4] + lsl r0, r5, #2 + add r3, r4, r0 +_0221BD3A: + ldr r0, [sp, #4] + ldr r2, [r0] + ldr r1, [r3] + str r1, [r0] + str r2, [r3] + add r0, r6, #1 + lsl r2, r0, #2 + ldr r1, [r4, r2] + add r0, r5, #1 + lsl r7, r0, #2 + ldr r0, [r4, r7] + str r0, [r4, r2] + str r1, [r4, r7] + add r0, r6, #2 + lsl r2, r0, #2 + ldr r1, [r4, r2] + add r0, r5, #2 + lsl r7, r0, #2 + ldr r0, [r4, r7] + str r0, [r4, r2] + str r1, [r4, r7] + add r0, r6, #3 + lsl r2, r0, #2 + ldr r1, [r4, r2] + add r0, r5, #3 + lsl r7, r0, #2 + ldr r0, [r4, r7] + str r0, [r4, r2] + str r1, [r4, r7] + ldr r0, [sp, #4] + add r0, #0x10 + str r0, [sp, #4] + add r6, r6, #4 + sub r3, #0x10 + sub r5, r5, #4 + cmp r6, r5 + blt _0221BD3A +_0221BD84: + mov r0, #1 + str r0, [sp, #8] + ldr r0, [sp] + cmp r0, #1 + bgt _0221BD90 + b _0221BEC4 +_0221BD90: + ldr r2, _0221BED0 ; =0x0223E06C + mov r0, #0xff +_0221BD94: + add r4, #0x10 + ldr r5, [r4] + add r1, r5, #0 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r3, r1, #2 + ldr r1, _0221BED4 ; =0x0223C86C + ldr r3, [r1, r3] + lsr r1, r5, #8 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BED8 ; =0x0223C46C + ldr r7, [r1, r6] + lsr r1, r5, #0x18 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BEDC ; =0x0223E46C + ldr r1, [r1, r6] + lsr r5, r5, #0x10 + and r5, r0 + lsl r5, r5, #2 + ldr r5, [r2, r5] + and r5, r0 + lsl r6, r5, #2 + ldr r5, _0221BEE0 ; =0x0223E86C + ldr r5, [r5, r6] + eor r1, r5 + eor r7, r1 + eor r3, r7 + str r3, [r4] + ldr r5, [r4, #4] + add r1, r5, #0 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r3, r1, #2 + ldr r1, _0221BED4 ; =0x0223C86C + ldr r3, [r1, r3] + lsr r1, r5, #8 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BED8 ; =0x0223C46C + ldr r7, [r1, r6] + lsr r1, r5, #0x18 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BEDC ; =0x0223E46C + ldr r1, [r1, r6] + lsr r5, r5, #0x10 + and r5, r0 + lsl r5, r5, #2 + ldr r5, [r2, r5] + and r5, r0 + lsl r6, r5, #2 + ldr r5, _0221BEE0 ; =0x0223E86C + ldr r5, [r5, r6] + eor r1, r5 + eor r7, r1 + eor r3, r7 + str r3, [r4, #4] + ldr r5, [r4, #8] + add r1, r5, #0 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r3, r1, #2 + ldr r1, _0221BED4 ; =0x0223C86C + ldr r3, [r1, r3] + lsr r1, r5, #8 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BED8 ; =0x0223C46C + ldr r7, [r1, r6] + lsr r1, r5, #0x18 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BEDC ; =0x0223E46C + ldr r1, [r1, r6] + lsr r5, r5, #0x10 + and r5, r0 + lsl r5, r5, #2 + ldr r5, [r2, r5] + and r5, r0 + lsl r6, r5, #2 + ldr r5, _0221BEE0 ; =0x0223E86C + ldr r5, [r5, r6] + eor r1, r5 + eor r7, r1 + eor r3, r7 + str r3, [r4, #8] + ldr r5, [r4, #0xc] + add r1, r5, #0 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r3, r1, #2 + ldr r1, _0221BED4 ; =0x0223C86C + ldr r3, [r1, r3] + lsr r1, r5, #8 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BED8 ; =0x0223C46C + ldr r7, [r1, r6] + lsr r1, r5, #0x18 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BEDC ; =0x0223E46C + ldr r1, [r1, r6] + lsr r5, r5, #0x10 + and r5, r0 + lsl r5, r5, #2 + ldr r5, [r2, r5] + and r5, r0 + lsl r6, r5, #2 + ldr r5, _0221BEE0 ; =0x0223E86C + ldr r5, [r5, r6] + eor r1, r5 + eor r7, r1 + eor r3, r7 + str r3, [r4, #0xc] + ldr r1, [sp, #8] + add r3, r1, #1 + str r3, [sp, #8] + ldr r1, [sp] + cmp r3, r1 + bge _0221BEC4 + b _0221BD94 +_0221BEC4: + ldr r0, [sp] + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221BED0: .word 0x0223E06C +_0221BED4: .word 0x0223C86C +_0221BED8: .word 0x0223C46C +_0221BEDC: .word 0x0223E46C +_0221BEE0: .word 0x0223E86C + + thumb_func_start MOD13_0221BEE4 +MOD13_0221BEE4: ; 0x0221BEE4 + push {r4, r5, r6, r7} + sub sp, #0x20 + add r3, r1, #0 + add r1, r2, #0 + mov r2, #0 + str r2, [sp] + ldrb r5, [r3, #3] + ldrb r2, [r3, #2] + lsl r4, r2, #8 + ldrb r2, [r3] + lsl r2, r2, #0x18 + ldrb r6, [r3, #1] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0] + ldrb r5, [r3, #7] + ldrb r2, [r3, #6] + lsl r4, r2, #8 + ldrb r2, [r3, #4] + lsl r2, r2, #0x18 + ldrb r6, [r3, #5] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #4] + ldrb r5, [r3, #0xb] + ldrb r2, [r3, #0xa] + lsl r4, r2, #8 + ldrb r2, [r3, #8] + lsl r2, r2, #0x18 + ldrb r6, [r3, #9] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #8] + ldrb r5, [r3, #0xf] + ldrb r2, [r3, #0xe] + lsl r4, r2, #8 + ldrb r2, [r3, #0xc] + lsl r2, r2, #0x18 + ldrb r6, [r3, #0xd] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #0xc] + cmp r1, #0x80 + bne _0221BFD0 + ldr r6, _0221C1B4 ; =0x0223C444 +_0221BF4E: + ldr r5, [r0, #0xc] + ldr r1, [r6] + str r1, [sp, #0xc] + lsr r1, r5, #0x18 + lsl r2, r1, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r4, [r1, r2] + mov r1, #0xff + and r4, r1 + add r2, r5, #0 + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r7, [r1, r2] + ldr r1, _0221C1BC ; =0x0000FF00 + and r7, r1 + ldr r3, [r0] + lsr r2, r5, #0x10 + mov r1, #0xff + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r2, [r1, r2] + ldr r1, _0221C1C0 ; =0xFF000000 + and r2, r1 + eor r3, r2 + lsr r2, r5, #8 + mov r1, #0xff + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r2, [r1, r2] + ldr r1, _0221C1C4 ; =0x00FF0000 + and r2, r1 + eor r3, r2 + eor r7, r3 + eor r4, r7 + ldr r1, [sp, #0xc] + eor r1, r4 + str r1, [sp, #0xc] + str r1, [r0, #0x10] + ldr r2, [r0, #4] + ldr r1, [r0, #0x10] + eor r2, r1 + str r2, [r0, #0x14] + ldr r2, [r0, #8] + ldr r1, [r0, #0x14] + eor r2, r1 + str r2, [r0, #0x18] + ldr r2, [r0, #0xc] + ldr r1, [r0, #0x18] + eor r2, r1 + str r2, [r0, #0x1c] + add r6, r6, #4 + ldr r1, [sp] + add r1, r1, #1 + str r1, [sp] + cmp r1, #0xa + blt _0221BFCC + mov r0, #0xa + add sp, #0x20 + pop {r4, r5, r6, r7} + bx lr +_0221BFCC: + add r0, #0x10 + b _0221BF4E +_0221BFD0: + ldrb r5, [r3, #0x13] + ldrb r2, [r3, #0x12] + lsl r4, r2, #8 + ldrb r2, [r3, #0x10] + lsl r2, r2, #0x18 + ldrb r6, [r3, #0x11] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #0x10] + ldrb r5, [r3, #0x17] + ldrb r2, [r3, #0x16] + lsl r4, r2, #8 + ldrb r2, [r3, #0x14] + lsl r2, r2, #0x18 + ldrb r6, [r3, #0x15] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #0x14] + cmp r1, #0xc0 + bne _0221C094 + ldr r6, _0221C1B4 ; =0x0223C444 +_0221C002: + ldr r5, [r0, #0x14] + ldr r1, [r6] + str r1, [sp, #0x10] + lsr r1, r5, #0x18 + lsl r2, r1, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r4, [r1, r2] + mov r1, #0xff + and r4, r1 + add r2, r5, #0 + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r7, [r1, r2] + ldr r1, _0221C1BC ; =0x0000FF00 + and r7, r1 + ldr r3, [r0] + lsr r2, r5, #0x10 + mov r1, #0xff + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r2, [r1, r2] + ldr r1, _0221C1C0 ; =0xFF000000 + and r2, r1 + eor r3, r2 + lsr r2, r5, #8 + mov r1, #0xff + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r2, [r1, r2] + ldr r1, _0221C1C4 ; =0x00FF0000 + and r2, r1 + eor r3, r2 + eor r7, r3 + eor r4, r7 + ldr r1, [sp, #0x10] + eor r1, r4 + str r1, [sp, #0x10] + str r1, [r0, #0x18] + ldr r2, [r0, #4] + ldr r1, [r0, #0x18] + eor r2, r1 + str r2, [r0, #0x1c] + ldr r2, [r0, #8] + ldr r1, [r0, #0x1c] + eor r2, r1 + str r2, [r0, #0x20] + ldr r2, [r0, #0xc] + ldr r1, [r0, #0x20] + eor r2, r1 + str r2, [r0, #0x24] + add r6, r6, #4 + ldr r1, [sp] + add r1, r1, #1 + str r1, [sp] + cmp r1, #8 + blt _0221C080 + mov r0, #0xc + add sp, #0x20 + pop {r4, r5, r6, r7} + bx lr +_0221C080: + ldr r2, [r0, #0x10] + ldr r1, [r0, #0x24] + eor r2, r1 + str r2, [r0, #0x28] + ldr r2, [r0, #0x14] + ldr r1, [r0, #0x28] + eor r2, r1 + str r2, [r0, #0x2c] + add r0, #0x18 + b _0221C002 +_0221C094: + ldrb r5, [r3, #0x1b] + ldrb r2, [r3, #0x1a] + lsl r4, r2, #8 + ldrb r2, [r3, #0x18] + lsl r2, r2, #0x18 + ldrb r6, [r3, #0x19] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #0x18] + ldrb r5, [r3, #0x1f] + ldrb r2, [r3, #0x1e] + lsl r4, r2, #8 + ldrb r2, [r3, #0x1c] + lsl r2, r2, #0x18 + ldrb r3, [r3, #0x1d] + lsl r3, r3, #0x10 + eor r2, r3 + eor r4, r2 + eor r5, r4 + str r5, [r0, #0x1c] + ldr r2, _0221C1C8 ; =0x00000100 + cmp r1, r2 + bne _0221C1AC + ldr r1, _0221C1B4 ; =0x0223C444 + str r1, [sp, #4] + ldr r7, _0221C1B8 ; =0x0223E06C +_0221C0CC: + ldr r6, [r0, #0x1c] + ldr r1, [sp, #4] + ldr r1, [r1] + str r1, [sp, #8] + lsr r1, r6, #0x18 + lsl r1, r1, #2 + ldr r5, [r7, r1] + mov r1, #0xff + and r5, r1 + add r2, r6, #0 + and r2, r1 + lsl r1, r2, #2 + ldr r4, [r7, r1] + ldr r1, _0221C1BC ; =0x0000FF00 + and r4, r1 + ldr r3, [r0] + lsr r2, r6, #0x10 + mov r1, #0xff + and r2, r1 + lsl r1, r2, #2 + ldr r1, [r7, r1] + str r1, [sp, #0x14] + ldr r2, _0221C1C0 ; =0xFF000000 + and r1, r2 + str r1, [sp, #0x14] + eor r3, r1 + lsr r2, r6, #8 + mov r1, #0xff + and r2, r1 + lsl r1, r2, #2 + ldr r2, [r7, r1] + ldr r1, _0221C1C4 ; =0x00FF0000 + and r2, r1 + eor r3, r2 + eor r4, r3 + eor r5, r4 + ldr r1, [sp, #8] + eor r1, r5 + str r1, [sp, #8] + str r1, [r0, #0x20] + ldr r2, [r0, #4] + ldr r1, [r0, #0x20] + eor r2, r1 + str r2, [r0, #0x24] + ldr r2, [r0, #8] + ldr r1, [r0, #0x24] + eor r2, r1 + str r2, [r0, #0x28] + ldr r2, [r0, #0xc] + ldr r1, [r0, #0x28] + eor r2, r1 + str r2, [r0, #0x2c] + ldr r1, [sp, #4] + add r1, r1, #4 + str r1, [sp, #4] + ldr r1, [sp] + add r1, r1, #1 + str r1, [sp] + cmp r1, #7 + blt _0221C14C + mov r0, #0xe + add sp, #0x20 + pop {r4, r5, r6, r7} + bx lr +_0221C14C: + ldr r6, [r0, #0x2c] + add r2, r6, #0 + mov r1, #0xff + and r2, r1 + lsl r1, r2, #2 + ldr r5, [r7, r1] + mov r1, #0xff + and r5, r1 + lsr r2, r6, #8 + and r2, r1 + lsl r1, r2, #2 + ldr r4, [r7, r1] + ldr r1, _0221C1BC ; =0x0000FF00 + and r4, r1 + ldr r3, [r0, #0x10] + lsr r1, r6, #0x18 + lsl r1, r1, #2 + ldr r1, [r7, r1] + str r1, [sp, #0x18] + ldr r2, _0221C1C0 ; =0xFF000000 + and r1, r2 + str r1, [sp, #0x18] + eor r3, r1 + lsr r2, r6, #0x10 + mov r1, #0xff + and r2, r1 + lsl r1, r2, #2 + ldr r2, [r7, r1] + ldr r1, _0221C1C4 ; =0x00FF0000 + and r2, r1 + eor r3, r2 + eor r4, r3 + eor r5, r4 + str r5, [r0, #0x30] + ldr r2, [r0, #0x14] + ldr r1, [r0, #0x30] + eor r2, r1 + str r2, [r0, #0x34] + ldr r2, [r0, #0x18] + ldr r1, [r0, #0x34] + eor r2, r1 + str r2, [r0, #0x38] + ldr r2, [r0, #0x1c] + ldr r1, [r0, #0x38] + eor r2, r1 + str r2, [r0, #0x3c] + add r0, #0x20 + b _0221C0CC +_0221C1AC: + ldr r0, [sp] + add sp, #0x20 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_0221C1B4: .word 0x0223C444 +_0221C1B8: .word 0x0223E06C +_0221C1BC: .word 0x0000FF00 +_0221C1C0: .word 0xFF000000 +_0221C1C4: .word 0x00FF0000 +_0221C1C8: .word 0x00000100 + + thumb_func_start MOD13_0221C1CC +MOD13_0221C1CC: ; 0x0221C1CC + push {r4} + sub sp, #4 + ldrb r4, [r0] + ldrb r3, [r1] + eor r4, r3 + strb r4, [r2] + ldrb r4, [r0, #1] + ldrb r3, [r1, #1] + eor r4, r3 + strb r4, [r2, #1] + ldrb r4, [r0, #2] + ldrb r3, [r1, #2] + eor r4, r3 + strb r4, [r2, #2] + ldrb r4, [r0, #3] + ldrb r3, [r1, #3] + eor r4, r3 + strb r4, [r2, #3] + ldrb r4, [r0, #4] + ldrb r3, [r1, #4] + eor r4, r3 + strb r4, [r2, #4] + ldrb r4, [r0, #5] + ldrb r3, [r1, #5] + eor r4, r3 + strb r4, [r2, #5] + ldrb r4, [r0, #6] + ldrb r3, [r1, #6] + eor r4, r3 + strb r4, [r2, #6] + ldrb r3, [r0, #7] + ldrb r0, [r1, #7] + eor r3, r0 + strb r3, [r2, #7] + add sp, #4 + pop {r4} + bx lr + .align 2, 0 + + thumb_func_start MOD13_0221C218 +MOD13_0221C218: ; 0x0221C218 + push {r4, r5, r6, r7, lr} + sub sp, #0x1b4 + str r0, [sp] + add r5, r1, #0 + add r4, r2, #0 + mov r0, #1 + str r0, [sp, #0x1c] + ldr r0, _0221C3FC ; =0xA6A6A6A6 + str r0, [sp, #0x58] + str r0, [sp, #0x5c] + mov r0, #7 + add r1, r4, #0 + and r1, r0 + cmp r1, #0 + bne _0221C240 + ldr r2, [sp, #0x1c8] + add r1, r2, #0 + and r1, r0 + cmp r1, #0 + beq _0221C24A +_0221C240: + mov r0, #0 + add sp, #0x1b4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221C24A: + sub r0, r4, #1 + lsr r0, r0, #3 + str r0, [sp, #0x14] + cmp r0, #2 + bge _0221C25E + mov r0, #0 + add sp, #0x1b4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221C25E: + add r0, sp, #0x70 + add r1, r3, #0 + lsl r2, r2, #3 + bl MOD13_0221BD20 + str r0, [sp, #0x18] + add r3, sp, #0x60 + add r2, r5, #0 + mov r1, #8 +_0221C270: + ldrb r0, [r2] + add r2, r2, #1 + strb r0, [r3] + add r3, r3, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C270 + ldr r0, [sp] + add r5, #8 + add r1, r5, #0 + sub r2, r4, #1 + bl memcpy + mov r0, #5 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + asr r0, r0, #0x1f + str r0, [sp, #0x24] +_0221C294: + ldr r0, [sp, #0x14] + str r0, [sp, #0xc] + cmp r0, #0 + bgt _0221C29E + b _0221C3D4 +_0221C29E: + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x10] + asr r3, r2, #0x1f + bl _ll_mul + str r0, [sp, #0x28] + str r1, [sp, #8] +_0221C2AC: + ldr r0, [sp, #0xc] + asr r1, r0, #0x1f + lsl r2, r0, #0 + ldr r0, [sp, #0x28] + add r6, r2, r0 + ldr r0, [sp, #8] + adc r1, r0 + add r2, r1, #0 + ldr r0, _0221C400 ; =0xFF000000 + and r2, r0 + lsr r0, r2, #0x18 + str r0, [sp, #0x30] + add r2, r1, #0 + ldr r0, _0221C404 ; =0x00FF0000 + and r2, r0 + lsr r0, r2, #8 + str r0, [sp, #0x48] + add r2, r1, #0 + ldr r0, _0221C408 ; =0x0000FF00 + and r2, r0 + add r3, r6, #0 + mov r0, #0 + and r3, r0 + lsl r0, r2, #8 + lsr r5, r3, #0x18 + orr r5, r0 + lsr r0, r2, #0x18 + str r0, [sp, #0x34] + add r0, r1, #0 + mov r2, #0xff + and r0, r2 + add r3, r6, #0 + mov r2, #0 + and r3, r2 + lsl r2, r0, #0x18 + lsr r4, r3, #8 + orr r4, r2 + lsr r0, r0, #8 + str r0, [sp, #0x38] + add r3, r1, #0 + mov r0, #0 + and r3, r0 + add r0, r6, #0 + ldr r2, _0221C400 ; =0xFF000000 + and r0, r2 + lsr r2, r0, #0x18 + lsl r3, r3, #8 + orr r3, r2 + lsl r0, r0, #8 + str r0, [sp, #0x4c] + mov r0, #0 + and r1, r0 + add r0, r6, #0 + ldr r2, _0221C404 ; =0x00FF0000 + and r0, r2 + lsr r2, r0, #8 + str r2, [sp, #0x44] + lsl r2, r1, #0x18 + ldr r1, [sp, #0x44] + orr r2, r1 + lsl r7, r0, #0x18 + add r1, r6, #0 + str r1, [sp, #0x40] + mov r0, #0xff + and r1, r0 + str r1, [sp, #0x40] + lsl r0, r1, #0x18 + str r0, [sp, #0x3c] + ldr r0, _0221C408 ; =0x0000FF00 + and r6, r0 + lsl r1, r6, #8 + ldr r0, [sp, #0x3c] + orr r0, r1 + str r0, [sp, #0x3c] + mov r0, #0 + lsl r1, r0, #0 + orr r0, r1 + ldr r1, [sp, #0x3c] + orr r2, r1 + orr r7, r0 + orr r3, r2 + ldr r0, [sp, #0x4c] + orr r0, r7 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x38] + orr r0, r3 + str r0, [sp, #0x38] + ldr r0, [sp, #0x4c] + orr r4, r0 + ldr r1, [sp, #0x34] + ldr r0, [sp, #0x38] + orr r1, r0 + str r1, [sp, #0x34] + orr r5, r4 + mov r1, #0 + ldr r0, [sp, #0x34] + orr r1, r0 + ldr r0, [sp, #0x48] + orr r0, r5 + str r0, [sp, #0x48] + mov r2, #0 + orr r2, r1 + ldr r1, [sp, #0x30] + orr r1, r0 + str r1, [sp, #0x30] + str r1, [sp, #0x50] + str r2, [sp, #0x54] + add r0, sp, #0x60 + add r1, sp, #0x50 + lsl r2, r0, #0 + bl MOD13_0221C1CC + ldr r0, [sp, #0xc] + sub r0, r0, #1 + lsl r1, r0, #3 + ldr r0, [sp] + add r4, r0, r1 + add r3, r4, #0 + add r2, sp, #0x68 + mov r1, #8 +_0221C39C: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C39C + add r0, sp, #0x70 + ldr r1, [sp, #0x18] + add r2, sp, #0x60 + lsl r3, r2, #0 + bl MOD13_0221B4D8 + add r2, sp, #0x68 + mov r1, #8 +_0221C3BA: + ldrb r0, [r2] + add r2, r2, #1 + strb r0, [r4] + add r4, r4, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C3BA + ldr r0, [sp, #0xc] + sub r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #0 + ble _0221C3D4 + b _0221C2AC +_0221C3D4: + ldr r0, [sp, #0x10] + sub r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #0 + blt _0221C3E0 + b _0221C294 +_0221C3E0: + add r0, sp, #0x58 + add r1, sp, #0x60 + mov r2, #8 + bl memcmp + cmp r0, #0 + beq _0221C3F2 + mov r0, #0 + str r0, [sp, #0x1c] +_0221C3F2: + ldr r0, [sp, #0x1c] + add sp, #0x1b4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221C3FC: .word 0xA6A6A6A6 +_0221C400: .word 0xFF000000 +_0221C404: .word 0x00FF0000 +_0221C408: .word 0x0000FF00 + + thumb_func_start MOD13_0221C40C +MOD13_0221C40C: ; 0x0221C40C + push {r4, r5, r6, r7, lr} + sub sp, #0x1d4 + str r0, [sp] + add r5, r1, #0 + add r4, r2, #0 + ldr r0, _0221C608 ; =0xA6A6A6A6 + str r0, [sp, #0x78] + str r0, [sp, #0x7c] + mov r0, #7 + add r1, r4, #0 + and r1, r0 + cmp r1, #0 + bne _0221C430 + ldr r2, [sp, #0x1e8] + add r1, r2, #0 + and r1, r0 + cmp r1, #0 + beq _0221C43A +_0221C430: + mov r0, #0 + add sp, #0x1d4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221C43A: + lsr r0, r4, #3 + str r0, [sp, #0x14] + cmp r0, #2 + bge _0221C44C + mov r0, #0 + add sp, #0x1d4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221C44C: + add r0, sp, #0x90 + add r1, r3, #0 + lsl r2, r2, #3 + bl MOD13_0221BEE4 + str r0, [sp, #0x18] + ldr r0, [sp] + add r0, #8 + add r1, r5, #0 + add r2, r4, #0 + bl memcpy + add r3, sp, #0x80 + add r2, sp, #0x78 + mov r1, #8 +_0221C46A: + ldrb r0, [r2] + add r2, r2, #1 + strb r0, [r3] + add r3, r3, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C46A + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + asr r0, r0, #0x1f + str r0, [sp, #0x20] + ldr r0, [sp, #0x10] + str r0, [sp, #0x34] + str r0, [sp, #0x38] + str r0, [sp, #0x64] + str r0, [sp, #0x60] + str r0, [sp, #0x5c] + str r0, [sp, #0x58] + str r0, [sp, #0x48] + str r0, [sp, #0x50] +_0221C494: + mov r0, #1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + cmp r0, #1 + bge _0221C4A0 + b _0221C5DA +_0221C4A0: + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x10] + asr r3, r2, #0x1f + bl _ll_mul + str r0, [sp, #0x24] + str r1, [sp, #8] +_0221C4AE: + ldr r0, [sp, #0xc] + lsl r1, r0, #3 + ldr r0, [sp] + add r3, r0, r1 + str r3, [sp, #0x2c] + add r2, sp, #0x88 + mov r1, #8 +_0221C4BC: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C4BC + add r0, sp, #0x90 + ldr r1, [sp, #0x18] + add r2, sp, #0x80 + lsl r3, r2, #0 + bl MOD13_0221B900 + ldr r0, [sp, #0xc] + asr r1, r0, #0x1f + lsl r2, r0, #0 + ldr r0, [sp, #0x24] + add r6, r2, r0 + ldr r0, [sp, #8] + adc r1, r0 + add r2, r1, #0 + ldr r0, _0221C60C ; =0xFF000000 + and r2, r0 + lsr r0, r2, #0x18 + str r0, [sp, #0x30] + add r2, r1, #0 + ldr r0, _0221C610 ; =0x00FF0000 + and r2, r0 + lsr r0, r2, #8 + str r0, [sp, #0x68] + add r2, r1, #0 + ldr r0, _0221C614 ; =0x0000FF00 + and r2, r0 + add r3, r6, #0 + ldr r0, [sp, #0x64] + and r3, r0 + lsl r0, r2, #8 + lsr r5, r3, #0x18 + orr r5, r0 + lsr r0, r2, #0x18 + str r0, [sp, #0x3c] + add r0, r1, #0 + mov r2, #0xff + and r0, r2 + add r3, r6, #0 + ldr r2, [sp, #0x60] + and r3, r2 + lsl r2, r0, #0x18 + lsr r4, r3, #8 + orr r4, r2 + lsr r0, r0, #8 + str r0, [sp, #0x40] + add r3, r1, #0 + ldr r0, [sp, #0x5c] + and r3, r0 + add r0, r6, #0 + ldr r2, _0221C60C ; =0xFF000000 + and r0, r2 + lsr r2, r0, #0x18 + lsl r3, r3, #8 + orr r3, r2 + lsl r0, r0, #8 + str r0, [sp, #0x6c] + ldr r0, [sp, #0x58] + and r1, r0 + add r0, r6, #0 + ldr r2, _0221C610 ; =0x00FF0000 + and r0, r2 + lsr r2, r0, #8 + str r2, [sp, #0x54] + lsl r2, r1, #0x18 + ldr r1, [sp, #0x54] + orr r2, r1 + lsl r7, r0, #0x18 + add r1, r6, #0 + str r1, [sp, #0x4c] + mov r0, #0xff + and r1, r0 + str r1, [sp, #0x4c] + lsl r0, r1, #0x18 + str r0, [sp, #0x44] + ldr r0, _0221C614 ; =0x0000FF00 + and r6, r0 + lsl r1, r6, #8 + ldr r0, [sp, #0x44] + orr r0, r1 + str r0, [sp, #0x44] + ldr r0, [sp, #0x48] + ldr r1, [sp, #0x50] + orr r0, r1 + ldr r1, [sp, #0x44] + orr r2, r1 + orr r7, r0 + orr r3, r2 + ldr r0, [sp, #0x6c] + orr r0, r7 + str r0, [sp, #0x6c] + ldr r0, [sp, #0x40] + orr r0, r3 + str r0, [sp, #0x40] + ldr r0, [sp, #0x6c] + orr r4, r0 + ldr r1, [sp, #0x3c] + ldr r0, [sp, #0x40] + orr r1, r0 + str r1, [sp, #0x3c] + orr r5, r4 + ldr r1, [sp, #0x38] + ldr r0, [sp, #0x3c] + orr r1, r0 + ldr r0, [sp, #0x68] + orr r0, r5 + str r0, [sp, #0x68] + ldr r2, [sp, #0x34] + orr r2, r1 + ldr r1, [sp, #0x30] + orr r1, r0 + str r1, [sp, #0x30] + str r1, [sp, #0x70] + str r2, [sp, #0x74] + add r0, sp, #0x80 + add r1, sp, #0x70 + lsl r2, r0, #0 + bl MOD13_0221C1CC + add r3, sp, #0x88 + mov r2, #8 +_0221C5BA: + ldrb r1, [r3] + add r3, r3, #1 + ldr r0, [sp, #0x2c] + strb r1, [r0] + add r0, r0, #1 + str r0, [sp, #0x2c] + sub r2, r2, #1 + cmp r2, #0 + bne _0221C5BA + ldr r0, [sp, #0xc] + add r1, r0, #1 + str r1, [sp, #0xc] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _0221C5DA + b _0221C4AE +_0221C5DA: + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #6 + bge _0221C5E6 + b _0221C494 +_0221C5E6: + add r3, sp, #0x80 + mov r2, #8 +_0221C5EA: + ldrb r1, [r3] + add r3, r3, #1 + ldr r0, [sp] + strb r1, [r0] + add r0, r0, #1 + str r0, [sp] + sub r2, r2, #1 + cmp r2, #0 + bne _0221C5EA + mov r0, #1 + add sp, #0x1d4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221C608: .word 0xA6A6A6A6 +_0221C60C: .word 0xFF000000 +_0221C610: .word 0x00FF0000 +_0221C614: .word 0x0000FF00 + + thumb_func_start MOD13_0221C618 +MOD13_0221C618: ; 0x0221C618 + push {r4, lr} + bl MOD13_0221C658 + add r4, r0, #0 + ldr r0, _0221C64C ; =0x02241B28 + str r4, [r0] + bl MOD13_0221D938 + cmp r4, #1 + bne _0221C634 + mov r1, #6 + ldr r0, _0221C650 ; =0x02241AE8 + str r1, [r0] + b _0221C63A +_0221C634: + mov r1, #7 + ldr r0, _0221C650 ; =0x02241AE8 + str r1, [r0] +_0221C63A: + mov r0, #0 + mvn r1, r0 + ldr r0, _0221C654 ; =0x0223F870 + str r1, [r0] + bl MOD13_0221A778 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221C64C: .word 0x02241B28 +_0221C650: .word 0x02241AE8 +_0221C654: .word 0x0223F870 + + thumb_func_start MOD13_0221C658 +MOD13_0221C658: ; 0x0221C658 + push {r4, r5, r6, r7, lr} + sub sp, #0x64 + mov r4, #0 + mov r0, #4 + mvn r0, r0 + str r0, [sp, #4] + str r4, [sp, #0x40] + str r4, [sp, #8] + str r4, [sp, #0xc] + ldr r6, _0221C9E0 ; =0x02241ACC + mov r0, #1 + str r0, [r6] + str r4, [sp, #0x10] + str r4, [sp, #0x18] + str r4, [sp, #0x2c] + str r4, [sp, #0x34] + mvn r0, r0 + str r0, [sp, #0x14] + str r4, [sp, #0x38] + str r4, [sp, #0x24] + mvn r0, r4 + str r0, [sp, #0x28] + mov r0, #3 + mvn r0, r0 + str r0, [sp, #0x20] + mov r0, #2 + mvn r0, r0 + str r0, [sp, #0x1c] + str r4, [sp, #0x3c] + b _0221CA3C +_0221C694: + ldr r0, _0221C9E4 ; =0x000001F4 + bl OS_Sleep + ldr r0, [r6] + cmp r0, #0xa + bls _0221C6A2 + b _0221CA3C +_0221C6A2: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221C6B0: ; jump table + .short _0221CA3C - _0221C6B0 + 1 ; case 0 + .short _0221C6C6 - _0221C6B0 + 1 ; case 1 + .short _0221C6E6 - _0221C6B0 + 1 ; case 2 + .short _0221C6FC - _0221C6B0 + 1 ; case 3 + .short _0221C74C - _0221C6B0 + 1 ; case 4 + .short _0221C7B6 - _0221C6B0 + 1 ; case 5 + .short _0221C7D8 - _0221C6B0 + 1 ; case 6 + .short _0221C880 - _0221C6B0 + 1 ; case 7 + .short _0221C8DE - _0221C6B0 + 1 ; case 8 + .short _0221C960 - _0221C6B0 + 1 ; case 9 + .short _0221C9BA - _0221C6B0 + 1 ; case 10 +_0221C6C6: + bl MOD13_0221D478 + str r0, [sp, #4] + cmp r0, #1 + beq _0221C6D6 + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C6D6: + mov r1, #3 + ldr r0, _0221C9E8 ; =0x02241AE8 + str r1, [r0] + bl MOD13_0221A778 + mov r0, #2 + str r0, [r6] + b _0221CA3C +_0221C6E6: + bl MOD13_0221D9A0 + str r0, [sp, #4] + cmp r0, #1 + beq _0221C6F6 + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C6F6: + mov r0, #3 + str r0, [r6] + b _0221CA3C +_0221C6FC: + mov r0, #2 + lsl r1, r0, #0 + ldr r2, [sp, #0x10] + bl FUN_0209A9D0 + add r4, r0, #0 + cmp r4, #0 + bge _0221C716 + ldr r0, [sp, #0x14] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C716: + ldr r2, [sp, #0x18] + add r1, sp, #0x44 + str r2, [r1] + str r2, [r1, #4] + mov r2, #8 + add r1, sp, #0x44 + strb r2, [r1] + mov r2, #2 + strb r2, [r1, #1] + ldr r2, _0221C9EC ; =0x000001E6 + strh r2, [r1, #2] + ldr r1, [sp, #0x18] + str r1, [sp, #0x48] + add r1, sp, #0x44 + bl FUN_0209A9A4 + str r0, [sp, #4] + cmp r0, #0 + bge _0221C746 + ldr r0, [sp, #0x14] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C746: + mov r0, #4 + str r0, [r6] + b _0221CA3C +_0221C74C: + bl MOD13_0221AA90 + ldr r1, _0221C9F0 ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + blo _0221C768 + add r0, r4, #0 + bl thunk_FUN_0209996c + ldr r0, [sp, #0x1c] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C768: + mov r1, #8 + add r0, sp, #0x44 + strb r1, [r0, #8] + ldr r0, _0221C9F4 ; =0x02241B5C + add r1, sp, #0x4c + bl MOD13_0221CEA4 + add r0, sp, #0x4c + str r0, [sp] + add r0, r4, #0 + ldr r1, _0221C9F8 ; =0x022427E4 + ldr r2, _0221C9FC ; =0x00000800 + mov r3, #4 + bl FUN_0209A880 + cmp r0, #0 + bgt _0221C78C + b _0221CA3C +_0221C78C: + ldr r0, _0221C9F8 ; =0x022427E4 + ldr r1, _0221CA00 ; =0x02241B00 + bl MOD13_0221D0D4 + cmp r0, #0 + bne _0221C79A + b _0221CA3C +_0221C79A: + bl MOD13_0221AA90 + ldr r1, _0221CA04 ; =0x00007530 + add r1, r0, r1 + ldr r0, _0221C9F0 ; =0x0223F870 + str r1, [r0] + mov r0, #5 + str r0, [r6] + mov r1, #4 + ldr r0, _0221C9E8 ; =0x02241AE8 + str r1, [r0] + bl MOD13_0221A778 + b _0221CA3C +_0221C7B6: + ldr r0, _0221C9F8 ; =0x022427E4 + bl MOD13_0221CFD0 + add r3, r0, #0 + ldr r0, _0221CA08 ; =0x02241AC4 + str r3, [r0] + add r0, r4, #0 + add r1, sp, #0x4c + ldr r2, _0221C9F8 ; =0x022427E4 + bl MOD13_0221D408 + bl MOD13_0221AA90 + str r0, [sp, #0x40] + mov r0, #6 + str r0, [r6] + b _0221CA3C +_0221C7D8: + bl MOD13_0221AA90 + ldr r1, _0221C9F0 ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + blo _0221C7F4 + add r0, r4, #0 + bl thunk_FUN_0209996c + ldr r0, [sp, #0x20] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C7F4: + add r0, sp, #0x4c + str r0, [sp] + add r0, r4, #0 + ldr r1, _0221C9F8 ; =0x022427E4 + ldr r2, _0221C9FC ; =0x00000800 + mov r3, #4 + bl FUN_0209A880 + cmp r0, #0 + ble _0221C86A + ldr r0, _0221C9F8 ; =0x022427E4 + mov r1, #3 + ldr r2, _0221CA0C ; =0x02241FE4 + ldr r3, _0221C9F4 ; =0x02241B5C + bl MOD13_0221D074 + cmp r0, #0 + beq _0221C86A + ldr r0, _0221CA0C ; =0x02241FE4 + add r1, sp, #0x54 + add r2, sp, #0x58 + bl MOD13_0221D30C + add r5, r0, #0 + ldr r1, [sp, #0x54] + ldr r0, _0221CA10 ; =0x00000101 + cmp r1, r0 + beq _0221C82E + b _0221CA3C +_0221C82E: + bl MOD13_0221AA90 + str r0, [sp, #0x5c] + ldr r2, _0221CA14 ; =0x02241B84 + mov r1, #8 +_0221C838: + ldrb r0, [r5] + add r5, r5, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C838 + ldr r0, _0221CA18 ; =0x02241B8C + add r1, sp, #0x5c + mov r2, #4 + bl MOD13_0221AAB4 + ldr r0, [sp, #0x24] + str r0, [sp, #8] + mov r0, #7 + str r0, [r6] + mov r1, #5 + ldr r0, _0221C9E8 ; =0x02241AE8 + str r1, [r0] + ldr r1, [sp, #0x28] + ldr r0, _0221C9F0 ; =0x0223F870 + str r1, [r0] + bl MOD13_0221A778 + b _0221CA3C +_0221C86A: + bl MOD13_0221AA90 + ldr r2, _0221CA1C ; =0x000003E8 + ldr r1, [sp, #0x40] + add r1, r1, r2 + cmp r0, r1 + bhs _0221C87A + b _0221CA3C +_0221C87A: + mov r0, #5 + str r0, [r6] + b _0221CA3C +_0221C880: + ldr r0, _0221CA0C ; =0x02241FE4 + ldr r1, _0221CA20 ; =0x00000102 + ldr r2, _0221CA18 ; =0x02241B8C + mov r3, #8 + bl MOD13_0221D1B4 + ldr r1, _0221CA24 ; =0x02241AE4 + str r0, [r1] + ldr r0, _0221C9F4 ; =0x02241B5C + str r0, [sp] + ldr r0, _0221C9F8 ; =0x022427E4 + mov r1, #4 + ldr r2, _0221CA0C ; =0x02241FE4 + ldr r3, _0221CA24 ; =0x02241AE4 + ldr r3, [r3] + bl MOD13_0221D248 + add r3, r0, #0 + ldr r0, _0221CA08 ; =0x02241AC4 + str r3, [r0] + add r0, r4, #0 + add r1, sp, #0x4c + ldr r2, _0221C9F8 ; =0x022427E4 + bl MOD13_0221D408 + bl MOD13_0221AA90 + str r0, [sp, #0x40] + ldr r7, _0221CA28 ; =0x02241D90 + ldr r0, [sp, #0x2c] + lsl r1, r0, #0 + lsl r2, r0, #0 + lsl r3, r0, #0 + mov r5, #0x12 + str r5, [sp, #0x30] +_0221C8C6: + stmia r7!, {r0, r1, r2, r3} + stmia r7!, {r0, r1, r2, r3} + ldr r5, [sp, #0x30] + sub r5, r5, #1 + str r5, [sp, #0x30] + cmp r5, #0 + bne _0221C8C6 + stmia r7!, {r0, r1, r2, r3} + str r0, [r7] + mov r0, #8 + str r0, [r6] + b _0221CA3C +_0221C8DE: + add r0, sp, #0x4c + str r0, [sp] + add r0, r4, #0 + ldr r1, _0221C9F8 ; =0x022427E4 + ldr r2, _0221C9FC ; =0x00000800 + mov r3, #4 + bl FUN_0209A880 + cmp r0, #0 + ble _0221C932 + ldr r0, _0221C9F8 ; =0x022427E4 + mov r1, #5 + ldr r2, _0221CA0C ; =0x02241FE4 + ldr r3, _0221CA14 ; =0x02241B84 + bl MOD13_0221D074 + ldr r1, _0221CA24 ; =0x02241AE4 + str r0, [r1] + cmp r0, #0 + beq _0221C932 + ldr r0, _0221CA0C ; =0x02241FE4 + bl MOD13_0221CCD8 + cmp r0, #0 + beq _0221C932 + ldr r1, _0221CA2C ; =0x02241E90 + ldr r0, [sp, #0x3c] + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _0221C922 + mov r1, #1 + ldr r0, _0221CA30 ; =0x02241AB0 + strb r1, [r0] + b _0221C928 +_0221C922: + ldr r1, [sp, #0x34] + ldr r0, _0221CA30 ; =0x02241AB0 + strb r1, [r0] +_0221C928: + ldr r0, [sp, #0x38] + str r0, [sp, #8] + mov r0, #9 + str r0, [r6] + b _0221CA3C +_0221C932: + bl MOD13_0221AA90 + ldr r2, _0221CA1C ; =0x000003E8 + ldr r1, [sp, #0x40] + add r1, r1, r2 + cmp r0, r1 + blo _0221CA3C + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, #0xa + blt _0221C95A + add r0, r4, #0 + bl thunk_FUN_0209996c + ldr r0, [sp, #0x14] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C95A: + mov r0, #7 + str r0, [r6] + b _0221CA3C +_0221C960: + ldr r0, _0221CA0C ; =0x02241FE4 + ldr r1, _0221CA34 ; =0x00000301 + ldr r2, _0221CA30 ; =0x02241AB0 + mov r3, #1 + bl MOD13_0221D1B4 + ldr r1, _0221CA24 ; =0x02241AE4 + str r0, [r1] + ldr r0, _0221CA14 ; =0x02241B84 + str r0, [sp] + ldr r0, _0221C9F8 ; =0x022427E4 + mov r1, #6 + ldr r2, _0221CA0C ; =0x02241FE4 + ldr r3, _0221CA24 ; =0x02241AE4 + ldr r3, [r3] + bl MOD13_0221D248 + ldr r1, _0221CA08 ; =0x02241AC4 + str r0, [r1] + bl MOD13_0221DD40 + cmp r0, #7 + beq _0221C9A0 + bl MOD13_0221AA90 + ldr r1, _0221CA1C ; =0x000003E8 + add r0, r0, r1 + str r0, [sp, #0x40] + mov r0, #0xa + str r0, [sp, #8] + str r0, [r6] + b _0221CA3C +_0221C9A0: + add r0, r4, #0 + add r1, sp, #0x4c + ldr r2, _0221C9F8 ; =0x022427E4 + ldr r3, _0221CA08 ; =0x02241AC4 + ldr r3, [r3] + bl MOD13_0221D408 + bl MOD13_0221AA90 + str r0, [sp, #0x40] + mov r0, #0xa + str r0, [r6] + b _0221CA3C +_0221C9BA: + bl MOD13_0221AA90 + ldr r2, _0221CA1C ; =0x000003E8 + ldr r1, [sp, #0x40] + add r1, r1, r2 + cmp r0, r1 + blo _0221CA3C + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, #0xa + blt _0221CA38 + mov r0, #1 + str r0, [sp, #0xc] + bl MOD13_0221CA74 + str r0, [sp, #4] + b _0221CA3C + nop +_0221C9E0: .word 0x02241ACC +_0221C9E4: .word 0x000001F4 +_0221C9E8: .word 0x02241AE8 +_0221C9EC: .word 0x000001E6 +_0221C9F0: .word 0x0223F870 +_0221C9F4: .word 0x02241B5C +_0221C9F8: .word 0x022427E4 +_0221C9FC: .word 0x00000800 +_0221CA00: .word 0x02241B00 +_0221CA04: .word 0x00007530 +_0221CA08: .word 0x02241AC4 +_0221CA0C: .word 0x02241FE4 +_0221CA10: .word 0x00000101 +_0221CA14: .word 0x02241B84 +_0221CA18: .word 0x02241B8C +_0221CA1C: .word 0x000003E8 +_0221CA20: .word 0x00000102 +_0221CA24: .word 0x02241AE4 +_0221CA28: .word 0x02241D90 +_0221CA2C: .word 0x02241E90 +_0221CA30: .word 0x02241AB0 +_0221CA34: .word 0x00000301 +_0221CA38: + mov r0, #9 + str r0, [r6] +_0221CA3C: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0221CA4C + ldr r0, _0221CA70 ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + bne _0221CA4C + b _0221C694 +_0221CA4C: + cmp r4, #0 + beq _0221CA56 + add r0, r4, #0 + bl thunk_FUN_0209996c +_0221CA56: + ldr r0, _0221CA70 ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + beq _0221CA64 + mov r0, #7 + mvn r0, r0 + str r0, [sp, #4] +_0221CA64: + ldr r0, [sp, #4] + add sp, #0x64 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221CA70: .word 0x02241AC0 + + thumb_func_start MOD13_0221CA74 +MOD13_0221CA74: ; 0x0221CA74 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + mov r0, #1 + str r0, [sp] + ldr r0, _0221CBF0 ; =0x02241CA8 + ldr r1, _0221CBF4 ; =0x02241E90 + bl strcpy + ldr r1, _0221CBF4 ; =0x02241E90 + ldr r0, [r1, #0x2c] + cmp r0, #3 + bls _0221CA8E + b _0221CBE0 +_0221CA8E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221CA9C: ; jump table + .short _0221CAA4 - _0221CA9C + 1 ; case 0 + .short _0221CAAC - _0221CA9C + 1 ; case 1 + .short _0221CBB0 - _0221CA9C + 1 ; case 2 + .short _0221CBC8 - _0221CA9C + 1 ; case 3 +_0221CAA4: + mov r1, #0 + ldr r0, _0221CBF0 ; =0x02241CA8 + str r1, [r0, #0x20] + b _0221CBE6 +_0221CAAC: + ldr r0, [r1, #0x30] + cmp r0, #0 + bne _0221CABA + mov r0, #6 + mvn r0, r0 + str r0, [sp] + b _0221CBE6 +_0221CABA: + ldr r6, _0221CBF0 ; =0x02241CA8 + str r0, [r6, #0x24] + mov r0, #0 + str r0, [sp, #4] + add r5, sp, #0x10 + ldr r7, _0221CBF8 ; =0x02241EF4 + ldr r4, _0221CBFC ; =0x02241CD0 + mov r0, #6 + mvn r0, r0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + str r0, [sp, #8] +_0221CAD2: + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0x20 + bl memcpy + ldr r1, [sp, #8] + add r0, sp, #0x30 + strb r1, [r0] + add r0, r5, #0 + bl strlen + cmp r0, #0x10 + bhi _0221CB0E + cmp r0, #0xa + blo _0221CAFE + cmp r0, #0xa + beq _0221CB38 + cmp r0, #0xd + beq _0221CB48 + cmp r0, #0x10 + beq _0221CB72 + b _0221CB9C +_0221CAFE: + cmp r0, #0 + bhi _0221CB08 + cmp r0, #0 + beq _0221CBA0 + b _0221CB9C +_0221CB08: + cmp r0, #5 + beq _0221CB1E + b _0221CB9C +_0221CB0E: + cmp r0, #0x1a + bhi _0221CB18 + cmp r0, #0x1a + beq _0221CB62 + b _0221CB9C +_0221CB18: + cmp r0, #0x20 + beq _0221CB8C + b _0221CB9C +_0221CB1E: + mov r0, #1 + str r0, [r6, #0x20] + ldrb r0, [r5] + strb r0, [r4] + ldrb r0, [r5, #1] + strb r0, [r4, #1] + ldrb r0, [r5, #2] + strb r0, [r4, #2] + ldrb r0, [r5, #3] + strb r0, [r4, #3] + ldrb r0, [r5, #4] + strb r0, [r4, #4] + b _0221CBA0 +_0221CB38: + mov r0, #1 + str r0, [r6, #0x20] + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0xa + bl MOD13_0221CC08 + b _0221CBA0 +_0221CB48: + mov r0, #2 + str r0, [r6, #0x20] + add r3, r5, #0 + add r2, r4, #0 + mov r1, #0xd +_0221CB52: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221CB52 + b _0221CBA0 +_0221CB62: + mov r0, #2 + str r0, [r6, #0x20] + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0x1a + bl MOD13_0221CC08 + b _0221CBA0 +_0221CB72: + mov r0, #3 + str r0, [r6, #0x20] + add r3, r5, #0 + add r2, r4, #0 + mov r1, #0x10 +_0221CB7C: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221CB7C + b _0221CBA0 +_0221CB8C: + mov r0, #3 + str r0, [r6, #0x20] + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0x20 + bl MOD13_0221CC08 + b _0221CBA0 +_0221CB9C: + ldr r0, [sp, #0xc] + str r0, [sp] +_0221CBA0: + add r7, #0x28 + add r4, #0x20 + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #4 + blt _0221CAD2 + b _0221CBE6 +_0221CBB0: + mov r1, #4 + ldr r0, _0221CBF0 ; =0x02241CA8 + str r1, [r0, #0x20] + ldr r4, _0221CC00 ; =0x02241D50 + ldr r3, _0221CC04 ; =0x02241F8C + mov r2, #8 +_0221CBBC: + ldmia r3!, {r0, r1} + stmia r4!, {r0, r1} + sub r2, r2, #1 + cmp r2, #0 + bne _0221CBBC + b _0221CBE6 +_0221CBC8: + mov r1, #5 + ldr r0, _0221CBF0 ; =0x02241CA8 + str r1, [r0, #0x20] + ldr r4, _0221CC00 ; =0x02241D50 + ldr r3, _0221CC04 ; =0x02241F8C + mov r2, #8 +_0221CBD4: + ldmia r3!, {r0, r1} + stmia r4!, {r0, r1} + sub r2, r2, #1 + cmp r2, #0 + bne _0221CBD4 + b _0221CBE6 +_0221CBE0: + mov r0, #6 + mvn r0, r0 + str r0, [sp] +_0221CBE6: + ldr r0, [sp] + add sp, #0x34 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221CBF0: .word 0x02241CA8 +_0221CBF4: .word 0x02241E90 +_0221CBF8: .word 0x02241EF4 +_0221CBFC: .word 0x02241CD0 +_0221CC00: .word 0x02241D50 +_0221CC04: .word 0x02241F8C + + thumb_func_start MOD13_0221CC08 +MOD13_0221CC08: ; 0x0221CC08 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + add r7, r1, #0 + str r2, [sp] + mov r4, #0 + add r5, r4, #0 + lsl r0, r2, #0 + cmp r0, #0 + ble _0221CCCE + str r4, [sp, #4] +_0221CC1E: + ldrsb r0, [r7, r5] + cmp r0, #0x63 + bgt _0221CC7A + cmp r0, #0x63 + bge _0221CC94 + cmp r0, #0x61 + bgt _0221CC74 + cmp r0, #0x61 + bge _0221CC94 + add r1, r0, #0 + sub r1, #0x30 + cmp r1, #0x16 + bhi _0221CCA0 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #8] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r1, pc + bx r1 +_0221CC46: ; jump table + .short _0221CC8E - _0221CC46 + 1 ; case 0 + .short _0221CC8E - _0221CC46 + 1 ; case 1 + .short _0221CC8E - _0221CC46 + 1 ; case 2 + .short _0221CC8E - _0221CC46 + 1 ; case 3 + .short _0221CC8E - _0221CC46 + 1 ; case 4 + .short _0221CC8E - _0221CC46 + 1 ; case 5 + .short _0221CC8E - _0221CC46 + 1 ; case 6 + .short _0221CC8E - _0221CC46 + 1 ; case 7 + .short _0221CC8E - _0221CC46 + 1 ; case 8 + .short _0221CC8E - _0221CC46 + 1 ; case 9 + .short _0221CCA0 - _0221CC46 + 1 ; case 10 + .short _0221CCA0 - _0221CC46 + 1 ; case 11 + .short _0221CCA0 - _0221CC46 + 1 ; case 12 + .short _0221CCA0 - _0221CC46 + 1 ; case 13 + .short _0221CCA0 - _0221CC46 + 1 ; case 14 + .short _0221CCA0 - _0221CC46 + 1 ; case 15 + .short _0221CCA0 - _0221CC46 + 1 ; case 16 + .short _0221CC9A - _0221CC46 + 1 ; case 17 + .short _0221CC9A - _0221CC46 + 1 ; case 18 + .short _0221CC9A - _0221CC46 + 1 ; case 19 + .short _0221CC9A - _0221CC46 + 1 ; case 20 + .short _0221CC9A - _0221CC46 + 1 ; case 21 + .short _0221CC9A - _0221CC46 + 1 ; case 22 +_0221CC74: + cmp r0, #0x62 + beq _0221CC94 + b _0221CCA0 +_0221CC7A: + cmp r0, #0x65 + bgt _0221CC88 + cmp r0, #0x65 + bge _0221CC94 + cmp r0, #0x64 + beq _0221CC94 + b _0221CCA0 +_0221CC88: + cmp r0, #0x66 + beq _0221CC94 + b _0221CCA0 +_0221CC8E: + sub r0, #0x30 + add r4, r4, r0 + b _0221CCAA +_0221CC94: + sub r0, #0x57 + add r4, r4, r0 + b _0221CCAA +_0221CC9A: + sub r0, #0x37 + add r4, r4, r0 + b _0221CCAA +_0221CCA0: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221CCAA: + add r0, r5, #0 + mov r1, #2 + bl _s32_div_f + cmp r1, #0 + bne _0221CCBA + lsl r4, r4, #4 + b _0221CCC6 +_0221CCBA: + add r0, r5, #0 + mov r1, #2 + bl _s32_div_f + strb r4, [r6, r0] + ldr r4, [sp, #4] +_0221CCC6: + add r5, r5, #1 + ldr r0, [sp] + cmp r5, r0 + blt _0221CC1E +_0221CCCE: + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221CCD8 +MOD13_0221CCD8: ; 0x0221CCD8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r1, r0, #0 + add r1, #8 + str r1, [sp, #8] + mov r2, #0 + str r2, [sp, #4] + ldrh r2, [r0] + asr r3, r2, #8 + mov r0, #0xff + and r3, r0 + lsl r2, r2, #8 + ldr r0, _0221CE80 ; =0x0000FF00 + and r2, r0 + orr r3, r2 + lsl r0, r3, #0x10 + lsr r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp] + add r0, sp, #8 + ldr r1, [sp] + add r2, sp, #0xc + add r3, sp, #0x10 + bl MOD13_0221D344 + add r5, r0, #0 + cmp r5, #0 + bne _0221CD12 + b _0221CE76 +_0221CD12: + mov r7, #0 +_0221CD14: + ldr r0, [sp, #0xc] + ldr r1, _0221CE84 ; =0x00000201 + sub r1, r0, r1 + cmp r1, #9 + bls _0221CD20 + b _0221CE62 +_0221CD20: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #8] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r1, pc + bx r1 +_0221CD2E: ; jump table + .short _0221CD42 - _0221CD2E + 1 ; case 0 + .short _0221CD60 - _0221CD2E + 1 ; case 1 + .short _0221CD7A - _0221CD2E + 1 ; case 2 + .short _0221CDA0 - _0221CD2E + 1 ; case 3 + .short _0221CDC6 - _0221CD2E + 1 ; case 4 + .short _0221CDE0 - _0221CD2E + 1 ; case 5 + .short _0221CDE0 - _0221CD2E + 1 ; case 6 + .short _0221CDE0 - _0221CD2E + 1 ; case 7 + .short _0221CDE0 - _0221CD2E + 1 ; case 8 + .short _0221CE40 - _0221CD2E + 1 ; case 9 +_0221CD42: + ldr r2, _0221CE88 ; =0x02241E90 + add r0, r7, #0 + add r1, r7, #0 + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, _0221CE88 ; =0x02241E90 + add r1, r5, #0 + ldr r2, [sp, #0x10] + bl memcpy + mov r0, #1 + str r0, [sp, #4] + b _0221CE62 +_0221CD60: + ldrh r1, [r5] + asr r2, r1, #8 + mov r0, #0xff + and r2, r0 + lsl r1, r1, #8 + ldr r0, _0221CE80 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r1, r0, #0x10 + ldr r0, _0221CE88 ; =0x02241E90 + str r1, [r0, #0x2c] + b _0221CE62 +_0221CD7A: + ldrh r1, [r5] + asr r2, r1, #8 + mov r0, #0xff + and r2, r0 + lsl r1, r1, #8 + ldr r0, _0221CE80 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r1, r0, #0x10 + add r3, r7, #0 + ldr r2, _0221CE8C ; =0x02241D90 +_0221CD92: + ldr r0, _0221CE90 ; =0x0000015C + str r1, [r2, r0] + add r2, #0x28 + add r3, r3, #1 + cmp r3, #4 + blt _0221CD92 + b _0221CE62 +_0221CDA0: + ldrh r1, [r5] + asr r2, r1, #8 + mov r0, #0xff + and r2, r0 + lsl r1, r1, #8 + ldr r0, _0221CE80 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r2, r0, #0x10 + add r1, r7, #0 + ldr r3, _0221CE8C ; =0x02241D90 +_0221CDB8: + ldr r0, _0221CE94 ; =0x00000160 + str r2, [r3, r0] + add r3, #0x28 + add r1, r1, #1 + cmp r1, #4 + blt _0221CDB8 + b _0221CE62 +_0221CDC6: + ldrh r1, [r5] + asr r2, r1, #8 + mov r0, #0xff + and r2, r0 + lsl r1, r1, #8 + ldr r0, _0221CE80 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r1, r0, #0x10 + ldr r0, _0221CE88 ; =0x02241E90 + str r1, [r0, #0x30] + b _0221CE62 +_0221CDE0: + ldr r1, _0221CE98 ; =0x00000206 + sub r1, r0, r1 + mov r0, #0x28 + mul r1, r0 + ldr r0, _0221CE9C ; =0x02241EF4 + add r0, r0, r1 + add r1, r7, #0 + mov r2, #0x20 + bl Call_FillMemWithValue + ldr r0, _0221CE88 ; =0x02241E90 + ldr r0, [r0, #0x5c] + cmp r0, #1 + bne _0221CE28 + ldr r1, [sp, #0xc] + ldr r0, _0221CE98 ; =0x00000206 + sub r1, r1, r0 + mov r0, #0x28 + mul r1, r0 + ldr r0, _0221CE9C ; =0x02241EF4 + add r4, r0, r1 + add r6, r7, #0 + ldr r0, [sp, #0x10] + cmp r0, #0 + ble _0221CE62 +_0221CE12: + add r0, r4, #0 + ldrsb r1, [r5, r7] + add r5, r5, #1 + bl MOD13_0221AA14 + add r4, r4, r0 + add r6, r6, #1 + ldr r0, [sp, #0x10] + cmp r6, r0 + blt _0221CE12 + b _0221CE62 +_0221CE28: + ldr r1, [sp, #0xc] + ldr r0, _0221CE98 ; =0x00000206 + sub r1, r1, r0 + mov r0, #0x28 + mul r1, r0 + ldr r0, _0221CE9C ; =0x02241EF4 + add r0, r0, r1 + add r1, r5, #0 + ldr r2, [sp, #0x10] + bl memcpy + b _0221CE62 +_0221CE40: + ldr r2, _0221CEA0 ; =0x02241F8C + add r0, r7, #0 + add r1, r7, #0 + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, _0221CEA0 ; =0x02241F8C + add r1, r5, #0 + ldr r2, [sp, #0x10] + bl memcpy +_0221CE62: + add r0, sp, #8 + ldr r1, [sp] + add r2, sp, #0xc + add r3, sp, #0x10 + bl MOD13_0221D344 + add r5, r0, #0 + cmp r5, #0 + beq _0221CE76 + b _0221CD14 +_0221CE76: + ldr r0, [sp, #4] + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221CE80: .word 0x0000FF00 +_0221CE84: .word 0x00000201 +_0221CE88: .word 0x02241E90 +_0221CE8C: .word 0x02241D90 +_0221CE90: .word 0x0000015C +_0221CE94: .word 0x00000160 +_0221CE98: .word 0x00000206 +_0221CE9C: .word 0x02241EF4 +_0221CEA0: .word 0x02241F8C + + thumb_func_start MOD13_0221CEA4 +MOD13_0221CEA4: ; 0x0221CEA4 + push {r4, lr} + sub sp, #0x50 + add r4, r0, #0 + add r2, r4, #0 + add r2, #0xc + ldr r1, _0221CFB0 ; =0x0223F92C + ldrb r0, [r1] + strb r0, [r4, #0xc] + ldrb r0, [r1, #1] + strb r0, [r2, #1] + ldrb r0, [r1, #2] + strb r0, [r2, #2] + ldrb r0, [r1, #3] + strb r0, [r2, #3] + add r1, sp, #0 + ldr r0, _0221CFB4 ; =0x02241B3C + ldrb r2, [r0] + strb r2, [r1] + ldrb r2, [r0, #1] + strb r2, [r1, #1] + ldrb r2, [r0, #2] + strb r2, [r1, #2] + ldrb r2, [r0, #3] + strb r2, [r1, #3] + ldrb r2, [r0, #4] + strb r2, [r1, #4] + ldrb r0, [r0, #5] + strb r0, [r1, #5] + add r1, sp, #0 + ldrb r2, [r1] + mov r0, #0xfd + and r2, r0 + strb r2, [r1] + add r0, sp, #4 + add r0, #2 + bl MOD13_0221CFC0 + ldr r0, _0221CFB8 ; =0x02241B34 + add r1, sp, #4 + add r1, #2 + ldrb r2, [r1] + strb r2, [r0] + ldrb r2, [r1, #1] + strb r2, [r0, #1] + ldrb r2, [r1, #2] + strb r2, [r0, #2] + ldrb r2, [r1, #3] + strb r2, [r0, #3] + ldrb r2, [r1, #4] + strb r2, [r0, #4] + ldrb r2, [r1, #5] + strb r2, [r0, #5] + add r0, sp, #0 + mov r2, #6 + bl memcmp + cmp r0, #0 + bgt _0221CF52 + add r1, sp, #4 + add r1, #2 + ldrb r0, [r1] + strb r0, [r4] + ldrb r0, [r1, #1] + strb r0, [r4, #1] + ldrb r0, [r1, #2] + strb r0, [r4, #2] + ldrb r0, [r1, #3] + strb r0, [r4, #3] + ldrb r0, [r1, #4] + strb r0, [r4, #4] + ldrb r0, [r1, #5] + strb r0, [r4, #5] + add r1, r4, #6 + add r0, sp, #0 + ldrb r2, [r0] + strb r2, [r4, #6] + ldrb r2, [r0, #1] + strb r2, [r1, #1] + ldrb r2, [r0, #2] + strb r2, [r1, #2] + ldrb r2, [r0, #3] + strb r2, [r1, #3] + ldrb r2, [r0, #4] + strb r2, [r1, #4] + ldrb r0, [r0, #5] + strb r0, [r1, #5] + b _0221CF8A +_0221CF52: + add r1, sp, #0 + ldrb r0, [r1] + strb r0, [r4] + ldrb r0, [r1, #1] + strb r0, [r4, #1] + ldrb r0, [r1, #2] + strb r0, [r4, #2] + ldrb r0, [r1, #3] + strb r0, [r4, #3] + ldrb r0, [r1, #4] + strb r0, [r4, #4] + ldrb r0, [r1, #5] + strb r0, [r4, #5] + add r1, r4, #6 + add r0, sp, #4 + add r0, #2 + ldrb r2, [r0] + strb r2, [r4, #6] + ldrb r2, [r0, #1] + strb r2, [r1, #1] + ldrb r2, [r0, #2] + strb r2, [r1, #2] + ldrb r2, [r0, #3] + strb r2, [r1, #3] + ldrb r2, [r0, #4] + strb r2, [r1, #4] + ldrb r0, [r0, #5] + strb r0, [r1, #5] +_0221CF8A: + ldr r0, _0221CFBC ; =0x0223F868 + ldr r0, [r0] + cmp r0, #0 + beq _0221CFA4 + add r0, sp, #0xc + add r1, sp, #4 + add r1, #2 + bl MOD13_0221A9D8 + add r0, sp, #0x2c + add r1, sp, #0 + bl MOD13_0221A9D8 +_0221CFA4: + mov r0, #1 + add sp, #0x50 + pop {r4} + pop {r3} + bx r3 + nop +_0221CFB0: .word 0x0223F92C +_0221CFB4: .word 0x02241B3C +_0221CFB8: .word 0x02241B34 +_0221CFBC: .word 0x0223F868 + + thumb_func_start MOD13_0221CFC0 +MOD13_0221CFC0: ; 0x0221CFC0 + push {lr} + sub sp, #4 + bl OS_GetMacAddress + mov r0, #1 + add sp, #4 + pop {r3} + bx r3 + + thumb_func_start MOD13_0221CFD0 +MOD13_0221CFD0: ; 0x0221CFD0 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r1, _0221D05C ; =0x00000100 + add r0, sp, #4 + strh r1, [r0] + ldr r3, _0221D060 ; =0x0223F880 + add r2, sp, #4 + add r2, #2 + mov r1, #7 +_0221CFE4: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221CFE4 + ldr r0, _0221D064 ; =0x0223F864 + ldr r0, [r0] + mov r1, #1 + add r2, sp, #4 + mov r3, #2 + bl MOD13_0221D1E0 + mov r1, #2 + add r2, sp, #4 + add r3, r1, #0 + bl MOD13_0221D1E0 + ldr r1, _0221D068 ; =0x02241B00 + ldr r1, [r1] + cmp r1, #0 + beq _0221D01C + mov r1, #5 + add r2, sp, #4 + mov r3, #2 + bl MOD13_0221D1E0 +_0221D01C: + mov r1, #3 + add r2, sp, #4 + add r2, #2 + mov r3, #7 + bl MOD13_0221D1E0 + add r3, r0, #0 + ldr r1, _0221D068 ; =0x02241B00 + ldr r1, [r1] + cmp r1, #0 + beq _0221D03E + mov r1, #4 + ldr r2, _0221D06C ; =0x02241B34 + mov r3, #6 + bl MOD13_0221D1E0 + add r3, r0, #0 +_0221D03E: + mov r0, #0 + str r0, [sp] + add r0, r4, #0 + mov r1, #2 + ldr r2, _0221D070 ; =0x02241FE4 + ldr r4, _0221D064 ; =0x0223F864 + ldr r4, [r4] + sub r3, r3, r4 + add r3, #8 + bl MOD13_0221D248 + add sp, #0x10 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221D05C: .word 0x00000100 +_0221D060: .word 0x0223F880 +_0221D064: .word 0x0223F864 +_0221D068: .word 0x02241B00 +_0221D06C: .word 0x02241B34 +_0221D070: .word 0x02241FE4 + + thumb_func_start MOD13_0221D074 +MOD13_0221D074: ; 0x0221D074 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r1, #0 + add r6, r2, #0 + add r4, r3, #0 + add r1, sp, #4 + add r2, sp, #8 + bl MOD13_0221D398 + add r1, r0, #0 + cmp r1, #0 + bne _0221D096 + mov r0, #0 + add sp, #0x10 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221D096: + ldr r0, [sp, #4] + cmp r0, r5 + beq _0221D0A6 + mov r0, #0 + add sp, #0x10 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221D0A6: + cmp r4, #0 + beq _0221D0C0 + mov r0, #0x10 + str r0, [sp] + add r0, r6, #0 + ldr r2, [sp, #8] + add r3, r4, #0 + bl MOD13_0221C218 + ldr r0, [sp, #8] + sub r0, #8 + str r0, [sp, #8] + b _0221D0C8 +_0221D0C0: + add r0, r6, #0 + ldr r2, [sp, #8] + bl memcpy +_0221D0C8: + ldr r0, [sp, #8] + add sp, #0x10 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221D0D4 +MOD13_0221D0D4: ; 0x0221D0D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r1, [sp] + add r1, sp, #0xc + add r2, sp, #0x10 + bl MOD13_0221D398 + str r0, [sp, #0x1c] + mov r7, #0 + str r7, [sp, #4] + str r7, [sp, #8] + cmp r0, #0 + bne _0221D0F8 + add r0, r7, #0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221D0F8: + ldr r1, [sp, #0xc] + cmp r1, #1 + beq _0221D108 + add r0, r7, #0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221D108: + ldr r1, [sp, #0x10] + add r6, r0, r1 + add r0, #8 + str r0, [sp, #0x1c] + add r0, sp, #0x1c + add r1, r6, #0 + add r2, sp, #0x14 + add r3, sp, #0x18 + bl MOD13_0221D344 + cmp r0, #0 + beq _0221D17C + mov r4, #0xff + ldr r5, _0221D1B0 ; =0x0000FF00 +_0221D124: + ldr r1, [sp, #0x14] + cmp r1, #1 + beq _0221D134 + cmp r1, #2 + beq _0221D146 + cmp r1, #5 + beq _0221D15A + b _0221D16C +_0221D134: + ldrh r0, [r0] + asr r1, r0, #8 + and r1, r4 + lsl r0, r0, #8 + and r0, r5 + orr r1, r0 + lsl r0, r1, #0x10 + lsr r7, r0, #0x10 + b _0221D16C +_0221D146: + ldrh r0, [r0] + asr r1, r0, #8 + and r1, r4 + lsl r0, r0, #8 + and r0, r5 + orr r1, r0 + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + b _0221D16C +_0221D15A: + ldrh r0, [r0] + asr r1, r0, #8 + and r1, r4 + lsl r0, r0, #8 + and r0, r5 + orr r1, r0 + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] +_0221D16C: + add r0, sp, #0x1c + add r1, r6, #0 + add r2, sp, #0x14 + add r3, sp, #0x18 + bl MOD13_0221D344 + cmp r0, #0 + bne _0221D124 +_0221D17C: + cmp r7, #1 + bne _0221D186 + ldr r0, [sp, #4] + cmp r0, #1 + beq _0221D190 +_0221D186: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221D190: + ldr r0, [sp, #8] + cmp r0, #1 + blt _0221D19E + mov r1, #1 + ldr r0, [sp] + str r1, [r0] + b _0221D1A4 +_0221D19E: + mov r1, #0 + ldr r0, [sp] + str r1, [r0] +_0221D1A4: + mov r0, #1 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221D1B0: .word 0x0000FF00 + + thumb_func_start MOD13_0221D1B4 +MOD13_0221D1B4: ; 0x0221D1B4 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + add r0, r4, #0 + add r0, #8 + bl MOD13_0221D1E0 + sub r0, r0, r4 + add r1, r0, #0 + sub r1, #8 + strh r1, [r4] + pop {r4} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221D1E0 +MOD13_0221D1E0: ; 0x0221D1E0 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r7, r2, #0 + add r4, r3, #0 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + strb r0, [r5, #3] + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + asr r2, r0, #8 + mov r3, #0xff + and r2, r3 + lsl r1, r0, #8 + ldr r0, _0221D244 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + strh r2, [r5] + add r2, r4, #0 + add r2, #0xb + mov r1, #7 + bic r2, r1 + sub r6, r2, #4 + lsl r1, r4, #0x10 + lsr r2, r1, #0x10 + asr r1, r2, #8 + and r1, r3 + lsl r2, r2, #8 + and r2, r0 + orr r1, r2 + strh r1, [r5, #2] + add r5, r5, #4 + add r0, r5, #0 + mov r1, #0 + add r2, r6, #0 + bl Call_FillMemWithValue + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl memcpy + add r0, r5, r6 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221D244: .word 0x0000FF00 + + thumb_func_start MOD13_0221D248 +MOD13_0221D248: ; 0x0221D248 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + str r1, [sp, #4] + add r1, r2, #0 + add r7, r3, #0 + add r5, r6, #0 + mov r4, #0 + strb r4, [r1] + strb r4, [r1, #1] + strb r4, [r1, #2] + strb r4, [r1, #3] + strb r4, [r1, #4] + strb r4, [r1, #5] + strb r4, [r1, #6] + strb r4, [r1, #7] + add r0, r7, #0 + sub r0, #8 + lsl r0, r0, #0x10 + lsr r3, r0, #0x10 + asr r2, r3, #8 + mov r0, #0xff + and r2, r0 + lsl r3, r3, #8 + ldr r0, _0221D308 ; =0x0000FF00 + and r3, r0 + orr r2, r3 + strh r2, [r1] + ldr r3, [sp, #0x20] + cmp r3, #0 + beq _0221D296 + mov r0, #0x10 + str r0, [sp] + add r0, r6, #6 + add r2, r7, #0 + bl MOD13_0221C40C + add r7, #8 + b _0221D29E +_0221D296: + add r0, r6, #6 + add r2, r7, #0 + bl memcpy +_0221D29E: + mov r0, #0 + strb r0, [r6] + strb r0, [r6, #1] + strb r0, [r6, #2] + strb r0, [r6, #3] + strb r0, [r6, #4] + strb r0, [r6, #5] + ldr r0, [sp, #4] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + asr r3, r0, #8 + mov r1, #0xff + and r3, r1 + lsl r0, r0, #8 + ldr r2, _0221D308 ; =0x0000FF00 + and r0, r2 + orr r3, r0 + strh r3, [r6] + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + asr r3, r0, #8 + and r3, r1 + lsl r0, r0, #8 + and r0, r2 + orr r3, r0 + strh r3, [r6, #2] + add r0, r5, #6 + add r5, r0, r7 + add r1, r6, #0 + cmp r6, r5 + bhs _0221D2E6 +_0221D2DC: + ldrb r0, [r1] + add r4, r4, r0 + add r1, r1, #1 + cmp r1, r5 + blo _0221D2DC +_0221D2E6: + lsl r0, r4, #0x10 + lsr r1, r0, #0x10 + asr r2, r1, #8 + mov r0, #0xff + and r2, r0 + lsl r1, r1, #8 + ldr r0, _0221D308 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + strh r2, [r5] + add r0, r5, #2 + sub r0, r0, r6 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221D308: .word 0x0000FF00 + + thumb_func_start MOD13_0221D30C +MOD13_0221D30C: ; 0x0221D30C + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + add r3, r2, #0 + add r2, r0, #0 + add r2, #8 + str r2, [sp] + ldrh r6, [r0] + add r0, sp, #0 + asr r1, r6, #8 + mov r5, #0xff + and r1, r5 + lsl r6, r6, #8 + ldr r5, _0221D340 ; =0x0000FF00 + and r6, r5 + orr r1, r6 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + add r1, r2, r1 + add r2, r4, #0 + bl MOD13_0221D344 + add sp, #8 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_0221D340: .word 0x0000FF00 + + thumb_func_start MOD13_0221D344 +MOD13_0221D344: ; 0x0221D344 + push {r4, r5, r6, r7} + add r5, r0, #0 + add r4, r2, #0 + add r2, r3, #0 + ldr r0, [r5] + cmp r0, r1 + blo _0221D358 + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr +_0221D358: + ldrh r1, [r0] + asr r7, r1, #8 + mov r3, #0xff + and r7, r3 + lsl r1, r1, #8 + ldr r6, _0221D394 ; =0x0000FF00 + and r1, r6 + orr r7, r1 + lsl r1, r7, #0x10 + lsr r1, r1, #0x10 + str r1, [r4] + ldrh r1, [r0, #2] + asr r4, r1, #8 + and r4, r3 + lsl r1, r1, #8 + and r1, r6 + orr r4, r1 + lsl r1, r4, #0x10 + lsr r1, r1, #0x10 + str r1, [r2] + add r0, r0, #4 + ldr r2, [r2] + add r2, #0xb + mov r1, #7 + bic r2, r1 + sub r1, r2, #4 + add r1, r0, r1 + str r1, [r5] + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_0221D394: .word 0x0000FF00 + + thumb_func_start MOD13_0221D398 +MOD13_0221D398: ; 0x0221D398 + push {r4, r5, r6, r7} + mov r3, #0 + ldrh r4, [r0] + asr r7, r4, #8 + mov r5, #0xff + and r7, r5 + lsl r4, r4, #8 + ldr r6, _0221D404 ; =0x0000FF00 + and r4, r6 + orr r7, r4 + lsl r4, r7, #0x10 + lsr r4, r4, #0x10 + str r4, [r1] + ldrh r1, [r0, #2] + asr r4, r1, #8 + and r4, r5 + lsl r1, r1, #8 + and r1, r6 + orr r4, r1 + lsl r1, r4, #0x10 + lsr r1, r1, #0x10 + str r1, [r2] + add r4, r0, #6 + ldr r1, [r2] + add r4, r4, r1 + add r2, r0, #0 + cmp r0, r4 + bhs _0221D3DA +_0221D3D0: + ldrb r1, [r2] + add r3, r3, r1 + add r2, r2, #1 + cmp r2, r4 + blo _0221D3D0 +_0221D3DA: + ldrh r2, [r4] + lsl r1, r3, #0x10 + lsr r4, r1, #0x10 + asr r3, r2, #8 + mov r1, #0xff + and r3, r1 + lsl r2, r2, #8 + ldr r1, _0221D404 ; =0x0000FF00 + and r2, r1 + orr r3, r2 + lsl r1, r3, #0x10 + lsr r1, r1, #0x10 + cmp r4, r1 + beq _0221D3FC + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr +_0221D3FC: + add r0, r0, #6 + pop {r4, r5, r6, r7} + bx lr + nop +_0221D404: .word 0x0000FF00 + + thumb_func_start MOD13_0221D408 +MOD13_0221D408: ; 0x0221D408 + add r1, r2, #0 + add r2, r3, #0 + ldr r3, _0221D410 ; =MOD13_0221D414 + bx r3 + .align 2, 0 +_0221D410: .word MOD13_0221D414 + + thumb_func_start MOD13_0221D414 +MOD13_0221D414: ; 0x0221D414 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + mov r0, #8 + add r1, sp, #4 + strb r0, [r1] + mov r0, #2 + strb r0, [r1, #1] + mov r0, #0 + mvn r0, r0 + str r0, [sp, #8] + ldr r0, _0221D454 ; =0x000001E6 + strh r0, [r1, #2] + bl FUN_02099C78 + add r1, sp, #0xc + bl FUN_0209A174 + str r4, [sp] + add r0, r5, #0 + add r1, sp, #4 + add r2, sp, #0xc + add r3, r6, #0 + bl MOD13_0221D458 + add sp, #0x10 + pop {r4, r5, r6} + pop {r3} + bx r3 + nop +_0221D454: .word 0x000001E6 + + thumb_func_start MOD13_0221D458 +MOD13_0221D458: ; 0x0221D458 + push {lr} + sub sp, #4 + str r1, [sp] + add r1, r3, #0 + ldr r2, [sp, #8] + mov r3, #0 + bl FUN_0209A7D0 + cmp r0, #0 + bge _0221D470 + mov r0, #3 + mvn r0, r0 +_0221D470: + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221D478 +MOD13_0221D478: ; 0x0221D478 + push {r4, r5, r6, r7, lr} + sub sp, #0x9c + mov r0, #0 + str r0, [sp, #0x18] + mvn r4, r0 + str r0, [sp, #0x48] + ldr r0, _0221D738 ; =0x02241B20 + ldr r0, [r0] + str r0, [sp, #0x10] + mov r1, #0x30 + mul r0, r1 + str r0, [sp, #0x10] + add r0, #0x34 + str r0, [sp, #0x10] + mov r0, #1 + ldr r1, [sp, #0x10] + bl MOD13_0221AA64 + str r0, [sp, #0x14] + cmp r0, #0 + bne _0221D4A4 + b _0221D718 +_0221D4A4: + mov r0, #1 + ldr r1, [sp, #0x10] + bl MOD13_0221AA64 + str r0, [sp, #0x18] + cmp r0, #0 + bne _0221D4B4 + b _0221D718 +_0221D4B4: + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #0x44] + str r0, [sp, #0x3c] + str r0, [sp, #0x38] + add r6, sp, #0x6c + str r0, [sp, #0x34] + lsl r7, r0, #0 + str r0, [sp, #0x28] + str r0, [sp, #0x2c] + str r0, [sp, #0x30] + str r0, [sp, #0x40] + b _0221D6E0 +_0221D4CE: + bl MOD13_0221AA90 + ldr r1, _0221D73C ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + blo _0221D4DC + b _0221D6F0 +_0221D4DC: + ldr r0, [sp, #0x28] + lsl r1, r0, #0 + lsl r2, r0, #0 + ldr r3, _0221D740 ; =0x0030BFFE + bl MOD13_0221DF9C + cmp r0, #0 + bne _0221D4F2 + mov r0, #1 + mvn r4, r0 + b _0221D718 +_0221D4F2: + add r0, r6, #0 + bl OS_CreateAlarm + mov r0, #0x13 + str r0, [sp] + add r0, r6, #0 + ldr r1, _0221D744 ; =0x000FFB10 + ldr r2, [sp, #0x2c] + ldr r3, _0221D748 ; =MOD13_0221DC1C + bl OS_SetAlarm + mov r5, #1 + ldr r4, [sp, #0x30] +_0221D50C: + mov r0, #0xa + bl OS_Sleep + bl MOD13_0221AA90 + ldr r1, _0221D73C ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + bhs _0221D5A8 + ldr r0, _0221D74C ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + bne _0221D5A8 + bl MOD13_0221DC64 + cmp r0, #0 + beq _0221D5A4 +_0221D52E: + cmp r0, #0x13 + bhi _0221D59A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221D540: ; jump table + .short _0221D59A - _0221D540 + 1 ; case 0 + .short _0221D59A - _0221D540 + 1 ; case 1 + .short _0221D59A - _0221D540 + 1 ; case 2 + .short _0221D59A - _0221D540 + 1 ; case 3 + .short _0221D59C - _0221D540 + 1 ; case 4 + .short _0221D56C - _0221D540 + 1 ; case 5 + .short _0221D59A - _0221D540 + 1 ; case 6 + .short _0221D59A - _0221D540 + 1 ; case 7 + .short _0221D59C - _0221D540 + 1 ; case 8 + .short _0221D59A - _0221D540 + 1 ; case 9 + .short _0221D596 - _0221D540 + 1 ; case 10 + .short _0221D59A - _0221D540 + 1 ; case 11 + .short _0221D59A - _0221D540 + 1 ; case 12 + .short _0221D59A - _0221D540 + 1 ; case 13 + .short _0221D59A - _0221D540 + 1 ; case 14 + .short _0221D59A - _0221D540 + 1 ; case 15 + .short _0221D59A - _0221D540 + 1 ; case 16 + .short _0221D59A - _0221D540 + 1 ; case 17 + .short _0221D59C - _0221D540 + 1 ; case 18 + .short _0221D568 - _0221D540 + 1 ; case 19 +_0221D568: + add r5, r7, #0 + b _0221D59C +_0221D56C: + ldr r0, _0221D750 ; =0x02241B0C + ldr r0, [r0] + ldr r1, _0221D738 ; =0x02241B20 + ldr r1, [r1] + bl MOD13_0221E0A8 + cmp r0, r4 + ble _0221D59C + add r4, r0, #0 + add r0, r6, #0 + bl OS_CancelAlarm + mov r0, #0x13 + str r0, [sp] + add r0, r6, #0 + ldr r1, _0221D744 ; =0x000FFB10 + ldr r2, [sp, #0x34] + ldr r3, _0221D748 ; =MOD13_0221DC1C + bl OS_SetAlarm + b _0221D59C +_0221D596: + ldr r5, [sp, #0x38] + b _0221D59C +_0221D59A: + ldr r5, [sp, #0x3c] +_0221D59C: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221D52E +_0221D5A4: + cmp r5, #0 + bne _0221D50C +_0221D5A8: + add r0, r6, #0 + bl OS_CancelAlarm +_0221D5AE: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221D5AE + ldr r0, _0221D74C ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + beq _0221D5C0 + b _0221D6F0 +_0221D5C0: + ldr r0, [sp, #0x40] + str r0, [sp, #0xc] + ldr r0, _0221D738 ; =0x02241B20 + ldr r0, [r0] + cmp r4, r0 + blt _0221D5D2 + mov r0, #5 + mvn r4, r0 + b _0221D718 +_0221D5D2: + ldr r0, [sp, #0x40] + str r0, [sp, #8] + ldr r0, _0221D750 ; =0x02241B0C + ldr r0, [r0] + str r0, [sp, #0x1c] + cmp r4, #0 + ble _0221D66A + ldr r0, [sp, #0x14] + str r0, [sp, #0x20] + add r0, #8 + str r0, [sp, #0x20] + ldr r0, [sp, #0x14] + str r0, [sp, #0x24] + lsl r5, r0, #0 + add r5, #0x2c +_0221D5F0: + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x1c] + add r1, #0xc + mov r2, #0x20 + bl memcpy + ldr r0, [sp, #0x1c] + ldrh r1, [r0, #0xa] + ldr r0, [sp, #0x24] + str r1, [r0, #4] + ldr r0, [sp, #0x1c] + ldrh r1, [r0, #0xa] + ldr r0, [sp, #0x24] + add r1, r0, r1 + ldr r0, [sp, #0x44] + strb r0, [r1, #8] + ldr r0, [sp, #0x1c] + ldrh r1, [r0, #0x2c] + mov r0, #0x10 + and r1, r0 + cmp r1, #0 + beq _0221D620 + mov r1, #1 + b _0221D622 +_0221D620: + ldr r1, [sp, #0x44] +_0221D622: + ldr r0, [sp, #0x24] + strh r1, [r0, #0x32] + ldr r0, [sp, #0x1c] + add r0, r0, #4 + ldr r1, [sp, #0x1c] + ldrb r1, [r1, #4] + strb r1, [r5] + ldrb r1, [r0, #1] + strb r1, [r5, #1] + ldrb r1, [r0, #2] + strb r1, [r5, #2] + ldrb r1, [r0, #3] + strb r1, [r5, #3] + ldrb r1, [r0, #4] + strb r1, [r5, #4] + ldrb r0, [r0, #5] + strb r0, [r5, #5] + ldr r0, [sp, #0x20] + add r0, #0x30 + str r0, [sp, #0x20] + ldr r0, [sp, #0x24] + add r0, #0x30 + str r0, [sp, #0x24] + add r5, #0x30 + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + ldr r0, [sp, #0x1c] + add r0, #0xc0 + str r0, [sp, #0x1c] + ldr r0, [sp, #8] + cmp r0, r4 + blt _0221D5F0 +_0221D66A: + ldr r0, [sp, #0x14] + str r4, [r0] + ldr r0, _0221D754 ; =0x02241AE8 + ldr r0, [r0] + cmp r0, #1 + beq _0221D6C6 + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + add r2, sp, #0x48 + bl MOD13_0221D764 + cmp r0, #0 + beq _0221D6C6 + ldr r3, [sp, #0x48] + ldr r0, [sp, #0x14] + add r2, r0, #4 + mov r0, #0x30 + add r1, r3, #0 + mul r1, r0 + add r4, r2, r1 + ldr r0, _0221D758 ; =0x02241AC8 + str r3, [r0] + ldr r0, _0221D75C ; =0x02241BC4 + add r1, r4, #4 + bl strcpy + ldr r1, _0221D760 ; =0x02241B3C + add r0, r4, #0 + add r0, #0x28 + add r4, #0x28 + ldrb r2, [r4] + strb r2, [r1] + ldrb r2, [r0, #1] + strb r2, [r1, #1] + ldrb r2, [r0, #2] + strb r2, [r1, #2] + ldrb r2, [r0, #3] + strb r2, [r1, #3] + ldrb r2, [r0, #4] + strb r2, [r1, #4] + ldrb r0, [r0, #5] + strb r0, [r1, #5] + add r0, sp, #0x4c + bl MOD13_0221A9D8 + b _0221D6F0 +_0221D6C6: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + bl memcpy + mov r1, #2 + ldr r0, _0221D754 ; =0x02241AE8 + str r1, [r0] + bl MOD13_0221A778 + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0221D6E0: + ldr r0, [sp, #4] + cmp r0, #0x1e + bge _0221D6F0 + ldr r0, _0221D74C ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + bne _0221D6F0 + b _0221D4CE +_0221D6F0: + ldr r0, [sp, #4] + cmp r0, #0x1e + bge _0221D702 + bl MOD13_0221AA90 + ldr r1, _0221D73C ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + bls _0221D708 +_0221D702: + mov r0, #2 + mvn r4, r0 + b _0221D718 +_0221D708: + ldr r0, _0221D74C ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + beq _0221D716 + mov r0, #7 + mvn r4, r0 + b _0221D718 +_0221D716: + mov r4, #1 +_0221D718: + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _0221D722 + bl MOD13_0221AA50 +_0221D722: + ldr r0, [sp, #0x18] + cmp r0, #0 + beq _0221D72C + bl MOD13_0221AA50 +_0221D72C: + add r0, r4, #0 + add sp, #0x9c + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221D738: .word 0x02241B20 +_0221D73C: .word 0x0223F870 +_0221D740: .word 0x0030BFFE +_0221D744: .word 0x000FFB10 +_0221D748: .word MOD13_0221DC1C +_0221D74C: .word 0x02241AC0 +_0221D750: .word 0x02241B0C +_0221D754: .word 0x02241AE8 +_0221D758: .word 0x02241AC8 +_0221D75C: .word 0x02241BC4 +_0221D760: .word 0x02241B3C + + thumb_func_start MOD13_0221D764 +MOD13_0221D764: ; 0x0221D764 + push {r4, r5, r6, r7, lr} + sub sp, #0x74 + str r0, [sp] + str r1, [sp, #4] + str r2, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp] + add r5, r0, #4 + lsl r0, r1, #0 + add r4, r0, #4 + ldr r0, [sp, #0xc] + str r0, [sp, #0x20] + ldr r0, [sp] + ldr r0, [r0] + cmp r0, #0 + bls _0221D832 + ldr r0, [sp, #0xc] + str r0, [sp, #0x28] + str r0, [sp, #0x24] +_0221D78E: + add r2, sp, #0x30 + mov r1, #0x22 +_0221D792: + ldr r0, [sp, #0x24] + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221D792 + add r0, sp, #0x30 + add r1, r5, #4 + mov r2, #0x20 + bl memcpy + ldr r2, [r5] + ldr r1, [sp, #0x28] + add r0, sp, #0x30 + strb r1, [r0, r2] + lsl r7, r1, #0 + ldr r0, [sp, #4] + ldr r0, [r0] + str r0, [sp, #0x1c] + cmp r0, #0 + bls _0221D816 + ldr r6, [r5] +_0221D7BE: + cmp r6, #0 + beq _0221D816 + cmp r6, #0x20 + bhi _0221D816 + cmp r6, #1 + bne _0221D7D4 + ldrb r0, [r5, #4] + cmp r0, #0 + beq _0221D816 + cmp r0, #0x20 + beq _0221D816 +_0221D7D4: + add r0, sp, #0x30 + bl strlen + add r2, r0, #0 + add r0, sp, #0x30 + add r1, r4, #4 + bl memcmp + cmp r0, #0 + bne _0221D80C + add r0, r5, #0 + add r0, #0x28 + add r1, r4, #0 + add r1, #0x28 + mov r2, #4 + bl memcmp + cmp r0, #0 + bne _0221D80C + ldrh r1, [r5, #0x2e] + ldrh r0, [r4, #0x2e] + cmp r1, r0 + beq _0221D80C + cmp r1, #0 + bne _0221D80C + mov r0, #1 + str r0, [sp, #0xc] + b _0221D816 +_0221D80C: + add r4, #0x30 + add r7, r7, #1 + ldr r0, [sp, #0x1c] + cmp r7, r0 + blo _0221D7BE +_0221D816: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0221D832 + add r5, #0x30 + ldr r0, [sp, #4] + add r4, r0, #4 + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + ldr r0, [sp] + ldr r1, [r0] + ldr r0, [sp, #0x20] + cmp r0, r1 + blo _0221D78E +_0221D832: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0221D91A + add r2, sp, #0x50 + add r2, #2 + mov r1, #0x22 + mov r0, #0 +_0221D840: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221D840 + mov r0, #0 + str r0, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [sp] + add r5, r0, #4 + ldr r0, [sp, #4] + add r4, r0, #4 + ldr r6, [sp, #0x14] + ldr r0, [r0] + cmp r0, #0 + bls _0221D8A0 + add r7, sp, #0x50 + add r7, #2 +_0221D864: + add r0, r7, #0 + add r1, r4, #4 + mov r2, #0x20 + bl memcpy + ldr r1, [r4] + ldr r0, [sp, #0x14] + strb r0, [r7, r1] + ldr r0, _0221D934 ; =0x0223F878 + bl strlen + add r2, r0, #0 + add r0, r7, #0 + ldr r1, _0221D934 ; =0x0223F878 + bl memcmp + cmp r0, #0 + bne _0221D894 + ldrh r0, [r4, #0x2e] + cmp r0, #0 + bne _0221D894 + mov r0, #1 + str r0, [sp, #0x18] + b _0221D8A0 +_0221D894: + add r4, #0x30 + add r6, r6, #1 + ldr r0, [sp, #4] + ldr r0, [r0] + cmp r6, r0 + blo _0221D864 +_0221D8A0: + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp] + ldr r0, [r0] + cmp r0, #0 + bls _0221D90A + ldr r7, _0221D934 ; =0x0223F878 + add r4, sp, #0x50 + add r4, #2 + ldr r0, [sp, #0x20] + str r0, [sp, #0x2c] +_0221D8B6: + add r0, r4, #0 + add r1, r5, #4 + mov r2, #0x20 + bl memcpy + ldr r1, [r5] + ldr r0, [sp, #0x2c] + strb r0, [r4, r1] + add r0, r4, #0 + bl strlen + add r6, r0, #0 + add r0, r7, #0 + bl strlen + cmp r6, r0 + bne _0221D8F8 + add r0, r7, #0 + bl strlen + add r2, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + bl memcmp + cmp r0, #0 + bne _0221D8F8 + ldrh r0, [r5, #0x2e] + cmp r0, #0 + bne _0221D8F8 + mov r0, #1 + str r0, [sp, #0x14] + b _0221D90A +_0221D8F8: + add r5, #0x30 + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + ldr r0, [sp] + ldr r1, [r0] + ldr r0, [sp, #0x20] + cmp r0, r1 + blo _0221D8B6 +_0221D90A: + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _0221D91A + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _0221D91A + mov r0, #1 + str r0, [sp, #0xc] +_0221D91A: + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _0221D92A + ldr r1, [sp, #0x20] + ldr r0, [sp, #8] + str r1, [r0] + mov r0, #1 + str r0, [sp, #0x10] +_0221D92A: + ldr r0, [sp, #0x10] + add sp, #0x74 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221D934: .word 0x0223F878 + + thumb_func_start MOD13_0221D938 +MOD13_0221D938: ; 0x0221D938 + push {r4, r5, r6, lr} + mov r5, #1 + ldr r0, _0221D998 ; =0x02241AD0 + ldr r0, [r0] + cmp r0, #0 + beq _0221D982 + bl MOD13_0221DF5C + cmp r0, #0 + beq _0221D97C + mov r4, #0 + mov r6, #0xa +_0221D950: + add r0, r6, #0 + bl OS_Sleep + bl MOD13_0221DC64 + cmp r0, #0 + beq _0221D978 +_0221D95E: + cmp r0, #4 + beq _0221D970 + cmp r0, #5 + beq _0221D970 + cmp r0, #0xe + bne _0221D96E + add r5, r4, #0 + b _0221D970 +_0221D96E: + add r5, r4, #0 +_0221D970: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221D95E +_0221D978: + cmp r5, #0 + bne _0221D950 +_0221D97C: + mov r1, #0 + ldr r0, _0221D998 ; =0x02241AD0 + str r1, [r0] +_0221D982: + ldr r0, _0221D99C ; =0x02241AD4 + ldr r1, [r0] + cmp r1, #0 + beq _0221D992 + mov r1, #0 + str r1, [r0] + bl THUNK_FUN_02099BC8 +_0221D992: + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_0221D998: .word 0x02241AD0 +_0221D99C: .word 0x02241AD4 + + thumb_func_start MOD13_0221D9A0 +MOD13_0221D9A0: ; 0x0221D9A0 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + mov r5, #1 + mvn r6, r5 + ldr r0, _0221DACC ; =0x02241B0C + ldr r2, [r0] + ldr r0, _0221DAD0 ; =0x02241AC8 + ldr r1, [r0] + mov r0, #0xc0 + mul r1, r0 + add r7, r2, r1 + cmp r7, #0 + bne _0221D9C4 + mov r0, #0 + add sp, #0x34 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221D9C4: + add r0, r7, #0 + mov r1, #0 + ldr r2, _0221DAD4 ; =0x00030000 + bl MOD13_0221DE44 + cmp r0, #0 + bne _0221D9DE + lsl r0, r5, #0 + mvn r0, r0 + add sp, #0x34 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221D9DE: + add r0, sp, #8 + bl OS_CreateAlarm + mov r0, #0x12 + str r0, [sp] + add r0, sp, #8 + ldr r1, _0221DAD8 ; =0x003FEC42 + mov r2, #0 + ldr r3, _0221DADC ; =MOD13_0221DC1C + bl OS_SetAlarm + mov r4, #0 + mov r0, #7 + mvn r0, r0 + str r0, [sp, #4] +_0221D9FC: + bl MOD13_0221AA90 + ldr r1, _0221DAE0 ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + blo _0221DA0E + mov r0, #2 + mvn r6, r0 + b _0221DA94 +_0221DA0E: + ldr r0, _0221DAE4 ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + beq _0221DA1C + mov r0, #7 + mvn r6, r0 + b _0221DA94 +_0221DA1C: + mov r0, #0xa + bl OS_Sleep + bl MOD13_0221DC64 + cmp r0, #0 + beq _0221DA90 +_0221DA2A: + cmp r0, #0xc + bgt _0221DA44 + cmp r0, #0xc + bge _0221DA5A + cmp r0, #5 + bgt _0221DA86 + cmp r0, #4 + blt _0221DA86 + cmp r0, #4 + beq _0221DA88 + cmp r0, #5 + beq _0221DA88 + b _0221DA86 +_0221DA44: + cmp r0, #0x13 + bgt _0221DA86 + cmp r0, #0xd + blt _0221DA86 + cmp r0, #0xd + beq _0221DA60 + cmp r0, #0x12 + beq _0221DA88 + cmp r0, #0x13 + beq _0221DA88 + b _0221DA86 +_0221DA5A: + add r5, r4, #0 + mov r6, #1 + b _0221DA88 +_0221DA60: + ldr r0, _0221DAE4 ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + beq _0221DA6E + add r5, r4, #0 + ldr r6, [sp, #4] + b _0221DA88 +_0221DA6E: + add r0, r7, #0 + add r1, r4, #0 + ldr r2, _0221DAD4 ; =0x00030000 + bl MOD13_0221DE44 + cmp r0, #0 + bne _0221DA88 + add r0, r6, #0 + add sp, #0x34 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DA86: + add r5, r4, #0 +_0221DA88: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221DA2A +_0221DA90: + cmp r5, #0 + bne _0221D9FC +_0221DA94: + add r0, sp, #8 + bl OS_CancelAlarm +_0221DA9A: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221DA9A + cmp r6, #0 + ble _0221DAC2 + mov r1, #1 + ldr r0, _0221DAE8 ; =0x02241AD0 + str r1, [r0] + ldr r0, _0221DAEC ; =0x0223F8D4 + bl FUN_0209A2C0 + cmp r0, #0 + bge _0221DABC + mov r0, #1 + mvn r6, r0 + b _0221DAC2 +_0221DABC: + mov r1, #1 + ldr r0, _0221DAF0 ; =0x02241AD4 + str r1, [r0] +_0221DAC2: + add r0, r6, #0 + add sp, #0x34 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221DACC: .word 0x02241B0C +_0221DAD0: .word 0x02241AC8 +_0221DAD4: .word 0x00030000 +_0221DAD8: .word 0x003FEC42 +_0221DADC: .word MOD13_0221DC1C +_0221DAE0: .word 0x0223F870 +_0221DAE4: .word 0x02241AC0 +_0221DAE8: .word 0x02241AD0 +_0221DAEC: .word 0x0223F8D4 +_0221DAF0: .word 0x02241AD4 + + thumb_func_start MOD13_0221DAF4 +MOD13_0221DAF4: ; 0x0221DAF4 + push {r4, r5, r6, lr} + mov r5, #1 + bl MOD13_0221DEF4 + cmp r0, #0 + beq _0221DB30 + mov r4, #0 + mov r6, #0xa +_0221DB04: + add r0, r6, #0 + bl OS_Sleep + bl MOD13_0221DC64 + cmp r0, #0 + beq _0221DB2C +_0221DB12: + cmp r0, #4 + beq _0221DB24 + cmp r0, #5 + beq _0221DB24 + cmp r0, #0x14 + bne _0221DB22 + add r5, r4, #0 + b _0221DB24 +_0221DB22: + add r5, r4, #0 +_0221DB24: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221DB12 +_0221DB2C: + cmp r5, #0 + bne _0221DB04 +_0221DB30: + ldr r0, _0221DB4C ; =0x02241B04 + ldr r0, [r0] + cmp r0, #0 + beq _0221DB44 + ldr r1, _0221DB50 ; =0x02241ABC + ldr r1, [r1] + blx r1 + mov r1, #0 + ldr r0, _0221DB4C ; =0x02241B04 + str r1, [r0] +_0221DB44: + mov r0, #1 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_0221DB4C: .word 0x02241B04 +_0221DB50: .word 0x02241ABC + + thumb_func_start MOD13_0221DB54 +MOD13_0221DB54: ; 0x0221DB54 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + mov r5, #1 + ldr r0, _0221DBFC ; =0x02241B20 + str r6, [r0] + bl MOD13_0221DCA4 + mov r0, #0xd0 + add r7, r6, #0 + mul r7, r0 + ldr r0, _0221DC00 ; =0x000024D0 + add r1, r7, r0 + mov r0, #0xc0 + mul r6, r0 + add r0, r1, r6 + ldr r1, _0221DC04 ; =0x02241AB4 + ldr r1, [r1] + blx r1 + ldr r1, _0221DC08 ; =0x02241B04 + str r0, [r1] + cmp r0, #0 + bne _0221DB8E + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DB8E: + mov r3, #0x1f + add r1, r0, r3 + bic r1, r3 + ldr r0, _0221DC0C ; =0x02241AF0 + str r1, [r0] + ldr r0, _0221DC10 ; =0x00002490 + add r2, r7, r0 + add r0, r1, r2 + add r6, r0, r3 + bic r6, r3 + ldr r0, _0221DC14 ; =0x02241B0C + str r6, [r0] + ldr r0, _0221DC18 ; =MOD13_0221DC28 + bl MOD13_0221DD4C + cmp r0, #0 + bne _0221DBBC + lsl r0, r5, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DBBC: + mov r0, #0xa + bl OS_Sleep + bl MOD13_0221DC64 + cmp r0, #0 + beq _0221DBEE + mov r7, #0 + mov r1, #1 + mvn r6, r1 +_0221DBD0: + cmp r0, #4 + beq _0221DBE6 + cmp r0, #5 + beq _0221DBE6 + cmp r0, #6 + bne _0221DBE2 + add r5, r7, #0 + mov r4, #1 + b _0221DBE6 +_0221DBE2: + add r5, r7, #0 + add r4, r6, #0 +_0221DBE6: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221DBD0 +_0221DBEE: + cmp r5, #0 + bne _0221DBBC + add r0, r4, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221DBFC: .word 0x02241B20 +_0221DC00: .word 0x000024D0 +_0221DC04: .word 0x02241AB4 +_0221DC08: .word 0x02241B04 +_0221DC0C: .word 0x02241AF0 +_0221DC10: .word 0x00002490 +_0221DC14: .word 0x02241B0C +_0221DC18: .word MOD13_0221DC28 + + thumb_func_start MOD13_0221DC1C +MOD13_0221DC1C: ; 0x0221DC1C + mov r1, #0 + ldr r3, _0221DC24 ; =MOD13_0221DC28 + bx r3 + nop +_0221DC24: .word MOD13_0221DC28 + + thumb_func_start MOD13_0221DC28 +MOD13_0221DC28: ; 0x0221DC28 + push {r4} + sub sp, #4 + ldr r1, _0221DC58 ; =0x02241B1C + ldr r2, [r1] + ldr r1, _0221DC5C ; =0x02241B18 + ldr r3, [r1] + add r4, r3, #1 + cmp r4, r2 + beq _0221DC50 + add r2, r2, #3 + cmp r3, r2 + beq _0221DC50 + lsl r3, r3, #2 + ldr r2, _0221DC60 ; =0x02241B4C + str r0, [r2, r3] + str r4, [r1] + cmp r4, #4 + blt _0221DC50 + mov r0, #0 + str r0, [r1] +_0221DC50: + add sp, #4 + pop {r4} + bx lr + nop +_0221DC58: .word 0x02241B1C +_0221DC5C: .word 0x02241B18 +_0221DC60: .word 0x02241B4C + + thumb_func_start MOD13_0221DC64 +MOD13_0221DC64: ; 0x0221DC64 + push {r4, lr} + bl OS_DisableInterrupts + ldr r3, _0221DC98 ; =0x02241B1C + ldr r1, [r3] + ldr r2, _0221DC9C ; =0x02241B18 + ldr r2, [r2] + cmp r2, r1 + bne _0221DC7A + mov r4, #0 + b _0221DC8C +_0221DC7A: + lsl r4, r1, #2 + ldr r2, _0221DCA0 ; =0x02241B4C + ldr r4, [r2, r4] + add r1, r1, #1 + str r1, [r3] + cmp r1, #4 + blt _0221DC8C + mov r1, #0 + str r1, [r3] +_0221DC8C: + bl OS_RestoreInterrupts + add r0, r4, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221DC98: .word 0x02241B1C +_0221DC9C: .word 0x02241B18 +_0221DCA0: .word 0x02241B4C + + thumb_func_start MOD13_0221DCA4 +MOD13_0221DCA4: ; 0x0221DCA4 + push {lr} + sub sp, #4 + bl OS_DisableInterrupts + mov r3, #0 + ldr r1, _0221DCCC ; =0x02241B18 + str r3, [r1] + ldr r1, _0221DCD0 ; =0x02241B1C + str r3, [r1] + ldr r2, _0221DCD4 ; =0x02241B4C + add r1, r3, #0 +_0221DCBA: + stmia r2!, {r1} + add r3, r3, #1 + cmp r3, #4 + blt _0221DCBA + bl OS_RestoreInterrupts + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221DCCC: .word 0x02241B18 +_0221DCD0: .word 0x02241B1C +_0221DCD4: .word 0x02241B4C + + thumb_func_start MOD13_0221DCD8 +MOD13_0221DCD8: ; 0x0221DCD8 + push {r4, lr} + add r4, r1, #0 + cmp r4, #0 + beq _0221DCF8 + cmp r2, #0 + ble _0221DCF8 + ldr r0, _0221DD00 ; =0x02241B6C + bl OS_LockMutex + add r0, r4, #0 + ldr r1, _0221DD04 ; =0x02241ABC + ldr r1, [r1] + blx r1 + ldr r0, _0221DD00 ; =0x02241B6C + bl OS_UnlockMutex +_0221DCF8: + pop {r4} + pop {r3} + bx r3 + nop +_0221DD00: .word 0x02241B6C +_0221DD04: .word 0x02241ABC + + thumb_func_start MOD13_0221DD08 +MOD13_0221DD08: ; 0x0221DD08 + push {r4, lr} + add r4, r1, #0 + cmp r4, #0 + ble _0221DD2E + ldr r0, _0221DD38 ; =0x02241B6C + bl OS_LockMutex + add r0, r4, #0 + ldr r1, _0221DD3C ; =0x02241AB4 + ldr r1, [r1] + blx r1 + add r4, r0, #0 + ldr r0, _0221DD38 ; =0x02241B6C + bl OS_UnlockMutex + add r0, r4, #0 + pop {r4} + pop {r3} + bx r3 +_0221DD2E: + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + nop +_0221DD38: .word 0x02241B6C +_0221DD3C: .word 0x02241AB4 + + thumb_func_start MOD13_0221DD40 +MOD13_0221DD40: ; 0x0221DD40 + ldr r0, _0221DD48 ; =0x02241ADC + ldr r0, [r0] + bx lr + nop +_0221DD48: .word 0x02241ADC + + thumb_func_start MOD13_0221DD4C +MOD13_0221DD4C: ; 0x0221DD4C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221DE20 ; =0x02241AD8 + str r5, [r0] + add r2, r5, #0 + add r2, #0x63 + mov r0, #3 + bic r2, r0 + ldr r0, _0221DE24 ; =0x02241AB8 + str r2, [r0] + add r1, r2, #0 + add r1, #0x2f + mov r3, #0x1f + bic r1, r3 + ldr r3, _0221DE28 ; =0x02241AEC + str r1, [r3] + ldr r3, _0221DE2C ; =0x0000231F + add r1, r1, r3 + mov r3, #0x1f + bic r1, r3 + ldr r3, _0221DE30 ; =0x02241AFC + str r1, [r3] + add r1, #0xdf + mov r3, #0x1f + bic r1, r3 + str r1, [r2, #4] + ldr r1, [r0] + add r3, r5, r7 + ldr r2, [r1, #4] + sub r2, r3, r2 + str r2, [r1, #8] + mov r2, #0 + ldr r1, [r0] + str r2, [r1, #0xc] + ldr r1, [r0] + mov r0, #3 + str r0, [r1] + ldr r0, _0221DE34 ; =0x02241B30 + str r6, [r0] + ldr r0, _0221DE38 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #0 + bne _0221DDD2 + ldr r0, _0221DE28 ; =0x02241AEC + ldr r0, [r0] + ldr r1, _0221DE3C ; =0x00002300 + bl FUN_020A7E80 + cmp r0, #0 + beq _0221DDCC + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DDCC: + mov r1, #1 + ldr r0, _0221DE38 ; =0x02241ADC + str r1, [r0] +_0221DDD2: + ldr r0, _0221DE38 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #1 + bne _0221DE0E + ldr r0, _0221DE24 ; =0x02241AB8 + ldr r0, [r0] + ldr r1, _0221DE40 ; =MOD13_0221E178 + bl FUN_020A7BD4 + cmp r0, #3 + beq _0221DDF8 + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DDF8: + mov r1, #4 + ldr r0, _0221DE38 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DE0E: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221DE20: .word 0x02241AD8 +_0221DE24: .word 0x02241AB8 +_0221DE28: .word 0x02241AEC +_0221DE2C: .word 0x0000231F +_0221DE30: .word 0x02241AFC +_0221DE34: .word 0x02241B30 +_0221DE38: .word 0x02241ADC +_0221DE3C: .word 0x00002300 +_0221DE40: .word MOD13_0221E178 + + thumb_func_start MOD13_0221DE44 +MOD13_0221DE44: ; 0x0221DE44 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r7, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221DEE4 ; =0x02241B08 + str r6, [r0] + cmp r5, #0 + beq _0221DE6A + add r0, r5, #0 + ldr r1, _0221DEE8 ; =0x02241AD8 + ldr r1, [r1] + mov r2, #0x60 + bl MI_CpuCopy8 + b _0221DE76 +_0221DE6A: + ldr r0, _0221DEE8 ; =0x02241AD8 + ldr r0, [r0] + mov r1, #0 + mov r2, #0x60 + bl MI_CpuFill8 +_0221DE76: + add r0, r7, #0 + ldr r1, _0221DEEC ; =0x02241AFC + ldr r1, [r1] + mov r2, #0xc0 + bl MIi_CpuCopy32 + bl MOD13_0221E0F4 + cmp r0, #1 + bne _0221DEA0 + mov r1, #8 + ldr r0, _0221DEF0 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DEA0: + ldr r0, _0221DEF0 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #3 + bne _0221DED2 + ldr r0, _0221DEEC ; =0x02241AFC + ldr r0, [r0] + ldr r1, _0221DEE8 ; =0x02241AD8 + ldr r1, [r1] + ldr r2, _0221DEE4 ; =0x02241B08 + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221DED2 + mov r1, #8 + ldr r0, _0221DEF0 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DED2: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221DEE4: .word 0x02241B08 +_0221DEE8: .word 0x02241AD8 +_0221DEEC: .word 0x02241AFC +_0221DEF0: .word 0x02241ADC + + thumb_func_start MOD13_0221DEF4 +MOD13_0221DEF4: ; 0x0221DEF4 + push {r4, lr} + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221DF58 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #3 + bne _0221DF2E + bl FUN_020A7AC8 + cmp r0, #3 + beq _0221DF1A + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 +_0221DF1A: + mov r1, #2 + ldr r0, _0221DF58 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221DF2E: + bl MOD13_0221E0F4 + cmp r0, #1 + bne _0221DF4A + mov r1, #2 + ldr r0, _0221DF58 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221DF4A: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221DF58: .word 0x02241ADC + + thumb_func_start MOD13_0221DF5C +MOD13_0221DF5C: ; 0x0221DF5C + push {r4, lr} + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221DF98 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #7 + bne _0221DF88 + bl FUN_020A7488 + cmp r0, #3 + bne _0221DF88 + mov r1, #4 + ldr r0, _0221DF98 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221DF88: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + nop +_0221DF98: .word 0x02241ADC + + thumb_func_start MOD13_0221DF9C +MOD13_0221DF9C: ; 0x0221DF9C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + str r3, [sp] + bl OS_DisableInterrupts + add r7, r0, #0 + ldr r1, _0221E088 ; =0x02241B10 + ldr r0, [sp] + str r0, [r1] + ldr r0, _0221E08C ; =0x02241B44 + ldr r1, _0221E090 ; =0x02241AF4 + str r0, [r1] + cmp r5, #0 + beq _0221DFD0 + mov r2, #0 +_0221DFC0: + ldrb r1, [r5] + add r5, r5, #1 + strb r1, [r0] + add r0, r0, #1 + add r2, r2, #1 + cmp r2, #6 + blt _0221DFC0 + b _0221DFDE +_0221DFD0: + mov r1, #0xff + mov r2, #6 + bl MI_CpuFill8 + ldr r1, _0221E094 ; =0x020FF590 + ldr r0, _0221E090 ; =0x02241AF4 + str r1, [r0] +_0221DFDE: + ldr r2, _0221E098 ; =0x02241BA4 + ldr r0, _0221E09C ; =0x02241AF8 + str r2, [r0] + cmp r4, #0 + beq _0221E01A + cmp r6, #0 + ble _0221E01A + cmp r6, #0x20 + bge _0221E01A + mov r1, #0 + cmp r6, #0 + ble _0221E004 +_0221DFF6: + ldrb r0, [r4] + add r4, r4, #1 + strb r0, [r2] + add r2, r2, #1 + add r1, r1, #1 + cmp r1, r6 + blt _0221DFF6 +_0221E004: + cmp r1, #0x20 + bge _0221E02A + ldr r0, _0221E098 ; =0x02241BA4 + add r2, r0, r1 + mov r0, #0 +_0221E00E: + strb r0, [r2] + add r2, r2, #1 + add r1, r1, #1 + cmp r1, #0x20 + blt _0221E00E + b _0221E02A +_0221E01A: + ldr r0, _0221E098 ; =0x02241BA4 + mov r1, #0xff + mov r2, #0x20 + bl MI_CpuFill8 + ldr r1, _0221E0A0 ; =0x020FF598 + ldr r0, _0221E09C ; =0x02241AF8 + str r1, [r0] +_0221E02A: + ldr r0, _0221E0A4 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #3 + bne _0221E05A + ldr r0, _0221E08C ; =0x02241B44 + ldr r1, _0221E09C ; =0x02241AF8 + ldr r1, [r1] + ldr r2, _0221E088 ; =0x02241B10 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221E078 + mov r1, #6 + ldr r0, _0221E0A4 ; =0x02241ADC + str r1, [r0] + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221E05A: + bl MOD13_0221E0F4 + cmp r0, #1 + bne _0221E078 + mov r1, #6 + ldr r0, _0221E0A4 ; =0x02241ADC + str r1, [r0] + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221E078: + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221E088: .word 0x02241B10 +_0221E08C: .word 0x02241B44 +_0221E090: .word 0x02241AF4 +_0221E094: .word 0x020FF590 +_0221E098: .word 0x02241BA4 +_0221E09C: .word 0x02241AF8 +_0221E0A0: .word 0x020FF598 +_0221E0A4: .word 0x02241ADC + + thumb_func_start MOD13_0221E0A8 +MOD13_0221E0A8: ; 0x0221E0A8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r7, r1, #0 + mov r0, #1 + bl FUN_020A83D0 + bl FUN_020A846C + add r6, r0, #0 + cmp r6, #0 + ble _0221E0E2 + mov r4, #0 + cmp r6, #0 + ble _0221E0E2 +_0221E0C6: + cmp r4, r7 + bge _0221E0E2 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_020A8358 + add r1, r5, #0 + mov r2, #0xc0 + bl MIi_CpuCopy32 + add r4, r4, #1 + add r5, #0xc0 + cmp r4, r6 + blt _0221E0C6 +_0221E0E2: + mov r0, #0 + bl FUN_020A83D0 + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221E0F4 +MOD13_0221E0F4: ; 0x0221E0F4 + push {lr} + sub sp, #4 + ldr r0, _0221E16C ; =0x02241ADC + ldr r0, [r0] + cmp r0, #8 + bhi _0221E15C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221E10E: ; jump table + .short _0221E15C - _0221E10E + 1 ; case 0 + .short _0221E146 - _0221E10E + 1 ; case 1 + .short _0221E15C - _0221E10E + 1 ; case 2 + .short _0221E15C - _0221E10E + 1 ; case 3 + .short _0221E15C - _0221E10E + 1 ; case 4 + .short _0221E120 - _0221E10E + 1 ; case 5 + .short _0221E15C - _0221E10E + 1 ; case 6 + .short _0221E136 - _0221E10E + 1 ; case 7 + .short _0221E15C - _0221E10E + 1 ; case 8 +_0221E120: + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + bl FUN_020A7A90 + cmp r0, #3 + beq _0221E164 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221E136: + bl FUN_020A7488 + cmp r0, #3 + beq _0221E164 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221E146: + ldr r0, _0221E170 ; =0x02241AB8 + ldr r0, [r0] + ldr r1, _0221E174 ; =MOD13_0221E178 + bl FUN_020A7BD4 + cmp r0, #3 + beq _0221E164 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221E15C: + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221E164: + mov r0, #1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221E16C: .word 0x02241ADC +_0221E170: .word 0x02241AB8 +_0221E174: .word MOD13_0221E178 + + thumb_func_start MOD13_0221E178 +MOD13_0221E178: ; 0x0221E178 + push {lr} + sub sp, #4 + cmp r0, #0 + bne _0221E182 + b _0221E556 +_0221E182: + mov r1, #0 + ldrsh r2, [r0, r1] + cmp r2, #9 + bls _0221E18C + b _0221E548 +_0221E18C: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #8] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add r2, pc + bx r2 +_0221E19A: ; jump table + .short _0221E548 - _0221E19A + 1 ; case 0 + .short _0221E1AE - _0221E19A + 1 ; case 1 + .short _0221E4A0 - _0221E19A + 1 ; case 2 + .short _0221E25E - _0221E19A + 1 ; case 3 + .short _0221E2E6 - _0221E19A + 1 ; case 4 + .short _0221E2A2 - _0221E19A + 1 ; case 5 + .short _0221E3C0 - _0221E19A + 1 ; case 6 + .short _0221E4E4 - _0221E19A + 1 ; case 7 + .short _0221E4FE - _0221E19A + 1 ; case 8 + .short _0221E510 - _0221E19A + 1 ; case 9 +_0221E1AE: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E244 + ldr r0, _0221E518 ; =0x02241ADC + ldr r2, [r0] + cmp r2, #4 + bne _0221E1D6 + mov r2, #3 + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E1CC + b _0221E556 +_0221E1CC: + mov r0, #6 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E1D6: + cmp r2, #6 + bne _0221E20C + ldr r0, _0221E520 ; =0x02241AF4 + ldr r0, [r0] + ldr r1, _0221E524 ; =0x02241AF8 + ldr r1, [r1] + ldr r2, _0221E528 ; =0x02241B10 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221E1F0 + b _0221E556 +_0221E1F0: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E200 + b _0221E556 +_0221E200: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E20C: + cmp r2, #8 + beq _0221E212 + b _0221E556 +_0221E212: + ldr r0, _0221E52C ; =0x02241AFC + ldr r0, [r0] + ldr r1, _0221E530 ; =0x02241AD8 + ldr r1, [r1] + ldr r2, _0221E534 ; =0x02241B08 + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221E228 + b _0221E556 +_0221E228: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E238 + b _0221E556 +_0221E238: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E244: + mov r3, #1 + ldr r0, _0221E518 ; =0x02241ADC + str r3, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r3, [r0] + cmp r3, #0 + bne _0221E254 + b _0221E556 +_0221E254: + add r0, r2, #0 + blx r3 + add sp, #4 + pop {r3} + bx r3 +_0221E25E: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E288 + ldr r0, _0221E518 ; =0x02241ADC + ldr r2, [r0] + cmp r2, #6 + beq _0221E270 + b _0221E556 +_0221E270: + mov r2, #5 + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E27E + b _0221E556 +_0221E27E: + mov r0, #8 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E288: + mov r2, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E298 + b _0221E556 +_0221E298: + mov r0, #9 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E2A2: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E2CC + ldr r0, _0221E518 ; =0x02241ADC + ldr r2, [r0] + cmp r2, #8 + beq _0221E2B4 + b _0221E556 +_0221E2B4: + mov r2, #7 + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E2C2 + b _0221E556 +_0221E2C2: + mov r0, #0xc + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E2CC: + mov r2, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E2DC + b _0221E556 +_0221E2DC: + mov r0, #0xd + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E2E6: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E3A6 + ldr r0, _0221E518 ; =0x02241ADC + ldr r2, [r0] + cmp r2, #4 + bne _0221E30E + mov r2, #3 + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E304 + b _0221E556 +_0221E304: + mov r0, #0xa + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E30E: + cmp r2, #6 + bne _0221E344 + ldr r0, _0221E520 ; =0x02241AF4 + ldr r0, [r0] + ldr r1, _0221E524 ; =0x02241AF8 + ldr r1, [r1] + ldr r2, _0221E528 ; =0x02241B10 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221E328 + b _0221E556 +_0221E328: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E338 + b _0221E556 +_0221E338: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E344: + cmp r2, #2 + bne _0221E36E + bl FUN_020A7AC8 + cmp r0, #3 + bne _0221E352 + b _0221E556 +_0221E352: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E362 + b _0221E556 +_0221E362: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E36E: + cmp r2, #8 + beq _0221E374 + b _0221E556 +_0221E374: + ldr r0, _0221E52C ; =0x02241AFC + ldr r0, [r0] + ldr r1, _0221E530 ; =0x02241AD8 + ldr r1, [r1] + ldr r2, _0221E534 ; =0x02241B08 + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221E38A + b _0221E556 +_0221E38A: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E39A + b _0221E556 +_0221E39A: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E3A6: + mov r2, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E3B6 + b _0221E556 +_0221E3B6: + mov r0, #0xb + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E3C0: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E488 + ldr r0, _0221E518 ; =0x02241ADC + ldr r2, [r0] + cmp r2, #4 + bne _0221E3E8 + mov r2, #3 + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E3DE + b _0221E556 +_0221E3DE: + mov r0, #0xe + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E3E8: + cmp r2, #6 + bne _0221E41E + ldr r0, _0221E520 ; =0x02241AF4 + ldr r0, [r0] + ldr r1, _0221E524 ; =0x02241AF8 + ldr r1, [r1] + ldr r2, _0221E528 ; =0x02241B10 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221E402 + b _0221E556 +_0221E402: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E412 + b _0221E556 +_0221E412: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E41E: + cmp r2, #2 + bne _0221E448 + bl FUN_020A7AC8 + cmp r0, #3 + bne _0221E42C + b _0221E556 +_0221E42C: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E43C + b _0221E556 +_0221E43C: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E448: + cmp r2, #8 + bne _0221E47A + ldr r0, _0221E52C ; =0x02241AFC + ldr r0, [r0] + ldr r1, _0221E530 ; =0x02241AD8 + ldr r1, [r1] + ldr r2, _0221E534 ; =0x02241B08 + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + beq _0221E556 + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E47A: + cmp r2, #7 + bne _0221E556 + mov r1, #3 + str r1, [r0] + add sp, #4 + pop {r3} + bx r3 +_0221E488: + mov r2, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #0xf + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E4A0: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E4CC + ldr r0, _0221E518 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #2 + bne _0221E556 + bl FUN_020A7E0C + mov r1, #0 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #0x14 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E4CC: + mov r3, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r3, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r3, [r0] + cmp r3, #0 + beq _0221E556 + add r0, r2, #0 + blx r3 + add sp, #4 + pop {r3} + bx r3 +_0221E4E4: + ldr r0, _0221E518 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #5 + bne _0221E556 + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #5 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E4FE: + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #4 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E510: + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + b _0221E538 + .align 2, 0 +_0221E518: .word 0x02241ADC +_0221E51C: .word 0x02241B30 +_0221E520: .word 0x02241AF4 +_0221E524: .word 0x02241AF8 +_0221E528: .word 0x02241B10 +_0221E52C: .word 0x02241AFC +_0221E530: .word 0x02241AD8 +_0221E534: .word 0x02241B08 +_0221E538: + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #3 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E548: + ldr r0, _0221E55C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #1 + mov r1, #0 + blx r2 +_0221E556: + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221E55C: .word 0x02241B30 + + .section .rodata + ; 0x0223C444 + .incbin "baserom.nds", 0x2237e4, 0x2828 + + .section .data + ; 0x0223F7B8 + .incbin "baserom.nds", 0x226B58, 0x17C + + .section .bss + ; 0x02240B34 + .space 0x24B0 |